.language-portfolio{display:grid;gap:var(--space-3);min-width:0}.language-portfolio-title{margin:0;padding:0 var(--space-3);color:color-mix(in srgb,var(--ink-contrast) 38%,transparent);font-size:var(--text-2xs);font-weight:var(--weight-semibold);letter-spacing:.08em;text-transform:uppercase}.language-portfolio-list{display:grid;gap:var(--space-1)}.language-row{position:relative;display:grid;width:100%;gap:var(--space-1-5);padding:var(--space-2) var(--space-3);border:0;border-radius:var(--radius-control);background:transparent;color:color-mix(in srgb,var(--ink-contrast) 70%,transparent);font:inherit;cursor:pointer;text-align:left;transition:background var(--duration-fast) var(--ease-standard),color var(--duration-fast) var(--ease-standard),transform var(--duration-press) var(--ease-out)}.language-row:hover,.language-row:focus-visible{background:color-mix(in srgb,var(--ink-contrast) 4%,transparent);outline:none}.language-row:active{transform:scale(.99)}.language-row.is-active{background:color-mix(in srgb,var(--ink-contrast) 5%,transparent);color:var(--ink-contrast)}.language-row-top{display:flex;align-items:baseline;justify-content:space-between;gap:var(--space-2)}.language-row-name{overflow:hidden;font-size:var(--text-sm-plus);font-weight:var(--weight-medium);line-height:var(--leading-tight);text-overflow:ellipsis;white-space:nowrap}.language-row.is-active .language-row-name{font-weight:var(--weight-semibold)}.language-row-due{flex:0 0 auto;color:var(--accent-gradient-end);font-size:var(--text-2xs);font-weight:var(--weight-semibold);white-space:nowrap}.language-row-meta{color:color-mix(in srgb,var(--ink-contrast) 44%,transparent);font-size:var(--text-xs);font-weight:var(--weight-medium);font-variant-numeric:tabular-nums;letter-spacing:.01em}.language-row.is-active .language-row-meta{color:color-mix(in srgb,var(--ink-contrast) 58%,transparent)}.language-row-track{display:block;height:2px;margin-top:var(--space-0-5);overflow:hidden;border-radius:var(--radius-pill);background:color-mix(in srgb,var(--ink-contrast) 4%,transparent)}.language-row-track span{display:block;height:100%;border-radius:inherit;background:color-mix(in srgb,var(--accent-gradient-end) 60%,transparent);transition:width var(--duration-medium) var(--ease-standard)}.language-row.is-active .language-row-track span{background:linear-gradient(90deg,var(--accent),var(--accent-gradient-end))}.landing{position:relative;min-height:100vh;min-height:100dvh;overflow-x:hidden;color:var(--ink);background:var(--surface-desk-lo);font-family:var(--font-sans)}.landing-desk{position:absolute;inset:0;z-index:0;background:radial-gradient(120% 76% at 50% -8%,var(--surface-desk-hi),transparent 60%),linear-gradient(180deg,var(--surface-desk) 0%,var(--surface-desk-lo) 100%)}.landing-nav{position:relative;z-index:2;display:flex;align-items:center;justify-content:space-between;width:100%;max-width:1280px;margin:0 auto;padding:var(--space-6) var(--space-10)}.landing-brand{display:inline-flex;align-items:center;gap:var(--space-3);font-size:var(--text-2xl);font-weight:var(--weight-bold);letter-spacing:-.01em}.landing-mark{display:grid;place-items:center;width:30px;height:30px;border-radius:var(--radius-control-sm);background:var(--ink);color:var(--ink-contrast);font-size:var(--text-lg);font-weight:var(--weight-extra-bold)}.landing-nav-actions{display:inline-flex;align-items:center;gap:var(--space-2)}.landing-nav-signin{border:0;background:transparent;font:inherit;font-size:var(--text-md);font-weight:var(--weight-medium);color:var(--soft);cursor:pointer;padding:var(--space-2-5) var(--space-3);border-radius:var(--radius-control-sm)}.landing-nav-signin:hover{color:var(--ink);background:var(--surface-hover)}.landing-nav-cta{border:0;border-radius:var(--radius-control-sm);background:var(--ink);color:var(--ink-contrast);font:inherit;font-size:var(--text-md);font-weight:var(--weight-semibold);cursor:pointer;padding:var(--space-2-5) var(--space-5);box-shadow:var(--shadow-button)}.landing-stage{position:relative;z-index:1;display:flex;flex-direction:column;align-items:center;text-align:center;width:100%;max-width:1120px;margin:0 auto;padding:var(--space-10) var(--space-10) var(--space-12)}.landing-copy{max-width:40em}.landing-headline{margin:0;font-family:var(--font-serif);font-size:clamp(2.5rem,4.2vw,3.4rem);line-height:1.04;letter-spacing:-.015em;font-weight:540;color:var(--ink)}.landing-sub{margin:var(--space-5) auto 0;max-width:30em;font-size:var(--text-xl);line-height:1.5;font-weight:var(--weight-normal);color:var(--soft)}.landing-cta{margin-top:var(--space-7);border:0;border-radius:var(--radius-control);background:var(--ink);color:var(--ink-contrast);font:inherit;font-size:var(--text-xl);font-weight:var(--weight-semibold);cursor:pointer;padding:16px var(--space-8);box-shadow:var(--shadow-primary)}.landing-fineprint{margin:var(--space-4) 0 0;font-size:var(--text-md);font-weight:var(--weight-medium);color:var(--muted)}.landing-windows{width:100%;margin-top:var(--space-10)}.win{background:var(--surface-card);border:1px solid var(--line);border-radius:var(--radius-dock);box-shadow:var(--shadow-window);overflow:hidden}.win-app{width:100%;max-width:920px;margin:0 auto}.win-bar{display:flex;align-items:center;gap:var(--space-3);height:44px;padding:0 var(--space-4);border-bottom:1px solid var(--line);background:var(--surface-card)}.win-status{margin-left:auto;padding:var(--space-1) var(--space-3);border-radius:var(--radius-pill);background:var(--surface-panel);color:var(--muted);font-size:var(--text-sm);font-weight:var(--weight-medium)}.win-select-root{position:relative}.win-select{display:inline-flex;align-items:center;gap:var(--space-2);border:1px solid var(--line);background:var(--surface-card);font:inherit;font-size:var(--text-sm-plus);font-weight:var(--weight-semibold);color:var(--ink);cursor:pointer;padding:var(--space-1-5) var(--space-3);border-radius:var(--radius-control-sm)}.win-select:hover{background:var(--surface-hover)}.win-chev{color:var(--muted);font-size:var(--text-xs)}.win-menu{position:absolute;top:calc(100% + var(--space-1-5));left:0;z-index:10;min-width:168px;margin:0;padding:var(--space-1);list-style:none;border:1px solid var(--line);border-radius:var(--radius-menu);background:var(--surface-popover);-webkit-backdrop-filter:blur(var(--blur-surface));backdrop-filter:blur(var(--blur-surface));box-shadow:var(--shadow-menu);animation:landing-pop var(--duration-base) var(--ease-out)}.win-menu-item{display:block;width:100%;text-align:left;border:0;border-radius:var(--radius-control-sm);background:transparent;font:inherit;font-size:var(--text-md);font-weight:var(--weight-medium-strong);color:var(--ink);cursor:pointer;padding:var(--space-2-5) var(--space-3)}.win-menu-item:hover{background:var(--surface-hover)}.win-menu-item.is-selected{color:var(--accent);font-weight:var(--weight-semibold)}.win-app-body{display:grid;grid-template-columns:minmax(0,1.62fr) minmax(0,1fr)}.app-pane{padding:var(--space-7) var(--space-8)}.app-pane-practice{border-right:1px solid var(--line)}.app-pane-library{display:flex;flex-direction:column;min-height:0;background:var(--surface-card)}.prac-mastery{display:flex;align-items:center;gap:var(--space-3)}.prac-mastery-label{font-size:var(--text-sm);font-weight:var(--weight-medium);color:var(--soft);white-space:nowrap}.prac-track{flex:1;height:6px;border-radius:var(--radius-pill);background:var(--surface-panel);overflow:hidden}.prac-track-fill{display:block;height:100%;border-radius:var(--radius-pill);background:color-mix(in srgb,var(--accent) 72%,var(--surface-card))}.prac-mastery-pct{font-size:var(--text-sm-plus);font-weight:var(--weight-medium);color:var(--soft)}.prac-para{margin:var(--space-7) auto 0;max-width:26em;text-align:center;font-size:var(--text-5xl);line-height:1.85;font-weight:var(--weight-semibold);letter-spacing:.005em;color:var(--ink);padding-bottom:var(--space-3)}.prac-word{position:relative;border:1px solid transparent;border-radius:var(--radius-sm);padding:2px var(--space-1);margin:0 calc(-1 * var(--space-1));cursor:default;transition:background var(--duration-tap) var(--ease-snap),border-color var(--duration-tap) var(--ease-snap),color var(--duration-tap) var(--ease-snap)}.prac-word:hover{background:var(--accent-soft);border-color:var(--accent-ring);color:var(--accent)}.prac-gloss{position:absolute;top:calc(100% + var(--space-1));left:50%;z-index:6;padding:1px var(--space-2);border-radius:var(--radius-sm);border:1px solid var(--accent-ring);background:var(--accent-soft-strong);color:var(--accent);font-family:var(--font-sans);font-size:var(--text-sm);font-weight:var(--weight-semibold);font-style:normal;letter-spacing:0;line-height:1.3;white-space:nowrap;opacity:0;pointer-events:none;transform:translate(-50%,1px);transition:opacity var(--duration-fast) var(--ease-snap),transform var(--duration-fast) var(--ease-snap)}.prac-word:hover .prac-gloss{opacity:1;transform:translate(-50%)}.prac-gap{font-style:italic;font-weight:var(--weight-semibold);color:var(--accent);background:var(--accent-soft);border:1px solid var(--accent-ring);border-radius:var(--radius-sm);padding:1px var(--space-2);white-space:nowrap}.prac-gap:hover{background:var(--accent-soft-strong);color:var(--accent)}.prac-controls{display:flex;align-items:center;justify-content:center;gap:var(--space-3-5);margin-top:var(--space-7)}.prac-pill{display:inline-flex;align-items:center;gap:var(--space-2-5);border:1px solid var(--line);border-radius:var(--radius-pill);padding:var(--space-3) var(--space-5);font-size:var(--text-md);font-weight:var(--weight-semibold);color:var(--ink);background:var(--surface-card)}.prac-pill-primary{border-color:var(--accent-ring);background:var(--accent-soft);color:var(--accent)}.prac-mic{width:8px;height:8px;border-radius:var(--radius-round);background:var(--accent)}.prac-or{color:var(--muted);font-size:var(--text-sm-plus);font-weight:var(--weight-medium)}.lib-head{flex:0 0 auto}.lib-title{margin:0;font-size:var(--text-lg);font-weight:var(--weight-semibold)}.lib-meta{margin:var(--space-0-5) 0 0;font-size:var(--text-sm);font-weight:var(--weight-medium);color:var(--muted)}.lib-list{margin-top:var(--space-4);display:flex;flex-direction:column;gap:var(--space-2);max-height:220px;overflow-y:auto;overscroll-behavior:contain;scrollbar-width:thin;scrollbar-color:var(--line-strong) transparent;padding-right:var(--space-2);-webkit-mask-image:linear-gradient(180deg,#000 88%,transparent 100%);mask-image:linear-gradient(180deg,#000 88%,transparent 100%)}.lib-list::-webkit-scrollbar{width:6px}.lib-list::-webkit-scrollbar-thumb{background:var(--line-strong);border-radius:var(--radius-pill)}.lib-item{display:grid;grid-template-columns:24px 1fr;gap:var(--space-3);align-items:start;padding:var(--space-2) var(--space-2-5);margin:0 calc(-1 * var(--space-2-5));border-radius:var(--radius-control-sm);cursor:default;transition:background var(--duration-tap) var(--ease-snap)}.lib-item:hover{background:var(--surface-hover)}.lib-item-locked:hover{background:transparent}.lib-num{display:grid;place-items:center;width:24px;height:24px;border-radius:var(--radius-round);border:1px solid var(--line);font-size:var(--text-xs);font-weight:var(--weight-semibold);color:var(--soft)}.lib-item-body{min-width:0}.lib-text{margin:0;font-size:var(--text-sm-plus);font-weight:var(--weight-medium);line-height:1.45;color:var(--soft)}.lib-bar{display:block;margin-top:var(--space-2-5);height:3px;border-radius:var(--radius-pill);background:var(--surface-panel);overflow:hidden}.lib-bar i{display:block;height:100%;border-radius:var(--radius-pill);background:color-mix(in srgb,var(--accent) 62%,var(--surface-card))}.lib-item-locked .lib-num{border-style:dashed}.lib-item-locked .lib-text{color:var(--muted)}.landing-modal-scrim{position:fixed;inset:0;z-index:50;display:grid;place-items:center;padding:var(--space-5);background:var(--surface-overlay);-webkit-backdrop-filter:blur(var(--blur-overlay));backdrop-filter:blur(var(--blur-overlay));animation:landing-fade var(--duration-base) var(--ease-out)}.landing-modal{position:relative;width:100%;max-width:380px;padding:var(--space-8) var(--space-7) var(--space-7);border-radius:var(--radius-card);background:var(--surface-card);box-shadow:var(--shadow-modal);text-align:center;animation:landing-pop var(--duration-medium) var(--ease-out)}.landing-modal-close{position:absolute;top:var(--space-3);right:var(--space-3);width:32px;height:32px;border:0;border-radius:var(--radius-control-sm);background:transparent;color:var(--muted);font-size:var(--text-base);cursor:pointer}.landing-modal-close:hover{background:var(--surface-hover)}.landing-modal-title{margin:0;font-size:var(--text-5xl);font-weight:var(--weight-semibold);color:var(--ink)}.landing-modal-lede{margin:var(--space-2) 0 var(--space-6);font-size:var(--text-base);font-weight:var(--weight-medium);color:var(--soft)}.landing-btn{display:inline-flex;align-items:center;justify-content:center;gap:var(--space-2-5);width:100%;height:54px;padding:0 var(--space-5-5);border-radius:var(--radius-control);border:1px solid var(--line);background:var(--surface-card);color:var(--ink);font:inherit;font-size:var(--text-lg);font-weight:var(--weight-semibold);cursor:pointer}.landing-btn:disabled{opacity:.6;cursor:default}.landing-text-link{margin-top:var(--space-3);border:0;background:transparent;font:inherit;font-size:var(--text-md);font-weight:var(--weight-medium);color:var(--soft);cursor:pointer;padding:var(--space-1) var(--space-2);text-decoration:underline;text-decoration-color:var(--line);text-underline-offset:3px}.landing-email{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:var(--space-2);width:100%}.landing-email input{min-width:0;height:52px;padding:0 var(--space-4);border-radius:var(--radius-control);border:1px solid var(--line);background:var(--surface-card);font:inherit;font-size:var(--text-base);color:var(--ink)}.landing-email input:focus-visible{outline:none;border-color:var(--accent);box-shadow:var(--shadow-focus)}.landing-email button{height:52px;padding:0 var(--space-4-5);border-radius:var(--radius-control);border:1px solid var(--ink);background:var(--ink);font:inherit;font-weight:var(--weight-semibold);color:var(--ink-contrast);cursor:pointer}.landing-email button:disabled{opacity:.5;cursor:default}.landing-error{margin:var(--space-4) 0 0;font-size:var(--text-md);color:var(--danger-muted)}@keyframes landing-fade{0%{opacity:0}}@keyframes landing-pop{0%{opacity:0;transform:translateY(8px) scale(.98)}}.landing-nav-signin:focus-visible,.landing-nav-cta:focus-visible,.landing-cta:focus-visible,.win-select:focus-visible,.landing-btn:focus-visible,.landing-text-link:focus-visible,.landing-email button:focus-visible,.landing-modal-close:focus-visible{outline:2px solid var(--accent);outline-offset:var(--space-0-5)}@media(hover:hover)and (pointer:fine){.landing-nav-cta:hover,.landing-cta:hover,.landing-email button:hover{filter:brightness(1.12)}.landing-btn:hover{background:var(--surface-hover)}}@media(max-width:860px){.landing-stage{padding:var(--space-10) var(--space-6) var(--space-13)}.win-app-body{grid-template-columns:1fr}.app-pane-practice{border-right:0}.app-pane-library{display:none}}@media(max-width:560px){.landing-nav{padding:var(--space-5) var(--space-5)}.landing-nav-signin{display:none}.landing-stage{padding:var(--space-8) var(--space-5) var(--space-12)}.prac-para{font-size:var(--text-3xl)}}.mastery-rail{min-width:0;min-height:0;display:flex;flex-direction:column;border-right:1px solid var(--line);background:color-mix(in srgb,var(--surface-panel) 62%,var(--surface-card))}.mastery-rail-head{flex:0 0 auto;min-height:56px;display:flex;flex-direction:column;justify-content:center;padding:0 var(--space-4);border-bottom:1px solid var(--line)}.mastery-rail-head p{margin:var(--space-1) 0 0;color:var(--muted);font-size:var(--text-sm);font-weight:var(--weight-normal);line-height:var(--leading-normal);font-variant-numeric:tabular-nums}.mastery-rail-head h2{margin:0;font-size:var(--text-lg);font-weight:var(--weight-medium);line-height:var(--leading-snug);color:var(--ink)}.mastery-rail-list{flex:1 1 auto;min-height:0;overflow-y:auto;overscroll-behavior:contain;padding:var(--space-2) var(--space-2);display:flex;flex-direction:column;gap:var(--space-px);scrollbar-width:thin;scrollbar-color:var(--line-strong) transparent;-webkit-mask-image:linear-gradient(180deg,#000 94%,transparent 100%);mask-image:linear-gradient(180deg,#000 94%,transparent 100%)}.mastery-rail-list::-webkit-scrollbar{width:4px}.mastery-rail-list::-webkit-scrollbar-thumb{background:var(--line-strong);border-radius:var(--radius-pill)}.mastery-section{display:grid;gap:var(--space-1)}.mastery-section+.mastery-section{margin-top:var(--space-2)}.mastery-level-title{display:flex;align-items:center;gap:var(--space-2);margin:var(--space-5) var(--space-2-5) var(--space-2);padding:0;color:color-mix(in srgb,var(--muted) 84%,transparent);font-size:var(--text-xs);font-weight:var(--weight-medium);line-height:var(--leading-snug);text-transform:uppercase;letter-spacing:.08em}.mastery-level-title:after{content:"";flex:1 1 auto;height:1px;background:var(--line)}.mastery-section:first-child .mastery-level-title{margin-top:var(--space-1)}.mastery-section-title{appearance:none;margin:var(--space-2) var(--space-1) var(--space-0-5);padding:var(--space-1) var(--space-1-5);border:0;border-radius:var(--radius-sm);background:transparent;color:var(--soft);font:inherit;font-size:var(--text-sm);font-weight:var(--weight-semibold);line-height:var(--leading-snug);text-align:left;cursor:pointer}.mastery-section-title:hover,.mastery-section-title:focus-visible{outline:none;background:var(--surface-hover);color:var(--ink)}.mastery-item{display:grid;grid-template-columns:24px minmax(0,1fr);align-items:start;column-gap:var(--space-2-5);width:100%;padding:var(--space-2) var(--space-2-5);border:1px solid transparent;border-radius:var(--radius-sm);background:transparent;color:var(--ink);font:inherit;text-align:left;cursor:pointer;transition:var(--transition-surface)}.mastery-item:hover,.mastery-item:focus-visible{outline:none;background:var(--surface-hover);border-color:var(--line)}.mastery-item.is-active{background:var(--accent-soft);border-color:var(--accent-ring)}.mastery-item.is-active .mastery-item-num{border-color:var(--accent-ring);color:var(--accent)}.mastery-item.is-active .mastery-item-text{color:var(--ink)}.mastery-item-num{display:grid;place-items:center;width:22px;height:22px;border:1px solid var(--line-strong);border-radius:var(--radius-round);color:var(--muted);font-size:var(--text-xs);font-weight:var(--weight-medium);font-variant-numeric:tabular-nums;flex-shrink:0;margin-top:1px}.mastery-item.is-mastered .mastery-item-num{border-color:transparent;background:transparent;color:var(--muted);font-size:var(--text-xs-plus)}.mastery-item-body{min-width:0;display:flex;flex-direction:column;gap:var(--space-1-5)}.mastery-item-text{overflow:hidden;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;color:var(--muted);font-size:var(--text-sm-plus);font-weight:var(--weight-normal);line-height:var(--leading-normal)}.mastery-item.is-progress .mastery-item-text{color:var(--soft)}.mastery-item.is-mastered .mastery-item-text{color:var(--muted);text-decoration-line:none}.mastery-item-track{display:block;height:2px;overflow:visible;border-radius:var(--radius-pill)}.mastery-item-track span{display:block;height:100%;border-radius:inherit;background:var(--accent);opacity:.55;transition:width var(--duration-medium) var(--ease-out)}.mastery-view-all{display:block;width:100%;margin-top:var(--space-1);padding:var(--space-2) var(--space-2-5);border:none;border-radius:var(--radius-sm);background:transparent;color:var(--muted);font:inherit;font-size:var(--text-sm);font-weight:var(--weight-normal);text-align:left;cursor:pointer;transition:color var(--duration-fast) var(--ease-standard)}.mastery-view-all:hover,.mastery-view-all:focus-visible{outline:none;color:var(--soft)}.account-wrap{position:fixed;left:var(--space-4);bottom:var(--space-4);z-index:40}.account-chip{border:1px solid var(--line);background:var(--surface-glass-strong);-webkit-backdrop-filter:blur(var(--blur-surface));backdrop-filter:blur(var(--blur-surface));font:inherit;cursor:pointer;box-shadow:var(--shadow-chip);transition:transform var(--duration-press) var(--ease-out)}.account-chip:active{transform:scale(.97)}.account-signin{position:fixed;top:var(--space-5);right:var(--space-5);z-index:40;height:40px;padding:0 var(--space-4);border-radius:var(--radius-panel);font-weight:var(--weight-semibold-strong);color:var(--soft);transition:color var(--duration-fast) var(--ease-standard),transform var(--duration-press) var(--ease-out)}.account-signin:hover{color:var(--ink)}.account-signin:active{transform:scale(.97)}.account-avatar{display:flex;align-items:center;justify-content:center;width:40px;height:40px;border-radius:var(--radius-round);padding:0;overflow:hidden;color:var(--ink);font-weight:var(--weight-extra-bold);font-size:var(--text-base)}.account-avatar img{width:100%;height:100%;object-fit:cover}.account-menu{position:absolute;left:0;right:auto;top:auto;bottom:calc(100% + var(--space-3));min-width:200px;padding:var(--space-2);border-radius:var(--radius-popover);border:1px solid color-mix(in srgb,var(--ink-contrast) 11%,transparent);background:color-mix(in srgb,var(--ink) 94%,#2b2a27);color:var(--ink-contrast);box-shadow:0 18px 50px #00000047,0 4px 12px #0000002e;transform-origin:bottom left;animation:accountMenuIn var(--duration-base) var(--ease-out) both}@keyframes accountMenuIn{0%{opacity:0;transform:translateY(8px) scale(.98)}to{opacity:1;transform:none}}.account-email{margin:0;padding:var(--space-2) var(--space-2-5);font-size:var(--text-sm-plus);color:var(--muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.account-signout{width:100%;margin-top:var(--space-1);height:38px;border:none;border-radius:var(--radius-control-md);background:var(--surface-panel);font:inherit;font-weight:var(--weight-semibold-strong);color:var(--ink);cursor:pointer;transition:background var(--duration-fast) var(--ease-standard),transform var(--duration-press) var(--ease-out)}.account-signout:hover{background:var(--surface-hover-strong)}.account-signout:active{transform:scale(.98)}.account-avatar{position:relative}.streak-badge{position:absolute;bottom:-3px;right:-3px;min-width:17px;height:17px;padding:0 var(--space-1);display:flex;align-items:center;justify-content:center;border-radius:var(--radius-control-sm);background:var(--warning);color:var(--white);font-size:var(--text-2xs);font-weight:var(--weight-black);border:2px solid var(--ink);line-height:1}.account-menu{width:244px;min-width:244px;padding:var(--space-2)}@media(max-width:640px){.account-wrap{left:auto;right:var(--space-3);top:var(--space-2);bottom:auto}.account-menu{left:auto;right:0;top:calc(100% + var(--space-2));bottom:auto}}.profile-head{display:flex;align-items:center;gap:var(--space-2-5);padding:var(--space-1) var(--space-1) var(--space-3)}.profile-avatar{width:36px;height:36px;flex:none;border-radius:var(--radius-round);overflow:hidden;display:flex;align-items:center;justify-content:center;background:color-mix(in srgb,var(--ink-contrast) 10%,transparent);color:var(--ink-contrast);font-weight:var(--weight-extra-bold);font-size:var(--text-base)}.profile-avatar img{width:100%;height:100%;object-fit:cover}.profile-id{display:flex;flex-direction:column;min-width:0}.profile-name{font-weight:var(--weight-bold);font-size:var(--text-sm-plus);color:color-mix(in srgb,var(--ink-contrast) 94%,transparent);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.profile-sub{font-size:var(--text-xs-plus);color:color-mix(in srgb,var(--ink-contrast) 54%,transparent);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.profile-stats{display:grid;grid-template-columns:repeat(3,1fr);gap:0;margin-bottom:var(--space-2-5);padding:var(--space-2) 0;border-block:1px solid color-mix(in srgb,var(--ink-contrast) 9%,transparent)}.stat{display:flex;flex-direction:column;align-items:center;gap:var(--space-0-5);min-width:0;padding:0 var(--space-1);background:transparent}.stat+.stat{border-left:1px solid color-mix(in srgb,var(--ink-contrast) 8%,transparent)}.stat-value{font-weight:var(--weight-bold);font-size:var(--text-lg);line-height:1;color:color-mix(in srgb,var(--ink-contrast) 94%,transparent);font-variant-numeric:tabular-nums}.stat-key{display:inline-flex;align-items:center;gap:var(--space-0-5);max-width:100%;font-size:var(--text-2xs);font-weight:var(--weight-medium);color:color-mix(in srgb,var(--ink-contrast) 48%,transparent);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.stat-flame{width:12px;height:12px;flex:none;fill:color-mix(in srgb,var(--warning) 88%,transparent);stroke:none}.goal-block{padding:var(--space-1) var(--space-1) var(--space-1)}.goal-row{display:flex;justify-content:space-between;align-items:baseline;font-size:var(--text-sm);font-weight:var(--weight-semibold);color:color-mix(in srgb,var(--ink-contrast) 72%,transparent);margin-bottom:var(--space-1-5)}.goal-count{color:color-mix(in srgb,var(--ink-contrast) 92%,transparent);font-variant-numeric:tabular-nums}.goal-track{height:5px;border-radius:var(--radius-xs);background:color-mix(in srgb,var(--ink-contrast) 10%,transparent);overflow:hidden}.goal-fill{display:block;height:100%;border-radius:var(--radius-xs);background:linear-gradient(90deg,var(--gap),var(--accent-gradient-end));transition:width var(--duration-slow) var(--ease-standard)}.goal-fill.is-met{background:linear-gradient(90deg,var(--good),var(--success-gradient-end))}.goal-hint{display:block;margin-top:var(--space-1-5);font-size:var(--text-xs);color:color-mix(in srgb,var(--ink-contrast) 50%,transparent)}.menu-divider{height:1px;background:color-mix(in srgb,var(--ink-contrast) 9%,transparent);margin:var(--space-2) var(--space-0-5)}.menu-item{width:100%;height:36px;display:flex;align-items:center;gap:var(--space-2-5);padding:0 var(--space-2-5);border:none;border-radius:var(--radius-control-md);background:transparent;font:inherit;font-size:var(--text-sm-plus);font-weight:var(--weight-semibold);color:color-mix(in srgb,var(--ink-contrast) 88%,transparent);cursor:pointer;text-align:left;transition:background var(--duration-fast) var(--ease-standard),transform var(--duration-press) var(--ease-out)}.menu-item:hover{background:color-mix(in srgb,var(--ink-contrast) 7%,transparent)}.menu-item:active{transform:scale(.98)}.menu-item.is-accent{color:var(--gap)}.menu-icon{display:grid;place-items:center;width:18px;height:18px;color:color-mix(in srgb,var(--ink-contrast) 52%,transparent);flex:none}.menu-glyph{width:17px;height:17px;fill:none;stroke:currentColor;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round}.menu-item:hover .menu-icon{color:color-mix(in srgb,var(--ink-contrast) 82%,transparent)}.menu-item.is-accent .menu-icon{color:var(--gap)}.menu-switch{margin-left:auto;width:32px;height:18px;border-radius:var(--radius-control-md);background:color-mix(in srgb,var(--ink-contrast) 18%,transparent);padding:var(--space-0-5);flex:none;transition:background var(--duration-base) var(--ease-standard)}.menu-switch span{display:block;width:14px;height:14px;border-radius:var(--radius-round);background:var(--ink-contrast);transition:transform var(--duration-base) var(--ease-out)}.menu-switch.is-on{background:var(--gap)}.menu-switch.is-on span{transform:translate(14px)}.settings-overlay{position:fixed;inset:0;z-index:60;display:flex;align-items:center;justify-content:center;padding:var(--space-5);background:var(--surface-overlay);-webkit-backdrop-filter:blur(var(--blur-overlay));backdrop-filter:blur(var(--blur-overlay))}.settings-card{width:100%;max-width:420px;border-radius:var(--radius-popover);border:1px solid var(--line);background:var(--surface-card);box-shadow:var(--shadow-modal);overflow:hidden}.settings-head{display:flex;align-items:center;justify-content:space-between;padding:var(--space-4) var(--space-4-5);border-bottom:1px solid var(--line)}.settings-head h2{margin:0;font-size:var(--text-xl);color:var(--ink)}.settings-close{border:none;background:transparent;font-size:var(--text-5xl);line-height:1;color:var(--muted);cursor:pointer;transition:color var(--duration-fast) var(--ease-standard),transform var(--duration-press) var(--ease-out)}.settings-close:hover{color:var(--ink)}.settings-close:active{transform:scale(.92)}.settings-body{padding:var(--space-2) var(--space-4-5)}.settings-row{display:flex;align-items:center;justify-content:space-between;gap:var(--space-4);padding:var(--space-3-5) 0;border-bottom:1px solid var(--line)}.settings-row:last-child{border-bottom:none}.settings-label{display:block;font-weight:var(--weight-semibold-strong);font-size:var(--text-md);color:var(--ink)}.settings-help{display:block;font-size:var(--text-sm);color:var(--muted);margin-top:var(--space-0-5)}.settings-row input[type=range]{width:130px;accent-color:var(--gap)}.toggle{flex:none;width:44px;height:26px;border-radius:var(--radius-control);border:none;background:var(--line-strong);cursor:pointer;padding:3px;transition:background var(--duration-base) var(--ease-standard)}.toggle span{display:block;width:20px;height:20px;border-radius:var(--radius-round);background:var(--white);transition:transform var(--duration-base) var(--ease-out)}.toggle.is-on{background:var(--gap)}.toggle.is-on span{transform:translate(18px)}.settings-foot{padding:var(--space-3-5) var(--space-4-5);border-top:1px solid var(--line)}.settings-reset{border:none;background:transparent;font:inherit;font-weight:var(--weight-semibold-strong);color:var(--danger);cursor:pointer;padding:0;transition:transform var(--duration-press) var(--ease-out)}.settings-reset:hover{text-decoration:underline}.settings-reset:active{transform:scale(.97)}.settings-confirm{display:flex;align-items:center;justify-content:space-between;gap:var(--space-3);font-size:var(--text-sm-plus);color:var(--soft)}.settings-confirm>div{display:flex;gap:var(--space-2);flex:none}.settings-ghost,.settings-danger{height:34px;padding:0 var(--space-3-5);border-radius:var(--radius-control-sm);border:none;font:inherit;font-weight:var(--weight-semibold-strong);cursor:pointer}.settings-ghost{background:var(--surface-panel);color:var(--ink)}.settings-danger{background:var(--danger);color:var(--white)}.settings-danger:disabled,.settings-ghost:disabled{opacity:.6;cursor:default}.teacher-dock{position:fixed;bottom:var(--space-5);right:var(--space-5);z-index:60;display:flex;flex-direction:column;gap:var(--space-4);width:min(380px,calc(100vw - var(--space-8)));padding:var(--space-5);background:var(--surface-glass-strong);-webkit-backdrop-filter:blur(var(--blur-surface));backdrop-filter:blur(var(--blur-surface));border:1px solid var(--line-strong);border-radius:var(--radius-dock);box-shadow:var(--shadow-dock);animation:teacher-dock-in var(--duration-medium) var(--ease-out-strong)}.teacher-close{position:absolute;top:var(--space-3);right:var(--space-3);display:inline-flex;align-items:center;justify-content:center;width:30px;height:30px;border:none;border-radius:var(--radius-round);background:transparent;color:var(--muted);cursor:pointer;transition:var(--transition-surface),var(--transition-color)}.teacher-close:hover{background:var(--surface-hover);color:var(--ink)}.teacher-close svg{width:15px;height:15px;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round}.teacher-head{display:flex;align-items:center;gap:var(--space-3-5);padding-right:var(--space-7)}.teacher-orb{display:grid;place-items:center;width:60px;height:60px;flex:none;border-radius:var(--radius-round);border:1px solid var(--accent-ring);background:var(--accent-soft);color:var(--accent);transition:var(--transition-surface)}.teacher-orb.is-active{background:var(--accent-soft-strong)}.teacher-orb-error{border-color:var(--line);background:var(--surface-panel);color:var(--muted)}.teacher-wave{display:flex;align-items:center;gap:3px;height:22px}.teacher-wave span{width:3px;height:7px;border-radius:var(--radius-pill);background:currentColor;opacity:.55}.teacher-wave.is-active span{animation:teacher-bar .9s var(--ease-standard) infinite}.teacher-head-text{min-width:0}.teacher-title{margin:0;font-family:var(--font-serif);font-size:var(--text-3xl);font-weight:var(--weight-semibold);line-height:var(--leading-tight);color:var(--ink)}.teacher-status{margin:var(--space-1) 0 0;font-size:var(--text-xs);font-weight:var(--weight-medium);color:var(--soft)}.teacher-status-error{color:var(--danger)}.teacher-sentence{padding:var(--space-3-5);background:var(--surface-panel);border-radius:var(--radius-panel)}.teacher-sentence-target{margin:0;font-size:var(--text-lg);font-weight:var(--weight-medium-strong);line-height:var(--leading-snug);color:var(--ink)}.teacher-sentence-english{margin:var(--space-1-5) 0 0;font-size:var(--text-sm-plus);line-height:var(--leading-normal);color:var(--soft)}.teacher-stream{min-height:52px;max-height:200px;overflow-y:auto}.teacher-line{margin:0;font-size:var(--text-base);line-height:var(--leading-relaxed);white-space:pre-wrap}.teacher-line-teacher{color:var(--ink)}.teacher-line-user{color:var(--soft);font-style:italic}.teacher-hint{margin:0;font-size:var(--text-md);line-height:var(--leading-normal);color:var(--muted)}.teacher-hint-error{color:var(--danger)}.teacher-compose{display:flex;align-items:center;gap:var(--space-2)}.teacher-input{flex:1;min-width:0;padding:var(--space-2-5) var(--space-3-5);border:1px solid var(--line);border-radius:var(--radius-pill);background:var(--surface-card);font:inherit;font-size:var(--text-sm-plus);color:var(--ink);outline:none;transition:var(--transition-surface)}.teacher-input::placeholder{color:var(--muted)}.teacher-input:focus-visible{border-color:var(--accent-ring);box-shadow:var(--shadow-focus)}.teacher-send{display:inline-flex;align-items:center;justify-content:center;width:38px;height:38px;flex:none;border:none;border-radius:var(--radius-round);background:var(--accent);color:var(--accent-contrast);cursor:pointer;transition:opacity var(--duration-fast) var(--ease-standard)}.teacher-send:disabled{opacity:.4;cursor:default}.teacher-send svg{width:17px;height:17px;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}@keyframes teacher-dock-in{0%{opacity:0;transform:translateY(10px) scale(.98)}to{opacity:1;transform:translateY(0) scale(1)}}@keyframes teacher-bar{0%,to{height:7px;opacity:.55}50%{height:20px;opacity:1}}@media(prefers-reduced-motion:reduce){.teacher-dock{animation:none}.teacher-wave.is-active span{animation:none;height:13px;opacity:.8}}.trainer-shell{min-height:100vh;height:100vh;display:grid;grid-template-columns:176px minmax(280px,360px) minmax(0,1fr);overflow:hidden;background:var(--surface-page);color:var(--ink)}.trainer-shell.workspace-mode-review,.trainer-shell.workspace-mode-library{grid-template-columns:176px minmax(0,1fr)}.workspace-nav{display:flex;flex-direction:column;align-items:stretch;gap:var(--space-5);padding:var(--space-4) var(--space-3);border-right:1px solid color-mix(in srgb,var(--ink-contrast) 12%,transparent);background:var(--ink);color:var(--ink-contrast)}.workspace-nav-top{display:grid;gap:var(--space-4);min-width:0}.workspace-mark{display:grid;place-items:center;width:34px;height:34px;border-radius:var(--radius-control-sm);background:color-mix(in srgb,var(--ink-contrast) 10%,transparent);color:var(--ink-contrast);font-size:var(--text-lg);font-weight:var(--weight-extra-bold)}.workspace-nav .language-portfolio{min-width:0}.workspace-nav-main{display:flex;flex-direction:column;align-items:stretch;gap:var(--space-1);width:100%;padding-top:var(--space-3);border-top:1px solid color-mix(in srgb,var(--ink-contrast) 8%,transparent)}.workspace-nav-item{position:relative;display:flex;align-items:center;justify-content:flex-start;width:100%;height:40px;border:1px solid transparent;border-radius:var(--radius-control-sm);background:transparent;color:color-mix(in srgb,var(--ink-contrast) 40%,transparent);font:inherit;font-size:var(--text-sm-plus);font-weight:var(--weight-medium);padding:0 var(--space-2-5);cursor:pointer}.workspace-nav-item:hover,.workspace-nav-item:focus-visible{outline:none;color:color-mix(in srgb,var(--ink-contrast) 72%,transparent);background:color-mix(in srgb,var(--ink-contrast) 6%,transparent)}.workspace-nav-item.is-active{color:color-mix(in srgb,var(--ink-contrast) 88%,transparent);background:color-mix(in srgb,var(--ink-contrast) 10%,transparent);border-color:color-mix(in srgb,var(--ink-contrast) 12%,transparent)}.workspace-nav-item i{position:absolute;top:50%;right:var(--space-2);transform:translateY(-50%);min-width:17px;height:17px;padding:0 var(--space-1);display:grid;place-items:center;border-radius:var(--radius-pill);background:color-mix(in srgb,var(--ink-contrast) 14%,transparent);color:color-mix(in srgb,var(--ink-contrast) 80%,transparent);font-size:var(--text-2xs);font-style:normal;font-weight:var(--weight-semibold);line-height:1}.workspace-nav-icon{width:20px;height:20px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}@media(hover:hover)and (min-width:641px){.workspace-nav-item:after{content:attr(data-label);margin-left:var(--space-3);color:currentColor;font-size:var(--text-xs);font-weight:var(--weight-semibold);line-height:1.2;white-space:nowrap}}.workspace-practice{min-width:0;min-height:0;display:grid;grid-template-rows:auto minmax(0,1fr) auto;background:var(--surface-card)}.workspace-practice-body{min-height:0;display:grid;grid-template-rows:minmax(0,1fr);overflow:hidden}.ws-toolbar{display:flex;align-items:center;gap:var(--space-3);min-height:56px;padding:0 var(--space-5);border-bottom:1px solid var(--line);background:var(--surface-card)}.ws-mastery{display:flex;flex:1 1 auto;align-items:center;gap:var(--space-2-5);min-width:0;max-width:320px;margin:0 auto}.ws-mastery-label{flex:0 0 auto;font-size:var(--text-sm);font-weight:var(--weight-medium);color:var(--muted);white-space:nowrap}.ws-mastery-track{flex:1 1 auto;min-width:40px;height:4px;overflow:hidden;border-radius:var(--radius-pill);background:var(--panel-soft)}.ws-mastery-fill{display:block;height:100%;border-radius:inherit;background:color-mix(in srgb,var(--accent) 75%,var(--card));transition:width var(--duration-medium) var(--ease-out)}.ws-mastery-value{flex:0 0 auto;min-width:30px;text-align:right;color:var(--soft);font-size:var(--text-sm);font-weight:var(--weight-medium);font-variant-numeric:tabular-nums}.trainer-stage{min-height:0;display:grid;grid-template-rows:auto minmax(0,1fr);gap:var(--space-5);padding:var(--space-5) var(--space-8) 0}.trainer-subhead{display:flex;align-items:flex-start;justify-content:space-between;gap:var(--space-5);min-width:0}.trainer-subhead>div:first-child{display:flex;align-items:baseline;gap:var(--space-2);min-width:0}.trainer-title{color:var(--muted);font-size:var(--text-sm);font-weight:var(--weight-medium)}.trainer-pass{color:var(--muted);font-size:var(--text-xs);font-weight:var(--weight-medium);text-transform:uppercase;letter-spacing:.06em;font-variant-numeric:tabular-nums}.review-queue-stats{display:flex;align-items:baseline;justify-content:flex-end;color:var(--muted);font-size:var(--text-xs);font-weight:var(--weight-medium);font-variant-numeric:tabular-nums}.review-queue-stats span{display:inline-flex;align-items:baseline;gap:5px;padding:0 var(--space-3);white-space:nowrap}.review-queue-stats span+span{border-left:1px solid var(--line)}.review-queue-stats b{color:var(--ink);font-weight:var(--weight-semibold);font-size:var(--text-sm);line-height:1}.review-queue-stats span:first-child b{color:var(--accent)}.review-queue-stats span:last-child{padding-right:0;color:var(--muted)}.trainer-center{min-height:0;grid-row:2;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:var(--space-7);padding:var(--space-6) 0 clamp(var(--space-10),11vh,120px)}.trainer-paragraph{width:min(920px,100%);text-align:center}.trainer-paragraph.is-climax{filter:drop-shadow(0 10px 28px var(--accent-soft))}.trainer-line{margin:.12em 0;color:var(--ink);font-size:clamp(24px,3.1vw,36px);line-height:1.85;font-weight:var(--weight-semibold);letter-spacing:0}.tok-wrap{white-space:nowrap}.tok-space{white-space:normal}.tok{position:relative;appearance:none;display:inline-flex;align-items:baseline;justify-content:center;min-height:1.45em;border:1px solid transparent;border-radius:var(--radius-sm);background:transparent;color:var(--ink);font:inherit;line-height:inherit;padding:1px var(--space-0-5);margin:0;cursor:pointer;vertical-align:baseline}.tok-known:hover,.tok-known:focus-visible,.tok-gap{outline:none;color:var(--accent);border-color:var(--accent-ring);background:var(--accent-soft)}.tok-gap{font-style:italic}.tok-gap.is-current,.tok-gap.is-peeked{background:var(--accent-soft);border-color:color-mix(in srgb,var(--accent) 28%,transparent)}.tok.is-filled{animation:fill-flash var(--duration-flash) var(--ease-standard)}.tok.is-filled .tok-text{color:var(--ink);font-style:normal}.tok-punct{color:var(--ink)}.tok-gloss{position:absolute;top:calc(100% + var(--space-1));left:50%;z-index:5;max-width:220px;padding:2px var(--space-2);border:1px solid var(--accent-ring);border-radius:var(--radius-sm);background:color-mix(in srgb,var(--accent) 12%,var(--surface-card));color:var(--accent);box-shadow:var(--shadow-chip);font-family:var(--font-sans);font-size:var(--text-sm);font-style:normal;font-weight:var(--weight-semibold);line-height:1.25;letter-spacing:0;white-space:nowrap;opacity:0;pointer-events:none;transform:translate(-50%,1px)}.tok:hover .tok-gloss,.tok:focus-visible .tok-gloss{opacity:1;transform:translate(-50%)}@keyframes fill-flash{0%{color:var(--success);background:var(--success-soft);border-color:var(--success-ring)}to{color:var(--ink);background:transparent;border-color:transparent}}.trainer-reference{width:min(620px,100%);margin:0 auto;text-align:center;color:var(--muted);font-size:var(--text-base);line-height:var(--leading-relaxed)}.review-card{display:flex;flex-direction:column;align-items:center;gap:var(--space-4);text-align:center}.review-gloss{color:var(--ink);font-size:clamp(32px,5vw,52px);font-weight:var(--weight-bold);letter-spacing:0}.review-target{color:var(--muted);font-size:var(--text-2xl);font-style:italic}.review-target.is-shown{color:var(--accent);font-style:normal}.review-progress-text{max-width:min(760px,90vw);color:var(--accent);font-size:var(--text-2xl);font-weight:var(--weight-medium);line-height:var(--leading-snug);text-align:center}.trainer-bar{align-self:center;display:flex;align-items:center;justify-content:center;gap:var(--space-4);flex-wrap:wrap;width:fit-content;max-width:calc(100% - var(--space-8));margin:0 auto;padding:var(--space-1);border:0;border-radius:var(--radius-pill);background:transparent}.trainer-bar.is-review-grading{gap:0;width:min(420px,calc(100% - var(--space-8)));max-width:calc(100% - var(--space-8));padding:0}.trainer-review-actions{display:grid;grid-template-columns:repeat(4,minmax(72px,1fr));align-items:center;width:100%;gap:var(--space-1)}.trainer-review-grade{appearance:none;min-height:38px;padding:0 var(--space-2);border:0;border-radius:var(--radius-control-sm);background:transparent;color:var(--soft);font:inherit;font-size:var(--text-sm-plus);font-weight:var(--weight-semibold);line-height:1;cursor:pointer;transition:background var(--duration-fast) var(--ease-standard),color var(--duration-fast) var(--ease-standard)}.trainer-review-grade:hover,.trainer-review-grade:focus-visible{outline:none;background:var(--surface-hover);color:var(--ink)}.trainer-review-grade.is-good{color:var(--accent)}.trainer-review-grade.is-good:hover,.trainer-review-grade.is-good:focus-visible{background:var(--accent-soft);color:var(--accent)}.trainer-recorder,.trainer-hear{appearance:none;display:inline-flex;align-items:center;gap:var(--space-2);min-height:44px;border:1px solid var(--line);border-radius:var(--radius-pill);background:var(--surface-card);color:var(--ink);font:inherit;font-size:var(--text-sm-plus);font-weight:var(--weight-medium);padding:0 var(--space-4);cursor:pointer;-webkit-user-select:none;user-select:none;transition:background var(--duration-fast) var(--ease-standard),border-color var(--duration-fast) var(--ease-standard),color var(--duration-fast) var(--ease-standard),transform var(--duration-press) var(--ease-out)}.trainer-recorder{min-width:360px;justify-content:space-between;gap:var(--space-3);border-color:color-mix(in srgb,var(--accent) 24%,var(--line));background:linear-gradient(180deg,color-mix(in srgb,var(--surface-card) 94%,var(--accent-soft)) 0%,var(--surface-card) 100%);font-weight:var(--weight-semibold);box-shadow:0 1px #ffffffd1 inset,0 18px 42px -32px color-mix(in srgb,var(--accent) 65%,transparent)}.trainer-recorder:hover,.trainer-recorder:focus-visible,.trainer-hear:focus-visible{outline:none;border-color:color-mix(in srgb,var(--accent) 42%,var(--line-strong))}.trainer-recorder:active,.trainer-hear:active{transform:scale(.98)}.trainer-recorder.is-live{color:var(--accent);border-color:color-mix(in srgb,var(--accent) 48%,var(--line-strong));background:var(--accent-soft-strong)}.trainer-recorder-mark{flex:0 0 auto;width:7px;height:7px;border-radius:var(--radius-round);background:var(--accent)}.trainer-recorder.tone-good .trainer-recorder-mark,.trainer-recorder.tone-done .trainer-recorder-mark{display:grid;place-items:center;width:18px;height:18px;background:var(--accent);color:var(--ink-contrast);font-size:var(--text-xs);line-height:1}.trainer-recorder-label{flex:0 0 auto;min-width:82px;text-align:left}.trainer-wave{flex:1 1 auto;display:flex;align-items:center;justify-content:flex-end;gap:4px;min-width:120px;height:28px}.trainer-wave span{display:block;width:3px;min-height:4px;border-radius:var(--radius-pill);background:color-mix(in srgb,var(--accent) 42%,var(--line-strong))}.trainer-recorder.is-live .trainer-wave span{background:var(--accent);animation:trainer-wave-listening .62s var(--ease-standard) infinite;transform-origin:center}.trainer-recorder.is-live .trainer-wave span:nth-child(2n){animation-delay:90ms}.trainer-recorder.is-live .trainer-wave span:nth-child(3n){animation-delay:.17s}.trainer-recorder.is-live .trainer-wave span:nth-child(4n){animation-delay:.25s}@keyframes trainer-wave-listening{0%,to{transform:scaleY(.46);opacity:.68}45%{transform:scaleY(1.08);opacity:1}}@media(prefers-reduced-motion:reduce){.trainer-recorder.is-live .trainer-wave span{animation:none}}.trainer-bar-meta{display:flex;align-items:center;justify-content:center;gap:var(--space-5);width:100%}.trainer-status{min-width:0;padding:0 var(--space-1);color:var(--muted);text-align:center;font-size:var(--text-sm-plus);font-weight:var(--weight-medium);font-variant-numeric:tabular-nums}.trainer-hear{min-height:28px;border-color:transparent;background:transparent;color:var(--soft);padding-inline:var(--space-2)}.trainer-hear:hover,.trainer-hear:focus-visible{color:var(--ink);background:var(--surface-hover);border-color:transparent}.trainer-status.tone-good,.trainer-status.tone-done{color:var(--success)}.trainer-status.tone-listening{color:var(--accent)}.trainer-heard{min-height:22px;margin:var(--space-2) 0 var(--space-5);color:var(--muted);text-align:center;font-size:var(--text-sm-plus)}.trainer-explain{appearance:none;display:inline-flex;align-items:center;gap:var(--space-2);min-height:28px;border:1px solid transparent;border-radius:var(--radius-pill);background:transparent;color:var(--soft);font:inherit;font-size:var(--text-sm-plus);font-weight:var(--weight-medium);padding-inline:var(--space-2);cursor:pointer;-webkit-user-select:none;user-select:none}.trainer-explain:hover,.trainer-explain:focus-visible{outline:none;color:var(--ink);background:var(--surface-hover)}.trainer-explain-icon{width:15px;height:15px;color:var(--accent)}.trainer-empty{min-height:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:var(--space-2);padding:var(--space-8);text-align:center;color:var(--muted)}.trainer-empty h2{margin:0;color:var(--ink);font-size:var(--text-4xl)}.trainer-empty p{max-width:32em;margin:0;font-size:var(--text-base);line-height:var(--leading-relaxed)}.library{min-height:0;overflow-y:auto;overscroll-behavior:contain;scrollbar-width:thin;scrollbar-color:var(--line-strong) transparent}.library::-webkit-scrollbar{width:4px}.library::-webkit-scrollbar-thumb{background:var(--line-strong);border-radius:var(--radius-pill)}.library-head{padding:var(--space-7) var(--space-8) var(--space-5);border-bottom:1px solid var(--line)}.library-head h2{width:min(920px,100%);margin:0 auto;color:var(--ink);font-size:var(--text-xl);font-weight:var(--weight-semibold)}.library-head p{width:min(920px,100%);margin:var(--space-1) auto 0;color:var(--muted);font-size:var(--text-sm-plus);font-variant-numeric:tabular-nums}.library-list{width:min(620px,100%);margin:0;padding:var(--space-4) 0 var(--space-10);list-style:none}.library-study{display:grid;grid-template-columns:minmax(420px,620px) minmax(260px,360px);align-items:start;gap:var(--space-12);width:min(1080px,calc(100% - var(--space-16)));margin-left:var(--space-4)}.library-section-title{margin:var(--space-8) var(--space-2-5) var(--space-2);color:var(--soft);font-size:var(--text-base);font-weight:var(--weight-semibold);line-height:var(--leading-snug)}.library-section-title:first-child{margin-top:var(--space-2)}.library-entry{position:relative;border:1px solid transparent;border-radius:var(--radius-sm)}.library-entry+.library-entry{margin-top:var(--space-1)}.library-entry-select{display:grid;grid-template-columns:24px minmax(0,1fr);align-items:start;column-gap:var(--space-2-5);width:100%;padding:var(--space-2) var(--space-2-5);padding-right:calc(var(--space-2-5) + var(--space-7));border:none;border-radius:inherit;background:transparent;color:var(--ink);font:inherit;text-align:left;cursor:pointer;transition:var(--transition-surface)}.library-entry-select:hover,.library-entry-select:focus-visible{outline:none;background:var(--surface-hover)}.library-entry.is-active{border-color:transparent;background:var(--accent-soft)}.library-entry.is-active .library-entry-select{background:transparent}.library-entry.is-mastered,.library-entry.is-progress{border-color:transparent}.library-entry.is-new{opacity:.86}.library-entry.is-new:hover,.library-entry.is-new:focus-within{opacity:1}.library-entry.is-active,.library-entry.is-active:hover{opacity:1}.library-entry-num{display:grid;place-items:center;width:22px;height:22px;margin-top:1px;border:1px solid var(--line-strong);border-radius:var(--radius-round);color:var(--muted);font-size:var(--text-xs);font-weight:var(--weight-medium);font-variant-numeric:tabular-nums}.library-entry.is-active .library-entry-num{border-color:var(--accent-ring);color:var(--accent)}.library-entry.is-mastered .library-entry-num{border-color:transparent;color:var(--muted);font-size:var(--text-xs-plus)}.library-entry-body{min-width:0;display:flex;flex-direction:column;gap:var(--space-0-5)}.library-entry-target{color:var(--ink);font-size:var(--text-sm-plus);font-weight:var(--weight-medium);line-height:var(--leading-normal)}.library-entry-english{color:var(--muted);font-size:var(--text-sm);line-height:var(--leading-normal)}.library-entry-track{display:block;height:2px;width:min(280px,100%);margin-top:var(--space-1-5);border-radius:var(--radius-pill)}.library-entry-track>span{display:block;height:100%;border-radius:inherit;background:var(--accent);opacity:.55;transition:width var(--duration-medium) var(--ease-out)}.library-entry-hear{position:absolute;top:var(--space-1-5);right:var(--space-2);display:grid;place-items:center;width:30px;height:30px;border:none;border-radius:var(--radius-control-sm);background:transparent;color:var(--muted);cursor:pointer;opacity:0;transition:opacity var(--duration-fast) var(--ease-snap),color var(--duration-tap) var(--ease-snap),background-color var(--duration-tap) var(--ease-snap)}.library-inspector{position:sticky;top:var(--space-6);display:grid;gap:var(--space-5);padding-top:var(--space-8);color:var(--soft)}.library-inspector-kicker{display:block;margin-bottom:var(--space-2);color:var(--muted);font-size:var(--text-xs);font-weight:var(--weight-semibold);letter-spacing:.07em;line-height:var(--leading-snug);text-transform:uppercase}.library-inspector h3{margin:0;color:var(--ink);font-size:var(--text-2xl);font-weight:var(--weight-semibold);line-height:1.45}.library-inspector p{margin:var(--space-2) 0 0;color:var(--muted);font-size:var(--text-base);line-height:var(--leading-relaxed)}.library-inspector-progress{display:grid;gap:var(--space-2);color:var(--muted);font-size:var(--text-sm);font-weight:var(--weight-medium)}.library-inspector-progress .library-entry-track{width:100%;margin:0;background:var(--surface-panel)}.library-grammar{display:grid;gap:var(--space-2);padding-top:var(--space-1)}.library-grammar h4{margin:0;color:var(--soft);font-size:var(--text-sm);font-weight:var(--weight-semibold);line-height:var(--leading-snug)}.library-grammar ul{display:grid;gap:var(--space-2);margin:0;padding-left:var(--space-4)}.library-grammar li{color:var(--muted);font-size:var(--text-sm-plus);line-height:var(--leading-relaxed)}.library-inspector-hear{appearance:none;justify-self:start;display:inline-flex;align-items:center;gap:var(--space-2);min-height:34px;padding:0 var(--space-3);border:1px solid var(--line);border-radius:var(--radius-pill);background:var(--surface-card);color:var(--soft);font:inherit;font-size:var(--text-sm-plus);font-weight:var(--weight-medium);cursor:pointer}.library-inspector-hear:hover,.library-inspector-hear:focus-visible{outline:none;color:var(--ink);background:var(--surface-hover);border-color:var(--line-strong)}.library-entry:hover .library-entry-hear,.library-entry-hear:focus-visible{opacity:1}.library-entry-hear:hover,.library-entry-hear:focus-visible{outline:none;color:var(--accent);background:var(--accent-soft)}.library-hear-icon{width:18px;height:18px;fill:none;stroke:currentColor;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round}@media(hover:none){.library-entry-hear{opacity:.55}}@media(max-width:960px){.trainer-shell,.trainer-shell.workspace-mode-review,.trainer-shell.workspace-mode-library{grid-template-columns:144px minmax(0,1fr)}.mastery-rail{display:none}.workspace-nav{padding-inline:var(--space-2)}.workspace-nav-item{width:38px;height:38px}.trainer-stage,.library-head{padding-inline:var(--space-5)}.library-study{grid-template-columns:1fr;width:calc(100% - var(--space-10));gap:var(--space-4)}.library-list{width:100%}.library-inspector{position:static;padding:0 0 var(--space-8)}.library-entry-select{padding-inline:var(--space-5);padding-right:calc(var(--space-5) + var(--space-7))}.library-entry-hear{right:var(--space-3)}}@media(max-width:640px){.trainer-shell,.trainer-shell.workspace-mode-review,.trainer-shell.workspace-mode-library{grid-template-columns:1fr;grid-template-rows:auto minmax(0,1fr)}.workspace-nav{grid-row:1;flex-direction:row;justify-content:space-between;align-items:center;gap:var(--space-3);min-height:56px;padding:var(--space-2) var(--space-3);border-right:0;border-bottom:1px solid color-mix(in srgb,var(--ink-contrast) 12%,transparent)}.workspace-nav-top{grid-template-columns:auto minmax(118px,150px);align-items:center;gap:var(--space-2)}.workspace-nav-main{flex-direction:row;justify-content:flex-end;padding-right:52px}.workspace-practice{grid-row:2}.ws-toolbar{padding-inline:var(--space-3)}.ws-mastery{max-width:none;gap:var(--space-2)}.ws-mastery-label,.ws-mastery-value{font-size:var(--text-sm)}.trainer-stage{padding:var(--space-4) var(--space-4) 0}.trainer-line{font-size:clamp(21px,6.1vw,27px);line-height:1.72}.trainer-bar{max-width:calc(100% - var(--space-4))}.trainer-status{order:3;width:100%}}:root{color-scheme:light;--bg: #f7f7f5;--ink: #1d1d1b;--ink-contrast: #ffffff;--muted: #908f89;--soft: #62615c;--line: rgba(30, 24, 15, .08);--line-strong: rgba(30, 24, 15, .14);--good: var(--accent);--gap: #2f6df0;--card: #ffffff;--panel-soft: #f0f0ec;--voice-accent: var(--accent);--white: #ffffff;--accent: var(--gap);--accent-contrast: var(--ink-contrast);--accent-gradient-end: #5b8bff;--success: var(--accent);--success-contrast: var(--white);--success-gradient-end: var(--accent-gradient-end);--warning: #f97316;--danger: #dc2626;--danger-muted: #c0392b;--accent-soft: color-mix(in srgb, var(--accent) 7%, transparent);--accent-soft-strong: color-mix(in srgb, var(--accent) 12%, transparent);--accent-ring: color-mix(in srgb, var(--accent) 34%, transparent);--success-soft: color-mix(in srgb, var(--accent) 7%, transparent);--success-soft-strong: color-mix(in srgb, var(--accent) 12%, transparent);--success-text: var(--accent);--success-ring: color-mix(in srgb, var(--accent) 34%, transparent);--selected-line: color-mix(in srgb, var(--line-strong) 72%, transparent);--surface-page: var(--bg);--surface-card: var(--card);--surface-panel: var(--panel-soft);--surface-hover: #f2f2ef;--surface-hover-strong: #ececea;--surface-popover: rgba(255, 255, 255, .97);--surface-glass: rgba(255, 255, 255, .82);--surface-glass-strong: rgba(255, 255, 255, .9);--surface-overlay: rgba(24, 22, 18, .4);--surface-desk: #e3e9f1;--surface-desk-hi: #f0f4f8;--surface-desk-lo: #d5dee9;--font-sans: "Inter", ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;--font-serif: "Fraunces", Georgia, serif;--text-2xs: 10px;--text-xs: 11px;--text-xs-plus: 11.5px;--text-sm: 12px;--text-sm-plus: 13px;--text-md: 14px;--text-base: 15px;--text-lg: 16px;--text-xl: 17px;--text-2xl: 18px;--text-3xl: 19px;--text-4xl: 20px;--text-5xl: 24px;--text-display-sm: 36px;--text-display-md: 44px;--text-display: 64px;--weight-normal: 400;--weight-medium: 500;--weight-medium-strong: 540;--weight-semibold-soft: 560;--weight-semibold: 600;--weight-semibold-strong: 640;--weight-bold: 700;--weight-bold-strong: 720;--weight-extra-bold: 760;--weight-display: 780;--weight-black: 800;--leading-tight: 1.05;--leading-snug: 1.15;--leading-normal: 1.4;--leading-relaxed: 1.5;--leading-copy: 1.58;--leading-reading: 1.62;--space-0: 0;--space-px: 1px;--space-0-5: 2px;--space-1: 4px;--space-1-5: 6px;--space-2: 8px;--space-2-5: 10px;--space-3: 12px;--space-3-5: 14px;--space-4: 16px;--space-4-5: 18px;--space-5: 20px;--space-5-5: 22px;--space-6: 24px;--space-7: 28px;--space-8: 32px;--space-10: 40px;--space-12: 48px;--space-13: 52px;--space-14: 56px;--space-15: 60px;--space-16: 64px;--radius-2xs: 2px;--radius-xs: 4px;--radius-sm: 7px;--radius-control-sm: 9px;--radius-control-md: 10px;--radius-panel: 12px;--radius-control: 13px;--radius-menu: 14px;--radius-surface: 16px;--radius-popover: 18px;--radius-card: 20px;--radius-dock: 22px;--radius-pill: 999px;--radius-round: 50%;--blur-overlay: 4px;--blur-surface: 16px;--blur-surface-strong: 18px;--shadow-chip: 0 6px 18px rgba(28, 26, 22, .05);--shadow-segmented: 0 8px 24px rgba(28, 26, 22, .05);--shadow-menu: 0 12px 30px rgba(28, 26, 22, .09);--shadow-popover: 0 16px 44px rgba(28, 26, 22, .1), 0 3px 10px rgba(28, 26, 22, .05);--shadow-card: 0 1px 0 rgba(255, 255, 255, .6) inset, 0 22px 48px -34px rgba(28, 26, 22, .26);--shadow-window: 0 1px 0 rgba(255, 255, 255, .6) inset, 0 1px 4px rgba(28, 26, 22, .04), 0 24px 56px -30px rgba(28, 26, 22, .25);--shadow-window-back: 0 1px 0 rgba(255, 255, 255, .5) inset, 0 14px 36px -28px rgba(28, 26, 22, .2);--shadow-dock: 0 12px 34px rgba(28, 26, 22, .08), 0 2px 6px rgba(28, 26, 22, .04);--shadow-drawer: -20px 0 48px rgba(28, 26, 22, .13);--shadow-modal: 0 18px 50px rgba(20, 18, 14, .24);--shadow-primary: 0 10px 22px -12px rgba(28, 26, 22, .42);--shadow-progress: 0 0 10px color-mix(in srgb, var(--accent) 40%, transparent);--shadow-button: 0 1px 2px rgba(24, 33, 48, .06);--shadow-focus: 0 0 0 2px var(--accent-ring);--duration-tap: 60ms;--duration-press: 80ms;--duration-fast: .12s;--duration-base: .16s;--duration-medium: .24s;--duration-slow: .4s;--duration-slower: .5s;--duration-flash: .65s;--ease-standard: ease;--ease-out: cubic-bezier(.23, 1, .32, 1);--ease-out-strong: cubic-bezier(.22, 1, .36, 1);--ease-snap: cubic-bezier(.4, 0, .2, 1);--ease-overshoot: cubic-bezier(.22, .9, .3, 1.3);--ease-in-out: cubic-bezier(.77, 0, .175, 1);--transition-color: color var(--duration-fast) var(--ease-standard);--transition-surface: background var(--duration-fast) var(--ease-standard), border-color var(--duration-fast) var(--ease-standard)}:root[data-theme=dark]{color-scheme:dark;--bg: #18181a;--ink: #ededf0;--ink-contrast: #18181a;--muted: #82828a;--soft: #a6a6ae;--line: rgba(255, 255, 255, .09);--line-strong: rgba(255, 255, 255, .16);--good: var(--accent);--gap: #5b8bff;--card: #1f1f22;--panel-soft: #27272b;--voice-accent: var(--accent);--success-soft-strong: color-mix(in srgb, var(--accent) 16%, transparent);--success-text: var(--accent);--surface-hover: rgba(255, 255, 255, .05);--surface-hover-strong: var(--panel-soft);--surface-popover: rgba(24, 28, 34, .96);--surface-glass: rgba(24, 28, 34, .72);--surface-glass-strong: rgba(24, 28, 34, .86);--surface-overlay: rgba(0, 0, 0, .54);--shadow-chip: 0 8px 24px rgba(0, 0, 0, .28);--shadow-segmented: 0 10px 32px rgba(0, 0, 0, .26);--shadow-menu: 0 16px 40px rgba(0, 0, 0, .34);--shadow-popover: 0 22px 58px rgba(0, 0, 0, .42), 0 4px 14px rgba(0, 0, 0, .24);--shadow-card: 0 1px 0 rgba(255, 255, 255, .04) inset, 0 30px 60px -34px rgba(0, 0, 0, .65);--shadow-dock: 0 16px 44px rgba(0, 0, 0, .4), 0 2px 8px rgba(0, 0, 0, .3);--shadow-drawer: -24px 0 60px rgba(0, 0, 0, .42);--shadow-button: 0 1px 2px rgba(0, 0, 0, .24)}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:var(--duration-fast)!important;scroll-behavior:auto!important}}*{box-sizing:border-box}html,body{margin:0;background:var(--bg);color:var(--ink);font-family:var(--font-sans);-webkit-font-smoothing:antialiased}button,a,[role=button],input,textarea,select,summary{transition:color var(--duration-tap) var(--ease-snap),background-color var(--duration-tap) var(--ease-snap),border-color var(--duration-tap) var(--ease-snap),fill var(--duration-tap) var(--ease-snap),stroke var(--duration-tap) var(--ease-snap),box-shadow var(--duration-fast) var(--ease-snap),opacity var(--duration-fast) var(--ease-snap),transform var(--duration-fast) var(--ease-snap)}button:active,[role=button]:active{transform:scale(.97)}
