:root{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;--bg:#f3f1ea;--bg-2:#fbfaf6;--bg-3:#e9e6dd;--ink:#1b1a17;--ink-dim:#6c6960;--ink-faint:#a6a298;--line:#1b1a171f;--line-strong:#1b1a1738;--accent:#1a27d4;--accent-2:#56e;--accent-ink:#fff;--vignette:#1b1a170d;--font-display:"Space Grotesk", system-ui, sans-serif;--font-body:"Inter", system-ui, sans-serif;--font-mono:"JetBrains Mono", ui-monospace, "SFMono-Regular", monospace;--font-serif:"Fraunces", Georgia, serif;--maxw:1320px;--gutter:clamp(20px, 5vw, 80px);--radius:14px;--ease:cubic-bezier(.16, 1, .3, 1)}*,:before,:after{box-sizing:border-box;margin:0;padding:0}html{background:var(--bg);color:var(--ink);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-rendering:optimizelegibility}body{min-height:100svh;font-family:var(--font-body);background:var(--bg);color:var(--ink);font-size:clamp(15px,1.05vw,17px);line-height:1.6;overflow-x:hidden}body:before{content:"";z-index:0;pointer-events:none;background:radial-gradient(120% 75% at 50% -8%, color-mix(in oklab, var(--accent) 9%, transparent), transparent 60%), radial-gradient(120% 120% at 50% 116%, var(--vignette), transparent 55%);position:fixed;inset:0}body:after{content:"";z-index:3;pointer-events:none;opacity:.035;mix-blend-mode:multiply;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='220' height='220'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.82' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");position:fixed;inset:0}#app{z-index:2;position:relative}a{color:inherit;text-decoration:none}ul,ol{list-style:none}img,svg{max-width:100%;display:block}button{font:inherit;color:inherit;cursor:pointer;background:0 0;border:none}dl,dt,dd{margin:0}::selection{background:var(--accent);color:var(--accent-ink)}:focus-visible{outline:2px solid var(--accent);outline-offset:4px;border-radius:2px}.mono{font-family:var(--font-mono);letter-spacing:.02em;font-weight:500}*{scrollbar-width:thin;scrollbar-color:var(--line-strong) transparent}::-webkit-scrollbar{width:9px;height:9px}::-webkit-scrollbar-thumb{background:var(--line-strong);border-radius:100px}.section{max-width:var(--maxw);padding-inline:var(--gutter);margin-inline:auto;padding-block:clamp(90px,14vh,180px);position:relative}.has-cursor,.has-cursor a,.has-cursor button,.has-cursor .magnetic{cursor:none}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,:before,:after{transition-duration:.001ms!important;animation-duration:.001ms!important;animation-iteration-count:1!important}}.nav{z-index:50;padding:20px var(--gutter);transition:padding .4s var(--ease), background .4s var(--ease), border-color .4s var(--ease);border-bottom:1px solid #0000;justify-content:space-between;align-items:center;gap:24px;display:flex;position:fixed;inset:0 0 auto}.nav.is-scrolled{background:color-mix(in oklab, var(--bg) 72%, transparent);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);border-bottom-color:var(--line);padding-block:14px}.nav-logo{font-family:var(--font-display);letter-spacing:.02em;color:var(--ink);transition:opacity .3s var(--ease);font-size:20px;font-weight:700}.nav-logo:hover{opacity:.6}.nav-links{gap:28px;display:flex}.nav-link{font-family:var(--font-mono);letter-spacing:.08em;text-transform:uppercase;color:var(--ink-dim);font-size:12px;transition:color .3s;position:relative}.nav-link:after{content:"";background:var(--accent);transform-origin:0;width:100%;height:1px;transition:transform .4s var(--ease);position:absolute;bottom:-5px;left:0;transform:scaleX(0)}.nav-link:hover,.nav-link.is-active{color:var(--ink)}.nav-link:hover:after,.nav-link.is-active:after{transform:scaleX(1)}.nav-resume{font-family:var(--font-mono);letter-spacing:.04em;border:1px solid var(--line-strong);border-radius:100px;padding:8px 15px;font-size:12px;transition:background .3s,color .3s,border-color .3s}.nav-resume:hover{background:var(--accent);border-color:var(--accent);color:var(--accent-ink)}.scroll-progress{background:var(--accent);transform-origin:0;width:100%;height:2px;position:absolute;bottom:0;left:0;transform:scaleX(0)}.cursor{z-index:100;pointer-events:none;opacity:0;transition:opacity .3s;position:fixed;inset:0}.cursor.is-visible{opacity:1}.cursor-dot{background:var(--accent);border-radius:50%;width:7px;height:7px;margin:-3.5px 0 0 -3.5px;transition:opacity .25s;position:fixed;top:0;left:0}.cursor-ring{border:1px solid var(--line-strong);width:38px;height:38px;transition:width .28s var(--ease), height .28s var(--ease), margin .28s var(--ease), border-color .28s, background .28s;border-radius:50%;margin:-19px 0 0 -19px;position:fixed;top:0;left:0}.cursor.is-hover .cursor-ring{border-color:var(--accent);background:color-mix(in oklab, var(--accent) 12%, transparent);width:66px;height:66px;margin:-33px 0 0 -33px}.cursor.is-hover .cursor-dot{opacity:0}.cursor.is-down .cursor-ring{width:30px;height:30px;margin:-15px 0 0 -15px}.marquee{border-block:1px solid var(--line);margin-top:clamp(40px,8vh,90px);padding-block:clamp(18px,3vh,30px);overflow:hidden}.marquee-track{width:max-content;animation:42s linear infinite marquee;display:flex}.marquee:hover .marquee-track{animation-play-state:paused}.marquee-group{transform:skewX(var(--skew,0deg));transition:transform .5s var(--ease);align-items:center;display:flex}.marquee-word{font-family:var(--font-display);letter-spacing:-.02em;white-space:nowrap;color:var(--ink);padding-inline:clamp(16px,3vw,40px);font-size:clamp(26px,5vw,64px);font-weight:600}.marquee-dot{color:var(--accent);font-size:clamp(12px,1.6vw,22px)}@keyframes marquee{to{transform:translate(-50%)}}@media (width<=760px){.nav-links{display:none}}.section-head{border-bottom:1px solid var(--line);align-items:baseline;gap:16px;margin-bottom:clamp(42px,7vh,84px);padding-bottom:18px;display:flex}.section-num{color:var(--accent);font-size:13px}.section-kicker{color:var(--ink-dim);text-transform:uppercase;letter-spacing:.18em;font-size:13px}.hero{min-height:100svh;max-width:var(--maxw);padding:clamp(94px, 13vh, 140px) var(--gutter) clamp(26px, 5vh, 48px);flex-direction:column;margin-inline:auto;display:flex;position:relative}.hero-top{flex-wrap:wrap;justify-content:space-between;gap:20px;display:flex}.hero-kicker,.hero-loc{text-transform:uppercase;letter-spacing:.18em;font-size:clamp(11px,1vw,13px)}.hero-kicker{color:var(--ink-dim)}.hero-loc{color:var(--ink-faint)}.hero-stage{flex:auto;place-items:center;min-height:clamp(220px,42vh,520px);margin-block:clamp(16px,3vh,30px);display:grid;position:relative}.hero-canvas{display:block;position:absolute;inset:0;width:100%!important;height:100%!important}.hero-stage.is-clickable{cursor:pointer}.hero-fx-hint{letter-spacing:.16em;text-transform:uppercase;color:var(--ink-faint);white-space:nowrap;pointer-events:none;opacity:.72;font-size:10.5px;position:absolute;bottom:clamp(-2px,1vh,8px);left:50%;transform:translate(-50%)}.hero-name{font-family:var(--font-display);letter-spacing:-.04em;color:var(--ink);text-align:center;margin:0;font-size:clamp(60px,17vw,300px);font-weight:700;line-height:.9}.hero-stage.is-webgl .hero-name{clip-path:inset(50%);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.hero-bottom{flex-wrap:wrap;justify-content:space-between;align-items:flex-end;gap:24px;display:flex}.hero-statement{max-width:14ch;font-family:var(--font-display);letter-spacing:-.02em;text-wrap:balance;color:var(--ink);font-size:clamp(20px,2.2vw,30px);font-weight:500;line-height:1.15}.hero-scroll{color:var(--ink-dim);text-transform:uppercase;letter-spacing:.16em;white-space:nowrap;align-items:center;gap:12px;font-size:11px;display:flex}.hero-scroll-line{background:var(--line-strong);width:52px;height:1px;position:relative;overflow:hidden}.hero-scroll-line:after{content:"";background:var(--accent);width:40%;animation:scroll-run 2.2s var(--ease) infinite;position:absolute;inset:0}.about-grid{grid-template-columns:1.45fr 1fr;align-items:start;gap:clamp(40px,6vw,100px);display:grid}.about-lead{font-family:var(--font-display);letter-spacing:-.02em;font-size:clamp(24px,3.1vw,46px);font-weight:500;line-height:1.18}.about-lead .word{color:var(--ink)}.about-side{padding-top:clamp(6px,1vw,14px)}.about-body{max-width:46ch;color:var(--ink-dim);margin-bottom:clamp(28px,4vh,44px);font-size:clamp(15px,1.1vw,17px);line-height:1.7}.facts{border-top:1px solid var(--line);display:grid}.fact{border-bottom:1px solid var(--line);justify-content:space-between;gap:20px;padding:14px 0;display:flex}.fact dt{color:var(--ink-faint);text-transform:uppercase;letter-spacing:.08em;font-size:12px}.fact dd{color:var(--ink);text-align:right;font-size:14px}.exp-list{flex-direction:column;display:flex}.exp-item{border-top:1px solid var(--line);padding-block:clamp(30px,5vh,56px)}.exp-item:last-child{border-bottom:1px solid var(--line)}.exp-head{flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:12px 32px;display:flex}.exp-id{flex-wrap:wrap;align-items:baseline;gap:14px;display:flex}.exp-company{font-family:var(--font-display);letter-spacing:-.02em;color:var(--ink);font-size:clamp(26px,3.4vw,46px);font-weight:600;line-height:1}.exp-role{color:var(--accent);font-size:clamp(13px,1.1vw,16px)}.exp-when{color:var(--ink-dim);align-items:center;gap:12px;font-size:13px;display:flex}.exp-badge{background:var(--accent);color:var(--accent-ink);border-radius:100px;padding:3px 9px;font-size:11px;font-weight:600}.exp-blurb{max-width:70ch;color:var(--ink);margin-top:16px;font-size:clamp(15px,1.15vw,17px);line-height:1.55}.exp-bullets{flex-direction:column;gap:10px;max-width:76ch;margin-top:16px;display:flex}.exp-bullets li{color:var(--ink-dim);padding-left:22px;font-size:14.5px;line-height:1.6;position:relative}.exp-bullets li:before{content:"";background:var(--accent);width:9px;height:1px;position:absolute;top:.62em;left:0}.work-grid{grid-template-columns:repeat(2,1fr);gap:clamp(16px,2vw,28px);display:grid}.work-card{border:1px solid var(--line);border-radius:var(--radius);background:var(--bg-2);min-height:240px;transition:border-color .4s var(--ease), transform .5s var(--ease), background .4s;padding:clamp(24px,3vw,40px);display:block;position:relative;overflow:hidden}.work-card:before{content:"";background:radial-gradient(80% 120% at 100% 0%, color-mix(in oklab, var(--accent) 14%, transparent), transparent 55%);opacity:0;transition:opacity .45s var(--ease);position:absolute;inset:0}.work-card:hover{border-color:var(--line-strong);transform:translateY(-4px)}.work-card:hover:before{opacity:1}.work-card-inner{flex-direction:column;gap:14px;height:100%;display:flex;position:relative}.work-card-top{color:var(--ink-faint);justify-content:space-between;font-size:12px;display:flex}.work-name{font-family:var(--font-display);letter-spacing:-.02em;align-items:center;gap:10px;font-size:clamp(22px,2.4vw,34px);font-weight:600;display:flex}.work-arrow{color:var(--accent);transition:transform .4s var(--ease)}a.work-card:hover .work-arrow{transform:translate(4px,-4px)}.work-blurb{color:var(--ink-dim);margin-top:auto;font-size:14.5px;line-height:1.6}.work-tags{flex-wrap:wrap;gap:8px;display:flex}.work-tags li{border:1px solid var(--line);color:var(--ink-dim);border-radius:100px;padding:4px 10px;font-size:11px}.contact-heading{font-family:var(--font-display);letter-spacing:-.03em;text-transform:uppercase;margin-block:8px 38px;font-size:clamp(46px,11vw,168px);font-weight:700;line-height:.92}.contact-line{display:block;overflow:hidden}.contact-line-inner{padding-bottom:.04em;display:block}.contact-line:nth-child(2) .contact-line-inner{color:var(--accent)}.contact-blurb{max-width:48ch;color:var(--ink-dim);margin-bottom:clamp(36px,5vh,64px);font-size:clamp(16px,1.4vw,20px);line-height:1.6}.contact-email{font-family:var(--font-display);letter-spacing:-.02em;font-size:clamp(22px,4vw,56px);font-weight:500;display:inline-block;position:relative}.contact-email:after{content:"";background:var(--accent);transform-origin:0;width:100%;height:2px;transition:transform .5s var(--ease);position:absolute;bottom:-6px;left:0;transform:scaleX(0)}.contact-email:hover:after{transform:scaleX(1)}.contact-socials{border-top:1px solid var(--line);margin-top:clamp(48px,7vh,90px)}.contact-social{border-bottom:1px solid var(--line);transition:padding-left .4s var(--ease);align-items:center;gap:20px;padding:clamp(16px,2.2vh,26px) 0;display:flex}.contact-social:hover{padding-left:18px}.contact-social-label{width:90px;color:var(--ink-faint);text-transform:uppercase;flex:none;font-size:12px}.contact-social-handle{color:var(--ink);font-size:clamp(16px,1.6vw,22px)}.contact-social-arrow{color:var(--accent);transition:transform .4s var(--ease);margin-left:auto}.contact-social:hover .contact-social-arrow{transform:translate(8px)}.footer{margin-top:clamp(72px,12vh,150px);overflow:hidden}.footer-name{text-align:center;font-family:var(--font-display);letter-spacing:-.03em;text-transform:uppercase;color:#0000;-webkit-text-stroke:1px var(--line);white-space:nowrap;font-size:clamp(44px,15.5vw,224px);font-weight:700;line-height:.9;display:block}.footer-meta{border-top:1px solid var(--line);color:var(--ink-faint);flex-wrap:wrap;justify-content:space-between;gap:20px;margin-top:28px;padding-top:22px;font-size:12px;display:flex}@media (width<=900px){.about-grid{grid-template-columns:1fr;gap:clamp(32px,8vh,56px)}.exp-row{grid-template-columns:1fr;gap:16px}.exp-when{flex-direction:row;align-items:center;gap:14px;padding-top:0}.work-grid{grid-template-columns:1fr}.exp-ghost{opacity:.5;font-size:clamp(60px,26vw,150px)}}@keyframes scroll-run{0%{transform:translate(-100%)}to{transform:translate(280%)}}.anim [data-reveal],.anim .section-head{opacity:0;transition:opacity .9s var(--ease), transform .9s var(--ease);transform:translateY(26px)}.anim [data-reveal].is-in,.anim .section-head.is-in{opacity:1;transform:none}.anim .hero-stage{opacity:0;transition:opacity 1.1s var(--ease), transform 1.1s var(--ease);transform:scale(.985)}.anim .hero.is-in .hero-stage{opacity:1;transition-delay:.12s;transform:none}.anim .hero .hero-kicker,.anim .hero .hero-loc,.anim .hero .hero-statement,.anim .hero .hero-scroll{opacity:0;transition:opacity .9s var(--ease), transform .9s var(--ease);transform:translateY(16px)}.anim .hero.is-in .hero-kicker,.anim .hero.is-in .hero-loc{opacity:1;transition-delay:50ms;transform:none}.anim .hero.is-in .hero-statement{opacity:1;transition-delay:.45s;transform:none}.anim .hero.is-in .hero-scroll{opacity:1;transition-delay:.6s;transform:none}.anim .contact-line-inner{transition:transform 1s var(--ease);transform:translateY(115%)}.anim .contact-line.is-in .contact-line-inner{transform:none}.anim .contact-line.is-in:nth-child(2) .contact-line-inner{transition-delay:80ms}.anim .contact-line.is-in:nth-child(3) .contact-line-inner{transition-delay:.16s}
