/* ═══════════════════════════════════════════════════════════════════════
   YVOREN flagship entrance — gate overlay (index.html only)

   Shown only while <html> has .yv-gate (set before first paint by the
   inline script in <head>). The still poster paints immediately; the live
   WebGL canvas fades in over it once its first frame is ready.
   ═══════════════════════════════════════════════════════════════════════ */

.flagship { display: none; }

html.yv-gate, html.yv-gate body { overflow: hidden; }
html.yv-gate #yv-page { visibility: hidden; }
html.yv-gate-leaving #yv-page { visibility: visible; }

html.yv-gate .flagship {
  display: block;
  position: fixed;
  inset: 0;
  z-index: 9990;           /* under the site's film grain (body::after, 9999) */
  background: #050505;
  color: #ece7de;
  opacity: 1;
  transition: opacity 0.55s cubic-bezier(0.4, 0, 0.2, 1);
}
html.yv-gate-leaving .flagship { opacity: 0; pointer-events: none; }

/* While the laptop portal runs, the real page is warped under the canvas. */
#yv-page.is-portal {
  position: fixed;
  left: 0;
  top: 0;
  overflow: hidden;
  transform-origin: 0 0;
  will-change: transform;
}
#main:focus { outline: none; }

/* ── Layers ─────────────────────────────────────────────────────────────── */
.flagship__poster {
  position: absolute;
  inset: 0;
  background: #050505 url("/assets/flagship/exterior-wide.jpg") center / cover no-repeat;
  background-image: image-set(url("/assets/flagship/exterior-wide.webp") type("image/webp"), url("/assets/flagship/exterior-wide.jpg") type("image/jpeg"));
  transform-origin: 50% 64%;   /* the doors — the 2D fallback zooms through them */
}
@media (max-aspect-ratio: 1/1) {
  .flagship__poster {
    background-image: url("/assets/flagship/exterior-tall.jpg");
    background-image: image-set(url("/assets/flagship/exterior-tall.webp") type("image/webp"), url("/assets/flagship/exterior-tall.jpg") type("image/jpeg"));
    transform-origin: 50% 58%;
  }
}
.flagship__canvas {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  display: block;
  opacity: 0;
  transition: opacity 0.9s ease;
}
/* Live: canvas over the poster, then the poster and backdrop drop away so the
   canvas's transparent laptop screen can reveal the page beneath. */
html.yv-gate .flagship.is-live .flagship__canvas { opacity: 1; }
html.yv-gate .flagship.is-live { background: transparent; transition: opacity 0.55s cubic-bezier(0.4, 0, 0.2, 1), background 0s linear 0.9s; }
html.yv-gate .flagship.is-live .flagship__poster { visibility: hidden; transition: visibility 0s linear 0.9s; }

/* Legibility for the navbar and ENTER; gone once the camera moves. */
.flagship__veil {
  position: absolute;
  inset: 0;
  pointer-events: none;
  background:
    linear-gradient(to bottom, rgba(0, 0, 0, 0.55), rgba(0, 0, 0, 0) 17%),
    linear-gradient(to top, rgba(0, 0, 0, 0.5), rgba(0, 0, 0, 0) 28%);
  transition: opacity 0.8s ease;
}

/* ── Navbar ─────────────────────────────────────────────────────────────── */
.flagship__nav {
  position: absolute;
  top: 0; left: 0; right: 0;
  z-index: 2;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 24px;
  padding: 24px clamp(20px, 3.2vw, 48px);
}
.flagship__brand {
  display: inline-flex;
  align-items: center;
  gap: 14px;
  color: #ece7de;
  text-decoration: none;
  font-family: var(--yv-display, 'Syncopate', sans-serif);
  font-weight: 700;
  font-size: 14px;
  letter-spacing: 0.42em;
}
.flagship__brand img { display: block; height: 26px; width: auto; }
.flagship__brand span { margin-right: -0.42em; }
.flagship__right { display: flex; align-items: center; gap: clamp(28px, 4.4vw, 76px); }
.flagship__links { display: flex; align-items: center; gap: clamp(24px, 3.4vw, 56px); }
.flagship__links a {
  position: relative;
  color: rgba(236, 231, 222, 0.78);
  text-decoration: none;
  font-family: 'Manrope', sans-serif;
  font-weight: 500;
  font-size: 11px;
  letter-spacing: 0.3em;
  text-transform: uppercase;
  padding: 8px 0;
  transition: color 0.3s ease;
}
.flagship__links a::after {
  content: '';
  position: absolute;
  left: 0; right: 0.3em; bottom: 2px;
  height: 1px;
  background: currentColor;
  transform: scaleX(0);
  transform-origin: left;
  transition: transform 0.4s cubic-bezier(0.22, 1, 0.36, 1);
}
.flagship__links a:hover, .flagship__links a:focus-visible { color: #fff; }
.flagship__links a:hover::after, .flagship__links a:focus-visible::after { transform: scaleX(1); }
.flagship__icons { display: flex; align-items: center; gap: 18px; }
.flagship__icon {
  display: inline-grid;
  place-items: center;
  width: 36px; height: 36px;
  padding: 0;
  background: none;
  border: 0;
  color: rgba(236, 231, 222, 0.86);
  cursor: pointer;
  transition: color 0.3s ease;
}
.flagship__icon svg { width: 21px; height: 21px; }
.flagship__icon:hover, .flagship__icon:focus-visible { color: #fff; }

/* ── ENTER ──────────────────────────────────────────────────────────────── */
.flagship__enter {
  position: absolute;
  left: 50%;
  bottom: clamp(44px, 8.5vh, 92px);
  transform: translateX(-50%);
  z-index: 2;
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 20px;
}
.flagship__enter-btn {
  width: clamp(230px, 19vw, 316px);
  height: 54px;
  padding: 0;
  border: 1px solid rgba(236, 231, 222, 0.5);
  border-radius: 0;
  background: rgba(5, 5, 5, 0.22);
  color: #ece7de;
  font-family: 'Manrope', sans-serif;
  font-weight: 500;
  font-size: 13px;
  letter-spacing: 0.52em;
  text-indent: 0.52em;   /* optically centre the tracked word */
  text-transform: uppercase;
  cursor: pointer;
  animation: flagship-breathe 5.2s ease-in-out infinite;
  transition: background 0.4s ease, border-color 0.4s ease;
}
.flagship__enter-btn:hover, .flagship__enter-btn:focus-visible {
  animation-play-state: paused;
  border-color: #ece7de;
  background: rgba(236, 231, 222, 0.07);
}
/* A slow breath, not a glow: opacity, border brightness, a hair of scale. */
@keyframes flagship-breathe {
  0%, 100% { opacity: 0.86; border-color: rgba(236, 231, 222, 0.42); transform: scale(1); }
  50% { opacity: 1; border-color: rgba(236, 231, 222, 0.8); transform: scale(1.012); }
}
.flagship__cue { position: relative; width: 14px; height: 38px; opacity: 0.7; }
.flagship__cue::before {
  content: '';
  position: absolute;
  left: 50%; top: 0;
  width: 1px; height: 26px;
  background: linear-gradient(rgba(236, 231, 222, 0), rgba(236, 231, 222, 0.85));
  animation: flagship-cue 2.8s ease-in-out infinite;
}
.flagship__cue::after {
  content: '';
  position: absolute;
  left: 50%; bottom: 3px;
  width: 9px; height: 9px;
  border-right: 1px solid rgba(236, 231, 222, 0.85);
  border-bottom: 1px solid rgba(236, 231, 222, 0.85);
  transform: translateX(-50%) rotate(45deg);
}
@keyframes flagship-cue {
  0%, 100% { transform: scaleY(0.6); transform-origin: top; opacity: 0.4; }
  50% { transform: scaleY(1); transform-origin: top; opacity: 1; }
}

.flagship__caption {
  position: absolute;
  left: clamp(20px, 3.2vw, 48px);
  bottom: clamp(28px, 5vh, 52px);
  z-index: 2;
  margin: 0;
  font-family: var(--yv-mono, 'JetBrains Mono', monospace);
  font-size: 10px;
  line-height: 2;
  letter-spacing: 0.34em;
  text-transform: uppercase;
  color: rgba(236, 231, 222, 0.62);
}

/* ── SKIP (only while the camera moves) ─────────────────────────────────── */
.flagship__skip {
  position: absolute;
  right: clamp(20px, 3.2vw, 48px);
  bottom: calc(clamp(24px, 4vh, 40px) + env(safe-area-inset-bottom));
  z-index: 3;
  padding: 10px 2px;
  background: none;
  border: 0;
  color: #ece7de;
  font-family: var(--yv-mono, 'JetBrains Mono', monospace);
  font-size: 10px;
  letter-spacing: 0.32em;
  text-transform: uppercase;
  text-decoration: underline;
  text-underline-offset: 6px;
  text-decoration-color: rgba(236, 231, 222, 0.4);
  cursor: pointer;
  visibility: hidden;
  opacity: 0;
  transition: opacity 0.5s ease, visibility 0s linear 0.5s;
}
.flagship__skip:hover, .flagship__skip:focus-visible { text-decoration-color: #ece7de; }

/* Sound toggle sits left of SKIP; struck through when muted. */
.flagship__sound {
  position: absolute;
  right: calc(clamp(20px, 3.2vw, 48px) + 76px);
  bottom: calc(clamp(24px, 4vh, 40px) + env(safe-area-inset-bottom));
  z-index: 3;
  padding: 10px 2px;
  background: none;
  border: 0;
  color: rgba(236, 231, 222, 0.8);
  font-family: var(--yv-mono, 'JetBrains Mono', monospace);
  font-size: 10px;
  letter-spacing: 0.32em;
  text-transform: uppercase;
  cursor: pointer;
  visibility: hidden;
  opacity: 0;
  transition: opacity 0.5s ease, visibility 0s linear 0.5s;
}
.flagship__sound[aria-pressed="false"] { text-decoration: line-through; text-decoration-color: rgba(236, 231, 222, 0.6); color: rgba(236, 231, 222, 0.5); }
.flagship.is-entering .flagship__sound { visibility: visible; opacity: 0.6; transition: opacity 0.5s ease 0.7s, visibility 0s; }
.flagship.is-entering .flagship__sound:hover, .flagship.is-entering .flagship__sound:focus-visible { opacity: 1; }

/* ── Entering: the UI steps back, the scene takes over ─────────────────── */
.flagship.is-entering .flagship__nav,
.flagship.is-entering .flagship__enter,
.flagship.is-entering .flagship__caption,
.flagship.is-entering .flagship__veil {
  opacity: 0;
  visibility: hidden;
  pointer-events: none;
  transition: opacity 0.6s ease, visibility 0s linear 0.6s;
}
.flagship.is-entering .flagship__skip {
  visibility: visible;
  opacity: 0.72;
  transition: opacity 0.5s ease 0.7s, visibility 0s;
}
.flagship.is-entering .flagship__skip:hover,
.flagship.is-entering .flagship__skip:focus-visible { opacity: 1; }

.flagship :focus-visible { outline: 1px solid #ece7de; outline-offset: 5px; }

/* ── Phones: its own layout, not a shrunk desktop ──────────────────────── */
@media (max-width: 760px) {
  .flagship__nav { padding: 16px 16px 0; flex-wrap: wrap; row-gap: 6px; }
  .flagship__brand { font-size: 12px; letter-spacing: 0.36em; gap: 10px; }
  .flagship__brand img { height: 22px; }
  .flagship__right { display: contents; }
  .flagship__icons { gap: 6px; }
  .flagship__links {
    order: 3;
    flex-basis: 100%;
    justify-content: center;
    gap: 26px;
    padding-top: 4px;
  }
  .flagship__links a { font-size: 10px; letter-spacing: 0.26em; }
  .flagship__enter { bottom: calc(34px + env(safe-area-inset-bottom)); gap: 16px; }
  .flagship__enter-btn { width: min(64vw, 280px); height: 52px; }
  .flagship__caption { display: none; }
  .flagship__veil {
    background:
      linear-gradient(to bottom, rgba(0, 0, 0, 0.65), rgba(0, 0, 0, 0) 20%),
      linear-gradient(to top, rgba(0, 0, 0, 0.55), rgba(0, 0, 0, 0) 30%);
  }
}
@media (max-width: 360px) {
  .flagship__brand span { display: none; }
}

@media (prefers-reduced-motion: reduce) {
  .flagship__enter-btn, .flagship__cue::before { animation: none; }
  .flagship__enter-btn { opacity: 1; }
}
