:root{--ink:#1b1630;--muted:#6b6785;--bg:#fbf8f3;--panel:#ffffff;--line:#e8e2d6;--brand:#6a2bd9;--brand2:#ff5fa2;--gold:#d9ad55;--radius:18px}
@media (prefers-color-scheme:dark){:root:not([data-force-light]){--ink:#f3eefc;--muted:#a9a3c4;--bg:#0f0c1c;--panel:#181430;--line:#2b2650}}
*{box-sizing:border-box}
html{scroll-behavior:smooth}
[hidden]{display:none!important}
.rsvp-s{grid-column:1/-1;font:14px system-ui;min-height:1em}
.rsvp-s a{color:inherit;font-weight:600}
.badge{display:inline-block;font:600 12px system-ui;padding:3px 10px;border-radius:99px;background:var(--line);color:var(--ink);text-transform:uppercase;letter-spacing:.06em}
.badge.paid{background:var(--brand);color:#fff}
table.rs{width:100%;border-collapse:collapse;font-size:15px}
table.rs th,table.rs td{text-align:left;padding:8px 6px;border-bottom:1px solid var(--line)}
.tot{display:grid;grid-template-columns:repeat(auto-fit,minmax(110px,1fr));gap:10px;margin-bottom:14px}
.tot div{background:var(--bg);border:1px solid var(--line);border-radius:12px;padding:10px;text-align:center;color:var(--muted);font-size:13px}
.tot b{display:block;font:700 26px Georgia,serif;color:var(--ink)}
.msgbox{border-radius:12px;padding:10px 14px;margin:10px 0;background:var(--bg);border:1px solid var(--line)}
.msgbox.err{border-color:#d33;color:#d33}
body{margin:0;font:16px/1.55 system-ui,-apple-system,"Segoe UI",Roboto,sans-serif;background:var(--bg);color:var(--ink)}
a{color:var(--brand)}
.wrap{max-width:1120px;margin:0 auto;padding:0 16px}
h1,h2,h3{font-family:Georgia,"Times New Roman",serif;line-height:1.15;margin:0 0 .5em}
nav{position:sticky;top:0;z-index:20;background:color-mix(in srgb,var(--bg) 88%,transparent);backdrop-filter:blur(10px);border-bottom:1px solid var(--line)}
nav .wrap{display:flex;align-items:center;gap:18px;height:58px}
.logo{font:700 22px Georgia,serif;text-decoration:none;color:var(--ink)}
.logo b{color:var(--brand)}
nav .sp{flex:1}
nav a.l{color:var(--muted);text-decoration:none;font-size:14px;white-space:nowrap}
@media(max-width:640px){nav a.l{display:none}nav .wrap{gap:10px}}
.btn{display:inline-block;border:0;border-radius:999px;padding:12px 22px;font:600 15px system-ui;cursor:pointer;text-decoration:none;color:#fff;background:linear-gradient(135deg,var(--brand),var(--brand2))}
.btn.ghost{background:transparent;color:var(--ink);border:1px solid var(--line)}
.btn.sm{padding:8px 16px;font-size:14px}
.hero-s{padding:44px 0 20px;text-align:center}
.hero-s h1{font-size:clamp(32px,6vw,58px)}
.hero-s h1 em{font-style:normal;background:linear-gradient(135deg,var(--brand),var(--brand2));-webkit-background-clip:text;background-clip:text;color:transparent}
.hero-s p{max-width:640px;margin:0 auto 18px;color:var(--muted);font-size:18px}
.pills{display:flex;flex-wrap:wrap;gap:8px;justify-content:center;margin-top:14px}
.pills span{font-size:13px;border:1px solid var(--line);background:var(--panel);padding:5px 12px;border-radius:999px;color:var(--muted)}
/* builder */
.studio{display:grid;grid-template-columns:minmax(0,1fr) 340px;gap:28px;align-items:start;margin:26px 0 60px}
@media(max-width:860px){.studio{grid-template-columns:1fr}.phone-col{order:-1;position:static!important}}
.panel{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);padding:20px}
.panel h3{font-size:19px;margin-bottom:12px}
.row{display:grid;grid-template-columns:1fr 1fr;gap:10px}
@media(max-width:520px){.row{grid-template-columns:1fr}}
label{display:block;font-size:13px;color:var(--muted);margin:10px 0 4px}
input,select,textarea{width:100%;font:inherit;color:var(--ink);background:var(--bg);border:1px solid var(--line);border-radius:10px;padding:10px 12px}
textarea{min-height:76px;resize:vertical}
input:focus,select:focus,textarea:focus{outline:2px solid var(--brand);outline-offset:1px}
.swatches{display:flex;flex-wrap:wrap;gap:8px}
.sw{width:54px;height:54px;border-radius:14px;border:3px solid transparent;cursor:pointer;position:relative}
.sw[aria-pressed=true]{border-color:var(--ink)}
.sw span{position:absolute;bottom:-18px;left:50%;transform:translateX(-50%);font-size:10px;color:var(--muted);white-space:nowrap}
.swatches{margin-bottom:22px}
.evcard{border:1px dashed var(--line);border-radius:14px;padding:12px;margin-bottom:10px;background:var(--bg)}
.evcard .top{display:flex;gap:8px}
.evcard .x{border:0;background:transparent;color:var(--muted);cursor:pointer;font-size:20px}
.actions{display:flex;flex-wrap:wrap;gap:10px;margin-top:14px}
.linkbox{margin-top:12px;font-size:13px;word-break:break-all;background:var(--bg);border:1px solid var(--line);border-radius:10px;padding:10px;display:none}
.phone-col{position:sticky;top:76px}
.phone{width:320px;max-width:100%;height:640px;margin:0 auto;border-radius:38px;border:10px solid #111;background:#000;overflow:hidden;box-shadow:0 30px 60px -20px rgba(40,10,90,.45);position:relative}
.phone .inv{height:100%}
.replay{display:block;margin:14px auto 0}
.vidwrap{display:grid;grid-template-columns:270px minmax(0,1fr);gap:28px;align-items:center;max-width:760px;margin:0 auto}
@media(max-width:640px){.vidwrap{grid-template-columns:1fr;justify-items:center}}
#vcanvas,#fcanvas,#tcanvas{width:270px;max-width:100%;aspect-ratio:9/16;height:auto;border-radius:22px;border:6px solid #111;background:#000;box-shadow:0 24px 50px -20px rgba(40,10,90,.45)}
.vprog{height:8px;border-radius:99px;background:var(--line);overflow:hidden;margin-top:12px}
.vprog i{display:block;height:100%;width:0;background:linear-gradient(90deg,var(--brand),var(--brand2))}
.vprog[hidden],#vout[hidden]{display:none}
/* sections */
section.s{padding:56px 0;border-top:1px solid var(--line)}
section.s h2{font-size:clamp(26px,4vw,38px);text-align:center}
section.s .sub{text-align:center;color:var(--muted);max-width:620px;margin:0 auto 30px}
.grid3{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:16px}
.feat{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);padding:20px}
.feat .ic{font-size:28px}
.feat h3{font-size:18px;margin:8px 0 4px}
.feat p{margin:0;color:var(--muted);font-size:15px}
.price{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);padding:24px;text-align:center}
.price.hot{border-color:var(--brand);box-shadow:0 14px 40px -18px var(--brand)}
.price .amt{font:700 36px Georgia,serif;margin:6px 0}
.price ul{list-style:none;padding:0;margin:14px 0;text-align:left;color:var(--muted);font-size:15px}
.price li{padding:4px 0}
.price li:before{content:"✓ ";color:var(--brand);font-weight:700}
.fbadge{text-align:center;margin:0 auto 14px;max-width:520px;background:linear-gradient(135deg,var(--brand),var(--brand2));color:#fff;border-radius:999px;padding:8px 18px;font:600 14px system-ui}
s.was{color:var(--muted);font-size:.55em;font-weight:400}
.reqform{max-width:760px;margin:28px auto 0;position:relative}
.cur{display:flex;gap:6px;justify-content:center;margin-bottom:20px}
.cur button{border:1px solid var(--line);background:var(--panel);color:var(--ink);padding:6px 14px;border-radius:999px;cursor:pointer}
.cur button[aria-pressed=true]{background:var(--brand);border-color:var(--brand);color:#fff}
.note{font-size:13px;color:var(--muted);text-align:center;margin-top:14px}
footer.site{padding:30px 0 50px;text-align:center;color:var(--muted);font-size:14px;border-top:1px solid var(--line)}
.guestpage{min-height:100vh;display:flex;justify-content:center;background:#000}
.guestpage .inv{width:100%;max-width:480px;height:100vh}

/* ---------- invitation ---------- */
.inv{position:relative;overflow-y:auto;overflow-x:hidden;background:radial-gradient(120% 90% at 50% 0%,var(--bg),var(--bg2));color:var(--ink);font-family:Georgia,"Times New Roman",serif;-webkit-overflow-scrolling:touch}
.inv *{box-sizing:border-box}
.inv{scrollbar-width:thin;scrollbar-color:color-mix(in srgb,var(--accent) 70%,transparent) transparent}
.inv::-webkit-scrollbar{width:6px}.inv::-webkit-scrollbar-track{background:transparent}.inv::-webkit-scrollbar-thumb{background:color-mix(in srgb,var(--accent) 70%,transparent);border-radius:6px}
.inv button:focus-visible,.inv a:focus-visible,.inv input:focus-visible{outline:3px solid var(--accent);outline-offset:3px}
.rsvp input:focus-visible{outline-color:var(--cardInk)}
.inv-fx{position:absolute;inset:0;pointer-events:none;overflow:hidden;z-index:0}
.inv-fx i{position:absolute;bottom:-20px;color:var(--accent);opacity:0;font-style:normal;animation:rise linear infinite}
@keyframes rise{0%{transform:translateY(0) rotate(0);opacity:0}15%{opacity:.8}100%{transform:translateY(-110vh) rotate(180deg);opacity:0}}
.inv section{position:relative;z-index:1}
.seal-stage{min-height:100%;height:100%;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:26px;text-align:center;padding:24px}
.inv .seal-stage{min-height:560px}
.seal-top{letter-spacing:.2em;text-transform:uppercase;font-size:12px;color:var(--accent)}
/* Urdu: self-hosted Noto Nastaliq Urdu (SIL OFL), downloaded only when Urdu text is shown */
@font-face{font-family:"Noto Nastaliq Urdu";font-style:normal;font-weight:400;font-display:swap;src:url("vendor/fonts/noto-nastaliq-urdu-arabic-400-normal.woff2") format("woff2");unicode-range:U+0600-06FF,U+0750-077F,U+08A0-08FF,U+FB50-FDFF,U+FE70-FEFF,U+200C-200F,U+2010-2011,U+204F,U+25CC}
@font-face{font-family:"Noto Nastaliq Urdu";font-style:normal;font-weight:700;font-display:swap;src:url("vendor/fonts/noto-nastaliq-urdu-arabic-700-normal.woff2") format("woff2");unicode-range:U+0600-06FF,U+0750-077F,U+08A0-08FF,U+FB50-FDFF,U+FE70-FEFF,U+200C-200F,U+2010-2011,U+204F,U+25CC}
/* right-to-left invitations: Arabic script must not be letter-spaced or upper-cased, and Nastaliq needs tall lines */
.inv[dir=rtl]{font-family:"Noto Nastaliq Urdu",Georgia,serif}
.inv[dir=rtl] *{letter-spacing:0!important;text-transform:none!important;font-style:normal!important}
.inv[dir=rtl] .names{line-height:2.1;font-size:clamp(30px,9vw,44px)}
.inv[dir=rtl] .intro,.inv[dir=rtl] .line,.inv[dir=rtl] .msg,.inv[dir=rtl] .dear,.inv[dir=rtl] .ev-nt{line-height:2.2}
.inv[dir=rtl] .kicker,.inv[dir=rtl] .seal-top,.inv[dir=rtl] .seal-hint,.inv[dir=rtl] .cd-t,.inv[dir=rtl] .sc-t{line-height:2}
.inv[dir=rtl] .sec{line-height:2}
.inv[dir=rtl] .ev-n{line-height:1.9}
.inv[dir=rtl] .ev-d,.inv[dir=rtl] .ev-v{line-height:2}
.inv[dir=rtl] .env-card{font-size:clamp(15px,4.2vw,19px);line-height:1.9}
.inv[dir=rtl] input,.inv[dir=rtl] button,.inv[dir=rtl] .rsvp-s,.inv[dir=rtl] .priv,.inv[dir=rtl] .wm{font-family:"Noto Nastaliq Urdu","Segoe UI",Tahoma,system-ui,sans-serif;line-height:1.9}
.inv[dir=rtl] .rsvp-b button,.inv[dir=rtl] .ev-a a,.inv[dir=rtl] .ev-a button{font-size:13px}
.inv[dir=rtl] .cd-g div{font-size:12px;line-height:1.8}
.inv[dir=rtl] .sc-date em,.inv[dir=rtl] .sc-date span{line-height:1.9}
/* paper grain + envelope + wax seal */
.inv{--grain:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='180' height='180'><filter id='n'><feTurbulence type='fractalNoise' baseFrequency='.85' numOctaves='2' stitchTiles='stitch'/><feColorMatrix values='0 0 0 0 0  0 0 0 0 0  0 0 0 0 0  0 0 0 .09 0'/></filter><rect width='100%' height='100%' filter='url(%23n)'/></svg>")}
.env{position:relative;width:min(300px,82%);aspect-ratio:3/2;perspective:900px;filter:drop-shadow(0 24px 26px rgba(0,0,0,.5));margin-top:34px}
.env::before{content:"";position:absolute;inset:0;border-radius:8px;background:color-mix(in srgb,var(--card) 76%,#000);z-index:0}
.env-card{position:absolute;left:7%;right:7%;top:14%;bottom:8%;z-index:1;border-radius:6px;background:var(--card);background-image:var(--grain);color:var(--cardInk);display:flex;align-items:center;justify-content:center;text-align:center;font:700 clamp(17px,5vw,22px) Georgia,serif;transition:transform .85s cubic-bezier(.3,.75,.2,1);box-shadow:0 0 0 1px rgba(0,0,0,.1),inset 0 0 0 4px var(--card),inset 0 0 0 5px color-mix(in srgb,var(--cardInk) 30%,transparent)}
.env-card span{padding:0 18px;line-height:1.2}
.env-front{position:absolute;inset:0;z-index:2;border-radius:8px;background:color-mix(in srgb,var(--card) 95%,#000);background-image:var(--grain);clip-path:polygon(0 0,50% 58%,100% 0,100% 100%,0 100%)}
.env-flap{position:absolute;left:0;right:0;top:0;height:58%;z-index:3;transform-origin:50% 0;background:color-mix(in srgb,var(--card) 88%,#000);background-image:var(--grain);clip-path:polygon(0 0,100% 0,50% 100%);transition:transform .75s ease-in-out,filter .75s}
.seal{position:absolute;left:50%;top:58%;width:84px;height:84px;margin:-42px 0 0 -42px;padding:0;border:0;background:none;cursor:pointer;z-index:4;filter:drop-shadow(0 7px 6px rgba(0,0,0,.45));animation:pulse 2.4s ease-in-out infinite}
.seal:hover{filter:drop-shadow(0 7px 6px rgba(0,0,0,.45)) brightness(1.08)}
.seal .half{position:absolute;inset:0;width:100%;height:100%;transition:transform .8s cubic-bezier(.45,0,.9,.4),opacity .8s;transform-origin:50% 50%}
.seal .half.l{clip-path:polygon(0 0,54% 0,46% 22%,55% 40%,45% 62%,54% 80%,47% 100%,0 100%)}
.seal .half.r{clip-path:polygon(54% 0,100% 0,100% 100%,47% 100%,54% 80%,45% 62%,55% 40%,46% 22%)}
.breaking .seal{animation:none;pointer-events:none}
.breaking .seal .half.l{transform:translate(-34px,120px) rotate(-34deg);opacity:0}
.breaking .seal .half.r{transform:translate(32px,130px) rotate(38deg);opacity:0}
.flap .env-flap,.slide .env-flap{transform:rotateX(180deg);filter:brightness(.82);z-index:0}
.slide .env-card{transform:translateY(-68%)}
.chk{display:flex!important;align-items:center;gap:8px;font-size:14px;color:var(--ink)!important;margin:10px 0 0}
.chk input{width:auto}
.evl{display:flex;justify-content:space-between;align-items:center;gap:10px;padding:6px 0;border-bottom:1px solid var(--line);font-size:14px}
.evl span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.scratch{text-align:center;margin:18px 0}
.sc-t{font-size:13px;letter-spacing:.08em;opacity:.9;margin-bottom:8px;text-transform:uppercase}
.sc-box{position:relative;width:min(280px,86%);height:150px;margin:0 auto;border-radius:18px;overflow:hidden;background:var(--card);background-image:var(--grain);color:var(--cardInk);box-shadow:inset 0 0 0 5px var(--card),inset 0 0 0 6px color-mix(in srgb,var(--cardInk) 28%,transparent),0 10px 24px -14px rgba(0,0,0,.6);display:flex;align-items:center;justify-content:center}
.sc-date{line-height:1.05}
.sc-date b{display:block;font:700 56px "Times New Roman",Times,"Noto Serif",serif}
.sc-date span{display:block;font-size:15px;letter-spacing:.14em;text-transform:uppercase}
.sc-date em{display:block;font-size:14px;opacity:.8;margin-top:3px}
.sc-cv{position:absolute;inset:0;width:100%;height:100%;touch-action:none;cursor:grab;transition:opacity .7s}
.sc-cv.gone{opacity:0;pointer-events:none}
.sc-skip{margin-top:8px;background:none;border:0;color:var(--ink);opacity:.75;font:13px system-ui;text-decoration:underline;cursor:pointer}
.music-btn{position:sticky;top:10px;z-index:6;display:block;margin:0 0 -34px;margin-inline-start:auto;width:36px;height:36px;border-radius:50%;border:1px solid color-mix(in srgb,var(--accent) 70%,transparent);background:color-mix(in srgb,var(--bg2) 70%,transparent);color:var(--accent);font-size:18px;cursor:pointer;backdrop-filter:blur(4px)}
.music-btn:not(.on){opacity:.65;text-decoration:line-through}
.ev-nt{font-size:13px;margin-top:8px;padding-top:8px;border-top:1px dashed color-mix(in srgb,var(--cardInk) 30%,transparent);opacity:.85;font-style:italic}
.orn{display:flex;align-items:center;justify-content:center;gap:10px;color:var(--accent);margin:2px 0 10px}
.orn i{display:block;height:1px;width:64px;background:linear-gradient(90deg,transparent,var(--accent))}
.orn i:last-child{background:linear-gradient(270deg,transparent,var(--accent))}
.orn b{font-size:13px}
@keyframes pulse{50%{transform:scale(1.07)}}
.seal-hint{font-size:14px;opacity:.85}
.seal-stage.breaking .seal-top,.seal-stage.breaking .seal-hint{opacity:0;transition:opacity .4s}
.seal-stage.slide{animation:stageout .45s ease 1.35s forwards}
@keyframes stageout{to{opacity:0}}
.card-stage{padding:30px 18px 24px}
.card-stage[hidden],.seal-stage[hidden]{display:none}
.rv{opacity:0;animation:fadeup .8s ease forwards}
@keyframes fadeup{from{opacity:0;transform:translateY(18px)}to{opacity:1;transform:none}}
.hero{text-align:center;padding:26px 6px 10px;border:1px solid color-mix(in srgb,var(--accent) 55%,transparent);border-radius:22px;background:color-mix(in srgb,var(--bg2) 55%,transparent);margin-bottom:18px}
.pgrid{display:grid;grid-template-columns:repeat(4,1fr);gap:8px}
@media(max-width:520px){.pgrid{grid-template-columns:repeat(3,1fr)}}
.pslot{position:relative;aspect-ratio:4/5;border:1.5px dashed var(--line);border-radius:12px;display:flex;align-items:center;justify-content:center;cursor:pointer;overflow:hidden;background:var(--bg);color:var(--muted)}
.pslot.has{border-style:solid}
.pslot img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.pslot .plus{font-size:28px}
.pslot em{position:absolute;left:0;right:0;bottom:0;font:11px system-ui;text-align:center;background:color-mix(in srgb,var(--bg) 80%,transparent);padding:2px 0;font-style:normal;color:var(--ink)}
.pslot .x{position:absolute;top:4px;right:4px;width:24px;height:24px;border-radius:50%;border:0;background:rgba(0,0,0,.65);color:#fff;cursor:pointer;line-height:1;font-size:16px}
.legal{max-width:760px;padding-top:30px;padding-bottom:60px}
.legal h1{font-size:clamp(28px,5vw,40px)}
.legal h2{font-size:22px;margin:30px 0 8px}
.legal p,.legal li{color:var(--ink);line-height:1.65}
.legal ul{padding-left:22px}
.legal .meta{color:var(--muted);font-size:14px}
.legal .box{background:var(--panel);border:1px solid var(--line);border-radius:14px;padding:14px 18px;margin:14px 0}
.legal dl{display:grid;grid-template-columns:150px 1fr;gap:8px 16px}
.legal dt{color:var(--muted)}.legal dd{margin:0}
@media(max-width:560px){.legal dl{grid-template-columns:1fr}}
.draft{background:#b3261e;color:#fff;padding:10px 16px;text-align:center;font:14px system-ui}
.draft code{background:rgba(255,255,255,.2);padding:1px 6px;border-radius:6px}
footer.site a{color:var(--muted)}
.cover{width:min(230px,70%);aspect-ratio:4/5;margin:0 auto 16px;border-radius:999px 999px 22px 22px;overflow:hidden;border:3px solid var(--accent);box-shadow:0 14px 30px -12px rgba(0,0,0,.6)}
.cover img{width:100%;height:100%;object-fit:cover;display:block}
.gal{display:grid;gap:10px}
.gal.g1{grid-template-columns:1fr}.gal.g2,.gal.g4{grid-template-columns:1fr 1fr}.gal.g3{grid-template-columns:1fr 1fr}.gal.g3 img:first-child{grid-column:1/-1}
.gal img{width:100%;aspect-ratio:1/1;object-fit:cover;display:block;border-radius:16px;border:2px solid color-mix(in srgb,var(--accent) 60%,transparent)}
.gal.g1 img,.gal.g3 img:first-child{aspect-ratio:4/3}
.dear{font-size:24px;font-style:italic;margin-bottom:10px;word-break:break-word}
.kicker{color:var(--accent);letter-spacing:.14em;text-transform:uppercase;font-size:12px;margin-bottom:8px}
.intro{font-style:italic;opacity:.9;font-size:15px}
.names{font-size:clamp(34px,11vw,52px);color:var(--accent);margin:10px 8px;word-break:break-word;
  background:linear-gradient(110deg,color-mix(in srgb,var(--accent) 58%,#000) 0%,var(--accent) 26%,color-mix(in srgb,var(--accent) 50%,#fff) 46%,var(--accent) 64%,color-mix(in srgb,var(--accent) 58%,#000) 100%);background-size:240% 100%;
  -webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent;animation:fadeup .8s ease forwards,foil 7s ease-in-out infinite alternate}
@keyframes foil{from{background-position:0 0}to{background-position:100% 0}}
.line{font-style:italic;font-size:15px;opacity:.9}
.msg{font-size:15px;opacity:.92;margin:16px 14px 14px}
.cd{text-align:center;margin:18px 0}
.cd-t{font-size:13px;letter-spacing:.08em;opacity:.85;margin-bottom:8px}
.cd-g{display:grid;grid-template-columns:repeat(4,1fr);gap:8px}
.cd-g div{background:var(--card);background-image:var(--grain);box-shadow:0 8px 16px -10px rgba(0,0,0,.6);color:var(--cardInk);border-radius:14px;padding:10px 4px;font-size:11px;text-transform:uppercase;letter-spacing:.08em}
.cd-g b{display:block;font:700 26px "Times New Roman",Times,"Noto Serif",serif;letter-spacing:0}
.sec{text-align:center;font-size:24px;color:var(--accent);margin:26px 0 12px}
.ev{background:var(--card);background-image:var(--grain);color:var(--cardInk);border-radius:18px;padding:18px 16px;margin-bottom:12px;text-align:center;box-shadow:inset 0 0 0 5px var(--card),inset 0 0 0 6px color-mix(in srgb,var(--cardInk) 28%,transparent),0 10px 24px -14px rgba(0,0,0,.6)}
.ev-n{font:700 21px Georgia,serif}
.ev-d{font-size:14px;margin-top:4px;opacity:.85}
.ev-z{font-size:12.5px;margin-top:2px;opacity:.7}
.ev-v{font-size:14px;margin-top:4px;opacity:.85}
.ev-a{display:flex;gap:8px;justify-content:center;flex-wrap:wrap;margin-top:12px}
.ev-a a,.ev-a button{font:600 13px system-ui;color:var(--cardInk);border:1px solid color-mix(in srgb,var(--cardInk) 35%,transparent);background:transparent;border-radius:999px;padding:7px 14px;cursor:pointer;text-decoration:none}
.rsvp{background:var(--card);background-image:var(--grain);color:var(--cardInk);border-radius:18px;padding:16px;display:grid;grid-template-columns:1fr 104px;gap:10px;align-items:end}
.rsvp input{background:#fff;color:#222;border:1px solid #ddd;border-radius:10px;padding:11px;font:15px system-ui;width:100%}
.rsvp-b{grid-column:1/-1;display:grid;gap:8px}
.rsvp-b button{border:0;border-radius:12px;padding:12px;font:600 15px system-ui;cursor:pointer;background:var(--cardInk);color:var(--card)}
.rsvp-b button.alt{background:transparent;color:var(--cardInk);border:1px solid color-mix(in srgb,var(--cardInk) 40%,transparent)}
.rsvp .priv{grid-column:1/-1;font:12px system-ui;opacity:.75}
.rsvp .priv a{color:inherit}
.rsvp .warn{grid-column:1/-1;font-size:12px;opacity:.7}
.share{text-align:center;margin:18px 0}
.share button{font:600 14px system-ui;background:transparent;color:var(--ink);border:1px solid color-mix(in srgb,var(--ink) 40%,transparent);border-radius:999px;padding:10px 20px;cursor:pointer}
.wm{text-align:center;font:12px system-ui;opacity:.7;padding:8px 0 4px}
.wm a{color:var(--accent)}
@media(prefers-reduced-motion:reduce){.rv,.seal,.inv-fx i{animation:none!important;opacity:1}.inv-fx{display:none}}
.inv[dir=rtl] .cd-g b{margin-bottom:6px}
.custcol{margin:-4px 0 16px}
.custcol input[type=color]{height:44px;padding:3px;cursor:pointer}
/* guest list */
.grow{display:flex;justify-content:space-between;align-items:center;gap:10px;padding:10px 0;border-bottom:1px solid var(--line);flex-wrap:wrap}
.gmain{min-width:0;flex:1 1 220px;line-height:1.5}
.gacts{display:flex;gap:6px;flex-wrap:wrap}
.gtag{background:var(--line);border-radius:99px;padding:1px 8px;color:var(--muted)}
.gst{font-size:13px;font-weight:600}.gst-yes{color:#1b7a3d}.gst-maybe{color:#a86b00}.gst-no{color:#b3261e}.gst-none{color:var(--muted)}
.gwarn{color:#b3261e}.ghist{color:var(--muted)}
.rq{background:var(--bg);border:1px solid var(--brand);border-radius:14px;padding:12px 14px;margin-bottom:12px}
.btn:disabled,.btn[disabled]{opacity:.4;cursor:not-allowed;filter:grayscale(.4)}
/* live news + thank-you on the invitation */
.upd{border:2px solid var(--accent);border-radius:18px;background:color-mix(in srgb,var(--bg2) 60%,transparent);padding:12px 14px;margin:0 0 16px}
.upd[hidden]{display:none}
.upd-t{font:700 13px system-ui;letter-spacing:.06em;text-transform:uppercase;color:var(--accent);margin-bottom:6px}
.upd-i{padding:6px 0;border-top:1px solid color-mix(in srgb,var(--accent) 30%,transparent);font-size:15px;line-height:1.5}
.upd-i:first-of-type{border-top:0}.upd-i small{display:block;opacity:.7;font:12px system-ui}
.seal-news{margin-top:4px;font:600 13px system-ui;color:var(--accent);background:color-mix(in srgb,var(--bg2) 60%,transparent);border:1px solid var(--accent);border-radius:99px;padding:6px 14px}
.seal-news[hidden]{display:none}
.thank{text-align:center;background:var(--card);background-image:var(--grain);color:var(--cardInk);border-radius:18px;padding:16px 18px;margin:0 0 16px;box-shadow:inset 0 0 0 5px var(--card),inset 0 0 0 6px color-mix(in srgb,var(--cardInk) 28%,transparent),0 10px 24px -14px rgba(0,0,0,.6)}
.th-t{font:700 19px Georgia,serif;margin-bottom:6px}.thank p{margin:0;font-size:16px;line-height:1.6;white-space:pre-wrap}
.inv[dir=rtl] .upd-t{letter-spacing:0;text-transform:none}
.qrrow{display:flex;gap:18px;align-items:flex-start;flex-wrap:wrap}
.qrbox{background:#fff;border:1px solid var(--line);border-radius:14px;padding:8px;line-height:0}

/* ---------- ornament patterns ---------- */
.hero[data-or]{background-image:var(--pat);background-size:48px 48px}
.seal-stage[data-or]{background-image:var(--pat2);background-size:48px 48px}

/* ---------- openings other than the wax-seal envelope (they reuse the .breaking / .flap / .slide states) ---------- */
.op-doors::before,.op-scroll::before,.op-box::before{display:none}
.op-doors .seal{top:52%}.op-scroll .seal{top:48px}.op-box .seal{top:21%}

/* palace doors */
.op-doors{aspect-ratio:3/4;width:min(270px,74%)}
.op-doors::after{content:"";position:absolute;inset:-9px -9px 0;border-radius:50% 50% 0 0/26% 26% 0 0;background:linear-gradient(180deg,color-mix(in srgb,var(--accent) 80%,#fff),var(--accent) 40%,color-mix(in srgb,var(--accent) 55%,#000));z-index:0;box-shadow:0 0 0 2px rgba(0,0,0,.25)}
.op-doors .env-card{inset:4% 4% 2%;border-radius:50% 50% 4px 4px/16% 16% 4px 4px;z-index:1;font-size:clamp(15px,4.6vw,20px)}
.door{position:absolute;top:0;bottom:0;width:50%;z-index:3;transition:transform 1.05s cubic-bezier(.4,.1,.2,1);
  background:radial-gradient(circle,var(--accent) 0 2.3px,transparent 2.8px) 0 0/26px 26px,linear-gradient(90deg,rgba(255,255,255,.09),transparent 40%,rgba(0,0,0,.22)),linear-gradient(160deg,var(--door1),var(--door2));
  box-shadow:inset 0 0 0 5px color-mix(in srgb,var(--accent) 78%,#000),inset 0 0 0 8px rgba(0,0,0,.3),inset 0 0 0 11px color-mix(in srgb,var(--accent) 50%,transparent)}
.door.l{left:0;transform-origin:0 50%;border-radius:100% 0 0 0/24% 0 0 0}
.door.r{right:0;transform-origin:100% 50%;border-radius:0 100% 0 0/0 24% 0 0}
.flap .door.l{transform:rotateY(-112deg)}.flap .door.r{transform:rotateY(112deg)}
.op-doors.env .env-card{transition:transform 1s cubic-bezier(.3,.75,.2,1)}
.slide .op-doors .env-card{transform:scale(1.14)}

/* tied scroll */
.op-scroll{aspect-ratio:auto;width:min(290px,80%);height:350px}
.sc-rod{position:absolute;left:0;right:0;height:22px;border-radius:11px;z-index:3;background:linear-gradient(180deg,color-mix(in srgb,var(--accent) 60%,#fff),var(--accent) 45%,color-mix(in srgb,var(--accent) 50%,#000));box-shadow:0 4px 8px rgba(0,0,0,.35)}
.sc-rod.top{top:0}
.sc-paper{position:absolute;left:5%;right:5%;top:11px;height:76px;z-index:1;background:var(--grain),linear-gradient(180deg,var(--card),color-mix(in srgb,var(--card) 90%,#000));transition:height 1.15s cubic-bezier(.4,.1,.2,1);box-shadow:inset 0 0 0 1px rgba(0,0,0,.12)}
.sc-paper::before{content:"";position:absolute;inset:0;background:repeating-linear-gradient(180deg,rgba(0,0,0,.24),rgba(255,255,255,.2) 20%,rgba(0,0,0,.22) 40%);transition:opacity .8s;pointer-events:none;z-index:2}
.sc-rod.bot{left:-5.6%;right:-5.6%;bottom:-11px;top:auto}
.sc-in{position:absolute;inset:0;overflow:hidden;display:flex;align-items:center;justify-content:center;text-align:center;font:700 clamp(18px,5.4vw,24px) Georgia,serif;color:var(--cardInk);opacity:0;transition:opacity .6s .55s;padding:0 12px}
.flap .sc-paper,.slide .sc-paper{height:292px}
.flap .sc-paper::before,.slide .sc-paper::before{opacity:0}
.flap .sc-in,.slide .sc-in{opacity:1}
.sc-ribbon{position:absolute;left:50%;top:0;width:34px;margin-left:-17px;height:98px;z-index:4;background:linear-gradient(90deg,color-mix(in srgb,var(--accent) 65%,#000),var(--accent),color-mix(in srgb,var(--accent) 65%,#000));box-shadow:0 3px 8px rgba(0,0,0,.35);transition:transform .7s,opacity .5s}
.breaking .sc-ribbon{opacity:0;transform:translateY(26px)}

/* ribbon gift box */
.op-box{aspect-ratio:auto;width:min(300px,82%);height:250px}
.bx-body{position:absolute;left:4%;right:4%;bottom:0;height:62%;z-index:3;border-radius:6px 6px 10px 10px;background:linear-gradient(180deg,color-mix(in srgb,var(--card) 90%,#000),color-mix(in srgb,var(--card) 70%,#000));background-image:var(--grain),linear-gradient(180deg,color-mix(in srgb,var(--card) 90%,#000),color-mix(in srgb,var(--card) 70%,#000));box-shadow:0 16px 30px rgba(0,0,0,.35)}
.bx-lid{position:absolute;left:0;right:0;top:20%;height:25%;z-index:4;border-radius:8px;background:linear-gradient(180deg,var(--card),color-mix(in srgb,var(--card) 80%,#000));box-shadow:0 6px 12px rgba(0,0,0,.3);transform-origin:20% 100%;transition:transform .95s cubic-bezier(.4,.1,.2,1),opacity .5s .65s}
.bx-rib{position:absolute;z-index:5;background:linear-gradient(90deg,color-mix(in srgb,var(--accent) 65%,#000),var(--accent),color-mix(in srgb,var(--accent) 65%,#000));transition:opacity .4s}
.bx-rib.v{left:50%;width:30px;margin-left:-15px;top:20%;bottom:0}
.bx-rib.h{left:4%;right:4%;height:24px;top:62%;background:linear-gradient(180deg,color-mix(in srgb,var(--accent) 65%,#000),var(--accent),color-mix(in srgb,var(--accent) 65%,#000))}
.bx-bow{position:absolute;left:50%;top:15%;width:0;height:0;z-index:6;transition:opacity .4s}
.bx-bow i{position:absolute;top:-12px;width:64px;height:40px;border-radius:50%;border:12px solid var(--accent)}
.bx-bow i:first-child{left:-72px;transform:rotate(-24deg)}.bx-bow i:last-child{left:8px;transform:rotate(24deg)}
.op-box .env-card{left:13%;right:13%;top:34%;bottom:16%;z-index:2}
.breaking .bx-rib,.breaking .bx-bow{opacity:0}
.flap .bx-lid{transform:translate(10%,-78%) rotate(-12deg);opacity:0}
.slide .op-box .env-card{transform:translateY(-78%)}
.inv[dir=rtl] .sc-in{line-height:1.9}

/* ---------- template gallery ---------- */
.tpl{margin:6px 0 34px}
.pillbtn{font:inherit;font-size:13px;border:1px solid var(--line);background:var(--panel);padding:6px 14px;border-radius:999px;color:var(--muted);cursor:pointer}
.pillbtn[aria-selected=true]{background:var(--brand);border-color:var(--brand);color:#fff}
.tplgrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:12px}
.tplcard{background:var(--panel);border:1px solid var(--line);border-radius:16px;padding:10px;display:flex;flex-direction:column;gap:2px}
.tplcard b{font-size:16px;margin-top:6px;overflow-wrap:anywhere}.tplcard small{color:var(--brand);font-weight:600;letter-spacing:.04em;text-transform:uppercase;font-size:11px}
.tplcard p{overflow-wrap:anywhere;margin:2px 0 8px;color:var(--muted);font-size:13px;line-height:1.4;flex:1}
.tplthumb{position:relative;overflow:hidden;border-radius:10px;background:#000;pointer-events:none}
.tplscale{position:absolute;left:0;top:0;width:360px;height:628px;transform-origin:0 0}
.tplscale>div{height:100%}
@font-face{font-family:"Noto Serif Bengali";font-style:normal;font-weight:400;font-display:swap;src:url("vendor/fonts/noto-serif-bengali-bengali-400-normal.woff2") format("woff2");unicode-range:U+0951-0952,U+0964-0965,U+0980-09FE,U+1CD0,U+1CD2,U+1CD5-1CD6,U+1CD8,U+1CE1,U+1CEA,U+1CED,U+1CF2,U+1CF5-1CF7,U+200C-200D,U+20B9,U+25CC,U+A8F1}
@font-face{font-family:"Noto Serif Bengali";font-style:normal;font-weight:700;font-display:swap;src:url("vendor/fonts/noto-serif-bengali-bengali-700-normal.woff2") format("woff2");unicode-range:U+0951-0952,U+0964-0965,U+0980-09FE,U+1CD0,U+1CD2,U+1CD5-1CD6,U+1CD8,U+1CE1,U+1CEA,U+1CED,U+1CF2,U+1CF5-1CF7,U+200C-200D,U+20B9,U+25CC,U+A8F1}
@font-face{font-family:"Noto Serif Tamil";font-style:normal;font-weight:400;font-display:swap;src:url("vendor/fonts/noto-serif-tamil-tamil-400-normal.woff2") format("woff2");unicode-range:U+0964-0965,U+0B82-0BFA,U+200C-200D,U+20B9,U+25CC}
@font-face{font-family:"Noto Serif Tamil";font-style:normal;font-weight:700;font-display:swap;src:url("vendor/fonts/noto-serif-tamil-tamil-700-normal.woff2") format("woff2");unicode-range:U+0964-0965,U+0B82-0BFA,U+200C-200D,U+20B9,U+25CC}
@font-face{font-family:"Noto Naskh Arabic";font-style:normal;font-weight:400;font-display:swap;src:url("vendor/fonts/noto-naskh-arabic-arabic-400-normal.woff2") format("woff2");unicode-range:U+0600-06FF,U+0750-077F,U+0870-088E,U+0890-0891,U+0897-08E1,U+08E3-08FF,U+200C-200E,U+2010-2011,U+204F,U+2E41,U+FB50-FDFF,U+FE70-FE74,U+FE76-FEFC}
@font-face{font-family:"Noto Naskh Arabic";font-style:normal;font-weight:700;font-display:swap;src:url("vendor/fonts/noto-naskh-arabic-arabic-700-normal.woff2") format("woff2");unicode-range:U+0600-06FF,U+0750-077F,U+0870-088E,U+0890-0891,U+0897-08E1,U+08E3-08FF,U+200C-200E,U+2010-2011,U+204F,U+2E41,U+FB50-FDFF,U+FE70-FE74,U+FE76-FEFC}
/* Bengali and Tamil: letter-spacing would break joined letters; give the lines room for tall glyphs */
.inv[lang=bn]{font-family:"Noto Serif Bengali",Georgia,serif}
.inv[lang=ta]{font-family:"Noto Serif Tamil",Georgia,serif}
.inv[lang=bn] *,.inv[lang=ta] *{letter-spacing:0!important;text-transform:none!important;font-style:normal!important}
.inv[lang=bn] :is(.names,.intro,.line,.msg,.dear,.ev-n,.ev-d,.ev-v,.ev-nt,.kicker,.sec,.cd-t,.sc-t),.inv[lang=ta] :is(.names,.intro,.line,.msg,.dear,.ev-n,.ev-d,.ev-v,.ev-nt,.kicker,.sec,.cd-t,.sc-t){line-height:1.7}
.inv[lang=bn] input,.inv[lang=bn] button,.inv[lang=bn] .wm{font-family:"Noto Serif Bengali","Segoe UI",system-ui,sans-serif}
.inv[lang=ta] input,.inv[lang=ta] button,.inv[lang=ta] .wm{font-family:"Noto Serif Tamil","Segoe UI",system-ui,sans-serif}
/* Arabic uses Naskh (normal line height), unlike Urdu's tall Nastaliq */
.inv[dir=rtl][lang=ar]{font-family:"Noto Naskh Arabic",Georgia,serif}
.inv[dir=rtl][lang=ar] *{line-height:1.65!important}
.inv[dir=rtl][lang=ar] .names{font-size:clamp(30px,9vw,44px)}
.inv[dir=rtl][lang=ar] input,.inv[dir=rtl][lang=ar] button,.inv[dir=rtl][lang=ar] .rsvp-s,.inv[dir=rtl][lang=ar] .priv,.inv[dir=rtl][lang=ar] .wm{font-family:"Noto Naskh Arabic","Segoe UI",Tahoma,system-ui,sans-serif}
@font-face{font-family:"Noto Serif Gujarati";font-style:normal;font-weight:400;font-display:swap;src:url("vendor/fonts/noto-serif-gujarati-gujarati-400-normal.woff2") format("woff2");unicode-range:U+0951-0952,U+0964-0965,U+0A80-0AFF,U+200C-200D,U+20B9,U+25CC,U+A830-A839}
@font-face{font-family:"Noto Serif Gujarati";font-style:normal;font-weight:700;font-display:swap;src:url("vendor/fonts/noto-serif-gujarati-gujarati-700-normal.woff2") format("woff2");unicode-range:U+0951-0952,U+0964-0965,U+0A80-0AFF,U+200C-200D,U+20B9,U+25CC,U+A830-A839}
@font-face{font-family:"Noto Serif Telugu";font-style:normal;font-weight:400;font-display:swap;src:url("vendor/fonts/noto-serif-telugu-telugu-400-normal.woff2") format("woff2");unicode-range:U+0951-0952,U+0964-0965,U+0C00-0C7F,U+1CDA,U+1CF2,U+200C-200D,U+25CC}
@font-face{font-family:"Noto Serif Telugu";font-style:normal;font-weight:700;font-display:swap;src:url("vendor/fonts/noto-serif-telugu-telugu-700-normal.woff2") format("woff2");unicode-range:U+0951-0952,U+0964-0965,U+0C00-0C7F,U+1CDA,U+1CF2,U+200C-200D,U+25CC}
@font-face{font-family:"Noto Serif Kannada";font-style:normal;font-weight:400;font-display:swap;src:url("vendor/fonts/noto-serif-kannada-kannada-400-normal.woff2") format("woff2");unicode-range:U+0951-0952,U+0964-0965,U+0C80-0CF3,U+1CD0,U+1CD2-1CD3,U+1CDA,U+1CF2,U+1CF4,U+200C-200D,U+20B9,U+25CC,U+A830-A835}
@font-face{font-family:"Noto Serif Kannada";font-style:normal;font-weight:700;font-display:swap;src:url("vendor/fonts/noto-serif-kannada-kannada-700-normal.woff2") format("woff2");unicode-range:U+0951-0952,U+0964-0965,U+0C80-0CF3,U+1CD0,U+1CD2-1CD3,U+1CDA,U+1CF2,U+1CF4,U+200C-200D,U+20B9,U+25CC,U+A830-A835}
@font-face{font-family:"Noto Serif Malayalam";font-style:normal;font-weight:400;font-display:swap;src:url("vendor/fonts/noto-serif-malayalam-malayalam-400-normal.woff2") format("woff2");unicode-range:U+0307,U+0323,U+0951-0952,U+0964-0965,U+0D00-0D7F,U+1CDA,U+1CF2,U+200C-200D,U+20B9,U+25CC,U+A830-A832}
@font-face{font-family:"Noto Serif Malayalam";font-style:normal;font-weight:700;font-display:swap;src:url("vendor/fonts/noto-serif-malayalam-malayalam-700-normal.woff2") format("woff2");unicode-range:U+0307,U+0323,U+0951-0952,U+0964-0965,U+0D00-0D7F,U+1CDA,U+1CF2,U+200C-200D,U+20B9,U+25CC,U+A830-A832}
@font-face{font-family:"Noto Serif Gurmukhi";font-style:normal;font-weight:400;font-display:swap;src:url("vendor/fonts/noto-serif-gurmukhi-gurmukhi-400-normal.woff2") format("woff2");unicode-range:U+0951-0952,U+0964-0965,U+0A01-0A76,U+200C-200D,U+20B9,U+25CC,U+262C,U+A830-A839}
@font-face{font-family:"Noto Serif Gurmukhi";font-style:normal;font-weight:700;font-display:swap;src:url("vendor/fonts/noto-serif-gurmukhi-gurmukhi-700-normal.woff2") format("woff2");unicode-range:U+0951-0952,U+0964-0965,U+0A01-0A76,U+200C-200D,U+20B9,U+25CC,U+262C,U+A830-A839}
@font-face{font-family:"Noto Serif Devanagari";font-style:normal;font-weight:400;font-display:swap;src:url("vendor/fonts/noto-serif-devanagari-devanagari-400-normal.woff2") format("woff2");unicode-range:U+0900-097F,U+1CD0-1CF9,U+200C-200D,U+20A8,U+20B9,U+20F0,U+25CC,U+A830-A839,U+A8E0-A8FF,U+11B00-11B09}
@font-face{font-family:"Noto Serif Devanagari";font-style:normal;font-weight:700;font-display:swap;src:url("vendor/fonts/noto-serif-devanagari-devanagari-700-normal.woff2") format("woff2");unicode-range:U+0900-097F,U+1CD0-1CF9,U+200C-200D,U+20A8,U+20B9,U+20F0,U+25CC,U+A830-A839,U+A8E0-A8FF,U+11B00-11B09}
/* Gujarati, Telugu, Kannada, Malayalam, Punjabi, and Marathi/Hindi: own font, no letter-spacing (it breaks joined letters), room for tall glyphs */
.inv[lang=gu]{font-family:"Noto Serif Gujarati",Georgia,serif}
.inv[lang=te]{font-family:"Noto Serif Telugu",Georgia,serif}
.inv[lang=kn]{font-family:"Noto Serif Kannada",Georgia,serif}
.inv[lang=ml]{font-family:"Noto Serif Malayalam",Georgia,serif}
.inv[lang=pa]{font-family:"Noto Serif Gurmukhi",Georgia,serif}
.inv[lang=mr]{font-family:"Noto Serif Devanagari",Georgia,serif}
.inv[lang=hi]{font-family:"Noto Serif Devanagari",Georgia,serif}
.inv[lang=gu] *,.inv[lang=te] *,.inv[lang=kn] *,.inv[lang=ml] *,.inv[lang=pa] *,.inv[lang=mr] *,.inv[lang=hi] *{letter-spacing:0!important;text-transform:none!important;font-style:normal!important}
.inv[lang=gu] :is(.names,.intro,.line,.msg,.dear,.ev-n,.ev-d,.ev-v,.ev-nt,.kicker,.sec,.cd-t,.sc-t),.inv[lang=te] :is(.names,.intro,.line,.msg,.dear,.ev-n,.ev-d,.ev-v,.ev-nt,.kicker,.sec,.cd-t,.sc-t),.inv[lang=kn] :is(.names,.intro,.line,.msg,.dear,.ev-n,.ev-d,.ev-v,.ev-nt,.kicker,.sec,.cd-t,.sc-t),.inv[lang=ml] :is(.names,.intro,.line,.msg,.dear,.ev-n,.ev-d,.ev-v,.ev-nt,.kicker,.sec,.cd-t,.sc-t),.inv[lang=pa] :is(.names,.intro,.line,.msg,.dear,.ev-n,.ev-d,.ev-v,.ev-nt,.kicker,.sec,.cd-t,.sc-t),.inv[lang=mr] :is(.names,.intro,.line,.msg,.dear,.ev-n,.ev-d,.ev-v,.ev-nt,.kicker,.sec,.cd-t,.sc-t),.inv[lang=hi] :is(.names,.intro,.line,.msg,.dear,.ev-n,.ev-d,.ev-v,.ev-nt,.kicker,.sec,.cd-t,.sc-t){line-height:1.7}
.inv[lang=gu] input,.inv[lang=gu] button,.inv[lang=gu] .wm{font-family:"Noto Serif Gujarati","Segoe UI",system-ui,sans-serif}
.inv[lang=te] input,.inv[lang=te] button,.inv[lang=te] .wm{font-family:"Noto Serif Telugu","Segoe UI",system-ui,sans-serif}
.inv[lang=kn] input,.inv[lang=kn] button,.inv[lang=kn] .wm{font-family:"Noto Serif Kannada","Segoe UI",system-ui,sans-serif}
.inv[lang=ml] input,.inv[lang=ml] button,.inv[lang=ml] .wm{font-family:"Noto Serif Malayalam","Segoe UI",system-ui,sans-serif}
.inv[lang=pa] input,.inv[lang=pa] button,.inv[lang=pa] .wm{font-family:"Noto Serif Gurmukhi","Segoe UI",system-ui,sans-serif}
.inv[lang=mr] input,.inv[lang=mr] button,.inv[lang=mr] .wm{font-family:"Noto Serif Devanagari","Segoe UI",system-ui,sans-serif}
.inv[lang=hi] input,.inv[lang=hi] button,.inv[lang=hi] .wm{font-family:"Noto Serif Devanagari","Segoe UI",system-ui,sans-serif}
/* gallery text in the invitation language */
.tplcard [lang=hi]{font-family:"Noto Serif Devanagari",Georgia,serif;line-height:1.7}
.tplcard [lang=mr]{font-family:"Noto Serif Devanagari",Georgia,serif;line-height:1.7}
.tplcard [lang=ur]{font-family:"Noto Nastaliq Urdu",Georgia,serif;line-height:1.7}
.tplcard [lang=ar]{font-family:"Noto Naskh Arabic",Georgia,serif;line-height:1.7}
.tplcard [lang=bn]{font-family:"Noto Serif Bengali",Georgia,serif;line-height:1.7}
.tplcard [lang=ta]{font-family:"Noto Serif Tamil",Georgia,serif;line-height:1.7}
.tplcard [lang=gu]{font-family:"Noto Serif Gujarati",Georgia,serif;line-height:1.7}
.tplcard [lang=te]{font-family:"Noto Serif Telugu",Georgia,serif;line-height:1.7}
.tplcard [lang=kn]{font-family:"Noto Serif Kannada",Georgia,serif;line-height:1.7}
.tplcard [lang=ml]{font-family:"Noto Serif Malayalam",Georgia,serif;line-height:1.7}
.tplcard [lang=pa]{font-family:"Noto Serif Gurmukhi",Georgia,serif;line-height:1.7}

/* ---- UX pass ---- */
main [id]{scroll-margin-top:72px}
.hero-cta{display:flex;gap:10px;justify-content:center;flex-wrap:wrap;margin:6px 0 10px}
.hero-s .pills span{border:0;background:transparent;padding:2px 4px}
.fab{position:fixed;left:50%;transform:translateX(-50%);bottom:18px;z-index:40;border:0;border-radius:999px;padding:12px 20px;font:600 15px system-ui;color:#fff;background:linear-gradient(135deg,var(--brand),var(--brand2));box-shadow:0 10px 28px -8px rgba(40,10,90,.55);cursor:pointer}
.fab[hidden]{display:none}
@media(min-width:861px){.fab{display:none}}
#tplnote{margin:0 0 14px}
@media(max-width:700px){
  #tplcats,#tpltr{flex-wrap:nowrap;overflow-x:auto;justify-content:flex-start;padding:2px 2px 8px;scrollbar-width:thin}
  #tplcats .pillbtn,#tpltr .pillbtn,#tpltr small{flex:none;white-space:nowrap}
}
.rsvp .f{display:flex;flex-direction:column;gap:4px;min-width:0;font:600 12px system-ui}
.rsvp .f span{opacity:.85}
.jump{display:flex;flex-wrap:wrap;gap:8px;margin:12px 0 0}
.jump a{font-size:13px;font-weight:600;text-decoration:none;color:var(--brand);border:1px solid var(--line);background:var(--bg);padding:5px 12px;border-radius:999px}
/* keyboard focus: one clear ring everywhere, plus a skip link */
a:focus-visible,button:focus-visible,summary:focus-visible,select:focus-visible,[tabindex]:focus-visible{outline:3px solid var(--brand);outline-offset:2px}
.skip{position:absolute;left:12px;top:-60px;z-index:100;background:var(--brand);color:#fff;padding:10px 16px;border-radius:10px;font-weight:600;text-decoration:none}
.skip:focus{top:10px}
