/* Bougainvillea design (ported from 9.html). Palette tokens come from app/invites/palettes.py. */
:root{
  --ink:#1c3452;--ink2:#47607f;--blue:#2f7fb8;--blue2:#1f5f93;--g1:#b8862b;--g2:#f3d27a;
  --coral:#ff6b4a;--rose:#e8455f;--mag:#d6336c;--leaf:#2f6b3a;--paper:#fbfcfd;
  --sat:env(safe-area-inset-top,0px);--sab:env(safe-area-inset-bottom,0px);
  --edge:max(12px,calc(50vw - 240px + 12px));
  --script:'Playfair Display',Georgia,'Times New Roman',serif;
  --serif:'Cormorant Garamond','Cormorant',Garamond,'Palatino Linotype','Book Antiqua',Georgia,serif;
  --caps:'Cinzel','Trajan Pro','Optima','Palatino Linotype',Georgia,serif;
  --deva:'Tiro Devanagari Hindi','Noto Serif Devanagari','Kohinoor Devanagari','Mangal',serif;
  --spring:cubic-bezier(.3,1.7,.5,1);
  --noise: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='3' stitchTiles='stitch'/%3E%3CfeColorMatrix values='0 0 0 0 .45 0 0 0 0 .38 0 0 0 0 .3 0 0 0 .55 -.16'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");
  --bloomtile:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='220' height='220' viewBox='0 0 220 220'%3E%3Cg opacity='.2'%3E%3Cg transform='translate(46 52)'%3E%3Cpath fill='%23e8455f' d='M0 0C-6-3-5-11 0-12C5-11 6-3 0 0Z'/%3E%3Cpath fill='%23d6336c' transform='rotate(120)' d='M0 0C-6-3-5-11 0-12C5-11 6-3 0 0Z'/%3E%3Cpath fill='%23ff6b4a' transform='rotate(240)' d='M0 0C-6-3-5-11 0-12C5-11 6-3 0 0Z'/%3E%3Cpath fill='%233e7d3c' transform='translate(14 6) rotate(70)' d='M0 0Q6-6 0-16Q-6-6 0 0Z'/%3E%3C/g%3E%3Cg transform='translate(160 150) rotate(40)'%3E%3Cpath fill='%23ff6b4a' d='M0 0C-6-3-5-11 0-12C5-11 6-3 0 0Z'/%3E%3Cpath fill='%23e8455f' transform='rotate(120)' d='M0 0C-6-3-5-11 0-12C5-11 6-3 0 0Z'/%3E%3Cpath fill='%23d6336c' transform='rotate(240)' d='M0 0C-6-3-5-11 0-12C5-11 6-3 0 0Z'/%3E%3Cpath fill='%232f6b3a' transform='translate(-14 4) rotate(-80)' d='M0 0Q6-6 0-16Q-6-6 0 0Z'/%3E%3C/g%3E%3C/g%3E%3C/svg%3E");
}
*{box-sizing:border-box}
html{background:#f1ebe1;color:var(--ink);-webkit-text-size-adjust:100%;scroll-behavior:smooth;overflow-x:clip}
html.locked,html.locked body{overflow:hidden}
body{margin:0;min-height:100vh;font-family:var(--serif);font-weight:500;font-size:18px;line-height:1.5;color:var(--ink);overflow-x:hidden;
  background-color:#f1ebe1;
  background-image:var(--noise),var(--bloomtile),radial-gradient(1000px 640px at 0% 0%,rgba(232,69,95,.14),transparent 60%),radial-gradient(900px 700px at 100% 100%,rgba(47,127,184,.16),transparent 60%);
  background-attachment:fixed;-webkit-tap-highlight-color:transparent}
img,svg{max-width:100%}
button{font:inherit;color:inherit}
a{color:var(--acc)}
:focus-visible{outline:2.5px solid var(--blue);outline-offset:3px;border-radius:8px}
.sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
.defs{position:absolute;width:0;height:0;overflow:hidden}

/* ============ GATE: the blue door ============ */
.gate,.portal,#flash{position:fixed;top:0;bottom:0;left:0;right:0;margin:0 auto;width:min(100%,480px);height:100vh;height:100dvh}
.gate{z-index:50;overflow:hidden;touch-action:manipulation}
.portal{z-index:49;display:block;visibility:hidden;background:#f6e2c4}
.portal.on{visibility:visible}
#flash{z-index:58;pointer-events:none;opacity:0;background:radial-gradient(circle at 50% 46%,#fffef8 0%,#fff6dc 40%,#f7dd9a 100%)}
.skip .gate,.skip .portal,.skip #flash{display:none}
.layer{position:absolute;inset:0;transform-origin:50% 50%;will-change:transform}
svg.full{position:absolute;inset:0;width:100%;height:100%;overflow:visible;display:block}
.stage{position:absolute;left:var(--ox,0px);top:var(--oy,0px);width:var(--sw,390px);height:var(--sh,780px)}
.doorway{position:absolute;left:27.5%;top:30%;width:45%;height:57.5%;clip-path:url(#cArch)}
.d-room-peek{position:absolute;inset:0;background:radial-gradient(ellipse at 50% 42%,#fff6e6,#f6d9c0 45%,#e9a7a9 75%,#b8566c)}
.doors{position:absolute;inset:0;perspective:720px;perspective-origin:50% 55%}
.leaf{position:absolute;top:0;width:50%;height:100%;will-change:transform}
.leaf.l{left:0;transform-origin:0 50%}
.leaf.r{right:0;transform-origin:100% 50%}
.leaf svg{display:block;width:100%;height:100%}
.d-glow{position:absolute;inset:-10%;background:radial-gradient(ellipse 60% 55% at 50% 50%,rgba(255,246,222,1),rgba(255,214,150,.65) 45%,rgba(255,190,110,0) 75%);opacity:0;pointer-events:none}
.hglow{position:absolute;width:11%;aspect-ratio:1;border-radius:50%;background:radial-gradient(circle,rgba(255,231,160,.95),rgba(255,206,120,.4) 42%,transparent 70%);transform:translate(-50%,-50%);animation:breathe 2.6s ease-in-out infinite;pointer-events:none;mix-blend-mode:screen}
.hglow.r{animation-delay:.3s}
@keyframes breathe{0%,100%{opacity:.35;transform:translate(-50%,-50%) scale(.8)}50%{opacity:1;transform:translate(-50%,-50%) scale(1.2)}}
.door-txt{position:absolute;left:27.5%;width:45%;top:40.5%;text-align:center;color:#fff;pointer-events:none;
  font-family:var(--script);font-style:italic;font-size:calc(var(--sw,390px)*.084);line-height:.95;text-shadow:0 2px 10px rgba(10,40,80,.55),0 0 22px rgba(255,255,255,.35)}
.door-txt span{display:block;opacity:0;transform:translateY(10px);filter:blur(6px);animation:inkIn 1.4s cubic-bezier(.2,.7,.2,1) forwards}
.door-txt span:nth-child(1){animation-delay:1.5s}.door-txt span:nth-child(2){animation-delay:1.9s}
@keyframes inkIn{to{opacity:1;transform:none;filter:none}}
.tap{position:absolute;left:50%;top:76.5%;transform:translateX(-50%);display:flex;flex-direction:column;align-items:center;gap:7px;pointer-events:none;opacity:0;animation:fadeIn 1s ease 2.6s forwards}
.tap b{font:600 calc(var(--sw,390px)*.024)/1 var(--caps);letter-spacing:.34em;color:#fff;text-transform:uppercase;white-space:nowrap;text-shadow:0 1px 6px rgba(0,20,50,.6);padding-left:.34em}
.to-guest{position:absolute;left:8%;right:8%;top:13%;margin:0;text-align:center;color:var(--ink);pointer-events:none;font:italic 600 calc(var(--sw,390px)*.058)/1.15 var(--serif);text-shadow:0 1px 10px rgba(255,255,255,.6);opacity:0;animation:fadeIn 1s ease 1.2s forwards}
.tap i{width:26px;height:26px;border-radius:50%;border:1.5px solid rgba(255,255,255,.9);position:relative;box-shadow:0 0 12px rgba(255,255,255,.4)}
.tap i::before,.tap i::after{content:"";position:absolute;inset:-2px;border-radius:50%;border:1.5px solid rgba(255,255,255,.8);animation:ping 2s ease-out infinite}
.tap i::after{animation-delay:1s}
.tap i em{position:absolute;inset:8px;border-radius:50%;background:#fff}
@keyframes ping{from{transform:scale(1);opacity:.9}to{transform:scale(2.4);opacity:0}}
@keyframes fadeIn{to{opacity:1}}
.gate .wall{animation:wallIn 1.3s ease backwards}
@keyframes wallIn{from{opacity:0;transform:scale(1.06)}to{opacity:1;transform:none}}
.vine{position:absolute;inset:0;width:100%;height:100%;pointer-events:none}
.gfx{position:absolute;inset:0;width:100%;height:100%;pointer-events:none;z-index:4}
.gate-hit{position:absolute;inset:0;z-index:5;background:transparent;border:0;margin:0;padding:0;cursor:pointer;-webkit-tap-highlight-color:transparent}
.gate-hit:focus-visible{outline:3px solid #fff;outline-offset:-8px;border-radius:18px}
.flame{animation:flick 1.6s ease-in-out infinite;transform-box:fill-box;transform-origin:50% 100%}
@keyframes flick{0%,100%{transform:scale(1)}30%{transform:scale(.88,1.08)}60%{transform:scale(1.06,.94)}}
.lglow{animation:lglow 3s ease-in-out infinite}
@keyframes lglow{0%,100%{opacity:.55}45%{opacity:.9}55%{opacity:.7}}
.dapple{animation:dapple 14s ease-in-out infinite alternate}
@keyframes dapple{to{transform:translate(18px,10px)}}


/* ============ PAGE: lantern night in the same courtyard ============
   The hero replays the intro's scene and runs one sequence when #home gets .go: dusk (.ln-night) from 0.8 s, bulbs
   from 1.5 s, the wall lantern at 1.4 s, the doors open from 2.4 s, the spill of light at 2.6 s, diyas from 3 s,
   names from 3.4 s. .instant (editor preview, reduced motion) skips straight to the end. Upright Figtree for
   everything guests read; Playfair italic only for names and titles, as on the door. */
/* --acc and --hot: the palette's blue and pink, 15% darker, so small text and white-on-button text pass 4.5:1 in all
   8 palettes (Marigold and Peach fail with the raw colours) */
html{--acc:color-mix(in srgb,var(--blue2) 85%,#000);--hot:color-mix(in srgb,var(--mag) 85%,#000)}
html,body{background:#151d3a}
body{font-family:'Figtree',system-ui,sans-serif;font-weight:400;font-size:16px;line-height:1.55;color:#f6ecd8;background-image:none}
.ln-wall,.ln-dark,.ln-fx{position:fixed;top:0;left:0;right:0;margin:0 auto;width:min(100%,480px);height:100vh;height:100lvh;pointer-events:none}
.ln-wall{z-index:-2;display:block}
.ln-dark{z-index:-1;background:#1b2550;mix-blend-mode:multiply;opacity:.9}
.ln-fx{z-index:40}
.ln{position:relative;max-width:480px;margin:0 auto;overflow-x:clip;color:#f6ecd8;padding-bottom:var(--sab)}
.ln [hidden]{display:none!important}  /* the RSVP and countdown toggle `hidden` on elements whose rules set display */

/* music: silent until tapped */
.ln-snd{position:fixed;top:calc(var(--sat) + 12px);right:var(--edge);z-index:60;width:44px;height:44px;border-radius:50%;display:grid;place-items:center;cursor:pointer;
  border:1px solid rgba(243,210,122,.55);background:rgba(21,29,58,.78);color:#f3d27a;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);box-shadow:0 6px 18px rgba(0,0,0,.3)}
.ln-snd[hidden]{display:none}
.ln-snd svg{width:22px;height:22px}
.ln-snd .on-i{display:none}.ln-snd.on .on-i{display:block}.ln-snd.on .off-i{display:none}
.yt-card{position:fixed;left:var(--edge);bottom:calc(16px + var(--sab));z-index:60;width:160px;height:90px;overflow:hidden;border-radius:12px;background:#000;box-shadow:0 12px 30px -12px rgba(0,0,0,.5);opacity:0;transform:translateY(8px);transition:opacity .4s,transform .4s;pointer-events:none}
.yt-card.on{opacity:1;transform:none;pointer-events:auto}
.yt-card iframe{display:block;width:160px;height:90px;border:0}

/* ---------- hero ---------- */
.ln-home{position:relative;height:100vh;height:100svh;min-height:600px;overflow:hidden;background:#f1ebe1}
.ln-night,.ln-shade{position:absolute;inset:0;background:#1b2550;mix-blend-mode:multiply;opacity:0;transition:opacity 2s ease-in-out .8s}
.ln-home.go .ln-night{opacity:.86}
.ln-home.go .ln-shade{opacity:.78}
.ln-room{position:absolute;inset:0;background:radial-gradient(ellipse at 50% 40%,#fff3cf,#f6c066 55%,#b8652a)}
.ln-room img{display:block;width:100%;height:100%;object-fit:cover}
.ln-room::after{content:"";position:absolute;inset:0;background:radial-gradient(ellipse at 50% 30%,rgba(255,226,160,.18),rgba(60,25,10,.35))}
.ln-couple{position:absolute;left:5%;bottom:0;width:90%;height:auto}
.ln-yp{position:absolute;left:50%;top:22%;transform:translateX(-50%);z-index:1;padding:6px 12px;border-radius:999px;background:rgba(255,255,255,.92);color:#2a1d14;font:700 12px 'Figtree',sans-serif;white-space:nowrap}
.ln-home .leaf{transition:transform 2.8s cubic-bezier(.25,.8,.25,1) 2.4s}
.ln-home .leaf.r{transition-delay:2.5s}
.ln-home.go .leaf.l{transform:rotateY(100deg)}
.ln-home.go .leaf.r{transform:rotateY(-100deg)}
.ln-light{mix-blend-mode:screen}
.ln-spill{opacity:0;transition:opacity 1.6s ease 2.6s}
.ln-home.go .ln-spill{opacity:.55}
#hvine{transition:filter 2s ease-in-out .8s}
.ln-home.go #hvine{filter:brightness(.74) saturate(1.2)}
.ln-lamp{opacity:0;transition:opacity 1s ease 1.4s;transform-box:fill-box;transform-origin:center}
.ln-home.go .ln-lamp{opacity:1;animation:lnLamp 3s ease-in-out 2.4s infinite}
@keyframes lnLamp{0%,100%{transform:scale(.94)}50%{transform:scale(1.07)}}
.ln-bulb{opacity:0;transition:opacity .45s ease calc(1.5s + var(--i) * .09s)}
.ln-home.go .ln-bulb{opacity:1;animation:lnTwinkle 2.8s ease-in-out calc(3.4s + var(--i) * .17s) infinite}
@keyframes lnTwinkle{0%,100%{opacity:1}50%{opacity:.5}}
.ln-diya{opacity:0;transform:translateY(10px);transition:opacity .8s ease calc(3s + var(--i) * .18s),transform .9s cubic-bezier(.3,1.6,.5,1) calc(3s + var(--i) * .18s)}
.ln-home.go .ln-diya{opacity:1;transform:none}
.ln-bob{animation:lnBob 3.6s ease-in-out infinite}
@keyframes lnBob{0%,100%{transform:translateY(0)}50%{transform:translateY(-4px)}}
.ln-hero-txt{position:absolute;left:5%;right:5%;top:7.5%;height:15%;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:calc(var(--sw,390px) * .016);text-align:center}
.ln-hero-txt > *{opacity:0;transform:translateY(14px);filter:blur(8px);
  transition:opacity 1.3s ease calc(3.4s + var(--i) * .25s),transform 1.3s cubic-bezier(.2,.7,.2,1) calc(3.4s + var(--i) * .25s),filter 1.3s ease calc(3.4s + var(--i) * .25s)}
.ln-home.go .ln-hero-txt > *{opacity:1;transform:none;filter:none}
.ln-home .ln-cap{font-size:calc(var(--sw,390px) * .03)}
.ln-names{margin:0;font:italic 500 calc(var(--sw,390px) * .095)/1.04 'Playfair Display',Georgia,serif;overflow-wrap:break-word;text-wrap:balance}
/* long pairs run to two lines; smaller, so the block keeps clear of the arch below */
.ln-names.long{font-size:calc(var(--sw,390px) * .072)}
.ln-names span{font-size:.7em}
.ln-home .ln-names{filter:drop-shadow(0 0 14px rgba(255,200,110,.5))}
.ln-cream{color:#efe3cc}
.ln-cue{position:absolute;left:0;right:0;bottom:calc(14px + var(--sab));display:flex;flex-direction:column;align-items:center;color:#f3d27a;font:600 11px/1 'Cinzel',serif;letter-spacing:.34em;text-transform:uppercase;
  opacity:0;transition:opacity 1s ease 4.6s}
.ln-cue svg{width:18px;height:18px;margin-top:4px;animation:lnBob 1.8s ease-in-out infinite}
.ln-home.go .ln-cue{opacity:.9}
.ln-home.instant,.ln-home.instant *{transition:none!important}

/* ---------- shared pieces ---------- */
.ln-sec{padding:0 20px;margin-top:56px}
.ln-head{text-align:center;margin-bottom:18px;padding:0 30px}
.ln-head .ln-cap{letter-spacing:.2em;text-wrap:balance}
.ln-cap{margin:0;font:600 11px/1.3 'Cinzel',serif;letter-spacing:.24em;text-transform:uppercase;color:#f3d27a;overflow-wrap:anywhere}
.ln-capd{margin:0;font:600 11px/1.3 'Cinzel',serif;letter-spacing:.2em;text-transform:uppercase;color:#8a4b12}
.ln-h2{margin:6px 0 0;font:italic 500 30px/1.15 'Playfair Display',Georgia,serif;text-wrap:balance}
.ln-gold{background:linear-gradient(100deg,#c99a3c,#ffe9a8 45%,#e2b75a 60%,#b8862b);background-size:200% 100%;-webkit-background-clip:text;background-clip:text;color:transparent;animation:lnShine 6s ease-in-out infinite}
@keyframes lnShine{0%,100%{background-position:0% 0}50%{background-position:100% 0}}
.ln-card{background:#fff8ec;color:#2a1d14;border-radius:18px;box-shadow:0 0 0 1px rgba(226,183,90,.5),0 0 44px rgba(255,190,90,.12),0 24px 40px -28px rgba(0,0,0,.55)}
.ln-brass{position:relative;overflow:hidden;display:inline-flex;align-items:center;justify-content:center;min-height:44px;padding:0 16px;border:0;border-radius:999px;cursor:pointer;text-decoration:none;
  background:linear-gradient(135deg,#ffe9a8,#e2b75a 45%,#c9952f);color:#3a2706;font:700 13.5px/1 'Figtree',sans-serif;box-shadow:0 6px 14px -6px rgba(122,85,18,.6),inset 0 1px 0 rgba(255,255,255,.7)}
.ln-brass::after{content:"";position:absolute;inset:0;background:linear-gradient(110deg,transparent 35%,rgba(255,255,255,.7) 50%,transparent 65%);transform:translateX(-120%);animation:lnGlint 3.6s ease-in-out infinite;pointer-events:none}
@keyframes lnGlint{0%,55%{transform:translateX(-120%)}80%,100%{transform:translateX(120%)}}
.ln-brass.ln-ink{background:#1b2550;color:#ffe9a8}
.ln-brass.big{width:100%;min-height:50px;font-size:15px}
.ln-brass:active{transform:scale(.97)}
.ln-lnk{background:none;border:0;padding:12px 2px;cursor:pointer;color:#1f5f93;font:700 13.5px 'Figtree',sans-serif;text-decoration:underline;text-underline-offset:3px}
.ln-glowp{animation:lnGlow 3s ease-in-out infinite}
@keyframes lnGlow{0%,100%{opacity:.6}50%{opacity:1}}
.ln-spin{transform-box:fill-box;transform-origin:center;animation:lnSpin 80s linear infinite}
.ln-spin.r{animation-duration:50s;animation-direction:reverse}
@keyframes lnSpin{to{transform:rotate(360deg)}}

/* invitation */
.ln-inv{padding:26px 22px;text-align:center;display:flex;flex-direction:column;align-items:center;gap:9px}
.ln-mini-rangoli{width:44px;height:44px;margin-bottom:2px}
.ln-invoc{margin:0;font:400 21px/1.4 'Tiro Devanagari Hindi',serif;color:#8a4b12}
.ln-shloka{margin:0;font:400 15px/1.65 'Tiro Devanagari Hindi',serif;color:#5a4a3a}
.ln-gp{margin:0;font:500 14px/1.5 'Figtree',sans-serif;color:#5a4a3a}
.ln-hosts{margin:8px 0 0;font:600 13px/1.5 'Cinzel',serif;letter-spacing:.05em;color:#2a1d14}
.ln-line{margin:0;font:400 15px/1.6 'Figtree',sans-serif;color:#4a3a30;max-width:28ch}
.ln-pname{margin:6px 0 0;font:italic 500 34px/1.05 'Playfair Display',Georgia,serif;overflow-wrap:anywhere}
.ln-pname.b{color:var(--hot)}.ln-pname.g{color:var(--acc)}
.ln-pline{margin:3px 0 0;font:500 12.5px/1.45 'Figtree',sans-serif;color:#5a4a3a}
.ln-with{color:#9a6a18;letter-spacing:.4em}
.ln-welcome{margin:8px 0 0;font:400 14.5px/1.65 'Figtree',sans-serif;color:#4a3a30}

/* functions */
.ln-ev{position:relative;padding-top:78px}  /* room for the lantern hanging above the card */
.ln-ev + .ln-ev{margin-top:0}
.ln-hangs{position:absolute;top:-4px;left:0;right:0;display:flex;justify-content:center;gap:64px;pointer-events:none}
.ln-hang{width:36px;height:82px;overflow:visible}
.ln-swing{transform-box:fill-box;transform-origin:50% 0;animation:lnSwing 4.5s ease-in-out infinite}  /* pivots on the string's top */
@keyframes lnSwing{0%,100%{transform:rotate(-4deg)}50%{transform:rotate(4deg)}}
.ln-fn{padding:18px 20px;border-top:4px solid var(--c)}
.ln-fn h3{margin:4px 0 0;font:italic 500 28px/1.1 'Playfair Display',Georgia,serif;color:#2a1d14}
.ln-fn h3 span{font:400 17px 'Tiro Devanagari Hindi',serif}
.ln-where{margin:8px 0 0;font:400 14.5px/1.5 'Figtree',sans-serif;color:#4a3a30}
.ln-where b{color:#2a1d14;font-weight:600}
.ln-note{margin:4px 0 0;font:400 14px/1.55 'Figtree',sans-serif;color:#5a4a3a}
.ln-acts{margin:10px 0 0;display:flex;flex-wrap:wrap;align-items:center;gap:12px}
.ln-main{overflow:hidden}
.ln-main-top{position:relative;padding:34px 20px 20px;text-align:center;background:radial-gradient(ellipse at 50% 130%,#4a3b7c,#1b2550 70%)}
.ln-main-top::before{content:"";position:absolute;left:0;right:0;top:12px;height:12px;background-image:radial-gradient(circle at 10px 6px,#ffe08a 2.6px,rgba(255,224,138,.35) 4px,transparent 6px);background-size:26px 12px;animation:lnTwinkle 2.4s ease-in-out infinite}
.ln-main-top h3{margin:4px 0 0;font:italic 500 38px/1.05 'Playfair Display',Georgia,serif}
.ln-hi{margin:4px 0 0;font:400 18px 'Tiro Devanagari Hindi',serif;color:#ffe3a3}
.ln-main-body{padding:16px 20px 20px;text-align:center}
.ln-main-body .ln-acts{justify-content:center}

/* countdown */
.ln-diyas{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px;text-align:center}
.ln-diyas svg{display:block;width:48px;height:52px;margin:0 auto;overflow:visible}
.ln-diyas b{display:block;font:italic 500 32px/1 'Playfair Display',Georgia,serif;font-variant-numeric:lining-nums}
.ln-diyas small{display:block;margin-top:6px;font:600 10px 'Cinzel',serif;letter-spacing:.16em;text-transform:uppercase;color:#efe3cc}

/* story */
.ln-arches{display:grid;gap:16px}
.ln-arches.n2{grid-template-columns:repeat(2,minmax(0,1fr))}
.ln-arches.n2 .ln-arch:last-child{margin-top:30px}
.ln-arch{padding:6px;border-radius:999px 999px 10px 10px;background:linear-gradient(160deg,#ffe9a8,#b8862b);box-shadow:0 0 40px rgba(255,190,90,.22)}
.ln-arch img{display:block;width:100%;height:200px;object-fit:cover;border-radius:999px 999px 6px 6px}
.ln-arches.n1 .ln-arch img{height:280px}
.ln-chaps{list-style:none;margin:18px 0 0;padding:18px 20px;display:flex;flex-direction:column;gap:14px}
.ln-chaps li{display:grid;grid-template-columns:52px 1fr;gap:10px}
.ln-yr{margin:0;font:italic 500 18px/1.3 'Playfair Display',Georgia,serif;color:var(--hot)}
.ln-chaps h3{margin:0;font:700 14.5px/1.4 'Figtree',sans-serif;color:#2a1d14}
.ln-chaps li p:not(.ln-yr){margin:2px 0 0;font:400 14px/1.55 'Figtree',sans-serif;color:#4a3a30}

/* photos */
.ln-gal{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}
.ln-gi{display:block;padding:5px;border:0;border-radius:999px 999px 10px 10px;background:linear-gradient(160deg,#ffe9a8,#b8862b);cursor:zoom-in}
.ln-gi img{display:block;width:100%;aspect-ratio:3/4;object-fit:cover;border-radius:999px 999px 6px 6px}
.ln-gi:nth-child(3n+1){grid-column:span 2;border-radius:18px}
.ln-gi:nth-child(3n+1) img{aspect-ratio:16/11;border-radius:14px}
.ln-box{max-width:min(92vw,720px);max-height:92dvh;padding:0;border:0;border-radius:16px;background:#000}
.ln-box::backdrop{background:rgba(10,14,30,.88)}
.ln-box img{display:block;max-width:100%;max-height:92dvh;object-fit:contain}
.ln-x{position:absolute;top:8px;right:8px;width:44px;height:44px;border:0;border-radius:50%;background:rgba(255,255,255,.92);font-size:24px;line-height:1;cursor:pointer}

/* travel and contacts */
.ln-list{padding:4px 20px}
.ln-list p{margin:0;padding:12px 0;font:400 14px/1.55 'Figtree',sans-serif;color:#4a3a30}
.ln-list p + p{border-top:1px solid #efdcb8}
.ln-list b{color:#2a1d14;font-weight:600}
.ln-contacts{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:10px;margin-top:12px}
.ln-contact{padding:12px 14px}
.ln-cname{margin:0;font:italic 500 18px/1.2 'Playfair Display',Georgia,serif;color:#2a1d14}
.ln-crole{margin:2px 0 0;font:500 12.5px/1.4 'Figtree',sans-serif;color:#5a4a3a}

/* rsvp */
.ln-rsvp{padding:24px 18px 22px}
.ln-rsvp-head{text-align:center;margin-bottom:16px}
.ln-rsvp-head h2{margin:6px 0 0;font:italic 500 30px/1.1 'Playfair Display',Georgia,serif;color:#2a1d14}
.ln-rsvp form{display:flex;flex-direction:column;gap:14px}
.ln-field{display:flex;flex-direction:column;gap:6px;font:600 13.5px/1.3 'Figtree',sans-serif;color:#2a1d14}
.ln-field input,.ln-field textarea{width:100%;min-height:48px;border:1.5px solid #e6cfa3;border-radius:12px;padding:12px 14px;font:400 16px 'Figtree',sans-serif;color:#2a1d14;background:#fff}
.ln-field input:focus,.ln-field textarea:focus{outline:2.5px solid #1b2550;outline-offset:1px;border-color:transparent}
.ln-rsvp fieldset{border:0;margin:0;padding:0}
.ln-rsvp legend{padding:0;margin-bottom:8px;font:600 13.5px 'Figtree',sans-serif;color:#2a1d14}
.ln-yn{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}
.ln-yn legend{grid-column:1/-1}
.ln-yn label{position:relative}
.ln-yn input{position:absolute;inset:0;margin:0;opacity:0;cursor:pointer}
.ln-yn span{display:flex;align-items:center;justify-content:center;min-height:48px;padding:6px 10px;border-radius:12px;border:1.5px solid #e6cfa3;text-align:center;font:600 14px/1.25 'Figtree',sans-serif;color:#2a1d14}
.ln-yn input:checked + span{background:#1b2550;border-color:#1b2550;color:#ffe9a8}
.ln-yn input:focus-visible + span{outline:2.5px solid #1b2550;outline-offset:2px}
.ln-step{display:flex;align-items:center;gap:12px}
.ln-step button{width:44px;height:44px;border-radius:50%;border:1.5px solid #e6cfa3;background:#fff;font:600 20px 'Figtree',sans-serif;color:#2a1d14;cursor:pointer}
.ln-step input{width:68px;text-align:center;font:italic 500 22px 'Playfair Display',Georgia,serif}
.ln-evs div{display:flex;flex-wrap:wrap;gap:8px}
.ln-evs label{display:inline-flex;align-items:center;gap:7px;min-height:44px;padding:0 13px;border-radius:999px;background:color-mix(in srgb,var(--c) 35%,#fff8ec);font:600 14px 'Figtree',sans-serif;color:#2a1d14;cursor:pointer}
.ln-evs input{width:17px;height:17px;margin:0;accent-color:#1b2550}
.ln-thanks{text-align:center;display:flex;flex-direction:column;align-items:center;gap:10px}
.ln-thanks-diya{width:52px;height:56px;overflow:visible}
.ln-thanks h3{margin:0;font:italic 500 26px/1.15 'Playfair Display',Georgia,serif;color:#2a1d14}
.ln-thanks p{margin:0;font:400 14.5px/1.6 'Figtree',sans-serif;color:#4a3a30}
.rsvp-err{margin:0;color:#b3261e;font:600 15px/1.4 'Figtree',sans-serif;text-align:center}

/* footer */
.ln-foot{display:flex;flex-direction:column;align-items:center;margin-top:64px;padding:0 24px calc(40px + var(--sab));text-align:center}
.ln-foot-txt{display:flex;flex-direction:column;align-items:center;gap:8px}
.ln-love{margin:0;font:italic 500 26px/1.2 'Playfair Display',Georgia,serif;text-wrap:balance}
.ln-rangoli{order:2;width:180px;height:180px;margin-top:26px;overflow:visible}
.ln-made{order:3;margin-top:26px;padding:8px 14px;border-radius:999px;background:rgba(255,255,255,.1);color:#efe3cc;font:600 13px 'Figtree',sans-serif;text-decoration:none}

@media (prefers-reduced-motion: reduce){
  html{scroll-behavior:auto}
  *,*::before,*::after{animation-duration:.001s!important;animation-iteration-count:1!important;transition-duration:.001s!important}
  .door-txt span,.tap,.to-guest{opacity:1;transform:none;filter:none}
}
