:root{color-scheme:dark;--bg:#0b121b;--card:#121e2a;--line:#2d4051;--fg:#f1f6f8;--muted:#afc0cb;--accent:#a1f0c5}
*{box-sizing:border-box}
body{margin:0;background:radial-gradient(ellipse at 25% 0%,#193347,var(--bg) 64%);color:var(--fg);font:16px system-ui,sans-serif}
main{max-width:1240px;margin:auto;padding:clamp(16px,4vw,48px)}
header,.status,.toolbar,footer{display:flex;align-items:center;justify-content:space-between;gap:12px}
header{align-items:flex-start}
h1{font-size:clamp(38px,8vw,82px);line-height:1;letter-spacing:-.07em;margin:0}
h1 span,.eyebrow{color:var(--accent)}
h2{font-size:clamp(23px,3vw,34px);line-height:1.1;letter-spacing:-.035em;margin:6px 0 12px}
.eyebrow,.pill,small,footer{font-size:.7rem;font-weight:750;letter-spacing:.13em}
.eyebrow{margin:0 0 8px}
.subtitle,.muted,footer,.toolbar{color:var(--muted)}
.subtitle{margin:8px 0 0}
.pill,.tag{background:#101d28;border:1px solid var(--line);border-radius:999px;padding:8px 11px}
.pill{color:var(--accent);white-space:nowrap}
.status{margin:22px 0 12px;border:1px solid var(--line);border-radius:12px;background:#0d1721;padding:10px 15px}
.status div{display:flex;align-items:center;gap:12px}
progress{width:clamp(36px,12vw,115px);height:8px;accent-color:var(--accent)}
.layout{display:grid;grid-template-columns:minmax(0,1.9fr) minmax(280px,1fr);gap:14px;align-items:start}
.panel{border:1px solid var(--line);border-radius:16px;overflow:hidden;background:var(--card)}
.view{position:relative;background:#192c35}
canvas{display:block;width:100%;aspect-ratio:4/3;touch-action:none;cursor:grab}
canvas:active{cursor:grabbing}
.tag{position:absolute;left:12px;top:12px;font-size:.75rem;pointer-events:none}
.toolbar{flex-wrap:wrap;padding:10px 12px;font-size:.8rem}
.controls{display:flex;flex-wrap:wrap;gap:5px}
button{font:inherit;font-weight:650;cursor:pointer;color:var(--fg);background:#1c2e3f;border:1px solid var(--line);border-radius:8px;min-width:38px;min-height:38px}
button:hover{border-color:var(--accent)}
:focus-visible{outline:2px solid var(--accent);outline-offset:-3px}
button:disabled{opacity:.45;cursor:default}
.quiz{padding:18px}
.map-caption{margin:0 0 8px;font-size:.82rem}
#map{display:block;width:100%;background:#0c1821;border:1px solid var(--line);border-radius:10px;cursor:crosshair;touch-action:manipulation}
.plan{fill:#243d50;stroke:#87a7b7;stroke-width:.55}
.plan-detail{fill:none;stroke:#547587;stroke-width:.4}
.guess-pin,.answer-pin{stroke:#0c1821;stroke-width:.4}
.guess-pin{fill:#f9f1d9}
.answer-pin{fill:#a1f0c5}
.distance-line{stroke:#f9f1d9;stroke-width:.35;stroke-dasharray:1 .7}
#mapStatus,#feedback,#summary{font-size:.85rem}
#feedback:empty{display:none}
#action{width:100%;background:var(--accent);color:#132921;min-height:44px}
#summary{padding-left:20px;line-height:1.75}
footer{margin-top:18px;flex-wrap:wrap}
@media(max-width:760px){.layout{grid-template-columns:1fr}canvas{aspect-ratio:16/10}.pill{font-size:.58rem}}

.lobby{margin-top:24px;padding:clamp(18px,4vw,34px)}
.lobby fieldset{border:0;padding:0;margin:18px 0}
.lobby legend{font-weight:750;margin-bottom:10px}
.profile{display:flex;flex-wrap:wrap;gap:12px}
.skins{display:grid;grid-template-columns:repeat(auto-fit,minmax(125px,1fr));gap:8px}
.skin{display:grid;justify-items:center;align-content:center;gap:5px;padding:8px;text-align:center}
.skin svg{width:62px;height:62px}
.skin span{font-size:.76rem;color:var(--muted)}
.skin[aria-pressed=true]{border-color:var(--accent);background:#26443f}
.cta{background:var(--accent);color:#132921;padding:0 20px;min-height:44px}
#menu{padding:0 12px}
#score{margin-left:auto}
.map-labels{fill:#eaf5ff;font:2.45px system-ui,sans-serif;text-anchor:middle;pointer-events:none}

body{min-height:100svh}
.mode-options{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,210px),1fr));gap:8px;max-width:580px}
.mode-options label{display:grid;grid-template-columns:auto 1fr;gap:4px 8px;align-items:center;border:1px solid var(--line);padding:12px;border-radius:10px;cursor:pointer}
.mode-options label:has(:checked){border-color:var(--accent);background:#203a3c}
.mode-options input{accent-color:var(--accent)}
.mode-options span{grid-column:2;font-size:.82rem;color:var(--muted)}
.map-tools{display:flex;gap:6px;flex-wrap:wrap;margin:0 0 10px}
.map-tools button{padding:0 9px;font-size:.78rem}
#hintText{font-size:.85rem}
#game[data-mode=challenge] .map-labels{display:none}
.medal{color:var(--accent);font-weight:750}
@media(max-width:480px){.status{flex-wrap:wrap}.status div{gap:6px}.quiz{padding:14px}.toolbar button{min-width:42px;min-height:42px}}
