/* Foundation for the locally bundled Naqsh invitation. */
:root {
  --night:#280403; --oxblood:#4f0608; --crimson:#8c1313; --ruby:#b0251f; --gold:#dba062; --candle:#f7d6a2;
  --text:var(--candle); --muted:var(--gold); --maroon:var(--crimson); --deep-maroon:var(--night); --ivory:var(--candle); --paper:var(--oxblood); --pale-gold:var(--candle);
  --font-script:'GreatVibesMM',cursive; --font-body:'Marcellus',serif; --font-display:'Bodoni Moda',serif; --font-label:'Cormorant SC',serif; --font-arabic:'Amiri',serif;
}
* { box-sizing:border-box; }
html { scroll-behavior:smooth; scroll-padding-top:20px; }
body { margin:0; background:var(--night); color:var(--candle); font-family:var(--font-body); line-height:1.75; -webkit-font-smoothing:antialiased; }
html.scroll-locked,body.scroll-locked { overflow:hidden; height:100%; }
p,h1,h2,h3 { margin:0; font-weight:400; }
a { color:inherit; }
button { font:inherit; cursor:pointer; -webkit-tap-highlight-color:transparent; }
button:focus-visible,a:focus-visible,canvas[tabindex]:focus-visible { outline:2px solid var(--candle); outline-offset:5px; }
.opening-gate:focus-visible { outline-offset:-8px; }
svg { display:block; }
[hidden] { display:none!important; }
.invitation { width:min(100%,640px); margin:auto; background:var(--oxblood); overflow:hidden; }
.sr-only { position:absolute; width:1px; height:1px; padding:0; margin:-1px; overflow:hidden; clip:rect(0,0,0,0); white-space:nowrap; border:0; }
.eyebrow { font-family:var(--font-label); font-size:12px; letter-spacing:.19em; line-height:1.8; text-transform:uppercase; color:var(--gold); }
.ornament { width:132px; margin:30px auto; display:flex; align-items:center; gap:15px; color:var(--gold); font-size:12px; }
.ornament::before,.ornament::after { content:''; height:1px; flex:1; background:linear-gradient(90deg,transparent,var(--gold)); }
.ornament::after { transform:rotate(180deg); }
.reveal { opacity:0; transform:translateY(18px); transition:opacity .85s ease,transform .85s ease; }
.reveal.is-visible { opacity:1; transform:none; }
.sparkle { position:absolute; width:3px; height:3px; border-radius:50%; background:var(--gold); pointer-events:none; animation:sparkle-burst .9s ease-out forwards; z-index:3; }
@keyframes sparkle-burst { to { transform:translate(var(--dx),var(--dy)); opacity:0; } }
@keyframes arrow-float { 50% { transform:translateY(5px); } }
@keyframes seal-reveal { 50% { transform:scale(1.035); } }
.music-toggle { position:fixed; right:max(16px,calc((100vw - 640px) / 2 + 16px)); top:calc(16px + env(safe-area-inset-top)); z-index:40; width:46px; height:46px; padding:0; display:grid; place-items:center; border-radius:50%; border:1px solid var(--gold); background:var(--oxblood); color:var(--candle); line-height:0; -webkit-appearance:none; appearance:none; }
.music-toggle .sound-slash,.music-toggle.is-muted .sound-waves { display:none; }
.music-toggle.is-muted .sound-slash { display:block; }
#glimmerCanvas { position:fixed; inset:0; width:100%; height:100%; pointer-events:none; z-index:20; opacity:.65; }
.petal-canvas { position:fixed; inset:0; width:100%; height:100%; pointer-events:none; z-index:30; }
.footer { background:var(--night); padding:4px 16px 6px; text-align:center; line-height:1.4; }
.footer a { display:inline-block; padding:6px 4px; font-family:var(--font-label); font-size:10px; text-transform:uppercase; letter-spacing:.14em; text-decoration:none; color:var(--gold); }
.footer a:hover { text-decoration:underline; }
.no-script { padding:30px; text-align:center; background:var(--oxblood); color:var(--candle); }
@media(prefers-reduced-motion:reduce) {
  html { scroll-behavior:auto; }
  *,*::before,*::after { animation-duration:.01ms!important; animation-iteration-count:1!important; transition-duration:.01ms!important; transition-delay:0s!important; }
  .reveal { transform:none; }
  #glimmerCanvas,.petal-canvas { display:none; }
}
