:root{--bg:#f7f8fc;--fg:#0c1222;--muted:#616b7d;--surface:#ffffff;--surface-2:#f1f4fb;--border:rgba(5,16,38,.12);--ring:#4f46e5;--ring-2:#10b981;--accent:#7c3aed;--warn:#d97706;--danger:#dc2626;--success:#22c55e;--info:#3b82f6;--toast-bg:color-mix(in oklab,var(--surface) 98%,transparent);--toast-border:var(--border)}.dark{--bg:#0b0c0f;--fg:#e7e9ee;--muted:#9aa1ac;--surface:#151820;--surface-2:#11141a;--border:rgba(255,255,255,.10);--ring:#60a5fa;--ring-2:#34d399;--accent:#a78bfa;--warn:#f59e0b;--danger:#ef4444;--toast-bg:color-mix(in oklab,var(--surface) 96%,transparent);--toast-border:rgba(255,255,255,.14)}@media (prefers-contrast:more){:root{--border:color-mix(in oklab,var(--fg) 22%,transparent)}.dark{--border:color-mix(in oklab,var(--fg) 28%,transparent)}}body,html{height:100%}*{box-sizing:border-box}:focus-visible{outline:2px solid color-mix(in oklab,var(--ring) 70%,transparent);outline-offset:2px}::selection{background:color-mix(in oklab,var(--ring) 40%,transparent);color:#fff}body{margin:0;color:var(--fg);background:var(--bg);font:16px/1.6 Inter,ui-sans-serif,system-ui,-apple-system,Segoe UI,Roboto,Helvetica,Arial;position:relative;overflow-x:hidden}.bg-aurora{position:fixed;inset:0;z-index:-5;pointer-events:none}.bg-aurora:before{content:"";position:absolute;inset:-10%;background:radial-gradient(900px 620px at 14% 8%,color-mix(in oklab,var(--ring) 16%,transparent) 0,transparent 60%),radial-gradient(1000px 720px at 86% -6%,color-mix(in oklab,var(--accent) 14%,transparent) 0,transparent 65%),radial-gradient(900px 700px at 50% 120%,color-mix(in oklab,var(--ring-2) 12%,transparent) 0,transparent 66%),conic-gradient(from 210deg at 50% 28%,color-mix(in oklab,var(--ring) 14%,transparent) 0 12%,transparent 12% 40%,color-mix(in oklab,var(--accent) 12%,transparent) 40% 55%,transparent 55% 100%);filter:blur(46px) saturate(1.06);opacity:.88}.bg-aurora:after{content:"";position:absolute;inset:0;background-image:linear-gradient(to right,color-mix(in oklab,var(--fg) 10%,transparent) 1px,transparent 1px),linear-gradient(to bottom,color-mix(in oklab,var(--fg) 8%,transparent) 1px,transparent 1px),linear-gradient(45deg,color-mix(in oklab,var(--fg) 6%,transparent) 1px,transparent 1px);background-size:68px 68px,68px 68px,136px 136px;background-position:0 0,0 0,0 0;opacity:.12;-webkit-mask-image:radial-gradient(140% 110% at 50% 42%,#000 70%,transparent 100%);mask-image:radial-gradient(140% 110% at 50% 42%,#000 70%,transparent 100%)}.dark .bg-aurora:after{opacity:.1}@media (prefers-reduced-motion:no-preference){.bg-aurora:before{animation:auroraShift 32s ease-in-out infinite alternate}.bg-aurora:after{animation:gridDrift 40s linear infinite alternate}}@keyframes auroraShift{0%{transform:translateZ(0) scale(1)}to{transform:translate3d(-2%,-1.5%,0) scale(1.02) rotate(.2deg)}}@keyframes gridDrift{0%{background-position:0 0,0 0,0 0}to{background-position:34px 20px,34px 20px,68px 40px}}@media (prefers-reduced-transparency:no-preference){.noise{position:fixed;inset:0;z-index:-1;pointer-events:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='140' height='140' viewBox='0 0 140 140'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.8' numOctaves='2' stitchTiles='stitch'/%3E%3CfeColorMatrix type='saturate' values='0'/%3E%3CfeComponentTransfer%3E%3CfeFuncA type='table' tableValues='0 0.012'/%3E%3C/feComponentTransfer%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");opacity:.55;mix-blend-mode:soft-light}}.container{width:min(1100px,100%);margin-inline:auto;padding:24px}.stack>*+*{margin-top:16px}.stack-lg>*+*{margin-top:28px}.row{display:flex;gap:12px;align-items:center;flex-wrap:wrap}.center{display:grid;place-items:center}.card{background:color-mix(in oklab,var(--surface) 96%,transparent);border:1px solid var(--border);border-radius:16px;padding:20px;box-shadow:0 8px 24px rgba(0,0,0,.12),inset 0 1px 0 rgba(255,255,255,.06)}.card:hover{box-shadow:0 10px 28px rgba(0,0,0,.16),inset 0 1px 0 rgba(255,255,255,.08)}.card-header{display:flex;justify-content:space-between;gap:10px;margin-bottom:10px}.btn,.card-header{align-items:center}.btn{display:inline-flex;justify-content:center;gap:8px;padding:10px 14px;border-radius:12px;font-weight:600;border:1px solid var(--border);background:color-mix(in oklab,var(--surface) 90%,transparent);cursor:pointer;transition:transform .02s,background .15s ease,border-color .15s ease,box-shadow .15s}.btn:hover{background:color-mix(in oklab,var(--surface) 96%,transparent)}.btn:active{transform:translateY(1px)}.btn.ghost{background:transparent;border-color:transparent}.btn.ghost:hover{background:color-mix(in oklab,var(--fg) 6%,transparent)}.btn.primary{border-color:color-mix(in oklab,var(--ring) 40%,transparent);background:linear-gradient(180deg,color-mix(in oklab,var(--ring) 26%,transparent),color-mix(in oklab,var(--ring) 12%,transparent));box-shadow:0 8px 20px color-mix(in oklab,var(--ring) 26%,transparent)}.btn.primary:hover{background:linear-gradient(180deg,color-mix(in oklab,var(--ring) 32%,transparent),color-mix(in oklab,var(--ring) 16%,transparent))}.btn.success{border-color:color-mix(in oklab,var(--success) 45%,transparent)}.btn.warn{border-color:color-mix(in oklab,var(--warn) 45%,transparent)}.btn.danger{border-color:color-mix(in oklab,var(--danger) 45%,transparent)}.input,.select,.textarea{width:100%;padding:12px 14px;border-radius:12px;background:var(--surface-2);color:var(--fg);border:1px solid var(--border);outline:none}.input:focus,.select:focus,.textarea:focus{box-shadow:0 0 0 3px color-mix(in oklab,var(--ring) 28%,transparent)}.textarea{resize:vertical}.text-muted{color:var(--muted)}.h1{font-size:36px;font-weight:800;letter-spacing:.2px}.h2{font-size:20px;font-weight:700}.small{font-size:12px}.kbd{font:12px/1.2 ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;background:color-mix(in oklab,var(--fg) 10%,transparent);padding:2px 6px;border-radius:6px}.skeleton{position:relative;overflow:hidden;background:color-mix(in oklab,var(--fg) 6%,transparent);border-radius:12px}.skeleton:after{content:"";position:absolute;inset:0;transform:translateX(-100%);background:linear-gradient(90deg,transparent,color-mix(in oklab,var(--fg) 12%,transparent),transparent);animation:shimmer 1.2s ease-in-out infinite}@keyframes shimmer{to{transform:translateX(100%)}}.badge{padding:2px 6px;border-radius:999px;border:1px solid var(--border);background:color-mix(in oklab,var(--surface) 92%,transparent)}.badge,.tag{font-size:12px}.tag{padding:3px 8px;border-radius:8px;background:color-mix(in oklab,var(--ring) 12%,transparent)}.grid-tiles{display:grid;gap:18px;grid-template-columns:repeat(auto-fill,minmax(260px,1fr))}.progress{height:8px;border-radius:999px;background:color-mix(in oklab,var(--fg) 10%,transparent);overflow:hidden}.progress .bar{height:100%;background:linear-gradient(90deg,var(--ring),var(--ring-2))}.ring{--size:44px;--thick:6px;width:var(--size);height:var(--size);position:relative;display:inline-grid;place-items:center}.ring svg{transform:rotate(-90deg)}.ring .track{stroke:color-mix(in oklab,var(--fg) 12%,transparent)}.ring .meter{stroke:url(#rg);transition:stroke-dashoffset .3s ease}.ring .label{position:absolute;font-size:11px;font-weight:700}.ring.spin .meter{animation:spin 1.1s linear infinite}@keyframes spin{to{stroke-dashoffset:0;transform:rotate(1turn)}}.acb-spinner{width:1.1rem;height:1.1rem;border-radius:9999px;border:2px solid color-mix(in oklab,var(--fg) 30%,transparent);border-top-color:var(--ring);animation:acb-spin .7s linear infinite}@keyframes acb-spin{to{transform:rotate(1turn)}}.content{font-family:Literata,Georgia,Cambria,Times New Roman,Times,serif;line-height:1.7}.content h1,.content h2,.content h3{font-family:Inter,ui-sans-serif,system-ui;margin:18px 0 8px;line-height:1.3}.content h2{font-size:20px}.content h3{font-size:16px;opacity:.95}.content p{margin:10px 0}.content strong{font-weight:700}.content em{opacity:.9}.content ol,.content ul{margin:10px 0;padding-left:0;list-style:none}.content li{position:relative;padding-left:22px;margin:8px 0}.content li:before{content:"";width:8px;height:8px;border-radius:999px;background:linear-gradient(90deg,var(--ring),var(--ring-2));position:absolute;left:0;top:.6em;box-shadow:0 0 0 3px color-mix(in oklab,var(--ring) 26%,transparent)}.content blockquote{margin:12px 0;padding:12px 14px;border-left:3px solid var(--accent);background:color-mix(in oklab,var(--accent) 16%,transparent);border-radius:10px}.content .callout{background:color-mix(in oklab,var(--ring-2) 18%,transparent);border:1px solid color-mix(in oklab,var(--ring-2) 45%,transparent);padding:12px 14px}.content .callout,.content pre{border-radius:12px;margin:12px 0}.content pre{display:none;padding:12px;background:#0e1116;overflow:auto}.content pre.show{display:block}.content code{background:color-mix(in oklab,var(--fg) 10%,transparent);padding:2px 6px;border-radius:6px}.lesson{border:1px solid var(--border);border-radius:14px;padding:16px;background:color-mix(in oklab,var(--surface) 92%,transparent)}.toast-wrap{position:fixed;inset:auto 16px 16px auto;z-index:60;display:grid;gap:10px;width:min(360px,calc(100vw - 32px))}.toast{display:flex;gap:10px;align-items:flex-start;background:var(--toast-bg);border:1px solid var(--toast-border);border-radius:12px;padding:10px 12px;box-shadow:0 10px 26px rgba(0,0,0,.18)}.toast .dot{width:8px;height:8px;border-radius:999px;margin-top:6px}.toast.success .dot{background:var(--success)}.toast.info .dot{background:var(--info)}.toast.error .dot{background:var(--danger)}.toast .msg{font-size:14px}.star{width:28px;height:28px;border-radius:8px;border:1px solid var(--border);display:inline-grid;place-items:center;cursor:pointer;background:color-mix(in oklab,var(--surface) 92%,transparent)}.star:hover{background:color-mix(in oklab,var(--surface) 98%,transparent)}.star .icon{font-size:16px;line-height:1}.star.active{border-color:color-mix(in oklab,var(--ring) 45%,transparent)}.star.active .icon{filter:drop-shadow(0 0 6px color-mix(in oklab,var(--ring) 60%,transparent))}.confetti{position:fixed;inset:0;pointer-events:none;z-index:70;overflow:hidden}.confetti-piece{position:absolute;width:8px;height:14px;will-change:transform,opacity;opacity:.9;border-radius:3px;animation:confetti-fall linear forwards}@keyframes confetti-fall{0%{transform:translate3d(var(--x,0),-10vh,0) rotate(0deg);opacity:1}to{transform:translate3d(var(--xend,0),110vh,0) rotate(2turn);opacity:0}}.table{width:100%;border-collapse:separate;border-spacing:0;font-size:14px}.table td,.table th{padding:10px 12px;border-bottom:1px solid var(--border)}.table thead th{font-weight:700;text-align:left;background:color-mix(in oklab,var(--surface) 92%,transparent)}.tabs{display:flex;gap:8px}.tab{padding:8px 12px;border-radius:999px;border:1px solid var(--border);cursor:pointer}.tab.active{background:color-mix(in oklab,var(--ring) 14%,transparent)}.tooltip{position:relative}.tooltip:hover:after{content:attr(data-tip);position:absolute;white-space:nowrap;left:50%;transform:translateX(-50%);bottom:130%;background:color-mix(in oklab,var(--surface) 98%,transparent);color:var(--fg);border:1px solid var(--border);border-radius:8px;padding:6px 8px;font-size:12px;box-shadow:0 8px 20px rgba(0,0,0,.15)}.overlay{position:fixed;inset:0;z-index:80;background:rgba(0,0,0,.45);backdrop-filter:saturate(1.1) blur(4px)}.modal{position:fixed;inset:auto 0 0 0;margin:auto;max-width:600px;background:var(--surface);color:var(--fg);border:1px solid var(--border);border-radius:16px;padding:18px;z-index:90}.density-compact .card{padding:16px}.density-compact .lesson{padding:12px}.density-compact .stack>*+*{margin-top:12px}.density-compact .stack-lg>*+*{margin-top:20px}.fab{position:fixed;right:18px;bottom:18px;z-index:55;border-radius:999px;padding:14px 16px;font-weight:700;background:linear-gradient(180deg,color-mix(in oklab,var(--ring) 26%,transparent),color-mix(in oklab,var(--ring) 12%,transparent));color:#fff;border:1px solid color-mix(in oklab,var(--ring) 45%,transparent);box-shadow:0 14px 32px color-mix(in oklab,var(--ring) 28%,transparent)}.fab:hover{filter:brightness(1.03)}.backtop{position:fixed;right:18px;bottom:84px;z-index:55;border-radius:999px;padding:10px 12px;font-weight:700;background:color-mix(in oklab,var(--surface) 96%,transparent);border:1px solid var(--border)}.icon-btn{display:inline-grid;place-items:center;width:34px;height:34px;border-radius:10px;background:color-mix(in oklab,var(--surface) 92%,transparent);border:1px solid var(--border);cursor:pointer}.icon-btn:hover,.sidebar{background:color-mix(in oklab,var(--surface) 98%,transparent)}.sidebar{position:fixed;inset:56px auto 0 0;width:280px;z-index:48;border-right:1px solid var(--border);transform:translateX(-100%);transition:transform .2s ease;display:flex;flex-direction:column;padding:16px;box-shadow:8px 0 24px rgba(0,0,0,.12)}.sidebar.open{transform:translateX(0)}.sidebar-head{justify-content:space-between;margin-bottom:8px}.brand,.sidebar-head{display:flex;align-items:center}.brand{gap:8px;font-weight:800}.brand-badge{display:inline-grid;place-items:center;width:24px;height:24px;border-radius:6px;background:var(--ring);color:#fff;font-size:12px}.sidebar-sec{margin-top:14px}.side-title{font-weight:700;font-size:12px;text-transform:uppercase;letter-spacing:.06em;color:var(--muted);margin-bottom:6px}.side-link{display:block;padding:8px 10px;border-radius:10px;border:1px solid transparent}.side-link:hover{background:color-mix(in oklab,var(--fg) 6%,transparent)}.side-continue{display:block;text-decoration:none;color:inherit}@media (min-width:1180px){.sidebar{inset:56px auto 0 0}}