@font-face{font-family:Bricolage Grotesque;font-style:normal;font-weight:300 800;font-display:swap;src:url(/fonts/bricolage-grotesque-var.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:IBM Plex Mono;font-style:normal;font-weight:400;font-display:swap;src:url(/fonts/ibm-plex-mono-400.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:IBM Plex Mono;font-style:normal;font-weight:600;font-display:swap;src:url(/fonts/ibm-plex-mono-600.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}:root{--teal:#24bca6;--green:#25ba81;--bg:#070c0b;--bg-raise:#0c1312;--panel:#0e1615;--line:#24bca629;--line-strong:#24bca659;--ink:#e9f4f1;--muted:#8aa49d;--faint:#5c736d;--font-display:"Bricolage Grotesque", "Segoe UI", sans-serif;--font-mono:"IBM Plex Mono", "Consolas", monospace;--maxw:72rem}*{box-sizing:border-box;margin:0;padding:0}html{scroll-behavior:smooth}body{background:var(--bg);color:var(--ink);font-family:var(--font-display);-webkit-font-smoothing:antialiased;min-height:100vh;font-weight:300;line-height:1.6;overflow-x:hidden}body:before{content:"";z-index:-2;background:radial-gradient(60rem 40rem at 85% -10%,#24bca621,#0000 60%),radial-gradient(50rem 35rem at -10% 110%,#25ba8114,#0000 60%),linear-gradient(#24bca60b 1px,#0000 1px) 0 0/3.5rem 3.5rem,linear-gradient(90deg,#24bca60b 1px,#0000 1px) 0 0/3.5rem 3.5rem;position:fixed;inset:0}body:after{content:"";z-index:-1;pointer-events:none;opacity:.5;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='120' height='120'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='2'/%3E%3CfeColorMatrix values='0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.05 0'/%3E%3C/filter%3E%3Crect width='120' height='120' filter='url(%23n)'/%3E%3C/svg%3E");position:fixed;inset:0}::selection{background:var(--teal);color:#04110e}a{color:var(--teal);text-decoration:none}a:hover{text-underline-offset:.25em;text-decoration:underline}img{max-width:100%;display:block}.tag{font-family:var(--font-mono);letter-spacing:.22em;text-transform:uppercase;color:var(--teal);align-items:center;gap:.75rem;font-size:.7rem;display:flex}.tag:before{content:"";background:var(--line-strong);width:2.25rem;height:1px}.wrap{width:min(var(--maxw), 100% - 3rem);margin-inline:auto}.site-header{z-index:50;border-bottom:1px solid var(--line);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);background:#070c0bd1;position:sticky;top:0}.site-header .wrap{justify-content:space-between;align-items:center;height:4.25rem;display:flex}.brand{align-items:center;gap:.75rem;display:flex}.brand img{width:auto;height:1.9rem}.site-nav{font-family:var(--font-mono);letter-spacing:.14em;text-transform:uppercase;gap:2rem;font-size:.75rem;display:flex}.site-nav a{color:var(--muted);transition:color .2s}.site-nav a:hover{color:var(--teal);text-decoration:none}.site-nav a[aria-current=page]{color:var(--ink)}.hero{border-bottom:1px solid var(--line);padding:clamp(5rem,12vh,9rem) 0 clamp(4rem,9vh,7rem);position:relative;overflow:hidden}.hero-mark{opacity:.06;pointer-events:none;-webkit-user-select:none;user-select:none;width:clamp(22rem,45vw,38rem);position:absolute;top:50%;right:-8rem;translate:0 -50%}.hero h1{letter-spacing:-.02em;max-width:15ch;margin:1.5rem 0;font-size:clamp(2.6rem,7vw,5.25rem);font-weight:800;line-height:1.02}.hero h1 em{color:var(--teal);font-style:normal}.hero p{max-width:44ch;color:var(--muted);font-size:1.1rem}.hero-cta{flex-wrap:wrap;gap:1rem;margin-top:2.5rem;display:flex}.btn{font-family:var(--font-mono);letter-spacing:.12em;text-transform:uppercase;border:1px solid var(--line-strong);color:var(--ink);align-items:center;gap:.6rem;padding:.85rem 1.5rem;font-size:.78rem;transition:border-color .2s,background .2s,translate .2s;display:inline-flex}.btn:hover{border-color:var(--teal);text-decoration:none;translate:0 -2px}.btn-solid{background:var(--teal);border-color:var(--teal);color:#04110e;font-weight:600}.btn-solid:hover{background:#2fd4bb}section{padding:clamp(3.5rem,8vh,6rem) 0}.section-head{margin-bottom:2.75rem}.section-head h2{letter-spacing:-.01em;margin-top:.9rem;font-size:clamp(1.8rem,3.5vw,2.6rem);font-weight:700}.projects-grid{grid-template-columns:repeat(auto-fill,minmax(19rem,1fr));gap:1.25rem;display:grid}.project-card{background:var(--panel);border:1px solid var(--line);color:var(--ink);flex-direction:column;gap:1.1rem;padding:1.75rem;transition:border-color .25s,translate .25s,box-shadow .25s;display:flex;position:relative}.project-card:hover{border-color:var(--teal);text-decoration:none;translate:0 -4px;box-shadow:0 14px 40px -18px #24bca673}.project-card:after{content:"↗";font-family:var(--font-mono);color:var(--faint);transition:color .2s,translate .2s;position:absolute;top:1.4rem;right:1.5rem}.project-card:hover:after{color:var(--teal);translate:2px -2px}.project-card h3{letter-spacing:-.01em;font-size:1.45rem;font-weight:700}.project-card p{color:var(--muted);flex:1;font-size:.95rem}.project-art{aspect-ratio:16/10;object-fit:cover;border:1px solid var(--line);border-radius:2px;width:100%;display:block}.project-cta{font-family:var(--font-mono);letter-spacing:.08em;text-transform:uppercase;color:var(--teal);font-size:.72rem;transition:translate .2s}.project-card:hover .project-cta{translate:3px}.project-card .index{font-family:var(--font-mono);color:var(--faint);letter-spacing:.2em;font-size:.7rem}.badge{font-family:var(--font-mono);letter-spacing:.18em;text-transform:uppercase;border:1px solid var(--line);color:var(--muted);align-self:flex-start;align-items:center;gap:.5rem;padding:.35rem .75rem;font-size:.65rem;display:inline-flex}.badge .dot{background:var(--faint);border-radius:50%;width:.45rem;height:.45rem}.badge.live{color:var(--green);border-color:#25ba8166}.badge.live .dot{background:var(--green);animation:2.4s ease-in-out infinite pulse}.badge.beta{color:var(--teal);border-color:#24bca666}.badge.beta .dot{background:var(--teal)}@keyframes pulse{0%,to{box-shadow:0 0 #25ba8180}50%{box-shadow:0 0 0 5px #25ba8100}}.about{border-block:1px solid var(--line);background:var(--bg-raise)}.about .wrap{grid-template-columns:minmax(0,1.1fr) minmax(0,1fr);align-items:start;gap:3rem;display:grid}.about p{color:var(--muted);max-width:52ch}.about p+p{margin-top:1rem}.fact-list{border-top:1px solid var(--line);gap:0;list-style:none;display:grid}.fact-list li{border-bottom:1px solid var(--line);justify-content:space-between;gap:2rem;padding:.9rem 0;font-size:.95rem;display:flex}.fact-list .k{font-family:var(--font-mono);letter-spacing:.18em;text-transform:uppercase;color:var(--faint);padding-top:.25rem;font-size:.7rem}.contact-list{gap:1rem;max-width:38rem;margin-top:2.5rem;list-style:none;display:grid}.contact-list a{border:1px solid var(--line);background:var(--panel);color:var(--ink);justify-content:space-between;align-items:baseline;gap:1.5rem;padding:1.25rem 1.5rem;transition:border-color .2s,translate .2s;display:flex}.contact-list a:hover{border-color:var(--teal);text-decoration:none;translate:0 -2px}.contact-list .k{font-family:var(--font-mono);letter-spacing:.18em;text-transform:uppercase;color:var(--muted);font-size:.7rem}.contact-list .v{font-family:var(--font-mono);color:var(--teal);font-size:.85rem}.prose{max-width:44rem;padding-bottom:4rem}.prose h1{letter-spacing:-.015em;margin:1.25rem 0 .75rem;font-size:clamp(2rem,4.5vw,3rem);font-weight:800}.prose h2{margin:2.25rem 0 .6rem;font-size:1.25rem;font-weight:700}.prose p,.prose li{color:var(--muted)}.prose ul{margin:.6rem 0;padding-left:1.25rem}.prose .updated{font-family:var(--font-mono);letter-spacing:.15em;text-transform:uppercase;color:var(--faint);font-size:.72rem}.site-footer{border-top:1px solid var(--line);margin-top:4rem;padding:2.75rem 0 3.25rem}.site-footer .wrap{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:2rem;display:flex}.site-footer img{opacity:.7;height:1.4rem}.foot-links{font-family:var(--font-mono);letter-spacing:.14em;text-transform:uppercase;gap:1.75rem;font-size:.72rem;display:flex}.foot-links a{color:var(--muted)}.foot-links a:hover{color:var(--teal);text-decoration:none}.copyright{font-family:var(--font-mono);color:var(--faint);letter-spacing:.08em;font-size:.72rem}.err{text-align:center;place-content:center;gap:1rem;min-height:55vh;display:grid}.err .code{font-family:var(--font-mono);color:var(--teal);font-size:clamp(4rem,15vw,9rem);font-weight:600;line-height:1}.reveal{opacity:0;animation:.7s cubic-bezier(.2,.7,.2,1) forwards rise;translate:0 18px}.reveal-2{animation-delay:.12s}.reveal-3{animation-delay:.24s}.reveal-4{animation-delay:.36s}@keyframes rise{to{opacity:1;translate:0}}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}.reveal,.reveal-2,.reveal-3,.reveal-4{opacity:1;animation:none;translate:0}.badge.live .dot{animation:none}*{transition:none!important}}@media (width<=46rem){.about .wrap{grid-template-columns:1fr}.hero-mark{opacity:.04;right:-12rem}.site-nav{gap:1.25rem}}
