:root{--bg: #0a0d13;--bg-soft: #0f131c;--panel: #141a26;--panel-2: #1a2231;--line: #232d3f;--text: #e9effb;--muted: #8b9ab3;--accent: #6f8dff;--accent-2: #a06bff;--green: #3ddc97;--amber: #ffb454;--red: #ff7a8a;--radius: 16px;color-scheme:dark}*{box-sizing:border-box}html,body,#root{height:100%}body{margin:0;background:var(--bg);color:var(--text);font-family:Inter,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,system-ui,sans-serif;-webkit-font-smoothing:antialiased;overscroll-behavior:none}button,input{font:inherit;color:inherit}button{cursor:pointer;background:none;border:none}.app{position:relative;display:flex;flex-direction:column;height:100dvh;max-width:600px;margin:0 auto;background:radial-gradient(120% 60% at 50% -10%,rgba(111,141,255,.16),transparent 60%),var(--bg);overflow:hidden}.header{flex:none;padding:14px 16px 0;background:#0a0d13d1;-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);border-bottom:1px solid var(--line);z-index:5}.brand-row{display:flex;align-items:center;justify-content:space-between;gap:12px}.brand{display:flex;align-items:center;gap:10px;min-width:0}.brand-mark{display:grid;place-items:center;width:38px;height:38px;border-radius:12px;font-size:18px;background:linear-gradient(145deg,#6f8dff40,#a06bff40);border:1px solid rgba(111,141,255,.35)}.brand h1{margin:0;font-size:17px;font-weight:650;letter-spacing:-.01em}.brand p{margin:1px 0 0;font-size:11.5px;color:var(--muted)}.header-actions{display:flex;align-items:center;gap:6px}.level-chip{padding:5px 10px;border-radius:999px;font-size:12px;font-weight:650;letter-spacing:.04em;color:#cdd9ff;background:#6f8dff24;border:1px solid rgba(111,141,255,.3)}.icon-button{display:grid;place-items:center;width:34px;height:34px;border-radius:10px;font-size:15px;color:var(--muted);border:1px solid transparent;transition:background .15s,color .15s,border-color .15s}.icon-button:hover{color:var(--text);background:var(--panel);border-color:var(--line)}.icon-button.is-on{color:#cdd9ff;background:#6f8dff29;border-color:#6f8dff59}.scenario-strip{display:flex;gap:8px;margin:12px -16px 0;padding:0 16px 12px;overflow-x:auto;scrollbar-width:none}.scenario-strip::-webkit-scrollbar{display:none}.scenario-chip{flex:none;display:inline-flex;align-items:center;gap:6px;padding:7px 12px;border-radius:999px;font-size:13px;white-space:nowrap;color:var(--muted);background:var(--panel);border:1px solid var(--line);transition:all .15s}.scenario-chip:hover{color:var(--text);border-color:#33405a}.scenario-chip.is-active{color:#fff;background:linear-gradient(135deg,#6f8dff52,#a06bff47);border-color:#6f8dff80}.tabs{display:flex;gap:4px}.tabs button{position:relative;display:inline-flex;align-items:center;gap:6px;padding:9px 14px 11px;font-size:13.5px;font-weight:550;color:var(--muted);border-bottom:2px solid transparent;transition:color .15s}.tabs button:hover{color:var(--text)}.tabs button.is-active{color:var(--text);border-bottom-color:var(--accent)}.tab-badge{min-width:18px;padding:1px 5px;border-radius:999px;font-size:10.5px;font-weight:700;color:#0a0d13;background:var(--amber)}.main{flex:1;min-height:0;overflow-y:auto;padding:16px;scrollbar-width:thin;scrollbar-color:#2a3548 transparent}.chat{display:flex;flex-direction:column;gap:14px;padding-bottom:8px}.row{display:flex;gap:9px;align-items:flex-start;animation:rise .22s ease both}.row--user{justify-content:flex-end}@keyframes rise{0%{opacity:0;transform:translateY(6px)}}.avatar{flex:none;display:grid;place-items:center;width:28px;height:28px;margin-top:2px;border-radius:9px;font-size:12px;font-weight:700;color:#cdd9ff;background:linear-gradient(145deg,#6f8dff47,#a06bff47);border:1px solid rgba(111,141,255,.35)}.bubble-wrap{display:flex;flex-direction:column;gap:8px;max-width:86%;min-width:0}.row--user .bubble-wrap{align-items:flex-end}.bubble{position:relative;padding:10px 13px;border-radius:var(--radius);font-size:15px;line-height:1.45;white-space:pre-wrap;word-wrap:break-word}.bubble--assistant{background:var(--panel);border:1px solid var(--line);border-top-left-radius:6px}.bubble--user{color:#f2f6ff;background:linear-gradient(135deg,#3b56c9,#6a45c9);border-top-right-radius:6px;box-shadow:0 8px 24px -12px #6f8dffe6}.bubble--ghost{opacity:.62;font-style:italic}.replay{display:inline-block;margin-left:6px;padding:0;font-size:12px;opacity:.45;vertical-align:baseline;transition:opacity .15s}.replay:hover{opacity:1}.typing{display:inline-flex;gap:4px;padding:13px 14px}.typing span{width:6px;height:6px;border-radius:50%;background:var(--muted);animation:blink 1.1s infinite ease-in-out}.typing span:nth-child(2){animation-delay:.18s}.typing span:nth-child(3){animation-delay:.36s}@keyframes blink{0%,80%,to{opacity:.25;transform:translateY(0)}40%{opacity:1;transform:translateY(-2px)}}.try-phrase{margin:0;padding:7px 10px;border-radius:10px;font-size:12.5px;line-height:1.4;color:#c9d6f2;background:#6f8dff14;border:1px dashed rgba(111,141,255,.3)}.try-phrase span{color:var(--muted)}.encouragement{margin:0;padding:0 2px;font-size:12.5px;line-height:1.45;color:var(--muted)}.corrections{display:flex;flex-direction:column;gap:8px;width:100%}.correction{padding:9px 11px;border-radius:12px;background:#ffb4540f;border:1px solid rgba(255,180,84,.2);border-left:3px solid var(--amber)}.correction--vocab{background:#a06bff12;border-color:#a06bff38;border-left-color:var(--accent-2)}.correction--style{background:#3ddc970f;border-color:#3ddc9733;border-left-color:var(--green)}.correction-type{display:inline-block;margin-bottom:5px;font-size:10px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--amber)}.correction--vocab .correction-type{color:#c9a6ff}.correction--style .correction-type{color:var(--green)}.correction-type--vocab{color:#c9a6ff}.correction-type--style{color:var(--green)}.correction-fix{margin:0 0 4px;font-size:14px;line-height:1.45}.correction-fix .said{color:var(--red);text-decoration:line-through;text-decoration-color:#ff7a8a99}.correction-fix .arrow{margin:0 6px;color:var(--muted)}.correction-fix strong{color:#d8ffe9;font-weight:600}.correction-note{margin:0;font-size:12.5px;line-height:1.45;color:var(--muted)}.footer{flex:none;display:flex;flex-direction:column;align-items:center;gap:8px;padding:8px 16px calc(12px + env(safe-area-inset-bottom));background:linear-gradient(180deg,#0a0d1300,#0a0d13f2 30%)}.correction-pill{display:inline-flex;align-items:center;gap:6px;padding:5px 11px;border-radius:999px;font-size:12px;color:var(--amber);background:#ffb4541a;border:1px solid rgba(255,180,84,.25)}.micbar{width:100%;display:flex;flex-direction:column;align-items:center;gap:8px}.listening-label{margin:0;font-size:12.5px;color:var(--muted);text-align:center;min-height:18px}.dot{display:inline-block;width:7px;height:7px;margin-right:6px;border-radius:50%;background:var(--red);animation:pulse-dot 1s infinite;vertical-align:1px}@keyframes pulse-dot{50%{opacity:.25}}.mic-row{display:grid;grid-template-columns:1fr auto 1fr;align-items:center;width:100%}.mic-row .icon-button{justify-self:start;width:44px;height:44px;font-size:18px;background:var(--panel);border-color:var(--line)}.mic{position:relative;justify-self:center;display:grid;place-items:center;width:74px;height:74px;border-radius:50%;background:linear-gradient(145deg,#6f8dff,#a06bff);box-shadow:0 12px 30px -10px #6f8dffcc,inset 0 1px #ffffff40;transition:transform .12s ease,box-shadow .2s;touch-action:manipulation}.mic:active{transform:scale(.95)}.mic:disabled{opacity:.55;box-shadow:none}.mic.is-listening{background:linear-gradient(145deg,#ff6b81,#c44b8f);box-shadow:0 12px 30px -10px #ff6b81cc,inset 0 1px #ffffff40}.mic.is-listening:before,.mic.is-listening:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;border-radius:50%;border:2px solid rgba(255,107,129,.55);animation:ring 1.6s infinite ease-out}.mic.is-listening:after{animation-delay:.8s}@keyframes ring{0%{transform:scale(1);opacity:.8}to{transform:scale(1.65);opacity:0}}.mic-glyph{width:15px;height:22px;border-radius:8px;background:#fff;box-shadow:0 0 0 0 transparent;position:relative}.mic-glyph:before{content:"";position:absolute;left:50%;bottom:-9px;width:26px;height:18px;transform:translate(-50%);border:2.5px solid #fff;border-top:none;border-radius:0 0 14px 14px}.mic-glyph:after{content:"";position:absolute;left:50%;bottom:-13px;width:2.5px;height:5px;transform:translate(-50%);background:#fff;border-radius:2px}.square{width:22px;height:22px;border-radius:6px;background:#fff}.mic-spacer{justify-self:end;width:44px}.hint{margin:0;min-height:16px;font-size:11.5px;color:#6c7a93}.text-form{display:flex;gap:8px;width:100%}.text-form input{flex:1;min-width:0;padding:11px 13px;border-radius:12px;font-size:14.5px;background:var(--panel);border:1px solid var(--line);outline:none}.text-form input:focus{border-color:#6f8dff99}.text-form button{padding:0 16px;border-radius:12px;font-size:14px;font-weight:600;color:#0a0d13;background:var(--accent)}.text-form button:disabled{opacity:.45}.error-banner{display:flex;align-items:flex-start;gap:8px;margin-bottom:14px;padding:10px 12px;border-radius:12px;font-size:13px;line-height:1.45;color:#ffd7dc;background:#ff7a8a1a;border:1px solid rgba(255,122,138,.3)}.error-banner span{flex:1}.error-banner button{flex:none;color:inherit;opacity:.6}.panel{display:flex;flex-direction:column;gap:18px;padding-bottom:24px}.panel-head{display:flex;align-items:center;justify-content:space-between;gap:12px}.panel-sub{margin:0;font-size:12.5px;line-height:1.4;color:var(--muted)}.link-button{flex:none;padding:0;font-size:12.5px;color:var(--muted);text-decoration:underline;text-underline-offset:3px}.link-button:hover{color:var(--red)}.empty{display:flex;flex-direction:column;align-items:center;gap:6px;padding:64px 24px;text-align:center}.empty-emoji{margin:0;font-size:34px}.empty h3{margin:4px 0 0;font-size:16px}.empty p{margin:0;max-width:300px;font-size:13px;line-height:1.5;color:var(--muted)}.mistake-list{display:flex;flex-direction:column;gap:10px}.mistake-card{display:block;width:100%;padding:12px 13px;text-align:left;border-radius:14px;background:var(--panel);border:1px solid var(--line);transition:border-color .15s,background .15s}.mistake-card:hover{border-color:#33405a}.mistake-card.is-open{background:var(--panel-2);border-color:#ffb4544d}.mistake-top{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:7px}.mistake-top .correction-type{margin:0}.mistake-scenario{font-size:11px;color:#62718a}.mistake-said{margin:0;font-size:14.5px;line-height:1.45;color:#ffb3bd}.mistake-fixed{margin:6px 0 5px;font-size:14.5px;line-height:1.45;color:#a8ffd4}.mistake-reveal{margin:7px 0 0;font-size:11.5px;color:#5f6d85}.stats{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}.stat{display:flex;flex-direction:column;align-items:center;gap:3px;padding:14px 8px;border-radius:14px;background:var(--panel);border:1px solid var(--line)}.stat-value{font-size:22px;font-weight:700;letter-spacing:-.02em}.stat-label{font-size:10.5px;text-align:center;color:var(--muted)}.panel-block h3{margin:0 0 10px;font-size:13px;font-weight:650;letter-spacing:.02em;text-transform:uppercase;color:#7f8ea8}.bars{display:flex;flex-direction:column;gap:9px;margin:0;padding:0;list-style:none}.bars li{display:grid;grid-template-columns:96px 1fr 20px;align-items:center;gap:10px;font-size:12.5px}.bar-label{color:var(--muted)}.bar-track{height:7px;border-radius:999px;background:#1c2434;overflow:hidden}.bar-fill{display:block;height:100%;border-radius:999px;background:linear-gradient(90deg,#ffb454,#ff8f5e)}.bar-fill--vocab{background:linear-gradient(90deg,#a06bff,#7c5cff)}.bar-fill--style{background:linear-gradient(90deg,#3ddc97,#2bb985)}.bar-count{text-align:right;color:var(--muted);font-variant-numeric:tabular-nums}.panel-tip{margin:12px 0 0;padding:11px 13px;border-radius:12px;font-size:12.5px;line-height:1.5;color:#b8c6de;background:#6f8dff12;border:1px solid rgba(111,141,255,.18)}.transcript{margin:0;padding:0 0 0 16px;display:flex;flex-direction:column;gap:8px;font-size:13.5px;line-height:1.45;color:#b8c6de}.primary-button{padding:14px;border-radius:14px;font-size:14.5px;font-weight:600;color:#0a0d13;background:linear-gradient(135deg,#7f9bff,#a97bff);box-shadow:0 12px 26px -14px #6f8dffe6}.primary-button:active{transform:scale(.99)}.overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:50;display:flex;align-items:flex-end;justify-content:center;background:#04060ab3;-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);animation:fade .18s ease both}@keyframes fade{0%{opacity:0}}.sheet{width:100%;max-width:600px;max-height:90dvh;display:flex;flex-direction:column;border-radius:22px 22px 0 0;background:var(--bg-soft);border:1px solid var(--line);border-bottom:none;animation:slide-up .22s cubic-bezier(.2,.8,.2,1) both}@keyframes slide-up{0%{transform:translateY(40px);opacity:0}}.sheet-head{flex:none;display:flex;align-items:center;justify-content:space-between;padding:16px 18px 10px}.sheet-head h2{margin:0;font-size:17px}.sheet-body{overflow-y:auto;padding:0 18px calc(24px + env(safe-area-inset-bottom));display:flex;flex-direction:column;gap:20px}.field-label{display:block;margin-bottom:7px;font-size:12px;font-weight:600;letter-spacing:.02em;color:#93a2ba}.field-hint{margin:8px 0 0;font-size:11.5px;line-height:1.5;color:#6c7a93}.field-hint--price{margin-top:6px;padding:7px 10px;border-radius:8px;background:#74c69d14;border:1px solid rgba(116,198,157,.18);color:#9fd8bd;font-size:12px}.sheet input[type=text],.sheet input[type=password],.sheet input:not([type]){width:100%;padding:11px 12px;border-radius:11px;font-size:13.5px;background:var(--panel);border:1px solid var(--line);outline:none}.sheet input:focus{border-color:#6f8dff99}.segmented{display:flex;gap:4px;padding:3px;border-radius:12px;background:var(--panel);border:1px solid var(--line)}.segmented--providers{display:grid;grid-template-columns:repeat(auto-fit,minmax(72px,1fr))}.segmented--providers button{min-width:0;font-size:12px;white-space:nowrap}.segmented button{flex:1;padding:8px 4px;border-radius:9px;font-size:12.5px;font-weight:550;color:var(--muted);transition:background .15s,color .15s}.segmented button.is-active{color:#fff;background:#6f8dff3d;box-shadow:inset 0 0 0 1px #6f8dff66}.field-grid{display:grid;grid-template-columns:1fr 1.3fr;gap:10px}.warning{margin:-8px 0 0;padding:10px 12px;border-radius:11px;font-size:11.5px;line-height:1.5;color:#ffd9a8;background:#ffb45414;border:1px solid rgba(255,180,84,.22)}.test-button{width:100%;padding:11px;border-radius:11px;font-size:13px;font-weight:600;color:#cdd9ff;background:#6f8dff24;border:1px solid rgba(111,141,255,.35)}.test-button:hover:not(:disabled){background:#6f8dff38}.test-button:disabled{opacity:.6}.test-result{margin:-6px 0 0;padding:10px 12px;border-radius:11px;font-size:12px;line-height:1.45;word-break:break-word}.test-result--ok{color:#b6ffdb;background:#3ddc971a;border:1px solid rgba(61,220,151,.25)}.test-result--error{color:#ffd7dc;background:#ff7a8a1a;border:1px solid rgba(255,122,138,.3)}.setup-note{padding:12px 13px;border-radius:11px;font-size:11.5px;line-height:1.55;color:#b8c6de;background:#6f8dff12;border:1px solid rgba(111,141,255,.18)}.setup-note p{margin:0 0 7px}.setup-note p:last-child{margin-bottom:0}.setup-note code{padding:1px 5px;border-radius:5px;font-size:11px;background:#0d1119;border:1px solid var(--line)}.switch-row{display:flex;align-items:center;justify-content:space-between;gap:16px}.switch-row .field-label{margin-bottom:2px}.switch-row .field-hint{margin:0}.switch{flex:none;position:relative;width:46px;height:27px;border-radius:999px;background:#263043;border:1px solid var(--line);transition:background .18s}.switch span{position:absolute;top:3px;left:3px;width:19px;height:19px;border-radius:50%;background:#9aa9c2;transition:transform .18s,background .18s}.switch.is-on{background:#6f8dff80;border-color:#6f8dff99}.switch.is-on span{transform:translate(19px);background:#fff}.rate-row{display:flex;align-items:center;gap:10px;margin-top:12px;font-size:12px;color:var(--muted)}.rate-row input[type=range]{flex:1;accent-color:var(--accent)}.rate-value{min-width:38px;text-align:right;font-variant-numeric:tabular-nums}@media (min-width: 640px){.main{padding:20px 22px}.overlay{align-items:center}.sheet{border-radius:22px;border-bottom:1px solid var(--line);max-height:86dvh}}
