@font-face{font-family:Bricolage Grotesque Variable;font-style:normal;font-display:swap;font-weight:200 800;font-stretch:75% 100%;src:url(/assets/bricolage-grotesque-vietnamese-standard-normal-Br4FGdAc.woff2)format("woff2-variations");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Bricolage Grotesque Variable;font-style:normal;font-display:swap;font-weight:200 800;font-stretch:75% 100%;src:url(/assets/bricolage-grotesque-latin-ext-standard-normal-qp-RdZgh.woff2)format("woff2-variations");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Bricolage Grotesque Variable;font-style:normal;font-display:swap;font-weight:200 800;font-stretch:75% 100%;src:url(/assets/bricolage-grotesque-latin-standard-normal-C5Lc8Qmc.woff2)format("woff2-variations");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Newsreader Variable;font-style:normal;font-display:swap;font-weight:200 800;src:url(/assets/newsreader-vietnamese-standard-normal-BjhtXyW2.woff2)format("woff2-variations");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Newsreader Variable;font-style:normal;font-display:swap;font-weight:200 800;src:url(/assets/newsreader-latin-ext-standard-normal-BQn1nviT.woff2)format("woff2-variations");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Newsreader Variable;font-style:normal;font-display:swap;font-weight:200 800;src:url(/assets/newsreader-latin-standard-normal-s-izfB6B.woff2)format("woff2-variations");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Newsreader Variable;font-style:italic;font-display:swap;font-weight:200 800;src:url(/assets/newsreader-vietnamese-standard-italic-DTr-ymY4.woff2)format("woff2-variations");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Newsreader Variable;font-style:italic;font-display:swap;font-weight:200 800;src:url(/assets/newsreader-latin-ext-standard-italic-CSPGnFdO.woff2)format("woff2-variations");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Newsreader Variable;font-style:italic;font-display:swap;font-weight:200 800;src:url(/assets/newsreader-latin-standard-italic-kJKFiXvB.woff2)format("woff2-variations");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}:root{color:#f8fafc;font-synthesis:none;text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;background:#11141b;font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif}*{box-sizing:border-box}html,body,#root{width:100%;min-width:320px;min-height:100%;margin:0}body{overflow:hidden}button,a{font:inherit}.floor--projects{grid-template-rows:minmax(0,1fr) auto;height:100%;min-height:0}.projects-ring{grid-template-rows:minmax(150px,.85fr) minmax(330px,2.35fr) minmax(150px,.95fr);grid-template-columns:repeat(12,minmax(0,1fr));gap:clamp(7px,.78vw,12px);height:100%;min-height:560px;display:grid}.panel-cell--slot1{grid-area:1/1/2/5}.panel-cell--slot2{grid-area:1/5/2/9}.panel-cell--slot3{grid-area:1/9/2/13}.panel-cell--slot4{grid-area:2/1/3/3}.panel-cell--slot5{grid-area:2/11/3/13}.panel-cell--slot6{grid-area:3/1/4/5}.panel-cell--slot7{grid-area:3/5/4/9}.panel-cell--slot8{grid-area:3/9/4/13}.panel-stage{grid-area:2/3/3/11}.panel-cell.panel-cell--slot4,.panel-cell.panel-cell--slot5{--blurb-lines:5}.panel-cell--slot1,.panel-cell--slot2,.panel-cell--slot3{justify-content:flex-start}.panel-cell{--cell-pad-x:clamp(14px, 1.4vw, 20px);--cell-pad-y:clamp(12px, 1.6vh, 18px);--blurb-lines:3;min-width:0;padding:var(--cell-pad-y) var(--cell-pad-x);border:1px solid var(--gold-hair);color:inherit;font:inherit;text-align:left;cursor:pointer;background:linear-gradient(#ffffff06,#fff0 45%),#f0c87005;border-radius:2px;flex-direction:column;justify-content:flex-end;text-decoration:none;transition:border-color .22s,background-color .22s;display:flex;position:relative}.panel-cell:hover,.panel-cell:focus-visible{background-color:#f0c8700d;border-color:#f0c8708c}.panel-cell__num{color:#f0c8701c;font-family:var(--font-display);font-variant-numeric:tabular-nums;font-size:clamp(2rem,3.4vw,3rem);font-weight:700;line-height:1;transition:color .25s,text-shadow .25s;position:absolute;top:6px;right:14px}.panel-cell:hover .panel-cell__num,.panel-cell:focus-visible .panel-cell__num{color:#f0c870eb;text-shadow:0 0 18px #f0c87073}.panel-cell__year{color:#f0c87073;font-family:var(--font-display);font-variant-numeric:tabular-nums;letter-spacing:.18em;font-size:.6rem;font-weight:600;transition:color .25s;position:absolute;top:calc(10px + clamp(2rem,3.4vw,3rem));right:14px}.panel-cell:hover .panel-cell__year,.panel-cell:focus-visible .panel-cell__year,.panel-cell--open .panel-cell__year{color:#f0c870cc}.panel-cell__base{z-index:1;gap:7px;display:grid;position:relative}.panel-cell__name{-webkit-line-clamp:2;line-clamp:2;font-family:var(--font-display);white-space:normal;-webkit-box-orient:vertical;font-size:clamp(.98rem,1.3vw,1.22rem);font-weight:640;line-height:1.12;display:-webkit-box;overflow:hidden}.panel-cell__blurb{-webkit-line-clamp:var(--blurb-lines);line-clamp:var(--blurb-lines);max-width:32ch;color:var(--ink-mid);font-family:var(--font-serif);-webkit-box-orient:vertical;font-size:clamp(.72rem,.86vw,.86rem);font-weight:420;line-height:1.32;display:-webkit-box;overflow:hidden}.panel-cell__glyphs{flex-wrap:wrap;align-items:center;gap:9px 11px;margin-top:1px;display:flex}.tech-glyph{width:15px;height:15px;-webkit-mask:var(--glyph) center / contain no-repeat;-webkit-mask:var(--glyph) center / contain no-repeat;mask:var(--glyph) center / contain no-repeat;background-color:#f0c87073;flex:none;transition:background-color .28s}.panel-cell:hover .tech-glyph,.panel-cell:focus-visible .tech-glyph{background-color:var(--brand)}@keyframes cell-denied{0%,to{color:#f0c8701c}20%,60%{color:#f0c870eb}40%,80%{color:#f0c87033}}.panel-cell[data-denied=true] .panel-cell__num{animation:.55s cell-denied}.panel-stage{isolation:isolate;background:radial-gradient(at 50% 58%,#f0c8700f,#0000 68%),radial-gradient(#0a081061,#0000 76%);border:0;border-radius:2px;position:relative;overflow:visible}.panel-stage:before,.panel-stage:after{z-index:0;content:"";pointer-events:none;position:absolute}.panel-stage:before{filter:blur(22px);background:radial-gradient(at 46% 52%,#f0c87014,#0000 68%),radial-gradient(#00000061,#0000 74%);inset:clamp(-34px,-2.6vw,-18px)}.panel-stage:after{filter:blur(34px);background:radial-gradient(at 50% 54%,#0a081057,#0000 72%);inset:clamp(18px,2vw,34px)}.panel-stage>*{z-index:1}.stage-idle{text-align:center;flex-direction:column;justify-content:center;align-items:center;gap:10px;display:flex;position:absolute;inset:0}.stage-idle__count{color:#f0c87059;font-family:var(--font-display);font-size:clamp(2.2rem,3.6vw,3.2rem);font-weight:700;line-height:1}.stage-idle__hint{color:var(--ink-low);font-family:var(--font-display);letter-spacing:.24em;text-transform:uppercase;font-size:.62rem;font-weight:560}.stage-idle__count,.stage-idle__hint{z-index:1;position:relative}.stage-idle__field{position:absolute;inset:clamp(10px,2vh,18px)}.stage-idle__mote{width:15px;height:15px;animation:mote-drift var(--mote-dur) ease-in-out var(--mote-delay) infinite alternate;-webkit-mask:var(--glyph) center / contain no-repeat;-webkit-mask:var(--glyph) center / contain no-repeat;mask:var(--glyph) center / contain no-repeat;background-color:#f0c87059;position:absolute}@keyframes mote-drift{to{transform:translate(var(--mote-x), var(--mote-y))}}@media (prefers-reduced-motion:reduce){.stage-idle__mote{animation:none}}.stage-show{justify-content:center;align-items:center;gap:clamp(18px,2.4vw,42px);padding:clamp(16px,2.3vh,30px) clamp(20px,2.7vw,44px);animation:.32s both stage-in;display:flex;position:absolute;inset:0}@keyframes stage-in{0%{opacity:0;transform:translateY(8px)}}.stage-show__text{text-align:center;flex-direction:column;align-items:center;gap:10px;min-width:0;max-width:44ch;display:flex}.stage-show__mark{width:42px;height:42px;color:var(--gold);font-family:var(--font-display);border:1px solid #f0c87080;border-radius:2px;place-items:center;font-size:1.1rem;font-weight:640;display:grid}.stage-show__logo{object-fit:contain;filter:drop-shadow(0 10px 28px #00000075)drop-shadow(0 0 16px #f0c8701f);width:clamp(82px,10vw,124px);height:clamp(82px,10vw,124px)}.stage-show__logo--drawer{width:64px;height:64px}.pageaura-stage-logo{--pageaura-logo-w:clamp(78px, 9vw, 116px);width:var(--pageaura-logo-w);height:calc(var(--pageaura-logo-w) * 946 / 875);filter:drop-shadow(0 10px 24px #0000006b);flex:none;display:block;position:relative;overflow:visible}.pageaura-stage-logo__book{width:100%;height:calc(var(--pageaura-logo-w) * 603 / 875);object-fit:contain;position:absolute;inset:auto 0 0}.pageaura-stage-logo__sparkles{pointer-events:none;width:100%;height:100%;position:absolute;inset:0;overflow:visible}.pageaura-stage-logo__layer{fill:#d6a64a;filter:drop-shadow(0 0 6px #d6a64a6b)}.pageaura-stage-logo__drift{animation:pageaura-sparkle-drift var(--sparkle-duration) linear var(--sparkle-delay) infinite;transform-box:fill-box;transform-origin:50%}.pageaura-stage-logo__twinkle{animation:pageaura-sparkle-twinkle var(--twinkle-duration) ease-in-out infinite;transform-box:fill-box;transform-origin:50%}@keyframes pageaura-sparkle-drift{0%{opacity:0;transform:translateY(0)}12%,86%{opacity:1}to{opacity:0;transform:translateY(calc(var(--sparkle-distance) * -1))}}@keyframes pageaura-sparkle-twinkle{0%,to{opacity:.35;transform:scale(.9)}50%{opacity:1;transform:scale(1.12)}}.stage-model{flex:none;width:clamp(116px,11vw,154px);height:clamp(96px,10vw,128px);display:block;position:relative}.stage-model .stage-show__logo{width:100%;height:100%;position:absolute;inset:0}.stage-model canvas{opacity:0;transition:opacity .45s}.stage-model.is-ready canvas{opacity:1}.stage-show__name{font-family:var(--font-display);margin:0;font-size:clamp(1.3rem,2vw,1.8rem);font-weight:700;line-height:1.08}.stage-show__glyphs{align-items:center;gap:11px;display:flex}.stage-show .tech-glyph{background-color:var(--brand);width:16px;height:16px}.stage-show__caps{color:#f0c870b3;font-family:var(--font-display);letter-spacing:.18em;text-transform:uppercase;font-size:.58rem;font-weight:600}.stage-show__visit{color:var(--void-deep);background:var(--gold);font-family:var(--font-display);letter-spacing:.16em;text-transform:uppercase;border-radius:2px;justify-content:center;align-items:center;gap:6px;margin-top:2px;padding:8px 16px;font-size:.62rem;font-weight:700;text-decoration:none;transition:background-color .2s;display:inline-flex}.stage-show__actions{flex-wrap:wrap;justify-content:center;gap:8px;margin-top:2px;display:flex}.stage-show__visit:hover,.stage-show__visit:focus-visible{background:#ffe7c2}.stage-show__lock{margin-top:2px;position:static}.stage-show--windowed .stage-show__text{text-align:left;align-items:flex-start;max-width:min(34%,360px)}.stage-show--windowed .stage-show__actions{justify-content:flex-start}.stage-show__window{background:var(--void-deep);border:1px solid #f0c8704d;border-radius:3px;flex:none;width:min(54%,560px);position:relative;overflow:hidden;transform:rotate(-1.6deg);box-shadow:0 18px 50px #0000008c,0 0 40px #f0c87012}.stage-show__windowbar{background:#ffffff0a;border-bottom:1px solid #f0c8701f;align-items:center;gap:4px;height:20px;padding:0 9px;display:flex}.stage-show__windowbar i{background:#f0c8704d;border-radius:50%;width:5px;height:5px}.stage-show__window video,.stage-show__window img{aspect-ratio:16/10;object-fit:cover;width:100%;display:block}.stage-show__live{z-index:1;color:var(--void-deep);background:var(--gold);font-family:var(--font-display);letter-spacing:.18em;text-transform:uppercase;border-radius:2px;align-items:center;gap:4px;padding:4px 8px;font-size:.5rem;font-weight:700;display:flex;position:absolute;top:26px;right:10px}.stage-show__live:before{content:"";background:var(--void-deep);border-radius:50%;width:4px;height:4px;animation:1.2s steps(2,end) infinite live-blink}@keyframes live-blink{50%{opacity:.25}}@media (width<=1180px) and (width>=901px){.stage-show--windowed{flex-direction:column;gap:12px}.stage-show--windowed .stage-show__text{text-align:center;align-items:center;max-width:46ch}.stage-show--windowed .stage-show__window{width:min(56%,260px)}.stage-show--windowed .stage-show__mark{display:none}}@media (prefers-reduced-motion:reduce){.stage-show,.stage-show__live:before,.pageaura-stage-logo__drift,.pageaura-stage-logo__twinkle{animation:none}}.capacity-plate{border:1px solid var(--gold-hair);background:linear-gradient(#ffffff06,#fff0 45%),#f0c87005;border-radius:2px;align-items:center;gap:18px;padding:10px 16px;display:flex}.capacity-plate__label{color:var(--ink-low);font-family:var(--font-display);letter-spacing:.22em;text-transform:uppercase;flex:none;font-size:.6rem;font-weight:560}.capacity-plate__list{flex-wrap:wrap;align-items:center;gap:8px 14px;margin:0;padding:0;list-style:none;display:flex}.plate-lang{align-items:center;display:flex}.plate-lang .tech-glyph{width:14px;height:14px;transition:background-color .25s,filter .25s}.plate-lang__chip{color:var(--gold-dim);font-family:var(--font-display);letter-spacing:.18em;text-transform:uppercase;font-size:.6rem;font-weight:640;transition:color .25s,text-shadow .25s}.plate-lang.is-lit .tech-glyph{background-color:var(--brand);filter:drop-shadow(0 0 5px color-mix(in srgb, var(--brand) 55%, transparent))}.plate-lang.is-lit .plate-lang__chip{color:var(--brand);text-shadow:0 0 10px color-mix(in srgb, var(--brand) 45%, transparent)}.projects-stack{gap:10px;display:grid}.projects-stack .panel-cell{cursor:default;padding:0;display:grid}.panel-cell__toggle{min-height:142px;color:inherit;font:inherit;text-align:left;cursor:pointer;background:0 0;border:0;flex-direction:column;justify-content:flex-start;padding:14px 16px;display:flex}.projects-stack .panel-cell__num{font-size:1.9rem}.projects-stack .panel-cell__year{top:calc(12px + 1.9rem)}.projects-stack .panel-cell{--blurb-lines:3}.panel-cell__drawer{grid-template-rows:0fr;transition:grid-template-rows .36s;display:grid}.panel-cell--open .panel-cell__drawer{grid-template-rows:1fr}.panel-cell__drawer-inner{justify-items:start;gap:12px;min-height:0;padding:0 16px;display:grid;overflow:hidden}.panel-cell--open .panel-cell__drawer-inner{padding:4px 16px 16px}.panel-cell--open{border-color:#f0c8708c}.panel-cell--open .panel-cell__num{color:#f0c870eb;text-shadow:0 0 18px #f0c87073}.panel-cell--open .tech-glyph{background-color:var(--brand)}.projects-stack .stage-show__window{width:min(100%,420px);transform:none}@media (prefers-reduced-motion:reduce){.panel-cell__drawer{transition:none}}.portfolio-modal{--void:#1a1820;--void-deep:#100e14;--gold:#f0c870;--gold-deep:#d8a860;--gold-hair:#f0c87029;--gold-dim:#f0c87061;--ink-hi:#f6f0e2;--ink-mid:#cfc6b2;--ink-low:#9a907c;--font-display:"Bricolage Grotesque Variable", "Avenir Next", sans-serif;--font-serif:"Newsreader Variable", Georgia, serif;z-index:30;outline:0;position:fixed;inset:0}.portfolio-modal ::selection{color:var(--void-deep);background:var(--gold)}.portfolio-modal[data-phase=opening],.portfolio-modal[data-phase=closing]{pointer-events:none}.portfolio-modal__site{color:var(--ink-hi);background:var(--void);-webkit-mask-image:linear-gradient(var(--band-angle,135deg), #000 calc(var(--reveal-pos,-120%) - var(--band-feather,6%)), transparent var(--reveal-pos,-120%));-webkit-mask-image:linear-gradient(var(--band-angle,135deg), #000 calc(var(--reveal-pos,-120%) - var(--band-feather,6%)), transparent var(--reveal-pos,-120%));mask-image:linear-gradient(var(--band-angle,135deg), #000 calc(var(--reveal-pos,-120%) - var(--band-feather,6%)), transparent var(--reveal-pos,-120%));grid-template:"header header""panel content"minmax(0,1fr)/auto minmax(0,1fr);display:grid;position:absolute;inset:0}.portfolio-modal[data-phase=open] .portfolio-modal__site{-webkit-mask-image:none;mask-image:none}.portfolio-modal[data-reduced-motion=true] .portfolio-modal__site{opacity:var(--reveal-fade,0);-webkit-mask-image:none;mask-image:none}.portfolio-modal__band{background:linear-gradient(var(--band-angle,135deg), transparent calc(var(--reveal-pos,-120%) - var(--band-half-width,5%) - var(--band-feather,6%)), var(--band-color,#ffe7c2) calc(var(--reveal-pos,-120%) - var(--band-half-width,5%)), var(--band-color,#ffe7c2) calc(var(--reveal-pos,-120%) + var(--band-half-width,5%)), transparent calc(var(--reveal-pos,-120%) + var(--band-half-width,5%) + var(--band-feather,6%)));mix-blend-mode:screen;opacity:var(--band-opacity,.9);pointer-events:none;position:absolute;inset:0}.portfolio-modal[data-phase=open] .portfolio-modal__band,.portfolio-modal[data-reduced-motion=true] .portfolio-modal__band{display:none}.portfolio-modal__backdrop{z-index:0;pointer-events:none;width:100%;height:100%;position:absolute;inset:0}.portfolio-modal__vignette{z-index:0;pointer-events:none;background:radial-gradient(130% 110% at 50% 42%,#0000 52%,#0a080c9e 100%),linear-gradient(#0a080c5c,#0000 18%);position:absolute;inset:0}.site-header{z-index:2;border-bottom:1px solid var(--gold-hair);grid-area:header;justify-content:space-between;align-items:baseline;padding:clamp(18px,3vh,30px) clamp(22px,4vw,56px);display:flex;position:relative}.site-brand{font-family:var(--font-display);letter-spacing:.01em;font-size:1.02rem;font-weight:640}.floor-panel{z-index:2;border-right:1px solid var(--gold-hair);flex-direction:column;grid-area:panel;justify-content:center;gap:6px;padding:clamp(16px,3vh,28px) clamp(14px,2vw,26px);display:flex;position:relative}.floor-panel__button{min-width:clamp(96px,9vw,128px);color:var(--ink-low);font:inherit;text-align:left;cursor:pointer;background:0 0;border:1px solid #0000;border-radius:9px;grid-template-columns:7px auto;place-items:center start;column-gap:12px;padding:13px 16px 12px;transition:border-color .22s,color .22s,background-color .22s;display:grid}.floor-panel__button:hover{border-color:var(--gold-hair);color:var(--ink-mid)}.floor-panel__button.is-active{border-color:var(--gold-dim);color:var(--ink-hi);background:#f0c8700f}.floor-panel__lamp{background:#9a907c59;border-radius:50%;grid-row:span 2;width:7px;height:7px;transition:background-color .22s,box-shadow .22s}.floor-panel__button.is-active .floor-panel__lamp{background:var(--gold);box-shadow:0 0 10px 1px #f0c8708c}.floor-panel__num{font-family:var(--font-display);font-variant-numeric:tabular-nums;font-size:1.06rem;font-weight:620;line-height:1.1}.floor-panel__label{color:inherit;font-family:var(--font-display);letter-spacing:.2em;text-transform:uppercase;opacity:.85;font-size:.66rem;font-weight:500}.site-content{z-index:1;scroll-snap-type:y mandatory;scrollbar-width:thin;scrollbar-color:#f0c8704d transparent;grid-area:content;min-height:0;position:relative;overflow-y:auto}.floor-section{scroll-snap-align:start;scroll-snap-stop:always;min-height:100%;display:grid}.site-content::-webkit-scrollbar{width:8px}.site-content::-webkit-scrollbar-thumb{background:#f0c87040;border-radius:4px}.site-content__inner{align-content:center;gap:clamp(18px,3.2vh,30px);width:100%;max-width:1140px;min-height:100%;margin-inline:auto;padding:clamp(28px,5.5vh,60px) clamp(24px,4.5vw,64px);display:grid}.floor-section[data-floor=projects] .site-content__inner{grid-template-rows:auto minmax(0,1fr);align-content:stretch;max-width:none;padding-inline:clamp(16px,2.6vw,46px)}.floor-indicator{color:var(--ink-low);font-family:var(--font-display);letter-spacing:.24em;text-transform:uppercase;align-items:center;gap:14px;margin:0;font-size:.72rem;font-weight:520;display:flex}.floor-indicator__num{color:var(--gold);font-variant-numeric:tabular-nums}.floor-indicator__rule{background:var(--gold-dim);width:34px;height:1px}.floor{gap:clamp(16px,2.8vh,26px);display:grid}.floor__kicker{color:var(--gold);font-family:var(--font-serif);letter-spacing:.01em;margin:0;font-size:clamp(1.02rem,1.5vw,1.22rem);font-style:italic;font-weight:460}.floor--home{grid-template-columns:minmax(0,1fr) clamp(240px,26vw,350px);grid-template-areas:"kicker portrait""name portrait""lede portrait""links portrait""companies portrait""meta portrait";column-gap:clamp(30px,5vw,80px)}.home-links{grid-area:links;align-items:center;margin:2px 0 0;padding:0;list-style:none;display:flex}.home-links li{align-items:center;display:flex}.home-links li+li:before{content:"|";color:var(--ink-low);opacity:.45;margin:0 18px;font-size:.8rem}.home-links a{color:var(--ink-mid);font-family:var(--font-display);align-items:center;gap:10px;font-size:1.04rem;font-weight:540;text-decoration:none;transition:color .2s;display:inline-flex}.home-links a:hover,.home-links a:focus-visible{color:var(--gold)}.home-links svg{opacity:.9;display:block}.floor--home .floor__kicker{grid-area:kicker}.home-name{font-family:var(--font-display);letter-spacing:-.01em;grid-area:name;margin:0;font-size:clamp(2.2rem,3.8vw,3.3rem);font-weight:700;line-height:1.08}.home-name__accent{color:var(--gold)}.home-lede{max-width:56ch;color:var(--ink-mid);font-family:var(--font-serif);grid-area:lede;margin:4px 0 0;font-size:clamp(1.12rem,1.5vw,1.32rem);font-weight:420;line-height:1.65}.companies{grid-area:companies;gap:10px;margin-top:clamp(8px,2vh,18px);display:grid}.companies__label{color:var(--gold-dim);font-family:var(--font-display);letter-spacing:.22em;text-transform:uppercase;font-size:.66rem;font-weight:560}.companies__list{flex-wrap:wrap;align-items:center;gap:8px 14px;margin:0;padding:0;list-style:none;display:flex}.companies__list li{align-items:center;gap:10px;display:flex}.companies__slash{color:var(--ink-low);font-family:var(--font-display);opacity:.6;margin-right:4px;font-size:.85rem}.companies__chip{border:1px solid var(--gold-dim);width:26px;height:26px;color:var(--gold);font-family:var(--font-display);background:linear-gradient(160deg,#f0c8701f,#f0c87005 65%),#100e1499;border-radius:50%;place-items:center;font-size:.72rem;font-weight:640;display:inline-grid;overflow:hidden}.companies__chip img{object-fit:cover;border-radius:50%;width:100%;height:100%}.companies__wordmark{opacity:.92;filter:brightness(0)invert(96%)sepia(8%);width:auto;height:19px}.companies__name{color:var(--ink-mid);font-family:var(--font-display);font-size:.95rem;font-weight:560}.home-lede em,.contact-line em{color:var(--ink-hi);font-style:italic}.home-meta{color:var(--ink-low);font-family:var(--font-display);letter-spacing:.2em;text-transform:uppercase;grid-area:meta;align-items:center;gap:12px;margin:clamp(8px,2.4vh,22px) 0 0;font-size:.72rem;font-weight:500;line-height:1.75;display:flex}.lantern{border:1px solid var(--gold-dim);background:linear-gradient(160deg,#f0c8701a,#f0c87005 60%),#100e1499;border-radius:6px;flex-shrink:0;place-items:center;width:21px;height:21px;display:inline-grid;box-shadow:inset 0 1px #f0c87024}.lantern__glyph{clip-path:polygon(50% 0,100% 100%,0 100%);background:var(--gold);filter:drop-shadow(0 0 5px #f0c870cc);width:9px;height:8px;animation:3.4s ease-in-out infinite lantern-breathe}@keyframes lantern-breathe{50%{filter:drop-shadow(0 0 1px #f0c8704d);opacity:.78}}.home-portrait{border:1px solid var(--gold-hair);background:#f0c8700a;border-radius:5px;grid-area:portrait;place-self:center end;width:100%;margin:0;padding:10px 10px 12px;transition:transform .32s;transform:rotate(1.6deg)}.home-portrait:hover{transform:rotate(0)}.home-portrait img{filter:sepia(32%)saturate(78%)contrast(104%)brightness(94%);border-radius:3px;width:100%;display:block}.home-portrait figcaption{color:var(--ink-low);font-family:var(--font-serif);text-align:center;margin-top:10px;font-size:.84rem;font-style:italic}.floor--about{grid-template-columns:minmax(0,1.25fr) minmax(0,1fr);align-items:start;gap:clamp(28px,5vw,72px)}.about-bio{gap:18px;display:grid}.about-bio p{color:var(--ink-mid);font-family:var(--font-serif);margin:0;font-size:clamp(1.18rem,1.7vw,1.4rem);font-weight:420;line-height:1.55}.about-bio p:first-child{color:var(--ink-hi)}.about-side{gap:clamp(22px,3.6vh,34px);display:grid}.side-heading{color:var(--gold);font-family:var(--font-display);letter-spacing:.24em;text-transform:uppercase;margin:0 0 12px;font-size:.7rem;font-weight:560}.experience,.capabilities{gap:12px;margin:0;padding:0;list-style:none;display:grid}.experience li{border-bottom:1px solid var(--gold-hair);grid-template-columns:minmax(0,1fr) auto;grid-template-areas:"company period""role role";row-gap:2px;padding-bottom:12px;display:grid}.experience li:last-child{border-bottom:0}.experience__company{font-family:var(--font-display);grid-area:company;font-size:.98rem;font-weight:600}.experience__role{color:var(--ink-mid);font-family:var(--font-serif);grid-area:role;font-size:.95rem;font-style:italic}.experience__period{color:var(--ink-low);font-family:var(--font-display);font-variant-numeric:tabular-nums;letter-spacing:.08em;grid-area:period;font-size:.74rem;font-weight:500}.capabilities li{grid-template-columns:clamp(64px,6vw,84px) minmax(0,1fr);align-items:baseline;column-gap:14px;display:grid}.capabilities__label{color:var(--gold-dim);font-family:var(--font-display);letter-spacing:.18em;text-transform:uppercase;font-size:.66rem;font-weight:560}.capabilities__items{color:var(--ink-mid);font-family:var(--font-display);font-size:.86rem;font-weight:460}.contact-email{color:var(--ink-hi);font-family:var(--font-display);letter-spacing:-.015em;background-image:linear-gradient(var(--gold), var(--gold));background-position:0 100%;background-repeat:no-repeat;background-size:0% 3px;justify-self:start;margin-top:4px;font-size:clamp(1.7rem,5vw,4.2rem);font-weight:700;line-height:1.05;text-decoration:none;transition:background-size .32s}.contact-email:hover,.contact-email:focus-visible{background-size:100% 3px}.contact-line{color:var(--ink-mid);font-family:var(--font-serif);margin:0;font-size:clamp(1.08rem,1.6vw,1.3rem);font-weight:420}.contact-links{gap:26px;margin:clamp(6px,2vh,18px) 0 0;padding:0;list-style:none;display:flex}.contact-links a{color:var(--ink-low);font-family:var(--font-display);letter-spacing:.2em;text-transform:uppercase;font-size:.74rem;font-weight:540;text-decoration:none;transition:color .2s}.contact-links a:hover,.contact-links a:focus-visible{color:var(--gold)}.contact-links a span{color:var(--gold-dim);margin-left:4px}.portfolio-modal :focus-visible{outline:2px solid var(--gold);outline-offset:3px;border-radius:2px}.floor-panel__button:focus-visible{border-radius:9px}@media (prefers-reduced-motion:reduce){.lantern__glyph{animation:none}.portfolio-modal *{transition-duration:.01ms!important}}@media (width<=880px){.portfolio-modal__site{grid-template:"header""content"minmax(0,1fr)"panel"/minmax(0,1fr)}.floor-panel{padding:10px clamp(10px, 3vw, 18px) calc(10px + env(safe-area-inset-bottom));border-top:1px solid var(--gold-hair);border-right:0;flex-direction:row;justify-content:center;gap:4px}.floor-panel__button{flex:1;grid-template-columns:auto;justify-items:center;row-gap:3px;min-width:0;max-width:130px;padding:9px 6px 8px}.floor-panel__lamp{grid-row:auto;width:5px;height:5px}.floor-panel__num{display:none}.floor-panel__label{letter-spacing:.16em;font-size:.6rem}.site-content__inner{align-content:start;padding-top:clamp(22px,4vh,36px)}.floor-section[data-floor=projects] .site-content__inner{grid-template-rows:auto;align-content:start;max-width:1140px;padding-inline:clamp(18px,4vw,28px)}.floor--home{grid-template-columns:minmax(0,1fr);grid-template-areas:"kicker""name""lede""links""companies""portrait""meta"}.home-portrait{justify-self:start;max-width:min(300px,78%);margin-top:8px}.floor--about{grid-template-columns:minmax(0,1fr)}.contact-email{word-break:break-all;font-size:clamp(1.32rem,6.4vw,2.6rem)}}.elevator-experience-shell{background:#11141b;width:100vw;height:100svh;position:relative;overflow:hidden}.lighting-lab{z-index:40;color:#e5edf5;-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);background:#0f172ae0;border:1px solid #94a3b847;border-radius:8px;width:min(380px,100vw - 32px);max-height:calc(100svh - 32px);padding:14px;font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;position:fixed;bottom:16px;left:16px;overflow:auto;box-shadow:0 20px 60px #00000059}.lighting-lab__header{justify-content:space-between;align-items:center;gap:12px;margin-bottom:12px;display:flex}.lighting-lab--collapsed{width:auto;min-width:0}.lighting-lab--collapsed .lighting-lab__header{margin-bottom:0}.lighting-lab__toggle{background:#0206177a;border:1px solid #94a3b847;min-height:30px;padding:0 12px;font-size:.72rem}.lighting-lab__header p{letter-spacing:0;margin:0;font-size:.86rem;font-weight:700}.lighting-lab__header span{color:#94a3b8;margin-top:2px;font-size:.72rem;display:block}.lighting-lab__modes{background:#0206177a;border:1px solid #94a3b838;border-radius:6px;grid-template-columns:repeat(3,minmax(0,1fr));margin-bottom:12px;padding:2px;display:grid}.lighting-lab button,.tuning-field select,.tuning-field input{font:inherit}.lighting-lab button{color:#cbd5e1;cursor:pointer;background:0 0;border:0;border-radius:5px}.lighting-lab button:hover,.lighting-lab button:focus-visible{color:#f8fafc;background:#94a3b829}.lighting-lab__modes button{min-height:28px;font-size:.72rem}.lighting-lab__modes button.is-active{color:#0f172a;background:#e2e8f0}.tuning-grid{gap:10px;display:grid}.tuning-section{background:#082f492e;border:1px solid #67e8f92e;border-radius:7px;gap:10px;margin-top:4px;padding:12px;display:grid}.tuning-section__header{justify-content:space-between;align-items:center;gap:10px;display:flex}.tuning-section__header span{color:#e0f2fe;font-size:.76rem;font-weight:780}.tuning-section__header-actions{gap:6px;display:flex}.tuning-section__header button{background:#082f499e;border:1px solid #67e8f947;min-height:28px;padding:0 10px;font-size:.7rem}.tuning-field{color:#cbd5e1;gap:6px;font-size:.75rem;display:grid}.tuning-field span{justify-content:space-between;align-items:center;gap:10px;display:flex}.tuning-field strong{color:#f8fafc;font-size:.7rem;font-weight:650}.tuning-field select,.tuning-field input[type=color]{color:#f8fafc;background:#02061794;border:1px solid #94a3b847;border-radius:6px;width:100%;min-height:32px}.tuning-field select{padding:0 9px}.tuning-field input[type=color]{padding:3px}.tuning-field input[type=range]{accent-color:#67e8f9;width:100%}.tuning-field--checkbox{grid-template-columns:minmax(0,1fr) auto;align-items:center}.tuning-field--checkbox input{accent-color:#67e8f9;width:18px;height:18px}.lighting-lab__actions{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;margin-top:12px;display:grid}.lighting-lab__actions button{background:#0f172ab8;border:1px solid #94a3b83d;min-height:34px;font-size:.76rem}.camera-tools{border-top:1px solid #94a3b82e;gap:8px;margin-top:12px;padding-top:12px;display:grid}.shot-editor{background:#02061742;border:1px solid #94a3b82e;border-radius:6px;gap:10px;padding:10px;display:grid}.shot-editor__group{gap:6px;display:grid}.shot-editor__group>span{color:#cbd5e1;font-size:.72rem}.shot-editor__row{grid-template-columns:repeat(3,minmax(0,1fr));gap:7px;display:grid}.shot-editor__row--single{grid-template-columns:minmax(0,1fr)}.shot-editor label{gap:4px;display:grid}.shot-editor label span{color:#94a3b8;font-size:.68rem;font-weight:700}.shot-editor input{box-sizing:border-box;color:#f8fafc;background:#02061794;border:1px solid #94a3b847;border-radius:5px;width:100%;min-width:0;padding:7px 8px;font-size:.76rem}.camera-tools textarea{resize:vertical;box-sizing:border-box;color:#dff7ff;background:#020617ad;border:1px solid #94a3b847;border-radius:6px;width:100%;min-height:118px;padding:10px;font:.72rem/1.45 ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace}.camera-tools__actions{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;display:grid}.camera-tools__actions button{background:#082f499e;border:1px solid #67e8f952;min-height:34px;font-size:.76rem}@media (width<=720px){.lighting-lab{width:auto;max-height:42svh;bottom:12px;left:12px;right:12px}}
