:root{--black:#0a0a0a;--white:#fff;--gray-900:#171717;--gray-700:#404040;--gray-500:#737373;--gray-400:#a3a3a3;--gray-300:#d4d4d4;--gray-200:#e5e5e5;--gray-100:#f5f5f5;--text:var(--black);--text-muted:var(--gray-700);--text-faint:var(--gray-500);--line:var(--gray-200);--line-strong:var(--gray-300);--surface:var(--white);--surface-alt:var(--gray-100);--font-sans:-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;--font-mono:ui-monospace, SFMono-Regular, "SF Mono", Menlo, Consolas, monospace;--step--1:clamp(.82rem, .79rem + .14vw, .89rem);--step-0:clamp(1rem, .96rem + .18vw, 1.09rem);--step-1:clamp(1.2rem, 1.12rem + .36vw, 1.42rem);--step-2:clamp(1.44rem, 1.31rem + .65vw, 1.85rem);--step-3:clamp(1.73rem, 1.51rem + 1.09vw, 2.4rem);--step-4:clamp(2.07rem, 1.72rem + 1.75vw, 3.13rem);--step-5:clamp(2.49rem, 1.94rem + 2.73vw, 4.06rem);--space-2xs:.5rem;--space-xs:.75rem;--space-s:1rem;--space-m:1.5rem;--space-l:2.5rem;--space-xl:4rem;--space-2xl:6rem;--container:76rem;--gutter:clamp(1.25rem, .9rem + 1.75vw, 2.5rem);--transition:.15s ease}*,:before,:after{box-sizing:border-box;border-radius:0}*{margin:0}html{-webkit-text-size-adjust:100%;scroll-behavior:smooth;scroll-padding-top:6rem}body{background:var(--surface);color:var(--text);font-family:var(--font-sans);font-size:var(--step-0);-webkit-font-smoothing:antialiased;text-rendering:optimizelegibility;margin:0;line-height:1.65;overflow-x:hidden}h1,h2,h3,h4{letter-spacing:-.02em;text-wrap:balance;font-weight:600;line-height:1.1}h1{font-size:var(--step-5)}h2{font-size:var(--step-3)}h3{font-size:var(--step-1);letter-spacing:-.01em}p{text-wrap:pretty}a{color:inherit;text-underline-offset:.2em;text-decoration-thickness:1px}img,svg{max-width:100%;height:auto;display:block}ul,ol{padding:0;list-style:none}:focus-visible{outline:2px solid var(--black);outline-offset:3px}::selection{background:var(--black);color:var(--white)}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,:before,:after{transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}.container{width:100%;max-width:var(--container);padding-inline:var(--gutter);margin-inline:auto}.section{padding-block:var(--space-2xl)}.section--tight{padding-block:var(--space-xl)}.section--alt{background:var(--surface-alt)}.section--dark{background:var(--black);color:var(--white)}.section--dark .eyebrow,.section--dark .muted{color:var(--gray-400)}.section--dark .lead{color:var(--gray-300)}.section--ruled{border-top:1px solid var(--line)}.stack>*+*{margin-top:var(--space-s)}.stack-l>*+*{margin-top:var(--space-l)}.eyebrow{font-family:var(--font-mono);font-size:var(--step--1);letter-spacing:.12em;text-transform:uppercase;color:var(--text-faint);font-weight:500}.lead{font-size:var(--step-1);color:var(--text-muted);max-width:46ch;line-height:1.5}.muted{color:var(--text-muted)}.measure{max-width:68ch}.visually-hidden{clip-path:inset(50%);white-space:nowrap;width:1px;height:1px;padding:0;position:absolute;overflow:hidden}.skip-link{z-index:100;padding:var(--space-xs) var(--space-s);background:var(--black);color:var(--white);text-decoration:none;position:absolute;top:0;left:0;transform:translateY(-120%)}.skip-link:focus{transform:translateY(0)}.btn{justify-content:center;align-items:center;gap:var(--space-2xs);border:1px solid var(--black);background:var(--black);color:var(--white);font:inherit;font-size:var(--step--1);letter-spacing:.02em;text-transform:uppercase;cursor:pointer;transition:background var(--transition), color var(--transition), border-color var(--transition);padding:.85em 1.6em;font-weight:500;text-decoration:none;display:inline-flex}.btn:hover{background:var(--gray-700);border-color:var(--gray-700)}.btn--ghost{color:var(--black);background:0 0}.btn--ghost:hover{background:var(--black);color:var(--white);border-color:var(--black)}.section--dark .btn,.footer .btn{background:var(--white);color:var(--black);border-color:var(--white)}.section--dark .btn:hover,.footer .btn:hover{background:var(--gray-300);border-color:var(--gray-300)}.section--dark .btn--ghost,.footer .btn--ghost{color:var(--white);border-color:var(--gray-700);background:0 0}.section--dark .btn--ghost:hover,.footer .btn--ghost:hover{background:var(--white);color:var(--black);border-color:var(--white)}.btn:disabled{opacity:.5;cursor:not-allowed}.btn-row{gap:var(--space-xs);flex-wrap:wrap;display:flex}.link{font-size:var(--step--1);text-transform:uppercase;letter-spacing:.06em;border-bottom:1px solid var(--line-strong);transition:border-color var(--transition);padding-bottom:2px;font-weight:500;text-decoration:none;display:inline-block}.link:hover{border-color:currentColor}.grid{background:var(--line);border:1px solid var(--line);gap:1px;display:grid}.grid>*{background:var(--surface);padding:var(--space-m)}.section--alt .grid>*{background:var(--surface-alt)}.section--dark .grid{background:var(--gray-900);border-color:var(--gray-900)}.section--dark .grid>*{background:var(--black)}@media (width>=40em){.grid--2,.grid--3,.grid--4{grid-template-columns:repeat(2,1fr)}}@media (width>=60em){.grid--3{grid-template-columns:repeat(3,1fr)}.grid--4{grid-template-columns:repeat(4,1fr)}}.split{gap:var(--space-l);display:grid}@media (width>=60em){.split{gap:var(--space-xl);grid-template-columns:minmax(0,20rem) minmax(0,1fr)}.split--sticky>:first-child{align-self:start;position:sticky;top:6rem}}.card-title{font-size:var(--step-1);margin-bottom:var(--space-2xs)}.card-text{color:var(--text-muted);font-size:var(--step--1);line-height:1.6}.section--dark .card-text{color:var(--gray-400)}a.card{gap:var(--space-s);transition:background var(--transition);flex-direction:column;text-decoration:none;display:flex}a.card:hover{background:var(--surface-alt)}.section--alt a.card:hover{background:var(--white)}a.card .link{align-self:flex-start;margin-top:auto}.steps{border-top:1px solid var(--line)}.steps>li{gap:var(--space-2xs);padding-block:var(--space-m);border-bottom:1px solid var(--line);display:grid}@media (width>=48em){.steps>li{gap:var(--space-m);grid-template-columns:minmax(0,16rem) minmax(0,1fr);align-items:baseline}}.step-title{font-family:var(--font-mono);font-size:var(--step--1);letter-spacing:.04em;text-transform:uppercase;font-weight:500}.step-text{color:var(--text-muted)}.faq{border-top:1px solid var(--line)}.faq details{border-bottom:1px solid var(--line)}.faq summary{justify-content:space-between;align-items:baseline;gap:var(--space-s);padding-block:var(--space-s);font-size:var(--step-1);letter-spacing:-.01em;cursor:pointer;font-weight:500;list-style:none;display:flex}.faq summary::-webkit-details-marker{display:none}.faq summary:after{content:"+";font-family:var(--font-mono);font-size:var(--step-2);color:var(--text-faint);transition:transform var(--transition);flex:none;line-height:1}.faq details[open] summary:after{transform:rotate(45deg)}.faq-answer{padding-bottom:var(--space-m);color:var(--text-muted);max-width:68ch}.figure{border:1px solid var(--line);background:var(--surface-alt)}.figure img{aspect-ratio:16/10;object-fit:cover;width:100%}.figure--wide img{aspect-ratio:21/9}@media (width<=40em){.figure--wide img{aspect-ratio:3/2}}.project{gap:var(--space-s);padding-block:var(--space-l);border-bottom:1px solid var(--line);display:grid}@media (width>=48em){.project{gap:var(--space-xl);grid-template-columns:minmax(0,18rem) minmax(0,1fr)}}.project-meta{font-family:var(--font-mono);font-size:var(--step--1);color:var(--text-faint);text-transform:uppercase;letter-spacing:.06em}.tags{gap:var(--space-2xs);flex-wrap:wrap;display:flex}.tag{border:1px solid var(--line-strong);font-family:var(--font-mono);font-size:var(--step--1);color:var(--text-muted);padding:.25em .7em}.field{gap:var(--space-2xs);display:grid}.field label{font-family:var(--font-mono);font-size:var(--step--1);text-transform:uppercase;letter-spacing:.08em;color:var(--text-muted)}.field input,.field select,.field textarea{border:1px solid var(--line-strong);background:var(--white);width:100%;color:var(--text);font:inherit;font-size:var(--step-0);transition:border-color var(--transition);padding:.8em 1em}.field textarea{resize:vertical;min-height:9rem}.field input:hover,.field select:hover,.field textarea:hover{border-color:var(--gray-500)}.field input:focus,.field select:focus,.field textarea:focus{border-color:var(--black);box-shadow:inset 0 0 0 1px var(--black);outline:none}:is(.field input:user-invalid,.field textarea:user-invalid){border-color:var(--gray-900);box-shadow:inset 0 0 0 1px var(--gray-900)}.field-req{color:var(--text-faint);text-transform:none;letter-spacing:0;font-weight:400}.checkbox{gap:var(--space-xs);font-size:var(--step--1);color:var(--text-muted);grid-template-columns:auto minmax(0,1fr);align-items:start;display:grid}.checkbox input{width:1.1em;height:1.1em;accent-color:var(--black);margin-top:.3em}.form-status{border:1px solid var(--black);padding:var(--space-s);font-size:var(--step--1)}.form-status[data-state=error]{border-style:dashed}.honeypot{opacity:0;pointer-events:none;position:absolute;left:-9999px}.header{z-index:50;background:var(--white);border-bottom:1px solid var(--line);position:sticky;top:0}.header-inner{justify-content:space-between;align-items:center;gap:var(--space-m);min-height:4.5rem;display:flex}.logo{font-weight:600;font-size:var(--step-0);letter-spacing:-.02em;white-space:nowrap;text-decoration:none}.logo span{color:var(--text-faint);font-weight:400}.nav{display:none}.nav ul{align-items:center;gap:var(--space-m);display:flex}.nav a{font-size:var(--step--1);color:var(--text-muted);transition:color var(--transition);text-decoration:none}.nav a:hover{color:var(--black)}.nav a[aria-current=page]{color:var(--black);font-weight:500}.lang{gap:var(--space-2xs);font-family:var(--font-mono);font-size:var(--step--1);display:flex}.lang a{color:var(--text-faint);transition:color var(--transition);padding:.2em .4em;text-decoration:none}.lang a:hover{color:var(--black)}.lang a[aria-current=true]{color:var(--black);background:var(--gray-100)}.header-actions{align-items:center;gap:var(--space-s);display:flex}.menu-toggle{align-items:center;gap:var(--space-2xs);border:1px solid var(--line-strong);font:inherit;font-family:var(--font-mono);font-size:var(--step--1);text-transform:uppercase;letter-spacing:.08em;cursor:pointer;background:0 0;padding:.5em .8em;display:inline-flex}.mobile-nav{border-top:1px solid var(--line);padding-block:var(--space-s) var(--space-m)}.mobile-nav[hidden]{display:none}.mobile-nav a{padding-block:var(--space-xs);font-size:var(--step-1);border-bottom:1px solid var(--line);text-decoration:none;display:block}@media (width>=60em){.nav{display:block}.menu-toggle,.mobile-nav{display:none}}.footer{background:var(--black);color:var(--gray-300);padding-block:var(--space-xl) var(--space-l);font-size:var(--step--1)}.footer a{color:var(--gray-300);transition:color var(--transition);text-decoration:none}.footer a:hover{color:var(--white)}.footer h2{font-family:var(--font-mono);font-size:var(--step--1);text-transform:uppercase;letter-spacing:.12em;color:var(--gray-400);margin-bottom:var(--space-s);font-weight:500}.footer-grid{gap:var(--space-l);display:grid}@media (width>=48em){.footer-grid{gap:var(--space-m);grid-template-columns:minmax(0,1.6fr) repeat(3,minmax(0,1fr))}}.footer-brand{font-family:var(--font-sans);font-size:var(--step-1);letter-spacing:-.02em;color:var(--white);font-weight:600;text-decoration:none}.footer ul{gap:var(--space-2xs);display:grid}.footer-bottom{justify-content:space-between;gap:var(--space-s);margin-top:var(--space-xl);padding-top:var(--space-m);border-top:1px solid var(--gray-900);color:var(--gray-400);flex-wrap:wrap;display:flex}.prose{max-width:72ch}.prose>*+*{margin-top:var(--space-s)}.prose h2{font-size:var(--step-2);margin-top:var(--space-xl)}.prose h3{font-size:var(--step-1);margin-top:var(--space-l)}.prose p,.prose li{color:var(--text-muted)}.prose ul{gap:var(--space-2xs);list-style:none;display:grid}.prose ul li{padding-left:1.4em;position:relative}.prose ul li:before{content:"";background:var(--gray-400);width:.4em;height:.4em;position:absolute;top:.65em;left:0}.prose a{color:var(--text)}.prose dl{gap:var(--space-2xs);border-top:1px solid var(--line);padding-top:var(--space-s);display:grid}.prose dt{font-family:var(--font-mono);font-size:var(--step--1);text-transform:uppercase;letter-spacing:.08em;color:var(--text-faint)}.prose dd{margin:0 0 var(--space-xs);color:var(--text-muted)}.hero{padding-block:var(--space-2xl) var(--space-xl);border-bottom:1px solid var(--line)}.hero h1{max-width:18ch;margin-block:var(--space-s)}.hero .lead{max-width:54ch}.hero .btn-row{margin-top:var(--space-l)}
