:root{--paper:#f4f6fa;--card:#fff;--ink:#172036;--muted:#5e6a85;--line:#dde2ec;--voice:#4a3aff;--voice-soft:#e9e7ff;--on-voice:#fff;--slip:#d92d57;--slip-soft:#fde8ee;--clear:#0c8f6f;--clear-soft:#e1f5ef;--shadow:0 1px 2px #1720360f, 0 8px 24px #1720360f;--font-display:"Bricolage Grotesque", "Atkinson Hyperlegible Next", system-ui, sans-serif;--font-body:"Atkinson Hyperlegible Next", "Atkinson Hyperlegible", system-ui, sans-serif;--font-ipa:"Noto Sans", "Atkinson Hyperlegible Next", system-ui, sans-serif;--gutter:16px;--max:540px;--dock:132px;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}@media (prefers-color-scheme:dark){:root:not([data-theme=light]){--paper:#0d1220;--card:#161d30;--ink:#e9edf6;--muted:#9aa5c0;--line:#273149;--voice:#8b7dff;--voice-soft:#241f4d;--on-voice:#0d1220;--slip:#ff6b8d;--slip-soft:#3a1a26;--clear:#3ad2a8;--clear-soft:#10302a;--shadow:0 1px 2px #0000004d, 0 8px 24px #00000040;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}}:root[data-theme=dark]{--paper:#0d1220;--card:#161d30;--ink:#e9edf6;--muted:#9aa5c0;--line:#273149;--voice:#8b7dff;--voice-soft:#241f4d;--on-voice:#0d1220;--slip:#ff6b8d;--slip-soft:#3a1a26;--clear:#3ad2a8;--clear-soft:#10302a;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}*,:before,:after{box-sizing:border-box}html{-webkit-text-size-adjust:100%}body{background:var(--paper);color:var(--ink);font:17px/1.5 var(--font-body);-webkit-font-smoothing:antialiased;min-height:100dvh;margin:0}button,input,select{font:inherit;color:inherit}button{cursor:pointer}a{color:inherit}:focus-visible{outline:3px solid var(--voice);outline-offset:2px}.ipa{font-family:var(--font-ipa)}.page{max-width:var(--max);padding:20px var(--gutter) calc(96px + env(safe-area-inset-bottom));margin:0 auto}.page-title{font:700 2rem/1.1 var(--font-display);letter-spacing:-.02em;margin:8px 0 4px}.lede{color:var(--muted);margin:0 0 20px}.section-title{font:600 1.15rem/1.3 var(--font-display);margin:28px 0 10px}.btn{background:var(--voice);min-height:52px;color:var(--on-voice);border:0;border-radius:999px;justify-content:center;align-items:center;gap:8px;padding:0 22px;font-weight:700;text-decoration:none;transition:transform .1s;display:inline-flex}.btn:active{transform:scale(.98)}.btn[disabled]{opacity:.5;cursor:not-allowed}.btn-block{width:100%}.btn-quiet{background:var(--voice-soft);color:var(--voice)}.btn-ghost{color:var(--ink);border:1.5px solid var(--line);background:0 0}.icon-btn{background:0 0;border:0;border-radius:50%;place-items:center;width:44px;height:44px;display:inline-grid}.tabbar{padding:8px var(--gutter) calc(8px + env(safe-area-inset-bottom));background:color-mix(in srgb, var(--paper) 88%, transparent);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);border-top:1px solid var(--line);z-index:10;justify-content:center;gap:8px;display:flex;position:fixed;inset:auto 0 0}.tab{color:var(--muted);border-radius:14px;flex-direction:column;flex:0 140px;align-items:center;gap:2px;padding:6px 0;font-size:.8rem;font-weight:700;text-decoration:none;display:flex}.tab[aria-current=page]{color:var(--voice);background:var(--voice-soft)}.hello{justify-content:space-between;align-items:flex-start;gap:12px;display:flex}.streak{background:var(--card);min-width:64px;box-shadow:var(--shadow);border-radius:16px;flex-direction:column;align-items:center;padding:8px 10px;display:flex}.streak b{font:800 1.6rem/1 var(--font-display)}.streak small{color:var(--muted);font-size:.75rem}.streak[data-hot=true] b{color:var(--voice)}.lesson{background:var(--voice);color:var(--on-voice);border-radius:28px;margin-top:16px;padding:22px 20px}.lesson-when{opacity:.85;margin:0;font-size:.9rem}.lesson h2{font:700 1.6rem/1.15 var(--font-display);letter-spacing:-.01em;margin:6px 0 4px}.lesson p{opacity:.92;margin:0 0 18px}.lesson .btn{background:var(--on-voice);color:var(--voice)}.modes{grid-template-columns:1fr 1fr;gap:12px;margin-top:12px;display:grid}.mode{background:var(--card);box-shadow:var(--shadow);border-radius:20px;flex-direction:column;gap:4px;min-height:112px;padding:16px;text-decoration:none;display:flex}.mode strong{font:600 1.05rem/1.25 var(--font-display)}.mode span{color:var(--muted);font-size:.9rem;line-height:1.35}.scenario-list{gap:8px;margin:0;padding:0;list-style:none;display:grid}.scenario-list a{background:var(--card);border:1px solid var(--line);border-radius:16px;justify-content:space-between;align-items:center;gap:12px;padding:14px 16px;text-decoration:none;display:flex}.scenario-list small{color:var(--muted);display:block}.notice{background:var(--voice-soft);color:var(--ink);border-radius:14px;margin:12px 0 0;padding:10px 14px;font-size:.9rem}.choice-grid{gap:10px;display:grid}.choice{text-align:left;border:2px solid var(--line);background:var(--card);border-radius:18px;flex-direction:column;align-items:flex-start;gap:2px;padding:16px 18px;display:flex}.choice[aria-pressed=true]{border-color:var(--voice);background:var(--voice-soft)}.choice strong{font:600 1.1rem/1.3 var(--font-display)}.choice span{color:var(--muted);font-size:.92rem}.segmented{grid-template-columns:1fr 1fr;gap:8px;display:grid}.field{flex-direction:column;gap:6px;margin-top:8px;display:flex}.field input{border:2px solid var(--line);background:var(--card);border-radius:14px;min-height:52px;padding:0 14px;font-size:1.2rem}.steps{gap:6px;margin-bottom:18px;display:flex}.steps i{background:var(--line);border-radius:2px;flex:1;height:4px}.steps i[data-on=true]{background:var(--voice)}.actions{gap:10px;margin-top:24px;display:flex}.actions .btn{flex:1}.talk{height:100dvh;max-width:var(--max);flex-direction:column;margin:0 auto;display:flex}.talk-head{padding:10px 8px 10px var(--gutter);border-bottom:1px solid var(--line);align-items:center;gap:8px;display:flex}.talk-head h1{font:600 1.05rem/1.2 var(--font-display);margin:0}.talk-head p{color:var(--muted);margin:0;font-size:.85rem}.talk-head .grow{flex:1;min-width:0}.chat{padding:16px var(--gutter) 24px;flex-direction:column;flex:1;gap:12px;display:flex;overflow-y:auto}.bubble{border-radius:22px;max-width:86%;padding:12px 16px;line-height:1.45}.bubble.coach{background:var(--card);box-shadow:var(--shadow);border-bottom-left-radius:6px;align-self:flex-start}.bubble.user{background:var(--voice-soft);border-bottom-right-radius:6px;align-self:flex-end}.bubble-meta{color:var(--muted);justify-content:flex-end;align-items:center;gap:8px;margin-top:6px;font-size:.8rem;display:flex}.score-chip{font:700 .8rem/1 var(--font-display);background:var(--clear-soft);color:var(--clear);border-radius:999px;flex:none;padding:4px 8px}.score-chip[data-low=true]{background:var(--slip-soft);color:var(--slip)}.slip{color:var(--slip);-webkit-text-decoration:underline wavy var(--slip);text-decoration:underline wavy var(--slip);text-underline-offset:4px;background:0 0;border:0;border-radius:4px;margin:0 -2px;padding:0 2px;font-weight:700;text-decoration-thickness:1.5px;display:inline}.slip:hover,.slip:focus-visible{background:var(--slip-soft)}.speak-again{color:var(--muted);background:0 0;border:0;padding:4px 0 0;font-size:.8rem;text-decoration:underline}.dock{padding:12px var(--gutter) calc(14px + env(safe-area-inset-bottom));border-top:1px solid var(--line);background:var(--paper);justify-items:center;gap:6px;display:grid;position:relative}.dock-hint{min-height:1.4em;color:var(--muted);text-align:center;margin:0;font-size:.9rem}.dock-hint[data-error=true]{color:var(--slip)}.dock-row{grid-template-columns:1fr auto 1fr;align-items:center;width:100%;display:grid}.dock-row>:first-child{justify-self:start}.dock-row>:last-child{justify-self:end}.small-btn{border:1.5px solid var(--line);background:var(--card);border-radius:999px;min-height:40px;padding:0 14px;font-size:.9rem;font-weight:700}.mic{--level:0;background:var(--voice);width:84px;height:84px;color:var(--on-voice);box-shadow:0 6px 20px color-mix(in srgb, var(--voice) 35%, transparent);border:0;border-radius:50%;place-items:center;display:grid;position:relative}.mic:before{content:"";border:3px solid var(--voice);opacity:0;transform:scale(calc(.9 + var(--level) * .45));border-radius:50%;transition:transform 80ms linear,opacity .2s;position:absolute;inset:-10px}.mic[data-state=recording]{background:var(--slip)}.mic[data-state=recording]:before{opacity:.5;border-color:var(--slip)}.mic[data-state=processing],.mic[data-state=requesting]{opacity:.75}.mic svg{width:34px;height:34px}.spinner{border:3px solid;border-right-color:#0000;border-radius:50%;width:30px;height:30px;animation:.8s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}.typing{gap:4px;display:inline-flex}.typing i{background:var(--muted);border-radius:50%;width:7px;height:7px;animation:1.2s infinite blink}.typing i:nth-child(2){animation-delay:.2s}.typing i:nth-child(3){animation-delay:.4s}@keyframes blink{0%,80%,to{opacity:.25}40%{opacity:1}}.scrim{z-index:40;background:#0a0e1a73;animation:.15s ease-out fade;position:fixed;inset:0}.sheet{max-width:var(--max);padding:10px 20px calc(24px + env(safe-area-inset-bottom));background:var(--card);z-index:41;border-radius:28px 28px 0 0;max-height:88dvh;margin:0 auto;animation:.2s ease-out rise;position:fixed;inset:auto 0 0;overflow-y:auto}.sheet-grip{background:var(--line);border-radius:3px;width:40px;height:5px;margin:0 auto 14px}.sheet h2{font:700 1.8rem/1.1 var(--font-display);margin:0}.compare{grid-template-columns:1fr 1fr;gap:10px;margin:16px 0;display:grid}.compare>div{border-radius:18px;padding:14px}.compare .said{background:var(--slip-soft)}.compare .expected{background:var(--clear-soft)}.compare small{color:var(--muted);margin-bottom:4px;font-size:.8rem;display:block}.compare b{font:700 1.25rem/1.2 var(--font-display);word-break:break-word}.compare .said b{color:var(--slip)}.compare .expected b{color:var(--clear)}.compare .ipa{color:var(--muted);margin-top:4px;font-size:.9rem;display:block}.tip{border:1.5px solid var(--line);border-radius:18px;align-items:flex-start;gap:12px;margin-bottom:16px;padding:14px 16px;display:flex}.tip .ipa{color:var(--voice);font-size:1.4rem;font-weight:700;line-height:1.2}.tip p{margin:0}.listen-row{grid-template-columns:1fr 1fr;gap:10px;display:grid}@keyframes rise{0%{opacity:0;transform:translateY(24px)}}@keyframes fade{0%{opacity:0}}.summary{text-align:center;padding-top:24px}.big-score{font:800 5rem/1 var(--font-display);letter-spacing:-.04em;color:var(--voice)}.big-score small{font-size:1.6rem}.takeaway{text-align:left;background:var(--card);box-shadow:var(--shadow);border-radius:24px;margin:24px 0;padding:20px}.takeaway strong{font:700 1.25rem/1.25 var(--font-display);color:var(--voice);margin-bottom:6px;display:block}.takeaway p{margin:0}.stat-row{color:var(--muted);justify-content:center;gap:28px;display:flex}.stat-row b{font:700 1.4rem/1.1 var(--font-display);color:var(--ink);display:block}.shadow-card{background:var(--card);box-shadow:var(--shadow);text-align:center;border-radius:28px;margin:16px 0;padding:24px 20px}.shadow-sentence{font:600 1.5rem/1.3 var(--font-display);letter-spacing:-.01em;margin:6px 0 18px}.progress-dots{justify-content:center;gap:6px;display:flex}.progress-dots i{background:var(--line);border-radius:50%;width:8px;height:8px}.progress-dots i[data-state=done]{background:var(--clear)}.progress-dots i[data-state=now]{background:var(--voice)}.verdict{font:700 1.3rem/1.2 var(--font-display);margin:0 0 4px}.verdict[data-pass=true]{color:var(--clear)}.verdict[data-pass=false]{color:var(--slip)}.kpis{grid-template-columns:repeat(3,1fr);gap:10px;display:grid}.kpi{background:var(--card);box-shadow:var(--shadow);border-radius:18px;padding:14px 12px}.kpi b{font:800 1.7rem/1.1 var(--font-display);display:block}.kpi small{color:var(--muted);font-size:.8rem}.chart{width:100%;height:auto;display:block}.chart-wrap{background:var(--card);box-shadow:var(--shadow);border-radius:20px;padding:14px}.heat{gap:4px;font-size:.85rem;display:grid}.heat-row{grid-template-columns:64px repeat(var(--weeks), 1fr);align-items:center;gap:4px;display:grid}.heat-row .ipa{font-size:1rem;font-weight:700}.heat-cell{background:color-mix(in srgb, var(--slip) calc(var(--v) * 100%), var(--line));border-radius:6px;height:28px}.heat-axis{color:var(--muted);text-align:center;font-size:.75rem}.words{gap:8px;margin:0;padding:0;list-style:none;display:grid}.word-item{background:var(--card);border:1px solid var(--line);border-radius:16px;align-items:center;gap:12px;padding:12px 14px;display:flex}.word-item .grow{flex:1;min-width:0}.word-item strong{font:600 1.05rem/1.2 var(--font-display)}.word-item small{color:var(--muted);display:block}.misses{font:700 .8rem/1 var(--font-display);color:var(--slip)}.history{gap:8px;margin:0;padding:0;list-style:none;display:grid}.history details{background:var(--card);border:1px solid var(--line);border-radius:16px;padding:12px 14px}.history summary{cursor:pointer;justify-content:space-between;align-items:center;gap:12px;list-style:none;display:flex}.history summary small{color:var(--muted);display:block}.history ol{color:var(--muted);margin:10px 0 0;padding-left:18px}.empty{border:1.5px dashed var(--line);color:var(--muted);text-align:center;border-radius:20px;padding:24px 18px}@media (prefers-reduced-motion:reduce){*,:before,:after{transition:none!important;animation:none!important}}
