@font-face{font-family:Fraunces Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/fraunces-vietnamese-wght-normal-CnvboYUG.woff2) format("woff2-variations");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Fraunces Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/fraunces-latin-ext-wght-normal-Ca2vKHc0.woff2) format("woff2-variations");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Fraunces Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/fraunces-latin-wght-normal-ukD16Tqj.woff2) format("woff2-variations");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Instrument Sans Variable;font-style:normal;font-display:swap;font-weight:400 700;src:url(/assets/instrument-sans-latin-ext-wght-normal-B5bTHO_g.woff2) format("woff2-variations");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Instrument Sans Variable;font-style:normal;font-display:swap;font-weight:400 700;src:url(/assets/instrument-sans-latin-wght-normal-BbzFLZTg.woff2) format("woff2-variations");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Spline Sans Mono Variable;font-style:normal;font-display:swap;font-weight:300 700;src:url(/assets/spline-sans-mono-latin-ext-wght-normal-Dh0aNLWd.woff2) format("woff2-variations");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Spline Sans Mono Variable;font-style:normal;font-display:swap;font-weight:300 700;src:url(/assets/spline-sans-mono-latin-wght-normal-DlaB5ohX.woff2) format("woff2-variations");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}:root{--ink: #0a0f1e;--ink-2: #0e1628;--ink-3: #131d33;--paper: #f2ead9;--paper-dim: #9aa7c0;--brass: #e8b34b;--brass-soft: rgba(232, 179, 75, .16);--coral: #ff6b57;--teal: #7fd4c1;--line: rgba(190, 207, 235, .14);--line-strong: rgba(190, 207, 235, .28);--font-display: "Fraunces Variable", "Iowan Old Style", Georgia, serif;--font-body: "Instrument Sans Variable", "Avenir Next", sans-serif;--font-mono: "Spline Sans Mono Variable", ui-monospace, "SF Mono", monospace}*{margin:0;padding:0;box-sizing:border-box}html,body{height:100%}body{background:var(--ink);color:var(--paper);font-family:var(--font-body);font-size:15px;line-height:1.5;overflow-x:hidden;-webkit-font-smoothing:antialiased}body:before{content:"";position:fixed;inset:0;z-index:-2;background-image:radial-gradient(1px 1px at 22% 31%,rgba(255,255,255,.55),transparent 100%),radial-gradient(1px 1px at 68% 12%,rgba(255,255,255,.4),transparent 100%),radial-gradient(1.5px 1.5px at 84% 64%,rgba(255,255,255,.32),transparent 100%),radial-gradient(1px 1px at 41% 79%,rgba(255,255,255,.4),transparent 100%),radial-gradient(1px 1px at 8% 58%,rgba(255,255,255,.28),transparent 100%),radial-gradient(60% 45% at 72% 16%,rgba(66,108,190,.16),transparent 70%),radial-gradient(50% 40% at 12% 88%,rgba(190,108,66,.07),transparent 70%);background-size:520px 520px,460px 460px,620px 620px,380px 380px,440px 440px,100% 100%,100% 100%;background-repeat:repeat,repeat,repeat,repeat,repeat,no-repeat,no-repeat}body:after{content:"";position:fixed;inset:0;z-index:40;pointer-events:none;opacity:.05;mix-blend-mode:overlay;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='160' height='160'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='2'/%3E%3C/filter%3E%3Crect width='160' height='160' filter='url(%23n)'/%3E%3C/svg%3E")}#app{min-height:100vh}::selection{background:var(--brass);color:var(--ink)}:focus-visible{outline:2px solid var(--brass);outline-offset:2px}.visually-hidden{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip-path:inset(50%);white-space:nowrap;border:0}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important;transition-duration:.01ms!important}}.boot-splash{height:100vh;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:14px;color:var(--paper-dim)}.boot-mark{color:var(--brass);font-size:28px;animation:spin 3s linear infinite}.boot-text{font-family:var(--font-mono);font-size:12px;letter-spacing:.22em;text-transform:uppercase}@keyframes spin{to{transform:rotate(360deg)}}.reveal{opacity:0;animation:rise .7s cubic-bezier(.22,1,.36,1) forwards;animation-delay:var(--d, 0s)}@keyframes rise{0%{opacity:0;transform:translateY(14px)}to{opacity:1;transform:translateY(0)}}.home{display:grid;grid-template-columns:minmax(360px,500px) 1fr;min-height:100vh;gap:24px;padding:clamp(20px,4vw,56px)}.home-left{display:flex;flex-direction:column;gap:18px;justify-content:center;max-width:500px}.home-kicker{font-family:var(--font-mono);font-size:11px;letter-spacing:.26em;color:var(--brass)}.wordmark{font-family:var(--font-display);font-variation-settings:"opsz" 96;font-weight:620;font-size:clamp(44px,6vw,68px);line-height:.98;letter-spacing:-.015em;font-style:italic}.tagline{color:var(--paper-dim);font-size:16px;max-width:40ch;margin-bottom:6px}.mode-card{border:1px solid var(--line);background:linear-gradient(180deg,#131d338c,#0c1324a6);padding:18px 20px;display:flex;flex-direction:column;gap:14px;transition:border-color .25s ease,transform .25s ease,box-shadow .25s ease}.mode-card:hover{border-color:#e8b34b73;transform:translateY(-2px);box-shadow:0 12px 34px #04081280}.learn-card{border-left:2px solid var(--brass)}.learn-card .btn{align-self:flex-start}.mode-card-head{display:flex;flex-direction:column;gap:3px}.mode-name{font-family:var(--font-display);font-style:italic;font-weight:560;font-size:24px;letter-spacing:.01em}.mode-blurb{color:var(--paper-dim);font-size:13.5px}.level-row{display:flex;gap:10px}.level-chip{width:66px;padding:9px 0 7px;display:flex;flex-direction:column;align-items:center;gap:4px;background:transparent;border:1px solid var(--line-strong);color:var(--paper);cursor:pointer;transition:border-color .2s,background .2s,transform .2s}.level-chip:hover:not(:disabled){border-color:var(--brass);background:var(--brass-soft);transform:translateY(-2px)}.level-chip .level-num{font-family:var(--font-mono);font-size:18px;font-weight:600}.level-chip.locked{cursor:not-allowed;opacity:.38;border-style:dashed;background-image:repeating-linear-gradient(-45deg,transparent 0 6px,rgba(190,207,235,.05) 6px 7px)}.level-chip.locked:hover{transform:none;background-color:transparent}.level-hint{font-family:var(--font-mono);font-size:11px;letter-spacing:.04em;color:var(--brass);min-height:14px;margin-top:-4px}.level-hint:empty{display:none}.home-stats{font-family:var(--font-mono);font-size:11.5px;letter-spacing:.06em;color:var(--paper-dim);border-top:1px solid var(--line);padding-top:14px}.offline-note{font-family:var(--font-mono);font-size:11.5px;color:var(--coral)}.stars{display:inline-flex;gap:3px;font-size:11px;line-height:1}.star{color:#becfeb40}.star.filled{color:var(--brass);text-shadow:0 0 8px rgba(232,179,75,.55)}.globe-stage{position:relative;min-height:320px}.globe-canvas{position:absolute;inset:0;cursor:grab;touch-action:none}.globe-canvas:active{cursor:grabbing}.readout{position:absolute;left:50%;bottom:clamp(10px,3vh,28px);transform:translate(-50%);display:flex;gap:26px;padding:10px 22px;background:#0a1020d1;border:1px solid var(--line-strong);backdrop-filter:blur(6px);pointer-events:none}.readout-slot{display:flex;align-items:baseline;gap:10px;transition:opacity .3s}.readout-slot.dim{opacity:.3}.readout-key{font-family:var(--font-mono);font-size:9px;letter-spacing:.3em;color:var(--paper-dim)}.readout-value{font-family:var(--font-mono);font-size:21px;font-weight:550;min-width:3.2ch;font-variant-numeric:tabular-nums}.readout-slot.lat .readout-value{color:var(--coral);text-shadow:0 0 12px rgba(255,107,87,.35)}.readout-slot.lon .readout-value{color:var(--brass);text-shadow:0 0 12px rgba(232,179,75,.35)}.game-layout{display:grid;grid-template-columns:372px 1fr;gap:20px;height:100vh;padding:20px}.panel{background:linear-gradient(180deg,#10182ce0,#0a1020eb);border:1px solid var(--line);padding:22px;display:flex;flex-direction:column;gap:18px;overflow-y:auto;position:relative;animation:rise .5s cubic-bezier(.22,1,.36,1)}.corner-ticks:before,.corner-ticks:after{content:"";position:absolute;width:14px;height:14px;pointer-events:none}.corner-ticks:before{top:5px;left:5px;border-top:1px solid var(--brass);border-left:1px solid var(--brass)}.corner-ticks:after{bottom:5px;right:5px;border-bottom:1px solid var(--brass);border-right:1px solid var(--brass)}.panel-top{display:flex;justify-content:space-between;align-items:flex-start;gap:10px}.mission-id{display:flex;flex-direction:column;align-items:flex-end;gap:2px}.mission-mode{font-family:var(--font-mono);font-size:13px;font-weight:650;letter-spacing:.24em;color:var(--brass)}.mission-level{font-family:var(--font-mono);font-size:10px;letter-spacing:.16em;color:var(--paper-dim)}.q-area{flex:1;display:flex;flex-direction:column;gap:14px}.q-kicker{font-family:var(--font-mono);font-size:10.5px;letter-spacing:.22em;color:var(--paper-dim)}.q-coords{font-family:var(--font-mono);font-size:clamp(28px,2.6vw,36px);font-weight:600;display:flex;flex-wrap:wrap;gap:0 12px;font-variant-numeric:tabular-nums}.q-lat{color:var(--coral);text-shadow:0 0 16px rgba(255,107,87,.35)}.q-lon{color:var(--brass);text-shadow:0 0 16px rgba(232,179,75,.35)}.q-sep{color:var(--paper-dim)}.q-hint{color:var(--paper-dim);font-size:13.5px}.q-flavor{color:var(--paper-dim);font-size:12.5px;font-style:italic}.panel-bottom{border-top:1px solid var(--line);padding-top:14px;display:flex;justify-content:space-between;align-items:baseline}.score-total-label{font-family:var(--font-mono);font-size:10px;letter-spacing:.24em;color:var(--paper-dim)}.score-total-value{font-family:var(--font-mono);font-size:22px;font-weight:600;color:var(--paper);font-variant-numeric:tabular-nums}.round-dots{display:flex;gap:9px}.dot{width:9px;height:9px;border-radius:50%;border:1px solid var(--line-strong);transition:all .3s}.dot.current{border-color:var(--brass);animation:dotPulse 1.6s ease-in-out infinite}.dot.good{background:var(--teal);border-color:var(--teal)}.dot.ok{background:var(--paper-dim);border-color:var(--paper-dim)}.dot.poor{background:var(--coral);border-color:var(--coral)}@keyframes dotPulse{50%{box-shadow:0 0 0 4px #e8b34b2e}}.btn{font-family:var(--font-body);font-size:14px;font-weight:600;letter-spacing:.02em;padding:11px 20px;border:1px solid transparent;cursor:pointer;transition:transform .18s ease,box-shadow .18s ease,background .18s ease,border-color .18s ease}.btn.primary{background:var(--brass);color:var(--ink)}.btn.primary:hover:not(:disabled){background:#f0c264;transform:translateY(-1px);box-shadow:0 8px 22px #e8b34b47}.btn.ghost{background:transparent;border-color:var(--line-strong);color:var(--paper-dim)}.btn.ghost:hover:not(:disabled){border-color:var(--paper-dim);color:var(--paper)}.btn.small{font-size:12px;padding:7px 12px}.btn:disabled{opacity:.4;cursor:not-allowed}.coord-input{display:flex;flex-direction:column;gap:16px}.coord-row{display:flex;flex-direction:column;gap:6px}.coord-label{font-family:var(--font-mono);font-size:10px;letter-spacing:.24em;text-transform:uppercase;color:var(--paper-dim)}.coord-row:first-child .coord-label{color:var(--coral)}.coord-row:nth-child(2) .coord-label{color:var(--brass)}.coord-controls{display:flex;gap:10px}.coord-num{flex:1;min-width:0;background:#080d1ab3;border:1px solid var(--line-strong);border-bottom-width:2px;color:var(--paper);font-family:var(--font-mono);font-size:22px;font-weight:550;padding:8px 12px;font-variant-numeric:tabular-nums;-moz-appearance:textfield;appearance:textfield}.coord-num::-webkit-outer-spin-button,.coord-num::-webkit-inner-spin-button{-webkit-appearance:none}.coord-num:focus{border-bottom-color:var(--brass);outline:none}.segmented{display:flex;border:1px solid var(--line-strong)}.seg{width:44px;background:transparent;border:none;color:var(--paper-dim);font-family:var(--font-mono);font-size:16px;font-weight:600;cursor:pointer;transition:background .15s,color .15s}.seg+.seg{border-left:1px solid var(--line-strong)}.seg[aria-checked=true]{background:var(--brass);color:var(--ink)}.coord-hint{font-size:12.5px;color:var(--coral);min-height:18px}.coord-hint:empty{display:none}.coord-submit{align-self:flex-start}.fb-card{display:flex;flex-direction:column;gap:11px;padding:18px;border:1px solid var(--line-strong);border-left-width:3px;background:#080d1a80;animation:rise .4s cubic-bezier(.22,1,.36,1)}.fb-card.excellent{border-left-color:var(--teal)}.fb-card.good{border-left-color:var(--brass)}.fb-card.ok{border-left-color:var(--paper-dim)}.fb-card.poor{border-left-color:var(--coral)}.fb-score-wrap{display:flex;align-items:baseline;gap:4px}.fb-score{font-family:var(--font-mono);font-size:46px;font-weight:650;line-height:1;font-variant-numeric:tabular-nums}.fb-score-max{font-family:var(--font-mono);font-size:13px;color:var(--paper-dim)}.fb-row{display:flex;justify-content:space-between;gap:12px;font-size:13.5px;border-bottom:1px dashed var(--line);padding-bottom:7px}.fb-label{color:var(--paper-dim)}.fb-value{font-family:var(--font-mono);font-size:13px;text-align:right}.fb-coach{font-size:13px;line-height:1.55;color:var(--teal);border-left:2px solid rgba(127,212,193,.5);padding-left:10px;font-style:italic}.fb-card .btn{margin-top:8px;align-self:flex-start}.summary-card{display:flex;flex-direction:column;gap:16px;padding:22px 18px;border:1px solid rgba(232,179,75,.4);background:#080d1a80;animation:rise .4s cubic-bezier(.22,1,.36,1)}.summary-stars .stars{font-size:30px;gap:12px}.summary-stars .star.filled{animation:starPop .5s cubic-bezier(.34,1.56,.64,1) backwards}.summary-stars .star.filled:nth-child(2){animation-delay:.18s}.summary-stars .star.filled:nth-child(3){animation-delay:.36s}@keyframes starPop{0%{transform:scale(0);opacity:0}}.summary-avg{display:flex;align-items:baseline;gap:6px}.summary-copy{color:var(--paper-dim);font-style:italic;font-family:var(--font-display);font-size:16px}.summary-actions{display:flex;flex-wrap:wrap;gap:10px}.tut-steps{display:flex;gap:7px}.tut-tick{height:5px;flex:1;padding:0;border:none;background:var(--line-strong);transition:background .4s;cursor:pointer}.tut-tick:disabled{cursor:default}.tut-tick.done{background:var(--brass)}.tut-tick.current{background:var(--paper)}.tut-content{display:flex;flex-direction:column;gap:14px;flex:1}.tut-title{font-family:var(--font-display);font-style:italic;font-weight:560;font-size:27px;line-height:1.15}.tut-body{color:var(--paper-dim);font-size:14.5px;line-height:1.65}.tut-body strong{color:var(--paper);font-weight:600}.c-coral,.tut-body .c-coral{color:var(--coral)!important}.c-brass,.tut-body .c-brass{color:var(--brass)!important}.c-teal,.tut-body .c-teal{color:var(--teal)!important}.mono{font-family:var(--font-mono);font-size:.92em;color:var(--paper)}.tut-task{border:1px dashed rgba(232,179,75,.5);background:var(--brass-soft);padding:12px 14px;font-size:14px;color:var(--paper)}.tut-status{font-size:13.5px;min-height:20px}.tut-status.ok{color:var(--teal)}.tut-status.err{color:var(--coral)}.tut-actions{margin-top:auto;padding-top:10px}@media(max-width:980px){.home{grid-template-columns:1fr;grid-template-rows:minmax(340px,44vh) auto}.home-globe{order:-1}.home-left{max-width:none;padding-bottom:40px}.game-layout{grid-template-columns:1fr;grid-template-rows:minmax(300px,46vh) 1fr;height:auto;min-height:100vh}.game-layout .globe-stage{order:-1}.panel{overflow-y:visible}.readout{gap:14px;padding:8px 14px}.readout-value{font-size:17px}}
