/* Shared shell: page curtain, header, menu overlay, footer and cursor. */

/* Curtain — covers page loads and internal navigations. Hidden when scripts are unavailable. */
.curtain{display:none}
html.js .curtain{display:block;position:fixed;inset:0;z-index:400;pointer-events:none;visibility:visible;animation:curtain-failsafe .01s 3.2s forwards}
@keyframes curtain-failsafe{to{visibility:hidden}}
.curtain-panel{position:absolute;inset:0;background:var(--navy-deep);will-change:transform}
.curtain-panel::after{content:"";position:absolute;left:0;right:0;bottom:0;height:1px;background:linear-gradient(90deg,transparent,var(--teal-glow),transparent);opacity:.5}
.curtain-mark{position:absolute;left:50%;top:50%;width:clamp(160px,16vw,220px);height:auto;transform:translate(-50%,-50%);transition:opacity .45s var(--ease-out),transform .9s var(--ease-io)}
html.js .curtain-mark{animation:mark-in 1s var(--ease-out) both}
@keyframes mark-in{from{opacity:0;transform:translate(-50%,-30%)}to{opacity:1;transform:translate(-50%,-50%)}}
html.is-loaded .curtain{visibility:hidden;animation:none;transition:visibility 0s 1.15s}
html.is-loaded .curtain-panel{transform:translateY(-100%);transition:transform 1.1s var(--ease-io)}
html.is-loaded .curtain-mark{opacity:0;transform:translate(-50%,-160%)}
html.is-leaving .curtain{visibility:visible;transition:none}
html.is-leaving .curtain-panel{transform:none;transition:transform .75s var(--ease-io)}
html.is-leaving .curtain-mark{opacity:0}

/* Header */
.site-header{position:fixed;inset:0 0 auto;z-index:120;height:var(--header-h);color:var(--mist);transition:transform .7s var(--ease-out),background-color .5s ease,backdrop-filter .5s ease,border-color .5s ease;border-bottom:1px solid transparent}
/* Standard behaviour: transparent over the opening film, then a white bar with black type. */
.site-header.is-scrolled{background:rgba(255,255,255,.94);-webkit-backdrop-filter:blur(16px) saturate(1.3);backdrop-filter:blur(16px) saturate(1.3);border-bottom-color:var(--line);color:#000}
.site-header.is-scrolled .primary-nav a{color:rgba(0,0,0,.62)}
.site-header.is-scrolled .primary-nav a:hover,.site-header.is-scrolled .primary-nav a:focus-visible,.site-header.is-scrolled .primary-nav a[aria-current=page]{color:#000}
.site-header.is-scrolled .primary-nav a[aria-current=page]::before{background:var(--teal)}
.site-header.is-scrolled .menu-toggle{color:#000}
.site-header.is-scrolled .header-cta{--btn-bg:#000;--btn-fg:#fff;--btn-fill:var(--teal)}
html.menu-open .site-header{color:var(--mist)}
html.menu-open .site-header .menu-toggle{color:var(--mist)}
.site-header.is-hidden{transform:translateY(-100%)}
html.menu-open .site-header{transform:none;background:transparent;backdrop-filter:none;-webkit-backdrop-filter:none;border-bottom-color:transparent}
.header-inner{height:100%;display:grid;grid-template-columns:1fr auto 1fr;align-items:center;gap:24px;max-width:var(--max);margin-inline:auto;padding-inline:var(--gutter)}
.brand{display:inline-flex;align-items:center;min-height:44px;justify-self:start}
.brand img{width:151px;height:40px;transition:opacity .3s ease}
.brand .logo-dark{display:none}
.site-header.is-scrolled .logo-light{display:none}
.site-header.is-scrolled .logo-dark{display:block}
html.menu-open .site-header .logo-light{display:block}
html.menu-open .site-header .logo-dark{display:none}
.brand{transition:opacity .5s ease,visibility .5s}
.page-home .site-header:not(.is-scrolled) .brand{opacity:0;visibility:hidden}
html.menu-open .page-home .site-header .brand,html.menu-open .site-header .brand{opacity:1;visibility:visible}
.brand:hover img{opacity:.75}
.primary-nav ul{display:flex;gap:clamp(18px,2.4vw,40px)}
.primary-nav a{position:relative;display:inline-flex;align-items:center;min-height:44px;font-size:13.5px;letter-spacing:.01em;color:rgba(237,242,245,.78);transition:color .3s ease}
.primary-nav a:hover,.primary-nav a:focus-visible,.primary-nav a[aria-current=page]{color:#fff}
.roll{position:relative;display:inline-block;overflow:hidden;line-height:1.3}
.roll>span{display:block;transition:transform .55s var(--ease-out)}
.roll>span+span{position:absolute;left:0;top:100%}
a:hover .roll>span,a:focus-visible .roll>span{transform:translateY(-100%)}
.primary-nav a[aria-current=page]::before{content:"";position:absolute;left:50%;bottom:4px;width:4px;height:4px;margin-left:-2px;border-radius:50%;background:var(--teal-glow)}
.header-actions{display:flex;align-items:center;gap:12px;justify-self:end}
.menu-toggle{display:none;align-items:center;gap:12px;min-height:44px;min-width:44px;padding:0 4px;font-weight:700;font-size:11.5px;letter-spacing:.1em;text-transform:uppercase;color:var(--mist)}
.menu-toggle-icon{position:relative;width:26px;height:12px}
.menu-toggle-icon i{position:absolute;left:0;right:0;height:1.5px;background:currentColor;transition:transform .6s var(--ease-out),top .6s var(--ease-out)}
.menu-toggle-icon i:first-child{top:2px}
.menu-toggle-icon i:last-child{top:9px}
.menu-toggle[aria-expanded=true] .menu-toggle-icon i:first-child{top:5.5px;transform:rotate(45deg)}
.menu-toggle[aria-expanded=true] .menu-toggle-icon i:last-child{top:5.5px;transform:rotate(-45deg)}
@media(max-width:1080px){
  .header-inner{grid-template-columns:1fr auto}
  .primary-nav{display:none}
  .menu-toggle{display:inline-flex}
}
@media(max-width:600px){:root{--header-h:72px}.header-cta{display:none}.brand img{width:121px;height:32px}}

/* Menu overlay */
.site-menu{position:fixed;inset:0;z-index:110;background:var(--navy-deep);color:var(--mist);clip-path:inset(0 0 100% 0);transition:clip-path .9s var(--ease-io);overflow-y:auto;overscroll-behavior:contain}
.site-menu.is-open{clip-path:inset(0 0 0 0)}
.menu-inner{position:relative;min-height:100%;display:grid;grid-template-columns:1.4fr 1fr;gap:48px;align-items:end;max-width:var(--max);margin-inline:auto;padding:calc(var(--header-h) + 48px) var(--gutter) 48px}
.menu-links li{border-top:1px solid var(--line-dark);overflow:hidden}
.menu-links li:last-child{border-bottom:1px solid var(--line-dark)}
.menu-links a{display:flex;align-items:baseline;gap:24px;padding:14px 0;font-size:clamp(36px,6.4vw,80px);line-height:1.05;letter-spacing:-.045em;transform:translateY(100%);transition:transform .9s var(--ease-out),color .3s ease;transition-delay:calc(var(--i,0)*60ms + 250ms)}
.site-menu.is-open .menu-links a{transform:none}
.menu-links a:hover,.menu-links a:focus-visible,.menu-links a[aria-current=page]{color:var(--slate-light)}
.menu-links a[aria-current=page] .menu-num{color:var(--teal-glow)}
.menu-num{font-weight:700;font-size:12px;letter-spacing:.1em;color:var(--muted-dark);min-width:28px}
.menu-aside{display:grid;gap:20px;padding-bottom:12px;opacity:0;transform:translateY(20px);transition:opacity .8s var(--ease-out) .55s,transform .8s var(--ease-out) .55s}
.site-menu.is-open .menu-aside{opacity:1;transform:none}
.menu-email{font-size:clamp(22px,2.4vw,32px);letter-spacing:-.03em}
.menu-aside p{color:var(--muted-dark);font-size:14px}
.menu-legal{display:flex;gap:24px;font-size:13px;color:var(--muted-dark)}
.menu-legal a:hover{color:#fff}
@media(max-width:760px){.menu-inner{grid-template-columns:1fr;align-items:start;gap:40px}}

/* Footer */
.site-footer{position:relative;overflow:hidden;background:var(--navy-deep);color:var(--mist);--ink:var(--mist);--muted:var(--muted-dark);--line:var(--line-dark)}
.footer-cta{position:relative;padding-block:clamp(110px,14vw,220px) clamp(80px,9vw,140px);display:grid;gap:56px}
.footer-cta-title{font-size:var(--fs-display);line-height:.98;letter-spacing:-.05em;max-width:12ch}
.footer-cta-title em{color:var(--slate-light)}
.footer-cta-actions{display:flex;flex-wrap:wrap;align-items:center;gap:24px 48px}
.footer-email{position:relative;font-size:clamp(22px,2.6vw,38px);letter-spacing:-.03em;padding-bottom:6px}
.footer-email::after{content:"";position:absolute;left:0;right:0;bottom:0;height:1px;background:var(--line-dark-strong)}
.footer-email::before{content:"";position:absolute;left:0;right:0;bottom:0;height:1px;background:var(--mist);transform:scaleX(0);transform-origin:right;transition:transform .7s var(--ease-out);z-index:1}
.footer-email:hover::before,.footer-email:focus-visible::before{transform:none;transform-origin:left}
body.page-contact .footer-cta{display:none}
.footer-grid{position:relative;display:grid;grid-template-columns:repeat(12,minmax(0,1fr));column-gap:clamp(16px,2vw,32px);row-gap:48px;padding-block:64px;border-top:1px solid var(--line-dark)}
.footer-brand{grid-column:1/span 5;display:grid;align-content:start;gap:18px}
.footer-brand img{width:181px;height:auto;margin-bottom:8px}
.footer-brand p{max-width:26ch;font-size:20px;line-height:1.4;letter-spacing:-.02em}
.footer-brand .muted{font-size:14px;letter-spacing:0}
.footer-col{grid-column:span 2;display:grid;align-content:start;gap:4px}
.footer-col:first-of-type{grid-column:7/span 2}
.footer-col h3{margin-bottom:12px;font-weight:700;font-size:11px;letter-spacing:.1em;text-transform:uppercase;color:var(--muted-dark)}
.footer-col a{display:inline-flex;min-height:36px;align-items:center;font-size:14.5px;color:rgba(237,242,245,.86);transition:color .3s ease}
.footer-col a:hover,.footer-col a:focus-visible,.footer-col a[aria-current=page]{color:#fff}
.footer-col a[aria-current=page]{color:var(--teal-glow)}
.footer-wordmark{position:relative;padding-top:clamp(40px,5vw,72px);padding-inline:var(--gutter);max-width:var(--max);margin-inline:auto;overflow:hidden}
.footer-wordmark img{width:100%;height:auto;opacity:.95;-webkit-mask-image:linear-gradient(to bottom,#000 30%,rgba(0,0,0,.08) 100%);mask-image:linear-gradient(to bottom,#000 30%,rgba(0,0,0,.08) 100%)}
.footer-base{position:relative;display:grid;grid-template-columns:auto 1fr auto;gap:24px 48px;align-items:start;padding-block:28px 36px;border-top:1px solid var(--line-dark);font-size:12.5px;line-height:1.7;color:var(--muted-dark)}
.footer-disclosure{max-width:72ch}
.back-to-top{display:inline-flex;align-items:center;gap:10px;min-height:44px;margin-top:-12px;color:var(--mist);font-weight:700;font-size:11px;letter-spacing:.1em;text-transform:uppercase}
.back-to-top span{display:inline-block;transition:transform .5s var(--ease-out)}
.back-to-top:hover span{transform:translateY(-4px)}
@media(max-width:1000px){.footer-brand{grid-column:1/-1}.footer-col,.footer-col:first-of-type{grid-column:span 4}}
@media(max-width:760px){.footer-base{grid-template-columns:1fr}.back-to-top{margin-top:0}}
@media(max-width:560px){.footer-col,.footer-col:first-of-type{grid-column:span 6}.footer-cta{gap:40px}}

/* Cursor — fine pointers only, created by script. */
.cursor{position:fixed;left:0;top:0;z-index:500;pointer-events:none;opacity:0;transition:opacity .3s ease}
.cursor.is-active{opacity:1}
.cursor-dot,.cursor-ring{position:absolute;left:0;top:0;border-radius:50%;will-change:transform}
.cursor-dot{width:6px;height:6px;margin:-3px 0 0 -3px;background:var(--teal-glow)}
.cursor-ring{width:38px;height:38px;margin:-19px 0 0 -19px;border:1px solid rgba(143,162,179,.55);transition:width .4s var(--ease-out),height .4s var(--ease-out),margin .4s var(--ease-out),background-color .4s ease,border-color .4s ease}
.cursor.is-hover .cursor-ring{width:64px;height:64px;margin:-32px 0 0 -32px;background:rgba(143,162,179,.1);border-color:rgba(143,162,179,.6)}
@media(hover:none),(pointer:coarse){.cursor{display:none}}

/* Heroes — shared cinematic opening for every page. */
.hero{position:relative;isolation:isolate;min-height:100svh;display:grid;grid-template-rows:1fr auto;overflow:hidden;background:var(--navy-deep);color:var(--mist);--ink:var(--mist);--muted:var(--muted-dark);--line:var(--line-dark)}
.hero-media{position:absolute;inset:0;z-index:-2;overflow:hidden;will-change:transform}
.hero-media>video,.hero-media>img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.hero-scrim{position:absolute;inset:0;background:linear-gradient(90deg,rgba(0,0,0,.9) 0%,rgba(0,0,0,.55) 45%,rgba(0,0,0,.12) 100%),linear-gradient(0deg,rgba(0,0,0,.96) 0%,rgba(0,0,0,0) 46%),linear-gradient(180deg,rgba(0,0,0,.7) 0%,rgba(0,0,0,0) 24%)}
.shard-field{position:absolute;inset:0;width:100%;height:100%;pointer-events:none}
.hero-content{position:relative;align-self:end;display:grid;gap:clamp(24px,3vw,40px);padding-top:calc(var(--header-h) + 64px);padding-bottom:clamp(40px,5vw,64px);will-change:transform,opacity}
.hero-title{max-width:12ch}
.hero-foot{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:end;gap:28px 48px}
.hero-lede{max-width:34em;font-size:clamp(16px,1.2vw,18px);line-height:1.75;color:#c4d0da}
.hero-bar{position:relative;display:grid;grid-template-columns:1fr auto 1fr;align-items:center;gap:24px;padding-block:18px 22px}
.hero-bar::before{content:"";position:absolute;top:0;left:var(--gutter);right:var(--gutter);height:1px;background:var(--line-dark)}
.hero-meta{display:flex;gap:clamp(24px,4vw,64px)}
.hero-meta dt{font-weight:700;font-size:10.5px;letter-spacing:.1em;text-transform:uppercase;color:var(--muted-dark)}
.hero-meta dd{margin:2px 0 0;font-size:14px}
.scroll-cue{justify-self:center;display:inline-flex;align-items:center;gap:14px;min-height:44px;font-weight:700;font-size:10.5px;letter-spacing:.1em;text-transform:uppercase;color:var(--muted-dark)}
.scroll-line{position:relative;width:56px;height:1px;background:var(--line-dark-strong);overflow:hidden}
.scroll-line::after{content:"";position:absolute;inset:0;background:var(--mist);transform:translateX(-100%);animation:scroll-line 2.4s var(--ease-io) infinite}
@keyframes scroll-line{0%{transform:translateX(-100%)}50%{transform:none}100%{transform:translateX(100%)}}
.video-toggle{justify-self:end;min-height:44px;font-weight:700;font-size:10.5px;letter-spacing:.1em;text-transform:uppercase;color:var(--muted-dark);transition:color .3s ease}
.video-toggle:hover{color:#fff}
.hero-index{display:flex;align-items:center;gap:14px;font-weight:700;font-size:11px;letter-spacing:.1em;text-transform:uppercase;color:var(--muted-dark)}
.hero-index i{display:block;width:40px;height:1px;background:var(--line-dark-strong)}
@media(max-width:760px){
  .hero-bar{grid-template-columns:1fr auto}
  .scroll-cue{display:none}
  .hero-meta{gap:28px}
  .hero-scrim{background:linear-gradient(0deg,rgba(0,0,0,.97) 0%,rgba(0,0,0,.55) 60%,rgba(0,0,0,.45) 100%)}
}

/* Index opening: the film and the logo, nothing else. */
.hero--film{grid-template-rows:1fr auto}
.hero-logo{position:relative;align-self:center;justify-self:center;width:clamp(220px,30vw,480px);padding-top:var(--header-h);will-change:transform,opacity}
.hero-logo img{width:100%;height:auto}
.hero-scrim--soft{background:linear-gradient(0deg,rgba(0,0,0,.75) 0%,rgba(0,0,0,0) 40%),linear-gradient(180deg,rgba(0,0,0,.55) 0%,rgba(0,0,0,0) 30%),rgba(0,0,0,.25)}
.hero--film .hero-bar{grid-template-columns:1fr auto 1fr}
@media(max-width:760px){.hero--film .scroll-cue{display:inline-flex}.hero--film .hero-bar{grid-template-columns:1fr auto 1fr}}
