/*! tailwindcss v4.3.3 | MIT License | https://tailwindcss.com */
@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-rotate-x:initial;--tw-rotate-y:initial;--tw-rotate-z:initial;--tw-skew-x:initial;--tw-skew-y:initial;--tw-border-style:solid;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-blur:initial;--tw-brightness:initial;--tw-contrast:initial;--tw-grayscale:initial;--tw-hue-rotate:initial;--tw-invert:initial;--tw-opacity:initial;--tw-saturate:initial;--tw-sepia:initial;--tw-drop-shadow:initial;--tw-drop-shadow-color:initial;--tw-drop-shadow-alpha:100%;--tw-drop-shadow-size:initial;--tw-backdrop-blur:initial;--tw-backdrop-brightness:initial;--tw-backdrop-contrast:initial;--tw-backdrop-grayscale:initial;--tw-backdrop-hue-rotate:initial;--tw-backdrop-invert:initial;--tw-backdrop-opacity:initial;--tw-backdrop-saturate:initial;--tw-backdrop-sepia:initial}}}@layer theme{:root,:host{--font-sans:-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", "Noto Sans", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";--font-mono:ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;--text-sm:.875rem;--text-sm--line-height:calc(1.25 / .875);--text-base:1rem;--text-lg:1.125rem;--text-xl:1.25rem;--radius-sm:.25rem;--radius-md:.375rem;--radius-lg:.5rem;--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono)}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;tab-size:4;line-height:1.5;font-family:var(--default-font-family,-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", "Noto Sans", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring:where(:not(iframe)){outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab, red, red)){::placeholder{color:color-mix(in oklab, currentcolor 50%, transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::file-selector-button{appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}}@layer components;@layer utilities{.\!visible{visibility:visible!important}.collapse{visibility:collapse}.visible{visibility:visible}.absolute{position:absolute}.fixed{position:fixed}.static{position:static}.sticky{position:sticky}.container{width:100%}@media (width>=40rem){.container{max-width:40rem}}@media (width>=48rem){.container{max-width:48rem}}@media (width>=64rem){.container{max-width:64rem}}@media (width>=80rem){.container{max-width:80rem}}@media (width>=96rem){.container{max-width:96rem}}.block{display:block}.flex{display:flex}.grid{display:grid}.hidden{display:none}.inline{display:inline}.inline-flex{display:inline-flex}.table{display:table}.shrink{flex-shrink:1}.grow{flex-grow:1}.transform{transform:var(--tw-rotate-x,) var(--tw-rotate-y,) var(--tw-rotate-z,) var(--tw-skew-x,) var(--tw-skew-y,)}.resize{resize:both}.border{border-style:var(--tw-border-style);border-width:1px}.text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.italic{font-style:italic}.ring{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.filter{filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.backdrop-filter{-webkit-backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,)}}:root,[data-theme=d4]{--color-bg:#faf7f2;--color-bg-2:#f2efe7;--color-card:#fff;--color-surface:#f4efe4;--color-surface-2:#e8e3d6;--color-border:#dfdacd;--color-border-strong:#33482f;--color-text:#1c2b1a;--color-text-muted:#4e5e4c;--color-accent:#435e3d;--color-accent-2:#5f8059;--color-accent-ink:#33482f;--color-on-accent:#fff;--color-accent-soft:#e4e9cb;--color-brand:#9faa74;--color-brand-2:#bac592;--color-brand-soft:#e5eac3;--color-selected:#fbe8dc;--color-ok:#346330;--color-warn-soft:#fbf5e2;--color-icon:#33482f;--color-icon-tone:#f6e6c8;--color-icon-fill-a:#7eaecd;--color-icon-fill-b:#7ca66e;--color-icon-accent:#cd5825;--color-shade:#2d4229}[data-theme=d5]{--color-bg:#fcf8f6;--color-bg-2:#f7f1ea;--color-card:#fff;--color-surface:#fcebf1;--color-surface-2:#f0e6e0;--color-border:#ede2db;--color-border-strong:#702f3d;--color-text:#2b1d20;--color-text-muted:#645054;--color-accent:#a7495c;--color-accent-2:#cc7486;--color-accent-ink:#702f3d;--color-on-accent:#fff;--color-accent-soft:#fcebf1;--color-brand:#9faa74;--color-brand-2:#c4ce9e;--color-brand-soft:#e6ebd0;--color-selected:#f5dfdf;--color-ok:#32642d;--color-warn-soft:#fdf5e8;--color-icon:#702f3d;--color-icon-tone:#fcebf1;--color-icon-fill-a:#e9a9b8;--color-icon-fill-b:#a9b57c;--color-icon-accent:#4a6644;--color-shade:#723441}[data-theme=d3]{--color-bg:#f3f8fc;--color-bg-2:#f8faee;--color-card:#fff;--color-surface:#e6f1fa;--color-surface-2:#dbe8f4;--color-border:#d3e3f2;--color-border-strong:#1b5388;--color-text:#10253a;--color-text-muted:#475d73;--color-accent:#5798d7;--color-accent-2:#8dbcea;--color-accent-ink:#1b5388;--color-on-accent:#0c2036;--color-accent-soft:#d6e6f6;--color-brand:#b9c255;--color-brand-2:#d3da7e;--color-brand-soft:#e6ebb0;--color-selected:#cde0f3;--color-ok:#2f6f3e;--color-warn-soft:#f4f7dc;--color-icon:#1b5388;--color-icon-tone:#d6e6f6;--color-icon-fill-a:#8fbbe6;--color-icon-fill-b:#cfd88a;--color-icon-accent:#a3ad3f;--color-shade:#1b5388}:root{--grad-cta:var(--color-accent);--grad-progress:var(--color-brand);--grad-page:linear-gradient(180deg, var(--color-bg), var(--color-bg-2));--shadow-card:0 1px 2px var(--color-shade), 0 4px 14px var(--color-shade)}@supports (color:color-mix(in lab, red, red)){:root{--shadow-card:0 1px 2px color-mix(in srgb, var(--color-shade) 8%, transparent), 0 4px 14px color-mix(in srgb, var(--color-shade) 7%, transparent)}}:root{--shadow-ctl:0 1px 2px var(--color-shade)}@supports (color:color-mix(in lab, red, red)){:root{--shadow-ctl:0 1px 2px color-mix(in srgb, var(--color-shade) 10%, transparent)}}:root{--shadow-cta:0 2px 6px var(--color-shade)}@supports (color:color-mix(in lab, red, red)){:root{--shadow-cta:0 2px 6px color-mix(in srgb, var(--color-shade) 22%, transparent)}}:root{--shadow-float:0 8px 24px var(--color-shade)}@supports (color:color-mix(in lab, red, red)){:root{--shadow-float:0 8px 24px color-mix(in srgb, var(--color-shade) 14%, transparent)}}:root{--font-ui:"Plus Jakarta Sans", system-ui, -apple-system, sans-serif;--font-head:"Plus Jakarta Sans", "Lexend", system-ui, sans-serif;--font-display:"Plus Jakarta Sans", "Lexend", system-ui, sans-serif;--font-read:"Newsreader", Georgia, serif;--font-hand:"Patrick Hand", "Dancing Script", cursive;--font-script:"Dancing Script", cursive;--text-sm:14px;--text-base:16px;--text-read:19px;--text-lg:22px;--text-xl:30px;--leading-read:1.7;--space-1:4px;--space-2:8px;--space-3:12px;--space-4:16px;--space-6:24px;--space-8:32px;--radius-sm:8px;--radius-md:16px;--radius-lg:26px;--radius-pill:999px;--width-nav:200px;--width-rail:68px;--width-aside:300px;--width-side:600px;--width-read:68ch;--safe-top:env(safe-area-inset-top,0px);--safe-right:env(safe-area-inset-right,0px);--safe-bottom:env(safe-area-inset-bottom,0px);--safe-left:env(safe-area-inset-left,0px);--bottom-nav-h:56px;--keybar-h:32px;--lesson-bar-h:52px;--touch-min:44px;--content-max:1360px;--extra-bottom:0px;--dock-h:var(--keybar-h)}@media (width>=2200px){:root{--width-side:760px}}@media (hover:none) and (pointer:coarse){:root{--dock-h:0px}}@media (width<=640px){:root{--dock-h:calc(var(--bottom-nav-h) + var(--safe-bottom))}body[data-lesson-bar]{--dock-h:calc(var(--lesson-bar-h) + var(--safe-bottom))}body[data-no-tabbar]{--dock-h:var(--safe-bottom)}}.content-narrow{--content-max:1080px}@font-face{font-family:Geomanist;src:url(/fonts/geomanist-400.woff2)format("woff2");font-weight:400;font-display:swap}@font-face{font-family:Geomanist;src:url(/fonts/geomanist-500.woff2)format("woff2");font-weight:500 600;font-display:swap}@font-face{font-family:Geomanist;src:url(/fonts/geomanist-700.woff2)format("woff2");font-weight:700;font-display:swap}@font-face{font-family:Geomanist;src:url(/fonts/geomanist-900.woff2)format("woff2");font-weight:800 900;font-display:swap}@font-face{font-family:Work Sans;src:url(/fonts/work-sans-400.woff2)format("woff2");font-weight:400;font-display:swap}@font-face{font-family:Work Sans;src:url(/fonts/work-sans-400-italic.woff2)format("woff2");font-weight:400;font-style:italic;font-display:swap}@font-face{font-family:Work Sans;src:url(/fonts/work-sans-500.woff2)format("woff2");font-weight:500;font-display:swap}@font-face{font-family:Work Sans;src:url(/fonts/work-sans-600.woff2)format("woff2");font-weight:600;font-display:swap}@font-face{font-family:Work Sans;src:url(/fonts/work-sans-700.woff2)format("woff2");font-weight:700;font-display:swap}@font-face{font-family:Work Sans;src:url(/fonts/work-sans-800.woff2)format("woff2");font-weight:800 900;font-display:swap}@font-face{font-family:Chinh Rounded VN;src:url(/fonts/chinh-rounded-300.woff2)format("woff2");font-weight:100 300;font-display:swap}@font-face{font-family:Chinh Rounded VN;src:url(/fonts/chinh-rounded-400.woff2)format("woff2");font-weight:400 500;font-display:swap}@font-face{font-family:Chinh Rounded VN;src:url(/fonts/chinh-rounded-600.woff2)format("woff2");font-weight:600;font-display:swap}@font-face{font-family:Chinh Rounded VN;src:url(/fonts/chinh-rounded-700.woff2)format("woff2");font-weight:700;font-display:swap}@font-face{font-family:Chinh Rounded VN;src:url(/fonts/chinh-rounded-800.woff2)format("woff2");font-weight:800 900;font-display:swap}@font-face{font-family:BT Beau Sans;src:url(/fonts/beau-sans-400.woff2)format("woff2");font-weight:400;font-display:swap}@font-face{font-family:BT Beau Sans;src:url(/fonts/beau-sans-400-italic.woff2)format("woff2");font-weight:400;font-style:italic;font-display:swap}@font-face{font-family:BT Beau Sans;src:url(/fonts/beau-sans-500.woff2)format("woff2");font-weight:500 600;font-display:swap}@font-face{font-family:BT Beau Sans;src:url(/fonts/beau-sans-700.woff2)format("woff2");font-weight:700;font-display:swap}@font-face{font-family:BT Beau Sans;src:url(/fonts/beau-sans-800.woff2)format("woff2");font-weight:800 900;font-display:swap}.settings-font-slot+.settings-font-slot{margin-top:var(--space-4)}.settings-font-head{align-items:baseline;gap:var(--space-2);margin-bottom:var(--space-2);flex-wrap:wrap;display:flex}.settings-font-head .muted{font-size:var(--text-sm)}.settings-font{font:inherit;font-size:var(--text-sm);gap:var(--space-1);padding:var(--space-3);border:1px solid var(--color-border);border-radius:var(--radius-md);background:var(--color-card);color:var(--color-text-muted,var(--color-text));text-align:left;cursor:pointer;flex-direction:column;font-weight:600;display:flex}.settings-font.on{outline:2px solid var(--color-accent-ink);outline-offset:1px;color:var(--color-text)}.settings-font .sample{color:var(--color-text);font-size:18px;font-weight:400;line-height:1.3}*{box-sizing:border-box}body{font:var(--text-base)/1.5 var(--font-ui);color:var(--color-text);background:var(--color-bg) var(--grad-page) fixed;margin:0}a{color:inherit}h1,h2,h3{margin:0 0 var(--space-3);line-height:1.25;font-family:var(--font-head);font-weight:800}h1{font-size:var(--text-xl)}h2{font-size:var(--text-lg)}h3{font-size:var(--text-base)}p{margin:0 0 var(--space-3)}.muted{color:var(--color-text-muted);font-size:var(--text-sm)}.accent{color:var(--color-accent-ink)}.hidden{display:none!important}.ico{fill:none;stroke:currentColor;stroke-linecap:round;stroke-linejoin:round}.li{stroke-width:1.6px;vertical-align:middle;width:22px;height:22px}.li .tf{stroke:none}.li .tf .t{fill:var(--color-icon-tone)}.li .tf .b{fill:var(--color-icon-fill-a)}@supports (color:color-mix(in lab, red, red)){.li .tf .b{fill:color-mix(in srgb, var(--color-icon-fill-a) 62%, #fff)}}.li .tf .g{fill:var(--color-icon-fill-b)}@supports (color:color-mix(in lab, red, red)){.li .tf .g{fill:color-mix(in srgb, var(--color-icon-fill-b) 62%, #fff)}}.li .tf .r{fill:#eaa893}.li .tf .y{fill:#f1d08a}.li .tf .o{fill:#ecbb8f}.li .ys{stroke:#e0a626}.li .ac{stroke:var(--color-icon-accent)}.li .acf{fill:var(--color-icon-accent)}@supports (color:color-mix(in lab, red, red)){.li .acf{fill:color-mix(in srgb, var(--color-icon-accent) 82%, #fff)}}.li .acf{stroke:none}.li .dot{fill:currentColor;stroke:none}.li.fill{fill:currentColor}.app{grid-template-columns:var(--width-nav) minmax(0, 1fr);min-height:100dvh;display:grid}.app.rail{grid-template-columns:var(--width-rail) minmax(0, 1fr)}.nav{border-right:1px solid var(--color-border);height:100dvh;padding:var(--space-3) var(--space-3);background:#ffffffb8;flex-direction:column;align-self:start;gap:6px;display:flex;position:sticky;top:0;overflow:hidden auto}.nav .brand{align-items:center;gap:var(--space-2);font-weight:800;font-family:var(--font-head);margin-bottom:var(--space-3);font-size:14px;text-decoration:none;display:flex}.nav .logo{object-fit:contain;flex:none;width:32px;height:32px}.nav .item{color:var(--color-text-muted);border-radius:12px;align-items:center;gap:12px;padding:9px 12px;font-size:15px;font-weight:500;text-decoration:none;display:flex}.nav .item:hover{background:var(--color-surface);color:var(--color-text)}.nav .item.on{background:var(--color-accent-soft);color:var(--color-text);font-weight:600}.nav .item kbd{margin-left:auto;padding:1px 4px;font-size:10px}.nav .ico{text-align:center;width:26px;color:var(--color-icon);flex:none}.nav .item .ico{height:26px}.nav .item .nav-img{object-fit:contain;width:26px;height:26px;display:block}.nav .grow{flex:1}.nav .resume{background:var(--color-surface);box-shadow:none;padding:10px 12px;font-size:12px}.nav .resume b{font-size:13px}.nav .me{align-items:center;gap:var(--space-2);font-size:12.5px;display:flex}.avatar{background:var(--color-brand-soft);border:2px solid var(--color-card);width:34px;height:34px;box-shadow:var(--shadow-ctl);border-radius:50%;flex:none;place-items:center;font-size:13px;font-weight:700;display:grid}.avatar.lg{width:68px;height:68px;font-size:26px}.nav .railtoggle{align-self:flex-start}.nav-resizer{cursor:col-resize;z-index:20;width:5px;height:100%;transition:background .15s;position:absolute;top:0;right:0}.nav-resizer:hover,.nav-resizer.dragging{background:var(--color-accent)}.app.rail .nav-resizer,.app.rail .nav .label,.app.rail .nav .resume,.app.rail .nav .me .txt{display:none}.app.rail .nav .item{padding:var(--space-2);justify-content:center}.content{min-width:0;padding:var(--space-6) var(--space-6) 60px;padding-left:calc(var(--space-6) + var(--safe-left));padding-right:calc(var(--space-6) + var(--safe-right))}.content.flush{padding:0;padding-left:var(--safe-left);padding-right:var(--safe-right)}.dash{grid-template-columns:minmax(0, 1fr) var(--width-aside);gap:var(--space-6);padding:var(--space-6);align-items:start;display:grid}.dash.solo{grid-template-columns:minmax(0,1fr)}.dash .main>section+section,.dash .aside>section+section{margin-top:var(--space-6)}.pagehead{align-items:center;gap:var(--space-4);margin-bottom:var(--space-6);display:flex}.pagehead h1{flex:1;margin:0}.search{align-items:center;gap:var(--space-2);border:1px solid var(--color-border);background:var(--color-card);width:280px;box-shadow:var(--shadow-ctl);border-radius:var(--radius-pill);padding:0 var(--space-4);color:var(--color-icon);display:flex}.search .li{flex:none;width:18px;height:18px}.search input[type=text]{padding:var(--space-2) 0;width:100%;font:inherit;font-size:var(--text-sm);color:var(--color-text);background:0 0;border:0;outline:0}.sec-head{margin-bottom:var(--space-3);justify-content:space-between;align-items:baseline;display:flex}.sec-head h2{margin:0}.sec-head a{font-size:var(--text-sm);color:var(--color-accent-ink)}.btn{font:inherit;font-size:var(--text-sm);padding:var(--space-2) var(--space-4);border:1px solid var(--color-border);background:var(--color-card);border-radius:var(--radius-pill);box-shadow:var(--shadow-ctl);cursor:pointer;color:var(--color-text);justify-content:center;align-items:center;gap:6px;font-weight:600;text-decoration:none;display:inline-flex}.btn:hover{background:var(--color-surface)}.btn.primary,.btn.accent{background:var(--grad-cta);border-color:var(--color-accent);color:var(--color-on-accent);box-shadow:var(--shadow-cta)}.btn.primary:hover,.btn.accent:hover{background:var(--color-accent-ink);border-color:var(--color-accent-ink)}.btn.small{padding:var(--space-1) var(--space-3);font-size:13px}.btn.on{background:var(--color-accent-soft);border-color:var(--color-accent-ink)}.btn .li{width:18px;height:18px}.btn.icon{padding:var(--space-2);width:40px;height:40px;color:var(--color-icon);border-radius:16px}input[type=text],input[type=password]{font:inherit;width:100%;padding:var(--space-3) var(--space-4);border:1px solid var(--color-border);background:var(--color-card);color:var(--color-text);border-radius:var(--radius-md)}textarea,select,input[type=time],input[type=number]{background:var(--color-card);color:var(--color-text)}label{font-size:var(--text-sm);margin-bottom:var(--space-1);display:block}.card{border:1px solid var(--color-border);border-radius:var(--radius-lg);padding:var(--space-4);background:var(--color-card);box-shadow:var(--shadow-card)}a.card{text-decoration:none;display:block}a.card:hover{border-color:var(--color-accent)}.grid{gap:var(--space-4);display:grid}.grid>a.card{flex-direction:column;display:flex}.grid>a.card>.row:last-child{padding-top:var(--space-3);margin-top:auto!important}.grid.c3{grid-template-columns:repeat(3,1fr)}.grid.c4{grid-template-columns:repeat(4,1fr)}.bar{background:var(--color-surface-2);border-radius:var(--radius-pill);height:10px;overflow:hidden}.bar>i{background:var(--grad-progress);border-radius:inherit;height:100%;display:block}.chip{padding:2px var(--space-3);border:1px solid var(--color-border);border-radius:var(--radius-pill);color:var(--color-text-muted);background:var(--color-card);font-size:12px;display:inline-block}.chip.ok{color:var(--color-ok);border-color:var(--color-ok)}.row{align-items:center;gap:var(--space-3);display:flex}.row.between{justify-content:space-between}.stack>*+*{margin-top:var(--space-3)}.stack>a:not(.btn){display:block}.crumbs{font-size:var(--text-sm);color:var(--color-text-muted);margin-bottom:var(--space-3)}.note{background:var(--color-warn-soft);border:1px dashed var(--color-text-muted);padding:var(--space-2) var(--space-3);border-radius:var(--radius-sm);font-size:13px}.list{background:var(--color-card);border:1px solid var(--color-border);border-radius:var(--radius-lg);box-shadow:var(--shadow-card);overflow:hidden}.list>a,.list>div{align-items:center;gap:var(--space-3);padding:var(--space-3) var(--space-4);border-top:1px solid var(--color-border);grid-template-columns:56px 1fr 80px 110px 90px;text-decoration:none;display:grid}.list>:first-child{border-top:0}.list.scroll{min-height:240px;max-height:calc(100dvh - 220px);overflow-y:auto}.list.scroll>:first-child{z-index:1;background:var(--color-card);position:sticky;top:0}.list>a:hover{background:var(--color-surface)}.cols14{align-items:flex-end;gap:6px;height:120px;display:flex}.cols14 i{background:var(--color-surface-2);border-radius:8px 8px 3px 3px;flex:1;position:relative}.cols14 i.hit{background:var(--color-brand)}.cols14 i.today{outline:2px solid var(--color-accent-ink);outline-offset:1px}.big{font-size:44px;font-weight:800;font-family:var(--font-head);line-height:1.1}.cover{border-radius:var(--radius-md);height:84px;margin-bottom:var(--space-3);font-weight:800;font-family:var(--font-head);font-size:var(--text-lg);color:var(--color-accent-ink);background:var(--color-surface);place-items:center;display:grid}.go{border:1px solid var(--color-border);background:var(--color-card);width:34px;height:34px;color:var(--color-icon);border-radius:12px;flex:none;place-items:center;text-decoration:none;display:inline-grid}.go .li{width:18px;height:18px}.ring{--p:0;background:conic-gradient(var(--color-brand) calc(var(--p) * 1%), var(--color-surface-2) 0);border-radius:50%;flex:none;place-items:center;width:48px;height:48px;display:grid}.ring:after{content:attr(data-label);background:var(--color-card);border-radius:50%;place-items:center;width:calc(100% - 10px);height:calc(100% - 10px);font-size:11px;font-weight:700;display:grid}.ring.lg:after{width:calc(100% - 22px);height:calc(100% - 22px);font-size:18px}.prog{align-items:center;gap:var(--space-3);padding:var(--space-3);border-radius:var(--radius-md);background:var(--color-card);border:1px solid var(--color-border);box-shadow:var(--shadow-card);text-decoration:none;display:flex}.prog+.prog{margin-top:var(--space-2)}.prog .t{flex:1;min-width:0}.prog.on{border-color:var(--color-accent-ink);background:var(--color-accent-soft)}.table{background:var(--color-card);border:1px solid var(--color-border);border-radius:var(--radius-lg);box-shadow:var(--shadow-card);overflow:hidden}.table>a,.table>div{gap:var(--space-3);padding:var(--space-3) var(--space-4);border-top:1px solid var(--color-border);grid-template-columns:minmax(0,1fr) 90px 150px 90px;align-items:center;text-decoration:none;display:grid}.table>:first-child{background:var(--color-surface);font-size:var(--text-sm);color:var(--color-text-muted);border-top:0}.table>a:hover{background:var(--color-surface)}.cal{gap:var(--space-1);text-align:center;grid-template-columns:repeat(7,1fr);font-size:13px;display:grid}.cal b{color:var(--color-text-muted);font-size:11px;font-weight:600}.cal span{aspect-ratio:1;border-radius:50%;place-items:center;display:grid}.cal .off{color:#8aa0b5}.cal .some{border:1px solid var(--color-accent)}.cal .hit{background:var(--color-brand);color:var(--color-text)}.cal .today{outline:2px solid var(--color-accent-ink);outline-offset:1px;font-weight:700}.legend{gap:var(--space-3);color:var(--color-text-muted);margin-top:var(--space-3);flex-wrap:wrap;font-size:12px;display:flex}.center-box{max-width:380px;margin:12dvh auto 0}button.link{font:inherit;color:var(--color-accent-ink);cursor:pointer;background:0 0;border:0;padding:0;text-decoration:underline}@media (width<=640px){.grid.c3,.grid.c4{grid-template-columns:1fr}.list.scroll{min-height:0;max-height:none;overflow-y:visible}}.quote-card{align-items:flex-start;gap:var(--space-3);background:var(--color-brand-soft);border-color:var(--color-brand-2);flex-direction:column;display:flex;position:relative}.quote-mark{font-family:var(--font-read);color:var(--color-accent-2);font-size:56px;line-height:.6}.quote-card blockquote{margin:0}.quote-text{margin:0 0 var(--space-2);font-family:var(--font-read);font-size:var(--text-read);color:var(--color-accent-ink);line-height:1.5}.quote-card footer{font-size:var(--text-sm)}html[data-wallpaper] body{background:linear-gradient(var(--wallpaper-veil), var(--wallpaper-veil)), var(--wallpaper-image) center / cover no-repeat fixed, var(--color-bg)}html[data-wallpaper=tile] body{background:linear-gradient(var(--wallpaper-veil), var(--wallpaper-veil)), var(--wallpaper-image) top left / 420px 420px repeat, var(--color-bg)}.settings-wallpaper{font:inherit;font-size:var(--text-sm);gap:var(--space-2);padding:var(--space-2);border:1px solid var(--color-border);border-radius:var(--radius-md);background:var(--color-card);color:var(--color-text);cursor:pointer;text-align:left;flex-direction:column;font-weight:600;display:flex}.settings-wallpaper .thumb{border-radius:var(--radius-sm);background:var(--color-surface) center / cover no-repeat;height:64px;color:var(--color-text-muted,var(--color-text));place-items:center;display:grid}.lesson{grid-template-columns:minmax(0, 1fr) var(--side-col,var(--width-side));min-height:100dvh;display:grid}.lesson.wide{grid-template-columns:minmax(0,1fr)}.lesson.wide .lesson-side{display:none}.lesson.side-closed{grid-template-columns:minmax(0,1fr)}.lesson.side-closed .lesson-side{display:none}.side-reopen{top:var(--space-6);z-index:40;font:inherit;font-size:var(--text-sm);padding:var(--space-2) var(--space-3);background:var(--color-card);color:var(--color-text);border:1px solid var(--color-border);border-radius:var(--radius-md) 0 0 var(--radius-md);box-shadow:var(--shadow-ctl);cursor:pointer;border-right:0;font-weight:600;position:fixed;right:0}.side-reopen:hover{background:var(--color-accent-soft)}.lesson.wide .video-box{width:min(100%,110.222dvh);margin-inline:auto}.lesson-main{padding:var(--space-6);padding-bottom:calc(var(--space-6) + var(--dock-h) + var(--extra-bottom));flex-direction:column;min-width:0;display:flex}.lesson-toolbar{justify-content:space-between;align-items:center;gap:var(--space-2) var(--space-4);flex-wrap:wrap;display:flex}.lesson-toolbar .tabs{flex:auto}.lesson-done{justify-content:flex-end;align-items:center;gap:var(--space-2);flex-wrap:wrap;margin-left:auto;display:flex}.lesson-done .btn{font-weight:700}.lesson-practice{margin-top:var(--space-6)}.lesson-side{border-left:1px solid var(--color-border);background:#fff9;flex-direction:column;height:100dvh;display:flex;position:sticky;top:0}.lesson.docs-open{grid-template-columns:minmax(0, 1fr) var(--side-col,minmax(var(--width-side), 52vw))}.lesson.docs-open.side-closed{grid-template-columns:minmax(0,1fr)}.side-resizer{z-index:5;cursor:col-resize;touch-action:none;width:9px;position:absolute;top:0;bottom:0;left:-4px}.side-resizer:after{content:"";background:0 0;width:2px;transition:background .12s;position:absolute;top:0;bottom:0;left:4px}.side-resizer:hover:after,.side-resizer:focus-visible:after,.lesson.resizing .side-resizer:after{background:var(--color-accent-ink)}.side-resizer:focus-visible{outline:none}.lesson.resizing{-webkit-user-select:none;user-select:none;cursor:col-resize}.lesson.resizing iframe,.lesson.resizing video{pointer-events:none}.docs-body{padding:var(--space-3);flex-direction:column;display:flex}.docs-body[hidden]{display:none}.docs-pane{gap:var(--space-2);flex-direction:column;flex:1;min-height:0;display:flex}.docs-switch,.docs-pages,.docs-done{align-items:center;gap:var(--space-2);flex-wrap:wrap;display:flex}.docs-done{margin-left:auto}.docs-bar{justify-content:space-between;align-items:center;gap:var(--space-2) var(--space-4);flex-wrap:wrap;display:flex}.docs-frame{border:1px solid var(--color-border);border-radius:var(--radius-md);background:var(--color-card);flex:1;width:100%;min-height:0}.doc-badge{margin-left:var(--space-2)}.tabs{gap:var(--space-2);margin:var(--space-4) 0;flex-wrap:wrap;display:flex}.tabs button{font:inherit;font-size:var(--text-sm);background:var(--color-card);color:var(--color-text-muted);border:1px solid var(--color-border);border-radius:var(--radius-pill);padding:var(--space-2) var(--space-4);cursor:pointer;font-weight:600}.tabs button.on{background:var(--color-accent-ink);border-color:var(--color-accent-ink);color:#fff}.tabs button.on .n{color:#dbe8f4}.tabs button .n{color:var(--color-text-muted);font-size:12px}.player{border:1px solid var(--color-border);border-radius:var(--radius-lg);padding:var(--space-4);background:var(--color-card);box-shadow:var(--shadow-card)}.scrub-wrap{align-items:center;gap:var(--space-2);margin:var(--space-2) 0;font-variant-numeric:tabular-nums;color:var(--color-text-muted);grid-template-columns:auto minmax(0,1fr) auto;font-size:13px;display:grid}.scrub{height:var(--touch-min);border-radius:var(--radius-pill);cursor:pointer;touch-action:none;background:0 0;position:relative}.scrub:before{content:"";background:var(--color-surface-2);border-radius:inherit;position:absolute;inset:calc(50% - 3px) 0}.scrub>i{background:var(--grad-progress);border-radius:inherit;width:34%;height:6px;position:absolute;top:calc(50% - 3px);left:0}.scrub>b{background:var(--color-accent-ink);border-radius:2px;width:4px;height:16px;margin-left:-2px;position:absolute;top:calc(50% - 8px)}.scrub>em{background:var(--color-accent);height:6px;position:absolute;top:calc(50% - 3px)}@supports (color:color-mix(in lab, red, red)){.scrub>em{background:color-mix(in srgb, var(--color-accent) 38%, transparent)}}.scrub>em{border-radius:inherit}.controls{margin-top:var(--space-3);container-type:inline-size}.controls-main,.controls-extra{gap:var(--space-2);align-items:center;display:flex}.controls-extra{margin-top:var(--space-2)}.controls .btn{min-height:var(--touch-min)}.speed-menu{position:relative}.controls-main>.btn,.controls-main>.speed-menu{flex:none}.controls-main .btn{white-space:nowrap}.speed-options{z-index:4;border:1px solid var(--color-border);border-radius:var(--radius-md);background:var(--color-card);min-width:84px;box-shadow:var(--shadow-float);padding:4px;display:grid;position:absolute;bottom:calc(100% + 4px);right:0}.speed-options button{min-height:var(--touch-min);border-radius:var(--radius-sm);font:inherit;text-align:left;color:var(--color-text);cursor:pointer;background:0 0;border:0}.speed-options button:hover,.speed-options button[aria-checked=true]{background:var(--color-accent-soft)}.controls .spacer{flex:1}.listens{font-size:var(--text-sm)}.video-box{background:var(--color-text);color:#b8c7d6;aspect-ratio:16/9;border-radius:var(--radius-lg);margin-bottom:var(--space-3);place-items:center;display:grid}.lesson-nav{margin-top:var(--space-6);justify-content:space-between;display:flex}.resources{padding-top:var(--space-6);font-size:var(--text-sm);margin-top:auto}.side-head{border-bottom:1px solid var(--color-border);background:var(--color-card);display:flex}.side-head button{font:inherit;font-size:var(--text-sm);padding:var(--space-3);cursor:pointer;color:var(--color-text-muted);background:0 0;border:0;border-bottom:3px solid #0000;flex:auto}.side-head button.on{border-bottom-color:var(--color-accent-ink);color:var(--color-text);font-weight:600}.side-head button.side-collapse{border-left:1px solid var(--color-border);flex:none;font-weight:700}.side-head button.side-collapse:hover{background:var(--color-accent-soft)}.side-body{padding:var(--space-4);flex:1;overflow-y:auto}.transcript{font:var(--text-read)/var(--leading-read) var(--font-read);max-width:var(--width-read)}.vcard{background:var(--color-card);border:1px solid var(--color-border);border-radius:var(--radius-md);padding:var(--space-3) var(--space-4);margin-bottom:var(--space-3);box-shadow:var(--shadow-ctl)}.vcard .head{align-items:baseline;gap:var(--space-2);display:flex}.vcard .head b{font-size:var(--text-lg);font-family:var(--font-head)}.vcard .ex{font-family:var(--font-read);margin:var(--space-2) 0;font-size:17px}.study-check{font:600 12px var(--font-ui);color:var(--color-text-muted);cursor:pointer;align-items:center;gap:4px;margin-left:auto;display:inline-flex}.vcard .study-check~.flag{margin-left:var(--space-3)}.vcard .head b{overflow-wrap:break-word;min-width:0}.vcard .study-check,.vcard .flag{white-space:nowrap;flex:none}.vcard .flag{color:var(--color-text-muted);cursor:pointer;background:0 0;border:0;margin-left:auto;font-family:inherit;font-size:12px;text-decoration:underline}.empty{text-align:center;padding:var(--space-8) var(--space-4);color:var(--color-text-muted)}.transcript p{white-space:pre-line;margin:0 0 .9em;line-height:1.55}.transcript .t-title{font:700 1.1em/1.35 var(--font-head);margin:0 0 .75em}.transcript .t-break{border:0;border-top:1px solid var(--color-border);margin:1.25em 0}.side-tools{align-items:center;gap:var(--space-2);margin-bottom:var(--space-3);display:flex}.vcard .vi{font-weight:600}.vcard .vars{margin:var(--space-2) 0 0;padding-left:var(--space-4);font-size:var(--text-sm);color:var(--color-text-muted)}.scrub{touch-action:none}.scrub:focus-visible{outline-offset:4px}.video-box video{border-radius:inherit;cursor:pointer;background:#000;width:100%;height:100%}.dialog-backdrop{z-index:100;background:#10253a8c;place-items:center;display:grid;position:fixed;inset:0}.dialog{background:var(--color-card);border-radius:var(--radius-lg);box-shadow:var(--shadow-float);padding:var(--space-6);width:min(480px,92vw)}.dialog textarea{font:inherit;width:100%;min-height:110px;padding:var(--space-3);border:1px solid var(--color-border);border-radius:var(--radius-md);background:var(--color-card);color:var(--color-text);resize:vertical}.dialog .row{margin-top:var(--space-3);justify-content:flex-end}.error{color:#b3261e;font-size:var(--text-sm)}.report-form h3{margin:0 0 var(--space-3);font-size:var(--text-lg)}.report-form label{margin-bottom:var(--space-2);display:block}.report-form textarea{font:inherit;width:100%;min-height:110px;padding:var(--space-3);border:1px solid var(--color-border);border-radius:var(--radius-md);background:var(--color-card);color:var(--color-text);resize:vertical}.report-form .row{margin-top:var(--space-3);justify-content:flex-end}.transcript-wrap[data-size=lg]{--text-read:22px}.transcript-wrap[data-size=xl]{--text-read:25px}.side-tools .size-btn{font-family:var(--font-read);margin-left:auto;font-weight:700}@container (width<=430px){.controls-extra{scrollbar-width:thin;padding-bottom:2px;overflow-x:auto}.controls-extra .btn{white-space:nowrap;flex:none}}@media (width<=640px){.dialog-backdrop{align-items:flex-end;display:flex}.dialog{width:100%;max-height:calc(100dvh - var(--safe-top));border-radius:var(--radius-lg) var(--radius-lg) 0 0;padding:var(--space-4);padding-bottom:calc(var(--space-4) + var(--safe-bottom));overflow-y:auto}.side-reopen{display:none}.controls-main{gap:var(--space-1)}.controls-main .btn{min-width:var(--touch-min);gap:var(--space-1)}.controls-main .btn.small{padding-inline:6px}.controls-main .btn.primary{padding-inline:10px;font-size:13px}.controls-main .btn .li{width:16px;height:16px}.controls-main kbd{display:none}.controls-main .speed-word{clip-path:inset(50%);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}}.mini-player{right:var(--space-4);bottom:calc(var(--dock-h) + 8px);z-index:70;align-items:center;gap:var(--space-3);width:min(420px,100vw - 32px);padding:var(--space-3);background:var(--color-card);border:1px solid var(--color-border);border-radius:var(--radius-lg);box-shadow:var(--shadow-float);display:flex;position:fixed}.mini-info{flex-direction:column;flex:1;gap:2px;min-width:0;display:flex}.mini-info a{color:var(--color-text);text-overflow:ellipsis;white-space:nowrap;font-weight:600;text-decoration:none;overflow:hidden}.mini-info a:hover{text-decoration:underline}.mini-info .muted{text-overflow:ellipsis;white-space:nowrap;font-size:12px;overflow:hidden}.mini-bar{border-radius:var(--radius-pill);background:var(--color-surface-2);height:4px;margin-top:2px;overflow:hidden}.mini-bar>span{background:var(--grad-progress);height:100%;display:block}.mini-seek{display:none}@media (width>=641px){.app:has(.lesson:not(.side-closed)) .mini-player{right:calc(var(--side-col,var(--width-side)) + var(--space-4))}.mini-seek{display:inline-flex}}@media (width<=640px){.app .mini-player{left:var(--space-3);right:var(--space-3);bottom:calc(var(--dock-h) + 8px);width:auto}.mini-player .mini-seek,.mini-player .speed-menu{display:none}body:has(.sel-bar) .mini-player{display:none}}.calendar-artboard{background:var(--color-card);border:1px solid var(--color-border);border-radius:var(--radius-lg);padding:var(--space-6);box-shadow:var(--shadow-card)}.cal-hero-header{margin-bottom:var(--space-6);justify-content:space-between;align-items:center;gap:var(--space-4);flex-wrap:wrap;display:flex}.cal-hero-header h2{font-family:var(--font-head);font-size:var(--text-xl);margin:0}.cal-tools{align-items:center;gap:var(--space-2);flex-wrap:wrap;display:flex}.cal-stats{gap:var(--space-3);margin-bottom:var(--space-4);flex-wrap:wrap;display:flex}.cal-stat{background:var(--color-card);border:1px solid var(--color-border);text-align:center;border-radius:14px;padding:8px 14px}.cal-stat span{color:var(--color-text-muted);font-size:11px;display:block}.cal-stat b{color:var(--color-accent-ink);font-size:15px}.cal-grid{border-top:1px solid var(--color-border);padding-top:var(--space-4);grid-template-columns:56px repeat(7,minmax(110px,1fr));gap:8px;display:grid;overflow-x:auto}.cal-day-header{text-align:center;border-bottom:1px solid var(--color-border);padding-bottom:8px}.cal-day-header .dname{color:var(--color-text-muted);text-transform:uppercase;font-size:11px;font-weight:700}.cal-day-header .dnum{font-family:var(--font-head);font-size:18px;font-weight:800;line-height:1.2}.cal-day-header .dlisten{color:var(--color-text-muted);font-size:10.5px}.cal-day-header.today .dnum,.cal-day-header.today .dname{color:var(--color-accent-ink);font-weight:800}.cal-time-col{color:var(--color-text-muted);text-align:right;padding-right:8px;font-size:11px;font-weight:700;position:relative}.cal-time-col span{position:absolute;right:8px;transform:translateY(-50%)}.cal-time-col span:first-child{transform:none}.cal-day-col{cursor:cell;background-image:linear-gradient(var(--color-border) 1px, transparent 1px);border-radius:8px;min-width:105px;position:relative}.cal-day-col.today{background-color:var(--color-accent-soft)}@supports (color:color-mix(in lab, red, red)){.cal-day-col.today{background-color:color-mix(in srgb, var(--color-accent-soft) 45%, transparent)}}.cal-block{text-align:left;font:inherit;cursor:pointer;border:0;border-radius:8px;flex-direction:column;padding:6px 8px;font-size:11px;font-weight:600;line-height:1.3;transition:box-shadow .15s;display:flex;position:absolute;left:2px;right:2px;overflow:hidden;box-shadow:0 1px 3px #0000000f}.cal-block:hover{box-shadow:0 4px 10px #0000001f}.cal-block span{text-overflow:ellipsis;white-space:nowrap;font-weight:700;overflow:hidden}.cal-block small{opacity:.85;margin-top:2px;font-size:10px;font-weight:500}.cal-block.split{right:52%}.cal-block.auto{cursor:default;box-shadow:none;opacity:.92;border:1.5px dashed #00000047;left:49%}.cal-block.auto:hover{box-shadow:none}.c-brand{color:#fff;background:#9faa74}.c-blue{color:#fff;background:#5798d7}.c-amber{color:#4a3410;background:#f0c46b}.c-rose{color:#fff;background:#c66f80}.c-violet{color:#fff;background:#a48fd4}.c-teal{color:#fff;background:#4a9d95}.block-dialog form{gap:var(--space-2);display:grid}.block-dialog input,.block-dialog select{font:inherit;width:100%;padding:var(--space-2) var(--space-3);border:1px solid var(--color-border);border-radius:var(--radius-md);background:var(--color-card);color:var(--color-text)}.block-times{gap:var(--space-3);grid-template-columns:1fr 1fr;display:grid}.block-colors{gap:var(--space-2);margin-top:var(--space-1);display:flex}.swatch{cursor:pointer;border:2px solid #0000;border-radius:50%;width:28px;height:28px}.swatch.on{border-color:var(--color-text);outline:2px solid var(--color-card);outline-offset:-4px}.btn.danger{color:#b3261e;border-color:#b3261e;margin-right:auto}.schedule-content{width:100%;max-width:var(--content-max);margin:0 auto}.schedule-shell{container-type:inline-size}.week-agenda{display:none}@container (width<=899px){.desktop-stats,.cal-grid{display:none}.week-agenda{display:block}.calendar-artboard{padding:var(--space-4)}.agenda-strip{grid-template-columns:repeat(7,minmax(44px,1fr));gap:4px;display:grid;overflow-x:auto}.agenda-strip button{border:1px solid var(--color-border);background:var(--color-card);min-height:64px;color:var(--color-text-muted);font:inherit;border-radius:12px;font-size:10px;font-weight:700}.agenda-strip button.on{background:var(--color-accent-soft);border-color:var(--color-accent-ink);color:var(--color-accent-ink)}.agenda-strip b{font-size:18px;line-height:1.2;display:block}.agenda-strip i{border-radius:50%;width:5px;height:5px;margin:3px auto 0;display:block}.agenda-strip i.has-blocks{background:var(--color-brand)}.agenda-strip i.has-activity{box-shadow:7px 0 #5798d7}.agenda-stats{gap:var(--space-2);margin:var(--space-4) 0;padding-bottom:2px;display:flex;overflow-x:auto}.agenda-stats .cal-stat{flex:none;min-width:168px}.agenda-day{margin:var(--space-4) 0 var(--space-2);justify-content:space-between;align-items:baseline;display:flex}.agenda-items{gap:var(--space-2);display:grid}.agenda-item{gap:var(--space-3);width:100%;min-height:64px;padding:var(--space-3);border:1px solid var(--color-border);border-radius:var(--radius-md);background:var(--color-card);color:var(--color-text);font:inherit;text-align:left;border-left:4px solid;grid-template-columns:58px 1fr;align-items:center;display:grid}.agenda-item.auto{cursor:default;border-style:dashed}.agenda-item.c-blue{border-left-color:#5798d7}.agenda-item.c-violet{border-left-color:#a48fd4}.agenda-item.c-amber{border-left-color:#d28e20}.agenda-item.c-rose{border-left-color:#c66f80}.agenda-item.c-brand{border-left-color:#71983e}.agenda-item.c-teal{border-left-color:#4a9d95}.agenda-item small{color:var(--color-text-muted);margin-top:2px;display:block}.agenda-time{color:var(--color-text-muted);font-size:12px;display:grid}.agenda-time b{color:var(--color-text)}.agenda-add{width:100%;min-height:var(--touch-min);margin-top:var(--space-3);border:1px dashed var(--color-border);border-radius:var(--radius-md);color:var(--color-accent-ink);font:inherit;background:0 0;font-weight:700}}@media (hover:none) and (pointer:coarse){.cal-tools .btn[aria-label]{min-width:var(--touch-min)}}.library-page,.course-page{width:100%;max-width:var(--content-max);margin:0 auto}.library-page .grid.c3{grid-template-columns:repeat(auto-fill,minmax(280px,1fr))}.library-course-card .cover{height:150px}.library-group-chips{margin-bottom:var(--space-6)}.course-page{grid-template-columns:minmax(0,1fr) 320px}.course-page .aside{top:var(--space-6);align-self:start;position:sticky}.course-mobile-summary{display:none}.lesson-table{grid-template-columns:minmax(44px,max-content) minmax(0,1fr) max-content;display:grid}.lesson-table>a,.lesson-table>div{grid-template-columns:subgrid;gap:var(--space-3);grid-column:1/-1;min-height:64px;display:grid}.lesson-table-header{z-index:1;background:var(--color-card);position:sticky;top:0}.lesson-table>a.current{background:var(--color-accent-soft)}.lesson-table>a>b{min-width:44px;height:44px;padding-inline:var(--space-2);white-space:nowrap;background:var(--color-surface);border-radius:999px;justify-self:center;place-items:center;display:grid}.lesson-table>a>b.done{color:var(--color-ok);background:var(--color-ok)}@supports (color:color-mix(in lab, red, red)){.lesson-table>a>b.done{background:color-mix(in srgb, var(--color-ok) 13%, var(--color-card))}}.lesson-name{gap:2px;min-width:0;display:grid}.lesson-name strong{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.lesson-name small{color:var(--color-text-muted)}.lesson-name .doc-badge{width:fit-content;margin-right:4px}.course-resources-end .collapsible-body>a{padding:var(--space-1) 0;overflow-wrap:anywhere;display:block}@media (width<=640px){.library-page,.course-page{padding:var(--space-4);display:block}.library-page .aside,.course-page .aside{display:none}.library-page .grid.c3{grid-template-columns:minmax(0,1fr)}.library-group-chips{gap:var(--space-2);margin:var(--space-1) calc(var(--space-4) * -1) var(--space-4);padding:var(--space-2) var(--space-4);scrollbar-width:none;flex-wrap:nowrap;overflow:auto hidden}.library-group-chips::-webkit-scrollbar{display:none}.library-group-chips .btn{white-space:nowrap;flex:none}.course-page .sec-head>.row{gap:var(--space-2);min-width:0;padding:var(--space-2) var(--space-4) var(--space-2) 0;scrollbar-width:none;flex-wrap:nowrap;flex:1 0 100%;overflow:auto hidden}.course-page .sec-head>.row::-webkit-scrollbar{display:none}.course-page .sec-head>.row .btn{white-space:nowrap;flex:none}.library-group-chips,.course-page .sec-head>.row{-webkit-mask-image:linear-gradient(to right, #000 calc(100% - var(--space-4)), transparent);-webkit-mask-image:linear-gradient(to right, #000 calc(100% - var(--space-4)), transparent);-webkit-mask-image:linear-gradient(to right, #000 calc(100% - var(--space-4)), transparent);-webkit-mask-image:linear-gradient(to right, #000 calc(100% - var(--space-4)), transparent);mask-image:linear-gradient(to right, #000 calc(100% - var(--space-4)), transparent)}.library-page .sec-head>.muted{text-wrap:balance}.library-course-card{column-gap:var(--space-3);grid-template-columns:64px minmax(0,1fr) auto;align-items:center;display:grid!important}.library-course-card .cover{grid-row:span 3;align-self:start;width:64px;height:64px;margin:0}.library-course-card .cover.has-scene{height:64px}.library-course-card .cover-tag{white-space:nowrap;max-width:100%;padding:2px 4px;font-size:10px;overflow:hidden}.library-course-card h3{font-size:var(--text-base);grid-column:2/-1;margin:0}.library-course-card>.muted{grid-column:2/-1;min-width:0}.library-course-card .row{flex-wrap:wrap;grid-column:2/-1;min-width:0}.course-page .pagehead{flex-wrap:wrap;align-items:stretch}.course-page .sec-head{align-items:stretch;gap:var(--space-3);flex-wrap:wrap}.course-page .sec-head .search{flex:1 0 100%;order:3;width:100%}.course-mobile-summary{gap:var(--space-3);margin-bottom:var(--space-4);grid-template-columns:68px 1fr;align-items:center;display:grid}.course-mobile-summary .ring{grid-row:span 2;width:64px;height:64px}.course-mobile-summary>div{gap:2px;min-width:0;display:grid}.course-mobile-summary .btn{width:100%}.course-page .main>.card.row{display:none}.lesson-table{grid-template-columns:minmax(44px,max-content) minmax(0,1fr) max-content}.lesson-table.scroll{min-height:0;max-height:none;overflow:visible}.lesson-table>a,.lesson-table>div{padding:var(--space-2) var(--space-3)}.lesson-table-header{position:sticky;top:0}.lesson-table-header span:nth-child(2){padding-left:0}.lesson-table>a>.chip{white-space:nowrap}}.review-main{width:100%;max-width:720px;padding-bottom:calc(var(--keybar-h) + 32px);margin:0 auto}.review-bar{margin-bottom:var(--space-2)}.review-count{text-align:center;margin:var(--space-2) 0 var(--space-4);color:var(--color-text-muted);font-size:var(--text-sm)}.review-card{text-align:center;padding:var(--space-8) var(--space-6);gap:var(--space-3);justify-items:center;display:grid}.review-card.tap-flip{cursor:pointer}.flashcard{touch-action:pan-y;align-content:center;min-height:320px;position:relative}.review-tap-hint,.review-swipe-hint{display:none}.review-hints{gap:var(--space-1);margin-top:var(--space-6);color:var(--color-text-muted);font-size:var(--text-sm);display:grid}.review-hints p{justify-content:center;gap:var(--space-1) var(--space-6);flex-wrap:wrap;margin:0;display:flex}.review-hints kbd:first-child{margin-left:0}.review-term{font-family:var(--font-head);overflow-wrap:anywhere;font-size:36px;font-weight:700;line-height:1.2}.review-back{gap:var(--space-2);border-top:1px solid var(--color-border);padding-top:var(--space-4);width:100%;display:grid}.review-meaning{font-size:22px;font-weight:700}.review-example{font-size:18px}.review-link{align-items:center;min-height:36px;display:inline-flex}.pronounce-row{justify-content:center;align-items:center;gap:var(--space-3);display:flex}.pronounce-btn{padding:var(--space-1) var(--space-2);align-items:center;display:inline-flex}.pronounce-btn.speaking{color:var(--color-brand);border-color:var(--color-brand)}.speech-prefs{justify-content:center;gap:var(--space-6);margin-top:var(--space-4);font-size:var(--text-sm);display:flex}.speech-prefs label{align-items:center;gap:var(--space-2);cursor:pointer;display:inline-flex}.review-rate{justify-content:center;gap:var(--space-3);margin-top:var(--space-6);display:flex}.stick-bar{margin-top:var(--space-6)}.stick-bar-1{justify-content:center;display:flex}.stick-bar-1 .btn{justify-content:center;min-width:240px;min-height:52px;font-size:16px}.stick-bar-3{gap:var(--space-3);grid-template-columns:repeat(3,minmax(0,1fr));display:grid}.stick-bar-3 .btn{justify-content:center;min-height:56px;font-size:16px}@media (width>=2200px){.review-main:not(.wide){max-width:760px}.review-term{font-size:44px}.review-meaning{font-size:24px}}@media (width<=640px){.review-main{padding-bottom:0}.review-card{padding:20px}.review-term{font-size:32px}.review-meaning{font-size:18px}.review-example{font-size:16px}.review-definition{font-size:14.5px}.pronounce-btn{width:var(--touch-min);height:var(--touch-min);border-radius:50%;justify-content:center;padding:0}.pronounce-btn .key-hint{display:none}.pronounce-btn.pronounce-btn-compact{width:36px;height:36px}.review-link{min-height:var(--touch-min)}.speech-prefs{gap:var(--space-2) var(--space-4);flex-wrap:wrap}.stick-bar{bottom:calc(var(--dock-h) + var(--extra-bottom));z-index:58;margin:var(--space-4) calc(-1 * var(--space-4)) 0;padding:10px var(--space-4);background:var(--color-bg);position:sticky}@supports (color:color-mix(in lab, red, red)){.stick-bar{background:color-mix(in srgb, var(--color-bg) 93%, transparent)}}.stick-bar{-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border-top:1px solid var(--color-border)}.stick-bar.flashcard-bar{padding-top:var(--space-3);background:linear-gradient(to bottom, transparent, var(--color-bg) var(--space-3));-webkit-backdrop-filter:none;backdrop-filter:none;border-top:0}.flashcard-bar .btn{border-radius:var(--radius-lg);min-height:56px}.flashcard{--review-chrome:78px;--review-actions:94px;min-height:max(300px, calc(100dvh - var(--safe-top) - var(--review-chrome) - var(--review-actions) - var(--dock-h) - var(--extra-bottom)))}.flashcard .review-term{font-size:36px}.stick-bar-1{display:block}.stick-bar .btn,.stick-bar-1 .btn{width:100%;min-width:0}.stick-bar .key-hint{display:none}:root{--stick-bar-h:78px}html:has(.stick-bar){scroll-padding-bottom:calc(var(--dock-h) + var(--extra-bottom) + var(--stick-bar-h))}.exercise-feedback{scroll-margin-bottom:var(--space-3)}}@media (width<=640px),(hover:none) and (pointer:coarse){.review-hints{display:none}.review-swipe-hint{display:inline}.review-tap-hint{left:50%;bottom:var(--space-4);background:var(--color-surface);color:var(--color-text-muted);font-size:var(--text-sm);white-space:nowrap;border-radius:999px;padding:6px 14px;display:inline-flex;position:absolute;translate:-50%}.flashcard:not(.is-back){padding-bottom:64px}}.review-main.wide{max-width:1080px}.review-hero{justify-content:space-between;align-items:center;gap:var(--space-4);margin-bottom:var(--space-4);flex-wrap:wrap;display:flex}.review-hero h2{margin:0 0 var(--space-1);font-size:var(--text-lg)}.review-hero p{margin:0}.review-modes{gap:var(--space-2);flex-wrap:wrap;display:flex}.btn:disabled{opacity:.5;cursor:not-allowed}.review-tiles{gap:var(--space-3);margin-bottom:var(--space-6);grid-template-columns:repeat(4,1fr);display:grid}.review-tile{text-align:center;padding:var(--space-4) var(--space-3);gap:2px;display:grid}.review-tile-num{font-family:var(--font-head);font-size:34px;font-weight:700;line-height:1.1}.review-tile.learning .review-tile-num{color:var(--color-icon-accent)}.review-tile.learned .review-tile-num{color:var(--color-accent-2)}.review-tile.mastered .review-tile-num{color:var(--color-ok)}.review-tile.due .review-tile-num{color:var(--color-accent-ink)}.review-due-section .collapsible-title{font-size:var(--text-base)}.review-due-grid{gap:var(--space-3);grid-template-columns:repeat(auto-fill,minmax(220px,1fr));margin:0;padding:0;list-style:none;display:grid}.review-due{gap:var(--space-1);padding:var(--space-3) var(--space-4);overflow-wrap:anywhere;align-content:start;min-width:0;display:grid}.review-due-term{font-family:var(--font-head);font-size:18px}.review-stage-filter{gap:var(--space-2);margin-bottom:var(--space-3);flex-wrap:wrap;display:flex}.review-error{color:#b3261e;margin:0}.exercise-card{gap:var(--space-3)}.exercise-sentence{font-size:22px;line-height:1.5}.exercise-blank{border-bottom:2px solid var(--color-accent-ink);color:#0000;-webkit-user-select:none;user-select:none;min-width:90px;display:inline-block}.exercise-hint{letter-spacing:2px;flex-wrap:wrap;justify-content:center;gap:4px 20px;font-family:ui-monospace,Menlo,Consolas,monospace;font-size:clamp(18px,5.4vw,22px);font-weight:700;display:flex}.exercise-hint span{white-space:pre}.exercise-options{gap:var(--space-2);grid-template-columns:1fr 1fr;width:100%;display:grid}.exercise-option{padding:var(--space-3) var(--space-4);text-align:left;border-radius:16px;justify-content:space-between}.exercise-dot{border:1px solid var(--color-border-strong);border-radius:50%;justify-content:center;align-items:center;width:28px;height:28px;font-size:13px;font-weight:700;display:none}.exercise-option-text{overflow-wrap:anywhere}.exercise-option.right,.exercise-feedback.right{border-color:var(--color-ok);background:var(--color-brand-soft);color:var(--color-ok)}.exercise-option.wrong,.exercise-feedback.wrong{color:#b3261e;background:#fdecea;border-color:#b3261e}.exercise-form{gap:var(--space-2);width:100%;max-width:420px;display:flex}.exercise-input{min-width:0;font:inherit;font-size:var(--text-base);padding:var(--space-2) var(--space-4);border:1px solid var(--color-border-strong);border-radius:var(--radius-pill);background:var(--color-card);color:var(--color-text);flex:1}.exercise-feedback{width:100%;padding:var(--space-3) var(--space-4);border:1px solid;border-radius:16px;gap:2px;display:grid}.exercise-feedback span{color:var(--color-text);font-size:var(--text-sm)}.exercise-wrong{text-align:left}.exercise-wrong ul{padding-left:var(--space-5,20px);margin:0}.review-filter{align-items:center;gap:var(--space-2) var(--space-3);margin-bottom:var(--space-4);flex-wrap:wrap;display:flex}.review-filter-sources,.review-filter-selects{gap:var(--space-2);flex-wrap:wrap;min-width:0;display:flex}.review-filter-lessons{gap:var(--space-2);min-width:0;padding-bottom:var(--space-1);flex-basis:100%;display:flex;overflow-x:auto}.review-filter-lessons .btn{flex:none}.review-filter-count{font-variant-numeric:tabular-nums;opacity:.8}.review-filter select{font:inherit;font-size:var(--text-sm);max-width:100%;padding:var(--space-1) var(--space-3);border:1px solid var(--color-border);border-radius:var(--radius-pill);background:var(--color-card);color:var(--color-text)}.review-filter-manage{flex:none}@media (width>=960px){.review-due-grid{grid-template-columns:repeat(4,minmax(0,1fr))}}@media (width<=720px){.review-filter-selects,.review-filter-selects select{width:100%}}@media (width<=640px){.review-filter-sources,.review-stage-filter{scrollbar-width:none;max-width:100%;padding-right:var(--space-4);-webkit-mask-image:linear-gradient(to right, #000 calc(100% - var(--space-4)), transparent);-webkit-mask-image:linear-gradient(to right, #000 calc(100% - var(--space-4)), transparent);-webkit-mask-image:linear-gradient(to right, #000 calc(100% - var(--space-4)), transparent);-webkit-mask-image:linear-gradient(to right, #000 calc(100% - var(--space-4)), transparent);mask-image:linear-gradient(to right, #000 calc(100% - var(--space-4)), transparent);flex-wrap:nowrap;overflow-x:auto}.review-filter-sources::-webkit-scrollbar{display:none}.review-stage-filter::-webkit-scrollbar{display:none}.review-filter-sources .btn,.review-stage-filter .btn{white-space:nowrap;flex:none}.review-filter-sources{flex-basis:100%}.review-filter select{min-height:var(--touch-min)}.review-hero{display:grid}.review-modes{grid-template-columns:1fr 1fr;display:grid}.review-modes .btn{min-height:var(--touch-min);justify-content:center}.review-modes .btn.primary{grid-column:1/-1;min-height:52px;font-size:16px}.review-tiles{margin-bottom:var(--space-4);gap:6px}.review-tile{border-radius:14px;padding:8px 4px;font-size:11.5px}.review-tile-num{font-size:24px}.review-tile-hint{display:none}.review-due-grid{grid-template-columns:minmax(0,1fr);gap:8px}.review-due{border-radius:14px;grid-template-columns:minmax(0,1fr) auto;gap:2px 10px;padding:10px 12px}.review-due-term{font-size:17px}.review-due-link{min-height:var(--touch-min);grid-area:1/2/span 3;align-items:center;font-size:13px;display:flex}.exercise-options{grid-template-columns:minmax(0,1fr)}.exercise-option-text{overflow-wrap:break-word}.exercise-option{align-items:center;gap:var(--space-2);grid-template-columns:30px minmax(0,1fr);min-height:52px;font-size:16px;font-weight:600;display:grid}.exercise-dot{justify-content:center;align-items:center;display:inline-flex}.exercise-option .key-hint{display:none}.exercise-form{max-width:none}.exercise-input{min-height:var(--touch-min);font-size:16px}}.decks-main{width:100%;max-width:860px;margin:0 auto}.deck-list,.deck-vocab{gap:var(--space-3);margin:0;padding:0;list-style:none;display:grid}.deck-item,.deck-vocab-item{justify-content:space-between;align-items:flex-start;gap:var(--space-3);display:flex}.deck-item{align-items:center}.deck-item-main{gap:2px;min-width:0;display:grid}.deck-item-name{color:var(--color-text);overflow-wrap:anywhere;font-weight:600}.deck-item-actions{gap:var(--space-2);flex-shrink:0;display:flex}.deck-rename{gap:var(--space-2);align-items:center;width:100%;display:flex}.deck-rename input{min-width:0;padding:var(--space-2) var(--space-3);flex:1}.deck-vocab-text{overflow-wrap:anywhere;min-width:0}.deck-vocab-text p{margin:0 0 var(--space-1)}.deck-vocab-video{font-size:var(--text-sm)}.vocab-edit{gap:var(--space-2) var(--space-3);grid-template-columns:repeat(2,minmax(0,1fr));width:100%;display:grid}.vocab-edit-field{gap:2px;display:grid}.vocab-edit-field input{padding:var(--space-2) var(--space-3)}.vocab-edit .row{grid-column:1/-1;justify-content:flex-end}.dialog.deck-import{width:min(980px,96vw);max-height:92vh;overflow-y:auto}.deck-import-form{gap:var(--space-2);display:grid}.deck-import-form select{font:inherit;padding:var(--space-2) var(--space-3);border:1px solid var(--color-border);border-radius:var(--radius-md);background:var(--color-card);color:var(--color-text)}.deck-import-form textarea{min-height:180px}.deck-import-status{align-items:center;gap:var(--space-2) var(--space-3);margin-bottom:var(--space-3);flex-wrap:wrap;display:flex}.deck-import-status progress{min-width:120px;accent-color:var(--color-accent);flex:1}.pagehead-actions{gap:var(--space-2);flex-wrap:wrap;display:flex}.dialog.catalog-import{width:min(560px,96vw);max-height:92vh;overflow-y:auto}.catalog-import select{font:inherit;padding:var(--space-2) var(--space-3);border:1px solid var(--color-border);border-radius:var(--radius-md);background:var(--color-card);color:var(--color-text)}.catalog-units,.catalog-lessons{margin:0;padding:0;list-style:none}.catalog-units{gap:var(--space-1);margin:var(--space-3) 0;max-height:46vh;display:grid;overflow-y:auto}.catalog-unit{border:1px solid var(--color-border);border-radius:var(--radius-md);padding:var(--space-2) var(--space-3)}.catalog-unit-head{justify-content:space-between;align-items:center;gap:var(--space-3);display:flex}.catalog-unit label,.catalog-lessons label{align-items:center;gap:var(--space-2);cursor:pointer;flex-wrap:wrap;display:flex}.catalog-lessons{gap:var(--space-1);margin-top:var(--space-2);padding-left:var(--space-6);display:grid}.catalog-summary{min-height:3.5em;margin-bottom:var(--space-3);font-size:var(--text-sm);gap:2px;display:grid}.vocab-preview{gap:var(--space-1);display:grid}.vocab-preview-row{gap:var(--space-2);grid-template-columns:32px minmax(0,1fr) minmax(0,.9fr) minmax(0,1.6fr) minmax(0,2.2fr) minmax(0,.8fr);align-items:center;display:grid}.vocab-preview-head{color:var(--color-text-muted);font-size:12px;font-weight:600}.vocab-preview-row input[type=text]{padding:var(--space-1) var(--space-2);font-size:var(--text-sm)}.vocab-preview-row.off{opacity:.5}.vocab-preview-row.failed input[type=text]{border-color:var(--color-accent)}.vocab-preview-notes{flex-wrap:wrap;gap:4px;min-width:0;display:flex}.vocab-preview-notes .chip{white-space:normal;overflow-wrap:anywhere}.chip.warn{background:var(--color-warn-soft);color:var(--color-text)}.chip.bad{border-color:var(--color-accent);color:var(--color-accent-ink)}@media (width<=640px){.dialog.deck-import,.dialog.catalog-import{width:100%;max-height:calc(100dvh - var(--safe-top))}.deck-item,.deck-vocab-item{min-height:64px}.row-more{min-width:var(--touch-min);min-height:var(--touch-min);border-radius:12px;flex:none;padding:0;font-size:22px;line-height:1}.deck-head-actions{flex:100%;grid-template-columns:repeat(auto-fit,minmax(0,1fr));display:grid}.deck-head-actions .btn,.deck-empty .btn{justify-content:center;min-height:48px}.deck-empty .pagehead-actions{flex-direction:column;align-items:stretch}.deck-empty .btn{min-height:52px;font-size:16px}.sheet-form select,.sheet-form input[type=text],.sheet-form textarea{font-size:16px}.sheet-form .dialog-actions{z-index:2;gap:var(--space-2);margin:var(--space-3) calc(-1 * var(--space-4)) 0;padding:var(--space-3) var(--space-4);background:var(--color-card);border-top:1px solid var(--color-border);grid-template-columns:1fr 2fr;display:grid;position:sticky;bottom:0}.sheet-form .dialog-actions .btn{justify-content:center;min-height:52px;font-size:16px}.vocab-edit{grid-template-columns:minmax(0,1fr)}.vocab-preview-head{display:none}.vocab-preview-row{padding:var(--space-2);border:1px solid var(--color-border);border-radius:var(--radius-md);grid-template-columns:minmax(0,1fr);gap:4px}.vocab-preview-row [data-label]:before{content:attr(data-label);color:var(--color-text-muted);font-size:12px;display:block}}.act-sheet{gap:var(--space-2);padding-bottom:var(--space-2);display:grid}.act-sheet .btn{justify-content:flex-start;width:100%;min-height:52px;font-size:16px}.act-sheet .btn.danger{color:#b3261e}.settings-page{gap:var(--space-4);box-sizing:border-box;grid-template-columns:1fr 1fr;align-items:start;width:100%;min-width:0;max-width:1080px;margin:0 auto;display:grid}.settings-page>h1{grid-column:1/-1}.settings-card h2{margin-bottom:var(--space-4)}.settings-card .collapsible-title{margin:0}.settings-card .collapsible-body{padding-top:var(--space-2)}.settings-avatar{align-items:center;gap:var(--space-4);margin-bottom:var(--space-4)}.settings-themes{gap:var(--space-3);grid-template-columns:repeat(3,minmax(0,1fr));display:grid}.settings-theme{justify-content:center;align-items:center;gap:var(--space-2);font:inherit;padding:var(--space-2);border:1px solid var(--color-border);border-radius:var(--radius-pill);background:var(--color-card);color:var(--color-text);cursor:pointer;text-align:center;overflow-wrap:anywhere;min-width:0;font-weight:600;display:flex}.settings-theme.on{outline:2px solid var(--color-accent-ink);outline-offset:1px}.settings-theme .swatch{color:#fff;border-radius:50%;flex-shrink:0;place-items:center;width:28px;height:28px;display:grid}.settings-card input[type=number]{font:inherit;width:100%;padding:var(--space-3) var(--space-4);border:1px solid var(--color-border);background:var(--color-card);color:var(--color-text);border-radius:var(--radius-md)}.account-card .row{gap:var(--space-4)}@media (width<=900px){.settings-page{grid-template-columns:1fr;max-width:560px}}@media (width<=640px){.settings-page{flex-direction:column;align-items:stretch;width:100%;min-width:0;max-width:100%;display:flex}.settings-themes{gap:var(--space-2)}.settings-theme{padding:var(--space-2) var(--space-1);gap:var(--space-1);font-size:var(--text-sm);flex-wrap:wrap;line-height:1.2}}.settings-wallpapers{gap:var(--space-3);grid-template-columns:repeat(3,minmax(0,1fr));display:grid}.settings-wallpaper{align-items:center;gap:var(--space-2);font:inherit;padding:var(--space-2);border:1px solid var(--color-border);border-radius:var(--radius-lg);background:var(--color-card);color:var(--color-text);cursor:pointer;text-align:center;flex-direction:column;min-width:0;font-weight:600;display:flex}.settings-wallpaper.on{outline:2px solid var(--color-accent-ink);outline-offset:1px}.settings-wallpaper .thumb{aspect-ratio:16/9;border-radius:var(--radius-sm);border:1px solid var(--color-border);background-position:50%;background-size:cover;width:100%}.settings-font-slot{margin-bottom:var(--space-4)}.settings-font-head{margin-bottom:var(--space-2);justify-content:space-between;align-items:baseline;display:flex}.settings-fonts{gap:var(--space-3);grid-template-columns:repeat(2,minmax(0,1fr));display:grid}.settings-font{gap:var(--space-1);text-align:left;padding:var(--space-3);border:1px solid var(--color-border);border-radius:var(--radius-md);background:var(--color-card);color:var(--color-text);cursor:pointer;font:inherit;font-size:var(--text-sm);flex-direction:column;min-width:0;display:flex}.settings-font.on{outline:2px solid var(--color-accent-ink);outline-offset:1px}.settings-font .sample{font-size:var(--text-lg);margin-bottom:var(--space-1)}.settings-card .btn,.settings-card button{min-height:var(--touch-min)}.practice-menu{gap:var(--space-3);display:grid}.lesson-practice .practice-menu{grid-template-columns:repeat(auto-fit,minmax(220px,1fr))}.practice-mode{align-items:flex-start;gap:var(--space-1);text-align:left;cursor:pointer;flex-direction:column;width:100%;display:flex}.practice-mode:hover:not(:disabled){border-color:var(--color-accent-ink)}.practice-mode:disabled{cursor:not-allowed;opacity:.6}.practice{gap:var(--space-3);display:grid}.practice-active{margin-top:var(--space-3)}.dict-modes{gap:var(--space-2);display:flex}.dict-loop{align-items:center;gap:var(--space-2);flex-wrap:wrap;display:flex}.dict-input{width:100%;min-height:6rem;padding:var(--space-2) var(--space-3);border:1px solid var(--color-border);border-radius:var(--radius-md);background:var(--color-card);color:var(--color-text);font:inherit;resize:vertical}.dict-actions{gap:var(--space-2);flex-wrap:wrap;display:flex}.dict-live:empty{display:none}.dict-result{gap:var(--space-2);display:grid}.dict-words{gap:var(--space-1) var(--space-2);flex-wrap:wrap;line-height:1.6;display:flex}.dict-ok{color:var(--color-ok)}.dict-wrong,.dict-missing{color:#b3261e}.dict-wrong{background:#fdecea;text-decoration:line-through}.dict-missing{-webkit-text-decoration:underline dashed;text-decoration:underline dashed}.dict-reference{padding:var(--space-2) var(--space-3);border-left:3px solid var(--color-border);color:var(--color-text-muted)}.cloze-list{gap:var(--space-3);padding-left:var(--space-6);display:grid}.cloze-sentence{line-height:2}.cloze-part{white-space:pre-wrap}.cloze-glue{white-space:nowrap}.cloze-slot{vertical-align:top;flex-direction:column;display:inline-flex}.cloze-input{width:7rem;padding:0 var(--space-1);border:0;border-bottom:2px solid var(--color-border);background:var(--color-brand-soft);font:inherit;text-align:center}.cloze-input:focus{border-bottom-color:var(--color-accent-ink);outline:none}.cloze-input.right{border-bottom-color:var(--color-ok);color:var(--color-ok)}.cloze-input.wrong{color:#b3261e;background:#fdecea;border-bottom-color:#b3261e}.cloze-answer{color:var(--color-ok);font-size:.8em}@media (width<=640px){.dict-input{font-size:16px}.dict-actions{margin-top:var(--space-2)}.dict-actions .btn{min-height:var(--touch-min)}.dict-actions .btn.primary{flex:100%}.dict-words,.dict-reference,.cloze-sentence{overflow-wrap:anywhere}.cloze-input{max-width:100%;min-height:var(--touch-min);font-size:16px}}.speak-panel{gap:var(--space-3);display:grid}.speak-panel .small{font-size:12px}.speak-tabs,.speak-kinds{gap:var(--space-2);flex-wrap:wrap;display:flex}.speak-pick-list{gap:var(--space-2);margin:0;padding:0;list-style:none;display:grid}.speak-pick{text-align:left;cursor:pointer;width:100%;line-height:1.5}.speak-pick:hover{border-color:var(--color-accent-ink)}.speak-prompt{gap:var(--space-2);padding:var(--space-3);border:1px solid var(--color-border);border-radius:var(--radius-md);background:var(--color-surface);display:grid}.speak-prompt-text{font-size:var(--text-base);margin:0;font-weight:600;line-height:1.5}.speak-hints{color:var(--color-text-muted);margin:0;padding-left:1.2em;line-height:1.6}.speak-recorder{gap:var(--space-3);outline:none;display:grid}.speak-rec-btn{justify-self:start;min-height:44px}.speak-live{align-items:baseline;gap:var(--space-2);font-size:var(--text-lg);display:flex}.speak-dot{background:#b3261e;border-radius:50%;align-self:center;width:12px;height:12px}.speak-meter,.speak-limit,.speak-bar{border-radius:var(--radius-pill);background:var(--color-surface-2);display:block;overflow:hidden}.speak-meter{height:10px}.speak-limit{height:4px}.speak-meter>span,.speak-limit>span,.speak-bar>span{border-radius:inherit;height:100%;display:block}.speak-meter>span{background:var(--color-ok);transition:width 80ms linear}.speak-limit>span{background:var(--color-accent-2)}.speak-audio{width:100%;max-width:480px}.speak-busy{align-items:center;gap:var(--space-2);color:var(--color-accent-ink);margin:0;font-weight:600;display:flex}.speak-spinner{border:2px solid var(--color-border);border-top-color:var(--color-accent);border-radius:50%;width:16px;height:16px;animation:.8s linear infinite speak-spin}@keyframes speak-spin{to{transform:rotate(360deg)}}@media (prefers-reduced-motion:reduce){.speak-spinner{animation-duration:3s}}.speak-error,.speak-notice{padding:var(--space-2) var(--space-3);border-radius:var(--radius-md);margin:0;line-height:1.5}.speak-error{color:#b3261e;background:#fdecea}.speak-notice{background:var(--color-warn-soft);color:var(--color-text)}.speak-result{gap:var(--space-4);display:grid}.speak-section{gap:var(--space-2);display:grid}.speak-section h4{font-size:var(--text-base);margin:0}.speak-section ul{margin:0;padding-left:1.2em;line-height:1.6}.speak-praise{padding:var(--space-3);border-radius:var(--radius-md);background:var(--color-accent-soft)}.speak-scores{align-items:center;gap:var(--space-4);grid-template-columns:auto 1fr;display:grid}.speak-overall{align-items:baseline;gap:var(--space-1);display:flex}.speak-overall b{font-size:var(--text-xl);color:var(--color-accent-ink)}.speak-bars{gap:var(--space-2);margin:0;padding:0;list-style:none;display:grid}.speak-bars li{align-items:center;gap:var(--space-2);grid-template-columns:5.5rem 1fr 2rem;display:grid}.speak-bar{height:10px}.speak-bar>span{background:var(--color-accent-2)}.speak-bar-value{text-align:right}.speak-transcript{line-height:2;font-size:var(--text-base);margin:0}.speak-word{color:inherit;font:inherit;cursor:pointer;background:0 0;border:0;border-bottom:2px solid #0000;padding:0 1px}.speak-word:hover{background:var(--color-accent-soft)}.speak-word.unclear{border-bottom:2px dotted #b3261e}.speak-keypoints{list-style:none;padding-left:0!important}.speak-keypoints li:before{width:1.4em;font-weight:700;display:inline-block}.speak-keypoints .done:before{content:"✓";color:var(--color-ok)}.speak-keypoints .missed{color:var(--color-text-muted)}.speak-keypoints .missed:before{content:"○"}.speak-corrections{gap:var(--space-3);list-style:none;display:grid;padding-left:0!important}.speak-corrections li{gap:var(--space-1);padding:var(--space-3);border:1px solid var(--color-border);border-radius:var(--radius-md);display:grid}.speak-corrections p{margin:0;line-height:1.6}.speak-corrections .chip{justify-self:start}.speak-wrong{color:#b3261e;background:#fdecea}.speak-fixed{background:var(--color-accent-soft);color:var(--color-text);padding:0 2px;font-weight:600}.speak-model{padding:var(--space-3);border-left:3px solid var(--color-accent-2);background:var(--color-surface);margin:0;line-height:1.7}.speak-history ul{gap:var(--space-3);margin:0;padding:0;list-style:none;display:grid}.speak-history li{gap:var(--space-2);padding:var(--space-3);border:1px solid var(--color-border);border-radius:var(--radius-md);display:grid}.speak-history-head{align-items:center;gap:var(--space-3);flex-wrap:wrap;display:flex}.speak-history-score{color:var(--color-accent-ink);margin-left:auto}.speak-history-prompt{-webkit-line-clamp:2;-webkit-box-orient:vertical;margin:0;display:-webkit-box;overflow:hidden}@media (width<=560px){.speak-scores{grid-template-columns:1fr}.speak-bars li{grid-template-columns:4.5rem 1fr 2rem}.speak-rec-btn{justify-self:stretch}}@media (width<=640px){.speak-rec-btn{justify-self:stretch;width:100%;min-height:44px}}.chat-pane{flex-direction:column;flex:1;min-height:0;display:flex}.chat-pane[hidden]{display:none}.chat-head{justify-content:flex-end;align-items:center;gap:var(--space-2);padding:var(--space-2) var(--space-4) 0;display:flex}.chat-pane .empty{margin:var(--space-4)}.chat-list{padding:var(--space-4);gap:var(--space-3);flex-direction:column;flex:1;display:flex;overflow-y:auto}.chat-hint{font-size:var(--text-sm);margin:0}.chat-bubble{max-width:92%;padding:var(--space-2) var(--space-3);border-radius:var(--radius-md);white-space:pre-wrap;overflow-wrap:anywhere;font-size:var(--text-sm);line-height:1.55}.chat-bubble.user{background:var(--color-accent-soft);align-self:flex-end}.chat-bubble.assistant{background:var(--color-surface);align-self:flex-start}.chat-bubble-quote{margin-bottom:var(--space-1);opacity:.7;font-size:12px;display:block}.chat-bubble-actions{margin-top:var(--space-1);justify-content:flex-end;display:flex}.chat-save-note{border-radius:var(--radius-sm);color:var(--color-text-muted);font:inherit;cursor:pointer;background:0 0;border:0;align-items:center;gap:4px;padding:2px 6px;font-size:12px;display:inline-flex}@media (hover:hover){.chat-save-note:hover:not(:disabled){background:var(--color-selected);color:var(--color-text)}}.chat-save-note:disabled{cursor:default;opacity:.6}.chat-note-saved{color:var(--color-ok);font-size:12px;font-weight:700}.chat-quote{align-items:center;gap:var(--space-2);margin:0 var(--space-4);padding:var(--space-2) var(--space-3);background:var(--color-selected);border-radius:var(--radius-sm);font-size:13px;display:flex}.chat-quote span{overflow-wrap:anywhere;flex:1;min-width:0}.chat-error{margin:var(--space-2) var(--space-4) 0;color:#b3261e;font-size:13px}.chat-form{gap:var(--space-2);padding:var(--space-3) var(--space-4);border-top:1px solid var(--color-border);margin-top:var(--space-2);align-items:flex-end;display:flex}.chat-form textarea{min-width:0;font:inherit;font-size:var(--text-sm);padding:var(--space-2) var(--space-3);border:1px solid var(--color-border);border-radius:var(--radius-sm);resize:none;flex:1}.chat-quota-chip{font-size:12px}@media (hover:none) and (pointer:coarse){.chat-form textarea{font-size:16px}}.cover.has-scene{height:110px;padding:var(--space-2);background-repeat:no-repeat;background-size:cover;place-items:end start}.cover-tag{padding:2px var(--space-2);font-size:var(--text-sm);background:var(--color-card);border-radius:999px;line-height:1.5}@supports (color:color-mix(in lab, red, red)){.cover-tag{background:color-mix(in srgb, var(--color-card) 88%, transparent)}}.cover-tag{color:var(--color-accent-ink)}.scenery-widget{margin:0;padding:0;position:relative;overflow:hidden}.scenery-widget img{object-fit:cover;width:100%;height:170px;display:block}.scenery-widget figcaption{left:var(--space-3);bottom:var(--space-3);padding:2px var(--space-3);font-size:var(--text-sm);background:var(--color-card);border-radius:999px;position:absolute}@supports (color:color-mix(in lab, red, red)){.scenery-widget figcaption{background:color-mix(in srgb, var(--color-card) 88%, transparent)}}.reflex{margin-top:var(--space-4);gap:var(--space-3);flex-direction:column;display:flex}.reflex-bar{align-items:center;gap:var(--space-3) var(--space-4);padding:var(--space-3) var(--space-4);background:var(--color-card);border:1px solid var(--color-border);border-radius:var(--radius-md);flex-wrap:wrap;display:flex}.reflex-wait{align-items:center;gap:var(--space-2);display:flex}.reflex-bar code{background:var(--color-surface);border-radius:var(--radius-sm);word-break:break-all;padding:1px 6px;font-size:12px}.reflex-card{align-items:center;gap:var(--space-3) var(--space-4);padding:var(--space-4);background:var(--color-brand-soft);border:1px solid var(--color-brand);border-radius:var(--radius-md);box-shadow:var(--shadow-ctl);flex-wrap:wrap;display:flex}.reflex-card-text{flex-direction:column;flex:200px;gap:2px;min-width:0;display:flex}.reflex-card-actions{gap:var(--space-2);flex-wrap:wrap;display:flex}.reflex-ring{flex:none;width:48px;height:48px;transform:rotate(-90deg)}.reflex-ring circle{fill:none;stroke-width:4px}.reflex-ring .track{stroke:var(--color-surface-2)}.reflex-ring .run{stroke:var(--color-accent);stroke-linecap:round;stroke-dasharray:106.8;stroke-dashoffset:0;animation:linear forwards reflex-countdown}@keyframes reflex-countdown{to{stroke-dashoffset:106.8px}}.reflex-summary{align-items:center;gap:var(--space-2) var(--space-4);padding:var(--space-3) var(--space-4);background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-md);flex-wrap:wrap;display:flex}.illus{-webkit-user-select:none;user-select:none;-webkit-user-drag:none;width:100%;height:auto;margin-inline:auto;display:block}.illus-login{max-width:min(260px,70%);margin-top:-6dvh}.illus-empty{max-width:min(260px,70%);margin-bottom:var(--space-3)}.illus-complete{right:var(--space-6);bottom:calc(var(--dock-h) + 24px);z-index:70;pointer-events:none;width:200px;position:fixed}@media (prefers-reduced-motion:no-preference){.illus-complete{animation:.45s ease-out illus-pop}}@keyframes illus-pop{0%{opacity:0;transform:scale(.85)}to{opacity:1;transform:scale(1)}}.illus-element{max-width:96px;margin-bottom:var(--space-3)}.quote-banner{object-fit:cover;mix-blend-mode:multiply;width:100%;height:100px;display:block}.tree-life{aspect-ratio:640/560;position:relative}.tree-sway{transform-origin:50% 100%;position:absolute;inset:0}.tree-img{object-fit:contain;object-position:bottom;opacity:0;-webkit-user-select:none;user-select:none;pointer-events:none;width:100%;height:100%;position:absolute;inset:0}.tree-img-5{opacity:1}.tree-leaf{display:none}@media (prefers-reduced-motion:no-preference){.tree-img{transform-origin:50% 100%;animation:42s linear infinite tree-step}.tree-img-1{animation-delay:0s}.tree-img-2{animation-delay:7s}.tree-img-3{animation-delay:14s}.tree-img-4{animation-delay:21s}.tree-img-5{opacity:0;animation-name:tree-last;animation-delay:28s}.tree-sway{animation:6s ease-in-out infinite alternate tree-sway}.tree-leaf{opacity:0;pointer-events:none;background:#9cb43f;border-radius:0 80%;width:12px;height:8px;animation:42s linear infinite tree-leaf-fall;display:block;position:absolute}.tree-leaf-1{animation-delay:0s;top:30%;left:28%}.tree-leaf-2{background:#c9cf62;animation-delay:1.6s;top:24%;left:66%}.tree-leaf-3{background:#7f9e34;animation-delay:3.2s;top:40%;left:44%}.tree-leaf-4{background:#d6c86a;animation-delay:4.6s;top:44%;left:78%}}@keyframes tree-step{0%{opacity:0;transform:scale(.94)}3%{opacity:1}6%,16.67%{opacity:1;transform:scale(1)}19.67%,to{opacity:0;transform:scale(1)}}@keyframes tree-last{0%{opacity:0;transform:scale(.94)}3%{opacity:1}6%,33.33%{opacity:1;transform:scale(1)}36.33%,to{opacity:0;transform:scale(1)}}@keyframes tree-sway{0%{transform:skew(-1.2deg)}to{transform:skew(1.2deg)}}@keyframes tree-leaf-fall{0%,68%{opacity:0;transform:translate(0)rotate(0)}70%{opacity:1}73%{transform:translate(14px,30px)rotate(70deg)}77%{transform:translate(-10px,75px)rotate(-40deg)}81%{opacity:.9;transform:translate(12px,120px)rotate(110deg)}84%,to{opacity:0;transform:translate(-4px,150px)rotate(20deg)}}.garden-hero{background:linear-gradient(135deg,#d6d2a559,#e2bc8940);border:1px dashed #d28752;border-radius:24px;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:20px;margin-bottom:28px;padding:24px 28px;display:flex}.garden-today{border-radius:20px;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:16px;margin-bottom:24px;padding:20px 24px;display:flex}.garden-layout{gap:24px;margin-bottom:28px;display:grid}.garden-section-title{font-family:var(--font-display);align-items:center;gap:8px;margin:0 0 4px;font-size:17px;font-weight:800;display:flex}.garden-plot-image{object-fit:contain;width:85px;height:85px}.harvest-basket-row{flex-direction:column;gap:10px;max-height:280px;display:flex;overflow-y:auto}.garden-stamps{flex-wrap:wrap;gap:12px;display:flex}.garden-stamps>.garden-stamp{border-radius:10px;width:56px;height:56px}.plant-lifecycle-content .plant-species-chips{flex-wrap:wrap;gap:8px;margin-bottom:20px;display:flex}.plant-lifecycle-content .plant-stage-grid{border:1px solid var(--color-border);background:#fff;border-radius:20px;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));align-items:center;gap:20px;margin-bottom:20px;padding:20px;display:grid}.plant-lifecycle-content .plant-stage-view{border:1px solid var(--color-border);background:radial-gradient(circle at bottom,#f3ede0 0%,#faf7f0 70%);border-radius:16px;justify-content:center;align-items:center;min-height:300px;padding:16px;display:flex;position:relative}.plant-lifecycle-content .plant-stage-view img{object-fit:contain;filter:drop-shadow(0 8px 16px #0000001f);max-width:100%;max-height:260px}.garden-page{width:100%;max-width:var(--content-max);margin:0 auto}.garden-layout{grid-template-columns:minmax(0,1fr)}.garden-info{color:inherit;font:inherit;cursor:pointer;background:0 0;border:0;display:none}.stage-next{display:none}@media (width>=1100px){.garden-layout{grid-template-columns:minmax(0,1.25fr) minmax(0,1fr)}}@media (width<=640px){.garden-page{padding:var(--space-4)}.garden-hero{padding:var(--space-4);margin-bottom:var(--space-3)}.garden-kicker,.garden-intro{display:none}.garden-info{min-width:var(--touch-min);min-height:var(--touch-min);justify-content:center;align-items:center;margin-inline:-5px;padding:0;display:inline-flex}.garden-today{padding:var(--space-3);gap:var(--space-3);margin-bottom:var(--space-4);grid-template-columns:1fr 1fr;display:grid}.garden-today>div:first-child,.garden-today .btn{grid-column:1/-1}.garden-today .btn{width:100%;min-height:var(--touch-min)}.garden-layout{gap:var(--space-4);min-width:0}.garden-layout>*,.harvest-basket{min-width:0}.garden-layout .garden-section-title{margin-top:var(--space-2)}.garden-page .scenery-widget{display:none}.garden-plot-image{width:72px;height:72px}.harvest-basket-row{flex-flow:row;min-width:0;max-height:none;overflow:auto hidden}.harvest-word{flex:0 0 150px}.garden-stamps{grid-template-columns:repeat(3,minmax(0,1fr));display:grid}.garden-stamps>.garden-stamp{aspect-ratio:1;width:100%;height:auto}.plant-species-chips{flex-wrap:nowrap;overflow-x:auto}.plant-species-chips>button{flex:none}.plant-stage-grid{grid-template-columns:1fr}.plant-stage-grid>div:first-child{min-height:160px}.plant-stage-grid img{max-height:145px}.plant-mobile-body,.plant-mobile-body .plant-stage-grid{gap:var(--space-3);display:grid}.plant-mobile-body .plant-stage-grid>div:first-child{background:var(--color-surface);border-radius:var(--radius-md);place-items:center;display:grid}.stage-next{font:inherit;cursor:pointer;background:0 0;border:0;font-size:20px;display:inline}}@media (hover:none) and (pointer:coarse){.garden-plot-lesson{position:relative}.garden-plot-lesson:after{content:"";height:max(100%, var(--touch-min));position:absolute;top:50%;left:0;right:0;transform:translateY(-50%)}}.yt-watch-page{max-width:1480px}.yt-watch{gap:var(--space-6);grid-template-columns:minmax(0,1fr) 400px;align-items:start;display:grid}.yt-watch-main{min-width:0}.yt-frame{position:relative;overflow:hidden}.yt-frame-host,.yt-frame-host iframe{border:0;width:100%;height:100%;position:absolute;inset:0}.yt-watch-nav{margin-top:var(--space-3);gap:var(--space-2);flex-wrap:wrap}.yt-watch-nav a.btn{text-decoration:none}.yt-dictation{margin-top:var(--space-3)}.yt-watch.dictating{grid-template-columns:minmax(0,840px);justify-content:center}.yt-watch.dictating .yt-watch-side{display:none}.yt-watch-side{top:var(--space-4);gap:var(--space-3);max-height:calc(100vh - var(--space-8));max-height:calc(100dvh - var(--space-8));flex-direction:column;display:flex;position:sticky}.yt-side-head{justify-content:space-between;align-items:center;gap:var(--space-2);display:flex}.yt-cues{flex:1;min-height:0;margin:0;padding:0;list-style:none;position:relative;overflow-y:auto}.yt-cue{align-items:flex-start;gap:var(--space-2);padding:var(--space-1) var(--space-2);border-radius:var(--radius-sm);border-left:3px solid #0000;display:flex}.yt-cue.active{background:var(--color-surface);border-left-color:var(--color-brand)}.yt-cue.active .yt-cue-text{font-weight:700}.yt-cue-text{text-align:left;min-width:0;font:inherit;color:inherit;cursor:pointer;padding:var(--space-1) 0;background:0 0;border:0;flex:1}.yt-cue-time{color:var(--color-text-muted);font-size:var(--text-sm);margin-right:var(--space-2);font-variant-numeric:tabular-nums}.yt-cue.static .yt-cue-text{cursor:default;margin:0}.yt-import{margin-top:var(--space-3)}.yt-import summary{cursor:pointer;font-weight:600}.yt-import textarea{width:100%;margin:var(--space-2) 0;font:inherit;resize:vertical}.yt-import .row{flex-wrap:wrap}.yt-cue .btn{opacity:.6;flex:none}.yt-cue-time,.yt-cue .btn{-webkit-user-select:none;user-select:none}.yt-cue:hover .btn,.yt-cue .btn.on,.yt-cue .btn:focus-visible{opacity:1}@media (hover:none) and (pointer:coarse){.yt-cue .btn{opacity:1;min-width:var(--touch-min);min-height:var(--touch-min)}}.add-deck-pop{z-index:1000;background:var(--color-card);border:1px solid var(--color-border);border-radius:var(--radius-md);box-shadow:var(--shadow-float);padding:var(--space-2);max-width:min(340px,100vw - 16px);position:fixed}.add-deck-saved{font-size:var(--text-sm)}.add-deck-form{gap:var(--space-2);flex-direction:column;min-width:280px;display:flex}.add-deck-form:focus{outline:none}.add-deck-field{font-size:var(--text-sm);color:var(--color-text-muted);flex-direction:column;gap:2px;display:flex}.add-deck-field input,.add-deck-field select,.add-deck-field textarea{font:inherit;color:var(--color-text);width:100%}.yt-update{margin:var(--space-3) 0;padding:var(--space-3);border:1px solid var(--color-border);border-radius:var(--radius-md);background:var(--color-surface);font-size:var(--text-sm)}.yt-update p{margin:0 0 var(--space-2)}.yt-update-cmd{align-items:center;gap:var(--space-2);flex-wrap:wrap;display:flex}.yt-update-cmd code{border-radius:var(--radius-sm);background:var(--color-card);border:1px solid var(--color-border);word-break:break-all;padding:2px 8px}.yt-locked,.yt-frame-error{z-index:1;align-content:center;justify-items:center;gap:var(--space-2);padding:var(--space-4);text-align:center;background:var(--color-text);color:#fff;display:grid;position:absolute;inset:0}.yt-locked span{color:#b8c7d6}.yt-frame-error p{font-size:var(--text-sm);margin:0;line-height:1.4}.yt-frame-error .btn{min-height:var(--touch-min);align-items:center;text-decoration:none;display:inline-flex}@media (width>=2200px){.yt-watch-page{max-width:1760px}.yt-watch{grid-template-columns:minmax(0,1fr) 480px}}@media (width<=1100px){.yt-watch,.yt-watch.dictating{grid-template-columns:minmax(0,1fr)}.yt-watch-side{max-height:60dvh;position:static}}.watch-phone{width:100%;max-width:720px;margin:0 auto}.watch-sticky{top:var(--safe-top);z-index:5;margin-left:calc(-1 * (var(--space-4) + var(--safe-left)));margin-right:calc(-1 * (var(--space-4) + var(--safe-right)));background:var(--color-bg);border-bottom:1px solid var(--color-border);position:sticky}body:has(.watch-sticky):before{content:"";height:var(--safe-top);z-index:50;background:var(--color-bg);pointer-events:none;position:fixed;top:0;left:0;right:0}.watch-sticky-video{background:var(--color-text)}.watch-sticky-video .video-box{border-radius:0;width:min(100%,88.8889dvh);margin:0 auto}.watch-sticky-video.collapsed{height:0;overflow:hidden}.watch-strip{align-items:center;gap:var(--space-1);padding:6px var(--space-2);background:var(--color-card);display:flex}.strip-btn{width:100%;min-width:0;min-height:var(--touch-min);flex:1 1 0;justify-content:center;align-items:center;gap:2px;padding:0 4px;font-size:13px;font-weight:700;display:inline-flex}.strip-play{flex-grow:1.4}.watch-strip .speed-menu{flex:1 1 0;min-width:0;display:flex}.watch-strip .speed-options{top:calc(100% + 4px);bottom:auto}.watch-tabs{background:var(--color-bg);grid-template-columns:1fr 1fr;display:grid}.watch-tabs button{min-height:var(--touch-min);font:inherit;color:var(--color-text-muted);cursor:pointer;background:0 0;border:0;border-bottom:3px solid #0000;font-size:14.5px}.watch-tabs button[aria-selected=true]{color:var(--color-text);border-bottom-color:var(--color-brand);font-weight:700}.watch-tabs button:disabled{opacity:.5;cursor:default}.watch-intro{align-items:flex-start;gap:var(--space-1);padding:var(--space-3) 0 var(--space-2);flex-direction:column;display:flex}.watch-title{margin:0;font-size:19px;line-height:1.3}.watch-panel[hidden]{display:none}.watch-panel .yt-cues{flex:none;overflow:visible}.watch-panel .yt-cue{border-radius:12px;margin-bottom:2px;padding:4px 4px 4px 10px}.watch-panel .yt-cue-text{padding:8px 0;font-size:16px;line-height:1.5}.watch-panel .yt-cue .btn{opacity:1;min-width:var(--touch-min);min-height:var(--touch-min)}.watch-panel .yt-import textarea{min-height:8rem;font-size:16px}.watch-panel .yt-import .btn{min-height:var(--touch-min)}.watch-panel .dict-actions{bottom:calc(var(--dock-h) + var(--extra-bottom));z-index:3;padding:var(--space-2) 0;background:var(--color-bg);position:sticky}.watch-panel .yt-dictation{margin-top:var(--space-2)}.yt-page{width:100%;max-width:var(--content-max);margin:0 auto}.yt-add{margin-bottom:var(--space-6)}.yt-add .row{margin-top:var(--space-2);flex-wrap:nowrap}.yt-add input{flex:1;min-width:0}.yt-error{color:#bc1414;font-size:var(--text-sm);margin:var(--space-2) 0 0}.yt-source-head{align-items:baseline;gap:var(--space-1) var(--space-3);flex-wrap:wrap;display:flex}.yt-card{gap:var(--space-3);flex-direction:column;display:flex;position:relative}.yt-card-link{color:inherit;text-decoration:none;display:block}.yt-card h3{margin:var(--space-3) 0 var(--space-1);-webkit-line-clamp:2;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.yt-del{align-self:flex-start;margin-top:auto}.yt-more{display:none}.yt-thumb{aspect-ratio:16/9;border-radius:var(--radius-md);background:var(--color-surface);place-items:center;display:grid;position:relative;overflow:hidden}.yt-thumb img{object-fit:cover;width:100%;height:100%;display:block}.yt-thumb.sm{border-radius:var(--radius-sm);flex:none;width:120px}.yt-thumb-label{z-index:1;color:#fff;font-variant-numeric:tabular-nums;background:#000000b8;border-radius:4px;padding:0 6px;font-size:11px;line-height:18px;position:absolute}.yt-thumb-label.yt-idx{top:4px;left:4px}.yt-thumb-label.yt-dur,.yt-thumb>.yt-thumb-label:not(.yt-idx){bottom:6px;right:4px}.yt-thumb>.bar{background:#fff6;border-radius:0;height:3px;position:absolute;bottom:0;left:0;right:0}.yt-thumb>.bar>i{background:#e0453a}.yt-list{background:var(--color-card);border:1px solid var(--color-border);border-radius:var(--radius-lg);box-shadow:var(--shadow-card);overflow:hidden}.yt-row{align-items:center;gap:var(--space-3);padding:var(--space-3) var(--space-4);color:inherit;border-top:1px solid var(--color-border);text-decoration:none;display:flex}.yt-row:first-child{border-top:0}.yt-row:hover,.yt-row:focus-visible{background:var(--color-surface)}.yt-meta{flex-direction:column;flex:1;gap:2px;min-width:0;display:flex}.yt-meta b{-webkit-line-clamp:2;-webkit-box-orient:vertical;line-height:1.3;display:-webkit-box;overflow:hidden}.yt-sub{align-items:center;gap:var(--space-1) var(--space-2);font-size:var(--text-sm);flex-wrap:wrap;display:flex}.yt-channel{text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}@media (width>=641px){.yt-row{align-items:center;column-gap:var(--space-3);grid-template-columns:36px 120px minmax(0,1fr) 52px 70px;display:grid}.yt-thumb.sm,.yt-meta,.yt-sub{display:contents}.yt-row .yt-thumb-label{color:var(--color-text-muted);font-size:var(--text-sm);background:0 0;padding:0;position:static}.yt-row .yt-idx{text-align:right;grid-area:1/1/span 2}.yt-row img{aspect-ratio:16/9;object-fit:cover;border-radius:var(--radius-sm);background:var(--color-surface);grid-area:1/2/span 2;width:100%}.yt-row .yt-meta b{grid-area:1/3;align-self:end}.yt-row .yt-channel{grid-area:2/3;align-self:start}.yt-row .yt-dur{text-align:right;grid-area:1/4/span 2}.yt-row .chip{grid-area:1/5/span 2;justify-self:end}.yt-row .bar{height:4px;margin-top:var(--space-1);border-radius:var(--radius-pill);background:var(--color-surface-2);grid-area:3/2;position:static}}@media (width<=640px){.yt-add .row input{min-height:var(--touch-min);font-size:16px}.yt-add .row .btn,.yt-update-cmd .btn{min-height:var(--touch-min)}.grid.src-list{background:var(--color-card);border:1px solid var(--color-border);border-radius:var(--radius-lg);box-shadow:var(--shadow-card);grid-template-columns:minmax(0,1fr);gap:0;overflow:hidden}.src-list>.yt-card{border:0;border-top:1px solid var(--color-border);min-width:0;min-height:76px;box-shadow:none;background:0 0;border-radius:0;flex-direction:row;align-items:center;gap:0;padding:0}.src-list>.yt-card:first-child{border-top:0}.src-list .yt-card-link{gap:var(--space-3);min-width:0;padding:10px 0 10px var(--space-3);flex:1;grid-template-columns:120px minmax(0,1fr);align-items:center;display:grid}.src-list .yt-thumb{border-radius:10px}.src-list .yt-card h3{margin:0;font-size:15px;line-height:1.3}.src-list .yt-card-text{min-width:0}.src-list .yt-card-text .muted{white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.src-list .yt-thumb-label{white-space:nowrap}.src-list .yt-del{display:none}.src-list .yt-more{color:var(--color-text-muted);flex:none;justify-content:center;align-items:center;margin-right:2px;display:inline-flex}.yt-row{align-items:start;gap:var(--space-3);padding:10px var(--space-3);grid-template-columns:120px minmax(0,1fr);min-height:64px;display:grid}.yt-meta b{font-size:14.5px}}.scroll-box{max-height:var(--scroll-box-max,180px);overscroll-behavior:contain;min-width:0;overflow-y:auto}.scroll-box>a{padding:var(--space-1) 0;overflow-wrap:anywhere;display:block}.scroll-box.tall{--scroll-box-max:420px}.collapsible-head{align-items:baseline;gap:var(--space-2);margin-bottom:var(--space-2);flex-wrap:wrap;display:flex}.collapsible.closed .collapsible-head{margin-bottom:0}.collapsible-title{margin:0;font-weight:700}div.collapsible-title{font-size:inherit}.collapsible-toggle{align-items:baseline;gap:var(--space-2);padding:var(--space-1) 0;font:inherit;color:inherit;cursor:pointer;text-align:left;background:0 0;border:0;display:inline-flex}.collapsible-toggle:hover{color:var(--color-accent-ink)}@media (hover:none) and (pointer:coarse){.collapsible-toggle{min-height:var(--touch-min)}}.collapsible-caret{font-size:.85em;transition:transform .15s;display:inline-block}.collapsible.closed .collapsible-caret{transform:rotate(-90deg)}.collapsible-hint{font-size:var(--text-sm)}.collapsible-body[hidden]{display:none}.lesson-reflex{margin-top:var(--space-4)}.lesson-reflex .reflex{margin-top:0}.enrichment-group-gap{margin-top:var(--space-6)}.family-page{gap:var(--space-4);flex-direction:column;display:flex}.family-members{gap:var(--space-3);flex-wrap:wrap;margin:0;padding:0;list-style:none;display:flex}.family-member{gap:var(--space-1);text-align:left;font:inherit;color:var(--color-text);cursor:pointer;flex-direction:column;display:flex}.family-member:hover{border-color:var(--color-accent)}.family-member.on{outline:2px solid var(--color-accent-ink);outline-offset:1px}.family-summary{gap:var(--space-3);flex-direction:column;display:flex}.family-stats{gap:var(--space-3);grid-template-columns:repeat(auto-fit,minmax(150px,1fr));display:grid}.family-stat{gap:var(--space-1);flex-direction:column;display:flex}.family-stat b{font-size:20px}.family-bars{gap:var(--space-1);grid-template-columns:repeat(14,minmax(0,1fr));margin:0;padding:0;list-style:none;display:grid}.family-bars li{flex-direction:column;align-items:center;gap:2px;font-size:11px;display:flex}.family-bars .bar-col{align-items:flex-end;width:100%;height:96px;display:flex}.family-bars .bar{background:var(--color-border);border-radius:3px 3px 0 0;width:100%;min-height:2px;display:block}.family-bars .bar.hit{background:var(--color-accent)}.family-bars .bar-min{font-weight:600}.family-bars .bar-day{color:var(--color-text-muted)}@media (width<=640px){.family-bars{gap:2px}.family-bars .bar-day{display:none}.family-members{scrollbar-width:none;-ms-overflow-style:none;padding-bottom:var(--space-2);flex-wrap:nowrap;overflow-x:auto}.family-members::-webkit-scrollbar{display:none}.family-member{flex-shrink:0;min-width:80px}.family-stats{grid-template-columns:1fr 1fr}.family-bars li:nth-child(2n) .bar-day{display:none}.family-bars li:nth-child(odd) .bar-day{font-size:10px;display:block}.family-test-row{padding:var(--space-3);border:1px solid var(--color-border);border-radius:var(--radius-md);background:var(--color-card)}}.admin-page{gap:var(--space-4);box-sizing:border-box;flex-direction:column;width:100%;min-width:0;max-width:1080px;margin:0 auto;display:flex}.admin-tabs{gap:var(--space-2);border-bottom:1px solid var(--color-border);scrollbar-width:none;-ms-overflow-style:none;flex-wrap:nowrap;width:100%;min-width:0;display:flex;overflow-x:auto}.admin-tabs::-webkit-scrollbar{display:none}.admin-tab{padding:var(--space-2) var(--space-3);color:var(--color-text-muted);white-space:nowrap;border-bottom:2px solid #0000;margin-bottom:-1px;text-decoration:none}.admin-tab:hover{color:var(--color-text)}.admin-tab.on{color:var(--color-text);border-bottom-color:var(--color-accent);font-weight:600}.admin-accounts,.admin-create{gap:var(--space-3);flex-direction:column;display:flex}.admin-create-grid{gap:var(--space-3);grid-template-columns:repeat(auto-fit,minmax(180px,1fr));display:grid}.admin-create-grid label{gap:var(--space-1);flex-direction:column;display:flex}.admin-create-wide{grid-column:1/-1}.admin-contact-edit{gap:var(--space-3);flex-direction:column;display:flex}.admin-account-meta{gap:var(--space-1) var(--space-4);flex-wrap:wrap;margin:0;font-size:.9em;display:flex}.admin-account-meta>div{gap:var(--space-1);min-width:0;display:flex}.admin-account-meta dt:after{content:":"}.admin-account-meta dd{overflow-wrap:anywhere;margin:0}.admin-account-note{flex-basis:100%}.admin-account-list{gap:var(--space-2);flex-direction:column;margin:0;padding:0;list-style:none;display:flex}.admin-account{gap:var(--space-2);flex-direction:column;display:flex}.admin-account-main{justify-content:space-between;align-items:center;gap:var(--space-3);flex-wrap:wrap;display:flex}.admin-reset input{flex:220px}.admin-backup{gap:var(--space-3);flex-direction:column;min-width:0;display:flex}.admin-backup-cards{gap:var(--space-3);grid-template-columns:repeat(auto-fit,minmax(min(240px,100%),1fr));display:grid}.admin-backup-card{gap:var(--space-2);flex-direction:column;min-width:0;display:flex}.admin-backup-meta{gap:var(--space-1);flex-direction:column;margin:0;display:flex}.admin-backup-meta>div{gap:var(--space-2);min-width:0;display:flex}.admin-backup-meta dt{flex:none;min-width:6rem}.admin-backup-meta dd,.admin-backup-error{overflow-wrap:anywhere;margin:0}.admin-backup-actions{flex-wrap:wrap}.admin-backup-result{overflow-wrap:anywhere;min-width:0}.admin-backup-list{gap:var(--space-2);flex-direction:column;margin:0;padding:0;list-style:none;display:flex}.admin-backup-item{gap:var(--space-1);flex-direction:column;min-width:0;display:flex}.admin-backup-item-head{align-items:baseline;gap:var(--space-1) var(--space-3);flex-wrap:wrap;display:flex}.admin-backup-key{overflow-wrap:anywhere;font:13px/1.5 ui-monospace,Cascadia Mono,Consolas,monospace}.admin-matrix-wrap{width:100%;min-width:0;overflow-x:auto}.admin-matrix{border-collapse:collapse;min-width:100%}.admin-matrix th,.admin-matrix td{padding:var(--space-2) var(--space-3);border-bottom:1px solid var(--color-border);text-align:center;vertical-align:top}.admin-matrix th[scope=row],.admin-matrix thead th:first-child{text-align:left;font-weight:500}.admin-matrix-group th{text-align:left;background:var(--color-surface-2,transparent);font-weight:600}.admin-matrix input[type=number]{width:7.5rem}.admin-matrix-check{cursor:pointer;justify-content:center;align-items:center;display:inline-flex}@media (width>=900px){.admin-create-grid{grid-template-columns:repeat(4,1fr)}}@media (width<=900px){.admin-create-grid{grid-template-columns:repeat(2,1fr)}}@media (hover:none) and (pointer:coarse),(width<=640px){.admin-tab{min-height:var(--touch-min);flex:none;align-items:center;display:flex}.admin-matrix-cell{padding:0}.admin-matrix-check{min-width:var(--touch-min);min-height:var(--touch-min);box-sizing:border-box;width:100%;height:100%}.admin-create .btn{min-height:var(--touch-min)}.admin-account select,.admin-create select{min-height:var(--touch-min);font-size:16px}.admin-backup .btn,.admin-account .btn,.feedback-item .btn{min-height:var(--touch-min);flex:auto}.admin-matrix input[type=number]{min-height:var(--touch-min);box-sizing:border-box;width:100%;min-width:10rem;font-size:16px}.admin-matrix select{min-height:var(--touch-min);font-size:16px}}@media (width<=640px){.admin-tabs{padding-right:var(--space-4);-webkit-mask-image:linear-gradient(to right, #000 calc(100% - var(--space-4)), transparent);-webkit-mask-image:linear-gradient(to right, #000 calc(100% - var(--space-4)), transparent);-webkit-mask-image:linear-gradient(to right, #000 calc(100% - var(--space-4)), transparent);-webkit-mask-image:linear-gradient(to right, #000 calc(100% - var(--space-4)), transparent);mask-image:linear-gradient(to right, #000 calc(100% - var(--space-4)), transparent)}.admin-create-grid{grid-template-columns:1fr}.admin-account,.feedback-item{padding:var(--space-3);border:1px solid var(--color-border);border-radius:var(--radius-md);background:var(--color-card)}.admin-account-main{flex-direction:column;align-items:stretch}.admin-account-main .row{flex-wrap:wrap}.admin-matrix th,.admin-matrix td{padding:var(--space-2)}.admin-matrix-cell{padding:0}}.tests-page{width:100%;max-width:var(--content-max);gap:var(--space-4);flex-direction:column;margin:0 auto;display:flex}.tests-head h2{margin:0 0 var(--space-1)}.tests-head p{margin:0}.tests-layout{gap:var(--space-4);grid-template-columns:320px minmax(0,1fr);align-items:start;display:grid}.tests-list{top:var(--space-4);gap:var(--space-4);max-height:calc(100vh - 2 * var(--space-4) - 16px);max-height:calc(100dvh - 2 * var(--space-4) - 16px);padding:var(--space-3);flex-direction:column;display:flex;position:sticky;overflow-y:auto}.tests-group h3{margin:0 0 var(--space-1);padding:0 var(--space-2);letter-spacing:.04em;text-transform:uppercase;color:var(--color-muted,var(--color-text));opacity:.75;font-size:12px}.tests-group ul{flex-direction:column;gap:2px;margin:0;padding:0;list-style:none;display:flex}.tests-item{text-align:left;width:100%;font:inherit;color:var(--color-text);cursor:pointer;padding:var(--space-2);border-radius:var(--radius-md);background:0 0;border:0;flex-direction:column;gap:2px;display:flex}.tests-item:hover{background:var(--color-surface)}.tests-item.on{background:var(--color-brand-soft);font-weight:600}.tests-status{opacity:.7;font-size:12px;font-weight:400}.tests-status.done{opacity:1;color:var(--color-accent-ink)}.test-empty{text-align:center;place-items:center;min-height:320px;display:grid}.test-empty p{opacity:.7;margin:0}.test-panel{gap:var(--space-3);min-width:0;padding:var(--space-4) var(--space-5,var(--space-4));border:1px solid var(--color-border);border-radius:var(--radius-lg);background:var(--color-card);box-shadow:var(--shadow-card);flex-direction:column;display:flex}.test-panel h3,.test-panel h4{margin:0}.test-panel h4{margin-top:var(--space-2);padding-top:var(--space-4);border-top:1px solid var(--color-border)}.test-body{gap:var(--space-3);grid-template-columns:minmax(0,1fr);align-items:start;display:grid}.test-paper,.test-side{gap:var(--space-3);flex-direction:column;min-width:0;display:flex}.test-side p{margin:0}@media (width>=1280px){.test-body{gap:var(--space-4);grid-template-columns:minmax(0,1fr) 300px}.test-side{top:var(--space-4);position:sticky}.test-side h4:first-child{border-top:0;margin-top:0;padding-top:0}}.tests-switch{display:none}@media (width<=900px){.tests-layout{grid-template-columns:minmax(0,1fr)}.tests-list{max-height:none;position:static;overflow:visible}.tests-list.collapsed,.test-empty{display:none}.tests-switch{justify-content:space-between;align-items:center;gap:var(--space-3);width:100%;min-height:var(--touch-min);padding:var(--space-2) var(--space-3);font:inherit;color:var(--color-text);text-align:left;cursor:pointer;border:1px solid var(--color-border);border-radius:var(--radius-lg);background:var(--color-card);box-shadow:var(--shadow-card);display:flex}.tests-switch-title{text-overflow:ellipsis;white-space:nowrap;min-width:0;font-weight:700;overflow:hidden}.tests-switch-label{font-size:var(--text-sm);color:var(--color-accent-ink);flex:none;font-weight:700}.tests-item{min-height:var(--touch-min)}.test-panel{padding:var(--space-3)}}.test-files{gap:var(--space-2);flex-wrap:wrap;display:flex}.test-locked{opacity:.6;cursor:not-allowed;align-items:center;gap:4px;display:inline-flex}.test-audio{gap:var(--space-1);flex-direction:column;font-size:13px;display:flex}.test-audio audio{width:100%}.test-score-form{align-items:flex-end;gap:var(--space-2);flex-wrap:wrap;display:flex}.test-score-form label{flex-direction:column;gap:2px;font-size:13px;display:flex}.test-score-form input{width:110px}.test-error{color:var(--color-danger,#b3261e);flex-basis:100%;margin:0}.test-history{gap:var(--space-1);flex-direction:column;margin:0;padding:0;list-style:none;display:flex}.test-history li{gap:var(--space-3);flex-wrap:wrap;align-items:baseline;display:flex}.test-note{font-size:13px}.family-tests{gap:var(--space-2);flex-direction:column;margin:0;padding:0;list-style:none;display:flex}.family-test-row{align-items:center;gap:var(--space-3);padding:var(--space-2);border:1px solid var(--color-border);border-radius:var(--radius-md);background:var(--color-card);flex-wrap:wrap;display:flex}.family-test-row .title{flex:200px}.family-test-row input[type=number]{width:80px}.family-test-row input[type=text]{flex:160px}.quiz-form{gap:var(--space-3);flex-direction:column;display:flex}.quiz-instruction{margin:var(--space-2) 0 0;font-weight:600}.quiz-question{padding:var(--space-2) var(--space-3);border:1px solid var(--color-border);border-radius:var(--radius-md);background:var(--color-surface);gap:var(--space-1);flex-direction:column;margin:0;display:flex}.quiz-question legend{padding:0 var(--space-1);font-weight:600}.quiz-question label{gap:var(--space-2);min-height:var(--touch-min);cursor:pointer;padding:2px var(--space-1);border-radius:var(--radius-sm,6px);align-items:center;display:flex}.quiz-question input[type=radio]{flex:none;width:20px;height:20px;margin:0}.quiz-question.ok{border-color:var(--color-success,#2e7d32)}.quiz-question.wrong{border-color:var(--color-danger,#b3261e)}.quiz-question label.right{background:var(--color-success,#2e7d32)}@supports (color:color-mix(in lab, red, red)){.quiz-question label.right{background:color-mix(in srgb, var(--color-success,#2e7d32) 18%, transparent)}}.quiz-fix{color:var(--color-danger,#b3261e);margin:0;font-size:13px}.quiz-score{margin:0;font-size:16px}.quiz-actions{bottom:var(--dock-h);z-index:3;gap:var(--space-3);padding:var(--space-2) 0;background:var(--color-card);border-top:1px solid var(--color-border);flex-wrap:wrap;align-items:center;display:flex;position:sticky}.quiz-actions .btn,.quiz-form>.btn{min-height:var(--touch-min)}@media (width<=640px){.quiz-actions{bottom:calc(var(--dock-h) + var(--extra-bottom))}.test-score-form input{width:100%;min-height:var(--touch-min);font-size:16px}.test-score-form label{flex:120px}.test-score-form .btn{min-height:var(--touch-min)}}.list-pane{min-width:0;max-height:calc(100dvh - 32px);padding:var(--space-4) var(--space-3) var(--space-3);flex-direction:column;align-self:start;display:flex;position:sticky;top:0;overflow-y:auto}.search-box{align-items:center;gap:var(--space-2);padding:0 var(--space-3);border:1px solid var(--color-border);border-radius:var(--radius-md);background:var(--color-bg);color:var(--color-icon);margin:0;display:flex}.search-box:focus-within{outline:3px solid var(--color-accent-ink);outline-offset:2px}.search-box input{min-width:0;font:inherit;color:var(--color-text);background:0 0;border:0;outline:0;flex:1;padding:10px 0;font-size:14px}.search-box kbd{margin:0}.filter-row{margin:10px 0 var(--space-3);gap:6px;display:flex}.filter-row select{border:1px solid var(--color-border);border-radius:var(--radius-sm);min-width:0;font:inherit;color:var(--color-text);flex:1;padding:8px 10px;font-size:13px}.list-tabs{gap:var(--space-3);border-bottom:1px solid var(--color-border);display:flex}.list-tabs button{font:inherit;white-space:nowrap;color:var(--color-text-muted);cursor:pointer;background:0 0;border:0;border-radius:0;align-items:center;gap:6px;padding:6px 4px 10px;font-size:13px;font-weight:600;display:inline-flex;position:relative}.list-tabs button:hover{color:var(--color-text)}.list-tabs button.selected{color:var(--color-accent-ink)}.list-tabs button.selected:after{content:"";background:var(--color-accent);height:2px;position:absolute;bottom:-1px;left:0;right:0}.list-tabs .li{width:14px;height:14px}.list-tabs span{background:var(--color-surface);border-radius:6px;padding:0 6px;font-size:11px}.list-summary{justify-content:space-between;gap:var(--space-2);margin:var(--space-3) 2px 8px;color:var(--color-text-muted);font-size:11px;display:flex}.note-list{gap:6px;margin:0;padding:0;list-style:none;display:grid}.note-row{border-radius:var(--radius-md);width:100%;font:inherit;text-align:left;color:var(--color-text);cursor:pointer;background:0 0;border:1px solid #0000;padding:12px;display:block}.note-row:hover{background:var(--color-bg)}.note-row.selected{border-color:var(--color-border);background:var(--color-accent-soft)}.note-row>span{overflow-wrap:anywhere;min-width:0}.note-row-head{color:var(--color-text-muted);justify-content:space-between;align-items:center;gap:8px;margin-bottom:4px;font-size:11px;display:flex}.note-row-source{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.pin-mark{color:var(--color-accent-ink);flex:none;display:inline-flex}.pin-mark .li{width:13px;height:13px}.note-row-title{margin-bottom:4px;font-size:14px;font-weight:600;line-height:1.4;display:block}.note-preview{-webkit-line-clamp:2;color:var(--color-text-muted);-webkit-box-orient:vertical;font-size:12px;line-height:1.5;overflow:hidden;display:-webkit-box!important}.note-row-foot{color:var(--color-text-muted);flex-wrap:wrap;align-items:center;gap:6px;margin-top:8px;font-size:11px;display:flex}.note-row-foot .note-date{margin-left:auto}.note-tag{border:1px solid var(--color-border);background:var(--color-card);white-space:nowrap;color:var(--color-text);border-radius:6px;padding:1px 7px;font-size:11px;display:inline-block}.more-button{margin-top:var(--space-3);align-self:center}.notes-empty{text-align:center;color:var(--color-text-muted);padding:36px 12px;font-size:13px}.notes-empty .li{width:28px;height:28px;color:var(--color-icon);margin:0 auto 10px;display:block}.notes-empty h3{color:var(--color-text);margin:0 0 6px;font-size:16px}.notes-empty p{max-width:38ch;margin:0 auto var(--space-3)}.detail-empty{align-content:center;justify-items:center;min-height:100%;padding:48px 24px;display:grid}.detail-empty .illus{width:clamp(180px,22cqw,260px);height:auto;margin-bottom:var(--space-4)}.detail-empty h3{margin-bottom:10px;font-size:22px}.detail-empty p{max-width:46ch;margin-bottom:var(--space-4);font-size:16px;line-height:1.6}.detail-empty .btn{padding:11px 22px;font-size:15px}.notes-page{--notes-danger:#a8362f;container:notes/inline-size}.notes-page [hidden]{display:none!important}.notes-head{justify-content:space-between;align-items:center;gap:var(--space-3) var(--space-4);margin-bottom:var(--space-4);flex-wrap:wrap;display:flex}.notes-head .btn{white-space:nowrap;flex:none}.notes-head .eyebrow{letter-spacing:1.6px;color:var(--color-text-muted);margin:0;font-size:11px;font-weight:700}.notes-head h1{font-family:var(--font-read);letter-spacing:-.5px;margin:2px 0;font-size:38px;font-weight:500}.notes-head .title-dot{color:var(--color-icon-accent)}.notes-page[data-focus=true] .notes-head{display:none}.notes-layout{background:var(--color-card);border:1px solid var(--color-border);border-radius:var(--radius-lg);min-height:min(660px,70dvh);box-shadow:var(--shadow-card);grid-template-columns:clamp(250px,28cqw,320px) minmax(0,1fr);display:grid;overflow:clip}.notes-page .icon-button{width:38px;height:38px;color:var(--color-text-muted);cursor:pointer;background:0 0;border:0;border-radius:12px;flex:none;place-items:center;padding:0;display:inline-grid}.notes-page .icon-button:hover:not(:disabled){background:var(--color-surface);color:var(--color-text)}.notes-page .icon-button:disabled{opacity:.4;cursor:default}.notes-page .icon-button.bordered{border:1px solid var(--color-border);background:var(--color-card)}.notes-page .icon-button.is-pinned{background:var(--color-accent-soft);color:var(--color-accent-ink)}.notes-page .icon-button .li{width:18px;height:18px}.notes-page .link-button{font:inherit;color:inherit;cursor:pointer;background:0 0;border:0;padding:0;font-weight:700;text-decoration:underline}.detail-pane{border-left:1px solid var(--color-border);background:var(--color-card);min-width:0;padding:20px 28px 24px}.detail-inner{max-width:760px}.mobile-back{margin-bottom:var(--space-3);font:inherit;color:var(--color-accent-ink);cursor:pointer;background:0 0;border:0;align-items:center;gap:6px;padding:4px 0;font-size:13px;font-weight:600;display:none}.detail-top{justify-content:space-between;align-items:center;gap:var(--space-2);padding-bottom:18px;display:flex}.lesson-link{min-width:0;max-width:65%;color:var(--color-accent-ink);align-items:center;gap:6px;padding:5px 0;font-size:13px;font-weight:600;text-decoration:none;display:inline-flex}.lesson-link:hover:not(.static){text-decoration:underline}.lesson-link.static{color:var(--color-text-muted)}.lesson-link span{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.lesson-link .li{flex:none;width:16px;height:16px}.note-tools{align-items:center;gap:2px;display:flex}.detail-title{font-family:var(--font-read);letter-spacing:-.4px;overflow-wrap:anywhere;margin:0;font-size:30px;font-weight:500;line-height:1.28}.detail-meta{color:var(--color-text-muted);flex-wrap:wrap;align-items:center;gap:8px 12px;margin-top:14px;font-size:12px;display:flex}.note-divider{border:0;border-top:1px solid var(--color-border);margin:20px 0}.quote-box{border-left:3px solid var(--color-brand);border-radius:0 var(--radius-sm) var(--radius-sm) 0;background:var(--color-surface);margin-bottom:24px;padding:16px 18px}.quote-label{letter-spacing:1.1px;text-transform:uppercase;color:var(--color-text-muted);align-items:center;gap:6px;margin-bottom:8px;font-size:11px;font-weight:700;display:flex}.quote-label .li{width:14px;height:14px}.quote-box blockquote{font-family:var(--font-read);overflow-wrap:anywhere;margin:0;font-size:19px;font-style:italic;line-height:1.55}.note-body{overflow-wrap:anywhere;max-width:68ch;font-size:15px;line-height:1.8}.note-body h3{margin:24px 0 8px;font-size:15px;font-weight:700}.note-body h3:first-child{margin-top:0}.note-body p{white-space:pre-line;margin:0 0 12px}.note-body ul{margin:8px 0 16px;padding-left:20px}.note-body li{white-space:pre-line;margin:4px 0;padding-left:2px}.note-body code{border:1px solid var(--color-border);background:var(--color-surface);color:var(--color-accent-ink);white-space:pre-wrap;border-radius:8px;margin:0 0 12px;padding:8px 12px;font:13px/1.6 ui-monospace,Cascadia Mono,Consolas,monospace;display:block}.note-empty-body{color:var(--color-text-muted)}.detail-footer{justify-content:space-between;align-items:center;gap:var(--space-2);border-top:1px solid var(--color-border);margin-top:28px;padding-top:16px;display:flex}.save-state{color:var(--color-text-muted);flex-wrap:wrap;align-items:center;gap:6px;font-size:12px;display:inline-flex}.save-state .li{width:14px;height:14px}.save-state.saved{color:var(--color-ok)}.save-state.error{color:var(--notes-danger)}.note-menu-wrap{position:relative}.note-menu{z-index:10;border:1px solid var(--color-border);border-radius:var(--radius-md);background:var(--color-card);width:184px;box-shadow:var(--shadow-float);padding:5px;position:absolute;top:42px;right:0}.note-menu button{border-radius:var(--radius-sm);width:100%;font:inherit;text-align:left;color:var(--color-text);cursor:pointer;background:0 0;border:0;align-items:center;gap:8px;padding:9px 10px;font-size:13px;display:flex}.note-menu button:hover:not(:disabled),.note-menu button:focus-visible{background:var(--color-surface)}.note-menu button:disabled{opacity:.45;cursor:default}.note-menu button.danger{color:var(--notes-danger)}.note-menu .li{width:16px;height:16px}.edit-fields{gap:14px;display:grid}.edit-fields label,.edit-fields .field{color:var(--color-text-muted);gap:5px;margin:0;font-size:12px;display:grid}.edit-fields .field-label{font-size:12px}.edit-fields input,.edit-fields textarea{border:1px solid var(--color-border);border-radius:var(--radius-sm);width:100%;min-width:0;font:inherit;color:var(--color-text);padding:10px 12px;font-size:14px}.edit-fields textarea{resize:vertical;line-height:1.7}.edit-fields .edit-title{font-family:var(--font-read);font-size:22px}.edit-meta{grid-template-columns:repeat(auto-fit,minmax(170px,1fr));gap:12px;display:grid}.edit-meta .field{grid-column:1/-1}.format-hint{justify-content:space-between;gap:var(--space-2);color:var(--color-text-muted);margin-top:-8px;font-size:11px;display:flex}.lesson-picker{flex-wrap:wrap;align-items:center;gap:4px;display:flex;position:relative}.lesson-picker>input{flex:1;min-width:0}.lesson-options{border:1px solid var(--color-border);border-radius:var(--radius-md);background:var(--color-card);max-height:260px;box-shadow:var(--shadow-ctl);flex:100%;margin:0;padding:4px;list-style:none;overflow-y:auto}.lesson-options li{border-radius:var(--radius-sm);min-height:52px;color:var(--color-text);cursor:pointer;align-content:center;gap:1px;padding:6px 10px;font-size:14px;display:grid}.lesson-options li span{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.lesson-options li small{color:var(--color-text-muted);text-overflow:ellipsis;white-space:nowrap;font-size:11.5px;overflow:hidden}.lesson-options li.active{background:var(--color-accent-soft)}.lesson-options .lesson-options-note{color:var(--color-text-muted);cursor:default;align-items:center;min-height:52px;display:grid}.notes-toast{bottom:calc(var(--dock-h) + 16px);z-index:60;border-radius:var(--radius-md);background:var(--color-text);width:max-content;max-width:calc(100vw - 28px);box-shadow:var(--shadow-float);color:var(--color-card);align-items:center;gap:14px;padding:11px 16px;font-size:13px;display:flex;position:fixed;left:50%;transform:translate(-50%)}.notes-toast button{min-height:28px;font:inherit;color:inherit;cursor:pointer;background:0 0;border:0;padding:0 2px;font-weight:700;text-decoration:underline}body.notes-focus .app,body.notes-focus .app.rail{grid-template-columns:minmax(0,1fr)}body.notes-focus .nav{display:none}.notes-layout.focused{grid-template-columns:minmax(0,1fr)}.notes-layout.focused .list-pane{display:none}.notes-layout.focused .detail-pane{border-left:0}.notes-layout.focused .detail-inner{max-width:680px;margin:0 auto}@container notes (width>=641px) and (width<=900px){.notes-layout{grid-template-columns:255px minmax(0,1fr)}.detail-pane{padding:20px}.detail-title{font-size:26px}}@container notes (width<=640px){.notes-head h1{font-size:30px}.notes-head .eyebrow{letter-spacing:1px;font-size:10px}.notes-layout{min-height:0;box-shadow:none;background:0 0;border:0;border-radius:0;display:block;overflow:visible}.detail-pane{border:1px solid var(--color-border);border-radius:var(--radius-lg);background:var(--color-card);box-shadow:var(--shadow-card)}.list-pane{max-height:none;padding:var(--space-4) 0;box-shadow:none;background:0 0;border:0;border-radius:0;position:static;overflow:visible}.detail-pane{padding:16px}.notes-layout[data-view=list] .detail-pane,.notes-layout[data-view=detail] .list-pane{display:none}.mobile-back{min-height:40px;display:inline-flex}.focus-button:not([aria-pressed=true]){display:none}.detail-title{font-size:26px}.detail-inner{max-width:none}.note-row{background:var(--color-card);border:1px solid var(--color-border);border-radius:var(--radius-lg);box-shadow:var(--shadow-card);margin-bottom:8px;padding:16px 13px}.note-row-title{font-size:15px}.note-preview{font-size:13px}.note-row-head,.note-row-foot,.list-summary{font-size:11.5px}.search-box input,.edit-fields input,.edit-fields textarea,.filter-row select{min-height:var(--touch-min);font-size:16px}.notes-page .btn,.notes-page .icon-button,.list-tabs button{min-height:var(--touch-min)}.notes-page .icon-button{width:var(--touch-min)}.edit-meta{grid-template-columns:1fr}.edit-fields input,.edit-fields textarea{scroll-margin-top:calc(var(--safe-top) + var(--space-4))}.detail-footer{bottom:calc(var(--dock-h,0px) + var(--extra-bottom,0px));background:var(--color-card);background:var(--color-surface-blur,#fffc);-webkit-backdrop-filter:blur(12px);border-top:1px solid var(--color-border);z-index:10;flex-wrap:wrap;margin:16px -16px -16px;padding:12px 16px;position:sticky}.notes-head .btn{padding:var(--space-2) var(--space-3)}}@media (width>=2200px){.notes-layout.focused .detail-inner{max-width:760px}.notes-layout.focused .note-body{max-width:75ch;font-size:18px;line-height:1.8}.notes-layout.focused .detail-title{font-size:28px}}.feedback-page{gap:var(--space-4);box-sizing:border-box;flex-direction:column;width:100%;min-width:0;max-width:720px;margin:0 auto;display:flex}.feedback-head{align-items:center;gap:var(--space-4);display:flex}.feedback-head img{flex:none;height:auto}.feedback-form{gap:var(--space-3);flex-direction:column;display:flex}.feedback-form textarea{resize:vertical;min-height:140px}.feedback-kinds{gap:var(--space-2);display:flex}.feedback-kind{font:inherit;padding:var(--space-2) var(--space-4);border:1px solid var(--color-border);border-radius:var(--radius-pill);background:var(--color-card);color:var(--color-text);cursor:pointer;font-weight:600}.feedback-kind.on{outline:2px solid var(--color-accent-ink);outline-offset:1px;background:var(--color-accent-soft)}.feedback-inbox{gap:var(--space-3);flex-direction:column;display:flex}.feedback-list{gap:var(--space-3);flex-direction:column;margin:0;padding:0;list-style:none;display:flex}.feedback-item{gap:var(--space-2);flex-direction:column;display:flex}.feedback-item.done{opacity:.6}.feedback-meta{align-items:center;gap:var(--space-2);flex-wrap:wrap;display:flex}.feedback-badge{padding:1px var(--space-2);border-radius:var(--radius-pill);background:var(--color-accent-soft);color:var(--color-text);font-size:12px;font-weight:700}.feedback-badge.bug{color:#7a2a20;background:#f6d5d0}.feedback-text{white-space:pre-wrap;overflow-wrap:anywhere;margin:0}.feedback-textarea-head{justify-content:space-between}@media (hover:none) and (pointer:coarse),(width<=640px){.feedback-kind{min-height:var(--touch-min);justify-content:center;align-items:center;display:inline-flex}.feedback-form .feedback-footer .btn{min-height:var(--touch-min)}}@media (width<=640px){.feedback-head img{width:64px;height:64px}.feedback-form .feedback-footer{flex-direction:column;align-items:stretch}.feedback-form .feedback-footer .btn{width:100%}.feedback-form textarea{min-height:140px;font-size:16px}}.login-box .turnstile-box{width:100%;min-height:65px}@media (width<=640px){.login-box.center-box{padding-top:8px;padding-left:calc(var(--space-4) + var(--safe-left));padding-right:calc(var(--space-4) + var(--safe-right));flex-direction:column;height:100dvh;margin:0;display:flex}.login-box .illus-login{object-fit:contain;max-height:96px}.login-box h1{text-align:center;font-size:26px}.login-box form.stack{gap:10px}}@media (width<=640px) and (height<=700px){.login-box .illus-login{display:none}}.mfa-qr{justify-content:center;display:flex}.qr-code{border-radius:var(--radius-md);background:#fff;width:200px;max-width:100%;height:auto;display:block}.mfa-secret{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:var(--text-sm);letter-spacing:.05em;padding:var(--space-2) var(--space-3);background:var(--color-surface);border-radius:var(--radius-md);overflow-wrap:anywhere;-webkit-user-select:all;user-select:all;display:block}.recovery-codes{gap:var(--space-2) var(--space-4);padding:var(--space-3) var(--space-3) var(--space-3) calc(var(--space-3) + 2em);background:var(--color-surface);border-radius:var(--radius-md);-webkit-user-select:all;user-select:all;grid-template-columns:repeat(2,minmax(0,1fr));margin:0;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;display:grid}.recovery-confirm{align-items:center;gap:var(--space-2);cursor:pointer}.recovery-confirm input{width:auto;min-height:0}.login-mfa-links{flex-wrap:wrap;justify-content:space-between}.mfa-enroll{max-width:460px;padding:0 var(--space-4);box-sizing:border-box}.session-list,.login-events{gap:var(--space-2);flex-direction:column;margin:0;padding:0;list-style:none;display:flex}.session-item{justify-content:space-between;align-items:center;gap:var(--space-3);padding:var(--space-3);border:1px solid var(--color-border);border-radius:var(--radius-md);min-width:0;display:flex}.session-item>div{overflow-wrap:anywhere;min-width:0}.session-item .badge{margin-left:var(--space-2);padding:0 var(--space-2);border-radius:var(--radius-pill);background:var(--color-accent-soft);color:var(--color-accent-ink);font-size:var(--text-sm);font-weight:600;display:inline-block}.session-item .btn{flex-shrink:0}.login-event{padding:var(--space-2) var(--space-3);border-left:3px solid var(--color-ok);background:var(--color-surface);border-radius:var(--radius-sm);overflow-wrap:anywhere}.login-event.failed{border-left-color:#b3261e}.login-event-head{justify-content:space-between;align-items:baseline;gap:var(--space-2);flex-wrap:wrap;display:flex}@media (width<=640px){.recovery-codes{grid-template-columns:1fr}.session-item{flex-direction:column;align-items:stretch}}.confetti{display:none}@media (prefers-reduced-motion:no-preference){.bar>i{transition:width .6s cubic-bezier(.22,1,.36,1);animation:.9s cubic-bezier(.22,1,.36,1) both bar-grow}.dict-result{animation:.25s ease-out both fade-up}.dict-words>span{animation:.3s ease-out both fade-up;animation-delay:calc(min(var(--i,0), 24) * 25ms)}.dict-words>.dict-wrong{animation-name:fade-up,word-shake;animation-duration:.3s,.4s;animation-delay:calc(min(var(--i,0), 24) * 25ms), calc(min(var(--i,0), 24) * 25ms + .3s)}.dict-result.perfect .dict-score{animation:.5s cubic-bezier(.34,1.56,.64,1) .1s both pop-in;display:inline-block}.review-card.card-enter{animation:.3s ease-out both card-enter}.review-card.card-flip{animation:.45s cubic-bezier(.22,1,.36,1) both card-flip}.celebrate .illus-element{animation:.6s cubic-bezier(.34,1.56,.64,1) both pop-in}.celebrate>:nth-child(n+2):not(.confetti){animation:.4s ease-out .3s both fade-up}.celebrate>:nth-child(n+3):not(.confetti){animation-delay:.45s}.confetti{pointer-events:none;width:0;height:0;display:block;position:absolute;top:80px;left:50%}.confetti>i{background:var(--c);opacity:0;width:8px;height:12px;animation:1.2s cubic-bezier(.2,.8,.3,1) both confetti-fly;position:absolute}}.celebrate{position:relative}@keyframes bar-grow{0%{clip-path:inset(0 100% 0 0)}to{clip-path:inset(0)}}@keyframes fade-up{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}@keyframes pop-in{0%{opacity:0;transform:scale(.4)}60%{opacity:1;transform:scale(1.15)}to{opacity:1;transform:scale(1)}}@keyframes word-shake{0%,to{transform:translate(0)}20%,60%{transform:translate(-3px)}40%,80%{transform:translate(3px)}}@keyframes card-enter{0%{opacity:0;transform:translate(24px)}to{opacity:1;transform:none}}@keyframes card-flip{0%{opacity:.4;transform:perspective(900px)rotateY(-90deg)}to{opacity:1;transform:none}}@keyframes confetti-fly{0%{opacity:1;transform:translate(0)rotate(0)}65%{opacity:1;transform:translate(var(--x), var(--y)) rotate(var(--r))}to{opacity:0;transform:translate(var(--x), calc(var(--y) + 60px)) rotate(calc(var(--r) * 1.4))}}@media (width<=1100px){.dash{grid-template-columns:minmax(0,1fr)}.app{grid-template-columns:var(--width-rail) minmax(0, 1fr)}.nav .resume,.nav .me .txt,.nav kbd{display:none}.nav .item,.app.rail .nav .item{padding:var(--space-2) 2px;flex-direction:column;justify-content:center;gap:2px;position:relative}.nav .label,.app.rail .nav .label{text-overflow:ellipsis;white-space:nowrap;text-align:center;max-width:100%;font-size:10.5px;line-height:1.15;display:block;overflow:hidden}.nav .lock-mark{position:absolute;top:3px;right:6px}.app .keybar{left:var(--width-rail)}.lesson,.lesson.docs-open{grid-template-columns:minmax(0,1fr)}.side-resizer{display:none}.lesson-side{border-left:0;border-top:1px solid var(--color-border);height:70vh;position:static}.grid.c3,.grid.c4{grid-template-columns:1fr 1fr}}:focus-visible{outline:3px solid var(--color-accent-ink);outline-offset:2px}kbd{font:inherit;border:1px solid var(--color-border);background:var(--color-card);color:var(--color-text);vertical-align:1px;border-bottom-width:2px;border-radius:6px;margin-left:6px;padding:2px 5px;font-size:11px;font-weight:700;line-height:1}.btn.primary kbd,.btn.accent kbd{color:var(--color-text)}.nav .item kbd{margin-left:auto}.nav.rail-hide kbd,.app.rail .nav kbd{display:none}.kfocus{outline:3px solid var(--color-accent-ink);outline-offset:2px;background:var(--color-accent-soft)}.keys-overlay{z-index:100;background:#10253a8c;place-items:center;display:grid;position:fixed;inset:0}.keys-overlay.hidden{display:none}.keys-box{background:var(--color-card);border-radius:var(--radius-lg);box-shadow:var(--shadow-float);padding:var(--space-6);width:min(760px,92vw);max-height:86vh;overflow:auto}.keys-box h2{margin:0 0 var(--space-4)}.keys-box .cols{gap:var(--space-6);grid-template-columns:1fr 1fr;display:grid}.keys-box h3{margin:0 0 var(--space-2);font-size:var(--text-base)}.keys-box .krow{justify-content:space-between;gap:var(--space-3);border-bottom:1px solid var(--color-border);font-size:var(--text-sm);padding:4px 0;display:flex}.keybar{left:var(--width-nav);padding:6px var(--space-4);border-top:1px solid var(--color-border);color:var(--color-text-muted);z-index:50;background:#ffffffdb;font-size:12px;position:fixed;bottom:0;right:0}.keybar kbd{margin-left:0;margin-right:2px}.keybar span{margin-right:var(--space-4)}.flash{background:var(--color-accent-soft)!important}.app.rail .keybar{left:var(--width-rail)}body.notes-focus .app .keybar{left:0}.app.rail .nav .item{position:relative}.app.rail .nav .lock-mark{position:absolute;top:3px;right:6px}body:has(.keybar){padding-bottom:var(--dock-h)}body:has(.keybar) .lesson-side{height:calc(100vh - 32px);height:calc(100dvh - var(--dock-h))}.side-head button{min-width:0;padding-left:var(--space-2);padding-right:var(--space-2)}.controls .done-group{align-items:center;gap:var(--space-3);margin-left:auto;display:flex}@media (hover:none) and (pointer:coarse){html{-webkit-text-size-adjust:100%;-moz-text-size-adjust:100%;text-size-adjust:100%;-webkit-tap-highlight-color:transparent}body{overscroll-behavior-y:none}button,a,.btn{touch-action:manipulation}.btn,.btn.small,.tabs button,.side-head button,.go,a.chip,button.chip{position:relative}.btn:after,.btn.small:after,.tabs button:after,.side-head button:after,.go:after,a.chip:after,button.chip:after{content:"";height:max(100%, var(--touch-min));position:absolute;top:50%;left:0;right:0;transform:translateY(-50%)}input,textarea,select{font-size:16px}.search input[type=text]{min-height:var(--touch-min)}}.bottom-nav{display:none}.sheet-root{z-index:80;justify-content:center;align-items:flex-end;display:flex;position:fixed;inset:0}.sheet-root.above-dock{bottom:var(--dock-h)}.sheet-root.sheet-confirm{z-index:110}.sheet-backdrop{background:#1418146b;position:absolute;inset:0}.sheet{width:100%;max-height:calc(100dvh - var(--safe-top) - 24px);background:var(--color-card);box-shadow:var(--shadow-float);padding:0 var(--space-4) calc(var(--safe-bottom) + var(--space-3));border-radius:22px 22px 0 0;flex-direction:column;animation:.2s ease-out sheet-up;display:flex;position:relative}.above-dock .sheet{max-height:calc(100% - 24px);padding-bottom:var(--space-3)}.sheet[data-snap=half]{height:50dvh}.sheet[data-snap=full]{height:calc(100dvh - var(--safe-top) - 24px)}.above-dock .sheet[data-snap=full]{height:calc(100% - 24px)}.sheet-grab{padding:var(--space-2) 0 var(--space-3);touch-action:none;flex:none}.sheet-handle{border-radius:var(--radius-pill);background:var(--color-surface-2);width:40px;height:5px;margin:0 auto}.sheet-title,.sheet-close{clip-path:inset(50%);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}.sheet-close:focus-visible{top:var(--space-2);clip-path:none;width:auto;height:auto;padding:var(--space-1) var(--space-2);font:inherit;color:var(--color-text);border:0;right:0;overflow:visible}.sheet-body{overscroll-behavior:contain;flex:1;min-height:0;overflow-y:auto}@keyframes sheet-up{0%{opacity:0;transform:translateY(24px)}to{opacity:1;transform:none}}@media (prefers-reduced-motion:reduce){.sheet{animation:none}}@media (width>=641px){.sheet-root{align-items:center}.sheet{border-radius:var(--radius-lg);max-width:520px}}.more-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;display:grid}.more-item{border:1px solid var(--color-border);background:var(--color-card);min-height:96px;color:var(--color-text);font:inherit;text-align:center;cursor:pointer;border-radius:14px;flex-direction:column;justify-content:center;align-items:center;gap:4px;padding:12px 4px;font-size:13px;font-weight:600;text-decoration:none;display:flex;position:relative}.more-item.on{background:var(--color-accent-soft);border-color:var(--color-accent-ink)}.more-item.adm{border-style:dashed}.more-item .ico{place-items:center;width:40px;height:40px;display:grid}.more-item .nav-img{object-fit:contain;width:40px;height:40px;display:block}.more-item .avatar{margin:0}.more-item .lock-mark{position:absolute;top:6px;right:6px}.me-row{border-top:1px solid var(--color-border);align-items:center;gap:10px;margin-top:14px;padding-top:12px;display:flex}.me-row .grow{flex:1;min-width:0}.me-row .grow b,.me-row .muted{text-overflow:ellipsis;white-space:nowrap;display:block;overflow:hidden}.me-row .avatar{width:40px;height:40px}.nav button.item{width:100%;font:inherit;text-align:left;cursor:pointer;background:0 0;border:0;font-size:15px;font-weight:500}.item.locked,.more-item.locked{opacity:.5;cursor:pointer}.lock-mark{color:var(--color-icon);margin-left:auto;display:inline-flex}.locked-toast{left:50%;bottom:calc(var(--dock-h) + var(--space-3));z-index:90;width:max-content;max-width:min(420px,100vw - 32px);padding:var(--space-3) var(--space-4);border-radius:var(--radius-lg);background:var(--color-shade);color:#fff;font-size:var(--text-sm);box-shadow:var(--shadow-float);position:fixed;transform:translate(-50%)}.install-hint-slot:empty{display:none}@media (width<=640px){.bottom-nav{z-index:60;height:var(--dock-h);padding:0 var(--safe-right) var(--safe-bottom) var(--safe-left);background:var(--color-card);display:flex;position:fixed;bottom:0;left:0;right:0}@supports (color:color-mix(in lab, red, red)){.bottom-nav{background:color-mix(in srgb, var(--color-card) 94%, transparent)}}.bottom-nav{-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border-top:1px solid var(--color-border)}.bottom-nav .tab{min-width:0;min-height:var(--touch-min);font:inherit;color:var(--color-text-muted);cursor:pointer;background:0 0;border:0;flex-direction:column;flex:1;justify-content:center;align-items:center;gap:2px;font-size:11px;text-decoration:none;display:flex}.bottom-nav .tab span{text-overflow:ellipsis;white-space:nowrap;max-width:100%;overflow:hidden}.bottom-nav .tab .nav-img,.bottom-nav .tab .more-ic{object-fit:contain;border-radius:8px;width:28px;height:28px}.bottom-nav .tab .more-ic{color:var(--color-icon);place-items:center;display:grid}.bottom-nav .tab.on{color:var(--color-text);font-weight:700}.bottom-nav .tab.on .nav-img,.bottom-nav .tab.on .more-ic{background:var(--color-accent-soft)}body.notes-focus .bottom-nav,.keybar{display:none}body:has(.keybar){padding-bottom:0}body:has(.lesson):before{content:"";height:var(--safe-top);z-index:50;background:var(--color-bg);pointer-events:none;position:fixed;top:0;left:0;right:0}html{scroll-padding-top:var(--safe-top)}body[data-lesson-bar][data-no-tabbar]{--dock-h:calc(var(--lesson-bar-h) + var(--safe-bottom))}.app,.app.rail{grid-template-columns:minmax(0,1fr)}.nav{display:none}.content{padding:var(--space-4);padding-left:calc(var(--space-4) + var(--safe-left));padding-right:calc(var(--space-4) + var(--safe-right));padding-bottom:calc(var(--dock-h) + var(--extra-bottom) + var(--space-4))}.content.flush{padding:0;padding-left:var(--safe-left);padding-right:var(--safe-right)}.dash{padding:var(--space-4);padding-bottom:calc(var(--dock-h) + var(--extra-bottom) + var(--space-4));gap:var(--space-4)}.pagehead{gap:var(--space-3);margin-bottom:var(--space-4);flex-wrap:wrap}.search{width:100%}.install-hint-slot{padding:var(--space-3) var(--space-4) 0}}@media (hover:none) and (pointer:coarse){.keybar,.keys-overlay,kbd,.key-hint,.nav .railtoggle,.nav-resizer,.side-resizer,.nav .muted.label{display:none}.app.rail .nav{padding-left:var(--space-2);padding-right:var(--space-2)}.nav .item{min-height:var(--touch-min)}.nav .me>a{min-width:var(--touch-min);min-height:var(--touch-min);justify-content:center;align-items:center;margin:-5px;display:inline-flex}.side-head button.side-collapse{min-width:var(--touch-min);min-height:var(--touch-min)}}@media (hover:none) and (pointer:coarse) and (width<=1100px){.app .nav{padding-left:var(--space-2);padding-right:var(--space-2)}}@media (width<=640px){.keybar{display:none}.lesson-main{padding:var(--space-4);padding-top:calc(var(--space-4) + var(--safe-top));padding-bottom:calc(var(--dock-h) + var(--extra-bottom) + var(--space-6))}.lesson-back-row{justify-content:space-between;align-items:center;gap:var(--space-3);margin-bottom:var(--space-2);display:flex}.lesson-back{min-height:var(--touch-min);min-width:0;font-size:var(--text-sm);color:var(--color-text-muted);text-overflow:ellipsis;white-space:nowrap;align-items:center;font-weight:600;text-decoration:none;display:inline-flex;overflow:hidden}.lesson-toolbar .tabs{scrollbar-width:none;margin-inline:calc(var(--space-4) * -1);padding-inline:var(--space-4);flex-wrap:nowrap;overflow-x:auto}.lesson-toolbar .tabs::-webkit-scrollbar{display:none}.lesson-toolbar .tabs button{min-height:var(--touch-min);white-space:nowrap;flex:none}.lesson-done{justify-content:flex-start;margin-left:0}.lesson-done-row{margin-top:var(--space-4)}.lesson-docs-card{justify-content:space-between;align-items:center;gap:var(--space-3);margin-top:var(--space-4);display:flex}.lesson-docs-text{min-width:0}.lesson-docs-text p{margin:var(--space-1) 0 0;font-size:var(--text-sm)}.lesson-docs-card .btn{min-height:var(--touch-min);padding-inline:var(--space-4);flex:none}.lesson-bar{z-index:60;height:calc(var(--lesson-bar-h) + var(--safe-bottom));padding:4px 8px var(--safe-bottom);background:var(--color-card);gap:6px;display:grid;position:fixed;bottom:0;left:0;right:0}@supports (color:color-mix(in lab, red, red)){.lesson-bar{background:color-mix(in srgb, var(--color-card) 94%, transparent)}}.lesson-bar{-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border-top:1px solid var(--color-border)}.lesson-bar[data-count="3"]{grid-template-columns:repeat(3,minmax(0,1fr))}.lesson-bar[data-count="4"]{grid-template-columns:repeat(4,minmax(0,1fr))}.lesson-bar button{min-height:var(--touch-min);min-width:0;font:inherit;color:var(--color-text-muted);cursor:pointer;background:0 0;border:0;border-radius:12px;flex-direction:column;justify-content:center;align-items:center;gap:1px;padding:2px;font-size:12px;font-weight:600;display:flex}.lesson-bar button img{object-fit:contain;width:26px;height:26px}.lesson-bar button span{text-overflow:ellipsis;white-space:nowrap;max-width:100%;overflow:hidden}.lesson-bar button.on{background:var(--color-accent);color:var(--color-on-accent)}body .lesson>aside.lesson-side{inset:0 0 var(--dock-h) 0;top:var(--safe-top);z-index:58;background:var(--color-card);height:auto;box-shadow:var(--shadow-float);visibility:hidden;border:0;border-radius:18px 18px 0 0;transition:transform .22s ease-out,visibility 0s linear .22s;position:fixed;transform:translateY(100%)}body .lesson>aside.lesson-side.is-open{visibility:visible;transition:transform .22s ease-out,visibility;transform:translateY(0)}@media (prefers-reduced-motion:reduce){body .lesson>aside.lesson-side,body .lesson>aside.lesson-side.is-open{transition:none}}.side-sheet-head{justify-content:space-between;align-items:center;gap:var(--space-3);padding:var(--space-3) var(--space-3) var(--space-1) var(--space-4);border-bottom:1px solid var(--color-border);touch-action:none;flex:none;display:flex;position:relative}.side-sheet-handle{border-radius:var(--radius-pill);background:var(--color-surface-2);width:40px;height:5px;margin-left:-20px;position:absolute;top:6px;left:50%}.side-sheet-head h2{font-size:var(--text-lg);margin:0}.side-sheet-head h2:focus{outline:none}.side-sheet-close{min-width:var(--touch-min);min-height:var(--touch-min);padding:0 var(--space-3);font:inherit;font-size:var(--text-sm);color:var(--color-text);border-radius:var(--radius-md);cursor:pointer;background:0 0;border:0;font-weight:600}.side-sheet-close:hover{background:var(--color-accent-soft)}.lesson-side .side-body{padding:var(--space-4);padding-bottom:calc(var(--space-4) + var(--extra-bottom));overscroll-behavior:contain}}@media (hover:none) and (pointer:coarse){.resources .scroll-box>a{min-height:var(--touch-min);align-items:center;padding-block:0;display:flex}}.sel-bar{left:0;right:0;bottom:var(--dock-h,0px);z-index:57;background:var(--color-bg);border-top:1px solid var(--color-border);flex-direction:column;padding:8px 12px;display:flex;position:fixed;box-shadow:0 -2px 10px #0000000d}@media (width<=640px){.sel-bar{z-index:59}}.sel-bar-actions{justify-content:center;gap:8px;display:flex}.sel-bar-btn{flex:1;justify-content:center;align-items:center;gap:6px;height:44px;font-size:14px;font-weight:600;display:flex}.sel-bar-success{justify-content:center;align-items:center;height:44px;display:flex}.sel-bar-success-text{color:var(--color-ok);font-size:14px;font-weight:700}.sel-bar-input-pane{flex-direction:column;gap:8px;display:flex}.sel-bar-quote{color:var(--color-text-muted);font-size:12px}.sel-bar-input{border:1px solid var(--color-border);border-radius:var(--radius-sm);outline:none;height:44px;padding:0 12px;font-size:14px}.sel-bar-input:focus-visible{border-color:var(--color-accent);box-shadow:0 0 0 2px var(--color-accent-soft)}.sel-bar-error{color:#bc1414;font-size:12px}.sel-bar-controls{justify-content:flex-end;gap:8px;display:flex}.sel-bar-cancel,.sel-bar-submit{height:36px;padding:0 16px;font-size:13px;font-weight:600}.pdf-view{border:1px solid var(--color-border);border-radius:var(--radius-md);background:var(--color-surface);flex-direction:column;flex:1;min-height:0;display:flex;overflow:hidden}.pdf-toolbar{align-items:center;gap:var(--space-2);padding:var(--space-2);border-bottom:1px solid var(--color-border);background:var(--color-card);grid-template-columns:auto 1fr auto;display:grid}.pdf-toolbar-page{text-align:center;font-size:var(--text-sm);font-weight:700}.pdf-pages-scroll{gap:var(--space-3);min-height:0;padding:var(--space-3);flex-direction:column;flex:1;display:flex;overflow:auto}.pdf-page-placeholder{border:1px solid var(--color-border);border-radius:var(--radius-sm);background:var(--color-card);width:100%;box-shadow:var(--shadow-card);flex:none;position:relative;overflow:hidden}.pdf-page-canvas{background:#fff;width:100%;height:auto;display:block}.pdf-page-number,.pdf-page-error{color:var(--color-text-muted);font-size:var(--text-sm);place-items:center;display:grid;position:absolute;inset:0}.pdf-page-error{color:#b3261e}.pdf-loading,.pdf-load-error{place-items:center;gap:var(--space-3);min-height:180px;padding:var(--space-6);text-align:center;color:var(--color-text-muted);display:grid}.pdf-load-error{color:#b3261e}.docs-body{overflow:hidden}.docs-pane{overflow:auto}.docs-pane .pdf-view{display:contents}.docs-pane .pdf-toolbar{z-index:2;border:1px solid var(--color-border);border-radius:var(--radius-sm);position:sticky;top:0}.docs-pane .pdf-pages-scroll{flex:none;padding-inline:0;overflow:visible}.docs-groups{gap:var(--space-2);flex-wrap:wrap;display:flex}.docs-done-end{padding:var(--space-3) 0 var(--space-2);flex:none;justify-content:flex-end;margin-left:0}.test-pdf{min-height:min(70dvh,820px)}.pdf-fullscreen{z-index:200;color:#fff;background:#182018;outline:none;grid-template-rows:auto minmax(0,1fr) auto;display:grid;position:fixed;inset:0}.pdf-fullscreen-head,.pdf-fullscreen-foot{align-items:center;gap:var(--space-2);padding:var(--space-2) max(var(--space-3), var(--safe-right)) var(--space-2) max(var(--space-3), var(--safe-left));background:#182018;display:flex}.pdf-fullscreen-head{padding-top:max(var(--space-2), var(--safe-top));cursor:grab;border-bottom:1px solid #405040}.pdf-fullscreen-head strong{text-overflow:ellipsis;white-space:nowrap;text-align:center;flex:1;min-width:0;overflow:hidden}.pdf-fullscreen-stage{overscroll-behavior:contain;padding:var(--space-3);touch-action:pan-x pan-y;justify-content:flex-start;align-items:flex-start;display:flex;overflow:auto}.pdf-fullscreen-zoom{transform-origin:top;flex:none;margin-inline:auto}.pdf-fullscreen-foot{padding-bottom:max(var(--space-2), var(--safe-bottom));border-top:1px solid #405040;flex-wrap:wrap;justify-content:center}.pdf-fullscreen-page{font-size:var(--text-sm);color:#dce6dc}.pdf-zoom-controls{gap:var(--space-2);display:flex}@media (hover:hover){.pdf-toolbar .btn:hover,.pdf-fullscreen .btn:hover{background:var(--color-accent-soft)}}@media (hover:none) and (pointer:coarse){.pdf-toolbar .btn,.pdf-fullscreen .btn,.docs-pane .btn{min-width:var(--touch-min);min-height:var(--touch-min)}}@media (width<=640px){.pdf-toolbar{grid-template-columns:var(--touch-min) 1fr auto}.pdf-source-link{padding-inline:var(--space-2)}.pdf-pages-scroll,.pdf-fullscreen-stage{padding:var(--space-2)}.pdf-zoom-controls{display:none}.pdf-fullscreen-foot{justify-content:space-between}}@property --tw-rotate-x{syntax:"*";inherits:false}@property --tw-rotate-y{syntax:"*";inherits:false}@property --tw-rotate-z{syntax:"*";inherits:false}@property --tw-skew-x{syntax:"*";inherits:false}@property --tw-skew-y{syntax:"*";inherits:false}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"<length>";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-blur{syntax:"*";inherits:false}@property --tw-brightness{syntax:"*";inherits:false}@property --tw-contrast{syntax:"*";inherits:false}@property --tw-grayscale{syntax:"*";inherits:false}@property --tw-hue-rotate{syntax:"*";inherits:false}@property --tw-invert{syntax:"*";inherits:false}@property --tw-opacity{syntax:"*";inherits:false}@property --tw-saturate{syntax:"*";inherits:false}@property --tw-sepia{syntax:"*";inherits:false}@property --tw-drop-shadow{syntax:"*";inherits:false}@property --tw-drop-shadow-color{syntax:"*";inherits:false}@property --tw-drop-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-drop-shadow-size{syntax:"*";inherits:false}@property --tw-backdrop-blur{syntax:"*";inherits:false}@property --tw-backdrop-brightness{syntax:"*";inherits:false}@property --tw-backdrop-contrast{syntax:"*";inherits:false}@property --tw-backdrop-grayscale{syntax:"*";inherits:false}@property --tw-backdrop-hue-rotate{syntax:"*";inherits:false}@property --tw-backdrop-invert{syntax:"*";inherits:false}@property --tw-backdrop-opacity{syntax:"*";inherits:false}@property --tw-backdrop-saturate{syntax:"*";inherits:false}@property --tw-backdrop-sepia{syntax:"*";inherits:false}
