@font-face{font-family:Be Vietnam Pro;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/be-vietnam-pro-vietnamese-400-normal-CRcqvyg1.woff2)format("woff2"),url(/assets/be-vietnam-pro-vietnamese-400-normal-BuGn0gnm.woff)format("woff")}@font-face{font-family:Be Vietnam Pro;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/be-vietnam-pro-vietnamese-500-normal-DREgrEoJ.woff2)format("woff2"),url(/assets/be-vietnam-pro-vietnamese-500-normal-CfdwVo8-.woff)format("woff")}@font-face{font-family:Be Vietnam Pro;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/be-vietnam-pro-vietnamese-600-normal-nyU-ZL2p.woff2)format("woff2"),url(/assets/be-vietnam-pro-vietnamese-600-normal-DkpCIyan.woff)format("woff")}@font-face{font-family:Be Vietnam Pro;font-style:normal;font-display:swap;font-weight:700;src:url(/assets/be-vietnam-pro-vietnamese-700-normal-Csr0PCuG.woff2)format("woff2"),url(/assets/be-vietnam-pro-vietnamese-700-normal-By_5yT39.woff)format("woff")}@font-face{font-family:Be Vietnam Pro;font-style:normal;font-display:swap;font-weight:800;src:url(/assets/be-vietnam-pro-vietnamese-800-normal-D4LFh2W4.woff2)format("woff2"),url(/assets/be-vietnam-pro-vietnamese-800-normal-CA0HL1e4.woff)format("woff")}@font-face{font-family:Be Vietnam Pro;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/be-vietnam-pro-latin-400-normal-PpnXBOrz.woff2)format("woff2"),url(/assets/be-vietnam-pro-latin-400-normal-bXgqVju9.woff)format("woff")}@font-face{font-family:Be Vietnam Pro;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/be-vietnam-pro-latin-500-normal-B6LVzGNe.woff2)format("woff2"),url(/assets/be-vietnam-pro-latin-500-normal-BJkVuMHw.woff)format("woff")}@font-face{font-family:Be Vietnam Pro;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/be-vietnam-pro-latin-600-normal-BZDkUTrt.woff2)format("woff2"),url(/assets/be-vietnam-pro-latin-600-normal-5IO4e7bK.woff)format("woff")}@font-face{font-family:Be Vietnam Pro;font-style:normal;font-display:swap;font-weight:700;src:url(/assets/be-vietnam-pro-latin-700-normal-DlW1Zbsh.woff2)format("woff2"),url(/assets/be-vietnam-pro-latin-700-normal-C2EtzaOi.woff)format("woff")}@font-face{font-family:Be Vietnam Pro;font-style:normal;font-display:swap;font-weight:800;src:url(/assets/be-vietnam-pro-latin-800-normal-BpHZASpI.woff2)format("woff2"),url(/assets/be-vietnam-pro-latin-800-normal-Cwp5p0gU.woff)format("woff")}:root{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;--bg:#f5f4fb;--bg-deco:radial-gradient(1200px 600px at 10% -10%, #e9e6ff 0%, transparent 60%), radial-gradient(900px 500px at 110% 10%, #ffe9df 0%, transparent 55%);--surface:#fff;--surface-2:#f1f0f8;--surface-3:#e7e6f2;--line:#e7e5f1;--text:#17162b;--text-2:#5b5973;--text-3:#8e8ca5;--primary:#4338ca;--primary-2:#6d5df6;--on-primary:#fff;--primary-soft:#ecebff;--on-primary-soft:#2a2290;--teal:#0e9f8e;--teal-soft:#d6f5ef;--on-teal-soft:#065e55;--amber:#d97706;--amber-soft:#fff1d9;--on-amber-soft:#7a4300;--spice:#f04e23;--spice-2:#ff8a3d;--spice-soft:#ffeae2;--on-spice-soft:#7a1f06;--good:#16a34a;--good-soft:#ddf7e6;--on-good-soft:#0f5130;--bad:#dc2626;--bad-soft:#fde4e2;--on-bad-soft:#7f1d1d;--streak:#f97316;--shadow-sm:0 1px 2px #17162b0f, 0 1px 1px #17162b08;--shadow-md:0 10px 30px -12px #2e228c40;--shadow-lg:0 24px 60px -20px #2e228c59;--card-border:1px solid transparent;--r-xl:28px;--r-lg:22px;--r:16px;--r-sm:12px;--font:"Be Vietnam Pro", system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;--safe-b:env(safe-area-inset-bottom,0px);--safe-t:env(safe-area-inset-top,0px);--tabbar-h:68px}:root[data-theme=dark]{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--bg:#0e0e16;--bg-deco:radial-gradient(1000px 500px at 0% -10%, #1d1a44 0%, transparent 60%), radial-gradient(800px 500px at 110% 0%, #2a1410 0%, transparent 55%);--surface:#181826;--surface-2:#202030;--surface-3:#2a2a3c;--line:#2a2a3c;--text:#eeedf7;--text-2:#aba9c2;--text-3:#75738c;--primary:#8b83ff;--primary-2:#b18cff;--on-primary:#14123a;--primary-soft:#25224f;--on-primary-soft:#dad7ff;--teal:#34d3be;--teal-soft:#12332f;--on-teal-soft:#9df0e2;--amber:#fbbf24;--amber-soft:#3a2a0c;--on-amber-soft:#fde3a7;--spice:#ff7a50;--spice-2:#ffa25c;--spice-soft:#3b1a11;--on-spice-soft:#ffd3c4;--good:#4ade80;--good-soft:#12301f;--on-good-soft:#b7f5cd;--bad:#f87171;--bad-soft:#3a1517;--on-bad-soft:#fecaca;--streak:#fb923c;--shadow-sm:none;--shadow-md:0 10px 30px -12px #0009;--shadow-lg:0 24px 60px -20px #000000b3;--card-border:1px solid var(--line)}*,:before,:after{box-sizing:border-box}html{-webkit-text-size-adjust:100%;-webkit-tap-highlight-color:transparent}body{font-family:var(--font);color:var(--text);background:var(--bg);background-image:var(--bg-deco);-webkit-font-smoothing:antialiased;text-rendering:optimizelegibility;background-attachment:fixed;margin:0;font-size:16px;line-height:1.5}button,input,textarea,select{font:inherit;color:inherit}button{cursor:pointer;background:0 0;border:none;padding:0}button:disabled{cursor:default}:focus-visible{outline:3px solid color-mix(in srgb, var(--primary) 55%, transparent);outline-offset:2px}h1,h2,h3,p{margin:0}.app{max-width:520px;min-height:100dvh;margin:0 auto;position:relative}@media (width>=560px){.app{box-shadow:0 0 0 1px var(--line), var(--shadow-lg);background:var(--bg)}}.screen{min-height:100dvh;padding:calc(var(--safe-t) + 16px) 16px calc(var(--safe-b) + 32px);animation:.28s cubic-bezier(.2,.8,.2,1) screen-in}.screen.with-tabs{padding-bottom:calc(var(--safe-b) + var(--tabbar-h) + 28px)}.screen.flush{padding-top:0}@keyframes screen-in{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}.stack{flex-direction:column;gap:14px;display:flex}.stack.tight{gap:10px}.row{align-items:center;gap:12px;display:flex}.row.wrap{flex-wrap:wrap}.grow{flex:1;min-width:0}.center{text-align:center}.muted{color:var(--text-2)}.faint{color:var(--text-3)}.t-display{letter-spacing:-.02em;font-size:40px;font-weight:800;line-height:1.1}.t-h1{letter-spacing:-.02em;font-size:28px;font-weight:800;line-height:1.2}.t-h2{letter-spacing:-.01em;font-size:22px;font-weight:700;line-height:1.25}.t-h3{font-size:18px;font-weight:700;line-height:1.3}.t-title{font-size:16px;font-weight:600;line-height:1.35}.t-body{font-size:15px;line-height:1.55}.t-small{font-size:13px;line-height:1.45}.t-label{letter-spacing:.04em;text-transform:uppercase;font-size:12px;font-weight:600;line-height:1.3}.t-en{font-weight:600}.ipa{color:var(--text-2);font-family:Segoe UI,Noto Sans,Lucida Sans Unicode,sans-serif}.card{background:var(--surface);border-radius:var(--r-lg);box-shadow:var(--shadow-sm);border:var(--card-border);padding:16px}.card.lg{border-radius:var(--r-xl);padding:20px}.card.tap{text-align:left;width:100%;transition:transform .15s,box-shadow .15s}.card.tap:not(.row):not(.shortcut){display:block}.card.tap:active{transform:scale(.985)}@media (hover:hover){.card.tap:hover{box-shadow:var(--shadow-md)}}.card.flat{background:var(--surface-2);box-shadow:none;border:none}.divider{background:var(--line);height:1px;margin:4px 0}.btn{border-radius:var(--r);background:var(--primary);min-height:52px;color:var(--on-primary);box-shadow:0 6px 16px -6px color-mix(in srgb, var(--primary) 70%, transparent);white-space:nowrap;justify-content:center;align-items:center;gap:8px;padding:0 22px;font-size:16px;font-weight:700;transition:transform .12s,filter .12s,opacity .12s;display:inline-flex}.btn:active:not(:disabled){transform:translateY(1px)scale(.99)}.btn:disabled{opacity:.4;box-shadow:none}.btn.block{width:100%}.btn.sm{border-radius:var(--r-sm);min-height:40px;padding:0 16px;font-size:14px}.btn.soft{background:var(--primary-soft);color:var(--on-primary-soft);box-shadow:none}.btn.ghost{color:var(--primary);box-shadow:none;background:0 0}.btn.outline{background:var(--surface);color:var(--text);box-shadow:inset 0 0 0 1.5px var(--line)}.btn.good{background:var(--good);color:#fff;box-shadow:0 6px 16px -6px color-mix(in srgb, var(--good) 70%, transparent)}.btn.bad{background:var(--bad);color:#fff;box-shadow:0 6px 16px -6px color-mix(in srgb, var(--bad) 70%, transparent)}.btn.spice{background:linear-gradient(135deg, var(--spice), var(--spice-2));color:#fff;box-shadow:0 8px 20px -8px color-mix(in srgb, var(--spice) 80%, transparent)}:root[data-theme=dark] .btn.good,:root[data-theme=dark] .btn.bad{color:#0e0e16}.icon-btn{background:var(--teal-soft);width:44px;height:44px;color:var(--on-teal-soft);border-radius:50%;flex:none;place-items:center;transition:transform .12s,background .15s,color .15s;display:inline-grid}.icon-btn:active:not(:disabled){transform:scale(.92)}.icon-btn.on{background:var(--teal);color:#fff;animation:1.2s ease-in-out infinite pulse}:root[data-theme=dark] .icon-btn.on{color:#0e0e16}.icon-btn.mic{background:var(--amber-soft);color:var(--on-amber-soft)}.icon-btn.mic.on{background:var(--amber);color:#fff}.icon-btn.plain{color:var(--text);background:0 0}.icon-btn.plain:hover{background:var(--surface-2)}.icon-btn:disabled{opacity:.4}.icon-btn .emoji{font-size:.48em;line-height:1}@keyframes pulse{0%,to{box-shadow:0 0 0 0 color-mix(in srgb, var(--teal) 45%, transparent)}50%{box-shadow:0 0 0 8px color-mix(in srgb, var(--teal) 0%, transparent)}}.link{color:var(--primary);padding:8px 4px;font-size:14px;font-weight:600}.chip{background:var(--surface-2);color:var(--text-2);white-space:nowrap;border-radius:999px;align-items:center;gap:6px;padding:4px 10px;font-size:12px;font-weight:700;display:inline-flex}.chip.level{letter-spacing:.02em;border-radius:7px;padding:2px 7px;font-size:11px}.chip.A1{color:#17643a;background:#dcf7e3}.chip.A2{color:#0b5370;background:#dbeffa}.chip.B1{color:#7a4300;background:#ffedd2}.chip.B2{color:#8c1d2e;background:#ffe0e6}:root[data-theme=dark] .chip.A1{color:#8ce6ab;background:#12301f}:root[data-theme=dark] .chip.A2{color:#8fd3f1;background:#0f2a38}:root[data-theme=dark] .chip.B1{color:#fbd38d;background:#3a2a0c}:root[data-theme=dark] .chip.B2{color:#fda4b4;background:#3a1520}.chip.good{background:var(--good-soft);color:var(--on-good-soft)}.chip.bad{background:var(--bad-soft);color:var(--on-bad-soft)}.chip.primary{background:var(--primary-soft);color:var(--on-primary-soft)}.chip.amber{background:var(--amber-soft);color:var(--on-amber-soft)}.tile{background:var(--surface-2);border-radius:16px;flex:none;place-items:center;width:52px;height:52px;font-size:26px;line-height:1;display:grid}.tile.sm{border-radius:14px;width:44px;height:44px;font-size:22px}.tile.primary{background:var(--primary-soft);color:var(--primary)}.tile.teal{background:var(--teal-soft);color:var(--teal)}.tile.amber{background:var(--amber-soft);color:var(--amber)}.tile.spice{background:var(--spice-soft);color:var(--spice)}.bar{background:var(--surface-3);border-radius:999px;height:8px;overflow:hidden}.bar>i{border-radius:inherit;background:linear-gradient(90deg, var(--primary), var(--primary-2));height:100%;transition:width .45s cubic-bezier(.2,.8,.2,1);display:block}.bar.good>i{background:var(--good)}.bar.thick{height:12px}.topbar{z-index:20;min-height:60px;padding:calc(var(--safe-t) + 6px) 8px 6px;background:color-mix(in srgb, var(--bg) 82%, transparent);-webkit-backdrop-filter:saturate(1.4)blur(14px);align-items:center;gap:4px;margin:0 -16px 8px;display:flex;position:sticky;top:0}.topbar h1{white-space:nowrap;text-overflow:ellipsis;flex:1;min-width:0;font-size:18px;font-weight:700;overflow:hidden}.page-title{align-items:center;gap:12px;margin:4px 0 10px;display:flex}.page-title h1{flex:1}.session-bar{z-index:20;padding:calc(var(--safe-t) + 8px) 8px 8px;background:color-mix(in srgb, var(--bg) 85%, transparent);-webkit-backdrop-filter:blur(14px);align-items:center;gap:10px;margin:0 -16px 6px;display:flex;position:sticky;top:0}.session-bar .bar{flex:1;height:12px}.session-bar .count{text-align:right;min-width:44px;color:var(--text-2);padding-right:8px;font-size:14px;font-weight:700}.tabbar{z-index:30;width:100%;max-width:520px;padding:6px 6px calc(var(--safe-b) + 6px);background:color-mix(in srgb, var(--surface) 88%, transparent);-webkit-backdrop-filter:saturate(1.6)blur(18px);border-top:1px solid var(--line);grid-template-columns:repeat(5,1fr);display:grid;position:fixed;bottom:0;left:50%;transform:translate(-50%)}.tabbar button{color:var(--text-3);border-radius:14px;flex-direction:column;align-items:center;gap:3px;padding:6px 0 4px;font-size:11px;font-weight:600;transition:color .15s;display:flex}.tabbar button .pill{border-radius:999px;place-items:center;width:52px;height:30px;transition:background .2s;display:grid}.tabbar button.on{color:var(--primary)}.tabbar button.on .pill{background:var(--primary-soft)}.hero{border-radius:var(--r-xl);color:#fff;box-shadow:var(--shadow-md);background:linear-gradient(135deg,#4338ca 0%,#6d5df6 55%,#8b5cf6 100%);padding:20px;position:relative;overflow:hidden}:root[data-theme=dark] .hero{background:linear-gradient(135deg,#2e2794 0%,#4b3fc4 55%,#6a43c9 100%)}.hero:after{content:"";pointer-events:none;background:radial-gradient(circle,#ffffff38,#0000 70%);border-radius:50%;width:220px;height:220px;position:absolute;top:-70px;right:-60px}.hero .greet{letter-spacing:-.01em;font-size:22px;font-weight:800;line-height:1.25}.hero .date{opacity:.8;font-size:14px}.hero .streak{-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);background:#ffffff2e;border-radius:999px;align-items:center;gap:6px;padding:7px 12px 7px 9px;font-size:14px;font-weight:700;display:inline-flex}.hero .goal{background:#ffffff1f;border-radius:20px;align-items:center;gap:16px;margin-top:18px;padding:14px;display:flex}.ring-label{text-align:center;place-content:center;line-height:1.1;display:grid;position:absolute;inset:0}.ring-label b{font-size:22px;font-weight:800}.ring-label small{opacity:.85;font-size:11px;font-weight:600}.tutor-card{border-radius:var(--r-xl);text-align:left;color:#fff;background:linear-gradient(120deg,#f04e23 0%,#ff7a35 60%,#ffa04d 100%);align-items:center;gap:14px;width:100%;min-height:116px;padding:18px 18px 18px 20px;transition:transform .15s;display:flex;position:relative;overflow:hidden;box-shadow:0 14px 30px -14px #f04e23bf}:root[data-theme=dark] .tutor-card{background:linear-gradient(120deg,#b8381a 0%,#d4581f 60%,#e07a2c 100%)}.tutor-card:active{transform:scale(.985)}.tutor-card .mascot{filter:drop-shadow(0 8px 14px #78140059);width:124px;height:124px;position:absolute;bottom:-14px;right:-6px}.tutor-card .copy{max-width:64%;position:relative}.tutor-card .badge{letter-spacing:.06em;text-transform:uppercase;background:#ffffff38;border-radius:999px;margin-bottom:6px;padding:3px 9px;font-size:11px;font-weight:800;display:inline-block}.shortcuts{grid-template-columns:1fr 1fr;gap:12px;display:grid}.shortcut{flex-direction:column;align-items:flex-start;gap:10px;display:flex}.shortcut:disabled{opacity:.55}.word-day .big{letter-spacing:-.01em;font-size:30px;font-weight:800}.example{background:var(--surface-2);border-radius:14px;align-items:center;gap:10px;padding:12px 14px;display:flex}.example .en{font-style:italic;font-weight:500}.search{border-radius:var(--r);background:var(--surface);border:1.5px solid var(--line);height:52px;color:var(--text-3);align-items:center;gap:10px;padding:0 16px;transition:border-color .15s;display:flex}.search:focus-within{border-color:var(--primary)}.search input{min-width:0;color:var(--text);background:0 0;border:none;outline:none;flex:1;font-size:16px}.search input::placeholder{color:var(--text-3)}.word-row{background:var(--surface);border:var(--card-border);width:100%;box-shadow:var(--shadow-sm);text-align:left;border-radius:18px;align-items:center;gap:12px;padding:12px 12px 12px 14px;display:flex}.word-row .dot{background:var(--surface-3);border-radius:50%;flex:none;width:8px;height:8px}.word-row .dot.learning{background:var(--amber)}.word-row .dot.mastered{background:var(--good)}.word-row .w{font-size:17px;font-weight:700}.legend{color:var(--text-2);flex-wrap:wrap;gap:14px;font-size:12px;display:flex}.legend span{align-items:center;gap:6px;display:inline-flex}.legend .dot{border-radius:50%;width:8px;height:8px;display:inline-block}.flip{perspective:1400px;flex:1;min-height:380px;display:flex}.flip-inner{transform-style:preserve-3d;cursor:pointer;flex:1;transition:transform .5s cubic-bezier(.3,.7,.2,1);position:relative}.flip-inner.flipped{transform:rotateY(180deg)}.face{border-radius:var(--r-xl);background:var(--surface);border:var(--card-border);box-shadow:var(--shadow-md);backface-visibility:hidden;text-align:center;flex-direction:column;justify-content:center;align-items:center;padding:24px;display:flex;position:absolute;inset:0;overflow:auto}.face.back{transform:rotateY(180deg)}.face .word{letter-spacing:-.02em;font-size:44px;font-weight:800;line-height:1.1}.face .meaning{color:var(--primary);font-size:26px;font-weight:800;line-height:1.25}.face .hint{color:var(--text-3);font-size:13px;position:absolute;bottom:18px}.rate{grid-template-columns:repeat(4,1fr);gap:8px;display:grid}.rate button{border-radius:var(--r);flex-direction:column;align-items:center;gap:2px;padding:11px 4px;font-size:15px;font-weight:700;transition:transform .12s;display:flex}.rate button small{opacity:.8;font-size:11px;font-weight:600}.rate button:active{transform:scale(.96)}.rate .again{background:var(--bad-soft);color:var(--on-bad-soft)}.rate .hard{background:var(--amber-soft);color:var(--on-amber-soft)}.rate .good{background:var(--good-soft);color:var(--on-good-soft)}.rate .easy{background:var(--primary-soft);color:var(--on-primary-soft)}.quiz{flex-direction:column;display:flex}.instruction{color:var(--text-2);margin-bottom:14px;font-size:15px;font-weight:600}.prompt{letter-spacing:-.01em;font-size:34px;font-weight:800;line-height:1.15}.prompt.long{font-size:22px;font-weight:700;line-height:1.35}.option{border-radius:var(--r);background:var(--surface);border:1.5px solid var(--line);width:100%;min-height:56px;box-shadow:var(--shadow-sm);text-align:left;align-items:center;gap:12px;padding:12px 16px;font-size:16px;font-weight:500;transition:transform .12s,border-color .15s,background .15s;display:flex}.option .key{background:var(--surface-2);width:28px;height:28px;color:var(--text-2);border-radius:9px;flex:none;place-items:center;font-size:13px;font-weight:700;display:grid}@media (hover:hover){.option:hover:not(:disabled){border-color:var(--primary)}}.option:active:not(:disabled){transform:scale(.99)}.option.correct{background:var(--good-soft);border-color:var(--good);color:var(--on-good-soft);animation:.35s pop}.option.correct .key{background:var(--good);color:#fff}.option.wrong{background:var(--bad-soft);border-color:var(--bad);color:var(--on-bad-soft);animation:.35s shake}.option.wrong .key{background:var(--bad);color:#fff}.option.dim{opacity:.45}@keyframes pop{50%{transform:scale(1.025)}}@keyframes shake{20%,60%{transform:translate(-6px)}40%,80%{transform:translate(6px)}}.listen-big{justify-content:center;align-items:center;gap:20px;padding:18px 0 6px;display:flex}.listen-big .icon-btn:first-child{width:104px;height:104px}.listen-big .icon-btn:last-child{width:62px;height:62px}.field{border-radius:var(--r);border:1.5px solid var(--line);background:var(--surface);outline:none;width:100%;height:56px;padding:0 16px;font-size:18px;transition:border-color .15s}.field:focus{border-color:var(--primary)}.hint-pattern{letter-spacing:.18em;color:var(--primary);font-size:20px;font-weight:700}.tokens{flex-wrap:wrap;gap:8px;display:flex}.answer-box{border-radius:var(--r);border:1.5px dashed var(--surface-3);background:var(--surface-2);align-content:flex-start;min-height:116px;padding:12px}.token{background:var(--surface);border:1.5px solid var(--line);box-shadow:0 2px 0 var(--line);border-radius:12px;padding:9px 14px;font-size:16px;font-weight:600;transition:transform .1s,opacity .15s}.token:active:not(:disabled){box-shadow:none;transform:translateY(1px)}.token.used{opacity:.25}.mic-big{background:linear-gradient(135deg, var(--amber), #f59e0b);color:#fff;width:96px;height:96px;box-shadow:0 12px 26px -10px color-mix(in srgb, var(--amber) 85%, transparent);border-radius:50%;place-items:center;margin:0 auto;transition:transform .12s;display:grid}.mic-big.on{animation:1.1s ease-in-out infinite mic-pulse}.mic-big:disabled{opacity:.4}@keyframes mic-pulse{0%,to{box-shadow:0 0 0 0 color-mix(in srgb, var(--amber) 55%, transparent)}50%{box-shadow:0 0 0 16px color-mix(in srgb, var(--amber) 0%, transparent)}}.feedback{margin:auto -16px calc(-32px - var(--safe-b));padding:20px 20px calc(var(--safe-b) + 20px);border-radius:26px 26px 0 0;animation:.28s cubic-bezier(.2,.8,.2,1) sheet-up;position:sticky;bottom:0}.feedback.good{background:var(--good-soft);color:var(--on-good-soft)}.feedback.bad{background:var(--bad-soft);color:var(--on-bad-soft)}.feedback .title{align-items:center;gap:10px;font-size:20px;font-weight:800;display:flex}.feedback .title .badge{color:#fff;border-radius:50%;place-items:center;width:32px;height:32px;display:grid}.feedback.good .badge{background:var(--good)}.feedback.bad .badge{background:var(--bad)}@keyframes sheet-up{0%{opacity:0;transform:translateY(40px)}to{opacity:1;transform:none}}.matched{background:color-mix(in srgb, var(--surface) 70%, transparent);border-radius:12px;padding:10px 12px;font-size:16px;font-weight:600}.matched .ok{color:var(--good)}.matched .miss{color:var(--bad);text-underline-offset:4px;-webkit-text-decoration:underline wavy;text-decoration:underline wavy}.result{text-align:center;padding-top:12px}.result .score-ring{margin:8px auto 4px}.seg{background:var(--surface-2);border-radius:14px;grid-auto-columns:1fr;grid-auto-flow:column;padding:4px;display:grid}.seg button{height:40px;color:var(--text-2);border-radius:11px;font-size:14px;font-weight:600;transition:background .15s,color .15s,box-shadow .15s}.seg button.on{background:var(--surface);color:var(--text);box-shadow:var(--shadow-sm)}:root[data-theme=dark] .seg button.on{background:var(--surface-3)}.note svg,.banner svg,.tip svg{flex:none}.note{background:var(--amber-soft);color:var(--on-amber-soft);border-radius:12px;gap:8px;padding:10px 12px;font-size:13px;line-height:1.5;display:flex}.bubbles{flex-direction:column;gap:8px;display:flex}.bubble{text-align:left;border-radius:20px;max-width:86%;padding:10px 14px;font-size:15px;line-height:1.45;transition:box-shadow .15s}.bubble .who{letter-spacing:.03em;text-transform:uppercase;opacity:.75;font-size:11px;font-weight:700}.bubble.a{background:var(--surface-2);border-bottom-left-radius:6px;align-self:flex-start}.bubble.b{background:var(--primary-soft);color:var(--on-primary-soft);border-bottom-right-radius:6px;align-self:flex-end}.bubble.active{box-shadow:0 0 0 2px var(--primary)}.bubble .vi{opacity:.75;margin-top:2px;font-size:13px}.chat{flex-direction:column;gap:10px;padding-bottom:12px;display:flex}.roast{align-self:flex-start;align-items:flex-start;gap:10px;max-width:92%;display:flex}.roast .avatar{flex:none;width:38px;height:38px}.roast p{background:var(--spice-soft);color:var(--on-spice-soft);border-radius:20px 20px 20px 6px;padding:10px 14px;font-size:15px;font-style:italic;font-weight:500}.roast p.thinking{min-height:42px;color:var(--spice);align-items:center;padding:0 18px;display:flex}.roast>.icon-btn{background:var(--spice-soft);color:var(--on-spice-soft);align-self:center}.roast>.icon-btn.on{background:var(--spice);color:#fff}.ai-msg{background:var(--surface);border:var(--card-border);max-width:88%;box-shadow:var(--shadow-sm);border-radius:6px 20px 20px;align-self:flex-start;margin-left:48px;padding:12px 14px 8px}.ai-msg .text{font-size:16px;font-weight:500}.me-msg{background:linear-gradient(135deg, var(--primary), var(--primary-2));color:#fff;border-radius:20px 20px 6px;align-self:flex-end;max-width:82%;padding:10px 14px;font-size:16px;font-weight:500}:root[data-theme=dark] .me-msg{color:#14123a}.fix{background:var(--good-soft);max-width:86%;color:var(--on-good-soft);border-radius:16px;align-self:flex-end;padding:10px 12px;font-size:14px}.fix b{font-weight:700}.ok-line{color:var(--good);align-self:flex-end;font-size:13px;font-weight:700}.composer{margin:0 -16px calc(-32px - var(--safe-b));padding:10px 12px calc(var(--safe-b) + 10px);background:color-mix(in srgb, var(--bg) 88%, transparent);-webkit-backdrop-filter:blur(14px);border-top:1px solid var(--line);align-items:flex-end;gap:8px;display:flex;position:sticky;bottom:0}.composer textarea{border:1.5px solid var(--line);background:var(--surface);resize:none;border-radius:24px;outline:none;flex:1;min-height:48px;max-height:120px;padding:12px 16px;font-size:16px;line-height:1.4}.composer textarea:focus{border-color:var(--primary)}.composer .icon-btn{width:48px;height:48px}.composer .send{background:var(--primary);color:var(--on-primary)}.typing{align-items:center;gap:4px;display:inline-flex}.typing i{opacity:.4;background:currentColor;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{30%{opacity:1;transform:translateY(-2px)}}.lesson p,.lesson li{font-size:16px;line-height:1.7}.lesson strong{color:var(--primary);font-weight:700}.lesson ul{margin:0;padding-left:4px;list-style:none}.lesson li{padding-left:20px;position:relative}.lesson li:before{content:"";background:var(--primary);border-radius:50%;width:7px;height:7px;position:absolute;top:.75em;left:4px}.formula{background:var(--primary-soft);color:var(--on-primary-soft);border-radius:14px;padding:12px 14px;font-size:15px;font-weight:700;line-height:1.5}.summary{border-radius:var(--r-lg);background:linear-gradient(135deg, var(--primary-soft), color-mix(in srgb, var(--primary-soft) 40%, var(--surface)));color:var(--on-primary-soft);padding:16px;font-size:15px;line-height:1.6}.tip{background:var(--amber-soft);color:var(--on-amber-soft);border-radius:14px;gap:10px;padding:12px 14px;font-size:15px;display:flex}.bottom-cta{margin:18px -16px calc(-32px - var(--safe-b));padding:12px 16px calc(var(--safe-b) + 12px);background:color-mix(in srgb, var(--bg) 88%, transparent);-webkit-backdrop-filter:blur(14px);border-top:1px solid var(--line);position:sticky;bottom:0}.stats{grid-template-columns:1fr 1fr;gap:12px;display:grid}.stat .value{letter-spacing:-.02em;margin-top:10px;font-size:28px;font-weight:800;line-height:1.15}.chart{grid-template-columns:repeat(7,1fr);align-items:end;gap:10px;height:160px;margin-top:14px;display:grid;position:relative}.chart .goal-line{border-top:2px dashed color-mix(in srgb, var(--amber) 70%, transparent);position:absolute;left:0;right:0}.chart .col{flex-direction:column;justify-content:flex-end;align-items:center;gap:6px;height:100%;display:flex}.chart .col i{background:var(--surface-3);border-radius:8px 8px 4px 4px;width:100%;max-width:30px;min-height:6px;transition:height .5s cubic-bezier(.2,.8,.2,1)}.chart .col i.has{background:linear-gradient(180deg, var(--primary-2), var(--primary))}.chart .col i.met{background:linear-gradient(180deg, #4ade80, var(--good))}.chart-days{text-align:center;color:var(--text-3);grid-template-columns:repeat(7,1fr);gap:10px;margin-top:8px;font-size:12px;font-weight:600;display:grid}.chart-days .today{color:var(--primary)}.setting{flex-direction:column;gap:10px;display:flex}.options{flex-wrap:wrap;gap:8px;display:flex}.opt{background:var(--surface-2);min-height:40px;color:var(--text-2);border-radius:12px;padding:0 14px;font-size:14px;font-weight:600;transition:background .15s,color .15s,box-shadow .15s;box-shadow:inset 0 0 0 1.5px #0000}.opt.on{background:var(--primary-soft);color:var(--on-primary-soft);box-shadow:inset 0 0 0 1.5px var(--primary)}.switch{background:var(--surface-3);border-radius:999px;flex:none;width:52px;height:32px;transition:background .2s;position:relative}.switch:after{content:"";background:#fff;border-radius:50%;width:24px;height:24px;transition:transform .2s cubic-bezier(.3,.7,.2,1);position:absolute;top:4px;left:4px;box-shadow:0 1px 3px #00000040}.switch.on{background:var(--primary)}.switch.on:after{transform:translate(20px)}input[type=range]{width:100%;accent-color:var(--primary)}.welcome-hero{margin:calc(-16px - var(--safe-t)) -16px 0;padding:calc(var(--safe-t) + 28px) 24px 28px;color:#fff;background:linear-gradient(150deg,#3b2fbf 0%,#6d5df6 60%,#a855f7 100%);border-radius:0 0 36px 36px;position:relative;overflow:hidden}.welcome-hero .mascot{filter:drop-shadow(0 14px 22px #1e0a5a73);width:150px;height:150px;margin:4px auto 6px;animation:3.2s ease-in-out infinite bob;display:block}@keyframes bob{50%{transform:translateY(-6px)rotate(-2deg)}}.speech{color:#1d1b3a;background:#fff;border-radius:16px;padding:10px 14px;font-size:14px;font-weight:600;display:inline-block;position:relative;box-shadow:0 8px 18px -8px #00000059}.speech:after{content:"";background:#fff;border-radius:2px;width:14px;height:14px;position:absolute;bottom:-7px;left:50%;transform:translate(-50%)rotate(45deg)}.feature{align-items:flex-start;gap:14px;display:flex}.goal-opt{border-radius:var(--r);background:var(--surface);border:1.5px solid var(--line);text-align:left;align-items:center;gap:14px;width:100%;padding:14px 16px;transition:border-color .15s,background .15s;display:flex}.goal-opt .radio{border:2px solid var(--surface-3);border-radius:50%;flex:none;place-items:center;width:22px;height:22px;display:grid}.goal-opt.on{border-color:var(--primary);background:var(--primary-soft)}.goal-opt.on .radio{border-color:var(--primary)}.goal-opt.on .radio:after{content:"";background:var(--primary);border-radius:50%;width:10px;height:10px}.empty{text-align:center;flex-direction:column;justify-content:center;align-items:center;gap:10px;min-height:60dvh;padding:24px;display:flex}.empty .big-emoji{font-size:64px;line-height:1}.banner{background:var(--amber-soft);color:var(--on-amber-soft);border-radius:14px;align-items:flex-start;gap:10px;padding:12px 14px;font-size:14px;display:flex}.banner.bad{background:var(--bad-soft);color:var(--on-bad-soft)}.dialog-backdrop{z-index:50;background:#0a081e73;place-items:center;padding:24px;animation:.2s fade;display:grid;position:fixed;inset:0}.dialog{background:var(--surface);width:100%;max-width:360px;box-shadow:var(--shadow-lg);border-radius:24px;padding:22px;animation:.22s cubic-bezier(.2,.8,.2,1) pop-in}@keyframes fade{0%{opacity:0}}@keyframes pop-in{0%{opacity:0;transform:scale(.94)}}.spinner{border:3px solid var(--surface-3);border-top-color:var(--primary);border-radius:50%;width:32px;height:32px;margin:40vh auto 0;animation:.8s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}.toast{left:50%;bottom:calc(var(--safe-b) + var(--tabbar-h) + 16px);z-index:60;color:#fff;max-width:calc(100% - 32px);box-shadow:var(--shadow-lg);background:#1d1b3a;border-radius:14px;padding:12px 16px;font-size:14px;font-weight:500;animation:.25s sheet-up;position:fixed;transform:translate(-50%)}@media (prefers-reduced-motion:reduce){*,:before,:after{transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}
