@font-face{font-family:Inter;font-style:normal;font-weight:100 900;font-display:swap;src:url(/assets/inter-latin-wght-normal-Dx4kXJAl.woff2)format("woff2")}@font-face{font-family:Instrument Serif;font-style:normal;font-weight:400;font-display:swap;src:url(/assets/instrument-serif-latin-400-normal-DnYpCC2O.woff2)format("woff2")}@font-face{font-family:Instrument Serif;font-style:italic;font-weight:400;font-display:swap;src:url(/assets/instrument-serif-latin-400-italic-DKMiL14s.woff2)format("woff2")}:root{--bg:#0e0f12;--bg-raise:#121318;--surface-1:#16181e;--surface-2:#1c1f27;--surface-3:#252934;--line:#ffffff12;--line-strong:#ffffff21;--text:#f3f1ec;--text-2:#b4b7c2;--text-3:#7f838f;--accent:#3d5afe;--accent-deep:#2c45e0;--accent-text:#9cacff;--accent-soft:#3d5afe24;--accent-line:#7c92ff80;--gold:#d9c08a;--gold-bright:#ecd9ae;--gold-soft:#d9c08a1f;--gold-line:#d9c08a6b;--ok:#63d0a1;--ok-soft:#63d0a11c;--ok-line:#63d0a180;--bad:#f08d80;--bad-soft:#f08d801c;--bad-line:#f08d8080;--font-ui:"Inter", -apple-system, BlinkMacSystemFont, "SF Pro Text", "Segoe UI", Roboto, system-ui, sans-serif;--font-display:"Instrument Serif", "Iowan Old Style", "Palatino", Georgia, serif;--r-sm:10px;--r:14px;--r-lg:20px;--ease:cubic-bezier(.2, .7, .2, 1);--spring:cubic-bezier(.34, 1.5, .64, 1);--safe-t:env(safe-area-inset-top,0px);--safe-b:env(safe-area-inset-bottom,0px);--safe-l:env(safe-area-inset-left,0px);--safe-r:env(safe-area-inset-right,0px);--tabbar:68px;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}html[data-text=large]{font-size:112.5%}*,:before,:after{box-sizing:border-box}html,body{background:var(--bg);color:var(--text);margin:0}body{font-family:var(--font-ui);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-rendering:optimizelegibility;-webkit-tap-highlight-color:transparent;-webkit-text-size-adjust:100%;overscroll-behavior-y:none;min-height:100dvh;font-size:1rem;line-height:1.5}p,h1,h2,h3,ul,ol,dl,dd{margin:0}button,input,select{font:inherit;color:inherit}button{cursor:pointer;-webkit-user-select:none;user-select:none;touch-action:manipulation}a{color:inherit;text-decoration:none}:focus-visible{outline:2px solid var(--accent-text);outline-offset:3px;border-radius:6px}h1[tabindex="-1"]:focus{outline:none}.sr-only{clip:rect(0 0 0 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;position:absolute!important}.num{font-variant-numeric:tabular-nums lining-nums}.muted{color:var(--text-2)}.small{font-size:.8125rem}#root{min-height:100dvh}.app{max-width:480px;min-height:100dvh;padding-left:var(--safe-l);padding-right:var(--safe-r);margin:0 auto;position:relative}.ambient{pointer-events:none;z-index:0;background:radial-gradient(120% 60% at 50% -10%,#3d5afe21,#0000 60%),radial-gradient(80% 40% at 100% 0,#3d5afe0d,#0000 70%);position:fixed;top:0;bottom:0;left:0;right:0}.route{z-index:1;position:relative}.route>*{animation:screenIn .38s var(--ease) both}@keyframes screenIn{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}.screen{padding:calc(var(--safe-t) + 4px) 16px calc(var(--tabbar) + var(--safe-b) + 32px);flex-direction:column;gap:20px;display:flex}.screen-center{justify-content:center;align-items:flex-start;gap:16px;min-height:80dvh}.stack-sm{flex-wrap:wrap;gap:10px;display:flex}.splash,.fatal{text-align:center;min-height:100dvh;color:var(--text);align-content:center;place-items:center;gap:16px;padding:24px;display:grid}.splash-mark{width:132px;height:132px}.fatal h1{font-family:var(--font-display);font-size:2rem;font-weight:400}.monogram{color:var(--text);display:block}.monogram-dot{fill:var(--gold)}.topbar{justify-content:space-between;align-items:center;min-height:56px;display:flex}.brand{align-items:center;gap:10px;min-height:44px;display:flex}.brand-name{font-family:var(--font-display);letter-spacing:.005em;font-size:1.5rem;line-height:1}.topbar-stats{gap:8px;display:flex}.stat-chip{border:1px solid var(--line-strong);background:#ffffff05;border-radius:999px;align-items:center;gap:5px;height:32px;padding:0 11px;font-size:.875rem;font-weight:600;display:inline-flex}.stat-chip .lvl{letter-spacing:.08em;text-transform:uppercase;color:var(--text-3);font-size:.6875rem}.flame-on{color:var(--gold)}.flame-off{color:var(--text-3)}.eyebrow{letter-spacing:.14em;text-transform:uppercase;color:var(--text-3);font-size:.6875rem;font-weight:600}.eyebrow-accent{color:var(--accent-text)}.eyebrow-gold{color:var(--gold)}.display{font-family:var(--font-display);letter-spacing:-.01em;font-size:2.75rem;font-weight:400;line-height:1.02}.display-sm{font-family:var(--font-display);letter-spacing:-.005em;font-size:2.25rem;font-weight:400;line-height:1.05}.display-en{font-family:var(--font-display);color:var(--text-2);font-size:1.25rem;font-style:italic}.section-title{letter-spacing:.12em;text-transform:uppercase;color:var(--text-3);margin-bottom:10px;font-size:.75rem;font-weight:600}.section-head{justify-content:space-between;align-items:center;gap:12px;margin-bottom:10px;display:flex}.section-head .section-title{margin:0}.screen-head{flex-direction:column;gap:4px;margin-top:4px;display:flex}.fine-print{color:var(--text-3);font-size:.8125rem;line-height:1.5}.empty{color:var(--text-3);padding:14px 0;font-size:.9375rem}.btn{border-radius:var(--r);letter-spacing:.005em;min-height:50px;transition:transform .12s var(--ease), background-color .2s, border-color .2s, opacity .2s;border:1px solid #0000;justify-content:center;align-items:center;gap:8px;padding:0 20px;font-size:1rem;font-weight:600;display:inline-flex}.btn:active:not([disabled]){transform:scale(.98)}.btn[disabled]{opacity:.38;cursor:not-allowed;box-shadow:none}.btn-primary{background:linear-gradient(180deg, #4a66ff, var(--accent-deep));color:#fff;box-shadow:inset 0 1px #ffffff2e,0 10px 24px -12px #3d5afecc}.btn-secondary{background:var(--surface-2);border-color:var(--line-strong);color:var(--text)}.btn-ghost{color:var(--text-2);background:0 0}.btn-danger{color:#fff;background:#c9493a}.btn-danger-ghost{border-color:var(--bad-line);color:var(--bad);background:0 0}.btn-block{width:100%}.btn-grow{flex:1}.btn-lg{min-height:56px;font-size:1.0625rem}.btn-small{border-radius:12px;flex:none;min-height:40px;padding:0 14px;font-size:.875rem}.icon-btn{width:44px;height:44px;color:var(--text-2);background:0 0;border:0;border-radius:12px;flex:none;place-items:center;display:grid}.icon-btn:active{background:var(--surface-2)}.link-btn{min-height:44px;color:var(--accent-text);background:0 0;border:0;align-items:center;gap:6px;padding:0;font-size:.875rem;font-weight:500;display:inline-flex}.banner{z-index:30;margin:calc(var(--safe-t) + 8px) 16px 0;border-radius:var(--r);border:1px solid var(--line-strong);background:var(--surface-2);align-items:center;gap:10px;padding:12px 14px;font-size:.875rem;line-height:1.4;display:flex;position:relative}.banner+.banner{margin-top:8px}.banner>span{flex:1}.banner-warn{border-color:var(--gold-line);background:var(--gold-soft)}.banner-bad{border-color:var(--bad-line);background:var(--bad-soft)}.banner-info{border-color:var(--accent-line);background:var(--accent-soft)}.banner-close{width:36px;height:36px;color:var(--text-2);background:0 0;border:0;place-items:center;display:grid}.pill-offline{z-index:25;top:calc(var(--safe-t) + 8px);color:var(--text-2);border:1px solid var(--line-strong);white-space:nowrap;background:#1c1f27eb;border-radius:999px;align-items:center;gap:6px;padding:6px 12px;font-size:.75rem;display:inline-flex;position:fixed;left:50%;transform:translate(-50%)}.toast-region{z-index:70;left:50%;bottom:calc(var(--tabbar) + var(--safe-b) + 16px);pointer-events:none;width:min(440px,100% - 32px);position:fixed;transform:translate(-50%)}.toast{border-radius:var(--r);border:1px solid var(--line-strong);animation:screenIn .3s var(--ease) both;background:#23262f;padding:12px 16px;font-size:.875rem;box-shadow:0 16px 40px -16px #000c}.notice{border-radius:var(--r);background:var(--surface-1);border:1px solid var(--line-strong);color:var(--text-2);align-items:flex-start;gap:10px;padding:14px;font-size:.9375rem;display:flex}.notice svg{color:var(--text-3);flex:none;margin-top:2px}.notice p+p{margin-top:6px}.notice-warn{border-color:var(--gold-line);background:var(--gold-soft)}.notice-warn svg{color:var(--gold)}.notice-en{color:var(--text)}.tabbar{z-index:40;width:100%;max-width:480px;padding:6px max(8px, var(--safe-l)) calc(6px + var(--safe-b));-webkit-backdrop-filter:blur(18px)saturate(150%);backdrop-filter:blur(18px)saturate(150%);border-top:1px solid var(--line);background:#0e0f12e0;grid-template-columns:repeat(5,1fr);align-items:end;display:grid;position:fixed;bottom:0;left:50%;transform:translate(-50%)}.tab{letter-spacing:.09em;text-transform:uppercase;min-height:54px;color:var(--text-3);flex-direction:column;justify-content:center;align-items:center;gap:3px;font-size:.625rem;font-weight:600;transition:color .2s;display:flex}.tab[aria-current=page]{color:var(--text)}.tab[aria-current=page] .tab-icon{color:var(--accent-text)}.tab-play{color:var(--text-2)}.tab-play-disc{color:#fff;background:linear-gradient(180deg, #4a66ff, var(--accent-deep));width:52px;height:52px;box-shadow:inset 0 1px 0 #ffffff38, 0 0 0 5px var(--bg), 0 12px 26px -10px #3d5afee6;border-radius:50%;place-items:center;margin-top:-22px;display:grid}.tab-play-disc svg{margin-left:3px}.greeting{flex-direction:column;gap:2px;margin-top:4px;display:flex}.greeting-en{font-family:var(--font-display);color:var(--accent-text);font-size:1.125rem;font-style:italic}.greeting-es{font-family:var(--font-display);letter-spacing:-.01em;font-size:2.625rem;font-weight:400;line-height:1.02}.mission-card{border-radius:var(--r-lg);border:1px solid var(--line-strong);background:linear-gradient(160deg,#1b1e27 0%,#14161c 60%);flex-direction:column;gap:6px;padding:22px 20px 20px;display:flex;position:relative;overflow:hidden;box-shadow:0 24px 60px -32px #000000e6}.mission-card .btn{margin-top:14px}.mission-glow{pointer-events:none;background:radial-gradient(circle,#3d5afe57,#0000 65%);border-radius:50%;width:280px;height:280px;position:absolute;top:-130px;right:-110px}.mission-card.is-complete{border-color:var(--gold-line)}.mission-num{color:var(--accent-text);letter-spacing:.02em;font-size:.8125rem;font-weight:600}.mission-title{font-family:var(--font-display);letter-spacing:-.01em;font-size:2.5rem;font-weight:400;line-height:1.02}.mission-en{font-family:var(--font-display);color:var(--text-2);font-size:1.125rem;font-style:italic}.mission-meta{color:var(--text-2);flex-wrap:wrap;align-items:center;gap:8px;margin-top:6px;font-size:.8125rem;display:flex}.stat-row{grid-template-columns:repeat(3,1fr);gap:8px;display:grid}.stat{border-radius:var(--r);border:1px solid var(--line);background:#ffffff04;flex-direction:column;align-items:flex-start;gap:10px;min-width:0;padding:12px;display:flex}.stat>div{min-width:0}.stat-icon{background:var(--surface-2);width:34px;height:34px;color:var(--text-3);border-radius:10px;flex:none;place-items:center;display:grid}.stat-icon.is-lit{color:var(--gold);background:var(--gold-soft)}.stat-value{font-family:var(--font-display);font-size:1.625rem;line-height:1}.stat-of{color:var(--text-3);font-size:1rem}.stat-label{color:var(--text-3);margin-top:4px;font-size:.75rem;line-height:1.25}.level-strip{flex-direction:column;gap:8px;display:flex}.level-strip-head{justify-content:space-between;align-items:baseline;gap:12px;display:flex}.level-name{font-size:.9375rem;font-weight:600}.row-card{border-radius:var(--r);border:1px solid var(--line-strong);background:var(--surface-1);text-align:left;align-items:center;gap:12px;width:100%;padding:14px;display:flex}.row-card-quiet{background:0 0;border-style:dashed}.row-link{color:var(--text)}.row-link>svg:last-child{color:var(--text-3);flex:none}.row-icon{background:var(--accent-soft);width:40px;height:40px;color:var(--accent-text);border-radius:12px;flex:none;place-items:center;display:grid}.row-card-quiet .row-icon{background:var(--surface-2);color:var(--text-3)}.row-text{flex-direction:column;flex:1;min-width:0;display:flex}.row-title{font-size:.9375rem;font-weight:600}.row-sub{color:var(--text-2);font-size:.8125rem}.howto ul{flex-direction:column;gap:10px;padding:0;list-style:none;display:flex}.howto li{color:var(--text-2);gap:10px;font-size:.9375rem;display:flex}.howto li svg{color:var(--accent-text);flex:none;margin-top:3px}.ring{flex:none;place-items:center;display:inline-grid;position:relative}.ring>svg{position:absolute;top:0;bottom:0;left:0;right:0}.ring-track{stroke:var(--surface-3)}.ring-value{stroke:var(--accent);transition:stroke-dashoffset .5s var(--ease)}.ring-gold .ring-value{stroke:var(--gold)}.ring-ok .ring-value{stroke:var(--ok)}.ring-center{color:var(--text-2);justify-content:center;align-items:baseline;display:flex;position:relative}.bar{background:var(--surface-3);border-radius:999px;height:6px;display:block;position:relative;overflow:hidden}.bar-fill{transform-origin:0;border-radius:inherit;background:linear-gradient(90deg, var(--accent-deep), #6c84ff);transition:transform .6s var(--ease);position:absolute;top:0;bottom:0;left:0;right:0}.bar-gold .bar-fill{background:linear-gradient(90deg, #b99d62, var(--gold-bright))}.stars{vertical-align:middle;gap:2px;display:inline-flex}.star{color:var(--surface-3);fill:currentColor;stroke:none}.star.on{color:var(--gold)}.inline-star{vertical-align:-1px;margin-left:3px}.world{border-top:1px solid var(--line);flex-direction:column;gap:8px;padding-top:8px;display:flex}.world-head{align-items:flex-start;gap:14px;padding-top:10px;display:flex}.world-index{font-family:var(--font-display);color:var(--accent-text);min-width:52px;font-size:2.75rem;line-height:.9}.world-completed .world-index{color:var(--gold)}.world-locked .world-index,.world-locked .world-title{color:var(--text-3)}.world-title{font-family:var(--font-display);font-size:1.75rem;font-weight:400;line-height:1.05}.world-sub{color:var(--text-2);align-items:center;gap:4px;margin-top:4px;font-size:.8125rem;display:flex}.world-desc{color:var(--text-3);margin-top:2px;font-size:.8125rem}.path{padding:0;list-style:none;position:relative}.path:before{content:"";background:var(--line-strong);border-radius:2px;width:2px;position:absolute;top:32px;bottom:32px;left:21px}.node-btn{text-align:left;width:100%;min-height:68px;color:inherit;background:0 0;border:0;align-items:center;gap:14px;padding:10px 0;display:flex}.node-btn[disabled]{cursor:default}.node-dot{z-index:1;background:var(--surface-2);border:1px solid var(--line-strong);width:44px;height:44px;color:var(--text-3);border-radius:50%;flex:none;place-items:center;display:grid;position:relative}.is-completed .node-dot{background:linear-gradient(180deg, #4a66ff, var(--accent-deep));color:#fff;border-color:#0000}.is-available .node-dot{background:var(--bg);border:2px solid var(--accent);color:var(--accent-text);box-shadow:0 0 0 6px var(--accent-soft)}.is-available .node-dot svg{margin-left:2px}.node-text{flex-direction:column;flex:1;min-width:0;display:flex}.node-num{letter-spacing:.1em;text-transform:uppercase;color:var(--text-3);font-size:.6875rem;font-weight:600}.node-title{font-size:1.0625rem;font-weight:600;line-height:1.25}.node-en{font-family:var(--font-display);color:var(--text-2);font-size:.9375rem;font-style:italic}.is-locked .node-title,.is-locked .node-en{color:var(--text-3)}.node-side{flex-direction:column;flex:none;align-items:flex-end;gap:2px;display:flex}.node-score{color:var(--text-2);font-size:.75rem}.node-cta{letter-spacing:.08em;text-transform:uppercase;color:var(--accent-text);font-size:.75rem;font-weight:700}.screen-nav{align-items:center;gap:4px;min-height:56px;margin-left:-10px;display:flex}.briefing-head{flex-direction:column;gap:4px;display:flex}.briefing-goal{color:var(--text-2);margin-top:8px;font-size:1rem}.phrase-list{border-top:1px solid var(--line);padding:0;list-style:none}.phrase{border-bottom:1px solid var(--line);align-items:center;gap:12px;padding:14px 0;display:flex}.phrase-main{flex:1;min-width:0}.phrase-en{font-size:1.125rem;font-weight:600;line-height:1.3}.phrase-es{color:var(--text-2);font-size:.9375rem}.phrase-note{color:var(--text-3);margin-top:4px;font-size:.8125rem}.briefing-note{margin-top:-4px}.action-bar{z-index:5;padding:14px 0 calc(12px + var(--safe-b));background:linear-gradient(to top, var(--bg) 72%, #0e0f1200);margin-top:auto;position:sticky;bottom:0}.screen.briefing{min-height:100dvh;padding-bottom:0}.audio-btns{flex:none;gap:8px;display:inline-flex}.audio-btn{border:1px solid var(--line-strong);background:var(--surface-2);width:44px;height:44px;color:var(--accent-text);border-radius:50%;place-items:center;transition:background-color .2s,transform .12s;display:grid}.audio-btn:active{transform:scale(.95)}.audio-btn.is-playing{background:var(--accent-soft);border-color:var(--accent-line)}.audio-slow{width:auto;min-width:44px;color:var(--text-2);border-radius:999px;padding:0 12px}.slow-label{letter-spacing:.04em;font-size:.75rem;font-weight:700}.audio-big .audio-btn{width:76px;height:76px}.audio-big .audio-btn:first-child{background:linear-gradient(180deg, #4a66ff, var(--accent-deep));color:#fff;border-color:#0000;box-shadow:0 14px 32px -14px #3d5afee6}.audio-big .audio-slow{align-self:center;width:auto;height:48px;padding:0 16px}.audio-big .audio-btn.is-playing:first-child{box-shadow:0 0 0 8px var(--accent-soft), 0 14px 32px -14px #3d5afee6}.play{min-height:100dvh;padding:var(--safe-t) 16px 0;flex-direction:column;display:flex}.play-top{align-items:center;gap:10px;min-height:60px;margin-left:-10px;display:flex}.segments{flex:1;gap:4px;display:flex}.seg{background:var(--surface-3);border-radius:999px;flex:1;height:5px;transition:background-color .3s}.seg.is-done{background:var(--accent)}.seg.is-current{background:#3d5afe73}.play-count{color:var(--text-3);text-align:right;font-variant-numeric:tabular-nums;min-width:34px;font-size:.8125rem}.play-body{animation:screenIn .32s var(--ease) both;flex-direction:column;flex:1;gap:18px;padding-top:10px;display:flex}.has-feedback .play-body{padding-bottom:300px}.instruction{letter-spacing:.12em;text-transform:uppercase;color:var(--accent-text);flex-wrap:wrap;align-items:baseline;gap:4px 10px;font-size:.75rem;font-weight:600;display:flex}.instruction-sub{color:var(--text-3);letter-spacing:.08em}.practice-tag,.tag{border:1px solid var(--line-strong);letter-spacing:.04em;text-transform:none;color:var(--text-2);border-radius:999px;align-items:center;padding:2px 8px;font-size:.6875rem;font-weight:600;display:inline-flex}.tag-accent{border-color:var(--accent-line);color:var(--accent-text)}.review-source{color:var(--text-3);margin-top:-10px;font-size:.8125rem}.prompt{letter-spacing:-.01em;font-size:1.375rem;font-weight:600;line-height:1.3}.listen-stage{flex-direction:column;align-items:center;gap:6px;padding:8px 0 4px;display:flex}.options{flex-direction:column;gap:10px;display:flex}.option{border-radius:var(--r);border:1px solid var(--line-strong);background:var(--surface-1);text-align:left;justify-content:space-between;align-items:center;gap:10px;width:100%;min-height:56px;padding:13px 16px;font-size:1.0625rem;line-height:1.35;transition:border-color .18s,background-color .18s,transform .12s;display:flex}.option:active:not([disabled]){transform:scale(.99)}.option.is-selected{border-color:var(--accent);background:var(--accent-soft);box-shadow:inset 0 0 0 1px var(--accent)}.option.is-correct{border-color:var(--ok-line);background:var(--ok-soft);color:var(--text)}.option.is-wrong{border-color:var(--bad-line);background:var(--bad-soft);animation:shake .32s var(--ease)}.option.is-muted{opacity:.45}.option[disabled]{cursor:default}.option-mark{flex:none}.is-correct .option-mark{color:var(--ok)}.is-wrong .option-mark{color:var(--bad)}@keyframes shake{0%,to{transform:none}25%{transform:translate(-4px)}75%{transform:translate(4px)}}.tile-answer{background-image:repeating-linear-gradient(to bottom, transparent 0, transparent 53px, var(--line-strong) 53px, var(--line-strong) 54px);background-position:0 0;flex-wrap:wrap;align-content:flex-start;gap:8px;min-height:116px;padding:10px 0;display:flex}.tile-placeholder{color:var(--text-3);padding-top:12px;font-size:.9375rem}.tile-bank{flex-wrap:wrap;justify-content:center;gap:8px;padding:4px 0;display:flex}.tile{border:1px solid var(--line-strong);background:var(--surface-2);min-height:46px;transition:transform .12s var(--ease), opacity .15s;border-radius:12px;padding:0 15px;font-size:1.0625rem;font-weight:500;box-shadow:0 2px #00000073}.tile:active:not([disabled]){transform:translateY(1px);box-shadow:0 1px #00000073}.tile-placed{background:var(--surface-3);animation:tileIn .18s var(--ease) both}.tile.is-used{visibility:hidden}@keyframes tileIn{0%{opacity:.4;transform:scale(.9)}to{opacity:1;transform:none}}.fill-sentence{font-size:1.5rem;font-weight:500;line-height:1.6}.blank{border-bottom:2px solid var(--accent-line);text-align:center;min-width:96px;color:var(--accent-text);padding:0 8px;display:inline-block}.blank.is-filled{color:var(--text)}.blank.is-correct{border-color:var(--ok);color:var(--ok)}.blank.is-wrong{border-color:var(--bad);color:var(--bad)}.chips{flex-wrap:wrap;gap:10px;display:flex}.chip{border:1px solid var(--line-strong);background:var(--surface-1);border-radius:999px;min-height:48px;padding:0 18px;font-size:1.0625rem}.chip.is-selected{border-color:var(--accent);background:var(--accent-soft);box-shadow:inset 0 0 0 1px var(--accent)}.text-input{border-radius:var(--r);border:1px solid var(--line-strong);background:var(--surface-1);outline:none;width:100%;min-height:56px;padding:0 16px;font-size:1.1875rem;transition:border-color .2s}.text-input:focus{border-color:var(--accent);box-shadow:inset 0 0 0 1px var(--accent)}.text-input.is-correct{border-color:var(--ok-line);background:var(--ok-soft)}.text-input.is-wrong{border-color:var(--bad-line);background:var(--bad-soft)}.text-input::placeholder{color:var(--text-3)}.hint p{color:var(--text-2);align-items:center;gap:6px;font-size:.9375rem;display:flex}.speak-card{text-align:center;border-radius:var(--r-lg);border:1px solid var(--line-strong);background:linear-gradient(180deg, var(--surface-1), var(--bg-raise));flex-direction:column;align-items:center;gap:8px;padding:22px 16px;display:flex}.speak-en{font-family:var(--font-display);font-size:2rem;line-height:1.1}.speak-es{color:var(--text-2);margin-bottom:8px}.recorder{flex-direction:column;gap:10px;display:flex}.recorder-controls{gap:10px;display:flex}.rec-btn{border-radius:var(--r);border:1px solid var(--line-strong);background:var(--surface-2);flex:1;justify-content:center;align-items:center;gap:8px;min-height:52px;padding:0 14px;font-size:.9375rem;font-weight:600;display:inline-flex}.rec-btn.is-recording{border-color:var(--bad-line);background:var(--bad-soft);color:var(--bad)}.rec-btn.is-recording svg{animation:1.2s ease-in-out infinite recPulse}@keyframes recPulse{50%{opacity:.35}}.rec-play.is-playing{border-color:var(--accent-line);background:var(--accent-soft)}.said-btn{border-radius:var(--r);border:1px dashed var(--line-strong);min-height:48px;color:var(--text-2);background:0 0;justify-content:center;align-items:center;gap:8px;font-weight:500;display:inline-flex}.said-btn.is-on{border-style:solid;border-color:var(--ok-line);background:var(--ok-soft);color:var(--text)}.said-btn svg{opacity:.4}.said-btn.is-on svg{opacity:1;color:var(--ok)}.chat{flex-direction:column;gap:12px;display:flex}.bubble-row{max-width:88%;animation:bubbleIn .3s var(--ease) both;flex-direction:column;gap:4px;display:flex}.bubble-row.is-me{align-self:flex-end;align-items:flex-end}.bubble-name{letter-spacing:.1em;text-transform:uppercase;color:var(--text-3);padding-left:4px;font-size:.6875rem;font-weight:600}.bubble{background:var(--surface-2);border:1px solid var(--line);border-radius:18px 18px 18px 6px;padding:12px 14px}.is-me .bubble{background:linear-gradient(180deg, #4a66ff, var(--accent-deep));color:#fff;border-color:#0000;border-radius:18px 18px 6px}.bubble-en{font-size:1.0625rem;line-height:1.4}.bubble-es{color:var(--text-2);margin-top:4px;font-size:.875rem}.bubble-tools{align-items:center;gap:10px;margin-top:8px;display:flex}.bubble-tools .link-btn{min-height:44px}@keyframes bubbleIn{0%{opacity:0;transform:translateY(6px)scale(.98)}to{opacity:1;transform:none}}.inline-feedback{border-radius:var(--r);animation:screenIn .25s var(--ease) both;align-items:flex-start;gap:8px;padding:12px 14px;font-size:.9375rem;display:flex}.inline-feedback svg{flex:none;margin-top:2px}.inline-feedback.is-ok{background:var(--ok-soft);border:1px solid var(--ok-line)}.inline-feedback.is-ok svg{color:var(--ok)}.inline-feedback.is-bad{background:var(--bad-soft);border:1px solid var(--bad-line)}.inline-feedback.is-bad svg{color:var(--bad)}.reply-options{flex-direction:column;gap:8px;display:flex}.option-reply{min-height:52px;font-size:1rem}.option-reply[disabled]{opacity:.35;text-decoration:line-through;-webkit-text-decoration-color:var(--bad);text-decoration-color:var(--bad)}.feedback{z-index:50;width:min(100%,480px);padding:18px 16px calc(14px + var(--safe-b));border-top:1px solid var(--line-strong);animation:sheetUp .28s var(--ease) both;background:#181a21;border-radius:22px 22px 0 0;flex-direction:column;gap:10px;display:flex;position:fixed;bottom:0;left:50%;transform:translate(-50%);box-shadow:0 -24px 60px -20px #000c}.feedback:before{content:"";border-radius:22px 22px 0 0;height:2px;position:absolute;top:0;left:0;right:0}.feedback-ok:before{background:var(--ok)}.feedback-bad:before{background:var(--bad)}.feedback-neutral:before{background:var(--text-3)}@keyframes sheetUp{0%{transform:translate(-50%,100%)}to{transform:translate(-50%)}}.feedback-head{align-items:center;gap:12px;display:flex}.feedback-icon{border-radius:50%;flex:none;place-items:center;width:38px;height:38px;display:grid;position:relative}.feedback-ok .feedback-icon{background:var(--ok);color:#0b1a13;animation:pop .42s var(--spring) both}.feedback-bad .feedback-icon{background:var(--bad-soft);color:var(--bad);border:1px solid var(--bad-line)}.feedback-neutral .feedback-icon{background:var(--surface-3);color:var(--text-2)}.feedback-icon svg{position:relative}.draw{stroke-dasharray:24;stroke-dashoffset:24px;animation:draw .32s var(--ease) .12s forwards}@keyframes draw{to{stroke-dashoffset:0}}@keyframes pop{0%{transform:scale(.55)}60%{transform:scale(1.12)}to{transform:scale(1)}}.burst{border:2px solid var(--ok);animation:burst .6s var(--ease) both;border-radius:50%;position:absolute;top:0;bottom:0;left:0;right:0}@keyframes burst{0%{opacity:.8;transform:scale(.7)}to{opacity:0;transform:scale(2.1)}}.feedback-title{font-family:var(--font-display);flex:1;font-size:1.75rem;line-height:1.1}.xp-chip{background:var(--accent-soft);border:1px solid var(--accent-line);color:var(--accent-text);animation:chipIn .4s var(--spring) .15s both;border-radius:999px;align-items:center;gap:4px;padding:5px 10px;font-size:.8125rem;font-weight:700;display:inline-flex}@keyframes chipIn{0%{opacity:0;transform:translateY(8px)scale(.9)}to{opacity:1;transform:none}}.feedback-answer{flex-direction:column;gap:4px;display:flex}.feedback-label{letter-spacing:.1em;text-transform:uppercase;color:var(--text-3);font-size:.6875rem;font-weight:600}.feedback-expected{justify-content:space-between;align-items:center;gap:10px;font-size:1.125rem;font-weight:600;display:flex}.feedback-explain{color:var(--text-2);font-size:.9375rem;line-height:1.45}.feedback-note{color:var(--gold);font-size:.875rem}.feedback-actions{gap:10px;margin-top:4px;display:flex}.saving{z-index:50;left:50%;bottom:calc(24px + var(--safe-b));background:var(--surface-2);border:1px solid var(--line-strong);border-radius:999px;align-items:center;gap:10px;padding:12px 18px;font-size:.875rem;display:inline-flex;position:fixed;transform:translate(-50%)}.spinner{border:2px solid var(--surface-3);border-top-color:var(--accent-text);border-radius:50%;width:16px;height:16px;animation:.8s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}.results{padding-top:calc(var(--safe-t) + 18px);gap:18px}.results-top{justify-content:space-between;align-items:center;min-height:32px;display:flex}.skip-btn{min-height:36px}.results-title{font-size:2.5rem}.score-block{text-align:center;flex-direction:column;align-items:center;gap:10px;padding:10px 0 4px;display:flex}.score-num{font-family:var(--font-display);color:var(--text);font-size:4.5rem;line-height:1}.score-of{font-family:var(--font-display);color:var(--text-3);margin-left:2px;font-size:1.5rem}.score-label{font-size:1.0625rem;font-weight:600}.results-stars{margin-top:4px}.results.is-animating .results-stars .star{animation:starIn .46s var(--spring) both}.results.is-animating .results-stars .star:first-child{animation-delay:1s}.results.is-animating .results-stars .star:nth-child(2){animation-delay:1.17s}.results.is-animating .results-stars .star:nth-child(3){animation-delay:1.34s}@keyframes starIn{0%{opacity:0;transform:scale(.3)rotate(-30deg)}to{opacity:1;transform:none}}.badge{border:1px solid var(--accent-line);color:var(--accent-text);border-radius:999px;padding:4px 12px;font-size:.75rem;font-weight:600;display:inline-flex}.badge-gold{border-color:var(--gold-line);color:var(--gold)}.xp-block{border-radius:var(--r-lg);border:1px solid var(--line);background:#ffffff04;flex-direction:column;gap:12px;padding:16px;display:flex}.xp-line{align-items:baseline;gap:6px;display:flex}.xp-big{font-family:var(--font-display);font-size:2.75rem;line-height:1}.xp-unit{letter-spacing:.1em;color:var(--accent-text);font-size:.8125rem;font-weight:700}.results.is-animating .reveal-xp{animation:screenIn .45s var(--ease) 1.45s both}.results.is-animating .reveal-extras{animation:screenIn .45s var(--ease) 1.9s both}.reveal-extras{flex-direction:column;gap:16px;display:flex}.unlock{border-radius:var(--r);border:1px solid var(--accent-line);background:var(--accent-soft);align-items:center;gap:12px;padding:14px;display:flex}.unlock svg{color:var(--accent-text);flex:none}.unlock-world{border-color:var(--gold-line);background:var(--gold-soft)}.unlock-world svg{color:var(--gold)}.unlock-label{letter-spacing:.1em;text-transform:uppercase;color:var(--text-2);font-size:.6875rem;font-weight:600}.unlock-title{font-weight:600}.ach-earned{flex-wrap:wrap;gap:8px;display:flex}.ach-chip{border:1px solid var(--gold-line);background:var(--gold-soft);color:var(--gold-bright);border-radius:999px;align-items:center;gap:6px;padding:7px 12px;font-size:.875rem;font-weight:600;display:inline-flex}.improve ul{border-top:1px solid var(--line);padding:0;list-style:none}.improve li{border-bottom:1px solid var(--line);flex-direction:column;padding:10px 0;display:flex}.improve-en{font-weight:600}.improve-es{color:var(--text-2);font-size:.875rem}.improve .fine-print{margin-top:8px}.results-actions{flex-direction:column;gap:10px;display:flex}.results-secondary{gap:10px;display:flex}.results-secondary .btn{flex:1}.levelup{z-index:80;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);background:radial-gradient(circle at 50% 42%,#d9c08a1c,#0000 58%),#08090bfa;flex-direction:column;justify-content:center;align-items:center;gap:18px;padding:24px;animation:.35s both luFade;display:flex;position:fixed;top:0;bottom:0;left:0;right:0}@keyframes luFade{0%{opacity:0}}.levelup-inner{width:220px;height:220px;position:relative}.lu-ring{position:absolute;top:0;bottom:0;left:0;right:0}.lu-track{fill:none;stroke:#d9c08a24;stroke-width:1.25px}.lu-arc{fill:none;stroke:var(--gold);stroke-width:2px;stroke-linecap:round;stroke-dasharray:578;stroke-dashoffset:578px;animation:1.5s cubic-bezier(.65,0,.35,1) .25s forwards luDraw}@keyframes luDraw{to{stroke-dashoffset:0}}.lu-center{flex-direction:column;justify-content:center;align-items:center;display:flex;position:absolute;top:0;bottom:0;left:0;right:0}.lu-eyebrow{letter-spacing:.32em;text-transform:uppercase;color:var(--gold);animation:screenIn .6s var(--ease) .7s both;font-size:.6875rem;font-weight:600}.lu-number{font-family:var(--font-display);animation:luNum 1.1s var(--ease) .9s both;font-size:7.5rem;line-height:1}@keyframes luNum{0%{opacity:0;filter:blur(6px);transform:translateY(14px)scale(.92)}to{opacity:1;filter:none;transform:none}}.lu-caption{color:var(--text-2);animation:screenIn .6s var(--ease) 1.9s both}.lu-continue{min-width:200px;animation:screenIn .5s var(--ease) 2.3s both}.lu-skip{top:calc(var(--safe-t) + 12px);min-height:44px;color:var(--text-2);background:0 0;border:0;padding:0 12px;font-size:.875rem;position:absolute;right:16px}.levelup.is-skipped,.levelup.is-skipped *{animation:none!important}.levelup.is-skipped .lu-arc{stroke-dashoffset:0}.level-card{border-radius:var(--r-lg);border:1px solid var(--line-strong);background:linear-gradient(160deg,#1b1e27,#14161c);align-items:center;gap:18px;padding:18px;display:flex}.level-card-num{flex-direction:column;align-items:center;min-width:70px;display:flex}.level-big{font-family:var(--font-display);font-size:4rem;line-height:.95}.level-card-body{flex-direction:column;flex:1;gap:8px;display:flex}.level-card-xp{font-weight:600}.metric-grid{border-radius:var(--r);border:1px solid var(--line);background:var(--line);grid-template-columns:1fr 1fr;gap:1px;display:grid;overflow:hidden}.metric{background:var(--bg-raise);min-width:0;padding:14px}.metric dt{color:var(--text-3);font-size:.75rem;line-height:1.3}.metric dd{margin-top:4px}.metric-value{font-family:var(--font-display);font-size:1.875rem;line-height:1}.metric-unit{color:var(--text-2);font-size:.8125rem}.vocab-bar{background:var(--surface-2);border-radius:999px;gap:2px;height:10px;display:flex;overflow:hidden}.vb{flex-basis:0;min-width:0}.vb-mastered{background:var(--gold)}.vb-learning{background:var(--accent)}.vb-new{background:var(--surface-3)}.legend{color:var(--text-2);flex-wrap:wrap;gap:6px 16px;padding:10px 0 6px;font-size:.8125rem;list-style:none;display:flex}.legend li{align-items:center;gap:6px;display:flex}.dot{border-radius:50%;width:8px;height:8px}.dot-mastered{background:var(--gold)}.dot-learning{background:var(--accent)}.dot-new{background:var(--surface-3)}.concept-list,.ach-list,.history{border-top:1px solid var(--line);padding:0;list-style:none}.concept-list li{border-bottom:1px solid var(--line);justify-content:space-between;align-items:center;gap:12px;padding:12px 0;display:flex}.concept-en{font-weight:600}.concept-es{color:var(--text-2);font-size:.875rem}.ach{border-bottom:1px solid var(--line);gap:14px;padding:14px 0;display:flex}.ach-icon{border:1px solid var(--line-strong);width:42px;height:42px;color:var(--text-3);border-radius:50%;flex:none;place-items:center;display:grid}.ach.is-earned .ach-icon{border-color:var(--gold-line);background:var(--gold-soft);color:var(--gold)}.ach-body{flex-direction:column;flex:1;gap:2px;min-width:0;display:flex}.ach-title{font-weight:600}.ach:not(.is-earned) .ach-title{color:var(--text-2)}.ach-desc{color:var(--text-3);font-size:.875rem}.ach-date{color:var(--gold);font-size:.75rem}.ach-progress{align-items:center;gap:10px;margin-top:6px;display:flex}.ach-progress .bar{flex:1}.history-row{border:0;border-bottom:1px solid var(--line);text-align:left;background:0 0;grid-template-columns:56px 1fr auto auto 42px;align-items:center;gap:10px;width:100%;min-height:52px;padding:8px 0;font-size:.875rem;display:grid}.history-date{color:var(--text-3);font-size:.75rem}.history-title{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.history-score{font-weight:600}.history-xp{text-align:right;color:var(--accent-text);font-size:.8125rem}.settings-group{border-bottom:1px solid var(--line);flex-direction:column;gap:4px;padding-bottom:18px;display:flex}.setting-row{justify-content:space-between;align-items:center;gap:16px;min-height:56px;padding:8px 0;display:flex}.setting-row-stack{flex-direction:column;align-items:stretch;gap:10px}.setting-row.is-disabled .setting-label{color:var(--text-3)}.setting-text{flex:1;min-width:0}.setting-label{font-size:.9375rem;font-weight:600;display:block}.setting-desc{color:var(--text-2);font-size:.875rem;line-height:1.45}.switch{background:0 0;border:0;flex:none;place-items:center;width:60px;height:44px;padding:0;display:grid}.switch-track{border:1px solid var(--line-strong);background:var(--surface-3);border-radius:999px;width:52px;height:32px;transition:background-color .2s;display:block;position:relative}.switch-thumb{width:24px;height:24px;transition:transform .22s var(--ease);background:#d5d6da;border-radius:50%;position:absolute;top:3px;left:3px;box-shadow:0 2px 6px #0006}.switch[aria-checked=true] .switch-track{background:var(--accent);border-color:#0000}.switch[aria-checked=true] .switch-thumb{background:#fff;transform:translate(20px)}.switch[disabled]{opacity:.4}.segmented{background:var(--surface-1);border:1px solid var(--line-strong);border-radius:12px;padding:3px;display:flex}.segment{min-height:42px;color:var(--text-2);white-space:nowrap;background:0 0;border:0;border-radius:9px;flex:1;padding:0 6px;font-size:.8125rem;font-weight:600}.segment[aria-checked=true]{background:var(--surface-3);color:var(--text);box-shadow:inset 0 1px #ffffff0f}.select{border:1px solid var(--line-strong);background:var(--surface-1);border-radius:12px;width:100%;min-height:48px;padding:0 12px;font-size:.9375rem}.steps{color:var(--text-2);flex-direction:column;gap:6px;padding-left:20px;font-size:.9375rem;display:flex}.steps svg{vertical-align:-3px}.data-actions{flex-direction:column;gap:10px;margin-top:10px;display:flex}.form-error{color:var(--bad);font-size:.875rem}.scrim{z-index:90;padding:16px 16px calc(16px + var(--safe-b));background:#050608b8;justify-content:center;align-items:flex-end;animation:.2s both luFade;display:flex;position:fixed;top:0;bottom:0;left:0;right:0}.dialog{border-radius:var(--r-lg);border:1px solid var(--line-strong);width:min(100%,440px);animation:screenIn .25s var(--ease) both;background:#1a1c23;padding:22px 18px 18px;box-shadow:0 30px 80px -20px #000000e6}.dialog-title{font-family:var(--font-display);font-size:1.75rem;font-weight:400;line-height:1.1}.dialog-body{color:var(--text-2);margin-top:10px;font-size:.9375rem}.dialog-actions{gap:10px;margin-top:20px;display:flex}.dialog-actions .btn{flex:1}@media (max-width:359px){.greeting-es,.mission-title,.results-title{font-size:2.125rem}.display{font-size:2.375rem}.stat-row{grid-template-columns:1fr 1fr}.stat-row .stat:first-child{grid-column:span 2}.prompt{font-size:1.25rem}.segment{font-size:.75rem}.history-row{grid-template-columns:48px 1fr auto 38px}.history-row .stars{display:none}}@media (orientation:landscape) and (max-height:500px){.tile-answer{min-height:64px}.audio-big .audio-btn{width:60px;height:60px}}html[data-motion=reduced] *,html[data-motion=reduced] :before,html[data-motion=reduced] :after{scroll-behavior:auto!important;transition-duration:1ms!important;animation-duration:1ms!important;animation-iteration-count:1!important;animation-delay:0s!important}@media (prefers-reduced-motion:reduce){html:not([data-motion=full]) *,html:not([data-motion=full]) :before,html:not([data-motion=full]) :after{transition-duration:1ms!important;animation-duration:1ms!important;animation-iteration-count:1!important;animation-delay:0s!important}}
