:root{--bg:#f0f4fb;--ink:#011b47;--ink-soft:#475f8a;--accent:#cd010d;--accent-2:#1a3a7a;--surface:#fff;--surface-alt:#edf1f9;--edge:#c4cfe8;--danger:#cd010d}*{box-sizing:border-box}body{color:var(--ink);background:radial-gradient(circle at 20% -10%,#cd010d1f,#0000 45%),radial-gradient(circle at 90% 0,#011b4724,#0000 38%),linear-gradient(#f0f4fb,#e6edf8);margin:0;font-family:Space Grotesk,sans-serif}h1,h2,h3,h4,h5,p{margin:0}input,select,button{font:inherit}.app-shell{flex-direction:column;gap:1rem;height:100dvh;min-height:100vh;padding:1rem;display:flex;overflow:hidden}.topbar,.api-key-row,.panel,.map-wrap,.streetview-panel,.modal-card{border:1px solid var(--edge);background:var(--surface);box-shadow:0 10px 24px #14213d14}.topbar{background:linear-gradient(120deg,#fffffffc,#edf1f9fa);border-radius:16px;justify-content:space-between;align-items:center;padding:1rem 1.25rem;display:flex}.topbar-logo{width:auto;height:100px;display:block}.topbar-actions,.inline-actions,.nav-row{flex-wrap:wrap;align-items:center;gap:.75rem;display:flex}.topbar-status-group{flex-wrap:wrap;align-items:center;gap:.6rem;display:flex}.topbar-status-pill{border:1px solid var(--edge);background:#ffffffc7;border-radius:10px;gap:.1rem;min-width:112px;padding:.45rem .7rem;display:grid}button.topbar-status-pill--btn{cursor:pointer;text-align:left;color:var(--ink);font-weight:inherit;transition:border-color .15s,box-shadow .15s,transform .15s}button.topbar-status-pill--btn:hover{border-color:var(--accent-2);transform:translateY(-1px);box-shadow:0 0 0 2px #1a3a7a2e}.topbar-status-pill strong{font-size:.84rem;line-height:1.1}.topbar-status-label{letter-spacing:.08em;text-transform:uppercase;color:var(--ink-soft);font-size:.65rem}.topbar-status-value{color:var(--ink-soft);font-size:.72rem;line-height:1.15}.eyebrow{letter-spacing:.08em;color:var(--ink-soft);text-transform:uppercase;font-family:IBM Plex Mono,monospace;font-size:.78rem}h1{margin-top:.25rem;font-size:clamp(1.8rem,3vw,2.7rem)}.score-chip{background:var(--ink);color:#fff;border-radius:999px;padding:.65rem .9rem;font-weight:700}.api-key-row{border-radius:12px;gap:.45rem;padding:.85rem 1rem;display:grid}input,select{border:1px solid var(--edge);background:#fff;border-radius:10px;width:100%;padding:.64rem .72rem}.layout-grid,.play-grid,.auth-grid{flex:1;gap:1rem;min-height:0;display:grid;overflow:auto}.layout-grid,.play-grid{grid-template-columns:minmax(300px,380px) 1fr}.play-grid-room{grid-template-columns:minmax(260px,320px) minmax(0,1.75fr);align-items:stretch;overflow:hidden}.auth-grid{grid-template-columns:repeat(2,minmax(280px,420px));justify-content:center}.auth-landing{flex:1;gap:.9rem;min-height:0;display:grid;overflow:hidden}.auth-hero-panel{background:radial-gradient(circle at 100% 0,#cd010d17,#0000 28%),radial-gradient(circle at 0,#1a3a7a1f,#0000 30%),#fffffff2;gap:1rem;padding:1.15rem 1.25rem}.auth-hero-top{grid-template-columns:minmax(0,1.25fr) minmax(280px,1fr);align-items:stretch;gap:1rem;display:grid}.auth-hero-copy{gap:.45rem;display:grid}.auth-hero-copy h1{max-width:20ch;line-height:1.05}.auth-hero-lead{max-width:72ch;color:var(--ink-soft);font-size:.98rem;line-height:1.45}.auth-hero-modes{color:var(--ink-soft);margin-top:.1rem;font-size:.9rem}.auth-hero-badges{flex-wrap:wrap;gap:.55rem;display:flex}.auth-hero-media{align-items:flex-start;display:flex}.auth-hero-image{object-fit:cover;object-position:top center;border:1px solid #c4cfe8f2;border-radius:16px;width:100%;height:clamp(280px,48vh,540px);display:block;box-shadow:0 10px 20px #011b4733,0 22px 44px #011b473d}.auth-hero-highlights{grid-template-columns:repeat(3,minmax(0,1fr));gap:.75rem;display:grid}.auth-feature-card{background:#ffffffd1;border:1px solid #c4cfe8e6;border-radius:12px;gap:.35rem;padding:.85rem;display:grid}.auth-feature-card h3{font-size:1rem}.auth-feature-card p{color:var(--ink-soft);font-size:.88rem;line-height:1.35}.auth-feature-icon{font-size:1.45rem}.auth-hero-steps{flex-wrap:wrap;gap:.55rem;display:flex}.auth-step-pill{border:1px solid var(--edge);background:#ffffffe0;border-radius:999px;padding:.45rem .72rem;font-size:.82rem;font-weight:600}.auth-hero-bottom{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.9rem;display:flex}.auth-modal-card{width:min(460px,100%)}.auth-modal-header{justify-content:space-between}.panel,.map-wrap,.streetview-panel,.modal-card{border-radius:14px;padding:1rem}.panel{align-content:start;gap:.8rem;min-height:0;display:grid;overflow:auto}.map-wrap,.streetview-panel{flex-direction:column;gap:.7rem;min-height:0;display:flex;overflow:auto}.room-main-panel{flex-direction:column;gap:.7rem;min-height:0;display:flex}.scoreboard-panel{flex-direction:column;align-content:start;gap:.8rem;min-height:0;display:flex}.room-toolbar{justify-content:space-between}.room-hint{padding:0 .2rem}.hint{color:var(--ink-soft);font-size:.93rem}.auth-feedback{border:1px solid #0000;border-radius:10px;padding:.62rem .7rem;font-size:.92rem}.auth-feedback.error{color:var(--danger);background:#fef3f5;border-color:#f5c2c7}.auth-feedback.success{color:#14532d;background:#bbf7d073;border-color:#14532d40}button{background:var(--accent-2);color:#fff;cursor:pointer;border:none;border-radius:10px;padding:.62rem .8rem;font-weight:700;transition:transform .18s,box-shadow .18s}button:hover{transform:translateY(-1px);box-shadow:0 6px 14px #1a3a7a59}button:disabled{cursor:not-allowed;opacity:.45;box-shadow:none;transform:none}button.ghost{background:var(--surface-alt);color:var(--ink);border:1px solid var(--edge)}button.start{background:var(--accent)}button.admin-btn{background:var(--accent);color:#fff}button.admin-btn:hover{box-shadow:0 8px 18px #cd010d59}.due-list,.results-list{gap:.45rem;margin:0;padding:0;list-style:none;display:grid}.due-list li,.result-row,.round-feedback{border:1px solid var(--edge);background:#fff;border-radius:10px;gap:.3rem;padding:.65rem;display:grid}.due-list li{grid-template-columns:12px 1fr auto;align-items:center;gap:.45rem}.swatch{border-radius:50%;width:12px;height:12px}.map,.streetview{border-radius:12px;flex:1;width:100%;min-height:0;overflow:hidden}.streetview-expanded,.play-grid-room .streetview,.play-grid-room .streetview-expanded{flex:1;min-height:0}.guess-map-modal{border-radius:12px;width:100%;height:min(72vh,760px);overflow:hidden}.result-row .total,.round-feedback .total{color:var(--accent-2);font-weight:700}.empty-state{border:1px dashed var(--edge);background:#ffffffb8;border-radius:12px;place-content:center;gap:.6rem;min-height:240px;padding:1.2rem;display:grid}.loading{color:var(--ink-soft);font-family:IBM Plex Mono,monospace}.error-banner{color:var(--danger);background:#fef3f5;border:1px solid #f5c2c7;border-radius:10px;max-width:420px;padding:.75rem 1rem;position:fixed;bottom:1rem;right:1rem}.modal-overlay{-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);z-index:9999;background:#011b4785;place-items:center;padding:1rem;display:grid;position:fixed;inset:0}.modal-card{gap:.75rem;width:min(1100px,100%);display:grid}.confirm-modal-card{width:min(460px,100%)}.settings-group{gap:.3rem;display:grid}.settings-group label{align-items:center;gap:.4rem;font-size:.93rem;font-weight:600;display:flex}.settings-group input[type=checkbox]{width:auto;accent-color:var(--accent-2)}.settings-group input[type=range]{accent-color:var(--accent-2);background:0 0;border:none;padding:0}.review-panel{flex-direction:column;flex:1;gap:.75rem;min-height:0;display:flex;overflow:hidden}.review-header{justify-content:space-between}.review-split{flex:1;grid-template-columns:3fr 1fr;gap:.75rem;min-height:0;display:grid;overflow:hidden}.review-map{border-radius:12px;width:100%;overflow:hidden;height:100%!important}.review-results{flex-direction:column;gap:.5rem;min-height:0;display:flex;overflow-y:auto}@media (width<=1024px){.layout-grid,.play-grid,.auth-grid,.auth-hero-highlights,.auth-hero-top{grid-template-columns:1fr}.auth-landing{overflow:auto}.auth-hero-bottom{flex-direction:column;align-items:flex-start}.play-grid-room{overflow:auto}.review-split{grid-template-columns:1fr}.panel,.map-wrap,.streetview-panel{max-height:unset;min-height:360px}.map,.streetview,.streetview-expanded{min-height:360px}.play-grid-room .room-main-panel{min-height:0}.play-grid-room .streetview,.play-grid-room .streetview-expanded{min-height:clamp(420px,58vh,640px)}.review-map{min-height:320px;height:320px!important}.review-results{max-height:42vh}.auth-hero-image{height:clamp(240px,40vh,440px)}}@media (width<=768px){.app-shell{gap:.65rem;height:auto;min-height:100dvh;padding:.65rem;overflow:auto}.topbar{border-radius:12px;flex-wrap:wrap;align-items:flex-start;gap:.6rem;padding:.7rem .8rem}.topbar-logo{height:60px}.topbar-actions,.inline-actions,.nav-row{gap:.5rem}.topbar-actions,.topbar-status-group{justify-content:flex-start;width:100%}.topbar-status-pill{flex:145px;min-width:0}.auth-hero-panel{padding:1rem}.auth-hero-copy h1{max-width:none}.auth-hero-lead{font-size:.93rem}.auth-modal-header,.room-toolbar,.review-header{flex-direction:column;align-items:flex-start}.panel,.map-wrap,.streetview-panel,.modal-card{border-radius:12px;padding:.75rem}.panel,.map-wrap,.streetview-panel{min-height:300px}.play-grid-room .streetview-panel,.play-grid-room .room-main-panel{min-height:auto}.map,.streetview,.streetview-expanded{border-radius:10px;min-height:280px}.play-grid-room .streetview,.play-grid-room .streetview-expanded{min-height:clamp(360px,52dvh,560px)}.guess-map-modal{height:min(66vh,520px)}.auth-hero-image{height:clamp(210px,34vh,320px)}.mode-tiles{grid-template-columns:1fr}button{min-height:44px}input,select,button{font-size:16px}.due-list li,.mine-list li,.browse-list li{grid-template-columns:1fr}.pending-row{grid-template-columns:1fr!important;gap:.45rem!important}.score-chip{padding:.5rem .75rem}.error-banner{max-width:none;bottom:.65rem;left:.65rem;right:.65rem}}@media (width<=480px){.topbar-logo{height:52px}.topbar-status-pill{flex-basis:100%}.auth-hero-image{height:clamp(190px,30vh,260px)}.auth-feature-card{padding:.75rem}.auth-step-pill{text-align:center;width:100%}}.avatar{object-fit:cover;border:2px solid var(--edge);border-radius:50%;flex-shrink:0;display:block}.avatar-sm{width:32px;height:32px}.avatar-md{width:44px;height:44px}.avatar-lg{width:64px;height:64px}.avatar-xl{border-width:3px;width:96px;height:96px}button.avatar-btn{box-shadow:none;background:0 0;border:none;border-radius:50%;padding:0;line-height:0}button.avatar-btn:hover{transform:scale(1.08);box-shadow:0 4px 12px #cd010d59}.result-row--player{grid-template-columns:auto 1fr;align-items:center;gap:.55rem}.avatar-picker-current{justify-content:center;padding-block:.5rem;display:flex}.avatar-grid{grid-template-columns:repeat(4,1fr);gap:.5rem;display:grid}button.avatar-grid-btn{box-shadow:none;background:0 0;border:2px solid #0000;border-radius:50%;padding:3px;line-height:0}button.avatar-grid-btn:hover{box-shadow:none;transform:scale(1.1)}button.avatar-grid-btn.selected{border-color:var(--accent);box-shadow:0 0 0 2px var(--accent)}.avatar-picker-actions{flex-wrap:wrap;gap:.5rem;display:flex}.player-chips{flex-wrap:wrap;justify-content:center;gap:.5rem;display:flex}.player-chip{background:var(--surface-alt);border:1px solid var(--edge);border-radius:999px;align-items:center;gap:.4rem;padding:.25rem .65rem .25rem .35rem;font-size:.88rem;font-weight:600;display:flex}.member-list li{align-items:center;gap:.55rem;grid-template-columns:auto minmax(0,1fr)!important}.member-name{overflow-wrap:anywhere;min-width:0}.dept-tabs{gap:.4rem;display:flex}.dept-tabs button{flex:1;padding:.48rem .5rem;font-size:.88rem}.dept-badge{vertical-align:middle;border-radius:999px;padding:.1rem .5rem;font-size:.75rem;font-weight:700;display:inline-block}.dept-badge--public{color:#065f46;background:#d1fae5}.dept-badge--private{color:#991b1b;background:#fee2e2}.badge{background:var(--accent);color:#fff;vertical-align:middle;border-radius:999px;justify-content:center;align-items:center;min-width:1.3rem;height:1.3rem;margin-left:.3rem;padding:0 .35rem;font-size:.72rem;font-weight:700;display:inline-flex}.pending-row{align-items:center;grid-template-columns:32px 1fr auto auto!important;gap:.4rem!important}.pending-row button{padding:.3rem .55rem;font-size:.82rem}.browse-toolbar{gap:.45rem;display:grid}.browse-list li{align-items:center;gap:.5rem;grid-template-columns:1fr auto!important;display:grid!important}.browse-row--hovered{box-shadow:0 0 0 2px var(--accent);border-color:var(--accent)!important}.browse-row-info{flex-direction:column;gap:.1rem;display:flex}.mine-list li{align-items:center;gap:.5rem;grid-template-columns:1fr auto!important;display:grid!important}.mine-row{cursor:pointer}.mode-tiles{grid-template-columns:repeat(2,minmax(0,1fr));gap:.55rem;display:grid}button.mode-tile{text-align:left;color:var(--ink);border:1px solid var(--edge);box-shadow:none;background:#fff;grid-template-columns:auto 1fr;align-items:start;gap:.2rem .6rem;padding:.65rem .7rem;display:grid;transform:none}button.mode-tile:hover{border-color:var(--accent-2);transform:none;box-shadow:0 0 0 2px #1a3a7a33}button.mode-tile.mode-tile--active{border-color:var(--accent-2);background:#1a3a7a14;box-shadow:0 0 0 2px #1a3a7a38}.mode-tile-icon{grid-row:1/span 2;font-size:1.1rem;line-height:1}.mode-tile-title{font-weight:700}.mode-tile-desc{color:var(--ink-soft);font-size:.85rem;line-height:1.3}.timer-bar{background:var(--edge);border-radius:999px;height:5px;overflow:hidden}.timer-bar-fill{background:var(--accent);border-radius:999px;height:100%;transition:width .9s linear}.score-reveal-placeholder{border:1px dashed var(--edge);border-radius:10px;justify-content:center;align-items:center;min-height:120px;font-size:1.1rem;display:flex}.score-reveal{animation:.35s both fadeSlideIn}@keyframes fadeSlideIn{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}.finished-summary{text-align:center;flex-direction:column;align-items:center;gap:1rem;padding:1.5rem;display:flex}.finished-summary h3{font-size:1.6rem}.finished-summary .results-list{width:100%;max-width:480px}.result-row--gold{background:#f0b42914!important;border-color:#f0b429!important}button.icon-btn{white-space:nowrap;padding:.35rem .65rem;font-size:.82rem}.modal-overlay{z-index:1000;background:#00000080;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.modal-dialog{background:#fff;border-radius:8px;width:90%;max-width:600px;max-height:90vh;padding:2rem;overflow-y:auto;box-shadow:0 4px 20px #0003}.modal-dialog h2{margin-bottom:.5rem;font-size:1.5rem}.modal-dialog p{color:#666;margin-bottom:1rem}
