:root{--bg:#f5f5f4;--surface:#fafaf9;--surface-2:#ecebe9;--text:#1c1917;--muted:#57534e;--faint:#8a837d;--line:#d6d3d1;--line-soft:#e7e5e4;--accent:#d4511f;--accent-ink:#fff;--accent-soft:#f7e2d6;--code-bg:#f0efed;--grid:#1c19170b;--shadow:0 24px 48px -24px #1c191738;--radius:6px;--frame:1400px;--gutter:clamp(16px, 3.4vw, 40px);--measure:70ch;--nav-h:60px;--ease:cubic-bezier(.16, 1, .3, 1);--font-sans:"Geist", ui-sans-serif, system-ui, -apple-system, "Segoe UI", sans-serif;--font-mono:"Geist Mono", ui-monospace, "Cascadia Code", Consolas, monospace;--lock-mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2.5' stroke-linecap='round'%3E%3Crect x='5' y='11' width='14' height='10' rx='2'/%3E%3Cpath d='M8 11V8a4 4 0 0 1 8 0v3'/%3E%3C/svg%3E");color-scheme:light}@media (prefers-color-scheme:dark){:root:not([data-theme=light]){--bg:#121110;--surface:#191816;--surface-2:#23211f;--text:#f5f5f4;--muted:#a8a29e;--faint:#78716c;--line:#34312e;--line-soft:#26241f;--accent:#e27d4f;--accent-ink:#1a0d06;--accent-soft:#3a2318;--code-bg:#1d1c1a;--grid:#f5f5f409;--shadow:0 24px 48px -24px #000000b3;color-scheme:dark}}:root[data-theme=dark]{--bg:#121110;--surface:#191816;--surface-2:#23211f;--text:#f5f5f4;--muted:#a8a29e;--faint:#78716c;--line:#34312e;--line-soft:#26241f;--accent:#e27d4f;--accent-ink:#1a0d06;--accent-soft:#3a2318;--code-bg:#1d1c1a;--grid:#f5f5f409;--shadow:0 24px 48px -24px #000000b3;color-scheme:dark}*,:before,:after{box-sizing:border-box}html{-webkit-text-size-adjust:100%}body{background:var(--bg);color:var(--text);font:400 16px/1.65 var(--font-sans);padding-top:var(--nav-h);-webkit-font-smoothing:antialiased;margin:0}body:before{content:"";z-index:-1;pointer-events:none;background-image:linear-gradient(var(--grid) 1px, transparent 1px), linear-gradient(90deg, var(--grid) 1px, transparent 1px);background-size:32px 32px;position:fixed;inset:0;mask-image:linear-gradient(#000,#0000 85%)}main{width:100%;max-width:100%;overflow-x:clip}a{color:var(--accent);text-underline-offset:3px}a:hover{text-decoration-thickness:2px}img{max-width:100%;height:auto}.ui-icon{vertical-align:-.125em;flex:none;width:1em;height:1em}.mono{font-family:var(--font-mono)}h1,h2,h3{letter-spacing:-.035em;text-wrap:balance;font-weight:500;line-height:1.12}:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.sheet,.wrap{width:100%;max-width:var(--frame);padding:0 var(--gutter);margin:0 auto}.framed{max-width:var(--frame);border-left:1px solid var(--line);border-right:1px solid var(--line);margin:0 auto}@media (width<=1440px){.framed{border-left:0;border-right:0}}.eyebrow,.label{font:500 12px/1 var(--font-mono);letter-spacing:.04em;text-transform:uppercase;color:var(--muted);align-items:center;gap:8px;margin:0 0 14px;display:inline-flex}.label:before{content:"";background:var(--accent);width:14px;height:1px}.lede{color:var(--muted);max-width:58ch;font-size:18px;line-height:1.6}.meta{color:var(--muted);font-size:14px}.section-title{margin:64px 0 20px;font-size:22px}.btn{border:1px solid var(--accent);border-radius:var(--radius);background:var(--accent);color:var(--accent-ink);font:500 15px var(--font-sans);cursor:pointer;transition:transform .3s var(--ease), background .3s var(--ease), border-color .3s, color .3s;justify-content:center;align-items:center;gap:10px;padding:11px 18px;text-decoration:none;display:inline-flex}.btn:hover{background:color-mix(in srgb, var(--accent) 88%, var(--text))}.btn:active,.btn-discord:active{transform:scale(.98)}.btn-ghost{color:var(--text);border-color:var(--line);background:0 0}.btn-ghost:hover{background:var(--surface);border-color:var(--text)}.btn-ghost.is-done{color:var(--accent);border-color:var(--accent);background:var(--accent-soft)}.btn-ink{background:var(--text);border-color:var(--text);color:var(--bg)}.btn-ink:hover{background:color-mix(in srgb, var(--text) 85%, var(--bg))}.btn-danger{color:#fff;background:#b4331f;border-color:#b4331f}.btn-lg{padding:14px 22px;font-size:16px}.tag{border:1px solid var(--line);font:500 11.5px/1.3 var(--font-mono);letter-spacing:.02em;color:var(--muted);background:var(--surface);border-radius:4px;align-self:flex-start;align-items:center;gap:6px;padding:3px 8px;display:inline-flex}.tag-plan{vertical-align:1px;margin-left:8px}.tag-core{color:var(--text)}.tag-pro{color:var(--accent-ink);background:var(--accent);border-color:var(--accent)}.tag-pro:not(.tag-plan){vertical-align:1px;margin-left:8px}.site-header{z-index:40;height:var(--nav-h);background:color-mix(in srgb, var(--bg) 90%, transparent);border-bottom:1px solid var(--line);-webkit-backdrop-filter:blur(12px)saturate(1.2);position:fixed;inset:0 0 auto}.tb{height:100%;max-width:var(--frame);border-left:1px solid var(--line);border-right:1px solid var(--line);grid-template-columns:auto minmax(0,1fr) auto auto auto;margin:0 auto;display:grid}@media (width<=1440px){.tb{border-left:0;border-right:0}}.tb-cell{border-right:1px solid var(--line);align-items:center;min-width:0;padding:0 20px;display:flex}.tb-cell:last-child{border-right:0}.brand{color:var(--text);letter-spacing:-.02em;align-items:center;gap:10px;font-size:16px;font-weight:600;text-decoration:none;display:flex}.brand svg{flex:none}.tb-cmd{padding:0 12px}.cmd-trigger{border:1px solid var(--line);border-radius:var(--radius);background:var(--surface);width:100%;max-width:460px;height:38px;color:var(--faint);font:400 14px var(--font-mono);cursor:text;text-align:left;align-items:center;gap:10px;padding:0 10px 0 12px;transition:border-color .3s,color .3s;display:flex}.cmd-trigger:hover{border-color:var(--text);color:var(--muted)}.cmd-trigger .ui-icon{color:var(--accent);font-size:16px}.cmd-placeholder{white-space:nowrap;text-overflow:ellipsis;flex:1;overflow:hidden}kbd{border:1px solid var(--line);background:var(--bg);font:500 11px var(--font-mono);color:var(--muted);border-bottom-width:2px;border-radius:4px;align-items:center;padding:2px 6px;display:inline-flex}.tb-link{color:var(--muted);font-size:15px;text-decoration:none;transition:color .25s,background .25s;position:relative}.tb-link:hover{color:var(--text);background:var(--surface)}.tb-link[aria-current=page]{color:var(--text)}.tb-link[aria-current=page]:after{content:"";background:var(--accent);height:2px;position:absolute;bottom:-1px;left:0;right:0}.tb-account{gap:14px;padding:0 0 0 20px}.tb-account .nav-login{color:var(--text);font-size:15px;font-weight:500;text-decoration:none}.tb-account .nav-login:hover{color:var(--accent)}.tb-account .nav-cta{height:var(--nav-h);border-radius:0;margin:-1px 0;padding:0 22px}.menu-btn{width:var(--nav-h);border:0;border-left:1px solid var(--line);height:100%;color:var(--text);cursor:pointer;background:0 0;place-items:center;font-size:22px;display:none}@media (width<=900px){.tb{grid-template-columns:auto minmax(0,1fr) auto auto}.tb-link,.tb-account .nav-cta,.tb-account .nav-login{display:none}.tb-account{padding:0 14px}.tb-account:not(:has(:not(.nav-login):not(.nav-cta))){display:none}.menu-btn{display:grid}}@media (width<=560px){.brand-name,.cmd-placeholder,.cmd-trigger kbd{display:none}.tb-cell{padding:0 14px}.cmd-trigger{justify-content:center;width:38px;padding:0}.tb-cmd{justify-content:flex-end}.account-name{display:none}}.menu-sheet{inset:var(--nav-h) 0 0;z-index:39;background:var(--bg);border-top:1px solid var(--line);padding:8px var(--gutter) 32px;position:fixed;overflow-y:auto}.menu-sheet[hidden]{display:none}.menu-sheet a{border-bottom:1px solid var(--line);color:var(--text);letter-spacing:-.02em;opacity:0;animation:rise .5s var(--ease) forwards;animation-delay:calc(var(--i) * 45ms);justify-content:space-between;align-items:center;padding:18px 0;font-size:22px;text-decoration:none;display:flex;transform:translateY(8px)}.menu-sheet a .ui-icon{color:var(--accent);font-size:18px}.menu-sheet .btn{border-bottom:1px solid var(--accent);width:100%;margin-top:24px;padding:14px;font-size:16px}@keyframes rise{to{opacity:1;transform:none}}.read-progress{top:calc(var(--nav-h) - 1px);z-index:41;background:var(--accent);transform-origin:0;pointer-events:none;height:2px;position:fixed;left:0;right:0;transform:scaleX(0)}@supports (animation-timeline:scroll()){.read-progress{animation:linear both read scroll(root)}}@supports not (animation-timeline:scroll()){.read-progress{display:none}}@keyframes read{to{transform:scaleX(1)}}.palette{border:1px solid var(--line);background:var(--surface);width:min(680px,100vw - 24px);max-height:min(560px,100dvh - 120px);color:var(--text);box-shadow:var(--shadow);border-radius:10px;margin:12vh auto auto;padding:0;overflow:hidden}.palette[open]{animation:pal-in .35s var(--ease);flex-direction:column;display:flex}.palette::backdrop{backdrop-filter:blur(3px);background:#12111073}@keyframes pal-in{0%{opacity:0;transform:translateY(-8px)scale(.985)}}.palette-input{border-bottom:1px solid var(--line);align-items:center;gap:12px;padding:0 16px;display:flex}.palette-input .ui-icon{color:var(--accent);font-size:18px}.palette-input input{height:56px;color:var(--text);font:400 16px var(--font-sans);background:0 0;border:0;outline:0;flex:1}.palette-list{margin:0;padding:8px;list-style:none;overflow-y:auto}.palette-group{font:500 11px var(--font-mono);text-transform:uppercase;letter-spacing:.05em;color:var(--faint);padding:10px 10px 6px}.palette-item a{border-radius:var(--radius);color:var(--text);grid-template-columns:20px minmax(0,1fr) auto;align-items:center;gap:12px;padding:10px;text-decoration:none;display:grid}.palette-item .ui-icon{color:var(--faint)}.palette-item .p-title{white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.palette-item .p-meta{font:400 12px var(--font-mono);color:var(--faint)}.palette-item[aria-selected=true] a{background:var(--accent-soft)}.palette-item[aria-selected=true] .ui-icon{color:var(--accent)}.palette-empty{color:var(--muted);padding:28px 12px;font-size:15px}.palette-foot{border-top:1px solid var(--line);font:400 12px var(--font-mono);color:var(--faint);gap:18px;padding:10px 16px;display:flex}.palette-foot span{align-items:center;gap:6px;display:inline-flex}.site-footer{border-top:1px solid var(--line);color:var(--muted);margin-top:120px;font-size:14px}.footer-tb{max-width:var(--frame);border-left:1px solid var(--line);border-right:1px solid var(--line);grid-template-columns:minmax(0,2fr) repeat(3,minmax(0,1fr));margin:0 auto;display:grid}@media (width<=1440px){.footer-tb{border-left:0;border-right:0}}.footer-tb>div{padding:28px var(--gutter);border-right:1px solid var(--line)}.footer-tb>div:last-child{border-right:0}.footer-tb p{max-width:36ch;margin:10px 0 0}.footer-tb h4{font:500 12px var(--font-mono);text-transform:uppercase;letter-spacing:.05em;color:var(--faint);margin:0 0 12px}.footer-tb ul{gap:8px;margin:0;padding:0;list-style:none;display:grid}.footer-tb a{color:var(--muted);text-decoration:none}.footer-tb a:hover{color:var(--accent)}.footer-base{max-width:var(--frame);padding:14px var(--gutter);border-top:1px solid var(--line);font:400 12px var(--font-mono);color:var(--faint);flex-wrap:wrap;justify-content:space-between;gap:8px;margin:0 auto;display:flex}body.flush-top .site-footer,main:has(>.final:last-child)+.site-footer{margin-top:0}@media (width<=760px){.footer-tb{grid-template-columns:1fr 1fr}.footer-tb>div:first-child{border-right:0;border-bottom:1px solid var(--line);grid-column:1/-1}.footer-tb>div:nth-child(3){border-right:0}.footer-tb>div:last-child{border-top:1px solid var(--line);grid-column:1/-1}}.page-head{border-bottom:1px solid var(--line)}.page-head-inner{max-width:var(--frame);padding:clamp(48px, 7vw, 88px) var(--gutter) clamp(32px, 4vw, 48px);border-left:1px solid var(--line);border-right:1px solid var(--line);margin:0 auto}@media (width<=1440px){.page-head-inner{border-left:0;border-right:0}}.page-head h1,.course-head h1{margin:0 0 14px;font-size:clamp(2.1rem,1.5rem + 2.4vw,3.4rem)}.course-head{padding:clamp(48px,7vw,88px) 0 8px}.course-head .lede,.page-head .lede{margin:0}.course-intro{max-width:var(--measure)}.specs{border-top:1px solid var(--line);border-bottom:1px solid var(--line);grid-template-columns:repeat(auto-fit,minmax(150px,1fr));margin:0;display:grid}.specs>div{border-right:1px solid var(--line);padding:18px 20px}.specs>div:last-child{border-right:0}.specs dt{font:500 11.5px var(--font-mono);text-transform:uppercase;letter-spacing:.05em;color:var(--faint)}.specs dd{font:500 26px/1.1 var(--font-mono);letter-spacing:-.03em;margin:6px 0 0}.stats{border:1px solid var(--line);background:var(--surface);grid-template-columns:repeat(auto-fit,minmax(150px,1fr));margin:0;display:grid}.stats div{border-right:1px solid var(--line);padding:18px 20px}.stats div:last-child{border-right:0}.stats dt{font:500 11.5px var(--font-mono);text-transform:uppercase;letter-spacing:.05em;color:var(--faint)}.stats dd{font:500 24px/1.1 var(--font-mono);letter-spacing:-.03em;margin:6px 0 0}.stats-account{margin-top:40px}.progress{background:var(--line);max-width:420px;height:4px;margin-top:18px;overflow:hidden}.progress span{height:100%;width:var(--pct,0%);background:var(--accent);transition:width .6s var(--ease);display:block}.course-list{border-top:1px solid var(--line);margin:0;padding:0;list-style:none;display:grid}.course-card{border-bottom:1px solid var(--line);color:inherit;grid-template-columns:minmax(0,1fr) auto;gap:8px 32px;padding:28px 4px;text-decoration:none;display:grid}.course-card .tag{grid-column:1}.course-card h3{margin:4px 0 0;font-size:26px;transition:color .3s}.course-card p{color:var(--muted);max-width:60ch;margin:0}.course-card .meta{font-family:var(--font-mono);grid-area:1/2/span 3;align-self:center}.course-card:hover h3{color:var(--accent)}.syl{border-top:1px solid var(--line);grid-template-columns:280px minmax(0,1fr);display:grid}.syl-index{top:var(--nav-h);max-height:calc(100dvh - var(--nav-h));border-right:1px solid var(--line);align-self:start;padding:24px 20px 24px 0;position:sticky;overflow-y:auto}.syl-index ol{margin:0;padding:0;list-style:none}.syl-index a{color:var(--muted);border-radius:4px;grid-template-columns:34px minmax(0,1fr) auto;align-items:baseline;gap:8px;padding:7px 8px;font-size:14px;text-decoration:none;display:grid}.syl-index a:hover{color:var(--text);background:var(--surface)}.syl-index .mono{color:var(--faint);font-size:12px}.syl-index .module-count{font-size:11.5px}.syl-body{min-width:0;padding-left:clamp(20px,3vw,48px)}@media (width<=960px){.syl{grid-template-columns:1fr}.syl-index{display:none}.syl-body{padding-left:0}}.module{border-bottom:1px solid var(--line);scroll-margin-top:var(--nav-h);padding:40px 0 8px}.module:last-child{border-bottom:0}.module-header{justify-content:space-between;align-items:flex-end;gap:16px;display:flex}.module-header .eyebrow{margin-bottom:10px}.module-header h2{margin:0 0 6px;font-size:clamp(22px,2vw,28px)}.module-header .meta{margin:0}.module-count{font:500 12.5px var(--font-mono);color:var(--faint);white-space:nowrap}.module-count.is-complete{color:var(--accent)}.module-count.is-complete:before{content:"done "}.module-lock{color:var(--faint);vertical-align:-2px;margin-left:6px;display:none}.module.is-locked .module-lock{display:inline}.module.is-locked .syllabus strong{color:var(--muted)}.syllabus{border-top:1px solid var(--line-soft);margin:20px 0 0;padding:0;list-style:none}.syllabus li{border-bottom:1px solid var(--line-soft)}.syllabus li:last-child{border-bottom:0}.syllabus a{color:inherit;grid-template-columns:72px minmax(0,1fr) auto;align-items:baseline;gap:16px;padding:16px 4px;text-decoration:none;transition:background .3s;display:grid}.syllabus a:hover{background:var(--surface)}.syllabus a:hover strong{color:var(--accent)}.syllabus strong{font-size:17px;font-weight:500;transition:color .3s}.syllabus small{color:var(--muted);margin-top:2px;font-size:14.5px;display:block}.syllabus .meta{font-family:var(--font-mono);font-size:12.5px}.syllabus-num{font:500 13px var(--font-mono);color:var(--faint)}.syllabus li.is-done .syllabus-num{color:var(--accent)}.syllabus li.is-done .syllabus-num:after{content:"";vertical-align:1px;background:var(--accent);width:7px;height:7px;margin-left:8px;display:inline-block}.complete-banner{border:1px solid var(--accent);background:var(--accent-soft);border-radius:var(--radius);flex-wrap:wrap;align-items:center;gap:8px 16px;margin-bottom:28px;padding:14px 18px;display:flex}.complete-banner[hidden]{display:none}.complete-banner strong{align-items:center;gap:8px;font-weight:500;display:inline-flex}.complete-banner a{margin-left:auto;font-weight:500}.lesson-layout{max-width:var(--frame);padding:0 var(--gutter);grid-template-columns:minmax(0,1fr);gap:32px;margin:0 auto;display:grid}.lesson-layout>*{min-width:0}@media (width>=1000px){.lesson-layout{grid-template-columns:260px minmax(0,1fr);gap:0}}@media (width>=1280px){.lesson-layout{grid-template-columns:260px minmax(0,1fr) 220px}}.lesson-main{padding:40px 0 0}@media (width>=1000px){.lesson-main{border-left:1px solid var(--line);padding:48px 0 0 clamp(32px,4vw,64px)}}@media (width>=1280px){.lesson-main{padding-right:clamp(24px,3vw,48px)}}.lesson-nav{border:1px solid var(--line);border-radius:var(--radius);background:var(--surface);margin-top:20px;font-size:14px}.lesson-nav>summary{cursor:pointer;justify-content:space-between;gap:12px;padding:12px 14px;font-weight:500;list-style:none;display:flex}.lesson-nav>summary::-webkit-details-marker{display:none}.lesson-nav>summary .mono{color:var(--accent);text-transform:uppercase;letter-spacing:.04em;font-size:12px}.lesson-nav>summary:after{content:"+";font:400 18px/1 var(--font-mono);color:var(--faint)}.lesson-nav[open]>summary:after{content:"-"}.lesson-nav[open]>summary{border-bottom:1px solid var(--line)}.lesson-nav>:not(summary){margin-left:14px;margin-right:14px}.lesson-nav .back{color:var(--muted);align-items:center;gap:6px;margin-top:14px;font-size:13.5px;text-decoration:none;display:inline-flex}.lesson-nav .back:hover{color:var(--accent)}@media (width>=1000px){.lesson-nav{top:var(--nav-h);max-height:calc(100dvh - var(--nav-h));background:0 0;border:0;border-radius:0;margin:0;padding:28px 24px 28px 0;position:sticky;overflow-y:auto}.lesson-nav>summary{display:none}.lesson-nav>:not(summary){margin-left:0;margin-right:0}.lesson-nav .back{margin-top:0}}.lnav-module{border-bottom:1px solid var(--line);gap:4px;margin-top:22px;padding-bottom:18px;display:grid}.lnav-module>.mono{text-transform:uppercase;letter-spacing:.05em;color:var(--accent);font-size:11.5px}.lnav-module>a{color:var(--text);letter-spacing:-.02em;font-size:18px;font-weight:500;line-height:1.25;text-decoration:none}.lnav-module>a:hover{color:var(--accent)}.lnav-progress{gap:6px;margin-top:10px;display:grid}.lnav-progress .meta{font-size:12px}.lnav-progress.is-complete [data-status],.lnav-progress.is-started [data-status]{color:var(--accent)}.lnav-chapters{margin:10px 0 0;padding:0;list-style:none}.lnav-chapters a{color:var(--muted);border-radius:4px;grid-template-columns:28px minmax(0,1fr);gap:8px;padding:9px 8px 9px 12px;line-height:1.4;text-decoration:none;display:grid;position:relative}.lnav-chapters a .mono{color:var(--faint);padding-top:1px;font-size:12px}.lnav-chapters a:hover{color:var(--text);background:var(--surface)}.lnav-chapters a[aria-current=page]{color:var(--text);background:var(--surface);font-weight:500}.lnav-chapters a[aria-current=page]:before{content:"";background:var(--accent);width:2px;position:absolute;top:8px;bottom:8px;left:0}.lnav-chapters li.is-done a .mono{color:var(--accent)}.lnav-chapters li.is-done a .mono:after{content:"";vertical-align:1px;background:var(--accent);width:6px;height:6px;margin-left:4px;display:inline-block}.lnav-next{border-top:1px solid var(--line);color:var(--text);gap:2px;margin-top:18px;margin-bottom:14px;padding:14px 0 0;text-decoration:none;display:grid}.lnav-next .mono{text-transform:uppercase;letter-spacing:.05em;color:var(--faint);font-size:11.5px}.lnav-next:hover span:last-child{color:var(--accent)}.lesson-toc{display:none}@media (width>=1280px){.lesson-toc{top:var(--nav-h);max-height:calc(100dvh - var(--nav-h));border-left:1px solid var(--line);align-self:start;padding:48px 0 28px 24px;font-size:13.5px;display:block;position:sticky;overflow-y:auto}}.lesson-toc ol{gap:2px;margin:0;padding:0;list-style:none;display:grid}.lesson-toc a{overflow-wrap:anywhere;color:var(--muted);border-left:2px solid #0000;margin-left:-1px;padding:5px 0 5px 12px;line-height:1.4;text-decoration:none;display:block}.lesson-toc a:hover{color:var(--text)}.lesson-toc a.is-active{color:var(--text);border-left-color:var(--accent)}.lesson-meta{font:500 12px var(--font-mono);color:var(--faint);text-transform:uppercase;letter-spacing:.04em;flex-wrap:wrap;align-items:center;gap:10px;margin-bottom:18px;display:flex}.lesson-meta .sep{background:var(--line);width:4px;height:4px}.edit-link{border:1px solid var(--accent);color:var(--accent);border-radius:4px;margin-left:auto;padding:3px 10px;text-decoration:none}.edit-link:hover{background:var(--accent-soft)}.sr-only{clip:rect(0 0 0 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.prose{max-width:var(--measure);font-size:17px;line-height:1.75}.prose h1{margin:0 0 12px;font-size:clamp(2rem,1.5rem + 2vw,3rem)}.prose>h1+p{color:var(--muted);font-size:19px}.prose h1:not(:first-child),.module-intro>h1,.about-course .prose>h1{letter-spacing:-.02em;margin:36px 0 10px;font-size:23px;font-weight:600;line-height:1.3}.module-intro>h1:first-child,.about-course .prose>h1:first-child{margin-top:0}.prose h3[id=key-words]{border:1px solid var(--line);background:var(--surface);font:500 11.5px var(--font-mono);text-transform:uppercase;letter-spacing:.06em;color:var(--accent);border-bottom:0;margin:28px 0 0;padding:14px 20px 4px}.prose h3[id=key-words]+ul{border:1px solid var(--line);background:var(--surface);columns:2 240px;color:var(--muted);border-top:0;column-gap:32px;margin:0 0 28px;padding:6px 20px 14px;font-size:15px;line-height:1.55;list-style:none}.prose h3[id=key-words]+ul li{break-inside:avoid;margin:0;padding:7px 0}.prose h3[id=key-words]+ul strong{color:var(--text);font-weight:600}.prose h2{border-top:1px solid var(--line);margin:56px 0 14px;padding-top:18px;font-size:25px}.prose h3{letter-spacing:-.02em;margin:32px 0 8px;font-size:19px}.prose h2,.prose h3{scroll-margin-top:calc(var(--nav-h) + 16px)}.prose p,.prose ul,.prose ol{margin:0 0 20px}.prose li{margin:6px 0}.prose li::marker{color:var(--faint)}.prose strong{font-weight:600}.prose a{overflow-wrap:anywhere}.prose blockquote{border-left:2px solid var(--accent);background:var(--surface);color:var(--muted);margin:28px 0;padding:14px 20px}.prose blockquote p{margin:0 0 8px}.prose blockquote p:last-child{margin:0}.prose code{font:.86em var(--font-mono);background:var(--code-bg);border:1px solid var(--line-soft);border-radius:4px;padding:1px 5px}.prose pre{border-radius:var(--radius);border:1px solid var(--line);margin:0 0 22px;padding:18px 20px;font-size:14px;line-height:1.6;overflow-x:auto}.prose pre code{font-size:inherit;background:0 0;border:0;padding:0}.prose pre.code-plain{background:var(--code-bg);color:var(--text)}.prose table{border-collapse:collapse;border-top:1px solid var(--text);width:100%;margin:0 0 24px;font-size:14.5px;line-height:1.5;display:block;overflow-x:auto}.prose th{font:500 12px var(--font-mono);text-transform:uppercase;letter-spacing:.04em;color:var(--faint)}.prose th,.prose td{text-align:left;vertical-align:top;border-bottom:1px solid var(--line);padding:10px 14px 10px 0}.prose hr{border:0;border-top:1px solid var(--line);margin:40px 0}.prose ul:has(>li>input[type=checkbox]){padding-left:4px;list-style:none}.prose li>input[type=checkbox]{accent-color:var(--accent);margin-right:8px}.astro-code{background-color:var(--code-bg)!important}@media (prefers-color-scheme:dark){:root:not([data-theme=light]) .astro-code,:root:not([data-theme=light]) .astro-code span{color:var(--shiki-dark)!important}}:root[data-theme=dark] .astro-code,:root[data-theme=dark] .astro-code span{color:var(--shiki-dark)!important}.code-wrap{margin:0 0 22px;position:relative}.code-wrap pre{margin:0;padding-right:52px}.copy-btn{border:1px solid var(--line);background:var(--surface);width:30px;height:30px;color:var(--muted);cursor:pointer;border-radius:4px;place-items:center;padding:0;transition:color .2s,border-color .2s;display:grid;position:absolute;top:8px;right:8px}.copy-btn svg{width:16px;height:16px}.copy-btn:hover,.copy-btn.is-copied{color:var(--accent);border-color:var(--accent)}.code-scroll pre{max-height:30rem;overflow:auto}.code-scroll .code-wrap{margin-bottom:22px}.complete-row{border-top:1px solid var(--line);max-width:var(--measure);align-items:center;gap:16px;margin-top:56px;padding:20px 0;display:flex}.pager{max-width:var(--measure);border:1px solid var(--line);grid-template-columns:1fr 1fr;margin:0 0 48px;display:grid}.pager a{color:var(--text);padding:18px 20px;font-weight:500;text-decoration:none;transition:background .3s;display:block}.pager a:hover{background:var(--surface);color:var(--accent)}.pager span{font:500 11.5px var(--font-mono);text-transform:uppercase;letter-spacing:.04em;color:var(--faint);margin-bottom:4px;display:block}.pager .next{text-align:right;border-left:1px solid var(--line);grid-column:2}.pager .prev:only-child{border-right:1px solid var(--line)}.paywall{display:none}html.locked .paywall{display:block}html.locked .plan-content{display:none}.paywall h1{margin:0 0 10px;font-size:clamp(2rem,1.5rem + 2vw,3rem)}.paywall-card{max-width:var(--measure);border:1px solid var(--accent);border-radius:var(--radius);background:var(--accent-soft);align-items:flex-start;gap:18px;margin-top:28px;padding:24px;display:flex}.paywall-card h2{margin:0 0 6px;font-size:20px}.paywall-card .meta{margin:0 0 16px}.lock{color:var(--accent);padding-top:2px;font-size:24px;line-height:1}.paywall-toc{max-width:var(--measure);columns:2 260px;color:var(--muted);border-top:1px solid var(--line);margin:0;padding:12px 0 0;font-size:15px;list-style:none}.paywall-toc li{break-inside:avoid;margin:6px 0}.account{align-items:center;display:flex}.account-menu{position:relative}.account-menu summary{cursor:pointer;color:var(--text);align-items:center;gap:10px;padding-right:20px;font-size:14.5px;list-style:none;display:flex}.account-menu summary::-webkit-details-marker{display:none}.account-pop{z-index:10;border:1px solid var(--line);border-radius:var(--radius);background:var(--surface);min-width:200px;box-shadow:var(--shadow);padding:6px;position:absolute;top:calc(100% + 14px);right:12px}.account-pop a,.account-pop button{width:100%;color:var(--text);font:inherit;text-align:left;cursor:pointer;background:0 0;border:0;border-radius:4px;padding:9px 10px;font-size:14.5px;text-decoration:none;display:block}.account-pop a:hover,.account-pop button:hover{background:var(--accent-soft)}.account-pop-plan{font:500 11px var(--font-mono);text-transform:uppercase;letter-spacing:.05em;color:var(--faint);margin:4px 10px 8px}.avatar{background:var(--text);width:28px;height:28px;color:var(--bg);font:600 13px var(--font-mono);border-radius:4px;place-items:center;display:inline-grid}.avatar-lg{border-radius:6px;flex:none;width:64px;height:64px;font-size:26px}.streak-chip{border:1px solid var(--accent);font:500 12px var(--font-mono);color:var(--accent);border-radius:4px;align-items:center;gap:4px;padding:2px 7px;display:inline-flex}.avatar{overflow:hidden}.avatar img{object-fit:cover;width:100%;height:100%;display:block}.auth{min-height:calc(100dvh - var(--nav-h));max-width:var(--frame);border-left:1px solid var(--line);border-right:1px solid var(--line);grid-template-columns:minmax(0,1fr) minmax(0,1fr);margin:0 auto;display:grid}@media (width<=1440px){.auth{border-left:0;border-right:0}}.auth-main{padding:48px var(--gutter);flex-direction:column;justify-content:center;display:flex}.auth-main>*{max-width:420px}.auth-main h1{margin:0 0 12px;font-size:clamp(2rem,1.6rem + 1.6vw,2.8rem)}.auth-side{padding:48px var(--gutter);border-left:1px solid var(--line);background:var(--surface);flex-direction:column;justify-content:center;gap:0;display:flex}.auth-side ul{border-top:1px solid var(--line);margin:0;padding:0;list-style:none}.auth-side li{border-bottom:1px solid var(--line);grid-template-columns:40px minmax(0,1fr);gap:8px;padding:16px 0;display:grid}.auth-side li .mono{color:var(--accent);padding-top:3px;font-size:12.5px}.auth-side li strong{font-weight:500;display:block}.auth-side li span:last-child{color:var(--muted);font-size:14.5px}@media (width<=860px){.auth{grid-template-columns:1fr;min-height:0}.auth-side{border-left:0;border-top:1px solid var(--line)}}.btn-discord{border-radius:var(--radius);color:#fff;width:100%;font:500 16px var(--font-sans);cursor:pointer;transition:transform .3s var(--ease), background .3s;background:#5865f2;border:0;justify-content:center;align-items:center;gap:10px;margin-top:28px;padding:14px 18px;display:inline-flex}.btn-discord:hover{background:#4752c4}.btn-discord:disabled{opacity:.75;cursor:progress}.fineprint{color:var(--muted);margin:14px 0 0;font-size:13px}.checkout-btn{width:100%;margin-top:8px}.checkout-summary{border-top:1px solid var(--line);margin:24px 0}.checkout-summary div{border-bottom:1px solid var(--line);justify-content:space-between;padding:12px 0;font-size:15px;display:flex}.checkout-summary dt{color:var(--muted)}.checkout-summary dd{font-family:var(--font-mono);margin:0}.profile{align-items:center;gap:18px;display:flex}.profile h1{margin:0}.profile .meta{margin:4px 0 0}.tabs{border-bottom:1px solid var(--line);margin-top:32px;display:flex;overflow-x:auto}.tabs a{color:var(--muted);white-space:nowrap;border-bottom:2px solid #0000;margin-bottom:-1px;padding:12px 18px;font-size:15px;text-decoration:none}.tabs a:hover{color:var(--text)}.tabs a[aria-current=page]{color:var(--text);border-bottom-color:var(--accent)}.course-status{border-top:1px solid var(--line);border-bottom:1px solid var(--line);grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:8px 16px;padding:22px 0;display:grid}.course-status a{color:var(--text);font-weight:500;text-decoration:none}.course-status .meta{margin:4px 0 0}.course-status .pct{font:500 30px var(--font-mono);letter-spacing:-.04em}.course-status .progress{grid-column:1/-1;max-width:none;margin-top:6px}.module-dots{flex-wrap:wrap;grid-column:1/-1;gap:4px;margin-top:8px;display:flex}.module-dots .dot{border:1px solid var(--line);background:var(--surface);width:16px;height:16px}.module-dots .dot.partial{background:var(--accent-soft);border-color:var(--accent)}.module-dots .dot.done{background:var(--accent);border-color:var(--accent)}.activity{border-top:1px solid var(--line);border-bottom:1px solid var(--line);padding:22px 0;overflow-x:auto}.activity-grid{grid-template-rows:repeat(7,13px);grid-auto-columns:13px;grid-auto-flow:column;gap:3px;display:grid}.activity .meta{margin:14px 0 0}.cell{background:var(--surface-2)}.cell.l1{background:color-mix(in srgb, var(--accent) 30%, var(--surface-2))}.cell.l2{background:color-mix(in srgb, var(--accent) 55%, var(--surface-2))}.cell.l3{background:color-mix(in srgb, var(--accent) 78%, var(--surface-2))}.cell.l4{background:var(--accent)}.progress-list{margin:0;padding:0;list-style:none}.badge-grid{border-top:1px solid var(--line);border-left:1px solid var(--line);grid-template-columns:repeat(auto-fill,minmax(min(300px,100%),1fr));margin:0;padding:0;list-style:none;display:grid}.badge-card{border-right:1px solid var(--line);border-bottom:1px solid var(--line);align-items:flex-start;gap:14px;padding:20px;display:flex}.badge-card strong{font-size:16px;font-weight:500;display:block}.badge-card p{color:var(--muted);margin:2px 0 0;font-size:14px}.badge-card>div{flex:1;min-width:0}.badge-meta{font:500 12px var(--font-mono);margin-top:10px!important}.badge-progress{background:var(--line);height:3px;margin-top:6px;overflow:hidden}.badge-progress span{background:var(--accent);width:0;height:100%;display:block}.badge-card:not(.is-locked) .badge-progress{display:none}.badge-card:not(.is-locked) .badge-meta{color:var(--accent)}.badge-icon{flex:none;width:52px;height:52px}.badge-shape{fill:var(--b-fill);stroke:var(--b-edge);stroke-width:1.5px}.badge-glyph{stroke:var(--b-ink)}.tier-bronze{--b-fill:#f3dcc4;--b-edge:#b8733a;--b-ink:#8a4b16}.tier-silver{--b-fill:#e7e5e4;--b-edge:#8a837d;--b-ink:#44403c}.tier-gold{--b-fill:#fbe9a8;--b-edge:#c99a13;--b-ink:#8a6500}.badge-card.is-locked .badge-icon{filter:grayscale();opacity:.35}.toasts{z-index:50;pointer-events:none;justify-items:end;gap:10px;display:grid;position:fixed;bottom:16px;left:16px;right:16px}.toast{pointer-events:auto;border:1px solid var(--line);border-left:2px solid var(--accent);border-radius:var(--radius);background:var(--surface);width:min(380px,100%);box-shadow:var(--shadow);animation:toast-in .4s var(--ease);transition:opacity .2s, transform .3s var(--ease);align-items:flex-start;gap:12px;padding:14px 14px 14px 16px;display:flex}.toast.leaving{opacity:0;transform:translateY(8px)}.toast .badge-icon{width:44px;height:44px}.toast>div{flex:1}.toast strong{font-weight:500;display:block}.toast p{color:var(--muted);margin:2px 0 0;font-size:14px}.toast-close{color:var(--muted);cursor:pointer;background:0 0;border:0;padding:0 2px;font-size:20px;line-height:1}@keyframes toast-in{0%{opacity:0;transform:translateY(12px)}}.plan-card{border:1px solid var(--line);background:var(--surface);grid-template-columns:minmax(0,5fr) minmax(0,7fr);gap:clamp(28px,5vw,72px);padding:clamp(32px,4vw,48px);display:grid;position:relative}.plan-card:before{content:"";background:var(--accent);width:3px;position:absolute;inset:-1px auto -1px -1px}.plan-head{flex-direction:column;align-items:flex-start;display:flex}.plan-head h3{margin:0;font-size:28px}.plan-head .btn{margin-top:28px}.plan-current .btn{border-style:dashed}.plan-price{align-items:baseline;gap:6px;margin:12px 0 4px;display:flex}.plan-price strong{font:500 56px var(--font-mono);letter-spacing:-.05em}.plan-features{border-top:1px solid var(--line-soft);margin:0;padding:0;font-size:15px;list-style:none}.plan-features li{border-bottom:1px solid var(--line-soft);padding:9px 0 9px 24px;position:relative}.plan-features li:before{content:"";border-left:2px solid var(--accent);border-bottom:2px solid var(--accent);width:10px;height:6px;position:absolute;top:1.15em;left:2px;transform:translateY(-60%)rotate(-45deg)}@media (width<=760px){.plan-card{grid-template-columns:minmax(0,1fr)}.plan-price strong{font-size:44px}}.faq{max-width:760px}.faq details:first-of-type{border-top:1px solid var(--line)}.faq details{border-bottom:1px solid var(--line);padding:18px 0}.faq summary{cursor:pointer;justify-content:space-between;gap:16px;font-size:17px;font-weight:500;list-style:none;display:flex}.faq summary::-webkit-details-marker{display:none}.faq summary:after{content:"+";font:400 20px/1 var(--font-mono);color:var(--accent);transition:transform .3s var(--ease)}.faq details[open] summary:after{transform:rotate(45deg)}.faq p{color:var(--muted);max-width:62ch;margin:12px 0 0}.notice{border:1px solid var(--accent);border-radius:var(--radius);background:var(--accent-soft);margin-top:28px;padding:14px 18px;font-weight:500}.sub-card{border-top:1px solid var(--line);border-bottom:1px solid var(--line);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:20px;margin-top:32px;padding:26px 0;display:flex}.sub-card h2{margin:0;font-size:26px}.sub-card .meta{margin:6px 0 0}.sub-actions{flex-wrap:wrap;gap:10px;display:flex}.sub-actions [hidden]{display:none}.confirm{border:1px solid var(--line);background:var(--surface);width:min(460px,100vw - 32px);color:var(--text);box-shadow:var(--shadow);border-radius:10px;padding:26px}.confirm::backdrop{backdrop-filter:blur(3px);background:#12111080}.confirm h3{margin:0 0 8px;font-size:20px}.confirm .sub-actions{justify-content:flex-end;margin-top:22px}.search-box{--pagefind-ui-scale:.9;--pagefind-ui-primary:var(--accent);--pagefind-ui-text:var(--text);--pagefind-ui-background:var(--surface);--pagefind-ui-border:var(--line);--pagefind-ui-tag:var(--accent-soft);--pagefind-ui-border-radius:6px;--pagefind-ui-font:var(--font-sans);max-width:820px;margin-top:32px}.skeleton{gap:14px;display:grid}.skeleton span{background:linear-gradient(90deg, var(--surface-2) 0%, var(--line) 50%, var(--surface-2) 100%);height:14px;animation:shimmer 1.4s var(--ease) infinite;background-size:200% 100%;border-radius:4px;display:block}.skeleton .sk-input{border-radius:6px;height:48px}.skeleton .sk-title{width:42%;height:18px;margin-top:12px}.skeleton .sk-line{width:92%}.skeleton .sk-short{width:64%}@keyframes shimmer{0%{background-position:100% 0}to{background-position:-100% 0}}.empty-state{border:1px dashed var(--line);border-radius:var(--radius);justify-items:start;gap:6px;max-width:560px;padding:28px;display:grid}.empty-state .ui-icon{color:var(--faint);margin-bottom:6px;font-size:26px}.empty-state strong{font-size:17px;font-weight:500}.empty-state p{color:var(--muted);margin:0;font-size:15px}@media (prefers-reduced-motion:reduce){*,:before,:after{transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}.read-progress{display:none}}.aud-tags{flex-wrap:wrap;gap:6px;display:inline-flex}.tag-aud{color:var(--text)}.tag-aud .ui-icon{color:var(--accent);font-size:13px}.tag-core{color:var(--text);border-color:var(--text)}.course-for{flex-wrap:wrap;align-items:center;gap:10px;margin-top:22px;display:flex}.course-progress{align-items:center;gap:14px;max-width:520px;margin-top:22px;display:flex}.course-progress .progress{flex:1;margin:0}.filter-bar{top:var(--nav-h);z-index:5;margin:0 calc(var(--gutter) * -1);padding:14px var(--gutter);background:color-mix(in srgb, var(--bg) 92%, transparent);backdrop-filter:blur(10px);border-bottom:1px solid var(--line);flex-wrap:wrap;align-items:center;gap:12px 16px;display:flex;position:sticky}.filter-count{margin-left:auto}.segmented{border:1px solid var(--line);border-radius:var(--radius);background:var(--surface);flex-wrap:wrap;gap:2px;padding:3px;display:inline-flex}.segmented button{color:var(--muted);font:500 14px var(--font-sans);cursor:pointer;background:0 0;border:0;border-radius:4px;align-items:center;gap:7px;padding:7px 12px;transition:background .25s,color .25s;display:inline-flex}.segmented button:hover{color:var(--text)}.segmented button .ui-icon{color:var(--accent)}.segmented button[aria-pressed=true]{background:var(--text);color:var(--bg)}.segmented button[aria-pressed=true] .ui-icon{color:inherit}.mgroup{padding-top:48px}.mgroup[hidden]{display:none}.mgroup-head{flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:8px 24px;margin-bottom:18px;display:flex}.mgroup-head h2{margin:0;font-size:24px}.mgroup-head .meta{margin:0}.mgrid{border-top:1px solid var(--line);border-left:1px solid var(--line);grid-template-columns:repeat(auto-fill,minmax(min(290px,100%),1fr));margin:0;padding:0;list-style:none;display:grid}.mgrid>li{border-right:1px solid var(--line);border-bottom:1px solid var(--line);display:flex}.mgrid>li[hidden]{display:none}.mcard{width:100%;min-height:220px;color:var(--text);transition:background .3s var(--ease);flex-direction:column;gap:12px;padding:22px;text-decoration:none;display:flex;position:relative}.mcard:hover{background:var(--surface)}.mcard:before{content:"";background:var(--accent);transform-origin:top;width:3px;transition:transform .5s var(--ease);position:absolute;top:-1px;bottom:-1px;left:-1px;transform:scaleY(0)}.mcard.is-complete:before{transform:scaleY(1)}.mcard-top{align-items:center;gap:8px;display:flex}.mcard-no{color:var(--faint);margin-right:auto;font-size:12.5px}.mcard-lock,.mcard-check{font-size:17px;display:none}.mcard-lock{color:var(--faint)}.mcard-check{color:var(--accent)}.mcard.is-locked .mcard-lock,.mcard.is-complete .mcard-check{display:inline-flex}.mcard-title{letter-spacing:-.025em;font-size:20px;font-weight:500;line-height:1.2;transition:color .3s}.mcard:hover .mcard-title{color:var(--accent)}.mcard.is-locked .mcard-title{color:var(--muted)}.mcard-foot{gap:8px;margin-top:auto;padding-top:6px;display:grid}.mcard-status{color:var(--muted);justify-content:space-between;gap:8px;font-size:13px;display:flex}.mcard-status .mono{color:var(--faint);font-size:12px}.mcard.is-complete [data-status],.mcard.is-started [data-status]{color:var(--accent);font-weight:500}.seg{gap:3px;display:flex}.seg>span{background:var(--line);height:5px;transition:background .4s var(--ease);flex:1}.seg>span.is-done{background:var(--accent)}.seg-lg>span{height:8px}.about-course{border-top:1px solid var(--line);border-bottom:1px solid var(--line);margin-top:56px}.about-course summary{cursor:pointer;padding:18px 0;font-size:17px;font-weight:500}.about-course .prose{padding-bottom:12px}.crumb{color:inherit;text-decoration:none}.crumb:hover{color:var(--accent)}.module-tags{flex-wrap:wrap;align-items:center;gap:8px 10px;margin-top:4px;display:flex}.module-tags>.meta{margin-left:4px}.deliverable{border-top:1px solid var(--line);border-bottom:1px solid var(--line);grid-template-columns:110px minmax(0,1fr);gap:12px;max-width:720px;margin-top:24px;padding:14px 0;display:grid}.deliverable .mono{text-transform:uppercase;letter-spacing:.05em;color:var(--accent);padding-top:3px;font-size:11.5px}.deliverable p{margin:0}.module-progress{grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:16px;max-width:720px;margin-top:24px;display:grid}.module-progress.is-complete [data-status],.module-progress.is-started [data-status]{color:var(--accent)}.module-actions{flex-wrap:wrap;gap:12px;margin-top:28px;display:flex}.module-actions [hidden]{display:none}.module-chapters{padding-top:40px}.module-chapters .syllabus{border-top:1px solid var(--text);max-width:900px;margin-top:0}.module-pager{max-width:900px;margin-top:48px}.lesson-meta .aud-tags{text-transform:none;letter-spacing:0}.nav-module-title a{color:inherit;text-decoration:none}.nav-module-title a:hover{color:var(--accent)}@media (width<=560px){.filter-count{display:none}.segmented{width:100%}.segmented button{flex:auto;justify-content:center;padding:8px 10px;font-size:13px}.deliverable{grid-template-columns:1fr;gap:4px}}.module-intro{padding-top:40px}.invoice-list{border-top:1px solid var(--line);margin:0;padding:0;list-style:none}.invoice-list li{border-bottom:1px solid var(--line);grid-template-columns:1.4fr 1fr 1fr auto;align-items:center;gap:12px;padding:12px 0;font-size:15px;display:grid}.invoice-list li span:last-child{gap:14px;display:flex}@media (width<=560px){.invoice-list li{grid-template-columns:1fr 1fr}}
