:root{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;--bg:#f7f5f0;--bg-glow-1:#5b4bdb1a;--bg-glow-2:#e8794a17;--surface:#fff;--surface-2:#f2efe8;--surface-3:#e9e5dc;--border:#e5e0d5;--border-strong:#d4cec1;--text:#1b1a2e;--text-2:#3b3952;--muted:#6e6a82;--primary:#5b4bdb;--primary-hover:#4a3bc6;--primary-soft:#ece9ff;--primary-text:#fff;--accent:#e8794a;--accent-soft:#fdeee6;--success:#1c9466;--success-soft:#e3f5ed;--warning:#b97a0c;--warning-soft:#fdf3dc;--danger:#cf3f3f;--danger-soft:#fce8e8;--info:#2c78c9;--info-soft:#e6f0fb;--expert:#8a46c7;--expert-soft:#f3e9fb;--code-bg:#1d1c2b;--code-header:#26253a;--code-text:#e7e4f3;--inline-code-bg:#efecf9;--inline-code-text:#4a3bc6;--shadow-sm:0 1px 2px #1b1a2e0d, 0 1px 3px #1b1a2e0a;--shadow-md:0 4px 14px #1b1a2e12, 0 2px 4px #1b1a2e0a;--shadow-lg:0 18px 50px #1b1a2e1f, 0 4px 12px #1b1a2e0d;--radius-sm:8px;--radius:14px;--radius-lg:22px;--font-display:"Fraunces", Georgia, "Times New Roman", serif;--font-body:"Inter", system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;--font-mono:"JetBrains Mono", ui-monospace, "SFMono-Regular", Menlo, monospace;--gradient:linear-gradient(135deg, var(--primary) 0%, #8b5cf6 50%, var(--accent) 100%)}:root[data-theme=dark]{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--bg:#0e0d16;--bg-glow-1:#8f80ff21;--bg-glow-2:#ff9a6b12;--surface:#16151f;--surface-2:#1d1c29;--surface-3:#262435;--border:#2a2839;--border-strong:#3a3850;--text:#eeeaf6;--text-2:#cdc8dc;--muted:#9c98b0;--primary:#8f80ff;--primary-hover:#a397ff;--primary-soft:#25214a;--primary-text:#0e0d16;--accent:#ff9a6b;--accent-soft:#33221c;--success:#3dc98f;--success-soft:#11291f;--warning:#f0b445;--warning-soft:#2e2512;--danger:#ff6b6b;--danger-soft:#331718;--info:#66a8f0;--info-soft:#132235;--expert:#c08af0;--expert-soft:#2a1a38;--code-bg:#0a0a12;--code-header:#14131e;--code-text:#e7e4f3;--inline-code-bg:#25214a;--inline-code-text:#c4bbff;--shadow-sm:0 1px 2px #0000004d;--shadow-md:0 6px 18px #00000059;--shadow-lg:0 20px 60px #00000080}@media (prefers-color-scheme:dark){:root:not([data-theme]){--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--bg:#0e0d16;--surface:#16151f;--text:#eeeaf6}}*,:before,:after{box-sizing:border-box}html{-webkit-text-size-adjust:100%;scroll-padding-top:88px}body{background-color:var(--bg);background-image:radial-gradient(1100px 600px at 8% -10%, var(--bg-glow-1), transparent 60%), radial-gradient(900px 500px at 100% 0%, var(--bg-glow-2), transparent 55%);min-width:320px;color:var(--text);font-family:var(--font-body);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;background-repeat:no-repeat;margin:0;font-size:16px;line-height:1.6}h1,h2,h3{font-family:var(--font-display);letter-spacing:-.015em;margin:0;font-weight:600;line-height:1.2}p{margin:0}a{color:var(--primary);text-decoration:none}button{font:inherit;color:inherit}:focus-visible{outline:3px solid color-mix(in srgb, var(--primary) 55%, transparent);outline-offset:2px;border-radius:6px}.container{width:100%;max-width:1180px;margin:0 auto;padding:0 16px}@media (width>=720px){.container{padding:0 28px}}.muted{color:var(--muted)}.center{text-align:center}.lead{color:var(--text-2);max-width:62ch;font-size:1.08rem}.gradient-text{background:var(--gradient);color:#0000;-webkit-background-clip:text;background-clip:text}.eyebrow,.part-kicker{letter-spacing:.06em;text-transform:uppercase;color:var(--muted);align-items:center;gap:6px;font-size:.78rem;font-weight:600;display:inline-flex}.eyebrow{background:var(--primary-soft);color:var(--primary);border-radius:999px;padding:6px 12px}.app-shell{flex-direction:column;min-height:100vh;display:flex}.main{flex:1;padding-bottom:64px}.topbar{z-index:40;-webkit-backdrop-filter:saturate(160%)blur(14px);background:color-mix(in srgb, var(--bg) 78%, transparent);border-bottom:1px solid color-mix(in srgb, var(--border) 70%, transparent);position:sticky;top:0}.topbar-inner{justify-content:space-between;align-items:center;gap:12px;max-width:1180px;height:64px;margin:0 auto;padding:0 16px;display:flex}@media (width>=720px){.topbar-inner{padding:0 28px}}.logo{color:var(--text);font-family:var(--font-display);letter-spacing:-.02em;align-items:center;gap:10px;font-size:1.3rem;font-weight:700;display:inline-flex}.logo em{color:var(--primary);font-style:normal}.topbar-nav{align-items:center;gap:8px;display:flex}.nav-link{color:var(--text-2);border-radius:10px;padding:8px 12px;font-size:.95rem;font-weight:500}.nav-link:hover,.nav-link.active{color:var(--text);background:var(--surface-2)}.user-chip{color:var(--text);background:var(--surface);border:1px solid var(--border);border-radius:999px;align-items:center;gap:8px;padding:4px 12px 4px 4px;font-size:.9rem;font-weight:500;display:inline-flex}.avatar{background:var(--gradient);color:#fff;border-radius:50%;flex:none;place-items:center;width:28px;height:28px;font-size:.85rem;font-weight:700;display:grid}a.user-chip:hover,a.user-chip.active{border-color:var(--primary)}.avatar-photo{object-fit:cover;background:var(--surface-2)}@media (width<=640px){.user-name,.topbar-nav .nav-link{display:none}.user-chip{padding:3px}}@media (width<=420px){.topbar-nav{gap:6px}.logo>span{display:none}}.lang-switcher{border:1px solid var(--border);background:var(--surface);border-radius:10px;padding:3px;display:inline-flex;position:relative}.lang-switcher button{min-width:34px;height:30px;color:var(--muted);letter-spacing:.04em;cursor:pointer;background:0 0;border:0;border-radius:7px;padding:0 6px;font-size:.78rem;font-weight:700;transition:background .15s,color .15s}.lang-switcher button:hover{color:var(--text)}.lang-switcher button.is-active{background:var(--primary-soft);color:var(--primary)}.lang-error{background:var(--danger-soft);width:max-content;max-width:min(300px,100vw - 32px);color:var(--danger);border:1px solid color-mix(in srgb, var(--danger) 25%, transparent);box-shadow:var(--shadow-md);border-radius:10px;padding:8px 12px;font-size:.85rem;position:absolute;top:calc(100% + 8px);right:0}.lang-choice{border:0;gap:8px;min-width:0;margin:0;padding:0;display:grid}.lang-choice legend{color:var(--text-2);margin-bottom:8px;padding:0;font-size:.9rem;font-weight:600}.lang-choice-options{grid-template-columns:1fr 1fr;gap:10px;display:grid}.lang-option{border:1px solid var(--border-strong);background:var(--bg);cursor:pointer;border-radius:12px;align-items:center;gap:10px;padding:12px 14px;transition:border-color .15s,background .15s;display:flex;position:relative}.lang-option input{opacity:0;pointer-events:none;position:absolute}.lang-option:has(input:focus-visible){outline:3px solid color-mix(in srgb, var(--primary) 55%, transparent);outline-offset:2px}.lang-option.is-selected{border-color:var(--primary);background:var(--primary-soft)}.lang-choice:disabled .lang-option{cursor:progress;opacity:.7}.lang-code{letter-spacing:.05em;color:var(--primary);font-size:.75rem;font-weight:700}.lang-name{color:var(--text);font-weight:600}.lang-check{color:var(--primary);margin-left:auto}.translation-badge{color:var(--info)}.translation-notice{align-items:flex-start;gap:12px;display:flex}.translation-notice svg{color:var(--info);flex:none;margin-top:3px}.translation-notice strong{color:var(--text);display:block}.icon-button{border:1px solid var(--border);background:var(--surface);width:38px;height:38px;color:var(--text-2);cursor:pointer;border-radius:10px;place-items:center;transition:background .15s,color .15s;display:inline-grid}.icon-button:hover{background:var(--surface-2);color:var(--text)}.footer{text-align:center;color:var(--muted);border-top:1px solid var(--border);padding:28px 16px;font-size:.85rem}.footer-links{flex-wrap:wrap;justify-content:center;gap:4px 18px;margin-top:10px;display:flex}.footer-links a{color:var(--muted)}.footer-links a:hover{color:var(--text)}.legal-page{overflow-wrap:anywhere;max-width:780px;padding-top:40px;padding-bottom:64px}.legal-page h1{margin:10px 0 6px}.legal-updated{margin:0 0 20px;font-size:.9rem}.legal-page h2{margin:32px 0 10px;font-size:1.2rem}.legal-page p,.legal-page li{color:var(--text-2);line-height:1.7}.legal-page ul{padding-left:1.3em}.legal-page li+li{margin-top:6px}.auth-consent{color:var(--muted);text-align:center;margin:4px 0 0;font-size:.82rem;line-height:1.5}.btn{cursor:pointer;white-space:nowrap;border:1px solid #0000;border-radius:12px;justify-content:center;align-items:center;gap:8px;min-height:44px;padding:0 20px;font-size:.97rem;font-weight:600;text-decoration:none;transition:transform .12s,background .15s,box-shadow .15s,border-color .15s;display:inline-flex}.btn:active:not(:disabled){transform:translateY(1px)}.btn:disabled{opacity:.55;cursor:not-allowed}.btn-primary{background:var(--primary);color:var(--primary-text);box-shadow:0 6px 18px color-mix(in srgb, var(--primary) 30%, transparent)}.btn-primary:hover:not(:disabled){background:var(--primary-hover)}.btn-secondary{background:var(--primary-soft);color:var(--primary)}.btn-secondary:hover:not(:disabled){background:color-mix(in srgb, var(--primary-soft) 70%, var(--primary) 12%)}.btn-ghost{color:var(--text-2);border-color:var(--border-strong);background:0 0}.btn-ghost:hover:not(:disabled){background:var(--surface);color:var(--text)}.btn-light{color:#2a2160;background:#fff}.btn-sm{border-radius:10px;min-height:36px;padding:0 14px;font-size:.88rem}.btn-lg{border-radius:14px;min-height:52px;padding:0 26px;font-size:1.02rem}.btn-block{width:100%}.chip,.badge{white-space:nowrap;border-radius:999px;align-items:center;gap:5px;padding:3px 10px;font-size:.78rem;font-weight:600;display:inline-flex}.badge{background:var(--accent-soft);color:var(--accent)}.chip-success{background:var(--success-soft);color:var(--success)}.chip-primary{background:var(--primary-soft);color:var(--primary)}.chip-muted{background:var(--surface-2);color:var(--muted)}.level{color:var(--primary)}.level-beginner{color:var(--success)}.level-intermediate{color:var(--info)}.level-advanced{color:var(--accent)}.level-expert{color:var(--expert)}.alert{border:1px solid #0000;border-radius:12px;margin:16px 0;padding:12px 16px;font-size:.94rem}.alert-danger{background:var(--danger-soft);color:var(--danger);border-color:color-mix(in srgb, var(--danger) 25%, transparent)}.alert-info{background:var(--info-soft);color:var(--text-2);border-color:color-mix(in srgb, var(--info) 25%, transparent)}.state-view{min-height:60vh;color:var(--muted);text-align:center;place-items:center;gap:12px;padding:32px 16px;display:grid}.state-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);max-width:440px;box-shadow:var(--shadow-md);color:var(--text-2);justify-items:center;gap:14px;padding:36px 28px;display:grid}.state-card h2{color:var(--text);font-size:1.4rem}.state-icon{background:var(--primary-soft);width:56px;height:56px;color:var(--primary);border-radius:16px;place-items:center;display:grid}.spinner{border:2.5px solid color-mix(in srgb, currentColor 25%, transparent);border-top-color:currentColor;border-radius:50%;width:22px;height:22px;animation:.8s linear infinite spin;display:inline-block}.state-view .spinner{width:32px;height:32px;color:var(--primary)}@keyframes spin{to{transform:rotate(360deg)}}.hero{align-items:center;gap:48px;padding-top:56px;padding-bottom:40px;display:grid}@media (width>=980px){.hero{grid-template-columns:1.1fr .9fr;padding-top:88px}}.hero-copy{justify-items:start;gap:22px;display:grid}.hero h1{letter-spacing:-.025em;font-size:clamp(2.3rem,5.4vw,3.9rem);font-weight:600}.hero-actions{flex-wrap:wrap;gap:12px;display:flex}.hero-stats{color:var(--muted);flex-wrap:wrap;gap:10px 28px;margin:8px 0 0;padding:0;font-size:.95rem;list-style:none;display:flex}.hero-stats strong{font-family:var(--font-display);color:var(--text);margin-right:4px;font-size:1.5rem}.loop-card{background:var(--surface);border:1px solid var(--border);box-shadow:var(--shadow-lg);border-radius:28px;gap:22px;padding:28px;display:grid;position:relative}.loop-orbit{aspect-ratio:1.35;background:radial-gradient(circle at center, var(--primary-soft) 0, transparent 62%), var(--surface-2);border-radius:20px;position:relative;overflow:hidden}.loop-orbit:before{content:"";border:2px dashed color-mix(in srgb, var(--primary) 35%, transparent);border-radius:50%;animation:40s linear infinite spin;position:absolute;inset:16% 22%}.loop-core{background:var(--gradient);color:#fff;width:96px;height:96px;font-family:var(--font-display);box-shadow:0 0 0 10px color-mix(in srgb, var(--primary) 14%, transparent), var(--shadow-md);border-radius:50%;place-items:center;margin:auto;font-size:1.1rem;font-weight:700;animation:3.2s ease-in-out infinite pulse;display:grid;position:absolute;inset:0}@keyframes pulse{50%{box-shadow:0 0 0 18px color-mix(in srgb, var(--primary) 8%, transparent), var(--shadow-md)}}.loop-node{background:var(--surface);border:1px solid var(--border);box-shadow:var(--shadow-sm);color:var(--text-2);border-radius:12px;align-items:center;gap:6px;padding:8px 12px;font-size:.85rem;font-weight:600;display:inline-flex;position:absolute}.loop-node svg{color:var(--primary)}.loop-node-0{top:9%;left:50%;transform:translate(-50%)}.loop-node-1{top:50%;right:6%;transform:translateY(-50%)}.loop-node-2{bottom:9%;left:50%;transform:translate(-50%)}.loop-node-3{top:50%;left:6%;transform:translateY(-50%)}.loop-terminal{background:var(--code-bg);color:var(--code-text);font-family:var(--font-mono);border-radius:14px;padding:14px 16px;font-size:.8rem;line-height:1.75;overflow-x:auto}.loop-terminal .dots{gap:6px;margin-bottom:8px;display:flex}.loop-terminal .dots i{background:#4a4860;border-radius:50%;width:10px;height:10px}.loop-terminal .dots i:first-child{background:#ff6b6b}.loop-terminal .dots i:nth-child(2){background:#f0b445}.loop-terminal .dots i:nth-child(3){background:#3dc98f}.t-muted{color:#8a87a0}.t-accent{color:#ffb08a}.t-success{color:#3dc98f}.section{padding-top:72px}.section-head{gap:10px;max-width:680px;margin-bottom:32px;display:grid}.section-head h2{font-size:clamp(1.7rem,3.4vw,2.4rem)}.section-head p{color:var(--text-2)}.steps{gap:18px;display:grid}@media (width>=820px){.steps{grid-template-columns:repeat(3,1fr)}}.step{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);box-shadow:var(--shadow-sm);gap:10px;padding:26px;display:grid}.step h3{font-size:1.25rem}.step p{color:var(--text-2)}.step-icon{background:var(--primary-soft);width:46px;height:46px;color:var(--primary);border-radius:14px;place-items:center;display:grid}.journey{gap:14px;margin:0;padding:0;list-style:none;display:grid}@media (width>=820px){.journey{grid-template-columns:repeat(2,1fr)}.journey-item:last-child{grid-column:1/-1}}.journey-item{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);gap:18px;padding:22px;display:flex}.journey-item>div{justify-items:start;gap:6px;display:grid}.journey-item h3{font-size:1.25rem}.journey-item p{color:var(--text-2)}.journey-index{background:var(--gradient);color:#fff;width:44px;height:44px;font-family:var(--font-display);border-radius:50%;flex:none;place-items:center;font-size:1.15rem;font-weight:700;display:grid}.journey-meta{color:var(--muted);font-size:.85rem}.cta-band{text-align:center;background:var(--gradient);color:#fff;box-shadow:var(--shadow-lg);border-radius:28px;justify-items:center;gap:14px;padding:48px 28px;display:grid}.cta-band h2{font-size:clamp(1.6rem,3.6vw,2.3rem)}.cta-band p{opacity:.92;margin-bottom:6px}.auth-page{place-items:center;padding:56px 16px;display:grid}.auth-card{background:var(--surface);border:1px solid var(--border);width:100%;max-width:430px;box-shadow:var(--shadow-lg);text-align:center;border-radius:26px;justify-items:center;gap:8px;padding:36px 28px;display:grid}.auth-card h1{margin-top:12px;font-size:1.85rem}.auth-form{text-align:left;gap:16px;width:100%;margin-top:20px;display:grid}.field{color:var(--text-2);gap:6px;font-size:.9rem;font-weight:600;display:grid}.field input,.field select,.field textarea{border:1px solid var(--border-strong);background:var(--bg);width:100%;height:48px;color:var(--text);font:inherit;border-radius:12px;padding:0 14px;font-size:1rem;font-weight:400;transition:border-color .15s,box-shadow .15s}.field textarea{resize:vertical;height:auto;min-height:112px;padding:12px 14px;line-height:1.5}.field select{appearance:none;background-image:linear-gradient(45deg, transparent 50%, var(--muted) 50%), linear-gradient(135deg, var(--muted) 50%, transparent 50%);background-position:calc(100% - 20px) 21px,calc(100% - 15px) 21px;background-repeat:no-repeat;background-size:5px 5px;padding-right:40px}.field input:focus,.field select:focus,.field textarea:focus{border-color:var(--primary);box-shadow:0 0 0 4px color-mix(in srgb, var(--primary) 18%, transparent);outline:none}.field input[aria-invalid=true],.field textarea[aria-invalid=true]{border-color:var(--danger)}.field-error{color:var(--danger);font-weight:500}.field-hint{color:var(--muted);font-weight:400}.password-input{position:relative}.password-input input{width:100%;padding-right:48px}.password-toggle{width:38px;height:38px;color:var(--muted);cursor:pointer;background:0 0;border:0;border-radius:9px;place-items:center;display:grid;position:absolute;top:50%;right:6px;transform:translateY(-50%)}.password-toggle:hover{color:var(--text);background:var(--surface-2)}.oauth{gap:10px;width:100%;margin-top:20px;display:grid}.oauth-btn{color:var(--text);gap:10px;text-decoration:none}.oauth-divider{color:var(--text-2);align-items:center;gap:12px;margin-top:6px;font-size:.85rem;display:flex}.oauth-divider:before,.oauth-divider:after{content:"";background:var(--border);flex:1;height:1px}.oauth+.auth-form{margin-top:6px}.forgot-link{justify-self:end;margin-top:-8px;font-size:.88rem;font-weight:600}.auth-footer a{align-items:center;gap:4px;display:inline-flex}.auth-success{color:var(--text-2);justify-items:center;gap:12px;margin:18px 0 22px;display:grid}.auth-success svg{color:var(--success)}.auth-text{color:var(--text-2);margin:16px 0 22px}.alert-success{background:var(--success-soft);color:var(--success);border-color:color-mix(in srgb, var(--success) 25%, transparent);align-items:center;gap:8px;display:flex}.auth-footer{color:var(--muted);margin-top:18px;font-size:.93rem}.auth-footer a{font-weight:600}.dashboard{padding-top:36px}.dash-hero{background:var(--surface);border:1px solid var(--border);box-shadow:var(--shadow-md);border-radius:28px;align-items:center;gap:28px;margin-bottom:48px;padding:32px 24px;display:grid}@media (width>=860px){.dash-hero{grid-template-columns:1fr auto;padding:40px 44px}}.dash-hero-copy{justify-items:start;gap:14px;display:grid}.dash-hero h1{font-size:clamp(1.8rem,3.6vw,2.5rem)}.dash-ring{justify-self:center}.continue-card{background:var(--primary-soft);border:1px solid color-mix(in srgb, var(--primary) 25%, transparent);width:100%;max-width:560px;color:var(--text);border-radius:18px;justify-content:space-between;align-items:center;gap:16px;margin-top:6px;padding:18px 20px;transition:transform .15s,box-shadow .15s;display:flex}.continue-card:hover{box-shadow:var(--shadow-md);transform:translateY(-2px)}.continue-card>div{gap:2px;display:grid}.continue-card strong{font-family:var(--font-display);font-size:1.2rem;font-weight:600}.continue-label{letter-spacing:.05em;text-transform:uppercase;color:var(--primary);font-size:.78rem;font-weight:700}.continue-meta{color:var(--muted);align-items:center;gap:6px;font-size:.85rem;display:inline-flex}.continue-arrow{background:var(--primary);width:46px;height:46px;color:var(--primary-text);border-radius:50%;flex:none;place-items:center;display:grid}.continue-card.is-certificate{background:var(--accent-soft);border-color:color-mix(in srgb, var(--accent) 30%, transparent)}.continue-card.is-certificate .continue-label{color:var(--accent)}.continue-card.is-certificate .continue-arrow{background:var(--accent);color:#fff}.part-section{margin-bottom:52px}.part-header{justify-content:space-between;align-items:flex-end;gap:16px;margin-bottom:20px;display:flex}.part-header>div{gap:6px;display:grid}.part-header h2{font-size:clamp(1.45rem,2.8vw,1.9rem)}.part-header p{color:var(--text-2)}.part-count{font-family:var(--font-display);color:var(--muted);flex:none;font-size:1.3rem;font-weight:600}.chapter-grid{gap:16px;display:grid}@media (width>=680px){.chapter-grid{grid-template-columns:repeat(2,1fr)}}@media (width>=1040px){.chapter-grid{grid-template-columns:repeat(3,1fr)}}.chapter-card{background:var(--surface);border:1px solid var(--border);color:var(--text);box-shadow:var(--shadow-sm);border-radius:20px;flex-direction:column;gap:10px;padding:22px;transition:transform .15s,box-shadow .15s,border-color .15s;display:flex}a.chapter-card:hover{box-shadow:var(--shadow-md);border-color:color-mix(in srgb, var(--primary) 40%, var(--border));transform:translateY(-3px)}.chapter-card.is-available{border-color:color-mix(in srgb, var(--primary) 35%, var(--border));box-shadow:0 0 0 4px color-mix(in srgb, var(--primary) 8%, transparent), var(--shadow-sm)}.chapter-card.is-locked{opacity:.58;cursor:not-allowed;background:var(--surface-2);box-shadow:none}.chapter-card h3{font-size:1.15rem}.chapter-card p{color:var(--text-2);flex:1;font-size:.93rem}.chapter-card-top{justify-content:space-between;align-items:center;gap:8px;display:flex}.chapter-number{font-family:var(--font-display);color:var(--primary);opacity:.85;font-size:1.6rem;font-weight:700}.chapter-meta{color:var(--muted);flex-wrap:wrap;gap:6px 16px;font-size:.83rem;display:flex}.chapter-meta span,.chapter-meta-row span{align-items:center;gap:5px;display:inline-flex}.ring{place-items:center;display:inline-grid;position:relative}.ring svg{transform:rotate(-90deg)}.ring-track{fill:none;stroke:var(--surface-3)}.ring-value{fill:none;stroke-linecap:round;transition:stroke-dashoffset .9s cubic-bezier(.2,.8,.2,1)}.ring-primary .ring-value{stroke:var(--primary)}.ring-success .ring-value{stroke:var(--success)}.ring-danger .ring-value{stroke:var(--danger)}.ring-label{text-align:center;place-content:center;gap:2px;display:grid;position:absolute;inset:0}.ring-label strong{font-family:var(--font-display);font-size:1.9rem;font-weight:700;line-height:1}.ring-label span{color:var(--muted);max-width:11ch;margin:0 auto;font-size:.75rem;line-height:1.3}.reading-progress{background:var(--gradient);transform-origin:0;z-index:39;height:3px;position:fixed;top:64px;left:0;right:0}.chapter-layout{gap:48px;padding-top:28px;display:grid}@media (width>=1100px){.chapter-layout{grid-template-columns:minmax(0,1fr) 250px}}.chapter-main{min-width:0;max-width:780px}.back-link{color:var(--muted);align-items:center;gap:6px;margin-bottom:20px;font-size:.9rem;font-weight:500;display:inline-flex}.back-link:hover{color:var(--text)}.chapter-header{gap:14px;margin-bottom:28px;display:grid}.chapter-header h1{letter-spacing:-.025em;font-size:clamp(2rem,4.6vw,3rem)}.chapter-index{font-family:var(--font-body);letter-spacing:0;color:var(--primary);margin-bottom:8px;font-size:.95rem;font-weight:600;display:block}.chapter-meta-row{color:var(--muted);flex-wrap:wrap;align-items:center;gap:10px 20px;font-size:.92rem;display:flex}.objectives{background:var(--surface);border:1px solid var(--border);border-radius:20px;margin-bottom:36px;padding:22px 24px}.objectives h2{font-family:var(--font-body);letter-spacing:0;color:var(--primary);align-items:center;gap:8px;margin-bottom:10px;font-size:1rem;font-weight:700;display:flex}.objectives ul{gap:8px;margin:0;padding:0;list-style:none;display:grid}.objectives li{color:var(--text-2);padding-left:26px;position:relative}.objectives li:before{content:"";background:var(--gradient);border-radius:3px;width:10px;height:10px;position:absolute;top:.55em;left:4px}.quiz-cta{background:var(--surface);border:1px solid color-mix(in srgb, var(--primary) 35%, var(--border));box-shadow:var(--shadow-md);border-radius:24px;align-items:center;gap:18px;margin-top:56px;padding:28px;display:grid}@media (width>=760px){.quiz-cta{grid-template-columns:auto 1fr auto}}.quiz-cta h2{margin-bottom:4px;font-size:1.45rem}.quiz-cta p{color:var(--text-2)}.quiz-cta-icon{background:var(--accent-soft);width:56px;height:56px;color:var(--accent);border-radius:16px;place-items:center;display:grid}.chapter-nav{gap:12px;margin-top:28px;display:grid}@media (width>=640px){.chapter-nav{grid-template-columns:1fr 1fr}}.chapter-nav-link{border:1px solid var(--border);background:var(--surface);color:var(--text);border-radius:16px;gap:4px;padding:16px 18px;display:grid}.chapter-nav-link span{color:var(--muted);align-items:center;gap:6px;font-size:.82rem;display:inline-flex}.chapter-nav-link strong{font-weight:600}.chapter-nav-link.is-next{text-align:right;justify-items:end}a.chapter-nav-link:hover{border-color:var(--primary)}.chapter-nav-link.is-locked{opacity:.55}.toc{display:none}@media (width>=1100px){.toc{display:block}}.toc-inner{gap:12px;max-height:calc(100vh - 120px);padding-bottom:12px;display:grid;position:sticky;top:96px;overflow-y:auto}.toc-title{letter-spacing:.08em;text-transform:uppercase;color:var(--muted);font-size:.75rem;font-weight:700}.toc ol{border-left:2px solid var(--border);margin:0;padding:0;list-style:none}.toc a{color:var(--muted);border-left:2px solid #0000;margin-left:-2px;padding:6px 0 6px 14px;font-size:.87rem;line-height:1.4;display:block}.toc a:hover{color:var(--text)}.toc a.is-active{color:var(--primary);border-left-color:var(--primary);font-weight:600}.quiz-page{max-width:820px;padding-top:28px}.quiz-header{gap:8px;margin-bottom:24px;display:grid}.quiz-header h1{font-size:clamp(1.7rem,4vw,2.4rem)}.quiz-progress{color:var(--muted);align-items:center;gap:14px;font-size:.85rem;font-weight:500;display:flex}.quiz-progress-bar{background:var(--surface-3);border-radius:999px;flex:1;height:8px;overflow:hidden}.quiz-progress-bar span{border-radius:inherit;background:var(--gradient);height:100%;transition:width .3s;display:block}.quiz-dots{flex-wrap:wrap;gap:8px;margin:18px 0 22px;display:flex}.quiz-dot{border:1px solid var(--border);background:var(--surface);width:36px;height:36px;color:var(--muted);cursor:pointer;border-radius:10px;font-size:.85rem;font-weight:600;transition:all .15s}.quiz-dot.is-answered{background:var(--primary-soft);color:var(--primary);border-color:#0000}.quiz-dot.is-current{border-color:var(--primary);box-shadow:0 0 0 3px color-mix(in srgb, var(--primary) 20%, transparent);color:var(--text)}.question-card{background:var(--surface);border:1px solid var(--border);box-shadow:var(--shadow-md);border-radius:24px;padding:28px 24px;animation:.25s rise}@keyframes rise{0%{opacity:0;transform:translateY(6px)}}.question-count{letter-spacing:.06em;text-transform:uppercase;color:var(--primary);font-size:.8rem;font-weight:700}.question-text{font-family:var(--font-body);letter-spacing:-.005em;margin:10px 0 22px;font-size:1.22rem;font-weight:600;line-height:1.45}.options{gap:10px;display:grid}.option{border:1.5px solid var(--border);background:var(--bg);text-align:left;cursor:pointer;border-radius:14px;align-items:flex-start;gap:14px;width:100%;padding:14px 16px;line-height:1.5;transition:border-color .15s,background .15s,transform .1s;display:flex}.option:hover{border-color:color-mix(in srgb, var(--primary) 50%, var(--border))}.option.is-selected{border-color:var(--primary);background:var(--primary-soft)}.option-letter{background:var(--surface-2);width:30px;height:30px;color:var(--text-2);border-radius:9px;flex:none;place-items:center;font-size:.85rem;font-weight:700;display:grid}.option.is-selected .option-letter{background:var(--primary);color:var(--primary-text)}.option-text{padding-top:3px}.option code,.question-text code,.review-item code{font-family:var(--font-mono);background:var(--inline-code-bg);color:var(--inline-code-text);border-radius:6px;padding:2px 6px;font-size:.88em}.kbd-hint{color:var(--muted);margin-top:18px;font-size:.8rem}kbd{font-family:var(--font-mono);border:1px solid var(--border-strong);background:var(--surface-2);border-radius:5px;padding:1px 6px;font-size:.75rem}@media (width<=640px){.kbd-hint{display:none}}.quiz-actions{justify-content:space-between;gap:12px;margin:22px 0 12px;display:flex}.result-hero{text-align:center;background:var(--surface);border:1px solid var(--border);box-shadow:var(--shadow-md);border-radius:28px;place-items:center;gap:24px;margin-bottom:24px;padding:32px 24px;display:grid}@media (width>=720px){.result-hero{text-align:left;grid-template-columns:auto 1fr;justify-items:start;padding:36px 40px}}.result-hero>div{gap:10px;display:grid}.result-hero h1{font-size:clamp(1.8rem,4vw,2.4rem)}.result-hero.is-success{border-color:color-mix(in srgb, var(--success) 35%, var(--border))}.result-hero.is-danger{border-color:color-mix(in srgb, var(--danger) 30%, var(--border))}.unlock-banner{background:var(--success-soft);color:var(--success);border-radius:12px;justify-self:center;align-items:center;gap:8px;padding:8px 14px;font-size:.93rem;font-weight:600;display:inline-flex}@media (width>=720px){.unlock-banner{justify-self:start}}.result-actions{flex-wrap:wrap;justify-content:center;gap:10px;margin-top:6px;display:flex}@media (width>=720px){.result-actions{justify-content:flex-start}}.review{gap:14px;margin-top:28px;display:grid}.review>h2{margin-bottom:4px;font-size:1.5rem}.review-item{background:var(--surface);border:1px solid var(--border);border-left:4px solid var(--border);border-radius:18px;gap:12px;padding:20px;display:grid}.review-item.is-correct{border-left-color:var(--success)}.review-item.is-wrong{border-left-color:var(--danger)}.review-item header{letter-spacing:.05em;text-transform:uppercase;align-items:center;gap:8px;font-size:.82rem;font-weight:700;display:flex}.review-item.is-correct header{color:var(--success)}.review-item.is-wrong header{color:var(--danger)}.review-question{font-weight:600}.review-options{gap:6px;margin:0;padding:0;list-style:none;display:grid}.review-options li{color:var(--text-2);border-radius:10px;align-items:center;gap:10px;padding:8px 10px;font-size:.94rem;display:flex}.review-options .option-letter{width:26px;height:26px;font-size:.78rem}.review-options li.is-chosen{background:var(--surface-2)}.review-options li.is-answer{background:var(--success-soft);color:var(--text)}.review-options li.is-answer .option-letter{background:var(--success);color:#fff}.review-options li.is-wrong{background:var(--danger-soft)}.review-options li.is-wrong .option-letter{background:var(--danger);color:#fff}.your-answer{color:var(--muted);white-space:nowrap;margin-left:auto;font-size:.75rem;font-style:normal;font-weight:600}.review-explanation{background:var(--primary-soft);color:var(--text-2);border-radius:12px;padding:12px 14px;font-size:.93rem}.certificate-page{max-width:980px;padding-top:28px}.certificate-actions{justify-content:space-between;align-items:center;gap:12px;margin-bottom:20px;display:flex}.certificate-actions .back-link{margin:0}.certificate{background:var(--gradient);box-shadow:var(--shadow-lg);border-radius:26px;padding:14px}.certificate-border{color:#1b1a2e;text-align:center;background-color:#fffdf8;background-image:radial-gradient(600px 300px at 0 0,#5b4bdb12,#0000 60%),radial-gradient(600px 300px at 100% 100%,#e8794a14,#0000 60%);background-position:0 0;background-repeat:repeat;background-size:auto;background-attachment:scroll;background-origin:padding-box;background-clip:border-box;border-radius:18px;justify-items:center;gap:12px;padding:48px 24px;display:grid}.certificate-kicker{letter-spacing:.22em;text-transform:uppercase;color:#5b4bdb;margin-top:8px;font-size:.85rem;font-weight:700}.certificate-intro{color:#6e6a82;font-size:1rem}.certificate-name{color:#1b1a2e;font-size:clamp(2.2rem,6vw,3.6rem);font-style:italic;font-weight:600}.certificate-course{color:#3b3952;max-width:24ch;font-size:clamp(1.3rem,3vw,1.8rem)}.certificate-stats{border-top:1px solid #e5e0d5;flex-wrap:wrap;justify-content:center;gap:18px 44px;margin:20px 0 8px;padding-top:20px;display:flex}.certificate-stats div{gap:2px;display:grid}.certificate-stats strong{font-family:var(--font-display);font-size:1.35rem}.certificate-stats span{color:#6e6a82;font-size:.8rem}.certificate-id{font-family:var(--font-mono);color:#8a87a0;font-size:.78rem}@media print{.topbar,.footer,.no-print{display:none!important}body{background:#fff}.certificate{box-shadow:none;-webkit-print-color-adjust:exact;print-color-adjust:exact}}@media (prefers-reduced-motion:reduce){*,:before,:after{transition:none!important;animation:none!important}}.account-page{padding-top:40px}.account-hero{align-items:center;gap:20px;display:flex}.account-hero h1{margin:6px 0 4px;font-size:clamp(1.7rem,4vw,2.3rem)}.account-hero .muted{overflow-wrap:anywhere}.account-lead{max-width:68ch;margin:18px 0 28px}.account-grid{gap:20px;display:grid}@media (width>=980px){.account-grid{grid-template-columns:minmax(0,1.25fr) minmax(0,1fr);align-items:start}}.account-column{gap:20px;min-width:0;display:grid}.account-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);box-shadow:var(--shadow-sm);gap:18px;min-width:0;padding:24px 20px;display:grid}@media (width>=720px){.account-card{padding:28px}}.account-card-header{align-items:flex-start;gap:14px;display:flex}.account-card-header h2{font-size:1.3rem}.account-card-header p{margin-top:4px;font-size:.93rem}.account-card-icon{background:var(--primary-soft);width:40px;height:40px;color:var(--primary);border-radius:12px;flex:none;place-items:center;display:grid}.account-card .alert{margin:0}.account-form{gap:16px;display:grid}.account-form>.btn{justify-self:start}.form-row{gap:16px;display:grid}@media (width>=640px){.form-row{grid-template-columns:1fr 1fr;align-items:start}}.optional{color:var(--muted);font-weight:400}.align-end{justify-self:end}.avatar-editor{flex-wrap:wrap;align-items:center;gap:18px;display:flex}.avatar-actions{flex-wrap:wrap;gap:8px;display:flex}.course-icon{background:var(--gradient);color:#fff;width:46px;height:46px;box-shadow:var(--shadow-sm);border-radius:14px;flex:none;place-items:center;display:grid}.catalog-grid,.course-grid{gap:18px;display:grid}@media (width>=760px){.catalog-grid,.course-grid{grid-template-columns:repeat(2,1fr)}}.catalog-card,.course-card{border-radius:var(--radius-lg);background:var(--surface);border:1px solid var(--border);color:var(--text);box-shadow:var(--shadow-sm);flex-direction:column;gap:12px;padding:26px;transition:transform .15s,box-shadow .15s,border-color .15s;display:flex}a.catalog-card:hover{box-shadow:var(--shadow-md);border-color:color-mix(in srgb, var(--primary) 40%, var(--border));transform:translateY(-3px)}.catalog-card h3,.course-card h3{font-size:1.35rem}.catalog-card p,.course-card p{color:var(--text-2);font-size:.95rem}.catalog-card>p{flex:1}.catalog-card-top,.course-card-head{justify-content:space-between;align-items:center;gap:8px;display:flex}.catalog-card.is-soon,.course-card.is-soon{background:var(--surface-2);box-shadow:none;border-style:dashed}.is-soon .course-icon{background:var(--surface-3);color:var(--muted);box-shadow:none}.catalog-soon{font-size:.88rem;color:var(--muted)!important}.catalog-link{color:var(--primary);align-items:center;gap:6px;margin-top:4px;font-weight:600;display:inline-flex}@media (width>=980px){.hero.hero-single{grid-template-columns:1fr}}.progress-bar{background:var(--surface-3);border-radius:999px;height:8px;overflow:hidden}.progress-bar i{border-radius:inherit;background:var(--gradient);height:100%;display:block}.section-title{margin-bottom:18px;font-size:clamp(1.4rem,2.6vw,1.8rem)}.course-card h3 a{color:inherit}.course-card h3 a:hover{color:var(--primary)}.course-progress{color:var(--text-2);gap:6px;font-size:.88rem;display:grid}.course-resume{color:var(--muted)}.course-card-foot{border-top:1px solid var(--border);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:10px;margin-top:auto;padding-top:14px;font-size:.85rem;display:flex}.course-card-actions{flex-wrap:wrap;gap:8px;display:flex}.session-terminal{padding:18px 20px 22px;font-size:.88rem;line-height:1.8}.pipeline{gap:10px;margin:0;padding:0;list-style:none;display:grid}.pipeline-stage{background:var(--surface-2);color:var(--text-2);border-radius:14px;align-items:center;gap:12px;padding:12px 14px;font-weight:600;display:flex}.pipeline-icon{background:var(--primary-soft);width:34px;height:34px;color:var(--primary);border-radius:10px;place-items:center;display:grid}.pipeline-status{color:var(--success);margin-left:auto}.prose{color:var(--text-2);font-size:1.06rem;line-height:1.78}.prose>*+*{margin-top:1.1em}.prose h2{color:var(--text);margin-top:2.4em;padding-top:.4em;font-size:clamp(1.55rem,3vw,1.95rem)}.prose h3{font-family:var(--font-body);letter-spacing:-.01em;color:var(--text);margin-top:1.9em;font-size:1.2rem;font-weight:700}.prose h4{color:var(--text);margin-top:1.5em;font-size:1.02rem}.prose h2+*,.prose h3+*{margin-top:.7em}.prose strong{color:var(--text);font-weight:650}.prose a{text-decoration:underline;-webkit-text-decoration-color:color-mix(in srgb, var(--primary) 40%, transparent);text-decoration-color:color-mix(in srgb, var(--primary) 40%, transparent);text-underline-offset:3px;font-weight:500}.prose ul,.prose ol{padding-left:1.4em}.prose li+li{margin-top:.4em}.prose li::marker{color:var(--primary)}.prose hr{background:var(--border);border:0;height:1px;margin:2.4em 0}.prose :not(pre)>code{font-family:var(--font-mono);background:var(--inline-code-bg);color:var(--inline-code-text);word-break:break-word;border-radius:6px;padding:2px 6px;font-size:.86em}.prose blockquote{border-left:3px solid var(--border-strong);color:var(--muted);margin-left:0;margin-right:0;padding:4px 0 4px 18px;font-style:italic}.table-wrap{border:1px solid var(--border);background:var(--surface);border-radius:14px;overflow-x:auto}.prose table{border-collapse:collapse;width:100%;font-size:.93rem;line-height:1.55}.prose th,.prose td{text-align:left;vertical-align:top;border-bottom:1px solid var(--border);padding:11px 14px}.prose th{background:var(--surface-2);color:var(--text);white-space:nowrap;font-weight:650}.prose tr:last-child td{border-bottom:0}.callout{background:var(--surface);--callout:var(--primary);--callout-bg:var(--primary-soft);background:var(--callout-bg);border:1px solid #0000;border-color:color-mix(in srgb, var(--callout) 22%, transparent);border-radius:16px;margin-top:1.5em;margin-bottom:1.5em;padding:16px 18px 16px 20px;font-size:.99rem;line-height:1.7}.callout-title{letter-spacing:.06em;text-transform:uppercase;color:var(--callout);align-items:center;gap:8px;margin-bottom:6px;font-size:.8rem;font-weight:750;display:flex}.callout-body>*+*{margin-top:.7em}.callout-body>:first-child{margin-top:0}.callout-analogy{--callout:var(--accent);--callout-bg:var(--accent-soft)}.callout-note{--callout:var(--info);--callout-bg:var(--info-soft)}.callout-tip{--callout:var(--success);--callout-bg:var(--success-soft)}.callout-warning{--callout:var(--warning);--callout-bg:var(--warning-soft)}.callout-exercise{--callout:var(--primary);--callout-bg:var(--primary-soft);border-style:dashed;border-width:1.5px}.callout-exercise p>strong:first-child{color:var(--callout)}.callout-exercise .callout-body>p:first-child>strong:first-child{font-size:1.06em}.callout-exercise .callout-body>*+p{margin-top:1em}.callout-exercise li+li{margin-top:.6em}.callout-exercise li::marker{font-weight:700}.callout-exercise li>.code-block{margin-bottom:.8em}.callout-expert{--callout:var(--expert);--callout-bg:var(--expert-soft)}.callout .code-block{margin-top:.8em}.code-block{background:var(--code-bg);border:1px solid color-mix(in srgb, var(--code-bg) 60%, var(--border));box-shadow:var(--shadow-sm);border-radius:14px;margin-top:1.4em;margin-bottom:1.4em;overflow:hidden}.code-header{background:var(--code-header);border-bottom:1px solid #ffffff0f;justify-content:space-between;align-items:center;padding:7px 10px 7px 16px;display:flex}.code-lang{font-family:var(--font-mono);letter-spacing:.04em;color:#a19dba;font-size:.74rem;font-weight:500}.code-copy{color:#c8c4dc;cursor:pointer;background:0 0;border:1px solid #ffffff1a;border-radius:7px;align-items:center;gap:6px;padding:4px 9px;font-size:.75rem;display:inline-flex}.code-copy:hover{color:#fff;background:#ffffff12}.code-block pre{font-family:var(--font-mono);color:var(--code-text);tab-size:4;margin:0;padding:16px 18px;font-size:.86rem;line-height:1.7;overflow-x:auto}.code-block pre code{background:0 0;padding:0;font-family:inherit}.hljs-comment,.hljs-quote{color:#7d7a96;font-style:italic}.hljs-keyword,.hljs-selector-tag,.hljs-built_in,.hljs-meta .hljs-keyword{color:#b9a6ff}.hljs-string,.hljs-regexp,.hljs-meta .hljs-string{color:#9fe0b8}.hljs-number,.hljs-literal,.hljs-symbol{color:#ffb08a}.hljs-title,.hljs-title.function_,.hljs-section{color:#8cc8ff}.hljs-title.class_,.hljs-type{color:#ffd38a}.hljs-attr,.hljs-attribute,.hljs-property,.hljs-variable,.hljs-template-variable,.hljs-params{color:#f2c4e8}.hljs-meta,.hljs-decorator{color:#ffb08a}.hljs-punctuation,.hljs-operator{color:#c8c4dc}.hljs-deletion{color:#ff8b8b}.hljs-addition{color:#9fe0b8}.diagram{background:var(--surface);border:1px solid var(--border);text-align:center;border-radius:16px;margin:1.6em 0;padding:22px 16px;overflow-x:auto}.diagram svg{max-width:100%;height:auto}.diagram-placeholder{background:linear-gradient(90deg, var(--surface-2), var(--surface-3), var(--surface-2));background-size:200% 100%;border-radius:10px;height:160px;animation:1.4s linear infinite shimmer}@keyframes shimmer{to{background-position:-200% 0}}.diagram.is-zoomable,.zoomable-image{position:relative}.diagram-svg,.zoomable-image img{cursor:zoom-in}.zoomable-image{text-align:center;margin:1.6em 0;display:block}.zoomable-image img{border:1px solid var(--border);border-radius:12px;max-width:100%;height:auto}.zoom-trigger{border:1px solid var(--border);background:color-mix(in srgb, var(--surface) 92%, transparent);color:var(--text-2);cursor:pointer;box-shadow:var(--shadow-sm);opacity:.85;border-radius:9px;align-items:center;gap:6px;padding:6px 11px;font-size:.8rem;font-weight:600;transition:opacity .15s,color .15s,border-color .15s;display:inline-flex;position:absolute;top:10px;right:10px}.diagram:hover .zoom-trigger,.zoomable-image:hover .zoom-trigger,.zoom-trigger:focus-visible{opacity:1;color:var(--primary);border-color:color-mix(in srgb, var(--primary) 40%, var(--border))}.zoom-overlay{z-index:100;background:var(--bg);flex-direction:column;animation:.15s zoom-fade;display:flex;position:fixed;inset:0}@keyframes zoom-fade{0%{opacity:0}}.zoom-toolbar{border-bottom:1px solid var(--border);background:var(--surface);justify-content:space-between;align-items:center;gap:12px;padding:10px 16px;display:flex}.zoom-title{color:var(--text);text-overflow:ellipsis;white-space:nowrap;font-weight:700;overflow:hidden}.zoom-controls{align-items:center;gap:6px;display:flex}.zoom-button{border:1px solid var(--border);background:var(--surface);width:40px;height:40px;color:var(--text-2);cursor:pointer;border-radius:10px;place-items:center;display:grid}.zoom-button:hover{background:var(--surface-2);color:var(--text)}.zoom-close{background:var(--primary);border-color:var(--primary);color:var(--primary-text);margin-left:6px}.zoom-close:hover{background:var(--primary-hover);color:var(--primary-text)}.zoom-percent{text-align:center;font-variant-numeric:tabular-nums;min-width:52px;color:var(--muted);font-size:.88rem;font-weight:600}.zoom-stage{cursor:grab;touch-action:none;-webkit-user-select:none;user-select:none;flex:1;position:relative;overflow:hidden}.zoom-stage:active{cursor:grabbing}.zoom-content{transform-origin:0 0;background:var(--surface);box-shadow:var(--shadow-lg);border-radius:16px;padding:16px;position:absolute;top:0;left:0}.zoom-content svg,.zoom-img{display:block}.zoom-img{pointer-events:none;max-width:none}.zoom-help{text-align:center;color:var(--muted);border-top:1px solid var(--border);background:var(--surface);margin:0;padding:8px 16px;font-size:.8rem}@media (width<=640px){.zoom-title{display:none}.zoom-toolbar{justify-content:flex-end}.zoom-trigger span{display:none}}.diagram.is-zoomable{padding-top:52px}
