body.app [hidden],body.start-page [hidden]{display:none!important}body.app{display:flex;flex-direction:column;height:100vh;height:100dvh;overflow:hidden}body.app>.app-bar,body.app>.guest-band,body.app>.lesson-band{flex:0 0 auto}body.app .app-layout{flex:1 1 auto;min-height:0;display:flex}body.app .app-main{position:relative;flex:1 1 auto;min-width:0;min-height:0;display:flex;flex-direction:column;padding:0}body.app.has-tabbar .app-main{padding-bottom:calc(var(--tabbar-h) + env(safe-area-inset-bottom))}body.app .app-bar__inner{gap:var(--s-2)}body.app .app-bar__brand img{height:26px;width:auto}.subject-slot{flex:1 1 auto;min-width:0;gap:var(--s-2)}.app-bar__slot .app-subject-chip{display:inline-flex;align-items:center;gap:var(--s-2);min-width:0;max-width:100%;overflow:hidden;font-family:var(--font-body);font-size:var(--t-sm)}.subject-chip__text{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.chip-grade{display:none}.app-subject-chip .badge{flex:0 0 auto}.app-bar .app-subject-chip:hover{background:var(--tint)}.subject-change{display:none}.score-pill{display:none}body.app .app-bar__actions .btn-icon svg{width:24px;height:24px}.guest-band,.lesson-band{display:flex;align-items:center;flex-wrap:wrap;gap:var(--s-2) var(--s-3);padding:var(--s-1) var(--s-4);min-height:40px;background:var(--band-fill);color:var(--on-band-fill);border-bottom:1px solid var(--border);font-size:var(--t-sm)}:is(.guest-band,.lesson-band) .qb-time{color:var(--on-band-muted)}:is(.guest-band,.lesson-band) .quest-bar{flex:1 1 260px;min-width:0;width:auto;max-width:none;margin:0;background:0 0;border:0;border-radius:0;box-shadow:none}:is(.guest-band,.lesson-band) .quest-bar:empty{display:none}.lesson-band:has(.quest-bar:empty){display:none}.guest-pill{order:2;margin-left:auto;flex:0 0 auto;display:inline-flex;align-items:center;gap:var(--s-1);padding:2px var(--s-2);border:1px solid var(--info);border-radius:var(--r-pill);background:var(--info-bg);color:var(--info);font-size:var(--t-xs);font-weight:var(--w-bold);white-space:nowrap}.guest-pill.low{border-color:var(--warning);background:var(--warning-bg);color:var(--warning)}.verify-banner{flex:0 0 auto;align-items:center;margin:var(--s-2) var(--s-4) 0;font-size:var(--t-sm)}.verify-banner form{flex:1 1 auto}.verify-banner__msg{flex:1 1 16rem;margin:0}.verify-banner .verify-banner__code{width:8rem}html.chat-expanded .verify-banner{display:none}.rail__item.view-tab,.tabbar__item.view-tab{font-family:var(--font-body)}.rail__item[aria-current=page] .icon,.tabbar__item[aria-current=page] .icon{stroke-width:2.4}.rail__item{width:100%;background:0 0;border:0;cursor:pointer;font-family:var(--font-body);text-align:left}.rail__rule{margin:var(--s-2) var(--s-3)}.nav-secondary{display:flex;flex-direction:column}.nav-who{display:flex;align-items:center;flex-wrap:wrap;gap:var(--s-1);margin:0 0 var(--s-2);padding:0 var(--s-3);font-size:var(--t-sm);color:var(--muted)}.role-badge{display:inline-flex;align-items:center;padding:2px var(--s-2);border:1px solid var(--border);border-radius:var(--r-sm);background:var(--surface-2);color:var(--ink);font-size:var(--t-xs);font-weight:var(--w-bold)}.role-badge.student{border-color:var(--info);background:var(--info-bg);color:var(--info)}.role-badge.teacher{border-color:var(--warning);background:var(--warning-bg);color:var(--warning)}.nav-group{display:flex;flex-direction:column;gap:2px}.nav-group+.nav-group{margin-top:var(--s-2);padding-top:var(--s-2);border-top:1px solid var(--border)}.nav-item{display:flex;align-items:center;gap:var(--s-3);width:100%;min-height:var(--tap);padding:var(--s-2) var(--s-3);border:0;border-radius:var(--r-md);background:0 0;color:var(--ink-2);font-family:var(--font-body);font-size:var(--t-sm);font-weight:var(--w-bold);text-align:left;text-decoration:none;cursor:pointer}.nav-item .icon{width:20px;height:20px;flex:0 0 20px}.nav-item:hover{background:var(--surface-2);color:var(--ink)}.nav-item[aria-current=page]{background:var(--tint);color:var(--action)}.nav-item--danger,.nav-item--danger:hover{color:var(--danger)}.nav-label{min-width:0;overflow:hidden;text-overflow:ellipsis}.nav-item[role=switch]::after{content:"Off";margin-left:auto;padding:1px var(--s-2);border:1px solid var(--border-strong);border-radius:var(--r-pill);font-size:var(--t-xs);color:var(--muted)}.nav-item[role=switch][aria-checked=true]::after{content:"On";border-color:var(--action);color:var(--action)}.logout-form{margin:0}.menu-sheet .dialog__body{padding-bottom:var(--s-5)}#chat{flex:1 1 auto;min-height:0;overflow-y:auto;overflow-x:hidden;padding:var(--s-4) max(var(--s-4),calc((100% - 760px)/ 2)) var(--s-5);scroll-behavior:smooth;overscroll-behavior:contain}.msg{display:flex;gap:var(--s-2);align-items:flex-end;margin:var(--s-2) 0}.msg.user{justify-content:flex-end}.avatar{flex:0 0 32px;width:32px;height:32px;border-radius:50%;display:flex;align-items:center;justify-content:center;overflow:hidden;font-size:var(--t-xs);font-weight:var(--w-bold);user-select:none}.avatar img{width:100%;height:100%;object-fit:cover;display:block}.bot .avatar{background:var(--coal-navy)}.user .avatar{order:2;background:var(--secondary);color:var(--on-secondary)}.avatar svg{width:100%;height:100%;display:block}.coal .v{display:none}.coal.is-celebrating .s-c,.coal.is-idle .s-i,.coal.is-listening .s-l,.coal.is-speaking .s-s,.coal.is-thinking .s-t{display:inline}.coal .rg{fill:none;stroke:var(--coal-red);stroke-width:3;transform-origin:32px 32px}.coal.is-listening .rg{stroke:var(--coal-blue);stroke-width:5;animation:coal-listen 1.2s ease-in-out infinite}.coal.is-thinking .rg{stroke:var(--coal-white);stroke-dasharray:6 4;animation:coal-think 6s linear infinite}.coal.is-speaking .rg{stroke:var(--coal-green);stroke-width:2}.coal.is-celebrating .rg{stroke:var(--coal-yellow);stroke-width:4;stroke-linecap:round;stroke-dasharray:0 7.5}.coal .sp{transform-origin:32px 32px}.coal.is-celebrating .sp{animation:coal-cheer .6s ease-in-out 3}.coal .gl>*{transform-box:fill-box;transform-origin:center}.coal.is-idle .s-i>*{animation:coal-blink 5s infinite}.coal.is-thinking .s-t>*{animation:coal-dots 1s ease-in-out infinite}.coal.is-speaking .s-s.gl>*{animation:coal-wave .4s ease-in-out infinite alternate}.coal.is-speaking .s-s.gl>:nth-child(2),.coal.is-thinking .s-t>:nth-child(2){animation-delay:.15s}.coal.is-speaking .s-s.gl>:nth-child(3),.coal.is-thinking .s-t>:nth-child(3){animation-delay:.3s}@keyframes coal-listen{50%{stroke-width:2.5}}@keyframes coal-think{to{transform:rotate(1turn)}}@keyframes coal-cheer{50%{transform:scale(.88)}}@keyframes coal-blink{0%,100%,95%{transform:none}97%{transform:scaleY(.15)}}@keyframes coal-dots{50%{transform:translateY(-2px)}}@keyframes coal-wave{to{transform:scaleY(.4)}}.a11y-datasaver .coal,.a11y-datasaver .coal *{animation:none!important}.bubble{max-width:min(90%,680px);min-width:0;padding:var(--s-3) var(--s-4);border-radius:var(--r-lg);font-size:var(--t-md);line-height:var(--lh-body);overflow-wrap:anywhere;overflow-x:auto}.bot .bubble{background:var(--surface);color:var(--ink);border:1px solid var(--border);border-bottom-left-radius:var(--r-sm);box-shadow:var(--shadow-1)}.user .bubble{background:var(--secondary);color:var(--on-secondary);border-bottom-right-radius:var(--r-sm)}.bubble :where(p){margin:0 0 var(--s-2)}.bubble :where(p:last-child){margin-bottom:0}.bubble :where(ul,ol){margin:var(--s-1) 0 var(--s-2) var(--s-5);padding:0}.bubble :where(li){margin:var(--s-1) 0}.bubble :where(h1,h2,h3,h4){margin:var(--s-2) 0 var(--s-1);font-size:var(--t-md);font-family:var(--font-display);font-weight:var(--w-bold);color:inherit}.bubble :where(hr){border:0;border-top:1px solid var(--border);margin:var(--s-3) 0}.bubble :where(a){color:inherit;text-decoration:underline;text-underline-offset:2px}.bubble strong{font-weight:var(--w-bold)}.bubble em{font-style:italic}.bubble :where(code){font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:.9em;padding:1px var(--s-1);border-radius:var(--r-sm);background:var(--surface-2)}.bubble :where(pre){margin:var(--s-2) 0 0;padding:var(--s-3);max-width:100%;overflow:auto;border-radius:var(--r-md);background:var(--surface-2);border:1px solid var(--border)}.bubble :where(pre code){background:0 0;padding:0}.bubble :where(blockquote){margin:var(--s-2) 0;padding:var(--s-2) var(--s-3);border-left:4px solid var(--border-strong);border-radius:0 var(--r-md) var(--r-md) 0;background:var(--bg)}.bubble table{width:100%;margin:var(--s-3) 0;border-collapse:collapse;table-layout:auto;font-size:var(--t-sm);background:var(--surface);border:2px solid var(--border-strong)}.bubble td,.bubble th{border:1px solid var(--border-strong);padding:var(--s-1) var(--s-3);text-align:left;vertical-align:middle}.bubble th{background:var(--surface-2);font-weight:var(--w-bold)}.bubble tr:nth-child(2n) td{background:var(--bg)}.user .bubble :where(code,pre,blockquote){background:0 0;border-color:currentColor;color:inherit}.user .bubble table,.user .bubble td,.user .bubble th,.user .bubble tr:nth-child(2n) td{background:0 0;border-color:currentColor;color:inherit}.bubble .bw-swap{background:var(--success-bg);color:var(--success);font-weight:var(--w-bold);border-radius:var(--r-sm);padding:0 var(--s-1);-webkit-box-decoration-break:clone;box-decoration-break:clone}.bubble .bw-swap--drop{background:0 0;color:inherit;font-weight:inherit;padding:0;border-radius:0;text-decoration:underline dotted currentColor;text-decoration-thickness:2px;text-underline-offset:0.2em}.bw-tip{max-width:min(90%,680px);margin:0 calc(32px + var(--s-2)) var(--s-3) auto;font-size:var(--t-sm);line-height:var(--lh-body);color:var(--muted);text-align:right;animation:bw-tip-in var(--dur) var(--ease) both}@keyframes bw-tip-in{from{opacity:0}to{opacity:1}}@media (prefers-reduced-motion:reduce){.bw-tip{animation:none}}.meta{margin-top:var(--s-1);font-size:var(--t-xs);color:var(--muted);display:flex;align-items:center;flex-wrap:wrap;gap:var(--s-1)}.user .meta{color:inherit}.sources{margin-top:var(--s-2);font-size:var(--t-sm);color:var(--muted)}.sources a{color:var(--info)}.imgwrap img{display:block;max-width:100%;margin-top:var(--s-2);border-radius:var(--r-md);border:1px solid var(--border)}.inline-notice{margin:var(--s-2) auto;max-width:560px;padding:var(--s-2) var(--s-4);border:1px solid var(--border);border-radius:var(--r-md);background:var(--surface);font-size:var(--t-sm);color:var(--muted);text-align:center}.practice-score{margin:var(--s-2) 0;padding:var(--s-3) var(--s-4);border:1px solid var(--border);border-left:4px solid var(--success);border-radius:var(--r-md);background:var(--surface);font-size:var(--t-sm);font-weight:var(--w-bold)}.stopped-note{margin:var(--s-2) 0 0;font-size:var(--t-sm);font-weight:var(--w-bold);color:var(--muted)}.replay-btn{display:inline-flex;align-items:center;gap:var(--s-1);min-height:var(--tap);min-width:var(--tap);padding:0 var(--s-3);margin-left:var(--s-1);border:1px solid var(--border);border-radius:var(--r-pill);background:var(--surface);color:var(--ink-2);font-family:var(--font-body);font-size:var(--t-xs);font-weight:var(--w-bold);cursor:pointer}.user .replay-btn{background:0 0;color:inherit;border-color:currentColor}.welcome.welcome-slim{display:flex;flex-direction:column;align-items:flex-start;gap:var(--s-3);padding:var(--s-2) 0 var(--s-5) 40px}.welcome-lead{margin:0;max-width:560px;color:var(--ink-2);font-size:var(--t-sm)}.topic-chips{display:flex;flex-wrap:wrap;gap:var(--s-2)}.topic-chip{min-height:var(--tap);padding:var(--s-2) var(--s-4);border:1px solid var(--border-strong);border-radius:var(--r-pill);background:var(--surface);color:var(--ink);font-family:var(--font-body);font-size:var(--t-sm);font-weight:var(--w-bold);line-height:1.3;text-align:left;cursor:pointer;transition:background-color var(--dur) var(--ease),border-color var(--dur) var(--ease)}.topic-chip:hover{border-color:var(--ink);background:var(--tint)}.welcome-disclaimer{margin:0;max-width:560px;font-size:var(--t-xs);color:var(--muted)}.answer-options-hint{margin:var(--s-3) 0 0;font-size:var(--t-sm);font-weight:var(--w-bold);color:var(--ink-2)}.answer-options{display:flex;flex-direction:column;gap:var(--s-2);margin-top:var(--s-2)}.answer-option{display:flex;align-items:center;gap:var(--s-3);width:100%;min-height:var(--tap);padding:var(--s-2) var(--s-3);border:1px solid var(--border-strong);border-radius:var(--r-md);background:var(--surface);color:var(--ink);font-family:var(--font-body);font-size:var(--t-sm);font-weight:var(--w-bold);line-height:1.4;text-align:left;cursor:pointer}.answer-option:hover:not(:disabled){border-color:var(--ink);background:var(--tint)}.answer-option:disabled{cursor:default;opacity:.6}.answer-option .opt-letter{flex:0 0 28px;height:28px;display:flex;align-items:center;justify-content:center;border-radius:var(--r-sm);background:var(--surface-2);color:var(--ink-2);font-size:var(--t-xs)}.answer-option .opt-label{flex:1;min-width:0;overflow-wrap:anywhere}.answer-option.chosen{opacity:1;background:var(--secondary);border-color:var(--secondary);color:var(--on-secondary)}.answer-option.chosen .opt-letter{background:0 0;color:inherit;border:1px solid currentColor}.eb-hint{border-left:4px solid var(--info);background:var(--info-bg);margin:var(--s-3) 0 0;padding:var(--s-2) var(--s-3);border-top:1px solid var(--info);border-right:1px solid var(--info);border-bottom:1px solid var(--info);border-radius:var(--r-md);color:var(--ink);font-size:var(--t-sm);font-weight:var(--w-bold);line-height:1.5}textarea.awaiting-explain-back{border-color:var(--info);box-shadow:0 0 0 3px var(--info-bg)}textarea.awaiting-explain-back::placeholder{color:var(--info);opacity:1}.cut-off{margin:var(--s-2) 0 0;padding:var(--s-2) var(--s-3);border:1px solid var(--warning);border-left-width:4px;border-radius:var(--r-md);background:var(--warning-bg);color:var(--warning);font-size:var(--t-sm);font-weight:var(--w-bold);line-height:1.5}.cut-off-kept{margin:var(--s-2) 0 0;padding:var(--s-2) var(--s-3);max-height:220px;overflow:auto;border:1px solid var(--border);border-radius:var(--r-md);background:var(--surface-2);font-size:var(--t-xs);white-space:pre-wrap;word-break:break-word}.test-card{margin:var(--s-3) 0;padding:var(--s-3) var(--s-4);border:1px solid var(--border);border-left:4px solid var(--secondary);border-radius:var(--r-md);background:var(--bg)}.test-card-head{display:flex;align-items:baseline;flex-wrap:wrap;gap:var(--s-2);margin-bottom:var(--s-1)}.test-card-kind{font-size:var(--t-xs);font-weight:var(--w-bold);letter-spacing:.06em;text-transform:uppercase;color:var(--muted)}.test-card-head strong{font-size:var(--t-md)}.test-card-meta{margin:0 0 var(--s-2);font-size:var(--t-sm);color:var(--muted)}.test-card-label{margin:var(--s-3) 0 var(--s-2);font-size:var(--t-xs);font-weight:var(--w-bold);color:var(--ink)}.test-card-warn{margin-left:var(--s-2);padding:1px var(--s-2);border-radius:var(--r-sm);background:var(--warning-bg);color:var(--warning);font-size:var(--t-xs)}.test-card-btns{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--s-2)}.test-dl{min-height:var(--tap);padding:var(--s-2) var(--s-3);border:1px solid var(--border-strong);border-radius:var(--r-md);background:var(--surface);color:var(--ink);font-family:var(--font-body);font-size:var(--t-sm);font-weight:var(--w-bold);cursor:pointer}.test-dl:hover:not(:disabled){border-color:var(--ink);background:var(--tint)}.test-dl:disabled{opacity:.6;cursor:default}.test-dl.memo{background:var(--warning-bg);border-color:var(--warning);color:var(--warning)}.expand-chat-btn{position:absolute;top:var(--s-2);right:var(--s-3);z-index:5;background:var(--surface);border-color:var(--border);box-shadow:var(--shadow-1)}.expand-chat-btn .collapse-ico,.expand-chat-btn[aria-pressed=true] .expand-ico{display:none}.expand-chat-btn[aria-pressed=true] .collapse-ico{display:inline-flex}.expand-chat-btn span{display:inline-flex}html.chat-expanded .app-bar,html.chat-expanded .guest-band,html.chat-expanded .lesson-band,html.chat-expanded .rail,html.chat-expanded .tabbar{display:none}html.chat-expanded body.app.has-tabbar .app-main{padding-bottom:0}html.chat-expanded .expand-chat-btn{position:fixed;top:calc(var(--s-2) + env(safe-area-inset-top));background:var(--secondary);color:var(--on-secondary);border-color:var(--secondary)}.app-view{flex:1 1 auto;min-height:0;overflow-y:auto;overflow-x:hidden;padding:var(--s-4) max(var(--s-4),calc((100% - 1080px)/ 2)) var(--s-8)}.composer{flex:0 0 auto;background:var(--surface);border-top:1px solid var(--border);padding:var(--s-2) var(--s-3) var(--s-2)}.composer__inner{max-width:760px;margin-inline:auto;display:flex;flex-direction:column;gap:var(--s-2)}.composer__form{display:flex;align-items:flex-end;gap:var(--s-1);min-width:0}.composer__form textarea{flex:1 1 auto;min-width:0;min-height:var(--tap);max-height:160px;resize:none;padding:var(--s-2) var(--s-3);border:1px solid var(--border-strong);border-radius:var(--r-lg);background:var(--bg);color:var(--ink);font-family:var(--font-body);font-size:max(16px, var(--t-md));line-height:1.4;letter-spacing:var(--tracking-body);word-spacing:var(--word-spacing-body)}.composer__form textarea:focus-visible{border-color:var(--accent);outline-offset:0}.composer__form textarea::placeholder{color:var(--muted);opacity:1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.composer__tool{flex:0 0 auto;color:var(--ink-2)}.composer__tool.has-files{background:var(--secondary);color:var(--on-secondary)}.composer__send{flex:0 0 auto;padding-inline:var(--s-3)}.send-label{display:none}.mic-btn.listening{background:var(--action);color:var(--on-action);animation:mentor-listen 1.2s ease-in-out infinite}.mic-btn.busy{opacity:.6;cursor:progress}@keyframes mentor-listen{0%,100%{outline:0 solid var(--action)}50%{outline:5px solid var(--action);outline-offset:2px}}.coal-btn{flex:0 0 auto;padding-inline:var(--s-2);gap:var(--s-1)}.coal-btn .btn-label{display:none}.coal-ico{display:inline-flex}.coal-btn.on{background:var(--secondary);border-color:var(--secondary);color:var(--on-secondary)}.pause-btn{flex:0 0 auto;padding-inline:var(--s-3);gap:var(--s-1)}.pause-btn[data-state=idle]{display:none}.pause-ico{display:inline-flex}.pause-btn .btn-label{display:none}.pause-btn[data-state=stream]{background:var(--action);border-color:var(--action);color:var(--on-action)}.pause-btn[data-state=voice-paused]{background:var(--secondary);border-color:var(--secondary);color:var(--on-secondary)}.composer__form[data-busy="1"] .composer__send{display:none}.file-tags{display:flex;flex-wrap:wrap;gap:var(--s-1)}.file-tags:empty{display:none}.file-tag{display:inline-flex;align-items:center;gap:var(--s-1);max-width:100%;padding:0 0 0 var(--s-3);border:1px solid var(--border);border-radius:var(--r-pill);background:var(--surface-2);font-size:var(--t-xs)}.file-tag>span:first-child{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.file-tag .remove{min-width:var(--tap);min-height:32px;border:0;background:0 0;color:var(--muted);font-size:var(--t-md);cursor:pointer}.pat-banner{display:none;align-items:center;flex-wrap:wrap;gap:var(--s-2) var(--s-3);padding:var(--s-2) var(--s-3);border:1px solid var(--info);border-left-width:4px;border-radius:var(--r-md);background:var(--info-bg);font-size:var(--t-sm)}.pat-banner.on{display:flex}.pat-banner .grow{flex:1 1 200px;min-width:0}.practice-bar{display:flex;align-items:center;flex-wrap:wrap;gap:var(--s-2) var(--s-3);padding:var(--s-1) var(--s-1) var(--s-1) var(--s-3);border:1px solid var(--success);border-radius:var(--r-md);background:var(--success-bg);color:var(--success);font-size:var(--t-sm);font-weight:var(--w-bold)}.practice-bar__score{flex:1 1 auto;color:var(--ink)}.a11y-datasaver #uploadBtn{display:none}.check-view{margin-inline:auto;display:flex;flex-direction:column;gap:var(--s-4)}.check__title{margin:0;outline:0}.check__lead{margin:0;color:var(--ink-2)}.check__title+.check__lead{margin-top:calc(-1 * var(--s-2))}.check-card{display:flex;flex-direction:column;gap:var(--s-2)}.check-card__meta{display:flex;align-items:center;justify-content:space-between;gap:var(--s-2);margin:0;font-size:var(--t-sm)}.check-label{margin:var(--s-2) 0 0;font-size:var(--t-xs);font-weight:var(--w-bold);letter-spacing:.08em;text-transform:uppercase;color:var(--muted)}.check-task{margin:0;font-size:var(--t-lg);font-weight:var(--w-bold);line-height:1.4}.check-answer{margin:0;padding:var(--s-3) var(--s-4);overflow-x:auto;border:1px solid var(--border);border-left:4px solid var(--border-strong);border-radius:var(--r-md);background:var(--surface-2);color:var(--ink);font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:var(--t-md);line-height:1.5;white-space:pre-wrap;overflow-wrap:anywhere}.check-ask{margin:0;font-weight:var(--w-bold)}.check-options{display:grid;grid-template-columns:minmax(0,1fr);gap:var(--s-2)}.check-option{display:flex;align-items:center;gap:var(--s-3);min-height:52px;width:100%;padding:var(--s-3) var(--s-4);border:1px solid var(--border-strong);border-radius:var(--r-md);background:var(--surface);color:var(--ink);font-family:var(--font-body);font-size:var(--t-md);line-height:1.4;text-align:left;cursor:pointer;transition:border-color var(--dur) var(--ease),background-color var(--dur) var(--ease)}.check-option:hover{border-color:var(--ink);background:var(--tint)}.check-option__letter{flex:0 0 32px;height:32px;display:inline-flex;align-items:center;justify-content:center;border-radius:var(--r-sm);background:var(--surface-2);color:var(--ink-2);font-weight:var(--w-bold);font-size:var(--t-sm)}.check-option__text{flex:1 1 auto;min-width:0}.check-option[aria-pressed=true]{border-width:2px;padding:calc(var(--s-3) - 1px) calc(var(--s-4) - 1px)}.check-option.is-right{border:2px solid var(--success);background:var(--success-bg);padding:calc(var(--s-3) - 1px) calc(var(--s-4) - 1px)}.check-option.is-right .check-option__letter{background:var(--success);color:var(--success-bg)}.check-option.is-wrong{border:2px solid var(--danger);background:var(--danger-bg);padding:calc(var(--s-3) - 1px) calc(var(--s-4) - 1px)}.check-option.is-wrong .check-option__letter{background:var(--danger);color:var(--danger-bg)}.check-option[aria-disabled=true]{cursor:default}.check-option[aria-disabled=true]:not(.is-right):not(.is-wrong){opacity:.7}.check-feedback:empty{display:none}.check__actions{margin-top:var(--s-1)}.check__practice{display:flex;flex-direction:column;align-items:flex-start;gap:var(--s-3)}.check__practice p{margin:0}.check__loading{padding:var(--s-4) 0}.dialog__title .badge{vertical-align:middle}.subject-options{border:0;margin:0;padding:0;min-width:0}.subject-radio-list{display:grid;gap:var(--s-2);grid-template-columns:minmax(0,1fr)}.subject-radio{display:grid;grid-template-columns:auto auto minmax(0,1fr);align-items:center;column-gap:var(--s-3);row-gap:2px;min-height:56px;padding:var(--s-2) var(--s-3);border:1px solid var(--border);border-radius:var(--r-md);background:var(--surface);cursor:pointer}.subject-radio:hover{border-color:var(--border-strong)}.subject-radio:has(input:checked){border:2px solid var(--ink);padding:calc(var(--s-2) - 1px) calc(var(--s-3) - 1px);background:var(--tint)}.subject-radio:has(input:focus-visible){outline:var(--focus-w) solid var(--accent);outline-offset:2px}.subject-radio input{width:20px;height:20px;margin:0;accent-color:var(--action)}.subject-radio__text{display:flex;flex-direction:column;align-items:flex-start;gap:2px;min-width:0}.subject-card__meta,.subject-card__title,.subject-radio__name{overflow-wrap:normal;word-break:normal;hyphens:manual}.subject-radio__name{font-weight:var(--w-bold);line-height:var(--lh-tight)}.subject-radio__meta{display:flex;flex-wrap:wrap;align-items:center;gap:var(--s-1) var(--s-2);font-size:var(--t-xs);line-height:1.4}.subject-radio__current{font-weight:var(--w-bold);color:var(--ink-2)}.subject-radio>.badge{grid-column:3;justify-self:start}.subject-radio-group+.subject-radio-group{margin-top:var(--s-4)}.subject-group__title,.subject-radio-group__title{margin:0 0 var(--s-2);font-family:var(--font-body);font-size:var(--t-sm);font-weight:var(--w-bold);color:var(--ink-2);letter-spacing:.02em}.subject-note{margin:var(--s-3) 0 0}.subject-tile{display:inline-flex;align-items:center;justify-content:center;flex:0 0 auto;min-width:52px;height:32px;padding:0 var(--s-2);border-radius:var(--r-sm);background:var(--secondary);color:var(--on-secondary);font-family:var(--font-display);font-weight:var(--w-display);font-size:var(--t-xs);letter-spacing:.06em}.chat-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:var(--s-1)}.chat-list__item{display:flex;align-items:center;gap:var(--s-1);border-radius:var(--r-md)}.chat-list__item.active{background:var(--tint)}.chat-list__open{flex:1 1 auto;min-width:0;min-height:var(--tap);padding:var(--s-2) var(--s-3);border:0;border-radius:var(--r-md);background:0 0;color:var(--ink);font-family:var(--font-body);font-size:var(--t-md);font-weight:var(--w-bold);text-align:left;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;cursor:pointer}.chat-list__open:hover{background:var(--surface-2)}.chat-list__del{color:var(--muted)}.chat-list__empty{padding:var(--s-4);color:var(--muted);text-align:center}.help-body h3{margin:var(--s-4) 0 var(--s-2);font-size:var(--t-md)}.help-body h3:first-child{margin-top:0}.help-grid{display:grid;grid-template-columns:minmax(0,1fr);gap:var(--s-2)}.help-grid section{padding:var(--s-3);border:1px solid var(--border);border-radius:var(--r-md);background:var(--bg)}.help-grid h3{margin:0 0 var(--s-1);font-size:var(--t-sm)}.help-grid p{margin:0;font-size:var(--t-sm);color:var(--ink-2)}.help-note{margin:var(--s-3) 0 0;padding:var(--s-2) var(--s-3);border-radius:var(--r-md);background:var(--info-bg);font-size:var(--t-sm)}.help-counter{margin:var(--s-3) 0 0;min-height:1.2em;font-size:var(--t-sm);color:var(--muted)}.help-counter:empty{margin:0}.help-actions-spacer{flex:1 1 auto}.dialog__foot.help-actions .btn{flex:0 0 auto}.a11y-list{list-style:none;margin:0;padding:0}.a11y-list li{border-bottom:1px solid var(--border)}.a11y-list li:last-child{border-bottom:0}.a11y-list small{display:block;color:var(--muted);font-size:var(--t-sm);font-weight:400}.a11y-list .check{font-weight:var(--w-bold)}.a11y-rate{display:flex;align-items:center;flex-wrap:wrap;gap:var(--s-2);min-height:var(--tap);padding-block:var(--s-2);font-weight:var(--w-bold)}.a11y-rate input[type=range]{flex:1 1 140px;accent-color:var(--action);min-height:var(--tap)}.tour-spotlight{position:fixed;z-index:calc(var(--z-dialog) - 1);pointer-events:none;border-radius:var(--r-lg);outline:var(--focus-w) solid var(--accent);box-shadow:0 0 0 9999px var(--scrim);transition:top var(--dur) var(--ease),left var(--dur) var(--ease),width var(--dur) var(--ease),height var(--dur) var(--ease)}.dialog.tour-mode::backdrop{background:0 0}.dialog.tour-mode{max-height:55dvh}.dialog.tour-mode.tour-top{inset:0 0 auto 0;border-radius:0 0 var(--r-lg) var(--r-lg);padding-top:env(safe-area-inset-top)}.net-banner{display:none;position:fixed;left:0;right:0;top:0;z-index:var(--z-toast);padding:var(--s-2) var(--s-3);padding-top:calc(var(--s-2) + env(safe-area-inset-top));background:var(--warning-bg);color:var(--warning);border-bottom:2px solid var(--warning);font-size:var(--t-sm);font-weight:var(--w-bold);text-align:center}.is-offline .net-banner{display:block}.start{padding-block:var(--s-5) var(--s-8)}.start__grid{display:grid;grid-template-columns:minmax(0,1fr);gap:var(--s-5)}.start__hero{display:flex;flex-direction:column;gap:var(--s-3)}.start__hero .display{margin:0;font-size:var(--t-2xl)}.start__lead{margin:0;max-width:560px;color:var(--ink-2);font-size:var(--t-md)}.start__ticks{display:none;list-style:none;margin:var(--s-2) 0 0;padding:0;flex-direction:column;gap:var(--s-2)}.start__ticks li{display:flex;align-items:flex-start;gap:var(--s-2);color:var(--ink-2)}.start__ticks .icon{flex:0 0 20px;color:var(--success);margin-top:3px}.start__qr{display:none;align-items:center;gap:var(--s-4);margin-top:var(--s-4);padding:var(--s-4);border:1px dashed var(--border-strong);border-radius:var(--r-lg);max-width:440px}.start__qr p{margin:0}.start__qr-code{flex:0 0 120px;width:120px;height:120px;padding:var(--s-1);display:flex;align-items:center;justify-content:center;background:var(--on-bar);color:var(--bar-bg);border-radius:var(--r-md)}.start__qr-code svg{width:100%;height:100%}.start__side{display:flex;flex-direction:column;gap:var(--s-4);min-width:0}.start__step{display:flex;align-items:center;gap:var(--s-2);margin:0 0 var(--s-3);font-size:var(--t-lg)}.start__step:not(:first-child){margin-top:var(--s-5)}.start__num{display:inline-flex;align-items:center;justify-content:center;flex:0 0 28px;height:28px;border-radius:50%;background:var(--secondary);color:var(--on-secondary);font-size:var(--t-sm)}.start__picker .subject-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.subject-card__row{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:var(--s-1) var(--s-2);width:100%;margin-bottom:var(--s-1)}.subject-groups{display:flex;flex-direction:column;gap:var(--s-4)}.subject-card__meta,.subject-card__title{max-width:100%}.start__picker .subject-card{padding:var(--s-3);min-height:0}.start__picker .subject-card[aria-pressed=true]{padding:calc(var(--s-3) - 1px)}.start__picker .subject-card__title{font-size:var(--t-md)}@media (min-width:480px){.start__picker .subject-card{padding:var(--s-4);min-height:88px}.start__picker .subject-card[aria-pressed=true]{padding:calc(var(--s-4) - 1px)}.start__picker .subject-card__title{font-size:var(--t-lg)}}.subject-card .subject-tile{min-width:56px}.start__more{margin-top:var(--s-3)}.start__notbuilt{margin-top:var(--s-3);grid-template-columns:repeat(2,minmax(0,1fr))}.start__notbuilt .subject-card{min-height:72px}.start__trystep{margin-top:var(--s-5);scroll-margin-top:calc(var(--bar-h) + var(--s-3))}.start__try{display:grid;grid-template-columns:minmax(0,1fr);gap:var(--s-3)}.start__hint{margin:var(--s-3) 0 0;font-size:var(--t-sm);color:var(--muted)}.try-bar{position:fixed;left:0;right:0;bottom:0;z-index:var(--z-bar);display:flex;flex-direction:column;gap:var(--s-2);padding:var(--s-3) max(var(--s-4),env(safe-area-inset-right)) calc(var(--s-3) + env(safe-area-inset-bottom)) max(var(--s-4),env(safe-area-inset-left));background:var(--surface);color:var(--ink);border-top:1px solid var(--border-strong);box-shadow:var(--shadow-3);animation:try-bar-in var(--dur) var(--ease)}.try-bar__label{display:flex;flex-wrap:wrap;align-items:center;gap:var(--s-1) var(--s-2);margin:0;font-size:var(--t-sm);color:var(--ink-2)}.try-bar__label strong{color:var(--ink);font-size:var(--t-md)}.try-bar__btns{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--s-2)}.try-bar__btns .btn{padding-inline:var(--s-2)}body.start-page.try-bar-on{padding-bottom:var(--try-bar-h,120px)}@keyframes try-bar-in{from{transform:translateY(100%)}to{transform:none}}@media (prefers-reduced-motion:reduce){.try-bar{animation:none}}.a11y-reduce-motion .try-bar{animation:none}.start__signin h2{margin-bottom:var(--s-4)}.start__signin .alert{margin-bottom:var(--s-4)}.start__small{margin:0;text-align:center;font-size:var(--t-sm)}.start__links a,.start__small a{display:inline-block;min-height:var(--tap);line-height:var(--tap)}.start__links{margin:var(--s-3) 0 0;text-align:center;font-size:var(--t-sm);color:var(--muted)}.start-page .subject-grid{margin:0}.start__doors{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--s-3);margin:var(--s-4) 0}.start__door{min-height:72px;padding:var(--s-3)}.start__door-title{font-family:var(--font-display);font-weight:var(--w-bold);font-size:var(--t-md)}.start__door-meta{font-size:var(--t-sm);color:var(--muted)}.start__grades{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--s-3);margin:0 0 var(--s-3)}.start__grades .subject-card{min-height:72px}.start__mismatch,.start__pickgrade{margin:0 0 var(--s-3)}.start__mismatch ul{margin:var(--s-2) 0 0;padding-left:var(--s-5)}.start__mismatch a{display:inline-block;min-height:var(--tap);line-height:var(--tap)}.start__pending ol{margin:var(--s-2) 0 0;padding-left:var(--s-5)}button.subject-card{font-family:var(--font-body)}.a11y-contrast .bubble,.a11y-contrast .check-option,.a11y-contrast .topic-chip{border-color:var(--ink)}.a11y-reduce-motion *,.a11y-reduce-motion ::after,.a11y-reduce-motion ::before{animation:none!important;transition:none!important;scroll-behavior:auto!important}@media (prefers-reduced-motion:reduce){#chat{scroll-behavior:auto}.mic-btn.listening{animation:none}.coal,.coal *{animation:none!important}}@media (min-width:480px){.send-label{display:inline}.coal-btn .btn-label{display:inline}.coal-btn{padding-inline:var(--s-3)}body.app .app-bar__brand img{height:36px}.chip-grade{display:inline}.help-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.start__try{grid-template-columns:repeat(2,minmax(0,1fr))}.test-card-btns{display:flex;flex-wrap:wrap}}@media (min-width:768px){.pause-btn:not([data-state=idle]) .btn-label{display:inline}.composer{padding:var(--s-3) var(--s-4)}.check-options{grid-template-columns:repeat(2,minmax(0,1fr))}.dialog.help-dialog{max-width:620px}.dialog.dialog--wide{max-width:760px}.dialog.tour-mode{inset:auto var(--s-6) var(--s-6) auto;margin:0;width:min(440px,calc(100% - var(--s-8)));max-height:70dvh}.dialog.tour-mode.tour-top{inset:calc(var(--bar-h) + var(--s-4)) var(--s-6) auto auto;border-radius:var(--r-lg);padding-top:0}.start__hero .display{font-size:var(--t-3xl)}.start__lead{font-size:var(--t-lg)}.welcome.welcome-slim{padding-left:40px}}@media (min-width:1024px){body.app .app-layout{display:grid;grid-template-columns:240px minmax(0,1fr);align-items:stretch}body.app .rail{position:static;top:auto;max-height:none;min-height:0;overflow-y:auto}body.app.has-tabbar .app-main{padding-bottom:0}.subject-change{display:inline-flex;color:var(--on-bar)}.menu-btn{display:none}.score-pill{display:inline-flex;align-items:center;padding:var(--s-1) var(--s-3);border:1px solid currentColor;border-radius:var(--r-pill);color:var(--on-bar);font-size:var(--t-sm);font-weight:var(--w-bold);white-space:nowrap}.guest-band,.lesson-band{padding-inline:var(--s-6)}.start{padding-block:var(--s-7) var(--s-8)}.start__grid{grid-template-columns:minmax(0,1fr) minmax(0,520px);gap:var(--s-8);align-items:start}.start__hero{position:sticky;top:calc(var(--bar-h) + var(--s-6));padding-top:var(--s-5)}.start__qr,.start__ticks{display:flex}.start__picker>.try-bar{position:sticky;left:auto;right:auto;bottom:0;margin:var(--s-4) calc(var(--s-6) * -1) calc(var(--s-6) * -1);padding:var(--s-4) var(--s-6);border-radius:0 0 var(--r-lg) var(--r-lg);box-shadow:var(--shadow-2)}body.start-page.try-bar-on{padding-bottom:0}}@media (min-width:1440px){body.app .app-layout{grid-template-columns:264px minmax(0,1fr)}.bubble{font-size:var(--t-md)}}@media (max-height:499px){.guest-band,.lesson-band{flex-wrap:nowrap;min-height:0;padding-block:2px;gap:var(--s-2)}:is(.guest-band,.lesson-band) .quest-bar{flex:1 1 auto}}@media print{.app-bar,.composer,.expand-chat-btn,.guest-band,.lesson-band,.net-banner,.rail,.replay-btn,.skip-link,.tabbar{display:none!important}body.app{display:block;height:auto;overflow:visible}body.app .app-layout,body.app .app-main{display:block;padding:0}#chat,.app-view{overflow:visible;padding:0}.bubble{box-shadow:none;break-inside:avoid}}.lang-switch{margin:0;min-width:0}.lang-switch__summary{cursor:pointer;list-style:none;max-width:100%;text-align:left}.lang-switch__summary::-webkit-details-marker{display:none}.lang-switch[open]>.lang-switch__summary{margin-bottom:var(--s-3)}.lang-switch__fieldset{border:0;margin:0;padding:0;min-width:0}.lang-switch__legend{padding:0;font-weight:var(--w-bold)}.lang-switch__intro{margin:var(--s-1) 0 var(--s-3);font-size:var(--t-sm);color:var(--muted)}.lang-switch__list{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:minmax(0,1fr);gap:var(--s-2)}.lang-switch__item{display:flex;flex-wrap:wrap;align-items:baseline;gap:var(--s-1) var(--s-2);width:100%;min-height:var(--tap);padding:var(--s-2) var(--s-3);background:var(--surface);color:var(--ink);text-align:left;font:inherit;border:1px solid var(--border-strong);border-radius:var(--r-md);overflow-wrap:break-word;word-break:normal}button.lang-switch__item{cursor:pointer}button.lang-switch__item[aria-pressed=true]{border-width:2px;padding:calc(var(--s-2) - 1px) calc(var(--s-3) - 1px);background:var(--tint)}.lang-switch__item--planned{background:var(--surface-2);color:var(--muted);border-style:dashed}.lang-switch__name{font-weight:var(--w-bold);min-width:0}.lang-switch__sub{font-size:var(--t-sm);color:var(--muted);min-width:0}.lang-switch__status{margin-left:auto;font-size:var(--t-xs);font-weight:var(--w-bold);text-transform:uppercase;letter-spacing:.04em}.lang-switch__help{flex:1 0 100%;font-size:var(--t-sm);color:var(--muted);min-width:0}@media (min-width:480px){.lang-switch__list{grid-template-columns:repeat(2,minmax(0,1fr))}}.start__lang{margin:var(--s-3) 0 0}