/* Motion language: restrained CRT surfaces, text settling and crisp plates. */
:root{--signal:#ff8050;--carbon:#1d1d1b;--signal-dim:#9b694e}
.boot-screen{display:none;position:fixed;inset:0;z-index:90;background:var(--carbon);color:#d6d5cd;padding:36px 4%;font:10px/1.6 var(--mono);letter-spacing:1.6px;isolation:isolate}
.boot-pending .boot-screen{display:flex;flex-direction:column;justify-content:space-between}
.boot-pending main,.boot-pending .rail{opacity:0;visibility:hidden}
.boot-screen:before{content:'';position:absolute;inset:0;pointer-events:none;z-index:-1;background:repeating-linear-gradient(180deg,transparent 0 3px,#ffffff05 3px 4px)}
.boot-screen:after{content:'';position:absolute;left:0;right:0;top:0;height:15%;pointer-events:none;background:linear-gradient(180deg,transparent,#ffffff04,transparent);animation:boot-scan 4s linear infinite}
.boot-top,.boot-bottom{display:flex;align-items:center;justify-content:space-between;gap:20px;color:#8d8e84;border-top:1px solid #ffffff18;padding-top:15px}
.boot-top>span:last-child{color:var(--signal);font:18px Georgia,serif;letter-spacing:4px}.boot-center{width:min(630px,100%);margin:auto;position:relative}.boot-kicker{font-size:8px;letter-spacing:3px;color:#898a80;margin-bottom:24px}.boot-brand{font:800 clamp(46px,9vw,112px)/1.1 var(--sans);letter-spacing:-5px;color:#d8d7cd}.boot-brand span{font-weight:400;color:var(--signal);animation:boot-caret 1.5s steps(2,end) infinite}.boot-meta{display:flex;align-items:center;justify-content:space-between;gap:20px;font-size:10px;color:#91968b;margin-top:33px;letter-spacing:.8px}.boot-meta b{font-weight:500;color:var(--signal)}.boot-progress{height:2px;background:#3a3a34;margin-top:14px;--progress:0%}.boot-progress:after{content:'';display:block;height:100%;width:var(--progress);background:var(--signal);transition:width .25s ease-out}.boot-bottom>span{font-size:8px}.boot-bottom button{color:#c6c5ba;font:10px var(--mono);letter-spacing:.5px;padding:15px 0}.boot-bottom .bi{margin-left:12px}
@keyframes boot-scan{to{transform:translateY(600%)}}
@keyframes boot-caret{0%,70%{opacity:1}71%,100%{opacity:.35}}
.site-ready .hero-copy{animation:crt-reveal .85s cubic-bezier(.18,.8,.2,1) both}
.site-ready .topline,.site-ready .hero-bottom{animation:panel-arrive .8s .08s both}
@keyframes crt-reveal{0%{opacity:0;filter:blur(7px);clip-path:inset(48% 0)}45%{opacity:1;filter:blur(1px);clip-path:inset(6% 0)}100%{opacity:1;filter:none;clip-path:inset(0)}}
@keyframes panel-arrive{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}
.hero:after{content:'';position:absolute;inset:0;z-index:7;pointer-events:none;background:repeating-linear-gradient(180deg,transparent 0 3px,#00000009 3px 4px);opacity:.3}
.hero-backdrop{background:#040911 url('assets/art/infinity-fallback.jpg') center/cover no-repeat;opacity:1}.domain-caption{opacity:.42;transform:none;pointer-events:none}.space-action:disabled{opacity:.42;cursor:default}.space-action .bi{transition:color .3s,transform .4s}.space-action:not(:disabled):hover>.bi{transform:scale(1.13);color:#cdeffc}.scene-controls button{min-height:40px}.scene-controls button[aria-pressed=false]#fx-toggle{color:#89959e}.effects-full .hero-shade{background:linear-gradient(90deg,#03080ed9,transparent 72%),linear-gradient(0deg,#070b11 0%,transparent 25%,transparent 88%,#070b1170)}
.js-motion .reveal:not(.revealed){opacity:0;transform:translateY(22px);filter:blur(2px)}.reveal.revealed{filter:none}.section-heading .eyebrow,.project-type,.about-heading .eyebrow{min-height:18px}.project-banner{transition:filter .5s}.project-banner:hover{filter:brightness(1.06)}.project-actions .text-link .bi{transition:transform .25s}.project-actions .text-link:hover .bi{transform:translate(2px,-2px)}
.about{background:#1c2021;color:#e4e4db;padding:85px 9% 95px;border-top:1px solid #ffffff0d;position:relative}.about-heading{display:flex;align-items:center;justify-content:space-between;gap:24px;padding-bottom:24px;border-bottom:1px solid #ffffff25}.about-heading .eyebrow{color:#99a49e}.about-heading h2{font-size:22px;letter-spacing:-.5px}.about-heading h2 span{font:24px Georgia,serif;letter-spacing:2px;margin-left:22px;color:#ca8b6b}.about-grid{display:grid;grid-template-columns:.85fr 1.15fr;gap:9%;align-items:center;margin-top:45px}.profile-photo{width:100%;max-width:400px}.photo-window{aspect-ratio:3/4;background:#151919;border:1px solid #5b635b;position:relative;overflow:hidden}.photo-window:before,.photo-window:after{content:'';position:absolute;left:12px;right:12px;height:12px;border-left:1px solid #b4bdad;border-right:1px solid #b4bdad;pointer-events:none;z-index:2}.photo-window:before{top:12px;border-top:1px solid #b4bdad}.photo-window:after{bottom:12px;border-bottom:1px solid #b4bdad}.photo-window img{width:100%;height:100%;object-fit:cover;position:absolute;inset:0;filter:saturate(.85);transition:filter .7s,transform 1s}.photo-window:hover img{filter:saturate(1);transform:scale(1.02)}.photo-empty{position:absolute;inset:0;display:flex;flex-direction:column;justify-content:center;align-items:center;color:#bbc1b6}.photo-empty .bi{font-size:50px;font-weight:300;color:#69766c;margin-bottom:23px}.photo-empty>span{font-size:16px;letter-spacing:.5px}.photo-empty>small{font:8px var(--mono);letter-spacing:2px;color:#7e8b80;margin-top:15px}.profile-photo figcaption{display:flex;justify-content:space-between;gap:15px;font:8px var(--mono);letter-spacing:1.5px;color:#98a493;margin-top:13px}.profile-role{font:10px var(--mono);letter-spacing:1.5px;color:#cf9678;margin-bottom:19px}.profile-copy h3{font:500 clamp(38px,4.5vw,69px)/1.2 var(--sans);letter-spacing:-2.5px;margin-bottom:30px;overflow-wrap:anywhere}.profile-bio p{font-size:15px;line-height:1.95;color:#b6c0b8;max-width:550px;margin-bottom:17px;white-space:pre-line}.profile-facts{margin-top:28px;max-width:550px}.profile-facts>div{display:grid;grid-template-columns:120px 1fr;gap:18px;padding:12px 0;border-top:1px solid #ffffff20}.profile-facts dt{font:10px/1.8 var(--mono);color:#9aa899}.profile-facts dd{font-size:12px;line-height:1.7;color:#d2d9cd;overflow-wrap:anywhere}.profile-work-link{display:inline-flex;gap:55px;align-items:center;border-bottom:1px solid #899683;padding:12px 0;margin-top:22px;font-size:12px;color:#d3ddcc}.profile-work-link .bi{color:#c59172;transition:transform .3s}.profile-work-link:hover .bi{transform:translate(3px,-3px)}.approach{border-top:1px solid #ffffff0a}
@media(max-width:1100px){.about{padding:70px 7%}.about-grid{gap:7%}.profile-copy h3{font-size:45px}.profile-bio p{font-size:14px}.profile-role{font-size:9px}.profile-facts>div{grid-template-columns:90px 1fr}}
@media(max-width:760px){html{scroll-padding-top:76px}.boot-screen{padding:24px}.boot-brand{letter-spacing:-3px;font-size:58px}.boot-kicker{font-size:7px}.boot-meta{font-size:9px;gap:10px;letter-spacing:0}.boot-top{font-size:8px}.boot-bottom>span{font-size:7px;max-width:130px}.boot-bottom button{font-size:9px;min-height:44px}.boot-bottom .bi{margin-left:7px}.domain-caption{right:24px;opacity:.3}.domain-caption strong{font-size:33px}.effects-full .hero-shade{background:linear-gradient(90deg,#030910bb,transparent),linear-gradient(0deg,#070b11,transparent 25%)}.about{padding:55px 24px 65px}.about-heading{gap:15px;padding-bottom:20px}.about-heading .eyebrow{font-size:8px;letter-spacing:1px}.about-heading h2{font-size:18px;white-space:nowrap}.about-heading h2 span{font-size:20px;margin-left:12px}.about-grid{display:flex;flex-direction:column;align-items:stretch;gap:35px;margin-top:28px}.profile-photo{max-width:400px;width:100%;align-self:center}.profile-copy h3{font-size:43px;letter-spacing:-1.5px;margin-bottom:23px}.profile-bio p{font-size:14px;line-height:1.9}.profile-role{font-size:10px;margin-bottom:17px}.profile-facts>div{grid-template-columns:100px 1fr}.profile-work-link{min-height:44px;font-size:13px}.profile-photo figcaption{font-size:7px}.photo-empty .bi{font-size:43px}.about .profile-photo{max-width:350px}}
.reduced-motion .hero-copy,.reduced-motion .topline,.reduced-motion .hero-bottom{animation:none!important;filter:none!important;clip-path:none!important}.reduced-motion .boot-screen:after,.reduced-motion .boot-brand span{animation:none!important}.reduced-motion .reveal{filter:none!important}
@media(prefers-reduced-motion:reduce){.boot-screen:after,.boot-brand span{animation:none}.boot-progress:after{transition:none}}
