
:root{--p920:url("/img/paint-9x20.jpg");--p916:url("/img/paint-9x16.jpg");--p34:url("/img/paint-3x4.jpg");--l1610:url("/img/paint-16x10.jpg");--l169:url("/img/paint-16x9.jpg");--l219:url("/img/paint-21x9.jpg");}
html{background:#fffdf9;color-scheme:only light!important}
@media (prefers-color-scheme:dark){html,body{background:#fffdf9;color:#16302a}}
/* Layout: classic one-page wedding template (sticky nav, full-bleed hero, story, celebrations, travel, RSVP, FAQ) with a trail-map story. Light-only by choice. */
:root{
  color-scheme:only light;
  --bg:#a6dbe3; --alt:#fbe4c0; --ink:#16302a; --muted:#5f6f69; --line:#7fbcc7; --white:#ffffff;
  --coral:#ec5f67; --saffron:#f3a530; --sea:#1d8a8f; --wine:#7b2d4e; --vine:#5d8a3a; --trail:#c4572f;
  --accent:var(--coral); --accent-soft:#fde8e6;
  --serif:"Cormorant Garamond", "Hind", Georgia, "Times New Roman", serif;
  --script:"Caveat", "Segoe Print", cursive;
  --hand:"Caveat", "Segoe Print", cursive;
  --paper:#f8c9bd; --sage:#55624c;
  --sans:"Jost", "Hind", system-ui, -apple-system, "Segoe UI", sans-serif;
  --deva:"Hind", "Noto Sans Devanagari", sans-serif;
}
[data-w="goa"]{ --accent:var(--coral); --accent-soft:#fde8e6; }
[data-w="mik"]{ --accent:var(--wine); --accent-soft:#f4e4ea; }
*{box-sizing:border-box}
html{scroll-behavior:smooth;scroll-padding-top:72px}
@media (prefers-reduced-motion: reduce){ html{scroll-behavior:auto} *{animation:none!important;transition:none!important} }
body{background:var(--bg);color:var(--ink);font:300 17px/1.7 var(--sans);margin:0}
:lang(hi) body{font-family:var(--deva)}
:lang(hi) body *{letter-spacing:0!important}
h1,h2,h3{font-family:var(--serif);font-weight:500;margin:0;text-wrap:balance;line-height:1.1}
p{margin:0}
a{color:inherit}
button,input,textarea,select{font:inherit;color:inherit}
select{-webkit-appearance:none;appearance:none;padding-right:34px!important;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8'%3E%3Cpath d='M1 1.5l5 5 5-5' fill='none' stroke='%2316302a' stroke-width='1.6' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E")!important;background-repeat:no-repeat!important;background-position:right 13px center!important;background-size:12px 8px!important;cursor:pointer}
:focus-visible{outline:2px solid var(--accent);outline-offset:3px}
.wrap{max-width:1120px;margin:0 auto;padding-inline:20px}
.eyebrow{font:500 .72rem/1.4 var(--sans);letter-spacing:.28em;text-transform:uppercase;color:var(--muted)}
.script{font-family:var(--script);font-weight:400;color:var(--accent)}
.sec{padding-block:88px}
.sec.alt{background:var(--alt)}
.sec-head{text-align:center;display:grid;gap:10px;justify-items:center;margin-bottom:48px}
.sec-head h2{font-size:clamp(2.2rem,5vw,3.4rem)}
.sec-head .script{font-size:clamp(1.8rem,4vw,2.4rem);line-height:1}
.rule{width:64px;height:1px;background:var(--accent)}
.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;border:1px solid var(--accent);background:var(--accent);color:#fff;padding:13px 28px;font:500 .78rem/1 var(--sans);letter-spacing:.2em;text-transform:uppercase;cursor:pointer;text-decoration:none;border-radius:0}
.btn.line{background:transparent;color:var(--accent)}
.btn.light{background:transparent;color:#fff;border-color:#fff}
.nav .nav-live{color:#e2455a;font-weight:600;display:inline-flex;align-items:center;gap:7px}
.nav-live i,.lv-pill i{width:8px;height:8px;border-radius:50%;background:#e2455a;animation:lvp 1.6s infinite}
@keyframes lvp{0%{box-shadow:0 0 0 0 rgba(226,69,90,.6)}70%{box-shadow:0 0 0 8px rgba(226,69,90,0)}100%{box-shadow:0 0 0 0 rgba(226,69,90,0)}}
.live{background:#16302a;color:#fff}
.lv-head{display:flex;align-items:center;gap:14px;flex-wrap:wrap;margin-bottom:22px}
.lv-pill{display:inline-flex;align-items:center;gap:8px;background:rgba(226,69,90,.16);color:#ff9aa6;border:1px solid rgba(226,69,90,.45);padding:6px 12px;border-radius:999px;font:600 .72rem var(--sans);letter-spacing:.2em;text-transform:uppercase}
.lv-when{font:500 .76rem var(--sans);letter-spacing:.18em;text-transform:uppercase;color:rgba(255,255,255,.75)}
#live-in{display:grid;grid-template-columns:1.25fr 1fr;gap:18px}
.lv-card{background:rgba(255,255,255,.06);border:1px solid rgba(255,255,255,.12);border-radius:14px;padding:24px}
.lv-now{background:linear-gradient(135deg,rgba(255,255,255,.13),rgba(255,255,255,.04))}
.lv-lab{font:500 .7rem var(--sans);letter-spacing:.2em;text-transform:uppercase;color:rgba(255,255,255,.62);margin:0 0 14px}
.lv-row{display:flex;gap:18px;align-items:center}
.live .tile{flex:none;width:64px;height:64px;border-radius:20px;display:grid;place-items:center;font-size:30px;background:radial-gradient(circle at 28% 24%,rgba(255,255,255,.5) 0 16%,transparent 17%),var(--c);transform:rotate(-5deg);box-shadow:0 8px 20px rgba(0,0,0,.25)}
.lv-next .tile{width:52px;height:52px;font-size:24px;border-radius:16px;transform:rotate(5deg)}
.live h3{font:500 clamp(1.6rem,3.4vw,2.3rem)/1.1 var(--serif);margin:0;color:#fff}
.lv-next h3{font-size:clamp(1.3rem,2.6vw,1.7rem)}
.lv-t{margin:5px 0 0;color:rgba(255,255,255,.85);font-size:.95rem}
.lv-next .lv-t b{font:500 1.35rem var(--serif);color:#fff;margin-right:6px}
.lv-in{display:inline-block;background:#e2455a;color:#fff;border-radius:999px;padding:2px 10px;font-size:.8rem}
.lv-dr{margin:6px 0 0;font-size:.85rem;color:rgba(255,255,255,.65)}
.lv-also{margin:16px 0 0;font-size:.85rem;color:rgba(255,255,255,.75)}.lv-also b{font-weight:500;margin-right:4px}
.lv-day{grid-column:1/-1;display:flex;gap:8px;overflow-x:auto;padding:4px 0 8px}
.lv-chip{flex:none;display:flex;gap:8px;align-items:center;padding:8px 13px;border-radius:999px;border:1px solid rgba(255,255,255,.18);font-size:.82rem;color:rgba(255,255,255,.85);white-space:nowrap}
.lv-chip b{font-weight:500;font-variant-numeric:tabular-nums;color:rgba(255,255,255,.55)}
.lv-chip.key{border-color:rgba(255,255,255,.45)}
.lv-chip.past{opacity:.38}.lv-chip.past span{text-decoration:line-through}
.lv-chip.on{background:#fff;color:#16302a;border-color:#fff}.lv-chip.on b{color:#16302a}
.lv-msg .bubble{background:#fff;color:#16302a;border-radius:16px 16px 16px 4px;padding:12px 16px;max-width:480px}
.lv-msg .bubble p{margin:2px 0 0}.lv-mt{font-size:.72rem;color:var(--muted);letter-spacing:.06em}
.lv-act{display:grid;gap:10px;align-content:end}.lv-note{font-size:.8rem;color:rgba(255,255,255,.65);margin:0}
@media(max-width:720px){#live-in{grid-template-columns:1fr}.live .tile{width:52px;height:52px;font-size:24px}}
.demo{position:fixed;right:12px;bottom:12px;z-index:61;font:400 .78rem var(--sans)}
.demo[hidden]{display:none}
.demo>button{background:#e2455a;color:#fff;border:0;padding:8px 12px;cursor:pointer;letter-spacing:.04em;box-shadow:0 4px 14px rgba(0,0,0,.2)}
.dm-link{font-size:.72rem;color:var(--muted);opacity:.7;text-decoration:underline;letter-spacing:.04em}
.dm-p{position:static;background:#fff;color:#16302a;border:1px solid var(--line);box-shadow:0 10px 30px rgba(0,0,0,.18);padding:14px;display:grid;gap:10px;width:260px}
.dm-p label{display:grid;gap:4px;font-size:.72rem;letter-spacing:.08em;text-transform:uppercase;color:var(--muted)}
.dm-p select{border:1px solid var(--line);padding:6px 8px;background-color:#fff}
.dm-p output{font-weight:600;color:#16302a}
.dm-p button{border:1px solid var(--line);background:var(--bg);padding:6px;cursor:pointer}
.dm-p small{color:var(--muted);line-height:1.4}
.sample{max-width:calc(100% - 210px)!important}
#intro.heartx{perspective:none;background:transparent;-webkit-mask-image:linear-gradient(#000,#000),url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 100 90'%3E%3Cpath d='M50 88C20 62 2 44 2 25C2 11 13 2 26 2C37 2 46 8 50 17C54 8 63 2 74 2C87 2 98 11 98 25C98 44 80 62 50 88Z'/%3E%3C/svg%3E");mask-image:linear-gradient(#000,#000),url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 100 90'%3E%3Cpath d='M50 88C20 62 2 44 2 25C2 11 13 2 26 2C37 2 46 8 50 17C54 8 63 2 74 2C87 2 98 11 98 25C98 44 80 62 50 88Z'/%3E%3C/svg%3E");-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-position:0 0,50% 46%;mask-position:0 0,50% 46%;-webkit-mask-size:100% 100%,0 0;mask-size:100% 100%,0 0;-webkit-mask-composite:xor;mask-composite:exclude}
#intro.heartx.go{animation:hrtx 3.2s cubic-bezier(.5,0,.2,1) .35s forwards}
@keyframes hrtx{0%{-webkit-mask-size:100% 100%,0 0;mask-size:100% 100%,0 0}18%{-webkit-mask-size:100% 100%,16vmin 14.4vmin;mask-size:100% 100%,16vmin 14.4vmin}28%{-webkit-mask-size:100% 100%,13vmin 11.7vmin;mask-size:100% 100%,13vmin 11.7vmin}100%{-webkit-mask-size:100% 100%,420vmax 378vmax;mask-size:100% 100%,420vmax 378vmax}}
#intro .hglow{position:absolute;left:50%;top:46%;width:16vmin;height:14.4vmin;transform:translate(-50%,-50%);background:radial-gradient(circle,#ff7aa5aa,#ff7aa500 70%);opacity:0;pointer-events:none}
#intro.go .hglow{animation:hgl 3.2s ease .35s forwards}
@keyframes hgl{0%{opacity:0;transform:translate(-50%,-50%) scale(.3)}18%{opacity:1;transform:translate(-50%,-50%) scale(1.3)}60%{opacity:0;transform:translate(-50%,-50%) scale(6)}100%{opacity:0}}
@media (prefers-reduced-motion:reduce){#intro.heartx.go{animation:none;opacity:0;transition:opacity .4s}}
.pw{display:inline-block;line-height:0;vertical-align:middle}
.pw svg{display:block;overflow:visible}
.gtxt h1 .pw{margin-bottom:.14em}
.pw path{fill:currentColor;fill-opacity:0;stroke:currentColor;stroke-width:var(--sw,7);stroke-linejoin:round;stroke-linecap:round;stroke-dasharray:1;stroke-dashoffset:1;animation:pdraw var(--dd,.6s) cubic-bezier(.45,.05,.4,1) var(--pd,0s) forwards,pfill .45s ease calc(var(--pd,0s) + var(--dd,.6s) - .15s) forwards}
.pw path.amp{color:#b3295f}
@keyframes pdraw{to{stroke-dashoffset:0}}
@keyframes pfill{to{fill-opacity:1;stroke-width:0}}
.sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
@media (prefers-reduced-motion:reduce){.pw path{animation:none;stroke-width:0;fill-opacity:1;stroke-dashoffset:0}}
.hw{display:inline-block;-webkit-mask-image:linear-gradient(90deg,#000 0,#000 36%,transparent 44%);mask-image:linear-gradient(90deg,#000 0,#000 36%,transparent 44%);-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:300% 100%;mask-size:300% 100%;-webkit-mask-position:100% 0;mask-position:100% 0;animation:hwr var(--t,2s) cubic-bezier(.45,.1,.4,1) var(--d,0s) forwards}
@keyframes hwr{to{-webkit-mask-position:0 0;mask-position:0 0}}
@media (prefers-reduced-motion:reduce){.hw{animation:none;-webkit-mask-image:none;mask-image:none}}
.pp{opacity:0;animation:ppg .7s cubic-bezier(.34,1.5,.5,1) var(--d,0s) both}
@keyframes ppg{from{opacity:0;transform:translateY(16px) scale(.6)}to{opacity:1;transform:none}}
@media (prefers-reduced-motion:reduce){.pp{animation:none;opacity:1}}
#intro{position:fixed;inset:0;z-index:100;perspective:2200px;min-height:0;padding:0;display:block;cursor:pointer}
#intro .gbg{transition:opacity 2.2s cubic-bezier(.45,0,.25,1) .5s}
#intro.open .gbg{opacity:0}
.ic-half{position:absolute;overflow:hidden;transform-style:preserve-3d;backface-visibility:hidden;transition:transform .9s cubic-bezier(.33,0,.2,1),box-shadow .9s ease}
.ic-half .gsheet{position:absolute;top:0;margin:0;box-shadow:none}
.ic-half::after{content:"";position:absolute;inset:0;pointer-events:none;opacity:0;transition:opacity 2.4s ease}
.ic-l{transform-origin:left center;box-shadow:-10px 20px 40px rgba(0,0,0,.15)}.ic-l::after{background:linear-gradient(90deg,transparent 40%,rgba(80,30,40,.28))}
.ic-r{transform-origin:right center;box-shadow:10px 20px 40px rgba(0,0,0,.15)}.ic-r::after{background:linear-gradient(270deg,transparent 40%,rgba(80,30,40,.28))}
#intro.lift .ic-half{transform:translateZ(36px)}#intro.lift .ic-l{box-shadow:-24px 40px 80px rgba(60,20,30,.25)}#intro.lift .ic-r{box-shadow:24px 40px 80px rgba(60,20,30,.25)}
#intro.open .ic-half{transition:transform 2.6s cubic-bezier(.65,0,.25,1),opacity 1.1s ease 1.5s,box-shadow 2s ease}
#intro.open .ic-l{transform:translateZ(36px) rotateY(-100deg);opacity:0}#intro.open .ic-r{transform:translateZ(36px) rotateY(100deg);opacity:0}
#intro.open .ic-half::after{opacity:1}
#intro.gates{perspective:none;background:transparent;overflow:hidden}
#intro.gates .gdr{position:absolute;top:0;bottom:0;width:50%;overflow:hidden;transition:transform 2.8s cubic-bezier(.65,0,.25,1) .3s}
#intro.gates .gdr-l{left:0}#intro.gates .gdr-r{right:0}
#intro.gates .gdr .gsheet{box-shadow:none}
#intro.gates.go .gdr-l{transform:translateX(-102%)}#intro.gates.go .gdr-r{transform:translateX(102%)}
#intro.gates .seam{position:absolute;top:0;bottom:0;left:50%;width:2px;margin-left:-1px;background:linear-gradient(#0000,#d9b25f,#0000);transition:opacity 1.2s ease}
#intro.gates.go .seam{opacity:0}
#root.reveal{transform-origin:50% 50vh;animation:rvG 3.2s cubic-bezier(.3,0,.2,1) .3s both}
@keyframes rvG{from{transform:scale(1.08);filter:blur(6px)}to{transform:none;filter:none}}
@media (prefers-reduced-motion:reduce){#intro.gates .gdr{transition:opacity .5s}#intro.gates.go .gt{transform:none;opacity:0}#root.reveal{animation:none}}
#intro.swipe{perspective:none;background:transparent}
#intro.swipe .gsheet{transition:transform .8s cubic-bezier(.7,0,.25,1) .15s,opacity .8s ease .15s;box-shadow:20px 0 60px rgba(60,20,30,.25)}
#intro.swipe.go .gsheet{transform:translateX(-112%) rotate(-5deg);opacity:.9}
.pop .nav{animation:ndn .7s cubic-bezier(.2,.8,.2,1) .75s both}
@keyframes ndn{from{transform:translateY(-100%);opacity:0}}
.pop .hero .bgs{animation:bgz 1.4s cubic-bezier(.2,.8,.2,1) .35s both}
@keyframes bgz{from{transform:scale(1.18);opacity:0}}
.hero h1 .pp{display:inline-block}
.pop .pp{animation:ppop .75s cubic-bezier(.34,1.6,.5,1) var(--d,1s) both}
@keyframes ppop{0%{opacity:0;transform:translateY(24px) scale(.4)}100%{opacity:1;transform:none}}
@media (prefers-reduced-motion:reduce){#intro.swipe .gsheet{transition:opacity .5s}#intro.swipe.go .gsheet{transform:none;opacity:0}.pop .pp,.pop .nav,.pop .hero .bgs{animation:none}}
#root.reveal{transform-origin:50% 50vh;animation:rvIn 3s cubic-bezier(.3,0,.2,1) .7s both}
@keyframes rvIn{from{transform:scale(1.05);filter:blur(6px)}}
@media (prefers-reduced-motion:reduce){#intro{transition:opacity .8s}#intro.open{opacity:0}.ic-half,#intro .gbg,#intro.open .ic-half{transition:none}#intro.lift .ic-half,#intro.open .ic-half{transform:none}#root.reveal{animation:none}}
.sample{position:fixed;left:12px;bottom:12px;z-index:60;background:var(--ink);color:#fff;font-size:.72rem;padding:6px 10px;letter-spacing:.06em;max-width:calc(100% - 24px)}

.scene{position:relative;overflow:hidden;background:var(--alt)}
.scene svg{position:absolute;inset:0;width:100%;height:100%;display:block}
.scene .tag{position:absolute;right:10px;bottom:10px;background:rgba(255,255,255,.88);color:var(--ink);font-size:.68rem;letter-spacing:.12em;text-transform:uppercase;padding:4px 8px}

.gate{min-height:100vh;min-height:100svh;position:relative;overflow:hidden;background:#f5e5cd}
.gbg{display:none}
.gsheet{position:absolute;inset:0;background:var(--p916) center/100% 100% no-repeat}
@media (max-aspect-ratio:503/1000){.gsheet{background-image:var(--p920)}}
@media (min-aspect-ratio:65/100) and (max-aspect-ratio:11/10){.gsheet{background-image:var(--p34)}}
@media (min-aspect-ratio:11/10) and (max-aspect-ratio:169/100){.gsheet{background-image:var(--l1610)}}
@media (min-aspect-ratio:169/100) and (max-aspect-ratio:204/100){.gsheet{background-image:var(--l169)}}
@media (min-aspect-ratio:204/100){.gsheet{background-image:var(--l219)}}
.gtxt{z-index:2;position:absolute;left:15%;right:13%;top:30%;bottom:32%;display:grid;justify-items:center;align-content:center;text-align:center;gap:12px}
.gtxt>.eyebrow:first-child{font-size:.85rem;letter-spacing:.12em;white-space:nowrap}
.gtxt h1{font-size:2.2rem;font-weight:300;white-space:nowrap}
.gtxt{gap:9px}
.gtxt h1 .script{font-size:.72em;padding-inline:.12em;color:#b3295f}
.gtxt .btn,#intro .btn{background:#b3295f;border-color:#b3295f}
@media (min-aspect-ratio:11/10){.gtxt>.eyebrow:first-child{font-size:1rem;letter-spacing:.14em}.gtxt{gap:12px;left:50%;right:auto;width:min(440px,90%);transform:translateX(-50%);top:22%;bottom:30%}.gtxt h1{font-size:clamp(3rem,4.8vw,4.4rem)}}
@media (min-aspect-ratio:65/100) and (max-aspect-ratio:11/10){.gtxt{left:20%;right:20%;top:30%;bottom:30%}.gtxt h1{font-size:2.8rem}.gtxt>.eyebrow:first-child{font-size:1rem}}
.grule{width:120px;height:1px;background:linear-gradient(90deg,transparent,#b8934a,transparent)}
.glang{position:absolute;top:14px;right:14px;z-index:3}
.gaux{display:flex}
.gaux{position:absolute;left:0;right:0;bottom:10px;z-index:3;justify-content:center;padding:0 12px}
.gpill{display:flex;flex-wrap:wrap;align-items:center;justify-content:center;gap:6px 8px;background:rgba(255,250,240,.88);padding:6px 10px;border-radius:14px;max-width:calc(100% - 24px);backdrop-filter:blur(4px)}
.gpill>span{font:500 .62rem var(--sans);letter-spacing:.2em;text-transform:uppercase;color:var(--muted)}
.gate form,#intro form{display:grid;gap:10px;width:min(230px,100%);justify-self:center}
.gate input,#intro input{border:0;border-bottom:1px solid var(--ink);background:transparent;padding:10px 4px;text-align:center;letter-spacing:.3em;text-transform:uppercase}
.err{color:#b3261e;font-size:.85rem;min-height:1.3em}
.gate select{border:1px solid var(--line);background:var(--bg);padding:6px 8px;font-size:.8rem}
.chips{display:flex;flex-wrap:wrap;gap:6px;justify-content:center}
.chip{border:1px dashed var(--line);background:none;padding:4px 10px;font-size:.75rem;cursor:pointer;color:var(--muted)}

.nav{position:sticky;top:env(safe-area-inset-top,0px);z-index:50;background:rgba(255,253,249,.94);backdrop-filter:blur(8px);border-bottom:1px solid var(--line)}
.nav .wrap{display:flex;align-items:center;gap:20px;height:64px}
.mono{font:2rem/1 var(--script);color:var(--ink);text-decoration:none;white-space:nowrap}
.links{display:flex;gap:22px;margin-left:auto}
.links a{font:500 .72rem/1 var(--sans);letter-spacing:.2em;text-transform:uppercase;text-decoration:none;white-space:nowrap;padding-block:8px}
.links a:hover{color:var(--coral)}
.nav select{border:1px solid var(--line);background:var(--bg);padding:6px 8px;font-size:.8rem}
.nav .btn{padding:10px 18px}
@media (max-width:820px){ .links{display:none} .nav .wrap{gap:10px} .nav .mono{margin-right:auto} }

.hero{position:relative;min-height:min(88vh,760px);display:grid;place-items:center;color:#fff;text-align:center;overflow:hidden}
.hero .bgs{position:absolute;inset:0;display:grid;grid-auto-flow:column;grid-auto-columns:1fr}
.hero .bgs::after{content:"";position:absolute;inset:0;background:radial-gradient(ellipse 62% 55% at 50% 50%,rgba(10,16,14,.58),rgba(10,16,14,0) 100%),linear-gradient(180deg,rgba(10,16,14,.22),rgba(10,16,14,.4))}
.hero-in{text-shadow:0 2px 16px rgba(0,0,0,.55),0 0 2px rgba(0,0,0,.35)}
.hero .btn,.hero .ctas a{text-shadow:none;background:rgba(10,16,14,.35);backdrop-filter:blur(3px)}
.hero .eyebrow{font-weight:500}
.hero .scene .tag{z-index:3;background:rgba(255,255,255,.94);color:#16302a;font-weight:500;text-shadow:none}
.hero-in{position:relative;display:grid;gap:18px;justify-items:center;padding:96px 16px 72px}
.hero .eyebrow{color:rgba(255,255,255,.92)}
.hero h1{font-size:clamp(3.2rem,11vw,7.5rem);font-weight:400;line-height:.95}
.hero h1 .script{color:#fff;font-size:.8em;display:inline-block;padding-inline:.15em}
.dates{display:flex;gap:6px 18px;flex-wrap:wrap;justify-content:center;font:500 .8rem/1.4 var(--sans);letter-spacing:.24em;text-transform:uppercase}
.cd{display:flex;gap:10px}
.cd div{border:1px solid rgba(255,255,255,.6);min-width:76px;padding:10px 8px;display:grid}
.cd b{font:500 2rem/1 var(--serif);font-variant-numeric:tabular-nums}
.cd small{font-size:.62rem;letter-spacing:.2em;text-transform:uppercase}
.hero .ctas{display:flex;gap:12px;flex-wrap:wrap;justify-content:center}

.welcome{max-width:640px;margin:0 auto;text-align:center;display:grid;gap:18px;justify-items:center}
.welcome p{font-size:1.15rem}
.welcome .sig{font:2.2rem/1 var(--script);color:var(--coral)}

.journey{display:grid;grid-template-columns:minmax(0,1.6fr) minmax(0,1fr);gap:28px;align-items:start}
@media (max-width:900px){ .journey{grid-template-columns:1fr} }
.mapbox{position:relative;background:#f3efe2;border:1px solid var(--line);overflow:hidden}
.mapbox{overflow-x:auto}
.mapbox svg{display:block;width:100%;height:auto;min-width:680px}
.pin{cursor:pointer;outline:none}
.pin circle.dot{fill:#fff;stroke:var(--pc,var(--trail));stroke-width:2.5;transition:r .2s}
.pin text.num{font:600 13px var(--sans);fill:var(--pc,var(--trail));text-anchor:middle;pointer-events:none}
.pin.on circle.dot{fill:var(--pc,var(--trail))}
.pin.on text.num{fill:#fff}
.pin:hover circle.dot,.pin:focus-visible circle.dot{r:19}
.pin text.lbl{font:500 13px var(--sans);fill:var(--ink)}
.pin .lblbg{fill:rgba(255,253,249,.92)}
.mapbox{position:relative}
.mapbox svg .b{stroke-width:calc(.6px * var(--z))}
.mapbox svg .tw{fill:none;stroke:#fff;stroke-width:calc(8px * var(--z));stroke-linecap:round;opacity:.85}
.mapbox svg .td{fill:none;stroke-width:calc(3px * var(--z));stroke-dasharray:calc(2px * var(--z)) calc(8px * var(--z));stroke-linecap:round}
.mapbox svg .seg{fill:none;stroke-width:calc(4px * var(--z));stroke-linecap:round}
.mapbox svg .sc{transform:scale(var(--z))}
.pin .plbl{font:600 15px var(--sans);fill:var(--ink);paint-order:stroke;stroke:#f1ebdd;stroke-width:4px}
.mapbox svg.far .town,.mapbox svg.far .near{display:none}
.legend{position:absolute;left:10px;top:10px;display:flex;gap:12px;background:rgba(255,253,249,.92);border:1px solid var(--line);padding:6px 10px;font-size:.75rem}
.legend span{display:flex;align-items:center;gap:6px}
.legend i{width:18px;height:3px;display:block}
.mapctl{position:absolute;right:10px;top:10px}
.mapctl button{background:var(--white);border:1px solid var(--line);padding:6px 12px;font:500 .7rem/1 var(--sans);letter-spacing:.14em;text-transform:uppercase;cursor:pointer}
@media (max-width:700px){
 .mapbox{overflow:hidden}.mapbox svg{min-width:0;aspect-ratio:1/1}
 .legend{position:static;justify-content:center;flex-wrap:wrap;border:0;border-top:1px solid var(--line);background:var(--white);font-size:.72rem}
 .mapctl{top:10px;bottom:auto}
}
.mcard{background:var(--white);border:1px solid var(--line);display:grid}
.mcard .scene{aspect-ratio:4/3}
.mcard .in{padding:22px 24px;display:grid;gap:8px}
.mcard h3{font-size:2rem}
.mcard .meta{font:500 .72rem/1.4 var(--sans);letter-spacing:.2em;text-transform:uppercase;color:var(--trail)}
.mcard .nav2{display:flex;justify-content:space-between;align-items:center;border-top:1px solid var(--line);padding:12px 24px}
.mcard .nav2 button{background:none;border:0;cursor:pointer;font:500 .72rem/1 var(--sans);letter-spacing:.2em;text-transform:uppercase;padding:8px 0}
.mcard .nav2 button:disabled{opacity:.3;cursor:default}
.steps{display:flex;gap:6px}
.steps i{width:7px;height:7px;border-radius:50%;background:var(--line)}
.steps i.on{background:var(--trail)}
.note{font-size:.82rem;color:var(--muted);text-align:center;margin-top:18px}

.toggle{display:flex;justify-content:center;margin-bottom:44px}
.toggle div{display:inline-flex;border:1px solid var(--ink);flex-wrap:wrap}
.toggle button{border:0;background:none;padding:12px 22px;cursor:pointer;font:500 .75rem/1 var(--sans);letter-spacing:.2em;text-transform:uppercase}
.toggle button[aria-pressed="true"]{background:var(--ink);color:#fff}
.wtop{display:grid;grid-template-columns:minmax(0,1.1fr) minmax(0,1fr);background:var(--white);border:1px solid var(--line)}
@media (max-width:820px){ .wtop{grid-template-columns:1fr} }
.wtop .scene{min-height:320px}
.wtop .in{padding:40px 32px;display:grid;gap:14px;align-content:center}
.wtop h3{font-size:clamp(2.2rem,5vw,3rem)}
.wtop .big{font:500 1.4rem/1.3 var(--serif)}
.kv{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:14px;margin-top:6px}
.kv div{border-top:1px solid var(--line);padding-top:8px}
.kv small{display:block;font-size:.66rem;letter-spacing:.2em;text-transform:uppercase;color:var(--muted)}
.sub{margin:64px 0 24px;display:flex;align-items:baseline;gap:14px}
.sub h3{font-size:2rem}
.sub::after{content:"";flex:1;height:1px;background:var(--line)}
.from{display:grid;grid-template-columns:minmax(0,1.4fr) minmax(0,1fr) auto;gap:20px;align-items:end;background:var(--accent-soft);padding:24px;margin-bottom:18px}
.from h4{font:500 1.8rem/1.1 var(--serif);margin:0}
.from select{border:1px solid var(--line);background:var(--white);padding:9px}
@media (max-width:820px){ .from{grid-template-columns:1fr} }
.wear{display:grid;grid-template-columns:repeat(auto-fit,minmax(230px,1fr));gap:18px}
.wc{background:var(--white);border:1px solid var(--line);padding:22px;display:grid;gap:8px;align-content:start}
.wc .time{font:500 .72rem/1.4 var(--sans);letter-spacing:.2em;text-transform:uppercase;color:var(--accent)}
.wc h4{font:500 1.5rem/1.15 var(--serif);margin:0}
.wc p{font-size:.92rem;color:var(--muted)}
.sw.sm span{width:30px;height:30px}
.staynote{max-width:720px;margin-bottom:22px;padding-left:16px;border-left:2px solid var(--accent)}
.staynote b{font-family:var(--serif);font-size:1.25rem;font-weight:500}
.days{display:grid;grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:18px}
.day{background:var(--white);border:1px solid var(--line);position:relative}
.day::before{content:"";position:absolute;left:0;top:0;right:0;height:3px;background:var(--accent)}
.dtabs{display:flex;gap:10px;margin-bottom:14px;flex-wrap:wrap}
.dtabs button{display:grid;gap:2px;text-align:left;padding:10px 18px;border:1px solid var(--line);background:var(--white);cursor:pointer;color:var(--muted);font:400 .85rem var(--sans);border-radius:14px;min-width:150px}
.dtabs button b{font:500 1.15rem var(--serif);color:var(--ink,#222)}
.dtabs button[aria-selected=true]{background:var(--accent);border-color:var(--accent);color:#fff;box-shadow:0 6px 18px color-mix(in srgb,var(--accent) 30%,transparent)}
.dtabs button[aria-selected=true] b{color:#fff}
.dpanel{background:var(--white);border:1px solid var(--line);overflow:hidden;border-radius:6px}
.dpanel .dban{height:230px}
.dcap{position:absolute;left:0;right:0;bottom:0;padding:50px 28px 18px;background:linear-gradient(transparent,rgba(20,12,8,.5));color:#fff}
.dcap .time{font:500 .72rem/1.4 var(--sans);letter-spacing:.2em;text-transform:uppercase;color:#fff;opacity:.92}
.dcap h4{font:400 clamp(2.2rem,5vw,3.2rem)/1.05 var(--script);margin:4px 0 0;color:#fff;text-shadow:0 2px 12px rgba(0,0,0,.25)}
:lang(hi) .dcap h4{font-family:var(--serif)}
.dbody{display:grid;grid-template-columns:1.55fr 1fr;gap:34px;padding:30px 30px 34px}
.dbody.solo{grid-template-columns:1fr}
.dlab{font:500 .72rem var(--sans);letter-spacing:.2em;text-transform:uppercase;color:var(--muted);margin:0 0 12px}
.moms{list-style:none;margin:0;padding:0;position:relative}
.moms::before{content:"";position:absolute;left:calc(6.6em + 18px + 31px);top:40px;bottom:40px;border-left:2px dashed var(--line)}
.moms li{display:grid;grid-template-columns:6.6em 62px 1fr;gap:18px;align-items:center;padding:10px 0;position:relative}
.moms .mt{font:500 1.02rem/1.2 var(--serif);color:var(--ink,#222)}
.moms .tile{width:62px;height:62px;border-radius:20px;display:grid;place-items:center;font-size:28px;background:radial-gradient(circle at 28% 24%,rgba(255,255,255,.5) 0 16%,transparent 17%),radial-gradient(circle at 78% 80%,rgba(255,255,255,.25) 0 10%,transparent 11%),var(--c);box-shadow:0 8px 18px color-mix(in srgb,var(--c) 35%,transparent);transform:rotate(-5deg);transition:transform .25s;position:relative;z-index:1}
.moms li:nth-child(even) .tile{transform:rotate(5deg)}
.moms li:hover .tile{transform:rotate(0) scale(1.08)}
.moms h5{font:500 1.5rem/1.1 var(--serif);margin:0;color:color-mix(in srgb,var(--c) 62%,#222)}
.moms p{margin:3px 0 0;font-size:.88rem;color:var(--muted)}
.menu{align-self:start;background:#fbf6ec;border:1px solid #eadfc8;padding:22px 22px 18px;border-radius:6px;position:relative}
.menu::before{content:"";position:absolute;inset:6px;border:1px solid #eadfc8;border-radius:3px;pointer-events:none}
.menu ul{list-style:none;margin:0;padding:0;display:grid;gap:11px}
.menu li{display:flex;align-items:baseline;gap:8px;font-size:.92rem}
.menu .mi{width:1.4em;text-align:center}.menu .dots{flex:1;border-bottom:1px dotted #bfb39a;transform:translateY(-4px);min-width:12px}
.menu .mtm{font-variant-numeric:tabular-nums;color:var(--muted);font-size:.82rem;white-space:nowrap}
.todo h4{font-size:1.15rem}
@media(max-width:720px){.dbody{grid-template-columns:1fr;padding:22px 18px}.dpanel .dban{height:180px}.moms li{grid-template-columns:5.2em 50px 1fr;gap:12px}.moms .tile{width:50px;height:50px;font-size:23px;border-radius:16px}.moms::before{left:calc(5.2em + 12px + 25px)}.moms h5{font-size:1.25rem}.moms .mt{font-size:.9rem}.dtabs button{min-width:0;flex:1}}
.dban{position:relative;height:150px;overflow:hidden}.dban svg{width:100%;height:100%;display:block}
.dno{position:absolute;left:20px;bottom:14px;background:var(--white);color:var(--accent);font:500 .72rem/1 var(--sans);letter-spacing:.2em;text-transform:uppercase;padding:8px 12px;border-radius:999px;box-shadow:0 2px 10px rgba(0,0,0,.12)}
.day .dh{padding:18px 24px 6px}.day .time{font:500 .72rem/1.4 var(--sans);letter-spacing:.2em;text-transform:uppercase;color:var(--accent)}
.day h4{font:500 1.6rem/1.15 var(--serif);margin:4px 0 0}
.day ol{list-style:none;margin:0;padding:6px 24px 20px}
.day li{display:grid;grid-template-columns:7.2em 34px 1fr;gap:12px;align-items:center;padding:7px 10px;margin:0 -10px;font-size:.92rem;color:var(--muted);border-radius:12px}
.day .ic{position:relative;align-self:stretch;display:flex;align-items:center;justify-content:center}
.day .ic::before{content:"";position:absolute;left:50%;top:-8px;bottom:-8px;border-left:2px dotted var(--line)}
.day li:first-child .ic::before{top:50%}.day li:last-child .ic::before{bottom:50%}
.day .ic i{position:relative;font-style:normal;width:34px;height:34px;border-radius:50%;background:var(--white);border:1px solid var(--line);display:grid;place-items:center;font-size:1rem}
.day li.key{background:color-mix(in srgb,var(--c,var(--accent)) 14%,transparent);margin:6px -10px}
.day li.key .ic i{background:var(--c,var(--accent));border-color:transparent;width:40px;height:40px;font-size:1.2rem;box-shadow:0 3px 10px color-mix(in srgb,var(--c) 40%,transparent)}
.day li.key b{color:color-mix(in srgb,var(--c,var(--accent)) 60%,#222)!important}
.day li b{font-weight:500}.day .tm{font-variant-numeric:tabular-nums;white-space:nowrap}
.day li.key{color:var(--ink,#222)}.day li.key b{font:500 1.25rem/1.2 var(--serif)}
.day li small{display:block;font-size:.82rem;color:var(--muted);margin-top:2px}
.gintro{color:var(--muted);margin:0 0 14px}
.gtabs{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:16px}
.gtabs button{font:500 .78rem var(--sans);letter-spacing:.08em;text-transform:uppercase;padding:9px 14px;border:1px solid var(--line);background:var(--white);color:var(--muted);cursor:pointer;border-radius:999px}
.gtabs button[aria-selected=true]{background:var(--accent);border-color:var(--accent);color:#fff}
.ggrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:8px}
.gt{aspect-ratio:1;display:flex;align-items:flex-end;padding:10px;color:#fff;font-size:.75rem;letter-spacing:.06em}
.gt span{background:rgba(0,0,0,.25);padding:3px 8px;border-radius:999px}
.g0{background:linear-gradient(135deg,#f7b267,#f27059)}.g1{background:linear-gradient(135deg,#f4d35e,#ee964b)}.g2{background:linear-gradient(135deg,#7b2d4e,#ec5f67)}.g3{background:linear-gradient(135deg,#1d8a8f,#8fb36b)}
.gact{display:grid;grid-template-columns:1fr 1fr;gap:24px;margin-top:18px;align-items:start}
.gsafe{margin:0;padding:0;list-style:none;font-size:.85rem;color:var(--muted);display:grid;gap:6px}
.gsafe li::before{content:"🔒 ";font-size:.75rem}
.gform{display:grid;gap:10px}.gform .hint{font-size:.8rem;color:var(--muted);margin:0}.gdone{margin:0 0 10px}
@media(max-width:640px){.gact{grid-template-columns:1fr}.day li{grid-template-columns:6.4em 30px 1fr;gap:8px}.day .tm{font-size:.76rem}}
.sched{display:grid;grid-template-columns:repeat(auto-fit,minmax(230px,1fr));gap:18px}
.ev{background:var(--white);border:1px solid var(--line);padding:24px;display:grid;gap:6px;align-content:start;position:relative}
.ev::before{content:"";position:absolute;left:0;top:0;right:0;height:3px;background:var(--accent)}
.ev .time{font:500 .72rem/1.4 var(--sans);letter-spacing:.2em;text-transform:uppercase;color:var(--accent)}
.ev h4{font:500 1.6rem/1.15 var(--serif);margin:0}
.ev .dress{font-size:.9rem;color:var(--muted)}
.ev a{font-size:.78rem;letter-spacing:.12em;text-transform:uppercase;color:var(--accent)}
.dress-row{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:28px;align-items:center}
@media (max-width:820px){ .dress-row{grid-template-columns:1fr} }
.sw{display:flex;gap:10px;flex-wrap:wrap}
.sw span{width:56px;height:56px;border-radius:50%;box-shadow:inset 0 0 0 1px rgba(0,0,0,.08)}
.cards3{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:18px}
.hcard{background:var(--white);border:1px solid var(--line);display:grid}
.stays{list-style:none;margin:0;padding:0;border-top:1px solid var(--line)}
.stays li{display:grid;grid-template-columns:8em 1fr auto;gap:16px;align-items:center;padding:16px 4px;border-bottom:1px solid var(--line)}
.stays .k{font:500 .72rem var(--sans);letter-spacing:.18em;text-transform:uppercase;color:var(--accent)}
.stays h4{font:500 1.3rem/1.2 var(--serif);margin:0}.stays p{margin:2px 0 0;font-size:.9rem;color:var(--muted)}
.stays a{font-size:.78rem;letter-spacing:.12em;text-transform:uppercase;color:var(--accent);white-space:nowrap}
@media(max-width:640px){.stays li{grid-template-columns:1fr;gap:4px}}
.hcard .scene{aspect-ratio:3/2}
.hcard .in{padding:18px 20px;display:grid;gap:4px}
.hcard h4{font:500 1.4rem/1.2 var(--serif);margin:0}
.hcard .k{font-size:.66rem;letter-spacing:.2em;text-transform:uppercase;color:var(--accent);font-weight:500}
.info{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));border-top:1px solid var(--line);border-left:1px solid var(--line)}
.info div{border-right:1px solid var(--line);border-bottom:1px solid var(--line);padding:20px;background:var(--white);display:grid;gap:4px;align-content:start}
.info h4{font:500 1.25rem/1.2 var(--serif);margin:0}
.info small{font-size:.66rem;letter-spacing:.2em;text-transform:uppercase;color:var(--accent);font-weight:500}

.rsvps{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(300px,100%),1fr));gap:24px;max-width:960px;margin:0 auto}
.rcard{background:var(--white);border:1px solid var(--line);padding:36px 28px;display:grid;gap:14px;text-align:center;justify-items:center;align-content:start}
.rcard h3{font-size:2.2rem}
.status{font-size:.7rem;letter-spacing:.2em;text-transform:uppercase;padding:5px 12px;border:1px solid var(--line);color:var(--muted)}
.status.ok{background:var(--accent-soft);border-color:transparent;color:var(--accent);font-weight:500}
.rform{width:100%;display:grid;gap:16px;text-align:left}
.person{border-top:1px solid var(--line);padding-top:14px;display:grid;gap:8px}
.yn{display:flex;gap:8px;flex-wrap:wrap}
.yn label{flex:1 1 120px;border:1px solid var(--line);padding:10px;text-align:center;cursor:pointer;font-size:.9rem;position:relative}
.yn input{position:absolute;opacity:0;pointer-events:none}
.yn label:has(input:checked){border-color:var(--accent);background:var(--accent-soft);color:var(--accent);font-weight:500}
.yn label:has(input:focus-visible){outline:2px solid var(--accent)}
.fld{display:grid;gap:4px;font-size:.85rem}
.fld input,.fld textarea{border:1px solid var(--line);padding:10px;background:var(--bg);font-size:1rem}
.consent{display:flex;gap:8px;font-size:.8rem;color:var(--muted);align-items:flex-start}
.review{width:100%;text-align:left;display:grid;gap:6px;border-top:1px solid var(--line);padding-top:14px}
.review div{display:flex;justify-content:space-between;gap:10px}
.row{display:flex;gap:10px;flex-wrap:wrap;justify-content:center}

.faq{max-width:760px;margin:0 auto}
.faq details{border-bottom:1px solid var(--line);padding:18px 4px}
.faq summary{cursor:pointer;font:500 1.35rem/1.3 var(--serif);list-style:none;display:flex;justify-content:space-between;gap:12px}
.faq summary::-webkit-details-marker{display:none}
.faq summary::after{content:"+";font-family:var(--sans);font-weight:300}
.faq details[open] summary::after{content:"–"}
.faq p{padding-top:10px;color:var(--muted)}
footer{background:var(--ink);color:#e9efe9;text-align:center;padding:64px 16px 88px;display:grid;gap:12px;justify-items:center}
footer .mono{color:#fff;font-size:3rem}
footer p{font-size:.85rem;max-width:520px;opacity:.85}
.mnav{display:flex;align-items:center;gap:10px;padding:10px;background:var(--white);border-top:1px solid var(--line)}
.mnav button{flex:none;width:44px;height:44px;border-radius:50%;border:1px solid var(--line);background:var(--bg);font:400 1.2rem/1 var(--sans);color:var(--ink);cursor:pointer}
.mnav button:not(:disabled){background:var(--accent);border-color:var(--accent);color:#fff}
.mnav button:disabled{opacity:.35}
.mnav p{flex:1;margin:0;text-align:center;font:500 1.05rem/1.25 var(--serif);min-width:0}
.mnav small{display:block;font:500 .62rem var(--sans);letter-spacing:.2em;color:var(--muted);margin-bottom:2px}
@media (max-width:700px){
 .mnav{display:flex;align-items:center;gap:10px;padding:10px;background:var(--white);border-top:1px solid var(--line)}
 .mnav button{flex:none;width:44px;height:44px;border-radius:50%;border:1px solid var(--line);background:var(--bg);font:400 1.2rem/1 var(--sans);color:var(--ink);cursor:pointer}
 .mnav button:not(:disabled){background:var(--accent);border-color:var(--accent);color:#fff}
 .mnav button:disabled{opacity:.35}
 .mnav p{flex:1;margin:0;text-align:center;font:500 1.05rem/1.25 var(--serif);min-width:0}
 .mnav small{display:block;font:500 .62rem var(--sans);letter-spacing:.2em;color:var(--muted);margin-bottom:2px}
 .mcard .nav2{display:none}
}
/* Phone layout */
@media (max-width:820px){
 .nav .wrap{flex-wrap:wrap;height:auto;padding-block:8px 0;row-gap:2px}
 .links{display:flex!important;order:9;flex:1 0 100%;margin:0;overflow-x:auto;gap:22px;scrollbar-width:none}
 .links::-webkit-scrollbar{display:none}
 .links a{font-size:.64rem;padding-block:10px}
}
@media (max-width:640px){
 .sample{font-size:.58rem;padding:4px 8px;max-width:58%!important;opacity:.85}
 .sec-head{margin-bottom:32px}.sec-head h2{font-size:clamp(1.8rem,8vw,2.4rem)}
 .mcard .scene{aspect-ratio:16/10}
 .info{grid-template-columns:1fr 1fr}
 .info div{padding:14px}.info h4{font-size:1.05rem}.info p{font-size:.86rem;margin:0}
 .info div:last-child:nth-child(odd){grid-column:1/-1}
 .info.todo{display:flex;overflow-x:auto;scroll-snap-type:x mandatory;gap:10px;border:0;padding-bottom:8px;margin-inline:-16px;padding-inline:16px;scroll-padding-inline:16px}
 .info.todo div{flex:0 0 74%;scroll-snap-align:start;border:1px solid var(--line)}
 .gtabs{flex-wrap:nowrap;overflow-x:auto;scrollbar-width:none;margin-inline:-16px;padding-inline:16px}
 .gtabs::-webkit-scrollbar{display:none}.gtabs button{flex:none}
 .ggrid{grid-template-columns:repeat(3,minmax(0,1fr));gap:4px}
}

/* ===== Personal redesign: handwritten accents, paper, polaroids ===== */
:lang(hi){--script:"Kalam",var(--deva);--hand:"Kalam",var(--deva)}
.gtxt>.eyebrow:first-child .pw{font-size:2.2em}
.gtxt h1 .pw{font-size:1.25em}
.sec-head .script{font-family:var(--hand);font-size:clamp(1.6rem,3.6vw,2.1rem);font-weight:400}
.sec-head h2{font-family:var(--hand);font-weight:400;font-size:clamp(2.3rem,5.4vw,3.4rem);line-height:1.05}
.sec-head .rule{display:none}
.nav{background:rgba(166,219,227,.94)}
.mono{font:400 2rem/1 var(--hand)}
.nav .links a{font:400 1.3rem/1 var(--hand);letter-spacing:0;text-transform:none}
.nav .links a[aria-current="page"]{color:var(--coral);text-decoration:underline wavy;text-decoration-thickness:1px;text-underline-offset:6px}
.nav .links a.navr{background:var(--coral);color:#fff;padding:6px 14px;border-radius:999px 999px 999px 999px/60% 70% 60% 70%;transform:rotate(-2deg);display:inline-block}
.pagehead{padding:0 0 4px}
main>.sec:first-child,.sec:has(.pagehead){padding-top:48px}
/* hero */
.hero{min-height:min(82vh,700px)}
.hero .media{position:absolute;inset:0}
.hero .media video,.hero .media .ph{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.hero .media .ph{display:grid;grid-auto-flow:column;grid-auto-columns:1fr}
.hero .vtag{position:absolute;left:12px;top:12px;z-index:3;background:rgba(255,255,255,.9);color:#333;font:500 .7rem var(--sans);letter-spacing:.12em;text-transform:uppercase;padding:5px 9px;border-radius:4px}
.hero h1{font-family:var(--hand);font-weight:400;font-size:clamp(3.4rem,11vw,7.5rem);line-height:1}
.hero h1 .script{font-family:var(--hand)}
.hero .eyebrow{font:400 clamp(1.4rem,3vw,1.9rem)/1.2 var(--hand);letter-spacing:.02em;text-transform:none}
/* personal note */
.note-sec{padding:70px 0 30px;background:var(--bg)}
.letter{position:relative;max-width:640px;margin:0 auto;background:#fffdf7;padding:46px 34px 34px;box-shadow:0 10px 30px rgba(90,60,30,.12);transform:rotate(-.6deg);text-align:center;color:#3f4a3a}
.letter::before,.letter::after{content:"";position:absolute;top:-14px;width:110px;height:28px;background:rgba(35,90,144,.22);transform:rotate(-6deg)}
.letter::before{left:24px}.letter::after{right:24px;transform:rotate(5deg);background:rgba(35,90,144,.22)}
.letter .dear{font:400 2rem/1.1 var(--hand);color:var(--coral);margin-bottom:12px}
.letter .msg{font:400 1.55rem/1.35 var(--hand);white-space:pre-line}
.letter .xo{font:400 1.9rem/1 var(--hand);margin-top:18px;color:var(--sage)}
.letter .swans{width:120px;margin:0 auto 4px;display:block}
/* polaroid collage */
.collage-sec{background:var(--paper);padding:60px 0 80px;overflow:hidden}
.board{position:relative;height:900px;max-width:1120px;margin:20px auto 0}
.pol{position:absolute;background:#fff;padding:12px 12px 0;box-shadow:0 8px 22px rgba(60,40,20,.18);transform:rotate(var(--r));transition:transform .4s cubic-bezier(.3,1.6,.5,1);width:var(--w,250px)}
.pol:hover{transform:rotate(0) scale(1.04);z-index:5}
.pol .ph{aspect-ratio:var(--ar,1);background:linear-gradient(135deg,var(--c1),var(--c2));display:grid;place-items:center;color:rgba(255,255,255,.85);font:500 .7rem var(--sans);letter-spacing:.14em;text-transform:uppercase}
.pol .cap{font:400 1.35rem/1.15 var(--hand);color:#3f4a3a;text-align:center;padding:10px 6px 14px}
.pol .tape{position:absolute;top:-12px;left:50%;width:90px;height:24px;margin-left:-45px;background:rgba(243,165,48,.35);transform:rotate(-3deg)}
.doodle{position:absolute;stroke:var(--sage);fill:none;stroke-width:1.6;stroke-linecap:round;stroke-linejoin:round;opacity:.85}
.doodle text{fill:var(--sage);stroke:none;font:400 22px var(--hand)}
.board .mid{position:absolute;left:50%;top:10px;transform:translateX(-50%);text-align:center;width:min(340px,32%)}
.board .mid p{font:400 2.2rem/1.15 var(--hand);color:var(--sage)}
.board .mid small{display:block;font:400 1.3rem var(--hand);color:var(--sage);opacity:.8;margin-top:8px}
@media (max-width:860px){
 .board{height:auto;display:grid;grid-template-columns:1fr 1fr;gap:26px 14px;padding:10px 6px}
 .pol{position:relative;left:auto!important;top:auto!important;right:auto!important;width:auto}
 .pol .cap{font-size:1.1rem}
 .board .mid{position:relative;grid-column:1/-1;left:auto;top:auto;transform:none;width:auto;order:-1}
 .doodle{display:none}.doodle.keep{display:block;position:relative;margin:0 auto;grid-column:1/-1;left:auto!important;top:auto!important}
}
/* celebration cards */
.cele-cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,420px),1fr));gap:28px;margin-top:20px}
.ccard{background:#fff;border-radius:6px;overflow:hidden;box-shadow:0 8px 24px rgba(60,40,20,.1);display:flex;flex-direction:column}
.ccard .scene{aspect-ratio:16/8}
.ccard .in{padding:22px 24px 26px;display:grid;gap:10px}
.ccard h3{font:400 2.6rem/1 var(--hand);color:var(--accent)}
.ccard .when{font:400 1.35rem var(--hand);color:var(--ink)}
.ccard dl{display:grid;grid-template-columns:auto 1fr;gap:4px 14px;margin:6px 0 4px;font-size:.95rem}
.ccard dt{color:var(--muted);font-size:.78rem;letter-spacing:.14em;text-transform:uppercase;padding-top:3px}
.ccard dd{margin:0}
.ccard .row{display:flex;flex-wrap:wrap;gap:10px;margin-top:6px}
.wtoggle{margin:6px 0 26px}
.board .mid .swans{width:130px;margin:0 auto 6px;display:block;color:var(--sage)}
.sub h3{font-family:var(--hand)!important;font-weight:400;font-size:2rem}

/* sign-in cream palette */
:root{--bg:#f6e5cb;--alt:#f1dcbd;--line:#e2c9a4;--ink:#3b2030;--muted:#7a5a52;--coral:#b3295f;--accent:#b3295f;--accent-soft:#f8dde4;--wine:#7b2d4e}
[data-w="mik"]{--accent:#7b2d4e;--accent-soft:#f3dce3}
.nav{background:rgba(246,229,203,.95);border-bottom:2px solid #e2c9a4}
.navr{background:#b3295f!important;color:#fff!important}
.memo-sec{background:var(--bg);padding:64px 0 90px}
.memo-sec::after{display:none}
.letter{background:#fffaf1;border:1px solid #ead7b8}
.letter .dear,.sec-head .script{color:#b3295f}
.letter .xo{color:#7b2d4e}
.memo-head{margin-top:70px}
.board{height:auto;display:grid;grid-template-columns:repeat(4,1fr);gap:36px 26px;align-items:start;max-width:1120px;margin:24px auto 0;padding:10px 0}
.board .pol{position:relative;width:auto;left:auto;top:auto}
.board .pol:nth-child(3n+2){margin-top:18px!important}
.board .doodle{position:relative;width:min(120px,80%);justify-self:center;align-self:center;stroke:#b3295f;opacity:.7}
.board .doodle text{fill:#b3295f}
.pol{box-shadow:0 8px 22px rgba(90,50,20,.18)}
.pol .cap{color:#4a2438}
.pol .ph{color:rgba(140,33,80,.55)}
.tape{background:rgba(243,165,48,.4)!important}
@media (max-width:860px){.board{grid-template-columns:1fr 1fr;gap:28px 14px}.board .pol:nth-child(3n+2){margin-top:0!important}.board .doodle{width:70px}}
#cele{background:var(--alt)}
#cele .sec-head h2{color:var(--ink)}
.ccard,.rcard{background:#fffaf1}
#story,#rsvp{background:var(--alt)}
#faq{background:var(--bg)}
footer{background:#3b2030;color:#f1e6d4}
footer .mono{color:#fff}
/* v64 */
:root{--alt:#ecd2ae}
.memo-sec{background:radial-gradient(70% 38% at 50% var(--gy,30%),rgba(236,120,150,.22),transparent 70%),linear-gradient(#fbefd9 0%,#f7dccb 45%,#f2c4b6 100%);position:relative}
#cele{background:linear-gradient(#f2c4b6 0%,#efc9a8 55%,#e9d3a0 100%)}
#story,#rsvp{background:var(--alt)}
.board{position:relative;grid-template-columns:repeat(4,1fr);gap:44px 28px;align-items:start;padding:20px 0 40px}
.board .pol:nth-of-type(4n+2){margin-top:46px!important}
.board .pol:nth-of-type(4n+3){margin-top:14px!important}
.board .pol:nth-of-type(4n+4){margin-top:62px!important}
.board .pol{--r:0deg;transform:rotate(var(--r));translate:0 var(--py,0px);transition:transform .45s cubic-bezier(.3,1.5,.5,1),box-shadow .3s}
.board .pol:hover{transform:rotate(0) scale(1.12);z-index:6;box-shadow:0 18px 40px rgba(90,40,30,.3)}

.board .doodle{stroke-width:2.2;position:absolute;width:auto;justify-self:auto;align-self:auto;opacity:.55;z-index:0}
.board .pol{z-index:1}
.ccard .scene{aspect-ratio:4/3}
.cd{gap:12px;flex-wrap:wrap;justify-content:center}
.cd div{min-width:96px}
.cd .cdn{font-size:.62rem;letter-spacing:.2em;text-transform:uppercase;margin-bottom:6px}
/* Thin handwriting. Dark text on a light page is thinned with a text stroke in the page colour (scales with zoom and
   stays steady while scrolling). White text on photos/buttons keeps the SVG filter, on its own layer so it doesn't flicker. */
.gtxt h1 .pw{filter:url(#thin)}
.hero h1{filter:url(#thin);will-change:transform}
.sec-head h2{-webkit-text-stroke:.7px #fff5f8}
.sec-head .script,.nav .mono,.nav .links a:not(.navr){-webkit-text-stroke:.3px #fff5f8}
.letter .dear,.letter .xo,.ccard h3{-webkit-text-stroke:.3px #fffbfc}
footer .mono,.nav .links a.navr,.dcap h4{filter:url(#thin2);will-change:transform}
@media (max-width:860px){.board{grid-template-columns:1fr 1fr;gap:28px 14px}.board .pol:nth-of-type(n){margin-top:0!important}.board .pol:nth-of-type(2n){margin-top:30px!important}.board .doodle{display:none}.board .pol:hover{transform:rotate(0) scale(1.05)}}
/* v66 */
#cele{background:linear-gradient(#e59a86,#d88477);padding-block:56px 64px}
#cele .sec-head .script{color:#5a1a36}
#cele .sec-head h2{color:#2e1420}
.memo-sec::after{display:block!important;content:"";position:absolute;left:0;right:0;bottom:-1px;height:28px;background:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='56' height='28'%3E%3Cpath d='M0 28V14Q14 0 28 14T56 14V28z' fill='%23e59a86'/%3E%3C/svg%3E") repeat-x}
.memo-sec{padding-bottom:100px}
.cele-cards.one{display:block;max-width:980px;margin:18px auto 0}
.cele-cards.one .ccard{display:grid;grid-template-columns:1.1fr 1fr;align-items:stretch}
.cele-cards.one .ccard .scene{aspect-ratio:auto;min-height:340px}
.cele-cards.one .ccard .in{align-self:center}
#cele .wtoggle{margin:14px 0 6px}
@media (max-width:860px){.cele-cards.one .ccard{grid-template-columns:1fr}.cele-cards.one .ccard .scene{aspect-ratio:4/3;min-height:0}}
/* v75 pink theme */
:root{--bg:#fff5f8;--alt:#fde4eb;--line:#f2bccb;--ink:#3a1824;--muted:#7d5666;--accent:#c23a6b;--accent-soft:#fde4eb;--coral:#cc4a79;--wine:#8e2650;--saffron:#eb95b0;--sea:#c23a6b;--vine:#d06b90;--trail:#cc4a79}
[data-w="mik"]{--accent:#8e2650;--accent-soft:#fad9e4}
.nav{background:rgba(255,245,248,.95);border-bottom:2px solid #f2bccb}
.navr{background:#c23a6b!important;color:#fff!important}
.hero{position:relative}
.hero::after{content:"";position:absolute;left:0;right:0;bottom:-1px;z-index:4}
.memo-sec{background-image:radial-gradient(70% 38% at 50% var(--gy,30%),rgba(215,80,125,.1),transparent 70%),linear-gradient(#fffefe 0%,#fdeff4 50%,#fbdbe6 100%);padding-top:56px}
#cele{background:linear-gradient(#f6c6d4,#eeb5c7);position:relative;padding-bottom:84px}
#cele::after{content:"";position:absolute;left:0;right:0;bottom:-1px}
#cele .sec-head .script{color:#8e2650}
#cele .sec-head h2{color:#3a1824}
.divider{display:flex;align-items:center;justify-content:center;gap:14px;margin:54px auto 0;color:#c23a6b;max-width:420px}
.divider i{flex:1;height:0;border-top:2px dotted #e79ab5}
.divider svg{width:30px;height:28px;flex:none}
.letter{background:#fffbfc;border:1px solid #f6d0dc}
.letter .dear,.sec-head .script{color:#c23a6b}
.letter .xo{color:#8e2650}
.ccard,.rcard{background:#fffbfc}
.board .doodle{stroke:#c23a6b}.board .doodle text{fill:#c23a6b}
.pol{box-shadow:0 8px 22px rgba(110,30,60,.18)}
.pol .cap{color:#47202e}
.pol .ph{color:rgba(142,38,80,.55)}
.tape{background:rgba(194,58,107,.2)!important}
.letter::before,.letter::after{background:rgba(194,58,107,.2)!important}
#story,#rsvp,#faq,.sec.alt{background:var(--bg)}
footer{background:#c4607f;color:#fff5f8}
footer .mono{color:#fff}
.memo-head{margin-top:26px}
.hero .scene .tag{bottom:42px}
/* v74 subtle dividers + compact footer */
.hero::after{height:16px;background:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='160' height='16' preserveAspectRatio='none'%3E%3Cpath d='M0 16V8Q40 0 80 8T160 8V16z' fill='%23fff8fa'/%3E%3C/svg%3E") repeat-x bottom!important}
.memo-sec::after{height:16px;background:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='160' height='16' preserveAspectRatio='none'%3E%3Cpath d='M0 16V8Q40 0 80 8T160 8V16z' fill='%23f6c6d4'/%3E%3C/svg%3E") repeat-x bottom!important}
#cele::after{height:16px;background:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='160' height='16' preserveAspectRatio='none'%3E%3Cpath d='M0 16V8Q40 0 80 8T160 8V16z' fill='%23c4607f'/%3E%3C/svg%3E") repeat-x bottom!important}
.divider{margin:40px auto 0;max-width:300px;opacity:.8}
.divider i{border-top:1.5px dotted #e79ab5}
.divider svg{width:20px;height:18px}
#cele{padding-bottom:56px}
.hero .scene .tag{bottom:26px}
footer{display:flex;flex-wrap:wrap;align-items:center;justify-content:center;gap:6px 18px;padding:14px 16px 16px;text-align:left}
footer .mono{font-size:1.5rem;line-height:1}
footer p{font-size:.72rem;max-width:520px;margin:0}
footer .dm-link{font-size:.66rem}
footer .btn{padding:6px 14px;font-size:.66rem}
@media (max-width:640px){footer{flex-direction:column;text-align:center;gap:6px;padding:14px 16px 18px}}
.pagehead+.divider{margin:18px auto 6px}
footer{position:relative}
footer::before{content:"";position:absolute;left:0;right:0;top:-15px;height:16px;background:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='160' height='16' preserveAspectRatio='none'%3E%3Cpath d='M0 16V8Q40 0 80 8T160 8V16z' fill='%23c4607f'/%3E%3C/svg%3E") repeat-x bottom}
html[data-pg="home"] footer::before{display:none}
#root{min-height:100vh;display:flex;flex-direction:column}
#root>footer{margin-top:auto}
sup.ord{font-size:.62em;line-height:0;vertical-align:super;margin-left:.04em}
.tlink{display:inline-block;margin-top:6px;font-size:.78rem;color:var(--accent);text-decoration:underline;text-underline-offset:3px}
.todo h4 a{color:inherit;text-decoration:none;border-bottom:1px dotted var(--accent)}
.todo h4 a:hover{color:var(--accent)}
.nav .mono{display:inline-grid;place-items:center;width:62px;height:56px;font-size:1.05rem;padding-bottom:5px;background:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 28' fill='none' stroke='%23c23a6b' stroke-width='1.6' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M15 25C5 17 2 12 4 7c3-5 9-3 11 1 2-4 8-6 11-1 2 5-1 10-11 18z'/%3E%3C/svg%3E") center/100% 100% no-repeat}
/* v77 cork board + subtle heart logo */
.cork{max-width:1160px;margin:26px auto 0;padding:16px;border-radius:6px;background:linear-gradient(145deg,#3f2f27,#241913);box-shadow:0 18px 40px rgba(60,25,30,.35),inset 0 0 0 2px rgba(255,255,255,.06)}
.board{position:relative;background:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='260' height='260'%3E%3Cfilter id='a' x='0' y='0' width='100%25' height='100%25'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.85' numOctaves='4' seed='4'/%3E%3CfeColorMatrix values='0 0 0 0 .40  0 0 0 0 .24  0 0 0 0 .10  0 0 0 2.6 -.85'/%3E%3C/filter%3E%3Cfilter id='b' x='0' y='0' width='100%25' height='100%25'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.5' numOctaves='3' seed='9'/%3E%3CfeColorMatrix values='0 0 0 0 .96  0 0 0 0 .80  0 0 0 0 .55  0 0 0 1.9 -.8'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' fill='%23c99660'/%3E%3Crect width='100%25' height='100%25' filter='url%28%23b%29'/%3E%3Crect width='100%25' height='100%25' filter='url%28%23a%29'/%3E%3C/svg%3E");grid-template-columns:repeat(4,1fr);grid-auto-rows:auto;gap:20px 18px;align-items:center;justify-items:center;padding:34px 30px 40px;margin:0;max-width:none;box-shadow:inset 0 0 40px rgba(60,30,10,.55),inset 0 0 6px rgba(0,0,0,.5);border-radius:2px}
.board .pol{position:relative;width:min(100%,238px);padding:10px 10px 0;left:auto;top:auto;margin:var(--j,0) 0 0!important;transform:rotate(var(--r));translate:0 var(--py,0px);box-shadow:2px 6px 10px rgba(30,15,5,.45),0 1px 2px rgba(0,0,0,.4);background-color:#fbf8f2;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='160' height='160'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.9' numOctaves='3' seed='2'/%3E%3CfeColorMatrix values='0 0 0 0 .3  0 0 0 0 .22  0 0 0 0 .15  0 0 0 .55 0'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url%28%23n%29'/%3E%3C/svg%3E")}
.board .pol.big{width:min(100%,430px);padding:14px 14px 0}
.board .pol .ph{background:linear-gradient(135deg,var(--c1),var(--c2));filter:saturate(.9)}
.board .pol .cap{font-size:1.25rem;padding:9px 4px 12px;color:#2c1f1c}
.board .pol.big .cap{font-size:1.9rem;padding:14px 6px 18px}
.board .pol:hover{transform:rotate(0) scale(1.1);z-index:8;box-shadow:6px 16px 28px rgba(20,8,2,.55)}
.pin{position:absolute;top:-7px;left:50%;width:15px;height:15px;margin-left:-8px;border-radius:50%;z-index:3;background:radial-gradient(circle at 34% 30%,#fff9 0 12%,transparent 30%),radial-gradient(circle at 50% 50%,var(--pc,#e0557f) 0 62%,rgba(0,0,0,.35) 100%);box-shadow:2px 4px 5px rgba(0,0,0,.5),inset -1px -2px 3px rgba(0,0,0,.35)}
.board .pol.big .pin{width:19px;height:19px;margin-left:-10px;top:-9px}
.board .tape{background:rgba(255,246,222,.72)!important;border:1px solid rgba(180,150,100,.25);width:76px;height:22px;margin-left:-38px;top:-11px;box-shadow:0 1px 2px rgba(0,0,0,.25);clip-path:polygon(0 8%,4% 0,8% 10%,12% 0,100% 4%,97% 50%,100% 94%,96% 100%,90% 90%,0 100%,3% 50%)}
.bnote{position:relative;width:min(100%,210px);padding:20px 16px 16px;background:#fff3c9 url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='160' height='160'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.9' numOctaves='3' seed='2'/%3E%3CfeColorMatrix values='0 0 0 0 .3  0 0 0 0 .22  0 0 0 0 .15  0 0 0 .55 0'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url%28%23n%29'/%3E%3C/svg%3E");transform:rotate(var(--r));box-shadow:2px 6px 10px rgba(30,15,5,.45);text-align:center;font:400 1.45rem/1.15 var(--hand);color:#4a2a2c}
.bnote p{margin:0}.bnote small{display:block;font-size:1.05rem;color:#8e2650;margin-top:8px}
.board .doodle{display:none}
@media (max-width:860px){.cork{padding:10px}.board{grid-template-columns:1fr 1fr;gap:26px 12px;padding:26px 14px 30px}.board .pol,.board .bnote{grid-area:auto!important;width:min(100%,200px);margin-top:var(--j,0)!important}.board .pol.big{grid-column:1/-1!important;width:min(100%,320px)}.board .pol:nth-of-type(n),.board .pol:nth-of-type(2n){margin-top:var(--j,0)!important}.bnote{grid-column:1/-1;width:min(100%,260px)}}
.nav .mono{position:relative;z-index:0;display:inline-block;width:auto;height:auto;padding:0 8px;background:none;font-size:1.5rem}
.nav .mono::before{content:"";position:absolute;left:-14px;right:-14px;top:-13px;bottom:-12px;z-index:-1;opacity:.4;background:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 28' fill='none' stroke='%23c23a6b' stroke-width='1' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M15 25C5 17 2 12 4 7c3-5 9-3 11 1 2-4 8-6 11-1 2 5-1 10-11 18z'/%3E%3C/svg%3E") center/100% 100% no-repeat}
.board{gap:14px 14px;padding:30px 26px 34px}
.board{gap:6px 14px;padding:28px 24px 30px}
.board .pol{width:min(100%,214px)}
.board .pol.big{width:min(100%,370px)}
.board .pol .cap{font-size:1.15rem}
.bnote{width:min(100%,190px)}
@media (max-width:860px){.board .pol,.board .pol.big,.board .bnote{translate:none!important}.board .pol{width:min(100%,190px)}.board{gap:30px 12px}}
.nav .mono{filter:none}
.nav .mono{padding:0 14px}
.nav .mono::before{left:-8px;right:-8px;top:-17px;bottom:-14px;opacity:.5}
.nav .mono{padding:0}
.nav .mono::before{left:50%;top:52%;right:auto;bottom:auto;width:104px;height:70px;transform:translate(-50%,-50%);opacity:.5}
.nav .mono::before{width:116px;height:66px;top:47%;opacity:.42}
/* v78 scattered photos + LED strip */
.scat{position:relative;max-width:1120px;margin:30px auto 0;aspect-ratio:1120/1180}
.scat .wires{position:absolute;inset:0;width:100%;height:100%;z-index:0;pointer-events:none;overflow:visible}
.scat .wires path{fill:none;stroke:rgba(110,50,75,.3);stroke-width:1}
.led{position:absolute;z-index:0;width:7px;height:7px;margin:-3px 0 0 -3px;border-radius:50%;background:var(--c);box-shadow:0 0 7px 2px var(--c);opacity:.35;animation:twk var(--t,4s) ease-in-out var(--d,0s) infinite;pointer-events:none}
@keyframes twk{0%,100%{opacity:.28}50%{opacity:.85}}
@media (prefers-reduced-motion:reduce){.led{animation:none;opacity:.6}}
.scat .pol{position:absolute;z-index:1;padding:9px 9px 0;margin:0!important;transform:rotate(var(--r));translate:0 var(--py,0px);background-color:#fffdfb;background-image:none;box-shadow:0 6px 16px rgba(110,30,60,.2),0 1px 2px rgba(0,0,0,.18);transition:transform .45s cubic-bezier(.3,1.5,.5,1),box-shadow .3s}
.scat .pol.big{padding:11px 11px 0}
.scat .pol .ph{filter:none}
.scat .pol .cap{font-size:clamp(.8rem,1.5vw,1.2rem);padding:8px 3px 11px;color:#47202e;line-height:1.1}
.scat .pol.big .cap{font-size:clamp(1rem,2.1vw,1.7rem)}
.scat .pol:hover{transform:rotate(0) scale(1.1);z-index:8;box-shadow:0 16px 32px rgba(110,30,60,.32)}
.scat .tape{position:absolute;top:-10px;left:50%;width:34%;height:20px;margin-left:-17%;background:rgba(194,58,107,.22)!important;transform:rotate(-3deg);clip-path:none;border:0;box-shadow:none}
.scat .tape.t2{background:rgba(255,236,190,.8)!important;transform:rotate(3deg)}
@media (max-width:860px){.scat{aspect-ratio:auto;display:flex;flex-wrap:wrap;justify-content:center;gap:34px 10px;padding:6px 4px 20px}.scat .pol{position:relative;left:auto!important;top:auto!important;width:46%!important;translate:none!important;margin-left:var(--ml)!important;margin-top:var(--j)!important}.scat .pol.big{width:84%!important}.scat .pol .cap{font-size:1.05rem}}
.scat .wires path{stroke:rgba(110,50,75,.42)}
.led{width:9px;height:9px;margin:-4px 0 0 -4px;box-shadow:0 0 10px 3px var(--c),0 0 2px 1px #fff8;opacity:.5}
@keyframes twk{0%,100%{opacity:.35}50%{opacity:1}}
@media (max-width:860px){.scat{align-items:flex-start}.scat .pol:nth-of-type(odd){align-self:flex-start}.scat .pol:nth-of-type(even){margin-top:calc(var(--j) + 26px)!important}}
.divider svg{width:100px;height:32px}
.divider{max-width:340px}
.scat .dd{position:absolute;z-index:0;height:auto;overflow:visible;pointer-events:none;opacity:.92}
.letter .swans,.swans{width:190px;height:111px;margin:0 auto 4px;display:block}
.nav .mono::before{background:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 100 90' fill='none' stroke='%23c23a6b' stroke-width='5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M50 82C22 62 7 44 12 27 17 11 39 11 49 29 54 19 68 8 83 16 97 26 91 49 70 67 62 74 55 80 50 85'/%3E%3C/svg%3E") center/100% 100% no-repeat;opacity:.38}
@media (max-width:860px){.scat .dd{display:none}}
/* v80 subtle hearts, canvas paint finish */
:root{--paint:url("/img/canvas.jpg")}
body,.sec,.sec.alt,#story,#rsvp,#faq{background-image:var(--paint)}
body,.sec,.sec.alt,#story,#rsvp,#faq,#cele{background-size:max(100%,1600px) auto,auto;background-repeat:repeat-y,no-repeat;background-position:center top}
.gate select{background:rgba(250,238,220,.55);-webkit-backdrop-filter:blur(5px);backdrop-filter:blur(5px);border:1px solid rgba(110,50,45,.3);color:#5a2d2a;border-radius:0}
/* v93 tab pages: scroll gradient on body; LEDs glow */
html:not([data-pg="home"]) body{background-image:var(--paint),linear-gradient(180deg,#fffafb 0%,#fdeff3 45%,#fbdbe6 100%);background-blend-mode:multiply,normal;background-size:max(100%,1600px) auto,100% 100%;background-repeat:repeat-y,no-repeat;background-position:center top,0 0}
html:not([data-pg="home"]) .sec,html:not([data-pg="home"]) .sec.alt,html:not([data-pg="home"]) #story,html:not([data-pg="home"]) #rsvp,html:not([data-pg="home"]) #faq{background:transparent}
.led{width:11px;height:11px;margin:-5px 0 0 -5px;background:radial-gradient(circle,#fff 0 30%,var(--c) 70%);box-shadow:0 0 14px 5px var(--c),0 0 30px 10px color-mix(in srgb,var(--c) 55%,transparent),0 0 3px 1px #fff;opacity:.75}
@keyframes twk{0%,100%{opacity:.55;transform:scale(.9)}50%{opacity:1;transform:scale(1.25)}}
/* v94 hero image, brighter gradient tops */
.himg{position:absolute;inset:0;background:url("/p/hero.jpg") 70% 20%/cover no-repeat}
html:not([data-pg="home"]) body{background-image:var(--paint),linear-gradient(180deg,#fffefe 0%,#fdeff4 35%,#f8cddc 100%)}
/* v94b hero: text below the couple's faces */
.hero{place-items:end center;min-height:min(92vh,820px)}
.hero .hero-in{padding-bottom:64px;padding-top:0}
.himg{background-position:58% top}
@media (max-width:640px){.himg{background-position:47% top}}
.hero .bgs::after{background:linear-gradient(180deg,rgba(24,6,14,0) 22%,rgba(24,6,14,.45) 55%,rgba(24,6,14,.72) 100%)}
/* v95 deeper celebrations so the wave shows */
.sec-head .script,#cele .sec-head .script{color:#8a5f1f}
.dress-row{background:var(--white,#fff);border:1px solid var(--line);padding:22px 26px;box-shadow:0 8px 22px rgba(150,40,80,.07)}
/* v85 wave = mask, so the section behind shows through */
.hero::after,.memo-sec::after{display:none!important}
.hero{position:relative;z-index:3;-webkit-mask:linear-gradient(#000,#000) 0 0/100% calc(100% - 15px) no-repeat,url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='160' height='16' preserveAspectRatio='none'%3E%3Cpath d='M0 0V8Q40 0 80 8T160 8V0z' fill='%23000'/%3E%3C/svg%3E") 0 100%/160px 16px repeat-x;mask:linear-gradient(#000,#000) 0 0/100% calc(100% - 15px) no-repeat,url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='160' height='16' preserveAspectRatio='none'%3E%3Cpath d='M0 0V8Q40 0 80 8T160 8V0z' fill='%23000'/%3E%3C/svg%3E") 0 100%/160px 16px repeat-x}
.memo-sec{position:relative;z-index:2;margin-top:-16px;padding-top:72px;-webkit-mask:linear-gradient(#000,#000) 0 0/100% calc(100% - 15px) no-repeat,url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='160' height='16' preserveAspectRatio='none'%3E%3Cpath d='M0 0V8Q40 0 80 8T160 8V0z' fill='%23000'/%3E%3C/svg%3E") 0 100%/160px 16px repeat-x;mask:linear-gradient(#000,#000) 0 0/100% calc(100% - 15px) no-repeat,url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='160' height='16' preserveAspectRatio='none'%3E%3Cpath d='M0 0V8Q40 0 80 8T160 8V0z' fill='%23000'/%3E%3C/svg%3E") 0 100%/160px 16px repeat-x}
#cele{position:relative;z-index:1;margin-top:-16px;padding-top:72px}
.memo-sec,#cele{background-blend-mode:multiply,normal,normal}
.memo-sec{background-size:max(100%,1600px) auto,auto,auto;background-repeat:repeat-y,no-repeat,no-repeat;background-position:center top,0 0,0 0}
.memo-sec{background-image:var(--paint),radial-gradient(70% 38% at 50% var(--gy,30%),rgba(215,80,125,.1),transparent 70%),linear-gradient(#fffefe 0%,#fdeff4 50%,#fbdbe6 100%)}
#cele{background-image:var(--paint),linear-gradient(#f2bdcf,#ecb0c5)}
.scat .dd{opacity:1;width:122px!important;height:122px!important}
.divider{margin:48px auto 40px}.pagehead+.divider{margin:30px auto 42px}
.pagehead{position:relative}
.pagehead .hh{position:absolute;top:44%;width:30px;height:27px;opacity:.5}
.pagehead .hh.l{left:calc(50% - 250px);transform:rotate(-12deg)}
.pagehead .hh.r{right:calc(50% - 250px);width:22px;height:20px;transform:rotate(10deg);top:52%}
@media (max-width:640px){.pagehead .hh.l{left:4%}.pagehead .hh.r{right:6%}}
@media (min-width:641px){.pagehead .hh.l{left:calc(50% - 400px)}.pagehead .hh.r{right:calc(50% - 400px)}}
@media (max-width:640px){.pagehead .hh.l{left:1%;top:30%}.pagehead .hh.r{right:2%;top:70%}}
.nav .mono{font-size:1.12rem;font-weight:700;padding:0 4px;letter-spacing:0}
.nav .mono::before{width:74px;height:64px;top:48%;opacity:.6}

/* v101 mobile performance + portrait photos */
@media (max-width:860px){
.nav,.gpill,.hero .btn,.hero .ctas a{backdrop-filter:none!important;-webkit-backdrop-filter:none!important}
.nav{background:#fffdf9}
.gtxt h1 .pw,.hero h1,.sec-head h2,.mono,.sec-head .script,.nav .links a,.ccard h3,.letter .dear,.letter .xo,.dcap h4{filter:none!important}
body,html:not([data-pg="home"]) body{background-blend-mode:normal!important;background-image:linear-gradient(180deg,rgba(255,254,254,.15),rgba(248,205,220,.55)),var(--paint)!important;background-size:100% 100%,900px auto!important}
.memo-sec,#cele{background-blend-mode:normal!important}
.led{animation:none!important;opacity:.7;box-shadow:0 0 6px 2px var(--c)!important;width:7px;height:7px}
.led:nth-child(2n){display:none}
.scat .pol .ph{aspect-ratio:4/5!important;background-size:cover!important;background-position:center 30%!important}
.scat .pol{box-shadow:0 3px 8px rgba(110,30,60,.2)!important;transition:none}
.scat .pol:hover{transform:rotate(var(--r))}
.hero{will-change:auto}
}

/* v103 phone: doodles back, photo card above map */
@media (max-width:860px){
.scat .dd{display:block!important;width:78px!important;height:78px!important;opacity:.95}
.journey .mcard{order:-1}
}
@media (max-width:860px){.scat .dd{z-index:2!important;width:92px!important;height:92px!important}
.scat svg.dd:nth-of-type(2){left:-2%!important;top:2%!important}
.scat svg.dd:nth-of-type(3){left:76%!important;top:14%!important}
.scat svg.dd:nth-of-type(4){left:-2%!important;top:27%!important}
.scat svg.dd:nth-of-type(5){left:76%!important;top:39%!important}
.scat svg.dd:nth-of-type(6){left:-2%!important;top:52%!important}
.scat svg.dd:nth-of-type(7){left:76%!important;top:64%!important}
.scat svg.dd:nth-of-type(8){left:-2%!important;top:77%!important}
.scat svg.dd:nth-of-type(9){left:76%!important;top:89%!important}
}

/* v104 arrows on photo card, hamburger, doodles behind */
.swrap{position:relative}
.pa{position:absolute;top:50%;transform:translateY(-50%);width:44px;height:44px;border-radius:50%;border:0;background:rgba(255,255,255,.9);color:#c23a6b;font:400 1.3rem/1 var(--sans);cursor:pointer;box-shadow:0 2px 8px rgba(0,0,0,.28);z-index:3}
.pl{left:10px}.pr{right:10px}.pa:disabled{opacity:.35;cursor:default}
.navrsvp,.burger{display:none}
@media (max-width:820px){
.nav .wrap{flex-wrap:wrap;align-items:center;gap:8px}
.nav .mono{margin-right:auto}
.navrsvp{display:inline-block;background:#c23a6b;color:#fff;padding:10px 16px;font:600 .72rem/1 var(--sans);letter-spacing:.16em;text-transform:uppercase;text-decoration:none;box-shadow:0 2px 8px rgba(194,58,107,.35)}
.burger{display:grid;place-content:center;gap:5px;width:42px;height:40px;background:none;border:1px solid var(--line);cursor:pointer;padding:0}
.burger i{display:block;width:20px;height:2px;background:var(--ink)}
.nav .links{display:none!important}
.nav.open .links{display:flex!important;flex-direction:column;gap:0;order:9;flex:1 0 100%;overflow:visible;padding-bottom:6px}
.nav.open .links a{font-size:1.35rem;letter-spacing:.02em;text-transform:none;padding:12px 6px;border-top:1px solid var(--line)}
.scat .dd{z-index:0!important}
.scat svg.dd:nth-of-type(odd){left:-5%!important}.scat svg.dd:nth-of-type(even){left:80%!important}
}

/* v105 personal invite link: no code box, auto-enter */
.gate.linked form,.gate.linked .err,.gate.linked .gaux,#intro.lk form,#intro.lk .err{display:none!important}
.gate.linked .gtxt,#intro.lk .gtxt{top:0!important;bottom:0!important}
@media (max-aspect-ratio:11/10){.gate.linked .gtxt,#intro.lk .gtxt{left:14%!important;right:14%!important}}
@media (min-aspect-ratio:11/10){.gate.linked .gtxt,#intro.lk .gtxt{width:min(620px,94%)!important}}

/* v108 phone header: burger | logo ... RSVP | language */
@media (max-width:820px){
.nav .wrap{min-height:60px;padding-block:6px;flex-wrap:wrap;align-items:center;gap:8px}
.nav .burger{order:0}
.nav .mono{order:1;margin:0 auto 0 4px!important;padding:0 6px!important}
.nav .mono::before{width:50px!important;height:44px!important;top:50%!important;left:50%!important;transform:translate(-50%,-50%)!important}
.nav .navrsvp{order:2}
.nav .wrap>:not(.mono):not(.links):not(.navrsvp):not(.burger){order:3}
.nav .links{order:9}
.nav .wrap{align-content:flex-start}
.nav .links a.navr{display:none}
}

/* v109 bigger logo heart enclosing M&A */
@media (max-width:820px){
.nav .wrap{min-height:76px;padding-block:4px}
.nav .mono{margin:0 auto 0 6px!important;padding:0 14px 6px!important;font-size:1.12rem!important}
.nav .mono::before{width:86px!important;height:76px!important;top:48%!important;opacity:.75!important}
}

@media (max-width:820px){
.nav .wrap{min-height:0;padding-block:2px}
.nav .mono{height:78px!important;display:inline-flex!important;align-items:center;padding:0 14px 8px!important}
.nav .mono::before{top:50%!important;width:88px!important;height:78px!important}
}

/* v110 hero: Save the date(s), bigger wedding dates */
.hero h1.std{font-size:clamp(3rem,9vw,6.4rem);line-height:1.05;padding-inline:.15em}
.hero .dates{display:grid;gap:6px;justify-items:center}
.hero .dates span{font:500 clamp(1.05rem,2.4vw,1.5rem)/1.3 var(--sans)!important;letter-spacing:.14em}
.sec-head h2{padding-inline:.15em}

/* RSVP call to action under the personal note */
.note-cta{text-align:center;margin:26px 0 6px;position:relative;z-index:3}
.note-cta .btn{background:#c23a6b;border-color:#c23a6b;color:#fff;padding:14px 34px;box-shadow:0 4px 14px rgba(194,58,107,.3)}

/* Code just accepted: show the landing text finished, then the heart opens straight away */
.gate.done *,.gate.done *::before,.gate.done *::after{animation-duration:0s!important;animation-delay:0s!important;transition:none!important}

/* Active tab squiggle drawn as a line (a text stroke would erase a text-decoration) */
.nav .links a[aria-current="page"]{text-decoration:none;position:relative}
.nav .links a[aria-current="page"]::after{content:"";position:absolute;left:0;right:0;bottom:4px;height:5px;background:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='5' viewBox='0 0 12 5'%3E%3Cpath d='M0 2.5Q3 0 6 2.5T12 2.5' fill='none' stroke='%23c23a6b' stroke-width='1'/%3E%3C/svg%3E") repeat-x left center}

/* Scroll steadiness: the glow no longer moves with scroll (it repainted the textured section every frame), and polaroids that drift get their own layer */
.pol{will-change:translate}
.mcard .nav2{justify-content:center}

/* Uploaded photos/videos */
.scene .sphoto{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;display:block}
.hvid{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;object-position:58% top}
@media (max-width:640px){.hvid{object-position:47% top}}
