/* STORYBOOK. Stage is 1080×1920 (scaled to the phone). Position things in px. */
body.theme-storybook{
  --sb-ink:#3a2a2c; --sb-rose:#b04a68; --sb-plum:#4a2c48; --sb-gold:#a8833c; --sb-mute:#7b6355; --sb-paper:#fbf6ee;
  --f-script:"Dancing Script", cursive; --f-book:"IM Fell English", Georgia, serif; --f-sc:"IM Fell English SC", Georgia, serif;
  --f-det:"Cormorant Garamond", Georgia, serif;
  --gold:#c9a25a; --f-mast:"Dancing Script", cursive;
}
.theme-storybook .page{background:var(--sb-paper)}
.theme-storybook .sbPaper{z-index:0}
.theme-storybook #gate{background:#2a1a1c}
.theme-storybook .gBg{filter:none}
.theme-storybook .gIn{background:linear-gradient(rgba(60,30,40,0),rgba(60,30,40,.9) 45%)}
.theme-storybook .gTitle{font:700 44px/1.1 var(--f-script);font-style:normal}

/* shared bits */
.ln{display:inline-block}
.wr{--w:112%;-webkit-mask-image:linear-gradient(90deg,#000 var(--w),transparent calc(var(--w) + 10%));mask-image:linear-gradient(90deg,#000 var(--w),transparent calc(var(--w) + 10%))}
.bl{--r:100%;-webkit-mask-image:radial-gradient(circle at 50% 52%,#000 var(--r),transparent calc(var(--r) + 24%));mask-image:radial-gradient(circle at 50% 52%,#000 var(--r),transparent calc(var(--r) + 24%))}
.sbFolio{position:absolute;left:0;right:0;bottom:44px;text-align:center;font:400 30px/1 var(--f-book);color:var(--sb-mute);letter-spacing:2px;z-index:20}
.sbFly{position:absolute;left:0;top:0;z-index:18;pointer-events:none}
.sbFly img{display:block;width:100%}
.theme-storybook .fall{z-index:4}
.theme-storybook .spark{z-index:16;width:70px}

/* 1 · cover */
.cvCam{position:absolute;inset:0;transform-origin:50% 40%}
.cvGlow{position:absolute;left:60px;right:60px;top:1100px;height:720px;z-index:2;background:radial-gradient(ellipse 50% 46% at 50% 50%,rgba(255,248,240,.82),rgba(255,248,240,.55) 55%,rgba(255,248,240,0) 100%)}
.cvTitle{position:absolute;left:60px;right:60px;top:1185px;text-align:center;z-index:5;color:var(--sb-plum)}
.cvKick{font:700 92px/1.1 var(--f-script);color:var(--sb-rose)}
.cvName{font:700 196px/1.02 var(--f-script);color:var(--sb-plum);white-space:nowrap}
.cvName i{font-style:normal;font-size:.62em;color:var(--sb-rose);margin-right:18px}

/* 2 · once upon a time */
.ouScroll{position:absolute;left:130px;width:820px;top:250px;height:1420px;overflow:hidden;z-index:2;box-shadow:0 0 0 2px rgba(150,110,70,.18)}
.ouScroll img{width:100%;height:100%;object-fit:cover;display:block;transform-origin:50% 100%}
.ouRoll{width:940px;left:70px;top:905px;z-index:4;filter:drop-shadow(0 8px 10px rgba(80,50,30,.25))}
.ouText{position:absolute;left:150px;right:150px;top:400px;text-align:center;z-index:5;font:700 124px/1.16 var(--f-script);color:var(--sb-plum);text-shadow:0 0 30px rgba(255,240,245,.8),0 0 8px rgba(255,240,245,.7)}
.ouText .ln{white-space:nowrap}
.ouBirds{width:240px;left:640px;top:360px;z-index:5}
.ouStar{z-index:5}

/* chapter pages */
.chKick{position:absolute;left:0;right:0;top:140px;text-align:center;font:400 46px/1 var(--f-sc);letter-spacing:8px;color:var(--sb-rose);z-index:5}
.chHead{position:absolute;left:110px;right:110px;top:205px;height:250px;display:flex;align-items:center;justify-content:center;text-align:center;font:700 104px/1.08 var(--f-script);color:var(--sb-plum);z-index:5;text-wrap:balance}
.chHead .ln{display:inline}
.chHead.wr,.chHead .wr{display:inline-block}
.chFlour{position:absolute;left:290px;width:500px;top:455px;height:80px;z-index:5}
.chFlour img{position:absolute;left:0;top:0;width:100%;height:100%;object-fit:contain}
.chYear{position:absolute;left:0;right:0;top:12px;text-align:center;font:italic 400 40px/56px var(--f-book);color:var(--sb-ink)}
.chYear{background:radial-gradient(ellipse 22% 50% at 50% 50%,var(--sb-paper) 70%,rgba(251,246,238,0))}
.chArt{left:40px;width:1000px;height:750px;top:545px;object-fit:cover;mix-blend-mode:multiply;z-index:3}
.chBody{position:absolute;left:96px;right:96px;top:1325px;max-height:500px;overflow:hidden;font:400 48px/1.42 var(--f-book);color:var(--sb-ink);z-index:5}
.chBody .w{display:inline-block;white-space:pre}
.chBody .dc{float:left;font:400 4.6em/.8 var(--f-book);color:var(--sb-rose);margin:10px 18px 0 0;transform-origin:50% 60%}

/* letter to the family */
.lfHead{position:absolute;left:100px;right:100px;top:175px;text-align:center;font:700 104px/1.1 var(--f-script);color:var(--sb-plum);z-index:5}
.lfHead .ln{white-space:nowrap}
.lfSub{position:absolute;left:100px;right:100px;top:305px;text-align:center;font:700 72px/1.1 var(--f-script);color:var(--sb-rose);z-index:5}
.lfArt{left:90px;width:900px;height:675px;top:430px;object-fit:cover;mix-blend-mode:multiply;z-index:3}
.lfLetter{position:absolute;left:130px;right:130px;top:1150px;bottom:130px;text-align:center;z-index:5;display:flex;flex-direction:column;justify-content:center;gap:18px}
.lfP{font:400 42px/1.4 var(--f-book);color:var(--sb-ink)}
.lfNames{font:700 78px/1.15 var(--f-script);color:var(--sb-rose)}
.lfSign{font:700 64px/1.1 var(--f-script);color:var(--sb-plum);margin-top:10px}

/* the celebrations */
.ceHead{top:180px;height:200px}
.ceArt{object-fit:cover;mix-blend-mode:multiply;z-index:3}
.ceText{position:absolute;width:520px;display:flex;flex-direction:column;justify-content:center;gap:6px;z-index:5}
.ceText.r{left:510px;text-align:left}
.ceText.l{left:60px;text-align:right}
.ceText.c{left:140px;width:800px;text-align:center;justify-content:flex-start}
.ceText.c .ceTitle{font-size:110px}
.ceTitle{font:700 84px/1.04 var(--f-script);color:var(--sb-plum);margin-bottom:6px}
.ceWhen{font:700 42px/1.2 var(--f-det);color:var(--sb-ink)}
.ceVenue{font:italic 400 36px/1.25 var(--f-book);color:var(--sb-ink)}
.ceDress{font:italic 400 32px/1.25 var(--f-book);color:var(--sb-rose)}

/* happily ever after + the end */
.eaHead{position:absolute;left:80px;right:80px;top:130px;text-align:center;font:700 112px/1.08 var(--f-script);color:var(--sb-plum);z-index:5}
.eaHead .ln{white-space:nowrap}
.eaArt{top:390px;object-fit:cover;mix-blend-mode:multiply;z-index:3}
.eaInfo{position:absolute;left:80px;right:80px;bottom:100px;text-align:center;z-index:5;font-size:46px;display:flex;flex-direction:column;justify-content:center}
.eaTitle{font:700 2.6em/1.05 var(--f-script);color:var(--sb-rose)}
.eaTitle .ln{white-space:nowrap}
.eaWhen{font:700 1em/1.3 var(--f-det);color:var(--sb-ink)}
.eaVenue{font:italic 400 .95em/1.3 var(--f-book);color:var(--sb-ink)}
.eaDress{font:italic 400 .82em/1.3 var(--f-book);color:var(--sb-rose)}
.eaMore{margin-top:22px;font:700 .95em/1.25 var(--f-det);color:var(--sb-ink)}
.eaMore b{font:700 1.7em/1.05 var(--f-script);color:var(--sb-plum)}
.eaMore small{display:block;font-size:1em}
.enEl{width:780px;left:150px;top:350px;z-index:4;filter:drop-shadow(0 18px 14px rgba(90,60,50,.18))}
.enFam{position:absolute;left:80px;right:80px;top:1060px;height:640px;display:flex;flex-direction:column;justify-content:center;gap:14px;text-align:center;z-index:5;font-size:40px}
.enLab{font:700 1.6em/1.1 var(--f-script);color:var(--sb-rose)}
.enName{font:700 1em/1.25 var(--f-det);color:var(--sb-ink)}
.enRsvp{position:absolute;left:80px;right:80px;bottom:110px;text-align:center;font:700 44px/1.2 var(--f-det);color:var(--sb-plum);letter-spacing:1px;z-index:5}
.enRsvp small{display:block;font:italic 400 34px/1.4 var(--f-book);color:var(--sb-mute);letter-spacing:0}

/* RSVP */
.rvHead{position:absolute;left:100px;right:100px;top:150px;text-align:center;font:700 100px/1.08 var(--f-script);color:var(--sb-plum);z-index:5}
.rvBy{position:absolute;left:0;right:0;top:392px;text-align:center;font:italic 400 40px/1 var(--f-book);color:var(--sb-rose);z-index:5}
.rvQuill{width:150px;right:110px;top:150px;z-index:6}
.rvForm{position:absolute;left:110px;right:110px;top:470px;bottom:140px;display:flex;flex-direction:column;z-index:10}
.rvRow{display:flex;align-items:center;justify-content:space-between;gap:16px;border-bottom:2px solid rgba(168,131,60,.35)}
.rvFn{flex:1;min-width:0}
.rvFn b{display:block;font:700 40px/1.1 var(--f-det);color:var(--sb-ink);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.rvFn small{display:block;font:italic 400 30px/1.2 var(--f-book);color:var(--sb-mute)}
.rvChips{display:flex;gap:10px;flex-shrink:0}
.rvChips.wrap{flex-wrap:wrap;justify-content:center}
.rvChip{font:600 34px/1 var(--f-det);padding:16px 24px;border-radius:999px;border:2px solid var(--sb-gold);background:rgba(255,252,246,.9);color:var(--sb-ink);cursor:pointer}
.rvChip.on{background:var(--sb-rose);border-color:var(--sb-rose);color:#fff}
.rvDiet{margin-top:26px;text-align:center}
.rvLab{font:400 38px/1 var(--f-sc);letter-spacing:5px;color:var(--sb-rose);margin-bottom:16px}
.rvNote{margin-top:26px;width:100%;height:150px;resize:none;border:2px solid rgba(168,131,60,.5);border-radius:14px;background:rgba(255,252,246,.85) repeating-linear-gradient(transparent 0 52px,rgba(168,131,60,.25) 52px 54px) 0 14px;background-attachment:local;padding:12px 22px;font:italic 400 36px/54px var(--f-book);color:var(--sb-ink);outline:none}
.rvSend{margin-top:26px;align-self:center;font:700 44px/1 var(--f-det);letter-spacing:1px;padding:28px 70px;border-radius:999px;border:0;background:var(--sb-plum);color:#fff;cursor:pointer;box-shadow:0 8px 20px rgba(74,44,72,.25)}
.rvThanks{display:none;position:absolute;left:100px;right:100px;top:470px;text-align:center;z-index:12;opacity:0}
.rvTy{font:700 96px/1.15 var(--f-script);color:var(--sb-plum)}
.rvTyS{margin-top:30px;font:400 42px/1.4 var(--f-book);color:var(--sb-ink)}
.rvSeal{position:absolute;left:50%;bottom:10px;width:210px;margin-left:120px;z-index:2}
.rvCouple{position:relative;display:block;height:640px;margin:40px auto 0}

/* the engine's "meet the couple" page (only when a wedding has no story) */
.theme-storybook .runhead{color:var(--sb-rose);font-family:var(--f-sc);letter-spacing:6px;font-size:30px}
.theme-storybook .cpBig{font-family:var(--f-script);font-style:normal;color:var(--sb-plum);font-size:200px}
.theme-storybook .cpPull{font-family:var(--f-book);border-left-color:var(--sb-rose)}
.theme-storybook .folio{font-family:var(--f-book);color:var(--sb-mute);letter-spacing:2px;text-transform:none;font-size:30px}

/* paper furniture: gilt corners (generated sprite) and a simple double rule */
.sbCorner{width:250px;z-index:2}
.sbCorner.f{width:230px}
.sbCorner.tl{left:24px;top:24px}
.sbCorner.tr{right:24px;top:24px;transform:scaleX(-1)}
.sbCorner.bl{left:24px;bottom:24px;transform:scaleY(-1)}
.sbCorner.br{right:24px;bottom:24px;transform:scale(-1,-1)}
.sbFrame{position:absolute;inset:44px;border:3px solid rgba(168,131,60,.75);outline:1.5px solid rgba(168,131,60,.5);outline-offset:-14px;z-index:1;pointer-events:none}

/* ================= v2: full format (2026-10-08) =================
   Pages as tall as the phone (--dH over 1920); body text ≥ 36px. */
body.theme-storybook{--f-book:"IM Fell English",var(--fx-head),Georgia,serif;--f-sc:"IM Fell English SC",var(--fx-head),Georgia,serif;--f-det:"Cormorant Garamond",var(--fx-head),Georgia,serif}
/* Dancing Script has no Devanagari and breaks its shaping: handwriting turns to the serif for non-Latin */
.lang-nonlatin body.theme-storybook{--f-script:var(--fx-head)}
.lang-nonlatin .theme-storybook .ln,.lang-nonlatin .chHead,.lang-nonlatin .lfHead,.lang-nonlatin .eaHead,.lang-nonlatin .rvHead,.lang-nonlatin .ouText,.lang-nonlatin .cvName,.lang-nonlatin .cvKick{font-weight:600}
.lang-nonlatin .ceVenue,.lang-nonlatin .ceDress,.lang-nonlatin .eaVenue,.lang-nonlatin .eaDress,.lang-nonlatin .rvBy,.lang-nonlatin .chYear,.lang-nonlatin .enRsvp small,.lang-nonlatin .rvFn small{font-style:normal}
.cvGlow{top:calc(1100px + var(--dH,0px))}.cvTitle{top:calc(1185px + var(--dH,0px))}
.ouScroll{height:calc(1420px + var(--dH,0px))}.ouRoll{top:calc(905px + var(--dH,0px) * .5)}
.chArt{height:calc(750px + var(--dH,0px) * .45)}
.lfArt{height:calc(675px + var(--dH,0px) * .45)}.lfLetter{top:calc(1150px + var(--dH,0px) * .45)}
.enEl{top:calc(350px + var(--dH,0px) * .25)}.enFam{top:calc(1060px + var(--dH,0px) * .4)}
.enInv{position:absolute;left:80px;right:80px;top:calc(1000px + var(--dH,0px) * .4);text-align:center;font:600 46px/1.2 Georgia,"Noto Serif Devanagari",var(--f-det);color:var(--sb-rose);z-index:5}
.ceVenue{font-size:38px}.ceDress{font-size:36px}
/* map + add to calendar under each function, as soft pills */
.sbActs{display:flex;gap:10px;margin-top:10px;flex-wrap:wrap}
.ceText.l .sbActs{justify-content:flex-end}.ceText.c .sbActs,.eaInfo .sbActs{justify-content:center}
.sbCal{display:contents}
#stage .sbActs .mzBtn,#stage .sbActs .fx-lnk{min-height:60px;padding:0 22px;border:2px solid var(--sb-gold);border-radius:999px;background:rgba(255,252,246,.92);color:var(--sb-plum);font:600 26px/1 var(--f-det);letter-spacing:1px;text-transform:none;margin:0;box-shadow:none}
/* reply: the functions and one button to the real reply */
.rvRow{padding:20px 0}
.rvFn b{font-size:44px}.rvFn small{font-size:32px}
.mzBtn.rvSend{display:flex;margin-top:40px;min-height:110px;padding:0 70px;border:0;border-radius:999px;background:var(--sb-plum);color:#fff;font:700 44px/1 var(--f-det);letter-spacing:1px;text-transform:none}
/* the shared pages on watercolour paper */
.sbXH{top:150px}
.xPage .xKickOnly{position:absolute;left:80px;right:80px;top:385px;text-align:center;font:400 40px/1.2 var(--f-sc);letter-spacing:4px;text-transform:none;color:var(--sb-rose);z-index:5}
.xPage .xCol{top:470px;left:100px;right:100px;z-index:5}
.xPage .xNote{border-top:2px solid rgba(168,131,60,.4);padding:26px 0}
.xPage .xNote:first-child{border-top:0}
.xPage .xNote b{font:700 66px/1.05 var(--f-script);color:var(--sb-plum);font-style:normal}
.xPage .xNote p{font:400 40px/1.35 var(--f-book);color:var(--sb-ink)}
.xPage .xNote small{font:400 32px/1 var(--f-sc);letter-spacing:4px;color:var(--sb-rose);text-transform:none}
.xPage .xNum em{font:700 96px/.9 var(--f-script);color:var(--sb-rose);font-style:normal}
.xPage .xSub{font:400 34px/1 var(--f-sc);letter-spacing:5px;color:var(--sb-rose);text-transform:none}
.xPage .xWish{font:400 60px/1.2 var(--f-book);color:var(--sb-plum)}
.xPage .xWish span{color:var(--sb-gold)}
.xPage .xWish cite{font:400 30px/1 var(--f-sc);color:var(--sb-rose);text-transform:none;letter-spacing:3px}
.xPage .xInv p{font:italic 400 42px/1.3 var(--f-book);color:var(--sb-ink)}
.xPage .mzBtn{border:2px solid var(--sb-gold);border-radius:999px;background:rgba(255,252,246,.92);color:var(--sb-plum);font:600 28px/1 var(--f-det);letter-spacing:1px;text-transform:none}
.xPage .syRow{z-index:5}
.xPage .syN{font:700 80px/1 var(--f-script);color:var(--sb-plum);font-style:normal}
.xPage .syD{font:italic 400 38px/1.3 var(--f-book);color:var(--sb-ink)}
.xPage .syRow figure,.xPage .xPrint{background:#fffdf8;box-shadow:0 14px 30px rgba(90,60,50,.2);z-index:5}
.xPage .xCap{font:700 72px/1.05 var(--f-script);color:var(--sb-plum);z-index:5}
.xPage .xFilm{top:470px;border:12px solid #fffdf8;box-shadow:0 0 0 3px var(--sb-gold),0 24px 50px rgba(90,60,50,.3);z-index:5;max-height:calc(var(--H,1920px) - 640px)}
.xPage .xPlay span{border-color:transparent transparent transparent var(--sb-plum)}
.lang-nonlatin .xPage .xNote b,.lang-nonlatin .xPage .syN,.lang-nonlatin .xPage .xCap{font-weight:600}
/* reply / wishes sheet on watercolour */
.theme-storybook{--fx-ink:#3a2a2c;--fx-muted:#7b6355;--fx-accent:#4a2c48;--fx-accent-2:#a8833c;--fx-soft:#b04a68;--fx-card:#fbf6ee;--fx-card-solid:#fbf6ee;
  --fx-btn:#4a2c48;--fx-btn-ink:#fff;--fx-on:#b04a68;--fx-on-ink:#fff;--fx-on-line:#b04a68;--fx-line:rgba(168,131,60,.45);--fx-field:#fffdf8;--cream:#fbf6ee;--maroon:#4a2c48}
.theme-storybook #sheet{background:#fbf6ee url(art/paper.webp) center/cover}
.theme-storybook .shH{font:700 56px/1.05 "Dancing Script",var(--fx-head),cursive;font-style:normal;color:#4a2c48}
.sbXH{height:auto;top:140px}
