/* ACT II — edition 10. A full stage set, with independent depth planes. */
.hero {background:#080608;perspective:1200px}
.header-act {flex:0 0 auto}
.header-actions {display:flex;align-items:center;justify-content:flex-end;gap:8px;min-width:0}
.header-actions .menu-toggle {flex:0 0 44px}
.music-toggle {position:relative;right:auto;top:auto;width:auto;height:44px;min-height:44px;display:inline-flex;align-items:center;justify-content:center;gap:8px;padding:0 10px;border-radius:24px;background:#140b10bd;border-color:#cbb2a64a;backdrop-filter:blur(12px);white-space:nowrap;flex:0 0 auto;transition:background .25s,border-color .25s}
.music-label {font-family:Manrope,Arial,sans-serif;font-size:12.5px;font-weight:400;line-height:1.3;letter-spacing:0}
.music-toggle .equalizer {flex:0 0 auto;gap:2px}
.music-toggle:hover,.music-toggle[aria-pressed=true] {background:#37151fd9;border-color:#db9b9c78}
.music-toggle[aria-pressed=false] .equalizer {opacity:.7}
.hero-shade {background:linear-gradient(180deg,#06040740,transparent 26%,#09050a0a 53%,#0b070b1a 80%,#0c0a0b 100%)}
.hero-curtain {opacity:1;transform:scale(1.015);transform-origin:50% 63%}
.stage-portals {position:absolute;inset:55px 5.5% 9%;z-index:-2;pointer-events:none;transform:translate3d(calc(var(--stage-x) * 16px),calc(var(--hero-travel) * .085),0);mask-image:linear-gradient(#000 75%,transparent);-webkit-mask-image:linear-gradient(#000 75%,transparent)}
.portal-definitions {position:absolute;overflow:hidden}
.portal-depth {position:absolute;inset:0;transform-origin:50% 83%}
.portal-depth-2 {transform:scale(.875,.90);opacity:.65}
.portal-depth-3 {transform:scale(.76,.80);opacity:.36}
.portal-frame {width:100%;height:100%}
.portal-frame svg {width:100%;height:100%;overflow:visible;fill:none}
.portal-body {stroke:url(#portal-metal);stroke-width:9}
.portal-edge {stroke:#efbfb648;stroke-width:9.8}
.portal-glow {stroke:url(#portal-light);stroke-width:7;filter:blur(5px);opacity:.8}
.portal-core {stroke:url(#portal-light);stroke-width:1.3}
.stage-wings {position:absolute;inset:0;z-index:4;pointer-events:none;transform:translate3d(calc(var(--stage-x) * -34px),calc(var(--hero-travel) * -.19 + var(--stage-y) * -18px),0)}
.stage-wing {position:absolute;top:-4%;bottom:-8%;width:42%;max-width:450px;filter:drop-shadow(12px 8px 20px #0009)}
.wing-left {left:-9%;transform-origin:0 0}
.wing-right {right:-9%;transform:scaleX(-1);transform-origin:50% 0}
.wing-drift {height:100%;transform-origin:10% 0;animation:velvet-drift 9s ease-in-out infinite alternate}
.wing-right .wing-drift {animation-delay:-4.5s;animation-duration:10.5s}
.stage-wing img {height:100%;width:100%;max-width:none;object-fit:fill}
.stage-wash {position:absolute;inset:0;z-index:-1;pointer-events:none;overflow:hidden;mix-blend-mode:screen}
.stage-wash span {position:absolute;left:0;right:0;top:0;bottom:0;background:radial-gradient(ellipse at 15% 40%,#b3123b50,transparent 52%);animation:stage-color-travel 8s ease-in-out infinite alternate}
.stage-wash span+span {background:radial-gradient(ellipse at 82% 55%,#c0584240,transparent 52%);animation-delay:-4s;animation-direction:alternate-reverse}
.hero-center {z-index:6;bottom:calc(15.7% + 44px);text-shadow:0 3px 30px #090509}
.hero-invitation {font-size:12px;letter-spacing:.12em;color:#e1c6c5;margin-bottom:20px}
.title-life {color:#f6eee6;background:linear-gradient(115deg,#fff9ee 10%,#dec6b9 43%,#fff7eb 56%,#cbb2ac 88%);background-clip:text;-webkit-background-clip:text;-webkit-text-fill-color:transparent;text-shadow:none;filter:drop-shadow(0 4px 18px #08040977)}
.title-kaif {font-size:clamp(35px,11.8vw,55px);font-weight:400;color:#f3e7e1}

.hero-bottom {z-index:7;bottom:3.2%}
.stage-floor {position:absolute;z-index:1;inset:0;pointer-events:none;overflow:hidden}
.floor-light {position:absolute;left:-15%;right:-15%;bottom:0;height:22%;background:radial-gradient(ellipse at 50% 10%,#b5213f40,transparent 66%);transform:perspective(300px) rotateX(32deg);animation:floor-light-travel 6.8s ease-in-out infinite alternate}
.spotlight {bottom:9%;width:34px;height:46px}
.spotlight-left {left:8%}.spotlight-right {right:8%}
.spotlight-left .spot-pivot {animation:grand-pan-left 6.8s cubic-bezier(.45,0,.55,1) infinite}
.spotlight-right .spot-pivot {animation:grand-pan-right 8.6s cubic-bezier(.45,0,.55,1) infinite}
.spot-beam {width:min(115vw,700px);opacity:.94;filter:blur(3px)}
.spot-beam::before {background:linear-gradient(180deg,#fff1d99c,#deb8a546 43%,#bc758329 77%,transparent)}
.spot-beam i {left:32%;right:32%;background:linear-gradient(#fff6e57d,#f8d7c636 50%,transparent)}
.spotlight-right .spot-beam::before {background:linear-gradient(180deg,#ffd7ddaa,#e785995a 43%,#af45622b 78%,transparent)}
.hero>.stage-atmosphere {z-index:3;opacity:.95;mask-image:linear-gradient(transparent 26%,#000 43%,#000 92%,transparent);-webkit-mask-image:linear-gradient(transparent 26%,#000 43%,#000 92%,transparent)}
.smoke-fallback i {animation-duration:11s;opacity:.68}
.smoke-fallback i:nth-child(2) {animation-duration:15s;opacity:.5;bottom:28%}
.smoke-fallback i:nth-child(3) {animation-duration:10s;opacity:.58}
.scene-sweep {position:absolute;inset:-30%;z-index:5;pointer-events:none;mix-blend-mode:screen;opacity:0;background:linear-gradient(109deg,transparent 39%,#f8c9b845 48%,#fff4dd68 50%,#f0adb02b 53%,transparent 62%)}
/* Automatic curtain opening starts a continuous, staggered entrance sequence. */
.entrance-panel {transition:transform 1.8s cubic-bezier(.7,0,.16,1)}
.entrance.is-opening .entrance-left {transform:translateX(-102%) scaleX(.78) skewY(-2deg)}
.entrance.is-opening .entrance-right {transform:translateX(102%) scaleX(.78) skewY(2deg)}
.entrance-light {background:radial-gradient(ellipse at 50% 64%,#dc737538,transparent 56%)}
body.entrance-is-closed .portal-frame,body.entrance-is-closed .stage-wings {opacity:0}
body.entrance-is-closed .hero-curtain {transform:scale(1.19)}
body.entrance-is-opening .hero-center {animation:none;opacity:1;transform:translateY(calc(var(--hero-travel) * -.1))}
body.scene-has-started .hero-curtain {animation:camera-arrive 4.6s cubic-bezier(.16,.7,.24,1) both}
body.scene-has-started .portal-frame {animation:portal-arrive 3.2s .1s cubic-bezier(.16,.7,.24,1) both}
body.scene-has-started .portal-depth-2 .portal-frame {animation-delay:.28s}
body.scene-has-started .portal-depth-3 .portal-frame {animation-delay:.46s}
body.scene-has-started .stage-wing {animation:wing-arrive 3.4s .2s cubic-bezier(.16,.7,.24,1) both}
body.scene-has-started .wing-right {animation-name:wing-arrive-right}
body.scene-has-started .hero-invitation {animation:copy-arrive 1.4s .95s both}
body.scene-has-started .title-life {animation:title-unfold 1.85s 1.05s cubic-bezier(.16,.75,.25,1) both}
body.scene-has-started .title-kaif {animation:copy-arrive 1.7s 1.4s cubic-bezier(.16,.75,.25,1) both}
body.scene-has-started .hero-bottom {animation:copy-fade 1s 2.5s both}
body.scene-has-started .scene-sweep {animation:opening-light-pass 4.5s .3s both}
/* The same materials continue down the invitation, with space around the copy. */
.invitation {overflow:hidden;background:radial-gradient(ellipse at 85% 20%,#71112a33,transparent 55%),#11090e;padding-top:112px;padding-bottom:112px}
.editorial-light {position:absolute;inset:0;pointer-events:none;overflow:hidden;z-index:-1}
.editorial-light span {position:absolute;top:-25%;left:3%;height:150%;width:24%;border-left:1px solid #e2ab8847;background:linear-gradient(90deg,#b548392a,transparent);transform:rotate(27deg);filter:blur(.4px);animation:editorial-pass 11s ease-in-out infinite alternate}
.editorial-light span+span {left:auto;right:-18%;width:38%;border-color:#d8355c5c;background:linear-gradient(90deg,#90103131,transparent);animation-delay:-6s}
.invitation-date-lockup {border-image:linear-gradient(90deg,transparent,#c69f9577,transparent) 1}
/* A single type family and a restrained size hierarchy for the second screen. */
.invitation .section-inner {max-width:600px;font-family:Manrope,Arial,sans-serif;font-weight:400}
.invitation .eyebrow {font-size:14px;line-height:1.6;font-weight:400;letter-spacing:.01em;text-transform:none;color:#c9babc;margin-bottom:24px}
.invitation .display {font-size:clamp(30px,8.8vw,50px);font-weight:400;line-height:1.2;letter-spacing:-.035em;text-wrap:initial;color:var(--paper)}
.invitation-date-lockup {max-width:380px;margin:36px auto 32px;padding:24px 0}
.invitation-date {font-size:clamp(24px,6.7vw,28px);font-weight:400;line-height:1.3;letter-spacing:-.025em;color:var(--paper);white-space:nowrap}
.invitation-time {font-size:17px;font-weight:400;line-height:1.7;letter-spacing:0;text-transform:none;color:#c9babc;margin-top:8px}
.invitation-copy {max-width:420px;margin:0 auto;color:#c9babc;font-size:17px;font-weight:400;line-height:1.7;letter-spacing:0;text-wrap:pretty}
.invitation-copy p+p {margin-top:14px}
.invitation .text-link {font-size:14px;font-weight:400;line-height:1.6;letter-spacing:0;text-transform:none;color:var(--paper);margin-top:30px;gap:15px}
.program {padding-top:112px;padding-bottom:110px;background:#11070c}
.program-curtain {background-image:linear-gradient(90deg,#0c080ced,#12070bdd 50%,#1308109e),url('assets/program-piano-v16.jpg');opacity:.9}
.program-velvet {position:absolute;right:-21%;top:-8%;height:119%;width:56%;max-width:420px;z-index:0;pointer-events:none;opacity:.66;transform:scaleX(-1);mask-image:linear-gradient(#000,transparent 99%);-webkit-mask-image:linear-gradient(#000,transparent 99%)}
.program-velvet img {width:100%;height:100%;object-fit:fill;animation:program-velvet 11s ease-in-out infinite alternate}
.program-orbit {position:absolute;inset:20px -40% 15% 45%;pointer-events:none;z-index:0;opacity:.65}
.program-orbit span {position:absolute;inset:0;border:1px solid #ba67604d;border-radius:50% 50% 0 0;transform:rotate(-17deg);box-shadow:inset 12px 0 20px #f4945910}
.program-orbit span+span {inset:18px;border-color:#a52b443a}
.program .stage-atmosphere {opacity:.48}
.program .program-sheet {z-index:2}
.timeline li {transition:transform 1.15s cubic-bezier(.16,.8,.2,1),opacity 1s,border-color .5s}
.motion-ready .timeline li.reveal {transform:translate3d(0,45px,0)}
.motion-ready .timeline li.in-view {transform:none}
.time {color:#f2e3db}
.time-description h3 {font-size:18px}
.cabaret-art {height:580px;background:#14070d}
.cabaret-backdrop {object-position:50% 84%;opacity:.9;transform:scale(1.14)}
.cabaret-art::after {background:linear-gradient(#1c080a22,transparent 30%,#390b18)}
.cabaret-sweep {opacity:1;animation-duration:5.8s;background:linear-gradient(96deg,transparent 27%,#e036582b 43%,#ffdbbe65 50%,#f87b7130 55%,transparent 65%)}

.dress-content {padding-top:12px}
.looks-button {border-color:#cc7f918c;background:linear-gradient(115deg,#e8b8b908,transparent 60%)}
/* A moving typographic band connects the timing to the illuminated stage. */
.event-ticker {position:relative;isolation:isolate;overflow:hidden;background:linear-gradient(110deg,#18171b,#070708 42%,#201319);border-top:1px solid #e6d7ce60;border-bottom:1px solid #9c294459;padding:22px 0}
.event-ticker-window {overflow:hidden;mask-image:linear-gradient(90deg,transparent,#000 20px,#000 calc(100% - 70px),transparent calc(100% - 43px));-webkit-mask-image:linear-gradient(90deg,transparent,#000 20px,#000 calc(100% - 70px),transparent calc(100% - 43px))}
.event-ticker-track {display:flex;width:max-content;animation:event-ticker-travel 30s linear infinite;will-change:transform}
.event-ticker-group {display:flex;align-items:center;justify-content:space-around;gap:28px;padding:0 14px;min-width:100vw;flex:0 0 auto;white-space:nowrap;font-size:clamp(25px,6.2vw,36px);font-weight:500;line-height:1.3;letter-spacing:-.035em;color:#f1eae2}
.event-ticker-group i {font-style:normal;font-weight:400;color:#ba6275}
.event-ticker-group .ticker-act {color:#e0a8b2;font-weight:400;letter-spacing:.035em}
.event-ticker-control {position:absolute;right:12px;top:50%;transform:translateY(-50%);width:44px;height:44px;display:none;place-items:center;border:1px solid #d7bbb53d;border-radius:50%;background:#101014;color:#eae1da;z-index:2}
.event-ticker.has-ticker-control .event-ticker-control {display:grid}
.event-ticker-control>span {display:block;width:9px;height:12px;border-left:2px solid currentColor;border-right:2px solid currentColor}
.event-ticker.is-paused .event-ticker-control>span {width:0;height:0;border:6px solid transparent;border-right:0;border-left:9px solid currentColor;margin-left:3px}
.event-ticker:not(.motion-active) .event-ticker-track,.event-ticker.is-paused .event-ticker-track {animation-play-state:paused}
/* Black lacquer, bright photographs and a magazine-like type hierarchy. */
.hotels {background:radial-gradient(ellipse at 78% 7%,#44444b75,transparent 40%),linear-gradient(130deg,#18191d,#060608 43%,#131418);padding-top:88px;padding-bottom:92px;border-top:1px solid #f3e8df2e}
.hotel-lacquer {position:absolute;inset:0;z-index:0;overflow:hidden;pointer-events:none;mask-image:linear-gradient(#000 65%,transparent);-webkit-mask-image:linear-gradient(#000 65%,transparent)}
.hotel-lacquer span {position:absolute;inset:-25% -75%;background:linear-gradient(111deg,transparent 36%,#c9d2e215 47%,#fff9ec3b 49.7%,#d3dce819 50.3%,transparent 57%);transform:translateX(-12%);animation:hotel-lacquer-travel 13s ease-in-out infinite alternate}
.hotel-lacquer span+span {opacity:.42;animation-duration:17s;animation-delay:-9s;background:linear-gradient(116deg,transparent 54%,#edc9c025 57%,transparent 61%)}
.hotel-heading {padding-top:23px;border-top:1px solid #d7d8df69}
.hotel-heading>div {min-width:0}
.hotel-heading .eyebrow {display:flex;justify-content:space-between;align-items:center;gap:18px;font-size:12px;color:#d3d0d2;letter-spacing:.085em;margin-bottom:27px}
.hotel-city {font-size:13px;font-weight:600;letter-spacing:.16em;color:#faf4ec}
.hotel-heading .display {font-size:clamp(42px,12vw,70px);line-height:1.035;font-weight:500;letter-spacing:-.058em;color:#fbf4ec;text-wrap:initial}
.hotel-intro {color:#d2cdd0;font-size:17px;line-height:1.65;margin-top:24px}
.hotel-slider {margin-top:34px;padding-bottom:16px;align-items:stretch}
.hotel-card {position:relative;display:flex;flex-direction:column;border:1px solid #edf0f138;background:linear-gradient(118deg,#2d2e33,#0b0c10 51%,#191b20);box-shadow:0 14px 35px #0005}
.hotel-image-link {aspect-ratio:4/4.35;border-bottom:1px solid #ece8dd70;background:#24262c;flex:0 0 auto}
.hotel-image-link>img {filter:saturate(1.02) brightness(1.09) contrast(1.025)}
.hotel-image-link:hover>img {filter:saturate(1.05) brightness(1.13) contrast(1.025)}
.hotel-image-link::after {content:'';position:absolute;inset:-40%;pointer-events:none;background:linear-gradient(112deg,transparent 38%,#fff5e62b 48%,#fffdf57a 50%,#e9f0fc17 52%,transparent 59%);mix-blend-mode:screen;transform:translateX(-80%);animation:hotel-photo-glint 11s ease-in-out infinite}
.hotel-card:nth-child(2) .hotel-image-link::after {animation-delay:-3.7s}
.hotel-card:nth-child(3) .hotel-image-link::after {animation-delay:-7.4s}
.hotel-arrow {z-index:1;width:44px;height:44px;background:#f3eee6;color:#18171b;border:1px solid #ffffff7a;box-shadow:0 3px 18px #0003}
.hotel-caption {padding:22px 21px 24px;display:flex;flex-direction:column;flex:1}
.hotel-place {margin:0 0 12px;color:#d4c5c5;font-size:12px;letter-spacing:.1em}
.hotel-card h3 {font-size:clamp(27px,7.4vw,33px);font-weight:500;line-height:1.12;letter-spacing:-.045em;color:#fff8ef}
.hotel-subtitle {font-size:15px;line-height:1.6;color:#c8c5ca;margin-top:10px;min-height:48px}
.hotel-card .text-link {align-self:flex-start;margin-top:auto;padding-top:21px;font-size:13px;color:#f8eee6;gap:25px}
.hotels .slider-controls {margin-top:8px;border-bottom-color:#dddde140}
.hotels .slider-controls>p {font-size:14px;color:#efe7e3}
.hotels .slider-total {color:#bbb2b8}
.hotels .slider-controls button {background:linear-gradient(125deg,#35343a,#101115);border-color:#dad9df66;box-shadow:inset 0 1px #ffffff1a}
.hotels .slider-controls button:not(:disabled):hover {background:#3a3039}
.hotel-offer {position:relative;margin-top:29px;padding:28px 23px;background:linear-gradient(125deg,#2d2d33,#101115 72%);border:1px solid #e5d7d34f;box-shadow:inset 0 1px #f0e8e523}
.hotel-offer::before {content:'';position:absolute;left:-1px;top:22px;bottom:22px;width:2px;background:linear-gradient(transparent,#fff0df 37%,#b6a9af 75%,transparent);pointer-events:none}
.hotel-offer p {font-size:17px;line-height:1.65;color:#f2e9e1}
.hotel-offer .offer-details {font-size:15px;color:#c7bfc5}
.hotel-offer .offer-phone {font-size:21px;color:#fff3e7}
.hotel-offer .offer-whatsapp {font-size:14px;color:#e5d8d8;line-height:1.6;border-color:#b7a8b0}
/* Three neon arches, with a travelling current in each independent tube. */
.wishlist {min-height:610px;padding-top:165px;padding-bottom:115px;background:radial-gradient(ellipse at 50% 15%,#61203159,transparent 62%),#0a080b}
.wish-neon-portal {position:absolute;top:24px;bottom:10px;left:50%;width:calc(100% - 24px);max-width:610px;transform:translateX(-50%);z-index:0;pointer-events:none;mask-image:linear-gradient(#000 68%,#0009 89%,transparent);-webkit-mask-image:linear-gradient(#000 68%,#0009 89%,transparent)}
.wish-neon-portal svg {width:100%;height:100%;overflow:visible;fill:none;stroke-linecap:round;stroke-linejoin:round}
.wish-arch {--neon-ruby:#f84868;--current-delay:0s}
.wish-arch-middle {--neon-ruby:#d53c61;--current-delay:-3.3s;opacity:.76}
.wish-arch-inner {--neon-ruby:#a63455;--current-delay:-6.6s;opacity:.52}
.wish-arch-halo {stroke:var(--neon-ruby);stroke-width:13;filter:blur(7px);opacity:.7;animation:wish-neon-breathe 5.5s ease-in-out infinite alternate;animation-delay:var(--current-delay)}
.wish-arch-tube {stroke:var(--neon-ruby);stroke-width:3.4}
.wish-arch-core {stroke:#ffb6b6;stroke-width:1;opacity:.85}
.wish-arch-current {stroke:#fff2dc;stroke-width:2.2;stroke-dasharray:72 928;stroke-dashoffset:1000;filter:drop-shadow(0 0 4px #ffd4a9);animation:wish-current-travel 9s linear infinite;animation-delay:var(--current-delay)}
.wish-neon-floor {position:absolute;left:-8%;right:-8%;bottom:-4%;height:150px;border-radius:50%;background:radial-gradient(ellipse at 50% 65%,transparent 32%,#ce284c40 42%,#ff6b733d 44%,transparent 59%);filter:blur(9px);animation:wish-floor-glow 6s ease-in-out infinite alternate}
.wishlist .section-inner {z-index:2;text-shadow:0 3px 22px #090508}
.wishlist .eyebrow {color:#d9b5c0;font-size:13px}
.wishlist .body-copy {font-size:17px;color:#d7c6cd}
.wishlist .text-link {font-size:13px}
/* A cabaret follow-spot grazes the response area behind the readable form. */
.rsvp {background:radial-gradient(ellipse at 0 0,#85213742,transparent 64%),#170a11}
.rsvp-stage-light {position:absolute;inset:0;overflow:hidden;pointer-events:none;z-index:0;mix-blend-mode:screen}
.rsvp-stage-light span {position:absolute;pointer-events:none}
.rsvp-light-wash {inset:0;background:radial-gradient(ellipse at 4% 19%,#b8274b50,transparent 59%);animation:rsvp-wash-travel 9s ease-in-out infinite alternate}
.rsvp-light-beam {inset:-15% -75%;background:linear-gradient(116deg,transparent 37%,#d5495a1a 43%,#f3bf9230 48%,#fff0d842 50%,#e59c9430 53%,transparent 61%);filter:blur(5px);animation:rsvp-follow-spot 8.5s cubic-bezier(.45,0,.55,1) infinite}
.rsvp-light-glint {top:14%;left:-40%;width:85%;height:3px;background:linear-gradient(90deg,transparent,#ffcaae80,#fff2d9,transparent);box-shadow:0 0 17px 4px #ed758646;transform:rotate(-28deg);animation:rsvp-cabaret-glint 8.5s ease-in-out infinite}
.rsvp-grid {z-index:2}
.rsvp input[type=text],.rsvp textarea,.rsvp select {background-color:#160c149c}
.rsvp .attendance-options span {background:#160c145c}
/* Real smoke drifts across the black closing frame, underneath all contacts. */
.footer {background:#070709;overflow:hidden}
.footer>.footer-atmosphere {z-index:0;opacity:1;mask-image:linear-gradient(transparent 18%,#0008 45%,#000 66%,#000 96%,#0009);-webkit-mask-image:linear-gradient(transparent 18%,#0008 45%,#000 66%,#000 96%,#0009)}
.footer .section-inner {z-index:2}
.footer .organizer,.footer-title,.footer-signature {position:relative;text-shadow:0 2px 15px #000}
.footer .smoke-fallback i {bottom:0;height:48%;opacity:.72}
.footer .smoke-fallback i:nth-child(2) {bottom:20%;opacity:.48}
.footer .smoke-fallback i:nth-child(3) {bottom:-11%;height:58%;opacity:.62}
.footer-signature {color:#baabb3}
@keyframes event-ticker-travel {to{transform:translate3d(-50%,0,0)}}
@keyframes hotel-lacquer-travel {from{transform:translateX(-12%);opacity:.5}to{transform:translateX(14%);opacity:1}}
@keyframes hotel-photo-glint {0%,12%{transform:translateX(-80%);opacity:0}20%{opacity:.65}55%{opacity:.4}68%,100%{transform:translateX(80%);opacity:0}}
@keyframes wish-current-travel {to{stroke-dashoffset:0}}
@keyframes wish-neon-breathe {from{opacity:.45}to{opacity:1}}
@keyframes wish-floor-glow {from{opacity:.45;transform:scaleX(.92)}to{opacity:.9;transform:scaleX(1.06)}}
@keyframes rsvp-wash-travel {from{transform:translateX(-14%);opacity:.65}to{transform:translateX(32%);opacity:1}}
@keyframes rsvp-follow-spot {0%{transform:translateX(-38%);opacity:0}16%{opacity:.8}55%{opacity:.8}85%,100%{transform:translateX(36%);opacity:0}}
@keyframes rsvp-cabaret-glint {0%,12%{transform:translate3d(-15%,40px,0) rotate(-28deg);opacity:0}26%{opacity:.66}50%{opacity:.32}74%,100%{transform:translate3d(200%,120px,0) rotate(-28deg);opacity:0}}
.hotels:not(.motion-active) .hotel-lacquer span,.hotels:not(.motion-active) .hotel-image-link::after,.wishlist:not(.motion-active) .wish-arch-halo,.wishlist:not(.motion-active) .wish-arch-current,.wishlist:not(.motion-active) .wish-neon-floor,.rsvp:not(.motion-active) .rsvp-stage-light span,.footer:not(.motion-active) .smoke-fallback i {animation-play-state:paused}
/* Continuous movement stays spatial: material, light and atmosphere, no strobe. */
@keyframes velvet-drift {from{transform:translateX(-3%) rotate(-1.5deg) scaleX(1.04)}to{transform:translateX(5%) rotate(1.2deg) scaleX(.97)}}
@keyframes stage-color-travel {from{transform:translateX(-15%) scale(1)}to{transform:translateX(24%) scale(1.15)}}
@keyframes floor-light-travel {from{transform:translateX(-17%) perspective(300px) rotateX(32deg);opacity:.7}to{transform:translateX(17%) perspective(300px) rotateX(32deg);opacity:1}}
@keyframes grand-pan-left {0%,100%{transform:rotate(-26deg)}50%{transform:rotate(44deg)}}
@keyframes grand-pan-right {0%,100%{transform:rotate(27deg)}50%{transform:rotate(-46deg)}}
@keyframes camera-arrive {from{transform:scale(1.19);filter:brightness(.55)}to{transform:scale(1.015);filter:brightness(1)}}
@keyframes portal-arrive {from{opacity:0;transform:scale(1.18) translateY(25px)}to{opacity:1;transform:scale(1) translateY(0)}}
@keyframes wing-arrive {from{opacity:0;transform:translateX(-28%) scale(1.1)}to{opacity:1;transform:translateX(0) scale(1)}}
@keyframes wing-arrive-right {from{opacity:0;transform:translateX(28%) scale(-1.1,1.1)}to{opacity:1;transform:translateX(0) scale(-1,1)}}
@keyframes copy-arrive {from{opacity:0;transform:translateY(26px)}to{opacity:1;transform:translateY(0)}}
@keyframes copy-fade {from{opacity:0}to{opacity:1}}
@keyframes title-unfold {from{opacity:0;transform:translateY(48px) rotateX(14deg);clip-path:inset(0 0 100% 0)}to{opacity:1;transform:translateY(0) rotateX(0);clip-path:inset(-15% -10% -15% -10%)}}
@keyframes opening-light-pass {0%{opacity:0;transform:translateX(-75%)}26%{opacity:.7}66%{opacity:.4}100%{opacity:0;transform:translateX(75%)}}
@keyframes editorial-pass {from{transform:translateX(-24px) rotate(27deg);opacity:.5}to{transform:translateX(54px) rotate(19deg);opacity:1}}
@keyframes program-velvet {from{transform:translateX(-5%) rotate(-2deg)}to{transform:translateX(5%) rotate(1deg)}}

section:not(.motion-active) .wing-drift,section:not(.motion-active) .stage-wash span,section:not(.motion-active) .floor-light,section:not(.motion-active) .editorial-light span,section:not(.motion-active) .program-velvet img {animation-play-state:paused}

@media(min-width:650px) {
 .hotel-heading {display:block}
 .hotel-heading>div {min-width:0}
 .hotel-heading .display {font-size:64px}
 .hotel-heading .eyebrow {max-width:none}
 .hotel-intro {font-size:17px;margin-bottom:5px}
 .hotel-card h3 {font-size:28px}
 .hotel-offer {max-width:720px;padding:34px 36px;text-align:center}
 .hotel-offer .offer-phone {justify-content:center}
 .wishlist {min-height:650px}
 .event-ticker {padding:24px 0}
 .stage-portals {left:17%;right:17%;top:46px;bottom:8%}
 .stage-wing {max-width:520px;width:36%}.wing-left{left:-5%}.wing-right{right:-5%}
 .hero-center {bottom:calc(13.5% + 44px)}
 .spotlight {width:46px;height:62px;bottom:9%}
 .spotlight-left {left:16%}.spotlight-right {right:16%}
 .cabaret-art {height:auto;min-height:760px}
 .program-velvet {right:-17%;width:40%;max-width:600px}
 .program-orbit {left:65%;right:-5%}
 .time-description h3 {font-size:21px}
}
@media(min-width:1050px) {
 .hotel-heading {display:flex}
 .hotel-heading>div {min-width:465px}
 .hotel-heading .eyebrow {max-width:465px}
 .hotel-card h3 {font-size:31px}
 .hotel-offer {max-width:none;margin-top:44px}
 .hotel-heading .display {font-size:72px}
 .stage-portals {left:27%;right:27%;top:37px;bottom:8%}
 .stage-wing {width:35%;max-width:650px}.wing-left{left:-3%}.wing-right{right:-3%}
 .hero-center {bottom:calc(12.5% + 44px)}
 .spotlight-left {left:25%}.spotlight-right {right:25%}
}
@media(max-width:359px) {
 .hotel-heading .display {font-size:38px}
 .hotel-heading .eyebrow {font-size:12px;letter-spacing:.02em;gap:8px}
 .hotel-caption {padding:21px 17px 24px}
 .hotel-offer {padding:24px 19px}
 .wishlist {min-height:580px}
 .hero-center {bottom:calc(15% + 44px)}
 .hero-invitation {font-size:12px;letter-spacing:.08em}
 .stage-portals {top:48px;left:4%;right:4%}
 .time-description h3 {font-size:16px}
 .cabaret-art {height:480px}
}
@media(prefers-reduced-motion:reduce) {
 .event-ticker.has-ticker-control .event-ticker-control {display:none}
 .event-ticker-window {mask-image:none;-webkit-mask-image:none}
 .event-ticker-track {animation:none;transform:none;will-change:auto}
 .event-ticker-group {min-width:100vw;justify-content:center;gap:20px;font-size:20px}
 .event-ticker-group> :nth-child(n+4),.event-ticker-group+.event-ticker-group {display:none}
 .hotel-lacquer span,.hotel-image-link::after,.wish-arch-halo,.wish-arch-current,.wish-neon-floor,.rsvp-stage-light span {animation:none!important}
 .hotel-image-link::after,.rsvp-light-glint {opacity:0}
 .rsvp-light-beam {opacity:.2;transform:none}
 .wish-arch-current {opacity:.35;stroke-dashoffset:150}
 .stage-wings,.stage-portals {transform:none;will-change:auto}
 .stage-wing,.wing-drift,.program-velvet img,.stage-wash span,.floor-light,.editorial-light span {animation:none!important;will-change:auto}
 .wing-right {transform:scaleX(-1)}
 .hero-curtain,.portal-frame{opacity:1!important;transform:none!important;filter:none!important}
 .stage-wings {opacity:1!important}
 .scene-has-started .hero-invitation,.scene-has-started .title-life,.scene-has-started .title-kaif,.scene-has-started .hero-bottom {opacity:1;animation:none!important;clip-path:none}

 .spotlight-left .spot-pivot {transform:rotate(24deg)}.spotlight-right .spot-pivot {transform:rotate(-27deg)}
}
