/* Invite page: one phone-width column that is the invitation itself; template colours come from JS (--p paper, --i ink, --a accent, --s soft). */
@font-face{font-family:"Alexandria";src:url("assets/alexandria-ar.woff2") format("woff2");font-weight:100 900;font-display:swap;unicode-range:U+0600-06FF,U+0750-077F,U+08A0-08FF,U+FB50-FDFF,U+FE70-FEFF,U+200C-200E,U+2010-2011,U+204F,U+2E41}
@font-face{font-family:"Alexandria";src:url("assets/alexandria-latin.woff2") format("woff2");font-weight:100 900;font-display:swap;unicode-range:U+0000-00FF,U+2000-206F,U+20AC,U+2122}
@font-face{font-family:"Readex Pro";src:url("assets/readex-ar.woff2") format("woff2");font-weight:160 700;font-display:swap;unicode-range:U+0600-06FF,U+0750-077F,U+08A0-08FF,U+FB50-FDFF,U+FE70-FEFF,U+200C-200E,U+2010-2011,U+204F,U+2E41}
@font-face{font-family:"Readex Pro";src:url("assets/readex-latin.woff2") format("woff2");font-weight:160 700;font-display:swap;unicode-range:U+0000-00FF,U+2000-206F,U+20AC,U+2122}

:root{
  --p:#fbf6ee;--i:#3d3121;--a:#a8834a;--s:#f2e8d8;
  --outside:#1b1626;
  --col:460px;
  --f-display:"Alexandria","Readex Pro",Tahoma,sans-serif;
  --f-body:"Readex Pro",Tahoma,"Segoe UI",sans-serif;
  --gl:max(24px,env(safe-area-inset-left,0px));--gr:max(24px,env(safe-area-inset-right,0px));
  color-scheme:light;
}
:root.dark{color-scheme:dark}
*,*::before,*::after{box-sizing:border-box}
html{-webkit-text-size-adjust:100%}
body{margin:0;background:var(--outside);color:var(--i);font-family:var(--f-body);font-size:17px;line-height:1.9;-webkit-font-smoothing:antialiased}
body.locked{overflow:hidden}
h1,h2,p{margin:0}
a{color:inherit;text-decoration:none}
button,input,textarea{font:inherit;color:inherit}
button{cursor:pointer}
img{max-width:100%;height:auto;display:block}
:focus-visible{outline:3px solid var(--a);outline-offset:3px;border-radius:6px}

.app{position:relative;max-width:var(--col);margin-inline:auto;min-height:100svh;background:var(--p);overflow:hidden}
@media (min-width:600px){.app{box-shadow:0 0 0 1px #ffffff10,0 30px 80px #00000066}}

/* ---------- first screen ---------- */
.gate{position:fixed;top:0;bottom:0;left:50%;transform:translateX(-50%);width:min(var(--col),100%);z-index:20;background:var(--p);container-type:inline-size;transition:opacity .7s}
.gate.gone{opacity:0;pointer-events:none}
.gate-tap{position:absolute;inset:0;border:0;padding:0;background:none;width:100%}
.g-top{font-size:5cqw;letter-spacing:.01em}
.g-hint{font-size:4.4cqw;font-weight:500}

/* curtain */
.gate-curtain{background:transparent}
.curtain{position:absolute;inset:0;pointer-events:none}
.curtain .half{position:absolute;top:0;bottom:0;width:50.5%;background:url("assets/curtain.webp") 0 0/200% 100%;transition:transform 1.6s cubic-bezier(.65,0,.25,1)}
.curtain .r{right:0;background-position:100% 0;box-shadow:inset 22px 0 36px -20px #1c112a99}
.curtain .l{left:0;background-position:0 0;box-shadow:inset -22px 0 36px -20px #1c112a99}
.gate-curtain.opening .r{transform:translateX(102%)}
.gate-curtain.opening .l{transform:translateX(-102%)}
.seal-btn{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:6cqw;color:#fff4e2;text-shadow:0 1px 10px #2a1834aa;transition:opacity .4s}
.seal{display:grid;place-items:center;width:26cqw;height:26cqw;border-radius:50%;background:radial-gradient(circle at 35% 30%,#f5dfae,#c79d5a 60%,#a47c3e);color:#5a3f17;font-family:var(--f-display);font-weight:700;font-size:7.5cqw;text-shadow:none;box-shadow:0 8px 20px #2a183466,inset 0 0 0 2.4cqw #e8c98a40,inset 0 0 0 calc(2.4cqw + 1px) #fff3d566;transition:transform .25s}
.seal-btn:hover .seal{transform:scale(1.04)}
.opening .seal-btn{opacity:0}
.seal-btn .seal{animation:breathe 2.6s ease-in-out infinite}
@keyframes breathe{50%{transform:scale(1.05)}}

/* envelope */
.gate-envelope{background:radial-gradient(120% 80% at 50% 20%,#fffaf2,var(--s))}
.env-scene{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:9cqw;text-align:center;color:var(--i)}
.env{position:relative;inset:auto;width:74cqw;aspect-ratio:1.5;perspective:900px}
.env-back,.env-front,.env-flap{position:absolute;inset:0}
.env-back{background:#e3cfb2;border-radius:3px}
.env-front{background:linear-gradient(160deg,#fbf2e4,#ead8bd);clip-path:polygon(0 0,50% 52%,100% 0,100% 100%,0 100%);border-radius:3px;box-shadow:0 18px 40px -18px #59462c88;z-index:3}
.env-flap{background:linear-gradient(#efdfc6,#e2cba9);clip-path:polygon(0 0,100% 0,50% 58%);transform-origin:top;z-index:4;transition:transform .8s cubic-bezier(.5,0,.3,1),z-index 0s .4s}
.env-card{position:absolute;inset:6% 7% 10%;background:#fffdf8;border-radius:2px;display:grid;place-items:start center;padding-top:9%;z-index:2;transition:transform 1s cubic-bezier(.3,.7,.2,1) .7s;box-shadow:0 2px 6px #59462c22}
.env-card b{font-family:var(--f-display);font-size:7cqw;color:var(--i);font-weight:700}
.env .seal{position:absolute;top:46%;left:50%;width:17cqw;height:17cqw;font-size:5.4cqw;transform:translate(-50%,-50%);z-index:5;transition:opacity .3s}
.gate-envelope.opening .seal{opacity:0}
.gate-envelope.opening .env-flap{transform:rotateX(180deg);z-index:1}
.gate-envelope.opening .env-card{transform:translateY(-60%);z-index:6;transition:transform 1s cubic-bezier(.3,.7,.2,1) .7s,z-index 0s 1.15s}
.gate-envelope .g-hint{color:var(--a)}

/* cover */
.cover-btn{display:block}
.cover-btn .art{position:absolute;inset:0;height:100%;aspect-ratio:auto;transition:transform 1s cubic-bezier(.65,0,.25,1)}
.cover-hint{position:absolute;bottom:calc(10cqw + env(safe-area-inset-bottom,0px));inset-inline:0;text-align:center;color:var(--i);opacity:.75;z-index:2;animation:hint 2.4s ease-in-out infinite}
.dark .cover-hint{color:var(--i)}
@keyframes hint{50%{opacity:.4}}
.gate-cover.opening .art{transform:translateY(-100%)}
.gate-cover.opening .cover-hint{opacity:0}

/* cover art (same as gallery) */
.art{position:relative;width:100%;overflow:hidden;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;gap:7cqw;padding:16cqw 12cqw;isolation:isolate}
.art::after{content:"";position:absolute;inset:6cqw;border:1px solid currentColor;opacity:.28;border-radius:46cqw 46cqw 3cqw 3cqw;pointer-events:none}
.art .a-top,.art .a-bot{font-size:5cqw;line-height:1.6;z-index:1}
.art .a-title{font-family:var(--f-display);font-weight:700;font-size:12cqw;line-height:1.4;z-index:1;text-wrap:balance}
.art .seal{width:24cqw;height:24cqw;font-size:7cqw}
.art .motif{width:22cqw;height:22cqw;z-index:1}
.a-garden{background:linear-gradient(#fffaf000 20%,#fffaf2b3 50%,#fffaf000 80%),url("assets/garden.webp") center/cover;color:#4a3d2a}
.a-rose{background:radial-gradient(120% 70% at 50% 0,#fff3f1,#e7bcc2 70%);color:#7a4552}
.a-night{background:radial-gradient(120% 70% at 50% 0,#4d5372,#1f2438 75%);color:#e9d39f}
.a-lavender{background:radial-gradient(120% 70% at 50% 0,#f6efff,#c9b6e6 75%);color:#4f3e7c}
.a-peach{background:radial-gradient(120% 70% at 50% 0,#fff8ef,#f3caa9 75%);color:#87533c}
.a-sage{background:radial-gradient(120% 70% at 50% 0,#f6f7ea,#bfcbb5 75%);color:#465b43}

/* ---------- invitation ---------- */
.inv{container-type:inline-size}
.inv>section{padding:64px var(--gr) 64px var(--gl);text-align:center;display:flex;flex-direction:column;align-items:center;gap:14px}
.inv h2{font-family:var(--f-display);font-weight:600;font-size:15px;color:var(--a);letter-spacing:.01em}
.big{font-family:var(--f-display);font-weight:700;font-size:23px;line-height:1.55;text-wrap:balance}
.sub{font-size:16px;opacity:.78}
.orn{width:120px;height:12px;color:var(--a);opacity:.8}

.s-hero{min-height:100svh;justify-content:center;position:relative;background:radial-gradient(110% 60% at 50% 0,#ffffff70,transparent 70%),var(--s)}
.s-hero.has-photo{background:linear-gradient(#ffffff00 15%,color-mix(in srgb,var(--p) 78%,transparent) 42%,color-mix(in srgb,var(--p) 86%,transparent) 62%,#ffffff00 92%),var(--photo) center/cover}
.dark .s-hero{background:radial-gradient(120% 60% at 50% 0,#4d5372,var(--p) 80%)}
.h-in{display:flex;flex-direction:column;align-items:center;gap:18px;opacity:0;transform:translateY(14px);transition:opacity 1s .2s,transform 1s .2s}
.inv.in .h-in{opacity:1;transform:none}
.h-kicker{font-size:16px;color:var(--a);font-weight:500}
.h-names{font-family:var(--f-display);font-weight:800;font-size:clamp(46px,15cqw,68px);line-height:1.25;display:flex;flex-direction:column;align-items:center;text-wrap:balance}
.h-names em{font-style:normal;font-weight:400;font-size:.45em;color:var(--a);line-height:1.6}
.s-gift .h-names,.s-hero .h-names span:only-child{font-size:clamp(38px,12cqw,56px)}
.h-date{font-size:17px;max-width:24ch}
.s-hero .motif{width:72px;height:72px;color:var(--a)}
.scroll-cue{position:absolute;bottom:calc(28px + env(safe-area-inset-bottom,0px));font-size:14px;opacity:.65;display:flex;flex-direction:column;align-items:center;gap:6px}
.scroll-cue::after{content:"";width:10px;height:10px;border-inline-start:1.5px solid currentColor;border-bottom:1.5px solid currentColor;transform:rotate(-45deg);animation:cue 1.8s ease-in-out infinite}
@keyframes cue{50%{transform:rotate(-45deg) translate(-3px,3px)}}

.s-text{background:var(--p)}
.basmala{font-family:var(--f-display);font-weight:600;font-size:20px}
.verse{font-size:17px;line-height:2.1;max-width:30ch;opacity:.85}
.body{font-size:17px;max-width:30ch}
.pair{font-family:var(--f-display);font-weight:800;font-size:34px;line-height:1.4}
.pair em{font-style:normal;font-weight:400;color:var(--a);font-size:.6em}
.s-message .message{font-size:21px;line-height:2;max-width:26ch;font-weight:400}
.s-message .from{font-family:var(--f-display);font-weight:600;color:var(--a)}
.s-message{min-height:60svh;justify-content:center}

.s-count{background:var(--s)}
.count{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;width:100%;max-width:340px;direction:rtl}
.count div{display:flex;flex-direction:column;align-items:center;padding:14px 4px;border-radius:16px;background:var(--p)}
.count b{font-family:var(--f-display);font-weight:700;font-size:28px;line-height:1.2;font-variant-numeric:tabular-nums}
.count span{font-size:13px;opacity:.75}

.i-btn{display:inline-flex;align-items:center;justify-content:center;min-height:50px;padding:0 24px;margin-top:10px;border-radius:999px;border:1.5px solid var(--a);color:var(--i);font-family:var(--f-display);font-weight:600;font-size:15px;transition:background .2s}
.i-btn:hover{background:color-mix(in srgb,var(--a) 12%,transparent)}
.i-btn.solid{background:var(--a);color:var(--p);border-color:var(--a);width:100%;margin-top:18px}
.i-btn:active{transform:scale(.98)}
.s-where{background:var(--s)}
.s-note p{max-width:28ch;font-size:16px;padding:16px 20px;border-block:1px solid color-mix(in srgb,var(--a) 40%,transparent)}

.s-rsvp{background:var(--s)}
#rsvp{width:100%;max-width:360px;text-align:start;display:flex;flex-direction:column;margin-top:8px}
#rsvp label,#rsvp legend,.comp>span{font-size:14px;font-weight:500;margin:14px 0 6px;padding:0}
#rsvp input[type=text],#rsvp textarea{width:100%;min-height:48px;padding:10px 14px;border-radius:12px;border:1.5px solid color-mix(in srgb,var(--a) 35%,transparent);background:var(--p);font-size:16px;resize:vertical}
#rsvp input[type=text]:focus,#rsvp textarea:focus{outline:none;border-color:var(--a)}
.att{border:0;margin:0;padding:0;display:grid;grid-template-columns:1fr 1fr;gap:8px}
.att legend{grid-column:1/-1}
.att label{margin:0!important;position:relative}
.att input{position:absolute;opacity:0}
.att span{display:flex;align-items:center;justify-content:center;min-height:48px;border-radius:12px;border:1.5px solid color-mix(in srgb,var(--a) 35%,transparent);background:var(--p);font-size:15px;cursor:pointer}
.att input:checked+span{border-color:var(--a);background:var(--a);color:var(--p)}
.att input:focus-visible+span{outline:3px solid var(--a);outline-offset:2px}
.comp{display:flex;align-items:center;justify-content:space-between;margin-top:6px}
.comp[hidden]{display:none}
.stepper{display:flex;align-items:center;gap:6px}
.stepper button{width:44px;height:44px;border-radius:50%;border:1.5px solid color-mix(in srgb,var(--a) 35%,transparent);background:var(--p);font-size:20px;line-height:1}
.stepper output{min-width:36px;text-align:center;font-family:var(--f-display);font-weight:700;font-size:19px}
.err{color:#b4233c;font-size:14px;margin-top:10px}
.dark .err{color:#ff9aa8}
.thanks{display:flex;flex-direction:column;gap:10px;max-width:30ch}

.s-foot{padding:44px var(--gr) calc(150px + env(safe-area-inset-bottom,0px)) var(--gl);display:flex;flex-direction:column;align-items:center;text-align:center;gap:8px;background:var(--p)}
.s-foot img{width:84px;opacity:.9}
.s-foot p{font-size:13px;opacity:.7}

/* ---------- preview bar ---------- */
.pv-bar{position:fixed;bottom:0;left:50%;transform:translateX(-50%);width:min(var(--col),100%);z-index:30;padding:0 max(12px,env(safe-area-inset-right,0px)) calc(12px + env(safe-area-inset-bottom,0px)) max(12px,env(safe-area-inset-left,0px));font-family:var(--f-body)}
.pv-in{position:relative;background:#2E2546f2;color:#fff;border-radius:20px;padding:14px 16px 14px 52px;box-shadow:0 12px 30px #0000004d;backdrop-filter:blur(10px)}
.pv-in p{font-size:14px;line-height:1.6;color:#E7D6F7}
.pv-acts{display:flex;align-items:center;gap:16px;margin-top:10px;flex-wrap:wrap}
.pv-btn{display:inline-flex;align-items:center;min-height:42px;padding:0 18px;border-radius:999px;background:#fff;color:#5E4B8B;font-family:var(--f-display);font-weight:600;font-size:14px}
.pv-link{font-size:14px;color:#fff;text-decoration:underline;text-decoration-color:#B9A7E0;text-underline-offset:6px}
.pv-x{position:absolute;top:8px;left:8px;width:36px;height:36px;border:0;border-radius:50%;background:#ffffff1a}
.pv-x span{position:absolute;top:17px;left:10px;width:16px;height:2px;border-radius:2px;background:#fff;transform:rotate(45deg)}
.pv-x span+span{transform:rotate(-45deg)}
body.locked .pv-bar{opacity:.96}

@media (prefers-reduced-motion:reduce){
  *,*::before,*::after{animation:none!important;transition-duration:.01ms!important;transition-delay:0s!important}
}
