:root {
  --surface: #fff8ec;
  --surface-deep: #efe2e5;
  --ink: #2f1b2c;
  --accent: #b78a4a;
  --gold: #d6ae68;
  --rsvp: #241126;
  --hero-overlay: rgba(12,6,18,.22);
  --font-display: "Cormorant Garamond", Georgia, serif;
  --font-script: "Great Vibes", cursive;
  --font-ui: Jost, system-ui, sans-serif;
  --font-royal: Cinzel, Georgia, serif;
  --base-size: 16px;
  --name-size: 62px;
  color-scheme: light;
}

* { box-sizing: border-box; }
html { scroll-behavior: smooth; background: #120a15; }
body { margin: 0; background: #120a15; color: var(--ink); font-family: var(--font-display); font-size: var(--base-size); }
body.intro-active { overflow: hidden; }
button, a { -webkit-tap-highlight-color: transparent; }
img, video { display: block; max-width: 100%; }

.mobile-shell { position: relative; width: min(100%, 430px); min-height: 100dvh; margin: 0 auto; overflow: clip; background: var(--surface); box-shadow: 0 0 80px rgba(0,0,0,.45); }
.desktop-stage { position: fixed; inset: 0; display: flex; flex-direction: column; justify-content: center; padding: 8vw; color: #fff5df; font-family: var(--font-royal); letter-spacing: .22em; text-transform: uppercase; background: radial-gradient(circle at 18% 40%, #48243e, #120a15 62%); }
.desktop-stage span { font-size: clamp(28px, 4vw, 68px); }
.desktop-stage small { max-width: 310px; margin-top: 14px; font: 400 12px/1.8 var(--font-ui); letter-spacing: .16em; opacity: .65; }
.progress { position: fixed; z-index: 90; top: 0; left: 50%; width: min(100%,430px); height: 3px; transform: translateX(-50%) scaleX(0); transform-origin: left; background: linear-gradient(90deg,#8b5b32,var(--gold),#fff0bf); pointer-events:none; }

.invibloom-preview-bar { position: relative; z-index: 95; min-height: 46px; padding: 8px 10px; display:flex; align-items:center; gap:8px; background:rgba(255,249,240,.97); border-bottom:1px solid rgba(169,75,94,.2); font:500 10px/1.2 var(--font-ui); }
.invibloom-preview-bar strong { letter-spacing:.04em; }
.invibloom-preview-bar span { flex:1; text-align:center; opacity:.7; }
.invibloom-preview-bar a { padding:8px 11px; border-radius:999px; color:#fff; background:var(--accent); text-decoration:none; }
html.invibloom-embedded-preview .invibloom-preview-bar { display:none; }

.hero { position: relative; height: 100svh; min-height: 650px; overflow: hidden; isolation:isolate; background:#120a15; }
.hero-poster,.hero-film { position:absolute; inset:0; width:100%; height:100%; object-fit:cover; }
.hero-poster { z-index:-3; transform:scale(1.055); }
.hero-film { z-index:-2; background:#120a15; transform:scale(1.055); }
.hero-glow { position:absolute; z-index:-1; inset:0; opacity:0; background:linear-gradient(180deg,rgba(18,10,21,.03) 4%,transparent 24%,rgba(255,227,170,.04) 48%,var(--hero-overlay) 100%); transition:opacity 1.1s ease; }
.hero.is-ready .hero-glow { opacity:1; }
.intro-trigger { position:absolute; z-index:5; inset:0; width:100%; border:0; display:flex; flex-direction:column; align-items:center; justify-content:flex-end; gap:8px; padding:0 20px max(42px,env(safe-area-inset-bottom)); color:#fff2d7; background:linear-gradient(180deg,transparent 68%,rgba(10,5,14,.48)); cursor:pointer; transition:opacity .5s ease,visibility .5s; }
.intro-trigger.is-hidden { opacity:0; visibility:hidden; pointer-events:none; }
.intro-kicker { padding:10px 18px; border:1px solid rgba(238,196,119,.48); border-radius:999px; background:rgba(32,14,29,.72); backdrop-filter:blur(10px); box-shadow:0 0 28px rgba(221,170,85,.18); font:500 10px/1 var(--font-royal); letter-spacing:.14em; text-transform:uppercase; }
.intro-action { font:500 10px/1 var(--font-ui); letter-spacing:.2em; text-transform:uppercase; animation:pulse 1.8s ease-in-out infinite; }
.hero-copy { position:absolute; z-index:3; inset:34% 10% 17%; display:flex; flex-direction:column; align-items:center; justify-content:center; text-align:center; color:#fff6e4; opacity:0; transform:translateY(18px); transition:opacity 1.15s .18s ease,transform 1.15s .18s cubic-bezier(.2,.8,.2,1); }
.hero.is-ready .hero-copy { opacity:1; transform:none; }
.hero-kicker { margin:0 0 10px; font:500 9px/1.5 var(--font-royal); letter-spacing:.18em; text-transform:uppercase; }
.hero h1 { margin:0; display:flex; flex-direction:column; align-items:center; font:400 var(--name-size)/.78 var(--font-script); color:#fff6e4; text-shadow:0 3px 28px rgba(10,3,12,.9),0 0 2px rgba(84,41,43,.75); }
.hero h1 em { margin:5px 0 7px; font:400 18px/1 var(--font-display); color:var(--gold); }
.flourish { margin:14px 0 10px; color:var(--gold); font-size:13px; }
.hero-family { max-width:250px; margin:3px 0; font:500 10px/1.35 var(--font-display); }
.hero-date { margin:16px 0 2px; font:600 12px/1.4 var(--font-royal); letter-spacing:.11em; text-transform:uppercase; }
.hero-venue { max-width:250px; margin:4px 0; font:500 11px/1.35 var(--font-display); }
.hero-scroll { position:absolute; z-index:4; bottom:max(16px,env(safe-area-inset-bottom)); left:50%; display:flex; flex-direction:column; align-items:center; gap:4px; color:#fff8ec; text-decoration:none; opacity:0; transform:translate(-50%,8px); transition:opacity .7s 1s ease,transform .7s 1s ease; }
.hero.is-ready .hero-scroll { opacity:.75; transform:translate(-50%,0); }
.hero-scroll span { width:1px; height:23px; background:currentColor; transform-origin:top; animation:scrollLine 1.8s ease-in-out infinite; }
.hero-scroll small { font:500 8px/1 var(--font-ui); letter-spacing:.2em; text-transform:uppercase; }

.section { position:relative; padding:88px 24px; }
.welcome { overflow:hidden; text-align:center; background:radial-gradient(circle at 50% 25%,#fffaf2 0,var(--surface) 57%,#f2d2c2 140%); }
.welcome::before,.welcome::after { content:""; position:absolute; width:180px; height:180px; opacity:.15; border:1px solid var(--gold); transform:rotate(45deg); }
.welcome::before { top:-120px; left:-90px; }.welcome::after { right:-100px; bottom:-120px; }
.eyebrow { margin:0 0 12px; color:var(--accent); font:600 9px/1.5 var(--font-royal); letter-spacing:.22em; text-transform:uppercase; }
.script-title { margin:0; color:#792b40; font:400 48px/.95 var(--font-script); }
.ornament { display:flex; align-items:center; justify-content:center; gap:12px; margin:20px auto; color:var(--gold); }
.ornament i { width:55px; height:1px; background:linear-gradient(90deg,transparent,currentColor); }.ornament i:last-child { transform:scaleX(-1); }
.ornament b { font-size:8px; }
.welcome-copy { max-width:310px; margin:0 auto; font:500 17px/1.65 var(--font-display); }
.date-medallion { position:relative; isolation:isolate; width:min(100%,430px); height:auto; aspect-ratio:1/.62; margin:34px auto; padding:24px; display:flex; flex-direction:column; align-items:center; justify-content:center; overflow:hidden; border:1px solid rgba(156,115,77,.34); border-radius:14px; background:linear-gradient(145deg,#edf8fb,#cce7f1); box-shadow:0 18px 42px rgba(88,61,39,.16); cursor:crosshair; touch-action:none; }
.date-medallion > span:not(.date-scratch-hint) { position:relative; z-index:1; font:600 11px/1.25 var(--font-royal); letter-spacing:.18em; text-transform:uppercase; }.date-medallion strong { position:relative; z-index:1; margin:5px 0; color:#24516b; font:500 56px/.9 var(--font-display); }
.date-scratch-canvas { position:absolute; z-index:3; inset:0; width:100%; height:100%; border-radius:inherit; opacity:1; touch-action:none; transition:opacity .45s ease; }
.date-scratch-hint { position:absolute; z-index:4; inset:47% auto auto 50%; padding:6px 10px; color:#f8fdff; border:1px solid rgba(255,255,255,.58); border-radius:999px; transform:translate(-50%,-50%); background:rgba(35,81,107,.18); font:600 8px/1 var(--font-royal); letter-spacing:.18em; text-transform:uppercase; text-shadow:0 1px 5px rgba(23,59,85,.42); pointer-events:none; transition:opacity .28s ease; }
.date-medallion.is-revealed { cursor:default; }.date-medallion.is-revealed .date-scratch-canvas,.date-medallion.is-revealed .date-scratch-hint { opacity:0; pointer-events:none; }
.countdown { display:grid; grid-template-columns:repeat(4,1fr); gap:5px; max-width:340px; margin:0 auto; }
.countdown div { padding:12px 3px; border-top:1px solid rgba(169,75,94,.26); border-bottom:1px solid rgba(169,75,94,.26); }
.countdown strong,.countdown span { display:block; }.countdown strong { font:500 24px/1 var(--font-display); }.countdown span { margin-top:5px; font:500 7px/1 var(--font-ui); letter-spacing:.14em; text-transform:uppercase; }

.section-heading { text-align:center; margin-bottom:34px; }.section-heading h2 { margin:0; color:#792b40; font:500 40px/1 var(--font-display); }.section-heading > p:last-child:not(.eyebrow) { margin:12px auto 0; max-width:260px; font:400 14px/1.5 var(--font-display); opacity:.7; }
.story { background:linear-gradient(180deg,#f2d5c8,#fff6eb); }
.story-frame { position:relative; width:88%; margin:0 auto 28px; padding:9px; border:1px solid rgba(117,58,68,.28); border-radius:160px 160px 12px 12px; box-shadow:0 24px 60px rgba(103,48,61,.16); background:#f8e9dd; }
.story-frame::before { content:""; position:absolute; inset:-8px 20px auto; height:70px; border:1px solid rgba(199,134,106,.35); border-bottom:0; border-radius:100px 100px 0 0; }
.story-frame img { width:100%; aspect-ratio:2/3; object-fit:cover; border-radius:150px 150px 7px 7px; }
.story-frame span { position:absolute; inset:9px; border-radius:150px 150px 7px 7px; background:linear-gradient(180deg,transparent 60%,rgba(71,29,41,.2)); pointer-events:none; }
.story-copy { max-width:330px; margin:0 auto; text-align:center; font:400 italic 19px/1.6 var(--font-display); }.hashtag { margin:16px 0 0; text-align:center; color:var(--accent); font:500 11px/1 var(--font-royal); letter-spacing:.12em; }

.events { padding-inline:20px; overflow:hidden; background:linear-gradient(180deg,#f8fcfd,#e7f2f6); }
.events-list { display:grid; gap:72px; }
.event-window-card { position:relative; display:grid; justify-items:center; perspective:1200px; }
.event-window-stage { position:relative; width:min(100%,350px); aspect-ratio:1; transform:translateY(18px) scale(.94); opacity:.72; transition:opacity .7s ease,transform .9s cubic-bezier(.2,.78,.2,1); }
.event-window-card.is-open .event-window-stage { opacity:1; transform:none; }
.event-window-picture { position:absolute; inset:0; overflow:hidden; border:0; border-radius:50%; background:#d9edf4; box-shadow:0 22px 48px rgba(23,59,85,.14); }
.event-window-photo { width:100%; height:100%; object-fit:cover; transform:scale(1.02); transition:transform 1.15s .28s cubic-bezier(.2,.8,.2,1),filter .55s ease; }
.event-window-card.is-open .event-window-photo { transform:scale(1); }
.event-shutters { position:absolute; inset:0; z-index:4; overflow:hidden; border-radius:24px; pointer-events:none; transform-style:preserve-3d; }
.event-shutter { position:absolute; top:0; bottom:0; width:50.25%; overflow:hidden; background-color:#1b0e19; background-image:linear-gradient(rgba(255,248,236,.04),rgba(12,20,44,.28)); background-repeat:no-repeat; background-size:100% 100%; backface-visibility:hidden; transition:transform 1.2s cubic-bezier(.18,.78,.18,1),opacity .35s .76s ease; box-shadow:0 8px 24px rgba(23,51,74,.16); }
.event-shutter--left { left:0; border-radius:24px 0 0 24px; background-position:left center; transform-origin:left center; }
.event-shutter--right { right:0; border-radius:0 24px 24px 0; background-position:right center; transform-origin:right center; }
.event-window-card.is-open .event-shutter--left { transform:perspective(900px) rotateY(-104deg); opacity:0; }
.event-window-card.is-open .event-shutter--right { transform:perspective(900px) rotateY(104deg); opacity:0; }
.event-content { width:min(92%,330px); margin-top:18px; padding:0 18px 8px; display:flex; flex-direction:column; align-items:center; text-align:center; opacity:0; transform:translateY(18px); transition:opacity .7s .62s ease,transform .7s .62s ease; }
.event-window-card.is-open .event-content { opacity:1; transform:none; }
.event-content h3 { margin:0; color:#24516b; font:500 31px/.98 var(--font-display); }.event-when { margin:10px 0 3px; color:#315d75; font:600 9px/1.35 var(--font-royal); letter-spacing:.06em; text-transform:uppercase; }.event-venue { margin:0; font:500 13px/1.3 var(--font-display); }.event-description { margin:9px auto 0; max-width:280px; font:400 italic 14px/1.42 var(--font-display); opacity:.78; }.evt-map { display:inline-block; margin-top:10px; color:var(--accent); font:600 8px/1 var(--font-ui); letter-spacing:.11em; text-transform:uppercase; text-underline-offset:3px; }

.gallery { background:linear-gradient(180deg,#f4d9c9,#fff5eb); }
.gallery-grid { position:relative; overflow:hidden; width:min(100%,350px); aspect-ratio:1; margin:auto; padding:8px; border:1px solid rgba(64,119,148,.28); border-radius:50%; background:#e6f1f4; box-shadow:0 24px 55px rgba(23,59,85,.14); }.gallery-track { height:100%; display:flex; transition:transform .9s cubic-bezier(.2,.78,.2,1); will-change:transform; }.gallery-item { position:relative; flex:0 0 100%; height:100%; overflow:hidden; aspect-ratio:1; background:#dcecf2; }.gallery-item img { width:100%; height:100%; object-fit:cover; object-position:center 34%; }.gallery-dots { position:absolute; z-index:3; left:50%; bottom:22px; display:flex; gap:7px; padding:7px 9px; border-radius:999px; transform:translateX(-50%); background:rgba(23,59,85,.42); backdrop-filter:blur(7px); }.gallery-dot { width:6px; height:6px; padding:0; border:0; border-radius:50%; background:rgba(255,255,255,.55); transition:width .3s ease,background .3s ease; }.gallery-dot[aria-current="true"] { width:20px; border-radius:999px; background:#fff; }
.venue { background:#fff8f0; }.venue-card { position:relative; max-width:340px; margin:auto; padding:52px 24px; text-align:center; border:1px solid rgba(169,75,94,.25); background:linear-gradient(150deg,rgba(255,255,255,.65),rgba(244,217,201,.55)); box-shadow:0 20px 50px rgba(91,39,52,.1); }.venue-card::before,.venue-card::after { content:""; position:absolute; inset:8px; border:1px solid rgba(199,134,106,.18); pointer-events:none; }.venue-card::after { inset:14px; }.venue-crown { color:var(--gold); font-size:28px; }.venue-card h3 { margin:12px 0 4px; font:500 28px/1.1 var(--font-display); color:#792b40; }.venue-card p { margin:5px 0; }.venue-date { font:500 10px/1.4 var(--font-royal); letter-spacing:.08em; text-transform:uppercase; }.venue-card a { display:inline-block; margin-top:18px; padding:11px 20px; border:1px solid var(--accent); border-radius:999px; color:var(--accent); font:600 9px/1 var(--font-ui); letter-spacing:.13em; text-decoration:none; text-transform:uppercase; }
.things { background:#f3d7ca; }.things-list { list-style:none; margin:0; padding:0; display:grid; gap:12px; }.thing { padding:20px; display:grid; grid-template-columns:44px 1fr; gap:13px; align-items:start; border-bottom:1px solid rgba(75,37,48,.15); opacity:0; transform:translateX(-20px); transition:.65s ease; }.thing:nth-child(even) { transform:translateX(20px); }.thing.is-visible { opacity:1; transform:none; }.thing-index { width:38px; height:38px; display:grid; place-items:center; border:1px solid rgba(169,75,94,.35); border-radius:50%; color:var(--accent); font:600 9px/1 var(--font-royal); }.thing h3 { margin:0 0 4px; font:600 16px/1.2 var(--font-display); }.thing p { margin:0; font:400 14px/1.45 var(--font-display); opacity:.75; }
.calendar { text-align:center; background:#fff7ef; }.calendar-actions { display:flex; flex-direction:column; gap:10px; max-width:280px; margin:auto; }.calendar-actions a { padding:14px 20px; border:1px solid var(--accent); border-radius:999px; color:var(--accent); font:600 10px/1 var(--font-ui); letter-spacing:.12em; text-decoration:none; text-transform:uppercase; }.calendar-actions a:first-child { color:#fff; background:var(--accent); }
.rsvp { padding:100px 22px; color:#fff6eb; background:radial-gradient(circle at 50% 0,rgba(221,156,130,.35),transparent 36%),var(--rsvp); }.rsvp-inner { text-align:center; }.rsvp .eyebrow { color:#f2c4a9; }.rsvp h2 { margin:0; font:400 48px/.95 var(--font-script); }.rsvp-inner > p:not(.eyebrow) { max-width:300px; margin:16px auto 28px; font:400 16px/1.55 var(--font-display); opacity:.8; }.rsvp-panel { max-width:360px; margin:auto; }.rsvp-choices { display:grid; grid-template-columns:1fr 1fr; gap:10px; }.rsvp-choice { min-height:110px; padding:16px 10px; border:1px solid rgba(255,255,255,.25); border-radius:12px; color:inherit; background:rgba(255,255,255,.06); font-family:inherit; }.rsvp-choice strong,.rsvp-choice span { display:block; }.rsvp-choice strong { font:500 18px/1.2 var(--font-display); }.rsvp-choice span { margin-top:7px; font:400 11px/1.35 var(--font-ui); opacity:.65; }.rsvp-choice:first-child { border-color:#e8b99a; background:rgba(255,255,255,.12); }.rsvp-form { display:grid; gap:10px; }.rsvp-form input { width:100%; padding:13px 15px; border:1px solid rgba(255,255,255,.25); border-radius:10px; color:inherit; background:rgba(255,255,255,.07); font:400 14px/1 var(--font-ui); outline:none; }.rsvp-form input::placeholder { color:rgba(255,255,255,.52); }.rsvp-form button { padding:14px; border:0; border-radius:999px; color:var(--rsvp); background:#f4c4a8; font:600 10px/1 var(--font-ui); letter-spacing:.14em; text-transform:uppercase; }.rsvp-back { margin-top:10px; border:0; color:inherit; background:transparent; font:500 10px/1 var(--font-ui); text-decoration:underline; }
.closing-countdown { overflow:hidden; padding-block:82px 76px; text-align:center; background:radial-gradient(circle at 50% 45%,rgba(255,255,255,.88),transparent 43%),linear-gradient(180deg,#efd0c2,var(--surface)); }
.closing-countdown::before,.closing-countdown::after { content:"✦"; position:absolute; left:50%; color:var(--gold); font-size:10px; transform:translateX(-50%); }.closing-countdown::before { top:28px; }.closing-countdown::after { bottom:25px; }
.closing-countdown .section-heading { margin-bottom:30px; }.closing-countdown .countdown div { padding:16px 3px; background:rgba(255,255,255,.28); }.closing-countdown .countdown strong { color:#792b40; font-size:28px; }
.countdown-signoff { margin:26px 0 0; color:#792b40; font:400 32px/1 var(--font-script); }
footer { padding:54px 20px 90px; text-align:center; color:var(--ink); background:var(--surface); }.footer-mark { color:var(--gold); }.footer-mark + p { margin:12px 0; font:400 32px/1 var(--font-script); }.footer-mark + p + small { font:400 9px/1.4 var(--font-ui); letter-spacing:.12em; text-transform:uppercase; opacity:.6; }.footer-mark + p + small a { color:inherit; }

.music-toggle,.nav-toggle { position:fixed; z-index:85; bottom:max(18px,env(safe-area-inset-bottom)); width:44px; height:44px; border:1px solid rgba(255,255,255,.45); border-radius:50%; color:#fff; background:rgba(90,30,46,.86); backdrop-filter:blur(8px); box-shadow:0 9px 25px rgba(55,17,27,.22); }
.music-toggle { right:max(calc(50% - 203px),14px); bottom:max(72px,calc(env(safe-area-inset-bottom) + 72px)); display:flex; align-items:center; justify-content:center; gap:3px; }.music-toggle span { width:2px; height:10px; background:currentColor; }.music-toggle[aria-pressed="true"] span { animation:bars .8s ease-in-out infinite alternate; }.music-toggle[aria-pressed="true"] span:nth-child(2){animation-delay:.2s}.music-toggle[aria-pressed="true"] span:nth-child(3){animation-delay:.4s}
.music-toggle[hidden] { display:none; }
.nav-toggle { right:max(calc(50% - 203px),14px); }.nav-toggle i { position:absolute; left:12px; width:19px; height:1px; background:currentColor; transition:.3s; }.nav-toggle i:first-child { top:17px; }.nav-toggle i:last-child { top:25px; }.nav-toggle[aria-expanded="true"] i:first-child { top:21px; transform:rotate(45deg); }.nav-toggle[aria-expanded="true"] i:last-child { top:21px; transform:rotate(-45deg); }
.intro-active .music-toggle,.intro-active .nav-toggle { opacity:0; visibility:hidden; pointer-events:none; }
.nav-panel { position:fixed; z-index:80; right:max(calc(50% - 203px),14px); bottom:72px; width:170px; padding:18px; display:grid; gap:13px; border:1px solid rgba(255,255,255,.3); border-radius:16px; opacity:0; transform:translateY(10px) scale(.96); transform-origin:bottom right; visibility:hidden; background:rgba(90,30,46,.94); backdrop-filter:blur(12px); transition:.3s ease; }.nav-panel.is-open { opacity:1; transform:none; visibility:visible; }.nav-panel a { color:#fff5eb; font:500 10px/1 var(--font-ui); letter-spacing:.12em; text-decoration:none; text-transform:uppercase; }

.reveal { opacity:1; transform:none; }.reveal-armed .reveal { opacity:0; transform:translateY(24px); transition:opacity .8s ease,transform .8s cubic-bezier(.2,.8,.2,1); }.reveal-armed .reveal.is-visible { opacity:1; transform:none; }

/* Noor Chandelier identity overrides. */
.welcome { background:radial-gradient(circle at 50% 18%,#fffdf8 0,var(--surface) 56%,#e8d5d9 142%); }
.welcome::before,.welcome::after { border-radius:50%; transform:none; box-shadow:0 0 45px rgba(183,138,74,.16); }
.script-title,.section-heading h2,.date-medallion strong,.venue-card h3,.closing-countdown .countdown strong,.countdown-signoff { color:#5b2c4c; }
.date-medallion { border-color:rgba(183,138,74,.38); background:radial-gradient(circle at 50% 42%,#fffdf4,#ead6ad 72%,#bc8a45); box-shadow:0 18px 44px rgba(63,25,50,.18),inset 0 0 0 7px rgba(255,250,231,.52); }
.date-scratch-hint { background:rgba(62,25,49,.3); }
.events { background:radial-gradient(circle at 50% 10%,rgba(255,244,215,.92),transparent 32%),linear-gradient(180deg,#fff9ef,#eadde2); }
.event-window-stage { width:min(88vw,350px); aspect-ratio:1; }
.event-window-picture { inset:13px; border:1px solid rgba(183,138,74,.38); border-radius:50%; background:#2b1727; box-shadow:0 24px 52px rgba(47,18,40,.2); }
.event-window-photo { filter:brightness(.42) saturate(.7); transition:transform 1.15s .18s cubic-bezier(.2,.8,.2,1),filter 1.15s .12s ease; }
.event-window-card.is-open .event-window-photo { filter:brightness(1.02) saturate(1.02); }
.event-shutters { inset:13px; border-radius:50%; }
.event-shutter { border:0; background-color:#1b0e19; background-image:radial-gradient(circle at 100% 48%,rgba(214,174,104,.28),transparent 38%),linear-gradient(180deg,rgba(61,29,52,.96),rgba(18,9,18,.98)); background-size:100% 100%; box-shadow:none; transition:transform .95s cubic-bezier(.2,.78,.2,1),opacity .8s ease,filter .8s ease; }
.event-shutter--left { border-radius:999px 0 0 999px; }
.event-shutter--right { border-radius:0 999px 999px 0; transform:scaleX(-1); }
.event-window-card.is-open .event-shutter--left { transform:translateX(-22%) scaleX(.72); opacity:0; filter:brightness(1.6); }
.event-window-card.is-open .event-shutter--right { transform:translateX(22%) scaleX(-.72); opacity:0; filter:brightness(1.6); }
.event-window-stage::before { content:""; position:absolute; z-index:5; inset:2px; border:2px solid rgba(183,138,74,.34); border-radius:50%; box-shadow:inset 0 0 24px rgba(214,174,104,.14),0 0 0 5px rgba(78,34,64,.05); opacity:.38; pointer-events:none; transition:opacity 1s ease,border-color 1s ease,box-shadow 1.1s ease,transform 1s cubic-bezier(.2,.8,.2,1); }
.event-window-stage::after { content:""; position:absolute; z-index:6; inset:9px; border:1px solid rgba(255,238,197,.46); border-radius:50%; opacity:.3; transform:scale(.96); box-shadow:inset 0 0 18px rgba(255,218,142,.1); pointer-events:none; transition:opacity .85s .18s ease,transform 1s .12s cubic-bezier(.2,.8,.2,1),box-shadow 1s .18s ease; }
.event-window-card.is-open .event-window-stage::before { opacity:1; border-color:rgba(255,213,129,.94); transform:scale(1.012); box-shadow:inset 0 0 34px rgba(255,219,147,.2),0 0 0 5px rgba(183,138,74,.12),0 0 22px rgba(255,202,103,.72),0 0 54px rgba(183,100,70,.38); }
.event-window-card.is-open .event-window-stage::after { opacity:1; transform:scale(1); box-shadow:inset 0 0 28px rgba(255,222,157,.2),0 0 18px rgba(255,211,126,.42); }
.event-content { margin-top:20px; }
.event-content h3 { color:#5b2c4c; }.event-when { color:#8a6137; }
.story { background:radial-gradient(circle at 50% 24%,rgba(255,245,221,.72),transparent 34%),linear-gradient(180deg,#e9dce1,#fff8ec); }
.story-frame { width:min(86vw,350px); aspect-ratio:1; padding:10px; border-color:rgba(183,138,74,.46); border-radius:50%; background:#f7ece7; box-shadow:0 0 0 6px rgba(183,138,74,.08),0 24px 60px rgba(67,26,55,.2),0 0 34px rgba(214,174,104,.2); }
.story-frame::before { inset:-8px; height:auto; border:1px solid rgba(214,174,104,.52); border-radius:50%; }
.story-frame img { height:100%; aspect-ratio:1; border-radius:50%; object-position:center 34%; }
.story-frame span { inset:10px; border-radius:50%; background:linear-gradient(180deg,transparent 55%,rgba(47,18,40,.25)); }
.gallery { background:radial-gradient(circle at 50% 20%,rgba(255,245,221,.68),transparent 34%),linear-gradient(180deg,#e9dce1,#fff8ec); }
.gallery-grid { width:min(86vw,350px); border:1px solid rgba(183,138,74,.48); border-radius:50%; background:#f3e6de; box-shadow:0 0 0 6px rgba(183,138,74,.08),0 24px 55px rgba(67,26,55,.18),0 0 32px rgba(214,174,104,.18); }
.gallery-item { border-radius:50%; }
.gallery-dots { background:rgba(47,18,40,.55); }
.venue { background:#fff8ec; }
.venue-card { border-color:rgba(183,138,74,.32); background:radial-gradient(circle at 50% 0,rgba(255,235,191,.72),transparent 38%),linear-gradient(150deg,rgba(255,255,255,.94),rgba(237,218,213,.78)); box-shadow:0 20px 50px rgba(67,26,55,.12); }
.things { background:#e9dce1; }
.calendar { background:#fff8ec; }
.rsvp { background:radial-gradient(circle at 50% 0,rgba(214,174,104,.27),transparent 36%),var(--rsvp); }
.rsvp .eyebrow { color:#e8c784; }
.rsvp-form button { color:#241126; background:#e7c482; }
.closing-countdown { background:radial-gradient(circle at 50% 45%,rgba(255,255,255,.92),transparent 43%),linear-gradient(180deg,#e9dce1,var(--surface)); }
.music-toggle,.nav-toggle { background:rgba(59,25,50,.94); }
.nav-panel { background:rgba(35,14,31,.97); }

@keyframes pulse { 50%{opacity:.45;transform:translateY(2px)} }
@keyframes scrollLine { 0%,100%{transform:scaleY(.4);opacity:.3}50%{transform:scaleY(1);opacity:1} }
@keyframes bars { to{height:20px} }

@media (max-width: 460px) { .desktop-stage { display:none; } .mobile-shell { width:100%; box-shadow:none; } .progress { left:0; width:100%; transform:scaleX(0); } .music-toggle,.nav-toggle,.nav-panel { right:14px; } }
@media (max-height:700px) { .hero-copy { inset:30% 10% 13%; }.hero h1 { font-size:50px; }.hero-family { font-size:9px; }.hero-date { margin-top:11px; } }
@media (prefers-reduced-motion: reduce) { html { scroll-behavior:auto; } *,*::before,*::after { animation-duration:.01ms!important; animation-iteration-count:1!important; transition-duration:.01ms!important; } .event-window-stage { opacity:1; transform:none; }.event-shutters { display:none; }.event-content { opacity:1; transform:none; } }
