/* Mechanical aperture: reversible scroll choreography, no scroll interception. */
.scene-transition{height:clamp(260px,40vh,410px);overflow:hidden;background:#080a0d;perspective:none}
.aperture{position:absolute;inset:0;overflow:hidden;background:radial-gradient(ellipse at 50% 50%,#a91e3540,transparent 65%)}
.aperture:before{content:'';position:absolute;inset:-40%;background:repeating-linear-gradient(90deg,transparent 0 79px,#f3354517 80px 81px);transform:perspective(500px) rotateX(55deg) translateY(var(--travel,0px));mask-image:linear-gradient(transparent,#000,transparent)}
.aperture-word{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;text-align:center;padding:0 24px;font:500 clamp(25px,5.1vw,76px)/1.05 Outfit,sans-serif;letter-spacing:.015em;color:#dce0e9;transform:scale(calc(.85 + var(--open,0)*.15));opacity:calc(.2 + var(--open,0)*.8)}
.shutter{position:absolute;left:-4%;width:108%;height:51%;background:linear-gradient(160deg,#1b202a,#080a0d 75%);border:1px solid #58607144;box-shadow:0 0 40px #000;will-change:transform}
.shutter-top{top:0;transform:translate3d(calc(var(--open,0)*-8%),calc(var(--open,0)*-100%),0) skewY(calc(var(--open,0)*-3deg));border-bottom-color:#f33545}
.shutter-bottom{bottom:0;transform:translate3d(calc(var(--open,0)*8%),calc(var(--open,0)*100%),0) skewY(calc(var(--open,0)*-3deg));border-top-color:#f33545}
.scanline{position:absolute;left:0;top:50%;width:100%;height:2px;background:linear-gradient(90deg,transparent,#f33545,#ffc2cb,#f33545,transparent);box-shadow:0 0 30px #f33545;opacity:calc(1 - var(--open,0));transform:scaleX(calc(.4 + var(--open,0)*.6))}
.scene-transition .chapter{position:absolute;bottom:22px;left:5%;right:auto;color:#8c95a5;font:9px 'IBM Plex Mono',monospace;letter-spacing:.18em}
.kinetic-heading{--reveal:1;clip-path:inset(0 0 calc((1 - var(--reveal))*100%) 0);filter:blur(calc((1 - var(--reveal))*3px));translate:0 calc((1 - var(--reveal))*40px);transition:none}
.project.cinema-panel{--reveal:1;transform:perspective(1400px) translate3d(calc(var(--side,1)*(1 - var(--reveal))*65px),calc((1 - var(--reveal))*100px),0) rotateY(calc(var(--side,1)*(1 - var(--reveal))*-12deg)) rotateX(calc((1 - var(--reveal))*8deg));transform-origin:50% 100%}
.project-screen{clip-path:inset(0 calc((1 - var(--reveal,1))*35%) 0 0 round 8px)}
.project:hover .project-go{transform:rotate(45deg);background:#f33545;color:#fff;transition:transform .4s,background .4s}
.contact-lines{animation-duration:18s}
@media(max-width:700px){.scene-transition{height:220px}.aperture-word{font-size:30px}.project.cinema-panel{transform:translate3d(0,calc((1 - var(--reveal))*45px),0)}.kinetic-heading{filter:none;translate:0 calc((1 - var(--reveal))*20px)}}
@media(prefers-reduced-motion:reduce){.scene-transition{height:130px}.shutter,.scanline{display:none}.kinetic-heading,.project.cinema-panel,.project-screen{transform:none!important;translate:none!important;clip-path:none!important;filter:none!important}.aperture-word{opacity:1;transform:none}}
html.motion-paused .shutter,html.motion-paused .scanline{display:none}html.motion-paused .kinetic-heading,html.motion-paused .project-screen{translate:none;filter:none;clip-path:none}html.motion-paused .aperture-word{opacity:1;transform:none}
