@font-face{font-family:IBM Plex Sans;font-style:normal;font-weight:400 700;font-display:swap;src:url(/fonts/ibm-plex-sans-normal-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 Sans;font-style:normal;font-weight:400 700;font-display:swap;src:url(/fonts/ibm-plex-sans-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:IBM Plex Sans;font-style:normal;font-weight:400 700;font-display:swap;src:url(/fonts/ibm-plex-sans-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: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:Space Grotesk;font-style:normal;font-weight:400 700;font-display:swap;src:url(/fonts/space-grotesk-400-700-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:Space Grotesk;font-style:normal;font-weight:400 700;font-display:swap;src:url(/fonts/space-grotesk-400-700-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 Sans;font-style:normal;font-weight:400 700;font-display:swap;src:url(/fonts/tutuq-sans-latin.woff2)format("woff2");unicode-range:U+2BB-2BC}@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}:root{--bg:#f6f8fb;--surface:#fff;--border:#e3e8ef;--text:#1a2233;--text-soft:#5b6779;--primary:#2563eb;--primary-dark:#1d4ed8;--green:#0f9d58;--red:#d93025;--amber:#f4b400;--radius-xs:4px;--radius-sm:7px;--radius-md:10px;--radius:14px;--radius-lg:20px;--radius-pill:999px;--gap-2xs:2px;--gap-xs:4px;--gap-sm:8px;--gap-md:12px;--gap-lg:16px;--gap-xl:24px;--ink:#2b3340;--green-ink:#0a7038;--red-ink:#b3261e;--amber-ink:#8f5700;--green-solid:#0d884c;--ink-on-fill:#fff;--violet:#7c3aed;--violet-ink:#6d28d9;--violet-pale:#f3efff;--grad-brand:linear-gradient(135deg, var(--primary), var(--violet));--shadow-hue:222 45% 22%;--sh-1:0 1px 2px hsl(var(--shadow-hue) / .05), 0 2px 8px hsl(var(--shadow-hue) / .05);--sh-2:0 2px 6px hsl(var(--shadow-hue) / .07), 0 10px 26px hsl(var(--shadow-hue) / .09);--sh-3:0 4px 12px hsl(var(--shadow-hue) / .09), 0 18px 46px hsl(var(--shadow-hue) / .14);--shadow:var(--sh-1);--ring:0 0 0 2px var(--surface), 0 0 0 4px #2463eb8c;--e-out:cubic-bezier(.22, 1, .36, 1);--e-spring:cubic-bezier(.34, 1.4, .64, 1);--d-fast:.13s;--d-mid:.24s;--d-slow:.42s;--sans:"IBM Plex Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;--serif:"Literata", Charter, "Iowan Old Style", Georgia, serif;--mono:"IBM Plex Mono", "SF Mono", "Cascadia Code", Consolas, monospace;--t-micro:11.5px;--t-xs:12.5px;--t-sm:13.5px;--t-base:14.5px;--t-md:15px;--t-read-sm:16px;--t-read:17px;--t-h3:18px;--t-h2:22px;--t-h1:28px;--t-display:36px}:root[data-reader="1"]{--t-read:18.5px;--t-read-sm:17px}:root[data-reader="2"]{--t-read:20px;--t-read-sm:18px}@media (prefers-reduced-motion:reduce){:root{--d-fast:.01ms;--d-mid:.01ms;--d-slow:.01ms}html{scroll-behavior:auto}*,:before,:after{transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}*{box-sizing:border-box}body{font-family:var(--sans);font-size:var(--t-base);background:var(--bg);color:var(--text);-webkit-font-smoothing:antialiased;text-rendering:optimizelegibility;margin:0;font-weight:450;line-height:1.6}#root{min-height:100vh}h1,h2,h3,h4{font-family:var(--serif);letter-spacing:-.018em;text-wrap:balance;font-weight:700;line-height:1.25}h1{font-size:var(--t-h1)}h2{font-size:var(--t-h2)}h3{font-size:var(--t-h3);letter-spacing:-.01em}h4{font-size:var(--t-base);letter-spacing:0}h1,h2,h3,h4,.markdown,.prose{font-optical-sizing:auto}strong,b{font-weight:650}.eyebrow{font-family:var(--sans);font-size:var(--t-micro);letter-spacing:.09em;text-transform:uppercase;color:var(--text-soft);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{box-shadow:var(--ring);border-radius:var(--radius-md);outline:none}html{scroll-behavior:smooth}@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-shimmer{0%{background-position:100% 0}to{background-position:-100% 0}}@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) both}.reveal-sm{animation:sa-rise-sm var(--d-mid) var(--e-out) both}.reveal-pop{animation:sa-pop var(--d-mid) var(--e-spring) both}.route-view{animation:sa-rise .34s var(--e-out) both}.stagger>*{animation:sa-rise var(--d-slow) var(--e-out) both}.stagger-sm>*{animation:sa-rise-sm var(--d-mid) var(--e-out) both}.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-md);background:linear-gradient(100deg, var(--bg) 30%, #eaf0f8 45%, var(--bg) 60%);background-size:240% 100%;animation:1.5s ease-in-out infinite sa-shimmer}.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-row.w-60{width:60%}.skel-row.w-80{width:80%}.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{flex-direction:column;min-height:100vh;display:flex}.topbar{z-index:50;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border-bottom:1px solid var(--border);transition:box-shadow var(--d-mid) var(--e-out), background var(--d-mid) var(--e-out);background:#ffffffeb;justify-content:space-between;align-items:center;padding:10px 28px;display:flex;position:sticky;top:0}.topbar.scrolled{box-shadow:var(--sh-2);background:#ffffffdb}.brand{align-items:center;gap:var(--gap-sm);color:var(--text);text-decoration:none;display:flex}.brand-logo{background:var(--grad-brand);width:34px;height:34px;color:var(--ink-on-fill);font-weight:800;font-size:var(--t-h3);border-radius:var(--radius-md);transition:transform var(--d-mid) var(--e-spring), box-shadow var(--d-mid) var(--e-out);place-items:center;display:grid}.brand:hover .brand-logo{transform:rotate(-4deg)scale(1.06);box-shadow:0 5px 16px #4f46e559}.brand-name{font-family:var(--serif);font-weight:700;font-size:var(--t-h3);letter-spacing:-.022em}.topbar-right{align-items:center;gap:var(--gap-md);display:flex}.topbar-link{font-size:var(--t-sm);color:var(--text-soft);border-radius:var(--radius-md);white-space:nowrap;transition:background var(--d-fast) var(--e-out), color var(--d-fast) var(--e-out);padding:6px 10px;font-weight:600;text-decoration:none}.topbar-link:hover{background:var(--bg);color:var(--text)}.lang-switch{gap:var(--gap-2xs);background:var(--bg);border:1px solid var(--border);border-radius:var(--radius-md);padding:3px;display:flex}.lang-switch button{cursor:pointer;border-radius:var(--radius-sm);font-size:var(--t-sm);color:var(--text-soft);transition:background var(--d-fast) var(--e-out), color var(--d-fast) var(--e-out), box-shadow var(--d-fast) var(--e-out);background:0 0;border:none;padding:4px 10px;font-weight:600}.lang-switch button:hover{color:var(--text)}.lang-switch button.active{background:var(--surface);color:var(--primary);box-shadow:var(--sh-1)}.user-box{align-items:center;gap:var(--gap-sm);display:flex}.user-avatar{background:linear-gradient(135deg, var(--green), var(--primary));width:30px;height:30px;color:var(--ink-on-fill);font-size:var(--t-base);transition:transform var(--d-mid) var(--e-spring);border-radius:50%;place-items:center;font-weight:700;display:grid}.user-box:hover .user-avatar{transform:scale(1.08)}.user-name{font-weight:600;font-size:var(--t-base)}.user-link{align-items:center;gap:var(--gap-sm);color:inherit;border-radius:var(--radius-pill);transition:opacity var(--d-fast) var(--e-out);text-decoration:none;display:flex}.user-link:hover{opacity:.75}.main{flex:1;width:100%;max-width:1080px;margin:0 auto;padding:28px 20px 60px}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--sh-1);transition:box-shadow var(--d-mid) var(--e-out), transform var(--d-mid) var(--e-out)}.btn{justify-content:center;align-items:center;gap:var(--gap-sm);cursor:pointer;border-radius:var(--radius-md);font-family:var(--sans);font-size:var(--t-base);letter-spacing:-.005em;transition:background var(--d-fast) var(--e-out), color var(--d-fast) var(--e-out), transform var(--d-fast) var(--e-out), box-shadow var(--d-fast) var(--e-out);border:none;padding:10px 20px;font-weight:600;text-decoration:none;display:inline-flex;position:relative}.btn:disabled{opacity:.45;cursor:not-allowed}.btn:not(:disabled):active{transform:translateY(1px)scale(.985)}.btn-primary{background:var(--primary);color:var(--ink-on-fill);box-shadow:var(--sh-1)}.btn-primary:not(:disabled):hover{background:var(--primary-dark);box-shadow:var(--sh-2);transform:translateY(-1px)}.btn-secondary{color:var(--primary-dark);background:#e8f0fe}.btn-secondary:not(:disabled):hover{background:#d8e6fd}.btn-ghost{color:var(--text-soft);background:0 0}.btn-ghost:not(:disabled):hover{background:var(--bg);color:var(--text)}.btn-sm{font-size:var(--t-sm);padding:6px 14px}.page-loading{text-align:center;color:var(--text-soft);font-family:var(--serif);font-size:var(--t-read);padding:80px 0;font-style:italic;animation:1.6s ease-in-out infinite sa-breathe}@keyframes sa-breathe{0%,to{opacity:.45}50%{opacity:1}}.error-boundary{text-align:center;max-width:480px;margin:60px auto;padding:36px}.error-boundary h2{margin:0 0 10px}.error-boundary p{color:var(--text-soft);margin:0 0 20px}.section-title{font-family:var(--serif);font-size:var(--t-h2);letter-spacing:-.018em;margin:34px 0 16px;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-sm);color:var(--text-soft);transition:color var(--d-fast) var(--e-out);font-weight:600;text-decoration:none}.section-head-link:hover{color:var(--primary)}.infodot{width:17px;height:17px;color:var(--text-soft);font-family:var(--sans);font-size:var(--t-micro);cursor:help;vertical-align:middle;background:#e7ecf3;border-radius:50%;flex:none;place-items:center;font-weight:700;line-height:1;transition:background .12s,color .12s;display:inline-grid;position:relative}.infodot-ok{color:#0b7a45;background:#d9f0e2}.infodot-warn{color:#8a5a00;background:#fdeeca}.infodot-bad{color:#b3231f;background:#fadcda}.infodot:hover,.infodot:focus-visible{background:var(--primary);color:var(--ink-on-fill);outline:none}.infodot-tip{z-index:60;border-radius:var(--radius-md);color:#f3f6fa;width:max-content;max-width:264px;font-family:var(--sans);font-size:var(--t-xs);letter-spacing:0;text-align:left;text-transform:none;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;background:#1f2937;padding:8px 11px;font-weight:450;line-height:1.45;position:absolute;bottom:calc(100% + 8px);left:0;transform:translateY(4px);box-shadow:0 6px 20px #10182838}.infodot[data-align=right] .infodot-tip{left:auto;right:0}.infodot-tip:after{content:"";border:5px solid #0000;border-top-color:#1f2937;position:absolute;top:100%;left:6px}.infodot[data-align=right] .infodot-tip:after{left:auto;right:6px}.infodot:hover .infodot-tip,.infodot:focus-visible .infodot-tip,.infodot:focus .infodot-tip{opacity:1;visibility:visible;transform:none}.sr-only{clip-path:inset(50%);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.auth-page{place-items:center;min-height:70vh;display:grid}.auth-card{text-align:center;width:100%;max-width:420px;padding:36px}.auth-logo{background:var(--grad-brand);width:52px;height:52px;color:var(--ink-on-fill);border-radius:var(--radius);place-items:center;margin:0 auto 14px;font-size:26px;font-weight:800;display:grid}.auth-card h1{margin:0 0 6px;font-size:24px}.auth-tagline{color:var(--text-soft);font-size:var(--t-sm);margin:0 0 22px}.auth-card form{gap:var(--gap-md);flex-direction:column;display:flex}.auth-card .field{gap:var(--gap-sm);text-align:left;flex-direction:column;display:flex}.auth-card .field label{font-family:var(--sans);font-size:var(--t-xs);color:var(--text-soft);font-weight:600}.auth-card input{border:1px solid var(--border);border-radius:var(--radius-md);font-size:var(--t-base);padding:12px 14px;transition:border-color .15s}.auth-card input:focus{border-color:var(--primary)}.form-error{color:var(--red-ink);border-radius:var(--radius-md);font-size:var(--t-sm);background:#fdeded;padding:10px 14px}.auth-switch{font-size:var(--t-base);color:var(--text-soft);margin-top:18px}.auth-switch a{color:var(--primary);font-weight:600;text-decoration:none}.settings-page{gap:var(--gap-lg);flex-direction:column;max-width:644px;margin:0 auto;display:flex}.settings-head h1{font-size:var(--t-h2);letter-spacing:-.02em;margin:0 0 4px;font-weight:800}.settings-head p{font-size:var(--t-sm);color:var(--text-soft);margin:0}.settings-card{gap:var(--gap-md);flex-direction:column;padding:22px 24px;display:flex}.settings-card h2{font-size:var(--t-h3);margin:0;font-weight:700}.settings-hint{font-size:var(--t-sm);color:var(--text-soft);margin:0;line-height:1.6}.settings-preview{font-size:var(--t-read);color:var(--text-soft);margin:0;line-height:1.7}.settings-card form{gap:var(--gap-md);flex-direction:column;display:flex}.settings-card .field{gap:var(--gap-sm);flex-direction:column;display:flex}.settings-card .field label{font-family:var(--sans);font-size:var(--t-xs);color:var(--text-soft);font-weight:600}.settings-card input,.settings-card select{border:1px solid var(--border);border-radius:var(--radius-md);font-size:var(--t-base);padding:12px 14px;transition:border-color .15s}.settings-card select{background:var(--surface);color:var(--text);font-family:inherit}.settings-card input:focus,.settings-card select:focus{border-color:var(--primary)}.settings-card input[readonly]{background:var(--bg);color:var(--text-soft);cursor:default}.settings-card input[readonly]:focus{border-color:var(--border)}.settings-card .btn{align-self:flex-start}.settings-ok{color:var(--green-ink);border-radius:var(--radius-md);font-size:var(--t-sm);background:#eaf6ee;padding:10px 14px}@media (width<=640px){.settings-card{padding:18px 16px}}.hero{background:linear-gradient(135deg, #1e3a8a 0%, var(--primary) 55%, var(--violet) 100%);border-radius:var(--radius-lg);color:var(--ink-on-fill);box-shadow:var(--sh-2);padding:44px 40px;position:relative;overflow:hidden}.hero:before{content:"";aspect-ratio:1;pointer-events:none;background:radial-gradient(circle,#ffffff38,#0000 65%);width:70%;animation:18s ease-in-out infinite sa-aura;position:absolute;top:-40%;left:-10%}.hero>*{position:relative}.hero h1{font-size:var(--t-display);letter-spacing:-.028em;margin:0 0 10px}.hero p{opacity:.92;max-width:640px;margin:0;font-size:15.5px}.course-grid{gap:var(--gap-lg);grid-template-columns:repeat(auto-fill,minmax(290px,1fr));display:grid}.course-card{color:var(--text);gap:var(--gap-sm);transition:transform var(--d-mid) var(--e-out), box-shadow var(--d-mid) var(--e-out);border-top:4px solid var(--accent,var(--primary));flex-direction:column;padding:24px;text-decoration:none;display:flex}.course-card:hover{box-shadow:var(--sh-3);transform:translateY(-4px)}.course-card:active{transform:translateY(-1px)}.course-icon{transition:transform var(--d-mid) var(--e-spring);font-size:34px}.course-card:hover .course-icon{transform:scale(1.12)rotate(-5deg)}.course-icon.big{font-size:44px}.course-card h3{font-size:var(--t-h3);margin:0}.course-tagline{color:var(--text-soft);font-size:var(--t-sm);flex:1;margin:0}.course-meta{gap:var(--gap-sm);color:var(--text-soft);font-size:var(--t-sm);display:flex}.progress-bar{border-radius:var(--radius-pill);background:var(--bg);height:7px;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-footer{justify-content:space-between;align-items:center;display:flex}.course-pct{font-size:var(--t-sm);color:var(--text-soft);font-weight:600}.learn-status{gap:var(--gap-md);flex-direction:column;margin-bottom:8px;display:flex}.stat-grid{gap:var(--gap-md);grid-template-columns:repeat(auto-fill,minmax(200px,1fr));display:grid}.stat-card{align-items:center;gap:var(--gap-md);padding:18px 20px;display:flex}.stat-card:hover{box-shadow:var(--sh-2)}.stat-body{flex-direction:column;display:flex}.stat-number{letter-spacing:-.02em;font-variant-numeric:tabular-nums;font-size:30px;font-weight:800;line-height:1.1}.stat-total{font-size:var(--t-h3);color:var(--text-soft);font-variant-numeric:tabular-nums;font-weight:600}.stat-label{font-size:var(--t-sm);color:var(--text-soft);margin-top:2px}.streak-card{border-top:4px solid #f59e0b}.stat-flame{transform-origin:50% 85%;font-size:34px;line-height:1;animation:2.6s ease-in-out infinite sa-flicker}@keyframes sa-flicker{0%,to{transform:scale(1)rotate(0)}35%{transform:scale(1.07)rotate(-3deg)}70%{transform:scale(.97)rotate(2deg)}}.continue-card{justify-content:space-between;align-items:center;gap:var(--gap-md);color:var(--text);border-left:4px solid var(--primary);transition:transform var(--d-mid) var(--e-out), box-shadow var(--d-mid) var(--e-out);padding:16px 20px;text-decoration:none;display:flex}.continue-card:hover{box-shadow:var(--sh-2);transform:translateY(-2px)}.continue-title{font-size:var(--t-xs);color:var(--text-soft);font-weight:600}.continue-lesson{margin-top:2px;font-size:15.5px;font-weight:700}.weak-block{padding:18px 20px}.weak-head h3{margin:0 0 2px;font-size:16px}.weak-head p{font-size:var(--t-sm);color:var(--text-soft);margin:0 0 10px}.weak-list{gap:var(--gap-xs);flex-direction:column;margin:0;padding:0;list-style:none;display:flex}.weak-row{justify-content:space-between;align-items:center;gap:var(--gap-md);border-radius:var(--radius-md);color:var(--text);font-size:var(--t-base);transition:background var(--d-fast) var(--e-out), transform var(--d-fast) var(--e-out);padding:9px 10px;text-decoration:none;display:flex}.weak-row:hover{background:var(--bg);transform:translate(3px)}.weak-lesson{flex:1}.weak-pct{font-size:var(--t-xs);color:#b42318;border-radius:var(--radius-pill);background:#fee4e2;padding:2px 9px;font-weight:700}.verify-card{gap:var(--gap-lg);flex-direction:column;align-items:flex-start;padding:32px;display:flex}.verify-card h1{font-size:var(--t-h2);margin:0}.verify-badge{font-size:var(--t-md);color:#067647;border-radius:var(--radius-pill);background:#dcfae6;padding:8px 16px;font-weight:700}.verify-badge.bad{color:#b42318;background:#fee4e2}.verify-dl{gap:var(--gap-sm) var(--gap-xl);grid-template-columns:auto 1fr;margin:6px 0 0;display:grid}.verify-dl dt{color:var(--text-soft);font-size:var(--t-sm)}.verify-dl dd{font-weight:600;font-size:var(--t-base);margin:0}.verify-id{font-family:var(--mono);font-size:var(--t-sm)}.cert-verify-note{font-size:var(--t-micro);color:var(--text-soft);font-family:var(--mono);word-break:break-all;margin-top:14px}.course-page{gap:var(--gap-lg);flex-direction:column;display:flex}.course-header{gap:var(--gap-md);border-top:4px solid var(--accent,var(--primary));flex-direction:column;padding:28px;display:flex}.course-header-top{gap:var(--gap-lg);align-items:flex-start;display:flex}.course-header h1{font-size:var(--t-h1);margin:0 0 6px}.course-header p{color:var(--text-soft);font-size:var(--t-base);margin:0}.module{padding:22px 24px}.module-header{gap:var(--gap-md);align-items:flex-start;margin-bottom:12px;display:flex}.module-num{background:var(--bg);border:1px solid var(--border);border-radius:var(--radius-md);min-width:32px;height:32px;font-weight:700;font-size:var(--t-base);place-items:center;display:grid}.module-header h2{margin:2px 0;font-size:17px}.module-goal{color:var(--text-soft);font-size:var(--t-sm);margin:0}.lesson-list{flex-direction:column;margin:0;padding:0;list-style:none;display:flex}.lesson-row{align-items:center;gap:var(--gap-md);border-radius:var(--radius-md);color:var(--text);font-size:var(--t-base);transition:background var(--d-fast) var(--e-out), transform var(--d-fast) var(--e-out);padding:11px 10px;text-decoration:none;display:flex}.lesson-row:hover{background:var(--bg);transform:translate(4px)}.lesson-status{border:2px solid var(--border);min-width:22px;height:22px;font-size:var(--t-xs);color:var(--ink-on-fill);transition:background var(--d-mid) var(--e-out), border-color var(--d-mid) var(--e-out);border-radius:50%;place-items:center;display:grid}.lesson-status.done{background:var(--green-solid);border-color:var(--green-solid)}.lesson-title{flex:1}.lesson-badges{align-items:center;gap:var(--gap-sm);display:flex}.badge{font-size:var(--t-micro);border-radius:var(--radius-pill);padding:2px 8px;font-weight:700}.badge.sim{color:var(--amber-ink);background:#fff3d6}.badge.quiz{color:var(--primary);background:#e8f0fe}.lesson-duration{font-size:var(--t-xs);color:var(--text-soft)}.lesson-page{gap:var(--gap-lg);flex-direction:column;display:flex}.lesson-topnav{justify-content:space-between;align-items:center;display:flex}.lesson-counter{color:var(--text-soft);font-size:var(--t-micro);letter-spacing:.09em;text-transform:uppercase;font-variant-numeric:tabular-nums;font-weight:600}.lesson-heading{font-size:var(--t-h1);margin:0}.tabs{gap:var(--gap-sm);border-bottom:2px solid var(--border);display:flex}.lesson-panel{gap:var(--gap-lg);flex-direction:column;display:flex}.tab{cursor:pointer;font-size:var(--t-base);color:var(--text-soft);transition:color var(--d-fast) var(--e-out);background:0 0;border:none;margin-bottom:-2px;padding:10px 16px;font-weight:550;position:relative}.tab:hover{color:var(--text)}.tab:after{content:"";background:var(--primary);height:2px;transition:transform var(--d-mid) var(--e-out);position:absolute;bottom:0;left:0;right:0;transform:scaleX(0)}.tab:hover:after{background:var(--border);transform:scaleX(.4)}.tab.active{color:var(--primary);font-weight:650}.tab.active:after,.tab.active:hover:after{background:var(--primary);transform:scaleX(1)}.lesson-content{padding:38px 34px 42px}.lesson-content.practice{border-left:4px solid var(--amber)}.lesson-fallback-note{border-left:3px solid var(--amber);border-radius:var(--radius-xs);font-size:var(--t-base);color:var(--text-soft);background:#f4b4001a;margin:0 0 22px;padding:10px 14px}.lesson-footer{justify-content:space-between;align-items:center;gap:var(--gap-sm);margin-top:8px;display:flex}.done-label{color:var(--green-ink);font-weight:700;font-size:var(--t-base)}.markdown{font-family:var(--serif);font-size:var(--t-read);color:var(--ink);gap:var(--gap-lg);overflow-wrap:break-word;flex-direction:column;line-height:1.72;display:flex}.md-part{align-content:start;row-gap:var(--gap-md);grid-template-columns:[wide-start text-start]minmax(0,1fr)[text-end wide-end];display:grid}.lesson-content .md-part{grid-template-columns:[wide-start]minmax(0,1fr)[text-start]minmax(0,68ch)[text-end]minmax(0,1fr)[wide-end]}.md-part>*{grid-column:text;margin:0}.md-part>table,.md-part>.md-copyable-wide,.md-part>.sheets-figure{grid-column:wide}.md-part>h2{font-size:var(--t-h2);border-top:1px solid var(--border);margin-top:24px;padding-top:22px}.md-part>h2:first-child{border-top:none;margin-top:0;padding-top:0}.md-part>h3{font-size:var(--t-h3);margin-top:30px;position:relative}.lesson-content .md-part>h3:before{content:"";border-radius:var(--radius-xs);background:var(--primary);opacity:.55;width:18px;height:2px;position:absolute;top:.62em;right:calc(100% + 18px)}@media (width<=900px){.lesson-content .md-part>h3:before{display:none}}.md-part>p{text-wrap:pretty}.lesson-content .markdown>.md-part:first-child>h2:first-child+p{font-size:calc(var(--t-read) + 2px);color:#3c4a63;line-height:1.66}@media (width<=640px){.lesson-content .markdown>.md-part:first-child>h2:first-child+p{font-size:var(--t-read)}}.md-part>ul,.md-part>ol,.md-part>details>ul,.md-part>details>ol{padding-left:0;list-style:none}.md-part li{margin:6px 0;padding-left:30px;position:relative}.md-part>ol,.md-part>details>ol{counter-reset:md-step}.md-part>ol>li,.md-part>details>ol>li{counter-increment:md-step}.md-part>ol>li:before,.md-part>details>ol>li:before{content:counter(md-step);border-radius:var(--radius-sm);min-width:20px;height:20px;color:var(--primary);font-family:var(--sans);font-variant-numeric:tabular-nums;background:#eaf0fe;place-items:center;font-size:.68em;font-weight:700;display:grid;position:absolute;top:.28em;left:0}.md-part>ul>li:before,.md-part>details>ul>li:before{content:"";background:#b9c4d6;border-radius:50%;width:6px;height:6px;position:absolute;top:.72em;left:8px}.md-part li ul,.md-part li ol{margin-top:6px;padding-left:0;list-style:none}.md-part li li:before{content:"–";color:var(--text-soft);width:auto;height:auto;font-family:var(--serif);background:0 0;display:block;position:absolute;top:0;left:10px}.md-part li:has(>input[type=checkbox]):before{content:none}.md-part li>input[type=checkbox]{accent-color:var(--primary);margin:0;position:absolute;top:.42em;left:7px}.markdown p,.markdown li{text-wrap:pretty}.markdown :where(h1,h2,h3,h4){color:var(--text)}.markdown em{color:inherit;font-style:italic}.markdown strong{color:var(--text);font-weight:650}.markdown code{font-family:var(--mono);border-radius:var(--radius-xs);color:#33415c;overflow-wrap:anywhere;-webkit-box-decoration-break:clone;box-decoration-break:clone;background:#f2f5f9;border:1px solid #e4e9f2;padding:1px 5px;font-size:.86em}.markdown pre{color:#e2e8f0;border-radius:var(--radius);background:#0f172a;padding:16px 18px;font-size:.8em;line-height:1.6;overflow-x:auto}.markdown pre code{color:inherit;font-size:inherit;overflow-wrap:normal;background:0 0;border:none;padding:0}.markdown ::selection{background:#2563eb29}.menu-path{align-items:center;gap:var(--gap-2xs);vertical-align:baseline;border-radius:var(--radius-sm);background:#eef4ff;border:1px solid #d3e2fd;flex-wrap:wrap;margin:0 1px;padding:1px 8px 1px 6px;line-height:1.7;display:inline-flex}.menu-path:before{content:"▸";color:#1a73e8;opacity:.75;margin-right:4px;font-size:.59em}.mpath-seg{color:#1a4b8f;white-space:nowrap;font-size:.74em;font-weight:600}.menu-path .mpath-seg:first-of-type{color:#166ada}.mpath-sep{color:#3a6cc1;-webkit-user-select:none;user-select:none;margin:0 3px;font-size:.76em}.markdown table{border-collapse:collapse;width:100%;font-family:var(--sans);font-size:var(--t-sm);line-height:1.5}.markdown th,.markdown td{border:none;border-bottom:1px solid var(--border);text-align:left;vertical-align:top;padding:9px 14px 9px 0}.markdown th{font-family:var(--sans);font-size:var(--t-micro);letter-spacing:.07em;text-transform:uppercase;color:var(--text-soft);white-space:nowrap;background:0 0;border-bottom:1.5px solid #cfd7e3;font-weight:600}.markdown tbody tr:last-child td{border-bottom:none}.markdown td code{background:#f2f5f9;border:none}.md-copy-head{justify-content:flex-end;margin-bottom:6px;display:flex}.md-table-scroll{overflow-x:auto}.md-copyable pre,.md-copyable table{margin:0}.markdown hr{border:none;border-top:1px solid var(--border);width:120px;margin:10px auto}.markdown blockquote{color:#46536b;border-left:3px solid #cfd7e3;padding:2px 0 2px 20px;font-style:italic}.markdown blockquote p{margin:0}.md-part>details{border-radius:var(--radius);background:#f8fafd;border:1px solid #d9e2f1;padding:0 18px}.md-part>details[open]{padding-bottom:16px}.md-part>details>summary{align-items:center;gap:var(--gap-sm);cursor:pointer;font-family:var(--sans);font-size:var(--t-base);color:var(--primary);-webkit-user-select:none;user-select:none;margin:0;padding:13px 0;font-weight:600;list-style:none;display:flex}.md-part>details>summary::-webkit-details-marker{display:none}.md-part>details>summary:before{content:"▸";transition:transform var(--d-fast) var(--e-out);line-height:1}.md-part>details[open]>summary:before{transform:rotate(90deg)}.md-part>details>*{margin:14px 0 0}.quiz{gap:var(--gap-lg);flex-direction:column;display:flex}.quiz-question{padding:20px 24px}.quiz-q-title{gap:var(--gap-md);font-family:var(--serif);font-weight:600;font-size:var(--t-read);max-width:68ch;margin-bottom:14px;line-height:1.5;display:flex}.quiz-q-num{background:var(--primary);min-width:26px;height:26px;color:var(--ink-on-fill);border-radius:var(--radius-md);font-family:var(--sans);font-size:var(--t-xs);font-variant-numeric:tabular-nums;flex:none;place-items:center;font-weight:600;display:grid}.quiz-options{gap:var(--gap-sm);flex-direction:column;display:flex}.quiz-option{align-items:center;gap:var(--gap-md);text-align:left;border:1.5px solid var(--border);border-radius:var(--radius-md);background:var(--surface);cursor:pointer;font-family:var(--sans);font-size:var(--t-base);color:var(--text);transition:border-color var(--d-fast) var(--e-out), background var(--d-fast) var(--e-out), transform var(--d-fast) var(--e-out);padding:11px 14px;font-weight:450;line-height:1.5;display:flex}.quiz-option.selected,.quiz-option.correct,.quiz-option.wrong{font-weight:550}.quiz-option:not(:disabled):hover{border-color:var(--primary);background:#f6f9ff;transform:translate(3px)}.quiz-option:not(:disabled):active{transform:translate(3px)scale(.995)}.quiz-option.selected{border-color:var(--primary);background:#e8f0fe}.quiz-option.correct{border-color:var(--green);background:#e6f4ea}.quiz-option.wrong{border-color:var(--red);background:#fdeded}.quiz-option.correct,.quiz-option.wrong{transition-duration:var(--d-mid)}.quiz-option-text{flex:auto}.quiz-letter{border-radius:var(--radius-sm);background:var(--bg);min-width:24px;height:24px;font-size:var(--t-xs);color:var(--text-soft);flex:none;place-items:center;font-weight:700;display:grid}.quiz-explain{border-radius:var(--radius-md);font-family:var(--serif);font-size:var(--t-read-sm);max-width:68ch;animation:sa-rise-sm var(--d-mid) var(--e-out) both;margin-top:12px;padding:11px 15px;line-height:1.68;animation-delay:.12s}.quiz-explain strong{font-family:var(--sans);font-weight:600;font-size:var(--t-micro);letter-spacing:.07em;text-transform:uppercase}.quiz-explain.ok{color:var(--green-ink);background:#e6f4ea}.quiz-explain.no{color:var(--amber-ink);background:#fef3e2}.quiz-result{gap:var(--gap-sm);animation:sa-pop var(--d-mid) var(--e-spring) both;flex-direction:column;align-items:flex-start;padding:22px 26px;animation-delay:.2s;display:flex}.quiz-result.passed{border-left:4px solid var(--green)}.quiz-result.failed{border-left:4px solid var(--amber)}.quiz-result-score{font-family:var(--serif);font-size:var(--t-h3);font-variant-numeric:tabular-nums;font-weight:700}.quiz-option .infodot,.quiz-option .infodot:hover{width:auto;height:auto;font-size:var(--t-md);animation:sa-pop var(--d-mid) var(--e-spring) both;background:0 0;line-height:1;animation-delay:90ms}.quiz-option .infodot-ok,.quiz-option .infodot-ok:hover{color:var(--green-ink)}.quiz-option .infodot-bad,.quiz-option .infodot-bad:hover{color:var(--red-ink)}.reading-line{z-index:55;pointer-events:none;height:2px;position:fixed;inset:0 0 auto}.reading-line span{transform-origin:0;background:linear-gradient(90deg, var(--primary), #6d9bf1);will-change:transform;height:100%;display:block}.lesson-meta{align-items:center;gap:var(--gap-md);display:flex}.reader-size{align-items:baseline;gap:var(--gap-2xs);display:inline-flex}.reader-step{cursor:pointer;border-radius:var(--radius-md);font-family:var(--serif);font-weight:700;font-size:var(--t-xs);color:var(--text-soft);transition:color var(--d-fast) var(--e-out), background var(--d-fast) var(--e-out);background:0 0;border:none;padding:3px 6px;line-height:1}.reader-step-lg{font-size:17px}.reader-step:hover:not(:disabled){color:var(--primary);background:#2463eb14}.reader-step:disabled{opacity:.32;cursor:default}.simulator{gap:var(--gap-md);flex-direction:column;display:flex}.sim-tasks{border-left:4px solid var(--amber);padding:18px 22px}.sim-tasks-header{font-size:var(--t-base);justify-content:space-between;margin-bottom:10px;display:flex}.sim-solved{color:var(--text-soft);font-size:var(--t-sm);font-weight:600}.sim-task-tabs{gap:var(--gap-sm);margin-bottom:10px;display:flex}.sim-task-tab{border:1.5px solid var(--border);background:var(--surface);border-radius:var(--radius-md);cursor:pointer;width:30px;height:30px;font-weight:700;font-size:var(--t-sm);color:var(--text-soft)}.sim-task-tab.active{border-color:var(--primary);color:var(--primary)}.sim-task-tab.done{background:var(--green-solid);border-color:var(--green-solid);color:var(--ink-on-fill)}.sim-task-prompt{font-size:var(--t-base);margin:0 0 12px}.sim-task-actions{gap:var(--gap-sm);display:flex}.sim-hint{border-radius:var(--radius-md);font-size:var(--t-sm);background:#fff8e6;margin-top:10px;padding:10px 14px}.sim-hint.solution{background:#eef2f7}.sim-hint code{font-family:var(--mono);font-size:var(--t-sm);overflow-wrap:anywhere}.sim-feedback{border-radius:var(--radius-md);font-size:var(--t-base);margin-top:10px;padding:10px 14px;font-weight:600}.sim-feedback.ok{color:#14532d;background:#e6f4ea}.sim-feedback.no{color:#8a1c12;background:#fdeded}.sim-solutions{gap:var(--gap-sm);flex-direction:column;margin-top:10px;display:flex}.sim-solution-card{border:1px solid var(--border);border-radius:var(--radius-md);background:#f7f9fc;padding:10px 14px}.sim-solution-approach{font-weight:700;font-size:var(--t-sm);color:var(--primary);margin-bottom:4px}.sim-solution-card code{font-family:var(--mono);font-size:var(--t-sm);color:#e2e8f0;border-radius:var(--radius-md);background:#0f172a;margin:4px 0;padding:8px 12px;display:block;overflow-x:auto}.sim-solution-explain{font-size:var(--t-sm);color:var(--text-soft);margin-top:4px}.practice-sim-panel .sim-tasks-header{align-items:center;gap:var(--gap-md)}.practice-sim-head{align-items:center;gap:var(--gap-sm);font-weight:inherit;display:flex}.practice-sim-hint{font-size:var(--t-sm);color:var(--text-soft);margin:0 0 12px}.practice-sim-solution code{font-family:var(--mono);font-size:var(--t-sm);color:#e2e8f0;border-radius:var(--radius-md);background:#0f172a;padding:8px 12px;display:block;overflow-x:auto}.practice-sim-solution p{font-size:var(--t-sm);color:var(--text-soft);margin:6px 0 0}.sim-menubar{border-bottom:1px solid var(--border);border-radius:var(--radius) var(--radius) 0 0;background:#fbfdff}.sim-menu-titlebar{align-items:center;gap:var(--gap-sm);padding:7px 12px 3px;display:flex}.sim-doc-icon{font-size:16px}.sim-doc-name{font-size:var(--t-sm);color:var(--text);flex:1;font-weight:600}.sim-menu-lang{align-items:center;gap:var(--gap-xs);background:var(--bg);border:1px solid var(--border);border-radius:8px;padding:2px 4px 2px 7px;display:inline-flex}.sim-menu-lang-icon{font-size:var(--t-xs);margin-right:2px}.sim-menu-lang button{cursor:pointer;font-size:var(--t-xs);color:var(--text-soft);background:0 0;border:none;border-radius:6px;padding:2px 7px;font-weight:700}.sim-menu-lang button.active{background:var(--surface);color:var(--primary);box-shadow:var(--shadow)}.sim-menu-row{gap:var(--gap-2xs);flex-wrap:wrap;padding:0 8px;display:flex}.sim-menu-item-wrap{position:relative}.sim-menu-btn{cursor:pointer;border-radius:var(--radius-sm);font-size:var(--t-sm);color:#3c4043;background:0 0;border:none;padding:5px 10px}.sim-menu-btn:hover,.sim-menu-btn.open{color:var(--primary);background:#e8f0fe}.sim-menu-dropdown{z-index:40;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-md);min-width:250px;max-width:320px;padding:6px;position:absolute;top:calc(100% + 2px);left:0;overflow:hidden;box-shadow:0 8px 28px #1018282e}.sim-menu-dd-item{border-radius:var(--radius-sm);cursor:default;padding:7px 10px}.sim-menu-dd-item:hover{background:var(--bg)}.sim-menu-dd-item.has-divider{border-top:1px solid var(--border);margin-top:4px;padding-top:9px}.sim-menu-dd-row{justify-content:space-between;align-items:center;gap:var(--gap-md);font-size:var(--t-sm);color:var(--text);display:flex}.sim-menu-dd-right{align-items:center;gap:var(--gap-sm);display:inline-flex}.sim-menu-sub{color:var(--text-soft);font-size:var(--t-micro)}.sim-menu-kbd{font-family:var(--mono);font-size:var(--t-micro);color:var(--text-soft);background:var(--bg);border:1px solid var(--border);border-radius:var(--radius-xs);padding:1px 6px}.sim-menu-dd-note{font-size:var(--t-micro);color:var(--text-soft);margin-top:2px;display:block}.sim-toolbar{align-items:center;gap:var(--gap-2xs);border-top:1px solid #eef1f5;flex-wrap:wrap;padding:5px 12px 7px;display:flex}.sim-tb-group{align-items:center;gap:var(--gap-2xs);border-right:1px solid var(--border);padding:0 5px;display:inline-flex}.sim-tb-group:last-of-type{border-right:none}.sim-tb-btn{border-radius:var(--radius-sm);min-width:26px;height:26px;font-size:var(--t-sm);color:#3c4043;cursor:default;-webkit-user-select:none;user-select:none;place-items:center;padding:0 4px;display:grid}.sim-tb-btn:hover{background:#e8f0fe}.sim-tb-btn.bold{font-family:serif;font-weight:800}.sim-tb-btn.ital{font-family:serif;font-style:italic}.sim-tb-btn.strike{font-family:serif;text-decoration:line-through}.sim-tb-btn.wide{font-size:var(--t-xs);color:var(--text-soft)}.sim-tb-btn.box{border:1px solid var(--border);border-radius:var(--radius-xs);min-width:30px}.sim-tb-spacer{flex:1}.sim-tb-download{border:1px solid var(--green);color:var(--green-ink);cursor:pointer;font-size:var(--t-xs);border-radius:var(--radius-sm);background:#e6f4ea;padding:4px 12px;font-weight:700}.sim-tb-download:hover{background:#d3ecda}.sim-menu-dd-item.clickable{cursor:pointer}.sim-menu-dd-item.clickable:hover{background:#e8f0fe}.sim-menu-dd-item.toggled .sim-menu-dd-row{color:#1a73e8;font-weight:600}.sim-menu-dd-item{text-align:left;width:100%;color:inherit;font-family:inherit;font-size:inherit;background:0 0;border:none;display:block}.sim-tb-btn{background:0 0;border:none;font-family:inherit}.sim-tb-btn.live{cursor:pointer;color:#202124}.sim-tb-btn.live:hover{background:#e8f0fe}.sim-tb-btn.live:active{background:#d2e3fc}.sim-tb-btn.on{color:#185abc;background:#d2e3fc}.sim-toast{font-size:var(--t-xs);color:#0f7b45;border-radius:var(--radius-pill);white-space:nowrap;background:#e6f4ea;border:1px solid #b7e1c6;padding:3px 10px;font-weight:600;animation:.15s sim-toast-in}@keyframes sim-toast-in{0%{opacity:0;transform:translateY(-3px)}to{opacity:1;transform:none}}.sim-info-backdrop{z-index:50;background:#10182852;place-items:center;padding:20px;display:grid;position:fixed;inset:0}.sim-info-card{background:var(--surface);border-radius:var(--radius);width:100%;max-width:400px;padding:22px 24px;box-shadow:0 18px 50px #1018284d}.sim-info-path{align-items:center;gap:var(--gap-2xs);border-radius:var(--radius-md);background:#eef4ff;border:1px solid #d3e2fd;flex-wrap:wrap;margin-bottom:12px;padding:4px 10px;display:inline-flex}.sim-info-seg{font-size:var(--t-sm);color:#1a4b8f;font-weight:700}.sim-info-path span>.sim-info-seg:first-child{color:#1a73e8}.sim-info-sep{color:#98b3e0;margin:0 5px}.sim-info-text{font-size:var(--t-base);color:var(--text);margin:0 0 18px;line-height:1.55}.sim-info-close{color:var(--ink-on-fill);font-weight:600;font-size:var(--t-sm);border-radius:var(--radius-md);cursor:pointer;background:#1a73e8;border:none;padding:8px 20px}.sim-info-close:hover{background:#1765cc}.btn-excel{border:1px solid var(--green);color:var(--green-ink);cursor:pointer;font-size:var(--t-sm);border-radius:var(--radius-md);background:#e6f4ea;padding:7px 14px;font-weight:700}.btn-excel:hover{background:#d3ecda}.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);margin:0}.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{border:1px solid var(--border);background:var(--surface);border-radius:var(--radius-md);cursor:pointer;transition:border-color var(--d-fast) var(--e-out), background var(--d-fast) var(--e-out);align-items:center;margin-left:auto;padding:3px 8px;line-height:1;display:inline-flex}.practice-sim-open:hover{border-color:var(--primary);background:#f6f9ff}.practice-sim-open:focus-visible{box-shadow:var(--ring);outline:none}.practice-sim-open .infodot,.practice-sim-open:hover .infodot{width:auto;height:auto;font-size:var(--t-sm);background:0 0}.practice-sim-open:hover .infodot-tip,.practice-sim-open:focus-visible .infodot-tip{opacity:1;visibility:visible;transform: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{border:1px solid var(--primary);color:var(--primary-dark);cursor:pointer;font-size:var(--t-sm);border-radius:var(--radius-md);transition:background var(--d-fast) var(--e-out);background:#eef4ff;padding:7px 14px;font-weight:700}.btn-copy:hover{background:#dbe7ff}.btn-copy{min-width:168px}.btn-copy-sm{min-width:0;font-size:var(--t-xs);border-radius:var(--radius-md);padding:4px 10px}.data-grid-hint{font-size:var(--t-xs);color:var(--text-soft);flex:220px;line-height:1.45}.data-grid-table{width:auto;min-width:100%}.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:#f7f9fc;font-weight:650}.practice-answer-wrap{border-top:1px solid var(--border);margin-top:12px;padding-top:10px}.practice-toggle{color:var(--primary);cursor:pointer;font-size:var(--t-sm);background:0 0;border:none;padding:0;font-weight:600}.practice-answer{margin-top:8px}.practice-answer code{font-family:var(--mono);font-size:var(--t-sm);color:#e2e8f0;border-radius:var(--radius-md);background:#0f172a;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:hover,.fn-sugg.active{background:#eef4ff}.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);cursor:crosshair;z-index:5;border:1px solid #fff;border-radius:1px;width:8px;height:8px;position:absolute;bottom:-4px;right:-4px}.fill-handle:hover{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:480px;overflow:auto}.sheet-table{border-collapse:collapse;width:100%;font-size:var(--t-sm)}.sheet-table th{border:1px solid var(--border);font-size:var(--t-xs);color:var(--text-soft);z-index:2;background:#f1f4f9;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{border:1px solid var(--border);z-index:3;background:#f1f4f9;padding:5px 8px;position:sticky;top:0}.sheet-table th.hl{color:var(--primary-dark);background:#dbe7ff}.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:#fff8e6}.sheet-table td.target.active{background:#fff3d0}.sheet-table td.error{color:var(--red-ink);font-weight:600}.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}@media (width<=640px){.main{padding:16px 12px 50px}.hero{padding:28px 22px}.hero h1{font-size:23px}.topbar{gap:var(--gap-sm);padding:8px 14px}.topbar-right{gap:var(--gap-sm);min-width:0}.lang-switch{padding:2px}.lang-switch button{font-size:var(--t-xs);padding:4px 7px}.topbar-right{flex:none}.brand{flex:0 auto;min-width:0;overflow:hidden}.brand-logo{flex:none}.brand-name{white-space:nowrap;text-overflow:ellipsis;font-size:16px;overflow:hidden}.user-name{display:none}.lesson-content{padding:20px 18px}.lesson-footer{flex-wrap:wrap}.chat-panel{width:calc(100vw - 24px);right:12px}}@media (width<=460px){.brand-name{display:none}}.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:1fr auto auto;padding:10px 12px;display:grid}.shortcut-row:hover{background:var(--bg)}.shortcut-row.practicing{background:#f0f5ff}.shortcut-action{flex-direction:column;display:flex}.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);border-radius:var(--radius-sm);color:#3c4043;background:#fff;border:1px solid #cfd6df;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}.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{white-space:nowrap;background:#fafbfc;font-weight:600}.cmp-best{background:#e6f4ea}.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{border-radius:var(--radius);border-left:4px solid var(--amber);font-size:var(--t-base);background:#fff8e6;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{color:var(--text-soft);font-weight:700;font-size:var(--t-xs);text-align:center;background:#f1f4f9;min-width:30px}.nesting-grid td.head{background:#f8f9fa;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);border-radius:var(--radius-sm);background:#e6f4ea;padding:3px 10px;font-weight:700}.nesting-layer code{font-family:var(--mono);font-size:var(--t-sm);color:#e2e8f0;border-radius:var(--radius-md);background:#0f172a;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}.nesting-done{color:var(--green-ink);font-weight:700;font-size:var(--t-base)}.projects-block{margin:8px 0 4px}.projects-title{letter-spacing:-.02em;margin:0 0 6px;font-size:20px}.projects-hint{color:var(--text-soft);font-size:var(--t-sm);margin:0 0 16px}.projects-grid{gap:var(--gap-md);grid-template-columns:repeat(auto-fill,minmax(280px,1fr));display:grid}.all-projects .projects-block{margin:0 0 26px}.all-projects .projects-block+.projects-block{margin-top:8px}.projects-group-head{align-items:center;gap:var(--gap-md);border-left:4px solid var(--accent,var(--primary));flex-wrap:wrap;margin:0 0 12px;padding:12px 16px;display:flex}.projects-group-icon{font-size:24px;line-height:1}.projects-group-main{align-items:baseline;gap:var(--gap-sm);flex-wrap:wrap;flex:auto;min-width:0;display:flex}.projects-group-title{font-size:var(--t-h3);letter-spacing:-.02em;margin:0}.projects-group-link{font-size:var(--t-sm);color:var(--text-soft);border-radius:var(--radius-pill);border:1px solid var(--border);white-space:nowrap;transition:border-color var(--d-fast) var(--e-out), color var(--d-fast) var(--e-out), background var(--d-fast) var(--e-out);flex:none;padding:5px 11px;font-weight:600;text-decoration:none}.projects-group-link:hover{border-color:var(--violet);color:var(--violet-ink);background:var(--violet-pale)}.projects-link{align-items:center;gap:var(--gap-md);color:var(--text);border-left:4px solid var(--violet);transition:transform var(--d-fast) var(--e-out), box-shadow var(--d-fast) var(--e-out);padding:14px 18px;text-decoration:none;display:flex}.projects-link:hover{box-shadow:var(--sh-2);transform:translateY(-1px)}.projects-link-icon{flex:none;font-size:24px}.projects-link-text{gap:var(--gap-2xs);flex-direction:column;flex:auto;min-width:0;display:flex}.projects-link-text b{font-size:var(--t-md)}.projects-link-text span{font-size:var(--t-sm);color:var(--text-soft);line-height:1.45}.projects-link-cta{border:1px solid var(--border);background:var(--surface);flex:none}.projects-count{font-size:var(--t-xs);color:var(--text-soft);background:var(--bg);border:1px solid var(--border);border-radius:var(--radius-pill);white-space:nowrap;padding:2px 9px;font-weight:700}.projects-empty{color:var(--text-soft);font-size:var(--t-base);margin:24px 0}.project-card{color:var(--text);gap:var(--gap-sm);border-top:4px solid var(--violet);flex-direction:column;padding:20px;text-decoration:none;transition:transform .15s,box-shadow .15s;display:flex;position:relative}.project-card:hover{transform:translateY(-3px);box-shadow:0 8px 28px #1018281f}.project-card-icon{font-size:30px}.project-rank{min-width:22px;height:22px;font-family:var(--mono);font-size:var(--t-micro);font-variant-numeric:tabular-nums;color:var(--violet-ink);background:var(--violet-pale);border-radius:var(--radius-pill);place-items:center;padding:0 6px;font-weight:700;display:grid;position:absolute;top:14px;right:14px}.project-card h3{margin:0;font-size:16.5px;line-height:1.35}.project-card-outcome{font-size:var(--t-sm);color:var(--text-soft);-webkit-line-clamp:3;-webkit-box-orient:vertical;margin:0;line-height:1.55;display:-webkit-box;overflow:hidden}.project-card-outcome code{font-family:var(--mono);color:var(--violet-ink);background:0 0;border-radius:0;padding:0;font-size:.92em}.project-card-meta{align-items:center;gap:var(--gap-sm) var(--gap-md);font-size:var(--t-xs);color:var(--text-soft);flex-wrap:wrap;display:flex}.project-level{color:var(--violet-ink);background:var(--violet-pale);border-radius:var(--radius-pill);padding:2px 9px;font-weight:700}.project-card-skills{gap:var(--gap-xs);flex-wrap:wrap;margin-top:auto;padding-top:2px;display:flex}.project-card-skills code{font-family:var(--mono);font-size:var(--t-micro);background:var(--violet-pale);color:var(--violet-ink);border-radius:var(--radius-sm);padding:2px 7px}.projects-head{justify-content:space-between;align-items:flex-start;gap:var(--gap-lg);flex-wrap:wrap;display:flex}.view-toggle{border:1px solid var(--border);border-radius:var(--radius-pill);background:var(--surface);flex:none;padding:3px;display:inline-flex}.view-toggle button{align-items:center;gap:var(--gap-sm);cursor:pointer;border-radius:var(--radius-pill);font-family:var(--sans);font-size:var(--t-sm);color:var(--text-soft);transition:background var(--d-fast) var(--e-out), color var(--d-fast) var(--e-out);background:0 0;border:none;padding:5px 13px;font-weight:600;display:inline-flex}.view-toggle button:hover{color:var(--text)}.view-toggle button.active{background:var(--violet-pale);color:var(--violet-ink)}.projects-list{gap:var(--gap-sm);flex-direction:column;display:flex}.projects-list .project-card{column-gap:var(--gap-lg);row-gap:var(--gap-xs);border-top:none;border-left:4px solid var(--violet);grid-template-columns:40px minmax(0,1fr) minmax(0,230px);align-content:start;align-items:start;padding:14px 18px;display:grid}.projects-list .project-card:hover{transform:translateY(-1px)}.projects-list .project-card-icon{grid-area:1/1;font-size:26px;line-height:1.1}.projects-list .project-rank{grid-area:2/1;justify-self:center;position:static}.projects-list .project-card h3{grid-area:1/2;font-size:16px}.projects-list .project-card-outcome{-webkit-line-clamp:2;grid-area:2/2}.projects-list .project-card-meta{grid-area:3/2}.projects-list .project-card-skills{grid-area:1/3/span 3/4;align-content:start;margin-top:0;padding-top:3px}@media (width<=640px){.projects-list .project-card{grid-template-columns:minmax(0,1fr);padding:14px 16px}.projects-list .project-card>*{grid-area:auto!important}.projects-list .project-card-icon{font-size:22px}.projects-list .project-rank{position:absolute;top:12px;right:14px}.view-toggle{justify-content:center;width:100%}}.projects-nav{z-index:20;gap:var(--gap-sm);background:var(--bg);flex-wrap:wrap;margin:0 0 20px;padding:8px 0;display:flex;position:sticky;top:54px}.projects-nav a{align-items:center;gap:var(--gap-sm);border-radius:var(--radius-pill);border:1px solid var(--border);background:var(--surface);font-size:var(--t-sm);color:var(--text);transition:border-color var(--d-fast) var(--e-out), background var(--d-fast) var(--e-out), transform var(--d-fast) var(--e-out);padding:6px 13px;font-weight:600;text-decoration:none;display:inline-flex}.projects-nav a:hover{border-color:var(--violet);background:var(--violet-pale);transform:translateY(-1px)}.projects-nav b{font-variant-numeric:tabular-nums;color:var(--text-soft);font-weight:700}.all-projects .projects-block{scroll-margin-top:112px}@media (width<=640px){.projects-nav{scrollbar-width:none;-ms-overflow-style:none;flex-wrap:nowrap;margin-left:-12px;margin-right:-12px;padding:8px 12px;overflow-x:auto}.projects-nav::-webkit-scrollbar{display:none}.projects-nav a{white-space:nowrap;flex:none}}.project-page{gap:var(--gap-xl);flex-direction:column;display:flex}.project-hero{border-top:4px solid var(--violet);gap:var(--gap-md);flex-direction:column;padding:26px 28px;display:flex}.project-hero-top{gap:var(--gap-lg);align-items:flex-start;display:flex}.project-icon{font-size:40px}.project-hero h1{letter-spacing:-.02em;margin:0 0 6px;font-size:24px}.project-meta{gap:var(--gap-sm);font-size:var(--t-sm);color:var(--text-soft);align-items:center;display:flex}.project-scenario{font-size:var(--t-read-sm);max-width:68ch;margin:0;line-height:1.62}.project-outcome{background:var(--violet-pale);border-left:4px solid var(--violet);border-radius:0 var(--radius-md) var(--radius-md) 0;font-size:var(--t-read-sm);padding:12px max(16px,100% - 68ch - 20px) 12px 16px;line-height:1.62}.project-skills{gap:var(--gap-sm);flex-wrap:wrap;display:flex}.project-skills code{font-family:var(--mono);font-size:var(--t-xs);background:var(--violet-pale);color:var(--violet-ink);border-radius:var(--radius-sm);padding:3px 9px}.project-section{gap:var(--gap-md);flex-direction:column;display:flex}.project-section-head{justify-content:space-between;align-items:baseline;gap:var(--gap-md);display:flex}.project-section-head h2{letter-spacing:-.02em;margin:0;font-size:19px}.project-progress{font-size:var(--t-sm);color:var(--text-soft);font-weight:600}.project-section-hint{color:var(--text-soft);font-size:var(--t-sm);margin:0}.project-steps{gap:var(--gap-sm);flex-direction:column;margin:0;padding:0;list-style:none;display:flex}.project-step{gap:var(--gap-md);align-items:flex-start;padding:16px 18px;display:flex}.project-step.done{background:#f7fdf9;border-color:#cdebd8}.project-step-check{border-radius:var(--radius-md);cursor:pointer;border:2px solid var(--border);background:var(--surface);min-width:30px;height:30px;font-size:var(--t-sm);color:var(--text-soft);flex-shrink:0;place-items:center;font-weight:700;display:grid}.project-step.done .project-step-check{background:var(--green-solid);border-color:var(--green-solid);color:var(--ink-on-fill)}.project-step-body{flex:1;min-width:0}.project-step-title{font-weight:700;font-size:var(--t-md);margin-bottom:6px}.project-step-detail{font-size:var(--t-read-sm);max-width:68ch;line-height:1.62}.project-step-verify{font-size:var(--t-read-sm);color:#14532d;border-radius:var(--radius-md);background:#e9f7ee;margin-top:8px;padding:8px max(12px,100% - 68ch - 12px) 8px 12px;line-height:1.62}.decision{overflow:hidden}.decision-head{align-items:center;gap:var(--gap-md);cursor:pointer;text-align:left;background:0 0;border:none;width:100%;padding:16px 18px;display:flex}.decision-head:hover{background:var(--bg)}.decision-num{border-radius:var(--radius-md);background:var(--violet-pale);min-width:30px;height:30px;color:var(--violet-ink);font-weight:800;font-size:var(--t-xs);flex-shrink:0;place-items:center;display:grid}.decision-q{font-weight:700;font-size:var(--t-md);flex:1}.decision-count{font-size:var(--t-xs);color:var(--text-soft);white-space:nowrap}.decision-toggle{color:var(--text-soft);font-size:var(--t-micro)}.decision-body{padding:0 18px 18px}.decision-options{gap:var(--gap-md);flex-direction:column;display:flex}.decision-opt{border:1px solid var(--border);border-radius:var(--radius);gap:var(--gap-md) var(--gap-xl);background:var(--surface);grid-template-columns:1fr 1fr;align-content:start;padding:18px 20px;display:grid}.decision-opt.optimal{border-color:var(--green);background:#f7fdf9}.decision-opt-head{justify-content:space-between;align-items:center;gap:var(--gap-sm);grid-column:1/-1;display:flex}.decision-opt-name{font-weight:700;font-size:var(--t-md)}.decision-opt>.row-how,.decision-opt>.row-when{grid-column:1/-1}.decision-opt>.row-how .decision-text,.decision-opt>.row-when .decision-text{max-width:68ch}.decision-badge{font-size:var(--t-micro);background:var(--green-solid);color:var(--ink-on-fill);border-radius:var(--radius-pill);white-space:nowrap;padding:2px 9px;font-weight:800}.decision-row{gap:var(--gap-xs);flex-direction:column;display:flex}.decision-label{font-size:var(--t-micro);text-transform:uppercase;letter-spacing:.07em;color:var(--text-soft);font-weight:700}.decision-label.pro{color:var(--green-ink)}.decision-label.con{color:#b45309}.decision-text{font-size:var(--t-read-sm);overflow-wrap:break-word;line-height:1.62}.decision-text .markdown p{margin:0}.decision-text .markdown code{font-size:.86em}.decision-verdict{border-left:4px solid var(--amber);border-radius:0 var(--radius-md) var(--radius-md) 0;font-size:var(--t-read-sm);background:#fff8e6;margin-top:16px;padding:16px max(20px,100% - 68ch - 24px) 16px 20px;line-height:1.62}.project-pitfalls{gap:var(--gap-sm);flex-direction:column;margin:0;padding:18px 22px;list-style:none;display:flex}.project-pitfalls li{font-size:var(--t-read-sm);max-width:calc(68ch + 26px);padding-left:26px;line-height:1.62;position:relative}.project-pitfalls li:before{content:"⚠️";font-size:var(--t-sm);position:absolute;left:0}.project-portfolio{border-left:4px solid var(--violet);padding:22px 26px}.project-portfolio h3{font-size:var(--t-read);margin:0 0 10px}.project-portfolio .markdown{font-size:var(--t-read-sm);max-width:68ch;line-height:1.68}.project-scenario code,.project-outcome code,.project-step-title code,.project-step-verify code,.decision-q code,.decision-opt-name code,.decision-text code,.decision-verdict code,.project-pitfalls li code{font-family:var(--mono);border-radius:var(--radius-xs);color:#33415c;overflow-wrap:anywhere;-webkit-box-decoration-break:clone;box-decoration-break:clone;background:#f2f5f9;border:1px solid #e4e9f2;padding:1px 5px;font-size:.86em}.project-scenario strong,.project-outcome strong,.project-step-verify strong,.decision-text strong,.decision-verdict strong,.project-pitfalls li strong{font-weight:650}@media (width<=640px){.projects-link{flex-wrap:wrap}.projects-link-cta{margin-left:38px}.projects-group-link{margin-left:36px}.project-hero{padding:20px}.project-hero h1{font-size:20px}.decision-opt{grid-template-columns:1fr;padding:14px}.decision-opt .decision-text{max-width:none}.decision-body{padding:0 12px 14px}.decision-head{padding:14px 12px}}.aslab{gap:var(--gap-md);grid-template-columns:minmax(0,1fr) minmax(0,1fr);align-items:start;display:grid}.aslab-data{gap:var(--gap-md);flex-direction:column;padding:16px 18px;display:flex}.aslab-row-card{border-radius:var(--radius-md);background:#f0f7f2;border:1px solid #cbe6d3;padding:10px 14px}.aslab-row-title{font-size:var(--t-xs);color:#0f7b45;margin-bottom:8px;font-weight:700}.aslab-row-fields{gap:var(--gap-sm) var(--gap-md);flex-wrap:wrap;display:flex}.aslab-field{align-items:baseline;gap:var(--gap-sm);font-size:var(--t-sm);display:inline-flex}.aslab-field-name{font-family:var(--mono);font-size:var(--t-xs);color:#0f7b45;font-weight:700}.aslab-field-value{color:var(--text)}.aslab-table-name{font-size:var(--t-sm);color:var(--text);margin-bottom:6px;font-weight:700}.aslab-table-count{font-weight:600;font-size:var(--t-micro);color:var(--text-soft);margin-left:6px}.aslab-table-scroll{border:1px solid var(--border);border-radius:var(--radius-md);overflow-x:auto}.aslab-table table{border-collapse:collapse;width:100%;font-size:var(--t-xs)}.aslab-table th{color:#3c4043;text-align:left;border-bottom:1px solid var(--border);white-space:nowrap;font-size:var(--t-micro);text-transform:none;background:#f1f5fb;padding:6px 10px}.aslab-table td{white-space:nowrap;border-bottom:1px solid #eef1f5;padding:5px 10px}.aslab-table tr:last-child td{border-bottom:none}.aslab-table td.num{text-align:right;font-family:var(--mono);font-size:var(--t-xs)}.aslab-work{border-left:4px solid #3b6ef6;padding:18px 22px}.aslab-input{box-sizing:border-box;resize:vertical;width:100%;font-family:var(--mono);font-size:var(--t-sm);border:1.5px solid var(--border);border-radius:var(--radius-md);color:#e2e8f0;background:#0f172a;margin-bottom:8px;padding:10px 12px;line-height:1.5}.aslab-input:focus{border-color:#3b6ef6}.aslab-input::placeholder{color:#64748b}.aslab-live{font-family:var(--mono);font-size:var(--t-sm);border-radius:var(--radius-md);word-break:break-word;margin-bottom:10px;padding:8px 12px}.aslab-live.ok{color:#14532d;background:#e6f4ea}.aslab-live.err{color:#8a1c12;background:#fdeded}.aslab-live-label{font-family:inherit;font-weight:700;font-size:var(--t-micro);opacity:.75;margin-right:4px}.lklab{gap:var(--gap-md);flex-direction:column;display:flex}.lklab-tasks{border-left:4px solid #4285f4;padding:18px 22px}.lklab-studio{gap:var(--gap-md);grid-template-columns:minmax(0,1.5fr) minmax(0,1fr);align-items:start;display:grid}.lklab-canvas{padding:16px 18px}.lklab-canvas-title{font-size:var(--t-xs);color:var(--text-soft);margin-bottom:10px;font-weight:700}.lklab-svg{width:100%;height:auto;display:block}.lklab-svg-label{font-size:var(--t-micro);fill:#5f6368}.lklab-svg-value{font-size:var(--t-micro);fill:#202124;font-weight:600}.lklab-scorecard{text-align:center;padding:34px 10px}.lklab-scorecard-value{color:#202124;letter-spacing:-1px;font-size:44px;font-weight:800}.lklab-scorecard-label{font-size:var(--t-sm);color:var(--text-soft);margin-top:6px;font-weight:600}.lklab-table{border-collapse:collapse;width:100%;font-size:var(--t-sm)}.lklab-table th{text-align:left;border-bottom:2px solid var(--border);background:#f1f5fb;padding:7px 12px}.lklab-table td{border-bottom:1px solid #eef1f5;padding:6px 12px}.lklab-table td.num{text-align:right;font-family:var(--mono);font-size:var(--t-xs)}.lklab-panel{background:#fbfdff;padding:16px 18px}.lklab-panel-title{font-size:var(--t-xs);color:var(--text-soft);text-transform:uppercase;letter-spacing:.4px;margin-bottom:10px;font-weight:700}.lklab-field-label{font-size:var(--t-xs);color:#3c4043;margin:12px 0 6px;font-weight:700;display:block}.lklab-chart-grid{gap:var(--gap-sm);grid-template-columns:1fr 1fr;display:grid}.lklab-chart-btn{align-items:center;gap:var(--gap-sm);border:1.5px solid var(--border);background:var(--surface);border-radius:var(--radius-md);cursor:pointer;font-size:var(--t-xs);color:var(--text);padding:7px 10px;font-weight:600;display:flex}.lklab-chart-btn:hover{border-color:#a8c3f8}.lklab-chart-btn.active{color:#1a56c4;background:#e8f0fe;border-color:#4285f4}.lklab-chart-icon{font-size:var(--t-base)}.lklab-select{box-sizing:border-box;border:1.5px solid var(--border);border-radius:var(--radius-md);width:100%;font-size:var(--t-sm);background:var(--surface);color:var(--text);padding:7px 10px;font-family:inherit}.lklab-select:focus{border-color:#4285f4}.lklab-select.dim{border-left:5px solid #34a853}.lklab-select.met{border-left:5px solid #4285f4}.lklab-agg-row{gap:var(--gap-sm);flex-wrap:wrap;display:flex}.lklab-agg-btn{border:1.5px solid var(--border);background:var(--surface);border-radius:var(--radius-pill);cursor:pointer;font-size:var(--t-xs);color:var(--text-soft);padding:4px 12px;font-weight:700}.lklab-agg-btn:hover{border-color:#a8c3f8}.lklab-agg-btn.active{color:#1a56c4;background:#e8f0fe;border-color:#4285f4}@media (width<=900px){.aslab,.lklab-studio{grid-template-columns:1fr}}.lklab-source{margin-bottom:14px;padding:14px 16px}.aslab-table-name{align-items:center;gap:var(--gap-sm);flex-wrap:wrap;display:flex}.aslab-table-copy{margin-left:auto}.chat-fab{z-index:100;cursor:pointer;background:var(--grad-brand);width:56px;height:56px;color:var(--ink-on-fill);border:none;border-radius:50%;font-size:24px;transition:transform .15s;position:fixed;bottom:22px;right:22px;box-shadow:0 6px 20px #2563eb66}.chat-fab:hover{transform:scale(1.06)}.chat-fab.open{background:var(--text-soft)}.chat-panel{z-index:100;flex-direction:column;width:380px;max-width:calc(100vw - 24px);height:520px;max-height:calc(100vh - 120px);display:flex;position:fixed;bottom:88px;right:22px;overflow:hidden}.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);opacity:.85}.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-sm);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{font-size:var(--t-xs);color:var(--primary-dark);border-radius:var(--radius-md);background:#eef4ff;padding:6px 10px;font-weight:600;text-decoration:none}.chat-source:hover{background:#dce8ff}.chat-suggestions{gap:var(--gap-sm);flex-direction:column;margin-top:8px;display:flex}.chat-suggestions button{text-align:left;border:1px solid var(--border);background:var(--surface);cursor:pointer;border-radius:var(--radius-md);font-size:var(--t-sm);color:var(--text);padding:9px 12px}.chat-suggestions button:hover{border-color:var(--primary);background:#f6f9ff}.chat-input{gap:var(--gap-sm);border-top:1px solid var(--border);padding:12px;display:flex}.chat-input input{border:1px solid var(--border);border-radius:var(--radius-md);font-size:var(--t-sm);flex:1;padding:10px 12px}.chat-input input:focus{border-color:var(--primary)}.chat-input button{background:var(--primary);color:var(--ink-on-fill);border-radius:var(--radius-md);cursor:pointer;width:40px;font-size:var(--t-md);border:none}.chat-input button:disabled{opacity:.5}.modal-backdrop{z-index:95;animation:modal-fade var(--d-fast) var(--e-out);background:#0f172a73;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}@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}}.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{color:var(--green-ink);background:#e6f4ea}.module-tag.lock{color:#5f6368;background:#f1f3f4}.lesson-row.locked{opacity:.62}.lesson-row.locked:hover{opacity:.85;background:#fff8e6}.paywall{text-align:center;border-top:4px solid var(--accent,var(--primary));max-width:560px;margin:0 auto;padding:32px}.paywall.compact{text-align:left;align-items:center;gap:var(--gap-lg);grid-template-columns:auto 1fr auto;max-width:none;padding:22px 26px;display:grid}.paywall-lock{font-size:40px}.paywall.compact .paywall-lock{font-size:32px}.paywall h2{font-size:var(--t-h2);margin:12px 0 6px}.paywall.compact h2{font-size:var(--t-h3);grid-column:2;margin:0}.paywall-sub{color:var(--text-soft);margin:0 0 18px;font-size:14px}.paywall.compact .paywall-sub{display:none}.paywall-benefits{gap:var(--gap-sm);text-align:left;flex-direction:column;margin:0 auto 20px;padding:0;font-size:14px;list-style:none;display:inline-flex}.paywall.compact .paywall-benefits{display:none}.paywall-benefits li{color:var(--text)}.paywall-price{justify-content:center;align-items:baseline;gap:var(--gap-sm);margin-bottom:18px;display:flex}.paywall.compact .paywall-price{flex-direction:column;grid-area:1/3;align-items:flex-end;gap:0;margin:0}.paywall-amount{color:var(--text);font-size:30px;font-weight:800}.paywall.compact .paywall-amount{font-size:var(--t-h2)}.paywall-currency{font-size:var(--t-md);color:var(--text-soft);font-weight:600}.paywall-buy{font-size:var(--t-md);padding:12px 28px}.paywall.compact .paywall-buy{font-size:var(--t-sm);grid-area:2/3;padding:9px 18px}.paywall-note{font-size:var(--t-xs);color:var(--text-soft);margin:14px 0 0}.paywall.compact .paywall-note{display:none}@media (width<=640px){.paywall.compact{grid-template-columns:1fr auto}.paywall.compact .paywall-lock{display:none}}.cert-link{align-self:flex-start}.cert-page{max-width:860px;margin:0 auto}.cert-actions{justify-content:space-between;margin-bottom:18px;display:flex}.cert-incomplete{text-align:center;gap:var(--gap-md);flex-direction:column;align-items:center;padding:40px;display:flex}.cert-incomplete .progress-bar{width:100%;max-width:420px}.cert-progress-text{color:var(--text-soft);font-size:var(--t-base);margin:0}.certificate{border-radius:var(--radius-sm);background:#fff;box-shadow:0 10px 40px #10182826}.cert-border{text-align:center;background:radial-gradient(circle at 8% 10%,#b8860b0f,#0000 30%),radial-gradient(circle at 92% 90%,#2563eb0d,#0000 30%);border:3px double #b8860b;margin:14px;padding:48px 40px 28px;position:relative}.cert-logo{background:var(--grad-brand);color:#fff;border-radius:var(--radius);place-items:center;width:54px;height:54px;margin:0 auto 6px;font-size:26px;font-weight:800;display:grid}.cert-brand{letter-spacing:.18em;color:#5b6779;text-transform:uppercase;font-size:13px;font-weight:700}.cert-heading{letter-spacing:.28em;color:#b8860b;margin:22px 0 4px;font-size:34px;font-weight:800}.cert-name{margin:22px 0 6px;font-size:32px;font-style:italic;font-weight:700}.cert-text{color:#5b6779;font-size:15px}.cert-course{margin:12px 0 4px;font-size:22px;font-weight:800}.cert-meta{color:#5b6779;margin-bottom:34px;font-size:14px}.cert-footer{justify-content:space-between;align-items:flex-end;margin-top:20px;display:flex}.cert-date{color:#5b6779;font-size:14px}.cert-sign{color:#5b6779;text-align:center;font-size:13px}.cert-sign-line{border-top:1.5px solid #99a3b1;width:170px;margin-bottom:6px}.cert-id{color:#aab3bf;font-size:10.5px;font-family:var(--mono);position:absolute;bottom:8px;right:14px}@media print{.topbar,.cert-actions,.chat-fab,.chat-panel{display:none!important}.main{max-width:none;padding:0}.certificate{box-shadow:none}body{background:#fff}}.legal-page{gap:var(--gap-xl);align-items:flex-start;display:flex}.legal-nav{gap:var(--gap-xs);flex-direction:column;flex-shrink:0;min-width:180px;display:flex;position:sticky;top:76px}.legal-nav a{border-radius:var(--radius-md);font-size:var(--t-sm);color:var(--text-soft);padding:8px 12px;font-weight:600;text-decoration:none}.legal-nav a.active{background:var(--surface);color:var(--primary);box-shadow:var(--shadow)}.legal-nav a:hover:not(.active){background:var(--bg)}.legal-doc{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);flex:1;min-width:0;max-width:644px;padding:32px 36px 40px}.legal-doc h1{font-size:var(--t-h2);letter-spacing:-.02em;margin:0 0 24px;font-weight:800}.legal-section{margin-bottom:22px}.legal-section h2{font-size:var(--t-md);color:var(--text);margin:0 0 8px;font-weight:700}.legal-section p{color:var(--text-soft);margin:0 0 8px;font-size:14px;line-height:1.7}.site-footer{border-top:1px solid var(--border);justify-content:center;align-items:center;gap:var(--gap-xl);font-size:var(--t-sm);color:var(--text-soft);flex-wrap:wrap;padding:18px 28px;display:flex}.site-footer a{color:var(--text-soft);text-decoration:none}.site-footer a:hover{color:var(--primary)}@media (width<=720px){.legal-page{flex-direction:column}.legal-nav{flex-flow:wrap;position:static}.legal-doc{padding:22px 18px 30px}}.streak-chip{align-items:center;gap:var(--gap-xs);border-radius:var(--radius-pill);font-size:var(--t-sm);color:#b45309;white-space:nowrap;background:#fff4e0;border:1px solid #fde2b3;padding:5px 11px;font-weight:700;display:inline-flex}.streak-chip.at-risk{background:var(--bg);color:var(--text-soft);border-color:var(--border);animation:2.6s ease-in-out infinite streak-nudge}@keyframes streak-nudge{0%,to{transform:scale(1)}50%{transform:scale(1.06)}}.level-chip{align-items:center;gap:var(--gap-xs);border-radius:var(--radius-pill);font-size:var(--t-sm);color:var(--primary);white-space:nowrap;background:#e8f0fe;border:1px solid #d3e2fd;padding:5px 11px;font-weight:700;display:inline-flex}.celebrate-backdrop{z-index:90;background:#0f172a73;place-items:center;padding:20px;animation:.18s ease-out celebrate-fade;display:grid;position:fixed;inset:0}@keyframes celebrate-fade{0%{opacity:0}to{opacity:1}}.celebrate-card{text-align:center;outline:none;width:min(440px,100%);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{color:#14532d;background:#e6f4ea;animation:.5s cubic-bezier(.34,1.56,.64,1) .15s backwards chip-land}.celebrate-chip.streak{color:#b45309;background:#fff4e0}.celebrate-chip.streak.grew{animation:.5s cubic-bezier(.34,1.56,.64,1) .3s backwards chip-land}.celebrate-chip.almost{color:var(--primary);background:#e8f0fe}@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, #eef4ff, var(--violet-pale));flex-direction:column;margin-bottom:10px;padding:14px 18px;text-decoration:none;transition:transform .15s,box-shadow .15s;display:flex}.celebrate-next-card:hover{transform:translateY(-2px);box-shadow:0 8px 22px #2563eb2e}.celebrate-next-label{font-size:var(--t-micro);letter-spacing:.06em;text-transform:uppercase;color:var(--primary);font-weight:800}.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)}.celebrate-next-hook{font-size:var(--t-sm);color:#33415c;margin:2px 0;line-height:1.5}.ach-block{margin:26px 0 8px}.ach-head{justify-content:space-between;align-items:baseline;gap:var(--gap-md);margin-bottom:12px;display:flex}.ach-title{letter-spacing:-.02em;margin:0;font-size:19px}.ach-count{font-size:var(--t-sm);color:var(--text-soft);font-weight:700}.ach-grid{gap:var(--gap-sm);grid-template-columns:repeat(auto-fill,minmax(150px,1fr));display:grid}.ach-item{align-items:center;gap:var(--gap-xs);border-radius:var(--radius);border:1.5px solid var(--border);background:var(--surface);text-align:center;flex-direction:column;padding:16px 12px;transition:transform .15s,box-shadow .15s;display:flex}.ach-item.earned{border-color:var(--amber);background:linear-gradient(160deg, #fffaf0, var(--surface))}.ach-item.earned:hover{box-shadow:var(--shadow);transform:translateY(-2px)}.ach-item.locked{opacity:.55}.ach-item.locked .ach-icon{filter:grayscale()}.ach-icon{font-size:30px;line-height:1}.ach-name{font-size:var(--t-sm);color:var(--text);font-weight:700}.ach-hint{font-size:var(--t-micro);color:var(--text-soft);line-height:1.35}.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,#fff8e8,#fffdf7);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:#b45309;font-size:10.5px;font-weight:800}.celebrate-badge-title{font-size:var(--t-base);color:var(--text);font-weight:700}.recall-box{border-radius:var(--radius);background:#f4f8ff;border:1px solid #d3e2fd;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:800}.hook-box{border-radius:var(--radius);border:1.5px dashed var(--primary);background:linear-gradient(135deg,#eef4ff,#f7f3ff);margin:30px 0 4px;padding:16px 20px;text-decoration:none;transition:transform .15s,box-shadow .15s,border-style .15s;display:block}.hook-box:hover{border-style:solid;transform:translateY(-2px);box-shadow:0 8px 22px #2563eb26}.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:800}.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)}}.continue-bar{align-items:center;gap:var(--gap-md);border-radius:var(--radius);border:1.5px solid var(--primary);background:linear-gradient(135deg, #eef4ff, var(--violet-pale));padding:14px 18px;text-decoration:none;transition:transform .15s,box-shadow .15s;display:flex}.continue-bar:hover{transform:translateY(-2px);box-shadow:0 8px 22px #2563eb29}.continue-bar-icon{font-size:26px}.continue-bar-text{gap:var(--gap-2xs);flex-direction:column;min-width:0;display:flex}.continue-bar-label{font-size:var(--t-micro);letter-spacing:.06em;text-transform:uppercase;color:var(--primary);font-weight:800}.continue-bar-title{font-size:var(--t-md);color:var(--text);white-space:nowrap;text-overflow:ellipsis;font-weight:700;overflow:hidden}.continue-bar-cta{flex-shrink:0;margin-left:auto}@media (width<=560px){.celebrate-card{padding:26px 18px 18px}.streak-chip,.level-chip{font-size:var(--t-xs);padding:4px 9px}.continue-bar{flex-wrap:wrap}.continue-bar-cta{width:100%;margin-left:0}}.cases{gap:var(--gap-lg);flex-direction:column;display:flex}.cases-intro{border-radius:var(--radius);font-size:var(--t-base);color:var(--text);background:#f4f8ff;border:1px solid #d3e2fd;margin:0;padding:14px 18px;line-height:1.6}.case-card{padding:24px 28px;transition:box-shadow .2s}.case-card.open{box-shadow:0 4px 20px #2563eb1a}.case-head{align-items:center;gap:var(--gap-md);margin-bottom:18px;display:flex}.case-num{background:var(--primary);min-width:28px;height:28px;color:var(--ink-on-fill);border-radius:var(--radius-md);font-size:var(--t-sm);flex-shrink:0;place-items:center;font-weight:700;display:grid}.case-title{letter-spacing:-.01em;margin:0;font-size:16.5px}.case-block{gap:var(--gap-sm);grid-template-columns:minmax(0,1fr);margin-bottom:20px;display:grid}.case-block .markdown,.case-rule .markdown{font-size:var(--t-read-sm);max-width:68ch;line-height:1.68}.case-label{align-items:center;gap:var(--gap-sm);font-size:var(--t-micro);letter-spacing:.08em;text-transform:uppercase;font-weight:700;display:flex}.case-label:before{content:"";border-radius:var(--radius-xs);background:currentColor;flex-shrink:0;width:16px;height:2px}.case-label.situation{color:#64748b}.case-label.symptom{color:var(--red-ink)}.case-label.analysis{color:var(--primary)}.case-label.fix{color:var(--green-ink)}.case-label.rule{color:var(--amber-ink)}.case-think{border-radius:var(--radius);text-align:center;background:#f7f9ff;border:1.5px dashed #c7d7f7;margin-top:18px;padding:18px}.case-think-q{color:var(--text-soft);margin:0 0 12px;font-size:14px;font-weight:600}.case-reveal{animation:.3s ease-out case-open}@keyframes case-open{0%{opacity:0;transform:translateY(-6px)}to{opacity:1;transform:translateY(0)}}.case-rule{border-radius:var(--radius);border-left:4px solid var(--amber);background:#f4b40014;margin-top:4px;padding:16px 20px}.cases-progress{text-align:center;font-size:var(--t-sm);color:var(--text-soft);margin:4px 0 0;font-weight:700}@media (width<=560px){.case-card{padding:18px 16px}.case-title{font-size:var(--t-md)}.case-block .markdown,.case-rule .markdown{font-size:calc(var(--t-read-sm) - .5px)}}.onb-backdrop{z-index:95;background:#0f172a80;place-items:center;padding:20px;animation:.2s ease-out celebrate-fade;display:grid;position:fixed;inset:0}.onb-card{text-align:center;width:min(460px,100%);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);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}.onb-option:hover{border-color:var(--primary);transform:translateY(-1px);box-shadow:0 6px 16px #2563eb1f}.onb-option.sel{border-color:var(--primary);background:#eef4ff}.onb-option.pace{justify-content:center}.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;font-size:var(--t-xs);color:var(--text-soft);background:0 0;border:none;font-weight:600;position:absolute;top:14px;right:16px}.onb-skip:hover{color:var(--text)}.risk-bar{align-items:center;gap:var(--gap-md);border-radius:var(--radius);background:linear-gradient(135deg,#fff8ec,#fffdf8);border:1.5px solid #fde2b3;margin-bottom:18px;padding:13px 18px;display:flex}.risk-flame{font-size:24px;line-height:1;animation:2.6s ease-in-out infinite streak-nudge}.risk-text{gap:var(--gap-2xs);flex-direction:column;min-width:0;display:flex}.risk-text strong{font-size:var(--t-base);color:#92400e}.risk-text span{font-size:var(--t-sm);color:var(--text-soft)}.risk-cta{flex-shrink:0;margin-left:auto}@media (width<=560px){.onb-card{padding:24px 18px 16px}.risk-bar{flex-wrap:wrap}.risk-cta{width:100%;margin-left:0}}.landing{--lp-blueprint:#0e2a47;--lp-blueprint-2:#123156;--lp-paper:#f7f5ef;--lp-paper-2:#efece3;--lp-ink:#12181f;--lp-ink-soft:#4a5568;--lp-signal:#ff6b35;--lp-signal-ink:#c23400;--lp-wire:#2ec4b6;--lp-wire-ink:#1b746b;--lp-grid:#c7d2e0;--lp-grid-on-dark:#c7d2e029;--lp-display:"Space Grotesk", "IBM Plex Sans", -apple-system, sans-serif;--lp-mono:"IBM Plex Mono", "SF Mono", monospace;background:var(--lp-paper);color:var(--lp-ink);margin:-24px -20px;font-family:IBM Plex Sans,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;line-height:1.5}.landing a{color:inherit;text-decoration:none}.landing p,.landing li{text-wrap:pretty}.landing .lp-wrap{max-width:1120px;margin:0 auto;padding:0 28px}.landing .lp-eyebrow{font-family:var(--lp-mono);letter-spacing:.14em;text-transform:uppercase;color:var(--lp-signal-ink);align-items:center;gap:10px;margin-bottom:18px;font-size:12.5px;display:flex}.landing .lp-eyebrow:before{content:"";background:currentColor;width:22px;height:1px;display:inline-block}.landing .lp-hero{background:var(--lp-blueprint);color:var(--lp-paper);background-image:linear-gradient(var(--lp-grid-on-dark) 1px, transparent 1px), linear-gradient(90deg, var(--lp-grid-on-dark) 1px, transparent 1px);background-size:44px 44px;padding:92px 0 90px;position:relative;overflow:hidden}.landing .lp-hero:after{content:"";pointer-events:none;background:radial-gradient(60% 50% at 50% 0,#ff6b351a,#0000 70%);position:absolute;inset:0}.landing .lp-hero-grid{z-index:2;grid-template-columns:1.1fr .9fr;align-items:center;gap:50px;display:grid;position:relative}.landing .lp-hero h1{font-family:var(--lp-display);letter-spacing:-.01em;margin:0 0 24px;font-size:clamp(2.2rem,5vw,3.6rem);font-weight:700;line-height:1.08}.landing .lp-hero .lp-eyebrow{color:var(--lp-signal)}.landing .lp-hero h1 em{color:var(--lp-signal);font-style:normal}.landing .lp-hero .lp-lead{color:#c7d2e0;max-width:520px;margin:0 0 36px;font-size:17px}.landing .lp-ctas{flex-wrap:wrap;gap:14px;display:flex}.landing .lp-btn-primary{background:var(--lp-signal);color:var(--lp-blueprint);border-radius:2px;padding:15px 28px;font-size:15px;font-weight:600;transition:transform .15s,box-shadow .15s;display:inline-block;box-shadow:0 0 0 1px #ff6b354d}.landing .lp-btn-primary:hover{transform:translateY(-2px);box-shadow:0 8px 20px #ff6b3540}.landing .lp-btn-ghost{color:var(--lp-paper);font-family:var(--lp-mono);border:1px solid #f7f5ef4d;border-radius:2px;padding:14px 24px;font-size:14px}.landing .lp-btn-ghost:hover{border-color:var(--lp-paper)}.landing .lp-schematic{width:100%;height:auto}.landing .lp-node-box{fill:#f7f5ef0a;stroke:#c7d2e080;stroke-width:1px}.landing .lp-node-label{fill:#f7f5ef;letter-spacing:.04em;font-family:IBM Plex Mono,monospace;font-size:11px}.landing .lp-node-sub{fill:#8fa0be;font-family:IBM Plex Sans,sans-serif;font-size:9.5px}.landing .lp-wire-path{fill:none;stroke:var(--lp-wire);stroke-width:1.5px;stroke-dasharray:4 5;opacity:.7}.landing .lp-flow-dot{fill:var(--lp-signal)}.landing .lp-fig-tag{fill:#7f93b8;letter-spacing:.06em;font-family:IBM Plex Mono,monospace;font-size:9.5px}.landing .lp-section{padding:96px 0}.landing .lp-section-head{max-width:640px;margin-bottom:52px}.landing .lp-section-head h2{font-family:var(--lp-display);letter-spacing:-.01em;margin:0;font-size:clamp(1.7rem,3.2vw,2.4rem);font-weight:600;line-height:1.18}.landing .lp-section-head p{color:var(--lp-ink-soft);margin:16px 0 0;font-size:16px}.landing .lp-problem-grid{background:var(--lp-grid);border:1px solid var(--lp-grid);grid-template-columns:repeat(3,1fr);gap:1px;display:grid}.landing .lp-problem-card{background:var(--lp-paper);padding:32px 28px}.landing .lp-problem-card .lp-tag{font-family:var(--lp-mono);color:var(--lp-signal-ink);letter-spacing:.06em;margin-bottom:14px;font-size:11px;display:block}.landing .lp-problem-card h3{font-family:var(--lp-display);margin:0 0 10px;font-size:19px;font-weight:600}.landing .lp-problem-card p{color:var(--lp-ink-soft);margin:0;font-size:14.5px}.landing .lp-stats-strip{background:var(--lp-paper-2);border-top:1px solid var(--lp-grid);border-bottom:1px solid var(--lp-grid);padding:56px 0}.landing .lp-stats-row{grid-template-columns:repeat(4,1fr);gap:24px;display:grid}.landing .lp-stat{padding-left:18px;position:relative}.landing .lp-stat:before{content:"";background:var(--lp-signal);width:1px;position:absolute;top:2px;bottom:8px;left:0}.landing .lp-stat .lp-num{font-family:var(--lp-display);color:var(--lp-blueprint);font-size:2.1rem;font-weight:700}.landing .lp-stat .lp-label{font-family:var(--lp-mono);color:var(--lp-ink-soft);letter-spacing:.03em;margin-top:6px;font-size:11.5px}.landing .lp-module{border-top:1px solid var(--lp-grid);grid-template-columns:64px 1fr 1fr;align-items:start;gap:32px;padding:44px 0;display:grid}.landing .lp-module:last-child{border-bottom:1px solid var(--lp-grid)}.landing .lp-module-num{font-family:var(--lp-mono);color:var(--lp-signal-ink);padding-top:4px;font-size:13px}.landing .lp-module-body h3{font-family:var(--lp-display);margin:0 0 6px;font-size:1.5rem;font-weight:600}.landing .lp-module-body .lp-role{font-family:var(--lp-mono);color:var(--lp-wire-ink);margin-bottom:16px;font-size:12px;display:block}.landing .lp-module-body .lp-desc{color:var(--lp-ink-soft);max-width:480px;margin:0 0 20px;font-size:15px}.landing .lp-module-body .lp-meta{font-family:var(--lp-mono);color:var(--lp-ink-soft);margin-bottom:18px;font-size:12px}.landing .lp-module-body .lp-meta b{color:var(--lp-blueprint)}.landing .lp-tier-toggle{flex-wrap:wrap;gap:8px;margin-bottom:18px;display:flex}.landing .lp-tier-btn{font-family:var(--lp-mono);border:1px solid var(--lp-grid);cursor:pointer;color:var(--lp-ink-soft);background:0 0;border-radius:2px;padding:7px 14px;font-size:12px}.landing .lp-tier-btn.active{background:var(--lp-blueprint);color:var(--lp-paper);border-color:var(--lp-blueprint)}.landing .lp-tier-content ul{margin:0;padding:0;list-style:none}.landing .lp-tier-content li{color:var(--lp-ink);border-bottom:1px dashed var(--lp-grid);padding:8px 0 8px 20px;font-size:14px;position:relative}.landing .lp-tier-content li:before{content:"—";color:var(--lp-signal-ink);position:absolute;left:0}.landing .lp-module-visual{background:var(--lp-paper-2);border:1px solid var(--lp-grid);font-family:var(--lp-mono);color:var(--lp-ink-soft);border-radius:4px;min-height:180px;padding:20px;font-size:11.5px}.landing .lp-module-visual .lp-fig{color:var(--lp-signal-ink);margin-bottom:10px;font-size:10px;display:block}.landing .lp-module-visual .lp-practice-tag{color:var(--lp-wire-ink)}.landing .lp-philosophy{background:var(--lp-blueprint);color:var(--lp-paper)}.landing .lp-phil-grid{grid-template-columns:1fr 1fr;align-items:center;gap:60px;display:grid}.landing .lp-phil-grid h2{font-family:var(--lp-display);margin:0 0 20px;font-size:clamp(1.7rem,3vw,2.3rem);font-weight:600;line-height:1.2}.landing .lp-phil-grid p{color:#b9c6dc;margin:0 0 16px;font-size:15.5px}.landing .lp-phil-list{margin:0;padding:0;list-style:none}.landing .lp-phil-list li{border-bottom:1px solid #c7d2e026;gap:16px;padding:20px 0;display:flex}.landing .lp-phil-list .lp-idx{font-family:var(--lp-mono);color:var(--lp-signal);min-width:28px;font-size:13px}.landing .lp-phil-list .lp-txt strong{font-family:var(--lp-display);margin-bottom:4px;font-size:16px;display:block}.landing .lp-phil-list .lp-txt span{color:#9fb0cc;font-size:13.5px}.landing .lp-capstone-box{border:1px solid var(--lp-grid);background:var(--lp-paper-2);padding:48px;position:relative}.landing .lp-capstone-box:before{content:attr(data-fig);background:var(--lp-paper);font-family:var(--lp-mono);color:var(--lp-signal-ink);letter-spacing:.05em;padding:4px 10px;font-size:10.5px;position:absolute;top:-1px;left:32px;transform:translateY(-50%)}.landing .lp-capstone-scenario{color:var(--lp-ink-soft);margin-bottom:8px;font-size:15px}.landing .lp-capstone-flow{font-family:var(--lp-mono);flex-wrap:wrap;align-items:center;gap:10px;margin:28px 0;font-size:13px;display:flex}.landing .lp-capstone-flow .lp-step{background:var(--lp-paper);border:1px solid var(--lp-grid);border-radius:2px;padding:10px 16px}.landing .lp-capstone-flow .lp-arrow{color:var(--lp-signal-ink)}.landing .lp-final-cta{background:var(--lp-ink);color:var(--lp-paper);text-align:center;padding:104px 0}.landing .lp-final-cta h2{font-family:var(--lp-display);letter-spacing:-.01em;margin:0 0 20px;font-size:clamp(2rem,4.5vw,3rem);font-weight:700}.landing .lp-final-cta p{color:#a8b3c4;max-width:480px;margin:0 auto 36px;font-size:16px}.landing .lp-reveal{opacity:0;transition:opacity .6s,transform .6s;transform:translateY(18px)}.landing .lp-reveal.lp-in{opacity:1;transform:translateY(0)}@media (width<=900px){.landing .lp-hero-grid{grid-template-columns:1fr}}@media (width<=850px){.landing .lp-phil-grid{grid-template-columns:1fr}}@media (width<=800px){.landing .lp-problem-grid{grid-template-columns:1fr}.landing .lp-stats-row{grid-template-columns:repeat(2,1fr)}.landing .lp-module{grid-template-columns:44px 1fr}.landing .lp-module-visual{display:none}}@media (width<=700px){.landing .lp-capstone-box{padding:32px 22px}}@media (prefers-reduced-motion:reduce){.landing .lp-reveal{opacity:1;transition:none;transform:none}.landing .lp-wire-path,.landing .lp-flow-dot{animation:none!important}.landing .lp-schematic animate,.landing .lp-schematic animateMotion{display:none}}.syspipe{--sp-navy:#0e2a47;--sp-signal:#ff6b35;--sp-wire:#2ec4b6;--sp-grid:#c7d2e029;--sp-mono:"IBM Plex Mono", "SF Mono", monospace;--sp-ink:#f7f5ef;--sp-ink-soft:#9fb0cc;--sp-ink-dim:#7186a5;background:var(--sp-navy);background-image:linear-gradient(var(--sp-grid) 1px, transparent 1px), linear-gradient(90deg, var(--sp-grid) 1px, transparent 1px);border-radius:var(--radius);color:var(--sp-ink);background-size:32px 32px;margin:24px 0;padding:28px 28px 32px;position:relative;overflow:hidden}.syspipe-head{margin-bottom:22px}.syspipe-eyebrow{font-family:var(--sp-mono);letter-spacing:.12em;text-transform:uppercase;color:var(--sp-signal);align-items:center;gap:var(--gap-sm);font-size:11px;display:flex}.syspipe-eyebrow:before{content:"";background:var(--sp-signal);width:18px;height:1px}.syspipe-head h2{color:var(--sp-ink);letter-spacing:-.01em;margin:10px 0 2px;font-size:20px;font-weight:700}.syspipe-head p{font-size:var(--t-sm);color:var(--sp-ink-soft);margin:0}.syspipe-flow{align-items:stretch;gap:var(--gap-sm);grid-template-columns:1fr auto 1fr auto 1fr;display:grid}.syspipe-node{color:inherit;border-radius:var(--radius-md);background:#f7f5ef0a;border:1px solid #c7d2e038;padding:16px 16px 14px;text-decoration:none;transition:transform .15s,border-color .15s,background .15s;display:block}.syspipe-node:hover{border-color:#f7f5ef8c;transform:translateY(-2px)}.syspipe-node-top{align-items:center;gap:var(--gap-sm);margin-bottom:12px;display:flex}.syspipe-node-icon{font-size:var(--t-h3);line-height:1}.syspipe-node-name{font-family:var(--sp-mono);font-size:var(--t-xs);letter-spacing:.04em;color:var(--sp-ink)}.syspipe-node-role{font-family:var(--sp-mono);color:var(--sp-ink-soft);text-transform:uppercase;letter-spacing:.06em;font-size:9.5px}.syspipe-pct{margin-bottom:8px;font-size:26px;font-weight:700;line-height:1}.syspipe-count{font-family:var(--sp-mono);color:var(--sp-ink-soft);margin-left:6px;font-size:10.5px;font-weight:400}.syspipe-track{border-radius:var(--radius-xs);background:#c7d2e02e;height:4px;margin-bottom:10px;overflow:hidden}.syspipe-fill{border-radius:var(--radius-xs);height:100%;transition:width .5s}.syspipe-status{align-items:center;gap:var(--gap-xs);font-family:var(--sp-mono);letter-spacing:.03em;border-radius:var(--radius-xs);padding:3px 8px;font-size:10.5px;display:inline-flex}.syspipe-node.done .syspipe-pct{color:var(--sp-wire)}.syspipe-node.done .syspipe-fill{background:var(--sp-wire)}.syspipe-node.done .syspipe-status{color:var(--sp-wire);background:#2ec4b629}.syspipe-node.active{background:#ff6b350f;border-color:#ff6b3580}.syspipe-node.active .syspipe-pct{color:var(--sp-signal)}.syspipe-node.active .syspipe-fill{background:var(--sp-signal)}.syspipe-node.active .syspipe-status{color:var(--sp-signal);background:#ff6b3529}.syspipe-node.locked{opacity:.62}.syspipe-node.locked .syspipe-pct{color:var(--sp-ink-dim)}.syspipe-node.locked .syspipe-fill{background:var(--sp-ink-dim)}.syspipe-node.locked .syspipe-status{color:var(--sp-ink-soft);background:#c7d2e01a}.syspipe-wire{justify-content:center;align-items:center;min-width:34px;display:flex}.syspipe-wire svg{width:100%;height:24px;overflow:visible}.syspipe-wire-line{stroke:#c7d2e04d;stroke-width:1.5px;stroke-dasharray:4 4;fill:none}.syspipe-wire.flowing .syspipe-wire-line{stroke:var(--sp-wire);opacity:.75}.syspipe-wire-dot{fill:var(--sp-signal)}@media (width<=760px){.syspipe-flow{grid-template-columns:1fr}.syspipe-wire{min-width:0;height:22px;position:relative}.syspipe-wire svg{display:none}.syspipe-wire:before{content:"";border-left:1.5px dashed #c7d2e04d;width:0;height:100%}.syspipe-wire.flowing:before{border-left-color:var(--sp-wire);opacity:.75}}@media (prefers-reduced-motion:reduce){.syspipe-wire-dot animateMotion,.syspipe-wire-dot{display:none}}.adm-page{gap:var(--gap-xl);flex-direction:column;display:flex}.adm-head{gap:var(--gap-xs);flex-direction:column;display:flex}.adm-title{font-size:var(--t-h1);margin:0}.adm-sub{color:var(--text-soft);font-size:var(--t-sm);margin:0}.adm-back{color:var(--text-soft);font-size:var(--t-sm);transition:color var(--d-fast) var(--e-out);align-self:flex-start;font-weight:600;text-decoration:none}.adm-back:hover{color:var(--primary)}.adm-tabs{gap:var(--gap-2xs);background:var(--bg);border:1px solid var(--border);border-radius:var(--radius-md);align-self:flex-start;max-width:100%;padding:3px;display:flex;overflow-x:auto}.adm-tab{cursor:pointer;border-radius:var(--radius-sm);white-space:nowrap;font-family:var(--sans);font-size:var(--t-sm);color:var(--text-soft);transition:background var(--d-fast) var(--e-out), color var(--d-fast) var(--e-out);background:0 0;border:none;padding:7px 16px;font-weight:600}.adm-tab.active{background:var(--surface);color:var(--text);box-shadow:var(--sh-1)}.adm-tab:not(.active):hover{color:var(--text)}.adm-stats{gap:var(--gap-md);grid-template-columns:repeat(auto-fit,minmax(148px,1fr));display:grid}.adm-stat{gap:var(--gap-xs);flex-direction:column;padding:18px 20px;display:flex}.adm-stat-n{font-family:var(--serif);font-size:var(--t-h1);letter-spacing:-.02em;font-variant-numeric:tabular-nums;font-weight:700;line-height:1.1}.adm-stat-label{font-size:var(--t-xs);color:var(--text-soft)}.adm-card{gap:var(--gap-md);flex-direction:column;padding:20px;display:flex}.adm-card-head{justify-content:space-between;align-items:baseline;gap:var(--gap-md);flex-wrap:wrap;display:flex}.adm-card-title{font-size:var(--t-h3);margin:0}.adm-count{font-size:var(--t-xs);color:var(--text-soft);font-variant-numeric:tabular-nums}.adm-hint,.adm-empty{font-size:var(--t-sm);color:var(--text-soft);margin:0}.adm-msg{border-radius:var(--radius-md);font-size:var(--t-sm);margin:0;padding:10px 14px}.adm-msg.bad{color:var(--red-ink);background:#fadcda}.adm-search{border:1px solid var(--border);border-radius:var(--radius-md);background:var(--surface);color:var(--text);font-family:var(--sans);font-size:var(--t-base);transition:border-color var(--d-fast) var(--e-out);padding:10px 14px}.adm-search:focus{border-color:var(--primary)}.adm-table-wrap{border:1px solid var(--border);border-radius:var(--radius-md);overflow-x:auto}.adm-table-tall{max-height:420px;overflow-y:auto}.adm-table{border-collapse:collapse;width:100%;font-size:var(--t-sm);color:var(--text)}.adm-table th,.adm-table td{text-align:left;vertical-align:top;border-bottom:1px solid var(--border);padding:10px 14px}.adm-table thead th{z-index:1;background:var(--bg);color:var(--text-soft);font-size:var(--t-xs);white-space:nowrap;font-weight:700;position:sticky;top:0}.adm-table tbody tr:last-child td{border-bottom:none}.adm-table tbody tr:hover{background:var(--bg)}.adm-num{text-align:right;font-variant-numeric:tabular-nums}.adm-nowrap{white-space:nowrap}.adm-mono{font-family:var(--mono);font-size:var(--t-xs)}.adm-sub-cell{font-family:var(--mono);font-size:var(--t-micro);color:var(--text-soft);display:block}.adm-link{color:var(--primary);font-weight:600;text-decoration:none}.adm-link:hover{text-decoration:underline}.adm-badge{border-radius:var(--radius-pill);background:var(--bg);color:var(--text-soft);font-size:var(--t-micro);white-space:nowrap;padding:3px 9px;font-weight:700;display:inline-block}.adm-badge-admin{background:var(--violet-pale);color:var(--violet-ink)}.adm-badge-on{color:var(--green-ink);background:#e6f4ea}.adm-grants{margin:0;padding:0;list-style:none}.adm-grant{align-items:center;gap:var(--gap-md);border-bottom:1px solid var(--border);flex-wrap:wrap;padding:12px 0;display:flex}.adm-grant:last-child{border-bottom:none}.adm-grant-name{min-width:140px;font-size:var(--t-md);flex:1;font-weight:600}.adm-grant-meta{font-family:var(--mono);font-size:var(--t-micro);color:var(--text-soft);font-weight:450;display:block}.adm-confirm{align-items:center;gap:var(--gap-sm);border-radius:var(--radius-md);background:var(--bg);color:var(--text);flex-wrap:wrap;padding:8px 12px;display:flex}.adm-confirm-text{font-size:var(--t-sm)}.adm-btn-danger{color:var(--red-ink);background:#fadcda}.adm-btn-danger:not(:disabled):hover{background:var(--red-ink);color:var(--ink-on-fill)}.adm-facts{gap:var(--gap-md);grid-template-columns:repeat(auto-fit,minmax(130px,1fr));margin:0;display:grid}.adm-fact{gap:var(--gap-xs);flex-direction:column;display:flex}.adm-fact-k{font-size:var(--t-xs);color:var(--text-soft);font-weight:600}.adm-fact-v{font-size:var(--t-md);font-variant-numeric:tabular-nums;margin:0;font-weight:600}.adm-pager{justify-content:center;align-items:center;gap:var(--gap-md);display:flex}.adm-pager-info{font-size:var(--t-sm);color:var(--text-soft);font-variant-numeric:tabular-nums}
