/* Related elements share a quiet motion language; photographs retain their own controller. */
:root{--page-reveal-duration:1000ms;--page-reveal-distance:8px;--page-reveal-ease:cubic-bezier(.33,0,.2,1);--entrance-ease:cubic-bezier(.33,0,.2,1)}
[data-entrance-kind=heading]{--page-reveal-duration:1100ms;--page-reveal-distance:4px}
[data-entrance-kind=copy]{--page-reveal-duration:950ms;--page-reveal-distance:6px}
.page-reveal-pending{opacity:0;translate:0 var(--page-reveal-distance)}
html body.complete-home main [data-reveal].motion-ready{transition:opacity var(--page-reveal-duration) var(--entrance-ease) var(--reveal-delay,0ms),transform var(--page-reveal-duration) var(--entrance-ease) var(--reveal-delay,0ms)}
/* Preparation must be instant offscreen: never transition from visible to hidden. */
:root[data-motion=running] body.complete-home main [data-reveal].motion-ready:not(.is-revealed){opacity:0;transform:translate3d(0,var(--page-reveal-distance),0);filter:none;transition:none}
:root[data-motion=running] #enquire .enquiry-extras[open] .optional-fields{animation:quiet-disclosure .65s var(--entrance-ease) both}
@keyframes quiet-disclosure{from{opacity:0;translate:0 -3px}to{opacity:1;translate:0 0}}
#mobile-menu.is-entered:not(.is-leaving) .drawer-link{animation:quiet-navigation .7s var(--entrance-ease) both;animation-delay:calc(var(--drawer-order,0)*.035s)}
@keyframes quiet-navigation{from{opacity:0;transform:translate3d(5px,0,0)}to{opacity:1;transform:translate3d(0,0,0)}}
.process-step:after{transition-timing-function:var(--entrance-ease)}
html[data-motion=paused] .page-reveal-pending{opacity:1;translate:none}
@media(prefers-reduced-motion:reduce){.page-reveal-pending{opacity:1;translate:none}}
@media print{.page-reveal-pending{opacity:1;translate:none}}
/* Navigation enters from its edge; disclosures unfold close to their trigger. */
#mobile-menu .drawer-panel{transform:translate3d(12px,0,0);transition:transform .7s var(--entrance-ease),opacity .7s var(--entrance-ease)}
#mobile-menu.is-entered .drawer-panel{transform:translate3d(0,0,0)}
#mobile-menu.is-leaving .drawer-panel{transform:translate3d(8px,0,0);transition-duration:.2s}
@keyframes scene-arrive{from{opacity:0;transform:translateY(6px)}to{opacity:1;transform:translateY(0)}}
.visual-journey .scene-arrived{animation-duration:1s;animation-timing-function:var(--entrance-ease)}
@media(prefers-reduced-motion:no-preference){.tme-contact-bar[data-contact-animated]{transition:opacity .65s var(--entrance-ease),transform .65s var(--entrance-ease),visibility 0s linear}}
html[data-motion=paused] #enquire .enquiry-extras[open] .optional-fields{animation:none}
@media(prefers-reduced-motion:reduce){#enquire .enquiry-extras[open] .optional-fields{animation:none!important}}
