/* Additive to the original page. Shared colour, typography, hierarchy and form contracts stay intact. */
@font-face{font-family:Montserrat;src:url('fonts/montserrat-600-latin.woff2') format('woff2');font-weight:500 700;font-display:swap}
@font-face{font-family:Cabin;src:url('fonts/cabin-400-latin.woff2') format('woff2');font-weight:300 600;font-display:swap}
:root{--ease-show:cubic-bezier(.16,1,.3,1);--scene-surface:#020A1E}
.hero-utilities{position:absolute;inset:16px 24px auto;z-index:5;display:flex;align-items:center;justify-content:space-between;gap:12px;font:600 9px/1.3 var(--sans);letter-spacing:.12em;text-transform:uppercase}.hero-utilities a,.hero-utilities button{display:flex;align-items:center;gap:10px;min-height:44px;padding:8px 12px;background:#020a1ecc;border:0;color:var(--cream);font:inherit;letter-spacing:inherit;text-transform:inherit;text-decoration:none;cursor:pointer}.hero-utilities a:hover,.hero-utilities button:hover{color:var(--cyan)}.hero-utilities button[hidden]{display:none}
.hero-circuit{position:absolute;top:24%;left:50%;width:min(1240px,110%);height:48%;z-index:-1;transform:translateX(-50%) rotate(-9deg);pointer-events:none;overflow:visible}.hero-circuit use{fill:none;stroke:var(--cyan);stroke-linecap:round;stroke-linejoin:round;vector-effect:non-scaling-stroke}.hero-route-base{stroke-width:1;opacity:.3}.hero-route-light{stroke-width:2;stroke-dasharray:60 940;filter:drop-shadow(0 0 6px #4bc0cd) drop-shadow(0 0 12px #4bc0cd);opacity:.9}
.hero-logo{filter:drop-shadow(0 2px 18px #020a1e)}.hero-copy .btn{position:relative;isolation:isolate}.hero-copy .btn::before{content:'';position:absolute;inset:-7px;border:1px solid var(--gold);pointer-events:none;opacity:.55}
@media(prefers-reduced-motion:no-preference){.hero-route-light{animation:hero-lap 8s linear infinite}.hero-route-base{animation:hero-energise 3s var(--ease-show) both}.hero-copy .btn::before{animation:book-halo 3s ease-in-out infinite}.hero.is-offscreen .hero-route-light,.hero.is-offscreen .hero-route-base,.hero.is-offscreen .hero-copy .btn::before{animation-play-state:paused}}
@keyframes hero-lap{to{stroke-dashoffset:-1000}}@keyframes hero-energise{from{stroke-dasharray:0 1000;opacity:0}to{stroke-dasharray:1000 0;opacity:.3}}@keyframes book-halo{50%{opacity:.12;transform:scale(1.04,1.16)}}
/* The original frame/glint remain; a bounded photo lift adds dimensionality on fine-pointer devices. */
.card-media img{transition:transform .9s var(--ease-show)}.card-body{position:relative}.card-night .card-media::after{content:'';position:absolute;inset:0;pointer-events:none;background:linear-gradient(180deg,transparent 50%,#091d3eaa)}
@media(hover:hover) and (pointer:fine) and (prefers-reduced-motion:no-preference){.card:hover .card-media img{transform:scale(1.06)}.headliner{transition:transform .7s var(--ease-show);transform:perspective(1100px) rotateY(var(--artist-x,0deg)) rotateX(var(--artist-y,0deg))}.headliner .night-media{perspective:700px}.headliner:hover .night-media picture img{transform:scale(1.065) translateY(-2px)}.headliner:hover .glow{transform:scale(1.065) translateY(-2px)}}
.night{position:relative}.headliner .night-media picture img,.headliner .glow{transition:transform .75s var(--ease-show)}.headliner .night-media::after{content:'';position:absolute;inset:-30%;pointer-events:none;background:linear-gradient(115deg,transparent 42%,#fbf8f24d 49%,transparent 56%);transform:translateX(-100%) rotate(-6deg);opacity:0;mix-blend-mode:screen}.headliner.is-spotlit .night-media::after{animation:artist-light 1.8s var(--ease-show) both}.headliner.is-spotlit .night-artist{animation:artist-name .8s var(--ease-show) both}.headliner::after{content:'';position:absolute;inset:-1px;pointer-events:none;border:1px solid var(--cyan);opacity:0}.headliner.is-live::after{animation:artist-edge 5s ease-in-out infinite}
@keyframes artist-light{0%{opacity:0;transform:translateX(-100%) rotate(-6deg)}25%{opacity:.75}to{opacity:0;transform:translateX(100%) rotate(-6deg)}}@keyframes artist-name{from{transform:translateX(8px);opacity:.8}to{transform:none;opacity:1}}@keyframes artist-edge{50%{opacity:.6}}
/* Spatial map replaces pixels only after a successful first render. The original map/pin is the fallback. */
.map-visual{position:relative;isolation:isolate;width:100%;aspect-ratio:16/11;background:var(--scene-surface);overflow:hidden}.map-visual>picture>img{position:absolute;inset:0;width:100%;height:100%;object-fit:contain}.map-visual>.glow,.map-visual>.lap{top:50%;height:auto;aspect-ratio:720/387;transform:translateY(-50%)}.map-visual>.pin{bottom:56%;z-index:4}.spatial-mount{position:absolute;inset:0;opacity:0;pointer-events:none;transition:opacity 1s var(--ease-show)}.spatial-mount canvas{display:block;width:100%;height:100%}.spatial-ready .spatial-mount{opacity:1}.spatial-ready>picture>img,.spatial-ready>.glow,.spatial-ready>.lap{opacity:0}.spatial-ready>.pin{left:var(--pin-x);top:var(--pin-y);bottom:auto;transform:translate(-9px,-50%)}
.spatial-controls{display:flex;flex-wrap:wrap;align-items:center;gap:0;border-bottom:1px solid var(--line);background:var(--midnight);position:relative;z-index:5}.spatial-controls button{flex:1;min-height:46px;padding:12px 9px;border:0;border-top:1px solid transparent;background:none;color:var(--cream);font:600 10px/1.3 var(--sans);letter-spacing:.12em;text-transform:uppercase;cursor:pointer}.spatial-controls button[aria-pressed=true]{color:var(--cyan);border-top-color:var(--cyan);background:#4bc0cd12}.spatial-controls button:hover{color:var(--cyan)}.spatial-controls button:disabled{color:#b5bdcb;cursor:default}.spatial-controls #spatial-start{flex-basis:100%;color:var(--cyan);border-top:1px solid var(--line)}.spatial-controls #spatial-start[hidden]{display:none}.spatial-status{font:500 12px/1.6 var(--sans);color:#c1c8d6;padding:12px 0 0}.map-visual::after{content:'';position:absolute;inset:0;border:1px solid #4bc0cd26;pointer-events:none;z-index:3}
.fig-aerial{position:relative}.fig-aerial picture{isolation:isolate}.fig-aerial picture::after{content:'';position:absolute;inset:0;pointer-events:none;background:linear-gradient(130deg,transparent 25%,#fbf8f230 47%,transparent 65%);opacity:0}.fig-aerial.is-live picture::after{animation:aerial-sheen 2.4s var(--ease-show) both}@keyframes aerial-sheen{from{opacity:0;transform:translateX(-30%)}30%{opacity:.6}to{opacity:0;transform:translateX(30%)}}
/* Photography becomes an intentional full-screen memory, with booking still available. */
.memory-trigger{position:relative;display:block;width:100%;border:0;padding:0;background:var(--navy);color:var(--cream);cursor:zoom-in;overflow:hidden}.memory-trigger img{transition:transform .9s var(--ease-show)}.memory-trigger:hover img{transform:scale(1.045)}.memory-trigger::after{content:'View moment ↗';position:absolute;right:10px;bottom:10px;background:#020a1eeb;padding:8px 10px;font:600 9px/1.3 var(--sans);letter-spacing:.1em;text-transform:uppercase}.memory-dialog{width:min(1100px,calc(100% - 32px));max-height:calc(100svh - 32px);padding:0;border:1px solid #66718a;background:var(--midnight);color:var(--cream);overflow:auto}.memory-dialog::backdrop{background:#020a1eed}.memory-head{display:flex;align-items:center;gap:20px;padding:16px 20px;position:sticky;top:0;background:var(--midnight);z-index:1}.memory-head h2{font-size:24px;margin-right:auto}.memory-head .btn{min-height:44px;padding:10px 18px;font-size:10px}.memory-close{width:44px;height:44px;border:1px solid var(--gold);background:none;color:var(--cream);font-size:28px;cursor:pointer}.memory-image{width:100%;max-height:70svh;object-fit:contain}.memory-caption{padding:16px 20px;font:500 13px/1.5 var(--sans);color:var(--cream-2)}
@media(prefers-reduced-motion:no-preference){.memory-dialog[open]{animation:memory-open .4s var(--ease-show)}.faq details[open] p{animation:faq-read .25s var(--ease-show)}.pcard-media img{transition:transform 1s var(--ease-show)}.pcard:hover .pcard-media img{transform:scale(1.035)}}@keyframes memory-open{from{opacity:.7;transform:scale(.97)}}@keyframes faq-read{from{opacity:.65;transform:translateY(-4px)}}
.foot::after{content:'';position:absolute;inset:auto -30% -130px;height:260px;z-index:-1;pointer-events:none;background:radial-gradient(ellipse at center,#c9a96e6e,transparent 68%);opacity:.45;transform:translateY(35%)}.foot.is-live::after{animation:dawn-arrival 3.5s var(--ease-show) both}@keyframes dawn-arrival{to{opacity:.8;transform:translateY(0)}}.preview-note{font:500 12px/1.6 var(--sans);color:var(--cream-2);margin-bottom:20px}
.motion-paused *,.motion-paused *::before,.motion-paused *::after{animation-play-state:paused!important;transition:none!important}.motion-paused .hero-video{opacity:0!important}.motion-paused .hero-route-light{opacity:.3}.motion-paused .headliner{transform:none!important}.motion-paused .card-media img,.motion-paused .headliner .night-media img{transform:none!important}
.book .f-title{max-width:100%}.book .f-fine{color:#c6cfdb}.book .f-error{color:#ffd7c4}.sheet input,.sheet select{scroll-margin-top:24px}.stickybar .btn{white-space:nowrap}.f-close{border-color:#7786a0}
@media(min-width:1024px){.hero-utilities{inset:102px max(48px,calc(50% - 600px)) auto}.hero-circuit{top:22%;height:48%;width:min(1240px,94%)}.stickybar{display:flex;left:auto;right:24px;bottom:20px;width:auto;gap:36px;padding:14px 18px;background:#041e42;border:1px solid #66718a;backdrop-filter:none}.stickybar .btn{min-height:46px}.foot{padding-bottom:140px}.roof{grid-template-columns:1fr 1fr;align-items:center}.map-visual{aspect-ratio:16/12}.fig-aerial img{aspect-ratio:4/4.4}.spatial-status{font-size:12px}}
@media(max-width:600px){.hero-circuit{top:22%;height:40%;width:125%;opacity:.95}.hero{padding-bottom:66px}.hero-copy h1{font-size:56px}.memory-head{gap:10px;padding:12px}.memory-head h2{font-size:20px}.memory-head .btn{font-size:9px;min-height:44px;padding:8px 10px;letter-spacing:.1em}.memory-caption{font-size:12px}.map-visual{aspect-ratio:1.3}.map-visual>.pin{bottom:55%}.spatial-controls button{font-size:9px}.stickybar{backdrop-filter:none;background:#041e42}}
@media(prefers-reduced-motion:reduce){.hero-route-light,.hero-route-base,.hero-copy .btn::before,.headliner::after,.headliner.is-spotlit .night-media::after,.headliner.is-spotlit .night-artist,.fig-aerial.is-live picture::after,.foot.is-live::after{animation:none!important}.hero-route-base{opacity:.25}.hero-route-light{opacity:0}.spatial-mount,.headliner,.card-media img,.memory-trigger img{transition:none!important;transform:none!important}.foot::after{transform:none;opacity:.6}}
/* Keep the light sweep inside its image and reserve the loading-control row. */
.fig-aerial picture{position:relative}.spatial-status{min-height:3.2em}.spatial-controls #spatial-start:disabled{color:#c1c8d6;font-size:9px}
.motion-paused{scroll-behavior:auto}.motion-paused .lap,.motion-paused .spark{visibility:hidden}.motion-paused .track::before,.motion-paused .track::after{transform:none;opacity:.55}.motion-paused .track{background:var(--midnight)}.motion-paused #tables{background:linear-gradient(var(--day) 20%,var(--sunset) 70%,var(--midnight))}.motion-paused #tables::before,.motion-paused #programme::before{display:none}.motion-paused .fig-aerial img{animation:none;transform:none}.motion-paused .hero-logo,.motion-paused .hero-copy>*{animation:none;opacity:1;transform:none}.motion-paused .book[open],.motion-paused .memory-dialog[open]{animation:none}
.spatial-controls #spatial-start{position:absolute;inset:0;background:var(--midnight);z-index:1}
