/* Calm, progressive motion. Layout and typography remain defined in main.css. */
:root{--ease-luxury:cubic-bezier(.22,1,.36,1)}
.page-intro{display:none;position:fixed;inset:0;z-index:1000;background:var(--paper);pointer-events:none;overflow:hidden;place-items:center}
.is-entering .page-intro{display:grid;animation:intro-curtain 1400ms 2600ms var(--ease-luxury) both}
.page-intro::before{content:'';position:absolute;inset:-30%;background:radial-gradient(ellipse at 50% 65%,#cbb57d1c,transparent 55%);animation:intro-light 1800ms ease-out both}
.intro-signature{position:relative;text-align:center;color:var(--heading);animation:intro-signature 1900ms var(--ease-luxury) both}
.intro-brand{font:400 clamp(42px,5vw,68px)/1.2 var(--serif);letter-spacing:-.035em}.intro-brand span{color:var(--gold)}
.intro-caption{display:block;margin-top:20px;font:500 9px/1.5 var(--sans);letter-spacing:.22em;text-transform:uppercase;color:var(--gold)}
.intro-line{display:block;margin:26px auto 0;width:90px;height:1px;background:linear-gradient(90deg,transparent,var(--gold),transparent);transform-origin:left;animation:intro-line 1900ms var(--ease-luxury) both}
.page-intro.is-leaving{animation:intro-curtain 1400ms var(--ease-luxury) both}
@keyframes intro-signature{from{opacity:0;transform:translateY(12px)}to{opacity:1;transform:none}}
@keyframes intro-line{from{opacity:0;transform:scaleX(.1)}to{opacity:1;transform:scaleX(1)}}
@keyframes intro-light{from{opacity:0;transform:translateY(5%)}to{opacity:1;transform:none}}
@keyframes intro-curtain{to{clip-path:inset(0 0 100% 0);visibility:hidden}}
.motion-pending{opacity:0;transform:translate3d(0,48px,0)}
.motion-pending:focus-within{opacity:1;transform:none}
.motion-image{overflow:hidden;position:relative}
.hero-inset.motion-image{position:absolute}
.motion-image .crop{transform:translate3d(0,var(--image-drift,0%),0) scale(var(--image-zoom,1.065));transform-origin:center;backface-visibility:hidden}
.motion-image::after{content:'';position:absolute;inset:0;pointer-events:none;background:linear-gradient(120deg,transparent 30%,#fff5 49%,transparent 67%);opacity:0;transform:translateX(-110%)}
.motion-image.is-unveiling::after{animation:image-light 1600ms 180ms var(--ease-luxury) both}
@keyframes image-light{0%{opacity:0;transform:translateX(-110%)}35%{opacity:.22}100%{opacity:0;transform:translateX(110%)}}
.button{position:relative;isolation:isolate;overflow:hidden;transition:background-color 450ms ease,color 450ms ease,box-shadow 600ms var(--ease-luxury),transform 600ms var(--ease-luxury)}
.button::before{content:'';position:absolute;inset:-100% -50%;z-index:-1;pointer-events:none;background:linear-gradient(110deg,transparent 35%,#fff0 42%,#f7e4b22e 50%,#fff0 58%,transparent 65%);transform:translateX(-65%);transition:transform 1100ms var(--ease-luxury)}
.button .arrow-icon{transition:transform 650ms var(--ease-luxury)}
.button:hover{filter:none}
.button:focus-visible{box-shadow:0 7px 22px #967b421a}.button:focus-visible::before{transform:translateX(65%)}
.button:focus-visible .arrow-icon{transform:translateX(4px)}
@media(hover:hover) and (pointer:fine){
 .button:hover{transform:translateY(-2px);box-shadow:0 9px 24px #0b142b16,0 0 20px #bfa76b0b}
 .button:hover::before{transform:translateX(65%)}
 .button:hover .arrow-icon{transform:translateX(4px)}
 .navy:hover{background:#15223d;color:#f3f1eb}.gold:hover{background:#a28342}
 .carousel button{transition:background-color 350ms ease,box-shadow 350ms ease,transform 450ms var(--ease-luxury)}
 .carousel button:hover{transform:translateY(-1px);box-shadow:0 0 18px #fff2}
 .thumbnail .crop{transition:scale 900ms var(--ease-luxury)}
 .thumbnail:hover .crop{scale:1.025}.thumbnail:hover{filter:none}

}
.button:active{transform:translateY(0);box-shadow:none;transition-duration:120ms}
input{transition:box-shadow 350ms ease,border-color 350ms ease}input:focus{border-color:#967b4266;box-shadow:0 0 0 4px #967b420a}
@media(max-width:760px){.motion-pending{transform:translate3d(0,30px,0)}.motion-image .crop{transform:translate3d(0,var(--image-drift,0%),0) scale(var(--image-zoom,1.065))}}
@media(prefers-reduced-motion:reduce){
 html{scroll-behavior:auto}.page-intro,.is-entering .page-intro{display:none!important}
 .motion-pending{opacity:1!important;transform:none!important}
 .motion-image,.motion-symbol{translate:none!important}.motion-image .crop{transform:none!important;scale:none!important}.motion-image::after,.button::before{display:none!important}
 .button,.button .arrow-icon,.carousel button,.thumbnail .crop,.social-icon,input{transition:none!important;animation:none!important}
 .button:hover,.button:focus-visible .arrow-icon,.button:hover .arrow-icon,.thumbnail:hover .crop{transform:none!important}
}

/* Layered slides retain the previous image until the next one is decoded. */
.hero-image,.hero-inset,.gallery-main,.thumbnail{position:relative}
.hero-inset{position:absolute;padding:0;border:0;background:transparent;cursor:pointer}
.media-slide{position:absolute;inset:0;pointer-events:none}
.language{border:0;background:transparent;padding:8px 0;cursor:pointer;font-family:var(--sans);font-weight:500;min-width:24px}
.language:hover{color:var(--gold)}
.footer-brand{background:#5a6278;mask:url('../assets/royal-logo.png') center/contain no-repeat;-webkit-mask:url('../assets/royal-logo.png') center/contain no-repeat;aspect-ratio:444/129;height:auto;opacity:1}
.badge svg{display:block;width:100%;height:100%}
html[lang=ru] h1,html[lang=ru] h2{font-size:calc(42 * var(--u))}
html[lang=ru] .form-wrap>h3{white-space:normal;font-size:calc(24 * var(--u))}
html[lang=ru] .header .button{width:calc(220 * var(--u));font-size:calc(9.2 * var(--u));white-space:normal}
html[lang=ru] .micro{white-space:normal}
html[lang=ru] .button{font-size:calc(9 * var(--u))}
@media(max-width:760px){
 html[lang=ru] h1,html[lang=ru] h2{font-size:clamp(29px,8.4vw,42px)}
 html[lang=ru] .header .button{width:auto;min-width:145px;font-size:8px;padding-inline:10px;gap:8px}
 html[lang=ru] .form-wrap>h3{font-size:25px}
 html[lang=ru] .button{font-size:10px}
 html[lang=ru] .description{font-size:12px}
 html[lang=ru] .stats strong{font-size:24px}
 html[lang=ru] .eyebrow{font-size:8px}
}
@media(max-width:380px){html[lang=ru] .header .button{min-width:125px;font-size:7px}html[lang=ru] .brand{font-size:24px}}

@media(prefers-reduced-motion:reduce){.hero-visual>.carousel,.hero-visual>.caption{translate:none!important}}
/* Reserve room for the independently floating mobile preview. */
@media(max-width:760px){.hero{padding-bottom:77px}html[lang=ru] .header .button{width:160px;min-width:0;font-size:8.5px}}
@media(max-width:380px){html[lang=ru] .header .button{width:135px;font-size:8.5px}}

/* Reference-style underline: enter from the left, leave towards the right.
   Labels retain their text nodes, natural wrapping and original colour. */
.link-label{position:relative;display:inline-block;color:inherit;min-width:0}
.brand .link-label{color:inherit;margin-left:0}
.link-label::after{content:'';position:absolute;left:0;right:0;bottom:-.18em;height:1px;background:currentColor;transform:scaleX(0);transform-origin:right;transition:transform 750ms cubic-bezier(.16,1,.1,1);pointer-events:none}
.button .link-label::after{content:none}
.has-link-hover:focus-visible .link-label::after{transform:scaleX(1);transform-origin:left}
@media(hover:hover) and (pointer:fine){
 .has-link-hover:hover .link-label::after{transform:scaleX(1);transform-origin:left}
}
@media(prefers-reduced-motion:reduce){.link-label::after{transition:none}}

/* Contact card: equal columns, stable separators, generous shared hit areas. */
.contact-card{height:auto;min-height:calc(214 * var(--u));padding:calc(23 * var(--u)) calc(29 * var(--u))}
.contact-card .large-phone{width:fit-content;margin:calc(15 * var(--u)) 0;white-space:nowrap}
.contact-bottom{padding-top:calc(21 * var(--u))}

@media(max-width:760px){
 .contact-card{min-height:0;padding:22px 23px}
 .contact-card .large-phone{margin:15px 0}
 .contact-bottom{padding-top:17px}

}
@media(max-width:380px){
 .contact-card{padding-inline:20px}
 
}

/* Photo frames and the footer mark never slide away from their PSD positions. */
:is(.hero-image,.hero-inset,.gallery-main,.thumbnail,.badge,.caption,.footer-brand).motion-pending{transform:none}
.footer-brand{flex:none;align-self:center;translate:none}
@media(max-width:760px){.footer-brand{align-self:flex-start}}

/* Logo uses the button's gentle lift and light, with no underline. */
.brand{display:inline-block;transition:transform 600ms var(--ease-luxury),color 450ms ease,text-shadow 600ms var(--ease-luxury)}
.brand .link-label::after{content:none}
.brand:focus-visible{transform:translateY(-2px);color:var(--gold);text-shadow:0 0 18px #c8aa6638}
@media(hover:hover) and (pointer:fine){.brand:hover{transform:translateY(-2px);color:var(--gold);text-shadow:0 0 18px #c8aa6638}}
.brand:active{transform:none}
@media(prefers-reduced-motion:reduce){.brand{transition:none}.brand:hover,.brand:focus-visible{transform:none}}
