/* Progressive motion: content remains visible without JavaScript. */
.motion-reveal{transition:opacity .65s ease,transform .65s cubic-bezier(.2,.7,.2,1)}
.motion-reveal.motion-pending{opacity:0;transform:translateY(18px)}
.motion-reveal:focus-within{opacity:1;transform:none}
.terminal-character{opacity:0;animation:terminal-character .01s linear forwards;animation-delay:var(--character-delay)}
.terminal-typing::after{content:'▌';color:var(--accent);animation:terminal-cursor .55s steps(2,end) 3;margin-left:3px}
@keyframes terminal-character{to{opacity:1}}
@keyframes terminal-cursor{50%{opacity:0}}
.case-media figure,.case-gallery figure{position:relative;overflow:hidden}
.media-scan.motion-visible::after{content:'';position:absolute;pointer-events:none;inset:0 0 auto;height:2px;background:linear-gradient(90deg,transparent,#d5ed9680,transparent);box-shadow:0 0 18px #d5ed9638;animation:terminal-scan 1.1s ease-out forwards}
@keyframes terminal-scan{from{top:0;opacity:0}15%{opacity:.8}to{top:95%;opacity:0}}
.case-body li{transition:color .2s,text-shadow .2s}
.case-body li:hover{color:var(--text);text-shadow:0 0 14px #d5ed9633}
.case-footer button,.case-link{background-image:linear-gradient(var(--accent),var(--accent));background-size:0 1px;background-position:left bottom;background-repeat:no-repeat;transition:background-size .25s,color .25s}
.case-footer button:hover,.case-footer button:focus-visible,.case-link:hover,.case-link:focus-visible{background-size:100% 1px;color:var(--accent)}
.dialog-hero{position:relative;isolation:isolate}
.dialog-hero::before{content:'';position:absolute;inset:0;z-index:-1;pointer-events:none;opacity:.18;background:repeating-linear-gradient(0deg,transparent 0 3px,#d5ed9615 3px 4px)}
.reading-progress{position:fixed;top:0;left:0;width:100%;height:2px;background:var(--accent);transform:scaleX(0);transform-origin:left;z-index:100;pointer-events:none;box-shadow:0 0 8px #d5ed9644}
.dialog-top{position:sticky;top:0}
.dialog-top .reading-progress{position:absolute;top:auto;bottom:0}
@media(prefers-reduced-motion:reduce){.motion-reveal.motion-pending,.terminal-character{opacity:1;transform:none}.terminal-typing::after,.media-scan::after{display:none}.motion-reveal{transition:none}html{scroll-behavior:auto}}
