/* Signature openings (see scenes.js). Colours come from the invitation's own theme variables. Timeline classes on .seal-stage: breaking (tap), flap (stage 2), slide (stage 3). */
.env.scene{aspect-ratio:3/4;width:min(310px,88%);margin-top:20px;perspective:1100px;filter:drop-shadow(0 26px 30px rgba(0,0,0,.55));overflow:visible}
.env.scene::before{display:none}
.scene-btn{position:absolute;z-index:9;border:0;background:none;padding:0;cursor:pointer;-webkit-tap-highlight-color:transparent}
.scene-btn:focus-visible{outline:3px solid var(--accent);outline-offset:6px;border-radius:50%}
.scene svg{display:block}
.scene .pt{pointer-events:none}

/* ---------- jharokha ---------- */
.sc-jharokha .jh-wall{position:absolute;inset:0;width:100%;height:100%;border-radius:10px}
.sc-jharokha .jh-bloom{position:absolute;left:50%;top:60%;width:20px;height:20px;margin:-10px 0 0 -10px;border-radius:50%;background:radial-gradient(circle,rgba(255,230,160,.95),rgba(255,200,90,.5) 40%,transparent 70%);opacity:0;z-index:4;pointer-events:none}
.flap .sc-jharokha .jh-bloom{animation:jhbloom 1.3s ease-out forwards}
@keyframes jhbloom{0%{opacity:0;transform:scale(1)}25%{opacity:1}100%{opacity:0;transform:scale(30)}}
.sc-jharokha .jh-rays,.sc-jharokha .jh-lotus{transition:opacity 1.2s}
.sc-jharokha .jh-name{position:absolute;left:24%;right:24%;top:52%;bottom:19%;display:flex;align-items:center;justify-content:center;text-align:center;color:var(--cardInk);font:600 clamp(18px,6.4vw,26px)/1.12 var(--display,"Cormorant Garamond",Georgia,serif);font-style:italic;padding:0 8px;z-index:1;transition:transform 1.4s cubic-bezier(.2,.8,.2,1),opacity 1s}
.sc-jharokha .jh-name span{word-break:break-word}
.sc-jharokha .jh-leaf{position:absolute;inset:0;width:100%;height:100%;z-index:3;transition:transform 1.25s cubic-bezier(.45,.05,.25,1),filter 1.2s;backface-visibility:hidden}
.sc-jharokha .jh-leaf.l{transform-origin:22% 50%}.sc-jharokha .jh-leaf.r{transform-origin:78% 50%}
.sc-jharokha.flapped .jh-leaf.l,.flap .sc-jharokha .jh-leaf.l,.slide .sc-jharokha .jh-leaf.l{transform:rotateY(-112deg);filter:brightness(.7)}
.flap .sc-jharokha .jh-leaf.r,.slide .sc-jharokha .jh-leaf.r{transform:rotateY(112deg);filter:brightness(.7)}
.sc-jharokha .jh-lamp{animation:jhsway 4.4s ease-in-out infinite;transform-box:view-box}
.sc-jharokha .jh-lamp.b{animation-delay:-2.2s}
@keyframes jhsway{50%{transform:rotate(3.5deg)}0%,100%{transform:rotate(-3.5deg)}}
.sc-jharokha .jh-flame{animation:jhflick 1.6s ease-in-out infinite;transform-origin:center;transform-box:fill-box}
@keyframes jhflick{0%,100%{transform:scale(1,1)}30%{transform:scale(.88,1.12)}60%{transform:scale(1.06,.94)}}
.sc-jharokha .jh-halo{animation:jhglow 3s ease-in-out infinite}
@keyframes jhglow{50%{opacity:.55}}
.breaking .sc-jharokha .jh-halo{animation:none;opacity:1}
.sc-jharokha .jh-knob{display:block;width:30px;height:30px;border-radius:50%;background:radial-gradient(circle at 35% 30%,color-mix(in srgb,var(--accent) 45%,#fff),var(--accent) 55%,color-mix(in srgb,var(--accent) 55%,#000));box-shadow:0 0 0 3px color-mix(in srgb,var(--accent) 50%,#000),0 6px 14px rgba(0,0,0,.5);animation:jhpulse 2.2s ease-in-out infinite}
@keyframes jhpulse{50%{box-shadow:0 0 0 3px color-mix(in srgb,var(--accent) 50%,#000),0 0 0 11px rgba(255,214,107,.18),0 6px 14px rgba(0,0,0,.5)}}
.sc-jharokha .scene-btn{left:50%;top:58%;transform:translate(-50%,-50%);z-index:5}
.breaking .sc-jharokha .scene-btn{opacity:0;transition:opacity .3s}
.slide .sc-jharokha .jh-name{transform:scale(1.35);opacity:0}
.slide .sc-jharokha .jh-wall{transform:scale(1.5);transition:transform 1.3s cubic-bezier(.5,0,.2,1),opacity 1s;opacity:.0}
.slide .sc-jharokha .jh-leaf{opacity:0;transition:opacity .9s}
.jh-petals{position:absolute;inset:0;pointer-events:none;z-index:6}
.jh-petals i{position:absolute;left:50%;top:56%;width:var(--sz);height:calc(var(--sz)*1.3);background:var(--hue);border-radius:60% 0 60% 0;opacity:0;transform:translate(-50%,-50%)}
.flap .jh-petals i,.slide .jh-petals i{animation:petalburst 2.1s cubic-bezier(.15,.7,.3,1) var(--dl) forwards}
@keyframes petalburst{0%{opacity:0;transform:translate(-50%,-50%) scale(.3) rotate(0)}12%{opacity:1}100%{opacity:0;transform:translate(calc(-50% + var(--tx)),calc(-50% + var(--ty) + 180px)) rotate(var(--rot)) scale(1)}}
@media (prefers-reduced-motion:reduce){.sc-jharokha .jh-lamp,.sc-jharokha .jh-flame,.sc-jharokha .jh-halo,.sc-jharokha .jh-knob{animation:none}.flap .jh-petals i,.slide .jh-petals i{animation:none;opacity:0}}

/* ---------- mehndi: henna draws itself, then the names appear in the centre ---------- */
.sc-mehndi .mh-art{position:absolute;left:0;top:0;width:100%;height:auto;border-radius:50%}
.sc-mehndi .hn{stroke:#8a3b12;stroke-dasharray:1;stroke-dashoffset:1;animation:hndraw 1.5s ease-in-out var(--d) forwards}
@keyframes hndraw{to{stroke-dashoffset:0}}
.sc-mehndi .hd{fill:#8a3b12;opacity:0;animation:hdpop .5s ease var(--d) forwards}
@keyframes hdpop{from{opacity:0}to{opacity:.9}}
.sc-mehndi .mh-name{position:absolute;left:50%;top:37.5%;width:56%;min-height:26%;transform:translate(-50%,-50%) scale(.4);opacity:0;display:flex;align-items:center;justify-content:center;gap:6px;text-align:center;background:var(--card);color:var(--cardInk);border:2px solid var(--accent);border-radius:50%/44%;padding:8px 14px;font:600 clamp(17px,6vw,25px)/1.12 var(--display,"Cormorant Garamond",Georgia,serif);font-style:italic;box-shadow:0 0 0 5px color-mix(in srgb,var(--card) 80%,transparent),0 8px 22px rgba(0,0,0,.35);transition:transform 1.2s cubic-bezier(.2,1.3,.4,1),opacity .8s;z-index:2}
.sc-mehndi .mh-name span{word-break:break-word}
.sc-mehndi .mh-name i{display:none}
.flap .sc-mehndi .mh-name,.slide .sc-mehndi .mh-name{transform:translate(-50%,-50%) scale(1);opacity:1}
.sc-mehndi .scene-btn{left:50%;bottom:2%;transform:translateX(-50%);width:60px;z-index:5}
.sc-mehndi .mh-cone{width:34px;height:auto;display:block;margin:0 auto;transform:rotate(-24deg);transform-origin:50% 100%;animation:mhwig 2.4s ease-in-out infinite;filter:drop-shadow(0 4px 6px rgba(0,0,0,.45))}
@keyframes mhwig{50%{transform:rotate(-10deg) translateY(-4px)}}
.breaking .sc-mehndi .scene-btn{opacity:0;transition:opacity .3s}
.slide .sc-mehndi .mh-art,.slide .sc-mehndi .mh-name{transform:scale(1.3);opacity:0;transition:transform 1.2s cubic-bezier(.5,0,.2,1),opacity .9s}
.slide .sc-mehndi .mh-name{transform:translate(-50%,-50%) scale(1.3)}

/* ---------- diya: dark lamps are lit one by one, the glow floods the page ---------- */
.sc-diya .dy-art{position:absolute;inset:0;width:100%;height:100%;border-radius:12px;transition:transform 1.2s cubic-bezier(.5,0,.2,1),opacity .9s}
.sc-diya .dy-fl{opacity:0;transform:scale(0);transform-origin:0 -6px}
.sc-diya .dy-flame{transform-box:fill-box;transform-origin:50% 100%;animation:dyflick 1.3s ease-in-out infinite}
@keyframes dyflick{0%,100%{transform:scale(1,1)}30%{transform:scale(.9,1.1) skewX(2deg)}60%{transform:scale(1.05,.95) skewX(-2deg)}}
.sc-diya .dy-halo{animation:dyglow 2.6s ease-in-out infinite}
@keyframes dyglow{50%{opacity:.6}}
.breaking .sc-diya .dy-fl,.flap .sc-diya .dy-fl,.slide .sc-diya .dy-fl{animation:dylit .8s cubic-bezier(.3,1.5,.5,1) calc(var(--i) * .24s) forwards}
@keyframes dylit{from{opacity:0;transform:scale(0)}to{opacity:1;transform:scale(1)}}
.sc-diya .dy-light{position:absolute;left:50%;top:62%;width:24px;height:24px;margin:-12px 0 0 -12px;border-radius:50%;background:radial-gradient(circle,rgba(255,226,150,.95),rgba(255,170,70,.5) 45%,transparent 70%);opacity:0;pointer-events:none;z-index:3}
.flap .sc-diya .dy-light{animation:dyflood 1.5s ease-out forwards}
@keyframes dyflood{0%{opacity:0;transform:scale(1)}30%{opacity:1}100%{opacity:0;transform:scale(26)}}
.sc-diya .dy-name{position:absolute;left:10%;right:10%;top:20%;text-align:center;color:#fff1cf;font:600 clamp(20px,7vw,30px)/1.15 var(--display,"Cormorant Garamond",Georgia,serif);font-style:italic;text-shadow:0 0 14px rgba(255,190,90,.85),0 2px 4px rgba(0,0,0,.5);opacity:0;transform:translateY(14px);transition:opacity 1.2s,transform 1.4s cubic-bezier(.2,.8,.2,1);z-index:2}
.flap .sc-diya .dy-name,.slide .sc-diya .dy-name{opacity:1;transform:none}
.sc-diya .scene-btn{left:50%;top:69%;transform:translate(-50%,-50%);z-index:5}
.sc-diya .dy-ring{display:block;width:66px;height:66px;border-radius:50%;border:2px solid color-mix(in srgb,var(--accent) 80%,#fff);box-shadow:0 0 18px rgba(255,200,110,.5);animation:dyring 2.2s ease-in-out infinite}
@keyframes dyring{0%,100%{transform:scale(.85);opacity:.5}50%{transform:scale(1.1);opacity:1}}
.breaking .sc-diya .scene-btn{opacity:0;transition:opacity .3s}
.slide .sc-diya .dy-art{transform:scale(1.25);opacity:0}
.slide .sc-diya .dy-name{transform:scale(1.3);opacity:0}

/* ---------- fanoos: lantern-lit night, the crescent rises, the lanterns brighten ---------- */
.sc-fanoos .fn-art{position:absolute;inset:0;width:100%;height:100%;border-radius:12px;transition:transform 1.2s cubic-bezier(.5,0,.2,1),opacity .9s,filter 1.2s}
.sc-fanoos .fn-star{fill:#fff;animation:fntw 3.2s ease-in-out infinite;animation-delay:var(--dl)}
@keyframes fntw{0%,100%{opacity:.25}50%{opacity:1}}
.sc-fanoos .fn-lan{animation:fnsw 5s ease-in-out infinite}
.sc-fanoos .fn-lan.b{animation-delay:-2s}.sc-fanoos .fn-lan.main{animation-delay:-1s}
@keyframes fnsw{0%,100%{transform:rotate(-2deg)}50%{transform:rotate(2deg)}}
.sc-fanoos .fn-halo{animation:fnglow 3s ease-in-out infinite;transform-box:fill-box;transform-origin:center}
@keyframes fnglow{50%{opacity:.6}}
.sc-fanoos .fn-moon{transform:translateY(80px);opacity:0;transition:transform 1.8s cubic-bezier(.2,.8,.2,1),opacity 1.2s}
.flap .sc-fanoos .fn-moon,.slide .sc-fanoos .fn-moon{transform:none;opacity:1}
.flap .sc-fanoos .fn-art{filter:brightness(1.18) saturate(1.15)}
.sc-fanoos .fn-name{position:absolute;left:12%;right:12%;top:79%;text-align:center;color:#fff1cf;font:600 clamp(19px,6.6vw,28px)/1.15 var(--display,"Cormorant Garamond",Georgia,serif);font-style:italic;letter-spacing:.12em;text-shadow:0 0 14px rgba(255,190,90,.85),0 2px 4px rgba(0,0,0,.55);opacity:0;transition:opacity 1.3s .2s,letter-spacing 1.6s cubic-bezier(.2,.8,.2,1) .2s;z-index:2}
.flap .sc-fanoos .fn-name,.slide .sc-fanoos .fn-name{opacity:1;letter-spacing:.02em}
.sc-fanoos .scene-btn{left:50%;top:58%;transform:translate(-50%,-50%);z-index:5}
.sc-fanoos .fn-tap{display:block;width:74px;height:74px;border-radius:50%;border:2px solid rgba(255,226,160,.8);box-shadow:0 0 20px rgba(255,190,90,.55);animation:dyring 2.2s ease-in-out infinite}
.breaking .sc-fanoos .scene-btn{opacity:0;transition:opacity .3s}
.slide .sc-fanoos .fn-art{transform:scale(1.25);opacity:0}
.slide .sc-fanoos .fn-name{opacity:0}

/* ---------- genda: the marigold gate parts, petals fall, the names appear ---------- */
.sc-genda .gd-art{position:absolute;inset:0;width:100%;height:100%;border-radius:12px;transition:opacity 1s .2s,transform 1.3s cubic-bezier(.5,0,.2,1)}
.sc-genda .gd-str{animation:gdsw 4.2s ease-in-out infinite;animation-delay:calc(var(--ph) * -1)}
@keyframes gdsw{0%,100%{transform:rotate(-1.6deg)}50%{transform:rotate(1.6deg)}}
.sc-genda .gd-col{transition:transform 1.5s cubic-bezier(.5,0,.2,1),opacity 1.2s}
.flap .sc-genda .gd-col.l,.slide .sc-genda .gd-col.l{transform:translateX(-96px);opacity:0}
.flap .sc-genda .gd-col.r,.slide .sc-genda .gd-col.r{transform:translateX(96px);opacity:0}
.sc-genda .gd-name{position:absolute;left:20%;right:20%;top:49%;transform:translateY(-50%) scale(.85);text-align:center;color:var(--cardInk);font:600 clamp(20px,7vw,30px)/1.12 var(--display,"Cormorant Garamond",Georgia,serif);font-style:italic;opacity:0;transition:opacity 1.1s .3s,transform 1.4s cubic-bezier(.2,.8,.2,1) .3s;z-index:2}
.sc-genda .gd-name span{word-break:break-word}
.flap .sc-genda .gd-name,.slide .sc-genda .gd-name{opacity:1;transform:translateY(-50%) scale(1)}
.sc-genda .gd-petals{position:absolute;inset:0;overflow:hidden;pointer-events:none;z-index:6;border-radius:12px}
.sc-genda .gd-petals i{position:absolute;top:-8%;width:var(--sz);height:calc(var(--sz) * 1.3);background:var(--hue);border-radius:60% 0 60% 0;opacity:0}
.breaking .sc-genda .gd-petals i,.flap .sc-genda .gd-petals i,.slide .sc-genda .gd-petals i{animation:gdfall var(--dur) linear var(--dl) forwards}
@keyframes gdfall{0%{opacity:0;transform:translate(0,0) rotate(0)}10%{opacity:1}85%{opacity:1}100%{opacity:0;transform:translate(var(--dx),520px) rotate(var(--rt))}}
.sc-genda .scene-btn{left:50%;top:50%;transform:translate(-50%,-50%);z-index:5}
.sc-genda .gd-bloom{display:block;width:58px;height:58px;filter:drop-shadow(0 4px 8px rgba(0,0,0,.35));animation:gdpulse 2s ease-in-out infinite}
@keyframes gdpulse{50%{transform:scale(1.12) rotate(14deg)}}
.breaking .sc-genda .scene-btn{opacity:0;transform:translate(-50%,-50%) scale(2.2);transition:opacity .5s,transform .5s}
.slide .sc-genda .gd-art{opacity:0;transform:scale(1.2)}
.slide .sc-genda .gd-name{opacity:0}

/* ---------- ambient particles over the opened card, one family per scene ---------- */
.inv-fx[data-fx="petal"] i{font-size:0;width:9px;height:12px;background:var(--accent);border-radius:60% 0 60% 0;bottom:auto;top:-16px;animation-name:petalfall}
.inv-fx[data-fx="ember"] i{font-size:0;width:4px;height:4px;border-radius:50%;background:#ffb44d;box-shadow:0 0 8px 2px rgba(255,170,60,.7)}
.inv-fx[data-fx="star"] i{font-size:0;width:3px;height:3px;border-radius:50%;background:#fff6cf;box-shadow:0 0 7px 2px rgba(255,240,180,.8)}
.inv-fx[data-fx="jasmine"] i{font-size:0;width:9px;height:9px;border-radius:50%;background:radial-gradient(circle,#fff 30%,#f5ecd0 70%);box-shadow:0 0 6px rgba(255,255,255,.7)}
@keyframes petalfall{0%{opacity:0;transform:translate(0,0) rotate(0)}12%{opacity:.9}100%{opacity:0;transform:translate(var(--x,20px),110vh) rotate(420deg)}}
@media (prefers-reduced-motion:reduce){.sc-mehndi .hn{animation:none;stroke-dashoffset:0}.sc-mehndi .hd{animation:none;opacity:.9}.sc-mehndi .mh-cone,.sc-diya .dy-flame,.sc-diya .dy-halo,.sc-diya .dy-ring,.sc-fanoos .fn-star,.sc-fanoos .fn-lan,.sc-fanoos .fn-halo,.sc-fanoos .fn-tap,.sc-genda .gd-str,.sc-genda .gd-bloom{animation:none}.sc-genda .gd-petals{display:none}}

/* ---------- premium typography: Cormorant Garamond for Latin, the Tiro family for each Indian script (right-to-left keeps Nastaliq) ---------- */
.inv:not([dir=rtl]){--display:"Cormorant Garamond","Tiro Devanagari Hindi","Tiro Bangla","Tiro Tamil","Tiro Gurmukhi","Tiro Telugu","Tiro Kannada",Georgia,"Times New Roman",serif}
.inv:not([dir=rtl]) .names,.inv:not([dir=rtl]) .sec,.inv:not([dir=rtl]) .ev-n{font-family:var(--display);font-weight:500}
.inv:not([dir=rtl]) .names{letter-spacing:.01em;line-height:1.08}
.inv:not([dir=rtl]) .sec{letter-spacing:.04em}

/* ---------- alpona: white rice-paste lines on a red floor (shares the mehndi drawing and reveal) ---------- */
.sc-alpona .hn{stroke:#fff}
.sc-alpona .hd{fill:#fff}
.sc-alpona .mh-cone{width:40px;transform:none;animation:alspin 6s linear infinite}
@keyframes alspin{to{transform:rotate(360deg)}}
@media (prefers-reduced-motion:reduce){.sc-alpona .mh-cone{animation:none}}

/* ---------- church: stained glass fills with light, a dove crosses ---------- */
.sc-church .ch-in,.sc-church .ch-wall{position:absolute;inset:0;width:100%;height:100%;border-radius:12px;transition:transform 1.2s cubic-bezier(.5,0,.2,1),opacity .9s}
.sc-church .ch-name{position:absolute;left:24%;right:24%;top:56%;transform:translateY(-50%);text-align:center;color:var(--cardInk);font:600 clamp(19px,6.6vw,28px)/1.12 var(--display,"Cormorant Garamond",Georgia,serif);font-style:italic;opacity:.0;transition:opacity 1.4s .3s;z-index:1}
.sc-church .ch-name span{word-break:break-word}
.sc-church .ch-glass{transition:opacity 1.5s ease-in}
.sc-church .ch-rose{transform-box:fill-box;transform-origin:center;animation:chturn 40s linear infinite}
@keyframes chturn{to{transform:rotate(360deg)}}
.flap .sc-church .ch-glass,.slide .sc-church .ch-glass{opacity:.05}
.flap .sc-church .ch-name,.slide .sc-church .ch-name{opacity:1}
.sc-church .ch-bloom{position:absolute;left:50%;top:37.5%;width:24px;height:24px;margin:-12px 0 0 -12px;border-radius:50%;background:radial-gradient(circle,rgba(255,244,200,.95),rgba(255,214,120,.5) 45%,transparent 70%);opacity:0;pointer-events:none;z-index:3}
.flap .sc-church .ch-bloom{animation:jhbloom 1.5s ease-out forwards}
.sc-church .ch-dove{position:absolute;left:-12%;bottom:12%;width:44px;opacity:0;z-index:4;filter:drop-shadow(0 3px 5px rgba(0,0,0,.35))}
.flap .sc-church .ch-dove,.slide .sc-church .ch-dove{animation:chdove 2.6s ease-in-out .2s forwards}
@keyframes chdove{0%{opacity:0;transform:translate(0,0) scale(.8)}15%{opacity:1}100%{opacity:0;transform:translate(420px,-300px) scale(1.2) rotate(-12deg)}}
.sc-church .scene-btn{left:50%;top:37.5%;transform:translate(-50%,-50%);z-index:5}
.sc-church .ch-tap{display:block;width:84px;height:84px;border-radius:50%;border:2px solid rgba(255,244,200,.9);box-shadow:0 0 22px rgba(255,214,120,.7);animation:dyring 2.2s ease-in-out infinite}
.breaking .sc-church .scene-btn{opacity:0;transition:opacity .3s}
.slide .sc-church .ch-in,.slide .sc-church .ch-wall,.slide .sc-church .ch-name{transform:scale(1.25);opacity:0}
.slide .sc-church .ch-name{transform:translateY(-50%) scale(1.25)}
@media (prefers-reduced-motion:reduce){.sc-church .ch-rose,.sc-church .ch-tap{animation:none}.flap .sc-church .ch-dove,.slide .sc-church .ch-dove{animation:none;opacity:0}}

/* ---------- luxury stationery: foil keylines, filigree corners, a monogram crest, insert-card events ---------- */
.hero{position:relative;margin:6px 0 22px;padding:34px 22px 30px;border-radius:30px 30px 14px 14px;background:radial-gradient(70% 38% at 50% 22%,color-mix(in srgb,var(--accent) 16%,transparent),transparent 72%)}
.hero::before,.hero::after{content:"";position:absolute;inset:0;pointer-events:none;background:var(--accent);opacity:.92;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:62px 62px;mask-size:62px 62px}
.hero::before{-webkit-mask-image:url("data:image/svg+xml;utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 60 60'%3E%3Cg%3E%3Cg fill='none' stroke='%23000' stroke-width='1.6' stroke-linecap='round'%3E%3Cpath d='M3 57V16Q3 3 16 3H57'/%3E%3Cpath d='M10 57V20Q10 10 20 10H57' stroke-width='1'/%3E%3Cpath d='M18 18Q32 18 32 30Q32 40 23 38Q17 36 20 31Q23 28 26 31'/%3E%3Cpath d='M36 10Q44 14 41 21Q38 16 36 10Z' fill='%23000'/%3E%3Cpath d='M10 36Q14 44 21 41Q16 38 10 36Z' fill='%23000'/%3E%3C/g%3E%3Ccircle cx='46' cy='10' r='1.6'/%3E%3Ccircle cx='52' cy='10' r='1.2'/%3E%3Ccircle cx='10' cy='46' r='1.6'/%3E%3Ccircle cx='10' cy='52' r='1.2'/%3E%3C/g%3E%3C/svg%3E"),url("data:image/svg+xml;utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 60 60'%3E%3Cg transform='translate(60 60) scale(-1 -1)'%3E%3Cg fill='none' stroke='%23000' stroke-width='1.6' stroke-linecap='round'%3E%3Cpath d='M3 57V16Q3 3 16 3H57'/%3E%3Cpath d='M10 57V20Q10 10 20 10H57' stroke-width='1'/%3E%3Cpath d='M18 18Q32 18 32 30Q32 40 23 38Q17 36 20 31Q23 28 26 31'/%3E%3Cpath d='M36 10Q44 14 41 21Q38 16 36 10Z' fill='%23000'/%3E%3Cpath d='M10 36Q14 44 21 41Q16 38 10 36Z' fill='%23000'/%3E%3C/g%3E%3Ccircle cx='46' cy='10' r='1.6'/%3E%3Ccircle cx='52' cy='10' r='1.2'/%3E%3Ccircle cx='10' cy='46' r='1.6'/%3E%3Ccircle cx='10' cy='52' r='1.2'/%3E%3C/g%3E%3C/svg%3E");mask-image:url("data:image/svg+xml;utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 60 60'%3E%3Cg%3E%3Cg fill='none' stroke='%23000' stroke-width='1.6' stroke-linecap='round'%3E%3Cpath d='M3 57V16Q3 3 16 3H57'/%3E%3Cpath d='M10 57V20Q10 10 20 10H57' stroke-width='1'/%3E%3Cpath d='M18 18Q32 18 32 30Q32 40 23 38Q17 36 20 31Q23 28 26 31'/%3E%3Cpath d='M36 10Q44 14 41 21Q38 16 36 10Z' fill='%23000'/%3E%3Cpath d='M10 36Q14 44 21 41Q16 38 10 36Z' fill='%23000'/%3E%3C/g%3E%3Ccircle cx='46' cy='10' r='1.6'/%3E%3Ccircle cx='52' cy='10' r='1.2'/%3E%3Ccircle cx='10' cy='46' r='1.6'/%3E%3Ccircle cx='10' cy='52' r='1.2'/%3E%3C/g%3E%3C/svg%3E"),url("data:image/svg+xml;utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 60 60'%3E%3Cg transform='translate(60 60) scale(-1 -1)'%3E%3Cg fill='none' stroke='%23000' stroke-width='1.6' stroke-linecap='round'%3E%3Cpath d='M3 57V16Q3 3 16 3H57'/%3E%3Cpath d='M10 57V20Q10 10 20 10H57' stroke-width='1'/%3E%3Cpath d='M18 18Q32 18 32 30Q32 40 23 38Q17 36 20 31Q23 28 26 31'/%3E%3Cpath d='M36 10Q44 14 41 21Q38 16 36 10Z' fill='%23000'/%3E%3Cpath d='M10 36Q14 44 21 41Q16 38 10 36Z' fill='%23000'/%3E%3C/g%3E%3Ccircle cx='46' cy='10' r='1.6'/%3E%3Ccircle cx='52' cy='10' r='1.2'/%3E%3Ccircle cx='10' cy='46' r='1.6'/%3E%3Ccircle cx='10' cy='52' r='1.2'/%3E%3C/g%3E%3C/svg%3E");-webkit-mask-position:left top,right bottom;mask-position:left top,right bottom}
.hero::after{-webkit-mask-image:url("data:image/svg+xml;utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 60 60'%3E%3Cg transform='translate(60 0) scale(-1 1)'%3E%3Cg fill='none' stroke='%23000' stroke-width='1.6' stroke-linecap='round'%3E%3Cpath d='M3 57V16Q3 3 16 3H57'/%3E%3Cpath d='M10 57V20Q10 10 20 10H57' stroke-width='1'/%3E%3Cpath d='M18 18Q32 18 32 30Q32 40 23 38Q17 36 20 31Q23 28 26 31'/%3E%3Cpath d='M36 10Q44 14 41 21Q38 16 36 10Z' fill='%23000'/%3E%3Cpath d='M10 36Q14 44 21 41Q16 38 10 36Z' fill='%23000'/%3E%3C/g%3E%3Ccircle cx='46' cy='10' r='1.6'/%3E%3Ccircle cx='52' cy='10' r='1.2'/%3E%3Ccircle cx='10' cy='46' r='1.6'/%3E%3Ccircle cx='10' cy='52' r='1.2'/%3E%3C/g%3E%3C/svg%3E"),url("data:image/svg+xml;utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 60 60'%3E%3Cg transform='translate(0 60) scale(1 -1)'%3E%3Cg fill='none' stroke='%23000' stroke-width='1.6' stroke-linecap='round'%3E%3Cpath d='M3 57V16Q3 3 16 3H57'/%3E%3Cpath d='M10 57V20Q10 10 20 10H57' stroke-width='1'/%3E%3Cpath d='M18 18Q32 18 32 30Q32 40 23 38Q17 36 20 31Q23 28 26 31'/%3E%3Cpath d='M36 10Q44 14 41 21Q38 16 36 10Z' fill='%23000'/%3E%3Cpath d='M10 36Q14 44 21 41Q16 38 10 36Z' fill='%23000'/%3E%3C/g%3E%3Ccircle cx='46' cy='10' r='1.6'/%3E%3Ccircle cx='52' cy='10' r='1.2'/%3E%3Ccircle cx='10' cy='46' r='1.6'/%3E%3Ccircle cx='10' cy='52' r='1.2'/%3E%3C/g%3E%3C/svg%3E");mask-image:url("data:image/svg+xml;utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 60 60'%3E%3Cg transform='translate(60 0) scale(-1 1)'%3E%3Cg fill='none' stroke='%23000' stroke-width='1.6' stroke-linecap='round'%3E%3Cpath d='M3 57V16Q3 3 16 3H57'/%3E%3Cpath d='M10 57V20Q10 10 20 10H57' stroke-width='1'/%3E%3Cpath d='M18 18Q32 18 32 30Q32 40 23 38Q17 36 20 31Q23 28 26 31'/%3E%3Cpath d='M36 10Q44 14 41 21Q38 16 36 10Z' fill='%23000'/%3E%3Cpath d='M10 36Q14 44 21 41Q16 38 10 36Z' fill='%23000'/%3E%3C/g%3E%3Ccircle cx='46' cy='10' r='1.6'/%3E%3Ccircle cx='52' cy='10' r='1.2'/%3E%3Ccircle cx='10' cy='46' r='1.6'/%3E%3Ccircle cx='10' cy='52' r='1.2'/%3E%3C/g%3E%3C/svg%3E"),url("data:image/svg+xml;utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 60 60'%3E%3Cg transform='translate(0 60) scale(1 -1)'%3E%3Cg fill='none' stroke='%23000' stroke-width='1.6' stroke-linecap='round'%3E%3Cpath d='M3 57V16Q3 3 16 3H57'/%3E%3Cpath d='M10 57V20Q10 10 20 10H57' stroke-width='1'/%3E%3Cpath d='M18 18Q32 18 32 30Q32 40 23 38Q17 36 20 31Q23 28 26 31'/%3E%3Cpath d='M36 10Q44 14 41 21Q38 16 36 10Z' fill='%23000'/%3E%3Cpath d='M10 36Q14 44 21 41Q16 38 10 36Z' fill='%23000'/%3E%3C/g%3E%3Ccircle cx='46' cy='10' r='1.6'/%3E%3Ccircle cx='52' cy='10' r='1.2'/%3E%3Ccircle cx='10' cy='46' r='1.6'/%3E%3Ccircle cx='10' cy='52' r='1.2'/%3E%3C/g%3E%3C/svg%3E");-webkit-mask-position:right top,left bottom;mask-position:right top,left bottom}
.hero>*{position:relative;z-index:1}
.hero{box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--accent) 38%,transparent),inset 0 0 0 7px transparent,inset 0 0 0 8px color-mix(in srgb,var(--accent) 22%,transparent)}
.crest{width:66px;height:66px;margin:0 auto 16px;border-radius:50%;display:grid;place-items:center;color:var(--accent);font:italic 500 25px/1 var(--display,"Cormorant Garamond",Georgia,serif);letter-spacing:.04em;background:radial-gradient(circle at 35% 28%,color-mix(in srgb,var(--accent) 24%,transparent),transparent 70%);box-shadow:inset 0 0 0 1.5px var(--accent),inset 0 0 0 5px transparent,inset 0 0 0 6px color-mix(in srgb,var(--accent) 55%,transparent),0 0 24px -4px color-mix(in srgb,var(--accent) 55%,transparent)}
.crest span{transform:translateY(-1px)}
.kicker{letter-spacing:.32em;font-size:11px}
.names{margin:14px 6px 8px}
.orn{margin:6px 0 14px}
.orn i{width:84px}
.orn b{font-size:15px;filter:drop-shadow(0 0 6px color-mix(in srgb,var(--accent) 60%,transparent))}
.line{letter-spacing:.04em}
.sec{display:flex;align-items:center;gap:14px;letter-spacing:.14em;text-transform:uppercase;font-size:15px;margin:34px 6px 16px}
.sec::before,.sec::after{content:"";flex:1;height:1px;background:linear-gradient(90deg,transparent,var(--accent))}
.sec::after{background:linear-gradient(270deg,transparent,var(--accent))}
.inv:not([dir=rtl]) .sec{font-size:19px}
.ev{position:relative;border-radius:6px;padding:26px 18px 20px;box-shadow:0 18px 30px -18px rgba(0,0,0,.7),0 2px 0 color-mix(in srgb,var(--accent) 30%,transparent)}
.ev::before{content:"";position:absolute;inset:7px;border:1px solid color-mix(in srgb,var(--cardInk) 38%,transparent);border-radius:3px;pointer-events:none}
.ev::after{content:"";position:absolute;inset:11px;border:1px solid color-mix(in srgb,var(--cardInk) 16%,transparent);border-radius:2px;pointer-events:none}
.ev-n{font-size:25px;line-height:1.15}
.ev-n::after{content:"\2756";display:block;font-size:11px;margin:8px 0 6px;color:color-mix(in srgb,var(--cardInk) 55%,transparent)}
.inv:not([dir=rtl]) .ev-n{font-family:var(--display);font-weight:600}
.ev-d{letter-spacing:.14em;text-transform:uppercase;font-size:12.5px;opacity:.9}
.ev-v{font-style:italic;font-size:15px}
.ev-a a,.ev-a button{border-radius:3px;letter-spacing:.06em;text-transform:uppercase;font-size:11px;padding:8px 14px}
.cd-g div{border-radius:4px;box-shadow:inset 0 0 0 3px var(--card),inset 0 0 0 4px color-mix(in srgb,var(--cardInk) 30%,transparent),0 12px 18px -12px rgba(0,0,0,.7)}
.cd-g b{font-family:var(--display,"Cormorant Garamond",Georgia,serif);font-weight:600;font-size:30px}
.rsvp{border-radius:6px;padding:22px 18px;box-shadow:inset 0 0 0 7px var(--card),inset 0 0 0 8px color-mix(in srgb,var(--cardInk) 34%,transparent),0 18px 30px -18px rgba(0,0,0,.7)}
.rsvp-b button{border-radius:3px;letter-spacing:.06em}
.rsvp input{border-radius:3px}
.cover{border-radius:200px 200px 14px 14px;overflow:hidden;box-shadow:0 0 0 2px var(--accent),0 0 0 7px transparent,0 0 0 8px color-mix(in srgb,var(--accent) 45%,transparent),0 22px 34px -18px rgba(0,0,0,.7)}
.rv.crest{animation-delay:.05s}
@media (prefers-reduced-motion:reduce){.crest{animation:none}}

/* ---------- luxe: pressed envelope, glowing gold line-art, four folds that open on a burst of light ---------- */
.sc-luxe{perspective:1200px}
.sc-luxe .lx-fold{position:absolute;inset:0;width:100%;height:100%;overflow:visible;transition:transform 1.4s cubic-bezier(.55,.02,.2,1),opacity 1s,filter 1.4s;filter:drop-shadow(0 6px 10px rgba(0,0,0,.35))}
.sc-luxe .lx-top{transform-origin:50% 0;z-index:3}
.sc-luxe .lx-bottom{transform-origin:50% 100%;z-index:1}
.sc-luxe .lx-left{transform-origin:0 50%;z-index:2}
.sc-luxe .lx-right{transform-origin:100% 50%;z-index:2}
.flap .sc-luxe .lx-top,.slide .sc-luxe .lx-top{transform:rotateX(178deg);filter:brightness(.6)}
.flap .sc-luxe .lx-bottom,.slide .sc-luxe .lx-bottom{transform:rotateX(-176deg);filter:brightness(.6)}
.flap .sc-luxe .lx-left,.slide .sc-luxe .lx-left{transform:rotateY(-176deg);filter:brightness(.6)}
.flap .sc-luxe .lx-right,.slide .sc-luxe .lx-right{transform:rotateY(176deg);filter:brightness(.6)}
.slide .sc-luxe .lx-fold{opacity:0}
.sc-luxe .lx-g{stroke-dasharray:1;stroke-dashoffset:1;animation:lxdraw 2.2s ease-in-out var(--d,0s) forwards}
.sc-luxe .lx-art path:not(.lx-g),.sc-luxe .lx-art circle:not(.lx-g){stroke-dasharray:none}
@keyframes lxdraw{to{stroke-dashoffset:0}}
.sc-luxe .lx-art{filter:drop-shadow(0 0 2.5px var(--accent));animation:lxglow 3.4s ease-in-out 3.2s infinite}
@keyframes lxglow{50%{filter:drop-shadow(0 0 6px var(--accent)) brightness(1.35)}}
.breaking .sc-luxe .lx-art{animation:none;filter:drop-shadow(0 0 8px var(--accent)) brightness(1.5)}
.sc-luxe .lx-in{position:absolute;inset:0;z-index:0;border-radius:6px;overflow:hidden;background:radial-gradient(60% 50% at 50% 54%,color-mix(in srgb,var(--card) 92%,#fff),color-mix(in srgb,var(--card) 70%,var(--accent)))}
.sc-luxe .lx-light{position:absolute;left:50%;top:54%;width:30px;height:30px;margin:-15px 0 0 -15px;border-radius:50%;background:radial-gradient(circle,rgba(255,244,205,1),rgba(255,214,120,.55) 45%,transparent 72%);opacity:0}
.flap .sc-luxe .lx-light{animation:lxburst 1.8s ease-out forwards}
@keyframes lxburst{0%{opacity:0;transform:scale(1)}25%{opacity:1}100%{opacity:0;transform:scale(30)}}
.sc-luxe .lx-name{position:absolute;left:14%;right:14%;top:54%;transform:translateY(-50%) scale(.9);z-index:0;text-align:center;color:var(--cardInk);font:600 clamp(22px,7.4vw,32px)/1.1 var(--display,"Cormorant Garamond",Georgia,serif);font-style:italic;opacity:0;transition:opacity 1.2s .5s,transform 1.6s cubic-bezier(.2,.8,.2,1) .5s}
.sc-luxe .lx-name span{word-break:break-word}
.flap .sc-luxe .lx-name,.slide .sc-luxe .lx-name{opacity:1;transform:translateY(-50%) scale(1)}
.slide .sc-luxe .lx-name{opacity:0;transform:translateY(-50%) scale(1.25);transition:opacity .8s,transform 1.2s}
.sc-luxe .scene-btn{left:50%;top:53.75%;transform:translate(-50%,-50%);z-index:6}
.sc-luxe .lx-seal{display:block;width:78px;height:78px;filter:drop-shadow(0 8px 8px rgba(0,0,0,.5));animation:lxseal 3.2s ease-in-out infinite}
.sc-luxe .lx-seal svg{width:100%;height:100%;display:block}
@keyframes lxseal{50%{filter:drop-shadow(0 8px 8px rgba(0,0,0,.5)) drop-shadow(0 0 14px rgba(255,226,150,.85)) brightness(1.1)}}
.breaking .sc-luxe .lx-seal{animation:none;transform:scale(1.15);opacity:0;filter:drop-shadow(0 0 22px rgba(255,226,150,1));transition:transform .9s ease,opacity .9s ease}
.inv-fx[data-fx="rose"] i{font-size:0;width:10px;height:13px;background:radial-gradient(circle at 30% 30%,#e0434f,#8f1424);border-radius:60% 0 60% 0;bottom:auto;top:-16px;animation-name:petalfall;opacity:0}
@media (prefers-reduced-motion:reduce){.sc-luxe .lx-g{animation:none;stroke-dashoffset:0}.sc-luxe .lx-art,.sc-luxe .lx-seal{animation:none}}
.sc-luxe .lx-seal{position:relative}
.sc-luxe .lx-seal .half{position:absolute;inset:0;width:100%;height:100%;transition:transform .9s cubic-bezier(.45,0,.9,.4),opacity .9s;transform-origin:50% 50%}
.sc-luxe .lx-seal .half.l{clip-path:polygon(0 0,54% 0,46% 22%,55% 40%,45% 62%,54% 80%,47% 100%,0 100%)}
.sc-luxe .lx-seal .half.r{clip-path:polygon(54% 0,100% 0,100% 100%,47% 100%,54% 80%,45% 62%,55% 40%,46% 22%)}
.breaking .sc-luxe .lx-seal{transform:none;opacity:1}
.breaking .sc-luxe .lx-seal .half.l{transform:translate(-26px,70px) rotate(-30deg);opacity:0}
.breaking .sc-luxe .lx-seal .half.r{transform:translate(24px,78px) rotate(34deg);opacity:0}

/* ---------- garden: watercolour arch, blossoms that open, a veil that lifts, a name written in script ---------- */
.sc-garden .gn-art{position:absolute;inset:0;width:100%;height:100%;border-radius:10px;transition:transform 1.2s cubic-bezier(.5,0,.2,1),opacity .9s}
.sc-garden .gn-b{transform-box:fill-box;transform-origin:center;animation:gnbloom 1.2s cubic-bezier(.3,1.5,.5,1) var(--d) both}
@keyframes gnbloom{from{opacity:0;transform:translate(var(--x,0),var(--y,0)) scale(0)}to{opacity:1}}
.sc-garden .gn-sway{transform-origin:0 0;animation:gnsway 6s ease-in-out infinite}
.sc-garden .gn-sway.r{animation-delay:-3s}
@keyframes gnsway{0%,100%{rotate:-.8deg}50%{rotate:.8deg}}
.sc-garden .gn-veil{transition:transform 2s cubic-bezier(.4,0,.2,1),opacity 1.6s;animation:gnveil 5s ease-in-out infinite}
@keyframes gnveil{50%{opacity:.88}}
.flap .sc-garden .gn-veil,.slide .sc-garden .gn-veil{transform:translateY(-300px);opacity:0;animation:none}
.sc-garden .gn-sun{transform-box:fill-box;transform-origin:center;transition:transform 2.2s ease-out}
.flap .sc-garden .gn-sun,.slide .sc-garden .gn-sun{transform:scale(1.5)}
.sc-garden .gn-name{position:absolute;left:19%;right:19%;top:40%;transform:translateY(-50%);text-align:center;opacity:0;transition:opacity 1.6s .8s;z-index:2;color:#3d2220;text-shadow:0 0 10px #fff,0 0 22px rgba(255,255,255,.95)}
.sc-garden .gn-name::before{content:"";position:absolute;inset:-22% -12%;background:radial-gradient(closest-side,rgba(255,250,244,.9),rgba(255,250,244,.55) 60%,transparent);z-index:-1}
.sc-garden .gn-name small{display:block;font:600 8.5px system-ui;letter-spacing:.34em;text-transform:uppercase;margin-bottom:6px;opacity:.75}
.sc-garden .gn-name span{display:block;font:400 clamp(30px,10vw,44px)/1.05 "Great Vibes","Pinyon Script","Cormorant Garamond",Georgia,serif;word-break:break-word}
.flap .sc-garden .gn-name,.slide .sc-garden .gn-name{opacity:1}
.sc-garden .scene-btn{left:50%;top:58%;transform:translate(-50%,-50%);z-index:5}
.sc-garden .gn-tap{display:block;width:70px;height:70px;border-radius:50%;border:1.5px solid rgba(255,255,255,.95);background:rgba(255,255,255,.28);box-shadow:0 0 20px rgba(255,255,255,.8);animation:dyring 2.4s ease-in-out infinite;backdrop-filter:blur(3px)}
.breaking .sc-garden .scene-btn{opacity:0;transition:opacity .4s}
.slide .sc-garden .gn-art{transform:scale(1.2);opacity:0}.slide .sc-garden .gn-name{opacity:0}
.inv-fx[data-fx="blossom"] i{font-size:0;width:10px;height:12px;background:radial-gradient(circle at 30% 30%,#fff,#f4b7c2);border-radius:60% 0 60% 0;bottom:auto;top:-16px;animation-name:petalfall;opacity:0}
@media (prefers-reduced-motion:reduce){.sc-garden .gn-b{animation:none}.sc-garden .gn-sway,.sc-garden .gn-veil,.sc-garden .gn-tap{animation:none}}
/* garden with real painted art: the image sits over the drawn fallback, a soft veil lifts from the arch */
.sc-garden .gn-img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;border-radius:10px;transition:transform 1.2s cubic-bezier(.5,0,.2,1),opacity .9s}
.sc-garden .gn-v2{position:absolute;left:20%;right:20%;top:15%;bottom:17%;border-radius:46% 46% 4% 4%/38% 38% 4% 4%;background:linear-gradient(rgba(255,252,246,.72),rgba(255,250,240,.6));backdrop-filter:blur(7px);-webkit-backdrop-filter:blur(7px);transition:transform 2s cubic-bezier(.4,0,.2,1),opacity 1.6s;z-index:1}
.flap .sc-garden .gn-v2,.slide .sc-garden .gn-v2{transform:translateY(-70%);opacity:0}
.slide .sc-garden .gn-img{transform:scale(1.2);opacity:0}

/* ---------- the invitation suite: painted hero, family lines, timeline, large countdown, dress code ---------- */
.heroart{width:min(300px,86%);margin:0 auto 6px;-webkit-mask-image:radial-gradient(closest-side at 50% 50%,#000 62%,transparent 100%);mask-image:radial-gradient(closest-side at 50% 50%,#000 62%,transparent 100%)}
.heroart img{display:block;width:100%;height:auto;aspect-ratio:4/5;object-fit:cover}
.fam{margin:6px 8px 12px;font-style:italic;line-height:1.5}
.fam p{margin:0;font-size:15px;opacity:.92}
.fam i{display:block;font:italic 500 22px var(--display,"Cormorant Garamond",Georgia,serif);color:var(--accent);margin:2px 0}
.ev-ic{width:30px;height:30px;margin:0 auto 8px;color:color-mix(in srgb,var(--cardInk) 70%,var(--accent))}
.ev-ic svg{display:block;width:100%;height:100%}
.evs{position:relative}
.inv[data-lay="suite"] .evs::before{content:"";position:absolute;left:50%;top:6px;bottom:6px;width:1px;background:linear-gradient(transparent,var(--accent) 12%,var(--accent) 88%,transparent);opacity:.7}
.inv[data-lay="suite"] .ev{margin-bottom:26px}
.inv[data-lay="suite"] .ev:last-child{margin-bottom:12px}
.inv[data-lay="suite"] .cd-g{display:flex;justify-content:center;align-items:flex-start;gap:0;margin-top:6px}
.inv[data-lay="suite"] .cd-g div{background:none;box-shadow:none;color:var(--ink);padding:0 10px;position:relative;font-size:10px;letter-spacing:.22em;min-width:64px}
.inv[data-lay="suite"] .cd-g div+div::before{content:":";position:absolute;left:-4px;top:6px;font:500 34px/1 var(--display,"Cormorant Garamond",Georgia,serif);color:var(--accent);opacity:.8}
.inv[data-lay="suite"] .cd-g b{font:500 clamp(34px,11vw,48px)/1.05 var(--display,"Cormorant Garamond",Georgia,serif);color:var(--accent);font-variant-numeric:lining-nums tabular-nums}
.inv[data-lay="suite"] .cd-t{font:italic 500 22px var(--display,"Cormorant Garamond",Georgia,serif);letter-spacing:.02em;color:var(--accent);margin-bottom:6px}
.dress{text-align:center;margin:0 6px 14px}
.dress p{margin:0 0 12px;font-style:italic;font-size:15px;opacity:.92}
.sws{display:flex;gap:10px;justify-content:center;flex-wrap:wrap}
.sws span{width:30px;height:30px;border-radius:50%;box-shadow:0 0 0 2px var(--bg),0 0 0 3px color-mix(in srgb,var(--accent) 60%,transparent),0 6px 12px -6px rgba(0,0,0,.5)}
/* ivory version of the pressed envelope for light themes */
.sc-luxe.ivory{--lx-hi:rgba(255,255,255,.95);--lx-lo:rgba(130,100,50,.24);--door1:color-mix(in srgb,var(--bg) 94%,#fff);--door2:color-mix(in srgb,var(--bg) 78%,var(--accent))}
.sc-luxe.ivory .lx-art{filter:drop-shadow(0 0 1.5px var(--accent))}
.sc-luxe.ivory .lx-fold{filter:drop-shadow(0 6px 10px rgba(80,55,20,.3))}
@media (prefers-reduced-motion:reduce){.heroart{mask-image:none;-webkit-mask-image:none}}

/* ---------- story layout: a painting fixed behind the page, soft panels that rise over it ---------- */
.inv[data-lay="story"] .card-stage{position:relative}
.st-fixed{position:sticky;top:0;height:var(--vh,100svh);margin-bottom:calc(var(--vh,100svh) * -1);z-index:0;overflow:hidden;pointer-events:none}
.st-fixed img{width:100%;height:100%;object-fit:cover;object-position:50% 30%;transform:scale(calc(1 + var(--sp,0) * .12));filter:blur(calc(var(--sp,0) * 7px)) saturate(calc(1 - var(--sp,0) * .25)) brightness(calc(1 - var(--sp,0) * .12));will-change:transform,filter}
.st-fixed::after{content:"";position:absolute;inset:0;background:linear-gradient(to bottom,transparent 0,transparent 42%,color-mix(in srgb,var(--bg) 82%,transparent) 78%,var(--bg) 100%);opacity:calc(.55 + var(--sp,0) * .45)}
.inv[data-lay="story"] .card-stage>*:not(.st-fixed){position:relative;z-index:1}
.inv[data-lay="story"] .hero{min-height:calc(var(--vh,100svh) - 40px);display:flex;flex-direction:column;justify-content:flex-end;padding:0 18px 36px;margin:0 0 22px;background:none;box-shadow:none;border-radius:0}
.inv[data-lay="story"] .hero::before,.inv[data-lay="story"] .hero::after{display:none}
.inv[data-lay="story"] .hero .kicker,.inv[data-lay="story"] .hero .intro,.inv[data-lay="story"] .hero .line,.inv[data-lay="story"] .hero .msg,.inv[data-lay="story"] .hero .fam p{text-shadow:0 1px 14px color-mix(in srgb,var(--bg) 88%,transparent)}
.inv[data-lay="story"] .names{text-shadow:none;margin-top:6px}
.inv[data-lay="story"] .cd,.inv[data-lay="story"] .evs,.inv[data-lay="story"] .dress,.inv[data-lay="story"] .scratch,.inv[data-lay="story"] .gal{background:color-mix(in srgb,var(--bg) 78%,transparent);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border-radius:18px;padding:20px 14px;margin:14px 0}
.inv[data-lay="story"] .evs{padding:20px 12px 10px}
.inv[data-lay="story"] .sec{margin:30px 6px 4px}
.inv[data-lay="story"] .rv{animation:none;opacity:0;transform:translateY(26px);transition:opacity 1s ease,transform 1.1s cubic-bezier(.2,.8,.2,1)}
.inv[data-lay="story"] .rv.in{opacity:1;transform:none}
.inv[data-lay="story"] .music-btn{z-index:5}
@media (prefers-reduced-motion:reduce){.st-fixed img{transform:none;filter:none}.inv[data-lay="story"] .rv{opacity:1;transform:none;transition:none}}
/* the painting fills the upper part of the screen and melts into the page colour, so the names sit on calm ground */
.st-fixed{background:var(--bg)}
.st-fixed img{height:78%;object-position:50% 20%}
.st-fixed::after{background:linear-gradient(to bottom,transparent 0,transparent 24%,color-mix(in srgb,var(--bg) 70%,transparent) 52%,var(--bg) 78%,var(--bg) 100%)}
.st-fixed::after{opacity:1}
.st-fixed img{transform:scale(calc(1.1 + var(--sp,0) * .1));transform-origin:50% 8%}
.st-fixed img{transform:translateY(-3.5%) scale(calc(1.12 + var(--sp,0) * .1))}

/* handwritten lettering for the names (Latin names only; other scripts keep their own serif) */
.inv[data-fo="script"] .names{font-family:"Great Vibes","Pinyon Script","Cormorant Garamond",Georgia,serif;font-weight:400;font-size:clamp(46px,15vw,72px);line-height:1.12;letter-spacing:0;margin:8px 4px 4px}
/* the signature collection tag in the gallery */
.tplcard{position:relative}
.sigtag{position:absolute;top:14px;left:14px;z-index:3;font:600 9.5px system-ui;letter-spacing:.16em;text-transform:uppercase;color:#2a1206;background:linear-gradient(135deg,#f0d28c,#c8913f);padding:4px 9px;border-radius:99px;box-shadow:0 4px 10px -4px rgba(0,0,0,.5)}
.wm a{color:inherit;text-decoration:underline;text-underline-offset:2px}
/* names on light grounds get a deeper foil so they never wash out (gradient text is not covered by contrast checkers) */
.inv[data-tone="light"] .names{background-image:linear-gradient(110deg,color-mix(in srgb,var(--accent) 62%,#000) 0%,color-mix(in srgb,var(--accent) 86%,#000) 30%,var(--accent) 50%,color-mix(in srgb,var(--accent) 86%,#000) 70%,color-mix(in srgb,var(--accent) 62%,#000) 100%)}
.sc-church .ch-glass{filter:saturate(.85) brightness(.97)}
.inv[data-lay="story"] .wm,.inv[data-lay="story"] .share{background:color-mix(in srgb,var(--bg) 82%,transparent);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border-radius:14px;padding:12px 14px;margin-top:14px}
.inv[data-lay="story"] .share{margin-bottom:0}
.inv[data-lay="story"] .wm{opacity:1;color:var(--ink)}
.inv[data-lay="story"] .wm a{color:var(--ink)}
.st-fixed::after{background:linear-gradient(to bottom,transparent 0,transparent 20%,color-mix(in srgb,var(--bg) 72%,transparent) 46%,var(--bg) 72%,var(--bg) 100%)}
