:root{
  --bg:#0f2a44; --panel:#ffffff; --ink:#15212e; --muted:#5d6b7a; --line:#dfe5ec;
  --accent:#e4572e; --accent-ink:#fff; --ocean:#cfe3f3; --land:#f3ecd9; --border:#6b6b6b;
  --good:#2f9e5b; --warn:#e0a800; --bad:#d64541;
}
*{box-sizing:border-box}
html,body{margin:0;height:100%;background:var(--bg);color:var(--ink);
  font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Helvetica,Arial,sans-serif;-webkit-text-size-adjust:100%}
button{font:inherit;cursor:pointer}
#app{max-width:560px;margin:0 auto;height:100%;display:flex;flex-direction:column;background:var(--panel)}
.top{display:flex;justify-content:space-between;align-items:center;padding:10px 16px;background:var(--bg);color:#fff;
  padding-top:max(10px,env(safe-area-inset-top))}
.brand{font-weight:700;letter-spacing:.2px}
.meta{font-size:13px;opacity:.9;display:flex;gap:10px;align-items:center}
.linkish{background:none;border:0;color:#fff;text-decoration:underline;padding:0;font-size:13px}
.screen{flex:1;display:flex;flex-direction:column;min-height:0}
.screen[hidden]{display:none}
.scroll{overflow-y:auto;padding-bottom:24px}
h1{font-size:22px;margin:24px 16px 6px}
.muted{color:var(--muted)} .small{font-size:13px}
p.muted{margin:0 16px 16px}

.name-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(130px,1fr));gap:10px;padding:0 16px 24px}
.name-grid button{padding:18px 10px;border-radius:12px;border:1px solid var(--line);background:#f7f9fb;font-size:17px;font-weight:600;color:var(--ink)}
.name-grid button:active{background:#eef2f6}

.game .qcard{padding:12px 16px 10px;border-bottom:1px solid var(--line)}
.qhead{display:flex;justify-content:space-between;font-size:12px;font-weight:700;text-transform:uppercase;letter-spacing:.6px;color:var(--muted)}
.clue{margin:6px 0 0;font-size:16px;line-height:1.4}
.globe-wrap{position:relative;flex:1;min-height:0;background:var(--bg)}
#map{position:absolute;inset:0}
.pin{cursor:default;line-height:0;filter:drop-shadow(0 2px 3px rgba(0,0,0,.45))}
.maplibregl-ctrl-attrib{font-size:10px}
.hint{position:absolute;left:0;right:0;top:8px;z-index:2;text-shadow:0 1px 2px #000;text-align:center;font-size:12px;color:#cfe3f3;pointer-events:none;opacity:.85}
.bottom{padding:10px 16px;padding-bottom:max(12px,env(safe-area-inset-bottom));border-top:1px solid var(--line)}
.primary{width:100%;padding:14px;border:0;border-radius:12px;background:var(--accent);color:var(--accent-ink);font-size:17px;font-weight:700}
.primary:disabled{background:#c9ced4}
.result{position:absolute;left:8px;right:8px;bottom:8px;z-index:4;background:#fff;border-radius:14px;
  padding:12px 14px 4px;box-shadow:0 6px 22px rgba(0,0,0,.35);transform:translateY(calc(100% + 16px));transition:transform .28s ease-out}
.result.show{transform:translateY(0)}
.result[hidden]{display:none}
#nextBtn[hidden],#confirmBtn[hidden]{display:none}
.rtop{display:flex;align-items:center;gap:10px}
.remoji{font-size:30px;line-height:1}
.ranswer{font-weight:700}
.rpts{margin-left:auto;font-weight:800;font-size:20px;white-space:nowrap}
.fact{margin:8px 0 10px;font-size:14px;line-height:1.4;color:#334}

.summary{text-align:center;padding:20px 16px 8px}
.semoji{font-size:34px;letter-spacing:4px;margin:6px 0}
.stotal{font-size:32px;font-weight:800;margin-bottom:4px}
.summary .primary{margin-top:12px}
.slist{list-style:none;margin:8px 16px;padding:0;border-top:1px solid var(--line)}
.slist li{display:flex;gap:10px;padding:10px 0;border-bottom:1px solid var(--line);font-size:14px}
.slist .e{width:26px;text-align:center;font-size:18px}
.slist .a{flex:1}
.slist .p{font-weight:700;white-space:nowrap}
.board{margin:12px 16px 0}
.tabs{display:grid;grid-template-columns:repeat(4,1fr);gap:4px;background:#eef2f6;border-radius:10px;padding:4px}
.tab{border:0;background:none;padding:8px 2px;border-radius:8px;font-size:13px;font-weight:600;color:var(--muted)}
.tab.on{background:#fff;color:var(--ink);box-shadow:0 1px 2px rgba(0,0,0,.08)}
.board-list{list-style:none;margin:8px 0 4px;padding:0}
.board-list li{display:flex;align-items:center;gap:10px;padding:10px 4px;border-bottom:1px solid var(--line)}
.board-list .rank{width:22px;color:var(--muted);font-weight:700}
.board-list .n{flex:1;font-weight:600}
.board-list .v{font-weight:700}
.board-list .sub{color:var(--muted);font-size:12px;margin-left:6px;font-weight:400}
.past{margin:20px 16px 0}
.past-row{display:flex;gap:8px;margin-top:6px}
.past-row select{flex:1;padding:10px;border-radius:10px;border:1px solid var(--line);font-size:15px;background:#fff}
.past-row button{padding:10px 16px;border-radius:10px;border:1px solid var(--line);background:#f7f9fb;font-weight:600}
.demo{background:#fff4d6;color:#6b5100;font-size:12px;text-align:center;padding:6px}
.demo[hidden]{display:none}
.practice{background:#e8f1fb;color:#1f4e78;font-size:12px;text-align:center;padding:5px;font-weight:600}

/* Answer flag drops in at the end of the line */
.pin svg.drop{animation:flagdrop .5s cubic-bezier(.3,1.5,.5,1) both;transform-origin:50% 100%}
@keyframes flagdrop{0%{transform:translateY(-60px) scale(.9);opacity:0}60%{opacity:1}100%{transform:translateY(0) scale(1)}}
.line-overlay{position:absolute;left:0;top:0;pointer-events:none;z-index:1}

/* Name screen */
.pick-block{margin:14px 16px 0}
.pick-label{display:block;font-weight:700;margin-bottom:6px}
.pick-row{display:flex;gap:8px}
.pick-row input,.pick-row select{flex:1;min-width:0;padding:12px;border-radius:10px;border:1px solid var(--line);font-size:16px;background:#fff;color:var(--ink)}
.pick-btn{padding:12px 18px;border:0;border-radius:10px;background:var(--accent);color:#fff;font-size:16px;font-weight:700}
.pick-btn:disabled{background:#c9ced4}
.pick-err{margin-top:8px;color:#b3261e;font-size:14px;line-height:1.35}
.pick-err[hidden]{display:none}
.pick-or{display:flex;align-items:center;gap:10px;margin:22px 16px 4px;color:var(--muted);font-size:13px}
.pick-or::before,.pick-or::after{content:"";flex:1;height:1px;background:var(--line)}

.pick-search{width:100%;padding:12px;border-radius:10px;border:1px solid var(--line);font-size:16px;background:#fff;color:var(--ink)}
.matches{display:flex;flex-direction:column;gap:6px;margin-top:8px;padding-bottom:24px}
.matches .muted{padding:4px 2px}
.match{text-align:left;padding:13px 14px;border-radius:10px;border:1px solid var(--line);background:#f7f9fb;font-size:16px;font-weight:600;color:var(--ink)}
.match:active{background:#eef2f6}

/* Sound toggle and mile counter */
.icon-btn{background:none;border:0;padding:0 2px;font-size:16px;line-height:1;cursor:pointer}
.miles-chip{position:absolute;top:10px;left:50%;transform:translateX(-50%);z-index:3;
  background:rgba(11,26,43,.82);color:#fff;font-weight:800;font-size:18px;padding:6px 14px;border-radius:999px;
  font-variant-numeric:tabular-nums;box-shadow:0 2px 8px rgba(0,0,0,.35);pointer-events:none;white-space:nowrap}
.miles-chip[hidden]{display:none}
.miles-chip.done{animation:chippop .35s ease-out}
@keyframes chippop{0%{transform:translateX(-50%) scale(1)}40%{transform:translateX(-50%) scale(1.15)}100%{transform:translateX(-50%) scale(1)}}
