:root{--paper: #f2e9d6;--paper-2: #e9ddc4;--paper-edge: #ddceb0;--ink: #3b3327;--ink-soft: #6b5f4c;--line: #a9967a;--terracotta: #bf5a3c;--olive: #7c8a4e;--olive-deep: #5f6b39;--teal: #4b7d74;--gold: #c99a4b;--region-pending: #e3d6ba;--region-hover: #d8c69f;--region-found: #9aab63;--region-missed: #d8c9ae;--shadow: 0 10px 30px rgba(59, 51, 39, .18);--radius: 14px;--font-display: "Fraunces", Georgia, "Times New Roman", serif;--font-body: "Inter", system-ui, -apple-system, sans-serif}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{font-family:var(--font-body);color:var(--ink);background-color:var(--paper);background-image:radial-gradient(1200px 800px at 15% 0%,rgba(255,250,235,.7),transparent 60%),radial-gradient(900px 700px at 100% 100%,rgba(191,90,60,.06),transparent 55%),radial-gradient(700px 700px at 0% 100%,rgba(75,125,116,.06),transparent 55%);-webkit-font-smoothing:antialiased}button{font-family:inherit;cursor:pointer}.btn{border:1px solid transparent;border-radius:999px;padding:.62rem 1.15rem;font-size:.95rem;font-weight:600;letter-spacing:.01em;transition:transform .12s ease,background .15s ease,box-shadow .15s ease}.btn:active{transform:translateY(1px) scale(.99)}.btn--primary{background:var(--terracotta);color:#fbf3e6;box-shadow:0 6px 14px #bf5a3c47}.btn--primary:hover{background:#a94e34}.btn--ghost{background:transparent;color:var(--ink-soft);border-color:var(--paper-edge)}.btn--ghost:hover{background:var(--paper-2)}.btn--skip{background:transparent;color:var(--ink-soft);border:1px dashed var(--line);padding:.4rem .9rem;font-size:.85rem}.btn--skip:hover{color:var(--ink);border-color:var(--ink-soft)}.home{position:relative;min-height:100%;display:grid;place-items:center;padding:2rem 1.25rem}.home__inner{width:min(760px,100%);text-align:center}.home__eyebrow{text-transform:uppercase;letter-spacing:.32em;font-size:.72rem;color:var(--terracotta);margin:0 0 .5rem;font-weight:600}.home__title{font-family:var(--font-display);font-weight:900;font-size:clamp(2.4rem,7vw,4rem);line-height:1.02;margin:0;letter-spacing:-.01em}.home__sub{color:var(--ink-soft);margin:.75rem 0 2rem;font-size:1.05rem}.map-picker{display:flex;gap:.5rem;justify-content:center;flex-wrap:wrap;margin-bottom:1.75rem}.chip{border:1px solid var(--paper-edge);background:var(--paper-2);color:var(--ink-soft);border-radius:999px;padding:.4rem .95rem;font-size:.9rem}.chip--active{background:var(--ink);color:var(--paper);border-color:var(--ink)}.modes{display:grid;grid-template-columns:1fr 1fr;gap:1.25rem}@media(max-width:620px){.modes{grid-template-columns:1fr}}.mode-card{background:linear-gradient(180deg,rgba(255,252,244,.85),var(--paper-2));border:1px solid var(--paper-edge);border-radius:var(--radius);padding:1.5rem 1.35rem;text-align:left;box-shadow:var(--shadow)}.mode-card__title{font-family:var(--font-display);font-weight:600;font-size:1.5rem;margin:0 0 .4rem}.mode-card__desc{color:var(--ink-soft);font-size:.95rem;margin:0 0 1.15rem;min-height:2.7em}.mode-card__actions{display:flex;gap:.6rem;flex-wrap:wrap}.home__foot{margin-top:2.5rem;color:var(--ink-soft);font-size:.82rem;opacity:.8}.game{min-height:100%;display:flex;flex-direction:column;padding:.9rem clamp(.75rem,3vw,2rem) 1.25rem;gap:.75rem}.hud{display:flex;align-items:center;justify-content:space-between;gap:1rem}.hud__stats{display:flex;gap:1.5rem}.stat{display:flex;flex-direction:column;align-items:flex-end;line-height:1}.stat__value{font-family:var(--font-display);font-weight:600;font-size:1.6rem}.stat__label{font-size:.72rem;color:var(--ink-soft);text-transform:uppercase;letter-spacing:.12em;margin-top:.25rem}.stat--urgent .stat__value{color:var(--terracotta)}.prompt{display:flex;align-items:center;justify-content:center;gap:1rem;flex-wrap:wrap;padding:.5rem 0}.prompt__cue{font-size:.8rem;text-transform:uppercase;letter-spacing:.22em;color:var(--ink-soft)}.prompt__name{font-family:var(--font-display);font-weight:600;font-size:clamp(1.6rem,5vw,2.4rem);margin:0}.map-wrap{position:relative;flex:1;min-height:0;display:flex;flex-direction:column;align-items:center;gap:.6rem}.reaction-toast{position:absolute;top:.5rem;left:50%;transform:translate(-50%);z-index:5;max-width:min(90%,32rem);padding:.55rem 1.1rem;border-radius:999px;background:var(--paper);border:1px solid var(--paper-edge);box-shadow:var(--shadow);font-family:var(--font-display);font-weight:600;font-size:clamp(.9rem,2.6vw,1.05rem);text-align:center;pointer-events:none;animation:reaction-toast-fade 2.2s ease forwards}.reaction-toast--correct{color:var(--olive-deep)}.reaction-toast--wrong{color:var(--terracotta)}@keyframes reaction-toast-fade{0%{opacity:0;transform:translate(-50%) translateY(-6px)}10%{opacity:1;transform:translate(-50%) translateY(0)}85%{opacity:1}to{opacity:0}}.map-canvas{width:100%;height:100%;flex:1;min-height:0;touch-action:manipulation}.region{fill:var(--region-pending);stroke:var(--line);stroke-width:.6;stroke-linejoin:round;transition:fill .18s ease}.region--hover{fill:var(--region-hover);cursor:pointer}.region--found{fill:var(--region-found);stroke:var(--olive-deep)}.region--missed{fill:var(--region-missed);stroke:var(--terracotta);stroke-dasharray:2 2}.region--flash{fill:var(--terracotta);animation:shake .4s ease}.region--reveal{fill:var(--teal);stroke:#2f5a52;stroke-width:1.4;animation:pulse 1s ease}@keyframes pulse{0%,to{opacity:1}50%{opacity:.55}}@keyframes shake{0%,to{transform:translate(0)}25%{transform:translate(-1.5px)}75%{transform:translate(1.5px)}}.region-label{font-family:var(--font-body);font-size:9px;font-weight:500;fill:var(--ink);text-anchor:middle;dominant-baseline:middle;paint-order:stroke;stroke:#f2e9d6d9;stroke-width:2px}.wrong-label{font-family:var(--font-display);font-weight:600;font-size:15px;fill:var(--terracotta);text-anchor:middle;dominant-baseline:middle;paint-order:stroke;stroke:#f2e9d6eb;stroke-width:4px;animation:wrong-label-fade 1.3s ease forwards}@keyframes wrong-label-fade{0%{opacity:0;transform:translateY(3px)}15%{opacity:1;transform:translateY(0)}75%{opacity:1}to{opacity:0}}.progress-bar{width:min(560px,90%);height:6px;background:var(--paper-2);border:1px solid var(--paper-edge);border-radius:999px;overflow:hidden}.progress-bar__fill{height:100%;background:linear-gradient(90deg,var(--olive),var(--teal));transition:width .3s ease}.overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#3b332759;-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);display:grid;place-items:center;padding:1.5rem;z-index:10}.result-card{background:var(--paper);border:1px solid var(--paper-edge);border-radius:18px;box-shadow:var(--shadow);padding:2rem;width:min(440px,100%);text-align:center}.result-card__title{font-family:var(--font-display);font-weight:900;font-size:2rem;margin:0 0 1.25rem}.result-card__grid{display:grid;grid-template-columns:repeat(3,1fr);gap:.75rem;margin-bottom:1.5rem}.result-stat{background:var(--paper-2);border-radius:12px;padding:.9rem .4rem}.result-stat__value{display:block;font-family:var(--font-display);font-weight:600;font-size:1.7rem}.result-stat__of{font-size:1rem;color:var(--ink-soft)}.result-stat__label{font-size:.72rem;color:var(--ink-soft);text-transform:uppercase;letter-spacing:.1em}.signin{display:flex;flex-direction:column;gap:.55rem;padding:1.1rem 0 .4rem;margin-top:.4rem;border-top:1px solid var(--paper-edge)}.signin__hint{margin:0 0 .15rem;font-size:.9rem;color:var(--ink-soft)}.signin--done{align-items:center;text-align:center}.signin__input{font-family:var(--font-body);font-size:.95rem;color:var(--ink);background:var(--paper);border:1px solid var(--paper-edge);border-radius:10px;padding:.6rem .8rem;width:100%}.signin__input:focus{outline:none;border-color:var(--terracotta);box-shadow:0 0 0 3px #bf5a3c26}.signin__input::placeholder{color:var(--ink-soft);opacity:.7}.signin__error{margin:0;font-size:.82rem;color:var(--terracotta)}.result-card__again{margin-top:.9rem}.signin__hint--center{text-align:center}.signin__row{display:flex;gap:.6rem}.signin__row .btn{flex:1}.auth-menu{position:absolute;top:1rem;right:1.15rem;z-index:5;display:flex;align-items:center;gap:.6rem;font-size:.85rem;color:var(--ink-soft)}.auth-menu__name{font-weight:500;color:var(--ink)}.auth-menu__btn{border:1px solid var(--paper-edge);background:var(--paper-2);color:var(--ink-soft);border-radius:999px;padding:.3rem .85rem;font-size:.82rem;font-weight:500}.auth-menu__btn:hover{color:var(--ink);border-color:var(--ink-soft)}.auth-popover{position:absolute;top:calc(100% + .5rem);right:0;width:min(280px,80vw);background:var(--paper);border:1px solid var(--paper-edge);border-radius:14px;box-shadow:var(--shadow);padding:1rem 1.1rem;text-align:left}.auth-popover .signin{border-top:none;padding:0;margin:0}.picker-controls{display:flex;gap:.6rem;align-items:stretch;margin-bottom:1rem}.picker-controls__random{white-space:nowrap}.search{position:relative;flex:1;text-align:left}.search__input{width:100%}.search__list{position:absolute;z-index:6;top:calc(100% + .35rem);left:0;right:0;margin:0;padding:.3rem;list-style:none;background:var(--paper);border:1px solid var(--paper-edge);border-radius:12px;box-shadow:var(--shadow);max-height:18rem;overflow-y:auto}.search__opt{display:flex;justify-content:space-between;align-items:baseline;gap:.75rem;padding:.5rem .7rem;border-radius:8px;cursor:pointer}.search__opt--active{background:var(--paper-2)}.search__name{font-weight:600;color:var(--ink)}.search__meta{font-size:.78rem;color:var(--ink-soft)}.picker-wrap{display:flex;justify-content:center;margin-bottom:1.75rem}.picker{width:100%;max-width:420px;height:auto;filter:drop-shadow(0 8px 20px rgba(59,51,39,.14))}.picker--loading{display:grid;place-items:center;aspect-ratio:620 / 720}.picker__prov{fill:var(--region-pending);stroke:var(--line);stroke-width:.5;stroke-linejoin:round;transition:fill .15s ease;cursor:pointer}.picker__prov:hover{fill:var(--region-hover)}.picker__prov--active{fill:var(--terracotta);stroke:#a94e34;stroke-width:1}.picker__prov--active:hover{fill:var(--terracotta)}.loading{display:grid;place-items:center;gap:1rem}.spinner{width:2.4rem;height:2.4rem;border-radius:50%;border:3px solid var(--paper-edge);border-top-color:var(--terracotta);animation:spin .8s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}
