.plaza-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(100%,220px),220px));gap:16px;align-items:start}
.plaza-card{width:100%;max-width:220px;overflow:hidden;border:2px solid var(--plaza-edge,var(--theme-line,var(--border)));border-radius:12px;background:var(--theme-surface,var(--panel));box-shadow:0 3px 0 var(--plaza-edge,var(--theme-line,var(--border))),0 9px 20px #10271b24;transition:border-color .16s ease,box-shadow .16s ease}
.plaza-cover{position:relative;aspect-ratio:16/9;display:grid;place-items:center;padding:12px;border-bottom:1px solid var(--theme-line,var(--border));background:var(--theme-control,rgba(0,0,0,.04));overflow:hidden}
.plaza-badge{position:absolute;top:8px;left:8px;padding:3px 6px;border-radius:4px;background:#a3e4bb;color:#17382a;font-size:10px;font-weight:700;line-height:1.4}
.plaza-cover img{display:block;width:100%;height:100%;min-height:0;object-fit:contain}
.plaza-body{display:block;padding:12px 12px 0}
.plaza-title{display:block;font-size:17px;font-weight:700;margin:0 0 6px;overflow-wrap:anywhere}
.plaza-meta{display:block;font-size:11px;margin:0 0 12px;color:var(--theme-muted,var(--muted))}
.plaza-download-row{padding:10px 12px 12px;border-top:1px solid var(--plaza-edge,var(--theme-line,var(--border)));background:var(--plaza-footer,var(--theme-secondary,var(--panel)))}
:root body .public-plaza .plaza-open{display:block;width:100%;margin:0;padding:0;border:0;border-radius:0;box-shadow:none;background:transparent;color:inherit;text-align:left;cursor:pointer;font:inherit}
.plaza-card:hover{border-color:var(--theme-accent,#a3e4bb);box-shadow:0 3px 0 var(--plaza-edge,var(--theme-line,var(--border))),0 12px 25px #10271b36}
:root:is([data-theme="white"],[data-theme="light"]) .plaza-card{--plaza-edge:#73877b;--plaza-footer:#edf3ef}
:root:is([data-theme="white"],[data-theme="light"]) .plaza-cover{background:linear-gradient(145deg,#f6faf7,#e9f1ec);border-bottom-color:#c1cfc5}
:root[data-theme] body .public-plaza .plaza-card>.plaza-open,:root[data-theme] body .public-plaza .plaza-card>.plaza-open:is(:hover,:focus-visible,:active){box-shadow:none;translate:none;background:transparent}
:root body .public-plaza .plaza-open:focus-visible{outline:2px solid #a3e4bb;outline-offset:-3px}
.plaza-download{display:flex;justify-content:space-between;gap:16px;align-items:center;text-decoration:none}
:root body .public-plaza .plaza-card .plaza-download{min-height:34px;padding:7px 10px;font-size:12px;line-height:1.5}
@media(max-width:340px){.plaza-grid{grid-template-columns:minmax(0,1fr)}}
.plaza-back{margin-bottom:20px}
.plaza-detail-layout{display:grid;grid-template-columns:minmax(0,1.1fr) minmax(0,1fr);gap:30px;align-items:start}
.plaza-detail-cover{display:grid;place-items:center;min-height:280px;padding:24px;border:1px solid var(--theme-line,var(--border));border-radius:12px;background:var(--theme-surface,var(--panel))}
.plaza-detail-cover img{width:100%;max-height:380px;object-fit:contain}
.plaza-detail-info{min-width:0;padding:24px;border:1px solid var(--theme-line,var(--border));border-radius:12px;background:var(--theme-surface,#284737);color:var(--theme-ink,#f2faf5);box-shadow:0 4px 16px #0000001f}
.plaza-detail-badge{display:inline-block;padding:4px 8px;border-radius:4px;background:#a3e4bb;color:#17382a;font-size:12px;font-weight:700}
:root body .plaza-detail h1{font-size:28px;margin:12px 0}
.plaza-description{white-space:pre-line;line-height:1.8;margin:0 0 20px}
.plaza-file-info{margin:0 0 22px;font-size:13px;display:grid;gap:10px}
.plaza-file-info>div{display:grid;grid-template-columns:72px minmax(0,1fr);gap:12px}
.plaza-file-info dt{color:var(--theme-muted,var(--muted))}
.plaza-file-info dd{margin:0;overflow-wrap:anywhere}
.plaza-install{margin-top:28px;padding:20px;border:1px solid var(--theme-line,var(--border));border-radius:10px;background:var(--theme-surface,var(--panel))}
.plaza-install h2{font-size:17px;margin:0 0 10px}
.plaza-install p{margin:0;line-height:1.8}
.plaza-actions{display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.plaza-actions .primary,.plaza-actions .secondary{font-size:12px;padding:10px 14px}
.plaza-author{display:block;margin:0 0 12px;font-size:11px;color:var(--theme-muted,var(--muted));overflow-wrap:anywhere}
.plaza-upload-modal{width:560px;max-width:100%;max-height:calc(100dvh - 32px);overflow:auto}
.plaza-upload-modal .modal-inner{padding:28px}
.plaza-upload-modal h2{margin:0 0 8px}
.plaza-upload-modal .plaza-upload-intro{margin:0 0 20px;line-height:1.7}
#plaza-upload-form{display:grid;gap:9px}
#plaza-upload-form .field-label{display:block;font-size:12px;margin:7px 0 0}
#plaza-upload-form input,#plaza-upload-form textarea{width:100%;min-width:0;box-sizing:border-box;padding:10px 12px;border:1px solid var(--theme-line,var(--border));border-radius:6px;background:var(--theme-control,#1c3428);color:var(--theme-ink,#f2faf5);font:inherit;font-size:13px}
#plaza-upload-form textarea{resize:vertical;min-height:78px}
#plaza-upload-form input[type=file]{padding:9px;font-size:11px}
#plaza-upload-form input:focus-visible,#plaza-upload-form textarea:focus-visible{outline:2px solid #a3e4bb;outline-offset:1px}
.plaza-field-hint{font-weight:400;font-size:10px;color:var(--theme-muted,var(--muted));margin-left:6px}
.plaza-upload-preview{width:100%;max-height:150px;object-fit:contain;border-radius:6px;background:var(--theme-control,#1c3428)}
.plaza-upload-modal .plaza-upload-note{font-size:11px;line-height:1.8;color:var(--theme-muted,var(--muted));margin:6px 0}
.plaza-upload-progress{width:100%;height:9px;accent-color:#a3e4bb}
.plaza-upload-modal .plaza-upload-status{min-height:18px;font-size:12px;line-height:1.6;margin:2px 0}
.plaza-upload-status[data-error=true]{color:var(--theme-danger,#ffc4a8)}
.plaza-upload-buttons{display:flex;justify-content:flex-end;gap:10px;padding-top:7px}
@media(max-width:540px){.public-plaza>.page-heading{align-items:flex-start;flex-wrap:wrap;gap:14px}.plaza-actions{width:100%;justify-content:flex-end}.plaza-upload-modal .modal-inner{padding:25px 20px}.plaza-upload-buttons button{flex:1;justify-content:center}}
@media(max-width:760px){.plaza-detail-layout{grid-template-columns:minmax(0,1fr);gap:20px}.plaza-detail-cover{min-height:200px}.plaza-detail-cover img{max-height:240px}.plaza-detail-info{padding:20px}}
