:root{--bg:#f4f7fb;--card:#fff;--text:#1d2733;--muted:#5b6b7d;--line:#d5deea;--accent:#2563eb;--accent-text:#fff;--good:#157f3b;--good-bg:#e3f6e9;--bad:#b42318;--bad-bg:#fdeae8;--sel:#e6efff;--badge:#c1121f}
@media (prefers-color-scheme:dark){:root{--bg:#10151c;--card:#19212b;--text:#e8eef5;--muted:#9fb0c3;--line:#2c3947;--accent:#5b8cff;--accent-text:#0b1220;--good:#6fd58e;--good-bg:#173626;--bad:#ff8f84;--bad-bg:#3d1b18;--sel:#22314a;--badge:#e5383b}}
*{box-sizing:border-box}
html{height:100%}
body{margin:0;min-height:100%;background:var(--bg);color:var(--text);font:16px/1.4 system-ui,-apple-system,"Segoe UI",Roboto,sans-serif;overflow-x:hidden}
[hidden]{display:none!important}

/* map pane: the map fills it; the inset sits bottom left */
.map-pane{position:relative;height:65vh;height:65dvh;min-height:300px;min-width:0;border-bottom:1px solid var(--line)}
.map-pane .map{position:absolute;inset:0;background:#cfd8dc}
.map-pane .inset{position:absolute;left:8px;bottom:8px;width:28%;min-width:120px;z-index:1000;border:2px solid #222;background:#cfd8dc;box-shadow:0 1px 6px rgba(0,0,0,.4)}
.qom-inset-map{width:100%;height:100%}
.leaflet-container{font:inherit}

/* numbered shapes (same look as the maps app) */
.bw{background:none;border:0;overflow:visible}
.badge{--fill:var(--badge);position:absolute;inset:0;color:#fff;font:700 12px/1 system-ui,sans-serif;transition:transform .1s;filter:drop-shadow(0 0 1px rgba(0,0,0,.9)) drop-shadow(0 1px 2px rgba(0,0,0,.45))}
.badge svg{position:absolute;z-index:0;inset:0;width:100%;height:100%;overflow:visible}
.badge svg *{fill:var(--fill);stroke:#fff;stroke-width:2;stroke-linejoin:round}
.badge span{position:absolute;z-index:1;left:0;right:0;top:50%;transform:translateY(-50%);text-align:center;text-shadow:0 0 2px rgba(0,0,0,.7)}
.badge.sh-relieve span{top:62%}
.badge.sh-picos span{top:57%;font-size:11px}
.bw.hl{z-index:9999!important}
.bw.hl .badge{--fill:#ffb703;color:#111;transform:scale(1.35);filter:drop-shadow(0 0 1px #111) drop-shadow(0 0 6px #ffb703)}
.bw.ok .badge{--fill:#157f3b}
.bw.bad .badge{--fill:#b42318}
.bw.orange .badge{--fill:#f08c00}
.bw .lab{position:absolute;left:calc(100% + 4px);top:50%;transform:translateY(-50%);white-space:nowrap;padding:1px 5px;border-radius:4px;background:rgba(255,255,255,.88);color:#111;font:600 12px/1.3 system-ui,sans-serif;box-shadow:0 0 0 1px rgba(0,0,0,.25)}

@media (min-width:900px){
  .map-pane{height:70vh}
}

/* screens and controls */
body{display:flex;flex-direction:column}
button,select,input[type=text]{font:inherit;color:inherit}
button{min-height:40px;padding:6px 12px;border-radius:10px;border:1px solid var(--line);background:var(--card);cursor:pointer}
button.primary,button[aria-pressed=true]{background:var(--accent);color:var(--accent-text);border-color:var(--accent);font-weight:600}
button:disabled{opacity:.55;cursor:default}
button:focus-visible,select:focus-visible,input:focus-visible,a:focus-visible{outline:3px solid var(--accent);outline-offset:2px}
input[type=text]{min-height:38px;padding:4px 10px;border-radius:8px;border:1px solid var(--line);background:var(--card);min-width:0}
.screen{flex:1;min-height:0}
.card{max-width:560px;margin:0 auto;padding:20px 16px 40px}
.card h1{font-size:1.5rem;margin:8px 0 4px}
.card h2{font-size:1.1rem;margin:18px 0 8px}
.card .sub{margin:0;color:var(--muted)}
.seg{display:flex;flex-wrap:wrap;gap:6px}
.seg.big button{min-height:56px;font-size:1.05rem}
.lang-row{display:flex;justify-content:flex-end}
.stat-row{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:8px;margin:12px 0}
.stat{background:var(--card);border:1px solid var(--line);border-radius:10px;padding:8px 12px}
.stat b{display:block;font-size:1.4rem}
.stat span{font-size:.85rem;color:var(--muted)}
.wide{max-width:900px}
.table-wrap{overflow-x:auto}
table{border-collapse:collapse;width:100%;font-size:.92rem}
th,td{text-align:left;padding:4px 8px 4px 0;border-bottom:1px solid var(--line);white-space:nowrap}
.actions-row{display:flex;flex-wrap:wrap;gap:8px;margin-top:20px}
.note{color:var(--muted);font-size:.9rem}

/* play screen */
.work{display:flex;flex-direction:column}
.mapcol{display:flex;flex-direction:column;min-width:0}
.topbar{display:flex;flex-wrap:wrap;gap:6px;padding:6px 8px;background:var(--card);border-bottom:1px solid var(--line)}
.prompt{position:absolute;top:10px;left:50%;transform:translateX(-50%);z-index:1400;width:max-content;max-width:calc(100% - 16px);padding:8px 18px;border-radius:14px;background:var(--card);box-shadow:0 2px 10px rgba(0,0,0,.35);text-align:center;pointer-events:none}
.prompt .big{font-size:1.45rem;font-weight:500;overflow-wrap:anywhere}
.prompt .big b{color:var(--accent)}
.prompt .sub{font-size:.9rem;color:var(--muted)}
.prompt .sub.bad{color:var(--bad);font-weight:600}
.side{min-width:0;padding:12px 16px;background:var(--card)}
.side h2{font-size:1rem;margin:0 0 8px}
.hud{display:grid;grid-template-columns:repeat(3,1fr);gap:6px;margin-bottom:10px}
.hud div{background:var(--bg);border:1px solid var(--line);border-radius:8px;padding:4px 8px;text-align:center}
.hud b{display:block;font-size:1.15rem}
.hud span{font-size:.75rem;color:var(--muted)}
#list{list-style:none;margin:0;padding:0}
#list li{display:flex;flex-wrap:wrap;align-items:center;gap:6px 8px;padding:5px 6px;border-radius:8px;border:1px solid transparent}
#list li.hl{background:var(--sel);border-color:var(--accent)}
#list li.ok{background:var(--good-bg);border-color:var(--good)}
#list li.bad{background:var(--bad-bg);border-color:var(--bad)}
#list .n{flex:none;min-width:2ch;font-weight:700;text-align:right}
#list input[type=text]{flex:1 1 0;min-width:0}
#list li.ok input[type=text]{font-size:.85rem;padding:4px 6px}
#list button:disabled{display:none}
#list .tries:empty{display:none}
#list .tries{color:var(--bad);font-weight:700;min-width:3ch}
#list .ans{flex-basis:100%;padding-left:calc(2ch + 8px);font-size:.9rem;color:var(--bad)}
#list button{min-height:36px;padding:2px 10px}
.side .actions{display:flex;gap:6px;margin:10px 0}

.legend{display:flex;flex-wrap:wrap;gap:4px 12px;margin:0 0 10px;font-size:.8rem;color:var(--muted)}
.legend div{display:flex;align-items:center;gap:6px}
.legend svg{width:16px;height:16px;flex:none;overflow:visible}
.legend svg *{fill:var(--badge);stroke:#fff;stroke-width:2}

@media (min-width:900px){
  body{height:100vh;height:100dvh;overflow:hidden}
  .screen{overflow:auto}
  .work{flex-direction:row}
  .mapcol{flex:1}
  .map-pane{flex:1;height:auto;min-height:0;border-bottom:0}
  .side{flex:0 0 340px;overflow:auto;border-left:1px solid var(--line)}
}

/* footer links and first-visit notice */
.foot{display:flex;flex-wrap:wrap;justify-content:center;gap:4px 18px;padding:8px 16px;border-top:1px solid var(--line);background:var(--card);font-size:.85rem}
.foot a{color:var(--muted);padding:6px 0}
.foot .credit{flex-basis:100%;margin:0;text-align:center;color:var(--muted)}
.notice{position:fixed;left:8px;right:8px;bottom:8px;z-index:5000;max-width:620px;margin:0 auto;padding:10px 14px;border-radius:12px;border:1px solid var(--line);background:var(--card);box-shadow:0 2px 12px rgba(0,0,0,.35);font-size:.9rem}
.notice p{margin:0 0 8px}
.notice-actions{display:flex;flex-wrap:wrap;gap:8px}
a.btn{display:inline-flex;align-items:center;min-height:40px;padding:6px 12px;border-radius:10px;border:1px solid var(--line);color:var(--accent);text-decoration:none;font-weight:600}

/* legal pages */
.legal h1{font-size:1.5rem;margin:12px 0 4px}
.legal h2{font-size:1.1rem;margin:20px 0 6px}
.legal p,.legal li{overflow-wrap:anywhere}
.legal a{color:var(--accent)}
.legal table{margin:8px 0}
.legal th,.legal td{white-space:normal;vertical-align:top}
.legal code{font-size:.9em}
.legal-nav{display:flex;justify-content:space-between;align-items:center;gap:8px}

/* Step 2 on touch devices: progress bar under the map and the answer bubble */
.bubblebar{display:flex;align-items:center;gap:8px;padding:6px 8px;background:var(--card);border-bottom:1px solid var(--line)}
.bubbleprog{flex:1;font-weight:600}
.bubble-mode .bw:not(.ok):not(.bad) .badge::after{content:'';position:absolute;inset:-5px;border-radius:50%;border:2px solid rgba(255,255,255,.95);box-shadow:0 0 0 1px rgba(0,0,0,.4);pointer-events:none}
.qbubble{--tail-x:50%;position:absolute;z-index:1500;width:min(240px,calc(100% - 16px));padding:8px 10px;border-radius:12px;background:var(--card);color:var(--text);border:2px solid var(--accent);box-shadow:0 3px 12px rgba(0,0,0,.4)}
.qbubble::after{content:'';position:absolute;left:var(--tail-x);bottom:-8px;width:12px;height:12px;margin-left:-6px;background:var(--card);border:solid var(--accent);border-width:0 2px 2px 0;transform:rotate(45deg)}
.qbubble.below::after{bottom:auto;top:-8px;border-width:2px 0 0 2px}
.qb-row{display:flex;align-items:center;gap:6px}
.qb-n{flex:none;font-weight:700}
.qb-row input[type=text]{flex:1 1 0;min-width:0}
.qb-check{flex:none;min-height:38px;padding:2px 10px}
.qb-line{margin-top:4px;font-size:.8rem;color:var(--muted)}
.qb-text{flex:1;font-weight:600;overflow-wrap:anywhere}
.qbubble.view{padding:6px 10px}
.qbubble.flash{border-color:var(--bad);background:var(--bad-bg)}
.qbubble.right{border-color:var(--good);background:var(--good-bg)}
.qbubble.shake{animation:qb-shake .4s}
@keyframes qb-shake{20%,60%{transform:translateX(-6px)}40%,80%{transform:translateX(6px)}}
@media (prefers-reduced-motion:reduce){.qbubble.shake{animation:none}}
@media (min-width:900px){.bubblebar{border-bottom:0;border-top:1px solid var(--line)}}
