:root{--paper:#f6f2e9;--card:#fffdf8;--ocean:#d3e2e8;--depth-200:#c5d7df;--depth-1000:#b8ccd5;--depth-2000:#aac1cc;--depth-4000:#9db6c3;--land:#e8e2d0;--hairline:#ddd5c2;--hairline-strong:#b9b096;--land-line:#8c8365;--graticule:#b4c3cb;--relief:.16;--biome:.28;--ink:#26333b;--ink-soft:#5f7078;--ink-faint:#8b9aa0;--correct:#4a9375;--danger:#c8674f;--correct-line:#1d6b4e;--danger-line:#8c4837;--amber:#c9973f;--easy:#5b9c7d;--medium:#c9973f;--hard:#c8674f;--gold:#bf9b30;--gold-tint:#bf9b3017;--serif:"Fraunces", "Spectral", Georgia, "Times New Roman", serif;--sans:-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;--radius:10px}*,:before,:after{box-sizing:border-box;margin:0;padding:0}html,body{height:100%}#root{min-height:100%}body{font-family:var(--sans);background:var(--paper);color:var(--ink);-webkit-font-smoothing:antialiased;text-rendering:optimizelegibility}.btn{border-radius:var(--radius);width:100%;font-family:var(--sans);letter-spacing:.01em;cursor:pointer;background:0 0;border:1px solid #0000;padding:15px 20px;font-size:1rem;font-weight:600;transition:background-color .15s,border-color .15s,color .15s;display:block}.btn:disabled{opacity:.45;cursor:not-allowed}.btn-primary{background:var(--ink);color:var(--paper)}.btn-primary:hover:not(:disabled){background:#1a252b}.btn-secondary{border-color:var(--hairline-strong);color:var(--ink);background:0 0}.btn-secondary:hover{background:#b9b09624}.btn-share-small{border:1px solid var(--hairline-strong);border-radius:var(--radius);width:100%;color:var(--ink);font-family:var(--sans);cursor:pointer;background:0 0;padding:10px 14px;font-size:.88rem;font-weight:600;transition:background-color .15s;display:block}.btn-share-small:hover{background:#b9b09624}.link-btn{color:var(--ink-soft);font-family:var(--sans);cursor:pointer;text-underline-offset:3px;text-decoration:underline;-webkit-text-decoration-color:var(--hairline-strong);text-decoration-color:var(--hairline-strong);background:0 0;border:none;padding:10px 4px;font-size:.9rem}.link-btn:hover{color:var(--ink)}.landing{background:var(--paper);justify-content:center;min-height:100dvh;padding:40px 20px 32px;display:flex}.landing-inner{flex-direction:column;gap:28px;width:100%;max-width:440px;display:flex}.landing-head{text-align:center;place-items:center;padding:18px 0 6px;display:grid;position:relative}.globe-mark{width:216px;height:216px;color:var(--hairline-strong);opacity:.37;pointer-events:none;grid-area:1/1}.landing-head-text{grid-area:1/1;position:relative}.wordmark{font-family:var(--serif);letter-spacing:-.015em;color:var(--ink);font-size:2.4rem;font-weight:600}.tagline{font-family:var(--serif);letter-spacing:.005em;color:var(--ink);margin-top:6px;font-size:1.35rem;font-weight:500}.level-cards{flex-direction:column;gap:12px;display:flex}.level-card{text-align:left;background:var(--card);border:1px solid var(--hairline);border-left:3px solid var(--hairline-strong);border-radius:var(--radius);width:100%;font-family:var(--sans);color:var(--ink);padding:20px 22px;display:block}.accent-easy{border-left-color:var(--easy)}.accent-medium{border-left-color:var(--medium)}.accent-hard{border-left-color:var(--hard)}.accent-practice{border-left-color:var(--ink-soft)}.level-card.is-perfect{border-color:var(--gold);border-left-color:var(--gold);background:var(--gold-tint)}.level-card.is-perfect .high-score-value,.level-card.is-perfect .done-score-value,.level-card.is-perfect .high-score-label{color:var(--gold)}.level-card.playable.is-perfect:hover{border-color:var(--gold);background:#bf9b3024}.level-card.playable{cursor:pointer;transition:background-color .15s,border-color .15s}.level-card.playable:hover{border-color:var(--hairline-strong);background:#fffefb}.level-card-head{justify-content:space-between;align-items:baseline;gap:12px;display:flex}.level-name{font-family:var(--serif);font-size:1.4rem;font-weight:600}.level-arrow{color:var(--ink-faint);font-size:1.1rem}.level-done-tag{letter-spacing:.08em;text-transform:uppercase;color:var(--ink-faint);font-size:.72rem}.level-spec{color:var(--ink-soft);margin-top:6px;font-size:.92rem}.level-sub{color:var(--ink-faint);margin-top:3px;font-size:.82rem}.high-score{font-variant-numeric:tabular-nums;align-items:baseline;gap:6px;margin-top:12px;display:flex}.high-score-label{letter-spacing:.12em;text-transform:uppercase;color:var(--ink-faint);font-size:.7rem;font-weight:700}.high-score-value{font-family:var(--serif);color:var(--ink);font-size:1.9rem;font-weight:600;line-height:1}.high-score-max{color:var(--ink-faint);font-size:.95rem}.high-score-empty{color:var(--ink-faint);font-size:.82rem}.done-score{font-variant-numeric:tabular-nums;flex-wrap:wrap;align-items:baseline;gap:4px;margin-top:10px;display:flex}.done-score-value{font-size:1.9rem;font-weight:700}.done-score-max{color:var(--ink-faint);font-size:1rem}.done-score-meta{color:var(--ink-soft);margin-left:8px;font-size:.8rem}.landing-foot{text-align:center;flex-direction:column;align-items:center;gap:12px;display:flex}.how-to-play{border-top:1px solid var(--hairline);max-width:340px;padding-top:18px}.how-to-play-title{font-family:var(--sans);letter-spacing:.14em;text-transform:uppercase;color:var(--ink-soft);font-size:.72rem;font-weight:700}.how-to-play-body{color:var(--ink-soft);margin-top:8px;font-size:.85rem;line-height:1.65}.how-to-play-note{color:var(--ink-faint);margin-top:10px;font-size:.78rem}.emoji-grid{flex-direction:column;gap:2px;margin:18px 0;display:flex}.emoji-row{letter-spacing:.06em;word-break:break-all;font-size:1.35rem;line-height:1.25}.emoji-grid.small{margin:12px 0}.emoji-grid.small .emoji-row{font-size:.95rem}.game{background:var(--ocean);flex-direction:column;height:100dvh;display:flex}.game-header{background:var(--ink);color:#eef2f3;flex-direction:column;flex-shrink:0;gap:12px;padding:14px 18px 12px;display:flex}.game-header-top{justify-content:space-between;align-items:center;gap:16px;display:flex}.prompt{flex-direction:column;gap:2px;min-width:0;display:flex}.prompt-label{letter-spacing:.14em;text-transform:uppercase;color:#eef2f380;font-size:.68rem}.prompt-name{font-family:var(--serif);text-overflow:ellipsis;white-space:nowrap;font-size:1.55rem;font-weight:600;line-height:1.15;overflow:hidden}.countdown{font-variant-numeric:tabular-nums;font-feature-settings:"tnum" 1;letter-spacing:.01em;color:#eef2f3;flex-shrink:0;font-size:2.6rem;font-weight:300;line-height:1;transition:color .4s}.countdown.warning{color:#e8b45f}.countdown.critical{color:#e07f66}.game-header-bottom{align-items:center;gap:10px;display:flex}.stat{font-variant-numeric:tabular-nums;white-space:nowrap;font-size:.9rem}.stat-value{font-weight:700}.stat-max{color:#eef2f380}.attempt-badge{letter-spacing:.04em;color:#eef2f3d9;border:1px solid #eef2f359;border-radius:99px;flex-shrink:0;padding:3px 8px;font-size:.68rem;font-weight:700}.attempt-badge.second{color:#e8b45f;border-color:#e8b45f}.progress-bar{background:#eef2f333;flex:1;min-width:40px;height:3px;overflow:hidden}.progress-fill{background:#8fc3ab;height:100%;transition:width .35s}.progress-label{font-variant-numeric:tabular-nums;color:#eef2f399;white-space:nowrap;font-size:.78rem}.icon-btn{color:#eef2f38c;cursor:pointer;opacity:.8;background:0 0;border:none;flex-shrink:0;padding:4px;font-size:.95rem;line-height:1}.icon-btn:hover{color:#eef2f3;opacity:1}.prompt-name.wrong{animation:.4s shake}@keyframes shake{0%,to{transform:translate(0)}25%{transform:translate(-6px)}50%{transform:translate(6px)}75%{transform:translate(-4px)}}.countdown.timer-critical{animation:1s ease-in-out infinite heartbeat}@keyframes heartbeat{0%,to{transform:scale(1)}50%{transform:scale(1.12)}}@media (height<=520px) and (aspect-ratio>=1){.game-header{flex-direction:row;align-items:center;gap:14px;padding:8px 14px}.game-header-top{flex:0 auto;gap:10px;min-width:0}.prompt{flex-direction:row;align-items:baseline;gap:7px}.prompt-name{font-size:1.3rem}.countdown{font-size:1.55rem}.game-header-bottom{flex:auto;gap:8px;min-width:0}.lead-in-number{font-size:3.6rem}}.map-area{flex:1;min-height:0;display:flex;position:relative}.lead-in{pointer-events:none;background:#26333b29;flex-direction:column;justify-content:center;align-items:center;gap:10px;display:flex;position:absolute;inset:0}.lead-in-number{font-family:var(--serif);color:var(--paper);font-variant-numeric:tabular-nums;font-size:6rem;font-weight:600;line-height:1;animation:1s ease-out both lead-in-pop}.lead-in-note{letter-spacing:.06em;color:#f6f2e9d9;font-size:.8rem}@keyframes lead-in-pop{0%{opacity:0;transform:scale(.55)}20%{opacity:1;transform:scale(1.06)}35%{transform:scale(1)}to{opacity:.9;transform:scale(1)}}.map-container{background:var(--ocean);flex:1;position:relative;overflow:hidden}.ocean,.ocean-sphere{fill:var(--ocean)}.depth{stroke:none}.depth-200{fill:var(--depth-200)}.depth-1000{fill:var(--depth-1000)}.depth-2000{fill:var(--depth-2000)}.depth-4000{fill:var(--depth-4000)}.fade-stop{stop-color:var(--ocean)}.graticule{fill:none;stroke:var(--graticule);stroke-opacity:.5;stroke-width:.6px}.land-base{fill:var(--land);stroke:none}.biome{opacity:var(--biome);pointer-events:none}.hillshade{opacity:var(--relief);mix-blend-mode:multiply;pointer-events:none}.country{fill:#0000;pointer-events:all;stroke:var(--land-line);stroke-width:.9px;cursor:pointer}.hl{fill-opacity:.55;stroke-width:2.75px;stroke-linejoin:round;animation:.3s ease-out hl-in}@keyframes hl-in{0%{opacity:0}to{opacity:1}}.hl-correct{fill:var(--correct);stroke:var(--correct-line)}.hl-wrong{fill:var(--danger);stroke:var(--danger-line)}.hl-reveal{fill:var(--danger);stroke:var(--danger-line);stroke-width:3px;animation:1.4s ease-in-out reveal-pulse}@keyframes reveal-pulse{0%,50%,to{fill-opacity:.6}25%,75%{fill-opacity:.06}}.hl.country-correct{animation:.3s ease-out hl-in,.35s ease-out pop}.country-correct{transform-box:fill-box;transform-origin:50%;animation:.35s ease-out pop}@keyframes pop{0%{transform:scale(1)}40%{transform:scale(1.12)}to{transform:scale(1)}}.no-hit{pointer-events:none}.reveal-ring{fill:none;stroke:var(--danger-line);stroke-width:3px;transform-box:fill-box;transform-origin:50%;vector-effect:non-scaling-stroke;animation:.8s ease-out forwards ring}.reveal-ring.delayed{animation-delay:.22s}@keyframes ring{0%{opacity:.85;transform:scale(.35)}to{opacity:0;transform:scale(7)}}.float-points{fill:var(--correct);font-family:var(--sans);paint-order:stroke;stroke:#f6f2e9e6;stroke-width:6px;stroke-linejoin:round;font-size:32px;font-weight:700;animation:.7s ease-out forwards float-up}@keyframes float-up{0%{opacity:1;transform:translateY(0)}to{opacity:0;transform:translateY(-50px)}}.map-container svg{width:100%;height:100%;position:absolute;inset:0}.result{background:var(--paper);justify-content:center;align-items:center;min-height:100dvh;padding:32px 20px;display:flex}.result-card{background:var(--card);border:1px solid var(--hairline);border-top:3px solid var(--hairline-strong);border-radius:var(--radius);width:100%;max-width:420px;padding:32px 28px}.result-card.accent-easy{border-top-color:var(--easy)}.result-card.accent-medium{border-top-color:var(--medium)}.result-card.accent-hard{border-top-color:var(--hard)}.result-eyebrow{letter-spacing:.12em;text-transform:uppercase;color:var(--ink-faint);font-size:.72rem}.personal-best{border:1px solid var(--correct);letter-spacing:.1em;text-transform:uppercase;color:var(--correct);border-radius:99px;margin-top:12px;padding:5px 11px;font-size:.72rem;font-weight:700;display:inline-block}.result-score{font-variant-numeric:tabular-nums;align-items:baseline;gap:4px;margin-top:12px;display:flex}.result-score-value{font-family:var(--serif);font-size:3.4rem;font-weight:600;line-height:1}.result-score-max{color:var(--ink-faint);font-size:1.3rem}.result-meta{color:var(--ink-soft);margin-top:8px;font-size:.9rem}.result-actions{flex-direction:column;align-items:stretch;gap:10px;display:flex}.practice-note{color:var(--ink-soft);border:1px solid var(--hairline);border-radius:var(--radius);padding:12px 14px;font-size:.85rem;line-height:1.5}@media (prefers-reduced-motion:reduce){.lead-in-number,.country-correct,.hl.country-correct,.hl-reveal,.prompt-name.wrong,.countdown.timer-critical,.reveal-ring,.float-points{animation:none}.reveal-ring{display:none}.float-points{animation:.7s ease-out forwards float-fade}@keyframes float-fade{0%{opacity:1}to{opacity:0}}}
