/* LIFE в кайф — ACT II / contemporary cabaret, edition 10 */
:root {
  --ink:#0c0a0b;
  --paper:#eee9e0;
  --muted:#b8afb0;
  --wine:#4c0b19;
  --red:#bb243e;
  --line:rgba(238,233,224,.17);
  --page:28px;
  color-scheme:dark;
  font-family:Manrope,Arial,sans-serif;
  font-synthesis:none;
  color:var(--paper);
  background:var(--ink);
  scroll-behavior:smooth;
  scroll-padding-top:80px;
  -webkit-text-size-adjust:100%;
}
*,*::before,*::after {box-sizing:border-box}
body {margin:0;font-size:16px;line-height:1.65;overflow-x:clip;-webkit-font-smoothing:antialiased}
body.entrance-is-closed,body.entrance-is-opening,body.menu-is-open {overflow:hidden}
[hidden] {display:none!important}
a {color:inherit;text-decoration:none;-webkit-tap-highlight-color:transparent}
button,input,textarea,select {font:inherit;color:inherit}
button {cursor:pointer;-webkit-tap-highlight-color:transparent}
button,a,input,select,textarea {touch-action:manipulation}
button {background:none;border:0}
button[aria-disabled=true] {cursor:default}
img,svg {display:block;max-width:100%}
p,h1,h2,h3 {margin:0}
h1,h2,h3 {font-weight:400}
button:focus-visible,a:focus-visible,input:focus-visible,textarea:focus-visible,select:focus-visible,[tabindex='0']:focus-visible {outline:2px solid #ee798b;outline-offset:5px}
.hero:focus,.entrance:focus {outline:none}
::selection {background:#a9213d;color:#fff}
.sr-only {position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
.skip-link {position:fixed;z-index:160;left:20px;top:12px;padding:12px 18px;background:var(--paper);color:var(--ink);transform:translateY(-180%)}
.skip-link:focus {transform:none}
section,footer {position:relative;isolation:isolate}
.section-pad {padding:100px var(--page)}
.section-inner {position:relative;max-width:1160px;margin:auto;z-index:1}
.narrow {max-width:660px}
.eyebrow,.tiny {font-size:12px;line-height:1.65;font-weight:500;letter-spacing:.14em;text-transform:uppercase}
.eyebrow {margin-bottom:26px;color:var(--muted)}
.display {font-size:clamp(36px,9.8vw,58px);line-height:1.15;letter-spacing:-.05em;font-weight:400;text-wrap:balance}
.body-copy {font-size:16px;line-height:1.85;color:#c7bdbe}
.text-link {display:inline-flex;gap:18px;align-items:center;min-height:48px;font-size:12px;font-weight:500;letter-spacing:.07em;line-height:1.5;border-bottom:1px solid currentColor;padding:11px 0}
.text-link svg {width:20px;height:20px;fill:none;stroke:currentColor;stroke-width:1.4}
.text-link>span {font-size:22px;line-height:1}
.text-link:hover {color:#fff}
/* Two image halves remain closed for 1.2s, then open without interaction. */
.entrance {position:fixed;inset:0;z-index:200;overflow:hidden;background:transparent;isolation:isolate}
.entrance-panel {position:absolute;top:0;bottom:0;width:50.1%;background-image:url('assets/curtain-noir.jpg');background-repeat:no-repeat;background-size:200% 100%;transition:transform 1.8s cubic-bezier(.67,0,.18,1);will-change:transform;z-index:2}
.entrance-left {left:0;background-position:left center;transform-origin:left center;box-shadow:12px 0 40px #0008}
.entrance-right {right:0;background-position:right center;transform-origin:right center;box-shadow:-12px 0 40px #0008}
.entrance.is-opening .entrance-left {transform:translateX(-101%) scaleX(.94)}
.entrance.is-opening .entrance-right {transform:translateX(101%) scaleX(.94)}
.entrance-light {position:absolute;inset:0;background:radial-gradient(ellipse at 50% 68%,#b82c4326,transparent 60%);opacity:0;transition:opacity 1.8s;pointer-events:none;z-index:3}
.entrance.is-opening .entrance-light {opacity:1}
/* Navigation remains compact and out of the central stage. */
.site-header {position:fixed;z-index:70;top:0;left:0;width:100%;display:flex;align-items:center;justify-content:space-between;padding:20px var(--page);transition:background .35s,padding .35s,box-shadow .35s}
.site-header.scrolled {background:rgba(12,10,11,.93);padding-top:12px;padding-bottom:12px;box-shadow:0 1px #ffffff0c;backdrop-filter:blur(16px)}
.header-act {display:flex;gap:11px;align-items:center;min-height:40px;font-size:13px;letter-spacing:.08em}
.header-act>span:first-child {font-size:12px;letter-spacing:.16em;color:#c2b9b7}
.header-act>span:last-child {font-size:22px;line-height:1;font-weight:500;letter-spacing:.09em}
.menu-toggle {width:44px;height:44px;padding:12px 2px 12px 10px;display:flex;flex-direction:column;justify-content:center;gap:7px}
.menu-toggle span {display:block;width:29px;height:1px;background:var(--paper);transition:width .25s}
.menu-toggle span:last-child {width:21px;align-self:flex-end}
.menu-toggle:hover span:last-child {width:29px}
.hero {min-height:740px;height:100svh;max-height:1200px;overflow:hidden;background:#0a080a;--hero-travel:0px;--stage-x:0;--stage-y:0}
.stage-backdrop {position:absolute;inset:-2%;z-index:-4;transform:translate3d(calc(var(--stage-x) * 9px),calc(var(--hero-travel) * .13 + var(--stage-y) * 6px),0);will-change:transform}
.hero-curtain {width:100%;height:100%;object-fit:cover;object-position:center;opacity:.95}
.hero-shade {position:absolute;inset:0;z-index:-3;background:linear-gradient(180deg,#07060833 0%,transparent 25%,#09070a14 57%,#0c0a0b08 74%,#0c0a0b 100%)}
.stage-frame {position:absolute;inset:19% 15px 21%;z-index:-1;pointer-events:none}
.frame-side {position:absolute;top:0;bottom:0;display:flex;flex-direction:column;justify-content:space-between}
.frame-left {left:0}.frame-right {right:0}
.frame-side i {display:block;width:3px;height:3px;background:#f5d5b7;border-radius:50%;box-shadow:0 0 7px #df9265,0 0 20px #b93837;animation:lamp-breathe 4s ease-in-out infinite alternate}
.frame-side i:nth-child(2) {animation-delay:-.8s}.frame-side i:nth-child(3) {animation-delay:-1.6s}.frame-side i:nth-child(4) {animation-delay:-2.4s}.frame-side i:nth-child(5) {animation-delay:-3.2s}
.hero-center {position:absolute;left:var(--page);right:var(--page);bottom:19%;z-index:2;text-align:center;transform:translateY(calc(var(--hero-travel) * -.1))}
.hero-invitation {font-size:12px;letter-spacing:.12em;margin-bottom:22px;color:#d2b7b7}
.hero-title {display:flex;flex-direction:column;align-items:center;overflow:visible}
.title-life {display:block;font-size:clamp(142px,47vw,235px);line-height:.95;letter-spacing:-.075em;font-weight:500;margin-left:-.075em;color:#eee9e0;text-shadow:0 3px 24px #07050866}
.title-kaif {display:block;font-size:clamp(34px,11.8vw,54px);line-height:1.4;letter-spacing:.07em;font-weight:400;margin-top:1px}

.hero-bottom {position:absolute;bottom:5%;left:50%;transform:translateX(-50%);z-index:3}
.scroll-cue {display:flex;align-items:center;justify-content:center;width:44px;height:55px}
.scroll-cue svg {width:14px;height:29px;fill:none;stroke:#c9bdb8;stroke-width:1.1;animation:scroll-nudge 2.5s ease-in-out infinite}
body.entrance-is-closed .hero-center {opacity:0;transform:translateY(34px)}
body.entrance-is-opening .hero-center {animation:title-enter 1.6s .6s both}
/* An ivory invitation leaf gives the information a quiet editorial rhythm. */
.invitation {background:var(--paper);color:#231719;text-align:center;padding-top:94px;padding-bottom:94px}
.invitation .eyebrow {color:#695357;font-size:12px;letter-spacing:.12em}
.invitation .display {font-size:clamp(33px,9vw,54px);line-height:1.2}
.invitation-date-lockup {margin:43px auto 30px;padding:26px 0;border-top:1px solid #4023292b;border-bottom:1px solid #4023292b;max-width:400px}
.invitation-date {font-size:clamp(29px,8.2vw,40px);letter-spacing:-.05em;line-height:1.25;color:#640f24}
.invitation-date span {font-size:.64em;font-weight:500;letter-spacing:-.02em;margin-left:6px}
.invitation-time {font-size:12px;font-weight:500;letter-spacing:.06em;margin-top:12px}
.intro-copy {font-size:18px;line-height:1.65;letter-spacing:-.025em}
.invitation .body-copy {font-size:15px;color:#65565a;margin-top:18px;line-height:1.8}
.invitation .text-link {margin-top:26px;color:#5e1a2b}
/* Red theatrical light grazes the program, with no pictorial ornaments. */
.program {overflow:hidden;background:#0e0b0d;padding-top:100px;padding-bottom:95px}
.program::after {content:'';position:absolute;z-index:-1;right:-50px;top:35px;width:180px;height:450px;border-left:1px solid #a4233d33;transform:rotate(24deg);background:linear-gradient(90deg,#b8203414,transparent)}
.program-light {position:absolute;z-index:-1;top:-120px;right:-150px;width:500px;height:650px;background:radial-gradient(ellipse,#7611273b,transparent 65%);transform:rotate(-25deg);animation:program-light 9s ease-in-out infinite alternate}
.program-sheet {max-width:840px}
.program .section-heading {padding-bottom:39px}
.program .display {font-size:clamp(42px,11vw,68px);line-height:1.13;letter-spacing:-.055em}
.timeline {list-style:none;margin:0;padding:0;border-top:1px solid var(--line)}
.timeline li {display:grid;grid-template-columns:42% 1fr;align-items:center;gap:14px;min-height:103px;padding:24px 0;border-bottom:1px solid var(--line)}
.time {font-size:clamp(34px,9.3vw,49px);line-height:1.2;letter-spacing:-.065em;font-weight:400;font-variant-numeric:tabular-nums}
.time>span {color:#94757c}
.time-description h3 {font-size:17px;font-weight:400;letter-spacing:-.025em;line-height:1.5}
/* A second stage: bold red typography, velvet architecture, clean black tie palette. */
.dresscode {background:#390b18;overflow:hidden}
.cabaret-art {position:relative;height:460px;overflow:hidden;background:#18090f;isolation:isolate}
.cabaret-backdrop {position:absolute;z-index:-3;width:100%;height:100%;object-fit:cover;object-position:50% 75%;opacity:.85;transform:scale(1.07)}
.cabaret-art::after {content:'';position:absolute;inset:0;z-index:-2;background:linear-gradient(180deg,#32081150,transparent 40%,#390b18 100%)}
.cabaret-sweep {position:absolute;z-index:-1;top:-50%;left:-15%;width:130%;height:180%;background:linear-gradient(95deg,transparent 30%,#e9224824 45%,#f8aaa014 50%,transparent 65%);transform-origin:50% 10%;animation:cabaret-sweep 10s ease-in-out infinite alternate}
.cabaret-word {position:absolute;left:50%;top:46%;transform:translate(-50%,-50%);font-size:clamp(69px,21vw,130px);line-height:1.1;letter-spacing:-.075em;font-weight:500;color:#cf314b;text-shadow:0 0 45px #d30b2630;white-space:nowrap}
.cabaret-line {position:absolute;left:50%;top:64%;transform:translateX(-50%);width:1px;height:48px;background:linear-gradient(#c75264,transparent)}
.cabaret-art>p {position:absolute;top:79%;width:100%;text-align:center;font-size:12px;letter-spacing:.22em;color:#b67d87}
.dress-content {padding-top:5px;padding-bottom:95px;max-width:640px;margin:auto}
.dress-content .eyebrow {color:#c899a2;margin-bottom:23px}
.dress-content .display {font-size:clamp(62px,17.8vw,99px);line-height:1.1;letter-spacing:-.065em;overflow:visible;padding-bottom:8px}
.dress-content .display>span {display:block}
.dress-content .body-copy {margin-top:28px;color:#d5b7be;line-height:1.8;font-size:16px}
.dress-palette {display:flex;gap:10px;margin:27px 0 30px}
.swatch {width:30px;height:30px;display:block;border:1px solid #ffffff29;border-radius:50%}
.swatch-black {background:#101013}.swatch-wine {background:#651528}.swatch-red {background:#a6243a}
.looks-button {min-height:54px;width:100%;border:1px solid #c9939f77;display:flex;align-items:center;justify-content:space-between;padding:14px 19px;font-size:15px;line-height:1.5;font-weight:500}
.looks-button>span {font-size:23px;line-height:1}
/* Real hotel photography, straight edges, large readable titles. */
.hotels {background:#111013;padding-top:95px;padding-bottom:90px;overflow:hidden}
.hotel-heading .eyebrow {font-size:12px}
.hotel-intro {margin-top:25px;font-size:16px;line-height:1.75;color:var(--muted)}
.hotel-slider {display:flex;gap:20px;overflow-x:auto;scroll-snap-type:x mandatory;scrollbar-width:none;margin:37px calc(-1 * var(--page)) 0;padding:0 var(--page) 12px;scroll-padding-left:var(--page);-webkit-overflow-scrolling:touch}
.hotel-slider::-webkit-scrollbar {display:none}
.hotel-card {flex:0 0 100%;flex-basis:calc(100% - 12px);min-width:0;scroll-snap-align:start}
.hotel-image-link {display:block;position:relative;overflow:hidden;aspect-ratio:4/4.7;background:#242024}
.hotel-image-link>img {width:100%;height:100%;object-fit:cover;filter:saturate(.68);transition:transform .7s,filter .7s}
.hotel-image-link:hover>img {transform:scale(1.035);filter:saturate(.9)}
.hotel-arrow {position:absolute;right:16px;bottom:16px;width:40px;height:40px;display:flex;align-items:center;justify-content:center;background:#eee9e0;color:#1c1418;font-size:24px}
.hotel-place {margin-top:24px;margin-bottom:10px;font-size:12px;letter-spacing:.11em;color:#af929a}
.hotel-card h3 {font-size:clamp(25px,7.3vw,34px);font-weight:400;line-height:1.22;letter-spacing:-.05em}
.hotel-subtitle {font-size:13px;color:#aaa0a3;line-height:1.65;margin-top:8px;min-height:43px}
.hotel-card .text-link {margin-top:6px;font-size:12px;gap:25px}
.slider-controls {display:flex;justify-content:space-between;align-items:center;margin-top:16px;padding-bottom:32px;border-bottom:1px solid var(--line)}
.slider-controls>p {font-size:13px;letter-spacing:.04em}
.slider-total {color:#887a81;margin-left:6px}
.slider-controls>div {display:flex;gap:8px}
.slider-controls button {width:46px;height:46px;border:1px solid #ffffff30;font-size:24px;line-height:1}
.slider-controls button:disabled {opacity:.25;cursor:default}
.slider-controls button:not(:disabled):hover {background:#ffffff0c}
.hotel-offer {padding-top:30px}
.hotel-offer p {font-size:16px;line-height:1.8;max-width:530px}
.hotel-offer .offer-details {font-size:14px;margin-top:15px;color:var(--muted)}
.offer-phone {display:flex;align-items:center;gap:26px;margin-top:20px;font-size:19px;letter-spacing:-.03em}
.offer-phone span {font-size:22px}
.offer-whatsapp {display:inline-block;margin-top:12px;font-size:13px;border-bottom:1px solid #83777c;padding-bottom:5px}
/* Luminous proscenium lines echo the cabaret architecture. */
.wishlist {text-align:center;overflow:hidden;min-height:540px;display:grid;align-items:center;background:#100b0e;padding-top:115px;padding-bottom:115px}
.wishlist .eyebrow {font-size:12px;color:#b599a1}
.wishlist .display {font-size:clamp(56px,16vw,80px);line-height:1.2}
.wishlist .body-copy {margin:28px auto 17px;font-size:16px}
.wishlist .text-link {font-size:12px}
/* Form intentionally stays unconnected until the next content pass. */
.rsvp {background:var(--paper);color:#20171b;padding-top:90px;padding-bottom:100px;color-scheme:light}
.rsvp .eyebrow {color:#7c5663;font-size:12px}
.rsvp .display {font-size:clamp(46px,12.8vw,66px);line-height:1.17}
.rsvp .body-copy {color:#716068;margin-top:24px;font-size:16px}
.rsvp-form {margin-top:45px}
.form-field {margin-bottom:27px}
.form-field>label,fieldset legend {display:block;font-size:14px;font-weight:500;line-height:1.6;margin-bottom:11px}
input[type=text],select,textarea {width:100%;border:1px solid #5430393b;border-radius:0;background:transparent;padding:15px 14px;font-size:16px;line-height:1.5;color:#20171b;box-shadow:none;appearance:none}
input::placeholder,textarea::placeholder {color:#89797d;opacity:1;font-size:14px}
input[type=text]:focus,textarea:focus,select:focus {border-color:#78283e}
textarea {min-height:110px;resize:vertical}
select {background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='20' height='20' viewBox='0 0 20 20'%3E%3Cpath d='m5 7 5 5 5-5' fill='none' stroke='%234a2432' stroke-width='1.5'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 14px center;padding-right:42px}
fieldset {border:0;padding:0;margin:0 0 28px;min-width:0}
.attendance-options {display:flex;flex-wrap:wrap;gap:8px}
.attendance-options label {position:relative;flex:1 1 auto;cursor:pointer}
.attendance-options input {position:absolute;opacity:0;width:1px;height:1px}
.attendance-options span {display:flex;align-items:center;justify-content:center;min-height:48px;border:1px solid #5430393b;padding:10px 13px;font-size:13px;font-weight:500;transition:background .2s,color .2s}
.attendance-options input:checked+span {background:#561229;color:#f3e9e5;border-color:#561229}
.attendance-options input:focus-visible+span {outline:2px solid #ad3356;outline-offset:4px}
.optional {color:#917981;font-size:12px;font-weight:400;margin-left:8px}
.primary-button {display:flex;align-items:center;justify-content:space-between;width:100%;padding:17px 20px;min-height:58px;background:#31101e;color:#f4ebe7;font-size:12px;font-weight:500;letter-spacing:.06em;line-height:1.5;margin-top:33px}
.primary-button>span {font-size:23px;line-height:1}
.field-error {color:#902c4a;font-size:13px;margin-top:8px}
/* Quiet final billing. */
.footer {text-align:center;padding-top:90px;padding-bottom:32px;background:#0c0a0b}
.footer .eyebrow {font-size:12px;color:#998c90;margin-bottom:24px}
.contact-name {font-size:64px;letter-spacing:-.065em;line-height:1.2}
.contact-phone {display:block;font-size:23px;letter-spacing:-.04em;margin-top:22px;line-height:1.5}
.footer .text-link {font-size:12px;margin-top:16px}
.organizer {margin:57px auto 59px;padding-top:32px;border-top:1px solid var(--line)}
.organizer .tiny {font-size:12px;color:#908187;letter-spacing:.12em}
.organizer a {display:inline-block;margin-top:16px}
.organizer img {width:136px;height:auto}
.footer-title {display:inline-flex;flex-direction:column;align-items:center;line-height:1}
.footer-title>span:first-child {font-size:70px;letter-spacing:-.075em;margin-left:-.075em;font-weight:500}
.footer-title>span:last-child {font-size:17px;letter-spacing:.08em;margin-top:9px}
.footer-signature {display:flex;justify-content:space-between;gap:15px;margin-top:52px;padding-top:19px;border-top:1px solid var(--line);font-size:12px;line-height:1.5;letter-spacing:.06em;color:#8a7b82}
.sticky-rsvp {position:fixed;z-index:65;bottom:calc(14px + env(safe-area-inset-bottom));left:var(--page);right:var(--page);max-width:420px;margin:auto;display:flex;align-items:center;justify-content:space-between;gap:10px;padding:16px 20px;background:#ede6dc;color:#26131b;border:1px solid #d2c4bc;box-shadow:0 8px 32px #0004;font-size:12px;line-height:1.5;font-weight:500;letter-spacing:.04em;transform:translateY(145%);opacity:0;visibility:hidden;transition:transform .4s,opacity .4s,visibility .4s}
.sticky-rsvp>span:last-child {font-size:22px;line-height:1}
.sticky-rsvp.visible {transform:none;opacity:1;visibility:visible}
/* Menu contains no counters or decorative objects. */
.menu-dialog {position:fixed;inset:0 0 0 auto;width:100%;max-width:560px;height:100dvh;max-height:none;margin:0;padding:25px var(--page) 30px;background:#210c15;color:var(--paper);border:0;overflow-y:auto;overscroll-behavior:contain}
.menu-dialog::backdrop {background:#080507b8;backdrop-filter:blur(5px)}
.menu-top {display:flex;justify-content:space-between;align-items:center;border-bottom:1px solid var(--line);padding-bottom:22px}
.menu-top p {font-size:14px;letter-spacing:.015em}
.menu-top p span {display:block;font-size:12px;letter-spacing:.15em;color:#ac828f;margin-top:6px}
.menu-close {width:44px;height:44px;font-size:33px;font-weight:400;line-height:1}
.menu-dialog nav {display:flex;flex-direction:column;gap:21px;padding:43px 0}
.menu-dialog nav a {font-size:clamp(26px,8vw,37px);letter-spacing:-.045em;line-height:1.3;min-height:38px}
.menu-dialog nav a:hover {color:#ea8d9d}
.menu-contact {display:flex;flex-direction:column;gap:8px;font-size:12px;letter-spacing:.1em;padding-top:25px;border-top:1px solid var(--line);color:#b799a2}
.menu-contact span {font-size:19px;color:var(--paper);letter-spacing:-.02em}
.menu-date {font-size:12px;letter-spacing:.12em;margin-top:28px;color:#94717d}
/* Optional soundtrack controls stay absent until a real file is configured. */
.music-toggle {position:fixed;right:80px;top:21px;width:42px;height:42px;z-index:80;display:grid;place-items:center;background:#160b1299;border:1px solid #bb8b9738;border-radius:50%}
.equalizer {display:flex;gap:3px;height:15px;align-items:center}
.equalizer i {width:2px;height:8px;background:var(--paper)}
.equalizer i:nth-child(2) {height:15px}.equalizer i:nth-child(4) {height:12px}
.music-toggle[aria-pressed=true] i {animation:equalizer .8s ease-in-out infinite alternate}
.music-toggle[aria-pressed=true] i:nth-child(2) {animation-delay:-.3s}.music-toggle[aria-pressed=true] i:nth-child(3) {animation-delay:-.5s}
.music-status {position:fixed;z-index:85;top:82px;right:20px;left:20px;margin:auto;max-width:350px;padding:15px 18px;background:#ede6dc;color:#321c27;font-size:13px;line-height:1.7;box-shadow:0 8px 30px #0004}
/* Motion uses transforms and opacity, never strobes. */
.motion-ready .reveal {opacity:0;transform:translate3d(0,26px,0);transition:opacity 1s,transform 1.15s cubic-bezier(.2,.7,.2,1)}
.motion-ready .reveal.in-view {opacity:1;transform:none}
.timeline .reveal:nth-child(2) {transition-delay:.08s}.timeline .reveal:nth-child(3) {transition-delay:.16s}
section:not(.motion-active) .stage-light,section:not(.motion-active) .frame-side i,section:not(.motion-active) .program-light,section:not(.motion-active) .cabaret-sweep {animation-play-state:paused}

@keyframes lamp-breathe {from{opacity:.48}to{opacity:1}}
@keyframes scroll-nudge {0%,100%{transform:translateY(-3px);opacity:.55}50%{transform:translateY(4px);opacity:1}}
@keyframes title-enter {from{opacity:0;transform:translateY(34px);filter:blur(4px)}to{opacity:1;transform:translateY(0);filter:blur(0)}}
@keyframes program-light {from{transform:translateX(45px) rotate(-25deg);opacity:.45}to{transform:translateX(-40px) rotate(-9deg);opacity:1}}
@keyframes cabaret-sweep {from{transform:rotate(-22deg);opacity:.45}to{transform:rotate(24deg);opacity:1}}
@keyframes equalizer {from{transform:scaleY(.35)}to{transform:scaleY(1)}}
@media(min-width:650px) {
  :root {--page:48px}
  .hero {min-height:820px}
  .hero-center {bottom:17%}
  .hero-invitation {font-size:12px;letter-spacing:.25em;margin-bottom:26px}
  .title-life {font-size:250px}.title-kaif {font-size:59px;letter-spacing:.17em}

  .stage-frame {inset:22% 34px 24%}
  .stage-backdrop {inset:-5% 0}
  .hero-curtain {object-position:center 60%}
  .section-pad {padding-top:115px;padding-bottom:115px}
  .program .section-heading {padding-bottom:50px}
  .timeline li {min-height:124px;grid-template-columns:45% 1fr}
  .time-description h3 {font-size:24px}
  .dresscode {display:grid;grid-template-columns:1fr 1fr;align-items:stretch}
  .cabaret-art {height:auto;min-height:680px}
  .cabaret-word {font-size:clamp(75px,11vw,145px)}
  .cabaret-art>p {font-size:12px}
  .dress-content {padding:110px 34px 100px}
  .dress-content .display {font-size:clamp(65px,8vw,100px)}
  .dress-content .body-copy {font-size:15px}
  .hotel-heading {display:flex;align-items:flex-end;justify-content:space-between;gap:35px}
  .hotel-intro {margin:0 0 3px;font-size:15px}
  .hotel-slider {gap:25px;margin-top:50px}
  .hotel-card {flex:0 0 calc(50% - 25px)}
  .hotel-card h3 {font-size:28px}
  .hotel-image-link {aspect-ratio:4/4.5}
  .hotel-offer {max-width:650px;margin:auto;padding-top:38px;text-align:center}
  .offer-phone {justify-content:center}
  .rsvp-grid {display:grid;grid-template-columns:1fr 1.05fr;gap:50px}
  .rsvp-heading .display {font-size:50px}
  .rsvp-form {margin-top:0}
  .wishlist {min-height:560px}
  .footer {padding-bottom:35px}
  .footer-signature {font-size:12px}
}
@media(min-width:1050px) {
  :root {--page:64px}
  .site-header {padding-left:44px;padding-right:44px}
  .hero {min-height:850px}
  .hero-center {bottom:17%}
  .hero-curtain {object-fit:cover;object-position:center 48%}
  .stage-backdrop {left:0;right:0}
  .stage-frame {inset:20% 6% 24%}
  .title-life {font-size:265px}
  .title-kaif {font-size:61px}
  .hotel-card {flex:1 0 0;min-width:0}
  .hotel-slider {margin-left:0;margin-right:0;padding-left:0;padding-right:0;overflow:visible}
  .slider-controls {display:none}
  .hotel-offer {border-top:1px solid var(--line);margin-top:45px;max-width:none}
  .hotel-offer p {max-width:650px;margin-left:auto;margin-right:auto}
  .hotel-card h3 {font-size:30px}
  .dress-content {padding-left:70px;padding-right:70px;max-width:620px;width:100%}
  .cabaret-art {min-height:720px}
  .cabaret-word {font-size:clamp(130px,12vw,210px)}
  .rsvp-grid {gap:95px}
  .rsvp-heading .display {font-size:65px}
}
@media(max-width:359px) {
  :root {--page:23px}
  .hero {min-height:690px}
  .hero-center {bottom:19%}
  .hero-invitation {font-size:12px;letter-spacing:.15em}

  .display {font-size:35px}
  .program .display {font-size:38px}
  .timeline li {grid-template-columns:40% 1fr;gap:12px}
  .time-description h3 {font-size:15px}
  .cabaret-art {height:380px}
  .attendance-options {gap:6px}.attendance-options span {font-size:12px;padding-left:9px;padding-right:9px}
  .sticky-rsvp {padding-left:15px;padding-right:15px;font-size:12px}
  .optional {margin-left:4px;font-size:12px}
}
@media(prefers-reduced-motion:reduce) {
  :root {scroll-behavior:auto}
  *,*::before,*::after {animation:none!important;transition-duration:.01ms!important;scroll-behavior:auto!important}
  .stage-backdrop,.hero-center {will-change:auto}
  .stage-backdrop {transform:none}
  .hero-center {transform:none}
  .motion-ready .reveal {opacity:1;transform:none}
  body.entrance-is-opening .hero-center {opacity:1;transform:none}
  }

/* Stage choreography: the tower is still, only its independent rotor turns. */
.hero-center {bottom:17%;z-index:5}
.hero-shade {background:linear-gradient(180deg,#07060812,transparent 28%,#09070a22 60%,transparent 83%,#0c0a0b 100%)}
.stage-frame {z-index:0;inset:17% 15px 24%}
.frame-side i {width:4px;height:4px;box-shadow:0 0 9px #e4a279,0 0 22px #b63b39}
/* Moving light beams; the final scene places their sources below the stage edge. */
.stage-rig {position:absolute;inset:0;z-index:2;pointer-events:none}
.spotlight {position:absolute;bottom:12%;width:38px;height:51px}
.spotlight-left {left:7%}.spotlight-right {right:7%}

.spot-pivot {position:absolute;inset:0;transform-origin:50% 34%;will-change:transform}
.spotlight-left .spot-pivot {animation:spot-pan-left 10.5s ease-in-out infinite}
.spotlight-right .spot-pivot {animation:spot-pan-right 13s ease-in-out infinite}

.spot-beam {position:absolute;left:50%;top:33%;width:min(112vw,570px);height:115svh;min-height:800px;transform:translateX(-50%) rotate(180deg);transform-origin:50% 0;filter:blur(5px);opacity:.76;mix-blend-mode:screen}
.spot-beam::before,.spot-beam i {content:'';position:absolute;inset:0;clip-path:polygon(49% 0,51% 0,100% 100%,0 100%);background:linear-gradient(180deg,#f9dfc879 0%,#cfb4a138 38%,#a2828120 75%,transparent 100%)}
.spot-beam i {left:24%;right:24%;background:linear-gradient(#fff4d952,#e3bfa11c 65%,transparent)}
.spotlight-right .spot-beam::before {background:linear-gradient(180deg,#f8c7c481,#ce65743d 42%,#a44b6524 74%,transparent)}
/* Original semitransparent smoke sprites: fallback layers + low-resolution canvas. */
.stage-atmosphere {position:absolute;inset:0;z-index:3;pointer-events:none;overflow:hidden;mix-blend-mode:screen;opacity:.8;mask-image:linear-gradient(transparent 22%,#000 60%,#000 91%,transparent 100%);-webkit-mask-image:linear-gradient(transparent 22%,#000 60%,#000 91%,transparent 100%)}
.smoke-canvas {position:absolute;inset:0;width:100%;height:100%;opacity:0;transition:opacity 1.5s}
.smoke-ready .smoke-canvas {opacity:1}
.smoke-ready .smoke-fallback {opacity:0;visibility:hidden}
.smoke-fallback {position:absolute;inset:0;transition:opacity 1.5s}
.smoke-fallback i {position:absolute;bottom:2%;left:-45%;width:180%;height:39%;background:url('assets/layers/stage-smoke.png') center/100% 100% no-repeat;opacity:.5;animation:fog-cross 20s ease-in-out infinite alternate;will-change:transform}
.smoke-fallback i:nth-child(2) {bottom:11%;left:-5%;opacity:.32;animation-duration:28s;animation-delay:-14s;animation-direction:alternate-reverse;transform:scaleX(-1)}
.smoke-fallback i:nth-child(3) {bottom:-7%;left:-75%;width:210%;height:45%;opacity:.45;animation-duration:17s;animation-delay:-7s}
/* A continuous dark theatre carries the reference's depth into the information. */
.invitation {background:radial-gradient(ellipse at 50% 0,#43111c88,transparent 72%),#120a0e;color:var(--paper);border-top:1px solid #6b253c3b}
.invitation .eyebrow {color:#c8a6ad}
.invitation .body-copy {color:#bda9b0}
.invitation-date-lockup {border-color:#c4919b33}
.invitation-date {color:#ead6cd}
.invitation-time {color:#d1b3b9}
.invitation .text-link {color:#d5adb3}
.program {background:#13080e}
.program-curtain {position:absolute;inset:0;z-index:-2;background:linear-gradient(90deg,#140910b8,#140910ee 45%,#1409109c),url('assets/program-piano-v16.jpg') center 60%/cover;opacity:.77}
.program .stage-atmosphere {opacity:.35;z-index:0}
.program-light {background:radial-gradient(ellipse,#b8243f46,transparent 67%);animation-duration:8s}
.timeline li {transition:border-color .5s}
.timeline li.in-view {border-bottom-color:#ad5d704f}
/* Real monoline tubing, a smoked glass support, and a controlled power-on sequence. */
.cabaret-art {height:540px;background:#1d080f;perspective:1000px}
.cabaret-backdrop {object-position:50% 68%;opacity:1;transform:scale(1.04)}
.cabaret-art::after {background:linear-gradient(180deg,#2408105c,transparent 35%,#390b18 100%)}
.cabaret-sweep {z-index:1;opacity:.85;animation-duration:8s;background:linear-gradient(95deg,transparent 28%,#e82c4d28 46%,#f4c2b23d 50%,transparent 63%)}
.cabaret-art .stage-atmosphere {z-index:3;opacity:.75}

.pin-b {right:9px;top:9px}.pin-c {left:9px;bottom:9px}.pin-d {right:9px;bottom:9px}

.dress-content {position:relative;z-index:4}
.rsvp {background:radial-gradient(ellipse at 15% 0,#6a162544,transparent 67%),#1a0c13;color:var(--paper);color-scheme:dark;border-top:1px solid #a84b622b}
.rsvp .eyebrow {color:#b995a1}.rsvp .body-copy {color:#c4aab5}
.rsvp input[type=text],.rsvp textarea,.rsvp select {background-color:#ffffff04;border-color:#b7778f4a;color:var(--paper)}
.rsvp input::placeholder,.rsvp textarea::placeholder {color:#a38a95}
.rsvp input[type=text]:focus,.rsvp textarea:focus,.rsvp select:focus {border-color:#d196a9}
.rsvp select {background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='20' height='20' viewBox='0 0 20 20'%3E%3Cpath d='m5 7 5 5 5-5' fill='none' stroke='%23cba1b1' stroke-width='1.5'/%3E%3C/svg%3E")}
.rsvp option {background:#20101a;color:#eee6df}
.rsvp .attendance-options span {border-color:#b7778f4a}
.rsvp .attendance-options input:checked+span {background:#e7d8d1;color:#341522;border-color:#e7d8d1}
.rsvp .optional {color:#a98a96}
.rsvp .primary-button {background:#eadfd6;color:#2c1520}
.rsvp .field-error {color:#eda2b7}
@keyframes spot-pan-left {0%,100%{transform:rotate(-18deg)}50%{transform:rotate(38deg)}}
@keyframes spot-pan-right {0%,100%{transform:rotate(18deg)}50%{transform:rotate(-42deg)}}
@keyframes fog-cross {from{transform:translate3d(-6%,2%,0) scale(1.04)}to{transform:translate3d(28%,-9%,0) scale(1.19)}}

body.entrance-is-closed .spot-pivot {animation-play-state:paused}
section:not(.motion-active) .spot-pivot,section:not(.motion-active) .smoke-fallback i {animation-play-state:paused}
body.page-is-hidden *,body.page-is-hidden *::before,body.page-is-hidden *::after {animation-play-state:paused!important}
@media(min-width:650px) {
 .spotlight {width:52px;height:70px;bottom:14%}
 .spotlight-left {left:14%}.spotlight-right {right:14%}
 .spot-beam {width:620px;height:115svh}
 .cabaret-art {height:auto;min-height:730px}

 .hero-center {bottom:15%}
}
@media(min-width:1050px) {
 .spotlight-left {left:22%}.spotlight-right {right:22%}
 .cabaret-art {min-height:760px}
}
@media(max-width:359px) {
 .hero-center {bottom:16%}
 .spotlight {width:30px;height:40px}
 .cabaret-art {height:450px}
}
@media(prefers-reduced-motion:reduce) {
.spot-pivot,.smoke-fallback i {animation:none!important;will-change:auto}
 .spotlight-left .spot-pivot {transform:rotate(20deg)}
 .spotlight-right .spot-pivot {transform:rotate(-25deg)}
 .smoke-fallback i {transform:none;opacity:.25}

}
