@font-face{font-family:Inter;font-style:normal;font-weight:400 700;font-display:swap;src:url(/fonts/inter-cyrillic.woff2)format("woff2");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Inter;font-style:normal;font-weight:400 700;font-display:swap;src:url(/fonts/inter-latin-ext.woff2)format("woff2");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Inter;font-style:normal;font-weight:400 700;font-display:swap;src:url(/fonts/inter-latin.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Literata;font-style:italic;font-weight:400 700;font-display:swap;src:url(/fonts/literata-italic-cyrillic.woff2)format("woff2");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Literata;font-style:italic;font-weight:400 700;font-display:swap;src:url(/fonts/literata-italic-latin-ext.woff2)format("woff2");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Literata;font-style:italic;font-weight:400 700;font-display:swap;src:url(/fonts/literata-italic-latin.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Literata;font-style:normal;font-weight:400 700;font-display:swap;src:url(/fonts/literata-normal-cyrillic.woff2)format("woff2");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Literata;font-style:normal;font-weight:400 700;font-display:swap;src:url(/fonts/literata-normal-latin-ext.woff2)format("woff2");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Literata;font-style:normal;font-weight:400 700;font-display:swap;src:url(/fonts/literata-normal-latin.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:IBM Plex Mono;font-style:normal;font-weight:400;font-display:swap;src:url(/fonts/ibm-plex-mono-400-cyrillic.woff2)format("woff2");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:IBM Plex Mono;font-style:normal;font-weight:400;font-display:swap;src:url(/fonts/ibm-plex-mono-400-latin-ext.woff2)format("woff2");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:IBM Plex Mono;font-style:normal;font-weight:400;font-display:swap;src:url(/fonts/ibm-plex-mono-400-latin.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:IBM Plex Mono;font-style:normal;font-weight:500;font-display:swap;src:url(/fonts/ibm-plex-mono-500-cyrillic.woff2)format("woff2");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:IBM Plex Mono;font-style:normal;font-weight:500;font-display:swap;src:url(/fonts/ibm-plex-mono-500-latin-ext.woff2)format("woff2");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:IBM Plex Mono;font-style:normal;font-weight:500;font-display:swap;src:url(/fonts/ibm-plex-mono-500-latin.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Inter;font-style:normal;font-weight:400 700;font-display:swap;src:url(/fonts/tutuq-inter-latin.woff2)format("woff2");unicode-range:U+2BB}@font-face{font-family:Literata;font-style:normal;font-weight:400 700;font-display:swap;src:url(/fonts/tutuq-serif-latin.woff2)format("woff2");unicode-range:U+2BB-2BC}@font-face{font-family:Literata;font-style:italic;font-weight:400 700;font-display:swap;src:url(/fonts/tutuq-serif-italic-latin.woff2)format("woff2");unicode-range:U+2BB}@font-face{font-family:Inter Lotin;font-style:normal;font-weight:400 700;font-display:swap;src:url(/fonts/inter-latin.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Inter Lotin;font-style:normal;font-weight:400 700;font-display:swap;src:url(/fonts/tutuq-inter-latin.woff2)format("woff2");unicode-range:U+2BB}:root{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;--bg:#f2f2f7;--surface:#fff;--head-bg:#f2f2f7;--border:#e5e5ea;--separator:#c6c6c8;--hairline:.5px;--border-strong:#c6c6c8;--text:#000;--ink:#1c1c1e;--ink-quiet:#3a3a3c;--text-soft:#6c6c70;--text-tertiary:#8e8e93;--struct-ink:#000;--primary:#c23400;--primary-dark:#992900;--green:#0f9d58;--red:#d93025;--amber:#f4b400;--link:#06c;--link-strong:#004f9e;--fill:#78788033;--fill-2:#78788029;--fill-3:#7676801f;--fill-4:#74748014;--press:#d1d1d6;--glass-bg:#ffffffb8;--glass-bg-thick:#ffffffdb;--glass-solid:#f9f9f9;--glass-stroke:#ffffffbf;--glass-edge:#00000012;--glass-filter:blur(24px) saturate(180%);--glass-shadow:0 10px 30px #0000001a, 0 2px 8px #0000000f;--scrim:#00000059;--radius-xs:6px;--radius-sm:10px;--radius-md:14px;--radius:22px;--radius-lg:32px;--radius-pill:999px;--gap-2xs:2px;--gap-xs:4px;--gap-sm:8px;--gap-md:12px;--gap-lg:16px;--gap-xl:24px;--page-x:max(16px, var(--safe-l), var(--safe-r));--topbar-h:56px;--scroll-edge:14px;--tabbar-h:62px;--tap-min:44px;--t-field:17px;--line-control:#86868b;--thumb:#fff;--safe-t:env(safe-area-inset-top,0px);--safe-b:env(safe-area-inset-bottom,0px);--safe-l:env(safe-area-inset-left,0px);--safe-r:env(safe-area-inset-right,0px);--z-raised:2;--z-sticky:20;--z-fab:30;--z-drawer:40;--z-overlay:50;--z-toast:60;--green-ink:#0a7038;--red-ink:#b3261e;--amber-ink:#8f5700;--green-solid:#0d884c;--green-pale:#e6f4ea;--green-soft:#d3ecda;--red-pale:#fdeded;--red-soft:#fadcda;--amber-pale:#fff8e6;--amber-soft:#fdeeca;--blue-pale:#fff0eb;--blue-soft:#ffe5db;--ink-on-fill:#fff;--code-chip-bg:#f2f2f7;--code-chip-border:#e5e5ea;--code-chip-ink:var(--ink-quiet);--dark-surface:#1c1c1e;--dark-ink:#e5e5ea;--violet:#7c3aed;--violet-ink:#6d28d9;--violet-pale:#f3efff;--grad-brand:linear-gradient(145deg, #d23c00, #992900);--grad-avatar:linear-gradient(180deg, #6e6e73, #5b5b60);--avatar-ink:#fff;--tile-ink:#fff;--shadow-hue:0 0% 0%;--sh-1:0 1px 2px hsl(var(--shadow-hue) / .04), 0 1px 6px hsl(var(--shadow-hue) / .04);--sh-2:0 2px 6px hsl(var(--shadow-hue) / .05), 0 8px 24px hsl(var(--shadow-hue) / .08);--sh-3:0 6px 16px hsl(var(--shadow-hue) / .08), 0 24px 60px hsl(var(--shadow-hue) / .16);--shadow:var(--sh-1);--ring:0 0 0 2px var(--surface), 0 0 0 4px #c23400;--e-out:cubic-bezier(.22, 1, .36, 1);--e-ios:cubic-bezier(.32, .72, 0, 1);--e-spring:cubic-bezier(.34, 1.4, .64, 1);--d-fast:.15s;--d-mid:.28s;--d-slow:.45s;--sans:-apple-system, BlinkMacSystemFont, "Inter", system-ui, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;--sans-lotin:-apple-system, BlinkMacSystemFont, "Inter Lotin", system-ui, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;--serif:"Literata", Charter, "Iowan Old Style", Georgia, serif;--mono:ui-monospace, "SF Mono", "IBM Plex Mono", Menlo, Consolas, monospace;--fw-medium:500;--fw-semibold:600;--fw-heavy:700;--t-micro:11px;--t-xs:12px;--t-sm:13px;--t-base:15px;--t-md:17px;--t-read-sm:16px;--t-read:17px;--t-h3:20px;--t-h2:22px;--t-h1:28px;--t-display:34px}@media (min-width:414px){:root{--page-x:max(20px, var(--safe-l), var(--safe-r))}}@media (min-width:768px){:root{--page-x:max(28px, var(--safe-l), var(--safe-r))}}@media (max-width:359px){:root{--t-display:30px;--t-h1:25px}}:root[data-reader="1"]{--t-read:18.5px;--t-read-sm:17px}:root[data-reader="2"]{--t-read:20px;--t-read-sm:18px}@media (min-width:1440px){:root{--t-read:18.5px;--t-read-sm:17px}:root[data-reader="1"]{--t-read:20px;--t-read-sm:18.5px}:root[data-reader="2"]{--t-read:22px;--t-read-sm:20px}}@media (prefers-reduced-motion:reduce){:root{--d-fast:.01ms;--d-mid:.01ms;--d-slow:.01ms}}*{box-sizing:border-box}html{-webkit-text-size-adjust:100%;-moz-text-size-adjust:100%;text-size-adjust:100%}button,input,select,textarea,optgroup{font:inherit;color:inherit}input:where(:not([type=checkbox],[type=radio],[type=range])),select,textarea{font-size:var(--t-field)}body{font-family:var(--sans);font-size:var(--t-base);background:var(--bg);color:var(--text);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-rendering:optimizelegibility;-webkit-tap-highlight-color:transparent;overflow-wrap:break-word;margin:0;font-weight:400;line-height:1.4}#root{min-height:100vh}h1,h2,h3,h4{font-family:var(--sans);letter-spacing:0;text-wrap:balance;font-weight:700;line-height:1.2}.markdown :is(h1,h2,h3,h4),.prose :is(h1,h2,h3,h4){font-family:var(--serif)}:where(h1,h2,h3,h4):not(:where(.landing *,.markdown *,.prose *)){color:var(--struct-ink)}h1{font-size:var(--t-h1)}h2{font-size:var(--t-h2)}h3{font-size:var(--t-h3);font-weight:600}h4{font-size:var(--t-md);font-weight:600}h1,h2,h3,h4,.markdown,.prose{font-optical-sizing:auto}strong,b{font-weight:600}.markdown,.prose{hanging-punctuation:first last}.tnum,table td,table th{font-variant-numeric:tabular-nums}:where(a,button,input,select,textarea,summary,[tabindex]):focus-visible{outline:2px solid var(--primary);outline-offset:2px;box-shadow:var(--ring);border-radius:var(--radius-md)}.skip-link{z-index:200;min-height:var(--tap-min);background:var(--surface);color:var(--primary);border:1px solid var(--border);border-radius:0 0 var(--radius-md) 0;align-items:center;padding:10px 16px;font-weight:600;text-decoration:none;display:inline-flex;position:absolute;top:0;left:0;transform:translateY(-120%)}.skip-link:focus{transform:translateY(0)}.main:focus{outline:none}html{scroll-behavior:smooth}@media (prefers-color-scheme:dark){:root:not([data-theme=light]){--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--bg:#000;--surface:#1c1c1e;--head-bg:#2c2c2e;--border:#2c2c2e;--separator:#38383a;--border-strong:#48484a;--line-control:#8e8e93;--thumb:#636366;--text:#fff;--ink:#f2f2f7;--ink-quiet:#d1d1d6;--text-soft:#98989f;--text-tertiary:#8e8e93;--ink-on-fill:#000;--struct-ink:#fff;--primary:#ff8a5c;--primary-dark:#ffa87e;--blue-pale:#3a2118;--blue-soft:#4d2c20;--link:#6b9bff;--link-strong:#8db2ff;--fill:#7878805c;--fill-2:#78788052;--fill-3:#7676803d;--fill-4:#7676802e;--press:#3a3a3c;--green:#3ecf8e;--green-ink:#4ec98a;--green-pale:#10301f;--green-soft:#173f2b;--green-solid:#3ecf8e;--red:#ff6b61;--red-ink:#ff8a80;--red-pale:#3d1c1e;--red-soft:#522628;--amber:#f4b400;--amber-ink:#ffc74d;--amber-pale:#33280f;--amber-soft:#463715;--violet:#b494f7;--violet-ink:#c9b2fa;--violet-pale:#2c2150;--dark-surface:#2c2c2e;--dark-ink:#f2f2f7;--code-chip-bg:#2c2c2e;--code-chip-border:#3a3a3c;--glass-bg:#28282aa8;--glass-bg-thick:#1e1e20db;--glass-solid:#1c1c1e;--glass-stroke:#ffffff24;--glass-edge:#ffffff14;--glass-shadow:0 10px 30px #00000080, 0 2px 8px #0000004d;--scrim:#0000008c;--grad-brand:linear-gradient(145deg, #ff9f6e, #ff7a45);--grad-avatar:linear-gradient(180deg, #636366, #48484a);--shadow-hue:0 0% 0%;--ring:0 0 0 2px var(--bg), 0 0 0 4px #ff8a5c}}:root[data-theme=dark]{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--bg:#000;--surface:#1c1c1e;--head-bg:#2c2c2e;--border:#2c2c2e;--separator:#38383a;--border-strong:#48484a;--line-control:#8e8e93;--thumb:#636366;--text:#fff;--ink:#f2f2f7;--ink-quiet:#d1d1d6;--text-soft:#98989f;--text-tertiary:#8e8e93;--ink-on-fill:#000;--struct-ink:#fff;--primary:#ff8a5c;--primary-dark:#ffa87e;--blue-pale:#3a2118;--blue-soft:#4d2c20;--link:#6b9bff;--link-strong:#8db2ff;--fill:#7878805c;--fill-2:#78788052;--fill-3:#7676803d;--fill-4:#7676802e;--press:#3a3a3c;--green:#3ecf8e;--green-ink:#4ec98a;--green-pale:#10301f;--green-soft:#173f2b;--green-solid:#3ecf8e;--red:#ff6b61;--red-ink:#ff8a80;--red-pale:#3d1c1e;--red-soft:#522628;--amber:#f4b400;--amber-ink:#ffc74d;--amber-pale:#33280f;--amber-soft:#463715;--violet:#b494f7;--violet-ink:#c9b2fa;--violet-pale:#2c2150;--dark-surface:#2c2c2e;--dark-ink:#f2f2f7;--code-chip-bg:#2c2c2e;--code-chip-border:#3a3a3c;--glass-bg:#28282aa8;--glass-bg-thick:#1e1e20db;--glass-solid:#1c1c1e;--glass-stroke:#ffffff24;--glass-edge:#ffffff14;--glass-shadow:0 10px 30px #00000080, 0 2px 8px #0000004d;--scrim:#0000008c;--grad-brand:linear-gradient(145deg, #ff9f6e, #ff7a45);--grad-avatar:linear-gradient(180deg, #636366, #48484a);--shadow-hue:0 0% 0%;--ring:0 0 0 2px var(--bg), 0 0 0 4px #ff8a5c}@keyframes sa-rise{0%{opacity:0;transform:translateY(14px)}to{opacity:1;transform:none}}@keyframes sa-rise-sm{0%{opacity:0;transform:translateY(7px)}to{opacity:1;transform:none}}@keyframes sa-fade{0%{opacity:0}to{opacity:1}}@keyframes sa-pop{0%{opacity:0;transform:scale(.9)}60%{opacity:1;transform:scale(1.03)}to{opacity:1;transform:none}}@keyframes sa-shine{0%{transform:translate(100%)}to{transform:translate(-100%)}}@keyframes sa-grow-x{0%{transform:scaleX(0)}to{transform:scaleX(1)}}@keyframes sa-spin{to{transform:rotate(360deg)}}@keyframes sa-aura{0%,to{transform:translate(0,0)scale(1)}50%{transform:translate(4%,-6%)scale(1.15)}}.reveal{animation:sa-rise var(--d-slow) var(--e-out) backwards}.route-view{animation:sa-rise .34s var(--e-out) backwards}.stagger>*{animation:sa-rise var(--d-slow) var(--e-out) backwards}.stagger-sm>*{animation:sa-rise-sm var(--d-mid) var(--e-out) backwards}.stagger>:first-child,.stagger-sm>:first-child{animation-delay:0s}.stagger>:nth-child(2),.stagger-sm>:nth-child(2){animation-delay:45ms}.stagger>:nth-child(3),.stagger-sm>:nth-child(3){animation-delay:90ms}.stagger>:nth-child(4),.stagger-sm>:nth-child(4){animation-delay:.135s}.stagger>:nth-child(5),.stagger-sm>:nth-child(5){animation-delay:.18s}.stagger>:nth-child(6),.stagger-sm>:nth-child(6){animation-delay:.225s}.stagger>:nth-child(7),.stagger-sm>:nth-child(7){animation-delay:.27s}.stagger>:nth-child(8),.stagger-sm>:nth-child(8){animation-delay:.315s}.stagger>:nth-child(9),.stagger-sm>:nth-child(9){animation-delay:.36s}.stagger>:nth-child(n+10),.stagger-sm>:nth-child(n+10){animation-delay:.4s}.skel{border-radius:var(--radius-sm);background:var(--fill);position:relative;overflow:hidden}.skel:after{content:"";background:linear-gradient(100deg, transparent 35%, var(--fill-2) 50%, transparent 65%);animation:1.5s ease-in-out infinite sa-shine;position:absolute;inset:0}.skel-page{gap:var(--gap-lg);flex-direction:column;padding:8px 0 40px;display:flex}.skel-hero{border-radius:var(--radius-lg);height:148px}.skel-row{height:15px}.skel-row.w-40{width:40%}.skel-grid{gap:var(--gap-lg);grid-template-columns:repeat(auto-fill,minmax(290px,1fr));margin-top:10px;display:grid}.skel-card{border-radius:var(--radius);height:186px}@media (prefers-reduced-motion:reduce){*,:before,:after{transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important;animation-delay:0s!important}html{scroll-behavior:auto}}.layout{min-height:100vh;padding-bottom:calc(var(--safe-b) + var(--bottomnav-space) + var(--fab-space));flex-direction:column;display:flex}:root{--bottomnav-on:0;--tabbar-bottom:max(12px, calc(var(--safe-b) - 10px));--bottomnav-space:calc(var(--bottomnav-on) * (var(--tabbar-h) + 12px));--fab-space:0px;--fab-slot:0px;--fab-gap:10px;--tabbar-x:var(--page-x);--sidebar-w:0px;--main-max:1080px}@media (max-width:359px){:root{--tabbar-x:12px;--fab-gap:8px}}@media (max-width:1023px){:root:has(.bottom-nav){--bottomnav-on:1}}body[data-fab=on]{--fab-space:calc((1 - var(--bottomnav-on)) * 72px);--fab-slot:calc(var(--bottomnav-on) * (var(--tabbar-h) + var(--fab-gap)))}body{--tabbar-w:min(calc(100% - 2 * var(--tabbar-x) - var(--fab-slot)), 460px);--tabbar-left:calc((100% - var(--tabbar-w) - var(--fab-slot)) / 2)}:root:has(.layout[data-nav=page]){--topbar-h:0px}.topbar{z-index:var(--z-sticky);align-items:center;column-gap:var(--gap-sm);height:var(--topbar-h);padding-inline:var(--page-x);grid-template-columns:minmax(max-content,1fr) minmax(0,auto) minmax(max-content,1fr);display:grid;position:sticky;top:0}.topbar:before{content:"";inset:0 0 calc(-1 * var(--scroll-edge) - var(--topbar-accessory-h,0px));z-index:-1;pointer-events:none;background:var(--glass-bg-thick);-webkit-backdrop-filter:var(--glass-filter);backdrop-filter:var(--glass-filter);-webkit-mask-image:linear-gradient(to bottom, #000 calc(100% - var(--scroll-edge)), transparent);-webkit-mask-image:linear-gradient(to bottom, #000 calc(100% - var(--scroll-edge)), transparent);mask-image:linear-gradient(to bottom, #000 calc(100% - var(--scroll-edge)), transparent);opacity:0;transition:opacity var(--d-mid) var(--e-out);position:absolute}.topbar.scrolled:before{opacity:1}.layout[data-nav=page] .topbar{display:none}.topbar-leading{grid-column:1;justify-self:start;align-items:center;min-width:0;display:flex}.topbar-trailing{justify-self:end;align-items:center;gap:var(--gap-sm);grid-column:3;display:flex}.topbar-title{text-overflow:ellipsis;white-space:nowrap;min-width:0;max-width:min(56vw,480px);font-size:var(--t-md);font-weight:var(--fw-semibold);color:var(--text);opacity:0;transition:opacity var(--d-fast) var(--e-out), transform var(--d-mid) var(--e-out);grid-column:2;overflow:hidden;transform:translateY(6px)}.topbar-title.in{opacity:1;transform:none}.brand,.sidebar-brand{align-items:center;gap:var(--gap-sm);min-height:var(--tap-min);min-width:var(--tap-min);color:var(--text);transition:opacity var(--d-fast) var(--e-out);text-decoration:none;display:inline-flex}.brand:active,.sidebar-brand:active{opacity:.6}.brand-logo{border-radius:var(--radius-xs);background:var(--grad-brand);width:28px;height:28px;color:var(--ink-on-fill);font-size:var(--t-base);font-weight:var(--fw-heavy);box-shadow:inset 0 0 0 var(--hairline) #00000014;flex:none;place-items:center;display:grid}.brand-name{font-size:var(--t-md);font-weight:var(--fw-semibold);white-space:nowrap;text-overflow:ellipsis;overflow:hidden}@media (max-width:479px){.topbar .brand-name{clip-path:inset(50%);white-space:nowrap;width:1px;height:1px;margin:-1px;position:absolute;overflow:hidden}}.glass-btn{width:var(--tap-min);height:var(--tap-min);border-radius:var(--radius-pill);color:var(--text);background:var(--glass-bg);-webkit-backdrop-filter:var(--glass-filter);backdrop-filter:var(--glass-filter);box-shadow:inset 0 var(--hairline) 0 var(--glass-stroke), 0 0 0 var(--hairline) var(--glass-edge), 0 2px 10px #00000014;cursor:pointer;transition:transform var(--d-fast) var(--e-out);border:0;flex:none;place-items:center;padding:0;text-decoration:none;display:inline-grid}.glass-btn:active{transform:scale(.92)}.glass-btn-text{align-items:center;gap:var(--gap-2xs);width:auto;height:36px;font-family:var(--sans);font-size:var(--t-sm);font-weight:var(--fw-medium);white-space:nowrap;padding:0 14px 0 8px;display:inline-flex}.glass-btn-text .icon{width:20px;height:20px}@media (hover:hover){.glass-btn-text:hover{background-image:linear-gradient(var(--fill-4), var(--fill-4))}}@media (pointer:coarse){.glass-btn-text{height:var(--tap-min)}}@media (max-width:640px){.glass-btn-text{width:var(--tap-min);height:var(--tap-min);justify-content:center;padding:0}.glass-btn-text .glass-btn-label{clip-path:inset(50%);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}}.nav-stats{border-radius:var(--radius-pill);background:var(--glass-bg);height:36px;-webkit-backdrop-filter:var(--glass-filter);backdrop-filter:var(--glass-filter);box-shadow:inset 0 var(--hairline) 0 var(--glass-stroke), 0 0 0 var(--hairline) var(--glass-edge), 0 2px 10px #0000000f;font-size:var(--t-base);font-weight:var(--fw-semibold);font-variant-numeric:tabular-nums;color:var(--text);white-space:nowrap;align-items:center;padding:0 12px;display:inline-flex}.nav-stats-row{align-items:center;gap:var(--gap-md);display:inline-flex}.nav-stat{align-items:center;gap:var(--gap-xs);display:inline-flex}.nav-stat.streak .icon{color:var(--amber-ink)}.nav-stat.level .icon{color:var(--primary)}.nav-stat.streak.at-risk .icon{color:var(--text-soft);animation:2.6s ease-in-out infinite streak-nudge}@keyframes streak-nudge{0%,to{transform:scale(1)}50%{transform:scale(1.15)}}.lang-menu{color:var(--text);align-items:center;display:inline-flex;position:relative}.lang-menu>.icon{z-index:1;pointer-events:none;position:absolute}.lang-menu>.icon-globe{left:12px}.lang-menu>.lang-menu-chevron{color:var(--text-soft);right:12px}.lang-menu select{appearance:none;height:var(--tap-min);border-radius:var(--radius-pill);color:var(--text);background:var(--glass-bg);-webkit-backdrop-filter:var(--glass-filter);backdrop-filter:var(--glass-filter);box-shadow:inset 0 var(--hairline) 0 var(--glass-stroke), 0 0 0 var(--hairline) var(--glass-edge), 0 2px 10px #0000000f;font-size:var(--t-field);font-weight:var(--fw-medium);cursor:pointer;border:0;padding:0 32px 0 38px}.topbar-login{min-height:var(--tap-min)}@media (max-width:640px){.lang-menu{width:var(--tap-min);height:var(--tap-min);border-radius:var(--radius-pill);background:var(--glass-bg);-webkit-backdrop-filter:var(--glass-filter);backdrop-filter:var(--glass-filter);box-shadow:inset 0 var(--hairline) 0 var(--glass-stroke), 0 0 0 var(--hairline) var(--glass-edge), 0 2px 10px #0000000f;justify-content:center}.lang-menu>.icon-globe{left:auto}.lang-menu>.lang-menu-chevron{display:none}.lang-menu select{opacity:0;-webkit-backdrop-filter:none;backdrop-filter:none;width:100%;height:100%;box-shadow:none;background:0 0;padding:0;position:absolute;inset:0}.lang-menu:has(select:focus-visible){outline:2px solid var(--primary);outline-offset:2px;box-shadow:var(--ring)}}@media (max-width:640px) and (prefers-reduced-transparency:reduce){.lang-menu{background:var(--glass-solid);-webkit-backdrop-filter:none;backdrop-filter:none}}.bottom-nav{z-index:var(--z-fab);left:var(--tabbar-left);bottom:var(--tabbar-bottom);width:var(--tabbar-w);height:var(--tabbar-h);border-radius:var(--radius-pill);background:var(--glass-bg);-webkit-backdrop-filter:var(--glass-filter);backdrop-filter:var(--glass-filter);box-shadow:inset 0 var(--hairline) 0 var(--glass-stroke), 0 0 0 var(--hairline) var(--glass-edge), var(--glass-shadow);grid-auto-columns:minmax(0,1fr);grid-auto-flow:column;padding:4px;display:grid;position:fixed}.bottom-nav-item{justify-content:center;align-items:center;gap:var(--gap-2xs);min-width:0;min-height:var(--tap-min);border-radius:var(--radius-pill);color:var(--text);font-size:var(--t-micro);font-weight:var(--fw-semibold);transition:color var(--d-fast) var(--e-out), background var(--d-mid) var(--e-out), transform var(--d-fast) var(--e-out);flex-direction:column;padding:0;line-height:1.15;text-decoration:none;display:flex;position:relative}.bottom-nav-item .icon{flex:none}.bottom-nav-label{text-overflow:ellipsis;white-space:nowrap;max-width:100%;overflow:hidden}.bottom-nav-item[aria-current=page]{color:var(--primary);background:var(--fill-3)}@media (hover:hover){.bottom-nav-item:hover{background:var(--fill-4)}.bottom-nav-item[aria-current=page]:hover{background:var(--fill-3)}}.bottom-nav-item:active{transform:scale(.94)}.sidebar-brand,.sidebar-account,.bottom-nav-admin{display:none}@media (min-width:1024px){:root{--sidebar-w:264px}.layout.has-nav{padding-left:calc(var(--sidebar-w) + 24px);--main-max:1680px}.app-sidebar{z-index:var(--z-sticky);width:var(--sidebar-w);gap:var(--gap-md);border-radius:var(--radius);background:var(--glass-bg);-webkit-backdrop-filter:var(--glass-filter);backdrop-filter:var(--glass-filter);box-shadow:inset 0 var(--hairline) 0 var(--glass-stroke), 0 0 0 var(--hairline) var(--glass-edge), var(--glass-shadow);overscroll-behavior:contain;flex-direction:column;padding:12px;display:flex;position:fixed;top:12px;bottom:12px;left:12px;overflow-y:auto}.sidebar-brand{padding:4px 8px;display:flex}.bottom-nav{gap:var(--gap-2xs);-webkit-backdrop-filter:none;backdrop-filter:none;width:auto;height:auto;box-shadow:none;background:0 0;border-radius:0;flex-direction:column;padding:0;display:flex;position:static}.bottom-nav-item{justify-content:flex-start;gap:var(--gap-md);min-height:var(--tap-min);border-radius:var(--radius-sm);font-size:var(--t-md);font-weight:var(--fw-medium);flex-direction:row;padding:0 12px}.bottom-nav-item .icon{width:22px;height:22px}.bottom-nav-item[aria-current=page]{background:var(--blue-pale)}@media (hover:hover){.bottom-nav-item[aria-current=page]:hover{background:var(--blue-soft)}}.bottom-nav-item:active{background:var(--fill-2);transform:none}.bottom-nav-profile{display:none}.bottom-nav-admin{display:flex}.sidebar-account{gap:var(--gap-2xs);padding-top:var(--gap-sm);border-top:var(--hairline) solid var(--separator);flex-direction:column;margin-top:auto;display:flex}.sidebar-user{align-items:center;gap:var(--gap-md);border-radius:var(--radius-sm);min-height:52px;color:var(--text);font-size:var(--t-md);font-weight:var(--fw-medium);padding:6px 10px;text-decoration:none;display:flex}.sidebar-user[aria-current=page]{background:var(--blue-pale);color:var(--primary)}.sidebar-user-name{text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}@media (hover:hover){.sidebar-user:hover,.sidebar-logout:hover{background:var(--fill-4)}}.sidebar-logout{align-items:center;gap:var(--gap-md);min-height:var(--tap-min);border-radius:var(--radius-sm);color:var(--red-ink);font-size:var(--t-md);font-weight:var(--fw-medium);text-align:left;cursor:pointer;background:0 0;border:0;padding:0 12px;display:flex}.sidebar-logout:active{background:var(--red-pale)}.topbar-admin{display:none}}.user-avatar{border-radius:var(--radius-pill);background:var(--grad-avatar);width:32px;height:32px;color:var(--avatar-ink);font-size:var(--t-base);font-weight:var(--fw-semibold);flex:none;place-items:center;display:grid}.main{width:100%;max-width:var(--main-max);padding:4px var(--page-x) 40px;flex:1;min-height:100vh;margin:0 auto}@supports (height:100dvh){.main{min-height:100dvh}}.main:has(.landing){padding-inline:0;max-width:none;padding-top:0}.site-footer{justify-content:center;align-items:center;gap:var(--gap-sm) var(--gap-xl);padding:18px var(--page-x);border-top:var(--hairline) solid var(--separator);font-size:var(--t-sm);color:var(--text-soft);flex-wrap:wrap;display:flex}.footer-nav{justify-content:center;align-items:center;gap:var(--gap-sm) var(--gap-lg);flex-wrap:wrap;display:flex}.site-footer a{color:var(--text-soft);margin:-5px -6px;padding:5px 6px;text-decoration:none;display:inline-block}@media (pointer:coarse){.site-footer a{min-height:var(--tap-min);margin-block:0;padding-block:12px}}@media (hover:hover){.site-footer a:hover{color:var(--primary)}}.sync-notice{align-items:center;gap:var(--gap-sm);width:calc(min(100%, var(--main-max)) - 2 * var(--page-x));margin:var(--gap-sm) auto 0;border-radius:var(--radius-md);background:var(--amber-pale);color:var(--amber-ink);font-size:var(--t-base);padding:6px 6px 6px 14px;display:flex}.sync-notice span{flex:1;min-width:0}@media (prefers-reduced-transparency:reduce){.topbar:before,.bottom-nav,.app-sidebar,.glass-btn,.nav-stats,.lang-menu select{background:var(--glass-solid);-webkit-backdrop-filter:none;backdrop-filter:none}}.skel-page{min-height:100dvh}.skel-topnav{border-radius:var(--radius-pill);width:42%;height:36px}.skel-title{height:28px}.skel-title.short{width:62%}.skel-tabs{height:38px}.skel-text{height:13px}.skel-text.w-90{width:90%}.skel-text.w-70{width:70%}.skel-lines{gap:var(--gap-md);flex-direction:column;display:flex}.not-found-path{overflow-wrap:anywhere}.not-found-path code{border-radius:var(--radius-xs);background:var(--surface);color:var(--ink-quiet);padding:3px 8px}.not-found-ways{justify-content:center;gap:var(--gap-sm);flex-wrap:wrap;display:flex}@media (max-width:640px){.not-found-ways{grid-template-columns:minmax(0,260px);display:grid}}.card{background:var(--surface);border-radius:var(--radius);transition:box-shadow var(--d-mid) var(--e-out), transform var(--d-mid) var(--e-out);border:1px solid #0000}a.card:active{transition:transform var(--d-fast) var(--e-out);transform:scale(.98)}.btn{justify-content:center;align-items:center;gap:var(--gap-sm);cursor:pointer;min-height:var(--tap-min);border-radius:var(--radius-pill);font-family:var(--sans);font-size:var(--t-base);font-weight:var(--fw-semibold);-webkit-tap-highlight-color:transparent;transition:background var(--d-fast) var(--e-out), color var(--d-fast) var(--e-out), transform var(--d-fast) var(--e-out);border:none;padding:10px 20px;line-height:1.25;text-decoration:none;display:inline-flex;position:relative}.btn:disabled{opacity:.4;cursor:not-allowed}.btn[aria-busy=true]{cursor:progress}.btn:not(:disabled):active{transform:scale(.97)}.btn-primary{background:var(--primary);color:var(--ink-on-fill)}@media (hover:hover){.btn-primary:not(:disabled):hover{background:var(--primary-dark)}}.btn-primary:not(:disabled):active{background:var(--primary-dark)}.btn-secondary{background:var(--blue-pale);color:var(--primary-dark)}@media (hover:hover){.btn-secondary:not(:disabled):hover{background:var(--blue-soft)}}.btn-secondary:not(:disabled):active{background:var(--blue-soft)}.btn-ghost{background:var(--fill-3);color:var(--text)}@media (hover:hover){.btn-ghost:not(:disabled):hover{background:var(--fill-2)}}.btn-ghost:not(:disabled):active{background:var(--fill)}.btn-sm{font-size:var(--t-sm);min-height:0;padding:7px 14px;line-height:1.4}.btn-sm:before{content:"";position:absolute;inset:-6px -4px}.btn-close{color:var(--red-ink);background:0 0;border:1px solid #0000}@media (hover:hover){.btn-close:not(:disabled):hover{background:var(--red-pale);color:var(--red-ink)}}.btn-close:not(:disabled):active{background:var(--red-pale)}.field{gap:var(--gap-sm);text-align:left;flex-direction:column;min-width:0;display:flex}.field label{font-size:var(--t-sm);font-weight:var(--fw-medium);color:var(--text-soft)}.field :where(input:not([type=checkbox],[type=radio],[type=range]),select,textarea){border:1px solid var(--line-control);border-radius:var(--radius-md);background:var(--surface);width:100%;min-height:48px;color:var(--text);font-size:var(--t-field);transition:border-color var(--d-fast) var(--e-out);padding:12px 16px}.field :where(input,select,textarea):focus{border-color:var(--primary)}.field input[readonly]{background:var(--bg);color:var(--text-soft);cursor:default}.field input[readonly]:focus{border-color:var(--line-control)}.lang-select{font-family:var(--sans-lotin)}.segmented{border-radius:var(--radius-pill);background:var(--fill-3);grid-auto-columns:minmax(0,1fr);grid-auto-flow:column;display:grid}.segment{z-index:0;justify-content:center;align-items:center;gap:var(--gap-xs);min-width:0;min-height:var(--tap-min);padding:0 var(--gap-md);border-radius:var(--radius-pill);color:var(--text);font-size:var(--t-sm);font-weight:var(--fw-medium);text-align:center;cursor:pointer;-webkit-tap-highlight-color:transparent;line-height:1.25;display:flex;position:relative}.segment:before{content:"";z-index:-1;border-radius:inherit;transition:background-color var(--d-mid) var(--e-ios), box-shadow var(--d-mid) var(--e-ios);position:absolute;inset:3px}.segment input{opacity:0;cursor:pointer;width:100%;height:100%;margin:0;position:absolute;inset:0}button.segment{background:0 0;border:0}.segment[aria-pressed=true],.segment[aria-checked=true]{font-weight:var(--fw-semibold)}.segment:has(input:checked){font-weight:var(--fw-semibold)}.segment[aria-pressed=true]:before,.segment[aria-checked=true]:before{background:var(--thumb);box-shadow:0 0 0 1px var(--line-control), 0 3px 8px #0000001f}.segment:has(input:checked):before{background:var(--thumb);box-shadow:0 0 0 1px var(--line-control), 0 3px 8px #0000001f}.segment:has(input:focus-visible){box-shadow:var(--ring);outline:none}.segment:not(:has(input:checked)):not([aria-pressed=true]):not([aria-checked=true]):active:before{background:var(--fill-3)}.icon{vertical-align:-.18em;flex:none}.page-loading{justify-content:center;align-items:center;gap:var(--gap-sm);color:var(--text-soft);font-size:var(--t-base);padding:72px 0;display:flex}.route-view>.page-loading{min-height:calc(100dvh - var(--topbar-h));padding:0}.page-loading:before{content:"";border-radius:var(--radius-pill);width:20px;height:20px;-webkit-mask:repeating-conic-gradient(from -7deg, #000 0 16deg, transparent 16deg 30deg), radial-gradient(circle, transparent 42%, #000 44%);-webkit-mask-composite:source-in;-webkit-mask:repeating-conic-gradient(from -7deg, #000 0 16deg, transparent 16deg 30deg), radial-gradient(circle, transparent 42%, #000 44%);mask:repeating-conic-gradient(from -7deg, #000 0 16deg, transparent 16deg 30deg), radial-gradient(circle, transparent 42%, #000 44%);background:conic-gradient(from 15deg,#0000,currentColor);flex:none;animation:1s steps(12,end) infinite sa-spin;-webkit-mask-composite:source-in;mask-composite:intersect}.error-boundary{max-width:440px;padding:0 var(--gap-lg);text-align:center;margin:48px auto}.error-boundary-icon{margin-bottom:var(--gap-md);color:var(--text-soft);display:block}.error-boundary h2{margin:0 0 var(--gap-sm);font-size:var(--t-h2);font-weight:var(--fw-heavy);text-wrap:balance}.error-boundary p{color:var(--text-soft);text-wrap:balance;margin:0 0 20px}.projects-empty{color:var(--text-soft);font-size:var(--t-base);padding:40px var(--page-x);text-align:center;text-wrap:balance;margin:24px 0;line-height:1.35}.large-title{font-size:var(--t-display);font-weight:var(--fw-heavy);margin:4px 0 16px;line-height:1.15}.section-title{font-family:var(--sans);color:var(--struct-ink);font-size:var(--t-h2);margin:28px 0 12px;font-weight:700}.section-head{justify-content:space-between;align-items:baseline;gap:var(--gap-md);flex-wrap:wrap;display:flex}.section-head-link{font-size:var(--t-base);color:var(--primary);transition:color var(--d-fast) var(--e-out);text-decoration:none}@media (hover:hover){.section-head-link:hover{color:var(--primary-dark)}}.section-head-link:active{color:var(--primary-dark)}.infodot{appearance:none;background:var(--border);width:17px;height:17px;color:var(--text-soft);font-family:var(--sans);font-size:var(--t-micro);cursor:help;vertical-align:middle;border:0;border-radius:50%;flex:none;place-items:center;padding:0;font-weight:700;line-height:1;transition:background .12s,color .12s;display:inline-grid;position:relative}.infodot-ok{background:var(--green-soft);color:var(--green-ink)}.infodot-warn{background:var(--amber-soft);color:var(--amber-ink)}.infodot-bad{background:var(--red-soft);color:var(--red-ink)}.infodot:before{content:"";width:24px;height:24px;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}@media (pointer:coarse){.infodot:before{width:var(--tap-min);height:var(--tap-min)}}.infodot:focus-visible{background:var(--primary);color:var(--ink-on-fill);outline:none}@media (hover:hover){.infodot:hover{background:var(--primary);color:var(--ink-on-fill)}}.infodot-tip{z-index:60;border-radius:var(--radius-md);background:var(--dark-surface);width:max-content;max-width:264px;color:var(--dark-ink);font-family:var(--sans);font-size:var(--t-xs);letter-spacing:0;text-align:left;text-transform:none;box-shadow:var(--glass-shadow);opacity:0;visibility:hidden;transition:opacity var(--d-fast) var(--e-out), transform var(--d-fast) var(--e-out), visibility var(--d-fast);pointer-events:none;padding:8px 11px;font-weight:400;line-height:1.45;position:absolute;bottom:calc(100% + 8px);left:0;transform:translateY(4px)}.infodot[data-align=right] .infodot-tip{left:auto;right:0}.infodot-tip:after{content:"";border:5px solid #0000;border-top-color:var(--dark-surface);position:absolute;top:100%;left:6px}.infodot[data-align=right] .infodot-tip:after{left:auto;right:6px}.infodot[data-open=true] .infodot-tip{opacity:1;visibility:visible;pointer-events:auto;transform:none}@media (hover:hover){span.infodot:hover .infodot-tip{opacity:1;visibility:visible;pointer-events:auto;transform:none}}.infodot-tip:before{content:"";height:8px;position:absolute;top:100%;left:0;right:0}.sr-only{clip-path:inset(50%);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.settings-ok{background:var(--green-pale);color:var(--green-ink);border-radius:var(--radius-md);font-size:var(--t-sm);padding:10px 14px}.auth-page{padding:var(--gap-xl) 0}.auth-shell{gap:var(--gap-xl);grid-template-columns:minmax(0,1fr);align-items:start;max-width:440px;margin:0 auto;display:grid}@media (min-width:1000px){.auth-shell{grid-template-columns:400px minmax(0,1fr);max-width:1020px}}.auth-card{text-align:center;width:100%;padding:36px}.auth-logo{background:var(--grad-brand);width:52px;height:52px;color:var(--ink-on-fill);font-weight:var(--fw-heavy);font-size:var(--t-h1);border-radius:var(--radius-md);place-items:center;margin:0 auto 14px;display:grid}.auth-card h1{font-size:var(--t-h1);font-weight:var(--fw-heavy);margin:0 0 6px}.auth-tagline{color:var(--text-soft);font-size:var(--t-sm);margin:0 0 22px}.auth-card h1+form,.auth-card h1+.al-status{margin-top:22px}.auth-card form{gap:var(--gap-md);flex-direction:column;display:flex}.field-label-row{justify-content:space-between;align-items:center;gap:var(--gap-sm);display:flex}.field-reveal{font-size:var(--t-sm);font-weight:var(--fw-semibold);min-height:var(--tap-min);margin:calc((var(--tap-min) - 19px) / -2) -8px;cursor:pointer;color:var(--primary);border-radius:var(--radius-pill);transition:color var(--d-fast) var(--e-out);background:0 0;border:0;align-items:center;padding:0 8px;display:inline-flex}.field-reveal[aria-pressed=true]{color:var(--text-soft)}@media (hover:hover){.field-reveal:hover{color:var(--primary-dark)}}.field-reveal:active{color:var(--primary-dark)}.form-notice{background:var(--amber-pale);color:var(--amber-ink);border-radius:var(--radius-md);font-size:var(--t-sm);padding:10px 14px}.form-error{background:var(--red-pale);color:var(--red-ink);border-radius:var(--radius-md);font-size:var(--t-sm);padding:10px 14px}.form-ok{background:var(--green-pale);color:var(--green-ink);border-radius:var(--radius-md);font-size:var(--t-sm);margin:0;padding:10px 14px}.al-status p{margin:0}.al-status:empty{display:none}.al-inline-status{margin-top:var(--gap-sm);font-size:var(--t-sm);display:block}.al-inline-status:empty{display:none}.al-sent-to{overflow-wrap:anywhere}.auth-shell-single{grid-template-columns:minmax(0,1fr);max-width:440px}.auth-forgot{text-align:right;font-size:var(--t-sm);margin:0}.auth-switch{font-size:var(--t-base);color:var(--text-soft);margin-top:18px}.auth-switch a{color:var(--primary);min-height:var(--tap-min);margin:-12px;padding:12px;font-weight:600;text-decoration:none;display:inline-block}.auth-card .btn,.auth-card button[type=submit]{min-height:var(--tap-min)}.auth-forgot a{color:var(--primary);font-weight:var(--fw-medium);min-height:var(--tap-min);margin:-12px;padding:12px;text-decoration:none;display:inline-block}.auth-legal{font-size:var(--t-xs);color:var(--text-soft);text-align:left;margin:14px 0 0;line-height:1.5}.auth-legal a{color:var(--primary);font-weight:600}.auth-pitch{padding:28px}.auth-pitch-eyebrow{margin:0 0 var(--gap-sm);font-size:var(--t-sm);font-weight:var(--fw-semibold);color:var(--primary)}.auth-pitch-head{margin:0 0 var(--gap-sm);font-size:var(--t-h1);font-weight:var(--fw-heavy);text-wrap:balance;line-height:1.15}.auth-pitch-lead{max-width:46ch;font-size:var(--t-md);color:var(--text-soft);margin:0;line-height:1.45}.auth-flow-label{margin:28px 0 var(--gap-xs);font-size:var(--t-sm);color:var(--text-soft)}.auth-flow{margin:0;padding:0;list-style:none}.auth-flow li{align-items:center;column-gap:var(--gap-md);grid-template-columns:28px minmax(0,1fr);min-height:44px;display:grid;position:relative}.auth-flow li:not(:last-child):before{content:"";background:var(--separator);width:2px;position:absolute;top:36px;bottom:-8px;left:13px}.auth-flow-n{border-radius:var(--radius-pill);background:var(--blue-pale);width:28px;height:28px;color:var(--primary);font-size:var(--t-sm);font-weight:var(--fw-semibold);font-variant-numeric:tabular-nums;place-items:center;display:grid}.auth-flow-body{align-items:baseline;column-gap:var(--gap-sm);flex-wrap:wrap;min-width:0;display:flex}.auth-flow-body b{font-size:var(--t-md);font-weight:var(--fw-semibold)}.auth-flow-sub{font-size:var(--t-sm);color:var(--text-soft)}.auth-points{gap:var(--gap-lg);border-top:var(--hairline) solid var(--separator);margin:24px 0 0;padding:24px 0 0;list-style:none;display:grid}.auth-points li{column-gap:var(--gap-md);grid-template-columns:36px minmax(0,1fr);align-items:start;display:grid}.auth-points li>span:last-child{gap:var(--gap-2xs);min-width:0;display:grid}.auth-point-icon{border-radius:var(--radius-sm);background:var(--green-pale);width:36px;height:36px;color:var(--green-ink);place-items:center;display:grid}.auth-points li:nth-child(2) .auth-point-icon{background:var(--violet-pale);color:var(--violet-ink)}.auth-points li:nth-child(3) .auth-point-icon{background:var(--amber-pale);color:var(--amber-ink)}.auth-points b{font-size:var(--t-base);font-weight:var(--fw-semibold)}.auth-point-text{font-size:var(--t-sm);color:var(--text-soft);line-height:1.45}.auth-stats{border-top:var(--hairline) solid var(--separator);font-size:var(--t-sm);color:var(--text-soft);margin:24px 0 0;padding:20px 0 0;display:flex}.auth-stats>span{min-width:0;padding-inline:var(--gap-md);flex-direction:column;flex:1 1 0;display:flex}.auth-stats>span:first-child{padding-left:0}.auth-stats>span+span{border-left:var(--hairline) solid var(--separator)}.auth-stats b{font-size:var(--t-h2);font-weight:var(--fw-heavy);font-variant-numeric:tabular-nums;color:var(--text);line-height:1.2}.auth-stat-free b{color:var(--primary)}@media (max-width:640px){.auth-card{padding:28px 20px}.auth-pitch{padding:22px 20px}}.course-icon{font-size:var(--t-display)}.course-icon.big{font-size:44px}.progress-bar{border-radius:var(--radius-pill);background:var(--fill);height:6px;overflow:hidden}.progress-fill{border-radius:var(--radius-pill);background:var(--accent,var(--green));height:100%;transition:width var(--d-slow) var(--e-out);transform-origin:0;animation:sa-grow-x .9s var(--e-out) both}.course-pct{font-size:var(--t-sm);color:var(--text-soft);font-weight:var(--fw-semibold)}.module-chevron{border-right:2px solid var(--text-soft);border-bottom:2px solid var(--text-soft);flex:none;width:8px;height:8px;transition:transform .18s;transform:rotate(45deg)}.badge{font-size:var(--t-micro);font-weight:var(--fw-semibold);border-radius:var(--radius-pill);padding:2px 8px}.badge.sim{background:var(--amber-pale);color:var(--amber-ink)}.badge.test{background:var(--blue-pale);color:var(--primary-dark)}@media print{footer,.site-footer,.sync-notice,.site-banner,.app-sidebar{display:none!important}}@page{size:A4 landscape;margin:12mm}.btn-excel{align-items:center;gap:var(--gap-sm);background:var(--green-pale);color:var(--green-ink);cursor:pointer;font-size:var(--t-sm);font-weight:var(--fw-semibold);border-radius:var(--radius-pill);border:0;padding:8px 14px;display:inline-flex}@media (hover:hover){.btn-excel:hover{background:var(--green-soft)}}.btn-excel:active{background:var(--green-soft)}.btn-excel-icon{justify-content:center;width:36px;height:36px;padding:0}.practice-set-head{justify-content:space-between;align-items:center;gap:var(--gap-md);flex-wrap:wrap;margin-bottom:6px;display:flex}.practice-set-head h3{font-size:var(--t-h3);align-items:center;gap:var(--gap-sm);margin:0;display:inline-flex}.practice-set-head h3 .icon{color:var(--primary)}.practice-set-hint{color:var(--text-soft);font-size:var(--t-sm);margin:0 0 16px}.practice-cards{gap:var(--gap-md);flex-direction:column;display:flex}.practice-card{padding:18px 20px}.practice-card-head{align-items:center;gap:var(--gap-sm);margin-bottom:8px;display:flex}.practice-num{background:var(--primary);min-width:26px;height:26px;color:var(--ink-on-fill);border-radius:var(--radius-md);font-size:var(--t-sm);place-items:center;font-weight:700;display:grid}.practice-topic{font-size:var(--t-xs);color:var(--text-soft);font-weight:600}.practice-sim-open{align-items:center;gap:var(--gap-xs);border:1px solid var(--border);background:var(--surface);color:var(--primary-dark);border-radius:var(--radius-md);min-height:30px;font-size:var(--t-xs);white-space:nowrap;cursor:pointer;transition:border-color var(--d-fast) var(--e-out), background var(--d-fast) var(--e-out);margin-left:auto;padding:5px 10px;font-weight:600;line-height:1;display:inline-flex}@media (hover:hover){.practice-sim-open:hover{border-color:var(--primary);background:var(--blue-pale)}}.practice-sim-open:active{border-color:var(--primary);background:var(--blue-pale)}.practice-sim-open:focus-visible{box-shadow:var(--ring);outline:none}@media (max-width:640px){.practice-sim-open{justify-content:center;min-width:36px;min-height:36px}.practice-sim-open-text{display:none}}@media (prefers-reduced-motion:reduce){.practice-sim-open{transition:none}}.practice-sim-loading{text-align:center;color:var(--text-soft);background:var(--surface);border-radius:var(--radius);box-shadow:var(--sh-2);padding:48px}.practice-prompt{font-size:var(--t-base);margin:0 0 12px}.practice-actions{align-items:center;gap:var(--gap-md);flex-wrap:wrap;display:flex}.practice-rows{font-size:var(--t-xs);color:var(--text-soft)}.data-grid{gap:var(--gap-sm);flex-direction:column;margin:10px 0 2px;display:flex}.data-grid-head{align-items:center;gap:var(--gap-sm);flex-wrap:wrap;display:flex}.btn-copy{justify-content:center;align-items:center;gap:var(--gap-sm);background:var(--blue-pale);color:var(--primary-dark);cursor:pointer;font-size:var(--t-sm);font-weight:var(--fw-semibold);border-radius:var(--radius-pill);min-width:168px;transition:background var(--d-fast) var(--e-out), color var(--d-fast) var(--e-out);border:0;padding:8px 14px;display:inline-flex}@media (hover:hover){.btn-copy:hover{background:var(--blue-soft)}}.btn-copy:active{background:var(--blue-soft)}.btn-copy[data-copied]{background:var(--green-pale);color:var(--green-ink)}.btn-copy[data-failed]{background:var(--amber-pale);color:var(--amber-ink)}.btn-copy-icon,.btn-copy-icon.btn-copy-sm{width:36px;min-width:36px;height:36px;padding:0}.btn-copy-sm{min-width:0;font-size:var(--t-xs);padding:5px 10px}.data-grid-hint{font-size:var(--t-xs);color:var(--text-soft);flex:220px;line-height:1.45}.practice-answer-wrap{border-top:1px solid var(--border);margin-top:12px;padding-top:10px}.practice-toggle{align-items:center;gap:var(--gap-xs);color:var(--primary);cursor:pointer;font-size:var(--t-sm);background:0 0;border:none;padding:6px 0;font-weight:600;display:inline-flex}.practice-answer{margin-top:8px}.practice-answer code{font-family:var(--mono);font-size:var(--t-sm);background:var(--dark-surface);color:var(--dark-ink);border-radius:var(--radius-md);margin-bottom:6px;padding:10px 14px;display:block;overflow-x:auto}.practice-answer p{font-size:var(--t-sm);color:var(--text-soft);margin:0}.sheet{overflow:visible}.formula-bar{align-items:center;gap:var(--gap-sm);border-bottom:1px solid var(--border);background:var(--surface);padding:8px 14px;display:flex;position:relative}.fn-autocomplete{z-index:30;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-md);max-height:260px;position:absolute;top:calc(100% + 2px);left:96px;right:14px;overflow:hidden auto;box-shadow:0 8px 28px #10182829}.fn-sugg{gap:0 var(--gap-md);text-align:left;cursor:pointer;border:none;border-bottom:1px solid var(--bg);background:0 0;grid-template-columns:130px 1fr;grid-template-areas:"name sig""name desc";align-items:center;width:100%;padding:8px 14px;display:grid}.fn-sugg.active{background:var(--blue-pale)}@media (hover:hover){.fn-sugg:hover{background:var(--blue-pale)}}.fn-sugg:active{background:var(--blue-pale)}.fn-name{font-family:var(--mono);font-size:var(--t-sm);color:var(--primary);background:0 0;grid-area:name;padding:0;font-weight:700}.fn-sig{font-family:var(--mono);font-size:var(--t-micro);color:var(--text-soft);grid-area:sig}.fn-desc{font-size:var(--t-micro);color:var(--text);grid-area:desc}.sheet-table td.selected,.sheet-table td.selected.num{background:#2563eb1f}.sheet-table td.active{position:relative}.sheet-table td.fill-preview{background:#1a73e80f;box-shadow:inset 0 0 0 1px #1a73e8}.fill-handle{background:var(--primary);border:1px solid var(--surface);cursor:crosshair;z-index:5;border-radius:1px;width:10px;height:10px;position:absolute;bottom:0;right:0}@media (hover:hover){.fill-handle:hover{transform:scale(1.3)}}.fill-handle:active{transform:scale(1.3)}.cell-ref{text-align:center;min-width:48px;font-family:var(--mono);font-size:var(--t-sm);background:var(--bg);border:1px solid var(--border);border-radius:var(--radius-sm);padding:4px 8px;font-weight:700}.fx{color:var(--text-soft);font-style:italic;font-size:var(--t-sm);font-weight:700}.formula-bar input{font-family:var(--mono);font-size:var(--t-sm);border:none;flex:1;padding:6px 4px}.sheet-scroll{max-height:30rem;padding:var(--gap-xs);margin:calc(-1 * var(--gap-xs));overflow:auto}.sheet-table{border-collapse:collapse;width:100%;font-size:var(--t-sm)}.sheet-table th{background:var(--head-bg);border:1px solid var(--border);font-size:var(--t-xs);color:var(--text-soft);z-index:2;min-width:88px;padding:5px 8px;font-weight:700;position:sticky;top:0}.sheet-table th.row-head,.sheet-table td.row-head{z-index:3;width:36px;min-width:36px;position:sticky;left:0}.sheet-table td.corner{background:var(--head-bg);border:1px solid var(--border);z-index:3;padding:5px 8px;position:sticky;top:0}.sheet-table th.hl{background:var(--blue-soft);color:var(--primary-dark)}.sheet-table td{border:1px solid var(--border);cursor:cell;white-space:nowrap;text-overflow:ellipsis;background:var(--surface);outline:none;max-width:200px;height:30px;padding:5px 8px;overflow:hidden}.sheet-table td.num{text-align:right;font-variant-numeric:tabular-nums}.sheet-table td.active{outline:2px solid var(--primary);outline-offset:-2px}.sheet-table td:focus-visible{outline:2px solid var(--primary);outline-offset:-2px;box-shadow:none}.sheet-table td.target{background:var(--amber-pale)}.sheet-table td.target.active{background:var(--amber-soft)}.sheet-table td.error{color:var(--red-ink);font-weight:600}.data-grid .sheet-scroll{border:1px solid var(--border);border-radius:var(--radius-md);max-height:none}.data-grid .data-grid-table td{cursor:default;text-overflow:clip;white-space:pre;max-width:none}.ws-mark{border-radius:var(--radius-xs);background:#ea433529}.data-grid-table tbody tr:first-child td{background:var(--head-bg);font-weight:650}.cell-editor{width:100%;box-shadow:none;font:inherit;font-family:var(--mono);font-size:var(--t-sm);background:0 0;border:none;outline:none;padding:0}.btn-sheets{background:var(--green-pale);color:var(--green-ink);cursor:pointer;font-family:var(--sans);font-size:var(--t-sm);font-weight:var(--fw-semibold);border-radius:var(--radius-pill);transition:background var(--d-fast) var(--e-out);border:0;justify-content:center;align-items:center;padding:8px 14px;text-decoration:none;display:inline-flex}@media (hover:hover){.btn-sheets:hover{background:var(--green-soft)}}.btn-sheets:active{background:var(--green-soft)}@media (max-width:640px){.btn-copy,.btn-excel,.practice-sim-open,.btn-sheets{min-height:var(--tap-min)}.btn-excel-icon,.btn-copy-icon,.btn-copy-icon.btn-copy-sm{min-width:var(--tap-min);width:var(--tap-min);height:var(--tap-min)}.btn-copy-sm{min-height:var(--tap-min);padding-inline:var(--gap-md)}.practice-sim-open{min-width:var(--tap-min);min-height:var(--tap-min)}.practice-toggle{width:100%;min-height:var(--tap-min);padding-block:var(--gap-md)}}.sheets-fig{margin:18px 0}.sheets-fig figcaption{font-size:var(--t-xs);color:var(--text-soft);margin-top:6px;font-style:italic}.sheets-fig-missing{color:var(--red-ink);font-size:var(--t-sm)}.shortcuts-os{gap:var(--gap-xs);background:var(--bg);border:1px solid var(--border);border-radius:var(--radius-md);margin-bottom:16px;padding:3px;display:inline-flex}.shortcuts-os button{cursor:pointer;border-radius:var(--radius-sm);font-size:var(--t-sm);color:var(--text-soft);background:0 0;border:none;padding:6px 14px;font-weight:600}.shortcuts-os button.active{background:var(--surface);color:var(--primary);box-shadow:var(--shadow)}.shortcuts-list{gap:var(--gap-sm);flex-direction:column;display:flex}.shortcut-row{align-items:center;gap:var(--gap-md);border-radius:var(--radius-md);grid-template-columns:minmax(0,1fr) auto auto;padding:10px 12px;display:grid}@media (hover:hover){.shortcut-row:hover{background:var(--bg)}}.shortcut-row.practicing{background:var(--blue-pale)}.shortcut-action{flex-direction:column;min-width:0;display:flex}@media (max-width:480px){.shortcut-row{grid-template-columns:minmax(0,1fr) auto}.shortcut-keys{flex-wrap:wrap;grid-column:1/-1}}.shortcut-label{font-size:var(--t-base);font-weight:600}.shortcut-note{font-size:var(--t-xs);color:var(--text-soft)}.shortcut-keys{gap:var(--gap-xs);display:flex}kbd{font-family:var(--mono);font-size:var(--t-xs);background:var(--surface);border:1px solid var(--border-strong);border-radius:var(--radius-sm);color:var(--ink-quiet);border-bottom-width:2px;padding:3px 8px;box-shadow:0 1px #0000000a}.shortcut-try{background:var(--bg);cursor:pointer;border-radius:var(--radius-md);width:34px;height:30px;font-size:var(--t-base);border:none}@media (hover:hover){.shortcut-try:hover{background:var(--border)}}.shortcut-practice{border:2px dashed var(--primary);border-radius:var(--radius-md);text-align:center;font-size:var(--t-sm);cursor:text;outline:none;grid-column:1/-1;margin-top:8px;padding:12px}.shortcut-practice:focus{box-shadow:var(--ring)}.shortcut-practice .ok{color:var(--green-ink);font-weight:700}.shortcut-practice .no{color:var(--red-ink);font-weight:600}.shortcut-practice .hint{color:var(--text-soft)}.shortcuts-tip{font-size:var(--t-sm);color:var(--text-soft);margin-top:14px}.cmp-intro{font-size:var(--t-base);margin-bottom:16px}.cmp-table-wrap{overflow-x:auto}.cmp-table{border-collapse:collapse;width:100%;font-size:var(--t-sm)}.cmp-table th,.cmp-table td{border:1px solid var(--border);text-align:left;vertical-align:top;padding:10px 12px}.cmp-table thead th,.cmp-table thead .cmp-corner{background:var(--bg)}.cmp-table thead code{font-family:var(--mono);font-size:var(--t-sm);color:var(--primary);font-weight:700;display:block}.cmp-tagline{font-size:var(--t-xs);color:var(--text-soft);margin-top:3px;font-weight:400;display:block}.cmp-aspect{background:var(--head-bg);white-space:nowrap;font-weight:600}.cmp-best{background:var(--green-pale)}.cmp-check{color:var(--green-ink);font-weight:800}.cmp-bench{margin:22px 0}.cmp-bench-title{font-weight:700;font-size:var(--t-base);margin-bottom:8px}.cmp-verdict{background:var(--amber-pale);border-radius:var(--radius);border-left:4px solid var(--amber);font-size:var(--t-base);margin-top:18px;padding:14px 18px}.nesting-intro{font-size:var(--t-base);margin-bottom:14px}.nesting-grid-head{justify-content:flex-end;margin-bottom:6px;display:flex}.nesting-grid{margin-bottom:18px;overflow-x:auto}.nesting-grid table{border-collapse:collapse;font-size:var(--t-sm)}.nesting-grid th,.nesting-grid td{border:1px solid var(--border);text-align:left;padding:5px 12px}.nesting-grid thead th,.nesting-grid tbody th{background:var(--head-bg);color:var(--text-soft);font-weight:700;font-size:var(--t-xs);text-align:center;min-width:30px}.nesting-grid td.head{background:var(--head-bg);font-weight:700}.nesting-layers{gap:var(--gap-sm);flex-direction:column;display:flex}.nesting-layer{border:1px solid var(--border);border-radius:var(--radius);background:var(--surface);padding:14px 16px;transition:all .2s}.nesting-layer.current{border-color:var(--primary);box-shadow:0 0 0 3px #2563eb1a}.nesting-layer-head{justify-content:space-between;align-items:center;margin-bottom:8px;display:flex}.nesting-depth{font-size:var(--t-sm);font-weight:700}.nesting-result{font-family:var(--mono);font-size:var(--t-base);color:var(--green-ink);background:var(--green-pale);border-radius:var(--radius-sm);padding:3px 10px;font-weight:700}.nesting-layer code{font-family:var(--mono);font-size:var(--t-sm);background:var(--dark-surface);color:var(--dark-ink);border-radius:var(--radius-md);padding:10px 14px;display:block;overflow-x:auto}.nesting-explain{font-size:var(--t-sm);color:var(--text-soft);margin:8px 0 0}.nesting-controls{gap:var(--gap-sm);align-items:center;margin-top:16px;display:flex}@media (pointer:coarse){.nesting-controls .btn{min-height:var(--tap-min)}}.nesting-done{color:var(--green-ink);font-weight:700;font-size:var(--t-base)}.net-live{left:0;right:0;bottom:calc(8px + var(--safe-b));z-index:var(--z-toast);padding-left:calc(12px + var(--safe-l));padding-right:calc(12px + var(--safe-r));pointer-events:none;justify-content:center;display:flex;position:fixed}.net-notice{align-items:center;gap:var(--gap-sm);max-width:560px;padding:10px var(--gap-lg);border-radius:var(--radius-pill);background:var(--amber-pale);color:var(--amber-ink);border:1px solid var(--amber-soft);box-shadow:var(--sh-2);font-size:var(--t-sm);font-weight:600;line-height:1.35;display:flex}.net-notice .icon{flex:none}.load-error-retry{min-height:var(--tap-min);min-width:var(--tap-min)}.site-banner{align-items:center;gap:var(--gap-sm);width:calc(min(100%, var(--main-max)) - 2 * var(--page-x));margin:var(--gap-sm) auto 0;border-radius:var(--radius-md);font-size:var(--t-sm);flex-wrap:wrap;padding:6px 6px 6px 14px;line-height:1.4;display:flex}.site-banner-info{background:var(--blue-pale);color:var(--primary-dark)}.site-banner-warn{background:var(--amber-pale);color:var(--amber-ink)}.site-banner .icon{flex:none}.site-banner-text{flex:1;min-width:0}.site-banner-link{color:inherit;text-underline-offset:2px;min-height:var(--tap-min);align-items:center;font-weight:700;text-decoration:underline;display:inline-flex}@media (hover:hover){.site-banner-link:hover{text-decoration-thickness:2px}}.site-banner-link:active{opacity:.75}.site-banner-close{min-width:var(--tap-min);min-height:var(--tap-min);color:inherit;cursor:pointer;border-radius:var(--radius-pill);background:0 0;border:0;flex:none;justify-content:center;align-items:center;margin-left:auto;padding:0;display:inline-flex}@media (hover:hover){.site-banner-close:hover{background:var(--fill-3)}}.site-banner-close:active{background:var(--fill-2)}.verify-notice{flex-wrap:wrap}.verify-resend-msg:empty,.lesson-gate:empty{display:none}.verify-resend-msg{flex:100%}.limit-chip{border-radius:var(--radius-pill);background:var(--bg);border:1px solid var(--border);white-space:nowrap;padding:2px 10px}.limit-chip,.verify-resend-msg{font-size:var(--t-xs);color:var(--text-soft)}.chat-fab{z-index:var(--z-fab);right:var(--page-x);bottom:calc(24px + var(--safe-b));border-radius:var(--radius-pill);cursor:pointer;width:56px;height:56px;color:var(--primary);background:var(--glass-bg);-webkit-backdrop-filter:var(--glass-filter);backdrop-filter:var(--glass-filter);box-shadow:inset 0 var(--hairline) 0 var(--glass-stroke), 0 0 0 var(--hairline) var(--glass-edge), var(--glass-shadow);transition:transform var(--d-fast) var(--e-out), background var(--d-mid) var(--e-out), color var(--d-mid) var(--e-out);border:0;place-items:center;padding:0;display:grid;position:fixed}@media (max-width:1023px){.chat-fab{left:calc(var(--tabbar-left) + var(--tabbar-w) + var(--fab-gap));right:auto;bottom:var(--tabbar-bottom);width:var(--tabbar-h);height:var(--tabbar-h)}}@media (hover:hover){.chat-fab:hover{transform:scale(1.05)}}.chat-fab:active{transform:scale(.92)}.chat-fab.open{background:var(--primary);color:var(--ink-on-fill)}.chat-panel{z-index:var(--z-fab);right:var(--page-x);bottom:calc(24px + var(--safe-b) + 56px + 12px);width:min(380px, calc(100% - 2 * var(--page-x)));height:520px;max-height:calc(100vh - 140px - var(--safe-b));flex-direction:column;display:flex;position:fixed;overflow:hidden}@supports (height:100dvh){.chat-panel{max-height:calc(100dvh - 140px - var(--safe-b))}}@media (max-width:1023px){.chat-panel{bottom:calc(var(--tabbar-bottom) + var(--tabbar-h) + 12px);max-height:calc(100vh - var(--tabbar-bottom) - var(--tabbar-h) - 24px - var(--topbar-h))}@supports (height:100dvh){.chat-panel{max-height:calc(100dvh - var(--tabbar-bottom) - var(--tabbar-h) - 24px - var(--topbar-h))}}}.chat-panel:focus{outline:none}.chat-header{border-bottom:1px solid var(--border);background:var(--grad-brand);color:var(--ink-on-fill);padding:14px 18px}.chat-title{font-weight:700;font-size:var(--t-md);display:block}.chat-sub{font-size:var(--t-xs)}.chat-body{gap:var(--gap-sm);flex-direction:column;flex:1;padding:14px;display:flex;overflow-y:auto}.chat-msg{gap:var(--gap-sm);flex-direction:column;display:flex}.chat-msg.user{align-items:flex-end}.chat-bubble{border-radius:var(--radius);max-width:85%;font-size:var(--t-base);padding:10px 14px;line-height:1.5}.chat-msg.bot .chat-bubble{background:var(--bg);border-bottom-left-radius:var(--radius-xs)}.chat-msg.user .chat-bubble{background:var(--primary);color:var(--ink-on-fill);border-bottom-right-radius:var(--radius-xs)}.chat-bubble.typing{letter-spacing:3px}.chat-sources{gap:var(--gap-xs);flex-direction:column;display:flex}.chat-source{gap:var(--gap-2xs);font-size:var(--t-xs);color:var(--primary-dark);background:var(--blue-pale);border-radius:var(--radius-md);flex-direction:column;padding:8px 10px;font-weight:600;text-decoration:none;display:flex}@media (hover:hover){.chat-source:hover{background:var(--blue-soft)}}.chat-source.locked{background:var(--bg);color:var(--text-soft);border:1px solid var(--border);padding:7px 9px}@media (hover:hover){.chat-source.locked:hover{background:var(--border)}}.chat-source-head{align-items:center;gap:var(--gap-xs);display:flex}.chat-source-title{min-width:0}.chat-source-tag{font-size:var(--t-micro);text-transform:uppercase;letter-spacing:.04em;color:var(--text-soft);flex-shrink:0;margin-left:auto;font-weight:700}.chat-source-course{font-size:var(--t-micro);color:var(--text-soft);font-weight:600}.chat-source-snippet{color:var(--text-soft);-webkit-line-clamp:3;line-clamp:3;-webkit-box-orient:vertical;font-weight:400;line-height:1.45;display:-webkit-box;overflow:hidden}.chat-suggestions{gap:var(--gap-sm);flex-direction:column;margin-top:8px;display:flex}.chat-suggestions button{min-height:var(--tap-min);text-align:left;border:1px solid var(--border);background:var(--surface);cursor:pointer;border-radius:var(--radius-md);font-size:var(--t-base);color:var(--text);padding:9px 12px}@media (hover:hover){.chat-suggestions button:hover{border-color:var(--primary);background:var(--blue-pale)}}.chat-input{gap:var(--gap-sm);border-top:1px solid var(--border);padding:12px;display:flex}.chat-input input{min-width:0;min-height:var(--tap-min);border:1px solid var(--line-control);border-radius:var(--radius-md);font-size:var(--t-field);flex:1;padding:10px 12px}.chat-input input:focus{border-color:var(--primary)}.chat-input button{width:var(--tap-min);min-height:var(--tap-min);background:var(--primary);color:var(--ink-on-fill);border-radius:var(--radius-md);cursor:pointer;font-size:var(--t-md);border:none;flex:none;place-items:center;display:grid}.chat-input button:disabled{opacity:.5}.modal-backdrop{z-index:var(--z-overlay);background:var(--scrim);animation:modal-fade var(--d-fast) var(--e-out);grid-template-columns:minmax(0,1fr);place-items:start center;padding:20px;display:grid;position:fixed;inset:0;overflow-y:auto}.modal-dialog{width:100%;max-width:1080px;animation:modal-rise var(--d-mid) var(--e-out);outline:none;flex-direction:column;display:flex}.modal-bar{flex:none;justify-content:flex-end;align-items:center;display:flex}.modal-body{min-height:0}.modal-close{min-width:var(--tap-min);min-height:var(--tap-min);border-radius:var(--radius-pill);background:var(--glass-bg);-webkit-backdrop-filter:var(--glass-filter);backdrop-filter:var(--glass-filter);box-shadow:inset 0 var(--hairline) 0 var(--glass-stroke), 0 0 0 var(--hairline) var(--glass-edge);color:var(--text);font-size:var(--t-md);cursor:pointer;transition:transform var(--d-fast) var(--e-out);border:0;justify-content:center;align-items:center;padding:0;line-height:1;display:inline-flex}@media (hover:hover) and (pointer:fine){.modal-close:hover{background:var(--glass-bg-thick)}}.modal-close:active{transform:scale(.92)}@keyframes modal-fade{0%{opacity:0}to{opacity:1}}@keyframes modal-rise{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:none}}@media (prefers-reduced-motion:reduce){.modal-backdrop,.modal-dialog{animation:none}}@media (max-width:899px){.modal-backdrop{place-items:end stretch;padding:0;overflow:hidden}.modal-dialog{max-width:none;max-height:calc(100dvh - var(--safe-t));padding-bottom:var(--safe-b);border-radius:var(--radius-lg) var(--radius-lg) 0 0;background:var(--surface);box-shadow:var(--sh-3);animation:modal-sheet-rise var(--d-slow) var(--e-ios)}.modal-body{overscroll-behavior:contain;padding:var(--gap-xs);overflow-y:auto}.modal-bar{padding:var(--gap-sm) var(--gap-sm) 0;justify-content:flex-end;position:relative}.modal-bar:before{content:"";border-radius:var(--radius-pill);background:var(--border-strong);width:36px;height:5px;position:absolute;top:6px;left:50%;transform:translate(-50%)}.modal-close{background:var(--fill-3);-webkit-backdrop-filter:none;backdrop-filter:none;box-shadow:none}}@media (max-width:899px) and (hover:hover) and (pointer:fine){.modal-close:hover{background:var(--fill-2)}}@media (max-width:640px){.modal-dialog{min-height:100dvh;padding-top:var(--safe-t);border-radius:0}.modal-bar:before{display:none}.modal-body>.simulator{min-height:calc(100dvh - var(--safe-t) - var(--tap-min) - var(--safe-b) - 2 * var(--gap-sm))}}@keyframes modal-sheet-rise{0%{transform:translateY(100%)}to{transform:none}}@media (prefers-reduced-motion:reduce){.modal-dialog{animation:none}}.module-tag{font-size:var(--t-micro);border-radius:var(--radius-pill);vertical-align:middle;margin-left:10px;padding:2px 9px;font-weight:700;display:inline-block}.module-tag.free{background:var(--green-pale);color:var(--green-ink)}.module-tag.lock{background:var(--head-bg);color:var(--text-soft)}@media print{.topbar,.chat-fab,.chat-panel{display:none!important}.main{max-width:none;padding:0}body{background:#fff}}.celebrate-backdrop{z-index:var(--z-overlay);background:var(--scrim);place-items:start center;padding:20px;animation:.18s ease-out celebrate-fade;display:grid;position:fixed;inset:0;overflow-y:auto}@keyframes celebrate-fade{0%{opacity:0}to{opacity:1}}.celebrate-card{text-align:center;outline:none;width:min(440px,100%);margin-block:auto;padding:34px 30px 24px;animation:.34s cubic-bezier(.34,1.56,.64,1) celebrate-pop;position:relative;overflow:hidden}@keyframes celebrate-pop{0%{opacity:0;transform:scale(.82)translateY(14px)}to{opacity:1;transform:scale(1)translateY(0)}}.celebrate-emoji{margin-bottom:8px;font-size:44px;line-height:1}.celebrate-title{font-size:var(--t-h2);letter-spacing:-.02em;margin:0 0 14px}.celebrate-stats{justify-content:center;gap:var(--gap-sm);flex-wrap:wrap;margin-bottom:16px;display:flex}.celebrate-chip{border-radius:var(--radius-pill);font-size:var(--t-base);padding:6px 13px;font-weight:700}.celebrate-chip.xp{background:var(--green-pale);color:var(--green-ink);animation:.5s cubic-bezier(.34,1.56,.64,1) .15s backwards chip-land}.celebrate-chip.streak{background:var(--amber-pale);color:var(--amber-ink)}.celebrate-chip.streak.grew{animation:.5s cubic-bezier(.34,1.56,.64,1) .3s backwards chip-land}.celebrate-chip.almost{background:var(--blue-pale);color:var(--primary)}@keyframes chip-land{0%{opacity:0;transform:scale(.4)}to{opacity:1;transform:scale(1)}}.celebrate-level{margin-bottom:18px}.celebrate-level-bar{border-radius:var(--radius-pill);background:var(--bg);height:8px;margin-bottom:6px;overflow:hidden}.celebrate-level-fill{border-radius:var(--radius-pill);background:linear-gradient(90deg, var(--primary), var(--violet));height:100%;transition:width .8s cubic-bezier(.22,1,.36,1)}.celebrate-level-label{font-size:var(--t-xs);color:var(--text-soft);font-weight:600}.celebrate-next-card{gap:var(--gap-xs);text-align:left;border-radius:var(--radius);border:1.5px solid var(--primary);background:linear-gradient(135deg, var(--blue-pale), var(--violet-pale));flex-direction:column;margin-bottom:10px;padding:14px 18px;text-decoration:none;transition:transform .15s,box-shadow .15s;display:flex}@media (hover:hover){.celebrate-next-card:hover{transform:translateY(-2px);box-shadow:0 8px 22px #2563eb2e}}.celebrate-next-card:active{transform:translateY(0)}.celebrate-next-label{font-size:var(--t-micro);letter-spacing:.06em;text-transform:uppercase;color:var(--primary);font-weight:700}.celebrate-next-title{color:var(--text);font-size:15.5px;font-weight:700}.celebrate-next-meta{font-size:var(--t-sm);color:var(--text-soft);font-weight:600}.celebrate-next{width:100%;margin-bottom:10px}.celebrate-close{color:var(--text-soft);min-height:var(--tap-min);padding-inline:20px}.celebrate-next-hook{font-size:var(--t-sm);color:var(--ink-quiet);margin:2px 0;line-height:1.5}.celebrate-badges{gap:var(--gap-sm);flex-direction:column;margin-bottom:14px;display:flex}.celebrate-badge{align-items:center;gap:var(--gap-md);border-radius:var(--radius);border:1.5px solid var(--amber);background:linear-gradient(135deg, var(--amber-pale), var(--surface));padding:10px 14px;animation:.55s cubic-bezier(.34,1.56,.64,1) .45s backwards chip-land;display:flex}.celebrate-badge-icon{font-size:28px;line-height:1}.celebrate-badge-text{text-align:left;flex-direction:column;display:flex}.celebrate-badge-label{letter-spacing:.07em;text-transform:uppercase;color:var(--amber-ink);font-size:10.5px;font-weight:700}.celebrate-badge-title{font-size:var(--t-base);color:var(--text);font-weight:700}.recall-box{border-radius:var(--radius);border:1px solid var(--blue-soft);background:var(--blue-pale);margin:0 0 24px;padding:14px 18px}.recall-box p{font-size:var(--t-base);color:var(--text);margin:6px 0 0;line-height:1.6}.recall-label{font-size:var(--t-micro);letter-spacing:.06em;text-transform:uppercase;color:var(--primary);font-weight:700}.hook-box{border-radius:var(--radius);border:1.5px dashed var(--primary);background:linear-gradient(135deg, var(--blue-pale), var(--violet-pale));margin:30px 0 4px;padding:16px 20px;text-decoration:none;transition:transform .15s,box-shadow .15s,border-style .15s;display:block}@media (hover:hover){.hook-box:hover{border-style:solid;transform:translateY(-2px);box-shadow:0 8px 22px #2563eb26}}.hook-box:active{border-style:solid}.hook-box.hook-box-quiet{border:1.5px dashed var(--border-strong);background:var(--surface)}.hook-box p{font-size:var(--t-md);color:var(--text);margin:6px 0 8px;line-height:1.6}.hook-label{font-size:var(--t-micro);letter-spacing:.06em;text-transform:uppercase;color:var(--primary);font-weight:700}.hook-cta{font-size:var(--t-sm);color:var(--primary);font-weight:700}.confetti{pointer-events:none;position:absolute;inset:0;overflow:hidden}.confetti span{border-radius:var(--radius-xs);animation-name:confetti-fall;animation-timing-function:ease-in;animation-fill-mode:forwards;position:absolute;top:-12px}@keyframes confetti-fall{0%{opacity:1;transform:translateY(0)rotate(0)}to{opacity:0;transform:translateY(480px)rotate(540deg)}}@media (max-width:560px){.celebrate-card{padding:26px 18px 18px}}.onb-backdrop{z-index:95;background:var(--scrim);place-items:start center;padding:20px;animation:.2s ease-out celebrate-fade;display:grid;position:fixed;inset:0;overflow-y:auto}.onb-card{text-align:center;width:min(460px,100%);margin-block:auto;padding:30px 28px 22px;animation:.3s cubic-bezier(.34,1.56,.64,1) celebrate-pop;position:relative}.onb-steps{justify-content:center;gap:var(--gap-sm);padding-inline:var(--tap-min);margin-bottom:20px;display:flex}.onb-dot{border-radius:var(--radius-pill);background:var(--border);width:28px;height:4px;transition:background .25s}.onb-dot.on{background:var(--primary)}.onb-title{letter-spacing:-.02em;margin:0 0 6px;font-size:21px}.onb-sub{font-size:var(--t-base);color:var(--text-soft);margin:0 0 18px;line-height:1.5}.onb-options{gap:var(--gap-sm);flex-direction:column;display:flex}.onb-option{align-items:center;gap:var(--gap-md);border:1.5px solid var(--border);border-radius:var(--radius);background:var(--surface);cursor:pointer;text-align:left;padding:13px 16px;transition:border-color .15s,transform .15s,box-shadow .15s;display:flex}@media (hover:hover){.onb-option:hover{border-color:var(--primary);transform:translateY(-1px);box-shadow:0 6px 16px #2563eb1f}}.onb-option:active{border-color:var(--primary);transform:translateY(0)}.onb-option.sel{border-color:var(--primary);background:var(--blue-pale)}.onb-option-icon{flex-shrink:0;font-size:26px;line-height:1}.onb-option-text{gap:var(--gap-2xs);flex-direction:column;min-width:0;display:flex}.onb-option-title{font-size:var(--t-md);color:var(--text);font-weight:700}.onb-option-desc{font-size:var(--t-xs);color:var(--text-soft);line-height:1.4}.onb-ready-icon{margin-bottom:8px;font-size:42px;line-height:1}.onb-start{width:100%;margin-top:4px}.onb-back{color:var(--text-soft);margin-top:10px}.onb-skip{cursor:pointer;min-height:var(--tap-min);border-radius:var(--radius-md);font-size:var(--t-sm);color:var(--text);background:0 0;border:none;align-items:center;padding:0 12px;font-weight:600;display:inline-flex;position:absolute;top:6px;right:6px}@media (hover:hover){.onb-skip:hover{text-decoration:underline}}.onb-skip:active{text-decoration:underline}@media (max-width:560px){.onb-card{padding:24px 18px 16px}}
