[data-page=homepage]{--color-bg:#0a0a0a;--color-surface:#0f1115;--color-surface-2:#161b22;--color-elevated:#1c2128;--color-border:#23262d;--color-border-strong:#30363d;--color-fg:#ededed;--color-fg-muted:#8b949e;--color-fg-subtle:#6e7681;--color-accent:#2f81f7;--color-link:#58a6ff;--color-accent-fg:#fff;--color-glow:rgba(47,129,247,.18);--code-bg:#0f1115;--code-plain:#e6edf3;--code-comment:#8b949e;--code-keyword:#ff7b72;--code-string:#a5d6ff;--code-func:#d2a8ff;--code-number:#79c0ff;--code-variable:#ffa657;--hp-font-sans:var(--font-geist-sans),ui-sans-serif,system-ui,sans-serif;--hp-font-mono:var(--font-geist-mono),ui-monospace,SFMono-Regular,Menlo,monospace;--text-hero:clamp(2.75rem,6vw,4.5rem);--text-h2:clamp(1.75rem,3vw,2.25rem);--text-h3:1.25rem;--text-body:1.0625rem;--text-sm:0.875rem;--text-eyebrow:0.8125rem;--container-max:1100px;--container-pad:24px;--section-y:clamp(80px,12vw,160px);--radius-sm:6px;--radius-md:8px;--radius-lg:12px;--hairline:1px solid var(--color-border);font-family:var(--hp-font-sans);background-color:var(--color-bg);color:var(--color-fg);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}@media (max-width:640px){[data-page=homepage]{--container-pad:16px}}.page-grid{position:fixed;inset:0;z-index:0;pointer-events:none;background-image:linear-gradient(to right,color-mix(in oklch,var(--color-border) 40%,transparent) 1px,transparent 1px),linear-gradient(to bottom,color-mix(in oklch,var(--color-border) 40%,transparent) 1px,transparent 1px);background-size:56px 56px;opacity:.35;transition:opacity .3s ease}.page-grid:before{background:radial-gradient(300px circle at var(--gx,-999px) var(--gy,-999px),color-mix(in oklch,var(--color-accent) 14%,transparent),transparent 70%);transition:opacity .25s ease}.page-grid:after,.page-grid:before{content:"";position:absolute;inset:0;opacity:0;pointer-events:none}.page-grid:after{background-image:linear-gradient(to right,color-mix(in oklch,var(--color-border) 80%,transparent) 1px,transparent 1px),linear-gradient(to bottom,color-mix(in oklch,var(--color-border) 80%,transparent) 1px,transparent 1px);background-size:56px 56px;-webkit-mask-image:radial-gradient(200px circle at var(--gx,-999px) var(--gy,-999px),#000 0,transparent 70%);mask-image:radial-gradient(200px circle at var(--gx,-999px) var(--gy,-999px),#000 0,transparent 70%);transform:scale(1);transform-origin:var(--gx,50%) var(--gy,50%);transition:opacity .25s ease,transform .25s ease}.page-grid-active:before{opacity:1}.page-grid-active:after{opacity:1;transform:scale(1.25)}.hp-container{max-width:var(--container-max);margin-left:auto;margin-right:auto;padding-left:var(--container-pad);padding-right:var(--container-pad)}.hp-section{padding-top:var(--section-y);padding-bottom:var(--section-y)}.hp-section-border{border-top:var(--hairline)}.hp-btn{display:inline-flex;align-items:center;justify-content:center;height:40px;padding:0 20px;border-radius:var(--radius-md);font-family:var(--hp-font-sans);font-size:var(--text-sm);font-weight:500;line-height:1;text-decoration:none;transition:background-color .15s ease,border-color .15s ease;cursor:pointer}.hp-btn-lg{height:44px}.hp-btn-primary{background-color:#fff;color:#000;border:1px solid #fff}.hp-btn-primary:hover{background-color:hsla(0,0%,100%,.92);border-color:hsla(0,0%,100%,.92)}.hp-btn-secondary{background-color:transparent;color:var(--color-fg);border:1px solid var(--color-border-strong)}.hp-btn-secondary:hover{border-color:var(--color-fg-subtle);background-color:var(--color-surface-2)}.hp-btn:focus-visible,[data-page=homepage] a:focus-visible,[data-page=homepage] button:focus-visible{outline:2px solid var(--color-accent);outline-offset:2px}.nav-header{position:fixed;top:0;left:0;right:0;z-index:50;height:64px;transition:background-color .25s ease,border-color .25s ease,backdrop-filter .25s ease;border-bottom:1px solid transparent}.nav-header[data-scrolled]{background-color:hsla(0,0%,4%,.8);backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);border-bottom-color:var(--color-border)}.nav-inner{max-width:1280px;margin:0 auto;height:100%;display:flex;align-items:center;justify-content:space-between;padding:0 var(--container-pad)}.nav-wordmark{font-family:var(--hp-font-mono);font-size:1.125rem;font-weight:600;color:var(--color-fg);text-decoration:none}.nav-actions{display:flex;align-items:center;gap:12px}.nav-mobile-trigger{display:none;background:none;border:none;color:var(--color-fg);padding:8px;cursor:pointer}@media (max-width:767px){.nav-actions{display:none}.nav-mobile-trigger{display:flex;align-items:center;justify-content:center}}.nav-overlay{position:fixed;inset:0;z-index:100;background-color:var(--color-bg);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:16px;padding:24px}.nav-overlay-close{position:absolute;top:16px;right:var(--container-pad);background:none;border:none;color:var(--color-fg);padding:8px;cursor:pointer}.code-card{border:var(--hairline);border-radius:var(--radius-lg);overflow:hidden;background-color:var(--color-surface)}.code-card-header{display:flex;align-items:center;padding:12px 20px;border-bottom:var(--hairline)}.code-card-tab{font-family:var(--hp-font-mono);font-size:var(--text-sm);color:var(--color-fg-muted)}.code-card-body{padding:20px 24px;overflow-x:auto}.code-card-body pre{margin:0;background:transparent!important;font-family:var(--hp-font-mono);font-size:.9375rem;line-height:1.6}.code-card-body code{font-family:inherit}.typing-cursor{display:inline-block;width:2px;height:1.1em;background:var(--color-fg);margin-left:1px;vertical-align:text-bottom;animation:cursor-blink 1.06s steps(2) infinite}@keyframes cursor-blink{0%{opacity:1}50%{opacity:0}}.code-card-body{min-height:340px;transition:opacity .3s ease-in}.code-card-fading .code-card-body{opacity:0;transition:opacity .5s ease-out}.feature-card{background-color:var(--color-surface);border:var(--hairline);border-radius:var(--radius-md);padding:28px;transition:border-color .15s ease,background-color .15s ease}.feature-card:hover{border-color:var(--color-border-strong);background-color:var(--color-surface-2)}.tab-bar{display:flex;justify-content:center;gap:32px;margin-bottom:48px}.tab-button{background:none;border:none;border-bottom:2px solid transparent;padding:8px 0;font-family:var(--hp-font-sans);font-size:var(--text-body);font-weight:500;color:var(--color-fg-muted);cursor:pointer;transition:color .15s ease,border-color .15s ease}.tab-button:hover{color:var(--color-fg)}.tab-button[data-active]{color:var(--color-fg);border-bottom-color:var(--color-accent)}@media (max-width:640px){.tab-bar{gap:20px;overflow-x:auto;justify-content:flex-start;padding-bottom:1px;-webkit-overflow-scrolling:touch}.tab-button{white-space:nowrap;flex-shrink:0}}.curriculum-editor{border:1px solid var(--color-border);border-radius:var(--radius-lg);overflow:hidden;background:var(--color-surface)}.curriculum-editor-chrome{display:flex;align-items:center;padding:10px 16px;border-bottom:1px solid var(--color-border);background:var(--color-surface-2)}.curriculum-editor-tab{font-family:var(--hp-font-mono);font-size:var(--text-sm);color:var(--color-fg-muted)}.curriculum-editor-body{display:flex;padding:16px 0;overflow-x:auto}.curriculum-editor-gutters{display:flex;flex-direction:column;padding:0 14px 0 16px;text-align:right;color:var(--color-fg-subtle);user-select:none;flex-shrink:0;border-right:1px solid var(--color-border)}.curriculum-editor-code,.curriculum-editor-gutters{font-family:var(--hp-font-mono);font-size:.875rem;line-height:1.7}.curriculum-editor-code{margin:0;padding:0 20px;color:var(--code-plain);background:transparent;flex:1;min-width:0}.curriculum-editor-code .ct-kw{color:var(--code-keyword)}.curriculum-editor-code .ct-fn{color:var(--code-func)}.curriculum-editor-code .ct-str{color:var(--code-string)}.curriculum-editor-code .ct-num{color:var(--code-number)}.curriculum-editor-code .ct-cmt{color:var(--code-comment)}.bento-sec-head{text-align:center;max-width:680px;margin:0 auto 56px}.bento-sec-head h2{font-size:var(--text-h2);font-weight:600;letter-spacing:-.02em;line-height:1.1;color:var(--color-fg);margin:0}.bento-sec-head p{font-size:var(--text-body);color:var(--color-fg-muted);margin:16px 0 0}.bento{display:grid;gap:1px;background:var(--color-border);border:1px solid var(--color-border);border-radius:var(--radius-lg);overflow:hidden;grid-template-columns:repeat(4,1fr);grid-auto-rows:minmax(150px,auto);grid-template-areas:"tutor     tutor     editor     editor" "tutor     tutor     pointers   stl" "templates toolchain setup      setup"}.bento-cell{position:relative;background:var(--color-bg);padding:28px;display:flex;flex-direction:column;overflow:hidden;transition:background-color .15s ease;opacity:0;transform:translateY(8px);animation:hp-fade-up .5s cubic-bezier(.22,1,.36,1) forwards}.bento-stagger-0{animation-delay:0ms}.bento-stagger-1{animation-delay:60ms}.bento-stagger-2{animation-delay:.12s}.bento-stagger-3{animation-delay:.18s}.bento-stagger-4{animation-delay:.24s}.bento-stagger-5{animation-delay:.3s}.bento-stagger-6{animation-delay:.36s}.bento-cell:hover{background-color:var(--color-surface)}.bento-cell-spotlight{position:absolute;inset:0;pointer-events:none;background:radial-gradient(280px circle at var(--mx,50%) var(--my,50%),rgba(47,129,247,.1),transparent 70%);opacity:0;transition:opacity .2s ease}.bento-cell:hover .bento-cell-spotlight{opacity:1}.bento-eyebrow{font-family:var(--hp-font-mono);font-size:var(--text-eyebrow);color:var(--color-fg-subtle);letter-spacing:.02em;margin:0 0 14px;display:flex;align-items:center;gap:8px}.bento-title{font-size:var(--text-h3);font-weight:600;line-height:1.3;color:var(--color-fg);margin:0 0 8px}.bento-desc{line-height:1.55;color:var(--color-fg-muted);margin:0}.bento-chip,.bento-desc{font-size:var(--text-sm)}.bento-chip{display:inline-block;font-family:var(--hp-font-mono);color:var(--code-plain);background:var(--color-surface-2);border:1px solid var(--color-border);border-radius:var(--radius-sm);padding:4px 9px;margin-top:16px}.bento-mini-chat{display:flex;flex-direction:column;gap:10px;margin-top:18px;flex:1;justify-content:flex-end}.bento-chat-msg{max-width:86%;padding:9px 12px;border-radius:10px;font-size:var(--text-sm);line-height:1.45}.bento-chat-msg code{font-family:var(--hp-font-mono);font-size:.75rem}.bento-chat-user{align-self:flex-end;background:var(--color-accent);color:#fff}.bento-chat-user code{background:hsla(0,0%,100%,.18);padding:1px 4px;border-radius:3px}.bento-chat-tutor{align-self:flex-start;background:var(--color-surface-2);color:var(--color-fg);border:1px solid var(--color-border)}.bento-chat-tutor code{background:color-mix(in oklch,var(--color-border) 60%,transparent);padding:1px 4px;border-radius:3px}.bento-tier-row{display:flex;flex-wrap:wrap;gap:6px;margin-top:16px}.bento-tier{font-family:var(--hp-font-mono);font-size:.6875rem;font-weight:500;padding:3px 8px;border-radius:var(--radius-sm);border:1px solid}.bento-tier-1{color:var(--color-accent);border-color:rgba(47,129,247,.35);background:rgba(47,129,247,.1)}.bento-tier-2,.bento-tier-3{color:#d29922;border-color:rgba(210,153,34,.3);background:rgba(210,153,34,.08)}.bento-tier-4{color:#3fb950;border-color:rgba(63,185,80,.3);background:rgba(63,185,80,.08)}.bento-mini-editor{margin-top:16px;border:1px solid var(--color-border);border-radius:var(--radius-md);overflow:hidden;background:var(--color-surface)}.bento-editor-chrome{display:flex;align-items:center;gap:6px;padding:8px 12px;border-bottom:1px solid var(--color-border)}.bento-std-pill{font-family:var(--hp-font-mono);font-size:.6875rem;color:var(--color-fg-muted);border:1px solid var(--color-border);border-radius:999px;padding:2px 8px}.bento-std-active{color:var(--color-fg);border-color:var(--color-border-strong);background:var(--color-surface-2)}.bento-editor-actions{margin-left:auto;display:flex;gap:6px}.bento-mini-run{font-weight:500;border-radius:var(--radius-sm);border:1px solid var(--color-border);color:var(--color-fg);background:var(--color-surface-2)}.bento-mini-run,.bento-mini-submit{font-size:.6875rem;padding:3px 10px}.bento-mini-submit{font-weight:600;border-radius:var(--radius-sm);background:#fff;color:#000;border:1px solid #fff}.bento-editor-body{padding:12px 14px;font-family:var(--hp-font-mono);font-size:.8125rem;line-height:1.55;color:var(--code-plain)}.bento-editor-body .ce-kw{color:var(--code-keyword)}.bento-editor-body .ce-fn{color:var(--code-func)}.bento-editor-body .ce-num{color:var(--code-number)}.bento-setup-row{display:flex;align-items:center;gap:18px}.bento-setup-icon{color:var(--color-accent);flex-shrink:0}@media (max-width:900px){.bento{grid-template-columns:repeat(2,1fr);grid-auto-rows:auto;grid-template-areas:"tutor     tutor" "editor    editor" "pointers  stl" "templates toolchain" "setup     setup"}}@media (max-width:600px){.bento{grid-template-columns:1fr;grid-auto-rows:auto;grid-template-areas:"tutor" "editor" "setup" "pointers" "stl" "templates" "toolchain"}.bento-cell{padding:22px}}[data-page=homepage] [data-slot=accordion-trigger]{color:var(--color-fg)}[data-page=homepage] [data-slot=accordion-content]{color:var(--color-fg-muted)}[data-page=homepage] [data-slot=accordion-trigger-icon]{color:var(--color-fg-subtle)}.hp-reveal{opacity:0;transform:translateY(8px);animation:hp-fade-up .5s cubic-bezier(.22,1,.36,1) forwards}.hp-reveal-d1{animation-delay:60ms}.hp-reveal-d2{animation-delay:.12s}.hp-reveal-d3{animation-delay:.18s}.hp-reveal-d4{animation-delay:.24s}.hp-reveal-d5{animation-delay:.3s}@keyframes hp-fade-up{to{opacity:1;transform:translateY(0)}}@media (prefers-reduced-motion:reduce){.hp-reveal{opacity:1;transform:none;animation:none}*,:after,:before{animation-duration:.001ms!important;animation-iteration-count:1!important;transition-duration:.001ms!important}}.hero-section{position:relative;overflow:hidden}.hero-glow{position:absolute;inset:-20% 0 auto 0;height:70%;pointer-events:none;background:radial-gradient(50% 50% at 50% 0,var(--color-glow),transparent 70%);animation:heroGlow 8s ease-in-out infinite;will-change:opacity,transform}@keyframes heroGlow{0%,to{opacity:.7;transform:translateY(0) scale(1)}50%{opacity:1;transform:translateY(-2%) scale(1.06)}}.hero-grid{position:absolute;inset:0;pointer-events:none;background-image:linear-gradient(to right,color-mix(in oklch,var(--color-border) 60%,transparent) 1px,transparent 1px),linear-gradient(to bottom,color-mix(in oklch,var(--color-border) 60%,transparent) 1px,transparent 1px);background-size:56px 56px;-webkit-mask-image:radial-gradient(70% 60% at 50% 35%,#000 30%,transparent 75%);mask-image:radial-gradient(70% 60% at 50% 35%,#000 30%,transparent 75%)}.spotlight-card{position:relative;background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-md);padding:28px;transition:border-color .15s ease,background-color .15s ease,transform .15s ease}.spotlight-card:before{content:"";position:absolute;inset:0;border-radius:inherit;background:radial-gradient(180px circle at var(--mx,50%) var(--my,50%),color-mix(in oklch,var(--color-accent) 16%,transparent),transparent 60%);opacity:0;transition:opacity .2s ease;pointer-events:none}.spotlight-card:hover{border-color:var(--color-border-strong);background-color:var(--color-surface-2);transform:translateY(-2px)}.spotlight-card:hover:before{opacity:1}@property --angle{syntax:"<angle>";initial-value:0deg;inherits:false}.editor-card{position:relative;border-radius:var(--radius-lg);background:var(--color-surface)}.editor-card:after{content:"";position:absolute;inset:0;border-radius:inherit;padding:1px;background:conic-gradient(from var(--angle),transparent 0deg,color-mix(in oklch,var(--color-accent) 70%,transparent) 60deg,transparent 140deg);-webkit-mask:linear-gradient(#000 0 0) content-box,linear-gradient(#000 0 0);mask:linear-gradient(#000 0 0) content-box,linear-gradient(#000 0 0);-webkit-mask-composite:xor;mask-composite:exclude;animation:editorSpin 6s linear infinite;pointer-events:none}@keyframes editorSpin{to{--angle:360deg}}.hp-btn-primary{transition:background-color .15s ease,border-color .15s ease,transform .08s ease}.hp-btn-primary:active{transform:translateY(1px)}.auth-page{position:relative;display:flex;min-height:100vh;align-items:center;justify-content:center;background-color:var(--color-bg);font-family:var(--hp-font-sans);padding:48px var(--container-pad);overflow:hidden}.auth-page:before{top:0;left:0;right:0;height:60%;background:radial-gradient(50% 60% at 50% 0,var(--color-glow),transparent 70%)}.auth-page:after,.auth-page:before{content:"";position:absolute;pointer-events:none;z-index:0}.auth-page:after{inset:0;background-image:linear-gradient(to right,color-mix(in oklch,var(--color-border) 40%,transparent) 1px,transparent 1px),linear-gradient(to bottom,color-mix(in oklch,var(--color-border) 40%,transparent) 1px,transparent 1px);background-size:56px 56px;-webkit-mask-image:radial-gradient(60% 60% at 50% 50%,#000 10%,transparent 70%);mask-image:radial-gradient(60% 60% at 50% 50%,#000 10%,transparent 70%)}.auth-card{position:relative;z-index:1;width:100%;max-width:400px;background-color:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-lg);padding:40px 32px}@media (max-width:480px){.auth-card{padding:32px 20px}}.auth-card-header{display:flex;flex-direction:column;align-items:center;gap:8px;margin-bottom:32px}.auth-logo{display:inline-flex;align-items:center;justify-content:center;width:44px;height:44px;border-radius:var(--radius-md);background-color:var(--color-accent);font-family:var(--hp-font-mono);font-size:var(--text-sm);font-weight:700;color:#fff;text-decoration:none;box-shadow:0 0 24px color-mix(in oklch,var(--color-accent) 40%,transparent);transition:box-shadow .2s ease}.auth-logo:hover{box-shadow:0 0 32px color-mix(in oklch,var(--color-accent) 55%,transparent)}.auth-title{font-family:var(--hp-font-sans);font-size:1.5rem;font-weight:700;letter-spacing:-.02em;color:var(--color-fg);margin:0}.auth-subtitle{font-size:var(--text-sm);color:var(--color-fg-muted);margin:0;text-align:center}.auth-divider{margin-top:24px;padding-top:24px;border-top:1px solid var(--color-border);text-align:center}.auth-input{width:100%;border-radius:var(--radius-md);border:1px solid var(--color-border);background-color:var(--color-surface-2);padding:10px 12px;font-family:var(--hp-font-sans);font-size:var(--text-sm);color:var(--color-fg);outline:none;transition:border-color .15s ease,box-shadow .15s ease}.auth-input::placeholder{color:var(--color-fg-subtle)}.auth-input:focus{border-color:var(--color-accent);box-shadow:0 0 0 1px var(--color-accent)}.auth-label{display:block;margin-bottom:6px;color:var(--color-fg-muted)}.auth-label,.auth-submit{font-family:var(--hp-font-sans);font-size:var(--text-sm);font-weight:500}.auth-submit{width:100%;height:40px;border-radius:var(--radius-md);background-color:#fff;color:#000;border:1px solid #fff;cursor:pointer;transition:background-color .15s ease,transform .08s ease}.auth-submit:hover{background-color:hsla(0,0%,100%,.92)}.auth-submit:active{transform:translateY(1px)}.auth-submit:disabled{opacity:.5;cursor:not-allowed}.auth-submit:focus-visible{outline:2px solid var(--color-accent);outline-offset:2px}.auth-secondary-btn{display:block;width:100%;height:40px;line-height:40px;border-radius:var(--radius-md);background-color:transparent;color:var(--color-fg);border:1px solid var(--color-border-strong);font-family:var(--hp-font-sans);font-size:var(--text-sm);font-weight:500;text-decoration:none;text-align:center;cursor:pointer;transition:background-color .15s ease,border-color .15s ease}.auth-secondary-btn:hover{border-color:var(--color-fg-subtle);background-color:var(--color-surface-2)}.auth-link{color:var(--color-link);text-decoration:none;font-weight:500;transition:color .15s ease}.auth-link:hover{color:var(--color-accent)}.auth-alert{border-radius:var(--radius-md);border:1px solid;padding:12px 16px;text-align:center;font-family:var(--hp-font-sans);font-size:var(--text-sm)}.auth-alert-error{border-color:color-mix(in oklch,#f85149 30%,transparent);background-color:color-mix(in oklch,#f85149 10%,transparent);color:#f85149}.auth-alert-success{border-color:color-mix(in oklch,#3fb950 30%,transparent);background-color:color-mix(in oklch,#3fb950 10%,transparent);color:#3fb950}.auth-alert-info{border-color:color-mix(in oklch,var(--color-accent) 30%,transparent);background-color:color-mix(in oklch,var(--color-accent) 10%,transparent);color:var(--color-link)}.auth-text-sm{font-size:var(--text-sm);color:var(--color-fg-muted)}.auth-text-sm,.auth-text-xs{font-family:var(--hp-font-sans)}.auth-text-xs{font-size:.75rem;color:var(--color-fg-subtle)}