:root { --glass: rgba(31,12,69,.48); --line: rgba(231,204,255,.38); --lavender:#ead7ff; --purple:#b768ff; }
.invitation-page { background:#080222 url('public/galaxy-background.png') center top/100% auto repeat-y; padding-bottom:0; }
.invitation-hero { background:transparent; }
.hero-image { -webkit-mask-image:linear-gradient(to bottom,#000 0%,#000 86%,rgba(0,0,0,.9) 90%,rgba(0,0,0,.38) 96%,transparent 100%); mask-image:linear-gradient(to bottom,#000 0%,#000 86%,rgba(0,0,0,.9) 90%,rgba(0,0,0,.38) 96%,transparent 100%); }
.content-shell { position:relative; width:min(760px,calc(100% - 32px)); margin:clamp(1rem,4vw,3rem) auto 0; padding-bottom:2rem; }
.glass-card { position:relative; overflow:hidden; border:1px solid var(--line); border-radius:18px; background:linear-gradient(145deg,rgba(255,255,255,.10),rgba(28,8,63,.46) 28%,rgba(13,4,43,.58)); box-shadow:inset 0 1px 0 rgba(255,255,255,.18),0 12px 35px rgba(2,0,20,.34),0 0 22px rgba(154,70,239,.08); backdrop-filter:blur(12px) saturate(130%); -webkit-backdrop-filter:blur(12px) saturate(130%); }
.glass-card::after { content:''; position:absolute; inset:0; pointer-events:none; background:radial-gradient(circle at 12% 18%,rgba(255,255,255,.34) 0 1px,transparent 2px),radial-gradient(circle at 87% 23%,rgba(209,161,255,.4) 0 1px,transparent 2px); background-size:66px 58px,83px 71px; opacity:.34; }
.glass-card h2 { margin:0; color:var(--lavender); font-family:'Bodoni MT',Didot,Georgia,serif; font-weight:400; letter-spacing:.10em; text-transform:uppercase; text-shadow:0 0 8px rgba(203,145,255,.34); }
.intro-card { display:grid; grid-template-columns:42% 58%; min-height:252px; padding:1.3rem; }
.magic-door { position:relative; display:grid; place-items:center; min-height:210px; overflow:hidden; border-radius:12px; background:radial-gradient(ellipse at 50% 70%,rgba(145,48,255,.28),transparent 58%); }
.portal-image { width:100%; height:100%; min-height:210px; object-fit:cover; object-position:center; mix-blend-mode:screen; filter:saturate(1.06) contrast(1.04) drop-shadow(0 0 18px rgba(165,62,255,.35)); }
.intro-copy { align-self:center; padding:1rem 1.2rem; text-align:center; }
.intro-copy .eyebrow,.intro-copy h2 { position:relative; display:inline-block; margin:.08rem 0; color:#f3eaff; font-size:clamp(1.3rem,3vw,2rem); letter-spacing:.12em; background:linear-gradient(180deg,#fff,#d8c2e8 45%,#8d68a9 68%,#f7edff); -webkit-background-clip:text; background-clip:text; -webkit-text-fill-color:transparent; text-shadow:0 1px 0 rgba(255,255,255,.5),0 3px 5px rgba(19,0,42,.68),0 0 14px rgba(197,112,255,.22); }
.intro-copy .eyebrow::after,.intro-copy h2::after { content:''; position:absolute; left:8%; right:8%; top:10%; height:1px; background:linear-gradient(90deg,transparent,rgba(255,255,255,.82),transparent); opacity:.7; }
.intro-copy p { position:relative; margin:1rem auto 0; padding-top:.85rem; max-width:29ch; color:#eee6f3; font:400 1rem/1.55 Georgia,'Times New Roman',serif; letter-spacing:.025em; text-shadow:0 1px 2px rgba(3,0,15,.9),0 0 8px rgba(203,145,255,.12); }
.intro-copy p::before { content:''; position:absolute; top:0; left:17%; right:17%; height:1px; background:linear-gradient(90deg,transparent,rgba(224,191,255,.65),transparent); }
.intro-copy p::after { content:'♥'; display:block; margin-top:.55rem; color:#e4b4ff; font-size:.7rem; text-shadow:0 0 7px #c35cff; }
.ornament { display:block; margin:.35rem auto 0; color:rgba(236,217,255,.9); font-size:.9rem; letter-spacing:.12em; text-shadow:0 0 4px #fff,0 0 11px #c25cff; }
.ornament::before,.ornament::after { content:'✦'; margin:0 .4rem; color:#fff; text-shadow:0 0 8px #c460ff; }
.countdown-card { margin-top:1rem; padding:1rem 1.5rem 1.25rem; text-align:center; }
.countdown-card h2,.music-card h2,.gallery-card>h2,.itinerary-card>h2 { font-size:1rem; }
.countdown-card h2 span { color:#c66bff; }
.countdown { display:grid; grid-template-columns:repeat(3,1fr); margin-top:.8rem; }
.countdown>div { display:grid; gap:.15rem; border-right:1px solid rgba(230,205,255,.23); }
.countdown>div:last-child { border:0; }
.countdown strong { color:#e7c8ff; font:400 clamp(2.6rem,8vw,4.4rem)/.95 'Bodoni MT',Didot,serif; text-shadow:0 0 7px rgba(204,111,255,.55); }
.countdown span { color:#d8c9e1; font-size:.75rem; letter-spacing:.18em; text-transform:uppercase; }
.music-card,.gallery-card,.itinerary-card { margin-top:1rem; padding:1rem 1.2rem 1.15rem; text-align:center; }
.music-player { display:grid; grid-template-columns:88px 1fr 35px; gap:1rem; align-items:center; margin-top:.75rem; }
.album-heart { display:grid; place-items:center; width:78px; aspect-ratio:1; border:1px solid var(--line); border-radius:50%; color:#dba4ff; font-size:2.6rem; background:radial-gradient(circle,rgba(190,76,255,.55),rgba(18,4,52,.48) 65%); box-shadow:inset 0 0 18px #8d36e5,0 0 12px rgba(192,94,255,.35); }
.track { --progress:0%; display:block; width:100%; height:14px; margin:0; padding:0; border:0; border-radius:999px; outline:none; background:linear-gradient(90deg,#e2baff 0 var(--progress),rgba(238,220,255,.33) var(--progress) 100%) center/100% 2px no-repeat; filter:drop-shadow(0 0 3px rgba(194,111,255,.32)); cursor:pointer; appearance:none; -webkit-appearance:none; }
.track::-webkit-slider-thumb { width:11px; height:11px; border:1px solid rgba(255,255,255,.85); border-radius:50%; background:#f0d5ff; box-shadow:0 0 8px #c26fff; appearance:none; -webkit-appearance:none; }
.track::-moz-range-thumb { width:10px; height:10px; border:1px solid rgba(255,255,255,.85); border-radius:50%; background:#f0d5ff; box-shadow:0 0 8px #c26fff; }
.buttons { display:flex; align-items:center; justify-content:center; gap:2rem; margin-top:.75rem; }
.buttons button { border:0; background:none; color:#d7bdf2; font-size:1rem; cursor:pointer; }
.buttons .play { width:42px; height:42px; border-radius:50%; color:white; background:linear-gradient(145deg,#d9b5f8,#8850c8); box-shadow:0 0 13px rgba(187,105,255,.48); }
.floating-heart { color:#ddb7ff; font-size:1.5rem; }
.gallery-grid { display:grid; grid-template-columns:repeat(3,1fr); gap:.7rem; margin-top:.8rem; }
.gallery-scene { display:grid; place-items:center; min-height:190px; overflow:hidden; border:1px solid rgba(226,192,255,.36); border-radius:10px; color:#d883ff; font-size:4rem; background-color:#16063d; box-shadow:inset 0 0 25px rgba(107,29,185,.5); }
.curtains { background-image:linear-gradient(115deg,rgba(155,73,224,.55),transparent 35%),linear-gradient(245deg,rgba(90,30,145,.8),transparent 42%),radial-gradient(circle at 50% 80%,#5d248d,#14042f 70%); }
.heart-stage { background-image:radial-gradient(circle,#68309a,#100226 70%); text-shadow:0 0 5px #fff,0 0 18px #c03dff; }
.candles { background-image:radial-gradient(circle at 70% 48%,rgba(197,117,255,.45),transparent 20%),linear-gradient(135deg,#40115e,#0c021f); }
.gallery-dots { margin-top:.5rem; }.gallery-dots b { display:inline-block; width:6px; height:6px; margin:0 3px; border-radius:50%; background:#8e669f; }.gallery-dots .active{background:#e0bdff;}
.timeline { position:relative; display:grid; grid-template-columns:repeat(4,1fr); margin-top:1rem; }
.timeline::before { content:''; position:absolute; top:31px; left:12%; right:12%; height:2px; background:linear-gradient(90deg,transparent,#cf79ff 12%,#e4b3ff 50%,#cf79ff 88%,transparent); box-shadow:0 0 7px #af45ff; }
.timeline>div { position:relative; z-index:1; display:grid; justify-items:center; gap:.3rem; color:#ded0e7; }
.timeline i { display:grid; place-items:center; width:62px; height:62px; border:1px solid rgba(225,192,255,.42); border-radius:50%; background:rgba(20,4,54,.8); color:#dab4fb; font-size:1.5rem; font-style:normal; box-shadow:0 0 12px rgba(162,68,248,.25); }
.timeline strong { margin-top:.25rem; color:#e6d9eb; font:400 .85rem Georgia,serif; }.timeline span{font-size:.75rem;}
.info-grid { display:grid; grid-template-columns:1fr 1fr; gap:1rem; margin-top:1rem; }
.mini-card { min-height:145px; padding:1.1rem; }
.mini-card h2 { font-size:1rem; }.mini-card p{color:#d9cce1;line-height:1.5;margin:.5rem 0;font-size:.86rem;}
.dress-card,.gift-card,.venue-card { display:grid; grid-template-columns:38% 62%; align-items:center; text-align:left; }
.line-icon,.gift,.moon { color:#cf86ff; font-size:4.2rem; text-align:center; text-shadow:0 0 14px #8c37e6; }
.venue-card { grid-template-columns:1fr 35%; }.moon{font-size:5rem;}
.song-card { text-align:center; }.song-card form{display:grid;gap:.55rem;margin-top:.65rem;}.song-card input{width:100%;border:1px solid rgba(216,177,255,.38);border-radius:10px;background:rgba(9,2,31,.42);padding:.7rem;color:white;outline:none}.song-card small,.rsvp-card small{display:block;min-height:1em;color:#d7a8ff;}
.pill-button { display:inline-block; border:1px solid rgba(235,207,255,.34); border-radius:999px; padding:.55rem 1.3rem; color:white; background:linear-gradient(180deg,#b86bfb,#7132bd); box-shadow:inset 0 1px 0 rgba(255,255,255,.35),0 0 12px rgba(177,75,255,.35); font:400 .75rem Georgia,serif; letter-spacing:.08em; text-transform:uppercase; text-decoration:none; cursor:pointer; }
.rsvp-card { display:grid; grid-template-columns:36% 64%; align-items:center; margin-top:1rem; padding:1.2rem 2rem; text-align:center; }
.envelope { color:#c98cff; font-size:7rem; text-shadow:0 0 15px #7720ca; transform:rotate(-7deg); }
.rsvp-card p{margin:0;color:#dfcbe9;letter-spacing:.12em;text-transform:uppercase}.rsvp-card h2{font-size:clamp(2.8rem,8vw,5rem);line-height:1;margin:.2rem 0 .45rem;}
.invitation-footer { padding:2.2rem 1rem 1rem; text-align:center; color:#ddd0e6; }.sparkle-row{color:white;font-size:1.5rem;letter-spacing:.45em;text-shadow:0 0 10px #fff,0 0 20px #c461ff}.invitation-footer p{font:italic clamp(1.2rem,4vw,2rem)/1.5 'Segoe Script',cursive}.invitation-footer strong{display:block;color:#bc54ff;font:400 clamp(2.4rem,7vw,4.5rem)/1 'Segoe Script',cursive;text-shadow:0 0 15px #a23aff}.invitation-footer span{color:#dc8dff;font-size:1.2rem;}
.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}
.birthday-name { animation:neon-breathe 3.8s cubic-bezier(.45,0,.55,1) infinite; transform-origin:center; will-change:filter,text-shadow; }
@keyframes neon-breathe { 0%,100% { text-shadow:0 0 1px #fff,0 0 4px #fff,0 0 9px #edceff,0 0 18px #d58aff,0 0 34px #a936ff,0 0 58px rgba(111,18,232,.92),0 0 88px rgba(86,8,190,.58); filter:brightness(1) drop-shadow(0 4px 7px rgba(8,0,38,.82)); } 48% { text-shadow:0 0 2px #fff,0 0 6px #fff,0 0 13px #f3dcff,0 0 25px #dd9cff,0 0 45px #b34bff,0 0 72px rgba(126,27,240,.96),0 0 106px rgba(93,12,201,.68); filter:brightness(1.1) drop-shadow(0 5px 9px rgba(8,0,38,.88)); } 52% { filter:brightness(1.04) drop-shadow(0 4px 8px rgba(8,0,38,.84)); } }
@media(prefers-reduced-motion:reduce){.birthday-name{animation:none}}
@media(max-width:640px){.content-shell{width:calc(100% - 24px);margin-top:.8rem}.glass-card{border-radius:13px}.intro-card{grid-template-columns:43% 57%;min-height:175px;padding:.7rem}.magic-door{min-height:155px}.magic-door::before{width:54px;height:102px}.intro-copy{padding:.45rem}.intro-copy .eyebrow,.intro-copy h2{font-size:1rem}.intro-copy p{font-size:.68rem;line-height:1.4}.countdown strong{font-size:2.8rem}.music-player{grid-template-columns:60px 1fr 22px;gap:.55rem}.album-heart{width:56px;font-size:1.9rem}.buttons{gap:1.25rem}.buttons .play{width:36px;height:36px}.gallery-grid{gap:.4rem}.gallery-scene{min-height:126px;font-size:2.7rem}.timeline i{width:45px;height:45px;font-size:1.1rem}.timeline::before{top:23px}.timeline strong{font-size:.64rem}.timeline span{font-size:.58rem}.info-grid{gap:.7rem}.mini-card{min-height:120px;padding:.7rem}.mini-card h2{font-size:.75rem}.mini-card p{font-size:.65rem}.line-icon,.gift{font-size:2.8rem}.moon{font-size:3.4rem}.pill-button{font-size:.58rem;padding:.45rem .8rem}.rsvp-card{padding:.8rem 1rem}.envelope{font-size:4.5rem}.rsvp-card p{font-size:.7rem}.rsvp-card h2{font-size:3rem}}
@media(max-width:420px){.content-shell{width:calc(100% - 16px)}.intro-card{min-height:148px}.magic-door{min-height:130px}.intro-copy p{font-size:.61rem}.info-grid{grid-template-columns:1fr 1fr;gap:.45rem}.mini-card{min-height:92px;padding:.52rem}.mini-card h2{font-size:.64rem}.mini-card p{font-size:.55rem;line-height:1.3}.line-icon,.gift{font-size:2.2rem}.moon{font-size:2.7rem}.song-card input{padding:.45rem;font-size:.58rem}.song-card form{gap:.35rem}.gallery-scene{min-height:92px}.countdown-card,.music-card,.gallery-card,.itinerary-card{padding:.62rem}.countdown-card h2,.music-card h2,.gallery-card>h2,.itinerary-card>h2{font-size:.68rem}.countdown strong{font-size:2.35rem}.itinerary-card{min-height:108px}.timeline{margin-top:.65rem}.timeline i{width:39px;height:39px}.timeline::before{top:20px}.rsvp-card{grid-template-columns:32% 68%;min-height:100px}.envelope{font-size:3.2rem}.invitation-footer{padding:1.4rem .5rem .6rem}.sparkle-row{font-size:1rem}.invitation-footer p{font-size:1rem}.invitation-footer strong{font-size:2.4rem}}
@media(max-width:640px){.portal-image{min-height:155px}.intro-copy p{margin-top:.6rem;padding-top:.55rem}.ornament{font-size:.65rem;margin-top:.2rem}}
@media(max-width:420px){.portal-image{min-height:130px}.intro-copy .eyebrow,.intro-copy h2{font-size:.86rem}.intro-copy p{font-size:.58rem}}

/* Refined continuous neon and transparent welcome composition. */
.birthday-name { font-weight:300; -webkit-text-stroke:.22px rgba(255,255,255,.88); animation:neon-flow 6s linear infinite; }
@keyframes neon-flow {
  0%,100% { text-shadow:0 0 1px #fff,0 0 4px #fff,0 0 9px #edceff,0 0 18px #d58aff,0 0 34px #a936ff,0 0 54px rgba(111,18,232,.86); filter:brightness(1) drop-shadow(0 4px 7px rgba(8,0,38,.78)); }
  25% { text-shadow:0 0 1px #fff,0 0 5px #fff,0 0 11px #f0d7ff,0 0 22px #db95ff,0 0 39px #ae40ff,0 0 62px rgba(119,23,236,.9); filter:brightness(1.055) drop-shadow(0 4px 8px rgba(8,0,38,.8)); }
  50% { text-shadow:0 0 2px #fff,0 0 6px #fff,0 0 13px #f4e1ff,0 0 26px #e1a3ff,0 0 46px #b951ff,0 0 72px rgba(127,31,242,.94); filter:brightness(1.1) drop-shadow(0 5px 9px rgba(8,0,38,.84)); }
  75% { text-shadow:0 0 1px #fff,0 0 5px #fff,0 0 11px #f0d7ff,0 0 22px #db95ff,0 0 39px #ae40ff,0 0 62px rgba(119,23,236,.9); filter:brightness(1.055) drop-shadow(0 4px 8px rgba(8,0,38,.8)); }
}
.intro-card.glass-card { background:transparent; backdrop-filter:none; -webkit-backdrop-filter:none; }
.intro-card.glass-card::after { opacity:.18; }
.intro-copy .eyebrow,.intro-copy h2 { color:rgba(249,241,255,.12); background:none; -webkit-background-clip:initial; background-clip:initial; -webkit-text-fill-color:rgba(249,241,255,.10); -webkit-text-stroke:.32px rgba(255,255,255,.68); text-shadow:0 1px 0 rgba(255,255,255,.38),0 -1px 0 rgba(78,42,103,.45),0 2px 4px rgba(8,0,26,.72),0 0 7px rgba(218,170,255,.25); filter:drop-shadow(0 0 4px rgba(205,133,255,.22)); }
.intro-copy .eyebrow::after,.intro-copy h2::after,.intro-copy p::before,.intro-copy p::after { display:none; }
.ornament::before,.ornament::after { content:none; }

/* Faceted glass typography: translucent body, carved rim and moving reflection. */
.intro-copy .crystal-title {
  isolation:isolate;
  overflow:hidden;
  color:transparent;
  background:
    linear-gradient(108deg,transparent 0 17%,rgba(255,255,255,.92) 19%,rgba(255,255,255,.18) 21%,transparent 24% 69%,rgba(255,247,220,.78) 71%,transparent 74%),
    linear-gradient(180deg,#fff9ff 0%,#eadcff 11%,#b787ef 26%,#f7efff 43%,#a45dde 59%,#d8b9fa 76%,#7440b0 91%,#f2dfff 100%);
  -webkit-background-clip:text;
  background-clip:text;
  -webkit-text-fill-color:transparent;
  -webkit-text-stroke:.55px rgba(255,210,90,.88);
  text-shadow:
    0 -1px 0 rgba(255,255,255,.96),
    1px 0 0 rgba(255,225,132,.52),
    -1px 0 0 rgba(112,45,167,.55),
    0 1px 0 rgba(73,26,111,.88),
    0 2px 1px rgba(32,4,57,.66),
    0 4px 3px rgba(18,0,38,.42),
    0 0 5px rgba(199,132,255,.20);
  filter:saturate(1.04) drop-shadow(0 2px 2px rgba(18,0,40,.46));
}
.intro-copy .crystal-title::before,
.intro-copy .crystal-title::after { content:none; animation:none; }
.intro-crystal-title-image {
  display:block;
  width:min(84%,28rem);
  height:auto;
  margin:0 auto .15rem;
  object-fit:contain;
  filter:none;
}
@media(max-width:640px){.intro-crystal-title-image{width:84%;margin-bottom:.1rem}}
.intro-elegant-title { display:grid; justify-items:center; margin:0 auto .2rem; font-family:Georgia,'Times New Roman',serif; line-height:.94; text-align:center; text-transform:uppercase; text-rendering:geometricPrecision; -webkit-font-smoothing:antialiased; }
.intro-elegant-title span,.intro-elegant-title strong { color:#ead7f7; background:linear-gradient(180deg,#fff 0%,#f2ddff 31%,#cfa4e9 62%,#f8efff 100%); -webkit-background-clip:text; background-clip:text; -webkit-text-fill-color:transparent; text-shadow:none; filter:none; }
.intro-elegant-title span { font-size:clamp(.95rem,2.25vw,1.4rem); font-weight:400; letter-spacing:.15em; }
.intro-elegant-title strong { margin-top:.3rem; font-size:clamp(1.2rem,2.85vw,1.9rem); font-weight:400; letter-spacing:.04em; white-space:nowrap; }

/* Solid portal with a soft atmospheric dissolve at both lower corners. */
.portal-image {
  width:100%;
  max-width:100%;
  height:auto;
  min-height:0;
  object-fit:contain;
  object-position:left bottom;
  justify-self:start;
  align-self:end;
  transform-origin:left bottom;
  opacity:1;
  mix-blend-mode:normal;
  filter:none;
  -webkit-mask-image:none;
  mask-image:none;
}
.intro-card { grid-template-columns:46% 54%; padding:1.3rem 1.3rem 0 0; }
.magic-door { place-items:end start; background:transparent; }
@media(max-width:640px){.intro-card{grid-template-columns:47% 53%;padding:.7rem .7rem 0 0}.portal-image{width:100%;max-width:100%;height:auto;min-height:0;object-fit:contain;object-position:left bottom}.intro-elegant-title span{font-size:.66rem}.intro-elegant-title strong{font-size:.73rem;letter-spacing:.025em}}

/* Equal responsive text zones with the heart on their shared center line. */
.intro-copy { align-self:stretch; display:grid; grid-template-rows:minmax(0,1fr) auto minmax(0,1fr); align-items:center; min-height:100%; }
.intro-elegant-title { align-self:center; margin:0; }
.intro-psd-title { align-self:center; display:block; width:100%; max-width:none; height:auto; margin:0 auto; object-fit:contain; }
.intro-copy .ornament { align-self:center; display:flex; align-items:center; justify-content:center; gap:.42rem; margin:0; color:#f6dcff; font-size:clamp(.68rem,1.35vw,.96rem); line-height:1; text-shadow:0 0 3px rgba(255,255,255,.65),0 0 8px rgba(198,91,255,.52); }
.intro-copy .ornament::before,.intro-copy .ornament::after { content:''; display:block; width:clamp(1.5rem,4.2vw,3.1rem); height:1px; border-radius:999px; background:linear-gradient(90deg,transparent,rgba(245,224,255,.56),rgba(255,255,255,.96),rgba(193,125,239,.52),transparent); box-shadow:inset 0 1px 0 rgba(255,255,255,.62),0 0 5px rgba(192,94,255,.38); }
.intro-copy > p { align-self:center; margin:0 auto; padding:0; max-width:31ch; color:#f7effc; font-family:Georgia,'Times New Roman',serif; font-size:clamp(.8rem,1.9vw,1.12rem); font-weight:500; line-height:1.48; letter-spacing:.018em; text-wrap:balance; text-shadow:0 1px 1px rgba(7,0,24,.72); }
@media(max-width:640px){.intro-copy{padding:.25rem .26rem}.intro-psd-title{width:100%}.intro-copy>.ornament{font-size:.65rem;gap:.28rem}.intro-copy>.ornament::before,.intro-copy>.ornament::after{width:1.35rem}.intro-copy>p{font-size:clamp(.68rem,2.25vw,.77rem);line-height:1.38;letter-spacing:.008em}}

.intro-number-title { align-self:center; display:grid; justify-items:center; width:100%; font-family:'Bodoni MT',Didot,Georgia,serif; line-height:.93; text-align:center; text-transform:uppercase; }
.intro-number-title span,.intro-number-title strong { color:#e7c8ff; font-weight:400; letter-spacing:.07em; text-shadow:0 0 7px rgba(204,111,255,.55); }
.intro-number-title span { font-size:clamp(.88rem,2.1vw,1.3rem); }
.intro-number-title strong { margin-top:.28rem; font-size:clamp(1.12rem,2.7vw,1.75rem); white-space:nowrap; }
@media(max-width:640px){.intro-number-title span{font-size:.72rem}.intro-number-title strong{font-size:.9rem;letter-spacing:.025em}}

/* 70% glass body with a polished luminous rim; number styling stays original. */
.countdown-card {
  border-color:rgba(242,218,255,.72);
  background:linear-gradient(145deg,rgba(111,53,166,.30),rgba(28,7,65,.70) 42%,rgba(12,3,41,.70));
  box-shadow:inset 0 1px 0 rgba(255,255,255,.55),inset 0 0 16px rgba(207,142,255,.12),0 0 0 1px rgba(216,169,255,.15),0 0 10px rgba(217,151,255,.36),0 0 24px rgba(146,65,224,.20),0 14px 35px rgba(2,0,20,.38);
  backdrop-filter:blur(14px) saturate(135%);
  -webkit-backdrop-filter:blur(14px) saturate(135%);
}

/* Music card mirrors the countdown rim with a slightly clearer 65% glass body. */
.music-card { border-color:rgba(242,218,255,.72); background:linear-gradient(145deg,rgba(111,53,166,.32),rgba(28,7,65,.80) 42%,rgba(12,3,41,.80)); box-shadow:inset 0 1px 0 rgba(255,255,255,.55),inset 0 0 16px rgba(207,142,255,.12),0 0 0 1px rgba(216,169,255,.15),0 0 10px rgba(217,151,255,.36),0 0 24px rgba(146,65,224,.20),0 14px 35px rgba(2,0,20,.38); backdrop-filter:blur(14px) saturate(135%); -webkit-backdrop-filter:blur(14px) saturate(135%); }

/* Favorite moments: supplied artwork, 90% glass and animated full-screen viewer. */
.gallery-card { border-color:rgba(242,218,255,.72); background:linear-gradient(145deg,rgba(111,53,166,.97),rgba(28,7,65,.97) 42%,rgba(12,3,41,.97)); box-shadow:inset 0 1px 0 rgba(255,255,255,.55),inset 0 0 16px rgba(207,142,255,.12),0 0 0 1px rgba(216,169,255,.15),0 0 10px rgba(217,151,255,.36),0 0 24px rgba(146,65,224,.20),0 14px 35px rgba(2,0,20,.38); backdrop-filter:blur(14px) saturate(135%); -webkit-backdrop-filter:blur(14px) saturate(135%); }
.gallery-scene { display:block; width:100%; min-height:0; aspect-ratio:1.108/1; padding:0; overflow:hidden; border:0; border-radius:clamp(9px,2vw,15px); background:transparent; box-shadow:none; cursor:zoom-in; transition:transform .3s ease,filter .3s ease; }
.gallery-scene:hover,.gallery-scene:focus-visible { transform:translateY(-3px) scale(1.015); box-shadow:none; filter:drop-shadow(0 7px 12px rgba(80,15,132,.38)); outline:none; }
.gallery-scene img { display:block; width:100%; height:100%; object-fit:cover; object-position:center; border:0; border-radius:0; transform-origin:center; }
.gallery-scene:nth-child(1) img { transform:scale(1.14); }
.gallery-scene:nth-child(2) img { transform:scale(1.42); }
.gallery-scene:nth-child(3) img { transform:scale(1.16); }
.gallery-lightbox { position:fixed; z-index:1000; inset:0; display:grid; place-items:center; padding:clamp(18px,4vw,52px); background:rgba(45,10,91,.42); backdrop-filter:blur(16px); -webkit-backdrop-filter:blur(16px); visibility:hidden; opacity:0; pointer-events:none; transition:opacity .32s ease,visibility 0s linear .32s; }
.gallery-lightbox.is-open { visibility:visible; opacity:1; pointer-events:auto; transition:opacity .32s ease; }
.gallery-lightbox.is-closing { visibility:visible; opacity:0; pointer-events:none; }
.gallery-lightbox img { display:block; width:auto; height:auto; max-width:min(92vw,900px); max-height:88vh; object-fit:contain; object-position:center; background:transparent; filter:drop-shadow(0 0 14px rgba(223,158,255,.62)) drop-shadow(0 20px 35px rgba(37,3,67,.42)); opacity:0; transform:scale(.72) translateY(22px); transition:transform .4s cubic-bezier(.2,.8,.2,1),opacity .28s ease; }
.gallery-lightbox.is-open img { opacity:1; transform:scale(1) translateY(0); }
.gallery-lightbox.is-closing img { opacity:0; transform:scale(.78) translateY(18px); }
.lightbox-close { position:absolute; z-index:2; top:max(16px,env(safe-area-inset-top)); right:max(16px,env(safe-area-inset-right)); display:grid; place-items:center; width:48px; height:48px; padding:0; border:1px solid rgba(244,221,255,.75); border-radius:50%; color:#fff; background:rgba(66,18,112,.72); box-shadow:inset 0 1px 0 rgba(255,255,255,.55),0 0 14px rgba(206,108,255,.55); font-size:0; cursor:pointer; transition:background .25s ease,box-shadow .25s ease; }
.lightbox-close::before { content:'×'; display:block; width:100%; color:#fff; font:300 2.25rem/1 Arial,sans-serif; text-align:center; transform:translateY(2px) rotate(0deg); transform-origin:50% 50%; transition:transform .25s ease; }
.lightbox-close:hover,.lightbox-close:focus-visible { background:rgba(123,49,182,.88); box-shadow:inset 0 1px 0 rgba(255,255,255,.65),0 0 18px rgba(220,139,255,.7); outline:none; }
.lightbox-close:hover::before,.lightbox-close:focus-visible::before { transform:translateY(2px) rotate(90deg); }
body.lightbox-open { overflow:hidden; }
@media(max-width:640px){.gallery-grid{gap:.45rem}.gallery-scene{aspect-ratio:1.108/1;min-height:0}.gallery-lightbox{padding:16px}.gallery-lightbox img{max-width:calc(100vw - 28px);max-height:82vh}.lightbox-close{width:42px;height:42px}.lightbox-close::before{font-size:1.9rem}}
@media(prefers-reduced-motion:reduce){.gallery-scene,.gallery-lightbox,.gallery-lightbox img,.lightbox-close{transition:none}}

/* Itinerary artwork and crystal typography. */
.itinerary-card { border-color:rgba(242,218,255,.72); background:linear-gradient(145deg,rgba(111,53,166,.98),rgba(28,7,65,.98) 42%,rgba(12,3,41,.98)); box-shadow:inset 0 1px 0 rgba(255,255,255,.55),inset 0 0 16px rgba(207,142,255,.12),0 0 0 1px rgba(216,169,255,.15),0 0 10px rgba(217,151,255,.36),0 0 24px rgba(146,65,224,.20),0 14px 35px rgba(2,0,20,.38); backdrop-filter:blur(14px) saturate(135%); -webkit-backdrop-filter:blur(14px) saturate(135%); }
.itinerary-heading { display:grid; grid-template-columns:minmax(1.5rem,1fr) auto auto auto minmax(1.5rem,1fr); align-items:center; justify-content:center; gap:clamp(.3rem,1vw,.7rem); width:min(100%,34rem); margin:0 auto; color:#e7c8ff; font-family:'Bodoni MT',Didot,Georgia,serif; font-weight:400; letter-spacing:.12em; text-transform:uppercase; text-shadow:0 0 7px rgba(204,111,255,.55); }
.itinerary-heading b { color:#e6b9ff; font-size:.72em; font-weight:400; text-shadow:0 0 4px #fff,0 0 10px #bd5cff; }
.itinerary-heading-line { display:block; width:100%; height:1px; background:linear-gradient(90deg,transparent,rgba(231,195,255,.7),rgba(255,255,255,.95)); box-shadow:0 0 5px rgba(196,96,255,.48); }
.itinerary-heading-line:last-child { background:linear-gradient(90deg,rgba(255,255,255,.95),rgba(231,195,255,.7),transparent); }
.timeline i { overflow:visible; border:0; background:transparent; box-shadow:none; }
.timeline i img { display:block; width:100%; height:100%; object-fit:contain; filter:drop-shadow(0 0 7px rgba(184,78,255,.42)); }
.timeline>div:nth-child(1) i img { transform:scale(1.067); }
.timeline>div:nth-child(2) i img { transform:scale(1.074); }
.timeline>div:nth-child(3) i img { transform:scale(1.012); }
.timeline>div:nth-child(4) i img { transform:scale(1); }
.timeline { --line-y:31px; }
.timeline::before { top:var(--line-y); }
.timeline>div:not(:last-child)::after { content:''; position:absolute; z-index:3; top:calc(var(--line-y) - 3px); left:calc(100% - 3px); width:6px; height:6px; border-radius:50%; background:#fff7ff; box-shadow:0 0 3px #fff,0 0 8px #df9cff,0 0 15px #a839ff; }
.timeline strong,.timeline>div>span { color:#e7c8ff; font-family:'Bodoni MT',Didot,Georgia,serif; font-weight:400; line-height:1; letter-spacing:.07em; text-transform:uppercase; text-shadow:0 0 7px rgba(204,111,255,.55); }
.timeline strong { margin-top:.35rem; font-size:clamp(.72rem,1.6vw,.95rem); }
.timeline>div>span { font-size:clamp(.62rem,1.35vw,.8rem); }
@media(max-width:640px){.itinerary-heading{gap:.25rem;letter-spacing:.08em}.itinerary-heading-line{min-width:0}.timeline{--line-y:24px}.timeline i{width:48px;height:48px}.timeline strong{font-size:.68rem;letter-spacing:.035em}.timeline>div>span{font-size:.58rem;letter-spacing:.035em}}
@media(max-width:420px){.timeline{--line-y:21px}.timeline i{width:41px;height:41px}.timeline strong{font-size:.59rem}.timeline>div>span{font-size:.52rem}}

/* Dress code inherits the itinerary's 98% crystal treatment. */
.dress-card { border-color:rgba(242,218,255,.72); background:linear-gradient(145deg,rgba(111,53,166,.98),rgba(28,7,65,.98) 42%,rgba(12,3,41,.98)); box-shadow:inset 0 1px 0 rgba(255,255,255,.55),inset 0 0 16px rgba(207,142,255,.12),0 0 0 1px rgba(216,169,255,.15),0 0 10px rgba(217,151,255,.36),0 0 24px rgba(146,65,224,.20),0 14px 35px rgba(2,0,20,.38); backdrop-filter:blur(14px) saturate(135%); -webkit-backdrop-filter:blur(14px) saturate(135%); }
.dress-card { grid-template-columns:minmax(0,42%) minmax(0,1fr); column-gap:.7rem; }
.dress-card>div:last-child { position:relative; z-index:1; min-width:0; }
.dress-code-visual { display:grid; place-items:center; align-self:stretch; min-width:0; overflow:hidden; }
.dress-code-visual img { display:block; width:88%; height:100%; max-height:140px; object-fit:contain; filter:drop-shadow(0 0 8px rgba(188,82,255,.46)); }
.dress-card h2,.dress-card p { color:#e7c8ff; font-family:'Bodoni MT',Didot,Georgia,serif; font-weight:400; text-shadow:0 0 7px rgba(204,111,255,.55); }
.dress-card h2 { letter-spacing:.11em; text-transform:uppercase; }
.dress-card p { letter-spacing:.035em; }
@media(max-width:640px){.dress-code-visual img{max-height:112px}.dress-card h2{letter-spacing:.07em}}
@media(max-width:420px){.dress-code-visual img{max-height:88px}}

/* Ceremony and gifts match the 98% crystal system. */
.venue-card,.gift-card { border-color:rgba(242,218,255,.72); background:linear-gradient(145deg,rgba(111,53,166,.98),rgba(28,7,65,.98) 42%,rgba(12,3,41,.98)); box-shadow:inset 0 1px 0 rgba(255,255,255,.55),inset 0 0 16px rgba(207,142,255,.12),0 0 0 1px rgba(216,169,255,.15),0 0 10px rgba(217,151,255,.36),0 0 24px rgba(146,65,224,.20),0 14px 35px rgba(2,0,20,.38); backdrop-filter:blur(14px) saturate(135%); -webkit-backdrop-filter:blur(14px) saturate(135%); }
.venue-card h2,.venue-card p,.gift-card h2,.gift-card p { color:#e7c8ff; font-family:'Bodoni MT',Didot,Georgia,serif; font-weight:400; text-shadow:0 0 7px rgba(204,111,255,.55); }
.venue-card h2,.gift-card h2 { letter-spacing:.1em; text-transform:uppercase; }
.venue-card p,.gift-card p { letter-spacing:.025em; }
.venue-card { grid-template-columns:minmax(0,62%) minmax(0,38%); overflow:hidden; }
.ceremony-visual { display:grid; place-items:end center; align-self:stretch; min-width:0; }
.ceremony-visual img { display:block; width:132%; max-width:none; height:100%; object-fit:contain; filter:drop-shadow(0 0 9px rgba(191,84,255,.48)); }
.venue-button { display:inline-flex; align-items:center; justify-content:center; gap:.35rem; position:relative; overflow:hidden; border:1px solid rgba(246,225,255,.74); background:linear-gradient(135deg,rgba(255,255,255,.34),rgba(198,120,255,.48) 40%,rgba(108,35,188,.68)); box-shadow:inset 0 1px 0 rgba(255,255,255,.78),inset 0 -1px 0 rgba(79,18,129,.55),0 0 10px rgba(207,122,255,.48),0 6px 16px rgba(4,0,25,.32); color:#fff8ff; letter-spacing:.08em; text-shadow:0 0 6px rgba(255,255,255,.65); transition:transform .25s ease,box-shadow .25s ease; }
.venue-button::after { content:''; position:absolute; inset:-100% auto -100% -35%; width:28%; transform:rotate(18deg); background:linear-gradient(90deg,transparent,rgba(255,255,255,.55),transparent); transition:left .55s ease; }
.venue-button:hover,.venue-button:focus-visible { transform:translateY(-2px); box-shadow:inset 0 1px 0 rgba(255,255,255,.85),0 0 15px rgba(220,151,255,.72),0 9px 20px rgba(4,0,25,.4); outline:none; }
.venue-button:hover::after,.venue-button:focus-visible::after { left:110%; }
.gift-card { grid-template-columns:minmax(0,43%) minmax(0,1fr); column-gap:.35rem; overflow:hidden; }
.gift-visual { position:relative; display:grid; place-items:center; align-self:stretch; min-width:0; }
.gift-visual img { position:relative; z-index:1; display:block; width:90%; height:82%; object-fit:contain; filter:drop-shadow(0 0 8px rgba(193,91,255,.5)); }
.gift-visual::after { content:''; position:absolute; z-index:0; left:12%; right:12%; bottom:3%; height:30%; background:url('public/gift-purple-box.png') center bottom/contain no-repeat; transform:scaleY(-.34); transform-origin:center bottom; opacity:.2; filter:blur(1.2px); -webkit-mask-image:linear-gradient(to bottom,rgba(0,0,0,.6),transparent 78%); mask-image:linear-gradient(to bottom,rgba(0,0,0,.6),transparent 78%); }
@media(max-width:640px){.dress-card{column-gap:.35rem}.ceremony-visual img{width:125%}.venue-button{font-size:.52rem;padding:.42rem .55rem}.gift-visual img{width:94%}}

/* Song request and animated RSVP use the same 98% crystal language. */
.song-card,.rsvp-card { border-color:rgba(242,218,255,.72); background:linear-gradient(145deg,rgba(111,53,166,.98),rgba(28,7,65,.98) 42%,rgba(12,3,41,.98)); box-shadow:inset 0 1px 0 rgba(255,255,255,.55),inset 0 0 16px rgba(207,142,255,.12),0 0 0 1px rgba(216,169,255,.15),0 0 10px rgba(217,151,255,.36),0 0 24px rgba(146,65,224,.20),0 14px 35px rgba(2,0,20,.38); backdrop-filter:blur(14px) saturate(135%); -webkit-backdrop-filter:blur(14px) saturate(135%); }
.song-card h2,.rsvp-card p,.rsvp-card h2,.rsvp-form-panel label { color:#e7c8ff; font-family:'Bodoni MT',Didot,Georgia,serif; font-weight:400; text-shadow:0 0 7px rgba(204,111,255,.55); }
.song-card h2,.rsvp-card p { letter-spacing:.1em; text-transform:uppercase; }
.song-card input,.rsvp-form-panel input,.rsvp-form-panel select { width:100%; border:1px solid rgba(239,211,255,.62); border-radius:10px; outline:none; background:linear-gradient(145deg,rgba(255,255,255,.09),rgba(25,5,62,.72)); box-shadow:inset 0 1px 0 rgba(255,255,255,.28),inset 0 0 10px rgba(196,104,255,.1),0 0 8px rgba(166,70,241,.2); color:#fff8ff; font-family:Georgia,'Times New Roman',serif; transition:border-color .25s ease,box-shadow .25s ease; }
.song-card input:focus,.rsvp-form-panel input:focus,.rsvp-form-panel select:focus { border-color:rgba(255,239,255,.9); box-shadow:inset 0 1px 0 rgba(255,255,255,.4),0 0 12px rgba(211,132,255,.55); }
.song-card input::placeholder,.rsvp-form-panel input::placeholder { color:rgba(232,210,242,.62); }
.song-card .pill-button,.rsvp-toggle,.rsvp-submit { border:1px solid rgba(246,225,255,.74); background:linear-gradient(135deg,rgba(255,255,255,.34),rgba(198,120,255,.48) 40%,rgba(108,35,188,.68)); box-shadow:inset 0 1px 0 rgba(255,255,255,.78),inset 0 -1px 0 rgba(79,18,129,.55),0 0 10px rgba(207,122,255,.48),0 6px 16px rgba(4,0,25,.32); color:#fff8ff; letter-spacing:.08em; text-shadow:0 0 6px rgba(255,255,255,.65); transition:transform .25s ease,box-shadow .25s ease; }
.song-card .pill-button:hover,.song-card .pill-button:focus-visible,.rsvp-toggle:hover,.rsvp-toggle:focus-visible,.rsvp-submit:hover,.rsvp-submit:focus-visible { transform:translateY(-2px); box-shadow:inset 0 1px 0 rgba(255,255,255,.85),0 0 15px rgba(220,151,255,.72),0 9px 20px rgba(4,0,25,.4); outline:none; }
.rsvp-card { align-items:start; transition:min-height .45s cubic-bezier(.2,.8,.2,1); }
.rsvp-content { min-width:0; }
.rsvp-toggle { display:inline-flex; align-items:center; justify-content:center; gap:.5rem; }
.rsvp-toggle b { transition:transform .4s ease; }
.rsvp-card.is-expanded .rsvp-toggle b { transform:rotate(180deg) scale(1.15); }
.rsvp-form-panel { max-height:0; overflow:hidden; opacity:0; transform:translateY(-10px); transition:max-height .55s cubic-bezier(.2,.8,.2,1),opacity .3s ease,transform .45s ease; }
.rsvp-card.is-expanded .rsvp-form-panel { max-height:360px; opacity:1; transform:translateY(0); }
.rsvp-form-panel form { display:grid; gap:.65rem; padding-top:.9rem; }
.rsvp-form-panel label { display:grid; gap:.28rem; font-size:.68rem; letter-spacing:.06em; text-align:left; text-transform:uppercase; }
.rsvp-form-panel input,.rsvp-form-panel select { padding:.58rem .65rem; font-size:.72rem; }
.rsvp-form-panel select option { color:#17032f; }
.rsvp-fields { display:grid; grid-template-columns:1fr .65fr; gap:.55rem; }
.rsvp-submit { width:100%; }
@media(max-width:640px){.song-card input{font-size:.62rem}.rsvp-form-panel form{gap:.5rem;padding-top:.7rem}.rsvp-form-panel label{font-size:.58rem}.rsvp-form-panel input,.rsvp-form-panel select{padding:.48rem;font-size:.62rem}.rsvp-fields{gap:.35rem}}
@media(prefers-reduced-motion:reduce){.rsvp-card,.rsvp-form-panel,.rsvp-toggle b{transition:none}}

/* Final polish: transparent fields, refined outline controls and neon footer. */
.gift-card h2 { font-size:clamp(.82rem,1.8vw,1.08rem); line-height:1.08; }
.gift-card p { font-size:clamp(.7rem,1.5vw,.9rem); line-height:1.42; }
.song-card input,.rsvp-form-panel input,.rsvp-form-panel select { background:rgba(255,255,255,.025); backdrop-filter:blur(8px); -webkit-backdrop-filter:blur(8px); }
.song-card .pill-button,.rsvp-toggle,.rsvp-submit { position:relative; overflow:hidden; border:1px solid rgba(239,207,255,.72); border-radius:999px; background:linear-gradient(180deg,rgba(255,255,255,.09),rgba(114,41,176,.08)); box-shadow:inset 0 1px 0 rgba(255,255,255,.48),inset 0 -1px 0 rgba(159,76,219,.28),0 0 0 1px rgba(198,117,255,.1),0 0 12px rgba(192,85,255,.25); color:#f4e4ff; font-family:'Bodoni MT',Didot,Georgia,serif; font-weight:400; letter-spacing:.12em; text-transform:uppercase; text-shadow:0 0 6px rgba(220,167,255,.7); }
.song-card .pill-button::before,.rsvp-toggle::before,.rsvp-submit::before { content:''; position:absolute; top:-120%; bottom:-120%; left:-28%; width:20%; transform:rotate(20deg); background:linear-gradient(90deg,transparent,rgba(255,255,255,.62),transparent); transition:left .6s ease; }
.song-card .pill-button:hover,.song-card .pill-button:focus-visible,.rsvp-toggle:hover,.rsvp-toggle:focus-visible,.rsvp-submit:hover,.rsvp-submit:focus-visible { transform:translateY(-2px); border-color:rgba(255,240,255,.94); background:linear-gradient(180deg,rgba(255,255,255,.14),rgba(138,55,207,.12)); box-shadow:inset 0 1px 0 rgba(255,255,255,.68),0 0 17px rgba(212,127,255,.52),0 8px 20px rgba(5,0,29,.35); }
.song-card .pill-button:hover::before,.song-card .pill-button:focus-visible::before,.rsvp-toggle:hover::before,.rsvp-toggle:focus-visible::before,.rsvp-submit:hover::before,.rsvp-submit:focus-visible::before { left:112%; }
.invitation-footer strong { color:#d579ff; text-shadow:0 0 2px #fff,0 0 7px #e7a8ff,0 0 15px #c84eff,0 0 30px rgba(158,37,255,.88),0 0 50px rgba(103,15,220,.62); animation:purple-footer-glow 3.2s ease-in-out infinite; }
.copyright { display:block; margin-top:1rem; color:rgba(225,205,237,.68); font:400 .58rem/1.4 Arial,sans-serif; letter-spacing:.12em; text-transform:uppercase; }
@keyframes purple-footer-glow { 0%,100% { filter:brightness(.92); text-shadow:0 0 2px #fff,0 0 7px #e7a8ff,0 0 15px #c84eff,0 0 30px rgba(158,37,255,.78); } 50% { filter:brightness(1.12); text-shadow:0 0 3px #fff,0 0 10px #f0c7ff,0 0 21px #d86aff,0 0 42px rgba(168,51,255,.95),0 0 62px rgba(112,22,226,.68); } }
@media(max-width:420px){.gift-card h2{font-size:.72rem}.gift-card p{font-size:.61rem}.copyright{font-size:.5rem;letter-spacing:.08em}}
@media(prefers-reduced-motion:reduce){.invitation-footer strong{animation:none}}

/* Unified controls: one button language, icon-free labels and unclipped RSVP. */
.venue-button,.song-card .pill-button,.rsvp-toggle,.rsvp-submit { display:inline-flex; align-items:center; justify-content:center; width:100%; min-height:34px; padding:.52rem .85rem; overflow:hidden; border:1px solid rgba(239,207,255,.72); border-radius:999px; background:linear-gradient(180deg,rgba(255,255,255,.09),rgba(114,41,176,.08)); box-shadow:inset 0 1px 0 rgba(255,255,255,.48),inset 0 -1px 0 rgba(159,76,219,.28),0 0 0 1px rgba(198,117,255,.1),0 0 12px rgba(192,85,255,.25); color:#f4e4ff; font-family:'Bodoni MT',Didot,Georgia,serif; font-size:clamp(.58rem,1.25vw,.76rem); font-weight:400; line-height:1.1; letter-spacing:.12em; text-align:center; text-transform:uppercase; text-shadow:0 0 6px rgba(220,167,255,.7); }
.venue-button:hover,.venue-button:focus-visible,.song-card .pill-button:hover,.song-card .pill-button:focus-visible,.rsvp-toggle:hover,.rsvp-toggle:focus-visible,.rsvp-submit:hover,.rsvp-submit:focus-visible { transform:translateY(-2px); border-color:rgba(255,240,255,.94); background:linear-gradient(180deg,rgba(255,255,255,.14),rgba(138,55,207,.12)); box-shadow:inset 0 1px 0 rgba(255,255,255,.68),0 0 17px rgba(212,127,255,.52),0 8px 20px rgba(5,0,29,.35); }
.song-card input,.rsvp-form-panel input,.rsvp-form-panel select,.song-card input:focus,.rsvp-form-panel input:focus,.rsvp-form-panel select:focus { border-color:transparent; }
.rsvp-form-panel form { padding-bottom:1rem; }
.rsvp-card.is-expanded .rsvp-form-panel { padding-bottom:.35rem; }
@media(max-width:420px){.venue-button,.song-card .pill-button,.rsvp-toggle,.rsvp-submit{min-height:30px;padding:.45rem .55rem;font-size:.53rem;letter-spacing:.09em}}

.rsvp-card .envelope { display:grid; place-items:center; align-self:start; min-width:0; padding-top:clamp(.6rem,2vw,1.25rem); font-size:0; }
.rsvp-card .envelope img { display:block; width:112%; max-width:none; height:auto; object-fit:contain; filter:drop-shadow(0 0 8px rgba(195,91,255,.48)) drop-shadow(0 8px 14px rgba(5,0,28,.32)); }
@media(max-width:640px){.rsvp-card .envelope{padding-top:.55rem}.rsvp-card .envelope img{width:108%}}
.music-heading { display:grid; grid-template-columns:1fr auto 1fr; align-items:center; gap:.55rem; }
.music-heart { display:flex; align-items:center; gap:.42rem; color:#f6dcff; text-shadow:0 0 3px rgba(255,255,255,.65),0 0 8px rgba(198,91,255,.52); }
.music-heart--left { justify-content:flex-end; }
.music-heart--right { justify-content:flex-start; }
.music-heart::before,.music-heart::after { content:''; display:none; width:clamp(1.2rem,3vw,2.4rem); height:1px; background:linear-gradient(90deg,transparent,rgba(245,224,255,.56),rgba(255,255,255,.96),rgba(193,125,239,.52)); box-shadow:0 0 5px rgba(192,94,255,.38); }
.music-heart--left::before,.music-heart--right::after { display:block; }
.album-heart { overflow:visible; border:0; border-radius:0; background:none; box-shadow:none; }
.album-heart img { display:block; width:100%; height:100%; object-fit:contain; filter:drop-shadow(0 0 7px rgba(174,69,255,.38)); }
.buttons button { display:grid; place-items:center; padding:0; }
.buttons .play { position:relative; border-radius:50%; background:none; box-shadow:none; }
.buttons .play img { width:100%; height:100%; object-fit:contain; }
.buttons .play.is-playing img { opacity:.28; }
.buttons .play.is-playing::after { content:'❚❚'; position:absolute; inset:0; display:grid; place-items:center; color:#fff; font-size:.8rem; text-shadow:0 0 6px #c26fff; }
.buttons .skip { width:28px; height:28px; }
.buttons .skip img { width:100%; height:100%; object-fit:contain; }
.buttons .skip--back img { transform:rotate(180deg); }
.floating-heart { color:#f6dcff; text-shadow:0 0 3px rgba(255,255,255,.65),0 0 8px rgba(198,91,255,.52); }
@media(max-width:640px){.music-heading{gap:.28rem}.music-heart{gap:.2rem}.music-heart::before,.music-heart::after{width:.75rem}.buttons .skip{width:22px;height:22px}}

.music-player { grid-template-columns:clamp(104px,18vw,138px) 1fr clamp(30px,5vw,42px); align-items:stretch; min-height:124px; }
.album-heart { width:100%; height:100%; min-height:124px; aspect-ratio:auto; align-self:stretch; }
.player-controls,.floating-heart { align-self:center; }
.buttons .play { width:58px; height:58px; }
.buttons .skip { width:40px; height:40px; }
@media(max-width:640px){.music-player{grid-template-columns:88px 1fr 28px;min-height:96px;gap:.45rem}.album-heart{width:100%;height:100%;min-height:96px}.buttons{gap:.8rem}.buttons .play{width:48px;height:48px}.buttons .skip{width:32px;height:32px}}
