@import url('https://fonts.googleapis.com/css2?family=DM+Sans:wght@400;500;600;700&family=Manrope:wght@400;500;600;700;800&family=Playfair+Display:wght@400;500;600;700&family=Great+Vibes&display=swap');
:root{--cream:#172d2b;--paper:#203b37;--rose:#9aab8d;--deep:#102a2a;--gold:#b6aa82;--ink:#eee9dc;--muted:#b7c0b2;--line:#405953;--sage:#748b76}
*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:80px}body{margin:0;background:var(--cream);color:var(--ink);font-family:'DM Sans',sans-serif;line-height:1.65}a{color:inherit}.topbar{height:72px;display:flex;align-items:center;justify-content:space-between;padding:0 clamp(18px,6vw,90px);position:sticky;top:0;background:rgba(255,248,242,.94);backdrop-filter:blur(12px);z-index:20;border-bottom:1px solid #f0e3d8}.brand{font-family:'Cormorant Garamond',serif;font-size:25px;text-decoration:none;font-weight:700;color:var(--deep)}.brand span,h1 span,.closing h2 span{color:var(--rose)}nav{display:flex;gap:25px;align-items:center}nav a{text-decoration:none;font-size:13px;color:#735e5d}nav a:hover,.text-link:hover{color:var(--rose)}.nav-rsvp{padding:8px 17px;border:1px solid var(--gold);border-radius:30px}.menu-toggle{display:none;background:none;border:0;font-size:24px;color:var(--deep)}
.hero{min-height:calc(100vh - 72px);text-align:center;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:58px 20px 35px;position:relative;overflow:hidden;background:radial-gradient(ellipse at 50% 36%,#fff 0,#fff8f2 55%,#f8e8df 100%)}.hero:before,.hero:after{content:"❦";position:absolute;font-size:130px;color:#e6c9b0;opacity:.3;top:16%;left:3%;transform:rotate(-25deg)}.hero:after{left:auto;right:3%;top:52%;transform:rotate(25deg)}.hero-ornament{color:var(--gold);font-size:26px;margin-bottom:8px}.eyebrow{font-size:10px;letter-spacing:3px;font-weight:700;color:var(--gold);margin:0 0 12px}.couple-art{width:310px;height:255px;position:relative;margin:0 auto 12px}.sun-halo{position:absolute;width:225px;height:225px;border:1px solid #e9cfb5;border-radius:50%;background:linear-gradient(145deg,#f9e8d8,#fff5ed);left:43px;top:15px}.character{position:absolute;bottom:0;width:125px;height:230px}.groom{left:48px}.bride{right:35px}.turban{position:absolute;z-index:4;width:82px;height:42px;top:7px;left:24px;border-radius:48% 48% 20% 20%;background:#8b3247;border:3px solid #d9b77a}.turban:before{content:"";position:absolute;width:35px;height:35px;left:20px;top:-13px;border-radius:50%;background:#9c3f51;border:2px solid #d9b77a}.turban span{position:absolute;width:4px;height:30px;background:#e4c27d;left:38px;top:0;transform:rotate(45deg)}.g-face,.b-face{position:absolute;top:40px;left:31px;width:65px;height:74px;border-radius:43% 43% 48% 48%;background:#d99c78;z-index:3;border:1px solid #a96b54}.g-face:after,.b-face:after{content:"";position:absolute;top:40px;left:7px;width:49px;height:28px;border-radius:0 0 40% 40%;background:#442b2b;opacity:.9}.eye{position:absolute;top:31px;width:5px;height:7px;border-radius:50%;background:#3c2827;z-index:5}.eye.left{left:17px}.eye.right{right:17px}.smile{position:absolute;z-index:6;top:49px;left:27px;width:13px;height:7px;border-bottom:2px solid #8d3f45;border-radius:50%}.g-neck,.b-neck{position:absolute;top:105px;left:51px;width:25px;height:26px;background:#d99c78;z-index:1}.g-body{position:absolute;bottom:0;left:7px;width:113px;height:125px;border-radius:35px 35px 8px 8px;background:linear-gradient(90deg,#6b273b,#a74753,#6b273b);border:2px solid #d8b36f}.collar{position:absolute;top:0;left:40px;width:28px;height:30px;border-left:2px solid #edcf91;border-right:2px solid #edcf91;transform:perspective(20px) rotateX(-10deg)}.buttons{position:absolute;top:33px;left:51px;color:#f1d391;font-size:12px;line-height:22px}.b-hair{position:absolute;top:25px;left:22px;width:85px;height:104px;border-radius:45% 45% 20% 20%;background:#3c2927;z-index:1}.b-face{top:42px;left:31px;z-index:2}.b-face:after{display:none}.b-face .eye{z-index:4}.b-face .smile{top:51px}.bindi{position:absolute;top:20px;left:30px;background:#b33e4d;width:5px;height:5px;border-radius:50%;z-index:5}.dupatta{position:absolute;top:8px;left:8px;width:108px;height:130px;border-radius:48% 48% 15% 15%;background:linear-gradient(135deg,#a53d4c,#e7a0a0);border:3px solid #d9b77a;z-index:2;opacity:.96}.b-body{position:absolute;bottom:0;left:1px;width:123px;height:128px;border-radius:40px 40px 8px 8px;background:linear-gradient(90deg,#8c2f45,#c45c6a,#8c2f45);border:2px solid #d9b77a;z-index:3}.necklace{position:absolute;top:1px;left:53px;color:#f5d48d;font-size:25px}.embroidery{position:absolute;top:47px;left:19px;color:#f4d38b;font-size:14px;line-height:23px;text-align:center}.float-heart{position:absolute;color:var(--rose);font-size:25px;animation:float 3s ease-in-out infinite}.h1{top:42px;left:25px}.h2{top:95px;right:8px;animation-delay:1s}.h3{top:15px;right:52px;color:var(--gold);animation-delay:.5s}@keyframes float{50%{transform:translateY(-10px) rotate(8deg)}}.script{font-family:'Great Vibes',cursive;color:var(--rose);font-size:27px;margin:8px 0}.hero h1{font:600 clamp(44px,7vw,72px)/.98 'Cormorant Garamond',serif;color:var(--deep);margin:10px 0}.hero h1 em{font-weight:500}.hero-sub{max-width:430px;color:var(--muted);font-size:14px}.date-ribbon{margin:14px 0 24px;border-top:1px solid var(--gold);border-bottom:1px solid var(--gold);padding:8px 22px;color:var(--deep);font-size:12px;letter-spacing:3px}.button{display:inline-flex;align-items:center;justify-content:center;gap:14px;padding:13px 24px;border:0;border-radius:30px;text-decoration:none;font:600 13px 'DM Sans',sans-serif;cursor:pointer;transition:transform .2s,box-shadow .2s}.button:hover{transform:translateY(-2px);box-shadow:0 8px 22px #7a344222}.button-gold{background:var(--deep);color:white}.hero-bottom{margin-top:35px;color:#a78c7b;font:italic 13px 'Cormorant Garamond',serif;letter-spacing:1px}
.section{padding:92px clamp(20px,7vw,110px);max-width:1200px;margin:auto}.section h2,.closing h2{font:600 clamp(34px,4vw,48px)/1.1 'Cormorant Garamond',serif;color:var(--deep);text-align:center;margin:0 0 15px}.center{text-align:center;max-width:650px;margin:0 auto 26px;color:#786768;font-size:14px}.ornament{text-align:center;color:var(--gold);font-size:24px;margin:8px 0 25px}.invitation-paper{max-width:690px;margin:30px auto 20px;text-align:center;padding:clamp(25px,5vw,55px);background:var(--paper);border:1px solid #e6cdb5;outline:5px solid #fff8f2;box-shadow:0 12px 40px #643c2910;position:relative}.invitation-paper:before,.invitation-paper:after{content:"❦";position:absolute;color:#c6a16e;font-size:28px}.invitation-paper:before{top:8px;left:12px}.invitation-paper:after{bottom:8px;right:12px}.invitation-paper p{font-size:14px;margin:11px auto;max-width:500px}.small-caps{letter-spacing:5px;color:var(--gold);font-size:12px!important}.invitation-paper h3{font:600 30px 'Cormorant Garamond',serif;color:var(--deep);margin:5px 0}.muted{color:var(--muted);font-size:13px}.weds{letter-spacing:5px;color:var(--gold);font-size:11px;margin:15px}.invitation-paper blockquote{font-family:'Cormorant Garamond',serif;color:var(--rose);font-size:19px;font-style:italic;margin:22px auto}.family-note{text-align:center;color:#786768;font-size:13px;margin:25px auto 0;line-height:1.8}
.celebrations{max-width:1050px}.event-card{display:grid;grid-template-columns:.78fr 1.22fr;background:var(--paper);border:1px solid var(--line);border-radius:18px;overflow:hidden;margin:28px 0;box-shadow:0 12px 30px #643c2908}.event-card.reverse{grid-template-columns:1.22fr .78fr}.event-card.reverse .event-art{order:2}.event-art{min-height:330px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:12px;position:relative;overflow:hidden;background:radial-gradient(circle,#fff8f2,#f1d9cd)}.event-art:before,.event-art:after{content:"✿";position:absolute;font-size:100px;color:#d2a77c;opacity:.35}.event-art:before{top:0;left:5px}.event-art:after{bottom:-10px;right:5px}.sangeet-art{background:radial-gradient(circle,#fff2e4,#e9c2bd)}.wedding-art{background:radial-gradient(circle,#fffaf2,#e8d8ba)}.event-icon{font-size:76px;filter:drop-shadow(0 8px 10px #754c3822);z-index:1}.event-label{letter-spacing:4px;font-size:10px;color:var(--deep);z-index:1}.event-copy{padding:clamp(22px,4vw,42px)}.event-copy h3,.venue-card h3{font:600 31px 'Cormorant Garamond',serif;color:var(--deep);margin:0 0 12px}.event-copy p{font-size:13px}.event-copy blockquote{margin:8px 0 18px;color:var(--rose);font-family:'Cormorant Garamond',serif;font-size:19px}.schedule-row{display:flex;justify-content:space-between;gap:15px;padding:9px 0;border-bottom:1px solid #f0e4da;font-size:12px}.schedule-row strong{color:var(--deep);text-align:right}.venue-name{font-weight:700;color:#624448;margin:17px 0 3px}.text-link{display:inline-block;margin-top:8px;color:var(--deep);font-size:12px;font-weight:700;text-underline-offset:4px}
.scratch-section{background:#f8e9e1;max-width:none;text-align:center}.scratch-section h2{max-width:700px;margin-left:auto;margin-right:auto}.scratch-wrap{width:min(500px,100%);height:220px;margin:30px auto 22px;position:relative;border:7px solid #fffaf5;box-shadow:0 12px 28px #5a31301a;border-radius:18px;overflow:hidden;background:#fffdf8}.scratch-under{height:100%;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:9px;background:radial-gradient(circle,#fffdf8,#f4d8ca);padding:15px}.scratch-under .script{font-size:26px}.scratch-under strong{font:700 30px 'Cormorant Garamond',serif;color:var(--deep)}.scratch-under span:last-child{font-size:10px;letter-spacing:2px;color:var(--gold)}#scratchCanvas{position:absolute;inset:0;width:100%;height:100%;touch-action:none;cursor:crosshair}.countdown{display:flex;justify-content:center;gap:12px;margin:28px auto 10px}.countdown div{width:78px;background:#fffaf6;border:1px solid #e7cbbb;border-radius:12px;padding:12px 4px;display:flex;flex-direction:column}.countdown strong{font:600 27px 'Cormorant Garamond',serif;color:var(--deep)}.countdown span{font-size:10px;color:var(--muted);text-transform:uppercase;letter-spacing:1px}
.venue-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:18px;margin-top:35px}.venue-card{padding:28px;background:var(--paper);border:1px solid var(--line);border-radius:16px;text-align:center}.venue-card>span{font-size:26px}.venue-card h3{font-size:25px;margin:10px 0}.venue-card p{font-size:13px;color:var(--muted);min-height:44px}.venue-card a{font-size:12px;color:var(--deep);font-weight:700}.map-note{text-align:center;font-size:11px;color:var(--muted);margin-top:20px}
.rsvp-section{max-width:850px}.rsvp-form{background:var(--paper);border:1px solid var(--line);border-radius:18px;padding:clamp(20px,4vw,40px);display:grid;grid-template-columns:1fr 1fr;gap:18px;box-shadow:0 12px 30px #643c2908}.rsvp-form>label{font-size:12px;font-weight:700;color:#705759;display:flex;flex-direction:column;gap:7px}.rsvp-form input:not([type=checkbox]),.rsvp-form select,.rsvp-form textarea{font:13px 'DM Sans',sans-serif;padding:12px;border:1px solid #e4d4c8;border-radius:9px;background:#fffdfa;color:var(--ink);width:100%}.rsvp-form input:focus,.rsvp-form select:focus,.rsvp-form textarea:focus{outline:2px solid #d9b77a;outline-offset:1px}.rsvp-form fieldset{grid-column:1/-1;border:1px solid #e4d4c8;border-radius:9px;padding:13px}.rsvp-form legend{font-size:12px;font-weight:700;color:#705759;padding:0 5px}.check{display:inline-flex;align-items:center;gap:7px;margin:6px 12px 4px 0;font-size:12px}.rsvp-form textarea{resize:vertical}.rsvp-form>button,.form-note,#formFeedback{grid-column:1/-1}.form-note{font-size:11px;color:var(--muted);margin:0}.closing{text-align:center;padding:65px 20px 75px;background:linear-gradient(180deg,#fff8f2,#f2ddd3)}.closing h2{margin:10px 0;font-size:clamp(34px,5vw,50px)}.closing>p:not(.script){font-size:12px;color:#806c68}.closing .script{font-size:29px}footer{padding:22px;text-align:center;font-size:11px;color:var(--muted);background:#fffaf6}footer a{color:var(--deep);margin-left:8px}.petal-layer{position:fixed;inset:0;pointer-events:none;z-index:10;overflow:hidden}.petal{position:absolute;top:-20px;color:#d99aa0;opacity:.5;animation:fall linear forwards}@keyframes fall{to{transform:translateY(110vh) rotate(540deg);opacity:0}}
@media(max-width:700px){.topbar{height:62px}.menu-toggle{display:block}nav{display:none;position:absolute;top:61px;left:0;right:0;background:#fff8f2;padding:15px 22px 22px;flex-direction:column;gap:16px;border-bottom:1px solid var(--line)}nav.open{display:flex}.hero{min-height:calc(100vh - 62px);padding-top:38px}.hero:before,.hero:after{font-size:70px}.couple-art{transform:scale(.9);margin-top:-8px;margin-bottom:-5px}.section{padding:65px 18px}.event-card,.event-card.reverse{grid-template-columns:1fr}.event-card.reverse .event-art{order:0}.event-art{min-height:200px}.event-icon{font-size:60px}.venue-grid{grid-template-columns:1fr}.rsvp-form{grid-template-columns:1fr}.rsvp-form fieldset,.rsvp-form>button,.form-note,#formFeedback{grid-column:1}.invitation-paper{padding:30px 20px}.invitation-paper h3{font-size:27px}.schedule-row{font-size:11px}.countdown{gap:6px}.countdown div{width:68px}.countdown strong{font-size:23px}.date-ribbon{font-size:10px;letter-spacing:2px}.hero h1{font-size:51px}}
@media(prefers-reduced-motion:reduce){*,*:before,*:after{scroll-behavior:auto!important;animation:none!important;transition:none!important}}

/* Personal photo gallery and richer photo-like background treatment */
.hero{background:radial-gradient(ellipse at 50% 36%,rgba(255,255,255,.96) 0,rgba(255,248,242,.93) 55%,rgba(248,232,223,.96) 100%),linear-gradient(135deg,#f3d9d4,#fff5e9)}
.invitation{background:linear-gradient(180deg,rgba(255,248,242,.92),rgba(255,248,242,.98)),radial-gradient(ellipse at 8% 20%,#efd1c6,transparent 38%),radial-gradient(ellipse at 95% 78%,#e8d8ba,transparent 34%)}
.moments-section{max-width:1100px;text-align:center;background:linear-gradient(135deg,#fffaf6,#f6e3dc)}
.photo-gallery{display:grid;grid-template-columns:1.25fr 1fr 1fr;gap:18px;margin:32px auto 14px;text-align:center}
.photo-frame{margin:0;position:relative;min-height:290px;border:7px solid #fffdf9;border-radius:15px;background:linear-gradient(145deg,#f1d9cf,#fff6eb 55%,#e7d4b9);box-shadow:0 12px 30px #6b403018;overflow:hidden;display:flex;align-items:center;justify-content:center}
.photo-frame.photo-large{min-height:360px}
.photo-frame img{position:absolute;width:100%;height:100%;inset:0;object-fit:cover;display:block}
.photo-frame figcaption{position:absolute;left:0;right:0;bottom:0;padding:34px 10px 13px;color:white;font:italic 18px 'Cormorant Garamond',serif;background:linear-gradient(transparent,rgba(61,34,36,.68));z-index:2}
.photo-fallback{display:flex;flex-direction:column;gap:12px;align-items:center;color:#b66d77;font-size:42px}
.photo-fallback small{font:12px 'DM Sans',sans-serif;letter-spacing:.5px;color:#856a66}
.photo-frame:not(.photo-placeholder) .photo-fallback{display:none}
.photo-note{font-size:11px;color:var(--muted)}
.photo-note code{background:#fff;border-radius:4px;padding:2px 5px}
.closing{background:radial-gradient(ellipse at center,#fff8f2,#f2ddd3 72%,#ead0c5)}
@media(max-width:700px){.photo-gallery{grid-template-columns:1fr 1fr;gap:12px}.photo-frame,.photo-frame.photo-large{min-height:230px}.photo-frame.photo-large{grid-column:1/-1;min-height:330px}}


/* Hero photo: keep the original V2 design while displaying the full image */
.couple-art.hero-real-photo {
  width: min(88vw, 410px);
  height: 410px;
  margin: 24px auto 26px;
  display: flex;
  align-items: center;
  justify-content: center;
  overflow: hidden;
  border: 7px solid rgba(255, 253, 249, 0.96);
  border-radius: 50%;
  background: transparent;
  box-shadow: 0 12px 30px rgba(107, 64, 48, 0.12);
}

.couple-art.hero-real-photo img {
  display: block;
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: center;
  border-radius: 50%;
}

@media (max-width: 700px) {
  .couple-art.hero-real-photo {
    width: min(88vw, 350px);
    height: 350px;
    margin: 20px auto;
  }
}

@media (max-width: 380px) {
  .couple-art.hero-real-photo {
    height: 300px;
  }
}


/* Discreet background music control */
.music-player{position:fixed;right:18px;bottom:18px;z-index:40}
.music-toggle{display:flex;align-items:center;gap:9px;border:1px solid rgba(179,138,76,.7);border-radius:999px;padding:11px 16px;background:rgba(255,253,249,.96);color:var(--deep);font:600 12px 'DM Sans',sans-serif;box-shadow:0 6px 22px rgba(75,51,54,.16);cursor:pointer;backdrop-filter:blur(8px)}
.music-toggle:hover{transform:translateY(-1px);box-shadow:0 8px 25px rgba(75,51,54,.2)}
.music-icon{font-size:19px;color:var(--rose);line-height:1}
.music-toggle[aria-pressed="true"] .music-icon{animation:musicPulse 1.2s ease-in-out infinite}
@keyframes musicPulse{0%,100%{transform:scale(1)}50%{transform:scale(1.18)}}
@media(max-width:480px){.music-player{right:12px;bottom:12px}.music-toggle{padding:10px 13px;font-size:11px}}
@media(prefers-reduced-motion:reduce){.music-toggle[aria-pressed="true"] .music-icon{animation:none}}


/* Staged invitation experience: scratch reveal first, then unlock the original V2 site. */
[hidden]{display:none!important}
.scratch-gate{min-height:100vh;min-height:100svh;padding:34px 20px 28px;display:flex;flex-direction:column;align-items:center;justify-content:center;max-width:none;position:relative;overflow:hidden;background:radial-gradient(ellipse at 50% 32%,#fff 0,#fff8f2 55%,#f4dfd6 100%)}
.scratch-gate:before,.scratch-gate:after{content:"❦";position:absolute;color:#e6c9b0;opacity:.25;font-size:clamp(75px,12vw,145px);pointer-events:none}
.scratch-gate:before{top:8%;left:3%;transform:rotate(-25deg)}
.scratch-gate:after{right:3%;bottom:7%;transform:rotate(25deg)}
.gate-ornament{font-size:28px;color:var(--gold);margin-bottom:12px;position:relative;z-index:1}
.scratch-gate .eyebrow,.scratch-gate h2,.scratch-gate .center,.scratch-gate .scratch-wrap,.scratch-gate .button,.scratch-gate .countdown,.scratch-gate .gate-footnote{position:relative;z-index:1}
.scratch-gate h2{font:600 clamp(35px,5vw,51px)/1.1 'Cormorant Garamond',serif;color:var(--deep);text-align:center;margin:0 0 15px;max-width:700px}
.scratch-gate .center{margin-bottom:18px}
.scratch-gate .scratch-wrap{flex-shrink:0}
.scratch-gate .countdown{margin-top:24px}
.scratch-gate #countdownMessage{margin-top:12px;margin-bottom:10px}
.gate-footnote{font:italic 14px 'Cormorant Garamond',serif;color:#a78c7b;margin:18px 0 0;text-align:center}
#revealButton{min-width:190px}
#invitationExperience{animation:invitationEnter .75s ease both}
@keyframes invitationEnter{from{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}}
@media(max-width:480px){.scratch-gate{padding:26px 16px}.scratch-gate .scratch-wrap{height:205px}.scratch-gate .scratch-under strong{font-size:26px}.gate-ornament{margin-bottom:7px}}
@media(prefers-reduced-motion:reduce){#invitationExperience{animation:none}}

/* Refined sufi-romantic palette: ivory, champagne, dusty rose, sage and plum. */
:root{--cream:#fff9f2;--paper:#fffdf8;--rose:#bd858b;--deep:#67434d;--gold:#c2a36e;--ink:#493b3e;--muted:#87777a;--line:#e9ded2;--sage:#9da991}
body{background:var(--cream);color:var(--ink)}
.topbar{background:rgba(255,249,242,.95);border-bottom-color:#e9ded2}
.hero{background:radial-gradient(ellipse at 50% 36%,#fff 0,#fff9f2 57%,#eee7dc 100%)}
.invitation{background:linear-gradient(180deg,#fffaf4 0%,#f5eee5 100%)}
.moments-section{background:linear-gradient(135deg,#fffaf4,#f1e8df)}
.closing{background:linear-gradient(180deg,#fff9f2,#eee3d8)}

/* A more editorial, layered family invitation. */
.invitation-paper{max-width:740px;padding:clamp(30px,6vw,66px);background:linear-gradient(145deg,rgba(255,255,252,.98),rgba(250,242,231,.98));border:1px solid #d9c49d;outline:1px solid rgba(194,163,110,.48);outline-offset:8px;box-shadow:0 18px 55px rgba(72,53,49,.09),inset 0 0 0 8px rgba(255,255,255,.5)}
.invitation-paper:before,.invitation-paper:after{font-size:34px;color:#b79a67;opacity:.9}
.invitation-paper .paper-topline,.invitation-paper .paper-bottomline{font-size:9px;letter-spacing:2.5px;text-transform:uppercase;color:#a38a60;margin:0 auto 22px}
.invitation-paper .paper-bottomline{margin:26px auto 0;padding-top:16px;border-top:1px solid rgba(194,163,110,.45);max-width:300px}
.invitation-paper .small-caps{font-size:13px!important;letter-spacing:3px;color:#8f7952}
.invitation-paper h3{font-size:clamp(27px,3.8vw,35px);color:#67434d}
.invitation-paper .weds{display:flex;align-items:center;justify-content:center;gap:14px;color:#a38a60}
.invitation-paper .weds:before,.invitation-paper .weds:after{content:"";width:40px;height:1px;background:#c2a36e}
.family-note{max-width:480px;padding:20px 28px;border-top:1px solid rgba(194,163,110,.55);border-bottom:1px solid rgba(194,163,110,.55);font-family:'Cormorant Garamond',serif;font-size:17px;color:#6f5c5f}

/* Swipe-first gallery: one large image at a time on every screen. */
.gallery-shell{position:relative;max-width:760px;margin:34px auto 12px;display:flex;align-items:center;gap:12px}
.photo-gallery{display:flex;gap:16px;overflow-x:auto;overscroll-behavior-x:contain;scroll-snap-type:x mandatory;scroll-behavior:smooth;scrollbar-width:none;width:100%;padding:5px 3px 18px;text-align:center;touch-action:pan-x;}
.photo-gallery::-webkit-scrollbar{display:none}
.photo-frame,.photo-frame.photo-large{flex:0 0 100%;width:100%;min-width:0;height:clamp(350px,52vw,510px);min-height:0;border:7px solid #fffdf9;border-radius:18px;scroll-snap-align:center;box-shadow:0 15px 36px rgba(66,49,45,.12);background:linear-gradient(145deg,#eee1d5,#fff9f2 55%,#e5d7c1)}
.photo-frame img{object-fit:contain;background:linear-gradient(145deg,#eee1d5,#fff9f2 55%,#e5d7c1);user-select:none;-webkit-user-drag:none}
.photo-frame figcaption{font-size:22px;letter-spacing:.2px}
.photo-watermark{position:absolute;z-index:3;top:16px;right:16px;padding:5px 9px;border:1px solid rgba(255,255,255,.55);border-radius:999px;background:rgba(50,36,38,.2);color:rgba(255,255,255,.88);font:600 10px 'DM Sans',sans-serif;letter-spacing:2px;text-shadow:0 1px 5px rgba(0,0,0,.3);pointer-events:none}
.gallery-arrow{flex:0 0 38px;width:38px;height:38px;border-radius:50%;border:1px solid rgba(194,163,110,.65);background:rgba(255,253,248,.96);color:var(--deep);font:28px/1 'Cormorant Garamond',serif;cursor:pointer;box-shadow:0 4px 12px rgba(65,47,43,.08);z-index:2}
.gallery-arrow:hover{background:#eee3d8}
.gallery-dots{display:flex;justify-content:center;gap:9px;margin:0 auto 18px}
.gallery-dots button{width:7px;height:7px;padding:0;border:0;border-radius:50%;background:#d9c9b8;cursor:pointer;transition:transform .2s,background .2s}
.gallery-dots button[aria-current="true"]{background:var(--deep);transform:scale(1.45)}
.photo-note{max-width:560px;margin:0 auto;font-size:11px;line-height:1.7}

/* Small, looping illustrated scenes in each ceremony's left panel. */
.event-art{min-height:330px;background:radial-gradient(circle at 50% 38%,#fffaf3,#eee1d5 78%)}
.event-art:before,.event-art:after{content:"✿";color:#bca779;opacity:.22}
.sangeet-art{background:radial-gradient(circle at 50% 38%,#fff5ec,#ead4d1 78%)}
.wedding-art{background:radial-gradient(circle at 50% 38%,#fffaf2,#e8e0ce 78%)}
.animated-illustration{position:relative;width:min(100%,330px);height:240px;flex:none;overflow:hidden;isolation:isolate}
.scene-caption{position:absolute;bottom:2px;left:0;right:0;text-align:center;font:italic 17px 'Cormorant Garamond',serif;color:#765c5d;z-index:5}
.scene-flower,.scene-star{position:absolute;color:#b99b62;font-size:27px;animation:sceneTwinkle 3.2s ease-in-out infinite;z-index:4}
.flower-a{left:15%;top:23%}.flower-b{right:13%;top:17%;animation-delay:1s}.star-a{left:13%;top:15%}.star-b{right:12%;top:28%;animation-delay:1.3s}
@keyframes sceneTwinkle{0%,100%{opacity:.55;transform:scale(.88) rotate(0)}50%{opacity:1;transform:scale(1.12) rotate(15deg)}}
.illustrated-couple{position:absolute;inset:10px 18px 28px;display:flex;align-items:flex-end;justify-content:center;gap:0}
.illu-person{position:relative;display:block;width:92px;height:170px;animation:gentleSway 3.5s ease-in-out infinite;transform-origin:bottom center}
.bride-person{animation-delay:-1.2s}
.illu-face{position:absolute;top:25px;left:28px;width:39px;height:43px;border-radius:45% 45% 48% 48%;background:#c98969;border:2px solid #9b6655;z-index:3}
.illu-face:after{content:"•  •";white-space:pre;position:absolute;top:10px;left:8px;color:#503a35;font:700 10px sans-serif;letter-spacing:4px}
.illu-turban{position:absolute;top:9px;left:21px;width:53px;height:28px;background:#67434d;border:3px solid #c2a36e;border-radius:50% 50% 25% 25%;z-index:4}
.illu-turban:after{content:"";position:absolute;top:-8px;left:14px;width:18px;height:17px;border-radius:50%;background:#79505a;border:2px solid #c2a36e}
.illu-dupatta{position:absolute;top:14px;left:15px;width:62px;height:86px;border-radius:40% 40% 12% 12%;background:#c98f96;border:2px solid #c2a36e;z-index:2}
.illu-body{position:absolute;bottom:0;left:11px;width:72px;height:105px;border-radius:28px 28px 8px 8px;background:linear-gradient(90deg,#67434d,#94636a,#67434d);border:2px solid #c2a36e;z-index:2}
.bride-person .illu-body{background:linear-gradient(90deg,#a46d79,#d5a1a1,#a46d79)}
.ring-sparkle{position:absolute;z-index:6;left:calc(50% - 12px);top:94px;font-size:28px;animation:ringFloat 2.4s ease-in-out infinite;filter:drop-shadow(0 3px 4px rgba(80,53,48,.15))}
@keyframes ringFloat{0%,100%{transform:translateY(3px) rotate(-8deg)}50%{transform:translateY(-7px) rotate(8deg)}}
@keyframes gentleSway{0%,100%{transform:rotate(-2deg) translateY(0)}50%{transform:rotate(2deg) translateY(-4px)}}
.dance-scene .dancer{position:absolute;bottom:38px;width:68px;height:142px;animation:bhangraBounce 1.35s ease-in-out infinite;transform-origin:bottom center}
.dancer-one{left:18%;animation-delay:-.2s!important}.dancer-two{left:40%;animation-delay:-.8s!important;transform:scale(.92)}.dancer-three{right:12%;animation-delay:-.45s!important;transform:scale(.96)}
.dance-head{position:absolute;top:12px;left:22px;width:29px;height:31px;border-radius:48%;background:#c98969;border:1px solid #98644e;z-index:3}
.turban-head:before{content:"";position:absolute;top:-9px;left:-5px;width:38px;height:17px;background:#67434d;border:2px solid #c2a36e;border-radius:50% 50% 25% 25%}
.hair-head:before{content:"";position:absolute;top:-5px;left:-4px;width:37px;height:29px;background:#493537;border-radius:50% 50% 20% 20%;z-index:-1}
.dance-body{position:absolute;top:42px;left:10px;width:52px;height:61px;border:2px solid #c2a36e;border-radius:17px 17px 5px 5px;background:#67434d}
.lehenga-body{background:linear-gradient(90deg,#ad737e,#d6a2a0,#ad737e);height:67px;border-radius:15px 15px 28px 28px}
.blue-body{background:linear-gradient(90deg,#687d7c,#9eb5aa,#687d7c)}
.dance-arm{position:absolute;top:45px;width:10px;height:49px;border-radius:9px;background:#c98969;z-index:1;transform-origin:top center}
.arm-left{left:8px;transform:rotate(48deg);animation:armLeft 1.35s ease-in-out infinite}.arm-right{right:1px;transform:rotate(-58deg);animation:armRight 1.35s ease-in-out infinite}
.dance-leg{position:absolute;top:96px;width:11px;height:37px;border-radius:7px;background:#8a655c;transform-origin:top center}
.leg-left{left:21px;animation:legLeft 1.35s ease-in-out infinite}.leg-right{right:16px;animation:legRight 1.35s ease-in-out infinite}
@keyframes bhangraBounce{0%,100%{transform:translateY(0) rotate(-2deg)}50%{transform:translateY(-8px) rotate(3deg)}}
@keyframes armLeft{0%,100%{transform:rotate(48deg)}50%{transform:rotate(5deg)}}@keyframes armRight{0%,100%{transform:rotate(-58deg)}50%{transform:rotate(-100deg)}}
@keyframes legLeft{0%,100%{transform:rotate(9deg)}50%{transform:rotate(-13deg)}}@keyframes legRight{0%,100%{transform:rotate(-9deg)}50%{transform:rotate(15deg)}}
.wedding-scene .mandap-arch{position:absolute;top:5px;left:50%;transform:translateX(-50%);width:200px;height:150px;border:7px solid rgba(194,163,110,.7);border-bottom:0;border-radius:100px 100px 0 0;background:linear-gradient(180deg,rgba(255,255,255,.3),transparent)}
.mandap-arch span{position:absolute;top:15px;left:0;right:0;text-align:center;color:#9a8055;font-size:24px}
.seated-couple{position:absolute;bottom:32px;left:50%;transform:translateX(-50%);display:flex;align-items:flex-end;gap:8px;z-index:2}
.seated-person{display:block;position:relative;width:78px;height:100px;animation:gentleSway 4s ease-in-out infinite}
.seated-head{position:absolute;top:6px;left:23px;width:35px;height:34px;border-radius:50%;background:#c98969;border:2px solid #9b6655;z-index:3}
.seated-head.turban-head:before{content:"";position:absolute;top:-9px;left:-5px;width:42px;height:20px;border-radius:50%;background:#67434d;border:2px solid #c2a36e}
.seated-head.bride-head:before{content:"";position:absolute;top:-4px;left:-6px;width:44px;height:42px;border-radius:50% 50% 15% 15%;background:#c98f96;border:2px solid #c2a36e;z-index:-1}
.seated-torso{position:absolute;bottom:0;left:4px;width:70px;height:62px;border-radius:24px 24px 8px 8px;border:2px solid #c2a36e}
.groom-torso{background:linear-gradient(90deg,#67434d,#94636a,#67434d)}.bride-torso{background:linear-gradient(90deg,#ad737e,#d6a2a0,#ad737e)}
.laavan-flower{font-size:22px;color:#b99b62;z-index:3;margin-bottom:25px;animation:sceneTwinkle 3s ease-in-out infinite}
.wedding-flower{right:14%;top:34%}
.event-copy{background:rgba(255,253,248,.94)}

@media(max-width:700px){
  .gallery-shell{gap:5px;margin-top:25px}
  .gallery-arrow{flex-basis:30px;width:30px;height:30px;font-size:24px}
  .photo-gallery{gap:12px;padding-bottom:12px}
  .photo-frame,.photo-frame.photo-large{height:clamp(320px,105vw,440px);border-width:5px;border-radius:15px}
  .photo-frame figcaption{font-size:19px}
  .animated-illustration{height:205px;transform:scale(.92);transform-origin:center}
  .event-art{min-height:245px;padding:10px 0}
  .invitation-paper{outline-offset:5px;padding:34px 24px}
}
@media(prefers-reduced-motion:reduce){.animated-illustration *,.scene-flower,.scene-star{animation:none!important}}

/* A more immersive Punjabi family invitation: an editorial spread, not a single square card. */
.invitation{max-width:none;padding-left:clamp(18px,6vw,86px);padding-right:clamp(18px,6vw,86px);background:radial-gradient(ellipse at 8% 20%,rgba(201,143,150,.17),transparent 34%),radial-gradient(ellipse at 93% 80%,rgba(168,176,154,.22),transparent 35%),linear-gradient(135deg,#fff9f1,#f5eadc 55%,#fff7ef);position:relative;isolation:isolate;overflow:hidden}
.invitation:before,.invitation:after{content:"";position:absolute;z-index:-1;width:240px;height:240px;opacity:.22;pointer-events:none;background:repeating-conic-gradient(from 0deg,#b58a50 0 8deg,transparent 8deg 16deg);mask:radial-gradient(circle,transparent 0 22%,#000 23% 25%,transparent 26% 35%,#000 36% 38%,transparent 39%);}
.invitation:before{top:40px;left:-115px}.invitation:after{bottom:30px;right:-115px;transform:rotate(18deg)}
.invitation h2{font-size:clamp(40px,5vw,58px);letter-spacing:-.5px}.invitation-intro{max-width:720px;margin-bottom:38px;font-family:'Cormorant Garamond',serif;font-size:21px;line-height:1.5;color:#755d59}
.invitation-spread{max-width:1080px;margin:0 auto;display:grid;grid-template-columns:.86fr 1.14fr;min-height:610px;position:relative;background:rgba(255,253,248,.72);border:1px solid rgba(176,143,91,.55);box-shadow:0 28px 75px rgba(80,49,45,.11);overflow:hidden}
.invitation-spread:before{content:"";position:absolute;inset:10px;border:1px solid rgba(183,154,98,.38);pointer-events:none;z-index:4}
.invitation-art{position:relative;min-height:610px;overflow:hidden;display:flex;flex-direction:column;align-items:center;justify-content:center;background:radial-gradient(ellipse at 50% 35%,#fff4df 0,#e8d2bd 57%,#b47b70 100%);border-right:1px solid rgba(177,139,84,.45)}
.invitation-art:before{content:"";position:absolute;inset:18px;background:repeating-linear-gradient(45deg,rgba(255,245,221,.12) 0 2px,transparent 2px 11px),repeating-linear-gradient(-45deg,rgba(255,245,221,.12) 0 2px,transparent 2px 11px);border:1px solid rgba(255,248,230,.7);pointer-events:none}
.phulkari-halo{position:absolute;width:290px;height:290px;border-radius:50%;border:1px solid rgba(255,248,220,.8);box-shadow:0 0 0 9px rgba(255,245,222,.15),0 0 0 18px rgba(255,245,222,.12),0 0 0 27px rgba(255,245,222,.08);top:16%;left:50%;transform:translateX(-50%);background:radial-gradient(circle,#fff1d8 0 42%,rgba(201,143,150,.18) 43% 62%,transparent 63%)}
.phulkari-motif{position:absolute;color:#8b3449;text-shadow:2px 2px 0 #d8b46d,-2px -2px 0 #f7e6b9;z-index:1;font-size:58px;animation:motifFloat 5s ease-in-out infinite}.motif-one{left:11%;top:18%}.motif-two{right:10%;top:30%;font-size:47px;animation-delay:-2s}
@keyframes motifFloat{50%{transform:translateY(-7px) rotate(8deg)}}
.wedding-duo{position:absolute;left:50%;top:20%;transform:translateX(-50%);height:350px;width:270px;display:flex;align-items:flex-end;justify-content:center;gap:0;z-index:2;filter:drop-shadow(0 15px 15px rgba(81,45,39,.16))}
.duo-groom,.duo-bride{display:block;position:relative;width:130px;height:310px;transform-origin:bottom center;animation:portraitSway 4.5s ease-in-out infinite}.duo-bride{animation-delay:-2s}
.duo-face,.duo-bride-face{position:absolute;top:57px;left:43px;width:45px;height:53px;border-radius:43% 43% 47% 47%;background:#b97959;border:2px solid #895440;z-index:4}
.duo-face:before{content:"";position:absolute;left:5px;right:5px;top:24px;height:20px;border-bottom:7px solid #382c2a;border-radius:0 0 50% 50%}
.duo-face:after,.duo-bride-face:after{content:"•  •";white-space:pre;position:absolute;left:8px;top:14px;color:#382825;font-size:9px;letter-spacing:5px}
.duo-dastaar{position:absolute;top:29px;left:29px;width:72px;height:40px;border:3px solid #e6c779;border-radius:50% 50% 22% 22%;background:repeating-linear-gradient(160deg,#762f43 0 7px,#98465b 7px 11px,#762f43 11px 16px);z-index:5}
.duo-dastaar:before{content:"";position:absolute;left:22px;top:-13px;width:23px;height:22px;border:2px solid #e6c779;border-radius:50%;background:#8c354b}
.duo-dastaar:after{content:"◆";position:absolute;top:1px;left:28px;color:#f3d88d;font-size:12px}
.duo-sherwani{position:absolute;bottom:0;left:9px;width:114px;height:205px;border:2px solid #d6b36b;border-radius:44px 44px 9px 9px;background:linear-gradient(90deg,#5c2739,#8d3d50 45%,#632a3b);z-index:3}
.duo-sherwani:before{content:"";position:absolute;left:53px;top:7px;height:175px;border-left:2px solid #e6c779}
.duo-sherwani:after{content:"✦  ✦  ✦";white-space:pre;position:absolute;left:29px;top:61px;color:#e7c678;font-size:14px;line-height:32px}
.duo-sehra{position:absolute;top:65px;left:44px;color:#f5dfad;z-index:6;font-size:24px}
.duo-chunni{position:absolute;top:20px;left:18px;width:105px;height:150px;border:3px solid #e8c477;border-radius:55% 55% 20% 20%;background:linear-gradient(110deg,rgba(131,40,57,.97),rgba(210,111,119,.93) 55%,rgba(131,40,57,.96));z-index:3;box-shadow:inset 0 0 0 6px rgba(246,216,150,.22)}
.duo-chunni:before{content:"✥  ✿  ✥";position:absolute;left:7px;right:7px;top:16px;text-align:center;color:#f2d78c;font-size:14px;line-height:32px}
.duo-bride-face{top:62px;left:43px;z-index:4;background:#c98969}.duo-bride-face:before{content:"";position:absolute;top:-5px;left:-9px;width:59px;height:65px;border-radius:50% 50% 15% 15%;border:2px solid #e6c779;background:rgba(84,35,43,.22);z-index:-1}
.duo-lehenga{position:absolute;bottom:0;left:0;width:128px;height:177px;border:2px solid #e6c779;border-radius:50px 50px 10px 10px;background:repeating-linear-gradient(90deg,#8c3048 0 10px,#b64d61 10px 14px,#8c3048 14px 22px);z-index:2}
.duo-lehenga:before{content:"✦  ✥  ✦";position:absolute;top:54px;left:15px;color:#f2d48a;font-size:17px;line-height:35px}
.duo-jewels{position:absolute;z-index:7;top:112px;left:55px;color:#f4d78e;font-size:23px;text-shadow:0 2px 4px #632a3b}
@keyframes portraitSway{0%,100%{transform:rotate(-1deg) translateY(0)}50%{transform:rotate(1.2deg) translateY(-4px)}}
.phulkari-label{position:absolute;bottom:65px;z-index:3;font-size:10px;letter-spacing:4px;color:#fff3d6;text-shadow:0 2px 8px #5f3434;font-weight:700}
.art-caption{position:absolute;bottom:36px;z-index:3;font:italic 19px 'Cormorant Garamond',serif;color:#fff7e8;text-shadow:0 2px 8px #5f3434}
.invitation-wording{position:relative;padding:clamp(32px,5vw,64px) clamp(25px,4.5vw,62px);text-align:center;display:flex;flex-direction:column;align-items:center;justify-content:center;background:linear-gradient(180deg,rgba(255,254,249,.96),rgba(250,242,229,.98));}
.invitation-wording:before{content:"";position:absolute;top:0;bottom:0;left:0;width:7px;background:repeating-linear-gradient(180deg,#a13e50 0 8px,#d7b56c 8px 12px,#f4e4bd 12px 20px,#6f8a75 20px 24px)}
.invitation-wording .paper-topline{font-size:9px;letter-spacing:2.2px;color:#9a8055;margin:0 auto 24px}
.invitation-wording .small-caps{color:#8e744c;letter-spacing:3px}
.invitation-wording p{max-width:460px;margin:8px auto;font-size:13px}
.invitation-wording h3{font:600 clamp(27px,3.1vw,38px)/1.05 'Cormorant Garamond',serif;color:#67434d;margin:8px 0}
.invitation-wording .muted{font-size:11px;color:#897578}
.invitation-wording .invitation-sentence{margin:16px auto 10px;max-width:390px;color:#715c5d}
.invitation-wording .weds{margin:13px 0;display:flex;align-items:center;gap:12px;letter-spacing:4px;color:#a38a60}
.invitation-wording .weds:before,.invitation-wording .weds:after{content:"";height:1px;width:35px;background:#c2a36e}
.invitation-wording blockquote{max-width:410px;margin:18px auto 12px;padding:13px 16px;border-top:1px solid rgba(194,163,110,.45);border-bottom:1px solid rgba(194,163,110,.45);font:italic 18px/1.4 'Cormorant Garamond',serif;color:#8d4054}
.invitation-wording .niece-note{font-size:25px;margin:6px auto}
.invitation-wording .paper-bottomline{max-width:300px;margin:17px auto 0;padding-top:12px;border-top:1px solid rgba(194,163,110,.45);font-size:9px;letter-spacing:2px;text-transform:uppercase;color:#a38a60}
.family-signoff{max-width:1080px;margin:26px auto 0;padding:17px 24px;display:flex;align-items:center;justify-content:center;gap:28px;border-top:1px solid rgba(177,139,84,.45);border-bottom:1px solid rgba(177,139,84,.45);background:rgba(255,253,248,.45);text-align:center}
.family-signoff>div{display:flex;flex-direction:column;gap:2px}.signoff-label{font-size:9px;letter-spacing:3px;color:#a38a60}.family-signoff strong{font:600 27px 'Cormorant Garamond',serif;color:#67434d}.family-signoff div span:last-child{font-size:11px;color:#897578}.signoff-flower{font-size:27px;color:#b58a50}

/* Give the ceremony panels more recognisable Punjabi wedding cues and textile detail. */
.event-art{background-color:#f2dfc8;background-image:radial-gradient(circle at 50% 40%,rgba(255,250,233,.98),rgba(230,202,174,.92)),repeating-linear-gradient(45deg,rgba(135,49,68,.08) 0 2px,transparent 2px 13px)}
.event-art:before,.event-art:after{content:"✥";font-size:76px;color:#a63e52;opacity:.3;text-shadow:2px 2px 0 #d7b56c}
.sagan-art{background-image:radial-gradient(circle at 50% 38%,#fff7e6,#e6c7ac 82%),repeating-linear-gradient(45deg,rgba(135,49,68,.07) 0 2px,transparent 2px 12px)}
.sangeet-art{background-image:radial-gradient(circle at 50% 38%,#fff0df,#d9a5a4 83%),repeating-linear-gradient(45deg,rgba(135,49,68,.07) 0 2px,transparent 2px 12px)}
.wedding-art{background-image:radial-gradient(circle at 50% 38%,#fff9e9,#d8c8a7 83%),repeating-linear-gradient(45deg,rgba(135,49,68,.06) 0 2px,transparent 2px 12px)}
.sagan-art:after{content:"✿";font-size:84px;right:12px;bottom:-12px}
.sagan-couple .groom-person .illu-body{background:linear-gradient(90deg,#552338,#963a50,#552338)}
.sagan-couple .bride-person .illu-body{background:repeating-linear-gradient(90deg,#8f2f47 0 8px,#c45b6c 8px 12px,#8f2f47 12px 18px);box-shadow:inset 0 0 0 5px rgba(233,196,118,.25)}
.sagan-couple .illu-turban{background:repeating-linear-gradient(160deg,#67263d 0 6px,#a3485a 6px 10px);box-shadow:inset 0 0 0 2px rgba(247,219,145,.35)}
.sagan-couple .illu-turban:before{content:"◆";display:grid;place-items:center;color:#f3d48a;font-size:10px}
.sagan-couple .illu-dupatta{background:linear-gradient(135deg,#9b2d46,#d16e79 50%,#9b2d46);box-shadow:inset 0 0 0 5px rgba(244,210,133,.25)}
.sagan-phulkari{position:absolute;top:4px;left:0;right:0;text-align:center;letter-spacing:14px;color:#9c3c50;text-shadow:1px 1px #f1d38d;font-size:22px;opacity:.8;animation:sceneTwinkle 4s ease-in-out infinite}
.dance-scene .dancer-one .dance-body{background:repeating-linear-gradient(90deg,#6d263c 0 8px,#a7465a 8px 12px,#6d263c 12px 18px)}
.dance-scene .dancer-three .dance-body{background:repeating-linear-gradient(90deg,#4c6870 0 8px,#789b9b 8px 12px,#4c6870 12px 18px)}
.dance-scene .turban-head:before{background:repeating-linear-gradient(160deg,#70263f 0 5px,#b54a5c 5px 8px,#70263f 8px 12px);box-shadow:inset 0 0 0 2px rgba(245,215,137,.4)}
.dance-scene .lehenga-body{background:repeating-linear-gradient(90deg,#8d2d47 0 7px,#d5a05e 7px 9px,#c66e7b 9px 15px)}
.dhol-prop{position:absolute;right:18px;bottom:39px;font-size:28px;z-index:5;filter:drop-shadow(0 2px 3px #6c394033);animation:dholBounce 1.35s ease-in-out infinite}
.phulkari-sparkles{position:absolute;top:4px;left:0;right:0;text-align:center;color:#9b3b50;letter-spacing:10px;text-shadow:1px 1px #e3bd70;font-size:17px;animation:sceneTwinkle 3s ease-in-out infinite}
@keyframes dholBounce{0%,100%{transform:rotate(-7deg) translateY(0)}50%{transform:rotate(7deg) translateY(-5px)}}
/* Anand Karaj setting: a darbar/palki-inspired backdrop, not a generic mandap. */
.darbar-backdrop{position:absolute;top:3px;left:50%;transform:translateX(-50%);width:230px;height:150px;border:7px solid rgba(194,163,110,.68);border-bottom:0;border-radius:115px 115px 0 0;background:linear-gradient(180deg,rgba(255,255,255,.6),rgba(243,223,185,.22));box-shadow:inset 0 0 0 6px rgba(255,255,255,.24)}
.darbar-backdrop>span{position:absolute;top:11px;left:0;right:0;text-align:center;color:#9a8055;font-size:24px}
.darbar-canopy{position:absolute;top:43px;left:15px;right:15px;height:12px;border-radius:50%;background:repeating-linear-gradient(90deg,#9a3d50 0 10px,#e2bd70 10px 14px,#fff1ce 14px 19px)}
.rumala{position:absolute;top:58px;left:50%;transform:translateX(-50%);width:92px;height:27px;border:2px solid #d8b56c;background:repeating-linear-gradient(135deg,#7d2e46 0 7px,#b94e61 7px 11px);border-radius:5px 5px 1px 1px}
.palki-base{position:absolute;top:87px;left:50%;transform:translateX(-50%);width:130px;height:11px;background:linear-gradient(#d6b66f,#9b7447);border-radius:3px;box-shadow:0 7px 0 -2px #9b7447}
.chaur-mark{position:absolute;top:51px;right:18px;color:#b0925b;font-size:24px;transform:rotate(-35deg)}
.seated-couple{bottom:26px;gap:4px}
.seated-person{animation:gentleSway 5s ease-in-out infinite}
.seated-groom .seated-torso{background:repeating-linear-gradient(90deg,#5c2639 0 8px,#a34456 8px 11px,#5c2639 11px 17px)}
.seated-bride .seated-torso{background:repeating-linear-gradient(90deg,#8e2d47 0 7px,#d2a05f 7px 9px,#c56b79 9px 15px)}
.laavan-palla{position:absolute;z-index:4;left:calc(50% - 7px);top:45px;width:16px;height:90px;border-radius:50% 50% 4px 4px;background:linear-gradient(90deg,#a83e53,#f1d18a,#a83e53);transform:rotate(-15deg);transform-origin:top center;animation:pallaSway 4s ease-in-out infinite;opacity:.88}
@keyframes pallaSway{0%,100%{transform:rotate(-15deg)}50%{transform:rotate(-9deg)}}
@media(max-width:760px){.invitation{padding-left:16px;padding-right:16px}.invitation-spread{grid-template-columns:1fr}.invitation-art{min-height:440px;border-right:0;border-bottom:1px solid rgba(177,139,84,.45)}.phulkari-halo{top:12%;width:255px;height:255px}.wedding-duo{top:11%;transform:translateX(-50%) scale(.88);transform-origin:top center}.invitation-wording{padding:40px 26px}.invitation-wording:before{top:0;bottom:auto;left:0;right:0;width:auto;height:6px;background:repeating-linear-gradient(90deg,#a13e50 0 8px,#d7b56c 8px 12px,#f4e4bd 12px 20px,#6f8a75 20px 24px)}.family-signoff{gap:14px;padding:16px 8px}.family-signoff strong{font-size:24px}.invitation-intro{font-size:19px}}
@media(max-width:420px){.invitation-art{min-height:390px}.wedding-duo{transform:translateX(-50%) scale(.78)}.phulkari-motif{font-size:40px}.invitation-wording{padding:35px 20px}.invitation-wording .paper-topline{letter-spacing:1.4px;font-size:8px}.family-signoff strong{font-size:21px}.signoff-flower{font-size:20px}}


/* Sukhmani Sahib Path event: serene ivory, saffron and muted-gold devotional styling */
.path-art{background:radial-gradient(circle at 50% 42%,#fffdf6 0,#f6e9d3 58%,#e8d1ad 100%);}
.path-art:before,.path-art:after{content:"✥";color:#a67b37;opacity:.24;font-size:86px;}
.path-scene{position:relative;width:min(82%,290px);height:220px;display:flex;align-items:center;justify-content:center;overflow:hidden;border:1px solid rgba(166,123,55,.36);border-radius:48% 48% 18px 18px;background:linear-gradient(180deg,rgba(255,255,250,.94),rgba(249,235,208,.86));box-shadow:inset 0 0 0 7px rgba(255,255,255,.5),0 12px 28px rgba(100,68,33,.08);}
.path-arch{position:absolute;inset:17px 25px 24px;border:2px solid rgba(166,123,55,.55);border-bottom:0;border-radius:150px 150px 0 0;}
.path-arch:before,.path-arch:after{content:"✿";position:absolute;color:#a74a56;font-size:22px;opacity:.8;top:35px;}
.path-arch:before{left:-10px}.path-arch:after{right:-10px}
.path-ik-onkar{font-family:serif;font-size:64px;color:#8e6530;text-shadow:0 2px 0 #fff;transform:translateY(-8px);animation:pathGlow 3.8s ease-in-out infinite;}
.path-lotus{position:absolute;bottom:30px;font-size:27px;color:#a74a56;opacity:.82;}
.path-spark{position:absolute;color:#b28a43;animation:pathTwinkle 3s ease-in-out infinite;}
.path-spark-a{top:42px;left:58px;font-size:19px}.path-spark-b{top:69px;right:55px;font-size:22px;animation-delay:1.1s}
.path-scene-caption{position:absolute;bottom:7px;left:0;right:0;text-align:center;font-size:9px;letter-spacing:2px;text-transform:uppercase;color:#75572f;}
@keyframes pathGlow{0%,100%{opacity:.85;transform:translateY(-8px) scale(1)}50%{opacity:1;transform:translateY(-8px) scale(1.04)}}
@keyframes pathTwinkle{0%,100%{opacity:.4;transform:scale(.88)}50%{opacity:1;transform:scale(1.12)}}
@media(max-width:700px){.path-scene{height:190px;width:min(78%,270px)}.path-ik-onkar{font-size:56px}.path-spark-a{left:40px}.path-spark-b{right:38px}}
@media(prefers-reduced-motion:reduce){.path-ik-onkar,.path-spark{animation:none}}

/* Refinements requested: keep the couple illustration as a soft invitation background,
   and place the Sukhmani Sahib artwork on the right side of its event card. */
.invitation-spread{
  display:block;
  position:relative;
  isolation:isolate;
  overflow:hidden;
  border:1px solid rgba(177,139,84,.45);
  border-radius:22px;
  background:linear-gradient(135deg,rgba(255,250,243,.97),rgba(255,247,236,.93));
  box-shadow:0 18px 45px rgba(83,49,39,.08);
}
.invitation-art{
  position:absolute;
  inset:0;
  z-index:-1;
  min-height:0;
  height:100%;
  width:100%;
  border:0!important;
  background:radial-gradient(ellipse at 86% 48%,rgba(214,185,146,.18),transparent 38%),linear-gradient(135deg,rgba(255,249,241,.2),rgba(255,249,241,.7));
  overflow:hidden;
}
.invitation-art .phulkari-halo{left:auto;right:3%;top:12%;width:310px;height:310px;opacity:.2;}
.invitation-art .phulkari-motif{opacity:.18;}
.invitation-art .wedding-duo{
  left:auto;right:-5px;top:auto;bottom:-62px;
  transform:scale(.58);transform-origin:bottom right;
  opacity:.20;filter:grayscale(.15) drop-shadow(0 8px 10px rgba(81,45,39,.08));
}
.invitation-art .phulkari-label,.invitation-art .art-caption{display:none;}
.invitation-wording{
  position:relative;
  z-index:1;
  width:min(100%,850px);
  margin:0 auto;
  padding:clamp(30px,5vw,58px) clamp(22px,5vw,64px);
  background:rgba(255,251,245,.78);
  border:0;
  box-shadow:none;
  backdrop-filter:blur(1.5px);
}
.invitation-wording:before{opacity:.7;}
.path-card .event-art{order:2;}
.path-card .event-copy{order:1;}
@media(max-width:760px){
  .invitation-spread{min-height:0;}
  .invitation-art{display:block;min-height:0;height:100%;border:0!important;}
  .invitation-art .phulkari-halo{right:-95px;top:16%;width:235px;height:235px;}
  .invitation-art .wedding-duo{right:-70px;bottom:-42px;transform:scale(.42);opacity:.14;}
  .invitation-wording{padding:34px 23px;background:rgba(255,251,245,.84);}
  .path-card .event-art{order:2;}
  .path-card .event-copy{order:1;}
}
@media(max-width:420px){
  .invitation-wording{padding:30px 18px;}
  .invitation-wording h3{font-size:25px;}
}


/* Final phone refinements: full invitation background movement and polished directions links. */
.invitation-spread {
  position: relative;
  isolation: isolate;
}
.invitation-spread::after {
  content: "";
  position: absolute;
  inset: 0;
  z-index: 0;
  pointer-events: none;
  opacity: .42;
  background:
    radial-gradient(circle at 16% 24%, rgba(201,143,150,.22) 0 2px, transparent 3px),
    radial-gradient(circle at 76% 66%, rgba(168,176,154,.24) 0 3px, transparent 4px),
    radial-gradient(circle at 44% 82%, rgba(215,190,145,.32) 0 2px, transparent 3px),
    repeating-radial-gradient(ellipse at 88% 22%, transparent 0 30px, rgba(183,154,98,.12) 31px 32px, transparent 33px 58px);
  background-size: 180px 180px, 220px 220px, 160px 160px, 100% 100%;
  animation: invitationBackdropDrift 24s ease-in-out infinite alternate;
}
.invitation-art {
  z-index: 0;
  background-size: 150% 150%;
  animation: invitationWashDrift 20s ease-in-out infinite alternate;
}
.invitation-art .phulkari-motif {
  animation: motifFloat 8s ease-in-out infinite;
}
.invitation-art .motif-two { animation-delay: -3s; }
.invitation-wording {
  z-index: 2;
  background: rgba(255,251,245,.80);
}
.invitation-wording > * { position: relative; z-index: 1; }
@keyframes invitationBackdropDrift {
  from { background-position: 0 0, 100% 100%, 40% 20%, 0 0; transform: translateY(0); }
  to { background-position: 80px 50px, 30% 20%, 70% 90%, 18px 25px; transform: translateY(-3px); }
}
@keyframes invitationWashDrift {
  from { background-position: 0% 30%; }
  to { background-position: 100% 70%; }
}
@keyframes motifFloat {
  0%, 100% { transform: translateY(0) rotate(0deg); }
  50% { transform: translateY(-12px) rotate(8deg); }
}
.venue-card a.map-link {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 9px;
  margin-top: 8px;
  padding: 11px 18px;
  border: 1px solid rgba(179,138,76,.55);
  border-radius: 999px;
  background: linear-gradient(135deg, #762f43, #8d4054);
  color: #fffaf2;
  text-decoration: none;
  font-size: 11px;
  font-weight: 700;
  letter-spacing: .35px;
  box-shadow: 0 6px 16px rgba(89,42,54,.14);
  transition: transform .2s ease, box-shadow .2s ease, background .2s ease;
}
.venue-card a.map-link span {
  font-size: 14px;
  transition: transform .2s ease;
}
.venue-card a.map-link:hover,
.venue-card a.map-link:focus-visible {
  color: #fffaf2;
  transform: translateY(-2px);
  box-shadow: 0 9px 22px rgba(89,42,54,.22);
  outline: 2px solid rgba(179,138,76,.5);
  outline-offset: 3px;
}
.venue-card a.map-link:hover span { transform: translate(2px,-2px); }
@media(max-width:760px) {
  /* Keep all ceremony artwork before its details on phones, including Sukhmani Sahib Path. */
  .path-card .event-art { order: 0; }
  .path-card .event-copy { order: 1; }
  .invitation-art .wedding-duo { opacity: .16; }
  .invitation-wording { background: rgba(255,251,245,.78); }
}
@media(prefers-reduced-motion:reduce) {
  .invitation-spread::after, .invitation-art, .invitation-art .phulkari-motif { animation: none !important; }
}


/* Corrected family-invitation artwork: the couple is a large, soft watermark,
   not a small character tucked into the bottom-right corner. The texture drifts
   across the entire invitation section behind all copy. */
.invitation {
  position: relative;
  isolation: isolate;
  overflow: hidden;
  background: linear-gradient(145deg, #fffaf3 0%, #fbf1e8 48%, #f8eee5 100%);
}
.invitation::before {
  content: "";
  position: absolute;
  inset: -8%;
  z-index: 0;
  pointer-events: none;
  opacity: .8;
  background:
    radial-gradient(ellipse at 14% 18%, rgba(201,143,150,.19), transparent 31%),
    radial-gradient(ellipse at 84% 40%, rgba(215,190,145,.22), transparent 34%),
    radial-gradient(ellipse at 28% 84%, rgba(168,176,154,.18), transparent 30%),
    repeating-radial-gradient(ellipse at 72% 42%, transparent 0 34px, rgba(157,121,68,.095) 35px 36px, transparent 37px 66px);
  background-size: 120% 120%, 125% 125%, 120% 120%, 100% 100%;
  animation: fullInvitationDrift 26s ease-in-out infinite alternate;
}
.invitation > * { position: relative; z-index: 1; }
.invitation .invitation-spread {
  background: rgba(255,251,245,.56);
  border-color: rgba(177,139,84,.38);
  box-shadow: 0 18px 45px rgba(83,49,39,.07);
}
.invitation .invitation-art {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  min-height: 100%;
  z-index: 0;
  border: 0 !important;
  overflow: hidden;
  background:
    radial-gradient(ellipse at 50% 50%, rgba(214,185,146,.15), transparent 60%),
    linear-gradient(125deg, rgba(255,249,241,.04), rgba(255,249,241,.22));
  animation: invitationArtDrift 19s ease-in-out infinite alternate;
}
.invitation .invitation-art .phulkari-halo {
  left: 50%; right: auto; top: 50%;
  width: min(70vw, 540px); height: min(70vw, 540px);
  transform: translate(-50%,-50%);
  opacity: .22;
}
.invitation .invitation-art .phulkari-motif {
  opacity: .25;
  animation: motifFloat 8s ease-in-out infinite;
}
.invitation .invitation-art .motif-one { left: 12%; top: 18%; }
.invitation .invitation-art .motif-two { right: 12%; left: auto; top: 66%; animation-delay: -3s; }
.invitation .invitation-art .wedding-duo {
  left: 50%; right: auto; top: 50%; bottom: auto;
  width: 270px; height: 350px;
  transform: translate(-50%,-50%) scale(1.22);
  transform-origin: center center;
  opacity: .13;
  filter: grayscale(.08) drop-shadow(0 8px 12px rgba(81,45,39,.07));
  animation: coupleWatermarkFloat 11s ease-in-out infinite alternate;
}
.invitation .invitation-art .phulkari-label,
.invitation .invitation-art .art-caption { display: none; }
.invitation .invitation-wording {
  position: relative;
  z-index: 2;
  background: rgba(255,251,245,.70);
  backdrop-filter: blur(1.2px);
}
.invitation .invitation-spread::after {
  z-index: 1;
  opacity: .3;
}
@keyframes fullInvitationDrift {
  from { transform: translate3d(-1%,0,0); background-position: 0 0, 100% 20%, 20% 100%, 0 0; }
  to { transform: translate3d(1%,-1%,0); background-position: 80px 45px, 15% 85%, 85% 10%, 25px -18px; }
}
@keyframes invitationArtDrift {
  from { background-position: 0% 40%, 0% 0%; }
  to { background-position: 100% 60%, 100% 100%; }
}
@keyframes coupleWatermarkFloat {
  from { transform: translate(-50%,-50%) scale(1.18) translateY(0); }
  to { transform: translate(-50%,-50%) scale(1.26) translateY(-8px); }
}
@media (max-width: 760px) {
  .invitation .invitation-spread { min-height: 0; }
  .invitation .invitation-art { display: block; min-height: 100%; height: 100%; }
  .invitation .invitation-art .phulkari-halo { width: 340px; height: 340px; }
  .invitation .invitation-art .wedding-duo {
    left: 50%; right: auto; top: 48%; bottom: auto;
    transform: translate(-50%,-50%) scale(.98);
    opacity: .115;
  }
  .invitation .invitation-wording { background: rgba(255,251,245,.69); }
}
@media (max-width: 420px) {
  .invitation .invitation-art .wedding-duo { transform: translate(-50%,-50%) scale(.84); }
  .invitation .invitation-wording { background: rgba(255,251,245,.73); }
}
@media (prefers-reduced-motion: reduce) {
  .invitation::before, .invitation .invitation-art, .invitation .invitation-art .wedding-duo,
  .invitation .invitation-art .phulkari-motif { animation: none !important; }
}


/* Stronger, more colourful couple illustration on the invitation spread. */
.invitation .invitation-art .wedding-duo {
  opacity: .34;
  filter: saturate(1.18) contrast(1.04) drop-shadow(0 5px 7px rgba(81,45,39,.05));
}
@keyframes coupleWatermarkFloat {
  from { transform: translate(-50%,-50%) scale(1.18) translateY(0); }
  to { transform: translate(-50%,-50%) scale(1.23) translateY(-5px); }
}
@media (max-width: 760px) {
  .invitation .invitation-art .wedding-duo { opacity: .29; }
}
@media (max-width: 420px) {
  .invitation .invitation-art .wedding-duo { opacity: .27; }
}


/* Automatic memories slideshow: hide manual left/right arrow controls. */
.gallery-arrow, .gallery-prev, .gallery-next { display: none !important; }
.gallery-shell { gap: 0; }


/* Memories is automatic-only: block horizontal touch/drag navigation and hide all manual indicators. */
.photo-gallery {
  overflow-x: hidden !important;
  touch-action: pan-y !important;
  overscroll-behavior-x: none !important;
  -webkit-overflow-scrolling: auto;
  user-select: none;
  -webkit-user-select: none;
}
.photo-gallery .photo-frame { pointer-events: none; }
.gallery-dots, .gallery-arrow, .gallery-prev, .gallery-next { display: none !important; }


/* USER-PROVIDED BACKGROUND IMAGES
   Keep the artwork behind the existing design; translucent overlays soften it. */
.scratch-section {
  position: relative;
  isolation: isolate;
  background: #f8e9e1;
}
.scratch-section::before {
  content: "";
  position: absolute;
  inset: -5px;
  z-index: -1;
  pointer-events: none;
  background: url('backgrounds/countdown-bg.jpeg') center / cover no-repeat;
  filter: blur(3px);
  opacity: .58;
  transform: scale(1.015);
  transition: opacity 1.1s ease;
}
.scratch-section::after {
  content: "";
  position: absolute;
  inset: 0;
  z-index: -1;
  pointer-events: none;
  background: linear-gradient(rgba(255,248,242,.70), rgba(255,248,242,.78));
  transition: opacity 1.1s ease;
}
.scratch-section > * { position: relative; z-index: 1; }
/* The same background remains during the scratch/countdown stage, then fades on reveal. */
body.invitation-open .scratch-section::before,
body.invitation-open .scratch-section::after { opacity: 0; }
.scratch-section .eyebrow,
.scratch-section h2,
.scratch-section #scratchInstruction,
.scratch-section #countdownMessage,
.scratch-section .gate-footnote {
  color: #35272a;
  text-shadow: 0 1px 2px rgba(255, 255, 255, .55);
}
.scratch-section .countdown div {
  background: rgba(255, 253, 249, .91);
  border-color: rgba(113, 73, 64, .28);
  box-shadow: 0 5px 16px rgba(47, 31, 29, .08);
}
.scratch-section .countdown strong { color: #38262a; }
.scratch-section .countdown span { color: #514044; }

/* Optional second-page background: leave the file optional until one is chosen. */
.hero {
  background-color: #fff9f2;
  background-image: linear-gradient(rgba(255,248,242,.78), rgba(255,248,242,.84)), url('backgrounds/couple-hero-bg.jpeg');
  background-size: cover;
  background-position: center;
  background-repeat: no-repeat;
}
/* Family invitation illustration sits well behind the paper and existing content. */
.invitation {
  background-color: #fff9f2;
  background-image: linear-gradient(rgba(255,248,242,.70), rgba(255,248,242,.78)), url('backgrounds/family-invitation-bg.jpeg');
  background-size: cover;
  background-position: center;
  background-repeat: no-repeat;
}

/* Celebration MP4s sit over the original CSS illustrations. If a video is missing,
   the existing illustration remains as a graceful fallback. */
.event-art { isolation: isolate; }
.event-art .event-video {
  position: absolute;
  inset: 0;
  z-index: 2;
  display: block;
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: center;
  background: transparent;
}
.event-art > :not(.event-video) { position: relative; z-index: 1; }
.event-art .event-label { z-index: 3; }
.event-art:before, .event-art:after { z-index: 2; pointer-events: none; }
/* Keep all section headings aligned consistently. */
section > .eyebrow, section > h2 { text-align: center; }
section > .eyebrow { width: 100%; }


/* Clean circular portrait: use the already-masked transparent PNG as-is. */
.couple-art.hero-real-photo {
  width: min(88vw, 410px);
  height: auto;
  aspect-ratio: 1 / 1;
  padding: 0;
  border: 0;
  border-radius: 0;
  overflow: visible;
  background: transparent;
  box-shadow: none;
}
.couple-art.hero-real-photo img {
  width: 100%;
  height: 100%;
  object-fit: contain;
  object-position: center;
  border-radius: 0;
}
@media (max-width: 700px) {
  .couple-art.hero-real-photo {
    width: min(88vw, 350px);
    height: auto;
  }
}
@media (max-width: 380px) {
  .couple-art.hero-real-photo {
    width: min(88vw, 300px);
    height: auto;
  }
}


/* HARD FIX: background layers must paint ABOVE the section background, below its content.
   Keep this block last so earlier theme rules cannot override the supplied images. */
.scratch-section.scratch-gate {
  background: transparent !important;
  isolation: isolate;
}
.scratch-section.scratch-gate::before {
  content: "";
  position: absolute;
  inset: -8px;
  z-index: 0;
  pointer-events: none;
  background-image: url("backgrounds/countdown-bg.jpeg");
  background-size: cover;
  background-position: center center;
  background-repeat: no-repeat;
  filter: blur(4px);
  opacity: .62;
  transform: scale(1.02);
  transition: opacity 1.1s ease;
}
.scratch-section.scratch-gate::after {
  content: "";
  position: absolute;
  inset: 0;
  z-index: 0;
  pointer-events: none;
  background: linear-gradient(rgba(255,248,242,.68), rgba(255,248,242,.76));
  transition: opacity 1.1s ease;
}
.scratch-section.scratch-gate > * {
  position: relative;
  z-index: 1;
}
body.invitation-open .scratch-section.scratch-gate::before,
body.invitation-open .scratch-section.scratch-gate::after { opacity: 0; }

/* Last-rule override: the family's image stays behind the existing invitation artwork and paper. */
section.invitation {
  background-image: linear-gradient(rgba(255,248,242,.68), rgba(255,248,242,.76)), url("backgrounds/family-invitation-bg.jpeg") !important;
  background-size: cover !important;
  background-position: center center !important;
  background-repeat: no-repeat !important;
}

/* CSS-ONLY WEDDING ATMOSPHERE — no raster background files, so nothing can pixelate.
   Existing illustration, scratch card, text, countdown and buttons stay in front. */
.scratch-section.scratch-gate {
  background: linear-gradient(135deg,#fffaf4 0%,#f8eee5 46%,#f4e0d5 100%) !important;
  isolation: isolate;
  overflow: hidden;
}
.scratch-section.scratch-gate::before {
  content: "";
  position: absolute;
  inset: -12%;
  z-index: 0;
  pointer-events: none;
  filter: blur(1px);
  opacity: .9;
  background:
    radial-gradient(ellipse at 15% 20%,rgba(225,177,103,.27) 0,transparent 26%),
    radial-gradient(ellipse at 84% 24%,rgba(190,119,132,.20) 0,transparent 28%),
    radial-gradient(ellipse at 78% 82%,rgba(177,160,119,.22) 0,transparent 27%),
    radial-gradient(ellipse at 20% 85%,rgba(222,173,137,.22) 0,transparent 30%),
    repeating-radial-gradient(circle at 50% 50%,transparent 0 33px,rgba(177,139,84,.055) 34px 35px,transparent 36px 67px);
  animation: weddingGlowDrift 24s ease-in-out infinite alternate;
  transition: opacity 1.1s ease;
}
.scratch-section.scratch-gate::after {
  content: "✦     ❀        ✧          ❀     ✦";
  position: absolute;
  inset: 0;
  z-index: 0;
  pointer-events: none;
  display: flex;
  align-items: flex-start;
  justify-content: space-around;
  padding-top: 8vh;
  color: rgba(173,126,66,.25);
  font-size: clamp(22px,4vw,43px);
  letter-spacing: clamp(10px,8vw,100px);
  text-shadow: 0 0 20px rgba(223,183,111,.3);
  background:
    radial-gradient(circle at 8% 28%,rgba(255,255,255,.8) 0 2px,transparent 3px),
    radial-gradient(circle at 92% 38%,rgba(255,255,255,.85) 0 2px,transparent 3px),
    radial-gradient(circle at 14% 76%,rgba(198,151,82,.35) 0 2px,transparent 3px),
    radial-gradient(circle at 88% 78%,rgba(198,151,82,.3) 0 2px,transparent 3px);
  animation: weddingSparkle 8s ease-in-out infinite alternate;
  transition: opacity 1.1s ease;
}
.scratch-section.scratch-gate > * { position: relative; z-index: 1; }
.scratch-section.scratch-gate .gate-ornament { z-index: 1; }
body.invitation-open .scratch-section.scratch-gate::before,
body.invitation-open .scratch-section.scratch-gate::after { opacity: 0; }

/* Family invitation: animated phulkari-inspired colour washes and fine gold ornament.
   No background image is loaded here; the existing couple watermark remains untouched. */
section.invitation {
  background-color: #fff9f2 !important;
  background-image:
    radial-gradient(ellipse at 5% 15%,rgba(199,139,147,.19),transparent 31%),
    radial-gradient(ellipse at 92% 25%,rgba(224,185,109,.22),transparent 29%),
    radial-gradient(ellipse at 20% 88%,rgba(149,171,147,.20),transparent 32%),
    radial-gradient(ellipse at 82% 83%,rgba(201,151,110,.16),transparent 30%),
    linear-gradient(135deg,#fffaf3 0%,#f8efe5 52%,#fff8f0 100%) !important;
  background-size: 150% 150%,150% 150%,150% 150%,150% 150%,100% 100% !important;
  animation: familyColorDrift 28s ease-in-out infinite alternate;
}
section.invitation::before {
  opacity: .8;
  background:
    radial-gradient(ellipse at 14% 18%,rgba(201,143,150,.18),transparent 31%),
    radial-gradient(ellipse at 84% 40%,rgba(215,190,145,.21),transparent 34%),
    radial-gradient(ellipse at 28% 84%,rgba(168,176,154,.17),transparent 30%),
    repeating-radial-gradient(ellipse at 72% 42%,transparent 0 34px,rgba(157,121,68,.08) 35px 36px,transparent 37px 66px);
  animation: fullInvitationDrift 26s ease-in-out infinite alternate;
}
@keyframes weddingGlowDrift {
  from { transform: translate3d(-1.5%,0,0) scale(1); background-position: 0 0,100% 0,100% 100%,0 100%,0 0; }
  to { transform: translate3d(1.5%,-1%,0) scale(1.035); background-position: 80px 40px,0 70px,40px -30px,70px 0,25px -18px; }
}
@keyframes weddingSparkle { from { opacity:.55; transform:translateY(0); } to { opacity:1; transform:translateY(-7px); } }
@keyframes familyColorDrift {
  from { background-position: 0 0,100% 0,0 100%,100% 100%,0 0; }
  to { background-position: 80px 35px,10% 80%,80% 10%,20% 75%,0 0; }
}
@media (prefers-reduced-motion: reduce) {
  .scratch-section.scratch-gate::before,.scratch-section.scratch-gate::after,section.invitation,section.invitation::before { animation: none !important; }
}


/* LIGHTWEIGHT SAGE + DEEP TEAL WEDDING THEME — static gradients keep scrolling smooth. */
:root{--cream:#f5f7f0;--paper:#fffefa;--rose:#b96f56;--deep:#254f49;--gold:#b58b52;--ink:#2e403b;--muted:#718078;--line:#d8e1d7;--sage:#8b9e83}
body{background:#f5f7f0;color:#2e403b}
.topbar{background:rgba(247,249,243,.97);border-bottom-color:#dbe4da;backdrop-filter:none}
.brand,.hero h1,.section h2,.closing h2,.invitation-paper h3,.event-copy h3,.venue-card h3,.countdown strong{color:#254f49}
h1 span,.closing h2 span,.script,.family-note blockquote{color:#b96f56}
.hero{background:linear-gradient(145deg,#f7f9f3,#e5eee5 58%,#f3eee2)}
.hero:before,.hero:after{color:#8fa992;opacity:.22}
.hero-ornament,.eyebrow,.ornament,.small-caps,.weds{color:#9b7b48}
.date-ribbon{border-color:#b58b52;color:#254f49}
.button-gold{background:#28554e;color:#fff}
.invitation-paper,.event-card,.venue-card,.rsvp-form{border-color:#d8e1d7}
.invitation-paper{outline-color:#f5f7f0;background:#fffefa}
.scratch-section.scratch-gate{background:linear-gradient(135deg,#f4f7ef,#e2ede4 55%,#f4eee1)!important}
.scratch-section.scratch-gate::before{inset:0;filter:none;opacity:1;animation:none;background:radial-gradient(ellipse at 12% 18%,rgba(120,157,130,.22),transparent 32%),radial-gradient(ellipse at 88% 24%,rgba(194,132,103,.16),transparent 30%),radial-gradient(ellipse at 78% 84%,rgba(204,181,125,.18),transparent 30%),radial-gradient(ellipse at 20% 85%,rgba(125,163,151,.18),transparent 31%)}
.scratch-section.scratch-gate::after{content:"❧     ✿       ❧       ✿     ❧";color:rgba(50,96,82,.23);text-shadow:none;animation:none;background:radial-gradient(circle at 8% 28%,rgba(255,255,255,.65) 0 2px,transparent 3px),radial-gradient(circle at 92% 38%,rgba(255,255,255,.65) 0 2px,transparent 3px)}
.scratch-wrap{border-color:#fffefa;background:#fffefa;box-shadow:0 8px 22px rgba(40,74,60,.10)}
.scratch-under{background:linear-gradient(145deg,#fffefa,#edf3e9)}
.countdown div{background:#fffefa;border-color:#d5e1d5}
section.invitation{background:radial-gradient(ellipse at 8% 14%,rgba(133,166,137,.18),transparent 34%),radial-gradient(ellipse at 92% 76%,rgba(198,144,110,.14),transparent 32%),linear-gradient(135deg,#f7f8f1,#e9f0e7 52%,#f8f3e8)!important;animation:none!important}
section.invitation::before{opacity:.45;animation:none!important;background:repeating-radial-gradient(ellipse at 72% 42%,transparent 0 42px,rgba(56,101,83,.045) 43px 44px,transparent 45px 82px)}
.closing{background:linear-gradient(180deg,#edf3e9,#e1ece3)}
footer{background:#f7f9f3}
.petal{position:absolute;top:-24px;left:var(--x);color:var(--petal-color,#c47c65);opacity:.65;will-change:transform;animation:petalFall var(--duration,11s) linear forwards}
@keyframes petalFall{0%{transform:translate3d(0,-4vh,0) rotate(0deg);opacity:0}8%{opacity:.65}50%{transform:translate3d(28px,52vh,0) rotate(180deg)}92%{opacity:.45}100%{transform:translate3d(-18px,108vh,0) rotate(340deg);opacity:0}}
@media(prefers-reduced-motion:reduce){.scratch-section.scratch-gate::before,.scratch-section.scratch-gate::after,section.invitation,section.invitation::before{animation:none!important}}


/* DARKER SAGE + DEEP TEAL PALETTE ONLY — layout, content, scratch card, countdown and animations remain unchanged. */
body{background:#172d2b;color:#eee9dc}
.topbar{background:rgba(18,43,41,.96);border-bottom-color:#405953}
.brand, .menu-toggle{color:#d9dfcb}
nav a{color:#d3d8c9}
.nav-rsvp{border-color:#8d9c80;color:#eee9dc}
.hero{background:radial-gradient(ellipse at 50% 36%,#304944 0,#1d3935 55%,#142a29 100%);color:#f2eee3}
.hero:before,.hero:after{opacity:.45}
section,.section,.event-card,.memory-card,.venue-card,.rsvp-card,.family-card,.function-card{color:#eee9dc}
.card,.event-card,.memory-card,.venue-card,.rsvp-card,.family-card,.function-card,.paper-card{background:#203b37;border-color:#405953}
input,textarea,select{background:#172d2b;color:#f0ecdf;border-color:#526b60}
button,.button,.btn{background:#748b76;color:#102a2a;border-color:#9aab8d}
footer,.closing{background:#102a2a;color:#eee9dc}


/* FINAL READABILITY + MODERN TYPE PASS — colour contrast and typography only */
:root {
  --cream:#173b36;
  --paper:#214b44;
  --rose:#b9c9ad;
  --deep:#173b36;
  --gold:#d9b66f;
  --ink:#f7f3e8;
  --muted:#d0d9cd;
  --line:#54756b;
  --sage:#9eb49a;
}
body { font-family:'Manrope','DM Sans',sans-serif; color:#f5f2e8; background:#173b36; }
h1,h2,h3,.brand,.countdown strong,.scratch-under strong { font-family:'Playfair Display','Cormorant Garamond',serif; }
.script,.closing .script,.invitation-wording .niece-note { font-family:'Great Vibes',cursive; }
/* Dark green hero: keep the couple's names clearly gold, never green-on-green. */
.hero { background:radial-gradient(ellipse at 50% 34%,#2b5750 0%,#1c443e 58%,#14332f 100%); color:#f7f2e5; }
.hero h1,.hero h1 em,.hero h1 span { color:#e0bd72 !important; text-shadow:0 2px 18px rgba(0,0,0,.22); }
.hero .eyebrow,.hero-sub,.hero-bottom { color:#e2e8dc; }
.hero .script { color:#e0bd72; }
.hero .date-ribbon { color:#f3dfad; border-color:#d9b66f; }
.hero-ornament,.ornament { color:#e0bd72; }
.section { color:#f4f1e7; }
.section h2,.closing h2 { color:#f0d08a; }
.section > .center,.center,.invitation-intro,.moments-section > p:not(.eyebrow),.photo-note,.map-note { color:#e0e8dd; }
.eyebrow { color:#e0bd72 !important; }
/* Scratch gate remains intact; high contrast around the scratch card. */
.scratch-section { background:radial-gradient(ellipse at top,#2b5750,#173b36 68%); color:#f7f2e7; }
.scratch-section h2 { color:#f0d08a; }
.scratch-section .center,.scratch-section .gate-footnote { color:#e4e9df; }
.scratch-wrap { border-color:#e0bd72; }
.scratch-under { background:radial-gradient(circle,#fffdf7,#f2e6cd); }
.scratch-under .script { color:#8c6b37; }
.scratch-under strong { color:#183c36; }
.scratch-under span:last-child { color:#765b2c; }
.countdown div { background:#f7f3e8; border-color:#d9b66f; }
.countdown strong { color:#173b36; }
.countdown span { color:#4f6257; }
/* The invitation wording is intentionally light paper, with dark readable ink. */
.invitation-wording { background:linear-gradient(180deg,#fffdf6,#f4efdf) !important; color:#243e36 !important; opacity:1 !important; }
.invitation-wording p,.invitation-wording .muted,.invitation-wording .invitation-sentence { color:#344b41 !important; opacity:1 !important; text-shadow:none !important; }
.invitation-wording h3 { color:#9a7437 !important; }
.invitation-wording .paper-topline,.invitation-wording .small-caps,.invitation-wording .paper-bottomline { color:#86632c !important; }
.invitation-wording blockquote { color:#7a4d38 !important; }
.invitation-wording .niece-note { color:#8b6533 !important; }
.invitation-wording .family-journey,.invitation-wording p.family-journey { color:#243e36 !important; font-weight:600; font-size:14px; line-height:1.75; max-width:440px; margin:15px auto; opacity:1 !important; text-shadow:none !important; position:relative; z-index:4; }
.family-signoff { color:#f7f2e7; }
.family-signoff strong { color:#f0d08a !important; }
.family-signoff .signoff-label { color:#d9b66f !important; }
/* Cards on the dark theme: explicit foreground colours for readable contrast. */
.event-card,.venue-card,.rsvp-form { background:#21463f; border-color:#58766b; color:#f3f0e5; }
.event-copy h3,.venue-card h3 { color:#f0d08a !important; }
.event-copy p,.event-copy .muted,.venue-card p,.schedule-row { color:#e5e9df !important; }
.schedule-row { border-bottom-color:#58766b; }
.schedule-row strong,.venue-name { color:#f0d08a !important; }
.event-copy blockquote { color:#e2c486 !important; }
.event-art { background:#102d29 !important; }
.event-art:before,.event-art:after { display:none !important; }
.event-art .event-video { position:absolute; inset:0; width:100%; height:100%; object-fit:cover; z-index:1; }
.event-art .event-label { position:absolute; z-index:2; bottom:14px; left:12px; right:12px; text-align:center; padding:9px 12px; border:1px solid rgba(224,189,114,.65); border-radius:999px; background:rgba(15,43,38,.78); color:#f5dfaa !important; font-family:'Manrope',sans-serif; font-weight:700; letter-spacing:2px; font-size:10px; }
.venue-card a,.map-link { color:#f0d08a !important; }
.map-note,.photo-note { color:#cbd8ce !important; }
.closing { background:linear-gradient(180deg,#21463f,#173b36) !important; color:#f7f2e7; }
.closing h2,.closing h2 span { color:#f0d08a !important; }
.closing > p:not(.script) { color:#e0e8dd !important; }
footer { background:#102d29 !important; color:#d7e0d5 !important; }
footer a { color:#f0d08a !important; }
.topbar { background:rgba(18,48,43,.96) !important; border-bottom-color:#54756b !important; }
.brand,.brand span { color:#f0d08a !important; }
nav a,.menu-toggle { color:#f0eee3 !important; }
nav a:hover { color:#e0bd72 !important; }
.rsvp-form>label,.rsvp-form legend,.check { color:#f0eee3 !important; }
.rsvp-form input:not([type=checkbox]),.rsvp-form select,.rsvp-form textarea { background:#f8f5ea; color:#203c35; border-color:#c7d2c5; }
.form-note,#formFeedback { color:#dce5d9 !important; }
@media(max-width:700px) { nav { background:#173b36 !important; } .event-art { min-height:220px; } }


/* SPECIFIC LEGIBILITY FIXES requested on 25 Oct — high contrast, not pale-on-pale. */
.hero h1,.hero h1 em,.hero h1 span { color:#f2cf78 !important; }
.hero .date-ribbon { color:#ffe8ad !important; border:2px solid #f2cf78 !important; font-weight:800 !important; text-shadow:0 1px 2px rgba(0,0,0,.35); }
.invitation-wording .family-journey,
.invitation-wording p.family-journey {
  color:#17372e !important; font-weight:800 !important; font-size:15px !important;
  line-height:1.8 !important; opacity:1 !important; text-shadow:none !important;
}
.celebrations > h2 { color:#f2cf78 !important; }
.event-card { background:#fffaf0 !important; border-color:#d9bd7b !important; color:#183b32 !important; }
.event-copy,.event-copy p,.event-copy .muted,.event-copy blockquote,
.event-copy .eyebrow,.event-copy .venue-name,
.event-copy .schedule-row,.event-copy .schedule-row span,
.event-copy .schedule-row strong { opacity:1 !important; text-shadow:none !important; }
.event-copy h3 { color:#17483c !important; font-weight:800 !important; }
.event-copy p:not(.eyebrow),.event-copy .muted { color:#263f35 !important; font-weight:600 !important; }
.event-copy .eyebrow { color:#806026 !important; font-weight:800 !important; }
.event-copy .schedule-row { color:#263f35 !important; border-bottom-color:#d8cba9 !important; }
.event-copy .schedule-row span { color:#263f35 !important; font-weight:700 !important; }
.event-copy .schedule-row strong { color:#17483c !important; font-weight:800 !important; }
.event-copy .venue-name { color:#805d22 !important; font-weight:800 !important; }
.event-copy blockquote { color:#6d4820 !important; font-weight:700 !important; }
.event-art .event-label { background:rgba(13,43,36,.94) !important; color:#ffe5a0 !important; border-color:#f2cf78 !important; }
.venues > h2 { color:#f2cf78 !important; }
.venue-card { background:#fffaf0 !important; border:1px solid #d9bd7b !important; color:#263f35 !important; }
.venue-card h3 { color:#17483c !important; font-weight:800 !important; }
.venue-card p { color:#263f35 !important; opacity:1 !important; font-weight:600 !important; }
.venue-card a,.venue-card .map-link { color:#76551c !important; font-weight:800 !important; text-decoration:underline; text-underline-offset:3px; }
.closing h2,.closing h2 span { color:#f2cf78 !important; }
.closing .script { color:#ffe5a0 !important; }
.closing > p:not(.script),.closing .muted { color:#f2f0e6 !important; opacity:1 !important; }


/* FINAL CARD-DESIGN CONTRAST AUDIT — 25 Oct 2026
   Keeps all copy, order, illustration, imagery, spacing and interactions intact.
   Text is light on the dark invitation sections and dark on the light stationery/cards. */
:root {
  color-scheme: dark;
  --contrast-dark: #173b36;
  --contrast-dark-card: #21463f;
  --contrast-light-ink: #f7f3e8;
  --contrast-muted-light: #e0e8dd;
  --contrast-gold: #f2cf78;
  --contrast-paper: #fffaf0;
  --contrast-paper-ink: #263f35;
}
html { color-scheme: dark; }
body { background: #173b36 !important; color: var(--contrast-light-ink) !important; }
/* The family invitation and photo gallery are dark panels, not pale panels with pale text. */
section.invitation {
  background: radial-gradient(ellipse at 8% 14%,rgba(133,166,137,.15),transparent 34%),
              radial-gradient(ellipse at 92% 76%,rgba(198,144,110,.12),transparent 32%),
              linear-gradient(135deg,#173b36,#1c443e 52%,#173b36) !important;
  color: var(--contrast-light-ink) !important;
}
.moments-section {
  background: linear-gradient(135deg,#173b36,#21463f 58%,#173b36) !important;
  color: var(--contrast-light-ink) !important;
}
.invitation > .center,
.invitation > .invitation-intro,
.moments-section > .center,
.moments-section > p:not(.eyebrow),
.section > .center,
.section .map-note,
.section .photo-note,
.gate-footnote,
.scratch-section .center,
.scratch-section .muted {
  color: var(--contrast-muted-light) !important;
  opacity: 1 !important;
  text-shadow: none !important;
}
.eyebrow, .section h2, .closing h2, .hero-ornament, .ornament,
.gate-ornament, .scratch-section h2, .celebrations > h2, .venues > h2 {
  color: var(--contrast-gold) !important;
  opacity: 1 !important;
  text-shadow: none;
}
/* Keep the family wording as light stationery with dark, legible ink. */
.invitation-wording {
  background: linear-gradient(180deg,#fffdf7,#f7f0e2) !important;
  color: #263f35 !important;
  opacity: 1 !important;
}
.invitation-wording p,
.invitation-wording .muted,
.invitation-wording .invitation-sentence,
.invitation-wording .family-journey,
.invitation-wording p.family-journey {
  color: #263f35 !important;
  opacity: 1 !important;
  text-shadow: none !important;
}
.invitation-wording h3 { color: #17483c !important; opacity: 1 !important; }
.invitation-wording .paper-topline,
.invitation-wording .small-caps,
.invitation-wording .paper-bottomline,
.invitation-wording .weds { color: #76551c !important; opacity: 1 !important; }
.invitation-wording blockquote,
.invitation-wording .niece-note { color: #70452f !important; opacity: 1 !important; }
/* Family sign-off is placed over the dark section, so it also uses a dark translucent surface. */
.family-signoff {
  background: rgba(15,43,38,.88) !important;
  border-top-color: #8f7847 !important;
  border-bottom-color: #8f7847 !important;
  color: #f7f3e8 !important;
}
.family-signoff strong { color: #f2cf78 !important; }
.family-signoff div span:last-child,
.family-signoff .signoff-label { color: #f2cf78 !important; opacity: 1 !important; }
/* Event and venue cards intentionally remain warm ivory; every line uses dark ink. */
.event-card, .venue-card {
  background: var(--contrast-paper) !important;
  color: var(--contrast-paper-ink) !important;
  border-color: #d9bd7b !important;
}
.event-copy h3, .venue-card h3 { color: #17483c !important; opacity: 1 !important; }
.event-copy p:not(.eyebrow), .event-copy .muted,
.event-copy .schedule-row, .event-copy .schedule-row span,
.event-copy .schedule-row strong, .venue-card p {
  color: var(--contrast-paper-ink) !important;
  opacity: 1 !important;
  text-shadow: none !important;
}
.event-copy .eyebrow { color: #704b16 !important; opacity: 1 !important; }
.event-copy .venue-name { color: #704b16 !important; opacity: 1 !important; }
.event-copy blockquote { color: #70452f !important; opacity: 1 !important; }
.venue-card a, .venue-card .map-link { color: #67430f !important; opacity: 1 !important; }
.event-art .event-label { background: rgba(13,43,36,.96) !important; color: #ffe5a0 !important; border-color: #f2cf78 !important; }
/* Countdown's revealed paper remains pale with dark type; its surrounding gate stays dark. */
.scratch-under { background: linear-gradient(145deg,#fffdf7,#f2e6cd) !important; }
.scratch-under .script { color: #704b16 !important; }
.scratch-under strong { color: #183c36 !important; }
.scratch-under span:last-child { color: #674b20 !important; }
.countdown div { background: #fffaf0 !important; border-color: #d9bd7b !important; }
.countdown strong { color: #173b36 !important; }
.countdown span { color: #344b41 !important; }
/* Closing, footer, navigation and floating music control. */
.closing { background: linear-gradient(180deg,#21463f,#173b36) !important; color: #f7f3e8 !important; }
.closing h2, .closing h2 span { color: #f2cf78 !important; }
.closing .script { color: #ffe5a0 !important; }
.closing > p:not(.script), .closing .muted { color: #f2f0e6 !important; opacity: 1 !important; }
footer { background: #102d29 !important; color: #e8eee5 !important; }
footer a { color: #ffe5a0 !important; }
.topbar { background: rgba(18,48,43,.98) !important; border-bottom-color: #54756b !important; }
.brand, .brand span, nav a, .menu-toggle { color: #f7f3e8 !important; }
nav a:hover, .nav-rsvp { color: #ffe5a0 !important; }
.music-toggle { background: #fffaf0 !important; color: #173b36 !important; border-color: #d9bd7b !important; }
.photo-note, .map-note { color: #e0e8dd !important; opacity: 1 !important; }
.photo-note code { color: #173b36 !important; background: #fffaf0 !important; }
/* Visible keyboard focus and form feedback. */
a:focus-visible, button:focus-visible, input:focus-visible, textarea:focus-visible,
select:focus-visible, canvas:focus-visible {
  outline: 3px solid #ffe5a0 !important;
  outline-offset: 3px !important;
}
.rsvp-form>label, .rsvp-form legend, .check { color: #f7f3e8 !important; }
.rsvp-form input:not([type=checkbox]), .rsvp-form select, .rsvp-form textarea {
  background: #fffaf0 !important; color: #203c35 !important; border-color: #c7d2c5 !important;
}
.form-note, #formFeedback { color: #e8eee5 !important; opacity: 1 !important; }
@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after { scroll-behavior: auto !important; animation-duration: .01ms !important; animation-iteration-count: 1 !important; transition-duration: .01ms !important; }
}



/* FINAL ALTERNATING WEDDING-CARD PALETTE — preserve layout/content, improve page-by-page contrast.
   Page 1 light, page 2 dark, page 3 light, page 4 dark; subsequent sections alternate too. */

/* PAGE 1 — scratch / countdown: warm ivory paper with deep green ink */
.scratch-section.scratch-gate {
  background: linear-gradient(135deg,#fffaf1 0%,#f5ead8 52%,#eee2cc 100%) !important;
  color:#183f34 !important;
}
.scratch-section.scratch-gate::before {
  background:
    radial-gradient(ellipse at 12% 18%,rgba(157,181,143,.19),transparent 32%),
    radial-gradient(ellipse at 88% 24%,rgba(190,132,103,.15),transparent 30%),
    radial-gradient(ellipse at 78% 84%,rgba(204,181,125,.17),transparent 30%),
    radial-gradient(ellipse at 20% 85%,rgba(125,163,151,.15),transparent 31%) !important;
}
.scratch-section.scratch-gate h2,
.scratch-section.scratch-gate .eyebrow,
.scratch-section.scratch-gate .center,
.scratch-section.scratch-gate .muted,
.scratch-section.scratch-gate .gate-footnote {
  color:#214b3d !important;
  opacity:1 !important;
  text-shadow:none !important;
}
.scratch-section.scratch-gate .eyebrow { color:#795b2a !important; font-weight:800; }
.scratch-section.scratch-gate .scratch-wrap {
  background:#fffdf7 !important;
  border:1px solid #c6a66b !important;
  box-shadow:0 12px 30px rgba(44,62,43,.14) !important;
}
.scratch-section.scratch-gate .scratch-under {
  background:linear-gradient(145deg,#fffdf7,#f4e7cd) !important;
}
.scratch-section.scratch-gate .scratch-under .script { color:#815c2a !important; }
.scratch-section.scratch-gate .scratch-under strong { color:#173f32 !important; }
.scratch-section.scratch-gate .scratch-under span:last-child { color:#594a32 !important; }
.scratch-section.scratch-gate .countdown div {
  background:#fffdf7 !important;
  border:1px solid #c9ad72 !important;
}
.scratch-section.scratch-gate .countdown strong,
.scratch-section.scratch-gate .countdown span,
.scratch-section.scratch-gate #countdownMessage {
  color:#173f32 !important;
  opacity:1 !important;
  text-shadow:none !important;
}
.scratch-section.scratch-gate .countdown strong { font-weight:800 !important; }
.scratch-section.scratch-gate .gate-ornament { color:#9b773b !important; }

/* PAGE 2 — couple hero: deep forest, warm ivory and champagne gold */
.hero {
  background:radial-gradient(ellipse at 50% 34%,#31574a 0%,#1e4036 58%,#142e28 100%) !important;
  color:#fff8e9 !important;
}
.hero .script,.hero .hero-sub,.hero .hero-bottom,.hero .eyebrow { color:#fff3dc !important; }
.hero h1,.hero h1 em,.hero h1 span,.hero .script { color:#f0cf82 !important; }
.hero .date-ribbon {
  color:#fff0c4 !important;
  border:2px solid #e5c16d !important;
  font-weight:800 !important;
  text-shadow:0 1px 2px rgba(0,0,0,.35) !important;
}
.hero .hero-ornament { color:#e5c16d !important; }

/* PAGE 3 — family invitation: clean light paper and deep readable lettering */
section.invitation {
  background:
    radial-gradient(ellipse at 8% 14%,rgba(133,166,137,.13),transparent 34%),
    radial-gradient(ellipse at 92% 76%,rgba(198,144,110,.12),transparent 32%),
    linear-gradient(135deg,#fffaf1,#f3eadb 52%,#fff9ef) !important;
  color:#203d32 !important;
}
section.invitation > h2,
section.invitation .invitation-intro,
section.invitation > .center { color:#203d32 !important; opacity:1 !important; }
section.invitation > .eyebrow,
section.invitation > .ornament { color:#765724 !important; opacity:1 !important; }
.invitation-wording {
  background:linear-gradient(180deg,#fffef9,#f7f0df) !important;
  color:#203a30 !important;
  opacity:1 !important;
}
.invitation-wording p,.invitation-wording .muted,.invitation-wording .invitation-sentence,
.invitation-wording .family-journey {
  color:#263e33 !important; opacity:1 !important; text-shadow:none !important;
}
.invitation-wording h3 { color:#17483a !important; opacity:1 !important; }
.invitation-wording .paper-topline,.invitation-wording .small-caps,
.invitation-wording .paper-bottomline { color:#795a27 !important; opacity:1 !important; }
.invitation-wording blockquote { color:#70472f !important; opacity:1 !important; }
.invitation-wording .niece-note { color:#805d2c !important; opacity:1 !important; }
.family-signoff { color:#fff8e9 !important; }

/* PAGE 4 — our moments: dark page with bright captions and subtle gold accents */
section.moments-section {
  background:linear-gradient(145deg,#17372f 0%,#20483c 55%,#142e28 100%) !important;
  color:#f8f1e3 !important;
}
section.moments-section h2 { color:#f0cf82 !important; }
section.moments-section > p,
section.moments-section .photo-note,
section.moments-section .eyebrow { color:#f0eadb !important; opacity:1 !important; }
section.moments-section .eyebrow { color:#e8c778 !important; }
section.moments-section .photo-frame figcaption {
  background:rgba(15,39,32,.94) !important;
  color:#fff4d8 !important;
  border-color:#c8a75f !important;
}
section.moments-section .photo-watermark { color:#ffe6a0 !important; }

/* PAGE 5 — celebrations returns to warm light paper; event-card text stays dark */
section.celebrations {
  background:linear-gradient(135deg,#fffaf1 0%,#f2e8d8 55%,#fff8ed 100%) !important;
  color:#213d32 !important;
}
section.celebrations h2 { color:#214b3d !important; }
section.celebrations > p,
section.celebrations > .eyebrow { color:#31483b !important; opacity:1 !important; }
section.celebrations > .eyebrow { color:#795b2a !important; }
section.celebrations .event-card {
  background:#fffdf7 !important;
  border-color:#d4bd88 !important;
  color:#203c31 !important;
  box-shadow:0 10px 26px rgba(46,58,40,.10) !important;
}
section.celebrations .event-copy h3 { color:#17483a !important; }
section.celebrations .event-copy p:not(.eyebrow),
section.celebrations .event-copy .muted,
section.celebrations .event-copy .schedule-row,
section.celebrations .event-copy .schedule-row span { color:#263f34 !important; opacity:1 !important; }
section.celebrations .event-copy .eyebrow { color:#795b2a !important; }
section.celebrations .event-copy .schedule-row strong,
section.celebrations .event-copy .venue-name { color:#704f1d !important; }
section.celebrations .event-copy blockquote { color:#75482f !important; }
section.celebrations .event-art .event-label {
  background:rgba(24,53,43,.95) !important;
  color:#fff0c4 !important;
  border-color:#e5c16d !important;
}

/* PAGE 6 — venue finder: dark green panel, light type and gold map links */
section.venues {
  background:linear-gradient(145deg,#17372f 0%,#20483c 58%,#142e28 100%) !important;
  color:#f7f1e5 !important;
}
section.venues h2 { color:#f0cf82 !important; }
section.venues > p,.venues .eyebrow,.venues .map-note { color:#f0eadb !important; opacity:1 !important; }
section.venues .eyebrow { color:#e8c778 !important; }
section.venues .venue-card {
  background:#fffdf7 !important;
  border:1px solid #d4bd88 !important;
  color:#263e33 !important;
}
section.venues .venue-card h3 { color:#17483a !important; }
section.venues .venue-card p { color:#263e33 !important; opacity:1 !important; }
section.venues .venue-card a,section.venues .venue-card .map-link {
  color:#704f1d !important; font-weight:800 !important; text-decoration:underline;
  text-underline-offset:3px;
}

/* Closing page: elegant light finish; preserve the burgundy music button but make its label readable */
.closing {
  background:linear-gradient(180deg,#fff8ed 0%,#f1e4d0 100%) !important;
  color:#203d32 !important;
}
.closing h2,.closing h2 span { color:#214b3d !important; }
.closing .script { color:#81552f !important; }
.closing > p:not(.script),.closing .muted { color:#31483b !important; opacity:1 !important; }
.closing .ornament { color:#9a753b !important; }
.music-player .music-toggle,
button.music-toggle {
  background:#641f36 !important;
  color:#fff8ed !important;
  border:1px solid #a96c7d !important;
  font-weight:800 !important;
  text-shadow:none !important;
}
.music-player .music-toggle span,
button.music-toggle span { color:#fff8ed !important; }


/* FINAL MAP BUTTON LEGIBILITY FIX: readable light text, no underline. */
section.venues .venue-card a.map-link,
section.venues .venue-card a.map-link:visited,
section.venues .venue-card a.map-link:hover,
section.venues .venue-card a.map-link:focus-visible,
.venue-card a.map-link,
.venue-card a.map-link:visited,
.venue-card a.map-link:hover,
.venue-card a.map-link:focus-visible {
  color: #fff7e8 !important;
  text-decoration: none !important;
  text-decoration-line: none !important;
  opacity: 1 !important;
  background: linear-gradient(135deg, #762f43, #552033) !important;
  border: 1px solid #d9b66f !important;
  font-weight: 800 !important;
  text-shadow: 0 1px 1px rgba(0,0,0,.22) !important;
}
.venue-card a.map-link:focus-visible { outline: 2px solid #d9b66f !important; outline-offset: 3px !important; }

/* After removing Our Moments: celebrations remains light, venues dark, preserving the alternating visual rhythm. */
section.celebrations > p.center.muted { color:#173b32 !important;opacity:1 !important;text-shadow:none !important; }

/* Original sage, ivory and gold palette; one seamless Phulkari-inspired intro.
   The date scratch card is still the ONLY action required to enter. */
.thread-story{width:min(92vw,380px);margin:0 auto 8px;text-align:center;pointer-events:none;}
.thread-blessing{font-size:clamp(1.6rem,5vw,2.2rem);color:#9b773b;opacity:0;animation:threadBless 1.1s ease forwards;}
.thread-art{display:block;width:100%;height:auto;overflow:visible;margin:-6px auto -12px;}
.thread-path{fill:none;stroke-width:2.6;stroke-linecap:round;stroke-dasharray:280;stroke-dashoffset:280;animation:threadDraw 2.4s .35s cubic-bezier(.3,.1,.2,1) forwards;}
.thread-path-left{stroke:#326b55;}.thread-path-right{stroke:#b9985d;}
.thread-flower{fill:none;stroke:#b9985d;stroke-width:1.2;stroke-dasharray:220;stroke-dashoffset:220;animation:threadDraw 1.3s 1.65s ease forwards;}
.thread-monogram{font:italic 27px Georgia,serif;fill:#1b4a3d;opacity:0;animation:threadBless 1s 1.75s ease forwards;}
.thread-caption{font:600 10px/1.6 Arial,sans-serif;letter-spacing:.25em;color:#7b663c;opacity:0;animation:threadBless .9s 2s ease forwards;}
@keyframes threadDraw{to{stroke-dashoffset:0}}
@keyframes threadBless{to{opacity:1}}
@media (prefers-reduced-motion:reduce){.thread-blessing,.thread-caption,.thread-monogram{animation:none;opacity:1}.thread-path,.thread-flower{animation:none;stroke-dashoffset:0}}
@media (max-height:740px){.thread-story{width:min(75vw,270px);margin-bottom:0}.thread-art{margin:-10px auto -18px}.thread-blessing{font-size:1.5rem}}

/* FULL-SCREEN PHULKARI FRONT PAGE — independent of the scratch page. */
body.phulkari-intro-active{overflow:hidden;}
.phulkari-cover{position:fixed;inset:0;z-index:9999;overflow:hidden;display:grid;place-items:center;background:#f6f1e4;color:#214c3c;isolation:isolate;min-height:100vh;min-height:100dvh;}
.phulkari-curtain{position:absolute;z-index:2;top:0;bottom:0;width:50.08%;background-color:#e9e9d8;background-image:radial-gradient(circle at 50% 50%,transparent 0 32px,rgba(162,130,72,.17) 33px 34px,transparent 35px),repeating-linear-gradient(45deg,transparent 0 26px,rgba(41,94,72,.10) 27px 29px,transparent 30px 56px),repeating-linear-gradient(-45deg,transparent 0 26px,rgba(41,94,72,.10) 27px 29px,transparent 30px 56px),linear-gradient(115deg,#e4e9db,#fbf5e7 45%,#e5e6d3);background-size:110px 110px,112px 112px,112px 112px,100% 100%;box-shadow:inset 0 0 0 8px rgba(168,135,74,.2);transition:transform 1.5s cubic-bezier(.74,0,.22,1);will-change:transform;}
.phulkari-curtain:before{content:"";position:absolute;top:0;bottom:0;width:11px;background:repeating-linear-gradient(180deg,#af914f 0 7px,#2d6551 7px 14px,#e6c988 14px 20px);opacity:.85;}
.phulkari-curtain--left{left:0;border-right:1px solid #b79b62;transform-origin:left center;}.phulkari-curtain--left:before{right:0;}
.phulkari-curtain--right{right:0;border-left:1px solid #b79b62;transform-origin:right center;}.phulkari-curtain--right:before{left:0;}
.phulkari-cover__content{position:relative;z-index:3;display:flex;flex-direction:column;align-items:center;justify-content:center;width:min(88vw,560px);max-height:94dvh;padding:24px 12px;text-align:center;pointer-events:none;transition:opacity .32s ease,transform .55s ease;}
.phulkari-cover__blessing{font:normal clamp(34px,7vh,56px)/1.2 Georgia,serif;color:#a38342;animation:phulkariFade .8s both;}
.phulkari-cover__overline{margin:8px 0 5px;font:700 clamp(8px,1.6vw,11px)/1.6 Arial,sans-serif;letter-spacing:.19em;color:#55735e;animation:phulkariFade .9s .25s both;}
.phulkari-cover__embroidery{display:block;width:min(72vw,370px);height:auto;max-height:37dvh;overflow:visible;filter:drop-shadow(0 6px 10px rgba(46,87,66,.12));}
.phulkari-stitch{fill:none;stroke-width:3;stroke-linecap:round;stroke-dasharray:7 5;stroke-dashoffset:450;animation:phulkariSew 2.5s .4s ease-out forwards;}
.phulkari-stitch--one,.phulkari-stitch--four{stroke:#27644d;}.phulkari-stitch--two,.phulkari-stitch--three{stroke:#b79453;animation-delay:.7s;}
.phulkari-cover__motifs{fill:none;stroke:#b3924e;stroke-width:2.3;stroke-linejoin:round;opacity:0;animation:phulkariMotifs .95s 1.6s both;}
.phulkari-cover__centerdots{fill:#f5e6c5;stroke:#2d654e;stroke-width:1.6;opacity:0;animation:phulkariMotifs .8s 1.85s both;}
.phulkari-cover__names{font:500 clamp(35px,8vw,59px)/1 Georgia,serif;letter-spacing:.1em;color:#245742;margin:-19px 0 10px;opacity:0;animation:phulkariNames .9s 1.9s both;}
.phulkari-cover__names span{font-size:.52em;color:#b28a48;vertical-align:middle;}
.phulkari-cover__title{font:500 clamp(22px,5vw,37px)/1.15 Georgia,serif;color:#234e3f;opacity:0;animation:phulkariFade .8s 2.2s both;}
.phulkari-cover__title em{font-weight:400;color:#ae8b4f;}
.phulkari-cover__tagline{margin-top:15px;font:700 clamp(9px,1.9vw,12px)/1.5 Arial,sans-serif;letter-spacing:.22em;color:#8b7143;opacity:0;animation:phulkariFade .8s 2.4s both;}
.phulkari-cover__date{margin-top:11px;font:600 clamp(11px,2.1vw,14px)/1.5 Georgia,serif;letter-spacing:.18em;color:#37604b;opacity:0;animation:phulkariFade .8s 2.5s both;}
.phulkari-cover__bottom{margin-top:clamp(15px,3vh,30px);font:600 9px/1.4 Arial,sans-serif;letter-spacing:.19em;color:#927b4d;opacity:0;animation:phulkariFade .8s 2.6s both;}
.phulkari-cover__skip{position:absolute;z-index:5;right:max(20px,env(safe-area-inset-right));bottom:max(22px,env(safe-area-inset-bottom));border:1px solid #b89d69;border-radius:30px;background:#fff9eb;color:#295742;padding:11px 16px;font:700 11px Arial,sans-serif;letter-spacing:.08em;cursor:pointer;box-shadow:0 2px 10px #244c3620;}
.phulkari-cover__skip span{font-size:18px;vertical-align:middle;}
.phulkari-cover.is-opening .phulkari-cover__content{opacity:0;transform:scale(.97);}
.phulkari-cover.is-opening .phulkari-curtain--left{transform:translateX(-105%);}
.phulkari-cover.is-opening .phulkari-curtain--right{transform:translateX(105%);}
.phulkari-cover.is-opening .phulkari-cover__skip{opacity:0;pointer-events:none;}
.phulkari-cover.is-done{display:none;}
@keyframes phulkariSew{to{stroke-dashoffset:0;}}
@keyframes phulkariFade{from{opacity:0;transform:translateY(10px)}to{opacity:1;transform:none}}
@keyframes phulkariMotifs{from{opacity:0;transform:scale(.75);transform-origin:center}to{opacity:1;transform:scale(1);transform-origin:center}}
@keyframes phulkariNames{from{opacity:0;transform:translateY(8px) scale(.87)}to{opacity:1;transform:none}}
@media(max-width:420px){.phulkari-cover__embroidery{width:min(77vw,315px)}.phulkari-cover__content{padding:10px}.phulkari-cover__overline{letter-spacing:.12em}.phulkari-cover__names{margin:-12px 0 9px}.phulkari-cover__bottom{font-size:8px}}
@media(prefers-reduced-motion:reduce){.phulkari-stitch{animation:none;stroke-dashoffset:0}.phulkari-cover__content *{animation:none!important;opacity:1!important}.phulkari-cover.is-opening .phulkari-curtain{transition-duration:.01s}}

/* Refinement: slower readable front page; no central curtain seam over artwork. */
.phulkari-curtain{transition-duration:2.15s;box-shadow:none;}
.phulkari-curtain::before{display:none!important;}
.phulkari-curtain--left,.phulkari-curtain--right{border:0!important;}
.phulkari-cover__content{z-index:4;gap:5px;width:min(92vw,600px);padding:clamp(12px,3vh,28px) 16px;}
.phulkari-cover__embroidery{width:min(68vw,325px);max-height:29dvh;margin:8px auto 2px;}
.phulkari-cover__names{margin:0 0 8px;}
.phulkari-cover__tagline{margin-top:10px;}
.phulkari-cover__bottom{margin-top:clamp(10px,2vh,20px);}
@media(max-height:700px){.phulkari-cover__embroidery{max-height:24dvh;width:min(62vw,265px)}.phulkari-cover__content{gap:2px}.phulkari-cover__title{font-size:clamp(20px,4.5vw,30px)}.phulkari-cover__bottom{margin-top:7px}}

/* Typography-only polish: clearer, elegant everyday text; decorative titles unchanged. */
body, .button, .music-toggle { font-family:'Manrope','DM Sans',sans-serif; }
