*,*::before,*::after{margin:0;padding:0;box-sizing:border-box}:root{--font-serif:'Cormorant Garamond',Georgia,'Times New Roman',serif;--font-sans:-apple-system,BlinkMacSystemFont,'Segoe UI',Helvetica,Arial,sans-serif;--white:#f0f0f0;--grey:#888;--bg:#000}html{scroll-behavior:smooth}body{font-family:var(--font-sans);background:var(--bg);color:var(--white);overflow-x:hidden;-webkit-font-smoothing:antialiased}a{color:var(--white);text-decoration:none;-webkit-tap-highlight-color:transparent}img{max-width:100%;height:auto}.back-nav{position:fixed;top:2rem;left:2.5rem;font-size:1.3rem;font-weight:300;letter-spacing:.02em;z-index:100;opacity:0;pointer-events:none;transition:opacity .4s ease}.back-nav.visible{opacity:1;pointer-events:auto}.back-nav:hover{opacity:.6}.section{min-height:100vh;position:relative;display:none}.section.active{display:flex}.section--work,.section--photography{display:none;flex-direction:column}.section--work.active,.section--photography.active{display:flex}.section--hero{align-items:center;justify-content:center;overflow:hidden}.hero-photo{position:absolute;left:0;top:0;width:50%;height:100%;display:flex;align-items:flex-end;justify-content:center;overflow:hidden}.hero-photo picture,.about-photo picture{display:contents}.hero-photo img{height:85%;width:auto;max-width:100%;object-fit:contain;object-position:bottom center;opacity:0}.hero-content{position:relative;z-index:2;margin-left:50%;padding-left:4rem}.hero-greeting{font-family:var(--font-serif);font-weight:300;font-size:clamp(2.5rem,5vw,4.5rem);line-height:1.2;letter-spacing:-0.01em;margin-bottom:3rem}.hero-greeting .line{display:block;opacity:0}.hero-nav{display:flex;flex-direction:column;gap:.6rem}.nav-link{font-size:clamp(1.3rem,2.5vw,2rem);font-weight:300;letter-spacing:.01em;opacity:0;transition:opacity .3s ease;cursor:pointer}.nav-link span{display:inline-block;transition:transform .3s ease}.nav-link:hover{opacity:.6}.nav-link:hover span{transform:translateX(6px)}.nav-link-accent{border-left:2px solid #27ae60;padding-left:.8rem;margin-top:.4rem}.nav-book{margin-top:.9rem;padding-left:1rem;border-left:1px solid rgba(240,240,240,0.28);opacity:0;transition:border-color .3s ease}.nav-book:hover{border-color:var(--white)}.nav-book .nav-link{font-size:clamp(1rem,1.5vw,1.2rem);opacity:1}.nav-book-note{display:block;margin-top:.5rem;font-size:.72rem;font-weight:400;letter-spacing:.18em;text-transform:uppercase;color:var(--grey)}.hero-credits{display:flex;flex-direction:column;align-items:flex-start;gap:.9rem;margin-top:2.2rem}.hero-press{display:inline-flex;align-items:center;gap:.75rem;width:fit-content;opacity:0}.hero-press-label{min-width:6.5rem;font-size:.72rem;font-weight:400;letter-spacing:.18em;text-transform:uppercase;color:var(--grey);transition:color .3s ease}.hero-press-link{display:block}.hero-press-logo{height:38px;width:auto;display:block;opacity:.85;transition:opacity .3s ease}.hero-press-logo--yfl{height:34px}.hero-press-logo--nbs{height:30px}.hero-press-logo--foundhaus{height:13px}.hero-press:hover .hero-press-label{color:var(--white)}.hero-press-link:hover .hero-press-logo{opacity:1}.section--about{align-items:center;height:100vh;overflow:hidden}.about-photo{position:absolute;left:0;top:0;width:45%;height:100%;overflow:hidden;display:flex;align-items:center;justify-content:center}.about-photo img{height:100%;width:100%;object-fit:cover;object-position:center 20%;opacity:0}.about-content{margin-left:50%;padding:4rem;max-width:550px}.section--about .about-content{max-height:100%;overflow-y:auto;scrollbar-width:none;-ms-overflow-style:none}.section--about .about-content::-webkit-scrollbar{width:0;height:0;display:none}.about-heading{font-family:var(--font-serif);font-weight:300;font-size:clamp(2rem,4vw,3.5rem);margin-bottom:2rem;opacity:0}.about-text p{font-size:1.15rem;line-height:1.7;font-weight:300;color:var(--grey);margin-bottom:1.2rem;opacity:0}.about-links{margin-top:2rem;display:flex;gap:2rem;opacity:0}.about-links a{font-size:1.1rem;font-weight:400;border-bottom:1px solid rgba(240,240,240,0.3);padding-bottom:2px;transition:opacity .3s ease}.about-links a:hover{opacity:.6}.featured-in{margin-top:2.5rem;opacity:0}.featured-in--secondary{margin-top:1.5rem}.featured-in-label{font-family:var(--font-sans);font-size:.72rem;font-weight:400;letter-spacing:.18em;text-transform:uppercase;color:var(--grey);margin-bottom:.9rem}.featured-in-cards{display:flex;flex-direction:column;gap:.7rem}.featured-in-card{display:flex;align-items:center;gap:1.1rem;padding:1rem 1.2rem;border:1px solid rgba(240,240,240,0.14);border-radius:4px;transition:border-color .3s ease,background .3s ease}.featured-in-card:hover{border-color:rgba(240,240,240,0.4);background:rgba(240,240,240,0.04)}.featured-in-logo{width:96px;height:56px;object-fit:contain;flex-shrink:0;display:block}.featured-in-logo--mark{box-sizing:border-box;padding:9px 0}.featured-in-card--book{border-color:rgba(240,240,240,0.32)}.featured-in-card--book:hover{border-color:var(--white)}.book-badge{width:96px;flex-shrink:0;display:flex;align-items:baseline;justify-content:center;gap:.25rem;font-family:var(--font-serif);font-size:2.1rem;line-height:1;color:var(--white)}.book-badge-unit{font-family:var(--font-sans);font-size:.72rem;font-weight:400;letter-spacing:.14em;text-transform:uppercase;color:var(--grey)}.featured-in-body{display:flex;flex-direction:column;gap:.3rem;min-width:0}.featured-in-title{font-size:.95rem;font-weight:400;line-height:1.45;color:var(--white)}.featured-in-meta{font-size:.78rem;font-weight:300;letter-spacing:.04em;color:var(--grey)}.featured-in-arrow{margin-left:auto;font-size:1.1rem;color:var(--grey);flex-shrink:0;transition:transform .3s ease,color .3s ease}.featured-in-card:hover .featured-in-arrow{transform:translateX(4px);color:var(--white)}.section--work{--work-gutter:2.5rem;padding:6rem var(--work-gutter) 4rem}.work-inner{max-width:980px;margin:0 auto;width:100%}.section-heading{font-family:var(--font-serif);font-weight:300;font-size:clamp(2.5rem,5vw,4rem);margin-bottom:3.5rem}.section--work .section-heading{margin-bottom:.8rem}.work-intro{font-size:.95rem;line-height:1.6;color:var(--grey);max-width:38ch;margin-bottom:2rem}.work-intro-call{display:block;margin-top:.5rem;color:rgba(240,240,240,0.75);letter-spacing:.02em}.work-block{margin-bottom:4rem}.work-block-head{display:flex;align-items:baseline;justify-content:space-between;gap:1rem;margin-bottom:1.5rem}.work-block-head .work-subheading{margin-bottom:0}.work-subheading{font-family:var(--font-sans);font-weight:500;font-size:.75rem;text-transform:uppercase;letter-spacing:.15em;color:rgba(240,240,240,0.4);margin-bottom:1.5rem}.work-hint{font-size:.72rem;letter-spacing:.06em;color:rgba(240,240,240,0.3);font-variant-numeric:tabular-nums}.show{position:relative;height:560vh;margin:0 calc(-1 * var(--work-gutter))}.show-pin{position:sticky;top:0;height:100vh;display:flex;align-items:center;overflow:hidden}.show-inner{width:100%;max-width:980px;margin:0 auto;padding:0 var(--work-gutter);display:grid;grid-template-rows:auto auto 1fr;gap:clamp(1.2rem,3.5vh,2.6rem);align-content:center;max-height:100vh}.show-meter{display:flex;align-items:baseline;flex-wrap:wrap;gap:.6rem 2.4rem}.show-when{font-family:var(--font-serif);font-size:clamp(1.6rem,4vw,2.8rem);font-weight:300;line-height:1;color:var(--white);min-width:7ch}.show-stat{display:inline-flex;align-items:baseline;gap:.45rem}.show-num{font-family:var(--font-serif);font-size:clamp(1.3rem,3vw,2rem);font-weight:300;line-height:1;color:var(--white);font-variant-numeric:tabular-nums;min-width:1.2ch;text-align:right}.show-unit{font-size:.72rem;letter-spacing:.06em;color:rgba(240,240,240,0.38)}.stage{--stage-label:5.5rem;--stage-gap:1rem;position:relative;display:flex;flex-direction:column;gap:clamp(0.5rem,1.4vh,0.9rem);padding:clamp(0.6rem,2vh,1.2rem) 0;border-top:1px solid rgba(240,240,240,0.08);border-bottom:1px solid rgba(240,240,240,0.08)}.stage-lane{display:grid;grid-template-columns:var(--stage-label) 1fr;gap:var(--stage-gap);align-items:center}.stage-track{position:absolute;left:calc(var(--stage-label) + var(--stage-gap));right:0;top:0;bottom:0;pointer-events:none}.stage-lane-label{font-size:.55rem;font-weight:500;text-transform:uppercase;letter-spacing:.16em;color:rgba(240,240,240,0.22);text-align:right;transition:color .5s ease}.stage-lane.is-live .stage-lane-label{color:rgba(240,240,240,0.6)}.stage-rows{display:flex;flex-direction:column;gap:clamp(3px,0.7vh,6px)}.stage-row{position:relative;height:clamp(5px,1.1vh,9px)}.stage-bar{position:absolute;top:50%;transform:translateY(-50%);height:100%;display:flex;align-items:center}.stage-bar-fill{display:block;width:100%;height:2px;background:rgba(240,240,240,0.5);transform-origin:left center;transform:scaleX(var(--draw,0));transition:background .4s ease}.stage-bar::before{content:'';position:absolute;left:-1px;top:50%;width:4px;height:4px;margin-top:-2px;border-radius:50%;background:rgba(240,240,240,0.5);opacity:0;transition:opacity .35s ease,background .4s ease}.stage-row.is-live .stage-bar::before,.stage-row.is-past .stage-bar::before{opacity:1}.stage-row.is-live .stage-bar::before{background:var(--white)}.stage-row.is-past .stage-bar::before{background:rgba(240,240,240,0.22)}.stage-bar--approx .stage-bar-fill{background:none;height:0;border-top:2px dotted rgba(240,240,240,0.42)}.stage-row.is-live .stage-bar-fill{background:var(--white)}.stage-row.is-live .stage-bar--approx .stage-bar-fill,.stage-row.is-live .stage-bar--approx{background:none;border-top-color:var(--white)}.stage-row.is-past .stage-bar-fill{background:rgba(240,240,240,0.22)}.stage-row.is-past .stage-bar--approx .stage-bar-fill{background:none;border-top-color:rgba(240,240,240,0.18)}.stage-playhead{position:absolute;top:0;bottom:0;width:1px;will-change:left;background:linear-gradient(to bottom,rgba(240,240,240,0.45),rgba(240,240,240,0.12));z-index:2;pointer-events:none}.show-script{position:relative;min-height:clamp(7rem,18vh,9.5rem)}.act{position:absolute;inset:0;opacity:0;pointer-events:none;display:flex;flex-direction:column;gap:.5rem}.act.is-live{opacity:1;pointer-events:auto}.act-cue{display:flex;align-items:baseline;gap:.8rem;margin-bottom:.2rem}.act-cue-label{font-size:.62rem;font-weight:500;text-transform:uppercase;letter-spacing:.22em;color:rgba(240,240,240,0.45)}.act-cue-when{font-size:.62rem;letter-spacing:.1em;color:rgba(240,240,240,0.25)}.act-line{font-size:clamp(0.95rem,1.9vw,1.2rem);line-height:1.55;color:rgba(240,240,240,0.78);max-width:54ch}.act-line:last-child{color:var(--white)}.act--climax .act-cue-label{color:var(--white)}.act--climax .act-line:last-child{font-family:var(--font-serif);font-size:clamp(1.4rem,3.2vw,2.1rem);line-height:1.25;letter-spacing:-0.01em}.stage.is-go .stage-bar-fill{background:var(--white);transition:background .12s ease}.stage.is-go .stage-bar--approx .stage-bar-fill{background:none;border-top-color:var(--white)}.stage.is-go .stage-playhead{background:var(--white);box-shadow:0 0 18px 2px rgba(240,240,240,0.35)}.show-cues{position:absolute;right:var(--work-gutter);top:50%;transform:translateY(-50%);list-style:none;display:flex;flex-direction:column;gap:.5rem}.show-cue{width:1px;height:14px;background:rgba(240,240,240,0.14);transition:background .4s ease,height .4s ease}.show-cue.is-live{background:var(--white);height:22px}.work-handoff{font-size:.8rem;letter-spacing:.04em;color:rgba(240,240,240,0.3);margin:5rem 0 2.5rem}@media(prefers-reduced-motion:reduce){.show{height:auto;margin:0}.show-pin{position:static;height:auto;display:block}.show-inner{max-height:none;padding:0}.show-script{min-height:0;display:flex;flex-direction:column;gap:2rem;margin-top:2rem}.act{position:static;opacity:1;pointer-events:auto}.show-cues{display:none}}.tl{--name-col:11.5rem;--gutter:1.2rem;--row-h:1.75rem;position:relative;margin-bottom:2.5rem}.tl-head{margin-left:calc(var(--name-col) + var(--gutter));position:relative}.tl-milestones{position:relative;height:3.5rem}.tl-ms{position:absolute;bottom:0;width:0;display:flex;flex-direction:column;align-items:center;pointer-events:none}.tl-ms::after{content:'';width:1px;height:.5rem;background:linear-gradient(to bottom,rgba(240,240,240,0.28),rgba(240,240,240,0.08))}.tl-ms-label{position:absolute;left:0;bottom:.75rem;font-size:.65rem;letter-spacing:.04em;color:rgba(240,240,240,0.42);white-space:nowrap;transform:translateX(-50%)}.tl-ms--start .tl-ms-label{transform:none}.tl-ms--end .tl-ms-label{transform:translateX(-100%)}.tl-ms--stacked .tl-ms-label{bottom:1.85rem}.tl-ms--stacked::after{height:1.6rem}.tl-years{position:relative;height:1.4rem;border-bottom:1px solid rgba(240,240,240,0.12)}.tl-year{position:absolute;bottom:.3rem;font-family:var(--font-serif);font-size:.95rem;color:rgba(240,240,240,0.45);font-variant-numeric:tabular-nums;padding-left:.35rem;border-left:1px solid rgba(240,240,240,0.12);line-height:1;padding-bottom:.1rem}.tl-body{position:relative;padding-top:.9rem}.tl-lane{margin-bottom:1.1rem;transition:opacity .35s ease}.tl-lane.is-muted{opacity:.25}.tl-lane-label{font-family:var(--font-sans);font-size:.62rem;font-weight:500;text-transform:uppercase;letter-spacing:.18em;color:rgba(240,240,240,0.3);margin-bottom:.4rem;width:var(--name-col);text-align:right;cursor:pointer;transition:color .25s ease}.tl-lane-label:hover{color:rgba(240,240,240,0.65)}.tl-row{display:grid;grid-template-columns:var(--name-col) 1fr;gap:var(--gutter);align-items:center;height:var(--row-h)}.tl-row-name{font-family:var(--font-sans);background:none;border:0;padding:0;text-align:right;font-size:.78rem;line-height:1.2;color:rgba(240,240,240,0.5);cursor:pointer;transition:color .25s ease,opacity .4s ease;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.tl-row-name:hover,.tl-row.is-selected .tl-row-name{color:var(--white)}.tl-row.is-future .tl-row-name{color:rgba(240,240,240,0.15)}.tl-track{position:relative;height:100%}.tl-bar{position:absolute;top:50%;transform:translateY(-50%);height:1.4rem;background:none;border:0;padding:0;cursor:pointer;display:flex;align-items:center}.tl-bar-fill{display:block;width:100%;height:2px;background:rgba(240,240,240,0.55);transform-origin:left center;transform:scaleX(var(--draw,1));transition:background .25s ease}.tl-bar::before{content:'';position:absolute;left:0;top:50%;width:5px;height:5px;margin-top:-2.5px;margin-left:-1px;border-radius:50%;background:rgba(240,240,240,0.55);transition:background .25s ease,transform .25s ease}.tl-bar--approx .tl-bar-fill{background:none;border-top:2px dotted rgba(240,240,240,0.45);height:0}.tl-bar.is-ongoing::after{content:'';position:absolute;right:-5px;top:50%;margin-top:-3px;border-left:5px solid rgba(240,240,240,0.55);border-top:3px solid transparent;border-bottom:3px solid transparent;opacity:var(--tip,1);transition:border-color .25s ease}.tl-row.is-past .tl-bar-fill{background:rgba(240,240,240,0.26)}.tl-row.is-past .tl-bar--approx .tl-bar-fill{background:none;border-top-color:rgba(240,240,240,0.22)}.tl-row.is-past .tl-bar::before{background:rgba(240,240,240,0.26)}.tl-bar::before{opacity:var(--tip-dot,1)}.tl-row.is-future .tl-bar::before{opacity:0}.tl-bar:hover .tl-bar-fill,.tl-row.is-selected .tl-bar-fill{background:var(--white)}.tl-bar--approx:hover .tl-bar-fill,.tl-row.is-selected .tl-bar--approx .tl-bar-fill{background:none;border-top-color:var(--white)}.tl-bar:hover::before,.tl-row.is-selected .tl-bar::before{background:var(--white);transform:scale(1.3)}.tl-bar:hover.is-ongoing::after,.tl-row.is-selected .tl-bar.is-ongoing::after{border-left-color:var(--white)}.tl-bar:focus-visible,.tl-row-name:focus-visible,.tl-range:focus-visible{outline:1px solid rgba(240,240,240,0.55);outline-offset:3px}.tl-playhead{position:absolute;top:0;bottom:0;left:calc(var(--name-col) + var(--gutter));width:1px;pointer-events:none;z-index:3}.tl-playhead::before{content:'';position:absolute;inset:0;background:linear-gradient(to bottom,rgba(240,240,240,0.5),rgba(240,240,240,0.14))}.tl-controls{margin-left:calc(var(--name-col) + var(--gutter));margin-top:1.6rem}.tl-range{-webkit-appearance:none;appearance:none;width:100%;height:1.6rem;background:none;cursor:ew-resize;display:block}.tl-range::-webkit-slider-runnable-track{height:1px;background:rgba(240,240,240,0.14)}.tl-range::-moz-range-track{height:1px;background:rgba(240,240,240,0.14)}.tl-range::-webkit-slider-thumb{-webkit-appearance:none;appearance:none;width:9px;height:9px;border-radius:50%;background:var(--white);margin-top:-4px;transition:transform .2s ease}.tl-range::-moz-range-thumb{width:9px;height:9px;border:0;border-radius:50%;background:var(--white)}.tl-range:hover::-webkit-slider-thumb,.tl-range:focus::-webkit-slider-thumb{transform:scale(1.25)}.tl-readout{display:flex;align-items:baseline;gap:.6rem;margin-top:.7rem;font-size:.85rem;color:var(--grey)}.tl-readout-date{font-family:var(--font-serif);font-size:1.25rem;color:var(--white);font-variant-numeric:tabular-nums;min-width:8.5ch}.tl-readout-sep{color:rgba(240,240,240,0.25)}#tl-count{color:var(--white);font-variant-numeric:tabular-nums}.tl-legend{display:flex;gap:1.2rem;margin-top:.9rem;font-size:.68rem;color:rgba(240,240,240,0.3)}.tl-legend-item{display:inline-flex;align-items:center;gap:.4rem}.tl-legend-swatch{width:16px;height:2px;background:rgba(240,240,240,0.5)}.tl-legend-swatch--approx{background:none;height:0;border-top:2px dotted rgba(240,240,240,0.45)}.tl-detail{border-top:1px solid rgba(240,240,240,0.1);padding-top:2rem;margin-bottom:4rem;min-height:15rem}.detail{display:flex;flex-direction:column;gap:1.2rem}.detail[hidden]{display:none}.detail-title{font-family:var(--font-serif);font-weight:300;font-size:clamp(1.8rem,3.5vw,2.6rem);line-height:1.1;letter-spacing:-0.01em}.detail-meta{margin-top:.4rem;font-size:.78rem;color:rgba(240,240,240,0.4);letter-spacing:.02em}.detail-dot{padding:0 .3rem;color:rgba(240,240,240,0.25)}.detail-summary{font-size:1rem;line-height:1.65;color:rgba(240,240,240,0.82);max-width:56ch}.detail-bullets{list-style:none;display:flex;flex-direction:column;gap:.6rem;max-width:62ch}.detail-bullets li{position:relative;padding-left:1.1rem;font-size:.88rem;line-height:1.6;color:rgba(240,240,240,0.65)}.detail-bullets li::before{content:'';position:absolute;left:0;top:.65em;width:5px;height:1px;background:rgba(240,240,240,0.35)}.detail-stack{display:flex;flex-wrap:wrap;gap:.35rem}.detail-links{display:flex;flex-wrap:wrap;gap:1.4rem}.detail-links a{font-size:.85rem;color:rgba(240,240,240,0.75);border-bottom:1px solid rgba(240,240,240,0.15);padding-bottom:1px;transition:color .25s ease,border-color .25s ease}.detail-links a span{display:inline-block;transition:transform .25s ease}.detail-links a:hover{color:var(--white);border-color:var(--white)}.detail-links a:hover span{transform:translateX(3px)}.stack-groups{display:flex;flex-direction:column;gap:1.1rem}.stack-group{display:grid;grid-template-columns:7.5rem 1fr;align-items:start;gap:1rem}.stack-group-label{font-size:.72rem;letter-spacing:.1em;text-transform:uppercase;color:rgba(240,240,240,0.28);padding-top:.45rem}.stack-chips{display:flex;flex-wrap:wrap;gap:.5rem}.chip{display:inline-flex;align-items:center;font-family:var(--font-sans);padding:.35rem .85rem;border:1px solid rgba(240,240,240,0.12);border-radius:4px;font-size:.8rem;color:var(--grey);letter-spacing:.01em}.chip[data-projects]{border-color:rgba(240,240,240,0.05);color:rgba(240,240,240,0.14);transition:border-color .45s ease,color .45s ease}.chip[data-projects].is-live{border-color:rgba(240,240,240,0.24);color:rgba(240,240,240,0.88)}.chip--inline{padding:.25rem .6rem;font-size:.72rem;border-color:rgba(240,240,240,0.1)}.github-list{display:flex;flex-direction:column}.repo-row{display:flex;align-items:baseline;justify-content:space-between;gap:1.5rem;padding:.85rem 0;border-bottom:1px solid rgba(240,240,240,0.06);transition:background .3s ease}.repo-row:first-child{border-top:1px solid rgba(240,240,240,0.06)}.repo-row:hover{background:rgba(240,240,240,0.02)}.repo-name{font-family:var(--font-sans);font-size:.9rem;font-weight:500;white-space:nowrap;flex-shrink:0}.repo-desc{font-family:var(--font-sans);font-size:.8rem;color:rgba(240,240,240,0.4);line-height:1.4;flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.repo-meta{display:flex;gap:.8rem;font-family:var(--font-sans);font-size:.75rem;color:rgba(240,240,240,0.3);flex-shrink:0;align-items:center}.repo-lang{display:flex;align-items:center;gap:.3rem}.lang-dot{width:7px;height:7px;border-radius:50%;display:inline-block}.loading-repos{font-family:var(--font-sans);color:var(--grey);font-size:.85rem;font-style:italic}.work-block--meta{display:grid;grid-template-columns:repeat(3,1fr);gap:2rem;padding-top:2.5rem;border-top:1px solid rgba(240,240,240,0.08)}.meta-list{list-style:none;display:flex;flex-direction:column;gap:.5rem}.meta-list li{display:flex;flex-direction:column;gap:.1rem}.meta-key{font-size:.9rem;color:rgba(240,240,240,0.8)}.meta-val{font-size:.75rem;color:rgba(240,240,240,0.35)}.meta-cv{font-size:.9rem;color:rgba(240,240,240,0.8);border-bottom:1px solid rgba(240,240,240,0.2);padding-bottom:2px;width:fit-content;transition:color .25s ease,border-color .25s ease}.meta-cv span{display:inline-block;transition:transform .25s ease}.meta-cv:hover{color:var(--white);border-color:var(--white)}.meta-cv:hover span{transform:translateX(3px)}.section--photography{padding:6rem 2.5rem 4rem}.photography-inner{max-width:1200px;margin:0 auto;width:100%}.photography-subtitle{font-size:1.1rem;color:var(--grey);font-weight:300;margin-top:-2rem;margin-bottom:3rem;opacity:0}.photo-grid{position:relative;width:100%}.photo-item{overflow:hidden;border-radius:4px;opacity:0}.photo-item img{width:100%;display:block;transition:transform .6s ease}.photo-item:hover img{transform:scale(1.03)}.lightbox{position:fixed;inset:0;background:rgba(0,0,0,0.95);z-index:1000;display:flex;align-items:center;justify-content:center;cursor:zoom-out;opacity:0;pointer-events:none;transition:opacity .3s ease}.lightbox.open{opacity:1;pointer-events:auto}.lightbox img{max-width:90vw;max-height:90vh;object-fit:contain;border-radius:4px}@media(max-width:900px){.hero-photo{width:40%}.hero-content{margin-left:40%;padding-left:2rem}.about-photo{width:40%}.about-content{margin-left:42%;padding:2rem}.tl{--name-col:9rem}.stack-group{grid-template-columns:6.5rem 1fr}}@media(max-width:640px){.back-nav{top:1rem;left:1.2rem;font-size:1rem}.section--hero{flex-direction:column;align-items:stretch;justify-content:flex-end;padding:0 1.6rem 3rem}.hero-photo{position:absolute;inset:0;width:100%;height:100%;top:0;left:0;align-items:center;justify-content:center}.hero-photo img{height:100%;width:100%;object-fit:contain;object-position:center 40%}.hero-photo::after{content:'';position:absolute;inset:0;background:linear-gradient(to bottom,rgba(0,0,0,0) 42%,rgba(0,0,0,0.55) 70%,rgba(0,0,0,0.92) 100%);pointer-events:none}.hero-content{position:relative;margin-left:0;padding:0;z-index:2}.hero-greeting{font-size:2.4rem;margin-bottom:1.2rem}.nav-link{font-size:1.25rem}.hero-nav{gap:.7rem}.nav-book{margin-top:.7rem;padding-left:.8rem}.nav-book-note{margin-top:.4rem;font-size:.65rem}.hero-credits{margin-top:1.5rem;gap:.7rem}.hero-press{gap:.6rem}.hero-press-label{min-width:5.4rem;font-size:.65rem}.hero-press-logo{height:30px}.hero-press-logo--yfl{height:26px}.hero-press-logo--nbs{height:24px}.hero-press-logo--foundhaus{height:11px}.section--about{flex-direction:column;align-items:stretch;min-height:auto}.section--about{height:auto;overflow:visible}.section--about .about-content{max-height:none;overflow-y:visible}.about-photo{position:relative;width:100%;height:50vh;flex-shrink:0}.about-photo img{object-fit:contain;object-position:center}.about-content{margin-left:0;padding:2rem 1.5rem 3rem;max-width:100%}.about-heading{font-size:2rem;margin-bottom:1.2rem}.about-text p{font-size:1rem;line-height:1.6;margin-bottom:1rem}.about-links{gap:1.5rem}.about-links a{font-size:1rem}.featured-in{margin-top:2rem}.featured-in--secondary{margin-top:1.2rem}.featured-in-card{gap:.85rem;padding:.9rem 1rem}.featured-in-logo{width:76px;height:44px}.book-badge{width:76px;font-size:1.7rem}.book-badge-unit{font-size:.65rem}.featured-in-logo--mark{padding:7px 0}.featured-in-title{font-size:.88rem}.featured-in-meta{font-size:.72rem}.section--work,.section--photography{padding:4.5rem 1.2rem 3rem}.section--work{--work-gutter:1.2rem}.stage{--stage-label:4rem;--stage-gap:.7rem}.stage-lane-label{font-size:.5rem;letter-spacing:.12em}.section-heading{font-size:2.2rem;margin-bottom:2rem}.section--work .section-heading{margin-bottom:.6rem}.work-block{margin-bottom:2.5rem}.work-subheading{margin-bottom:1rem}.work-intro{font-size:.9rem;margin-bottom:2.5rem}.tl{--name-col:0rem;--gutter:0rem;--row-h:2.6rem}.tl-row{display:block;height:auto;padding:0 0 .9rem}.tl-row-name{display:block;width:100%;text-align:left;font-size:.75rem;margin-bottom:.15rem}.tl-lane{margin-bottom:1.4rem}.tl-lane-label{width:auto;text-align:left;margin-bottom:.6rem}.tl-track{height:.7rem}.tl-milestones{height:3.2rem}.tl-ms-label{font-size:.56rem;letter-spacing:0}.tl-year{font-size:.8rem}.tl-readout{flex-wrap:wrap;gap:.4rem}.tl-readout-date{font-size:1.1rem}.detail-summary{font-size:.92rem}.stack-group{grid-template-columns:1fr;gap:.5rem}.stack-group-label{padding-top:0}.chip{font-size:.78rem;padding:.35rem .75rem}.work-block--meta{grid-template-columns:1fr;gap:1.8rem}.repo-row{gap:.8rem;padding:.7rem 0}.repo-name{font-size:.82rem}.repo-desc{display:none}.repo-meta{font-size:.7rem}.photography-subtitle{font-size:.95rem;margin-top:-1.2rem;margin-bottom:2rem}.lightbox img{max-width:95vw;max-height:85vh}}@media(max-width:380px){.hero-greeting{font-size:2rem}.nav-link{font-size:1.15rem}.about-photo{height:44vh}.tl-row-name{font-size:.72rem}}@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*::before,*::after{transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}