:root{--forest: #2d6a4f;--forest-dark: #1b4332;--sand: #fbf7ee;--sand-variant: #e7e0d0;--amber: #e9a23b;--ink: #1d1b16;--muted: #6f6a5d;--danger: #b3261e}*{box-sizing:border-box}body{margin:0;font-family:system-ui,Segoe UI,Roboto,sans-serif;background:var(--sand);color:var(--ink)}.centered{min-height:100vh;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:12px;text-align:center;padding:24px}.login-logo{width:120px;height:120px;border-radius:50%}.shell header{display:flex;align-items:center;gap:16px;padding:10px 20px;background:var(--forest);color:#fff}.shell header img{width:40px;height:40px;border-radius:50%}.shell header h1{font-size:18px;margin:0}.shell header .muted{color:#d7e3db}.shell nav{display:flex;gap:4px;flex:1 1 auto;min-width:0;overflow-x:auto;scrollbar-width:none}.shell nav::-webkit-scrollbar{display:none}.spacer{flex:1}main{padding:20px 28px;width:100%;margin:0}button{font:inherit;padding:8px 14px;border-radius:8px;border:1px solid var(--sand-variant);background:#fff;cursor:pointer}button:hover{filter:brightness(.97)}button:disabled{opacity:.5;cursor:default}button.primary{background:var(--forest);border-color:var(--forest);color:#fff}button.danger{color:var(--danger);border-color:var(--danger)}button.tab{background:transparent;border:none;color:#cfe0d6;white-space:nowrap;flex:0 0 auto}button.tab.active{color:#fff;border-bottom:3px solid var(--amber);border-radius:0}.subnav{display:flex;gap:6px;margin-bottom:14px;flex-wrap:wrap}button.subtab{background:#fff;border:1px solid var(--sand-variant);color:var(--muted)}button.subtab.active{background:var(--forest);border-color:var(--forest);color:#fff}.filters{display:flex;gap:10px;align-items:center;margin-bottom:14px;flex-wrap:wrap}.filters input,.filters select,.editor input,.editor select,.editor textarea,.approve-form select{font:inherit;padding:8px 10px;border:1px solid var(--sand-variant);border-radius:8px;background:#fff}.filters input{min-width:240px}table{width:100%;border-collapse:collapse;background:#fff;border-radius:12px;overflow:hidden}.table-wrap{overflow-x:auto;-webkit-overflow-scrolling:touch;border-radius:12px}th,td{text-align:left;padding:8px 12px;border-bottom:1px solid var(--sand-variant);font-size:14px}th{background:var(--sand-variant);font-weight:600}th.sortable{cursor:pointer;-webkit-user-select:none;user-select:none;white-space:nowrap}th.sortable:hover{background:#ddd4bf}tbody tr{cursor:pointer}tbody tr:hover{background:#f4efe2}.thumb{width:44px;height:44px;border-radius:50%;object-fit:cover;display:inline-block}.thumb.placeholder{background:var(--sand-variant)}.thumb.placeholder.big{width:140px;height:140px;border-radius:12px}.cleanup-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(120px,1fr));gap:10px;margin-top:8px}.cleanup-item{cursor:pointer;border:2px solid transparent;border-radius:10px;padding:4px;background:#fff}.cleanup-item:hover{border-color:var(--sand-variant)}.cleanup-item.keep{border-color:var(--forest, #2d6a4f);opacity:.55}.cleanup-thumb{width:100%;aspect-ratio:1;object-fit:cover;border-radius:8px;display:block}.cleanup-thumb.placeholder{background:var(--sand-variant)}.cleanup-meta{display:flex;justify-content:space-between;font-size:11px;padding:3px 2px 0}.chip{display:inline-block;padding:2px 10px;border-radius:999px;font-size:12px;background:var(--sand-variant);margin-left:6px;white-space:nowrap}.chip.toggle{cursor:pointer;-webkit-user-select:none;user-select:none}.chip.toggle:hover{filter:brightness(.95)}.chip.status-published{background:#cfe8da;color:var(--forest-dark)}.chip.status-draft{background:#eee3c8}.chip.status-testing{background:#dbe7f5}.chip.status-hidden{background:#e5e5e5}.chip.status-archived{background:#f2d3d0}.dot{display:inline-block;width:10px;height:10px;border-radius:50%;margin-right:6px}.chip.issue-critical{background:var(--danger);color:#fff;margin:1px 4px 1px 0}.chip.issue-warning{background:#f6dfb9;color:#7a5200;margin:1px 4px 1px 0}.chip.issue-gap{background:#eee3c8;margin:1px 4px 1px 0}.chip.issue-info{background:#e5e5e5;margin:1px 4px 1px 0}.chip.issue-ok{background:#cfe8da;color:var(--forest-dark);margin:1px 4px 1px 0}.chip.issue-cross{background:#ddebd2;color:var(--forest-dark);margin:1px 4px 1px 0}.health-ok{color:var(--forest)}.health-warn{color:#7a5200;font-weight:600}.health-bad{color:var(--danger);font-weight:700}.content-marks{display:inline-flex;gap:5px;font-weight:700}.warn{color:var(--danger);font-size:13px}.muted{color:var(--muted);font-size:13px}.flash{color:var(--forest);font-weight:600}.editor-head{display:flex;align-items:center;gap:12px;margin-bottom:16px}.editor-head h2{margin:0}.editor-grid{display:grid;grid-template-columns:3fr 2fr;gap:24px;align-items:start}@media(max-width:900px){.editor-grid{grid-template-columns:1fr}}.editor section{background:#fff;border-radius:12px;padding:16px;display:flex;flex-direction:column;gap:12px}.editor label{display:flex;flex-direction:column;gap:4px;font-size:13px;color:var(--muted)}.editor label.check{flex-direction:row;align-items:center;gap:8px;color:var(--ink);font-size:14px}.editor textarea{resize:vertical}.ai-box{background:var(--sand);border-radius:10px;padding:12px;display:flex;flex-direction:column;gap:8px}.meta p{margin:4px 0;font-size:13px;color:var(--muted)}.photo-block{display:flex;flex-direction:column;gap:8px}.photo-block h3{margin:6px 0 0;font-size:14px}.refs{display:flex;gap:8px;flex-wrap:wrap}.ref-tile{position:relative;width:104px;height:104px;border-radius:10px;overflow:hidden;border:2px solid var(--sand-variant)}.ref-tile.display{border-color:var(--amber)}.ref-tile img{width:100%;height:100%;object-fit:cover;display:block}.tile-placeholder{display:block;width:100%;height:100%;background:var(--sand-variant)}.tile-badge{position:absolute;top:4px;left:6px;color:var(--amber);text-shadow:0 1px 3px rgba(0,0,0,.7);font-size:18px}.tile-actions{position:absolute;top:4px;right:4px;display:flex;gap:4px}.tile-actions button{width:26px;height:26px;padding:0;border-radius:50%;border:none;background:#0000008c;color:#fff;font-size:13px;line-height:1}.tile-actions button:hover{background:#000000bf}.tile-actions .tile-danger{color:#ffb4ad}.tile-note{position:absolute;bottom:0;left:0;right:0;background:#0000008c;color:#fff;font-size:11px;text-align:center;padding:2px 0}.upload-tile{width:104px;height:104px;border:2px dashed var(--sand-variant);border-radius:10px;display:flex;align-items:center;justify-content:center;font-size:32px;color:var(--muted);cursor:pointer}.upload-tile:hover{border-color:var(--forest);color:var(--forest)}.upload-tile input{display:none}.toast{position:fixed;bottom:24px;left:50%;transform:translate(-50%);background:var(--forest-dark);color:#fff;padding:12px 22px;border-radius:999px;box-shadow:0 6px 24px #00000040;z-index:100;font-size:14px}select.inline{font:inherit;font-size:13px;padding:3px 4px;border:1px solid transparent;border-radius:6px;background:transparent;cursor:pointer;max-width:160px}select.inline:hover{border-color:var(--sand-variant);background:#fff}.row{display:flex;gap:10px;align-items:center}.row-actions{white-space:nowrap}.row-actions button{font-size:12px;padding:4px 8px;margin-right:4px}.actions{display:flex;gap:8px;flex-wrap:wrap}.groups{display:flex;flex-direction:column;gap:16px}.report-card{border-left:4px solid var(--danger)}.report-row{margin:6px 0;font-size:14px}.feedback-new{border-left:4px solid var(--amber)}.feedback-message{white-space:pre-wrap;margin:8px 0}.group-card{background:#fff;border-radius:12px;padding:16px}.group-head{display:flex;gap:12px;align-items:baseline;flex-wrap:wrap}.group-photos{display:flex;gap:10px;flex-wrap:wrap;margin:10px 0}.group-photos img{width:200px;height:200px;object-fit:cover;border-radius:12px}.approve-form{display:flex;gap:8px;margin-top:10px;flex-wrap:wrap}a{color:var(--forest)}tbody tr.static-row{cursor:default}.kpis{display:flex;gap:12px;flex-wrap:wrap;margin-bottom:16px}.kpi{background:#fff;border-radius:12px;padding:14px 18px;display:flex;flex-direction:column;min-width:140px}.kpi-value{font-size:26px;font-weight:700;color:var(--forest-dark)}.kpi-hint{font-size:11px}.chart-card{background:#fff;border-radius:12px;padding:14px 18px;margin-bottom:14px}.chart-card h3{margin:0 0 10px;font-size:14px}.bars{display:flex;align-items:flex-end;gap:2px;height:90px}.bar-slot{flex:1;display:flex;align-items:flex-end;height:100%}.bar{width:100%;border-radius:3px 3px 0 0;min-height:1px}.bar-labels{display:flex;justify-content:space-between;margin-top:4px}.settings{display:flex;flex-direction:column;gap:16px}.settings-card{background:#fff;border-radius:12px;padding:16px}.settings-card h3{margin:0 0 10px;font-size:15px}.settings-card h3 .muted{font-weight:400}.settings-card .actions,.settings-card .row{margin-top:12px}.settings-card input,.settings-card textarea{font:inherit;padding:6px 10px;border:1px solid var(--sand-variant);border-radius:8px;background:#fff}.settings-card textarea{width:100%;box-sizing:border-box;resize:vertical}.config-table td{border-bottom:1px solid var(--sand)}.config-value input[type=text],.config-value input:not([type]){min-width:min(220px,100%)}.config-value textarea{min-width:min(420px,100%)}button.small{font-size:12px;padding:4px 10px}.color-picker{display:flex;flex-wrap:wrap;gap:6px}.color-pick.selected{border-color:var(--forest);box-shadow:0 0 0 2px #2d6a4f40}.color-pick{display:flex;align-items:center;gap:6px;font-size:13px;padding:5px 10px}.color-swatch{width:18px;height:18px;border-radius:5px;border:1px solid;display:inline-block}.notice-preview-wrap{margin-top:12px;max-width:420px}.notice-preview{border:1px solid;border-radius:12px;padding:10px 12px;margin-top:4px;font-size:14px;text-align:justify}.order-list{list-style:none;margin:12px 0 0;padding:0;display:flex;flex-direction:column;gap:4px;max-width:640px}.order-row{display:flex;align-items:center;gap:10px;background:var(--sand);border:1px solid var(--sand-variant);border-radius:10px;padding:4px 10px;cursor:grab}.order-row.dragging{opacity:.45}.order-row .num{min-width:26px;text-align:right;color:var(--muted);font-size:12px}.order-row .thumb{width:36px;height:36px;flex-shrink:0}.order-row .title{flex:1;font-size:14px;min-width:0}.order-btns{display:flex;gap:4px}.order-btns button{padding:2px 8px;font-size:11px}.insights{display:flex;flex-direction:column;gap:16px;margin-top:20px}.thumb.square{border-radius:8px;width:52px;height:52px}.find-photo{display:flex;align-items:center;gap:8px}.mini-map{width:100%;height:220px;border:1px solid var(--sand-variant);border-radius:10px}.new-secret{background:var(--sand);border-radius:14px;padding:20px;width:min(680px,94vw);max-height:92vh;overflow:auto;display:flex;flex-direction:column;gap:8px}.new-secret h2{margin:0 0 4px}.new-secret label{display:flex;flex-direction:column;gap:4px;font-weight:600}.new-secret input{font:inherit;padding:8px 10px;border:1px solid var(--sand-variant);border-radius:8px;background:#fff}.new-secret .muted{margin:2px 0}.new-secret-map{width:100%;height:340px;border:1px solid var(--sand-variant);border-radius:10px}.hist-bars{position:relative;display:flex;align-items:flex-end;gap:2px;height:110px;margin-top:8px}.hist-slot{flex:1;display:flex;flex-direction:column-reverse;height:100%}.hist-bar.ok{background:var(--forest);border-radius:2px}.hist-bar.fail{background:#d98e88;border-radius:2px}.hist-threshold{position:absolute;top:-4px;bottom:-4px;width:2px;background:var(--amber);z-index:1}.stats-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(340px,100%),1fr));gap:14px;margin-bottom:14px}.stats-grid .chart-card{margin-bottom:0}.hbar-row{display:grid;grid-template-columns:minmax(110px,200px) minmax(60px,1fr) minmax(70px,40%);gap:10px;align-items:center;padding:3px 0;font-size:13px}.hbar-label{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.hbar-track{background:var(--sand);border-radius:6px;height:14px;overflow:hidden}.hbar-fill{display:block;height:100%;border-radius:6px;min-width:2px}.hbar-value{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.never-row{margin:4px 0;font-size:13px}.preview-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#00000080;display:flex;align-items:center;justify-content:center;z-index:200}.preview-phone{position:relative;width:min(360px,92vw);max-height:88vh;overflow-y:auto;background:var(--sand);border-radius:28px 28px 12px 12px;padding:14px 22px 20px;display:flex;flex-direction:column;align-items:center;text-align:center;box-shadow:0 12px 48px #0006}.preview-grabber{width:42px;height:4px;border-radius:2px;background:var(--sand-variant);margin-bottom:14px}.preview-photo{width:78%;aspect-ratio:1;border-radius:50%;object-fit:cover;border:4px solid var(--sand-variant)}.preview-photo.placeholder{background:var(--sand-variant)}.preview-phone h2{margin:12px 0 2px;font-size:20px}.preview-category{margin:0;font-size:12px;color:var(--muted)}.preview-chips{display:flex;gap:10px;align-items:center;margin:10px 0}.preview-rarity{padding:3px 12px;border-radius:999px;font-size:13px}.preview-points{color:var(--amber);font-weight:700;font-size:14px}.preview-teaser{margin:4px 0 12px;font-size:14px;line-height:1.45}.preview-hints{width:100%;display:flex;flex-direction:column;gap:6px}.preview-hint{display:flex;justify-content:space-between;gap:10px;background:#fff;border-radius:10px;padding:10px 14px;font-size:13px}.preview-hint.unlockable{cursor:pointer;border:1px solid var(--forest)}.preview-hint.unlockable:hover{background:#eef5f0}.preview-hint.open{background:#eef5f0;text-align:left}.preview-cta{margin-top:14px;width:100%;border-radius:999px;padding:12px}.preview-note{margin-top:10px;font-size:11px}.preview-close{position:absolute;top:10px;right:10px;width:30px;height:30px;padding:0;border-radius:50%}.avatar-cat-head{align-items:center}.avatar-cat-head input{max-width:220px}.cat-order{display:flex;flex-direction:column;gap:2px}.cat-order button{font-size:9px;line-height:1;padding:3px 6px}.player-avatar{width:28px;height:28px;border-radius:50%;object-fit:contain;vertical-align:middle;margin-right:8px;background:var(--sand-variant)}span.player-avatar{display:inline-flex;align-items:center;justify-content:center;font-weight:600;font-size:13px;color:var(--forest-dark);background:#cfe8da}.avatar-grid{display:flex;flex-wrap:wrap;gap:8px;margin-top:10px}.avatar-tile{position:relative;width:64px;height:64px;border-radius:50%;background:var(--sand);border:1px solid var(--sand-variant)}.avatar-tile img{width:100%;height:100%;object-fit:contain;border-radius:50%}.avatar-x{position:absolute;top:-4px;right:-4px;width:22px;height:22px;padding:0;border-radius:50%;border:none;background:#0009;color:#ffb4ad;font-size:12px;line-height:1;opacity:0}.avatar-tile:hover .avatar-x{opacity:1}.upload-tile.avatar-upload{width:64px;height:64px;border-radius:50%;font-size:24px}.admin-map{width:100%;height:calc(100vh - 190px);min-height:420px;border-radius:12px;border:1px solid var(--sand-variant)}.admin-map .leaflet-popup-content button{margin-top:6px;font-size:12px;padding:4px 10px}input[type=color]{padding:0;border:1px solid var(--sand-variant);border-radius:6px;width:44px;height:30px;background:#fff;cursor:pointer}@media(max-width:820px){main{padding:12px}.shell header{flex-wrap:wrap;gap:6px 10px;padding:8px 12px}.shell header img{width:32px;height:32px}.shell header h1{font-size:15px;flex:1;min-width:0}.shell header .muted{display:none}.spacer{display:none}.shell nav{order:3;flex:0 0 100%}button.tab{padding:8px 10px}.filters{gap:8px}.filters input{min-width:0;flex:1 1 100%}.filters select{flex:1 1 45%;min-width:0;max-width:100%}th,td{padding:6px 8px;font-size:13px}.config-table,.config-table tbody{display:block}.config-table tr{display:flex;flex-wrap:wrap;align-items:center;gap:6px 10px;padding:8px 0;border-bottom:1px solid var(--sand-variant)}.config-table td{display:block;border:none;padding:0}.config-table td:first-child{flex:1 1 100%}.config-value input[type=text],.config-value input:not([type]){width:100%}.group-photos img{width:calc(50% - 5px);height:auto;aspect-ratio:1}.admin-map{height:calc(100dvh - 230px);min-height:320px}.new-secret-map{height:240px}.order-list{max-width:none}.kpi{flex:1 1 132px;min-width:132px;padding:12px 14px}.kpi-value{font-size:22px}}@media(hover:none){.avatar-x{opacity:1;width:26px;height:26px}.tile-actions button{width:32px;height:32px;font-size:15px}.order-btns button{padding:9px 12px;font-size:13px}.order-row{padding:6px 10px}.row-actions button{padding:9px 10px;font-size:13px}button.small{padding:9px 12px;font-size:13px}select.inline{border-color:var(--sand-variant);background:#fff;padding:5px 6px}}
