.border-glow-card{--edge-proximity: 0;--cursor-angle: 45deg;--edge-sensitivity: 30;--color-sensitivity: calc(var(--edge-sensitivity) + 20);--border-radius: 28px;--glow-padding: 40px;--cone-spread: 25;position:relative;border-radius:var(--border-radius);isolation:isolate;transform:translateZ(.01px);display:grid;border:1px solid rgb(255 255 255 / 15%);background:var(--card-bg, #120F17);overflow:visible;box-shadow:#0000001a 0 1px 2px,#0000001a 0 2px 4px,#0000001a 0 4px 8px,#0000001a 0 8px 16px,#0000001a 0 16px 32px,#0000001a 0 32px 64px}.border-glow-card--light{border-color:#18181b1f;box-shadow:#18181b0a 0 1px 2px,#18181b0d 0 8px 24px}.border-glow-card--light:after,.border-glow-card--light>.edge-light{mix-blend-mode:normal}.border-glow-card:before,.border-glow-card:after,.border-glow-card>.edge-light{content:"";position:absolute;top:0;right:0;bottom:0;left:0;border-radius:inherit;transition:opacity .25s ease-out;z-index:-1}.border-glow-card:not(:hover):not(.sweep-active):before,.border-glow-card:not(:hover):not(.sweep-active):after,.border-glow-card:not(:hover):not(.sweep-active)>.edge-light{opacity:0;transition:opacity .75s ease-in-out}.border-glow-card:before{border:1px solid transparent;background:linear-gradient(var(--card-bg, #120F17) 0 100%) padding-box,linear-gradient(#fff0,#fff0) border-box,var(--gradient-one, radial-gradient(at 80% 55%, hsla(268, 100%, 76%, 1) 0px, transparent 50%)) border-box,var(--gradient-two, radial-gradient(at 69% 34%, hsla(349, 100%, 74%, 1) 0px, transparent 50%)) border-box,var(--gradient-three, radial-gradient(at 8% 6%, hsla(136, 100%, 78%, 1) 0px, transparent 50%)) border-box,var(--gradient-four, radial-gradient(at 41% 38%, hsla(192, 100%, 64%, 1) 0px, transparent 50%)) border-box,var(--gradient-five, radial-gradient(at 86% 85%, hsla(186, 100%, 74%, 1) 0px, transparent 50%)) border-box,var(--gradient-six, radial-gradient(at 82% 18%, hsla(52, 100%, 65%, 1) 0px, transparent 50%)) border-box,var(--gradient-seven, radial-gradient(at 51% 4%, hsla(12, 100%, 72%, 1) 0px, transparent 50%)) border-box,var(--gradient-base, linear-gradient(#c299ff 0 100%)) border-box;opacity:calc((var(--edge-proximity) - var(--color-sensitivity)) / (100 - var(--color-sensitivity)));-webkit-mask-image:conic-gradient(from var(--cursor-angle) at center,black calc(var(--cone-spread) * 1%),transparent calc((var(--cone-spread) + 15) * 1%),transparent calc((100 - var(--cone-spread) - 15) * 1%),black calc((100 - var(--cone-spread)) * 1%));mask-image:conic-gradient(from var(--cursor-angle) at center,black calc(var(--cone-spread) * 1%),transparent calc((var(--cone-spread) + 15) * 1%),transparent calc((100 - var(--cone-spread) - 15) * 1%),black calc((100 - var(--cone-spread)) * 1%))}.border-glow-card:after{border:1px solid transparent;background:var(--gradient-one, radial-gradient(at 80% 55%, hsla(268, 100%, 76%, 1) 0px, transparent 50%)) padding-box,var(--gradient-two, radial-gradient(at 69% 34%, hsla(349, 100%, 74%, 1) 0px, transparent 50%)) padding-box,var(--gradient-three, radial-gradient(at 8% 6%, hsla(136, 100%, 78%, 1) 0px, transparent 50%)) padding-box,var(--gradient-four, radial-gradient(at 41% 38%, hsla(192, 100%, 64%, 1) 0px, transparent 50%)) padding-box,var(--gradient-five, radial-gradient(at 86% 85%, hsla(186, 100%, 74%, 1) 0px, transparent 50%)) padding-box,var(--gradient-six, radial-gradient(at 82% 18%, hsla(52, 100%, 65%, 1) 0px, transparent 50%)) padding-box,var(--gradient-seven, radial-gradient(at 51% 4%, hsla(12, 100%, 72%, 1) 0px, transparent 50%)) padding-box,var(--gradient-base, linear-gradient(#c299ff 0 100%)) padding-box;-webkit-mask-image:linear-gradient(to bottom,black,black),radial-gradient(ellipse at 50% 50%,black 40%,transparent 65%),radial-gradient(ellipse at 66% 66%,black 5%,transparent 40%),radial-gradient(ellipse at 33% 33%,black 5%,transparent 40%),radial-gradient(ellipse at 66% 33%,black 5%,transparent 40%),radial-gradient(ellipse at 33% 66%,black 5%,transparent 40%),conic-gradient(from var(--cursor-angle) at center,transparent 5%,black 15%,black 85%,transparent 95%);mask-image:linear-gradient(to bottom,#000,#000),radial-gradient(ellipse at 50% 50%,black 40%,transparent 65%),radial-gradient(ellipse at 66% 66%,black 5%,transparent 40%),radial-gradient(ellipse at 33% 33%,black 5%,transparent 40%),radial-gradient(ellipse at 66% 33%,black 5%,transparent 40%),radial-gradient(ellipse at 33% 66%,black 5%,transparent 40%),conic-gradient(from var(--cursor-angle) at center,transparent 5%,black 15%,black 85%,transparent 95%);-webkit-mask-composite:source-out,source-over,source-over,source-over,source-over,source-over;mask-composite:subtract,add,add,add,add,add;opacity:calc(var(--fill-opacity, .5) * (var(--edge-proximity) - var(--color-sensitivity)) / (100 - var(--color-sensitivity)));mix-blend-mode:soft-light}.border-glow-card>.edge-light{inset:calc(var(--glow-padding) * -1);pointer-events:none;z-index:1;-webkit-mask-image:conic-gradient(from var(--cursor-angle) at center,black 2.5%,transparent 10%,transparent 90%,black 97.5%);mask-image:conic-gradient(from var(--cursor-angle) at center,black 2.5%,transparent 10%,transparent 90%,black 97.5%);opacity:calc((var(--edge-proximity) - var(--edge-sensitivity)) / (100 - var(--edge-sensitivity)));mix-blend-mode:plus-lighter}.border-glow-card>.edge-light:before{content:"";position:absolute;inset:var(--glow-padding);border-radius:inherit;box-shadow:inset 0 0 0 1px var(--glow-color, hsl(40deg 80% 80% / 100%)),inset 0 0 1px 0 var(--glow-color-60, hsl(40deg 80% 80% / 60%)),inset 0 0 3px 0 var(--glow-color-50, hsl(40deg 80% 80% / 50%)),inset 0 0 6px 0 var(--glow-color-40, hsl(40deg 80% 80% / 40%)),inset 0 0 15px 0 var(--glow-color-30, hsl(40deg 80% 80% / 30%)),inset 0 0 25px 2px var(--glow-color-20, hsl(40deg 80% 80% / 20%)),inset 0 0 50px 2px var(--glow-color-10, hsl(40deg 80% 80% / 10%)),0 0 1px 0 var(--glow-color-60, hsl(40deg 80% 80% / 60%)),0 0 3px 0 var(--glow-color-50, hsl(40deg 80% 80% / 50%)),0 0 6px 0 var(--glow-color-40, hsl(40deg 80% 80% / 40%)),0 0 15px 0 var(--glow-color-30, hsl(40deg 80% 80% / 30%)),0 0 25px 2px var(--glow-color-20, hsl(40deg 80% 80% / 20%)),0 0 50px 2px var(--glow-color-10, hsl(40deg 80% 80% / 10%))}.border-glow-inner{display:flex;flex-direction:column;position:relative;overflow:auto;z-index:1}.journey-explorer .section-heading{align-items:flex-start;margin-bottom:40px}.journey-explorer .section-heading h2{max-width:10ch}.journey-introduction{max-width:340px;padding-top:12px}.journey-introduction p{color:var(--muted);font-size:17px;line-height:1.8;margin:0 0 24px}.journey-categories{display:flex;flex-wrap:wrap;gap:10px;padding-bottom:28px;border-bottom:1px solid var(--line)}.journey-categories button{display:flex;align-items:center;gap:16px;padding:12px 18px;border:1px solid var(--line);border-radius:7px;background:transparent;color:var(--ink);cursor:pointer;font-size:14px}.journey-categories button span{font-size:11px;font-variant-numeric:tabular-nums;opacity:.75}.journey-categories button[aria-pressed=true]{background:var(--ink);border-color:var(--ink);color:var(--paper)}.journey-stage{display:grid;grid-template-columns:minmax(0,.95fr) minmax(0,1.25fr);gap:6%;padding-top:36px;align-items:start}.journey-chapter{position:relative;display:grid;grid-template-columns:44px minmax(0,1fr) 20px;gap:20px;padding:20px 0;text-align:left;border:0;background:transparent;color:var(--muted);cursor:pointer}.journey-node{position:relative;display:grid;place-items:center;width:44px;height:44px;border:1px solid var(--line-strong);border-radius:50%;background:var(--paper);transition:background-color .35s ease,color .35s ease,transform .35s cubic-bezier(.16,1,.3,1)}.journey-chapter[aria-pressed=true] .journey-node{background:var(--red);color:#fff;border-color:var(--red);transform:scale(1.1)}.journey-chapter[aria-pressed=true]{color:var(--ink)}.journey-chapter-copy{display:flex;flex-direction:column;gap:8px;min-width:0}.journey-period{color:var(--muted);font-size:11px;font-variant-numeric:tabular-nums}.journey-chapter-copy strong{font-size:clamp(17px,1.6vw,23px);line-height:1.3;letter-spacing:-.02em}.journey-chapter-copy>span:last-child{font-size:13px;line-height:1.6}.chapter-arrow{margin-top:22px;opacity:0}.journey-chapter[aria-pressed=true] .chapter-arrow,.journey-chapter:hover .chapter-arrow{opacity:1;color:var(--red)}.journey-story{position:sticky;top:32px;border-top:2px solid #ff795d;background:var(--inverse-surface);color:var(--inverse-text);padding:40px;min-width:0;--chapter-ink: var(--inverse-text);--chapter-muted: var(--inverse-muted)}.journey-story-content{min-height:400px;animation:chapter-reveal .45s cubic-bezier(.16,1,.3,1) both}.journey-story-meta{display:flex;justify-content:space-between;gap:16px;font-size:12px;color:var(--muted);margin-bottom:28px}.journey-story h3{font-size:clamp(28px,3.3vw,48px);line-height:1.15;letter-spacing:-.03em;margin:0 0 18px}.journey-place{font-weight:800;font-size:17px;line-height:1.5;margin:0 0 10px}.journey-location{display:flex;align-items:center;gap:8px;color:var(--muted);font-size:12px;margin:0 0 28px}.journey-description{font-size:16px;line-height:1.85;color:var(--muted)}.journey-achievements{padding:0;margin:28px 0;list-style:none;display:flex;flex-direction:column;gap:18px}.journey-achievements li{display:flex;gap:12px;font-size:14px;line-height:1.8;color:var(--muted)}.journey-achievements svg{flex-shrink:0;color:var(--red);margin-top:4px}.journey-study-status{display:flex;gap:20px;align-items:start;padding-top:28px;margin-top:32px;border-top:1px solid var(--line-strong)}.journey-study-status>svg{color:var(--red);flex-shrink:0}.journey-study-status strong{font-size:22px}.journey-study-status p{line-height:1.7;color:var(--muted);font-size:14px}.journey-story-navigation{display:flex;gap:16px;align-items:center;justify-content:space-between;padding-top:24px;margin-top:28px;border-top:1px solid var(--line-strong)}.journey-story-navigation p{font-size:11px;line-height:1.6;color:var(--muted);margin:0}.journey-story-navigation>div{display:flex;gap:8px}.journey-story-navigation button{width:44px;height:44px;display:grid;place-items:center;border:1px solid var(--line-strong);border-radius:50%;background:var(--paper);color:var(--ink);cursor:pointer}.journey-story-navigation button:disabled{opacity:.35;cursor:default}@keyframes chapter-reveal{0%{opacity:.65;transform:translate(calc(var(--chapter-direction,1) * 18px));clip-path:inset(0 0 3% 0)}to{opacity:1;transform:none;clip-path:inset(0)}}@media(max-width:1050px){.journey-stage{gap:4%}.journey-story{padding:24px}.journey-chapter{gap:14px}}@media(max-width:700px){.journey-explorer .section-heading{display:block;margin-bottom:28px}.journey-introduction{padding-top:24px;max-width:100%}.journey-categories{gap:8px}.journey-categories button{padding:10px 12px;gap:10px;font-size:12px}.journey-stage{display:flex;flex-direction:column;gap:24px;padding-top:24px}.journey-chapter{flex:0 0 250px;padding:16px 0;scroll-snap-align:start;border-bottom:1px solid var(--line);grid-template-columns:44px minmax(0,1fr)}.journey-chapter[aria-pressed=true]{border-bottom-color:var(--red)}.chapter-arrow{display:none}.journey-story{position:static;width:100%;padding:24px}.journey-story-content{min-height:300px}.journey-story-meta{flex-wrap:wrap;gap:8px}}@media(prefers-reduced-motion:reduce){.journey-story-content{animation:none}.journey-node{transition:none}.journey-chapter[aria-pressed=true] .journey-node{transform:none}}.journey-index{min-width:0}.journey-era{padding:0 0 28px;margin-bottom:8px;border-bottom:1px solid var(--line)}.journey-era>span{display:block;font-size:clamp(80px,10vw,152px);font-weight:800;letter-spacing:-.04em;line-height:.95;color:var(--ink);font-variant-numeric:tabular-nums;animation:year-reveal .5s cubic-bezier(.16,1,.3,1)}.journey-era>div{display:flex;align-items:center;justify-content:space-between;margin-top:18px;color:var(--muted);font-size:14px}.journey-era svg{color:var(--red)}.journey-chapter{z-index:1}.journey-story .heading-accent{color:#ff795d!important}.journey-story :is(.journey-story-meta,.journey-location,.journey-description,.journey-achievements li,.journey-study-status p,.journey-story-navigation p){color:var(--chapter-muted)}.journey-story-meta>span:first-child{display:inline-flex;align-items:center;gap:8px}.journey-story .tags li{background:var(--inverse-line);color:var(--chapter-ink)}.journey-story :is(.journey-location,.journey-study-status,.journey-achievements) svg{color:#ff795d}.journey-story :is(.journey-study-status,.journey-story-navigation){border-color:var(--inverse-line)}.journey-story-navigation button{border-color:var(--inverse-line);background:transparent;color:var(--chapter-ink)}.journey-story-navigation button:not(:disabled):hover{background:#ff795d;border-color:#ff795d;color:#1b2223}.journey-achievements li{animation:achievement-reveal .4s cubic-bezier(.16,1,.3,1) both}.journey-story-content{min-height:340px}@keyframes year-reveal{0%{opacity:.5;clip-path:inset(100% 0 0);transform:translateY(12px)}to{opacity:1;clip-path:inset(0);transform:none}}@keyframes achievement-reveal{0%{opacity:.5;transform:translateY(8px)}to{opacity:1;transform:none}}@media(max-width:1050px){.journey-story{padding:28px}}@media(max-width:700px){.journey-index{width:100%}.journey-era{display:flex;align-items:flex-end;justify-content:space-between;gap:20px;padding-bottom:20px}.journey-era>span{font-size:86px}.journey-era>div{max-width:140px;margin:0 0 5px;font-size:12px;gap:12px}.journey-era svg{flex-shrink:0;width:24px}.journey-story{padding:24px}.journey-story-content{min-height:340px}}@media(prefers-reduced-motion:reduce){.journey-era>span,.journey-achievements li{animation:none}}.journey-playback{display:flex;justify-content:space-between;align-items:center;gap:16px;padding-top:18px;font-size:12px;color:var(--muted)}.journey-playback button{display:flex;align-items:center;gap:8px;padding:8px 12px;border:1px solid var(--line-strong);background:transparent;color:var(--ink);border-radius:7px;cursor:pointer}.journey-playback button:disabled{opacity:.5;cursor:default}.journey-story{transition:transform .45s cubic-bezier(.16,1,.3,1),box-shadow .45s cubic-bezier(.16,1,.3,1)}.journey-chapter-copy{transition:transform .35s cubic-bezier(.16,1,.3,1)}@media(hover:hover)and (pointer:fine){.journey-story:hover{transform:perspective(1400px) rotateX(1deg) translateY(-4px);box-shadow:0 18px 38px var(--shadow-notice)}.journey-chapter:hover .journey-chapter-copy{transform:translate(5px)}.journey-chapter:hover .journey-node{transform:scale(1.12);border-color:var(--red)}}@media(prefers-reduced-motion:reduce){.journey-story,.journey-chapter-copy{transition:none}.journey-story:hover,.journey-chapter:hover .journey-chapter-copy,.journey-chapter:hover .journey-node{transform:none}}@media(min-width:701px){.journey-index{position:sticky;top:32px;align-self:start}.journey-era{position:relative;background:var(--paper);padding-top:8px}}@media(hover:hover)and (pointer:fine){.journey-chapter:hover{background:var(--surface-alt);border-radius:7px}}.journey-rail{width:100%;overflow:visible;padding:8px 0}.journey-rail-track{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.journey-chapter{display:block;min-width:0;padding:14px;border:1px solid var(--line);border-radius:7px;background:transparent;color:var(--muted)}.journey-chapter-copy{gap:7px}.journey-chapter-copy strong{font-size:15px;line-height:1.35;overflow-wrap:anywhere}.journey-chapter-copy>span:last-child{font-size:11px;line-height:1.55}.journey-period{font-size:10px;line-height:1.5;padding-right:28px;min-height:26px}.journey-node{position:absolute;right:12px;top:12px;width:26px;height:26px}.journey-node svg{width:14px;height:14px}.chapter-arrow{display:none}.journey-chapter[aria-pressed=true]{background:var(--surface-alt);border-color:var(--red);color:var(--ink)}.journey-chapter[aria-pressed=true] .journey-node{transform:none}.journey-era>span{font-size:clamp(80px,9vw,128px)}.journey-era{padding-bottom:20px}.journey-era>div{margin-top:12px}.journey-story-navigation .journey-countdown{position:relative;width:48px;height:48px;border:0;margin-right:4px}.journey-countdown .journey-countdown-ring{position:absolute;top:0;right:0;bottom:0;left:0;width:48px;height:48px;transform:rotate(-90deg);pointer-events:none}.journey-countdown circle{fill:none;stroke-width:2}.countdown-track{stroke:var(--inverse-line)}.countdown-fill{stroke:#ff795d;stroke-linecap:round;stroke-dasharray:1;stroke-dashoffset:0}.countdown-fill.is-running{animation:chapter-countdown 7s linear forwards}.journey-story-navigation .journey-countdown:hover{background:transparent;color:#ff795d}.journey-story-navigation .journey-countdown:hover>svg{transform:none}.journey-story-navigation .journey-countdown:hover>.journey-countdown-ring{transform:rotate(-90deg)}@keyframes chapter-countdown{0%{stroke-dashoffset:1}to{stroke-dashoffset:0}}@media(hover:hover)and (pointer:fine){.journey-chapter:hover{transform:translateY(-3px);border-color:var(--red);background:var(--surface-alt)}.journey-chapter:hover .journey-chapter-copy{transform:none}}@media(max-width:700px){.journey-chapter{padding:12px}.journey-chapter-copy strong{font-size:14px}.journey-stage{gap:24px}.journey-era>span{font-size:86px}.journey-story-navigation{flex-wrap:wrap}.journey-story-navigation>p{flex:1 1 120px}.journey-story-navigation>div{gap:6px}}@media(prefers-reduced-motion:reduce){.countdown-fill.is-running{animation:none}.journey-chapter:hover{transform:none}}.patent-publication{display:grid;grid-template-columns:.8fr 1.2fr;gap:8%;border-top:1px solid var(--line);background:var(--paper);color:var(--ink)}.patent-heading h2{font-size:clamp(36px,4.5vw,64px);line-height:1.1;letter-spacing:-.03em;margin:0 0 26px}.patent-heading h2 span{color:var(--muted)}.patent-heading>p,.patent-record>p,.patent-record details p{color:var(--muted);line-height:1.8;max-width:70ch}.patent-record{min-width:0}.patent-record h3{font-size:clamp(24px,2.5vw,34px);line-height:1.3;margin:0 0 20px;letter-spacing:-.02em}.patent-record h3 span{color:var(--red)}.patent-record dl{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:22px 30px;margin:28px 0}.patent-record dl>div{min-width:0}.patent-record dt{font-size:12px;color:var(--muted);margin-bottom:7px}.patent-record dd{margin:0;font-size:15px;font-variant-numeric:tabular-nums}.patent-record details{border-block:1px solid var(--line);padding:18px 0;margin-bottom:25px}.patent-record summary{cursor:pointer;line-height:1.6}.patent-record details p{font-size:14px;overflow-wrap:anywhere}@media(max-width:700px){.patent-publication{grid-template-columns:1fr;gap:30px}.patent-record dl{gap:20px}.patent-record h3{font-size:25px}}@font-face{font-family:Manrope;src:url(/fonts/manrope-regular.woff2) format("woff2");font-weight:400;font-display:swap}@font-face{font-family:Manrope;src:url(/fonts/manrope-bold.woff2) format("woff2");font-weight:600 800;font-display:swap}:root{font-family:Manrope,sans-serif;color:var(--ink);background:var(--paper);font-synthesis:none;scroll-behavior:smooth;scroll-padding-top:100px}*{box-sizing:border-box}body{margin:0;cursor:auto;background:var(--paper);color:var(--ink)}a{color:inherit;text-decoration:none}button,input,textarea{font:inherit}button,a,input,textarea{touch-action:manipulation}button{cursor:pointer}button:disabled{opacity:.65;cursor:wait}a,button{-webkit-tap-highlight-color:transparent}a:focus-visible,button:focus-visible,summary:focus-visible,input:focus-visible,textarea:focus-visible{outline:3px solid var(--red);outline-offset:5px}::-moz-selection{background:var(--red);color:var(--inverse-text)}::selection{background:var(--red);color:var(--inverse-text)}::-webkit-scrollbar{width:9px}::-webkit-scrollbar-track{background:var(--paper)}::-webkit-scrollbar-thumb{background:var(--line-strong);border:2px solid var(--paper);border-radius:8px}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.skip-link{position:fixed;top:12px;left:12px;padding:12px 20px;background:var(--ink);color:var(--inverse-text);z-index:100;transform:translateY(-160%)}.skip-link:focus{transform:none}.site-header{height:98px;padding:0 4%;display:flex;align-items:center;justify-content:space-between;position:relative;z-index:20;background:var(--paper)}.identity{display:flex;align-items:center;gap:22px}.identity img{width:62px;height:40px}.identity>span{border-left:1px solid var(--line-strong);padding-left:21px}.identity strong{font-size:15px;letter-spacing:.23em;display:block;font-weight:800}.identity small{font-size:11px;letter-spacing:.25em;display:block;margin-top:3px}.main-nav{display:flex;gap:40px;align-items:center;font-size:15px}.main-nav>a:not(.resume-link):hover{color:var(--red)}.resume-link{border:1px solid var(--ink);border-radius:16px;padding:12px 24px;display:flex;gap:14px;align-items:center}.resume-link:hover{background:var(--ink);color:var(--paper)}.menu-toggle{display:none}.portrait-hero{--scroll:0;--mx:0px;--my:0px;height:min(830px,calc(100svh - 98px));min-height:650px;position:relative;overflow:hidden;isolation:isolate}.hero-name{position:absolute;top:0;left:3.7%;margin:0;font-size:clamp(130px,19.2vw,295px);font-weight:800;letter-spacing:-.04em;line-height:1.03;z-index:0;transform:translate3d(calc(var(--scroll)*-70px),calc(var(--scroll)*-35px),0)}.hero-ribbon{position:absolute;top:23%;right:-2%;bottom:-15%;left:7%;z-index:1;transform:translate3d(calc(var(--mx)*-1),calc(var(--scroll)*50px),0) rotate(calc(var(--scroll)*-6deg));pointer-events:none}.hero-ribbon svg{width:100%;height:100%;overflow:visible}.hero-portrait{position:absolute;bottom:-3%;left:25%;width:59%;height:106%;z-index:3;pointer-events:none;transform:translate3d(calc(var(--mx) + var(--scroll)*75px),calc(var(--my) + var(--scroll)*30px),0)}.hero-portrait img{width:100%;height:100%;-o-object-fit:contain;object-fit:contain;-o-object-position:center bottom;object-position:center bottom}.hero-surname{position:absolute;right:5%;bottom:1%;z-index:5;font-size:clamp(110px,16vw,246px);font-weight:800;line-height:1;letter-spacing:-.04em;color:var(--paper);mix-blend-mode:difference;transform:translate3d(calc(var(--scroll)*50px),0,0);pointer-events:none}.hero-copy{position:absolute;left:4%;top:38%;width:32%;z-index:6}.role-label{font-size:11px;letter-spacing:.24em;text-transform:uppercase;margin:0 0 24px}.hero-intro{font-size:clamp(20px,2.05vw,32px);line-height:1.5;letter-spacing:-.02em;margin:0;max-width:490px}.hero-actions{margin-top:32px;display:flex;align-items:center;gap:28px;flex-wrap:wrap}.button{display:inline-flex;align-items:center;justify-content:center;gap:20px;padding:18px 24px;border:0;border-radius:7px;font-size:14px;min-height:52px;transition:transform .25s cubic-bezier(.16,1,.3,1),background .2s}.button-dark{background:var(--ink);color:var(--paper)}.button:hover{transform:translateY(-3px);background:var(--action-hover)}.text-link{display:inline-flex;gap:12px;align-items:center;font-size:14px;position:relative;padding-bottom:6px;border-bottom:1px solid currentColor}.text-link:hover svg,.project-links a:hover svg{transform:translate(3px,-3px)}a svg{transition:transform .25s}.scroll-cue{position:absolute;right:4.3%;top:19%;z-index:6;display:flex;align-items:center;flex-direction:column;gap:24px;font-size:10px;letter-spacing:.25em;text-transform:uppercase}.scroll-cue i{width:1px;height:110px;background:var(--line-strong);position:relative}.scroll-cue i:after{content:"";position:absolute;width:7px;height:7px;border-radius:50%;background:var(--ink);left:-3px;top:calc(20% + var(--scroll)*70%)}.scroll-cue svg{transform:rotate(90deg)}.hero-location{position:absolute;bottom:26px;left:4%;font-size:11px;color:var(--muted);z-index:6}.hero-location span{display:block;margin-top:6px}.featured-index{display:flex;align-items:center;gap:30px;padding:28px 4%;background:var(--paper);border-block:1px solid var(--line)}.featured-index>span{font-size:10px;letter-spacing:.22em;text-transform:uppercase;min-width:135px}.featured-index>a{display:flex;align-items:center;justify-content:space-between;gap:16px;flex:1;font-size:15px;padding:10px 0 10px 24px;border-left:1px solid var(--line)}.featured-index a:hover svg{transform:translate(6px)}.section-wrap{padding:125px 6%;scroll-margin-top:20px}.section-heading{display:flex;justify-content:space-between;align-items:flex-end;gap:60px;margin-bottom:60px}.section-heading h2,h2{font-size:clamp(38px,5.2vw,78px);letter-spacing:-.04em;line-height:1.12;font-weight:800;margin:0}.section-heading h2 span{color:var(--muted)}.section-heading>p{max-width:360px;font-size:16px;line-height:1.8;margin:0 0 6px;color:var(--muted)}.project-filters{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:38px}.project-filters button{padding:10px 20px;border:1px solid var(--line);border-radius:30px;background:transparent;font-size:13px}.project-filters button[aria-pressed=true]{background:var(--ink);color:var(--paper);border-color:var(--ink)}.projects-list{display:flex;flex-direction:column;gap:70px}.project{display:grid;grid-template-columns:1.08fr 1fr;gap:6%;align-items:center;padding-bottom:70px;border-bottom:1px solid var(--line);scroll-margin-top:40px}.project:nth-child(2n) .project-visual{order:2}.project-visual,.project-content{min-width:0}.project-content h3{font-size:clamp(25px,3vw,43px);line-height:1.22;letter-spacing:-.03em;margin:10px 0 18px;font-weight:800}.project-content>p:not(.project-category){color:var(--muted);font-size:15px;line-height:1.8}.project-category{color:var(--accent-text);text-transform:uppercase;font-size:11px;letter-spacing:.15em}.tags{list-style:none;display:flex;flex-wrap:wrap;gap:8px;padding:0;margin:24px 0}.tags li{font-size:11px;padding:7px 11px;background:var(--surface-chip);border-radius:4px}.project-details summary{list-style:none;cursor:pointer;display:flex;justify-content:space-between;align-items:center;border-block:1px solid var(--line);padding:18px 0;font-size:14px;font-weight:800}.project-details summary::-webkit-details-marker{display:none}.project-details[open] summary svg{transform:rotate(45deg)}.project-details>div{font-size:14px;line-height:1.8;color:var(--muted);padding:10px 0 0}.project-details h4{color:var(--ink);margin:22px 0 6px}.project-details ul{padding-left:20px}.project-links{display:flex;gap:22px;flex-wrap:wrap;margin-top:20px}.project-links a{display:flex;align-items:center;gap:9px;font-size:13px;text-decoration:underline;text-underline-offset:5px}.architecture{padding:32px;background:var(--red);color:var(--ink);min-height:365px;position:relative;overflow:hidden}.architecture-1{background:var(--schematic-teal);color:var(--schematic-paper)}.architecture-2{background:var(--schematic-sage)}.diagram-title{display:flex;justify-content:space-between;gap:10px;font-size:9px;letter-spacing:.14em;margin-bottom:47px}.diagram-inputs,.diagram-outputs{display:flex;gap:12px;justify-content:space-between}.diagram-inputs span,.diagram-outputs span{flex:1;min-width:0;font-size:11px;text-align:center;padding:13px 6px;border:1px solid currentColor;position:relative;background:inherit}.diagram-routes{display:flex;justify-content:space-around;height:27px}.diagram-routes i{width:1px;background:currentColor;opacity:.65}.diagram-core{display:flex;justify-content:space-between;align-items:center;font-size:29px;letter-spacing:-.035em;font-weight:800;border-block:1px solid currentColor;padding:18px 4px;margin:0 0 28px;position:relative}.diagram-core:after{content:"";position:absolute;left:50%;bottom:-29px;height:28px;border-left:1px solid currentColor}.diagram-foot{display:flex;gap:20px;justify-content:space-between;align-items:flex-end;margin-top:40px;font-size:13px;line-height:1.5}.diagram-foot>span{font-size:9px;text-align:right;max-width:80px}.project-study{background:var(--surface-alt);padding:40px;min-height:320px;display:flex;flex-direction:column;justify-content:space-between}.project-study>span{font-size:10px;text-transform:uppercase;letter-spacing:.13em}.project-study h4{font-size:35px;line-height:1.2;letter-spacing:-.03em;margin:30px 0 10px;font-weight:800}.project-study p{font-size:14px;line-height:1.7;margin:0 0 30px}.project:nth-child(2n) .project-study{background:var(--schematic-sage)}.about-section{background:var(--ink);color:var(--paper)}.about-body{display:grid;grid-template-columns:1fr 1fr;gap:12%;padding-top:35px;border-top:1px solid var(--inverse-line)}.about-body .about-statement{font-size:clamp(24px,3vw,42px);line-height:1.4;letter-spacing:-.03em;color:var(--paper);margin:0}.about-body>div p{font-size:16px;line-height:1.85;margin:0 0 22px}.about-body .text-link{color:var(--paper);margin-top:15px}.journey{margin-top:65px}.journey>h3{font-size:18px;margin:65px 0 25px}.journey-row{display:grid;grid-template-columns:25% 1fr;gap:6%;padding:35px 0;border-top:1px solid var(--line)}.journey-date{font-size:13px;color:var(--muted);margin:7px 0}.journey-row h4{font-size:25px;letter-spacing:-.02em;margin:0 0 10px;font-weight:800}.journey-row>div>p{font-size:15px;line-height:1.8;color:var(--muted);max-width:760px}.journey-role{font-size:13px!important}.journey-row ul{max-width:740px;padding-left:20px;font-size:14px;line-height:1.85;color:var(--muted)}.education-status{font-size:12px;display:inline-block;padding:6px 10px;background:var(--surface-chip)}.skills-section{padding-top:0}.skills-section h2{font-size:clamp(35px,4vw,60px);margin-bottom:45px}.skill-row{display:grid;grid-template-columns:31% 1fr;gap:5%;border-top:1px solid var(--line);padding:27px 0}.skill-row h3{font-size:17px;margin:0}.skill-row p{font-size:17px;line-height:1.8;margin:0;color:var(--muted)}.contact-section{background:var(--surface-alt);display:grid;grid-template-columns:1.2fr 1fr;gap:10%}.contact-copy h2 span{color:var(--accent-text)}.contact-copy>p{font-size:16px;line-height:1.8;color:var(--muted);max-width:400px;margin:28px 0 32px}.email-link{font-size:clamp(15px,1.7vw,24px);display:flex;gap:12px;align-items:center;overflow-wrap:anywhere}.social-links{display:flex;gap:25px;margin-top:33px;flex-wrap:wrap}.social-links a{display:flex;gap:7px;align-items:center;font-size:13px}.phone-link{display:inline-block;font-size:12px;margin-top:25px}.contact-form{padding-top:6px}.contact-form label{display:flex;flex-direction:column;gap:12px;margin-bottom:26px;font-size:13px;font-weight:800}.contact-form input,.contact-form textarea{background:transparent;border:0;border-bottom:1px solid var(--line-strong);padding:12px 0;color:var(--ink);border-radius:0;font-weight:400;font-size:15px;resize:vertical;caret-color:var(--red)}.contact-form input::-moz-placeholder,.contact-form textarea::-moz-placeholder{color:var(--muted);opacity:1}.contact-form input::placeholder,.contact-form textarea::placeholder{color:var(--muted);opacity:1}.honeypot{display:none!important}.form-status{font-size:13px;line-height:1.6;min-height:42px}.form-status.error{color:var(--error)}.form-status.success{color:var(--success)}.site-footer{padding:35px 4%;display:flex;align-items:center;justify-content:space-between;gap:25px;flex-wrap:wrap}.site-footer .identity img{width:45px}.site-footer .identity strong{font-size:10px}.site-footer .identity small{font-size:9px}.site-footer>p{font-size:11px;color:var(--muted)}.privacy-button{background:none;border:0;color:var(--muted);font-size:11px;text-decoration:underline;text-underline-offset:4px}.analytics-notice{position:fixed;bottom:20px;left:20px;max-width:330px;z-index:50;background:var(--ink);color:var(--inverse-text);padding:20px;border-radius:8px;box-shadow:0 8px 25px var(--shadow-notice)}.analytics-notice p{font-size:13px;line-height:1.65;margin:0 0 14px}.analytics-notice>div{display:flex;gap:10px}.analytics-notice button{padding:10px 12px;background:transparent;border:1px solid var(--inverse-line);border-radius:5px;font-size:11px;color:var(--inverse-text)}.analytics-notice button:last-child{background:var(--paper);color:var(--ink)}@media(min-width:1700px){.portrait-hero{max-width:1800px;margin:auto}.site-header,.featured-index,.section-wrap,.site-footer{padding-left:max(6%,calc((100vw - 1560px)/2));padding-right:max(6%,calc((100vw - 1560px)/2))}}@media(max-width:1050px){.main-nav{gap:22px}.identity strong{font-size:12px}.identity{gap:15px}.identity>span{padding-left:15px}.portrait-hero{min-height:600px;height:720px}.hero-copy{width:37%;top:36%}.hero-portrait{left:29%;width:65%;height:94%}.hero-name{font-size:19vw;top:25px}.hero-surname{font-size:17vw;bottom:7%}.hero-intro{font-size:22px}.hero-actions{gap:20px}.scroll-cue{right:3%;top:17%}.featured-index{gap:10px}.featured-index>span{min-width:100px}.featured-index>a{font-size:12px;padding-left:15px}.section-wrap{padding:90px 5%}.section-heading{gap:30px}.section-heading>p{max-width:300px;font-size:14px}.architecture{padding:24px}.diagram-inputs span,.diagram-outputs span{font-size:9px}.diagram-title{font-size:8px}.contact-section{gap:6%}}@media(max-width:700px){:root{scroll-padding-top:80px}.site-header{height:80px;padding:0 6%}.identity img{width:44px;height:33px}.identity{gap:12px}.identity strong{font-size:10px;letter-spacing:.18em}.identity small{font-size:9px;letter-spacing:.15em}.identity>span{padding-left:12px}.menu-toggle{display:flex;align-items:center;justify-content:center;width:44px;height:44px;border:1px solid var(--line);border-radius:8px;background:transparent}.main-nav{display:none;position:absolute;top:80px;left:0;right:0;background:var(--paper);padding:24px 6%;border-bottom:1px solid var(--line);align-items:stretch}.main-nav.is-open{display:flex;flex-direction:column;gap:0}.main-nav>a{padding:16px 0;font-size:17px}.main-nav .resume-link{margin-top:12px;padding:14px;justify-content:center}.portrait-hero{height:850px;min-height:0}.hero-name{left:5%;top:10px;font-size:20vw;line-height:1.1}.hero-copy{left:6%;right:6%;top:123px;width:auto;max-width:420px}.role-label{font-size:9px;margin-bottom:14px;letter-spacing:.17em}.hero-intro{font-size:21px;line-height:1.55;max-width:340px}.hero-actions{margin-top:19px;gap:20px}.button{font-size:12px;padding:14px 17px;gap:12px}.text-link{font-size:12px;gap:8px}.hero-portrait{left:1%;width:103%;height:58%;bottom:0}.hero-surname{font-size:22.5vw;right:5%;bottom:18px}.hero-ribbon{top:38%;right:-25%;bottom:-8%;left:-25%}.hero-ribbon svg{height:100%;width:100%}.scroll-cue,.hero-location{display:none}.featured-index{padding:25px 6%;display:block}.featured-index>span{display:block;margin-bottom:14px}.featured-index>a{font-size:13px;border-left:0;border-top:1px solid var(--line);padding:15px 0;gap:8px}.section-wrap{padding:70px 6%}.section-heading{display:block;margin-bottom:35px}.section-heading h2,h2{font-size:40px}.section-heading>p{font-size:14px;max-width:100%;margin:22px 0 0}.project-filters{gap:7px;margin-bottom:28px}.project-filters button{font-size:11px;padding:9px 14px}.project{display:flex;flex-direction:column;gap:28px;padding-bottom:38px;align-items:stretch}.project:nth-child(2n) .project-visual{order:0}.projects-list{gap:38px}.architecture{min-height:330px;padding:22px}.diagram-title{font-size:8px;margin-bottom:35px}.diagram-inputs,.diagram-outputs{gap:8px}.diagram-inputs span,.diagram-outputs span{font-size:9px;padding:12px 3px}.diagram-core{font-size:26px}.diagram-foot{font-size:11px}.project-content h3{font-size:30px}.project-content>p:not(.project-category){font-size:14px}.about-body{grid-template-columns:1fr;gap:30px}.about-body .about-statement{font-size:28px}.about-body>div p{font-size:14px}.journey{margin-top:35px}.journey>h3{margin-top:40px}.journey-row{grid-template-columns:1fr;gap:15px;padding:27px 0}.journey-row h4{font-size:23px}.journey-row>div>p{font-size:14px}.skill-row{grid-template-columns:1fr;gap:15px}.skill-row p{font-size:15px}.skills-section{padding-top:0}.skills-section h2{font-size:35px}.contact-section{grid-template-columns:1fr;gap:45px}.contact-copy h2{font-size:49px}.email-link{font-size:15px}.contact-copy>p{font-size:14px}.site-footer{padding:30px 6%;align-items:flex-start}.site-footer .identity{width:100%}.analytics-notice{left:12px;right:12px;bottom:12px;max-width:320px}.site-footer>p{margin:0}.site-footer .text-link{font-size:11px}.privacy-button{padding:0}}.hero-ribbon img{width:100%;height:100%;-o-object-fit:contain;object-fit:contain}.hero-surname{mix-blend-mode:normal;white-space:nowrap}.hero-surname span:last-child{color:var(--ink)}@media(min-width:1051px){.site-header{position:absolute;inset:0 0 auto;background:transparent}.portrait-hero{height:min(928px,100svh);min-height:748px}.hero-name{top:98px;font-size:clamp(200px,22.3vw,342px)}.hero-copy{top:44%}.hero-portrait{left:22%;width:66%;height:110%;bottom:-7%}.hero-ribbon{top:34%;right:-2%;bottom:-2%;left:9%}}@media(max-width:700px){.portrait-hero{height:740px}.hero-ribbon{top:44%;right:-25%;bottom:-8%;left:-25%}.hero-portrait{height:62%}.hero-surname{font-size:22.5vw;bottom:15px}.hero-surname span:last-child{color:var(--paper)}}@supports (animation-timeline:view()){@keyframes project-arrive{0%{opacity:.65;transform:translateY(36px) scale(.97)}to{opacity:1;transform:none}}.project-visual{animation:project-arrive linear both;animation-timeline:view();animation-range:entry 0% entry 65%}}@media(prefers-reduced-motion:reduce){:root{scroll-behavior:auto}*,*:before,*:after{animation:none!important;transition:none!important}.hero-name,.hero-portrait,.hero-ribbon,.hero-surname,.project-visual{transform:none;opacity:1}.scroll-cue i:after{top:20%}}:root{--motion-ease:cubic-bezier(.65,0,.35,1)}.hero-copy{background:var(--paper);padding:16px 18px 18px 0;border-radius:0 14px 14px 0}.hero-intro{font-size:clamp(20px,1.8vw,29px);line-height:1.6}@media(min-width:1051px){.hero-name{font-size:clamp(180px,18vw,276px);top:115px}.hero-copy{top:51%;width:30%;max-width:460px}.hero-portrait{left:31%;width:65%;height:107%;bottom:-7%}.hero-ribbon{top:36%;right:-8%;bottom:-5%;left:25%}.hero-surname{font-size:clamp(110px,14.5vw,223px);right:4%}.hero-actions{gap:22px;margin-top:24px}.hero-location{bottom:22px}}@media(min-width:701px)and (max-width:1050px){.hero-name{font-size:17vw}.hero-copy{top:34%;width:40%}.hero-portrait{left:38%;width:62%}.hero-intro{font-size:21px}}@media(max-width:700px){.hero-copy{padding:0;background:transparent}.hero-intro{font-size:21px}.hero-portrait{height:58%}.hero-ribbon{top:49%;right:-25%;bottom:-8%;left:-25%}}.section-wrap,.project,.journey-row,.skill-row{--depth:0px;--trace:1;position:relative}.section-wrap{isolation:isolate}.project-visual{animation:none!important;transform:translate3d(0,var(--depth),0);transition:transform .12s ease-out}.diagram-inputs{transform:translate3d(0,calc(var(--depth)*-.18),0)}.diagram-core{transform:translate3d(0,calc(var(--depth)*.16),0)}.section-heading h2,.skills-section>h2,.contact-copy h2{transform:translate3d(0,calc(var(--depth)*.18),0)}.about-section,.contact-section{overflow:hidden}.about-section:before,.contact-section:before{content:"";position:absolute;z-index:-1;pointer-events:none;width:480px;height:480px;border:1px solid var(--inverse-line);border-radius:50%;right:-210px;top:70px;transform:translate3d(0,calc(var(--depth)*-2),0)}.contact-section:before{border-color:var(--line-strong);width:620px;height:620px;right:-340px;top:-140px}.about-body>div,.contact-form{transform:translate3d(0,calc(var(--depth)*-.16),0)}.project:after,.journey-row:before,.skill-row:before,.section-wrap:after{content:"";position:absolute;pointer-events:none;background:var(--red);height:1px;left:0;right:0;transform:scaleX(var(--trace));transform-origin:left center}.project:after{bottom:-1px}.journey-row:before,.skill-row:before{top:-1px}.section-wrap:after{top:0;left:6%;right:6%;background:currentColor;opacity:.35}.project-visual:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;border:1px solid currentColor;pointer-events:none;clip-path:inset(0 calc((1 - var(--trace))*100%) 0 0);opacity:.45}.project-visual{position:relative}.project-details>div{display:flow-root;padding-bottom:16px}.project-details summary svg{transition:transform .3s var(--motion-ease)}.project-details[data-expanded=false] summary svg{transform:rotate(0)}.project-details[data-expanded=true] summary svg{transform:rotate(45deg)}.project-filters button{transition:background .22s ease,color .22s ease,border-color .22s ease}@media(max-width:700px){.about-section:before{width:300px;height:300px;right:-200px}.section-heading h2,.skills-section>h2,.contact-copy h2,.about-body>div,.contact-form{transform:none}}@media(prefers-reduced-motion:reduce){.project-visual,.diagram-inputs,.diagram-core,.section-heading h2,.skills-section>h2,.contact-copy h2,.about-body>div,.contact-form,.about-section:before,.contact-section:before{transform:none}.project:after,.journey-row:before,.skill-row:before,.section-wrap:after{transform:none}.project-visual:after{clip-path:none}}@media(min-width:1051px){.main-nav{background:var(--paper);padding:8px 12px;border-radius:16px}.site-header .main-nav{margin-left:auto}.site-header .header-actions{margin-left:16px}.site-header:not(.page-header) .main-nav{position:static;flex-direction:row;align-items:center;gap:24px;padding:8px 12px;background:var(--paper);border-radius:16px;margin-left:auto}.site-header:not(.page-header) .main-nav>a:not(.resume-link){padding:4px 0}.site-header:not(.page-header) .resume-link{padding:12px 16px;gap:10px;background:var(--paper)}.site-header:not(.page-header) .resume-link:hover{background:var(--ink)}.site-header:not(.page-header) .header-actions{margin-left:16px}.hero-portrait{height:94%;bottom:-7%}}@media(min-width:701px)and (max-width:1050px){.hero-surname{font-size:13vw;bottom:3%;right:4%}}.home-project-art{margin:0;overflow:hidden;position:relative;background:var(--paper);aspect-ratio:8/5}.home-project-art img{display:block;width:100%;height:100%;-o-object-fit:cover;object-fit:cover}.home-project-art figcaption{position:absolute;bottom:14px;left:18px;background:var(--art-caption-bg);color:var(--paper);padding:5px 9px;font-size:10px;border-radius:4px}.home-project-status{color:var(--success)!important;font-size:12px!important;font-weight:800}.all-projects-link{margin-top:40px}.field-control{position:relative;display:block;border:1px solid var(--line-strong);border-radius:7px;isolation:isolate}.field-control:after{content:"";position:absolute;top:-1px;right:-1px;bottom:-1px;left:-1px;border:2px solid var(--red);border-radius:7px;pointer-events:none;clip-path:inset(0 100% 0 0);transition:clip-path .35s cubic-bezier(.65,0,.35,1)}.field-control:focus-within:after{clip-path:inset(0 0 0 0)}.contact-form .field-control input,.contact-form .field-control textarea{width:100%;padding:14px 15px;border:0;display:block;border-radius:7px}.contact-form .field-control input:focus-visible,.contact-form .field-control textarea:focus-visible{outline:none}@media(prefers-reduced-motion:reduce){.field-control:after{transition:none}}@keyframes entrance-down{0%{opacity:0;translate:0 -72px}to{opacity:1;translate:0 0}}@keyframes ribbon-arrival{0%{opacity:0;translate:0 35vh}to{opacity:1;translate:0 0}}@keyframes portrait-arrival{0%{opacity:0;translate:0 48px}to{opacity:1;translate:0 0}}@keyframes lettering-arrival{0%{opacity:0;translate:0 24px}to{opacity:1;translate:0 0}}@media(prefers-reduced-motion:no-preference){html[data-hero-ready=true] .home-entry-header,html[data-hero-ready=true] .hero-entry,html[data-hero-ready=true] .hero-entry .hero-ribbon,html[data-hero-ready=true] .hero-entry .hero-portrait,html[data-hero-ready=true] .hero-entry .hero-name,html[data-hero-ready=true] .hero-entry .hero-surname,html[data-hero-ready=true] .hero-entry .hero-copy,html[data-hero-ready=true] .hero-entry .hero-location,html[data-hero-ready=true] .hero-entry .scroll-cue{animation-duration:.68s;animation-timing-function:cubic-bezier(.16,1,.3,1);animation-fill-mode:both;animation-delay:var(--intro-delay, 0ms);animation-iteration-count:1}html[data-hero-ready=true] .home-entry-header{animation-name:entrance-down;animation-duration:.52s}html[data-hero-ready=true] .hero-entry{--intro-delay: 60ms;animation-name:entrance-down}html[data-hero-ready=true] .hero-entry .hero-ribbon{--intro-delay: .16s;animation-name:ribbon-arrival;animation-duration:.76s}html[data-hero-ready=true] .hero-entry .hero-portrait{--intro-delay: .28s;animation-name:portrait-arrival}html[data-hero-ready=true] .hero-entry .hero-name{--intro-delay: .36s;animation-name:lettering-arrival}html[data-hero-ready=true] .hero-entry .hero-surname{--intro-delay: .42s;animation-name:lettering-arrival}html[data-hero-ready=true] .hero-entry .hero-copy{--intro-delay: .46s;animation-name:lettering-arrival}html[data-hero-ready=true] .hero-entry .hero-location,html[data-hero-ready=true] .hero-entry .scroll-cue{--intro-delay: .54s;animation-name:lettering-arrival}html[data-hero-ready=true] .home-entry-header:focus-within,html[data-hero-ready=true] .hero-entry:focus-within,html[data-hero-ready=true] .hero-entry:focus-within .hero-copy{animation:none}}@media(max-width:700px){@keyframes ribbon-arrival{0%{opacity:0;translate:0 100px}to{opacity:1;translate:0 0}}}.tech-wordmark{display:block;width:100%;font-size:inherit;line-height:1.05}.tech-wordmark-art{display:block;height:1.2em;min-height:70px;width:100%;max-width:740px}.animated-number{font-variant-numeric:tabular-nums}.project-orbit{height:390px;width:100%;position:relative;transform:translate3d(0,calc(var(--depth,0px)*.25),0)}.project-orbit .circular-carousel{color:var(--ink)}.project-orbit .circular-carousel:focus-visible{outline:2px solid var(--red);outline-offset:-4px;box-shadow:none}.explorer-controls{display:flex;align-items:center;gap:24px;padding:8px 0 28px;color:var(--muted);font-size:13px}.explorer-controls>p{margin-right:auto}.explorer-controls>div{display:flex;gap:8px}.explorer-controls button{display:grid;place-items:center;width:42px;height:42px;border:1px solid var(--line-strong);border-radius:50%;color:var(--ink);background:var(--paper)}.portfolio-glow{border:1px solid var(--line);box-shadow:none;background:var(--paper)}.portfolio-glow .border-glow-inner{background:var(--paper);border-radius:inherit;overflow:hidden}.project-spotlight-inner{display:grid;grid-template-columns:1.05fr 1fr;min-height:350px;animation:spotlight-in .45s cubic-bezier(.16,1,.3,1)}.project-spotlight figure{position:relative;margin:0;align-self:stretch;background:var(--art-surface);overflow:hidden}.project-spotlight figure .artwork-reveal{height:100%;min-height:350px}.project-spotlight figcaption,.tech-dialog-art figcaption{position:absolute;bottom:12px;left:14px;font-size:10px;background:var(--art-caption-bg);color:var(--art-caption);padding:5px 8px;border-radius:4px}.spotlight-copy{display:flex;flex-direction:column;align-items:flex-start;padding:36px;gap:20px}.spotlight-copy h3{font-size:clamp(30px,4vw,54px);line-height:1.1;letter-spacing:-.035em;margin:0}.spotlight-copy>p:not(.usage-status){font-size:15px;line-height:1.7;color:var(--muted);max-width:55ch}.spotlight-copy .text-link{margin-top:auto}.spotlight-copy .tags{margin:0;display:flex;flex-wrap:wrap;gap:7px}.project-index{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:0 24px;margin-top:28px}.project-index .project-index-item{display:flex;align-items:center;gap:14px;padding:18px 0;margin:0;min-height:80px;border-bottom:1px solid var(--line);border-top:0;color:var(--ink)}.project-index-item img{width:64px;height:40px;-o-object-fit:cover;object-fit:cover;border-radius:4px;flex-shrink:0}.project-index-item>span{display:flex;flex-direction:column;gap:5px;font-size:16px}.project-index-item small{font-size:11px;color:var(--muted)}.project-index-item>svg{margin-left:auto}.project-index-item[aria-current=true]{border-bottom-color:var(--red)}.project-index-item:hover>span{color:var(--red)}.tech-toolkit .section-heading{margin-bottom:40px}.toolkit-loop{display:flex;align-items:center;gap:12px;padding:18px 0 30px}.toolkit-loop .logoloop{min-width:0;flex:1;padding:14px 0;--logoloop-fadeColorAuto:var(--paper)}.toolkit-loop .logoloop__list{list-style:none;margin:0;padding:0}.work-section .section-heading h2>span:not(.tech-wordmark){font-size:clamp(28px,3.4vw,48px);line-height:1.15}.portfolio-glow:focus-within{border-color:var(--red)}.tech-logo-button{display:flex;align-items:center;gap:12px;color:var(--ink);background:none;border:0;padding:8px;white-space:nowrap}.tech-logo-button svg{width:32px;height:32px}.tech-logo-button span{font-size:15px}.tech-logo-button:hover{color:var(--red)}.loop-toggle{width:44px;height:44px;display:grid;place-items:center;border:1px solid var(--line);background:var(--paper);color:var(--ink);border-radius:50%}.technology-links{display:flex;flex-wrap:wrap;gap:10px 22px}.technology-links button{background:none;border:0;border-bottom:1px solid var(--line);padding:5px 0;color:var(--ink);font-size:17px;text-align:left}.technology-links button:hover{color:var(--red);border-color:var(--red)}.dialog-overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:100;background:var(--overlay);animation:overlay-in .18s ease}.dialog-content{position:fixed;z-index:101;top:50%;left:50%;transform:translate(-50%,-50%);width:min(560px,calc(100vw - 32px));max-height:85svh;overflow:auto;border-radius:14px;border:1px solid var(--line);background:var(--paper);color:var(--ink);padding:28px;box-shadow:0 24px 64px var(--shadow-notice);animation:dialog-in .28s cubic-bezier(.16,1,.3,1)}.dialog-close{position:absolute;top:16px;right:16px;width:40px;height:40px;display:grid;place-items:center;background:var(--paper);color:var(--ink);border:1px solid var(--line);border-radius:50%}.dialog-header{display:flex;flex-direction:column;gap:18px;margin-top:24px}.dialog-title{display:flex;align-items:center;gap:14px;font-size:30px;font-weight:700;line-height:1.15}.dialog-title svg{width:32px;height:32px;color:var(--red)}.dialog-description{font-size:16px;line-height:1.7;color:var(--muted)}.tech-dialog-art{margin:24px 0 0;position:relative;overflow:hidden;border-radius:8px}.tech-dialog-note{margin-top:22px;font-size:12px;color:var(--muted)}.artwork-reveal{display:block;position:relative;width:100%;aspect-ratio:8/5;background:var(--art-surface);overflow:hidden}.artwork-reveal>img{display:block;width:100%;height:100%;-o-object-fit:cover;object-fit:cover}.artwork-reveal.is-ready>img{animation:artwork-in .6s cubic-bezier(.16,1,.3,1)}.artwork-placeholder{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;flex-direction:column;gap:16px;align-items:center;justify-content:center;color:var(--art-caption);background:var(--art-surface);font-size:13px}.artwork-placeholder>img{width:42px;height:28px;filter:brightness(0) invert(1)}.artwork-placeholder>i{height:2px;width:60px;background:var(--red);animation:loader-track 1.2s ease-in-out infinite;transform-origin:left}.page-loading{min-height:calc(100svh - 98px);display:flex;align-items:center;justify-content:center;flex-direction:column;gap:24px;padding:48px 24px;text-align:center;background:var(--paper);color:var(--muted)}.brand-loader{position:relative;padding:24px;display:grid;place-items:center}.brand-loader>span{position:absolute;top:0;right:0;bottom:0;left:0;border:1px solid var(--line);border-radius:14px}.brand-loader>span:after{content:"";position:absolute;left:0;right:0;bottom:0;height:2px;background:var(--red);animation:loader-track 1.4s ease-in-out infinite;transform-origin:left}:root[data-theme=dark] .brand-loader img{filter:brightness(0) invert(1)}.loading-lines{display:flex;align-items:center;flex-direction:column;width:min(420px,80vw);gap:12px}.loading-lines i{height:9px;border-radius:3px;background:var(--surface-chip);animation:loader-breathe 1.4s ease-in-out infinite}.loading-lines i:nth-child(2){width:84%;animation-delay:.12s}.loading-lines i:nth-child(3){width:62%;animation-delay:.24s}.section-wrap[data-motion-scene]{--scene-turn:0deg}.section-wrap[data-motion-scene]>.scroll-graphic{position:absolute;inset:4% 4% auto auto;width:clamp(180px,24vw,350px);height:clamp(180px,24vw,350px);pointer-events:none;z-index:-1;color:var(--red);opacity:.08;transform:translate3d(0,calc(var(--depth)*-.7),0) rotate(var(--scene-turn))}.scroll-graphic svg{width:100%;height:100%;overflow:visible}.scroll-graphic circle,.scroll-graphic path{fill:none;stroke:currentColor;stroke-width:1.5;stroke-dasharray:1100;stroke-dashoffset:calc((1 - var(--trace,1))*1100)}.section-wrap[data-motion-scene=flow]>.scroll-graphic{right:auto;left:3%;top:25%;--scene-turn:25deg}.section-wrap[data-motion-scene=rings]>.scroll-graphic{--scene-turn:-20deg}@keyframes spotlight-in{0%{opacity:.6;transform:translateY(8px)}to{opacity:1;transform:none}}@keyframes artwork-in{0%{clip-path:inset(0 0 10% 0);opacity:.7;transform:scale(1.025)}to{clip-path:inset(0);opacity:1;transform:none}}@keyframes loader-track{0%,to{transform:scaleX(.15)}50%{transform:scaleX(1)}}@keyframes loader-breathe{50%{opacity:.45}}@keyframes overlay-in{0%{opacity:0}to{opacity:1}}@keyframes dialog-in{0%{opacity:0;transform:translate(-50%,-47%)}to{opacity:1;transform:translate(-50%,-50%)}}@media(max-width:1050px){.project-index{grid-template-columns:repeat(2,minmax(0,1fr))}.spotlight-copy{padding:24px}.project-orbit{height:330px}}@media(max-width:700px){.project-orbit{height:270px;margin:0 -6%;width:112%}.project-spotlight-inner{grid-template-columns:1fr}.project-spotlight figure .artwork-reveal{min-height:0;height:auto}.spotlight-copy{padding:24px;gap:18px}.explorer-controls{gap:12px;flex-wrap:wrap;font-size:11px}.explorer-controls>p{width:100%;margin:0}.explorer-controls>div{margin-left:auto}.project-index{gap:0 14px}.project-index .project-index-item{gap:8px}.project-index-item img{width:44px;height:32px}.project-index-item>span{font-size:13px}.project-index-item>svg{width:14px}.technology-links button{font-size:15px}.tech-wordmark-art{min-height:48px}.section-wrap[data-motion-scene]>.scroll-graphic{opacity:.06}.toolkit-loop{gap:4px}.tech-dialog-art{margin-top:34px}}@media(prefers-reduced-motion:reduce){.artwork-reveal.is-ready>img,.project-spotlight-inner,.dialog-content,.dialog-overlay,.brand-loader>span:after,.artwork-placeholder>i,.loading-lines i{animation:none}.project-orbit,.section-wrap[data-motion-scene]>.scroll-graphic{transform:none}.portfolio-glow:before,.portfolio-glow:after,.portfolio-glow>.edge-light{display:none}.logoloop__track{transform:none!important}}.tech-dialog{padding:48px 36px 36px;max-width:520px}.tech-dialog .dialog-header{margin-top:16px}.tech-dialog .dialog-title{font-size:34px;gap:20px}.tech-dialog .dialog-title svg{width:52px;height:52px;flex-shrink:0}.tech-dialog .dialog-description{margin-top:8px}@media(max-width:700px){.tech-dialog{padding:48px 24px 28px}.tech-dialog .dialog-title{font-size:28px}.tech-dialog .dialog-title svg{width:40px;height:40px}}.toolkit-tabs{display:flex;gap:10px;flex-wrap:wrap;border-bottom:1px solid var(--line);margin:6px 0 24px;padding-bottom:16px}.toolkit-tabs button{padding:12px 18px;border:1px solid var(--line);border-radius:8px;background:var(--paper);color:var(--muted);font-size:14px}.toolkit-tabs button[aria-selected=true]{background:var(--ink);color:var(--paper);border-color:var(--ink)}.technology-links.tech-tile-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px}.technology-links .tech-tile{display:flex;align-items:center;gap:14px;padding:22px;border:1px solid var(--line);border-radius:12px;background:var(--surface-alt);color:var(--ink);transition:transform .22s ease,border-color .22s ease;font-size:16px}.tech-tile>svg:first-child{width:28px;height:28px;flex-shrink:0}.tech-tile>svg:last-child{width:16px;height:16px;margin-left:auto;color:var(--muted)}.technology-links .tech-tile:hover{transform:translateY(-3px);border-color:var(--red)}@media(max-width:1050px){.technology-links.tech-tile-grid{grid-template-columns:repeat(3,minmax(0,1fr))}}@media(max-width:700px){.technology-links.tech-tile-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.technology-links .tech-tile{padding:17px 12px;gap:9px;font-size:13px}.tech-tile>svg:first-child{width:24px;height:24px}.toolkit-tabs{gap:7px}.toolkit-tabs button{padding:10px 12px;font-size:12px}}@media(prefers-reduced-motion:reduce){.technology-links .tech-tile:hover{transform:none}.technology-links .tech-tile{transition:none}}.section-wrap{overflow:clip}.project-filters button{color:var(--ink)}.project-filters button[aria-pressed=true]{color:var(--paper);background:var(--ink)}.project-orbit .circular-carousel__caption{bottom:6px;padding:0 18px;color:var(--ink)}.project-orbit .circular-carousel__title{font-size:22px;font-weight:750;color:var(--ink);gap:5px}.project-orbit .circular-carousel__subtitle{font-size:12px;font-weight:400;opacity:1;color:var(--muted)}.project-orbit .circular-carousel__count{color:var(--muted);font-size:10px}.project-orbit{height:425px}@media(max-width:1050px){.project-orbit{height:365px}}@media(max-width:700px){.project-orbit{height:310px}.project-orbit .circular-carousel__title{font-size:19px}.project-orbit .circular-carousel__subtitle{font-size:10px;max-width:270px;line-height:1.5}}.project-art-label{position:absolute;bottom:14px;left:14px;right:14px;padding:10px 12px;background:var(--art-caption-bg);color:var(--art-caption);border-radius:6px;display:flex;flex-direction:column;gap:4px}.project-art-label strong{font-size:19px;line-height:1.2;font-weight:750}.project-art-label span{font-size:10px;line-height:1.4}.project-orbit .circular-carousel__count{opacity:1}:root{color-scheme:light;--paper: #ecf3f8;--ink: #1b2223;--muted: #4e5962;--red: #bd351c;--line: #c9d2d9;--surface-alt: #dde7ed;--surface-chip: #e0e7ec;--line-strong: #8798a4;--accent-text: #a53220;--action-hover: #333d40;--success: #28533f;--error: #a02b17;--pending: #71561b;--success-dot: #39704c;--pending-dot: #94702c;--inverse-surface: #1b2223;--inverse-text: #ecf3f8;--inverse-muted: #b7c5cf;--inverse-line: #64737b;--art-surface: #111a1e;--art-caption: #ecf3f8;--art-caption-bg: #111a1ee6;--shadow-notice: #1b222329;--selection-bg: #bd351c;--selection-text: #ffffff;--schematic-teal: #1e3c46;--schematic-sage: #d5dcb9;--schematic-ink: #1b2223;--schematic-paper: #f0f5ee;--notice-surface: #1b2223;--notice-text: #ecf3f8;--notice-muted: #bfccd4;--notice-line: #647985;--notice-accent: #ff9d87;--notice-action: #bd351c;--notice-action-text: #ffffff}:root[data-theme=dark]{color-scheme:dark;--paper: #111a1e;--ink: #ecf3f8;--muted: #bfccd4;--red: #ff795d;--line: #35454d;--surface-alt: #1b2b33;--surface-chip: #24343d;--line-strong: #647985;--accent-text: #ff9d87;--action-hover: #dce7ee;--success: #b6dfc1;--error: #ffad96;--pending: #e6d4ac;--success-dot: #9ed5ae;--pending-dot: #e6bc69;--inverse-surface: #1b2b33;--inverse-text: #ecf3f8;--inverse-muted: #bfccd4;--inverse-line: #647985;--shadow-notice: #00000055;--selection-bg: #ff795d;--selection-text: #111a1e;--notice-surface: #ecf3f8;--notice-text: #1b2223;--notice-muted: #4e5962;--notice-line: #8798a4;--notice-accent: #a53220}body,.site-header,.section-wrap,.site-footer,.portfolio-pages{transition:background-color .24s ease,color .24s ease}.header-actions{display:flex;align-items:center;gap:12px}.theme-toggle{display:flex;align-items:center;justify-content:center;flex-shrink:0;width:42px;height:42px;border:1px solid var(--line-strong);border-radius:8px;background:var(--paper);color:var(--ink)}.theme-toggle:hover{border-color:var(--red)}:root[data-theme=dark] .identity img{filter:brightness(0) invert(1)}.page-header .identity img{filter:none}:root[data-theme=dark] .page-header .identity img{filter:brightness(0) invert(1)}@media(min-width:701px)and (max-width:1050px){.menu-toggle{display:flex;align-items:center;justify-content:center;width:44px;height:44px;border:1px solid var(--line);border-radius:8px;background:var(--paper);color:var(--ink)}.main-nav{display:none;position:absolute;top:98px;left:0;right:0;background:var(--paper);padding:24px 5%;border-bottom:1px solid var(--line)}.main-nav.is-open{display:flex;flex-direction:column;align-items:stretch;gap:0}.main-nav>a{padding:16px 0}}@media(prefers-reduced-motion:reduce){body,.site-header,.section-wrap,.site-footer,.portfolio-pages{transition:none}}.about-section{background:var(--inverse-surface);color:var(--inverse-text)}.about-section .section-heading h2 span,.about-section p{color:var(--inverse-muted)}.about-body .about-statement,.about-body .text-link{color:var(--inverse-text)}.about-section:before{border-color:var(--inverse-line)}.home-project-art{background:var(--art-surface)}.home-project-art figcaption{color:var(--art-caption);background:var(--art-caption-bg)}.analytics-notice{background:var(--inverse-surface);color:var(--inverse-text)}.analytics-notice button{color:var(--inverse-text)}.analytics-notice button:last-child{background:var(--inverse-text);color:var(--inverse-surface)}::-moz-selection{background:var(--selection-bg);color:var(--selection-text)}::selection{background:var(--selection-bg);color:var(--selection-text)}.hero-surname span:first-child{color:var(--art-caption)}@media(max-width:740px){.hero-surname span,.hero-surname span:last-child{color:var(--art-caption)}}:root{--glow-hsl: 10 74 43;--overlay: #111a1ebd}:root[data-theme=dark]{--glow-hsl: 12 100 68}:root{--interaction-duration: .35s;--interaction-ease: cubic-bezier(.16,1,.3,1)}:is(h1,h2,h3,h4,h5,h6) .heading-accent{color:var(--accent-text)}.tech-wordmark{display:block;width:auto;line-height:inherit}.section-wrap :is(h1,h2,h3,h4,h5,h6){transform-origin:left center}.section-wrap .heading-accent{display:inline;transition:color var(--interaction-duration) var(--interaction-ease)}.section-wrap :is(a,button,summary){transition:color var(--interaction-duration) var(--interaction-ease),background-color var(--interaction-duration) var(--interaction-ease),border-color var(--interaction-duration) var(--interaction-ease),transform var(--interaction-duration) var(--interaction-ease)}.section-wrap :is(a,summary):hover{color:var(--accent-text)}.section-wrap :is(a,button,summary):focus-visible{outline:2px solid var(--red);outline-offset:5px}.section-wrap :is(a,button,summary)>svg{transition:transform var(--interaction-duration) var(--interaction-ease)}.section-wrap :is(a,button):hover>svg{transform:translate(3px,-3px)}@media(hover:hover)and (pointer:fine){.tech-wordmark{transition:transform var(--interaction-duration) var(--interaction-ease)}h2:hover .tech-wordmark,h1:hover .tech-wordmark{transform:translate(4px)}}@media(prefers-reduced-motion:reduce){.section-wrap :is(a,button,summary),.section-wrap :is(a,button,summary)>svg,.tech-wordmark,.section-wrap .heading-accent{transition:none}h2:hover .tech-wordmark,h1:hover .tech-wordmark,.section-wrap :is(a,button):hover>svg{transform:none}}.section-wrap :is(h1,h2,h3,h4,h5,h6)>span:not(.heading-accent){color:inherit}.section-wrap :is(h1,h2,h3,h4,h5,h6) .heading-accent{color:var(--accent-text)}.about-section :is(h1,h2,h3,h4,h5,h6) .heading-accent{color:#ff795d}.skip-link{background:var(--ink);color:var(--paper)}.about-section .section-heading :is(h1,h2,h3,h4,h5,h6) .heading-accent{color:#ff795d}.privacy-button{min-height:44px;padding:12px 0}.journey-playback button{min-height:44px}.theme-toggle{width:44px;height:44px}.section-wrap button{min-height:44px;min-width:44px}@media(min-width:701px)and (max-width:1050px){.hero-surname span:last-child{color:#ecf3f8}}.hero-location{background:var(--paper);padding:8px 12px;border-radius:7px}.section-wrap>.ambient-scene,.section-wrap[data-motion-scene]>.ambient-scene{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;opacity:.15;color:var(--red);z-index:-1;pointer-events:none;transform:translate3d(var(--ambient-x, 0px),var(--ambient-y, 0px),0);transition:transform .65s cubic-bezier(.16,1,.3,1)}.ambient-scene svg{width:100%;height:100%;overflow:visible}.ambient-scene :is(path,ellipse,circle){fill:none;stroke:currentColor;stroke-width:1;stroke-dasharray:none;stroke-dashoffset:0;vector-effect:non-scaling-stroke}.ambient-contours{transform-origin:center;animation:ambient-drift 22s ease-in-out infinite alternate}.ambient-orbits{opacity:.45;transform-origin:760px 270px;animation:ambient-orbit 42s linear infinite}.ambient-orbits circle{fill:currentColor;stroke:none}.ambient-scene .ambient-current{stroke-width:1.8;stroke-dasharray:100 1500;animation:ambient-travel 16s linear infinite}.ambient-contours,.ambient-orbits,.ambient-current{animation-play-state:paused}.section-wrap[data-ambient-active=true]>.ambient-scene :is(.ambient-contours,.ambient-orbits,.ambient-current){animation-play-state:running}.section-wrap[data-motion-scene=flow]>.ambient-scene{top:0;right:0;bottom:0;left:0;transform:translate3d(var(--ambient-x,0px),var(--ambient-y,0px),0) scaleX(-1)}:root[data-theme=dark] .section-wrap>.ambient-scene{opacity:.2}.about-section>.ambient-scene{color:#ff795d;opacity:.16}.article-editorial>.ambient-scene{opacity:.055}.about-section:before,.contact-section:before{display:none}.ambient-toggle{display:inline-flex;align-items:center;gap:8px;padding:12px 0;min-height:44px;background:none;border:0;color:var(--muted);font-size:11px;cursor:pointer}.ambient-toggle:hover{color:var(--accent-text)}.ambient-toggle:disabled{opacity:.6;cursor:default}@keyframes ambient-drift{0%{transform:translate(-24px,18px) rotate(-3deg)}to{transform:translate(28px,-24px) rotate(3deg)}}@keyframes ambient-orbit{to{transform:rotate(360deg)}}@keyframes ambient-travel{to{stroke-dashoffset:-1600}}@media(max-width:700px){.section-wrap[data-motion-scene]>.ambient-scene{opacity:.12}.ambient-orbits{display:none}.ambient-scene .ambient-current{stroke-width:1.3}}@media(prefers-reduced-motion:reduce){.ambient-contours,.ambient-orbits,.ambient-current{animation:none}.section-wrap[data-motion-scene]>.ambient-scene{transform:none;transition:none}}:root[data-theme=dark] .article-editorial>.ambient-scene{opacity:.07}.hero-atmosphere{position:absolute;top:0;right:0;bottom:0;left:0;z-index:0;pointer-events:none;color:var(--red);opacity:.24;transform:translate3d(var(--ambient-x,0px),var(--ambient-y,0px),0);transition:transform .65s cubic-bezier(.16,1,.3,1)}.hero-atmosphere svg{width:100%;height:100%;overflow:visible}.hero-atmosphere :is(path,ellipse,circle){stroke:currentColor;stroke-width:1;vector-effect:non-scaling-stroke}.hero-orbit{transform-origin:1030px 410px;animation:ambient-orbit 34s linear infinite}.hero-orbit circle{fill:currentColor;stroke:none}.hero-stream{animation:ambient-drift 13s ease-in-out infinite alternate}.hero-atmosphere .hero-signal{stroke-width:2.5;stroke-dasharray:160 2200;animation:hero-signal-travel 11s linear infinite}.hero-orbit,.hero-stream,.hero-signal{animation-play-state:paused}.portrait-hero[data-ambient-active=true] :is(.hero-orbit,.hero-stream,.hero-signal){animation-play-state:running}.hero-ribbon>img{animation:hero-ribbon-breathe 12s ease-in-out infinite alternate;animation-play-state:paused;transform-origin:center}.portrait-hero[data-ambient-active=true] .hero-ribbon>img{animation-play-state:running}.portfolio-home .section-wrap>.ambient-scene{opacity:.23}:root[data-theme=dark] .portfolio-home .section-wrap>.ambient-scene{opacity:.3}.portfolio-home .ambient-contours{animation-duration:15s}.portfolio-home .ambient-current{animation-duration:12s;stroke-width:2}.portfolio-home .about-section>.ambient-scene{color:#ff795d}@keyframes hero-ribbon-breathe{0%{transform:scale(1) rotate(-1.5deg)}to{transform:scale(1.055) rotate(1.5deg)}}@keyframes hero-signal-travel{to{stroke-dashoffset:-2360}}@media(max-width:700px){.hero-atmosphere{opacity:.18}.hero-orbit{display:none}.hero-stream{transform-origin:center}.portfolio-home .section-wrap>.ambient-scene{opacity:.18}:root[data-theme=dark] .portfolio-home .section-wrap>.ambient-scene{opacity:.24}}@media(prefers-reduced-motion:reduce){.hero-orbit,.hero-stream,.hero-signal,.hero-ribbon>img{animation:none}.hero-atmosphere{transform:none;transition:none}}.page-loading.rk-loading{box-sizing:border-box;min-height:calc(100svh - 98px);position:relative;isolation:isolate;overflow:hidden;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:56px;padding:100px 7% 64px;color:var(--ink);background:var(--paper);font-family:Manrope,sans-serif}#root>.rk-loading{min-height:100svh}.loading-signature{position:absolute;top:36px;left:7%;font-size:12px;font-weight:800;letter-spacing:.12em}.loading-composition{width:min(1000px,100%);display:grid;grid-template-columns:1fr 1fr;gap:8%;align-items:center}.loading-copy{min-width:0}.loading-title{font-size:clamp(48px,6.1vw,88px);line-height:1.06;letter-spacing:-.04em;font-weight:800;margin:0}.loading-title>span{color:var(--red)}.loading-message{display:flex;align-items:center;gap:10px;color:var(--muted);font-size:13px;line-height:1.7;margin:32px 0 0}.loading-status-dot{width:6px;height:6px;flex-shrink:0;border-radius:50%;background:var(--red);animation:loading-status 1.2s ease-in-out infinite alternate}.loading-stage{position:relative;width:100%;height:320px;display:grid;place-items:center;perspective:900px}.loading-assembly{width:66%;overflow:visible;z-index:2;animation:loading-mark-stage 4.4s cubic-bezier(.16,1,.3,1) infinite}.loading-piece path{fill:none;stroke:var(--ink);stroke-width:7;stroke-linejoin:miter}.loading-piece-accent path{stroke:var(--red)}.loading-piece{transform-box:fill-box;transform-origin:center}.loading-piece-r{animation:loading-assemble-r 4.4s cubic-bezier(.16,1,.3,1) infinite}.loading-piece-k{animation:loading-assemble-k 4.4s cubic-bezier(.16,1,.3,1) infinite}.loading-piece-accent{animation:loading-assemble-accent 4.4s cubic-bezier(.16,1,.3,1) infinite}.loading-frame{position:absolute;top:10%;right:7%;bottom:10%;left:7%;animation:loading-frame-stage 4.4s cubic-bezier(.16,1,.3,1) infinite}.loading-frame>i{position:absolute;width:36px;height:36px;border-color:var(--line-strong,var(--muted));border-style:solid;border-width:0}.loading-frame>i:nth-child(1){top:0;left:0;border-top-width:1px;border-left-width:1px}.loading-frame>i:nth-child(2){top:0;right:0;border-top-width:1px;border-right-width:1px}.loading-frame>i:nth-child(3){bottom:0;left:0;border-bottom-width:1px;border-left-width:1px}.loading-frame>i:nth-child(4){bottom:0;right:0;border-bottom-width:1px;border-right-width:1px}.loading-orbit-piece{position:absolute;width:54px;height:54px;border:2px solid var(--red);border-radius:50%;animation:loading-orbit-stage 4.4s cubic-bezier(.16,1,.3,1) infinite}.loading-crosshair{position:absolute;right:5%;top:12%;width:14px;height:14px;color:var(--red);animation:loading-cross-stage 4.4s ease-in-out infinite}.loading-crosshair i{position:absolute;top:6px;width:14px;height:1px;background:currentColor}.loading-crosshair i:last-child{transform:rotate(90deg)}.loading-beats{display:grid;grid-template-columns:repeat(4,1fr);width:min(1000px,100%);gap:24px}.loading-beats>span{display:flex;align-items:center;gap:12px;font-size:11px;color:var(--muted)}.loading-beats i{width:8px;height:8px;flex-shrink:0;border:1px solid var(--line-strong,var(--muted));animation:loading-beat 4.4s linear infinite}.loading-beats>span:nth-child(2) i{animation-delay:-3.3s}.loading-beats>span:nth-child(3) i{animation-delay:-2.2s}.loading-beats>span:nth-child(4) i{animation-delay:-1.1s}@keyframes loading-assemble-r{0%,8%{transform:translate(-26px,14px) rotate(-12deg);opacity:.25}24%,78%{transform:none;opacity:1}to{transform:translate(-26px,14px) rotate(-12deg);opacity:.25}}@keyframes loading-assemble-k{0%,8%{transform:translate(24px,-20px) rotate(15deg);opacity:.25}30%,78%{transform:none;opacity:1}to{transform:translate(24px,-20px) rotate(15deg);opacity:.25}}@keyframes loading-assemble-accent{0%,12%{transform:translate(30px,26px) rotate(-25deg);opacity:.25}36%,78%{transform:none;opacity:1}to{transform:translate(30px,26px) rotate(-25deg);opacity:.25}}@keyframes loading-mark-stage{0%,38%{transform:scale(.82)}54%,76%{transform:scale(1)}88%,to{transform:scale(.82)}}@keyframes loading-frame-stage{0%,32%{transform:scale(.6) rotate(-8deg);opacity:0}52%,76%{transform:scale(1);opacity:1}95%,to{transform:scale(1.12);opacity:0}}@keyframes loading-orbit-stage{0%,10%{transform:translate(-110px,-80px) scale(.5);opacity:.6}32%,55%{transform:translate(0) scale(2.6);opacity:0}72%{transform:translate(120px,90px) scale(.3);opacity:0}85%{transform:translate(120px,90px) scale(.7);opacity:.6}to{transform:translate(-110px,-80px) scale(.5);opacity:.6}}@keyframes loading-cross-stage{0%,35%{opacity:0;transform:rotate(-90deg)}55%,78%{opacity:1;transform:none}to{opacity:0;transform:rotate(90deg)}}@keyframes loading-beat{0%,24%{background:var(--red);border-color:var(--red)}25%,to{background:transparent;border-color:var(--line-strong,var(--muted))}}@keyframes loading-status{to{opacity:.35}}:root[data-loading-handoff=ready] #main-content:before{content:"";position:fixed;top:0;right:0;bottom:0;left:0;z-index:96;pointer-events:none;background:var(--paper);animation:loading-curtain .38s cubic-bezier(.16,1,.3,1) both}@keyframes loading-curtain{0%{clip-path:inset(0)}to{clip-path:inset(0 0 100% 0)}}@media(max-width:700px){.page-loading.rk-loading{min-height:calc(100svh - 80px);padding:88px 8% 48px;gap:32px}#root>.rk-loading{min-height:100svh}.loading-signature{top:26px;left:8%;font-size:10px}.loading-composition{grid-template-columns:1fr;gap:24px}.loading-title{font-size:clamp(40px,10vw,56px)}.loading-message{margin-top:20px;font-size:12px}.loading-stage{height:220px;width:min(340px,100%);margin:auto}.loading-assembly{width:58%}.loading-frame{top:5%;right:10%;bottom:5%;left:10%}.loading-beats{gap:12px}.loading-beats>span{font-size:10px;gap:6px}.loading-orbit-piece{width:34px;height:34px}}@media(prefers-reduced-motion:reduce){.loading-assembly,.loading-piece,.loading-frame,.loading-orbit-piece,.loading-crosshair,.loading-beats i,.loading-status-dot{animation:none}.loading-frame{opacity:1}.loading-orbit-piece{display:none}.loading-beats i{background:var(--red);border-color:var(--red)}:root[data-loading-handoff=ready] #main-content:before{display:none;animation:none}}.circular-carousel{--cc-fade: #000000;--cc-radius: 12px;--cc-inner: .4;position:relative;width:100%;height:100%;overflow:hidden;outline:none;touch-action:pan-y;-moz-user-select:none;user-select:none;-webkit-user-select:none;-webkit-tap-highlight-color:transparent}.circular-carousel[data-axis=x]{touch-action:pan-x}.circular-carousel[data-draggable]{cursor:grab}.circular-carousel[data-dragging]{cursor:grabbing}.circular-carousel:focus-visible{box-shadow:inset 0 0 0 2px #80808c8c}.circular-carousel__view{position:absolute;top:0;right:0;bottom:0;left:0}.circular-carousel[data-shape=wheel] .circular-carousel__view{-webkit-mask-image:linear-gradient(to bottom,transparent,#000000 18%,#000000 82%,transparent);mask-image:linear-gradient(to bottom,transparent,#000000 18%,#000000 82%,transparent)}.circular-carousel[data-shape=panorama] .circular-carousel__view{-webkit-mask-image:linear-gradient(to right,transparent,#000000 12%,#000000 88%,transparent);mask-image:linear-gradient(to right,transparent,#000000 12%,#000000 88%,transparent)}.circular-carousel__stage{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;align-items:center;justify-content:center;opacity:0;transition:opacity .45s ease}.circular-carousel[data-ready] .circular-carousel__stage{opacity:1}.circular-carousel__camera,.circular-carousel__ring,.circular-carousel__card{width:0;height:0;transform-style:preserve-3d}.circular-carousel__camera{position:relative}.circular-carousel__ring,.circular-carousel__card{position:absolute;left:0;top:0}.circular-carousel__tile{position:absolute;outline:1px solid transparent;backface-visibility:hidden;-webkit-backface-visibility:hidden}.circular-carousel__frame{position:absolute;left:0;top:0;width:100%;overflow:hidden}.circular-carousel__photo{position:absolute;display:block;max-width:none;-o-object-fit:cover;object-fit:cover;pointer-events:none;-webkit-user-select:none;-moz-user-select:none;user-select:none;-webkit-user-drag:none}.circular-carousel__photo--leaving{animation:circular-carousel-leave .7s cubic-bezier(.33,1,.68,1) both}.circular-carousel__shade,.circular-carousel__inner{position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none}.circular-carousel__shade{background:var(--cc-fade);opacity:var(--cc-depth, 0)}.circular-carousel__inner{background:#000;opacity:var(--cc-inner)}.circular-carousel__caption{position:absolute;left:0;right:0;bottom:22px;display:flex;flex-direction:column;align-items:center;gap:6px;padding:0 16px;color:inherit;text-align:center;pointer-events:none;animation:circular-carousel-reveal .9s ease both}.circular-carousel__title{display:flex;max-width:100%;flex-direction:column;align-items:center;font-size:15px;font-weight:500;line-height:1.35;animation:circular-carousel-title .52s cubic-bezier(.22,1,.36,1)}.circular-carousel__subtitle{font-weight:400;opacity:.6}.circular-carousel__count{display:inline-flex;align-items:center;gap:3px;font-size:12px;font-variant-numeric:tabular-nums;line-height:1;opacity:.5}.circular-carousel__slash{opacity:.6}.circular-carousel__digits{display:inline-flex}.circular-carousel__digit{display:inline-block;height:1em;overflow:hidden}.circular-carousel__reel{display:flex;flex-direction:column;transition:transform .6s cubic-bezier(.22,1,.36,1)}.circular-carousel__reel>span{height:1em}.circular-carousel__live{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}@keyframes circular-carousel-title{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}@keyframes circular-carousel-leave{0%{opacity:1}to{opacity:0}}@keyframes circular-carousel-reveal{0%{opacity:0}to{opacity:1}}@media(prefers-reduced-motion:reduce){.circular-carousel__stage,.circular-carousel__reel{transition:none}.circular-carousel__caption,.circular-carousel__title{animation:none}}.visitor-invitation{position:fixed;z-index:90;right:max(20px,env(safe-area-inset-right));bottom:max(20px,env(safe-area-inset-bottom));width:min(380px,calc(100vw - 32px));max-height:calc(100dvh - 40px);overflow-y:auto;padding:28px;border-radius:14px;background:var(--notice-surface);color:var(--notice-text);box-shadow:0 12px 48px var(--shadow-notice);animation:invitation-enter .45s cubic-bezier(.16,1,.3,1) both}.visitor-invitation h2{margin:0 28px 14px 0;font-size:25px;line-height:1.25;letter-spacing:-.03em;text-wrap:balance}.visitor-invitation p{margin:0 0 22px;font-size:14px;line-height:1.7;color:var(--notice-muted)}.invitation-close{position:absolute;top:14px;right:14px;width:36px;height:36px;display:grid;place-items:center;border:0;background:transparent;color:var(--notice-muted);border-radius:7px}.invitation-close:hover{color:var(--notice-text)}.invitation-primary,.invitation-secondary{display:flex;align-items:center;justify-content:space-between;gap:12px;min-height:44px;font-size:14px;font-weight:600}.invitation-primary{padding:12px 16px;border-radius:7px;background:var(--notice-action);color:var(--notice-action-text)}.invitation-primary:hover{filter:brightness(.9)}.invitation-secondary{padding:12px 16px;margin-top:10px;border:1px solid var(--notice-line);border-radius:7px;color:var(--notice-text)}.invitation-secondary:hover{text-decoration:underline;text-underline-offset:4px}.invitation-dismiss{display:block;margin:10px auto 0;padding:8px 12px;border:0;background:transparent;color:var(--notice-muted);font-size:12px;min-height:36px}.invitation-dismiss:hover{color:var(--notice-text)}.visitor-invitation :focus-visible{outline-color:var(--notice-accent);outline-offset:3px}body:has(.analytics-notice,[role=dialog]) .visitor-invitation{visibility:hidden;pointer-events:none}@keyframes invitation-enter{0%{opacity:0;transform:translateY(18px)}to{opacity:1;transform:translateY(0)}}@media(max-width:480px){.visitor-invitation{right:16px;bottom:max(16px,env(safe-area-inset-bottom));padding:24px}}@media(prefers-reduced-motion:reduce){.visitor-invitation{animation:none}}.analytics-notice.consent-banner{left:max(20px,env(safe-area-inset-left));bottom:max(20px,env(safe-area-inset-bottom));width:min(360px,calc(100vw - 32px));max-width:none;max-height:calc(100dvh - 40px);overflow-y:auto;padding:24px;border-radius:14px;background:var(--notice-surface);color:var(--notice-text);z-index:95}.consent-banner h2{margin:0 0 12px;font-size:21px;line-height:1.3;letter-spacing:-.025em}.consent-banner p{margin:0 0 10px;color:var(--notice-muted);font-size:13px;line-height:1.7}.analytics-notice.consent-banner .consent-policy{padding:8px 0;margin-bottom:12px;border:0;background:transparent;color:var(--notice-accent);text-decoration:underline;text-underline-offset:4px;font-size:13px}.analytics-notice.consent-banner .consent-actions{display:grid;grid-template-columns:1fr 1fr;gap:10px}.analytics-notice.consent-banner .consent-actions button{min-height:44px;padding:10px;border:1px solid var(--notice-line);border-radius:7px;background:transparent;color:var(--notice-text);font-size:13px}.analytics-notice.consent-banner .consent-actions button:last-child{background:var(--notice-action);color:var(--notice-action-text);border-color:var(--notice-action)}.consent-banner :focus-visible{outline-color:var(--notice-accent);outline-offset:3px}.data-policy-dialog .dialog-title{font-size:26px;margin-right:24px}.data-policy-dialog h3{margin:24px 0 8px;font-size:17px}.data-policy-dialog p{font-size:14px;line-height:1.75;color:var(--muted)}.data-policy-dialog a{color:var(--accent-text);text-decoration:underline;text-underline-offset:4px}@media(max-width:480px){.analytics-notice.consent-banner{left:16px;bottom:max(16px,env(safe-area-inset-bottom));padding:22px}}
