:root{--ease-marine:cubic-bezier(.22,1,.36,1)}
/* A non-blocking compass appears only while a page or media is loading. */
.page-loader{position:fixed;inset:0;z-index:150;background:#f5f7f7;color:#244c5f;display:grid;place-items:center;opacity:0;visibility:hidden;pointer-events:none;transition:opacity .32s ease,visibility .32s}
.page-loading .page-loader,.page-navigating .page-loader{opacity:1;visibility:visible}
.page-loader-inner{display:grid;justify-items:center;gap:26px}
.page-loader-inner>.compass{width:88px;height:88px}
.page-loader-inner>span{font-size:15px;font-weight:500;letter-spacing:.16em;text-align:center;line-height:1.5}
.page-loader-inner small{display:block;font-size:11px;letter-spacing:.35em;margin-top:4px}
.compass{width:32px;height:32px;flex-shrink:0}
.compass-needle{transform-origin:50px 50px;animation:compass-turn 2.1s linear infinite}
.page-loader:not(.page-loading .page-loader):not(.page-navigating .page-loader) .compass-needle{animation-play-state:paused}
@keyframes compass-turn{to{transform:rotate(360deg)}}
/* Native dialogs retain their focus trap, with a short, bounded exit. */
.navigation-dialog[open]{animation:menu-enter .58s var(--ease-marine) both}
.navigation-dialog[open]::backdrop{animation:veil-enter .3s ease both}
.navigation-dialog[open] .menu-links>.overline,.navigation-dialog[open] .menu-model,.navigation-dialog[open] .menu-links nav a,.navigation-dialog[open] .menu-email{animation:menu-item-enter .65s var(--ease-marine) both}
.navigation-dialog[open] .menu-links>.overline{animation-delay:.10s}
.navigation-dialog[open] .menu-model:nth-of-type(1){animation-delay:.15s}
.navigation-dialog[open] .menu-model:nth-of-type(2){animation-delay:.21s}
.navigation-dialog[open] .menu-links nav a:nth-child(1){animation-delay:.26s}
.navigation-dialog[open] .menu-links nav a:nth-child(2){animation-delay:.30s}
.navigation-dialog[open] .menu-links nav a:nth-child(3){animation-delay:.34s}
.navigation-dialog[open] .menu-links nav a:nth-child(4){animation-delay:.38s}
.navigation-dialog[open] .menu-email{animation-delay:.42s}
.navigation-dialog[open] .menu-visual{animation:menu-image-enter .85s .12s var(--ease-marine) both}
.navigation-dialog[open] .menu-close span{display:inline-block;animation:close-mark-enter .5s var(--ease-marine) both}
.navigation-dialog.is-closing[open]{animation:menu-exit .24s ease both;pointer-events:none}
.navigation-dialog.is-closing[open]::backdrop{animation:veil-exit .24s ease both}
.menu-close span{transition:transform .25s ease}
.menu-close:hover span{transform:rotate(90deg)}
.menu-links a{transition:color .2s ease}
@keyframes menu-enter{from{opacity:0;transform:translateY(-28px)}to{opacity:1;transform:none}}
@keyframes menu-exit{to{opacity:0;transform:translateY(-18px)}}
@keyframes veil-enter{from{opacity:0}to{opacity:1}}
@keyframes veil-exit{to{opacity:0}}
@keyframes menu-item-enter{from{opacity:0;transform:translateY(22px)}to{opacity:1;transform:none}}
@keyframes menu-image-enter{from{opacity:0;clip-path:inset(0 0 12% 0);transform:translateY(20px)}to{opacity:1;clip-path:inset(0);transform:none}}
@keyframes close-mark-enter{from{transform:rotate(-90deg);opacity:0}to{transform:rotate(0);opacity:1}}
/* Each content block appears once; keyboard focus always reveals it immediately. */
.motion-reveal{opacity:0;translate:0 22px;transition:opacity .7s var(--ease-marine),translate .7s var(--ease-marine);transition-delay:var(--reveal-delay,0ms)}
.motion-reveal.is-visible,.motion-reveal:focus-within{opacity:1;translate:0 0}
.motion-reveal:focus-within{transition-delay:0ms}
.visual-hero-copy>*,.model-hero-heading>*{animation:hero-copy-enter .85s var(--ease-marine) backwards}
.visual-hero-copy>:nth-child(2),.model-hero-heading>:nth-child(2){animation-delay:.10s}
.visual-hero-copy>:nth-child(3),.model-hero-heading>:nth-child(3){animation-delay:.20s}
.page-loading .visual-hero-copy>*,.page-loading .model-hero-heading>*{animation-play-state:paused}
@keyframes hero-copy-enter{from{opacity:0;transform:translateY(18px)}to{opacity:1;transform:none}}
.lightbox[open]{animation:gallery-enter .32s var(--ease-marine)}
@keyframes gallery-enter{from{opacity:0;transform:translateY(10px) scale(.985)}to{opacity:1;transform:none}}
.gallery-loading{position:absolute;inset:60px 28px 75px;display:grid;place-items:center;pointer-events:none}
.gallery-loading[hidden]{display:none}
.gallery-loading .compass{width:62px;height:62px;color:#dce8eb}
.lightbox-image{transition:opacity .18s ease}
.lightbox-image.is-loading{opacity:.25}
.film-play>.compass{display:none}
.film-player.is-loading .film-play::before{display:none}
.film-player.is-loading .film-play>.compass{display:block}
@media(hover:hover) and (prefers-reduced-motion:no-preference){
  .menu-symbol{transition:width .25s ease}
  .menu-toggle:hover .menu-symbol{width:28px}
  .discovery-grid>a{overflow:hidden}
  .discovery-grid>a img{transition:transform .8s var(--ease-marine)}
  .discovery-grid>a:hover img{transform:scale(1.025)}
  .line-link,.collection-action,.model-inquire{transition:color .2s ease,border-color .2s ease}
  .line-link:hover,.collection-card:hover .collection-action{color:#4e8ba2;border-color:currentColor}
}
@media(max-width:700px){.motion-reveal{translate:0 14px}.page-loader-inner>.compass{width:72px;height:72px}.navigation-dialog[open]{animation-duration:.4s}}
@media(prefers-reduced-motion:reduce){
  .motion-reveal{opacity:1;translate:none;transition:none}
  .page-loader{transition:none}
  .compass-needle{animation:none}
  .navigation-dialog[open],.navigation-dialog[open] *,.navigation-dialog[open]::backdrop,.lightbox[open],.visual-hero-copy>*,.model-hero-heading>*{animation:none}
}
