:root{--bg:#0b0c10;--surface:#13151b;--surface-2:#1a1d25;--line:#262a35;--text:#eceef3;--muted:#9aa2b1;--accent:#ffb547;--accent-ink:#1a1204;--cool:#6ea8ff;--display:"Bricolage Grotesque", system-ui, sans-serif;--body:"Inter", system-ui, sans-serif;--mono:"JetBrains Mono", ui-monospace, monospace;--radius:20px;--ease:cubic-bezier(.22, 1, .36, 1);--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}*,:before,:after{box-sizing:border-box}html{scroll-padding-top:80px}@media (prefers-reduced-motion:no-preference){html{scroll-behavior:smooth}}body{background:radial-gradient(60vw 60vw at 85% 10%, #ffb54714, transparent 60%), linear-gradient(var(--line) 1px, transparent 1px) 0 0 / 64px 64px, linear-gradient(90deg, var(--line) 1px, transparent 1px) 0 0 / 64px 64px, var(--bg);color:var(--text);font:400 1.0625rem/1.6 var(--body);-webkit-font-smoothing:antialiased;background-attachment:fixed;margin:0;overflow-x:hidden}body:before{content:"";z-index:-2;pointer-events:none;background:#0b0c10d1;position:fixed;inset:0}h1,h2,h3{font-family:var(--display);letter-spacing:-.03em;text-wrap:balance;margin:0;font-weight:800;line-height:1.05}h2{margin-bottom:clamp(32px,5vw,56px);font-size:clamp(2rem,4vw,3rem)}h3{letter-spacing:-.02em;font-size:1.5rem;font-weight:600}p{margin:0}ul,ol{margin:0;padding:0;list-style:none}a{color:inherit;text-decoration:none}img{max-width:100%;height:auto;display:block}:focus-visible{outline:2px solid var(--accent);outline-offset:3px;border-radius:6px}.sr-only{clip:rect(0 0 0 0);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}.skip{z-index:100;background:var(--accent);color:var(--accent-ink);border-radius:999px;padding:10px 16px;font-weight:600;position:fixed;top:-60px;left:16px}.skip:focus{top:16px}.container{width:100%;max-width:1180px;margin:0 auto;padding:0 24px}@media (width>=720px){.container{padding:0 40px}}.section{padding:clamp(80px,12vw,160px) 0 0}.section-tight{padding-top:clamp(64px,8vw,112px)}.eyebrow{font:500 .8125rem/1.4 var(--mono);text-transform:uppercase;letter-spacing:.08em;color:var(--muted);margin-bottom:16px}.accent{color:var(--accent)}.lede{color:var(--muted);max-width:58ch;font-size:clamp(1.0625rem,1.6vw,1.25rem)}.btn{min-height:48px;font:600 .9375rem/1 var(--body);cursor:pointer;transition:background .2s, border-color .2s, transform .2s var(--ease);border:1px solid #0000;border-radius:999px;align-items:center;gap:8px;padding:0 24px;display:inline-flex}.btn-primary{background:var(--accent);color:var(--accent-ink)}.btn-primary:hover{background:#ffc46e}.btn-ghost{border-color:var(--line);color:var(--text);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);background:#13151b99}.btn-ghost:hover{border-color:#ffb54799}.btn-dark{background:var(--bg);color:var(--text);border-color:#ffffff1f}.btn-dark:hover{border-color:var(--accent)}.btn-sm{min-height:38px;padding:0 16px}.btn:active{transform:scale(.97)}.arrow{transition:transform .2s var(--ease)}a:hover>.arrow{transform:translate(3px,-3px)}.text-link{color:var(--text);border-bottom:1px solid #6ea8ff80;align-items:center;gap:6px;padding-bottom:2px;font-weight:600;transition:color .2s,border-color .2s;display:inline-flex}.text-link:hover{color:var(--accent);border-color:var(--accent)}.actions{flex-wrap:wrap;gap:12px;margin-top:32px;display:flex}.nav{z-index:50;border-bottom:1px solid #0000;transition:background .3s,border-color .3s;position:fixed;inset:0 0 auto}.nav.scrolled{-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);border-color:var(--line);background:#0b0c10bf}.nav-inner{justify-content:space-between;align-items:center;height:68px;display:flex}.wordmark{font:800 1.625rem/1 var(--display);letter-spacing:-.04em}.wordmark .dot{color:var(--accent);display:inline-block}@media (prefers-reduced-motion:no-preference){.wordmark .dot{animation:pulse 1.2s var(--ease) .4s 1}}@keyframes pulse{40%{text-shadow:0 0 16px var(--accent);transform:scale(1.8)}}.nav ul{align-items:center;gap:28px;display:flex}.nav nav a:not(.btn){color:var(--muted);border-bottom:2px solid #0000;padding:6px 0;font-size:.9375rem;font-weight:500;transition:color .2s,border-color .2s}.nav nav a:not(.btn):hover,.nav nav a.active{color:var(--text)}.nav nav a.active{border-color:var(--accent)}.menu-toggle{display:none}@media (width<=719px){.menu-toggle{border:1px solid var(--line);background:var(--surface);width:44px;height:44px;color:var(--text);cursor:pointer;z-index:2;border-radius:12px;place-items:center;display:grid;position:relative}.bars,.bars:before,.bars:after{width:18px;height:2px;transition:transform .25s var(--ease);background:currentColor;border-radius:2px;display:block}.bars{position:relative}.bars:before,.bars:after{content:"";position:absolute;left:0}.bars:before{top:-6px}.bars:after{top:6px}.open .bars{background:0 0}.open .bars:before{transform:translateY(6px)rotate(45deg)}.open .bars:after{transform:translateY(-6px)rotate(-45deg)}#nav-menu{background:var(--bg);visibility:hidden;opacity:0;padding:96px 24px 24px;transition:opacity .25s,visibility .25s;position:fixed;inset:0}.open #nav-menu{visibility:visible;opacity:1}#nav-menu ul{flex-direction:column;align-items:flex-start;gap:8px}#nav-menu a:not(.btn){font:800 2.5rem/1.2 var(--display);letter-spacing:-.03em;color:var(--text)}#nav-menu .btn{margin-top:24px}}.scene{z-index:-1;pointer-events:none;position:fixed;inset:0}@media (prefers-reduced-motion:reduce){.scene{height:100svh;position:absolute;bottom:auto}}.baseline-probe{vertical-align:baseline;width:0;height:0;display:inline-block}.hero{align-items:center;min-height:100svh;padding:120px 0 80px;display:flex}.hero-inner>*{max-width:640px}.hero-name{margin:8px 0 28px;font-size:clamp(3.25rem,10vw,7.5rem);line-height:.95}.socials{gap:8px;margin-top:28px;display:flex}.socials a{border:1px solid var(--line);width:44px;height:44px;color:var(--muted);background:#13151b99;border-radius:50%;place-items:center;transition:color .2s,border-color .2s;display:grid}.socials a:hover{color:var(--accent);border-color:var(--accent)}@media (width<=719px){.hero{align-items:flex-end;padding-top:42svh}}.projects{gap:32px;display:grid}.project{border:1px solid var(--line);border-radius:var(--radius);transition:border-color .3s, transform .3s var(--ease);background:#13151bd9;gap:32px;padding:16px;display:grid}.proj-body{padding:8px 8px 16px}@media (width>=900px){.project{grid-template-columns:1.1fr 1fr;align-items:center;padding:20px}.project:nth-child(2n) .frame{order:2}.project.featured{grid-template-columns:1.4fr 1fr}.proj-body{padding:16px 20px 16px 8px}}.frame{border:1px solid var(--line);background:var(--surface-2);border-radius:14px;overflow:hidden}.frame-bar{border-bottom:1px solid var(--line);gap:6px;padding:10px 12px;display:flex}.frame-bar span{background:var(--line);border-radius:50%;width:9px;height:9px}.frame img,.cover{aspect-ratio:16/10;object-fit:cover;width:100%;transition:transform .5s var(--ease)}.project:hover .frame img,.project:hover .cover{transform:scale(1.03)}.cover{background:radial-gradient(80% 90% at 90% 0%, var(--c1), transparent 70%), radial-gradient(70% 80% at 0% 100%, var(--c2), transparent 70%), var(--surface);flex-direction:column;justify-content:flex-end;gap:8px;padding:clamp(20px,4vw,40px);display:flex}.frame[data-tone="0"]{--c1:#ffb54773;--c2:#6ea8ff40}.frame[data-tone="1"]{--c1:#ff7a5966;--c2:#ffb54733}.frame[data-tone="2"]{--c1:#6ea8ff73;--c2:#78ffc826}.cover-name{font:800 clamp(2rem, 5vw, 3.5rem) / 1 var(--display);letter-spacing:-.04em}.cover-tag{font:500 .8125rem/1.4 var(--mono);text-transform:uppercase;letter-spacing:.08em;color:var(--muted)}.proj-meta{font:500 .8125rem/1.4 var(--mono);text-transform:uppercase;letter-spacing:.06em;color:var(--muted);flex-wrap:wrap;align-items:center;gap:10px;margin-bottom:12px;display:flex}.badge{color:var(--accent);border:1px solid #ffb54780;border-radius:999px;padding:3px 10px}.project h3{font-size:clamp(1.75rem,3vw,2.25rem);font-weight:800}.proj-tagline{color:var(--muted);margin:4px 0 16px}.proj-problem{margin-bottom:12px;font-weight:500}.proj-built li{color:var(--muted);margin-bottom:8px;padding-left:20px;font-size:.975rem;position:relative}.proj-built li:before{content:"";background:var(--accent);border-radius:50%;width:6px;height:6px;position:absolute;top:.6em;left:3px}.chips{flex-wrap:wrap;gap:6px;margin:20px 0;display:flex}.chips li{font:500 .75rem/1 var(--mono);background:var(--surface-2);border:1px solid var(--line);color:#c9d8f5;border-radius:999px;padding:7px 10px}.proj-links{flex-wrap:wrap;gap:20px;display:flex}.compact-row{gap:20px;margin-top:32px;display:grid}@media (width>=900px){.compact-row{grid-template-columns:2fr 1fr}}.project-compact,.more-card{border:1px solid var(--line);border-radius:var(--radius);background:#13151bd9;padding:28px;transition:border-color .3s}.more-card:hover{border-color:#ffb54766}.project-compact .chips{margin-bottom:16px}.more-card{flex-direction:column;justify-content:space-between;min-height:180px;display:flex}.more-title{font:800 1.75rem/1.1 var(--display);letter-spacing:-.03em;align-items:center;gap:8px;display:inline-flex}.bento{gap:20px;display:grid}@media (width>=900px){.bento{grid-template-columns:repeat(3,1fr)}.tile-intro{grid-area:span 2/span 2}.tile-photos{grid-column:span 2}.tile-mail.wide{flex-direction:row;grid-column:1/-1;align-items:center}}.tile-globe{flex-direction:column;display:flex}.globe{aspect-ratio:1;margin:0 -8px 8px}.homes{font:500 .75rem/1.6 var(--mono);text-transform:uppercase;letter-spacing:.06em;color:var(--muted);flex-wrap:wrap;gap:4px 12px;display:flex}.tile .homes li{font:inherit;border:0;padding:0;transition:color .3s}.tile .homes li.on{color:var(--accent)}.tile.tile-photos{padding:0;overflow:hidden}.tile-photos .slide img{aspect-ratio:4/3;object-fit:cover;width:100%}.tile{border:1px solid var(--line);border-radius:var(--radius);background:#13151bd9;padding:28px}.tile-intro{flex-direction:column;justify-content:center;gap:20px;padding:clamp(28px,4vw,48px);font-size:clamp(1.0625rem,1.5vw,1.1875rem);line-height:1.6;display:flex}.tile-intro p:first-child{font-family:var(--display);letter-spacing:-.02em;font-size:1.25em;font-weight:600;line-height:1.3}.tile-intro p+p{color:var(--muted)}.tile li{font:600 1.125rem/1.4 var(--display);border-top:1px solid var(--line);padding:10px 0}.tile-mail{color:var(--accent-ink);background:linear-gradient(135deg, var(--accent), #ff7a59);border:0;flex-direction:column;justify-content:space-between;gap:24px;display:flex}.tile-mail-title{font:800 1.5rem/1.15 var(--display);letter-spacing:-.02em}.tile-mail .btn{align-self:flex-start}.timeline{border-left:1px solid var(--line);margin-left:6px}.timeline>li{gap:8px 40px;padding:0 0 48px 32px;display:grid;position:relative}.timeline>li:before{content:"";background:var(--bg);border:2px solid var(--accent);border-radius:50%;width:13px;height:13px;position:absolute;top:6px;left:-7px}@media (width>=900px){.timeline>li{grid-template-columns:220px 1fr}}.when{font:500 .8125rem/1.8 var(--mono);text-transform:uppercase;letter-spacing:.06em;color:var(--muted)}.org{color:var(--accent);margin:4px 0 12px;font-weight:500}.org span{color:var(--muted)}.timeline ul li{color:var(--muted);max-width:65ch;margin-bottom:6px}.skills{gap:0;margin:0;display:grid}.skills>div{border-top:1px solid var(--line);gap:4px 40px;padding:20px 0;display:grid}@media (width>=900px){.skills>div{grid-template-columns:220px 1fr}}.skills dt{font:500 .8125rem/1.8 var(--mono);text-transform:uppercase;letter-spacing:.06em;color:var(--muted)}.skills dd{font:600 clamp(1.125rem, 2vw, 1.375rem) / 1.5 var(--display);margin:0}.contact{padding-bottom:clamp(80px,10vw,140px)}.contact-title{margin-bottom:24px;font-size:clamp(2.75rem,8vw,6rem)}.contact .btn-primary{text-transform:none}.contact-links{flex-wrap:wrap;gap:24px;margin-top:40px;display:flex}.footer{border-top:1px solid var(--line);color:var(--muted);padding:28px 0;font-size:.875rem}.footer-inner{flex-wrap:wrap;justify-content:space-between;gap:12px;display:flex}@media (prefers-reduced-motion:no-preference){[data-reveal]{opacity:0;transition:opacity .8s var(--ease), transform .8s var(--ease);transform:translateY(24px)}[data-reveal].in{opacity:1;transform:none}}.proj-role{margin-top:16px;font-size:.975rem}.proj-role span{font:500 .75rem/1 var(--mono);text-transform:uppercase;letter-spacing:.08em;color:var(--accent);margin-right:6px}.carousel{position:relative}.carousel-track{scroll-snap-type:x mandatory;scrollbar-width:none;display:flex;overflow-x:auto}.carousel-track::-webkit-scrollbar{display:none}.carousel-track:focus-visible{outline-offset:-3px}.carousel-track .slide{scroll-snap-align:start;flex:0 0 100%}.frame img{aspect-ratio:16/9;object-fit:contain;background:radial-gradient(80% 90% at 90% 0%, var(--c1), transparent 70%), radial-gradient(70% 80% at 0% 100%, var(--c2), transparent 70%), var(--surface)}.project:hover .carousel-track img{transform:none}.carousel-controls{border-top:1px solid var(--line);justify-content:space-between;align-items:center;padding:8px 10px;display:flex}.carousel-btn{background:var(--surface);width:36px;height:36px;color:var(--text);cursor:pointer;border:1px solid #ffffff26;border-radius:50%;font-size:1.25rem;line-height:1}.carousel-btn:hover{border-color:var(--accent)}.carousel-dots{flex-wrap:wrap;justify-content:center;display:flex}.carousel-dots button{cursor:pointer;background:0 0;border:0;place-items:center;width:24px;height:24px;padding:0;display:grid}.carousel-dots button:before{content:"";width:7px;height:7px;transition:width .25s var(--ease), background .25s;background:#ffffff59;border-radius:999px}.carousel-dots button.on:before{background:var(--accent);width:18px}.project,.project-compact{position:relative}.project:after,.project-compact:after,.project:before,.project-compact:before{content:"";border-radius:inherit;pointer-events:none;opacity:var(--glow,0);position:absolute}.project:after,.project-compact:after{background:radial-gradient(220px circle at var(--gx,100%) var(--gy,50%), #ffc46e, #ffb54759 45%, transparent 75%);-webkit-mask-composite:xor;padding:1px;inset:-1px;-webkit-mask-image:linear-gradient(#000 0 0),linear-gradient(#000 0 0);-webkit-mask-position:0 0,0 0;-webkit-mask-size:auto,auto;-webkit-mask-repeat:repeat,repeat;-webkit-mask-clip:content-box,border-box;-webkit-mask-origin:content-box,border-box;-webkit-mask-composite:xor;mask-composite:exclude;-webkit-mask-source-type:auto,auto;mask-mode:match-source,match-source}.project:before,.project-compact:before{background:radial-gradient(260px circle at var(--gx,100%) var(--gy,50%), #ffb54717, transparent 70%);inset:0}@media (prefers-reduced-motion:reduce){.project:is(:hover,:focus-within):after,.project-compact:is(:hover,:focus-within):after,.project:is(:hover,:focus-within):before,.project-compact:is(:hover,:focus-within):before{--glow:1}}
