@font-face{font-family:satoshi;src:url(/_next/static/media/867bce6efedfde96-s.p.ttf) format("truetype");font-display:swap;font-weight:300 900;font-style:normal}@font-face{font-family:satoshi;src:url(/_next/static/media/675122d2515ca0fe-s.p.ttf) format("truetype");font-display:swap;font-weight:300 900;font-style:italic}@font-face{font-family:satoshi Fallback;src:local("Arial");ascent-override:92.36%;descent-override:21.95%;line-gap-override:9.14%;size-adjust:109.35%}.__className_c7b453{font-family:satoshi,satoshi Fallback}.__variable_c7b453{--font-satoshi:"satoshi","satoshi Fallback"}:root{--bg:#0d0f12;--surface:rgba(255,255,255,0.05);--surface-strong:rgba(255,255,255,0.08);--text:#f4f1e9;--muted:#a8a39a;--line:rgba(244,241,233,0.14);--shadow:0 28px 72px rgba(0,0,0,0.36);--cta-face:#f4f1e9;--cta-shadow:#c9c0b3;--cta-text:#141311}*{box-sizing:border-box}body,html{background:var(--bg)}body{margin:0;min-height:100vh;overflow-x:hidden;color:var(--text);font-family:var(--font-satoshi),sans-serif;text-rendering:optimizeLegibility}a{color:inherit;text-decoration:none}h1,h2,p{margin:0}.transition-shell{position:relative;min-height:100vh}.transition-shell__content{min-height:100vh;background:var(--bg)}.transition-overlay{display:none;position:fixed;inset:0;z-index:120;opacity:0;visibility:hidden;pointer-events:none}.transition-overlay__panel{position:absolute;inset:0;transform:translateY(100%);background:#ece4d7;will-change:transform}.transition-overlay__meter{position:absolute;inset:0;display:grid;justify-items:center;align-content:center;grid-gap:8px;gap:8px;opacity:0;transform:translateY(12px);will-change:transform,opacity}.transition-overlay__count{font-size:12px;line-height:1;letter-spacing:.06em;font-weight:600;color:rgba(16,15,14,.84)}.transition-overlay__bar{width:min(180px,calc(100vw - 80px));height:5px;border-radius:0;background:rgba(16,15,14,.12);overflow:hidden}.transition-overlay__bar-fill{display:block;height:100%;border-radius:0;background:rgba(16,15,14,.82);transform-origin:left center;transition:width .18s linear}.transition-shell[data-phase=intro-count] .transition-overlay,.transition-shell[data-phase=intro-reveal] .transition-overlay,.transition-shell[data-phase=route-cover] .transition-overlay,.transition-shell[data-phase=route-reveal] .transition-overlay,html[data-intro-seen=false] .transition-shell[data-phase=boot] .transition-overlay{display:block;opacity:1;visibility:visible}.transition-shell[data-phase=intro-count] .transition-overlay__panel,html[data-intro-seen=false] .transition-shell[data-phase=boot] .transition-overlay__panel{transform:translateY(0)}.transition-shell[data-phase=intro-count] .transition-overlay__meter{opacity:1;transform:translateY(0);transition:opacity .42s ease,transform .96s cubic-bezier(.22,1,.36,1)}.transition-shell[data-phase=intro-reveal] .transition-overlay__panel{transform:translateY(-102%);transition:transform 1.64s cubic-bezier(.16,1,.3,1)}.transition-shell[data-phase=intro-reveal] .transition-overlay__meter{opacity:0;transform:translateY(-12px);transition:opacity .32s ease,transform .88s cubic-bezier(.22,1,.36,1)}.transition-shell[data-phase=route-cover] .transition-overlay__panel{transform:translateY(0)}.transition-shell[data-phase=route-reveal] .transition-overlay__panel{transform:translateY(-102%);transition:transform 1.6s cubic-bezier(.16,1,.3,1)}.shell{width:min(1100px,calc(100vw - 40px));margin:0 auto;padding:32px 0 72px}.site-footer{border-top:1px solid var(--line)}.site-footer__inner{padding-top:18px;padding-bottom:28px}.site-footer__inner p{font-size:.78rem;line-height:1.2;letter-spacing:.08em;text-transform:uppercase;color:var(--muted)}.shell--project{padding-top:24px}.case-study,.cv-layout,.cv-page-title,.details-grid,.hero,.index-grid,.project-hero,.project-summary,.project-visual{border-top:1px solid var(--line)}.hero{border-top:none;padding:40px 0 48px}.site-nav{display:flex;justify-content:space-between;align-items:flex-start;gap:18px;padding-top:8px;margin-bottom:32px}.site-nav__brand{display:inline-flex;align-items:center;flex-shrink:0}.site-nav__logo{display:block;width:86px;height:auto;filter:brightness(0) invert(1)}.site-nav__cta{flex-shrink:0}.page-reveal{opacity:1;transform:translateY(0);transition:opacity .3s ease,transform .52s cubic-bezier(.22,1,.36,1)}.page-reveal--1{--reveal-delay:0ms}.page-reveal--2{--reveal-delay:70ms}.page-reveal--3{--reveal-delay:130ms}.page-reveal--4{--reveal-delay:190ms}.page-reveal--5{--reveal-delay:250ms}.page-reveal--6{--reveal-delay:310ms}.page-reveal--7{--reveal-delay:370ms}.page-reveal--8{--reveal-delay:430ms}.page-reveal--9{--reveal-delay:490ms}.page-reveal--10{--reveal-delay:550ms}.page-reveal--11{--reveal-delay:610ms}.page-reveal--12{--reveal-delay:670ms}.page-reveal--13{--reveal-delay:730ms}.page-reveal--14{--reveal-delay:790ms}.transition-shell[data-phase=idle] .page-reveal{transition-delay:var(--reveal-delay,0s)}.transition-shell[data-phase=boot] .page-reveal,.transition-shell[data-phase=intro-count] .page-reveal,.transition-shell[data-phase=intro-reveal] .page-reveal,.transition-shell[data-phase=route-cover] .page-reveal,.transition-shell[data-phase=route-reveal] .page-reveal{opacity:0;transform:translateY(10px);transition-delay:0s}.page-frame-reveal,.page-frame-reveal .cv-card,.page-frame-reveal .cv-section+.cv-section{transition:border-color .28s ease}.transition-shell[data-phase=boot] .page-frame-reveal,.transition-shell[data-phase=boot] .page-frame-reveal .cv-card,.transition-shell[data-phase=boot] .page-frame-reveal .cv-section+.cv-section,.transition-shell[data-phase=intro-count] .page-frame-reveal,.transition-shell[data-phase=intro-count] .page-frame-reveal .cv-card,.transition-shell[data-phase=intro-count] .page-frame-reveal .cv-section+.cv-section,.transition-shell[data-phase=intro-reveal] .page-frame-reveal,.transition-shell[data-phase=intro-reveal] .page-frame-reveal .cv-card,.transition-shell[data-phase=intro-reveal] .page-frame-reveal .cv-section+.cv-section,.transition-shell[data-phase=route-cover] .page-frame-reveal,.transition-shell[data-phase=route-cover] .page-frame-reveal .cv-card,.transition-shell[data-phase=route-cover] .page-frame-reveal .cv-section+.cv-section,.transition-shell[data-phase=route-reveal] .page-frame-reveal,.transition-shell[data-phase=route-reveal] .page-frame-reveal .cv-card,.transition-shell[data-phase=route-reveal] .page-frame-reveal .cv-section+.cv-section{border-color:transparent}.text-stack{display:grid}.text-line{display:block}.case-study__row,.details-grid,.project-hero{display:grid;grid-template-columns:repeat(12,minmax(0,1fr));grid-gap:18px;gap:18px}.hero__content{display:grid;grid-template-columns:minmax(0,1fr);grid-gap:40px;gap:40px;align-items:start}.hero__intro{width:min(100%,54%)}.hero__intro h1{max-width:18ch;font-size:clamp(1.95rem,3.6vw,3.25rem);line-height:1.02;letter-spacing:-.05em;font-weight:500}.hero__intro h1 .text-line+.text-line{margin-top:.06em}.not-found h1,.project-hero h1{max-width:11ch;font-size:clamp(3.35rem,8vw,7rem);line-height:.94;letter-spacing:-.06em;font-weight:500}.lede{max-width:none;margin-top:16px;font-size:1rem;line-height:1.55;letter-spacing:-.015em;color:var(--muted)}.lede .text-line+.text-line{margin-top:.16em}.project-summary p{max-width:30rem;margin-top:20px;font-size:1.25rem;line-height:1.5;letter-spacing:-.02em;color:var(--muted)}.back-link,.eyebrow{font-size:.78rem;line-height:1.2;letter-spacing:.12em;text-transform:uppercase;color:var(--muted)}.meta-copy{margin-top:8px;max-width:20rem;font-size:.98rem;line-height:1.6;color:var(--text)}.case-study,.cv-hero,.cv-layout,.details-grid,.index-grid,.project-summary,.project-visual{padding:28px 0}.index-grid{grid-template-columns:minmax(120px,.4fr) minmax(0,1fr);grid-gap:24px;gap:24px}.index-grid,.project-stack{display:grid}.project-sheet{padding:24px 0 28px;border-top:1px solid var(--line)}.project-sheet:first-child{padding-top:0;border-top:none}.project-sheet__header{display:grid;grid-template-columns:3rem minmax(0,1fr);grid-gap:18px;gap:18px;align-items:flex-start}.project-sheet__summary-block{display:grid}.project-sheet__title-row{display:flex;align-items:flex-start;justify-content:space-between;gap:18px}.project-sheet__index{padding-top:.45rem;font-size:.78rem;line-height:1.2;letter-spacing:.12em;text-transform:uppercase;color:var(--muted)}.project-sheet h2{font-size:clamp(1.7rem,4vw,2.5rem);line-height:1;letter-spacing:-.05em;font-weight:500}.project-sheet__toggle{display:inline-flex;align-items:center;gap:.4rem;padding:.35rem 0 0;border:0;background:transparent;font:inherit;font-size:.78rem;line-height:1.2;letter-spacing:.08em;text-transform:uppercase;color:var(--muted);cursor:pointer}.project-sheet__toggle-label{text-decoration:none}.project-sheet__toggle-mark{display:inline-block;min-width:.7rem;text-align:center;font-size:.92rem;line-height:1}.project-sheet__summary{margin-top:8px;max-width:34rem;max-height:7rem;overflow:hidden;font-size:1rem;line-height:1.6;color:var(--muted);opacity:1;transform:translateY(0);transition:max-height .42s cubic-bezier(.22,1,.36,1),margin-top .42s cubic-bezier(.22,1,.36,1),opacity .22s ease,transform .42s cubic-bezier(.22,1,.36,1)}.project-sheet[data-open=true] .project-sheet__summary{max-height:0;margin-top:0;opacity:0;transform:translateY(-6px)}.project-sheet__details{display:grid;grid-template-rows:0fr;opacity:0;transition:grid-template-rows .52s cubic-bezier(.22,1,.36,1),opacity .26s ease}.project-sheet__details[data-open=true]{grid-template-rows:1fr;opacity:1}.project-sheet__details-inner{overflow:hidden}.project-sheet__body{padding-left:calc(3rem + 18px)}.project-sheet__intro{max-width:46rem;margin-top:20px;font-size:1rem;line-height:1.7;color:var(--text)}.project-sheet__meta{display:grid;grid-gap:18px;gap:18px;padding-left:calc(3rem + 18px);margin-top:22px}.project-sheet__row{display:grid;grid-template-columns:minmax(88px,110px) minmax(0,1fr);grid-gap:18px;gap:18px;align-items:flex-start}.project-sheet__pill-grid{max-width:44rem}.project-sheet__links{max-width:42rem}.project-sheet__link-copy{max-width:40rem;font-size:.98rem;line-height:1.7;color:var(--muted)}.cv-page-title{padding:18px 0 36px}.cv-page-title h1{font-size:clamp(1.9rem,4vw,3rem);line-height:1;letter-spacing:-.05em;font-weight:700}.cv-intro,.cv-list li{color:var(--muted)}.hero__toolbar{display:none}.hero__cta{display:inline-flex;align-items:center;font-size:.82rem;line-height:1.2;letter-spacing:.08em;text-decoration:none;text-transform:uppercase;position:relative;display:inline-block;padding:0;background:transparent;border:0;color:var(--cta-text)}.hero__cta:after{content:"";position:absolute;inset:4px 0 -4px;border-radius:11px;background:var(--cta-shadow);z-index:0}.hero__cta-face{position:relative;z-index:1;display:inline-flex;align-items:center;justify-content:center;min-height:2rem;padding:.72rem 1rem;border-radius:11px;background:var(--cta-face);color:var(--cta-text);font-weight:600;box-shadow:inset 0 1px 0 rgba(255,255,255,.5);text-decoration:none;transition:transform .18s ease,background-color .18s ease}.hero__cta:focus-visible .hero__cta-face,.hero__cta:hover .hero__cta-face{transform:translateY(1px);background:#ebe3d6}.hero__cta:focus-visible{outline:none}.hero__cta:focus-visible .hero__cta-face{box-shadow:inset 0 1px 0 rgba(255,255,255,.5),0 0 0 2px rgba(20,19,17,.16)}.details-grid{align-items:flex-start}.details-grid>div:first-child{grid-column:span 8}.details-grid>div:last-child{grid-column:span 4}.social-links{display:grid;grid-gap:10px;gap:10px;margin-top:8px}.social-links a{width:-moz-fit-content;width:fit-content;border-bottom:1px solid transparent}.back-link:hover,.social-links a:hover{border-color:var(--text)}.back-link{display:inline-block;margin-bottom:22px}.project-hero{padding:22px 0 32px}.project-visual{padding-top:32px}.project-visual__frame{min-height:58vh;border-radius:28px;border:1px solid rgba(255,255,255,.12);background:linear-gradient(135deg,rgba(255,255,255,.12),transparent 48%),radial-gradient(circle at top left,var(--project-accent),transparent 38%),radial-gradient(circle at bottom right,var(--project-tone),transparent 32%),#161a20;box-shadow:0 14px 32px rgba(31,26,18,.06);position:relative;overflow:hidden}.project-visual__frame:after,.project-visual__frame:before{content:"";position:absolute;border-radius:999px;background:rgba(255,255,255,.12);filter:blur(14px)}.project-visual__frame:before{width:36%;height:36%;top:12%;left:10%}.project-visual__frame:after{width:28%;height:28%;right:12%;bottom:14%}.project-summary{display:flex;justify-content:flex-end}.shell--cv{padding-top:24px}.cv-section{display:grid;grid-template-columns:repeat(12,minmax(0,1fr));grid-gap:18px;gap:18px;padding:20px 0 24px}.cv-section--intro{padding-top:8px}.cv-section+.cv-section{border-top:1px solid var(--line)}.cv-section__label{grid-column:span 3}.cv-section__content{grid-column:span 9}.cv-stack{display:grid;grid-gap:22px;gap:22px}.cv-list{display:grid;grid-gap:12px;gap:12px;margin:0;padding:0;list-style:none}.cv-list li{max-width:44rem;font-size:1rem;line-height:1.7}.cv-intro{max-width:32rem;font-size:1rem;line-height:1.65}.cv-links{display:flex;flex-wrap:wrap;gap:12px 18px}.cv-links a{width:-moz-fit-content;width:fit-content;border-bottom:1px solid;color:var(--text)}.cv-links a:hover{border-color:var(--text)}.cv-pill-grid{display:flex;flex-wrap:wrap;gap:10px;max-width:48rem}.cv-pill-grid--experience{max-width:44rem}.cv-pill{display:inline-flex;align-items:center;min-height:2rem;padding:.4rem .8rem;border:1px solid var(--line);border-radius:999px;background:var(--surface);box-shadow:inset 0 1px 0 rgba(255,255,255,.04);font-size:.92rem;line-height:1.3;color:var(--text)}.cv-card{display:grid;grid-gap:14px;gap:14px;padding:0 0 22px;border-bottom:1px solid var(--line)}.cv-card:last-child{border-bottom:none;padding-bottom:0}.cv-card--compact{gap:10px}.cv-card__header{display:grid;grid-template-columns:minmax(0,1fr) auto;grid-gap:18px;gap:18px;align-items:flex-start}.cv-card__header--stacked{grid-template-columns:1fr}.cv-card h2{font-size:clamp(1.2rem,2vw,1.55rem);line-height:1.05;letter-spacing:-.04em;font-weight:500}.cv-card__period,.cv-card__role,.cv-card__tech{color:var(--muted)}.cv-card__role{margin-top:4px;font-size:.98rem;line-height:1.5}.cv-card__period{font-size:.8rem;line-height:1.2;letter-spacing:.08em;text-transform:uppercase;white-space:nowrap}.cv-card__tech{max-width:46rem;font-size:.94rem;line-height:1.6}.case-study__row{padding:18px 0 26px}.case-study__label{grid-column:span 3}.case-study__body{grid-column:span 9}.case-study__pill-grid{max-width:44rem}.case-study__links{max-width:42rem}.case-study__body p{max-width:42rem;font-size:1.05rem;line-height:1.8;color:var(--muted)}.not-found{display:grid;grid-gap:18px;gap:18px;place-content:center;min-height:100vh}@media (max-width:900px){html{font-size:15px}.hero{padding-top:40px}.site-nav{margin-bottom:0}.site-nav__cta{display:none}.hero__content{grid-template-columns:1fr;gap:28px}.hero__intro{width:100%}.case-study__row,.details-grid,.index-grid,.project-hero{grid-template-columns:1fr}.case-study__body,.case-study__label,.cv-section__content,.cv-section__label,.details-grid>div:first-child,.details-grid>div:last-child{grid-column:auto}.shell{width:min(100vw - 28px,1100px);padding-bottom:48px}.project-row{grid-template-columns:1fr}.project-sheet__header,.project-sheet__row{grid-template-columns:1fr;gap:12px}.project-sheet__title-row{flex-direction:row;align-items:flex-start}.project-sheet__body,.project-sheet__meta{padding-left:0}.project-sheet__index{padding-top:0}.cv-card__header,.cv-section{grid-template-columns:1fr}.hero__toolbar{display:flex;justify-content:flex-start;align-items:flex-start;padding-top:0}.project-visual__frame{min-height:42vh;border-radius:20px}.site-footer__inner p{font-size:calc(.78rem - 1px)}}@media (prefers-reduced-motion:reduce){.transition-overlay{display:none}}