/* =====================================================================
   LUXE LAYER (v3) — premium finish over every theme, opening and font set.
   Loaded after style/themes/openings; everything here is additive.
   Ornaments are our own line-art (img/lux/*.svg), textures are generated.
   ===================================================================== */
:root{
  --foil:linear-gradient(100deg,#6f511c 0%,#a8823a 10%,#e9cf8a 22%,#fff3c9 28%,#d2ac5f 36%,#8e6a2a 47%,#c9a35a 56%,#f4e2a8 64%,#fffadf 68%,#cfa758 76%,#86622a 88%,#c79f55 100%);
  --glint:linear-gradient(105deg,transparent 38%,rgba(255,252,236,.95) 48%,rgba(255,246,214,.4) 52%,transparent 60%);
  --orn-c:#d4b06a; --vein-c:rgba(226,196,128,.16); --vein-o:1; --grain:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='180' height='180'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.8' numOctaves='2' stitchTiles='stitch'/%3E%3CfeColorMatrix values='0 0 0 0 .35 0 0 0 0 .27 0 0 0 0 .15 0 0 0 .10 0'/%3E%3C/filter%3E%3Crect width='180' height='180' filter='url(#n)'/%3E%3C/svg%3E");
  --mk-corner:url(img/lux/corner.svg); --mk-div:url(img/lux/divider.svg); --mk-crown:url(img/lux/crown.svg);
}
/* per-theme foil + texture tuning */
html[data-theme=black]{--vein-c:rgba(222,190,120,.13)}
html[data-theme=emerald]{--vein-c:rgba(150,220,180,.10);--orn-c:#d8b86e}
html[data-theme=burgundy]{--vein-c:rgba(240,170,170,.10);--foil:linear-gradient(100deg,#6b4220 0%,#a7743e 10%,#ecc895 22%,#fff0d6 28%,#d6a46c 36%,#8d5c2c 47%,#c99766 56%,#f6dcb6 64%,#fff6e6 68%,#cf9c62 76%,#83582a 88%,#c4925a 100%)}
html[data-theme=navy]{--vein-c:rgba(170,190,240,.10);--foil:linear-gradient(100deg,#6f5a2c 0%,#ab9150 10%,#e8d6a0 22%,#fffbe8 28%,#d6c08a 36%,#8f7740 47%,#c8b27a 56%,#f2e6c0 64%,#ffffff 68%,#d3bd84 76%,#857034 88%,#c7ae70 100%)}
html[data-theme=sage]{--vein-c:rgba(220,232,205,.10);--foil:linear-gradient(100deg,#6a5a2a 0%,#a3904c 10%,#e2d59c 22%,#fbf6dc 28%,#cbbb7c 36%,#857436 47%,#bba868 56%,#ece2b4 64%,#fffbe9 68%,#c8b674 76%,#7c6a30 88%,#b9a564 100%)}
XX
  --foil:linear-gradient(100deg,#5d4316 0%,#8f6a2b 12%,#c9a35a 24%,#f1dc9e 30%,#b48a3e 38%,#6f511c 48%,#a8823a 58%,#e3c27b 66%,#f6e6b4 70%,#ae8638 78%,#6b4e1a 90%,#a07a34 100%)}
html[data-theme=blush]{--vein-c:rgba(150,92,84,.12);--grain:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='180' height='180'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.85' numOctaves='2' stitchTiles='stitch'/%3E%3CfeColorMatrix values='0 0 0 0 1 0 0 0 0 .95 0 0 0 0 .85 0 0 0 .07 0'/%3E%3C/filter%3E%3Crect width='180' height='180' filter='url(#n)'/%3E%3C/svg%3E");--orn-c:#b98a5a;
  --foil:linear-gradient(100deg,#6e4128 0%,#a4694a 12%,#d9a283 24%,#f8dccb 30%,#c48c6e 38%,#7f4b32 48%,#b07a5c 58%,#e8b89c 66%,#fbe7da 70%,#bb8566 78%,#764530 90%,#a87055 100%)}

/* ---------- real gold-foil text: metallic gradient + travelling glint ---------- */
.names,.names-s,.h.gold,.dark .h,.dateblock b,.cd b,.mono span,.env-names,.intro-guest,.hero-photo figcaption,.thanks-t,.lux-foil{
  background-image:var(--glint),var(--foil)!important;background-size:260% 100%,100% 100%!important;background-repeat:no-repeat!important;background-position:160% 0,0 0;
  -webkit-background-clip:text!important;background-clip:text!important;color:transparent!important;-webkit-text-fill-color:transparent;
  animation:foil 6.5s cubic-bezier(.4,0,.2,1) infinite!important}
.ivory .h,.frame .h{background-image:var(--glint),var(--foil);background-size:260% 100%,100% 100%;background-repeat:no-repeat;background-position:160% 0,0 0;-webkit-background-clip:text;background-clip:text;color:transparent;-webkit-text-fill-color:transparent;animation:foil 7.5s cubic-bezier(.4,0,.2,1) infinite}
.names .amp,.names-s em,.hero-photo em{-webkit-text-fill-color:transparent}
@keyframes foil{0%,55%{background-position:160% 0,0 0}100%{background-position:-60% 0,0 0}}
.names{letter-spacing:0;padding:0 10px}
.names .amp{font-size:.5em;margin:2px 0 4px;opacity:.95}
.names .amp::before,.names .amp::after{content:"";display:inline-block;vertical-align:middle;width:42px;height:1px;margin:0 12px;background:linear-gradient(90deg,transparent,var(--orn-c))}
.names .amp::after{background:linear-gradient(270deg,transparent,var(--orn-c))}

/* refined small type */
html[dir=ltr] .fld>span,html[dir=ltr] .fld legend,html[dir=ltr] .cd span,html[dir=ltr] .dateblock>span{letter-spacing:.14em}
/* Arabic letters must join: no tracking on any Arabic text */
html[dir=rtl] .pre,html[dir=rtl] .intro-to,html[dir=rtl] .card h3,html[dir=rtl] .fld>span,html[dir=rtl] .fld legend,html[dir=rtl] .cd span,html[dir=rtl] .dateblock>span,html[dir=rtl] .intro-hint,html[dir=rtl] .h,html[dir=rtl] .env-date{letter-spacing:0!important}
html[dir=ltr] .pre,html[dir=ltr] .intro-to,html[dir=ltr] .card h3{letter-spacing:.32em;font-weight:500}
.inv,.words,.verse-tr{font-feature-settings:"liga","kern"}
html[dir=ltr] .inv{font-style:italic;font-size:19px}

/* ---------- textures: velvet grain + marble veins on every section ---------- */
.sec{isolation:isolate}
.sec::after,.intro::after{content:"";position:absolute;inset:0;pointer-events:none;z-index:-1;background:var(--grain) 0 0/180px 180px}
.dark>.lux-vein,.cover>.lux-vein,.intro>.lux-vein{position:absolute;inset:-2px;pointer-events:none;z-index:-1;background:var(--vein-c);
  -webkit-mask:url(img/lux/veins.webp) 0 0/520px 520px;mask:url(img/lux/veins.webp) 0 0/520px 520px}
.ivory::after{background:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='240' height='240'%3E%3Cfilter id='f'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.012 .35' numOctaves='3' seed='4' stitchTiles='stitch'/%3E%3CfeColorMatrix values='0 0 0 0 .45 0 0 0 0 .38 0 0 0 0 .25 0 0 0 .09 -.01'/%3E%3C/filter%3E%3Crect width='240' height='240' filter='url(#f)'/%3E%3C/svg%3E") 0 0/240px 240px,url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='180' height='180'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.85' numOctaves='2' stitchTiles='stitch'/%3E%3CfeColorMatrix values='0 0 0 0 1 0 0 0 0 .95 0 0 0 0 .85 0 0 0 .07 0'/%3E%3C/filter%3E%3Crect width='180' height='180' filter='url(#n)'/%3E%3C/svg%3E") 0 0/180px 180px}
.ivory>.lux-vein{position:absolute;inset:0;pointer-events:none;z-index:-1;background:rgba(150,118,62,.10);-webkit-mask:url(img/lux/veins.webp) 120px 60px/620px 620px;mask:url(img/lux/veins.webp) 120px 60px/620px 620px}
.intro>.lux-vein{background:var(--vein-c);opacity:.9}
.dark::before{opacity:.045}
/* soft vignette + light pool on dark bands */
.dark{box-shadow:inset 0 40px 80px -40px rgba(0,0,0,.55),inset 0 -40px 80px -40px rgba(0,0,0,.55)}
.intro{background:radial-gradient(60% 40% at 50% 42%,rgba(255,230,170,.10),transparent 70%),var(--intro-bg)}
.intro::before{content:"";position:absolute;inset:0;pointer-events:none;z-index:-1;background:radial-gradient(120% 90% at 50% 45%,transparent 55%,rgba(0,0,0,.55) 100%)}
html[data-theme=ivory] .intro::before,html[data-theme=blush] .intro::before{background:radial-gradient(120% 90% at 50% 45%,transparent 55%,rgba(20,10,5,.5) 100%)}
.intro .intro-in,.intro .lang-intro{z-index:5}


/* ---------- ornaments (our own SVG line-art, foil-tinted via masks) ---------- */
.lux-orn{display:block;pointer-events:none;background:var(--foil);-webkit-mask:var(--mk) center/contain no-repeat;mask:var(--mk) center/contain no-repeat}
.ornament,.ornament-sm{background:var(--foil)!important;-webkit-mask:var(--mk-div) center/contain no-repeat;mask:var(--mk-div) center/contain no-repeat;width:250px;height:34px;transform-origin:center}
.ornament-sm{width:150px;height:20px}
.js .ornament.rv{transform:scaleX(.2);filter:none;transition:opacity 1.2s,transform 1.6s cubic-bezier(.2,.7,.2,1)}
.js .ornament.rv.in{transform:none}
.frame{border-color:rgba(201,163,90,.6);outline-color:rgba(201,163,90,.3);outline-offset:-10px;box-shadow:0 30px 60px -30px rgba(80,55,20,.35),inset 0 0 60px rgba(201,163,90,.06);border-radius:4px}
.ivory .frame{background:linear-gradient(180deg,rgba(255,255,255,.62),rgba(255,255,255,.32))}
.corners::before,.corners::after,.frame::before,.frame::after{width:84px;height:84px;background:var(--foil)!important;-webkit-mask:var(--mk-corner) 0 0/contain no-repeat;mask:var(--mk-corner) 0 0/contain no-repeat;top:6px;left:6px}
.frame::after{left:auto;right:6px;top:6px;transform:scaleX(-1)}
.corners::before{top:auto;bottom:6px;left:6px;transform:scaleY(-1)}
.corners::after{top:auto;bottom:6px;left:auto;right:6px;transform:scale(-1)}
.frame{padding:62px 30px}
/* the cover arch gets a crown of leaves and a softly lit rim */
.arch{position:relative;background:var(--foil);box-shadow:0 40px 90px rgba(0,0,0,.6),0 0 0 1px rgba(255,236,190,.25)}
.arch-in{position:relative;overflow:hidden}
.arch-in::after{content:"";position:absolute;inset:0;pointer-events:none;border-radius:inherit;background:linear-gradient(115deg,transparent 35%,rgba(255,240,200,.10) 48%,transparent 60%) no-repeat;background-size:300% 100%;background-position:150% 0}
body.opened .cover:not(.closing) .arch-in::after{animation:archglint 2.4s 1s cubic-bezier(.3,0,.2,1) both}
@keyframes archglint{to{background-position:-50% 0}}
.lux-crown{position:absolute;left:50%;top:-30px;width:250px;height:94px;margin-left:-125px;z-index:3;--mk:var(--mk-crown)}
.arch.small .lux-crown{transform:scale(.8);top:-26px}
.lux-ac{position:absolute;bottom:14px;width:70px;height:70px;z-index:2;--mk:var(--mk-corner);opacity:.9}
.lux-ac.l{left:14px;transform:scaleY(-1)}.lux-ac.r{right:14px;transform:scale(-1)}
.cover .arch{margin-top:24px}

/* monogram: double foil ring */
.mono{border:0;box-shadow:none;width:126px;height:126px}
.mono::after{content:"";position:absolute;inset:0;border-radius:50%;padding:1.5px;background:var(--foil);-webkit-mask:linear-gradient(#000 0 0) content-box,linear-gradient(#000 0 0);-webkit-mask-composite:xor;mask-composite:exclude}
.mono::before{inset:-12px;border:1px solid rgba(201,163,90,.35);border-style:dashed}

/* ---------- personalised guest name ---------- */
.intro-guest{font-size:34px;line-height:1.35;margin:0 0 28px;padding:0 14px}
html[dir=ltr] .intro-guest{font-size:44px}
.intro-guest:not(:empty)::after{content:"";display:block;width:170px;height:18px;margin:6px auto 0;background:var(--foil);-webkit-mask:var(--mk-div) center/contain no-repeat;mask:var(--mk-div) center/contain no-repeat;-webkit-text-fill-color:initial}
.intro-guest:empty{margin-bottom:18px}
.cover-guest{display:inline-block;position:relative;margin:12px auto 2px;padding:6px 26px;font-size:15px;color:var(--gold-l);border-top:1px solid rgba(201,163,90,.55);border-bottom:1px solid rgba(201,163,90,.55);background:linear-gradient(90deg,transparent,rgba(201,163,90,.12),transparent)}
.cover-guest::before,.cover-guest::after{content:"";position:absolute;top:50%;width:7px;height:7px;margin-top:-3.5px;background:var(--gold);transform:rotate(45deg)}
.cover-guest::before{left:6px}.cover-guest::after{right:6px}
html[dir=ltr] .cover-guest{font-size:19px}

/* ---------- envelope: richer paper, foil edge, wax seal ---------- */
.env-back,.env-front,.env-flap i{background-blend-mode:multiply}
.env-front{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='240' height='240'%3E%3Cfilter id='f'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.012 .35' numOctaves='3' seed='4' stitchTiles='stitch'/%3E%3CfeColorMatrix values='0 0 0 0 .45 0 0 0 0 .38 0 0 0 0 .25 0 0 0 .09 -.01'/%3E%3C/filter%3E%3Crect width='240' height='240' filter='url(#f)'/%3E%3C/svg%3E"),linear-gradient(180deg,var(--env3),var(--env4))}
.env-flap i{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='240' height='240'%3E%3Cfilter id='f'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.012 .35' numOctaves='3' seed='4' stitchTiles='stitch'/%3E%3CfeColorMatrix values='0 0 0 0 .45 0 0 0 0 .38 0 0 0 0 .25 0 0 0 .09 -.01'/%3E%3C/filter%3E%3Crect width='240' height='240' filter='url(#f)'/%3E%3C/svg%3E"),linear-gradient(180deg,var(--env5),var(--env6));border-top:0}
.env-flap i::before{content:"";position:absolute;inset:0;clip-path:polygon(0 0,100% 0,50% 100%);background:linear-gradient(180deg,rgba(255,255,255,.18),transparent 40%)}
.env-letter{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='240' height='240'%3E%3Cfilter id='f'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.012 .35' numOctaves='3' seed='4' stitchTiles='stitch'/%3E%3CfeColorMatrix values='0 0 0 0 .45 0 0 0 0 .38 0 0 0 0 .25 0 0 0 .09 -.01'/%3E%3C/filter%3E%3Crect width='240' height='240' filter='url(#f)'/%3E%3C/svg%3E");background-color:var(--paper)}
.seal::after{content:"";position:absolute;inset:0;border-radius:50%;pointer-events:none;background:radial-gradient(60% 50% at 35% 28%,rgba(255,250,230,.55),transparent 60%),radial-gradient(70% 70% at 70% 80%,rgba(60,30,5,.35),transparent 70%)}
/* cracking wax: two halves fly apart, gold dust bursts from the break */
.lux-half{position:fixed;z-index:120;pointer-events:none;will-change:transform,opacity}
.lux-half>*{position:absolute!important;inset:0!important;margin:0!important;left:0!important;top:0!important;width:100%!important;height:100%!important;animation:none!important;transition:none!important;opacity:1!important;transform:none!important}
.lux-half.a{clip-path:polygon(0 0,52% 0,46% 22%,55% 41%,44% 60%,53% 79%,47% 100%,0 100%);animation:halfA 1.25s cubic-bezier(.3,.1,.4,1) forwards}
.lux-half.b{clip-path:polygon(52% 0,100% 0,100% 100%,47% 100%,53% 79%,44% 60%,55% 41%,46% 22%);animation:halfB 1.25s cubic-bezier(.3,.1,.4,1) forwards}
@keyframes halfA{0%{transform:none}12%{transform:translate(-3px,0) rotate(-2deg)}100%{transform:translate(-90px,260px) rotate(-62deg);opacity:0}}
@keyframes halfB{0%{transform:none}12%{transform:translate(3px,0) rotate(2deg)}100%{transform:translate(95px,250px) rotate(70deg);opacity:0}}
.lux-flash{position:fixed;z-index:119;pointer-events:none;width:340px;height:340px;margin:-170px 0 0 -170px;border-radius:50%;background:radial-gradient(circle,rgba(255,244,210,.95) 0%,rgba(255,220,150,.45) 18%,rgba(255,200,120,0) 60%);animation:flash 1.1s ease-out forwards}
@keyframes flash{0%{transform:scale(.2);opacity:0}15%{opacity:1}100%{transform:scale(2.2);opacity:0}}
.intro.lux-cracked .seal,.lux-hide{opacity:0!important;transition:none!important}

/* cinematic hand-off from the opening to the cover */
.intro.gone{transform:scale(1.12);transition:opacity 1.1s ease,visibility 1.1s,transform 1.4s cubic-bezier(.2,.7,.2,1)}
body.opened #cover .arch{animation:archin 1.7s cubic-bezier(.16,.8,.2,1) both}
@keyframes archin{0%{transform:scale(.94) translateY(28px);opacity:0}100%{transform:none;opacity:1}}

/* intro hint: gold pill with a tap ripple */
.intro-hint{display:inline-block;padding:8px 18px;border-radius:999px;border:1px solid rgba(201,163,90,.45);background:rgba(10,8,5,.35);-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}
html[data-theme=ivory] .intro-hint,html[data-theme=blush] .intro-hint{background:rgba(255,255,255,.12)}

/* ---------- photo: arch frame with parallax ---------- */
.hero-photo{background:var(--foil);overflow:hidden}
.hero-photo img{will-change:transform;transform:scale(1.12)}
.hero-photo figcaption{background:linear-gradient(transparent,rgba(8,7,5,.88));-webkit-text-fill-color:transparent}
.hero-photo figcaption>*{-webkit-text-fill-color:transparent}

/* ---------- cards ---------- */
.card,.venue{position:relative;border:1px solid transparent;background:linear-gradient(180deg,rgba(255,255,255,.055),rgba(255,255,255,.01)) padding-box,linear-gradient(180deg,var(--onyx2),var(--onyx)) padding-box,linear-gradient(160deg,rgba(236,213,156,.75),rgba(201,163,90,.15) 40%,rgba(201,163,90,.15) 60%,rgba(236,213,156,.6)) border-box;box-shadow:0 24px 50px -24px rgba(0,0,0,.7),inset 0 1px 0 rgba(255,240,200,.1);border-radius:18px}
html[data-theme=ivory] .dark .card,html[data-theme=blush] .dark .card,html[data-theme=ivory] .dark .venue,html[data-theme=blush] .dark .venue{background:linear-gradient(180deg,rgba(255,255,255,.8),rgba(255,255,255,.5)) padding-box,linear-gradient(160deg,rgba(180,138,62,.7),rgba(180,138,62,.12) 40%,rgba(180,138,62,.12) 60%,rgba(180,138,62,.55)) border-box}
.card .ico{width:54px;height:54px;margin:0 auto;display:grid;place-items:center;border-radius:50%;color:var(--gold-l);background:radial-gradient(circle at 35% 30%,rgba(255,240,200,.18),transparent 60%);box-shadow:inset 0 0 0 1px rgba(201,163,90,.55),0 0 0 5px rgba(201,163,90,.06)}
.card .ico svg{width:28px;height:28px}
.card::before{content:"";position:absolute;top:-1px;left:50%;width:46px;height:2px;margin-left:-23px;background:var(--foil);border-radius:2px}

/* ---------- map card ---------- */
.mapbox{position:relative;min-height:230px;border:1px solid transparent;border-radius:20px;background:linear-gradient(180deg,var(--onyx2),var(--ink)) padding-box,var(--foil) border-box;box-shadow:0 30px 60px -28px rgba(0,0,0,.75);isolation:isolate}
.mapbox:not(.loaded)::before{content:"";position:absolute;inset:0;z-index:-1;background:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 400 300' preserveAspectRatio='xMidYMid slice'%3E%3Cg fill='none' stroke='#c9a35a' stroke-linecap='round'%3E%3Cpath d='M0 70 C80 60 120 90 200 80 S330 50 400 70' stroke-width='3' stroke-opacity='0.55'/%3E%3Cpath d='M0 150 C90 140 160 170 240 150 S350 130 400 160' stroke-width='2' stroke-opacity='0.4'/%3E%3Cpath d='M60 0 C70 60 50 120 80 180 S100 260 90 300' stroke-width='2.4' stroke-opacity='0.45'/%3E%3Cpath d='M250 0 C240 70 270 130 255 200 S240 260 260 300' stroke-width='1.6' stroke-opacity='0.35'/%3E%3Cpath d='M0 230 L400 210' stroke-width='1' stroke-opacity='0.3'/%3E%3Cpath d='M150 0 L190 300' stroke-width='1.2' stroke-opacity='0.3'/%3E%3Cpath d='M320 0 C330 90 300 200 340 300' stroke-width='1' stroke-opacity='0.25'/%3E%3Cpath d='M110 100 C140 95 170 115 205 105' stroke-width='6' stroke-opacity='.18'/%3E%3Ccircle cx='290' cy='95' r='26' stroke-opacity='.25' stroke-dasharray='2 5'/%3E%3Ccircle cx='120' cy='215' r='18' stroke-opacity='.2'/%3E%3C/g%3E%3C/svg%3E") center/cover no-repeat;opacity:.9}
.mapbox:not(.loaded)::after{content:"";position:absolute;inset:0;z-index:-1;background:radial-gradient(60% 70% at 50% 45%,transparent,var(--ink))}
html[data-theme=ivory] .mapbox,html[data-theme=blush] .mapbox{background:linear-gradient(180deg,#fffaf0,#f3e8d4) padding-box,var(--foil) border-box}
html[data-theme=ivory] .mapbox:not(.loaded)::after,html[data-theme=blush] .mapbox:not(.loaded)::after{background:radial-gradient(60% 70% at 50% 45%,transparent,rgba(255,250,240,.75))}
.lux-map{display:grid;justify-items:center;gap:10px;padding:26px 18px}
.lux-pin{position:relative;width:46px;height:46px;display:grid;place-items:center;color:#1d1609;border-radius:50% 50% 50% 0;transform:rotate(-45deg);background:var(--foil);box-shadow:0 8px 18px rgba(0,0,0,.45)}
.lux-pin svg{width:22px;height:22px;transform:rotate(45deg)}
.lux-pin::after{content:"";position:absolute;left:50%;top:50%;width:46px;height:46px;margin:-23px;border-radius:50%;border:1px solid var(--gold-l);animation:ping 2.4s ease-out infinite}
@keyframes ping{0%{transform:rotate(45deg) translate(14px,14px) scale(.4);opacity:.9}100%{transform:rotate(45deg) translate(14px,14px) scale(2.2);opacity:0}}
.lux-map b{font-family:var(--ar-cal);font-size:24px;line-height:1.3;color:var(--gold-l)}
html[dir=ltr] .lux-map b{font-family:var(--lat);font-style:italic;font-weight:500;font-size:24px}
.lux-map small{font-size:14px;opacity:.75;max-width:26em;line-height:1.5}
.mapbox iframe{height:320px;filter:grayscale(.35) sepia(.3) contrast(.95) brightness(.95)}

/* ---------- countdown ---------- */
.countdown .frame{background:linear-gradient(180deg,rgba(255,255,255,.7),rgba(255,255,255,.35))}
.cd{gap:10px;perspective:600px}
.cd>div{position:relative;border-radius:14px;padding:16px 2px 12px;background:linear-gradient(180deg,#1d1810 0%,#14110b 49.5%,#0c0a06 50.5%,#15120c 100%);box-shadow:inset 0 0 0 1px rgba(201,163,90,.55),inset 0 1px 0 rgba(255,240,200,.18),0 14px 26px -10px rgba(40,25,5,.55)}
.cd>div::before{content:"";position:absolute;left:6px;right:6px;top:calc(50% - 10px);height:1px;background:rgba(0,0,0,.6);box-shadow:0 1px 0 rgba(255,240,200,.08)}
.cd>div::after{content:"";position:absolute;top:calc(50% - 13px);width:5px;height:7px;left:-1px;border-radius:0 3px 3px 0;background:#0a0805;box-shadow:inset 0 0 0 1px rgba(201,163,90,.4);transform:none}
.cd b{font-size:clamp(32px,9.6vw,46px);font-weight:600;letter-spacing:.5px}
.cd span{color:var(--gold-l);font-size:11.5px;opacity:.9}
.cd-classic .cd b.flip{animation:foil 6.5s cubic-bezier(.4,0,.2,1) infinite,flip .6s cubic-bezier(.3,1.3,.5,1)!important}
@keyframes flip{0%{transform:rotateX(-90deg);opacity:.2}100%{transform:none;opacity:1}}
.cd b{transform-origin:50% 60%;backface-visibility:hidden}
/* gold rings: progress arcs drawn by lux.js */
.cd-rings .cd>div{background:radial-gradient(circle at 50% 35%,#211b11,#0c0a06 70%);border:0;box-shadow:0 14px 26px -10px rgba(40,25,5,.55)}
.cd-rings .cd>div::before,.cd-rings .cd>div::after{display:none}
.lux-ring{position:absolute;inset:0;width:100%;height:100%;transform:rotate(-90deg);pointer-events:none}
.lux-ring circle{fill:none;stroke-width:2.4}
.lux-ring .bg{stroke:rgba(201,163,90,.18)}
.lux-ring .fg{stroke:url(#luxFoilGrad);stroke-linecap:round;transition:stroke-dashoffset .9s cubic-bezier(.3,.7,.2,1)}
.cd-rings .cd{gap:6px}.cd-rings .cd>div{min-width:0;padding:0}
.cd-rings .cd b{font-size:clamp(22px,6.6vw,34px)}.cd-rings .cd span{font-size:10px}
.countdown .frame{padding-left:20px;padding-right:20px}
.cd-roll .cd>div{overflow:hidden}

/* ---------- RSVP card ---------- */
.rsvp .form{position:relative;padding:34px 22px 26px;border-radius:22px;border:1px solid transparent;background:linear-gradient(180deg,rgba(255,255,255,.06),rgba(255,255,255,.01)) padding-box,linear-gradient(180deg,var(--onyx2),var(--ink)) padding-box,linear-gradient(160deg,rgba(236,213,156,.8),rgba(201,163,90,.12) 35%,rgba(201,163,90,.12) 65%,rgba(236,213,156,.7)) border-box;box-shadow:0 40px 70px -30px rgba(0,0,0,.8),inset 0 1px 0 rgba(255,240,200,.12)}
.rsvp .form::before{content:"";position:absolute;left:50%;top:-17px;width:34px;height:34px;margin-left:-17px;border-radius:50%;background:var(--foil);box-shadow:0 6px 14px rgba(0,0,0,.4),inset 0 0 0 5px rgba(0,0,0,.08)}
.rsvp .form::after{content:"";position:absolute;left:50%;top:-9px;width:18px;height:18px;margin-left:-9px;background:#3a2a0e;-webkit-mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M12 20.5c-5.2-3.6-8.5-6.6-8.5-10A4.4 4.4 0 0 1 12 7.6a4.4 4.4 0 0 1 8.5 2.9c0 3.4-3.3 6.4-8.5 10z'/%3E%3C/svg%3E") center/contain no-repeat;mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M12 20.5c-5.2-3.6-8.5-6.6-8.5-10A4.4 4.4 0 0 1 12 7.6a4.4 4.4 0 0 1 8.5 2.9c0 3.4-3.3 6.4-8.5 10z'/%3E%3C/svg%3E") center/contain no-repeat}
html[data-theme=ivory] .rsvp .form,html[data-theme=blush] .rsvp .form{background:linear-gradient(180deg,rgba(255,255,255,.85),rgba(255,255,255,.6)) padding-box,linear-gradient(160deg,rgba(180,138,62,.75),rgba(180,138,62,.12) 35%,rgba(180,138,62,.12) 65%,rgba(180,138,62,.6)) border-box;box-shadow:0 30px 60px -30px rgba(120,80,30,.35)}
.fld input,.fld textarea{background:rgba(0,0,0,.18);border-color:rgba(201,163,90,.38);border-radius:14px;padding:13px 15px}
html[data-theme=ivory] .seg span,html[data-theme=blush] .seg span{color:var(--on-dark);background:rgba(255,255,255,.7)}
html[data-theme=ivory] .seg input:checked+span,html[data-theme=blush] .seg input:checked+span{color:#1d1609}
html[data-theme=ivory] .fld input,html[data-theme=ivory] .fld textarea,html[data-theme=blush] .fld input,html[data-theme=blush] .fld textarea{background:rgba(255,255,255,.9)}
.seg span{border-radius:14px;border-color:rgba(201,163,90,.4);background:rgba(255,255,255,.02)}
.seg input:checked+span{background:var(--foil);box-shadow:0 8px 18px -6px rgba(160,120,40,.6),inset 0 1px 0 rgba(255,255,255,.4)}
.step{border-radius:14px}
.btn{background:var(--glint),var(--foil);background-size:260% 100%,100% 100%;background-repeat:no-repeat;background-position:160% 0,0 0;box-shadow:0 10px 24px -8px rgba(120,85,25,.65),inset 0 1px 0 rgba(255,255,255,.45),inset 0 -1px 0 rgba(80,50,10,.3);transition:background-position 1.1s ease,transform .2s}
.btn:hover,.btn:focus-visible{background-position:-60% 0,0 0}
.btn.ghost{background:transparent}
.btn.wa{min-height:54px;font-size:16px;animation:btnglint 5s 2s ease-in-out infinite}
@keyframes btnglint{0%,70%{background-position:160% 0,0 0}100%{background-position:-60% 0,0 0}}

/* ---------- music: a gold coin button ---------- */
.music{padding:5px 15px 5px 5px;gap:10px;border:1px solid rgba(201,163,90,.5);background:rgba(10,8,5,.72);box-shadow:0 10px 24px rgba(0,0,0,.4)}
html[dir=rtl] .music{padding:5px 5px 5px 15px}
.music-ico{width:38px;height:38px;border-radius:50%;justify-content:center;align-items:center;gap:2.5px;background:var(--glint),var(--foil);background-size:260% 100%,100% 100%;background-repeat:no-repeat;background-position:160% 0,0 0;box-shadow:inset 0 1px 0 rgba(255,255,255,.5),inset 0 -2px 4px rgba(90,60,15,.4),0 0 0 3px rgba(201,163,90,.18)}
.music-ico i{width:2.5px;height:5px;background:#3a2a0e}
.music.on .music-ico{animation:coin 3.2s ease-in-out infinite}
.music.on .music-ico i{animation:eq2 .9s ease-in-out infinite}
@keyframes eq2{50%{height:16px}}
@keyframes coin{0%,100%{box-shadow:inset 0 1px 0 rgba(255,255,255,.5),inset 0 -2px 4px rgba(90,60,15,.4),0 0 0 3px rgba(201,163,90,.18)}50%{box-shadow:inset 0 1px 0 rgba(255,255,255,.5),inset 0 -2px 4px rgba(90,60,15,.4),0 0 0 7px rgba(201,163,90,.08),0 0 18px rgba(240,200,120,.45)}}
.music-lbl{color:var(--gold-l)}
html[data-theme=ivory] .music,html[data-theme=blush] .music{background:rgba(255,252,246,.85)}
html[data-theme=ivory] .music-lbl,html[data-theme=blush] .music-lbl{color:var(--gold-d)}
.lang{border-color:rgba(201,163,90,.5)}
.lang button.on{background:var(--foil)}

/* ---------- scroll reveals: softer, staggered, per-section ---------- */
.js .rv{transform:translateY(34px) scale(.985)}
html[dir=ltr] .sec .h.rv.in{animation:hin 1.4s cubic-bezier(.2,.7,.2,1)}
@keyframes hin{0%{letter-spacing:.12em;opacity:0}100%{letter-spacing:inherit;opacity:1}}
.lux-par{will-change:transform}

/* ---------- misc polish ---------- */
.progress{height:2px}.progress i{background:var(--foil);box-shadow:0 0 8px rgba(240,200,120,.6)}
.gal-g img,.venue .vimg{transition:transform 1.2s cubic-bezier(.2,.7,.2,1)}
.tl{--tlc:var(--gold)}
.closing .names-s{font-size:46px}
.foot{position:relative}


/* light themes: deeper foil so gold text stays legible on cream and blush paper */
html[data-theme=ivory] .names,html[data-theme=ivory] .names-s,html[data-theme=ivory] .mono span,html[data-theme=ivory] .h,html[data-theme=ivory] .dateblock b,html[data-theme=ivory] .hero-photo figcaption,html[data-theme=ivory] .thanks-t,
html[data-theme=blush] .names,html[data-theme=blush] .names-s,html[data-theme=blush] .mono span,html[data-theme=blush] .h,html[data-theme=blush] .dateblock b,html[data-theme=blush] .thanks-t,
.ivory .h,.frame .h{--foil:var(--foil-ink)}
:root{--foil-ink:linear-gradient(100deg,#5a3f12 0%,#8a6526 14%,#b8913f 26%,#d9b86d 31%,#9c7633 40%,#5f4415 50%,#8e6a2a 60%,#c49a4e 68%,#e0c07a 71%,#9a7430 80%,#5d4214 92%,#86622a 100%)}
html[data-theme=blush]{--foil-ink:linear-gradient(100deg,#5e3121 0%,#8c5238 14%,#b77a5c 26%,#d9a083 31%,#9c6448 40%,#62351f 50%,#8f5a40 60%,#c08669 68%,#dcab90 71%,#9a6347 80%,#5f3322 92%,#875038 100%)}

@media (prefers-reduced-motion:reduce){
  .names,.names-s,.h,.cd b,.mono span,.env-names,.intro-guest,.btn,.music-ico{animation:none!important}
  .lux-half,.lux-flash{display:none}
}
