/* Human imagery and finite motion. Identity assets retain their original geometry. */
figure{margin:0}
.hero{grid-template-columns:1.1fr 1fr;gap:64px;padding-block:64px 80px}
.hero-copy{position:relative;z-index:2}
.hero-visual{margin:0;min-height:550px;background:var(--v-ice);isolation:isolate}
.hero-photo-frame{position:absolute;inset:0;overflow:hidden}
.hero-photo-frame picture{display:block;width:100%;height:100%}
.hero-photo{width:100%;height:100%;max-width:none;object-fit:cover;object-position:50% 35%;transform:translate3d(var(--photo-x,0px),calc(var(--photo-y,0px) + var(--scroll-y,0px)),0) scale(1.13);transition:transform 480ms cubic-bezier(.2,.65,.3,1)}
.hero-caption{position:absolute;z-index:3;left:-32px;bottom:40px;max-width:calc(100% - 48px);padding:24px 32px;background:var(--v-white);box-shadow:0 12px 32px #1b273010;transform:translate3d(var(--caption-x,0px),var(--caption-y,0px),0);transition:transform 480ms cubic-bezier(.2,.65,.3,1)}
.hero-caption .eyebrow{display:block;font-size:12px;line-height:18px;margin-bottom:12px}
.caption-title{display:block;font-size:28px;line-height:34px;font-weight:600;letter-spacing:-.025em}
.hero-visual .opora{width:180px;max-width:none;right:-16px;bottom:-16px;z-index:2;pointer-events:none}
.headline-line{display:block;overflow:hidden;padding-bottom:8px;margin-bottom:-8px}
.headline-line>span{display:block}
.quality-copy>p:not(.eyebrow){max-width:100%}
.quality-grid{align-items:start;column-gap:80px;grid-template-columns:1.15fr 1fr}
.quality-photo{margin-top:32px;overflow:hidden;aspect-ratio:3/2;background:var(--v-line)}
.quality-photo picture,.quality-photo img{display:block;width:100%;height:100%}
.quality-photo img{object-fit:cover;object-position:center}
.quality-points{align-self:center}
.quality-points article{padding-block:32px}
.service{position:relative;transition:background-color 320ms ease}
.service::after{content:"";position:absolute;left:24px;right:24px;bottom:18px;height:2px;background:var(--v-action);transform:scaleX(0);transform-origin:left;transition:transform 320ms ease}
.service-top img{transition:transform 320ms ease}
.button{position:relative;overflow:hidden}
.button span{transition:transform 240ms ease}
.button:hover span,.button:focus-visible span{transform:translate(3px,-3px)}
.text-link span{transition:transform 240ms ease}
.text-link:hover span{transform:translateY(3px)}
.steps li{position:relative}
.steps li::before{content:"";position:absolute;left:0;top:-1px;width:100%;height:2px;background:var(--v-action);transform:scaleX(0);transform-origin:left}
.motion-active .headline-line>span{animation:headline-in 480ms cubic-bezier(.22,.68,.24,1) both}
.motion-active .headline-line:nth-child(2)>span{animation-delay:110ms}
.motion-active .hero-photo-frame picture{animation:photo-arrival 2400ms cubic-bezier(.2,.65,.3,1) both}
.motion-active .hero-caption{animation:panel-in 480ms cubic-bezier(.22,.68,.24,1) 160ms both}
.motion-active .reveal-once{animation:content-in 480ms cubic-bezier(.22,.68,.24,1) var(--reveal-delay,0ms) both}
.motion-active .steps li.reveal-once::before{animation:rule-in 480ms cubic-bezier(.22,.68,.24,1) var(--reveal-delay,0ms) both}
@keyframes photo-arrival{from{transform:scale(1.14)}to{transform:scale(1)}}
@keyframes headline-in{from{transform:translateY(100%);opacity:.1}to{transform:translateY(0);opacity:1}}
@keyframes panel-in{from{transform:translateY(20px);opacity:0}to{transform:translate3d(var(--caption-x,0px),var(--caption-y,0px),0);opacity:1}}
@keyframes content-in{from{transform:translateY(24px);opacity:.05}to{transform:translateY(0);opacity:1}}
@keyframes rule-in{from{transform:scaleX(0)}to{transform:scaleX(1)}}
@media(hover:hover) and (pointer:fine){.service:hover{background-color:var(--v-mint)}.service:hover::after{transform:scaleX(1)}.service:hover .service-top img{transform:translateY(-4px)}}
@media(max-width:1199px){.hero{gap:48px;grid-template-columns:1.1fr 1fr}.hero-visual{min-height:510px}.hero-caption{left:-24px;padding:24px}.caption-title{font-size:26px;line-height:32px}.quality-grid{gap:48px}}
@media(max-width:920px){.hero{gap:32px;grid-template-columns:1fr 1fr}.hero-visual{min-height:480px}.hero-caption{left:-16px;bottom:32px;padding:20px}.hero-caption .eyebrow{font-size:12px;letter-spacing:.03em}.caption-title{font-size:24px;line-height:30px}.hero-visual .opora{width:144px;right:-8px;bottom:-8px}.quality-grid{gap:40px;grid-template-columns:1fr 1fr}.quality-photo{aspect-ratio:4/3}}
@media(max-width:640px){.hero{display:flex;gap:32px;padding-block:40px 56px}.hero-visual{min-height:0;aspect-ratio:4/5;margin-top:8px}.hero-photo{object-position:50% 35%;transform:translate3d(0,var(--scroll-y,0px),0) scale(1.1)}.hero-caption{left:0;bottom:24px;max-width:calc(100% - 40px);padding:20px 24px}.hero-visual .opora{width:114px;right:0;bottom:0}.hero-caption .eyebrow{font-size:12px;line-height:18px}.caption-title{font-size:24px;line-height:30px}.quality-grid{grid-template-columns:1fr;gap:32px}.quality-photo{aspect-ratio:3/2;margin-top:24px}.quality-points article{padding-block:24px}.service::after{left:24px;right:24px;bottom:12px}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}.motion-active .hero-photo-frame picture,.motion-active .headline-line>span,.motion-active .hero-caption,.motion-active .reveal-once,.motion-active .steps li.reveal-once::before{animation:none!important}.hero-photo,.hero-caption,.hero-photo-frame picture{transform:none!important;animation:none!important}.hero-photo,.hero-caption,.service,.service::after,.service-top img,.button,.button span,.text-link span{transition:none!important}.steps li::before{transform:scaleX(1)}}
@media print{.hero{gap:32px}.hero-visual{min-height:380px}.hero-caption{left:0}.hero-visual .opora{right:0;bottom:0}.headline-line>span,.hero-caption,.reveal-once{animation:none!important;opacity:1!important;transform:none!important}.hero-photo,.hero-caption,.hero-photo-frame picture{transform:none!important;animation:none!important}.quality-photo{max-height:240px}.steps li::before{transform:scaleX(1)}}
