:root{--radius-sm: 8px;--radius-md: 12px;--radius-lg: 20px;--color-panel: var(--color-surface);--color-accent-glow: color-mix(in srgb, var(--color-accent) 25%, transparent);--color-accent-text: var(--color-accent-600);--header-h: 56px}:root[data-ground=dark]{--color-bg: #171615;--color-surface: #201e1d;--color-panel: #262322;--color-text: #f3f2f2;--color-divider: color-mix(in srgb, #f3f2f2 18%, transparent);--color-accent-text: var(--color-accent-500);--shadow-sm: 0 1px 2px rgb(0 0 0 / .4);--shadow-md: 0 3px 10px rgb(0 0 0 / .45);--shadow-lg: 0 12px 32px rgb(0 0 0 / .5)}*{box-sizing:border-box}html,body{margin:0;padding:0;height:100%}body{background:var(--color-bg);color:var(--color-text);font-family:var(--font-body);font-size:14px;-webkit-font-smoothing:antialiased}#root{height:100vh;display:flex;flex-direction:column;overflow:hidden}a{color:var(--color-accent-text)}::-webkit-scrollbar{width:10px;height:10px}::-webkit-scrollbar-thumb{background:var(--color-divider);border-radius:5px}::-webkit-scrollbar-track{background:transparent}.app-header{display:flex;align-items:stretch;flex:none;height:var(--header-h);border-bottom:2px solid var(--color-divider);background:var(--color-bg);z-index:40}.brand{display:flex;align-items:center;gap:var(--space-3);padding:0 var(--space-4);border-right:2px solid var(--color-divider);flex:none}.brand-mark{width:30px;height:30px;flex:none;border-radius:10px;background:var(--color-accent);box-shadow:0 0 0 3px var(--color-accent-glow);display:grid;place-items:center;color:#fff;font-family:var(--font-heading);font-weight:900;font-size:15px}.brand-name{font-family:var(--font-heading);font-weight:800;font-size:15px;letter-spacing:-.02em;line-height:1.1;white-space:nowrap}.brand-sub{font-size:10px;letter-spacing:.14em;text-transform:uppercase;opacity:.55;line-height:1.1}.app-nav{display:flex;align-items:stretch;flex:0 1 auto;overflow-x:auto}.nav-tab{-webkit-appearance:none;-moz-appearance:none;appearance:none;border:0;background:transparent;color:inherit;font-family:var(--font-body);font-size:13px;font-weight:700;letter-spacing:.02em;padding:0 var(--space-4);cursor:pointer;border-bottom:3px solid transparent;white-space:nowrap}.nav-tab:hover{background:var(--color-surface)}.nav-tab[aria-current=page]{color:var(--color-accent-text);border-bottom-color:var(--color-accent)}.header-right{display:flex;align-items:center;gap:var(--space-3);padding:0 var(--space-4);border-left:2px solid var(--color-divider);flex:none;margin-left:auto;white-space:nowrap}.panel{background:var(--color-panel);border:1px solid var(--color-divider);border-radius:var(--radius-md);box-shadow:var(--shadow-sm)}.panel-pad{padding:var(--space-4)}.label{font-size:10px;font-weight:800;letter-spacing:.14em;text-transform:uppercase;opacity:.6}.h1{font-family:var(--font-heading);font-weight:800;font-size:24px;letter-spacing:-.02em;margin:0}.h2{font-family:var(--font-heading);font-weight:800;font-size:16px;letter-spacing:-.01em;margin:0}.muted{opacity:.62}.btn{-webkit-appearance:none;-moz-appearance:none;appearance:none;font-family:var(--font-body);font-size:13px;font-weight:700;padding:0 var(--space-3);height:32px;border-radius:var(--radius-sm);border:1px solid var(--color-divider);background:var(--color-panel);color:inherit;cursor:pointer}.btn:hover{border-color:var(--color-accent)}.btn-primary{background:var(--color-accent);border-color:var(--color-accent);color:#fff}.btn.is-active{border-color:var(--color-accent);box-shadow:0 0 0 3px var(--color-accent-glow);color:var(--color-accent-text)}.input,select.input{-webkit-appearance:none;-moz-appearance:none;appearance:none;font-family:var(--font-body);font-size:13px;height:32px;padding:0 var(--space-2);border-radius:var(--radius-sm);border:1px solid var(--color-divider);background:var(--color-bg);color:inherit}.btn-discord{display:inline-flex;align-items:center;gap:7px;flex:none;height:32px;padding:0 12px;border-radius:var(--radius-sm);background:#5865f2;color:#fff;font-family:var(--font-body);font-size:13px;font-weight:700;text-decoration:none;white-space:nowrap;border:1px solid #5865f2;transition:background .12s,border-color .12s,box-shadow .12s}.btn-discord:hover{background:#4752c4;border-color:#4752c4;color:#fff;box-shadow:0 0 0 3px color-mix(in srgb,#5865f2 30%,transparent)}.btn-discord:active{background:#3c45a5}.btn-discord svg{flex:none}.btn-discord-label-short{display:none}@media(max-width:1100px){.btn-discord-label{display:none}.btn-discord-label-short{display:inline}}.account{display:flex;align-items:center;gap:var(--space-2);flex:none}.account-avatar{width:28px;height:28px;border-radius:50%;border:2px solid var(--color-divider);flex:none}.account-avatar-empty{background:var(--color-neutral-400)}.account-id{line-height:1.15;min-width:0}.account-name{font-size:12px;font-weight:700;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:130px}.account-role{font-size:9px;font-weight:800;letter-spacing:.12em;text-transform:uppercase;opacity:.75}.account-role.role-owner{color:var(--color-accent-text);opacity:1}.account-role.role-admin{color:#d67d2f;opacity:1}.account-role.role-member{color:#4dd68f;opacity:1}.account-signout{height:30px;line-height:28px;flex:none}@media(max-width:1100px){.account-signout{padding:0 8px;font-size:11px}}.tag{display:inline-flex;align-items:center;gap:4px;font-size:10px;font-weight:800;letter-spacing:.1em;text-transform:uppercase;padding:3px 7px;border-radius:999px;border:1px solid var(--color-divider)}.page{flex:1;overflow-y:auto;padding:var(--space-6)}.hub-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:var(--space-4);margin-top:var(--space-4)}.server-card{display:flex;flex-direction:column;overflow:hidden;text-decoration:none;color:inherit;transition:border-color .12s,transform .12s}.server-card:hover{border-color:var(--color-accent);transform:translateY(-2px)}.server-thumb{aspect-ratio:1;background:var(--color-neutral-800);background-size:cover;background-position:center;filter:grayscale(1) contrast(1.05)}.server-card:hover .server-thumb{filter:none}.server-meta{padding:var(--space-3);display:flex;flex-direction:column;gap:2px;border-top:1px solid var(--color-divider)}.live{flex:1;display:flex;min-height:0}.map-wrap{flex:1;position:relative;overflow:hidden;background:var(--color-neutral-900);cursor:grab;touch-action:none}.map-wrap.is-panning{cursor:grabbing}.map-plane{position:absolute;top:0;left:0;transform-origin:0 0;will-change:transform}.map-base{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;image-rendering:auto;-webkit-user-select:none;user-select:none;pointer-events:none}.map-canvas{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;pointer-events:none}.marker{position:absolute;transform:translate(-50%,-50%);transform-origin:center;cursor:pointer;border:0;padding:0;background:none}.marker-dot{width:14px;height:14px;border-radius:50%;border:2px solid rgb(0 0 0 / .55);box-shadow:0 1px 4px #00000080}.marker.is-selected .marker-dot{outline:2px solid #fff;outline-offset:2px}.marker.is-recovered .marker-dot{border-style:dashed}.marker-cluster{position:absolute;transform:translate(-50%,-50%);display:grid;place-items:center;min-width:26px;height:26px;padding:0 6px;border-radius:999px;background:var(--color-accent);color:#fff;font-size:11px;font-weight:800;border:2px solid rgb(0 0 0 / .4);cursor:pointer}.res-highlight{position:absolute;width:14px;height:14px;border-radius:50%;border:2px solid #fff;box-shadow:0 0 0 1px #000000b3,0 0 6px #0009;pointer-events:none}.poi-pin{position:absolute;transform-origin:center;-webkit-appearance:none;-moz-appearance:none;appearance:none;border:0;padding:0;background:none;font-size:17px;line-height:1;cursor:pointer;text-shadow:0 0 2px rgb(0 0 0 / .95),0 0 5px rgb(0 0 0 / .75)}.poi-pin:hover{filter:brightness(1.25)}.sighting-cell{position:absolute;border:1px dashed;border-radius:4px;padding:0;cursor:pointer;display:grid;place-items:center;transition:filter .12s ease}.sighting-cell:hover{filter:brightness(1.35)}.sighting-count{font-size:11px;font-weight:800;color:#fff;text-shadow:0 1px 2px rgb(0 0 0 / .9);opacity:1}.player-dot{position:absolute;transform-origin:center;width:11px;height:11px;padding:0;border-radius:50%;border:2px solid rgb(255 255 255 / .9);box-shadow:0 0 0 1px #000c,0 0 6px #00000080;cursor:pointer}.player-dot:hover{filter:brightness(1.3);box-shadow:0 0 0 1px #000c,0 0 10px #ffffff80}.player-name{position:absolute;left:50%;top:11px;transform:translate(-50%);font-size:9px;font-weight:700;line-height:1;white-space:nowrap;color:#fff;text-shadow:0 0 2px rgb(0 0 0 / .95),0 0 4px rgb(0 0 0 / .8);pointer-events:none}.explorer-pin{position:absolute;transform-origin:center;-webkit-appearance:none;-moz-appearance:none;appearance:none;border:0;padding:0;background:none;font-size:15px;line-height:1;cursor:pointer;text-shadow:0 0 2px rgb(0 0 0 / .95),0 0 5px rgb(0 0 0 / .75)}.explorer-pin.is-collected{opacity:.4}.explorer-pin:hover{opacity:1;filter:brightness(1.3)}.note-pin{position:absolute;transform-origin:center;-webkit-appearance:none;-moz-appearance:none;appearance:none;border:0;padding:0;background:none;font-size:15px;line-height:1;cursor:pointer;filter:drop-shadow(0 1px 2px rgb(0 0 0 / .6))}.note-pin:hover{filter:drop-shadow(0 1px 3px rgb(0 0 0 / .9)) brightness(1.15)}.map-tooltip{position:absolute;z-index:30;pointer-events:none;background:var(--color-bg);color:var(--color-text);border:1px solid var(--color-divider);border-radius:var(--radius-sm);box-shadow:var(--shadow-md);padding:var(--space-2) var(--space-3);font-size:12px;white-space:nowrap}.map-tools{position:absolute;left:var(--space-3);top:var(--space-3);z-index:20;display:flex;gap:var(--space-1);padding:var(--space-1);background:var(--color-panel);border:1px solid var(--color-divider);border-radius:var(--radius-md);box-shadow:var(--shadow-sm)}.zoom-controls{position:absolute;right:var(--space-3);bottom:var(--space-3);z-index:20;display:flex;flex-direction:column;gap:var(--space-1);padding:var(--space-1);background:var(--color-panel);border:1px solid var(--color-divider);border-radius:var(--radius-md);box-shadow:var(--shadow-sm)}.zoom-controls .btn{width:32px;padding:0}.sidebar{width:300px;flex:none;border-left:2px solid var(--color-divider);background:var(--color-bg);overflow-y:auto;padding:var(--space-4);display:flex;flex-direction:column;gap:var(--space-4)}.layer-row{display:flex;align-items:center;gap:var(--space-2);padding:5px 0;cursor:pointer;-webkit-user-select:none;user-select:none}.legend-section+.legend-section{margin-top:var(--space-3)}.legend-head{display:flex;align-items:center;gap:var(--space-2)}.legend-caret{display:flex;align-items:center;gap:5px;flex:1;min-width:0;border:0;background:none;padding:2px 0;font:inherit;color:inherit;cursor:pointer;text-align:left}.legend-caret:hover .label{opacity:1;color:var(--color-accent-text)}.caret{display:inline-block;font-size:9px;line-height:1;opacity:.55;transition:transform .12s ease;transform:rotate(0)}.caret.is-open{transform:rotate(90deg)}.legend-body{margin-top:2px}.legend-bulk{flex:none;border:1px solid transparent;border-radius:var(--radius-sm);background:none;color:inherit;font:inherit;font-size:10px;font-weight:700;letter-spacing:.04em;padding:1px 6px;opacity:.5;cursor:pointer;white-space:nowrap}.legend-head:hover .legend-bulk{opacity:.85;border-color:var(--color-divider)}.legend-bulk:hover{opacity:1;border-color:var(--color-accent);color:var(--color-accent-text)}.legend-filter{position:relative;display:flex;align-items:center}.legend-filter .input{width:100%;height:28px;font-size:12px;padding-right:24px}.legend-filter-clear{position:absolute;right:4px;border:0;background:none;color:inherit;opacity:.5;cursor:pointer;font-size:14px;line-height:1;padding:2px 4px}.legend-filter-clear:hover{opacity:1}mark.hit{background:color-mix(in srgb,var(--color-accent) 35%,transparent);color:inherit;border-radius:2px;padding:0 1px}.layer-swatch{width:11px;height:11px;border-radius:50%;border:1px solid rgb(0 0 0 / .4);flex:none}.layer-count{margin-left:auto;font-size:11px;font-weight:700;opacity:.55;font-variant-numeric:tabular-nums}.res-grid{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:2px var(--space-3)}.res-grid .layer-row{min-width:0}.res-grid .layer-row>span:nth-of-type(2){overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0}.res-grid .layer-count{flex:none}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:100;display:grid;place-items:center;background:#0000008c;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);padding:var(--space-4)}.modal-panel{width:min(420px,100%);background:var(--color-bg);border:1px solid var(--color-divider);border-radius:var(--radius-lg);box-shadow:var(--shadow-lg);overflow:hidden}.modal-title{font-family:var(--font-heading);font-weight:800;font-size:15px;letter-spacing:-.01em;padding:var(--space-4) var(--space-4) 0}.modal-body{padding:var(--space-3) var(--space-4) var(--space-4);display:flex;flex-direction:column;gap:var(--space-3)}.modal-actions{display:flex;justify-content:flex-end;gap:var(--space-2);padding:var(--space-3) var(--space-4);border-top:1px solid var(--color-divider);background:var(--color-surface)}.modal-actions .spacer{margin-right:auto}textarea.input{height:auto;min-height:84px;padding:var(--space-2);font-family:var(--font-body);line-height:1.45;resize:vertical;width:100%}.btn-danger{border-color:color-mix(in srgb,#e33c3c 60%,transparent);color:#e33c3c}.btn-danger:hover{background:color-mix(in srgb,#e33c3c 12%,transparent);border-color:#e33c3c}.note-text{white-space:pre-wrap;overflow-wrap:anywhere;line-height:1.5}.table{width:100%;border-collapse:collapse;font-size:13px}.table th{text-align:left;font-size:10px;font-weight:800;letter-spacing:.12em;text-transform:uppercase;opacity:.6;padding:var(--space-2);border-bottom:2px solid var(--color-divider)}.table td{padding:var(--space-2);border-bottom:1px solid var(--color-divider)}.table tr:hover td{background:var(--color-surface)}.matrix-cell{text-align:center;cursor:pointer;-webkit-user-select:none;user-select:none}.check-yes{color:var(--color-accent-text);font-weight:800}.check-no{opacity:.3}.empty{display:grid;place-items:center;height:100%;text-align:center;gap:var(--space-2);padding:var(--space-8)}
