/* Atmospheric layers remain static; animation is limited to transform/opacity
   and small vector strokes, paused whenever their screen is out of view. */
.screen:not(.cover-screen):not(.manifesto-screen){background:#071218;isolation:isolate}
.screen:not(.cover-screen):not(.manifesto-screen)::before{content:'';position:absolute;inset:0;z-index:-1;pointer-events:none;background:radial-gradient(ellipse at 90% 25%,color-mix(in srgb,var(--screen-color) 9%,transparent),transparent 60%),linear-gradient(90deg,transparent 49.95%,#b1dbe607 50%,transparent 50.05%)}
.screen:not(.cover-screen):not(.manifesto-screen)::after{content:'';position:absolute;z-index:-1;pointer-events:none;width:48vw;height:48vw;right:-18vw;top:-15vw;border:1px solid color-mix(in srgb,var(--screen-color) 13%,transparent);border-radius:50%;box-shadow:0 0 0 65px #9acbd403,0 0 0 130px #9acbd402}
.screen-inner{position:relative;z-index:1}
.screen-watermark{position:absolute;right:4vw;bottom:35px;font:clamp(110px,22vw,350px)/1 Instrument,sans-serif;letter-spacing:-.08em;color:transparent;-webkit-text-stroke:1px color-mix(in srgb,var(--screen-color) 10%,transparent);z-index:0;pointer-events:none;user-select:none}
.has-entered .motion-entry{animation:content-arrival .8s cubic-bezier(.16,1,.3,1) both;animation-delay:var(--entry-delay,0ms)}
@keyframes content-arrival{from{opacity:.25;transform:translate3d(36px,14px,0)}to{opacity:1;transform:translate3d(0,0,0)}}
.ray-pulse{stroke-width:2.4;stroke-dasharray:.025 .975;stroke-linecap:round;animation:light-travel 6s linear infinite;animation-delay:var(--pulse-delay);animation-play-state:paused;opacity:.7}
.scene-visible .ray-pulse{animation-play-state:running}
@keyframes light-travel{from{stroke-dashoffset:1}to{stroke-dashoffset:0}}
.light-point{filter:drop-shadow(0 0 5px #c9ffec);animation:source-glow 4s ease-in-out infinite;animation-play-state:paused}
.scene-visible .light-point{animation-play-state:running}
@keyframes source-glow{0%,100%{opacity:.7}50%{opacity:1}}
.is-visible .web-art{animation:browser-float 7s ease-in-out infinite}
@keyframes browser-float{0%,100%{transform:translate3d(0,0,0) rotate(-3deg)}50%{transform:translate3d(0,-10px,0) rotate(-1deg)}}
.art-orbit::after{content:'';position:absolute;inset:-16px;border-radius:50%;border:1px dashed #ef7a9f48;animation:orbit-turn 32s linear infinite;animation-play-state:paused}
.is-visible .art-orbit::after{animation-play-state:running}
@keyframes orbit-turn{to{transform:rotate(360deg)}}
.search-result{overflow:hidden}.search-result::after{content:'';position:absolute;inset:0;pointer-events:none;background:linear-gradient(100deg,transparent 30%,#8cccff0c 50%,transparent 70%);transform:translateX(-120%);animation:search-scan 6s ease-in-out infinite;animation-play-state:paused}
.is-visible .search-result::after{animation-play-state:running}
@keyframes search-scan{0%,25%{transform:translateX(-120%)}65%,100%{transform:translateX(120%)}}
.direct-line i{animation:direct-signal 3s cubic-bezier(.45,0,.3,1) infinite;animation-play-state:paused}
.is-visible .direct-line i{animation-play-state:running}
@keyframes direct-signal{0%{right:100%;opacity:0}15%{opacity:1}85%{opacity:1}100%{right:0;opacity:0}}
.heartbeat i{transform-origin:bottom;animation:care-wave 3.4s ease-in-out infinite;animation-play-state:paused}.heartbeat i:nth-child(3n){animation-delay:-.7s}.heartbeat i:nth-child(3n+1){animation-delay:-1.5s}.heartbeat i:nth-child(4n){animation-delay:-2.2s}.is-visible .heartbeat i{animation-play-state:running}
@keyframes care-wave{0%,100%{transform:scaleY(.78);opacity:.65}50%{transform:scaleY(1);opacity:1}}
.about-mark::after{border-style:dashed;animation:orbit-turn 60s linear infinite;animation-play-state:paused}.is-visible .about-mark::after{animation-play-state:running}
.project-image{position:relative}.project-image::after{content:'ESPLORA ↗';position:absolute;right:16px;bottom:16px;background:#061219e8;border:1px solid #b1dbe642;padding:10px 15px;font:10px Plex,monospace;letter-spacing:.1em;opacity:0;transform:translateY(8px);transition:opacity .25s,transform .25s}.project:first-child:hover .project-image::after,.project:first-child:focus-within .project-image::after{opacity:1;transform:translateY(0)}
.button,.text-link,.screen-stepper button{transition:background .25s,color .25s,border-color .25s,box-shadow .25s}.button:hover{box-shadow:0 0 28px #a6eaf315}.button .arrow,.text-link>span{transition:transform .25s}.button:hover .arrow,.text-link:hover>span{transform:translate(3px,-2px)}
.screen-dots a span{transition:background .35s,transform .35s,box-shadow .35s}.screen-dots a[aria-current=step] span{box-shadow:0 0 12px #65dbe060}
.field input,.field textarea{transition:border-color .25s,background .25s}.field input:focus,.field textarea:focus{border-color:var(--cyan);background:linear-gradient(0deg,#65dbe008,transparent)}
@media(max-width:650px){.screen-watermark{font-size:50vw;bottom:55px;right:20px;opacity:.7}.screen:not(.cover-screen):not(.manifesto-screen)::after{width:85vw;height:85vw;top:-10vw;right:-45vw}.has-entered .motion-entry{animation-duration:.6s}.ray-pulse{stroke-width:1.5}}
@media(prefers-reduced-motion:reduce){.has-entered .motion-entry{opacity:1;transform:none;animation:none}.ray-pulse{display:none}.screen *,.screen *::before,.screen *::after,.optical-scene *{animation:none!important;transition:none!important}}
