:root{--cream: #f9f1e3;--sand: #f2e5c6;--orange: #ff6a18;--ink: #242424;--bg: var(--cream);--bg-alt: var(--sand);--fg: var(--ink);--fg-muted: rgba(36, 36, 36, .62);--fg-faint: rgba(36, 36, 36, .42);--accent: var(--orange);--on-dark: var(--cream);--on-dark-muted: rgba(249, 241, 227, .66);--line: rgba(36, 36, 36, .14);--line-soft: rgba(36, 36, 36, .08);--card: #fffaf0;--shadow: 0 1px 2px rgba(36, 36, 36, .05), 0 10px 30px rgba(36, 36, 36, .07);--font-sans: "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;--font-display: "Instrument Serif", Georgia, "Times New Roman", serif;--font-mono: "JetBrains Mono", ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;--step--1: clamp(.78rem, .75rem + .15vw, .86rem);--step-0: clamp(1rem, .95rem + .25vw, 1.12rem);--step-1: clamp(1.2rem, 1.05rem + .7vw, 1.6rem);--step-2: clamp(1.6rem, 1.2rem + 1.8vw, 2.8rem);--step-3: clamp(2.4rem, 1.5rem + 4vw, 5rem);--step-4: clamp(2.9rem, 1.4rem + 6.8vw, 8rem);--gutter: clamp(1.5rem, 5vw, 5rem);--section-y: clamp(6rem, 16vh, 13rem);--ease-out: cubic-bezier(.16, 1, .3, 1);--dur-fast: .2s;--dur: .56s;--dur-slow: .9s;--nav-h: 5rem;--radius: 16px}@media(max-width:44rem){:root{--nav-h: 4.25rem}}@media(prefers-reduced-motion:reduce){:root{--dur-fast: 1ms;--dur: 1ms;--dur-slow: 1ms}}*,*:before,*:after{box-sizing:border-box}*{margin:0;padding:0}html{-webkit-text-size-adjust:100%;scroll-behavior:smooth}@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*:before,*:after{animation-duration:.01ms!important;transition-duration:.01ms!important}}body{min-height:100dvh;background:var(--bg);color:var(--fg);font-family:var(--font-sans);font-size:var(--step-0);line-height:1.6;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;overflow-x:clip}img,svg{display:block;max-width:100%}a{color:inherit;text-decoration:none}button{font:inherit;color:inherit;background:none;border:0;cursor:pointer}ul,ol{list-style:none}h1,h2,h3{font-weight:800;line-height:1.02;letter-spacing:-.035em;text-wrap:balance}::selection{background:var(--accent);color:var(--cream)}:focus-visible{outline:2px solid var(--accent);outline-offset:3px;border-radius:2px}.shell{width:100%;max-width:78rem;margin-inline:auto;padding-inline:var(--gutter)}.section{padding-block:var(--section-y)}.section--sand{background:var(--bg-alt)}.section--ink{background:var(--ink);color:var(--on-dark)}.serif{font-family:var(--font-display);font-style:italic;font-weight:400;letter-spacing:-.01em;color:var(--accent)}.label{font-family:var(--font-mono);font-size:var(--step--1);font-weight:400;letter-spacing:.18em;text-transform:uppercase;color:var(--fg-faint)}.section--ink .label{color:var(--on-dark-muted)}.lead{max-width:46ch;font-size:var(--step-1);line-height:1.5;color:var(--fg-muted)}.section--ink .lead{color:var(--on-dark-muted)}.visually-hidden{position:absolute;width:1px;height:1px;margin:-1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}.button{display:inline-flex;align-items:center;gap:.6rem;padding:.85rem 1.6rem;font-weight:600;border:1.5px solid var(--ink);border-radius:10px;background:transparent;transition:background-color var(--dur-fast) ease,color var(--dur-fast) ease,border-color var(--dur-fast) ease}.button:hover{background:var(--accent);border-color:var(--accent);color:var(--cream)}.js .reveal{opacity:0;transform:translateY(20px);transition:opacity var(--dur-slow) var(--ease-out),transform var(--dur-slow) var(--ease-out);transition-delay:var(--reveal-delay, 0ms)}.js .reveal.is-visible{opacity:1;transform:none}.reveal--line{height:1px;background:var(--line)}.js .reveal--line{opacity:1;transform:scaleX(0);transform-origin:center;transition:transform var(--dur-slow) var(--ease-out);transition-delay:var(--reveal-delay, 0ms)}.js .reveal--line.is-visible{transform:scaleX(1)}.to-top{position:fixed;right:clamp(1rem,3vw,2.5rem);bottom:clamp(1rem,3vw,2.5rem);z-index:40;display:grid;place-items:center;width:2.75rem;height:2.75rem;background:var(--ink);color:var(--cream);border-radius:50%;opacity:0;transform:translateY(.5rem);pointer-events:none;transition:opacity var(--dur) ease,transform var(--dur) ease,background-color var(--dur-fast) ease}.to-top.is-visible{opacity:1;transform:none;pointer-events:auto}.to-top:hover{background:var(--accent)}.logo{height:2.1rem;width:auto;color:var(--ink);overflow:visible}.logo--1{height:2.9rem;color:var(--accent)}.footer__inner{display:flex;align-items:center;justify-content:space-between;gap:1.5rem;padding-block:2.25rem;border-top:1px solid var(--line-soft);font-size:var(--step--1);color:var(--fg-faint)}.footer__brand{display:flex;align-items:center;gap:1.25rem}.footer__logo{height:2.1rem}.footer__socials{display:flex;gap:.5rem}.footer__socials a{display:grid;place-items:center;width:2.25rem;height:2.25rem;border-radius:8px;color:var(--fg-faint);transition:background-color var(--dur-fast) ease,color var(--dur-fast) ease}.footer__socials svg{width:1.05rem;height:1.05rem}.footer__socials a:hover{background:var(--accent);color:var(--cream)}@media(max-width:44rem){.footer__inner{flex-direction:column-reverse;align-items:center;gap:1.5rem;text-align:center}.footer__brand{flex-direction:column;gap:.85rem}}.nav{position:fixed;top:0;left:0;z-index:60;width:100%;transition:background-color var(--dur) ease}.nav.is-stuck{background:var(--bg);border-bottom:1px solid var(--line-soft)}.nav__inner{display:flex;align-items:center;gap:clamp(1rem,3vw,2.5rem);height:var(--nav-h)}.nav__mark{display:flex;flex:none;transition:opacity var(--dur-fast) ease}.nav__mark:hover{opacity:.65}.nav__rule{flex:1;height:1px;background:var(--line)}.nav__links{display:flex;align-self:stretch;gap:clamp(1.5rem,4vw,3.5rem);font-weight:600}.nav__links a{display:flex;align-items:center;transition:color var(--dur-fast) ease}.nav__links a:hover,.nav__links a.is-current{color:var(--accent)}.contact__inner{display:flex;flex-direction:column;align-items:center;gap:2.25rem;text-align:center}.contact__heading{max-width:14ch;font-size:var(--step-3)}.hero{display:flex;flex-direction:column;justify-content:center;align-items:center;gap:clamp(3rem,9vh,6rem);min-height:100svh;padding-top:var(--nav-h);padding-bottom:clamp(2rem,6vh,4rem);text-align:center}.hero__title{display:flex;flex-direction:column;align-items:center;gap:.05em;font-size:var(--step-4)}.hero__line{display:flex;flex-wrap:wrap;justify-content:center;gap:0 .28em}.hero__rise{display:inline-block;overflow:hidden;padding-bottom:.1em}.hero__rise>span{display:inline-block;transform:translateY(110%);animation:hero-rise .9s var(--ease-out) forwards}@keyframes hero-rise{to{transform:translateY(0)}}.hero__cue{display:flex;flex-direction:column;align-items:center;gap:.9rem;opacity:0;animation:hero-fade .8s var(--ease-out) .9s forwards}@keyframes hero-fade{to{opacity:1}}.hero__mouse{width:20px;height:32px;fill:none;stroke:var(--fg-faint);stroke-width:1.5}.hero__wheel{fill:var(--accent);stroke:none;animation:wheel 2.2s var(--ease-out) infinite}@keyframes wheel{0%,to{transform:translateY(0);opacity:1}50%{transform:translateY(7px);opacity:.3}}.hero__cue:hover .label{color:var(--accent)}.scene{display:block}@media(prefers-reduced-motion:no-preference){@supports (animation-timeline: view()){.chapter__scene{animation:scene-drift linear both;animation-timeline:view()}@keyframes scene-drift{0%{transform:translateY(2.5rem)}to{transform:translateY(-2.5rem)}}}}.scene--circuit{width:min(100%,24rem);aspect-ratio:1}.circuit-hole{fill:var(--ink);opacity:.1;transition:opacity .9s ease}.js .chapter:not(.is-visible) .circuit-hole{opacity:0}.circuit-trace{fill:none;stroke:var(--ink);stroke-width:1.4;opacity:.26;stroke-dasharray:1;stroke-dashoffset:0;transition:stroke-dashoffset 1.4s var(--ease-out) .15s}.circuit-trace--b{transition-delay:.4s}.js .chapter:not(.is-visible) .circuit-trace{stroke-dashoffset:1}.circuit-via{fill:var(--ink);opacity:.32;transition:opacity .5s ease .9s}.js .chapter:not(.is-visible) .circuit-via{opacity:0}.circuit-chip{fill:var(--card);stroke:var(--ink);stroke-width:1.3;opacity:.55;transform-box:fill-box;transform-origin:center;transition:transform .5s var(--ease-out);animation:circuit-chip-flash 5s ease-in-out infinite}.js .chapter:not(.is-visible) .circuit-chip{transform:scale(0)}.circuit-chip--1{animation-delay:1s;transition-delay:.5s}.circuit-chip--2{animation-delay:3.4s;transition-delay:.8s}.circuit-chip--3{animation-delay:4.4s;transition-delay:1s}.circuit-chip--4{animation-delay:2.1s;transition-delay:.65s}.circuit-chip--5{animation-duration:6.5s;animation-delay:1.5s;transition-delay:.75s}.circuit-chip--6{animation-duration:6.5s;animation-delay:3.1s;transition-delay:.95s}.circuit-chip--7{animation-duration:6.5s;animation-delay:6.1s;transition-delay:1.15s}@keyframes circuit-chip-flash{0%,90%,to{opacity:.55;stroke:var(--ink)}3%{opacity:1;stroke:var(--accent)}}.circuit-glow{fill:var(--accent);opacity:.16;transition:opacity .6s ease 1.5s}.circuit-dot{fill:var(--accent);transition:opacity .6s ease 1.5s}.js .chapter:not(.is-visible) .circuit-glow,.js .chapter:not(.is-visible) .circuit-dot{opacity:0}.scene--console{position:relative;width:min(100%,24rem);aspect-ratio:1;padding-bottom:1.9rem}.console-map{display:block;width:100%;height:100%}.console-grid line{stroke:var(--ink);opacity:.08;transition:opacity .8s ease .1s}.js .chapter:not(.is-visible) .console-grid line{opacity:0}.console-flightpath{fill:none;stroke:var(--accent);stroke-width:2;stroke-linecap:round;stroke-dasharray:3 7;opacity:.75;animation:console-path-flow 3.5s linear infinite;transition:opacity .7s ease .45s}.js .chapter:not(.is-visible) .console-flightpath{opacity:0}@keyframes console-path-flow{to{stroke-dashoffset:-40}}.console-waypoint{fill:var(--card);stroke:var(--ink);stroke-width:1.5;opacity:.6;transform-box:fill-box;transform-origin:center;transition:opacity .4s ease .7s,transform .4s var(--ease-out) .7s}.js .chapter:not(.is-visible) .console-waypoint{opacity:0;transform:scale(0)}.console-waypoint--next{fill:var(--accent);stroke:none;opacity:1;animation:console-ping 2.2s ease-out infinite;transform-origin:220px 80px;transform-box:view-box;transition:opacity .4s ease .85s}.js .chapter:not(.is-visible) .console-waypoint--next{transform:none}@keyframes console-ping{0%,60%{transform:scale(1)}80%{transform:scale(1.9);opacity:.25}to{transform:scale(1);opacity:1}}.console-aircraft path{fill:var(--accent);transition:opacity .5s ease .9s}.js .chapter:not(.is-visible) .console-aircraft path{opacity:0}.console-live{position:absolute;top:.5rem;left:.5rem;display:flex;align-items:center;gap:.4rem;padding:.3rem .55rem;background:var(--card);border:1px solid var(--line-soft);border-radius:999px;font-family:var(--font-mono);font-size:.6rem;letter-spacing:.08em;color:var(--accent);transition:opacity .5s ease .3s,transform .5s var(--ease-out) .3s}.js .chapter:not(.is-visible) .console-live{opacity:0;transform:translateY(-8px)}.console-live i{width:5px;height:5px;border-radius:50%;background:var(--accent);animation:console-live-blink 1.6s ease-in-out infinite}@keyframes console-live-blink{0%,to{opacity:1}50%{opacity:.25}}.console-horizon{position:absolute;right:-.25rem;bottom:1.4rem;width:40%;filter:drop-shadow(0 6px 14px rgba(36,36,36,.12));transition:opacity .6s ease .6s,transform .6s var(--ease-out) .6s}.js .chapter:not(.is-visible) .console-horizon{opacity:0;transform:translateY(14px) scale(.92)}.horizon-ring{fill:var(--card);stroke:var(--line);stroke-width:1.5}.horizon-tick{fill:var(--fg-faint, var(--ink))}.horizon-face{transform-origin:60px 60px}.horizon-ground{fill:var(--ink);opacity:.14}.horizon-line{stroke:var(--ink);stroke-width:1.6;opacity:.55}.horizon-tick-line{stroke:var(--ink);stroke-width:1.2;opacity:.4}.horizon-craft{fill:none;stroke:var(--accent);stroke-width:2.2;stroke-linecap:round}.console-telemetry{position:absolute;left:0;right:0;bottom:0;display:flex;justify-content:space-between;padding:0 .25rem;font-family:var(--font-mono);font-size:.62rem;letter-spacing:.02em;color:var(--fg-faint);transition:opacity .5s ease .8s,transform .5s var(--ease-out) .8s}.js .chapter:not(.is-visible) .console-telemetry{opacity:0;transform:translateY(8px)}.console-telemetry b{color:var(--ink);font-weight:600}.scene--loom{width:min(100%,26rem)}.scene--loom svg{display:block;width:100%;height:auto}.loom-thread{fill:none;stroke:var(--ink);stroke-width:1.4;opacity:.36;transition:opacity .8s ease}.loom-thread--sight{stroke-width:1.1;opacity:.3;transition-delay:.1s}.loom-thread--sound{transition-delay:.22s}.loom-thread--touch{stroke-dasharray:1 7;stroke-linecap:round;animation:loom-crawl-dots 7s linear infinite;transition-delay:.34s}.loom-thread--smell{stroke-width:1.2;opacity:.3;transition-delay:.46s}.loom-thread--beads{stroke-dasharray:.1 11;stroke-linecap:round;stroke-width:3.2;opacity:.3;animation:loom-crawl-beads 10s linear infinite;transition-delay:.58s}@keyframes loom-crawl-dots{to{stroke-dashoffset:-64}}@keyframes loom-crawl-beads{to{stroke-dashoffset:-66.6}}.loom-braid path{fill:none;stroke:var(--accent);stroke-linecap:round}.loom-flow circle{fill:var(--accent)}.loom-heart{fill:var(--accent);transform-origin:356px 180px}.loom-ring{fill:none;stroke:var(--accent);stroke-width:1.2}.loom-braid,.loom-flow,.loom-heart-wrap{transition:opacity .8s ease}.loom-braid{transition-delay:.7s}.loom-flow{transition-delay:.85s}.loom-heart-wrap{transition-delay:1s}.js .chapter:not(.is-visible) .loom-thread,.js .chapter:not(.is-visible) .loom-braid,.js .chapter:not(.is-visible) .loom-flow,.js .chapter:not(.is-visible) .loom-heart-wrap{opacity:0}@media(max-width:52rem){.scene--circuit,.scene--console{width:min(70%,16rem)}.scene--loom{width:min(85%,19rem)}}.story{position:relative}.chapter{position:relative;display:flex;align-items:center;min-height:100svh;overflow:hidden}.chapter--cream{background:var(--bg)}.chapter--sand{background:var(--bg-alt)}.chapter__inner{display:grid;grid-template-columns:minmax(0,6fr) minmax(0,5fr);align-items:center;gap:clamp(2rem,5vw,5rem);width:100%;padding-block:clamp(3rem,8vh,5rem)}.chapter--right .chapter__copy{order:2}.chapter--right .chapter__scene{order:1}.chapter__scene{display:flex;align-items:center;justify-content:center;min-width:0;pointer-events:none}.chapter__eyebrow{display:flex;align-items:center;gap:.9rem;width:fit-content;margin-bottom:clamp(1.5rem,5vh,3rem)}.chapter__frame{position:relative;display:block;width:fit-content;max-width:46rem}.chapter__corner{position:absolute;width:13px;height:13px;border:1.5px solid var(--accent);opacity:0;transform:scale(.4);transition:opacity var(--dur) var(--ease-out),transform var(--dur) var(--ease-out)}.chapter__corner--tl{top:-.75rem;left:-.75rem;border-right:0;border-bottom:0}.chapter__corner--tr{top:-.75rem;right:-.75rem;border-left:0;border-bottom:0;transition-delay:70ms}.chapter__corner--bl{bottom:-.75rem;left:-.75rem;border-right:0;border-top:0;transition-delay:70ms}.chapter__corner--br{bottom:-.75rem;right:-.75rem;border-left:0;border-top:0;transition-delay:.14s}.chapter.is-visible .chapter__corner{opacity:1;transform:scale(1)}.chapter__text{font-size:clamp(1.9rem,1.05rem + 3vw,3.1rem);font-weight:800;line-height:1.18;letter-spacing:-.02em}.js .chapter__word{display:inline-block;overflow:hidden;padding-bottom:.1em;vertical-align:bottom}.js .chapter__word>span{display:inline-block;transform:translateY(115%);transition:transform var(--dur-slow) var(--ease-out)}.chapter.is-visible .chapter__word>span{transform:none}.chapter__cue{position:absolute;left:50%;bottom:clamp(1.5rem,4vh,2.5rem);z-index:1;width:1px;height:3rem;overflow:hidden;background:var(--line);transform:translate(-50%)}.chapter__cue:after{content:"";position:absolute;inset:0;background:var(--accent);animation:chapter-cue-drop 2.4s ease-in-out infinite}@keyframes chapter-cue-drop{0%{transform:translateY(-100%)}55%{transform:translateY(100%)}to{transform:translateY(100%)}}@media(max-width:52rem){.chapter__inner{grid-template-columns:1fr;justify-items:center;text-align:center}.chapter__copy,.chapter--right .chapter__copy,.chapter--right .chapter__scene{order:0}.chapter__copy{display:flex;flex-direction:column;align-items:center;width:100%}.chapter__eyebrow{justify-content:center}.chapter__frame{width:100%;max-width:34rem}.chapter__scene{padding-top:1rem}}.resume{padding-top:calc(var(--nav-h) + clamp(3rem,9vh,6rem));padding-bottom:clamp(4rem,10vh,8rem);font-size:1rem;line-height:1.5}.resume__intro{max-width:46rem;margin-bottom:clamp(4rem,11vh,8rem)}.resume__name{font-size:clamp(2.25rem,1.4rem + 2.6vw,3rem);font-weight:700;line-height:1;letter-spacing:-.02em}.resume__char{display:inline-block;opacity:0;transform:translateY(.35em);animation:char-in .7s var(--ease-out) forwards}@keyframes char-in{to{opacity:1;transform:none}}@media(prefers-reduced-motion:reduce){.resume__char{animation:none;opacity:1;transform:none}}.resume__handle,.resume__body{opacity:0;animation:intro-in .9s var(--ease-out) forwards}.resume__handle{animation-delay:.62s}.resume__body{animation-delay:.76s}@keyframes intro-in{0%{transform:translateY(20px)}to{opacity:1;transform:none}}.resume__handle{display:inline-block;margin-top:.75rem;font-size:1rem;font-weight:500;color:var(--fg-muted);border-bottom:1px solid var(--line);transition:color var(--dur-fast) ease,border-color var(--dur-fast) ease}.resume__handle:hover{color:var(--accent);border-color:var(--accent)}.resume__body{margin-top:1.75rem;font-size:1rem;line-height:1.5;color:var(--fg-muted)}.block{margin-bottom:clamp(3.5rem,10vh,7rem)}.block__label{font-size:1rem;font-weight:400;line-height:1.5;letter-spacing:.25em;text-transform:uppercase;color:var(--fg-faint)}.block__rule{margin:1rem 0 2.5rem}.grid{display:grid;gap:clamp(2rem,4vw,3.5rem)}.grid--four{grid-template-columns:repeat(4,minmax(0,1fr));gap:clamp(1.5rem,3vw,2.5rem)}.grid__title{font-size:1rem;font-weight:700;line-height:1.5;letter-spacing:0}.grid__list{margin-top:.75rem;display:flex;flex-direction:column;gap:.4rem;font-size:1rem;line-height:1.5;color:var(--fg-muted)}.stack{display:flex;flex-direction:column;gap:2rem}.stack--wide{gap:clamp(2.5rem,6vh,4rem)}.entry{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,2fr);gap:clamp(2rem,4vw,3.5rem)}.entry__org{font-size:1.5rem;font-weight:700;line-height:1.5;letter-spacing:-.015em}.entry__period{margin-top:.25rem;font-family:var(--font-mono);font-size:.72rem;letter-spacing:.14em;text-transform:uppercase;color:var(--fg-faint)}.entry__title{font-size:1rem;font-weight:700;line-height:1.5}@media(max-width:72rem){.grid--four{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(max-width:44rem){.resume{text-align:center}.resume__intro{margin-inline:auto}.resume__body{text-wrap:pretty}.grid--four,.entry{grid-template-columns:1fr}.grid--four{width:fit-content;margin-inline:auto}.grid__list{text-align:left}.entry{gap:.6rem}}
