@font-face{font-family:Imperial;src:url("assets/imperial.ttf") format("truetype");font-display:swap}
@font-face{font-family:Cormorant;src:url("assets/cormorant.ttf") format("truetype");font-display:swap}
@font-face {
  font-family: "Tiro Devanagari";
  src: url("assets/TiroDevanagariHindi-Regular.ttf") format("truetype");
  font-display: swap;
}
:root{color-scheme:light;--ink:#4a1728;--wine:#5b142a;--dark:#260d17;--gold:#986b30;--bright:#f4d59d;--cream:#fbf2e1;--paper:#fff9ee;--border:#c9a57076;--script:Imperial,"Palatino Linotype",cursive;--serif:Cormorant,Georgia,serif}
*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:5.5rem}body{margin:0;color:var(--ink);background:var(--cream);font:1.12rem/1.5 var(--serif)}body.gate-open{overflow:hidden}button,a{-webkit-tap-highlight-color:transparent}a{color:inherit}button{font:inherit}button:focus-visible,a:focus-visible{outline:2px solid #ae7131;outline-offset:5px}img{display:block;max-width:100%;object-fit:contain}h1,h2,h3,p,dl,dd{margin:0}h1,h2,h3{font-weight:normal}.svg-library{position:absolute;width:0;height:0;overflow:hidden}
.eyebrow,.button,.masthead nav,.open-label,.card-continue,.reveal-button,footer a{font:600 .69rem/1.45 system-ui,sans-serif;letter-spacing:.17em;text-transform:uppercase}
.script{font:normal clamp(3rem,7vw,5.3rem)/.99 var(--script);margin:.45rem 0 .9rem}
.wrap{width:min(100% - 2.5rem,66rem);margin-inline:auto}
.masthead{position:sticky;top:0;z-index:5;display:flex;justify-content:space-between;align-items:center;padding:.7rem clamp(1rem,5vw,4rem);background:#fff6e9f5;border-bottom:1px solid var(--border);backdrop-filter:blur(10px)}
.brand{font:2.2rem/1 var(--script);text-decoration:none;white-space:nowrap}.brand i,.gate-signature i{color:#b38b53;font-style:normal}
.masthead nav{display:flex;gap:clamp(.75rem,3vw,2rem)}.masthead nav a{text-decoration:none}.masthead nav a:hover{text-decoration:underline;text-underline-offset:.35rem}
.hero{display:grid;place-items:center;padding:clamp(.8rem,3vw,2.25rem) 1rem;background:radial-gradient(ellipse at 50% 28%,#794033,#371021 68%,#250a15)}
.invite-card{width:min(100%,38rem);min-height:clamp(35rem,96vw,42rem);display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;position:relative;padding:3.9rem clamp(2rem,7vw,4rem) 3.6rem;background:#f4e7ce url("assets/patrika-art.webp") center/100% 100% no-repeat;box-shadow:0 23px 60px #13040b90;isolation:isolate}
.ganesh{width:clamp(31px,7vw,47px);height:auto;margin-bottom:.6rem}.invocation{font-size:.57rem;color:var(--gold)}
.save-date{font-size:clamp(2.7rem,8vw,4.1rem);margin:1.1rem 0 .2rem}.intro-line{font-size:1.05rem;color:#674433}
.invite-card h1{font:clamp(3.3rem,9.7vw,6.6rem)/1.02 var(--script);margin:.7rem 0 0}.invite-card h1 span{color:var(--gold);font-size:.65em}
.flourish{color:var(--gold);display:flex;gap:.65rem;align-items:center;font-size:.65rem;margin:.85rem 0 1.35rem}.flourish span{display:block;width:2.2rem;height:1px;background:linear-gradient(90deg,transparent,#ab824e)}.flourish span:last-child{transform:rotate(180deg)}
.date-reveal{position:relative;width:min(100%,16.75rem);min-height:5.75rem;border:1px solid #ad8144;background:#fffbef80;isolation:isolate;border-radius:3px;overflow:hidden}
.date-value{display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:5.75rem;line-height:1.15;padding:.65rem .3rem}.date-value span{font:600 .59rem/1.3 system-ui,sans-serif;letter-spacing:.13em;text-transform:uppercase;color:#725032}.date-value strong{font:normal clamp(1.3rem,4.5vw,1.78rem)/1.1 var(--serif);margin:.27rem 0}
#date-foil{position:absolute;inset:0;width:100%;height:100%;cursor:crosshair;touch-action:none;transition:opacity .36s}.date-reveal.revealed #date-foil,.no-js #date-foil{opacity:0;pointer-events:none}
.reveal-button{background:none;border:0;color:#684320;padding:.65rem .5rem;cursor:pointer;text-decoration:underline;text-underline-offset:.2rem;letter-spacing:.08em;font-size:.59rem}
.card-continue{display:inline-flex;align-items:center;gap:.4rem;text-decoration:none;margin-top:1rem;font-size:.61rem;letter-spacing:.12em}.card-continue span{font-size:1.1rem}.card-continue:hover{color:var(--gold)}
.blessings,.programme,.patrika{padding-block:clamp(3.8rem,8vw,7rem);text-align:center}.blessings .eyebrow,.programme .eyebrow,.patrika .eyebrow,.venue .eyebrow{color:var(--gold)}.lede{font-size:clamp(1.2rem,3vw,1.55rem);max-width:42rem;margin:0 auto;line-height:1.45}
.couple-grid{display:grid;grid-template-columns:1fr auto 1fr;gap:clamp(.75rem,4vw,3rem);align-items:center;max-width:55rem;margin:2.7rem auto 0}.couple-grid h3{font:3rem/.95 var(--script);margin-bottom:.6rem}.couple-grid p{font-size:1.07rem;line-height:1.35}.couple-grid p+p{margin-top:.4rem;color:#694a3f}
.celebrations{position:relative;isolation:isolate;display:grid;place-items:center;text-align:center;min-height:32rem;padding:4rem 1rem;color:#fff1d6;background:#2c1220;overflow:hidden}
.celebration-image{position:absolute;width:100%;height:100%;inset:0;object-fit:cover;object-position:center 53%;z-index:-2}.celebrations:after{content:"";position:absolute;inset:0;z-index:-1;background:linear-gradient(0deg,#1c070edb,#1c070e4f 65%,#1c070e88),radial-gradient(ellipse,#1c070e4f,transparent 85%)}
.celebration-content{padding:2rem clamp(.9rem,5vw,3rem);border:1px solid #dfbc7980;background:#240d14ab;backdrop-filter:blur(3px);box-shadow:0 10px 50px #17060c64}.celebration-content .script{font-size:clamp(3rem,8vw,5.3rem)}.celebration-content .eyebrow{color:var(--bright)}
.countdown{display:grid;grid-template-columns:repeat(4,1fr);max-width:29rem;margin:1.25rem auto .7rem}.countdown div{display:flex;flex-direction:column-reverse;padding:0 clamp(.3rem,2vw,.85rem)}.countdown div+div{border-left:1px solid #f2d6a450}.countdown dt{font:600 .54rem/1.5 system-ui,sans-serif;letter-spacing:.15em;text-transform:uppercase}.countdown dd{font-size:clamp(1.8rem,6vw,3rem);line-height:1.1;color:#ffe7b5;font-variant-numeric:tabular-nums}#countdown-caption{font-size:.96rem;color:#f0d9b3}.no-js .countdown,.no-js #countdown-caption{display:none}
.radha{margin:0 auto 1rem;height:auto}.programme-grid{display:grid;grid-template-columns:1fr 1fr;gap:1.2rem;text-align:left;margin:2rem auto 0}
.day{background:var(--paper);border:1px solid var(--border);padding:clamp(1.2rem,4vw,2rem);box-shadow:0 10px 30px #754a2710}.day header{display:flex;gap:1rem;align-items:center;padding-bottom:1rem;border-bottom:1px solid var(--border)}.day header span{font-size:2rem;color:var(--gold)}.day header h3{font:2.9rem/.9 var(--script)}.day header p{font-size:1rem;margin-top:.35rem;color:#6a4b3d}.day dl>div{display:flex;align-items:baseline;justify-content:space-between;gap:.65rem;padding:.68rem 0;border-bottom:1px solid #c9a57043}.day dd{white-space:nowrap;color:#6d4528;font-variant-numeric:tabular-nums}.programme-note{max-width:38rem;margin:1.5rem auto 0;font-style:italic;font-size:1.08rem}
.venue{padding:clamp(2.7rem,7vw,5rem) 0;background:radial-gradient(ellipse at 50% 0%,#75374a,#421325 75%);text-align:center}
.venue-card{background:var(--paper);padding:clamp(1.6rem,6vw,3.5rem) 1.1rem;border:double 5px #b78d53;width:min(100% - 2rem,48rem)}.venue-card .script{font-size:clamp(2.7rem,7.5vw,4.7rem)}.venue-time{color:#775439;margin-bottom:1rem}.venue-card h3{font-size:clamp(1.45rem,4vw,2rem);line-height:1.1}.venue-card address{font-style:normal}
.actions,.contacts{display:flex;flex-wrap:wrap;gap:.7rem;justify-content:center;align-items:center;margin-top:1.3rem}
.button{display:inline-flex;align-items:center;justify-content:center;min-height:2.8rem;padding:.65rem 1rem;gap:.35rem;text-decoration:none;letter-spacing:.09em;border:1px solid #a17b46}.button.primary{background:var(--wine);color:#fff3df;border-color:var(--wine)}.button.primary:hover{background:#771b37}.button.secondary:hover{background:#f0dfc4}.guest-help{margin-top:1.15rem}.contacts{margin-top:.3rem}.contacts a{padding:.35rem .7rem;text-underline-offset:.2rem;white-space:nowrap}.patrika .actions{margin-top:1.4rem}
footer{display:flex;justify-content:space-between;align-items:center;gap:1rem;flex-wrap:wrap;padding:1.2rem clamp(1rem,5vw,4rem);background:var(--dark);color:#f9e7c5}footer p span{font-size:.7em;color:var(--bright)}footer a{text-decoration:none;letter-spacing:.1em}
.welcome{inset:0;margin:0;width:100%;height:100%;max-width:none;max-height:none;border:0;padding:1rem;overflow:auto;background:radial-gradient(ellipse at 50% 36%,#ad2844 0%,#870e2b 39%,#560d23 80%,#3b081b);color:#ffebbd;text-align:center;isolation:isolate}.welcome[open]{display:grid;place-items:center}.welcome::before{content:"";position:fixed;inset:0;opacity:.16;z-index:-1;pointer-events:none;background-image:url("data:image/svg+xml,%3Csvg viewBox='0 0 160 160' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.72' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' opacity='.6' filter='url(%23n)'/%3E%3C/svg%3E")}
.gate-frame{position:fixed;inset:clamp(.6rem,2.2vw,1.7rem);border:1px solid #f2cf8e65;pointer-events:none}.corner{width:clamp(4.8rem,15vw,10rem);height:auto;position:absolute;color:#e0b16c}.tl{top:-1px;left:-1px}.tr{top:-1px;right:-1px;transform:scaleX(-1)}.bl{bottom:-1px;left:-1px;transform:scaleY(-1)}.br{bottom:-1px;right:-1px;transform:scale(-1)}
.gate-content{width:min(100%,36rem);padding:2rem .2rem}.gate-eyebrow{color:#f4d5a0}.welcome h2{font:clamp(4rem,11vw,7.7rem)/1 var(--script);margin:.7rem 0 .55rem;text-shadow:0 2px 10px #3b081c70}.gate-signature{font:clamp(1.65rem,4.6vw,2.6rem)/1.05 var(--script);margin-top:1.45rem}
.envelope-button{border:0;background:none;color:inherit;padding:0;cursor:pointer;display:inline-flex;flex-direction:column;align-items:center;gap:1.05rem}.envelope-button:focus-visible{outline-color:var(--bright);outline-offset:10px}.envelope{display:block;position:relative;width:clamp(13rem,52vw,22rem);aspect-ratio:1.62;perspective:850px;margin-top:1rem;filter:drop-shadow(0 20px 20px #36051387);transition:transform .35s}.envelope-button:hover .envelope{transform:translateY(-4px)}.env-back,.env-pocket,.env-flap{position:absolute;inset:0;border-radius:3px}
.env-back{background:linear-gradient(145deg,#ab2a40,#610e24);box-shadow:inset 0 0 0 1px #ef897d38;z-index:0}.env-pocket{z-index:3;background:linear-gradient(35deg,#6c1026 0%,#982339 52%,#b33948 100%);clip-path:polygon(0 0,50% 60%,100% 0,100% 100%,0 100%);box-shadow:inset 0 -2px 1px #e6826c3d}.env-pocket::after{content:"";position:absolute;inset:0;background:linear-gradient(147deg,#ffffff15,transparent 60%);clip-path:polygon(0 100%,50% 47%,100% 100%)}.env-flap{z-index:4;transform-origin:top;clip-path:polygon(0 0,100% 0,50% 64%);background:linear-gradient(155deg,#c64753,#8e142e 65%,#690f25);transition:transform .57s cubic-bezier(.3,.75,.35,1),z-index 0s .2s;box-shadow:inset 0 1px #fbb4a64d}
.env-letter{position:absolute;inset:7% 9% 5%;display:grid;align-content:center;gap:.3rem;z-index:1;background:#fff1d5;color:#682239;border:double 4px #ac8549;font:clamp(2rem,7vw,3.6rem)/1 var(--script);box-shadow:0 5px 15px #3a0b1550;transition:transform .65s cubic-bezier(.25,.7,.35,1) .24s}.env-letter small{font:500 .6rem system-ui,sans-serif;letter-spacing:.1em}.env-letter i{color:var(--gold);font-style:normal}
.wax{position:absolute;z-index:5;top:54%;left:50%;transform:translate(-50%,-50%) rotate(-7deg);display:flex;align-items:center;justify-content:center;width:clamp(2.6rem,11vw,4rem);aspect-ratio:1;border-radius:43% 51% 46% 50%;font:clamp(1.05rem,4vw,1.65rem)/1 var(--script);text-shadow:0 1px #5a2c17;color:#5c260f;background:radial-gradient(circle at 37% 25%,#ffdf9b,#dda446 55%,#a65a24 95%);box-shadow:0 4px 7px #350c19bd,inset 0 1px 3px #ffedb3;transition:opacity .2s,transform .3s}.wax:before{content:"";position:absolute;inset:11%;border:1px solid #9f5b2c;border-radius:50%;box-shadow:0 0 0 1px #ffdb8b73}.wax span{font-size:.7em;padding:0 .08em}.open-label{color:#ffdeaa;font-size:.65rem}
.welcome.opening .wax{opacity:0;transform:translate(-50%,-75%) rotate(15deg) scale(.75)}.welcome.opening .env-flap{transform:rotateX(175deg);z-index:0}.welcome.opening .env-letter{transform:translateY(-55%)}.welcome.opening{animation:gate-exit .38s ease .84s both}@keyframes gate-exit{to{opacity:0}}
@media(max-width:600px){.masthead{padding:.6rem .75rem}.masthead nav{gap:.75rem;font-size:.54rem;letter-spacing:.09em}.brand{font-size:1.75rem}.hero{padding:.6rem}.invite-card{padding-top:3.4rem;padding-bottom:3.2rem;min-height:34rem}.invite-card h1{max-width:100%}.couple-grid{grid-template-columns:1fr;gap:1rem}.couple-grid>img{width:46px;height:auto;margin:auto}.programme-grid{grid-template-columns:1fr}.celebrations{min-height:26rem}.celebration-content{width:min(100%,30rem)}.day{padding:1.15rem}.patrika .actions{gap:.4rem}}
@media(max-width:360px){.masthead nav{gap:.52rem}.invite-card{min-height:31rem}.invite-card h1{font-size:3rem}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*::before,*::after{animation-duration:.01ms!important;animation-delay:0ms!important;transition-duration:.01ms!important;transition-delay:0ms!important}}
[hidden]{display:none!important}#welcome-title:focus{outline:none}
/* The invitation opens in three beats: seal, flap, then the letter. */
.gate-frame .corner{animation:corner-light 7s ease-in-out infinite alternate}
.gate-frame .corner:nth-child(2),.gate-frame .corner:nth-child(3){animation-delay:-3.3s}
@keyframes corner-light{from{filter:drop-shadow(0 0 1px #ffda8d42)}to{filter:drop-shadow(0 0 8px #ffd497a0)}}
.welcome::after{content:"";position:fixed;inset:0;z-index:-1;pointer-events:none;background:radial-gradient(ellipse at 50% 42%,#f4a56047,transparent 63%);animation:velvet-glow 8s ease-in-out infinite alternate}
@keyframes velvet-glow{from{opacity:.28}to{opacity:.78}}
.envelope-button{position:relative}
.env-back{background:repeating-linear-gradient(108deg,#ffffff07 0 1px,transparent 1px 4px),linear-gradient(145deg,#b9314b,#610e24)}
.env-pocket{background:repeating-linear-gradient(108deg,#ffffff06 0 1px,transparent 1px 4px),linear-gradient(35deg,#6c1026 0%,#982339 52%,#b33948 100%)}
.env-flap{background:repeating-linear-gradient(108deg,#ffffff07 0 1px,transparent 1px 4px),linear-gradient(155deg,#c64753,#8e142e 65%,#690f25);transition:transform .74s cubic-bezier(.25,.7,.24,1) .14s,z-index 0s .41s}
.env-letter{gap:.21rem;justify-items:center;background:radial-gradient(ellipse,#fff9e8,#f0d9af);font-size:clamp(1.3rem,4.5vw,2.5rem);transition:transform .92s cubic-bezier(.22,.85,.27,1) .53s}
.env-letter img{width:clamp(1.55rem,5vw,2.85rem);height:auto;opacity:.86}
.env-letter small{font-size:.57rem;color:#72502b}
.wax::after{content:"";position:absolute;inset:10%;border-radius:50%;pointer-events:none;background:linear-gradient(115deg,transparent 24%,#ffedb971 46%,transparent 61%);background-size:240% 100%;animation:seal-shine 3.9s ease-in-out infinite}
@keyframes seal-shine{0%,44%{background-position:125% 0}78%,100%{background-position:-45% 0}}
.welcome.opening{animation:gate-exit .55s ease 1.66s both}
.welcome.opening .wax{animation:lift-seal .62s cubic-bezier(.22,.76,.24,1) both}
@keyframes lift-seal{
  0%{opacity:1;transform:translate(-50%,-50%) rotate(-7deg) scale(1)}
  20%{opacity:1;transform:translate(-50%,-49%) rotate(-7deg) scale(.91)}
  65%{opacity:.95;transform:translate(-48%,-102%) rotate(18deg) scale(1.13)}
  100%{opacity:0;transform:translate(-43%,-150%) rotate(35deg) scale(.72)}
}
.welcome.opening .env-flap{transform:rotateX(178deg)}
.welcome.opening .env-letter{transform:translateY(-81%) scale(1.04)}
.welcome.opening .open-label{opacity:0;transition:opacity .26s}
.seal-petals{position:absolute;inset:0;pointer-events:none;z-index:8;overflow:visible}
.seal-petals i{position:absolute;left:50%;top:49%;width:var(--petal-size);height:calc(var(--petal-size)*.59);border-radius:70% 20% 70% 20%;background:var(--petal-colour);opacity:0}
.welcome.opening .seal-petals i{animation:seal-petal 1.42s cubic-bezier(.12,.64,.35,1) var(--delay) both}
@keyframes seal-petal{
  0%{opacity:0;transform:translate(0,0) rotate(0) scale(.5)}
  14%{opacity:.92}
  65%{opacity:.85;transform:translate(var(--dx),var(--dy)) rotate(var(--spin)) scale(1)}
  100%{opacity:0;transform:translate(calc(var(--dx)*1.22),calc(var(--dy) + 28px)) rotate(calc(var(--spin) + 80deg)) scale(.75)}
}
.invitation-opened .invite-card{animation:arrive-card .9s cubic-bezier(.22,.7,.26,1) both}
@keyframes arrive-card{from{opacity:.25;transform:translateY(23px) scale(.969)}to{opacity:1;transform:translateY(0) scale(1)}}
.invitation-opened .invite-card h1{animation:arrive-names .8s ease .16s both}
@keyframes arrive-names{from{opacity:.25;transform:translateY(9px);filter:blur(2px)}to{opacity:1;transform:translateY(0);filter:blur(0)}}
.date-reveal.revealed .date-value{animation:date-bloom .66s cubic-bezier(.23,.82,.27,1) both}
@keyframes date-bloom{from{opacity:.45;transform:scale(.92)}to{opacity:1;transform:scale(1)}}
.date-reveal:not(.revealed)::after{content:"";position:absolute;inset:1px;pointer-events:none;background:linear-gradient(120deg,transparent 26%,#fff0b962 48%,transparent 63%);background-size:230% 100%;animation:seal-shine 4.8s ease-in-out infinite}
.no-js .date-reveal::after{display:none}
.reading-progress{position:absolute;left:0;bottom:-1px;width:100%;height:2px;transform:scaleX(var(--reading,0));transform-origin:left;background:linear-gradient(90deg,#742239,#d1a35a);pointer-events:none}
.will-reveal{opacity:0;transform:translateY(19px);transition:opacity .74s ease,transform .74s cubic-bezier(.22,.65,.27,1);transition-delay:var(--reveal-delay,0ms)}
.will-reveal.in-view,.will-reveal:focus-within{opacity:1;transform:translateY(0)}
.celebrations .celebration-image{transform:scale(1.04);transition:transform 4s cubic-bezier(.17,.7,.26,1)}
.celebrations.in-view .celebration-image{transform:scale(1.005)}
.footer-actions{display:flex;flex-wrap:wrap;gap:1rem;align-items:center}
.footer-actions button{border:0;background:none;color:inherit;cursor:pointer;padding:.3rem 0;font:600 .69rem/1.45 system-ui,sans-serif;letter-spacing:.1em;text-transform:uppercase}
.footer-actions button:hover,.footer-actions a:hover{text-decoration:underline;text-underline-offset:.2rem}
@media(prefers-reduced-motion:reduce){.will-reveal{opacity:1!important;transform:none!important}.seal-petals{display:none}.reading-progress{display:none}}
/* Gold-leaf date reveal and music controls. */
.masthead nav{margin-left:auto;margin-right:clamp(.6rem,2vw,1.4rem)}
.music-toggle{display:inline-flex;align-items:center;gap:.4rem;min-height:2rem;padding:.38rem .65rem;border:1px solid #be945d88;border-radius:99px;color:var(--ink);background:#fff9ec;cursor:pointer;font:600 .6rem/1.2 system-ui,sans-serif;letter-spacing:.09em;text-transform:uppercase}
.music-toggle[aria-pressed=true]{background:#f1e1c5;border-color:#ad8248}.music-toggle[aria-pressed=true] svg{animation:music-pulse 2.5s ease-in-out infinite}
@keyframes music-pulse{50%{transform:rotate(-10deg) scale(1.12);color:#936333}}
.date-stage{position:relative;width:min(100%,16.75rem)}.date-stage .date-reveal{width:100%}
.date-sparkles{position:absolute;inset:0;pointer-events:none}.date-sparkles i{position:absolute;left:50%;top:48%;color:#ac772e;opacity:0;font-style:normal;text-shadow:0 0 9px #f0c575}
.date-sparkles i:nth-child(1){--x:-110px;--y:-61px;--delay:35ms}.date-sparkles i:nth-child(2){--x:102px;--y:-52px;--delay:100ms}.date-sparkles i:nth-child(3){--x:-125px;--y:38px;--delay:150ms}.date-sparkles i:nth-child(4){--x:122px;--y:45px;--delay:50ms}.date-sparkles i:nth-child(5){--x:-59px;--y:-73px;--delay:95ms}.date-sparkles i:nth-child(6){--x:68px;--y:61px;--delay:135ms}
.date-opened .date-sparkles i{animation:date-sparkle 1.1s ease-out var(--delay) both}
@keyframes date-sparkle{0%{opacity:0;transform:translate(0,0) scale(.45)}29%{opacity:1}62%{opacity:.8;transform:translate(var(--x),var(--y)) scale(1.13)}100%{opacity:0;transform:translate(calc(var(--x)*1.1),calc(var(--y)*1.1)) scale(.65)}}
.countdown-reveal{display:grid;grid-template-rows:0fr;opacity:0;width:min(100%,24rem);transition:grid-template-rows .76s cubic-bezier(.22,.72,.22,1),opacity .55s ease .12s}
.countdown-reveal.countdown-opened{grid-template-rows:1fr;opacity:1}.countdown-inner{min-height:0;overflow:hidden}
.countdown-panel{margin:1rem .2rem .1rem;padding:.65rem .45rem .5rem;background:#fffbf0bc;border:1px solid #bf995a77;box-shadow:0 6px 16px #9e682219}
.countdown-panel .countdown{margin:.03rem auto .38rem}.countdown-panel .countdown dd{color:#75253e;font-size:clamp(1.5rem,5vw,2.45rem)}.countdown-panel .countdown div+div{border-color:#b68b4759}.countdown-panel .countdown dt{color:#6f492a;font-size:.5rem;letter-spacing:.1em}
.countdown-panel #countdown-caption{color:#725032;font-size:.91rem}
.countdown-opened .countdown div{animation:countdown-arrival .7s cubic-bezier(.21,.72,.25,1) both}
.countdown-opened .countdown div:nth-child(2){animation-delay:95ms}.countdown-opened .countdown div:nth-child(3){animation-delay:175ms}.countdown-opened .countdown div:nth-child(4){animation-delay:255ms}
@keyframes countdown-arrival{from{opacity:0;transform:translateY(11px)}to{opacity:1;transform:translateY(0)}}
.celebration-link{display:inline-flex;gap:.45rem;align-items:center;color:#ffedc7;text-decoration:none;border-bottom:1px solid #e6c281a0;padding:.35rem 0;font:600 .66rem/1.35 system-ui,sans-serif;letter-spacing:.14em;text-transform:uppercase}
.celebration-link:hover{border-color:#ffe6a7}.celebration-link span{font-size:1rem}
@media(max-width:600px){.music-toggle span{display:none}.music-toggle{padding:.32rem;min-width:1.95rem;justify-content:center}.masthead nav{margin-right:.45rem}.masthead nav a{letter-spacing:.055em}}
@media(prefers-reduced-motion:reduce){.date-sparkles{display:none}}

/* Ceremony vignettes and the guest's diya. */
.chapters{background:radial-gradient(ellipse at 50% 0%,#693644,#321222 78%);color:#fff1d9;padding:clamp(3rem,7vw,5.75rem) 0;text-align:center}
.chapters .wrap{width:min(100% - 2rem,66rem)}
.chapter-heading .eyebrow{color:#f0c78c}
.chapter-heading p:last-child{color:#f2d9c4;font-size:clamp(1.12rem,3vw,1.42rem)}
.chapter-controls button:focus-visible,.blessing-light button:focus-visible{outline-color:#ffe1a5}
.haveli-map {
  position: relative;
  max-width: 54rem;
  margin: clamp(.75rem, 3vw, 1.7rem) auto 1.4rem;
  perspective: 950px;
  background: radial-gradient(ellipse at 50% 57%, #dc9a4838, transparent 68%);
}
.haveli-paper {
  position: relative;
  transform-origin: center 89%;
}
.haveli-art {
  display: block;
  width: 100%;
  height: auto;
  filter: drop-shadow(0 .75rem 1rem #2309158c);
}
.haveli-map.in-view .haveli-paper {
  animation: unfold-haveli .95s cubic-bezier(.2,.74,.24,1) both;
}
@keyframes unfold-haveli {
  from { opacity: .27; transform: rotateX(-57deg) translateY(7px) scale(.985); }
  72% { opacity: 1; transform: rotateX(3deg); }
  to { opacity: 1; transform: rotateX(0); }
}
.chapter-controls {
  position: absolute;
  inset: 36% 1.7% 0;
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: clamp(.2rem, 1vw, .8rem);
}
.chapter-controls button {
  position: relative;
  min-width: 0;
  display: flex;
  align-items: end;
  justify-content: center;
  padding: 0;
  border: 0;
  border-radius: .25rem;
  background: transparent;
  color: #fff1d6;
  cursor: pointer;
}
.room-pin {
  position: absolute;
  left: 50%;
  top: 46%;
  width: clamp(.72rem, 2.9vw, 1.25rem);
  aspect-ratio: 1;
  border: 1px solid #ffefc8;
  border-radius: 50%;
  background: var(--room-light);
  box-shadow: 0 0 0 .2rem #29141aab, 0 0 .9rem var(--room-light);
  transform: translate(-50%, -50%);
  transition: transform .25s ease, box-shadow .25s ease;
}
.chapter-controls button:nth-child(2) .room-pin { top: 39%; }
.room-label {
  width: min(100%, 11rem);
  min-height: 2.65rem;
  display: block;
  padding: .4rem .2rem .35rem;
  border: 1px solid #d2a775aa;
  border-radius: .15rem;
  background: #321322;
  box-shadow: 0 .3rem .85rem #200c17a8;
  font: 600 clamp(.64rem, 1.55vw, .84rem)/1.2 system-ui,sans-serif;
  transition: background .22s, border-color .22s, color .22s;
}
.room-act { color: var(--room-light); margin-right: .22rem; font-size: .9em; }
.room-label small {
  display: block;
  margin-top: .12rem;
  color: #f2d7bf;
  font: 500 clamp(.63rem, 1.4vw, .92rem)/1.1 var(--serif);
}
.chapter-controls button:hover .room-label { border-color: #ffe3a5; }
.chapter-controls button[aria-pressed="true"] .room-label {
  color: #3c1727;
  background: #f4d6a4;
  border-color: #ffe3a5;
}
.chapter-controls button[aria-pressed="true"] .room-label small,
.chapter-controls button[aria-pressed="true"] .room-act { color: #6f432b; }
.chapter-controls button[aria-pressed="true"] .room-pin,
.chapter-controls button:hover .room-pin {
  transform: translate(-50%, -50%) scale(1.2);
  box-shadow: 0 0 0 .25rem #fff0b64d, 0 0 1.3rem var(--room-light);
}
.haveli-guide {
  display: flex;
  justify-content: space-between;
  flex-wrap: wrap;
  align-items: center;
  gap: .25rem .9rem;
  margin: .85rem auto 0;
  padding: .65rem .8rem;
  text-align: left;
  border: 1px solid #d2a77570;
  border-left: 3px solid var(--haveli-accent, #f2ae48);
  background: #321322;
  transition: border-color .28s ease;
}
.haveli-date { color: var(--haveli-accent, #f2ae48); font-size: .59rem; letter-spacing: .085em; }
.haveli-room-title { font-size: clamp(1.18rem, 2.8vw, 1.55rem); line-height: 1.15; color: #fff1d6; }
.haveli-guide a { color: #ffe4ad; letter-spacing: .07em; }
.chapter-controls button[aria-pressed="true"] .room-pin { animation: room-awakens .65s ease-out both; }
@keyframes room-awakens {
  from { box-shadow: 0 0 0 .52rem #fff0b680, 0 0 1.65rem var(--room-light); }
  to { box-shadow: 0 0 0 .25rem #fff0b64d, 0 0 1.3rem var(--room-light); }
}
@media (max-width: 440px) {
  .room-pin { top: 28%; }
  .chapter-controls button:nth-child(2) .room-pin { top: 19%; }
  .room-act { margin-right: .04rem; }
}
.chapter-stage{display:grid;gap:1rem;margin-top:1.2rem}
.chapter-scene{--panel-ratio:1;display:grid;grid-template-columns:minmax(0,1.05fr) minmax(0,1fr);min-height:21rem;position:relative;isolation:isolate;overflow:hidden;text-align:left;border:1px solid #d5a87487;background:var(--act-wash);box-shadow:0 14px 36px #17081067}
.chapter-scene::after{content:"";position:absolute;inset:6px;border:1px solid #ecc58942;pointer-events:none}
.chapter-art{position:relative;overflow:hidden;min-height:100%}
.chapter-art::before{content:"";position:absolute;inset:0;background-image:url("assets/ceremony-triptych.webp");background-position:var(--act) center;background-repeat:no-repeat;background-size:max(300%,calc(300cqh * var(--panel-ratio))) auto}
.chapter-art{container-type:size}
.chapter-art::after{content:"";position:absolute;inset:0;background:linear-gradient(90deg,transparent 68%,var(--act-wash))}
.chapter-copy{align-self:center;padding:clamp(1.25rem,4.4vw,3rem);padding-left:clamp(1.1rem,3vw,2.7rem)}
.chapter-copy .eyebrow{color:var(--act-ink);letter-spacing:.12em}
.chapter-copy .script{font-size:clamp(2.75rem,6vw,5rem);margin:.5rem 0 .35rem;line-height:1.03}
.chapter-copy>p:not(.eyebrow){color:#f5dfcd;font-size:clamp(1.15rem,2.6vw,1.37rem);line-height:1.3;max-width:26ch}
.chapter-copy .celebration-link{margin-top:1rem;font-size:.6rem}
.chapter-scene.changing .chapter-art::before{animation:act-picture .88s cubic-bezier(.2,.65,.25,1) both}
.chapter-scene.changing .chapter-copy{animation:act-copy .66s ease-out both}
@keyframes act-picture{from{transform:scale(1.06);opacity:.35}to{transform:scale(1);opacity:1}}
@keyframes act-copy{from{transform:translateY(9px);opacity:.25}to{transform:translateY(0);opacity:1}}
.chapter-credit{margin-top:.85rem;font:500 .64rem/1.45 system-ui,sans-serif;color:#ebcdb7;letter-spacing:.08em}
.blessing-light{position:relative;isolation:isolate;overflow:hidden;text-align:center;padding:clamp(2.6rem,6vw,5rem) 1rem;background:#260e1b;color:#fff1dc;border-block:1px solid #c3935c}
.diya-aura{position:absolute;z-index:-1;inset:0;background:radial-gradient(ellipse at 50% 26%,#a65a31b5,#4c1c28 48%,transparent 78%);opacity:.15;transition:opacity 1.35s}
.blessing-light.is-lit .diya-aura,.no-js .diya-aura{opacity:1}
.diya{display:block;width:6.6rem;height:auto;margin:0 auto .6rem;overflow:visible}
.diya-flame{transform-origin:70px 74px;transition:opacity .8s,transform .8s;opacity:0;transform:scale(.4)}
.blessing-light.is-lit .diya-flame,.no-js .diya-flame{opacity:1;transform:scale(1);filter:drop-shadow(0 0 13px #ffbb64);animation:flicker 2.6s ease-in-out .8s infinite}
@keyframes flicker{0%,100%{transform:scale(.97,1)}35%{transform:rotate(3deg) scale(1.04,.97)}70%{transform:rotate(-2deg) scale(.97,1.04)}}
.blessing-light .eyebrow{color:#f4cf97}
.blessing-light .script{font-size:clamp(2.8rem,7vw,5.1rem)}
.blessing-light #diya-message{color:#f7decd;font-size:1.16rem}
.blessing-light { --wish-colour: #f4bf79; }
.blessing-light[data-wish="joy"] { --wish-colour: #ffdc81; }
.blessing-light[data-wish="togetherness"] { --wish-colour: #f5a8cf; }
.diya-stage {
  position: relative;
  display: grid;
  place-items: center;
  width: min(100%, 13rem);
  height: 9.8rem;
  margin: 0 auto .65rem;
  isolation: isolate;
}
.diya-stage .diya { position: relative; margin: 0; }
.diya-rangoli {
  position: absolute;
  width: 11rem;
  height: 11rem;
  inset: 50% auto auto 50%;
  z-index: -1;
  color: var(--wish-colour);
  opacity: .2;
  transform: translate(-50%, -50%) rotate(-22.5deg) scale(.65);
  transition: opacity .85s ease, transform 1s cubic-bezier(.22,.72,.25,1), color .45s ease;
}
.blessing-light.is-lit .diya-rangoli, .no-js .diya-rangoli {
  opacity: .9;
  transform: translate(-50%, -50%) rotate(0) scale(1);
}
.diya-wishes {
  display: flex;
  flex-wrap: wrap;
  justify-content: center;
  gap: .4rem;
  max-width: 26rem;
  padding: .55rem 0 0;
  margin: .85rem auto 0;
  border: 0;
}
.diya-wishes legend {
  padding: 0;
  margin-inline: auto;
  color: #f7decd;
  font: 500 .71rem/1.4 system-ui,sans-serif;
  letter-spacing: .06em;
}
.diya-wishes label { position: relative; display: inline-flex; }
.diya-wishes input { position: absolute; width: 1px; height: 1px; opacity: 0; }
.diya-wishes label span {
  display: inline-flex;
  align-items: center;
  min-height: 2.6rem;
  padding: .35rem .85rem;
  border: 1px solid #b7857280;
  border-radius: 2rem;
  color: #ffeaca;
  background: #391729;
  cursor: pointer;
  font: 600 .72rem/1.2 system-ui,sans-serif;
}
.diya-wishes input:checked + span { background: var(--wish-colour); border-color: var(--wish-colour); color: #381626; }
.diya-wishes input:focus-visible + span { outline: 2px solid #fff1d6; outline-offset: 3px; }
.blessing-light button{margin-top:1rem;background:#f5d8ab;color:#451727;cursor:pointer}
.blessing-light button[aria-disabled=true]{background:transparent;color:#ffdfae;cursor:default}
.sound-credit{color:#e5cbb8;font:400 .72rem/1.5 system-ui,sans-serif;margin-top:.25rem}
.sound-credit a{font:inherit;text-transform:none;letter-spacing:0;text-decoration:underline;text-underline-offset:.2rem}
.welcome::after{content:"";position:absolute;inset:0;z-index:-1;pointer-events:none;background:radial-gradient(circle at 23% 26%,#ffc57732 0,transparent 26%),radial-gradient(circle at 79% 69%,#ee8c8050 0,transparent 27%);animation:gate-light 8s ease-in-out infinite alternate}
@keyframes gate-light{from{opacity:.3;transform:scale(.96)}to{opacity:.83;transform:scale(1.02)}}
@media(max-width:650px){
  .chapter-scene{grid-template-columns:1fr;min-height:auto}
  .chapter-art{min-height:0;height:clamp(13rem,56vw,20rem)}
  .chapter-art::after{background:linear-gradient(0deg,var(--act-wash),transparent 42%)}
  .chapter-copy{padding:.35rem 1.25rem 1.65rem;text-align:center}
  .chapter-copy>p:not(.eyebrow){margin-inline:auto}
}

.blessings {
  padding: clamp(1.15rem, 4vw, 3rem);
  background: radial-gradient(ellipse at 50% 0%, #fffaf1, #f6ead9);
}
.blessing-panel {
  position: relative;
  width: min(100%, 62rem);
  padding: clamp(2rem, 5vw, 3.8rem) clamp(.8rem, 4vw, 2.2rem);
  border: 1px solid #c9a979;
  background: radial-gradient(ellipse at 50% 12%, #fffdfa, #fff8ed 76%);
  box-shadow: 0 14px 44px #8a5b2710;
}
.blessing-panel::before {
  content: "";
  position: absolute;
  inset: 5px;
  border: 1px solid #ddc8a4;
  pointer-events: none;
}
.ganesh-medallion {
  display: grid;
  place-items: center;
  width: 4.4rem;
  aspect-ratio: 1;
  margin: 0 auto 1rem;
  border: 1px solid #d3b480;
  border-radius: 50%;
  background: radial-gradient(circle, #fffdf6 43%, #f9ebd2);
  box-shadow: 0 0 0 4px #f5e9d5;
}
.ganesh-medallion img { width: 2rem; height: auto; }
.blessing-panel .script {
  font-size: clamp(2.65rem, 6.2vw, 4.7rem);
  margin: .4rem 0 .6rem;
}
.ganesh-shlok {
  margin: 0 auto;
  color: #653146;
  font: clamp(.98rem, 3.8vw, 1.46rem)/1.6 "Tiro Devanagari", "Nirmala UI", Mangal, serif;
}
.ganesh-shlok span { display: block; }
.blessing-flourish {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: .5rem;
  margin: .7rem 0 .5rem;
  color: #a57842;
}
.blessing-flourish svg { width: 2rem; }
.blessing-flourish::before, .blessing-flourish::after {
  content: "";
  width: clamp(2rem, 8vw, 5rem);
  height: 1px;
  background: linear-gradient(90deg, transparent, #c39c64);
}
.blessing-flourish::after { background: linear-gradient(90deg, #c39c64, transparent); }
@media (prefers-reduced-motion: no-preference) {
  .blessing-flourish.lotus-reveal path {
    stroke-dasharray: 1;
    stroke-dashoffset: 1;
    transition: stroke-dashoffset .9s cubic-bezier(.2,.55,.3,1);
  }
  .blessing-flourish.lotus-reveal.in-view path { stroke-dashoffset: 0; }
  .blessing-flourish.lotus-reveal::before,
  .blessing-flourish.lotus-reveal::after {
    transform-origin: right center;
    transition: transform .65s ease .4s;
  }
  .blessing-flourish.lotus-reveal:not(.in-view)::before { transform: scaleX(0); }
  .blessing-flourish.lotus-reveal::after { transform-origin: left center; }
  .blessing-flourish.lotus-reveal:not(.in-view)::after { transform: scaleX(0); }
}
.blessing-line {
  max-width: 38ch;
  margin-inline: auto;
  color: #624538;
  font-size: clamp(1.12rem, 3vw, 1.35rem);
  line-height: 1.33;
}
.blessing-families { margin-top: .7rem; }
.blessing-families summary {
  display: inline-flex;
  align-items: center;
  gap: .55rem;
  min-height: 2.75rem;
  padding: 0 .5rem;
  color: #6b4533;
  cursor: pointer;
  list-style: none;
  font: 600 .63rem/1.4 system-ui, sans-serif;
  letter-spacing: .1em;
  text-transform: uppercase;
}
.blessing-families summary::-webkit-details-marker { display: none; }
.blessing-families summary:focus-visible { outline: 2px solid #ae7131; }
.blessing-families summary span::before { content: "+"; font-size: 1rem; }
.blessing-families[open] summary span::before { content: "−"; }
.blessing-families .couple-grid {
  margin-top: .55rem;
  padding-top: 1.35rem;
  border-top: 1px solid #dfc9a4;
}
.blessings.in-view .ganesh-medallion {
  animation: blessing-glow 1.5s ease-out .2s both;
}
@keyframes blessing-glow {
  from { box-shadow: 0 0 0 0 #eac98770; }
  48% { box-shadow: 0 0 0 12px #eac98748; }
  to { box-shadow: 0 0 0 4px #f5e9d5; }
}

.toran-frame {
  position: absolute;
  inset: .8rem;
  border: 1px solid #d6a66570;
  box-shadow: inset 0 0 0 4px #381a2450, inset 0 0 0 5px #dfb77a38;
  pointer-events: none;
}
.toran-garland {
  position: absolute;
  top: .45rem;
  left: 50%;
  width: clamp(35rem, 100%, 76rem);
  max-width: none;
  height: auto;
  transform: translateX(-50%);
  filter: drop-shadow(0 5px 5px #100509a6);
  pointer-events: none;
}
.toran-ready .toran-garland {
  transition: transform 1.02s cubic-bezier(.25, .78, .2, 1);
}
.toran-ready.toran-open .toran-garland {
  transform: translate(-50%, -105%);
}
.celebrations.toran-ready::after {
  opacity: 1;
  transition: opacity 1s ease;
}
.celebrations.toran-open::after { opacity: .67; }
.celebrations.toran-ready .celebration-image {
  transform: scale(1.09);
  transition: transform 1.45s cubic-bezier(.2, .65, .2, 1), filter 1s ease;
  filter: brightness(.77) saturate(.87);
}
.celebrations.toran-open .celebration-image {
  transform: scale(1.005);
  filter: brightness(1.03) saturate(1.08);
}
.toran-ready .celebration-content {
  position: relative;
  background: #260f19df;
  transition: background-color .85s, border-color .85s;
}
.toran-open .celebration-content {
  background: #240d14a8;
  border-color: #efd39aba;
}
.toran-actions {
  display: grid;
  min-height: 2.8rem;
  place-items: center;
}
.toran-actions > * { grid-area: 1 / 1; }
.toran-button {
  min-height: 2.8rem;
  padding: .55rem .95rem;
  border: 1px solid #f0ce90;
  background: #f6dca7;
  color: #401723;
  cursor: pointer;
  font: 650 .67rem/1.4 system-ui, sans-serif;
  letter-spacing: .15em;
  text-transform: uppercase;
  transition: background-color .22s ease;
}
.toran-button:hover { background: #ffebc3; }
.toran-button span { margin-left: .35rem; font-size: .9rem; }
.toran-button:focus-visible, .toran-enter:focus-visible { outline-color: #ffe1a5; }
.toran-ready .toran-enter { min-height: 2.75rem; }
.toran-open .toran-enter { animation: toran-arrival .65s ease-out both; }
@keyframes toran-arrival {
  from { opacity: .35; transform: translateY(5px); }
  to { opacity: 1; transform: translateY(0); }
}
@media (max-width: 600px) {
  .toran-frame { inset: .6rem; }
  .toran-ready .celebration-content { margin-top: 1.75rem; }
}

.wedding-day {
  padding: 1.2rem 0;
  background: radial-gradient(ellipse at 25% 0%, #fff9ed, #f1dfc3);
  border-bottom: 1px solid #ad8554;
}
.wedding-day-inner {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: space-between;
  gap: .8rem 1.5rem;
  padding: .8rem 1rem .8rem 1.3rem;
  border-left: 2px solid #ab7b41;
}
.wedding-day-copy .eyebrow { color: #76502c; }
.wedding-day-event {
  color: var(--wine);
  font-size: clamp(1.7rem, 4vw, 2.65rem);
  line-height: 1.05;
  font-weight: 600;
  margin: .12rem 0;
}
.wedding-day-actions { display: flex; flex-wrap: wrap; gap: .5rem; }
.wedding-day-actions a { padding-inline: .75rem; }
.wedding-day #wedding-day-time { color: #654638; }

.chapter-stage { touch-action: pan-y pinch-zoom; }
.chapter-scene.changing .chapter-copy { animation-name: chapter-page; }
@keyframes chapter-page {
  from { opacity: 0; transform: translateX(var(--page-turn-offset, 0)); }
  to { opacity: 1; transform: translateX(0); }
}
@media (any-pointer: fine) and (not (any-pointer: coarse)) {
  .chapter-swipe-hint { display: none; }
}
.visually-hidden {
  position: absolute;
  width: 1px;
  height: 1px;
  padding: 0;
  margin: -1px;
  overflow: hidden;
  clip-path: inset(50%);
  white-space: nowrap;
}
#share-status:not(:empty) {
  flex-basis: 100%;
  font-size: .95rem;
}
#share-link {
  width: min(100%, 18rem);
  padding: .38rem;
  background: #fff0d6;
  color: var(--ink);
  border: 1px solid #d6a665;
}

/* Each ceremony carries one segment of the gold thread. */
.day dl > div {
  --thread-inset: .36rem;
  position: relative;
  padding-inline-start: 1.45rem;
}
.day dl > div::before,
.day dl > div::after {
  content: "";
  position: absolute;
  left: var(--thread-inset);
  pointer-events: none;
}
.day dl > div::before {
  top: 0;
  bottom: -1px;
  width: 1px;
  background: #b08349;
  transform-origin: top;
}
.day dl > div:first-child::before { top: 50%; }
.day dl > div:last-child::before { bottom: 50%; }
.day dl > div::after {
  top: 50%;
  width: .34rem;
  height: .34rem;
  border: 1px solid #94642f;
  background: #e7bd76;
  box-shadow: 0 0 0 .17rem #c5985726;
  transform: translate(-45%, -50%) rotate(45deg);
}

.family-flourish {
  display: block;
  width: min(100%, 24rem);
  margin: .65rem auto 0;
  filter: drop-shadow(0 1px 0 #fffaf2);
}
.venue-location {
  position: relative;
  isolation: isolate;
  width: min(100%, 32rem);
  margin: .4rem auto 0;
  padding: 3.9rem clamp(1.1rem, 7vw, 3rem) 1.05rem;
}
.venue-arch {
  position: absolute;
  inset: 0;
  z-index: -1;
  width: 100%;
  height: 100%;
  pointer-events: none;
  filter: drop-shadow(0 1px 0 #fff);
}
.venue-location-copy address { margin-top: .25rem; }
.venue-lamp {
  flex: 0 0 auto;
  width: 1.35rem;
  height: 1.35rem;
}
.venue-lamp-flame { filter: drop-shadow(0 0 3px #ffbe69); }
.closing-seal {
  position: relative;
  display: block;
  width: clamp(4.5rem, 9vw, 5.3rem);
  margin: 0 auto 1rem;
}
.closing-seal img { width: 100%; height: auto; }
@media (prefers-reduced-motion: no-preference) {
  .ornament-reveal .vine-stem,
  .ornament-reveal .arch-trace {
    stroke-dasharray: 1;
    stroke-dashoffset: 1;
    transition: stroke-dashoffset 1.05s cubic-bezier(.2,.6,.3,1);
  }
  .ornament-reveal.in-view .vine-stem,
  .ornament-reveal.in-view .arch-trace { stroke-dashoffset: 0; }
  .ornament-reveal .vine-leaves,
  .ornament-reveal .vine-bud,
  .ornament-reveal .arch-detail {
    opacity: 0;
    transition: opacity .5s ease .4s;
  }
  .ornament-reveal .vine-bud { transition-delay: .7s; }
  .ornament-reveal.in-view .vine-leaves,
  .ornament-reveal.in-view .vine-bud,
  .ornament-reveal.in-view .arch-detail { opacity: 1; }
  .venue-lamp.ornament-reveal .venue-lamp-flame {
    opacity: 0;
    transform: scale(.45);
    transform-box: fill-box;
    transform-origin: center bottom;
    transition: opacity .5s ease .2s, transform .55s ease .2s;
  }
  .venue-lamp.ornament-reveal.in-view .venue-lamp-flame { opacity: 1; transform: scale(1); }
  .closing-seal.ornament-reveal.in-view::after {
    content: "";
    position: absolute;
    inset: 0;
    pointer-events: none;
    mask: url("assets/digital-monogram.png") center / contain no-repeat;
    background: linear-gradient(111deg, transparent 37%, #bd7437 45%, #fff3c0 51%, #e5a353 56%, transparent 64%) 100% center / 270% 100%;
    animation: closing-foil 1.55s ease-in-out .24s both;
  }
  @keyframes closing-foil {
    from { background-position: 100% center; }
    to { background-position: 0% center; }
  }
}
@media (prefers-reduced-motion: no-preference) {
  .day dl > .thread-reveal::before {
    transform: scaleY(0);
    transition: transform .4s ease var(--thread-delay);
  }
  .day dl > .thread-reveal::after {
    background: var(--paper);
    box-shadow: 0 0 0 .13rem #c598571b;
    transition: background-color .3s ease calc(var(--thread-delay) + 100ms),
      box-shadow .45s ease calc(var(--thread-delay) + 100ms);
  }
  .day dl > .thread-reveal.in-view::before { transform: scaleY(1); }
  .day dl > .thread-reveal.in-view::after {
    background: #e7bd76;
    box-shadow: 0 0 0 .17rem #c5985726, 0 0 .48rem #e9b96e72;
  }
}


/* Three programme cards on wide screens, and one continuous schedule on phones. */
.event-location {
  display: block;
  margin-top: .25rem;
  color: #775439;
  font-size: .92rem;
  line-height: 1.35;
}
.day-location { color: #775439; font-size: .96rem; margin-top: .8rem; }
.event-location a, .day-location a { text-underline-offset: .18em; }
@media (min-width: 900px) {
  .programme-grid { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  .programme .day { padding: clamp(1.1rem, 2vw, 1.6rem); }
}
@media (min-width: 601px) and (max-width: 899px) {
  .programme-grid { grid-template-columns: 1fr; max-width: 34rem; }
}
