/* Small, visible movements. JS pauses offscreen and hidden-tab artwork. */
.voidex-cover .v-star{left:24px;top:auto;bottom:128px;font-size:85px;line-height:1;z-index:2;pointer-events:none}
.voidex-cover .orbit-dot{position:absolute;right:25px;top:68px;width:7px;height:7px;border-radius:50%;background:#26331a}
.voidex-cover .voidex-orbit{transform:none;border-color:#27381d38}
.voidex-cover .v-glyph{letter-spacing:-20px;transform:rotate(-9deg)}
.voidex-cover .cover-footer{position:relative;z-index:3}
.voidex-cover .cover-eyebrow{position:relative;z-index:3}
.motion-active .hero-asterisk{animation:star-drift 8s ease-in-out infinite}
.motion-active .v-star{animation:project-star 7s ease-in-out infinite}
.motion-active .orbit-dot{animation:orbit-breathe 4s ease-in-out infinite}
.motion-active .record{animation:record-turn 15s linear infinite}
.record::after{content:'';position:absolute;width:7px;height:7px;border-radius:50%;background:#c7e28a;top:25px;left:50%;box-shadow:0 0 0 5px #c7e28a16}
.equalizer{position:absolute;right:27px;bottom:25px;display:flex;gap:5px;align-items:center;height:43px}
.equalizer i{display:block;width:5px;height:31px;border-radius:4px;background:#453b2d;transform:scaleY(.45);transform-origin:center}
.motion-active .equalizer i{animation:equalizer-beat 1.25s ease-in-out infinite}
.equalizer i:nth-child(2){animation-delay:-.45s;height:41px}.equalizer i:nth-child(3){animation-delay:-.8s;height:28px}.equalizer i:nth-child(4){animation-delay:-.2s;height:39px}.equalizer i:nth-child(5){animation-delay:-.65s;height:22px}
.motion-active .record-star{animation:record-star 7s ease-in-out infinite}
.document-shape::after{content:'';position:absolute;left:10px;right:10px;height:2px;top:25px;background:var(--accent);box-shadow:0 0 12px #c7e28a33;opacity:0}
.motion-active .document-shape::after{animation:scan-pass 3.6s ease-in-out infinite}
.motion-active .transfer-arrow{animation:data-transfer 3.6s ease-in-out infinite}
.motion-active .sheet-shape{animation:sheet-arrive 3.6s ease-in-out infinite}
.motion-active .comparison-row.mismatch{animation:comparison-mark 4s ease-in-out infinite}
.motion-active .comparison-row:not(.mismatch) b{animation:check-arrive 4s ease-in-out infinite}
.motion-active .comparison-row:nth-child(3) b{animation-delay:-1.6s}
@keyframes star-drift{0%,100%{transform:rotate(-10deg) translateY(0)}50%{transform:rotate(-4deg) translateY(-7px)}}
@keyframes project-star{0%,100%{transform:rotate(-8deg) translateY(0)}50%{transform:rotate(9deg) translateY(-7px)}}
@keyframes orbit-breathe{0%,100%{transform:scale(1);opacity:.55}50%{transform:scale(1.22);opacity:1}}
@keyframes record-turn{to{transform:rotate(360deg)}}
@keyframes equalizer-beat{0%,100%{transform:scaleY(.35)}50%{transform:scaleY(1)}}
@keyframes record-star{0%,100%{transform:rotate(10deg)}50%{transform:rotate(-6deg)}}
@keyframes scan-pass{0%,10%,90%,100%{transform:translateY(0);opacity:0}20%{opacity:.85}70%{transform:translateY(66px);opacity:.85}80%{transform:translateY(66px);opacity:0}}
@keyframes data-transfer{0%,30%,100%{transform:translate(0,0);opacity:.7}55%{transform:translate(5px,-5px);opacity:1}}
@keyframes sheet-arrive{0%,35%,100%{transform:rotate(8deg) translateY(0)}65%{transform:rotate(5deg) translateY(-4px)}}
@keyframes comparison-mark{0%,100%{border-color:var(--line)}45%{border-color:#c88b76;background:#bc796d12}}
@keyframes check-arrive{0%,100%{transform:scale(1)}40%{transform:scale(1.17)}}
html[data-motion-paused] .motion-active *{animation-play-state:paused!important}
/* Avoid squeezing the first screen and keep long Russian text legible. */
@media(max-width:1100px){.voidex-cover .v-star{left:18px;bottom:120px;font-size:76px}}
@media(max-width:780px){.voidex-cover .v-star{left:22px;bottom:105px;font-size:68px}.voidex-cover .v-glyph{font-size:222px;letter-spacing:-17px}.equalizer{right:22px;bottom:22px}.portrait-card img{border-radius:3px}.hero-description,.project-description{font-size:14px;line-height:1.75}.project-bullets li{font-size:12px}.section-intro{font-size:13px}.hero .eyebrow{max-width:100%;line-height:1.8}.case-dialog{width:min(640px,calc(100% - 24px));max-height:88dvh}.project-actions{flex-wrap:wrap;row-gap:16px}.flowtone-copy .project-actions{row-gap:18px}.feature-story .project-actions .text-link{font-size:12px}.project-kicker{line-height:1.7}.portrait-note{line-height:1.3}.site-nav a{min-height:44px;display:inline-flex;align-items:center}.card-bottom a,.card-bottom button{min-height:44px}.hero-actions .text-link{min-height:44px}.dialog-close{min-width:44px;min-height:44px}}
@media(max-width:440px){.hero h1{font-size:clamp(46px,13.5vw,54px)}.hero .eyebrow{letter-spacing:.55px;font-size:8px;gap:7px}.hero-actions{flex-wrap:wrap;gap:12px 23px}.brand{font-size:11px}.site-header{column-gap:8px}.header-actions{gap:10px}.hero-visual{margin-top:7px}.voidex-cover .v-star{left:18px;bottom:101px;font-size:62px}.voidex-cover .v-glyph{font-size:205px}.voidex-cover .cover-footer small{font-size:9px}.voidex-cover .cover-eyebrow{font-size:8px}.equalizer{right:20px;bottom:20px}.record-caption{max-width:185px;line-height:1.7}.project-card h3{font-size:24px;overflow-wrap:normal}.card-bottom{gap:12px}.contact-section h2{font-size:clamp(35px,10.6vw,43px)}.about-section h2{font-size:clamp(34px,10vw,38px)}}
@media(hover:hover) and (pointer:fine){.flowtone-project:hover .record{animation-duration:7s}.motion-active .v-star:hover{animation-duration:3s}}
@media(prefers-reduced-motion:reduce){.motion-active *,.motion-active *::before,.motion-active *::after{animation:none!important}.record{transform:none!important}.equalizer i{transform:scaleY(.65)}.document-shape::after{display:none}}
