/* =====================================================================
   Design 3B · World Voyage — the Around the World annual dinner told as
   one flight (pages/rsvp/dinner-voyage.html, voyage.js).

   Palette: the Around the World mint and sky (Design 3), deep teal ink,
   one interactive accent per surface (teal on paper, gold on night) and
   coral for ink stamps. Motion uses transform, opacity and clip-path only;
   one easing set for the whole card:
     --ease-out     entrances, presses        cubic-bezier(.23, 1, .32, 1)
     --ease-in-out  things moving on screen   cubic-bezier(.77, 0, .175, 1)
     --ease-drawer  sheets                    cubic-bezier(.32, .72, 0, 1)
   Reduced motion keeps fades and drops movement (bottom of the file).
   ===================================================================== */
:root {
  --vg-paper: #f6fbf9;
  --vg-mist: #e4f5f0;
  --vg-mint: #cdeee3;
  --vg-sky: #c4e6f1;
  --vg-ink: #123239;
  --vg-ink-2: #46666d;
  --vg-line: rgba(18, 50, 57, .12);
  --vg-teal: #0d7b7b;
  --vg-teal-2: #18a3a3;
  --vg-coral: #e8743b;
  --vg-coral-ink: #b4501f;
  --vg-gold: #f2b632;
  --vg-night: #0b2530;
  --vg-night-2: #12384a;
  --vg-cream: #f4efe2;
  --vg-card: #ffffff;
  --f-display: "Fraunces", Georgia, serif;
  --f-body: "Plus Jakarta Sans", system-ui, -apple-system, "Segoe UI", sans-serif;
  --f-mono: "JetBrains Mono", ui-monospace, "SFMono-Regular", Consolas, monospace;
  --ease-out: cubic-bezier(.23, 1, .32, 1);
  --ease-in-out: cubic-bezier(.77, 0, .175, 1);
  --ease-drawer: cubic-bezier(.32, .72, 0, 1);
  --gut: 16px;
  --bar-h: 52px;
  --safe-b: env(safe-area-inset-bottom, 0px);
  --safe-t: env(safe-area-inset-top, 0px);
  color-scheme: light;
}
@media (min-width: 640px) { :root { --gut: 24px; } }
@media (min-width: 900px) { .vg-book { --bw: 300px; } .vg-bezel { --ww: 250px; } .vg-visa-t { font-size: 26px; } .vg-cover-t { font-size: 30px; } }
@media (min-width: 1024px) { :root { --gut: 40px; } }

*, *::before, *::after { box-sizing: border-box; }
html { -webkit-text-size-adjust: 100%; scroll-padding-top: calc(var(--bar-h) + 12px); scroll-padding-bottom: 112px; }
html.vg-smooth { scroll-behavior: smooth; }
body.vg { margin: 0; background: var(--vg-paper); color: var(--vg-ink); font: 400 16px/1.6 var(--f-body); -webkit-font-smoothing: antialiased; overflow-x: hidden; }
body.vg.is-gated { overflow: hidden; }
.vg img { display: block; max-width: 100%; }
.vg h1, .vg h2, .vg h3, .vg p, .vg ol, .vg ul, .vg dl, .vg dd, .vg figure { margin: 0; }
.vg ol, .vg ul { padding: 0; list-style: none; }
:where(.vg) button { font: inherit; color: inherit; background: none; border: 0; padding: 0; cursor: pointer; -webkit-tap-highlight-color: transparent; }
:where(.vg) a { color: inherit; -webkit-tap-highlight-color: transparent; }
.vg :focus-visible { outline: 2.5px solid var(--vg-teal-2); outline-offset: 3px; border-radius: 6px; }
.vg iconify-icon { display: inline-block; width: 1em; height: 1em; flex-shrink: 0; }
.vg [hidden] { display: none !important; }
.vg-sr { position: absolute; width: 1px; height: 1px; overflow: hidden; clip-path: inset(50%); white-space: nowrap; }

/* ── Buttons ── */
.vg-btn { display: inline-flex; align-items: center; justify-content: center; gap: 8px; min-height: 48px; padding: 0 22px; border-radius: 999px;
  background: var(--vg-teal); color: #fff; font: 700 15px/1.2 var(--f-body); letter-spacing: .005em; text-decoration: none; white-space: nowrap;
  box-shadow: 0 1px 0 rgba(255, 255, 255, .25) inset, 0 8px 18px -10px rgba(13, 123, 123, .9);
  transition: transform 160ms var(--ease-out), background-color 200ms ease, box-shadow 200ms ease; }
.vg-btn iconify-icon { font-size: 20px; }
.vg-btn:active { transform: scale(.97); }
.vg-btn.is-gold { background: var(--vg-gold); color: var(--vg-night); box-shadow: 0 1px 0 rgba(255, 255, 255, .45) inset, 0 10px 22px -12px rgba(242, 182, 50, .95); }
.vg-btn.is-ghost { background: transparent; color: var(--vg-teal); box-shadow: inset 0 0 0 1.5px currentColor; }
.vg-btn.is-ghost.is-light { color: var(--vg-cream); }
.vg-btn.is-glass { background: rgba(255, 255, 255, .62); color: var(--vg-ink); box-shadow: inset 0 0 0 1px rgba(255, 255, 255, .7), 0 8px 18px -12px rgba(18, 50, 57, .5); -webkit-backdrop-filter: blur(12px) saturate(160%); backdrop-filter: blur(12px) saturate(160%); }
.vg-btn.is-block { display: flex; width: 100%; }
@media (hover: hover) and (pointer: fine) {
  .vg-btn:hover { background: #0a6a6a; }
  .vg-btn.is-gold:hover { background: #f6c34f; }
  .vg-btn.is-ghost:hover, .vg-btn.is-glass:hover { background: rgba(13, 123, 123, .08); }
  .vg-btn.is-ghost.is-light:hover { background: rgba(244, 239, 226, .1); }
}
.vg-actions { display: flex; flex-wrap: wrap; gap: 12px; }

/* =====================================================================
   Entrance
   ===================================================================== */
.vg-gate { position: fixed; inset: 0; z-index: 60; display: grid; place-items: center; overflow: hidden; color: var(--vg-cream); }
.vg-gate[hidden] { display: none; }
.vg-gate-sky { position: absolute; inset: 0; background: radial-gradient(120% 70% at 50% 108%, #2f7c86 0%, #17485a 34%, var(--vg-night) 66%, #06161d 100%); transition: opacity 400ms ease; }
.vg-star { position: absolute; width: 2px; height: 2px; border-radius: 50%; background: #fff; opacity: .7; animation: vgTwinkle 3.2s ease-in-out infinite alternate; }
.vg-star:nth-child(1) { left: 12%; top: 14%; } .vg-star:nth-child(2) { left: 28%; top: 6%; animation-delay: -.8s; } .vg-star:nth-child(3) { left: 46%; top: 18%; animation-delay: -1.6s; }
.vg-star:nth-child(4) { left: 64%; top: 9%; animation-delay: -2.2s; } .vg-star:nth-child(5) { left: 82%; top: 16%; animation-delay: -.4s; } .vg-star:nth-child(6) { left: 90%; top: 34%; animation-delay: -1.2s; }
.vg-star:nth-child(7) { left: 7%; top: 38%; animation-delay: -2.6s; } .vg-star:nth-child(8) { left: 72%; top: 28%; width: 3px; height: 3px; animation-delay: -1.9s; }
@keyframes vgTwinkle { from { opacity: .15; } to { opacity: .85; } }
.vg-gate-cloud { position: absolute; color: rgba(196, 230, 241, .1); width: 220px; height: 103px; animation: vgDrift 46s linear infinite; }
.vg-gate-cloud.is-a { left: -10%; bottom: 14%; }
.vg-gate-cloud.is-b { left: 50%; bottom: 4%; width: 300px; height: 140px; color: rgba(196, 230, 241, .08); animation-duration: 64s; animation-delay: -20s; }
.vg-gate-cloud.is-c { left: 20%; top: 8%; width: 140px; height: 66px; animation-duration: 38s; animation-delay: -12s; }
@keyframes vgDrift { from { transform: translateX(-30vw); } to { transform: translateX(80vw); } }
.vg-gate-route { position: absolute; left: 0; top: 18%; width: 100%; height: 36%; color: rgba(242, 182, 50, .35); }
.vg-gate-stage { position: relative; display: grid; justify-items: center; gap: 18px; padding: 24px var(--gut) calc(24px + var(--safe-b)); text-align: center; transition: opacity 300ms ease, transform 500ms var(--ease-out); }
.vg-gate-eyebrow { font: 700 11px/1.3 var(--f-body); letter-spacing: .22em; text-transform: uppercase; color: rgba(244, 239, 226, .7); }
.vg-gate-to { font-size: 15px; color: rgba(244, 239, 226, .82); }
.vg-gate-to b { color: #fff; font-weight: 700; }
.vg-gate-note { display: inline-flex; align-items: center; gap: 6px; font-size: 12px; color: rgba(244, 239, 226, .6); }
.vg-gate-open { min-height: 52px; padding: 0 26px; }
.vg-gate-skip { position: fixed; right: var(--gut); bottom: calc(18px + var(--safe-b)); z-index: 3; min-height: 44px; padding: 10px 16px; border-radius: 999px; font-size: 13px; font-weight: 600; color: rgba(244, 239, 226, .8); background: rgba(6, 22, 29, .35); }

/* the passport */
.vg-book { --bw: min(62vw, 250px); position: relative; width: var(--bw); aspect-ratio: 5 / 7; margin: 6px 0 4px; perspective: 1400px; transition: transform 1000ms var(--ease-in-out); }
.vg-gate:not(.is-open) .vg-book { animation: vgFloat 4.6s ease-in-out infinite alternate; }
@keyframes vgFloat { from { transform: translateY(0); } to { transform: translateY(-5px); } }
.vg-book-page { position: absolute; inset: 0; border-radius: 4px 12px 12px 4px; padding: 18px 16px 14px; text-align: left; color: var(--vg-ink);
  background: radial-gradient(circle at 80% 18%, rgba(24, 163, 163, .12), transparent 46%), repeating-radial-gradient(circle at 30% 120%, rgba(13, 123, 123, .06) 0 1px, transparent 1px 7px), #fbf8f0;
  box-shadow: inset 10px 0 18px -14px rgba(0, 0, 0, .4), 0 22px 40px -18px rgba(0, 0, 0, .7); overflow: hidden; }
.vg-visa-k { font: 700 9px/1 var(--f-body); letter-spacing: .22em; text-transform: uppercase; color: var(--vg-coral-ink); }
.vg-visa-t { margin-top: 8px; font: 800 22px/1.05 var(--f-display); letter-spacing: -.015em; }
.vg-visa-dl { display: grid; gap: 7px; margin-top: 14px; }
.vg-visa-dl dt { font: 700 8px/1 var(--f-body); letter-spacing: .14em; text-transform: uppercase; color: var(--vg-ink-2); }
.vg-visa-dl dd { margin-top: 2px; font: 700 13px/1.25 var(--f-body); }
.vg-visa-mrz { position: absolute; left: 12px; right: 12px; bottom: 10px; font: 500 7.5px/1.35 var(--f-mono); letter-spacing: .06em; color: rgba(18, 50, 57, .55); word-break: break-all; }
.vg-stamp-land { position: absolute; right: -6px; bottom: 30px; width: 112px; height: 112px; opacity: 0; transform: rotate(-14deg) scale(1.5); mix-blend-mode: multiply; }
.vg-stamp-land svg { width: 100%; height: 100%; }
.vg-gate.is-stamped .vg-stamp-land { animation: vgStampIn 420ms var(--ease-out) forwards; }
@keyframes vgStampIn { 0% { opacity: 0; transform: rotate(-4deg) scale(1.6); } 55% { opacity: .95; transform: rotate(-13deg) scale(.94); } 100% { opacity: .92; transform: rotate(-12deg) scale(1); } }
.vg-gate.is-stamped .vg-book-page { animation: vgThump 260ms var(--ease-out) 200ms; }
@keyframes vgThump { 40% { transform: scale(.985); } }
.vg-book-cover { position: absolute; inset: 0; transform-origin: 0 50%; transform-style: preserve-3d; }
.vg-gate.is-open .vg-book-cover { animation: vgCoverOpen 1000ms var(--ease-in-out) forwards; }
@keyframes vgCoverOpen { from { transform: rotateY(0); } to { transform: rotateY(-180deg); } }
.vg-cover-front, .vg-cover-back { position: absolute; inset: 0; -webkit-backface-visibility: hidden; backface-visibility: hidden; overflow: hidden; }
.vg-cover-front { display: grid; place-items: center; align-content: center; gap: 10px; padding: 22px 18px; border-radius: 4px 12px 12px 4px; color: #e9c983;
  background: radial-gradient(120% 90% at 30% 0%, rgba(255, 255, 255, .08), transparent 55%), repeating-linear-gradient(115deg, rgba(255, 255, 255, .018) 0 2px, transparent 2px 5px), linear-gradient(160deg, #11555e, #0b3b43 60%, #082d34);
  box-shadow: inset 6px 0 10px -6px rgba(0, 0, 0, .55), inset 0 0 0 1px rgba(233, 201, 131, .14), 0 26px 44px -18px rgba(0, 0, 0, .8); }
.vg-cover-front::after { content: ""; position: absolute; inset: 0; background: linear-gradient(90deg, rgba(0, 0, 0, .35), transparent 40%); opacity: 0; }
.vg-gate.is-open .vg-cover-front::after { animation: vgShadeFlip 1000ms var(--ease-in-out) forwards; }
@keyframes vgShadeFlip { 50% { opacity: 1; } 100% { opacity: .2; } }
.vg-cover-k { font: 700 10px/1 var(--f-body); letter-spacing: .3em; text-transform: uppercase; }
.vg-cover-globe { width: 70px; height: 70px; color: #e9c983; filter: drop-shadow(0 1px 0 rgba(0, 0, 0, .35)); }
.vg-cover-t { font: 900 26px/1 var(--f-display); letter-spacing: .02em; text-transform: uppercase; }
.vg-cover-s { font: 600 11px/1 var(--f-body); letter-spacing: .2em; text-transform: uppercase; color: rgba(233, 201, 131, .78); }
.vg-cover-foil { position: absolute; inset: -20% -60%; background: linear-gradient(105deg, transparent 42%, rgba(255, 240, 200, .26) 50%, transparent 58%); transform: translateX(-60%); animation: vgFoil 5.5s var(--ease-in-out) 1.2s infinite; pointer-events: none; }
@keyframes vgFoil { 0% { transform: translateX(-60%); } 34%, 100% { transform: translateX(60%); } }
.vg-cover-back { transform: rotateY(180deg); border-radius: 12px 4px 4px 12px; display: grid; align-content: center; justify-items: center; gap: 10px; padding: 20px 18px; text-align: center; color: var(--vg-ink);
  background: repeating-radial-gradient(circle at 50% 50%, rgba(13, 123, 123, .07) 0 1px, transparent 1px 9px), #f3efe3; box-shadow: inset -10px 0 18px -14px rgba(0, 0, 0, .45); }
.vg-cover-back p { font: 500 13px/1.35 var(--f-display); }
.vg-cover-back small { font-size: 10px; line-height: 1.35; color: var(--vg-ink-2); }
.vg-book-compass { width: 64px; height: 64px; color: var(--vg-teal); }

/* the cabin window: the wall's clip-path (set by voyage.js) has a hole that grows */
.vg-window { position: absolute; inset: 0; z-index: 2; opacity: 0; pointer-events: none; background: linear-gradient(90deg, #c3ccce, #e9eeee 26%, #f1f4f4 50%, #e9eeee 74%, #c3ccce); }
.vg-bezel { --ww: min(52vw, 210px); --wh: calc(var(--ww) * 1.42); position: absolute; left: 50%; top: 50%; z-index: 3; width: var(--ww); height: var(--wh); margin: calc(var(--wh) / -2) 0 0 calc(var(--ww) / -2);
  border-radius: calc(var(--ww) * .44) / calc(var(--wh) * .3); opacity: 0; pointer-events: none; overflow: hidden;
  box-shadow: 0 0 0 10px #f7f9f9, 0 0 0 12px #c9d3d5, 0 0 0 22px rgba(255, 255, 255, .45), inset 0 0 0 2px rgba(0, 0, 0, .08), inset 0 12px 26px rgba(0, 0, 0, .28); }
.vg-shade { position: absolute; inset: 0; background: linear-gradient(180deg, #f2eee4, #e3dccd); }
.vg-shade::after { content: ""; position: absolute; left: 38%; right: 38%; bottom: 10px; height: 6px; border-radius: 3px; background: #cfc6b3; }

/* =====================================================================
   Top bar, dock, sheet, toast
   ===================================================================== */
.vg-bar { position: fixed; z-index: 40; left: 0; right: 0; top: 0; display: flex; align-items: center; gap: 10px; height: calc(var(--bar-h) + var(--safe-t)); padding: var(--safe-t) var(--gut) 0;
  background: rgba(246, 251, 249, .8); -webkit-backdrop-filter: blur(18px) saturate(170%); backdrop-filter: blur(18px) saturate(170%); box-shadow: 0 1px 0 var(--vg-line);
  transform: translateY(-105%); transition: transform 400ms var(--ease-out); }
.vg-bar.is-on { transform: none; }
.vg-bar-brand { display: inline-flex; align-items: center; gap: 8px; min-width: 44px; min-height: 44px; font: 800 13px/1 var(--f-body); letter-spacing: .02em; text-decoration: none; white-space: nowrap; }
.vg-bar-brand svg { width: 22px; height: 22px; color: var(--vg-teal); }
.vg-bar-brand span { display: none; }
.vg-bar-flight { flex: 1; display: flex; align-items: center; gap: 8px; min-width: 0; font: 700 11px/1 var(--f-mono); color: var(--vg-ink-2); }
.vg-bar-track { position: relative; flex: 1; height: 2px; border-radius: 2px; background: repeating-linear-gradient(90deg, var(--vg-line) 0 4px, transparent 4px 8px); }
.vg-bar-track i { position: absolute; inset: 0; border-radius: inherit; background: var(--vg-teal-2); transform-origin: 0 50%; transform: scaleX(0); }
.vg-bar-track svg { position: absolute; left: -9px; top: -8px; width: 18px; height: 18px; color: var(--vg-teal); }
.vg-bar-pl { position: absolute; inset: 0; }
.vg-bar-btn { position: relative; display: inline-flex; align-items: center; justify-content: center; gap: 6px; min-width: 44px; height: 44px; padding: 0 10px; border-radius: 999px; font: 700 13px/1 var(--f-mono); transition: transform 160ms var(--ease-out), background-color 200ms ease; }
.vg-bar-btn iconify-icon { font-size: 20px; }
.vg-bar-btn:active { transform: scale(.94); }
.vg-bar-btn[aria-pressed="true"] { color: var(--vg-teal); background: rgba(13, 123, 123, .1); }
.vg-bar-stamps { color: var(--vg-coral-ink); background: rgba(232, 116, 59, .1); }
.vg-bar-stamps.is-bump { animation: vgBump 420ms var(--ease-out); }
@keyframes vgBump { 30% { transform: scale(1.18); } }
.vg-bar-btn[data-music] .vg-eq { display: none; }
.vg-bar-btn[aria-pressed="true"] .vg-eq { display: inline-flex; }
.vg-eq { gap: 2px; align-items: flex-end; height: 14px; }
.vg-eq i { width: 2.5px; height: 100%; border-radius: 1px; background: currentColor; transform-origin: 50% 100%; animation: vgEq 900ms ease-in-out infinite alternate; }
.vg-eq i:nth-child(2) { animation-delay: -.3s; } .vg-eq i:nth-child(3) { animation-delay: -.6s; }
@keyframes vgEq { from { transform: scaleY(.25); } to { transform: scaleY(1); } }
@media (hover: hover) and (pointer: fine) { .vg-bar-btn:hover { background: rgba(18, 50, 57, .06); } }
@media (min-width: 640px) { .vg-bar-brand span { display: inline; } .vg-bar-flight { max-width: 420px; margin: 0 auto; } }

.vg-dock { position: fixed; z-index: 40; left: 50%; bottom: calc(10px + var(--safe-b)); display: grid; grid-template-columns: repeat(5, 1fr); align-items: end; width: min(calc(100% - 2 * var(--gut)), 460px); padding: 6px;
  border-radius: 24px; background: rgba(246, 251, 249, .84); -webkit-backdrop-filter: blur(18px) saturate(170%); backdrop-filter: blur(18px) saturate(170%);
  box-shadow: 0 0 0 1px rgba(255, 255, 255, .7) inset, 0 0 0 1px var(--vg-line), 0 16px 36px -16px rgba(18, 50, 57, .45);
  transform: translate(-50%, calc(100% + 24px)); transition: transform 500ms var(--ease-out); }
.vg-dock.is-on { transform: translate(-50%, 0); }
.vg-dock.is-on.is-kb { transform: translate(-50%, calc(100% + 24px)); }
.vg-dock > a, .vg-dock > button { display: grid; justify-items: center; gap: 2px; min-height: 48px; padding: 6px 2px 4px; border-radius: 18px; font: 600 10.5px/1.1 var(--f-body); color: var(--vg-ink-2); text-decoration: none; transition: transform 160ms var(--ease-out), color 200ms ease, background-color 200ms ease; }
.vg-dock iconify-icon { font-size: 22px; }
.vg-dock > a:active, .vg-dock > button:active { transform: scale(.94); }
.vg-dock > .is-cur { color: var(--vg-teal); }
.vg-dock > .is-main { margin-top: -18px; min-height: 60px; padding-top: 10px; color: #fff; background: var(--vg-teal); box-shadow: 0 10px 20px -10px rgba(13, 123, 123, .95); }
.vg-dock > .is-main.is-cur { color: #fff; }

.vg-sheet { position: fixed; inset: 0; z-index: 70; }
.vg-sheet[hidden] { display: none; }
.vg-sheet-scrim { position: absolute; inset: 0; background: rgba(6, 22, 29, .45); opacity: 0; transition: opacity 300ms ease; }
.vg-sheet-panel { position: absolute; left: 50%; bottom: 0; width: min(100%, 560px); max-height: 88svh; overflow: auto; overscroll-behavior: contain; padding: 14px var(--gut) calc(24px + var(--safe-b));
  border-radius: 26px 26px 0 0; background: var(--vg-paper); box-shadow: 0 -20px 50px -20px rgba(6, 22, 29, .5); transform: translate(-50%, 100%); touch-action: pan-y; }
.vg-sheet.is-in .vg-sheet-scrim { opacity: 1; }
.vg-sheet-grip { display: block; width: 40px; height: 5px; margin: 0 auto 10px; border-radius: 3px; background: rgba(18, 50, 57, .2); }
.vg-sheet-x { position: absolute; right: 12px; top: 10px; display: grid; place-items: center; width: 44px; height: 44px; border-radius: 50%; font-size: 20px; color: var(--vg-ink-2); }
.vg-sheet-body h3 { font: 800 24px/1.1 var(--f-display); letter-spacing: -.01em; padding-right: 44px; }
.vg-sheet-body > p { margin-top: 6px; color: var(--vg-ink-2); }
.vg-sheet-body .vg-actions { margin-top: 18px; }

.vg-toast { position: fixed; z-index: 80; left: 0; right: 0; top: calc(var(--bar-h) + var(--safe-t) + 10px); display: flex; width: max-content; margin: 0 auto; align-items: center; gap: 8px; max-width: calc(100% - 2 * var(--gut)); padding: 10px 16px; border-radius: 999px;
  background: var(--vg-night); color: var(--vg-cream); font: 600 14px/1.3 var(--f-body); box-shadow: 0 14px 30px -14px rgba(6, 22, 29, .7);
  opacity: 0; transform: translateY(-16px); pointer-events: none; transition: opacity 400ms ease, transform 400ms ease; }
.vg-toast.is-in { opacity: 1; transform: none; }
.vg-toast iconify-icon { font-size: 18px; color: var(--vg-gold); }

/* =====================================================================
   Hero
   ===================================================================== */
.vg-hero { position: relative; isolation: isolate; height: 100svh; min-height: 620px; overflow: hidden; color: var(--vg-ink); }
.vg-hero-media { position: absolute; inset: -4% 0 -8%; z-index: -3; }
.vg-hero-media img { width: 100%; height: 100%; object-fit: cover; object-position: 50% 30%; }
.vg-js .vg-hero-media img { transform: scale(1.18); }
.vg-hero.is-live .vg-hero-media img { transform: none; transition: transform 1600ms var(--ease-out); }
.vg-hero-shade { position: absolute; inset: 0; z-index: -2; background: linear-gradient(180deg, rgba(246, 251, 249, 0) 34%, rgba(246, 251, 249, .5) 58%, rgba(246, 251, 249, .9) 78%, var(--vg-paper) 100%); }
.vg-hero-route { position: absolute; left: 0; top: 6%; z-index: -1; width: 100%; height: 50%; color: rgba(255, 255, 255, .85); }
.vg-js .vg-hero-route { clip-path: inset(0 100% 0 0); }
.vg-hero.is-live .vg-hero-route { clip-path: inset(0 0 0 0); transition: clip-path 2600ms var(--ease-in-out) 300ms; }
.vg-hero-plane { position: absolute; left: 0; top: 0; z-index: -1; width: 30px; height: 30px; color: #fff; filter: drop-shadow(0 2px 4px rgba(18, 50, 57, .25)); opacity: 0; pointer-events: none; }
.vg-hero-copy { position: absolute; left: 0; right: 0; bottom: calc(92px + var(--safe-b)); padding: 0 var(--gut); }
.vg-hero-eyebrow { font: 700 11px/1.4 var(--f-body); letter-spacing: .16em; text-transform: uppercase; color: var(--vg-teal); }
.vg-hero-title:focus { outline: none; }
.vg-hero-title { margin: 8px 0 0 -.04em; font: 900 clamp(58px, 17vw, 168px)/.86 var(--f-display); font-variation-settings: "opsz" 144; letter-spacing: -.035em; }
.vg-w { display: inline-block; overflow: hidden; padding: 0 .04em .1em; margin-bottom: -.1em; vertical-align: bottom; }
.vg-w > span { display: inline-block; }
.vg-w.is-sm { font: italic 500 .42em/1 var(--f-display); letter-spacing: 0; color: var(--vg-coral-ink); vertical-align: .9em; }
.vg-js .vg-w > span { transform: translateY(110%); }
.vg-hero.is-live .vg-w > span { transform: none; transition: transform 1000ms var(--ease-out); }
.vg-hero.is-live .vg-w:nth-child(2) > span { transition-delay: 90ms; }
.vg-hero.is-live .vg-w:nth-child(3) > span { transition-delay: 180ms; }
.vg-hero-tag { margin-top: 12px; max-width: 30em; font: 600 15px/1.45 var(--f-body); }
.vg-hero-tag span { display: block; font-weight: 500; color: var(--vg-ink-2); }
.vg-hero-meta { display: flex; flex-wrap: wrap; gap: 6px; margin-top: 14px; }
.vg-hero-meta li { display: inline-flex; align-items: center; gap: 6px; padding: 6px 10px; border-radius: 999px; font: 600 13px/1.2 var(--f-body); background: rgba(255, 255, 255, .72); box-shadow: inset 0 0 0 1px rgba(18, 50, 57, .1); -webkit-backdrop-filter: blur(10px); backdrop-filter: blur(10px); }
.vg-hero-meta iconify-icon { font-size: 16px; color: var(--vg-teal); }
.vg-hero-cta { display: flex; flex-wrap: wrap; gap: 10px; margin-top: 18px; }
.vg-hero-cta .vg-btn { padding: 0 18px; }
.vg-js .vg-hero-tag, .vg-js .vg-hero-meta, .vg-js .vg-hero-cta, .vg-js .vg-hero-eyebrow { opacity: 0; transform: translateY(14px); }
.vg-hero.is-live .vg-hero-eyebrow, .vg-hero.is-live .vg-hero-tag, .vg-hero.is-live .vg-hero-meta, .vg-hero.is-live .vg-hero-cta { opacity: 1; transform: none; transition: opacity 600ms ease, transform 800ms var(--ease-out); }
.vg-hero.is-live .vg-hero-tag { transition-delay: 380ms; } .vg-hero.is-live .vg-hero-meta { transition-delay: 460ms; } .vg-hero.is-live .vg-hero-cta { transition-delay: 540ms; }
.vg-scroll { position: absolute; right: calc(var(--gut) + 4px); bottom: calc(100px + var(--safe-b)); z-index: 2; display: grid; justify-items: center; gap: 6px; font: 700 10px/1 var(--f-body); letter-spacing: .18em; text-transform: uppercase; color: var(--vg-ink-2); text-decoration: none; transition: opacity 300ms ease; }
.vg-scroll span { writing-mode: vertical-rl; }
.vg-scroll i { position: relative; width: 2px; height: 34px; background: repeating-linear-gradient(180deg, var(--vg-ink-2) 0 3px, transparent 3px 7px); opacity: .7; }
.vg-scroll svg { position: absolute; left: -8px; top: 0; width: 18px; height: 18px; color: var(--vg-teal); transform: rotate(90deg); animation: vgCue 1800ms var(--ease-in-out) infinite; }
@keyframes vgCue { 0% { transform: translateY(-4px) rotate(90deg); opacity: 0; } 25% { opacity: 1; } 80% { opacity: 1; } 100% { transform: translateY(24px) rotate(90deg); opacity: 0; } }
.vg-scroll.is-gone { opacity: 0; pointer-events: none; }
.vg-hero-bank { position: absolute; left: -2%; right: -2%; bottom: -1px; z-index: 1; width: 104%; height: clamp(70px, 14vw, 180px); pointer-events: none; }
@media (min-width: 761px) {
  .vg-hero-media img { object-position: 50% 42%; }
  .vg-hero-shade { background: linear-gradient(90deg, rgba(246, 251, 249, .78) 0%, rgba(246, 251, 249, .45) 38%, rgba(246, 251, 249, 0) 64%), linear-gradient(180deg, rgba(246, 251, 249, 0) 55%, rgba(246, 251, 249, .85) 88%, var(--vg-paper) 100%); }
  .vg-hero-copy { bottom: max(120px, 16svh); max-width: 1200px; margin: 0 auto; }
  .vg-hero-tag { font-size: 18px; }
}

/* =====================================================================
   Sections
   ===================================================================== */
.vg-sec { position: relative; padding: 72px var(--gut); }
.vg-sec > * { max-width: 1120px; margin-left: auto; margin-right: auto; }
@media (min-width: 1024px) { .vg-sec { padding-top: 120px; padding-bottom: 120px; } }
.vg-head { display: grid; gap: 12px; margin-bottom: 32px; }
.vg-eyebrow { display: inline-flex; align-items: center; gap: 8px; font: 700 11px/1.3 var(--f-body); letter-spacing: .16em; text-transform: uppercase; color: var(--vg-teal); }
.vg-eyebrow svg, .vg-eyebrow iconify-icon { width: 16px; height: 16px; font-size: 16px; }
.vg-h2 { font: 700 clamp(34px, 9vw, 60px)/1.02 var(--f-display); font-variation-settings: "opsz" 120; letter-spacing: -.025em; text-wrap: balance; }
.vg-h2 em { font-style: italic; font-weight: 500; color: var(--vg-teal); }
.vg-lead { max-width: 36em; font-size: 16px; line-height: 1.6; color: var(--vg-ink-2); }
.vg-sign { font: italic 500 16px/1.3 var(--f-display); color: var(--vg-ink); }
@media (min-width: 1024px) { .vg-lead { font-size: 18px; } .vg-head { margin-bottom: 48px; } }

/* scroll reveals (voyage.js adds .is-in once, as each block enters) */
.vg-js [data-reveal] { opacity: 0; transform: translateY(28px); }
.vg-js [data-reveal].is-in { opacity: 1; transform: none; transition: opacity 700ms ease, transform 900ms var(--ease-out); }
.vg-js [data-reveal="wipe"] { opacity: 1; transform: none; clip-path: inset(0 0 100% 0 round 24px); }
.vg-js [data-reveal="wipe"].is-in { clip-path: inset(0 0 0 0 round 24px); transition: clip-path 1100ms var(--ease-in-out); }
.vg-edge-lm { position: absolute; width: 84px; height: 84px; color: var(--vg-teal-2); opacity: .22; pointer-events: none; }
.vg-edge-lm.is-tl { right: calc(var(--gut) - 6px); top: 24px; }
.vg-edge-lm.is-tr { right: calc(var(--gut) - 6px); top: 24px; }
@media (min-width: 1024px) { .vg-edge-lm { width: 140px; height: 140px; top: 60px; } }

/* ── Boarding pass ── */
.vg-boarding { padding-top: 24px; }
.vg-bp-wrap { perspective: 1200px; }
.vg-js [data-reveal="pass"] { transform: translateY(48px) rotate(-2.5deg); transform-origin: 20% 100%; }
.vg-bp { position: relative; display: grid; border-radius: 22px; background: var(--vg-card); color: var(--vg-ink); box-shadow: 0 1px 0 rgba(18, 50, 57, .05), 0 24px 50px -26px rgba(18, 50, 57, .45); overflow: hidden; }
.vg-bp::before { content: ""; display: block; height: 7px; background: repeating-linear-gradient(135deg, var(--vg-coral) 0 12px, #fff 12px 20px, var(--vg-teal-2) 20px 32px, #fff 32px 40px); }
.vg-bp-main { padding: 18px 18px 20px; }
.vg-bp-top { display: flex; justify-content: space-between; align-items: center; font: 800 12px/1 var(--f-body); letter-spacing: .08em; text-transform: uppercase; }
.vg-bp-air { display: inline-flex; align-items: center; gap: 8px; color: var(--vg-teal); }
.vg-bp-air svg { width: 20px; height: 20px; }
.vg-bp-class { padding: 5px 10px; border-radius: 999px; background: var(--vg-mist); font-size: 10px; letter-spacing: .14em; }
.vg-bp-route { display: grid; grid-template-columns: auto 1fr auto; align-items: center; gap: 10px; margin: 20px 0 18px; }
.vg-bp-port small { display: block; font: 700 9.5px/1 var(--f-body); letter-spacing: .14em; text-transform: uppercase; color: var(--vg-ink-2); }
.vg-bp-port b { display: block; margin-top: 6px; font: 700 clamp(34px, 11vw, 48px)/1 var(--f-mono); letter-spacing: -.02em; }
.vg-bp-port span { display: block; margin-top: 4px; font-size: 12.5px; line-height: 1.3; color: var(--vg-ink-2); }
.vg-bp-port.is-to { text-align: right; }
.vg-bp-arc { position: relative; height: 40px; color: var(--vg-teal-2); }
.vg-bp-arc svg:first-child { width: 100%; height: 100%; }
.vg-bp-arc-plane { position: absolute; left: 0; top: 2px; width: 22px; height: 22px; color: var(--vg-teal); }
.vg-bp-fields { display: grid; grid-template-columns: 1fr 1fr; gap: 14px 16px; padding-top: 16px; border-top: 1px dashed var(--vg-line); }
.vg-bp-fields .is-wide { grid-column: 1 / -1; }
.vg-bp-fields dt { font: 700 9.5px/1.2 var(--f-body); letter-spacing: .12em; text-transform: uppercase; color: var(--vg-ink-2); }
.vg-bp-fields dd { margin-top: 3px; font: 700 15px/1.3 var(--f-body); }
.vg-bp-stub { position: relative; display: grid; grid-template-columns: 1fr auto; align-items: center; gap: 4px 16px; padding: 18px; border-top: 2px dashed rgba(18, 50, 57, .16); background: #f5faf8; }
.vg-bp-stub::before, .vg-bp-stub::after { content: ""; position: absolute; top: -12px; width: 22px; height: 22px; border-radius: 50%; background: var(--vg-paper); }
.vg-bp-stub::before { left: -11px; } .vg-bp-stub::after { right: -11px; }
.vg-bp-stub small { display: block; font: 700 9.5px/1 var(--f-body); letter-spacing: .12em; text-transform: uppercase; color: var(--vg-ink-2); }
.vg-bp-stub b { display: block; margin-top: 4px; font-size: 14px; }
.vg-bp-code { grid-row: span 2; width: 120px; height: 44px; color: var(--vg-ink); }
.vg-bp-status { font: 600 12.5px/1.3 var(--f-body); color: var(--vg-coral-ink); }
.vg-bp-status.is-ok { color: var(--vg-teal); }
.vg-boarding .vg-actions { margin-top: 24px; }
.vg-bp-wrap.is-in .vg-bp-arc-plane { animation: vgArcFly 1800ms var(--ease-in-out) 500ms both; }
@keyframes vgArcFly {
  0% { transform: translate(0, 24px) rotate(-38deg); } 25% { transform: translate(calc(var(--arc-w, 120px) * .25 - 11px), 4px) rotate(-18deg); }
  50% { transform: translate(calc(var(--arc-w, 120px) * .5 - 11px), -2px) rotate(0); } 75% { transform: translate(calc(var(--arc-w, 120px) * .75 - 11px), 4px) rotate(18deg); }
  100% { transform: translate(calc(var(--arc-w, 120px) - 22px), 24px) rotate(38deg); } }
@media (min-width: 760px) {
  .vg-bp { grid-template-columns: 1fr 240px; }
  .vg-bp::before { grid-column: 1 / -1; }
  .vg-bp-main { padding: 26px 30px 28px; }
  .vg-bp-fields { grid-template-columns: repeat(4, 1fr); }
  .vg-bp-fields .is-wide { grid-column: span 2; }
  .vg-bp-stub { grid-template-columns: 1fr; align-content: center; gap: 14px; border-top: 0; border-left: 2px dashed rgba(18, 50, 57, .16); padding: 24px; }
  .vg-bp-stub::before, .vg-bp-stub::after { left: -12px; right: auto; }
  .vg-bp-stub::before { top: -12px; } .vg-bp-stub::after { top: auto; bottom: -12px; }
  .vg-bp-code { grid-row: auto; width: 100%; height: 56px; }
  .vg-boarding .vg-head { grid-template-columns: 1fr 1fr; align-items: end; column-gap: 48px; }
  .vg-boarding .vg-head .vg-eyebrow, .vg-boarding .vg-head .vg-h2 { grid-column: 1; }
  .vg-boarding .vg-head .vg-lead { grid-column: 2; grid-row: 1 / span 2; align-self: end; }
  .vg-boarding .vg-head .vg-sign { grid-column: 2; }
}

/* ── Departures board ── */
.vg-board-sec { background: linear-gradient(180deg, var(--vg-paper), var(--vg-mist) 40%, var(--vg-paper)); }
.vg-board { position: relative; border-radius: 26px; padding: 18px 14px 16px; color: var(--vg-cream); background: radial-gradient(120% 70% at 50% 0%, #174759, var(--vg-night) 62%); box-shadow: 0 0 0 1px rgba(255, 255, 255, .04) inset, 0 30px 60px -30px rgba(6, 22, 29, .75); overflow: hidden; }
.vg-board::after { content: ""; position: absolute; inset: 0; pointer-events: none; background: repeating-linear-gradient(180deg, rgba(255, 255, 255, .025) 0 1px, transparent 1px 4px); }
.vg-board-head { display: flex; justify-content: space-between; align-items: center; gap: 10px; padding: 0 4px 14px; border-bottom: 1px solid rgba(244, 239, 226, .12); font: 700 12px/1 var(--f-body); letter-spacing: .14em; text-transform: uppercase; color: var(--vg-gold); }
.vg-board-head span:first-child { display: inline-flex; align-items: center; gap: 8px; }
.vg-board-head iconify-icon { font-size: 18px; }
.vg-board-clock { font: 700 14px/1 var(--f-mono); letter-spacing: .06em; color: var(--vg-cream); }
.vg-count { display: grid; grid-template-columns: repeat(4, auto); justify-content: center; gap: 10px; padding: 22px 0 18px; }
.vg-count-u { display: grid; justify-items: center; gap: 8px; }
.vg-count-u small { font: 600 9.5px/1 var(--f-body); letter-spacing: .1em; text-transform: uppercase; color: rgba(244, 239, 226, .62); }
.vg-flaps { display: flex; gap: 3px; }
.vg-flap { position: relative; width: clamp(24px, 7.6vw, 46px); height: clamp(38px, 11.4vw, 68px); border-radius: 6px; font: 700 clamp(24px, 7.6vw, 46px)/1 var(--f-mono); color: var(--vg-cream); perspective: 260px; }
.vg-flap > span { position: absolute; inset: 0; display: grid; place-items: center; border-radius: inherit; background: linear-gradient(180deg, #1d4d60 0%, #163f4f 50%, #12384a 50%, #0f3140 100%); -webkit-backface-visibility: hidden; backface-visibility: hidden; }
.vg-flap > .t, .vg-flap > .ft { clip-path: inset(0 0 50% 0); }
.vg-flap > .b, .vg-flap > .fb { clip-path: inset(50% 0 0 0); }
.vg-flap > .ft { transform-origin: 50% 50%; }
.vg-flap > .fb { transform-origin: 50% 50%; transform: rotateX(90deg); }
.vg-flap::after { content: ""; position: absolute; left: 0; right: 0; top: 50%; height: 1.5px; margin-top: -.75px; background: rgba(4, 16, 21, .7); z-index: 3; }
.vg-flap.is-flip > .ft { animation: vgFlapTop 300ms ease-in forwards; }
.vg-flap.is-flip > .fb { animation: vgFlapBot 300ms var(--ease-out) 150ms forwards; }
@keyframes vgFlapTop { to { transform: rotateX(-90deg); } }
@keyframes vgFlapBot { from { transform: rotateX(90deg); } to { transform: rotateX(0); } }
.vg-flights-head { display: none; }
.vg-flights { display: grid; border-top: 1px solid rgba(244, 239, 226, .12); }
.vg-flight { display: grid; grid-template-columns: 54px 1fr auto; align-items: start; gap: 4px 12px; padding: 14px 4px; border-bottom: 1px solid rgba(244, 239, 226, .08); }
.vg-flight-t { font: 700 15px/1.35 var(--f-mono); color: var(--vg-gold); }
.vg-flight-m b { display: block; font: 700 15px/1.35 var(--f-body); }
.vg-flight-m small { display: block; margin-top: 2px; font: 500 13px/1.45 var(--f-body); color: rgba(244, 239, 226, .66); }
.vg-flight-code { display: inline-block; margin-top: 6px; font: 600 11px/1 var(--f-mono); letter-spacing: .04em; color: rgba(244, 239, 226, .64); }
.vg-flight-z { display: none; font: 600 13px/1.35 var(--f-mono); color: rgba(244, 239, 226, .75); }
.vg-flight-s { align-self: start; display: inline-flex; align-items: center; gap: 6px; padding: 5px 8px; border-radius: 6px; font: 700 10.5px/1 var(--f-mono); letter-spacing: .06em; text-transform: uppercase; white-space: nowrap; color: #7fe3d6; background: rgba(127, 227, 214, .1); }
.vg-flight-s.is-board { color: var(--vg-night); background: var(--vg-gold); }
.vg-flight-s.is-board::before { content: ""; width: 6px; height: 6px; border-radius: 50%; background: currentColor; animation: vgBlink 1s steps(2, jump-none) infinite; }
@keyframes vgBlink { 50% { opacity: .2; } }
.vg-flight-s.is-next { color: #bfe3ee; background: rgba(191, 227, 238, .12); }
.vg-flight-s.is-gone { color: rgba(244, 239, 226, .64); background: rgba(244, 239, 226, .06); }
.vg-flight.is-key .vg-flight-m b::after { content: "★"; margin-left: 6px; font-size: 12px; color: var(--vg-gold); }
.vg-flight.is-now { background: linear-gradient(90deg, rgba(242, 182, 50, .12), transparent 70%); }
.vg-board-foot { padding: 14px 4px 2px; font-size: 12px; color: rgba(244, 239, 226, .64); }
@media (min-width: 760px) {
  .vg-board { padding: 26px 28px 22px; }
  .vg-count { gap: 22px; padding: 30px 0 26px; }
  .vg-flights-head { display: grid; grid-template-columns: 76px 1fr 140px 120px; gap: 16px; padding: 10px 4px; font: 700 10px/1 var(--f-body); letter-spacing: .14em; text-transform: uppercase; color: rgba(244, 239, 226, .62); }
  .vg-flight { grid-template-columns: 76px 1fr 140px 120px; gap: 16px; padding: 16px 4px; }
  .vg-flight-z { display: block; }
  .vg-flight-code { display: none; }
  .vg-flight-s { justify-self: start; }
}

/* ── Route: the sticky globe ── */
.vg-route { position: relative; height: calc(var(--n, 7) * 80svh + 100svh); background: linear-gradient(180deg, var(--vg-paper), #eaf6f8 18%, #e6f3f6 82%, var(--vg-paper)); }
.vg-route-pin { position: sticky; top: 0; display: grid; grid-template-rows: auto minmax(0, 1fr) auto auto; justify-items: center; height: 100svh; padding: calc(var(--bar-h) + var(--safe-t) + 14px) var(--gut) calc(92px + var(--safe-b)); overflow: hidden; }
.vg-route-head { display: grid; justify-items: center; gap: 6px; text-align: center; }
.vg-route-head .vg-h2 { font-size: clamp(28px, 7.4vw, 52px); }
.vg-route-hint { max-width: 30em; font-size: 13.5px; line-height: 1.45; color: var(--vg-ink-2); }
/* the globe fills its row and stays a true square: the smaller of the row's width and height */
.vg-globe { container-type: size; display: grid; place-items: center; width: 100%; height: 100%; min-height: 120px; padding: 8px 0; }
.vg-globe-in { position: relative; width: min(100cqw, 100cqh, 640px); aspect-ratio: 1; }
.vg-globe canvas { position: absolute; inset: 0; width: 100%; height: 100%; }
.vg-globe-in::before { content: ""; position: absolute; inset: 6%; border-radius: 50%; box-shadow: 0 0 60px 6px rgba(24, 163, 163, .22), 0 40px 70px -30px rgba(18, 50, 57, .45); }
.vg-globe-ring { position: absolute; inset: -2%; width: 104%; height: 104%; color: var(--vg-teal-2); opacity: .5; animation: vgSpin 90s linear infinite; }
@keyframes vgSpin { to { transform: rotate(360deg); } }
.vg-stops { position: relative; display: grid; width: 100%; max-width: 520px; }
.vg-stop { grid-area: 1 / 1; position: relative; display: grid; grid-template-columns: 104px 1fr; gap: 14px; align-items: center; padding: 10px; border-radius: 22px; background: rgba(255, 255, 255, .86); box-shadow: inset 0 0 0 1px rgba(255, 255, 255, .9), 0 18px 40px -22px rgba(18, 50, 57, .45); -webkit-backdrop-filter: blur(14px); backdrop-filter: blur(14px);
  opacity: 0; transform: translateY(18px) scale(.98); transition: opacity 360ms ease, transform 500ms var(--ease-out); pointer-events: none; }
.vg-stop.is-cur { opacity: 1; transform: none; pointer-events: auto; }
.vg-stop.is-past { transform: translateY(-14px) scale(.98); }
.vg-stop-ph { position: relative; height: 148px; border-radius: 12px; overflow: hidden; background: var(--vg-mist);
  -webkit-mask: radial-gradient(circle at 4px 4px, transparent 3px, #000 3.5px) -4px -4px / 9.5px 9.5px repeat, linear-gradient(#000, #000) 6px 6px / calc(100% - 12px) calc(100% - 12px) no-repeat;
  mask: radial-gradient(circle at 4px 4px, transparent 3px, #000 3.5px) -4px -4px / 9.5px 9.5px repeat, linear-gradient(#000, #000) 6px 6px / calc(100% - 12px) calc(100% - 12px) no-repeat; }
.vg-stop-ph img { width: 100%; height: 100%; object-fit: cover; }
.vg-stop-tx { display: grid; gap: 3px; min-width: 0; }
.vg-stop-k { display: flex; align-items: center; gap: 8px; font: 700 11px/1 var(--f-mono); letter-spacing: .06em; color: var(--vg-coral-ink); }
.vg-stop-k b { font-weight: 700; }
.vg-stop-k span { color: var(--vg-ink-2); font-family: var(--f-body); letter-spacing: .1em; text-transform: uppercase; font-size: 9.5px; }
.vg-stop h3 { font: 800 19px/1.1 var(--f-display); letter-spacing: -.01em; }
.vg-stop h3 i { font-style: italic; font-weight: 500; color: var(--vg-teal); }
.vg-stop p { font-size: 13.5px; line-height: 1.4; color: var(--vg-ink-2); display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; }
.vg-stamp-btn { justify-self: start; display: inline-flex; align-items: center; gap: 6px; min-height: 44px; margin-top: 2px; padding: 0 14px; border-radius: 999px; font: 700 13px/1 var(--f-body); color: var(--vg-coral-ink); box-shadow: inset 0 0 0 1.5px currentColor; transition: transform 160ms var(--ease-out), background-color 200ms ease, color 200ms ease; }
.vg-stamp-btn:active { transform: scale(.95); }
.vg-stamp-btn iconify-icon { font-size: 16px; }
.vg-stamp-btn.is-done { color: var(--vg-teal); box-shadow: none; background: rgba(13, 123, 123, .1); }
.vg-stop-mark { position: absolute; left: 56px; top: 74px; width: 72px; height: 72px; opacity: 0; transform: rotate(-16deg) scale(1.5); mix-blend-mode: multiply; pointer-events: none; }
.vg-stop.is-stamped .vg-stop-mark { opacity: .9; transform: rotate(-16deg); transition: opacity 120ms ease, transform 380ms var(--ease-out); }
.vg-route-steps { display: flex; gap: 6px; margin-top: 12px; }
.vg-route-steps i { width: 26px; height: 4px; border-radius: 2px; background: rgba(18, 50, 57, .14); transition: background-color 300ms ease; }
.vg-route-steps i.is-done { background: rgba(24, 163, 163, .5); }
.vg-route-steps i.is-cur { background: var(--vg-teal); }
@media (max-height: 700px) { .vg-route-hint { display: none; } .vg-stop-ph { height: 130px; } .vg-stop { grid-template-columns: 90px 1fr; } .vg-stop-mark { left: 46px; top: 64px; } }
@media (min-width: 900px) {
  .vg-route-pin { grid-template-columns: minmax(0, 1.1fr) minmax(320px, .9fr); grid-template-rows: auto 1fr auto; column-gap: 48px; max-width: 1240px; margin: 0 auto; padding-bottom: 40px; }
  .vg-route-head { grid-column: 1 / -1; }
  .vg-globe { grid-column: 1; grid-row: 2; }
  .vg-stops { grid-column: 2; grid-row: 2; align-self: center; }
  .vg-stop { grid-template-columns: 1fr; align-content: start; padding: 14px; }
  .vg-stop-ph { height: 230px; }
  .vg-stop h3 { font-size: 30px; }
  .vg-stop p { font-size: 14.5px; -webkit-line-clamp: 4; }
  .vg-stop-mark { left: auto; right: 22px; top: 150px; width: 96px; height: 96px; }
  .vg-route-steps { grid-column: 1 / -1; }
}

/* ── Stamps (svg built by voyage.js) ── */
.vg-stampsvg text { font-family: var(--f-mono); font-weight: 700; }

/* ── Menu ── */
.vg-courses { display: grid; gap: 22px; }
.vg-course { display: grid; grid-template-columns: 112px 1fr; align-items: center; gap: 18px; }
.vg-plate { position: relative; width: 112px; height: 112px; border-radius: 50%; padding: 6px; background: #fff; box-shadow: 0 0 0 1px var(--vg-line), 0 18px 30px -18px rgba(18, 50, 57, .55); }
.vg-plate img { width: 100%; height: 100%; border-radius: 50%; object-fit: cover; }
.vg-js [data-reveal="plate"] .vg-plate { transform: rotate(-70deg) scale(.9); transition: transform 1100ms var(--ease-out); }
.vg-js [data-reveal="plate"].is-in .vg-plate { transform: none; }
.vg-course-k { display: flex; flex-wrap: wrap; align-items: center; gap: 6px 10px; font: 700 10px/1.2 var(--f-body); letter-spacing: .12em; text-transform: uppercase; color: var(--vg-ink-2); }
.vg-course-k b { padding: 4px 8px; border-radius: 6px; font: 700 10.5px/1 var(--f-mono); letter-spacing: .04em; color: var(--vg-coral-ink); box-shadow: inset 0 0 0 1.2px rgba(232, 116, 59, .55); transform: rotate(-2deg); }
.vg-course h3 { margin-top: 6px; font: 700 20px/1.15 var(--f-display); letter-spacing: -.01em; }
.vg-course p:last-child { margin-top: 4px; font-size: 14px; line-height: 1.5; color: var(--vg-ink-2); }
.vg-note { display: flex; gap: 10px; align-items: flex-start; margin-top: 32px; padding: 14px 16px; border-radius: 16px; background: var(--vg-mist); font-size: 14px; line-height: 1.5; }
.vg-note iconify-icon { font-size: 22px; color: var(--vg-teal); margin-top: 1px; }
@media (min-width: 900px) {
  .vg-courses { grid-template-columns: repeat(5, 1fr); gap: 28px; }
  .vg-course { grid-template-columns: 1fr; justify-items: center; text-align: center; align-content: start; }
  .vg-course-k { justify-content: center; }
  .vg-plate { width: min(100%, 190px); height: auto; aspect-ratio: 1; }
  .vg-course:nth-child(even) { margin-top: 64px; }
  .vg-note { max-width: 760px; }
}

/* ── Dress code ── */
.vg-dress { padding-left: 0; padding-right: 0; overflow: hidden; }
.vg-dress > .vg-head, .vg-dress > .vg-dress-more { padding-left: var(--gut); padding-right: var(--gut); }
.vg-looks { display: flex; gap: 14px; max-width: none; overflow-x: auto; scroll-snap-type: x mandatory; padding: 10px calc(50% - 34vw) 26px; scrollbar-width: none; overscroll-behavior-x: contain; }
.vg-looks::-webkit-scrollbar { display: none; }
.vg-look { position: relative; flex: 0 0 68vw; max-width: 340px; aspect-ratio: 3 / 4; border-radius: 22px; overflow: hidden; scroll-snap-align: center; background: var(--vg-mist); box-shadow: 0 24px 40px -24px rgba(18, 50, 57, .55); }
.vg-look img { width: 100%; height: 100%; object-fit: cover; }
.vg-look figcaption { position: absolute; left: 0; right: 0; bottom: 0; display: grid; gap: 2px; padding: 40px 16px 16px; color: #fff; background: linear-gradient(180deg, transparent, rgba(6, 22, 29, .78)); }
.vg-look figcaption b { font: 700 18px/1.15 var(--f-display); }
.vg-look figcaption span { font: 700 10px/1 var(--f-body); letter-spacing: .16em; text-transform: uppercase; color: var(--vg-gold); }
.vg-look::after { content: ""; position: absolute; top: 12px; right: 12px; width: 34px; height: 34px; border-radius: 50%; border: 1.5px dashed rgba(255, 255, 255, .7); }
.vg-dress-more { display: grid; gap: 16px; }
.vg-palette p { font-size: 14px; color: var(--vg-ink-2); }
.vg-palette ul { display: flex; flex-wrap: wrap; gap: 10px; margin-top: 10px; }
.vg-palette li { display: inline-flex; align-items: center; gap: 8px; padding: 6px 12px 6px 6px; border-radius: 999px; background: #fff; box-shadow: 0 0 0 1px var(--vg-line); font: 600 13px/1 var(--f-body); }
.vg-palette li i { width: 24px; height: 24px; border-radius: 50%; box-shadow: inset 0 0 0 1px rgba(18, 50, 57, .12); }
.vg-prize { display: flex; align-items: center; gap: 12px; padding: 14px 16px; border-radius: 16px; background: #fff4d6; font-size: 14px; line-height: 1.45; }
.vg-prize iconify-icon { font-size: 30px; color: #9a6a00; }
@media (min-width: 900px) {
  .vg-looks { justify-content: center; overflow: visible; padding: 20px var(--gut) 40px; }
  .vg-look { flex: 0 1 220px; }
  .vg-look:nth-child(1) { transform: rotate(-6deg) translateY(18px); } .vg-look:nth-child(2) { transform: rotate(-3deg) translateY(4px); }
  .vg-look:nth-child(4) { transform: rotate(3deg) translateY(4px); } .vg-look:nth-child(5) { transform: rotate(6deg) translateY(18px); }
  .vg-look { transition: transform 500ms var(--ease-out), box-shadow 500ms ease; }
  .vg-dress-more { grid-template-columns: 1.3fr 1fr; align-items: center; max-width: 1120px; }
}
@media (min-width: 900px) and (hover: hover) and (pointer: fine) {
  .vg-look:hover { transform: translateY(-14px) rotate(0) scale(1.04); z-index: 2; box-shadow: 0 34px 50px -24px rgba(18, 50, 57, .6); }
}

/* ── Headliners ── */
.vg-hl { display: grid; gap: 16px; }
.vg-hl-card { position: relative; min-height: 280px; border-radius: 24px; overflow: hidden; color: #fff; background: var(--vg-night); isolation: isolate; }
.vg-hl-card img, .vg-hl-art { position: absolute; inset: 0; z-index: -2; width: 100%; height: 100%; object-fit: cover; }
.vg-hl-card::before { content: ""; position: absolute; inset: 0; z-index: -1; background: linear-gradient(180deg, rgba(6, 22, 29, .05) 30%, rgba(6, 22, 29, .82)); }
.vg-hl-tx { position: absolute; left: 0; right: 0; bottom: 0; display: grid; gap: 6px; padding: 20px; }
.vg-hl-n { font: 700 11px/1 var(--f-mono); letter-spacing: .08em; color: var(--vg-gold); }
.vg-hl-card h3 { font: 800 26px/1.05 var(--f-display); letter-spacing: -.01em; }
.vg-hl-card p { font-size: 14px; line-height: 1.5; color: rgba(255, 255, 255, .84); }
.vg-hl-art { background: radial-gradient(90% 70% at 70% 20%, #2a7182, var(--vg-night) 70%); }
.vg-hl-art svg { position: absolute; inset: 0; width: 100%; height: 100%; }
.vg-confetti { transform-box: fill-box; transform-origin: center; animation: vgConf 5.5s linear infinite; }
@keyframes vgConf { from { transform: translateY(-60px) rotate(0); } to { transform: translateY(420px) rotate(540deg); } }
.vg-hl-card.is-paused .vg-confetti { animation-play-state: paused; }
@media (min-width: 760px) { .vg-hl { grid-template-columns: repeat(3, 1fr); } .vg-hl-card { min-height: 0; aspect-ratio: 4 / 5; } .vg-hl-card:nth-child(2) { transform: translateY(40px); } }
@media (hover: hover) and (pointer: fine) {
  .vg-hl-card img { transition: transform 900ms var(--ease-out); }
  .vg-hl-card:hover img { transform: scale(1.05); }
}

/* ── Venue ── */
.vg-venue { display: grid; gap: 28px; }
.vg-venue-media { position: relative; border-radius: 24px; overflow: hidden; aspect-ratio: 3 / 2; background: var(--vg-mist); }
.vg-venue-media img { width: 100%; height: 100%; object-fit: cover; }
.vg-venue-media.is-in img { animation: vgKen 16s ease-in-out 1s infinite alternate; }
@keyframes vgKen { to { transform: scale(1.08) translate(-1.5%, -1%); } }
.vg-venue-media.is-paused img { animation-play-state: paused; }
.vg-venue-tag { position: absolute; left: 14px; top: 14px; display: inline-flex; align-items: center; gap: 6px; padding: 8px 12px; border-radius: 999px; font: 700 11px/1 var(--f-body); letter-spacing: .08em; text-transform: uppercase; color: var(--vg-ink); background: rgba(255, 255, 255, .86); -webkit-backdrop-filter: blur(10px); backdrop-filter: blur(10px); }
.vg-venue-tag iconify-icon { color: var(--vg-coral-ink); font-size: 15px; }
.vg-venue-body { display: grid; gap: 12px; align-content: start; }
.vg-venue-body .vg-h2 { font-size: clamp(30px, 7.6vw, 48px); }
.vg-venue-body .vg-actions { margin: 6px 0 4px; }
.vg-getting { display: grid; gap: 2px; margin-top: 8px; }
.vg-getting li { display: grid; grid-template-columns: 24px 1fr; gap: 12px; align-items: start; padding: 12px 0; border-top: 1px solid var(--vg-line); font-size: 14px; line-height: 1.5; color: var(--vg-ink-2); }
.vg-getting li b { color: var(--vg-ink); margin-right: 4px; }
.vg-getting iconify-icon { width: 22px; height: 22px; margin-top: 1px; font-size: 22px; color: var(--vg-ink-2); }
@media (min-width: 900px) { .vg-venue { grid-template-columns: 1.15fr 1fr; align-items: center; gap: 56px; } .vg-venue-media { aspect-ratio: 4 / 3.4; } }

/* ── Check-in counter ── */
.vg-checkin { background: linear-gradient(180deg, var(--vg-paper), var(--vg-mist)); }
.vg-counter { position: relative; max-width: 620px; padding: 20px 14px; border-radius: 24px; background: var(--vg-card); box-shadow: 0 0 0 1px var(--vg-line); }
.vg-form { display: grid; gap: 16px; transition: opacity 220ms ease; }
.vg-form.is-out { opacity: 0; }
.vg-field { display: grid; gap: 6px; }
.vg-field label, .vg-seg legend { font: 700 13px/1.2 var(--f-body); color: var(--vg-ink); }
.vg-field small { font-weight: 500; color: var(--vg-ink-2); }
.vg-field input, .vg-field select, .vg-field textarea { width: 100%; min-height: 50px; padding: 12px 14px; border: 1.5px solid rgba(18, 50, 57, .16); border-radius: 14px; background: #fbfdfc; color: var(--vg-ink); font: 500 16px/1.4 var(--f-body);
  transition: border-color 200ms ease, box-shadow 200ms ease, background-color 200ms ease; -webkit-appearance: none; appearance: none; }
.vg-field select { padding-right: 40px; background: #fbfdfc url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%2346666d' stroke-width='2.2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E") no-repeat right 14px center / 18px; }
.vg-field textarea { min-height: 76px; resize: vertical; }
.vg-field input:focus, .vg-field select:focus, .vg-field textarea:focus { outline: none; border-color: var(--vg-teal-2); background: #fff; box-shadow: 0 0 0 4px rgba(24, 163, 163, .16); }
.vg-field.is-bad input { border-color: #c2410c; box-shadow: 0 0 0 4px rgba(194, 65, 12, .1); }
.vg-ferr { font: 600 12.5px/1.35 var(--f-body); color: #b23a0a; }
.vg-ferr.is-form { padding: 10px 12px; border-radius: 12px; background: #fff1ea; }
.vg-field-row { display: grid; gap: 16px; }
@media (min-width: 520px) { .vg-field-row { grid-template-columns: 1fr 1fr; } }
.vg-seg { display: grid; grid-template-columns: 1fr 1fr; gap: 10px; margin: 0; padding: 0; border: 0; }
.vg-seg legend { margin-bottom: 8px; padding: 0; }
.vg-seg label { position: relative; }
.vg-seg input { position: absolute; opacity: 0; inset: 0; margin: 0; }
.vg-seg span { display: flex; align-items: center; justify-content: center; gap: 8px; min-height: 52px; padding: 0 10px; border-radius: 14px; font: 700 14px/1.2 var(--f-body); color: var(--vg-ink-2); box-shadow: inset 0 0 0 1.5px rgba(18, 50, 57, .16); text-align: center;
  transition: transform 160ms var(--ease-out), background-color 200ms ease, color 200ms ease, box-shadow 200ms ease; cursor: pointer; }
.vg-seg span iconify-icon { font-size: 20px; }
.vg-seg label:active span { transform: scale(.97); }
.vg-seg input:checked + span { color: var(--vg-teal); background: rgba(24, 163, 163, .1); box-shadow: inset 0 0 0 2px var(--vg-teal-2); }
.vg-seg input:focus-visible + span { outline: 2.5px solid var(--vg-teal-2); outline-offset: 2px; }
.vg-submit { position: relative; min-height: 54px; margin-top: 4px; overflow: hidden; }
.vg-submit-busy { position: absolute; inset: 0; display: flex; align-items: center; justify-content: center; gap: 10px; opacity: 0; transform: translateY(100%); transition: opacity 200ms ease, transform 300ms var(--ease-out); }
.vg-submit-t { transition: opacity 200ms ease, transform 300ms var(--ease-out); }
.vg-submit.is-busy .vg-submit-t { opacity: 0; transform: translateY(-100%); }
.vg-submit.is-busy .vg-submit-busy { opacity: 1; transform: none; }
.vg-submit-busy i { width: 16px; height: 16px; border-radius: 50%; border: 2.5px solid rgba(255, 255, 255, .35); border-top-color: #fff; animation: vgSpin 700ms linear infinite; }
.vg-form-foot { font-size: 12px; color: var(--vg-ink-2); text-align: center; }

/* the printer and the printed e-ticket */
.vg-printed { display: grid; gap: 18px; }
.vg-printed[hidden] { display: none; }
.vg-printed-h { display: grid; gap: 4px; text-align: center; }
.vg-printed-h h3 { font: 800 26px/1.1 var(--f-display); letter-spacing: -.01em; }
.vg-printed-h p { font-size: 14px; color: var(--vg-ink-2); }
.vg-slot { position: relative; z-index: 2; height: 14px; margin: 4px 6px 0; border-radius: 8px; background: linear-gradient(180deg, #0a1f28, #1b4556); box-shadow: inset 0 3px 4px rgba(0, 0, 0, .6); }
.vg-feed { position: relative; margin: -7px 8px 0; overflow: hidden; padding: 0 4px 30px; perspective: 1000px; }
.vg-ticket { position: relative; border-radius: 0 0 18px 18px; color: var(--vg-cream); background: radial-gradient(130% 80% at 80% 0%, #1d5a6a, var(--vg-night) 66%); box-shadow: 0 26px 40px -24px rgba(6, 22, 29, .8); transform-style: preserve-3d; overflow: hidden; }
.vg-feed.is-printing .vg-ticket { animation: vgPrint 1500ms linear both; }
@keyframes vgPrint {
  0% { transform: translateY(-100%); animation-timing-function: var(--ease-out); } 18% { transform: translateY(-80%); } 26% { transform: translateY(-80%); animation-timing-function: var(--ease-out); }
  44% { transform: translateY(-56%); } 52% { transform: translateY(-56%); animation-timing-function: var(--ease-out); } 70% { transform: translateY(-30%); } 78% { transform: translateY(-30%); animation-timing-function: var(--ease-out); } 100% { transform: translateY(0); } }
.vg-ticket::before { content: ""; display: block; height: 6px; background: repeating-linear-gradient(135deg, var(--vg-coral) 0 12px, transparent 12px 20px, var(--vg-teal-2) 20px 32px, transparent 32px 40px); opacity: .9; }
.vg-ticket-shine { position: absolute; inset: 0; pointer-events: none; background: linear-gradient(115deg, transparent 30%, rgba(255, 255, 255, .14) 48%, transparent 62%); transform: translateX(var(--sx, -30%)); }
.vg-ticket-top { display: flex; justify-content: space-between; align-items: center; padding: 16px 18px 0; font: 800 11px/1 var(--f-body); letter-spacing: .12em; text-transform: uppercase; color: var(--vg-gold); }
.vg-ticket-top span:first-child { display: inline-flex; align-items: center; gap: 8px; }
.vg-ticket-top svg { width: 18px; height: 18px; }
.vg-ticket-name { padding: 14px 18px 0; font: 800 24px/1.1 var(--f-display); letter-spacing: -.01em; color: #fff; overflow-wrap: anywhere; }
.vg-ticket-route { display: grid; grid-template-columns: auto 1fr auto; align-items: center; gap: 10px; padding: 12px 18px 0; font: 700 26px/1 var(--f-mono); }
.vg-ticket-route i { height: 2px; background: repeating-linear-gradient(90deg, rgba(244, 239, 226, .45) 0 4px, transparent 4px 8px); position: relative; }
.vg-ticket-route i svg { position: absolute; left: 50%; top: -9px; width: 20px; height: 20px; margin-left: -10px; color: var(--vg-gold); }
.vg-ticket-body { display: grid; grid-template-columns: 1fr auto; gap: 14px; align-items: center; padding: 16px 18px 18px; }
.vg-ticket-body dl { display: grid; grid-template-columns: 1fr; gap: 8px; margin: 0; }
@media (min-width: 520px) { .vg-ticket-body dl { grid-template-columns: 1fr 1fr; gap: 10px 12px; } }
.vg-ticket-body dt { font: 700 9px/1.1 var(--f-body); letter-spacing: .12em; text-transform: uppercase; color: rgba(244, 239, 226, .55); }
.vg-ticket-body dd { margin-top: 3px; font: 700 13.5px/1.25 var(--f-body); overflow-wrap: anywhere; }
.vg-qr { padding: 8px; border-radius: 12px; background: #fff; line-height: 0; }
.vg-qr img, .vg-qr canvas { display: block; width: 104px !important; height: 104px !important; }
.vg-ticket-cut { position: relative; height: 0; border-top: 2px dashed rgba(244, 239, 226, .22); margin: 0 14px; }
.vg-ticket-foot { display: flex; justify-content: space-between; gap: 10px; padding: 14px 18px 18px; font: 700 13px/1.25 var(--f-mono); }
.vg-ticket-foot span { display: block; margin-bottom: 4px; font: 700 9px/1 var(--f-body); letter-spacing: .12em; text-transform: uppercase; color: rgba(244, 239, 226, .55); }
.vg-ticket-stamp { position: absolute; right: 8px; top: 34px; width: 88px; height: 88px; opacity: 0; transform: rotate(-14deg) scale(1.5); pointer-events: none; }
.vg-ticket.is-stamped .vg-ticket-stamp { opacity: .92; transform: rotate(-14deg); transition: opacity 120ms ease, transform 380ms var(--ease-out); }
.vg-printed .vg-actions { justify-content: center; }
.vg-printed-no { display: grid; justify-items: center; gap: 10px; padding: 18px 6px; text-align: center; }
.vg-printed-no iconify-icon { font-size: 48px; color: var(--vg-coral-ink); }
.vg-printed-no h3 { font: 800 24px/1.15 var(--f-display); }
.vg-printed-no p { color: var(--vg-ink-2); }
@media (min-width: 900px) { .vg-checkin .vg-head, .vg-counter { margin-left: auto; margin-right: auto; } .vg-checkin .vg-head { max-width: 620px; text-align: center; justify-items: center; } .vg-counter { padding: 32px; } }

/* ── Help ── */
.vg-help-grid { display: grid; gap: 28px; }
.vg-people { display: grid; gap: 12px; align-content: start; }
.vg-person { display: grid; grid-template-columns: 52px 1fr; gap: 6px 14px; align-items: center; padding: 14px; border-radius: 20px; background: var(--vg-card); box-shadow: 0 0 0 1px var(--vg-line); }
.vg-ava { display: grid; place-items: center; width: 52px; height: 52px; border-radius: 50%; font: 800 17px/1 var(--f-display); color: var(--vg-night); }
.vg-person b { display: block; font-size: 15px; }
.vg-person small { display: block; font-size: 13px; color: var(--vg-ink-2); }
.vg-person-cta { grid-column: 1 / -1; display: flex; gap: 8px; }
.vg-person-cta a { flex: 1; display: inline-flex; align-items: center; justify-content: center; gap: 6px; min-height: 44px; border-radius: 12px; font: 700 14px/1 var(--f-body); text-decoration: none; transition: transform 160ms var(--ease-out), background-color 200ms ease; }
.vg-person-cta a:active { transform: scale(.97); }
.vg-person-cta .is-wa { color: #fff; background: #128c5e; }
.vg-person-cta .is-call { color: var(--vg-ink); background: var(--vg-mist); }
.vg-faq { display: grid; gap: 10px; align-content: start; }
.vg-faq details { border-radius: 18px; background: var(--vg-card); box-shadow: 0 0 0 1px var(--vg-line); }
.vg-faq summary { display: flex; align-items: center; justify-content: space-between; gap: 12px; min-height: 56px; padding: 14px 16px; font: 700 15px/1.35 var(--f-body); cursor: pointer; list-style: none; }
.vg-faq summary::-webkit-details-marker { display: none; }
.vg-faq summary iconify-icon { font-size: 18px; color: var(--vg-teal); transition: transform 250ms var(--ease-out); }
.vg-faq details[open] summary iconify-icon { transform: rotate(45deg); }
.vg-faq details > div { padding: 0 16px 16px; font-size: 14.5px; line-height: 1.55; color: var(--vg-ink-2); }
.vg-faq details[open] > div { animation: vgFadeUp 300ms var(--ease-out); }
@keyframes vgFadeUp { from { opacity: 0; transform: translateY(-4px); } }
@media (min-width: 900px) { .vg-help-grid { grid-template-columns: 1fr 1.2fr; gap: 40px; } }

/* ── Footer ── */
.vg-foot { position: relative; overflow: hidden; padding: 64px var(--gut) calc(120px + var(--safe-b)); text-align: center; color: var(--vg-cream); background: radial-gradient(120% 80% at 50% 0%, #17485a, var(--vg-night) 60%); }
.vg-lm-strip { margin: 0 calc(var(--gut) * -1) 36px; overflow: hidden; color: rgba(242, 182, 50, .55); -webkit-mask: linear-gradient(90deg, transparent, #000 12%, #000 88%, transparent); mask: linear-gradient(90deg, transparent, #000 12%, #000 88%, transparent); }
.vg-lm-track { display: flex; gap: 28px; width: max-content; animation: vgMarquee 48s linear infinite; }
.vg-lm-track svg { width: 56px; height: 56px; flex-shrink: 0; }
@keyframes vgMarquee { to { transform: translateX(-50%); } }
.vg-foot.is-paused .vg-lm-track { animation-play-state: paused; }
.vg-foot-k { font: 700 11px/1.3 var(--f-mono); letter-spacing: .12em; text-transform: uppercase; color: var(--vg-gold); }
.vg-foot-t { margin-top: 12px; font: 900 clamp(46px, 13vw, 96px)/.95 var(--f-display); letter-spacing: -.03em; }
.vg-foot-t span { display: block; margin-top: 10px; font: italic 500 .36em/1.2 var(--f-display); letter-spacing: 0; color: rgba(244, 239, 226, .75); }
.vg-foot .vg-actions { justify-content: center; margin-top: 28px; }
.vg-credits { max-width: 640px; margin: 32px auto 0; font-size: 12.5px; color: rgba(244, 239, 226, .6); }
.vg-credits summary { display: inline-flex; min-height: 44px; align-items: center; cursor: pointer; font-weight: 600; }
.vg-credits a { color: rgba(244, 239, 226, .85); }
.vg-foot-s { margin-top: 18px; font-size: 12px; color: rgba(244, 239, 226, .62); }

/* ── Passport sheet ── */
.vg-pp { display: grid; grid-template-columns: repeat(3, 1fr); gap: 10px; margin-top: 18px; padding: 16px; border-radius: 18px; background: repeating-radial-gradient(circle at 50% 50%, rgba(13, 123, 123, .06) 0 1px, transparent 1px 9px), #fbf8f0; box-shadow: inset 0 0 0 1px var(--vg-line); }
.vg-pp-slot { position: relative; display: grid; place-items: center; aspect-ratio: 1; border-radius: 50%; border: 1.5px dashed rgba(18, 50, 57, .2); font: 700 11px/1.2 var(--f-mono); color: rgba(18, 50, 57, .4); text-align: center; }
.vg-pp-slot svg { position: absolute; inset: -4%; width: 108%; height: 108%; mix-blend-mode: multiply; }
.vg-pp-slot.is-got { border-color: transparent; }
.vg-pp-slot.is-new svg { animation: vgStampIn 420ms var(--ease-out) both; }
.vg-pp-done { margin-top: 14px; padding: 12px 14px; border-radius: 14px; background: #fff6df; font-size: 14px; }

/* ── Confetti canvas ── */
.vg-fx { position: fixed; inset: 0; z-index: 75; width: 100%; height: 100%; pointer-events: none; }

/* =====================================================================
   Reduced motion: fades stay, movement goes
   ===================================================================== */
@media (prefers-reduced-motion: reduce) {
  html.vg-smooth { scroll-behavior: auto; }
  .vg-star, .vg-gate-cloud, .vg-cover-foil, .vg-globe-ring, .vg-lm-track, .vg-eq i, .vg-scroll svg, .vg-confetti, .vg-flight-s.is-board::before { animation: none !important; }
  .vg-gate:not(.is-open) .vg-book { animation: none; }
  .vg-js [data-reveal], .vg-js [data-reveal="pass"], .vg-js .vg-w > span, .vg-js .vg-hero-tag, .vg-js .vg-hero-meta, .vg-js .vg-hero-cta, .vg-js .vg-hero-eyebrow, .vg-js .vg-hero-media img { transform: none !important; }
  .vg-js [data-reveal="wipe"] { clip-path: none !important; }
  .vg-js [data-reveal="plate"] .vg-plate { transform: none !important; }
  .vg-js .vg-hero-route { clip-path: none; }
  .vg-venue-media.is-in img { animation: none; }
  .vg-bp-wrap.is-in .vg-bp-arc-plane { animation: none; transform: translate(calc(var(--arc-w, 120px) * .5 - 11px), -2px); }
  .vg-stop, .vg-stop.is-past { transform: none; }
  .vg-feed.is-printing .vg-ticket { animation: none; }
  .vg-flap.is-flip > .ft, .vg-flap.is-flip > .fb { animation: none; }
  .vg-gate.is-stamped .vg-stamp-land, .vg-stop.is-stamped .vg-stop-mark, .vg-ticket.is-stamped .vg-ticket-stamp, .vg-pp-slot.is-new svg { animation: none; transform: rotate(-12deg); transition: opacity 200ms ease; opacity: .9; }
  .vg-gate.is-stamped .vg-book-page { animation: none; }
  .vg-look { transform: none !important; }
}
@media (prefers-reduced-transparency: reduce) {
  .vg-bar, .vg-dock, .vg-stop, .vg-hero-meta li, .vg-btn.is-glass, .vg-venue-tag { -webkit-backdrop-filter: none; backdrop-filter: none; background: var(--vg-paper); }
}
