/* Живые детали: появление, глубина и свет без резких вспышек. */
@media(prefers-reduced-motion:no-preference){
.motion-arrive{animation:portfolio-arrive .75s cubic-bezier(.2,.7,.25,1) both;animation-delay:var(--motion-delay,0ms)}
.project-visual.real-site-preview{transform:perspective(1000px) rotateX(var(--tilt-x,0deg)) rotateY(var(--tilt-y,0deg));transition:transform .25s ease,box-shadow .3s,border-color .3s;transform-style:preserve-3d}
.project-visual.real-site-preview.is-tilting{transition:transform .08s linear,box-shadow .3s;box-shadow:0 22px 45px #0004;border-color:#91ad7d}
.project-visual.real-site-preview:after{content:'';position:absolute;inset:0;pointer-events:none;z-index:2;background:radial-gradient(circle at var(--shine-x,50%) var(--shine-y,50%),#ddffe32b,transparent 48%);opacity:0;transition:opacity .3s}
.project-visual.real-site-preview.is-tilting:after{opacity:1}
.featured-stage{transition:box-shadow .4s,border-color .4s}.featured-stage:hover{box-shadow:0 0 0 1px #9ac47935,0 18px 60px #0003;border-color:#7e9c6f}
.hero.is-motion-visible .portrait-sticker{animation:portfolio-sticker-float 7s ease-in-out infinite}.hero.is-motion-visible .portrait-social{animation:portfolio-sticker-float 8s -3s ease-in-out infinite}.hero.is-motion-visible .portrait-satellite{animation:portfolio-satellite-pulse 5s ease-in-out infinite}
.hero:not(.is-motion-visible) .portrait-sticker,.hero:not(.is-motion-visible) .portrait-social,.hero:not(.is-motion-visible) .portrait-satellite{animation-play-state:paused}
.hero-layout h1 em{position:relative}.hero-layout h1 em:after{content:'';position:absolute;left:0;right:0;bottom:-8px;height:2px;background:linear-gradient(90deg,transparent,#c3ed77,#8ed6dd,transparent);transform:scaleX(0);transform-origin:left;animation:portfolio-line-in 1.2s .65s ease forwards}
.button.primary{position:relative;overflow:hidden;isolation:isolate;transition:box-shadow .25s,filter .25s,translate .25s}.button.primary:hover{box-shadow:0 7px 25px #a3d67a25;translate:0 -2px}.button.primary:active{translate:0 0}
.button.primary:after{content:'';position:absolute;inset:-80% -50%;pointer-events:none;z-index:-1;background:linear-gradient(115deg,transparent 35%,#ffffff65 50%,transparent 65%);transform:translateX(-85%)}.button.primary:hover:after{animation:portfolio-button-sweep .65s ease both}
.project-code[open]>.project-code-body{animation:portfolio-code-open .35s ease both}.project-code[open] .code-line{animation:portfolio-code-line .4s ease both}.project-code[open] .code-line:nth-child(2n){animation-delay:30ms}.project-code[open] .code-line:nth-child(3n){animation-delay:60ms}.project-code[open] .code-line:nth-child(4n){animation-delay:90ms}
.integration-grid article,.offer-card{transition:translate .3s,border-color .3s,box-shadow .3s}.integration-grid article:hover,.offer-card:hover{translate:0 -5px;border-color:#83a76b;box-shadow:0 15px 35px #0002}
.portfolio-ripple{position:absolute;pointer-events:none;border-radius:50%;background:currentColor;opacity:0;transform:translate(-50%,-50%);width:12px;height:12px;animation:portfolio-ripple .6s ease-out both}
.portfolio-paused *{animation-play-state:paused!important}
}
@keyframes portfolio-arrive{from{opacity:.35;transform:translateY(22px)}to{opacity:1;transform:translateY(0)}}
@keyframes portfolio-sticker-float{0%,100%{translate:0 0}50%{translate:0 -7px}}
@keyframes portfolio-satellite-pulse{0%,100%{filter:drop-shadow(0 0 0 #c3ed7700)}50%{filter:drop-shadow(0 0 12px #c3ed7733)}}
@keyframes portfolio-line-in{to{transform:scaleX(1)}}
@keyframes portfolio-button-sweep{to{transform:translateX(85%)}}
@keyframes portfolio-code-open{from{opacity:.35;transform:translateY(-7px)}to{opacity:1;transform:translateY(0)}}
@keyframes portfolio-code-line{from{opacity:.4;translate:5px 0}to{opacity:1;translate:0 0}}
@keyframes portfolio-ripple{0%{opacity:.22;scale:1}100%{opacity:0;scale:22}}
@media(hover:none){.project-visual.real-site-preview{transform:none!important}.project-visual.real-site-preview:after{display:none}}
@media(prefers-reduced-motion:reduce){.motion-arrive,.project-code[open] .code-line{animation:none!important}.portfolio-ripple{display:none}.project-visual.real-site-preview{transform:none!important}}
