/* ========= ADMIN SHARED (moved from per-page <style> blocks so every
   /admin/* page gets consistent styling, not just dashboard.php) ========= */
.admin-nav{display:flex;gap:4px;margin-top:var(--space-3,12px)}
.admin-stat-row{display:flex;gap:14px;flex-wrap:wrap;margin-top:var(--space-4,16px)}
.admin-stat-card{
    flex:1;min-width:140px;padding:var(--space-4,16px);border-radius:var(--lg-radius,var(--radius));
    background:var(--panel-glass);backdrop-filter:var(--lg-blur,blur(20px) saturate(1.6));-webkit-backdrop-filter:var(--lg-blur,blur(20px) saturate(1.6));
    border:var(--lg-border,1px solid var(--line-glass));box-shadow:var(--lg-rim,none), var(--lg-ambient,var(--glass-highlight));text-align:center;
}
.admin-stat-card strong{display:block;font-size:var(--fs-lg,1.5rem);font-weight:800}
.admin-stat-card span{color:var(--muted);font-size:var(--fs-xs,.78rem)}
.admin-actions{white-space:nowrap}
.btn-mini{
    padding:5px 11px;font-size:var(--fs-xs,.75rem);font-weight:600;border-radius:5px;
    border:1px solid var(--line);background:var(--raised);color:var(--muted-strong);cursor:pointer;margin-left:4px;
    transition:all .15s;
}
.btn-mini:hover{color:var(--text);border-color:var(--muted)}
.btn-mini-danger:hover{color:#fff;background:var(--error);border-color:var(--error)}

/* ========= ADMIN EDIT MODALS (shared across categories/topics/users) ========= */
.admin-modal-overlay{
    position:fixed;inset:0;background:rgba(4,6,9,.72);display:flex;align-items:center;justify-content:center;z-index:1000;padding:20px;
    opacity:0;visibility:hidden;pointer-events:none;
    transition:opacity .2s ease, visibility 0s linear .2s;
}
.admin-modal-overlay.open{
    opacity:1;visibility:visible;pointer-events:auto;
    transition:opacity .22s ease;
}
.admin-modal{
    background:var(--lg-specular), var(--panel-glass,rgba(21,24,30,.6));backdrop-filter:var(--lg-blur,blur(28px) saturate(1.6));-webkit-backdrop-filter:var(--lg-blur,blur(28px) saturate(1.6));
    border:var(--lg-border,1px solid rgba(255,255,255,.09));border-radius:var(--lg-radius,20px);
    box-shadow:var(--lg-rim), var(--lg-ambient,0 12px 32px rgba(0,0,0,.4));
    padding:28px;width:100%;max-width:420px;max-height:88vh;overflow-y:auto;position:relative;color:var(--text,#f3f5f7);
    transform:scale(.94) translateY(10px);
    transition:transform .22s cubic-bezier(.22,1,.36,1);
}
@supports (backdrop-filter: url(#lg-distortion)) {
    .admin-modal{backdrop-filter:var(--lg-blur-distort);-webkit-backdrop-filter:var(--lg-blur-distort)}
}
.admin-modal-overlay.open .admin-modal{transform:scale(1) translateY(0)}
.admin-modal h2{margin:0 0 16px;font-size:var(--fs-lg,1.15rem)}
.admin-modal-close{position:absolute;top:12px;right:14px;background:none;border:none;color:var(--muted,#929aa8);font-size:1.4rem;cursor:pointer;line-height:1}
.admin-modal .field{margin-bottom:12px}
.admin-modal .field label{display:block;font-size:var(--fs-xs,.8rem);color:var(--muted,#929aa8);margin-bottom:4px}
.admin-modal .field input,.admin-modal .field select,.admin-modal .field textarea{
    width:100%;box-sizing:border-box;padding:9px 10px;border-radius:6px;
    border:1px solid var(--line,#262b34);background:var(--field,#101319);color:var(--text,#f3f5f7);font-size:var(--fs-sm,.85rem);
}
.admin-modal .field textarea{resize:vertical;min-height:100px}

/* ========= Map uploader ========= */
.map-uploader{--uploader-accent:var(--accent-bright);--uploader-accent-soft:var(--accent-soft);padding-bottom:24px}
.uploader-heading{display:flex;align-items:flex-end;justify-content:space-between;gap:24px;margin:6px 0 20px}
.uploader-heading .page-title{font-size:1.72rem;letter-spacing:-.03em;margin:2px 0 5px}
.uploader-heading p{color:var(--muted);font-size:.88rem}
.uploader-eyebrow{display:block;color:var(--uploader-accent);font-size:.69rem;font-weight:800;letter-spacing:.12em;text-transform:uppercase}
.uploader-stats{margin-bottom:16px}
.tester-access-badge{display:inline-flex;align-items:center;gap:7px;padding:8px 11px;border:1px solid rgba(47,201,105,.28);border-radius:999px;background:rgba(47,201,105,.09);color:var(--green);font-size:.73rem;font-weight:700;white-space:nowrap}
.uploader-alert{margin-bottom:14px;padding:11px 14px;border:1px solid var(--line);border-radius:8px;background:var(--raised);font-size:.82rem}
.uploader-alert.success{border-color:rgba(47,201,105,.34);background:rgba(47,201,105,.09);color:#8ee6b2}
.uploader-alert.warning{border-color:rgba(242,201,76,.34);background:rgba(242,201,76,.09);color:#f7df8a}
.uploader-alert.error{border-color:rgba(233,82,91,.34);background:rgba(233,82,91,.09);color:#f19aa0}
.uploader-tabs{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:7px;margin-bottom:12px}
.uploader-tabs-2{grid-template-columns:repeat(2,minmax(0,1fr))}
.uploader-tabs-3{grid-template-columns:repeat(3,minmax(0,1fr))}
.uploader-tabs-4{grid-template-columns:repeat(4,minmax(0,1fr))}
.uploader-tab{display:flex;align-items:center;justify-content:center;gap:7px;min-height:39px;padding:8px 13px;border:var(--lg-border,1px solid var(--line));border-radius:7px;background:var(--panel-glass);backdrop-filter:var(--lg-blur,blur(16px) saturate(1.4));-webkit-backdrop-filter:var(--lg-blur,blur(16px) saturate(1.4));color:var(--muted-strong);font:inherit;font-size:.78rem;font-weight:700;cursor:pointer;transition:border-color .15s,background .15s,color .15s,transform .15s}
.uploader-tab:hover{border-color:#3a414d;color:var(--text)}
.uploader-tab:active{transform:translateY(1px)}
.uploader-tab.active{border-color:rgba(204,0,68,.65);background:linear-gradient(135deg,var(--accent),var(--accent-bright));color:#fff;box-shadow:0 8px 24px rgba(153,0,51,.18)}
.uploader-tab-count{display:inline-flex;align-items:center;justify-content:center;min-width:19px;height:19px;padding:0 5px;border-radius:999px;background:rgba(255,255,255,.08);font-size:.66rem}
.uploader-tab.active .uploader-tab-count{background:rgba(255,255,255,.18)}
.uploader-pane{animation:uploader-pane-in .18s ease}
@keyframes uploader-pane-in{from{opacity:0;transform:translateY(4px)}to{opacity:1;transform:translateY(0)}}
.map-dropzone{min-height:164px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:6px;border:1px dashed #343b47;border-radius:10px;background:linear-gradient(180deg,rgba(26,30,37,.48),rgba(16,19,25,.35));cursor:pointer;outline:none;transition:border-color .18s,background .18s,transform .18s}
.map-dropzone:hover,.map-dropzone:focus-visible,.map-dropzone.dragging{border-color:var(--uploader-accent);background:var(--uploader-accent-soft)}
.map-dropzone.dragging{transform:scale(.995)}
.dropzone-icon{height:48px;color:var(--uploader-accent);filter:drop-shadow(0 7px 18px rgba(204,0,68,.2))}
.map-dropzone strong{text-transform:uppercase;font-size:.8rem;letter-spacing:.025em}
.map-dropzone strong span{color:var(--uploader-accent)}
.map-dropzone small{color:var(--muted);font-size:.7rem}
.mobile-upload-blocked{display:none;flex-direction:column;align-items:center;text-align:center;padding:32px 20px;background:rgba(255,255,255,.03);border:1px dashed rgba(255,255,255,.12);border-radius:var(--lg-radius,16px);gap:12px}
.mobile-upload-icon{width:52px;height:52px;border-radius:14px;background:rgba(204,0,68,.12);border:1px solid rgba(204,0,68,.3);color:var(--accent-bright);display:flex;align-items:center;justify-content:center}
.mobile-upload-title{font-size:1.08rem;font-weight:700;color:var(--text)}
.mobile-upload-desc{font-size:.86rem;color:var(--muted);max-width:440px;line-height:1.5}
.mobile-upload-btn{margin-top:6px;display:inline-flex;align-items:center;gap:8px;padding:10px 20px;border-radius:9999px;background:var(--button_primary,#990033);color:#fff;font-size:.85rem;font-weight:700;cursor:pointer;border:none;transition:opacity .15s ease}
.mobile-upload-btn:active{transform:scale(.96)}
.upload-selection{margin-top:10px;padding:13px;border:1px solid var(--line);border-radius:9999px;border-radius:9px;background:var(--panel)}
.upload-selection-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:8px;font-size:.78rem}
.upload-selection-head button{border:0;background:none;color:var(--muted);font:inherit;font-size:.72rem;cursor:pointer}
.upload-selection-head button:hover{color:var(--red)}
.selected-map-file{display:flex;align-items:center;justify-content:space-between;gap:15px;padding:8px 10px;border-radius:6px;background:var(--field);font-size:.75rem;margin-top:5px}
.selected-map-file span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.selected-map-right{display:flex;align-items:center;gap:10px;flex:0 0 auto}
.remove-file-btn{width:22px;height:22px;display:inline-flex;align-items:center;justify-content:center;border-radius:4px;border:none;background:transparent;color:var(--muted);cursor:pointer;font-size:16px;line-height:1;transition:all .15s}
.remove-file-btn:hover{background:rgba(233,82,91,.18);color:var(--red)}
.selected-map-file small{color:var(--green);white-space:nowrap}
.selected-map-file.invalid{outline:1px solid rgba(233,82,91,.35)}
.selected-map-file.invalid small,.selected-file-warning{color:var(--red)}
.selected-map-file.is-duplicate{outline:1px solid rgba(242,201,76,.4);opacity:.75}
.selected-map-file.is-duplicate small{color:#f2c94c}
.selected-file-warning{padding:8px 3px;font-size:.72rem}
.uploader-submit{width:100%;display:flex;align-items:center;justify-content:center;gap:8px;margin-top:12px;padding:10px 14px;border:0;border-radius:7px;background:linear-gradient(135deg,#990033,#c00040);color:#fff;font:inherit;font-size:.78rem;font-weight:800;text-transform:uppercase;letter-spacing:.025em;cursor:pointer;box-shadow:0 8px 20px rgba(153,0,51,.18)}
.uploader-submit:disabled{opacity:.48;cursor:not-allowed;box-shadow:none}
.upload-progress{margin-top:14px;padding:13px;border:1px solid var(--line);border-radius:9px;background:var(--panel)}
.upload-progress-head{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:9px;font-size:.78rem;font-weight:700}
.upload-progress-status{color:var(--text)}
.upload-progress-pct{color:var(--uploader-accent);font-variant-numeric:tabular-nums}
.upload-progress-track{height:8px;border-radius:999px;background:var(--field);overflow:hidden}
.upload-progress-fill{height:100%;width:0%;border-radius:999px;background:linear-gradient(135deg,#990033,#c00040);transition:width .15s ease}
.upload-progress.is-done .upload-progress-fill{background:linear-gradient(135deg,var(--green),#3fe08a)}
.upload-progress.is-error .upload-progress-fill{background:linear-gradient(135deg,var(--red),#f2707a)}
.upload-progress-meta{margin-top:7px;color:var(--muted);font-size:.7rem;font-variant-numeric:tabular-nums}
.upload-progress-errors{margin-top:10px;padding:10px 12px;border:1px solid rgba(233,82,91,.3);border-radius:8px;background:rgba(233,82,91,.08);max-height:220px;overflow-y:auto}
.upload-progress-errors-head{margin-bottom:6px;color:var(--red);font-size:.72rem;font-weight:800;text-transform:uppercase;letter-spacing:.03em}
.upload-progress-errors ul{margin:0;padding-left:16px;display:flex;flex-direction:column;gap:5px}
.upload-progress-errors li{color:#f19aa0;font-size:.72rem;line-height:1.45;word-break:break-word}
.upload-progress-files{margin-top:10px;display:flex;flex-direction:column;gap:5px}
.upload-progress-file{display:flex;align-items:center;gap:9px;padding:6px 9px;border-radius:6px;background:var(--field);font-size:.73rem}
.upload-progress-file-icon{flex:0 0 auto;width:16px;height:16px;display:inline-flex;align-items:center;justify-content:center;border-radius:50%;background:rgba(255,255,255,.06);color:var(--muted);font-size:.6rem}
.upload-progress-file-name{flex:1 1 auto;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--muted)}
.upload-progress-file-size{flex:0 0 auto;color:var(--muted);font-size:.68rem}
.upload-progress-file.is-active .upload-progress-file-icon{background:var(--uploader-accent-soft);color:var(--uploader-accent)}
.upload-progress-file.is-active .upload-progress-file-name{color:var(--text)}
.upload-progress-file.is-done .upload-progress-file-icon{background:rgba(47,201,105,.16);color:var(--green)}
.upload-progress-file.is-done .upload-progress-file-name{color:var(--text)}
.upload-progress-file.is-error .upload-progress-file-icon{background:rgba(233,82,91,.16);color:var(--red)}
.upload-progress-file.is-error .upload-progress-file-name{color:var(--red)}
.upload-progress-file.is-active .upload-progress-file-icon{animation:upload-pulse 1s ease-in-out infinite}
@keyframes upload-pulse{0%,100%{opacity:.4}50%{opacity:1}}
.uploader-info-grid{display:grid;grid-template-columns:1.04fr 1fr 1fr;gap:10px;margin-top:10px}
.uploader-info-card{min-height:206px;padding:13px;border:var(--lg-border,1px solid var(--line));border-radius:var(--lg-radius-sm,9px);background:var(--panel-glass);backdrop-filter:var(--lg-blur,blur(16px) saturate(1.4));-webkit-backdrop-filter:var(--lg-blur,blur(16px) saturate(1.4))}
.prefix-group-label{margin:12px 0 0;color:var(--muted);font-size:.66rem;font-weight:700;text-transform:uppercase;letter-spacing:.05em}
.prefix-group-label:first-of-type{margin-top:9px}
.uploader-info-card h2{display:flex;align-items:center;gap:8px;padding-bottom:10px;border-bottom:1px solid var(--line-soft);font-size:.7rem;text-transform:uppercase;letter-spacing:.045em;color:#d6d9df}
.info-card-icon{width:24px;height:24px;display:inline-flex;align-items:center;justify-content:center;border-radius:6px;background:var(--uploader-accent-soft);color:var(--uploader-accent)}
.uploader-spec-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:6px;margin-top:9px}
.uploader-spec{padding:8px 10px;border-radius:6px;background:rgba(255,255,255,.018);border:1px solid var(--line-soft)}
.uploader-spec-value{display:block;font-size:.92rem;font-weight:800;color:var(--text)}
.uploader-spec-label{display:block;margin-top:2px;color:var(--muted);font-size:.62rem;text-transform:uppercase;letter-spacing:.04em}
.uploader-naming-rule{margin-top:12px;color:var(--muted-strong);font-size:.71rem;line-height:1.6}
.uploader-naming-rule code{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;color:#d8dbe1;font-size:.9em}
.uploader-name-example{display:grid;gap:4px;margin-top:9px}
.uploader-name-example-label{color:var(--muted);font-size:.6rem;font-weight:700;text-transform:uppercase;letter-spacing:.06em}
.uploader-name-example code,.info-card-note code{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;color:#d8dbe1}
.uploader-name-example code{padding:6px 9px;border:1px solid var(--line-soft);border-radius:4px;background:var(--field);font-size:.68rem;overflow:hidden;text-overflow:ellipsis}
.prefix-highlight{color:var(--uploader-accent);font-weight:800}
.prefix-cloud{display:flex;flex-wrap:wrap;align-content:flex-start;gap:6px;margin-top:6px}
.prefix-cloud span{padding:4px 9px;border:1px solid rgba(204,0,68,.48);border-radius:999px;background:var(--uploader-accent-soft);color:#ff6b9d;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:.65rem;font-weight:700;text-transform:uppercase}
.prefix-cloud.minigame span{border-color:rgba(93,156,236,.48);background:rgba(93,156,236,.13);color:var(--blue)}
.info-card-note{margin-top:16px;color:var(--muted);font-size:.69rem;line-height:1.65}
.review-flow-list{display:grid;gap:8px;margin-top:11px;list-style:none}
.review-flow-list li{display:flex;align-items:center;gap:9px}
.review-flow-list>li>span{width:25px;height:25px;display:flex;align-items:center;justify-content:center;flex:0 0 auto;border:1px solid rgba(204,0,68,.35);border-radius:50%;background:var(--uploader-accent-soft);color:#ff6b9d;font-size:.65rem;font-weight:800}
.review-flow-list div{display:grid}
.review-flow-list strong{font-size:.7rem}
.review-flow-list small{color:var(--muted);font-size:.64rem}
.uploader-section-head{display:flex;align-items:flex-end;justify-content:space-between;gap:20px;padding:14px 2px;flex-wrap:wrap}
.uploader-section-head h2{font-size:1.05rem;margin-bottom:2px}
.uploader-section-head p{font-size:.76rem;color:var(--muted)}
.uploader-section-head-actions{display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.uploader-section-actions{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.uploader-filter{padding:8px 10px;border-radius:6px;border:1px solid var(--line);background:var(--field);color:var(--text);font:inherit;font-size:.73rem}
.uploader-search{padding:8px 12px;border-radius:6px;border:1px solid var(--line);background:var(--field);color:var(--text);font:inherit;font-size:.73rem;min-width:180px;transition:border-color .15s}
.uploader-search:focus{outline:none;border-color:var(--accent)}
.uploader-search::placeholder{color:var(--muted)}
.submission-card[hidden],.review-card[hidden]{display:none !important}
.page-btn{cursor:pointer}
.page-btn:disabled,.page-btn.disabled{opacity:.35;cursor:not-allowed;pointer-events:none}
.page-dots{display:flex;align-items:center;justify-content:center;min-width:28px;height:36px;color:var(--muted);font-weight:700}
.queue-total{padding:5px 9px;border-radius:999px;background:var(--uploader-accent-soft);color:#ff6b9d;font-size:.68rem;font-weight:700}
.uploader-empty{min-height:260px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:7px;border:1px dashed var(--line);border-radius:10px;background:rgba(16,19,25,.35);color:var(--muted)}
.uploader-empty svg{margin-bottom:5px;color:#4a5260}
.uploader-empty.success svg{color:var(--green)}
.uploader-empty strong{color:var(--muted-strong);font-size:.86rem}
.uploader-empty span{font-size:.72rem}
.submission-list,.review-queue-list{display:grid;gap:9px}
.submission-card{display:grid;grid-template-columns:54px minmax(0,1fr) auto;align-items:center;gap:13px;padding:13px;border:var(--lg-border,1px solid var(--line));border-radius:var(--lg-radius-sm,9px);background:var(--panel-glass);backdrop-filter:var(--lg-blur,blur(16px) saturate(1.4));-webkit-backdrop-filter:var(--lg-blur,blur(16px) saturate(1.4))}
.submission-card.has-inline-form{grid-template-columns:54px minmax(0,1fr);align-items:start}
.submission-card.has-inline-form form.review-form{grid-column:1/-1;padding:9px 0 0}
.submission-prefix{width:54px;height:42px;display:flex;align-items:center;justify-content:center;flex:0 0 auto;border-radius:7px;background:var(--uploader-accent-soft);color:#ff6b9d;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:.66rem;font-weight:800;text-transform:uppercase}
.submission-main{min-width:0}
.submission-title-row{display:flex;align-items:center;gap:9px;min-width:0}
.submission-title-row h3{font-size:.84rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.submission-status{display:inline-flex;align-items:center;padding:3px 7px;border-radius:999px;font-size:.59rem;font-weight:800;text-transform:uppercase;white-space:nowrap}
.submission-status.pending{background:rgba(242,201,76,.1);color:var(--gold)}
.submission-status.approved{background:rgba(47,201,105,.1);color:var(--green)}
.submission-status.declined{background:rgba(233,82,91,.1);color:var(--red)}
.submission-status.deleted{background:rgba(146,154,168,.14);color:var(--muted-strong)}
.submission-meta{display:flex;flex-wrap:wrap;gap:5px 13px;margin-top:4px;color:var(--muted);font-size:.65rem}
.review-note,.deployed-path{margin-top:7px;padding:6px 8px;border-left:2px solid var(--line);background:rgba(255,255,255,.018);color:var(--muted-strong);font-size:.67rem;overflow-wrap:anywhere}
.deployed-path{border-left-color:var(--green)}
.submission-actions{display:flex;align-items:center;gap:6px}
.submission-actions form{margin:0}
.uploader-action{min-height:32px;display:inline-flex;align-items:center;justify-content:center;gap:6px;padding:7px 10px;border:1px solid var(--line);border-radius:6px;background:var(--raised);color:var(--muted-strong);font:inherit;font-size:.67rem;font-weight:700;cursor:pointer;white-space:nowrap;transition:border-color .15s,color .15s,background .15s}
.uploader-action:hover{border-color:#444c59;color:#fff}
.uploader-action.approve{border-color:rgba(47,201,105,.35);background:rgba(47,201,105,.1);color:#81e1a8}
.uploader-action.approve:hover{background:rgba(47,201,105,.18)}
.uploader-action.danger{border-color:rgba(233,82,91,.28);background:rgba(233,82,91,.08);color:#ed858c}
.uploader-action.danger:hover{background:rgba(233,82,91,.16)}
.uploader-action.primary{border-color:rgba(204,0,68,.4);background:linear-gradient(135deg,var(--accent),var(--accent-bright));color:#fff}
.uploader-action.primary:hover{opacity:.92}
.uploader-action.download-test{border-color:rgba(93,156,236,.4);background:rgba(93,156,236,.14);color:var(--blue);font-weight:800}
.uploader-action.download-test:hover{background:rgba(93,156,236,.24);border-color:rgba(93,156,236,.6);color:#fff}
.uploader-action.approve-all{border:0;padding:8px 13px;background:linear-gradient(135deg,#990033,#c00040);color:#fff;font-weight:800;text-transform:uppercase;letter-spacing:.02em;box-shadow:0 6px 16px rgba(153,0,51,.24)}
.uploader-action.approve-all:hover{opacity:.92;color:#fff}
.uploader-action:disabled{opacity:.4;cursor:not-allowed;pointer-events:none}
.review-card{border:var(--lg-border,1px solid var(--line));border-radius:var(--lg-radius-sm,9px);background:var(--panel-glass);backdrop-filter:var(--lg-blur,blur(16px) saturate(1.4));-webkit-backdrop-filter:var(--lg-blur,blur(16px) saturate(1.4));overflow:hidden}
.review-card-top{display:flex;align-items:center;gap:12px;padding:13px}
.review-card-title{min-width:0;flex:1}
.review-card-title h3{font-size:.85rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.review-card-title p{margin-top:3px;color:var(--muted);font-size:.66rem}
.review-card-title p strong{color:var(--muted-strong)}
.review-card-stats{display:flex;align-items:center;flex-wrap:wrap;gap:7px 18px;padding:9px 13px;border-top:1px solid var(--line-soft);border-bottom:1px solid var(--line-soft);background:rgba(10,12,17,.38);color:var(--muted);font-size:.64rem}
.review-card-stats strong{color:var(--muted-strong)}
.review-card-stats .server-script-warning,.review-card-stats .server-script-warning strong{color:var(--gold)}
.review-form{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:7px 10px;padding:12px 13px}
.review-form label{grid-column:1/-1;color:var(--muted-strong);font-size:.67rem;font-weight:700}
.review-form label span{color:var(--muted);font-weight:400}
.review-form textarea{width:100%;min-height:55px;resize:vertical;padding:8px 9px;border:1px solid var(--line);border-radius:6px;background:var(--field);color:var(--text);font:inherit;font-size:.7rem;outline:none}
.review-form textarea:focus{border-color:rgba(204,0,68,.65)}
.review-buttons{display:flex;align-items:stretch;gap:6px}

@media (max-width:900px){
    .uploader-info-grid{grid-template-columns:1fr 1fr}
    .uploader-info-card:last-child{grid-column:1/-1;min-height:0}
    .review-flow-list{grid-template-columns:repeat(3,1fr)}
}
@media (max-width:700px){
    .uploader-heading{align-items:flex-start;flex-direction:column;gap:10px}
    .uploader-tabs{display:flex;overflow-x:auto;scrollbar-width:none}
    .uploader-tabs::-webkit-scrollbar{display:none}
    .uploader-tab{min-width:max-content;flex:1}
    .uploader-info-grid{grid-template-columns:1fr}
    .uploader-info-card:last-child{grid-column:auto}
    .review-flow-list{grid-template-columns:1fr}
    .submission-card{grid-template-columns:45px minmax(0,1fr)}
    .submission-prefix{width:45px}
    .submission-actions{grid-column:1/-1;justify-content:flex-end;border-top:1px solid var(--line-soft);padding-top:9px}
    .review-card-top{align-items:flex-start;flex-wrap:wrap}
    .review-card-top .uploader-action{margin-left:66px}
    .review-form{grid-template-columns:1fr}
    .review-buttons{justify-content:flex-end}
}
@media (max-width:440px){
    .map-dropzone{min-height:145px;padding:16px;text-align:center}
    .map-dropzone strong{font-size:.72rem}
    .submission-title-row{align-items:flex-start;flex-direction:column;gap:4px}
    .review-card-top .uploader-action{width:100%;margin-left:0}
    .review-buttons{display:grid;grid-template-columns:1fr 1fr}
}

/* ========= ADMIN PANEL (rebuilt sections) =========
   The panel already had a component set above; these cover the pieces added
   when it grew search, pagination, filters and the new sections. */
.admin-title{font-size:1.6rem;font-weight:800;margin:0}
.admin-nav{flex-wrap:wrap}
.admin-tab-count{
    display:inline-block;min-width:17px;padding:1px 5px;margin-left:5px;border-radius:9px;
    background:var(--accent-bright,#c04);color:#fff;font-size:.68rem;font-weight:700;text-align:center;
}
.admin-intro{
    color:var(--muted);font-size:var(--fs-sm,.85rem);line-height:1.6;
    max-width:78ch;margin:14px 0 4px;
}
.admin-intro code{
    padding:1px 5px;border-radius:4px;background:var(--field);
    border:1px solid var(--line);font-size:.85em;
}
.admin-section-title{font-size:1.05rem;margin:26px 0 12px;display:flex;align-items:center;gap:9px}
.admin-count{
    padding:1px 8px;border-radius:9px;background:var(--raised);
    border:1px solid var(--line);color:var(--muted);font-size:.72rem;font-weight:700;
}
.admin-empty{padding:28px 0;text-align:center}

.admin-filter-bar{
    display:flex;align-items:center;gap:9px;flex-wrap:wrap;margin:16px 0;
}
.admin-search{
    flex:1;min-width:200px;max-width:380px;box-sizing:border-box;padding:9px 12px;
    border-radius:6px;border:1px solid var(--line);background:var(--field);
    color:var(--text);font-size:var(--fs-sm,.85rem);
}
.admin-search:focus{outline:none;border-color:var(--accent-bright)}
.admin-select{
    padding:9px 10px;border-radius:6px;border:1px solid var(--line);
    background:var(--field);color:var(--text);font-size:var(--fs-sm,.85rem);
}
.admin-result-count{margin-left:auto;color:var(--muted);font-size:var(--fs-xs,.78rem)}
.admin-subtle{display:block;color:var(--muted);font-size:var(--fs-xs,.72rem);margin-top:2px}

/* Action forms sit side by side; this replaces the repeated inline style="display:inline". */
.inline-form{display:inline}
.admin-actions .btn-mini{margin-left:4px}

.admin-stat-card.is-warn{border-color:rgba(242,201,76,.34)}
.admin-stat-card.is-warn strong{color:#f7df8a}

.admin-columns{display:grid;grid-template-columns:1fr 300px;gap:22px;align-items:start;margin-top:8px}
.admin-col{min-width:0}
.admin-col-narrow{font-size:var(--fs-sm,.85rem)}

.audit-feed{list-style:none;margin:0 0 14px;padding:0}
.audit-feed li{
    padding:9px 0;border-bottom:1px solid var(--line);font-size:var(--fs-xs,.78rem);line-height:1.5;
}
.audit-feed li:last-child{border-bottom:none}
.audit-action{font-weight:600;color:var(--text)}
.audit-target{color:var(--muted-strong);margin-left:4px}
.audit-meta{display:block;color:var(--muted);font-size:.7rem;margin-top:2px}

.admin-pagination{display:flex;align-items:center;gap:12px;justify-content:center;margin:18px 0}
.page-current{color:var(--muted);font-size:var(--fs-xs,.78rem)}

.admin-modal-section{margin-top:20px;padding-top:16px;border-top:1px solid var(--line)}
.admin-modal-section h3{margin:0 0 8px;font-size:var(--fs-sm,.9rem)}
.field-hint{color:var(--muted);font-size:var(--fs-xs,.74rem);line-height:1.55;margin:0 0 11px}
.field-check{display:flex;align-items:center;gap:8px}
.field-check input{width:auto !important;margin:0}
.field-check label{margin:0 !important}
.btn-danger-solid{background:var(--error);border-color:var(--error);color:#fff}
.btn-danger-solid:hover{filter:brightness(1.1)}

.post-excerpt-cell{max-width:420px;line-height:1.5}
.shout-cell{max-width:460px;word-break:break-word}

.appeal-admin-card{
    margin-top:16px;padding:20px;
    background:var(--panel-glass);backdrop-filter:var(--lg-blur,blur(20px) saturate(1.6));
    -webkit-backdrop-filter:var(--lg-blur,blur(20px) saturate(1.6));
    border:var(--lg-border,1px solid var(--line-glass));border-radius:var(--lg-radius,var(--radius));
}
.appeal-admin-head{display:flex;align-items:center;justify-content:space-between;gap:14px;flex-wrap:wrap;margin-bottom:12px}
.appeal-admin-user{font-weight:700;margin-right:7px}
.appeal-arena-tag{
    padding:2px 8px;border-radius:5px;background:var(--raised);border:1px solid var(--line);
    color:var(--muted-strong);font-size:var(--fs-xs,.72rem);margin-right:6px;
}
.appeal-admin-when{color:var(--muted);font-size:var(--fs-xs,.75rem)}
.appeal-admin-message{
    padding:13px 15px;border-radius:8px;background:var(--field);border:1px solid var(--line);
    font-size:var(--fs-sm,.86rem);line-height:1.6;margin-bottom:14px;white-space:normal;
}
.appeal-admin-actions{display:flex;gap:9px;flex-wrap:wrap}

@media (max-width:900px){
    .admin-columns{grid-template-columns:1fr}
}
@media (max-width:640px){
    .admin-filter-bar{flex-direction:column;align-items:stretch}
    .admin-search{max-width:none}
    .admin-result-count{margin-left:0}
    .post-excerpt-cell,.shout-cell{max-width:none}
}

/* ========= ADMIN SHELL =========
   _nav.php is the first child of .container.admin-layout; the grid puts it in
   the left column and every following child in the right one. */
.admin-layout{
    display:grid;grid-template-columns:220px minmax(0,1fr);column-gap:26px;align-items:start;
    grid-template-rows:repeat(59,auto) 1fr;
}
.admin-layout > *{grid-column:2;min-width:0}
.admin-layout > .admin-sidebar{grid-column:1;grid-row:1 / span 60}

.admin-sidebar{
    position:sticky;top:96px;align-self:start;
    padding:16px 12px;border-radius:var(--lg-radius-sm,16px);
    background:var(--lg-specular), var(--panel-glass);
    backdrop-filter:var(--lg-blur);-webkit-backdrop-filter:var(--lg-blur);
    border:var(--lg-border);box-shadow:var(--lg-rim), var(--lg-ambient);
    max-height:calc(100vh - 116px);overflow-y:auto;scrollbar-width:thin;
}
.admin-sidebar-head{
    display:flex;align-items:center;gap:10px;padding:2px 6px 14px;margin-bottom:6px;
    border-bottom:1px solid var(--line-glass);
}
.admin-sidebar-mark{
    width:34px;height:34px;flex-shrink:0;border-radius:10px;display:grid;place-items:center;color:#fff;
    background:linear-gradient(135deg,var(--accent-bright),var(--button_third));
    box-shadow:0 6px 18px -6px rgba(204,0,68,.7);
}
.admin-sidebar-brand{display:flex;flex-direction:column;min-width:0;line-height:1.25}
.admin-sidebar-brand strong{font-size:.9rem;font-weight:800;letter-spacing:.2px}
.admin-sidebar-brand small{color:var(--muted);font-size:.7rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}

.admin-side-group{display:flex;flex-direction:column;gap:2px;padding:10px 0 4px}
.admin-side-label{
    padding:0 10px 6px;font-size:.62rem;font-weight:800;letter-spacing:1.1px;
    text-transform:uppercase;color:var(--muted);opacity:.75;
}
.admin-side-link{
    position:relative;display:flex;align-items:center;gap:10px;padding:8px 10px;border-radius:10px;
    color:var(--muted-strong);font-size:.84rem;font-weight:600;text-decoration:none;
    transition:background .15s,color .15s;
}
.admin-side-link:hover{background:rgba(255,255,255,.045);color:var(--text)}
.admin-side-link.active{
    color:#fff;background:linear-gradient(90deg,rgba(204,0,68,.24),rgba(204,0,68,.06));
    box-shadow:inset 0 0 0 1px var(--accent-border);
}
.admin-side-link.active::before{
    content:"";position:absolute;left:-12px;top:8px;bottom:8px;width:3px;border-radius:0 3px 3px 0;
    background:var(--accent-bright);box-shadow:0 0 10px var(--accent-bright);
}
.admin-side-icon{display:grid;place-items:center;width:18px;flex-shrink:0;opacity:.85}
.admin-side-link.active .admin-side-icon{color:var(--accent-bright);opacity:1}
.admin-side-text{flex:1;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.admin-side-link .admin-tab-count{margin-left:auto}
.admin-side-shortcuts{margin-top:6px;border-top:1px solid var(--line-glass);padding-top:14px}

.admin-topbar{
    display:flex;align-items:flex-end;justify-content:space-between;gap:16px;flex-wrap:wrap;
    padding:4px 0 16px;margin-bottom:18px;border-bottom:1px solid var(--line-soft);
}
.admin-crumbs{display:flex;align-items:center;gap:7px;font-size:.72rem;color:var(--muted);margin-bottom:5px}
.admin-crumbs a{color:var(--muted)}
.admin-crumbs a:hover{color:var(--accent-bright)}
.admin-layout .admin-title{font-size:1.75rem;font-weight:800;letter-spacing:-.3px;line-height:1.15}
.admin-subtitle{margin:6px 0 0;color:var(--muted);font-size:.85rem}
.admin-clock{
    display:inline-block;padding:6px 12px;border-radius:999px;font-size:.72rem;color:var(--muted-strong);
    background:var(--raised-glass);border:1px solid var(--line-glass);font-variant-numeric:tabular-nums;
}
.admin-layout .admin-intro{margin-top:0}

/* Cards */
.admin-card{
    padding:18px 18px 16px;border-radius:var(--lg-radius-sm,16px);
    background:var(--lg-specular), var(--panel-glass);
    backdrop-filter:var(--lg-blur);-webkit-backdrop-filter:var(--lg-blur);
    border:var(--lg-border);box-shadow:var(--lg-rim), var(--lg-ambient);
}
.admin-card .admin-section-title{margin-top:0}
.admin-card-head{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:14px}
.admin-card-head h2{margin:0;font-size:1rem;font-weight:700}
.admin-card-empty{margin:0;color:var(--muted);font-size:.84rem;line-height:1.55}
.admin-card .table-wrap{margin:0 -18px -16px;border-top:1px solid var(--line-soft)}
.admin-card .data-table th{background:rgba(255,255,255,.025)}
.admin-card .data-table tbody tr:last-child td{border-bottom:none}

.admin-chip{
    display:inline-flex;align-items:center;gap:6px;padding:3px 10px;border-radius:999px;
    font-size:.7rem;font-weight:700;letter-spacing:.3px;border:1px solid var(--line);
}
.admin-chip::before{content:"";width:6px;height:6px;border-radius:50%;background:currentColor}
.admin-chip.is-online{color:var(--green);background:rgba(47,201,105,.1);border-color:rgba(47,201,105,.3)}
.admin-chip.is-offline{color:var(--red);background:rgba(233,82,91,.1);border-color:rgba(233,82,91,.3)}

/* Dashboard KPIs */
.admin-kpi-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px;margin-bottom:16px}
.admin-kpi{
    --kpi:var(--accent-bright);
    position:relative;overflow:hidden;display:flex;align-items:flex-start;gap:13px;padding:16px;
    border-radius:var(--lg-radius-sm,16px);background:var(--lg-specular), var(--panel-glass);
    backdrop-filter:var(--lg-blur);-webkit-backdrop-filter:var(--lg-blur);
    border:var(--lg-border);box-shadow:var(--lg-rim), var(--lg-ambient);
}
.admin-kpi::after{
    content:"";position:absolute;right:-30px;top:-30px;width:110px;height:110px;border-radius:50%;
    background:radial-gradient(circle,var(--kpi),transparent 70%);opacity:.16;pointer-events:none;
}
.admin-kpi.tone-green{--kpi:var(--green)}
.admin-kpi.tone-blue{--kpi:var(--blue)}
.admin-kpi.tone-gold{--kpi:var(--gold)}
.admin-kpi-icon{
    width:40px;height:40px;flex-shrink:0;border-radius:12px;display:grid;place-items:center;color:var(--kpi);
    background:color-mix(in srgb,var(--kpi) 14%,transparent);border:1px solid color-mix(in srgb,var(--kpi) 32%,transparent);
}
.admin-kpi-body{display:flex;flex-direction:column;min-width:0}
.admin-kpi-body strong{font-size:1.55rem;font-weight:800;line-height:1.1;font-variant-numeric:tabular-nums}
.admin-kpi-label{font-size:.78rem;font-weight:600;color:var(--muted-strong);margin-top:2px}
.admin-kpi-hint{font-size:.7rem;color:var(--muted);margin-top:3px}

.admin-overview-grid{display:grid;grid-template-columns:minmax(0,1.5fr) minmax(0,1fr);gap:14px;margin-bottom:16px}
.admin-server-stats{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin-bottom:14px}
.admin-server-stats > div{
    padding:10px 12px;border-radius:10px;background:rgba(255,255,255,.03);border:1px solid var(--line-soft);
}
.admin-server-stats strong{display:block;font-size:1.2rem;font-weight:800;font-variant-numeric:tabular-nums}
.admin-server-stats span{font-size:.7rem;color:var(--muted)}
.admin-arena-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:6px}
.admin-arena-list li{
    display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.3fr) auto;gap:10px;align-items:center;
    padding:7px 10px;border-radius:8px;background:rgba(255,255,255,.025);font-size:.8rem;
}
.admin-arena-name{font-weight:700;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.admin-arena-map{color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.admin-arena-count{
    min-width:28px;padding:2px 8px;border-radius:999px;text-align:center;font-weight:800;font-size:.72rem;
    color:var(--green);background:rgba(47,201,105,.1);
}
.admin-attention-row{
    display:flex;align-items:center;justify-content:space-between;gap:10px;padding:10px 12px;margin-bottom:6px;
    border-radius:10px;background:rgba(255,255,255,.025);border:1px solid var(--line-soft);
    color:var(--muted-strong);font-size:.82rem;text-decoration:none;transition:border-color .15s;
}
a.admin-attention-row:hover{border-color:var(--accent-border);color:var(--text)}
.admin-attention-row strong{font-size:1rem;font-variant-numeric:tabular-nums;color:var(--text)}
.admin-attention-row.is-warn{border-color:rgba(242,201,76,.3);background:rgba(242,201,76,.06)}
.admin-attention-row.is-warn strong{color:#f7df8a}
.admin-quick-actions{display:flex;flex-wrap:wrap;gap:6px;margin-top:12px}
.admin-quick-actions .btn-mini{margin-left:0;text-decoration:none}

.admin-layout .admin-columns{gap:14px;margin-top:0}
.admin-layout .admin-col-narrow .audit-feed li{border-bottom-color:var(--line-soft)}

/* Tables, filters, buttons inside the shell */
.admin-layout > .table-wrap,
.admin-layout > .admin-col > .table-wrap{
    border-radius:var(--lg-radius-sm,16px);overflow:auto;background:var(--panel-glass);
    border:var(--lg-border);box-shadow:var(--lg-rim), var(--lg-ambient);
}
.admin-layout .data-table td{vertical-align:middle}
.admin-layout .data-table tbody tr:hover{background:rgba(204,0,68,.05)}
.admin-layout .admin-filter-bar{
    padding:10px;border-radius:14px;background:var(--raised-glass);border:1px solid var(--line-glass);margin:0 0 14px;
}
.admin-layout .admin-search,.admin-layout .admin-select{border-radius:9px;background:var(--field)}
.admin-layout .admin-search:focus,.admin-layout .admin-select:focus{
    outline:none;border-color:var(--accent-bright);box-shadow:0 0 0 3px rgba(204,0,68,.18);
}
.admin-layout .btn-mini{border-radius:7px}
.admin-layout td.admin-actions{white-space:nowrap;width:1%}
.admin-layout td.admin-actions .inline-form{display:inline-block;margin:0}
.admin-layout td.admin-actions .btn-mini{margin:0 0 0 4px}
.admin-layout .admin-columns{grid-template-columns:minmax(0,1fr)}
.admin-layout .admin-col-narrow .audit-feed{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));column-gap:24px}
@media (max-width:640px){
    .admin-layout .admin-col-narrow .audit-feed{grid-template-columns:1fr}
}
.admin-layout .btn-mini:hover{border-color:var(--accent-border)}
.admin-layout .btn-mini-danger:hover{border-color:var(--error)}
.admin-layout .admin-section-title{font-weight:700}
.admin-layout > .uploader-alert{border-radius:12px}

@media (max-width:1100px){
    .admin-kpi-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
    .admin-overview-grid{grid-template-columns:1fr}
}
@media (max-width:900px){
    .admin-layout{grid-template-columns:minmax(0,1fr);grid-template-rows:none}
    .admin-layout > *,.admin-layout > .admin-sidebar{grid-column:1;grid-row:auto}
    .admin-sidebar{position:static;max-height:none;overflow:visible;padding:10px;margin-bottom:16px}
    .admin-sidebar-head,.admin-side-label{display:none}
    .admin-side-nav{display:flex;gap:4px;overflow-x:auto;scrollbar-width:none;-webkit-overflow-scrolling:touch}
    .admin-side-nav::-webkit-scrollbar{display:none}
    .admin-side-group{flex-direction:row;padding:0;gap:4px}
    .admin-side-shortcuts{margin:0;border-top:none;padding:0 0 0 8px;border-left:1px solid var(--line-glass)}
    .admin-side-link{flex-shrink:0;padding:7px 11px}
    .admin-side-link.active::before{display:none}
    .admin-side-text{overflow:visible}
}
@media (max-width:560px){
    .admin-kpi-grid{grid-template-columns:1fr 1fr;gap:10px}
    .admin-kpi{padding:12px;gap:10px}
    .admin-kpi-icon{width:34px;height:34px}
    .admin-kpi-body strong{font-size:1.25rem}
    .admin-server-stats{grid-template-columns:1fr 1fr 1fr;gap:6px}
    .admin-layout .admin-title{font-size:1.4rem}
}
