/* Vows cinematic illustration invitations: editorial couples, immersive openings and chaptered scenes.
   Motion uses transforms and opacity only; every loop pauses offscreen, when paused, or with reduced motion. */
@font-face{font-family:'Great Vibes';src:url(../../fonts/weddings/great-vibes-regular.ttf) format('truetype');font-display:swap}
@font-face{font-family:'Yatra One';src:url(../../fonts/weddings/yatra-one-regular.ttf) format('truetype');font-display:swap}

.sb-defs{position:absolute;width:0;height:0;overflow:hidden;pointer-events:none}

/* ---------- Theme tokens (shared components read --paper/--accent/--theme-*) ---------- */
.theme-shubhvivah{--paper:#fff6ee;--accent:#b0213a;--theme-ink:#5a1424;--theme-muted:#8a5b4d;--theme-line:#ebcda4;--sb-gold:#d9a441;--sb-name:#a3162f;--sb-name-font:'Yatra One','Wedding Devanagari',Georgia,serif;--sb-title-font:'Yatra One','Wedding Devanagari',Georgia,serif;--sb-copy:#5a1424;--sb-glow:rgba(255,246,230,.75);--sb-medallion:#fde7d6;--sb-plaque:#fff7e6;--sb-plaque-ink:#5a1424;--sb-map-bg:#f8ead6;--sb-map-road:#fffaf2;--sb-pattern:#e9b8a4}
.theme-blushletter{--paper:#fbeff2;--accent:#c2557a;--theme-ink:#5b2b3e;--theme-muted:#8d6577;--theme-line:#efc8d4;--sb-gold:#d9a86c;--sb-name:#fff;--sb-name-font:'Great Vibes','Cormorant',Georgia,serif;--sb-title-font:'Great Vibes','Cormorant',Georgia,serif;--sb-copy:#fff;--sb-glow:rgba(70,40,90,.35);--sb-medallion:#f9dbe4;--sb-plaque:#fff5f7;--sb-plaque-ink:#5b2b3e;--sb-map-bg:#fde8ee;--sb-map-road:#fff;--sb-pattern:#f3c3d2}
.theme-aegean{--paper:#f4f8fb;--accent:#2367a8;--theme-ink:#1d3d5c;--theme-muted:#5b7790;--theme-line:#c9dcec;--sb-gold:#c9a050;--sb-name:#a77a1f;--sb-name-font:'Great Vibes','Cormorant',Georgia,serif;--sb-title-font:'Great Vibes','Cormorant',Georgia,serif;--sb-copy:#1d3d5c;--sb-glow:rgba(255,255,255,.8);--sb-medallion:#dceaf6;--sb-plaque:#ffffff;--sb-plaque-ink:#1d3d5c;--sb-map-bg:#e4eff8;--sb-map-road:#fff;--sb-pattern:#bcd6ec}
.theme-sagegarden{--paper:#f6f5ee;--accent:#4f6b4a;--theme-ink:#34452f;--theme-muted:#6b7b64;--theme-line:#d5dcc8;--sb-gold:#c9a961;--sb-name:#3f5a3a;--sb-name-font:'Great Vibes','Cormorant',Georgia,serif;--sb-title-font:'Great Vibes','Cormorant',Georgia,serif;--sb-copy:#34452f;--sb-glow:rgba(250,248,238,.8);--sb-medallion:#e6ecd9;--sb-plaque:#fdfcf6;--sb-plaque-ink:#34452f;--sb-map-bg:#eaf0e0;--sb-map-road:#fff;--sb-pattern:#cbd6bc}
.theme-noornikah{--paper:#101c3b;--accent:#e3c27a;--theme-ink:#f6ead2;--theme-muted:#c9bfa8;--theme-line:#5d5a6e;--sb-gold:#e3c27a;--sb-name:#f3d68c;--sb-name-font:'Cormorant','Wedding Arabic',Georgia,serif;--sb-title-font:'Cormorant','Wedding Arabic',Georgia,serif;--sb-copy:#f6ead2;--sb-glow:rgba(8,14,40,.45);--sb-medallion:#1d2b55;--sb-plaque:#0f4a3f;--sb-plaque-ink:#f6ead2;--sb-map-bg:#1b2a52;--sb-map-road:#2d3d69;--sb-pattern:#2a3a66}
.theme-kalyanam{--paper:#fff7e8;--accent:#9c1c4f;--theme-ink:#5a1630;--theme-muted:#86604c;--theme-line:#ecd2a0;--sb-gold:#d9a63e;--sb-name:#8c1242;--sb-name-font:'Yatra One','Wedding Tamil',Georgia,serif;--sb-title-font:'Yatra One','Wedding Tamil',Georgia,serif;--sb-copy:#5a1630;--sb-glow:rgba(255,248,232,.8);--sb-medallion:#fde9c8;--sb-plaque:#7a1038;--sb-plaque-ink:#fff4dc;--sb-map-bg:#fbecd2;--sb-map-road:#fffaf0;--sb-pattern:#efd09a}

/* ---------- Page base ---------- */
.sb-guest{background:var(--paper)}
.sb-guest #main-content{overflow-x:clip}
#invitation-content.sb-book{position:relative;background:var(--paper);color:var(--theme-ink);overflow-x:clip}
.sb-guest .v-fullpage-atmosphere.sb-atmosphere{opacity:.75}
#invitation-content.sb-book .v-guest-nav.sb-nav{position:absolute;z-index:20;top:12px;bottom:auto;left:50%;right:auto;transform:translateX(-50%);width:max-content;max-width:calc(100% - 24px);min-height:0;display:flex;flex-wrap:wrap;justify-content:center;align-items:center;gap:4px 16px;padding:8px 16px;border:1px solid color-mix(in srgb,var(--paper) 52%,transparent);border-radius:999px;background:color-mix(in srgb,var(--paper) 62%,transparent);backdrop-filter:blur(18px) saturate(1.25);-webkit-backdrop-filter:blur(18px) saturate(1.25);box-shadow:0 12px 38px rgba(24,14,26,.12),inset 0 1px rgba(255,255,255,.55);font:600 13px/1.4 var(--sans);color:var(--theme-ink)}
#invitation-content.sb-book .sb-nav a,#invitation-content.sb-book .sb-nav button{min-height:30px;color:inherit;text-decoration:none;background:none;border:0;padding:0;font:inherit;cursor:pointer}
#invitation-content.sb-book .sb-nav a[aria-current=true]{color:var(--accent)}

/* ---------- Scenes ---------- */
#invitation-content.sb-book .sb-scene{position:relative;isolation:isolate;overflow:hidden;display:flex;flex-direction:column;align-items:center;width:100%;min-height:100vh;min-height:100svh;margin:0;padding:0;border:0;border-radius:0;background:none}
#invitation-content.sb-book .sb-backdrop{position:absolute;inset:0;z-index:-2;pointer-events:none}
#invitation-content.sb-book .sb-backdrop>svg{display:block;width:100%;height:100%}
#invitation-content.sb-book .sb-copy,#invitation-content.sb-book .sb-plaque{order:0}
#invitation-content.sb-book .sb-stage{order:1;position:relative;z-index:1;flex:1 1 auto;width:100%;min-height:min(56vh,110vw);min-height:min(56svh,110vw);margin-top:8px;pointer-events:none}
#invitation-content.sb-book .sb-stage>svg{position:absolute;left:50%;bottom:0;display:block;height:100%;width:auto;max-width:none;aspect-ratio:600/640;transform:translateX(-50%);overflow:visible}
#invitation-content.sb-book .sb-front{position:absolute;z-index:2;width:min(46vw,320px);pointer-events:none}
#invitation-content.sb-book .sb-front>svg{display:block;width:100%;height:auto;overflow:visible}
#invitation-content.sb-book .sb-front-tl{top:0;left:0}#invitation-content.sb-book .sb-front-tr{top:0;right:0}#invitation-content.sb-book .sb-front-bl{bottom:0;left:0}#invitation-content.sb-book .sb-front-br{bottom:0;right:0}

/* Hero copy */
#invitation-content.sb-book .v-invite-hero-copy.sb-copy{position:relative;z-index:3;flex:none;width:100%;max-width:760px;margin:0 auto;padding:calc(70px + env(safe-area-inset-top,0px)) 20px 0;text-align:center;color:var(--sb-copy);background:none;transform:none}
#invitation-content.sb-book .sb-copy::before{content:"";position:absolute;z-index:-1;left:50%;top:48%;width:min(120%,720px);height:120%;transform:translate(-50%,-50%);background:radial-gradient(closest-side,var(--sb-glow),transparent 72%);filter:blur(4px);pointer-events:none}
#invitation-content.sb-book .sb-copy .sb-eyebrow{display:block;margin:0 0 6px;font:600 12px/1.6 var(--sans);letter-spacing:.2em;text-transform:uppercase;color:var(--sb-copy);opacity:.85}
#invitation-content.sb-book .sb-copy h1{margin:6px 0 10px;font:400 clamp(44px,12.5vw,84px)/1.04 var(--sb-name-font);letter-spacing:0;color:var(--sb-name);text-transform:none;text-wrap:balance}
#invitation-content.sb-book .sb-copy h1>.sb-name{display:block;overflow-wrap:anywhere;text-shadow:0 2px 18px var(--sb-glow)}
#invitation-content.sb-book .sb-copy .sb-hosts{display:block;margin:4px auto 0;font:500 clamp(12px,3.3vw,15px)/1.45 var(--serif);letter-spacing:.02em;color:var(--sb-copy);opacity:.85;max-width:520px}
#invitation-content.sb-book .sb-copy h1 i.sb-weds{display:flex;align-items:center;justify-content:center;gap:12px;margin:10px auto;font:italic 400 clamp(15px,4vw,20px)/1 var(--serif);color:var(--sb-copy);letter-spacing:.14em;text-transform:lowercase}
#invitation-content.sb-book .sb-weds::before,#invitation-content.sb-book .sb-weds::after{content:"";height:1px;width:clamp(34px,12vw,90px);background:linear-gradient(90deg,transparent,currentColor)}
#invitation-content.sb-book .sb-weds::after{transform:scaleX(-1)}
#invitation-content.sb-book .sb-copy .sb-date{margin:6px 0 2px;font:500 clamp(18px,4.8vw,26px)/1.4 var(--serif);color:var(--sb-copy)}
#invitation-content.sb-book .sb-copy .sb-venue{margin:0 auto;max-width:520px;font:500 14px/1.5 var(--sans);letter-spacing:.06em;color:var(--sb-copy);opacity:.9;overflow-wrap:anywhere}
#invitation-content.sb-book .sb-sacred{display:block;margin:0 auto 6px;color:var(--sb-name);font-size:30px;line-height:1.4}
#invitation-content.sb-book .sb-sacred.v-sacred-calligraphy{font-size:clamp(20px,5.5vw,30px);font-family:'Wedding Arabic',serif}
#invitation-content.sb-book .v-sacred-art.sb-sacred{width:86px;height:86px}#invitation-content.sb-book .v-sacred-art.sb-sacred img{width:100%;height:100%;object-fit:contain}
.theme-shubhvivah #invitation-content.sb-book .sb-copy h1>.sb-name{text-shadow:0 2px 0 #f6d892,0 6px 20px rgba(255,240,220,.9)}
.theme-noornikah #invitation-content.sb-book .sb-copy h1{font-weight:500;letter-spacing:.04em}
.theme-blushletter #invitation-content.sb-book .sb-copy h1,.theme-aegean #invitation-content.sb-book .sb-copy h1,.theme-sagegarden #invitation-content.sb-book .sb-copy h1{font-size:clamp(56px,16vw,104px);line-height:.98}
.theme-aegean #invitation-content.sb-book .sb-copy h1>.sb-name{text-shadow:0 2px 0 #fff,0 0 26px #fff}
#invitation-content.sb-book .sb-cue{position:absolute;z-index:4;bottom:18px;left:50%;width:40px;height:40px;margin-left:-20px;display:grid;place-items:center;border-radius:50%;background:color-mix(in srgb,var(--paper) 80%,transparent);color:var(--accent);text-decoration:none;font-size:18px;box-shadow:0 4px 18px rgba(0,0,0,.12)}

/* ---------- Pages between scenes ---------- */
#invitation-content.sb-book .sb-page{position:relative;width:100%;max-width:none;margin:0;padding:84px 20px;border:0;border-radius:0;text-align:center;color:var(--theme-ink);background:linear-gradient(145deg,color-mix(in srgb,var(--paper) 95%,#fff),color-mix(in srgb,var(--paper) 91%,var(--accent)))}
#invitation-content.sb-book .sb-page::before{content:"";position:absolute;inset:0;z-index:0;pointer-events:none;opacity:.5;background:radial-gradient(circle at 12% 10%,var(--sb-pattern) 0 2px,transparent 3px) 0 0/38px 38px,radial-gradient(circle at 70% 60%,var(--sb-pattern) 0 1.5px,transparent 2.5px) 0 0/54px 54px;-webkit-mask:linear-gradient(transparent,#000 18%,#000 82%,transparent);mask:linear-gradient(transparent,#000 18%,#000 82%,transparent)}
#invitation-content.sb-book .sb-page>*{position:relative;z-index:1}
#invitation-content.sb-book .sb-ornament{display:block;width:120px;height:26px;margin:0 auto 22px;background:center/contain no-repeat url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 120 26'%3E%3Cpath d='M2 13H44M76 13H118' stroke='%23c9a050' stroke-width='1.4'/%3E%3Cpath d='M60 2C66 8 66 18 60 24C54 18 54 8 60 2Z' fill='%23c9a050'/%3E%3Ccircle cx='48' cy='13' r='3' fill='%23c9a050'/%3E%3Ccircle cx='72' cy='13' r='3' fill='%23c9a050'/%3E%3C/svg%3E")}
#invitation-content.sb-book .sb-script-title{margin:0 0 18px;font:400 clamp(34px,9vw,52px)/1.15 var(--sb-title-font);color:var(--accent);letter-spacing:0}
#invitation-content.sb-book .v-invite-welcome.sb-welcome>p{max-width:660px;margin:0 auto 18px;font:400 clamp(19px,4.6vw,25px)/1.6 var(--serif);color:var(--theme-ink)}
#invitation-content.sb-book .sb-blessing{font-style:italic;color:var(--theme-muted)}
#invitation-content.sb-book .sb-reveal-card{max-width:520px;margin:34px auto 48px;padding:30px 18px 34px;border:1px solid color-mix(in srgb,var(--theme-line) 76%,#fff);border-radius:30px;background:color-mix(in srgb,var(--paper) 82%,transparent);backdrop-filter:blur(18px);box-shadow:0 26px 70px color-mix(in srgb,var(--accent) 15%,transparent),inset 0 1px rgba(255,255,255,.65)}

/* Scratch to reveal */
#invitation-content.sb-book .sb-scratch{position:relative;width:min(290px,76vw);aspect-ratio:1/.9;margin:0 auto 14px;touch-action:none;user-select:none;-webkit-user-select:none}
.sb-scratch-heart,.sb-scratch-canvas{position:absolute;inset:0;width:100%;height:100%;-webkit-mask:center/contain no-repeat url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 100 90'%3E%3Cpath d='M50 88C22 66 2 50 2 27C2 12 13 2 27 2C37 2 45 8 50 16C55 8 63 2 73 2C87 2 98 12 98 27C98 50 78 66 50 88Z'/%3E%3C/svg%3E");mask:center/contain no-repeat url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 100 90'%3E%3Cpath d='M50 88C22 66 2 50 2 27C2 12 13 2 27 2C37 2 45 8 50 16C55 8 63 2 73 2C87 2 98 12 98 27C98 50 78 66 50 88Z'/%3E%3C/svg%3E")}
#invitation-content.sb-book .sb-scratch-heart{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;padding:6% 18% 18%;background:radial-gradient(circle at 50% 40%,#fff,color-mix(in srgb,var(--paper) 70%,var(--accent)));color:var(--theme-ink)}
#invitation-content.sb-book .sb-scratch-heart span{font:600 11px/1.4 var(--sans);letter-spacing:.14em;text-transform:uppercase;color:var(--theme-muted)}
#invitation-content.sb-book .sb-scratch-heart strong{font:600 clamp(19px,5.4vw,26px)/1.2 var(--serif);color:var(--accent)}
#invitation-content.sb-book .sb-scratch-heart em{font:italic 400 16px/1.3 var(--serif)}#invitation-content.sb-book .sb-scratch-heart small{font:500 13px/1.3 var(--sans)}
.sb-scratch-canvas{cursor:grab;transition:opacity .8s}
.sb-scratch.is-revealed .sb-scratch-canvas{opacity:0;pointer-events:none}
.sb-scratch.is-revealed .sb-scratch-heart{animation:sb-heart-pop .9s cubic-bezier(.2,1.6,.4,1)}
#invitation-content.sb-book .sb-text-button{display:inline-block;min-height:40px;margin:2px auto 6px;padding:8px 14px;border:0;background:none;color:var(--accent);font:600 14px/1.4 var(--sans);text-decoration:underline;text-underline-offset:4px;cursor:pointer}
#invitation-content.sb-book .sb-forever{margin:4px 0 14px;font:400 clamp(30px,8vw,42px)/1.2 var(--sb-title-font);color:var(--accent)}
#invitation-content.sb-book .v-button.sb-pill{display:inline-flex;align-items:center;justify-content:center;gap:10px;min-height:46px;padding:12px 24px;border-radius:999px;border:0;background:var(--accent);color:var(--paper);font:700 13px/1.3 var(--sans);letter-spacing:.12em;text-transform:uppercase;box-shadow:0 10px 26px color-mix(in srgb,var(--accent) 32%,transparent);cursor:pointer;text-decoration:none}
.theme-noornikah #invitation-content.sb-book .v-button.sb-pill{color:#101c3b}

/* Countdown flip cards */
#invitation-content.sb-book .v-countdown.sb-countdown{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;width:100%;max-width:520px;margin:6px auto 0;padding:0;border:0}
#invitation-content.sb-book .sb-countdown>div{min-width:0;padding:14px 4px 10px;border-radius:14px;background:color-mix(in srgb,var(--paper) 80%,var(--accent));box-shadow:inset 0 0 0 1px var(--theme-line),0 8px 22px color-mix(in srgb,var(--accent) 10%,transparent)}
#invitation-content.sb-book .sb-countdown strong{display:block;font:500 clamp(26px,7.5vw,40px)/1.15 var(--serif);color:var(--accent);font-variant-numeric:tabular-nums}
#invitation-content.sb-book .sb-countdown strong.is-tick{animation:sb-flip .45s ease}
#invitation-content.sb-book .sb-countdown span{display:block;margin-top:2px;font:600 11px/1.4 var(--sans);letter-spacing:.1em;text-transform:uppercase;color:var(--theme-muted);overflow-wrap:anywhere}

/* Story */
#invitation-content.sb-book .v-invite-story.sb-story{display:grid;grid-template-columns:minmax(0,1fr);gap:26px;justify-items:center;padding-inline:20px}
#invitation-content.sb-book .sb-story>div:last-child{max-width:620px;min-width:0}
#invitation-content.sb-book .sb-story h2{margin:6px 0 14px;font:400 clamp(40px,11vw,62px)/1.1 var(--sb-title-font);color:var(--accent)}
#invitation-content.sb-book .sb-story h2 em{font-style:normal;opacity:.7}
#invitation-content.sb-book .sb-story p{font:400 17px/1.85 var(--serif);text-align:center;overflow-wrap:anywhere}
#invitation-content.sb-book .sb-medallion-art{width:min(300px,72vw);aspect-ratio:1;filter:drop-shadow(0 18px 30px color-mix(in srgb,var(--accent) 22%,transparent))}
#invitation-content.sb-book .sb-medallion-art svg{width:100%;height:100%;display:block}
#invitation-content.sb-book .sb-polaroid{margin:0;padding:12px 12px 40px;background:#fff;box-shadow:0 16px 40px rgba(0,0,0,.16);transform:rotate(-3deg);max-width:min(320px,76vw)}
#invitation-content.sb-book .sb-polaroid img{display:block;width:100%;height:auto;max-height:420px;object-fit:contain}

/* ---------- Celebration chapters ---------- */
#invitation-content.sb-book .sb-celebration{position:relative;width:100%;padding:0;margin:0}
#invitation-content.sb-book .sb-chapters-intro{padding-bottom:40px}
#invitation-content.sb-book .sb-chapters-intro h2{margin:0;font:400 clamp(40px,11vw,64px)/1.1 var(--sb-title-font);color:var(--accent)}
#invitation-content.sb-book .sb-chapters-intro .v-event-timezone{margin:8px 0 18px;font:500 14px/1.5 var(--sans);color:var(--theme-muted)}
#invitation-content.sb-book .sb-play{display:inline-flex;align-items:center;gap:10px;min-height:44px;padding:10px 20px;border-radius:999px;border:1px solid var(--theme-line);background:color-mix(in srgb,var(--paper) 80%,var(--accent));color:var(--theme-ink);font:600 14px/1.3 var(--sans);cursor:pointer}
#invitation-content.sb-book .sb-play[aria-pressed=true]{background:var(--accent);color:var(--paper)}
#invitation-content.sb-book .sb-chapter{scroll-margin-top:0}
#invitation-content.sb-book .sb-plaque{position:relative;z-index:3;flex:none;width:min(88vw,470px);margin:calc(64px + 1svh) auto 0;padding:26px 26px 22px;text-align:center;color:var(--sb-plaque-ink);background:color-mix(in srgb,var(--sb-plaque) 88%,transparent);border:1px solid color-mix(in srgb,var(--sb-gold) 58%,transparent);border-radius:28px;backdrop-filter:blur(16px) saturate(1.12);box-shadow:0 26px 70px rgba(40,20,10,.18),inset 0 1px rgba(255,255,255,.58)}
#invitation-content.sb-book .sb-plaque::before{content:"";position:absolute;left:50%;top:-14px;width:40px;height:28px;margin-left:-20px;background:center/contain no-repeat url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 40 28'%3E%3Cpath d='M20 1C27 8 27 20 20 27C13 20 13 8 20 1Z' fill='%23d9a441' stroke='%23fff7e6' stroke-width='1.5'/%3E%3Ccircle cx='6' cy='14' r='4' fill='%23d9a441'/%3E%3Ccircle cx='34' cy='14' r='4' fill='%23d9a441'/%3E%3C/svg%3E")}
#invitation-content.sb-book .sb-chapter-number{display:block;font:700 11px/1.4 var(--sans);letter-spacing:.24em;color:var(--sb-gold)}
#invitation-content.sb-book .sb-plaque h3{margin:2px 0 6px;font:400 clamp(34px,9.5vw,54px)/1.12 var(--sb-title-font);color:var(--sb-scene,var(--accent));overflow-wrap:anywhere;letter-spacing:0}
#invitation-content.sb-book .sb-plaque .sb-when{margin:0;font:600 15px/1.5 var(--sans);color:var(--sb-plaque-ink)}
#invitation-content.sb-book .sb-when b{margin:0 6px;color:var(--sb-gold);font-weight:400}
#invitation-content.sb-book .sb-plaque .sb-where{margin:4px 0 0;font:500 15px/1.5 var(--serif);overflow-wrap:anywhere}
#invitation-content.sb-book .sb-plaque .sb-note{margin:6px 0 0;font:400 14px/1.6 var(--sans);opacity:.85;overflow-wrap:anywhere}
#invitation-content.sb-book .sb-venue-link{display:inline-flex;align-items:center;gap:6px;min-height:36px;margin-top:8px;padding:6px 16px;border-radius:999px;border-top:1px solid color-mix(in srgb,var(--sb-gold) 60%,transparent);color:var(--sb-plaque-ink);font:600 13px/1.4 var(--sans);text-decoration:none}
.sb-chapter-mehndi{--sb-scene:#2f7d3a}.sb-chapter-haldi{--sb-scene:#c2410c}.sb-chapter-sangeet{--sb-scene:#6b3fa0}.sb-chapter-baraat{--sb-scene:#b0213a}.sb-chapter-pheras{--sb-scene:#a3162f}.sb-chapter-garland{--sb-scene:#b8336a}.sb-chapter-nikah{--sb-scene:#0f6b55}.sb-chapter-vows{--sb-scene:#8a4d6f}.sb-chapter-chapel{--sb-scene:#2c4a7a}.sb-chapter-reception{--sb-scene:#7a1f43}.sb-chapter-feast{--sb-scene:#3d6b4f}.sb-chapter-welcome{--sb-scene:#b45f2b}
/* Theme-owned plaques */
.theme-blushletter #invitation-content.sb-book .sb-plaque{border-radius:18px;box-shadow:0 18px 40px rgba(90,40,60,.2),inset 0 0 0 1px #e7b9c6,inset 0 0 0 6px #fff5f7,inset 0 0 0 7px #d9a86c}
.theme-aegean #invitation-content.sb-book .sb-plaque{border-radius:8px;box-shadow:0 18px 40px rgba(20,50,90,.18),inset 0 0 0 3px #2367a8,inset 0 0 0 7px #fff,inset 0 0 0 9px #2367a8}
.theme-sagegarden #invitation-content.sb-book .sb-plaque{border-radius:46% 46% 26px 26px/90px 90px 26px 26px;padding-top:34px;box-shadow:0 18px 40px rgba(40,60,30,.16),inset 0 0 0 2px #c9a961,inset 0 0 0 8px #fdfcf6,inset 0 0 0 9px #8fa98a}
.theme-noornikah #invitation-content.sb-book .sb-plaque{border-radius:50% 50% 16px 16px/70px 70px 16px 16px;padding-top:40px;box-shadow:0 18px 50px rgba(0,0,0,.4),inset 0 0 0 2px #e3c27a,inset 0 0 0 8px #0f4a3f,inset 0 0 0 9px #e3c27a}
.theme-noornikah #invitation-content.sb-book .sb-plaque h3{color:#f3d68c}
.theme-kalyanam #invitation-content.sb-book .sb-plaque{border-radius:14px;box-shadow:0 18px 40px rgba(90,20,40,.3),inset 0 0 0 3px #e2b54e,inset 0 0 0 9px #7a1038,inset 0 0 0 11px #e2b54e}
.theme-kalyanam #invitation-content.sb-book .sb-plaque h3{color:#ffd98a}

/* Programme timeline */
#invitation-content.sb-book .sb-program{padding-top:64px}
#invitation-content.sb-book .v-event-timeline.sb-timeline{position:relative;display:block;width:100%;max-width:620px;margin:10px auto 36px;padding:0;padding-inline-start:30px;border:0;background:none;text-align:start}
#invitation-content.sb-book .sb-timeline::before{content:"";position:absolute;inset-inline-start:9px;top:8px;bottom:8px;width:2px;background:linear-gradient(var(--theme-line),var(--accent),var(--theme-line))}
#invitation-content.sb-book .sb-timeline .v-day-heading{margin:18px 0 8px;padding:0;font:700 12px/1.5 var(--sans);letter-spacing:.14em;text-transform:uppercase;color:var(--theme-muted);background:none;border:0}
#invitation-content.sb-book .sb-timeline article{position:relative;display:grid;grid-template-columns:minmax(0,1fr) 44px;align-items:center;gap:12px;margin:0 0 14px;padding:16px 16px 16px 18px;border:0;border-radius:16px;background:color-mix(in srgb,var(--paper) 88%,var(--accent));box-shadow:inset 0 0 0 1px var(--theme-line);transform:none}
#invitation-content.sb-book .sb-timeline article::before{content:"";position:absolute;inset-inline-start:-27px;top:50%;width:14px;height:14px;margin-top:-7px;border-radius:50%;background:var(--paper);border:3px solid var(--accent)}
#invitation-content.sb-book .sb-timeline .v-event-number{display:none}
#invitation-content.sb-book .sb-timeline article>div{grid-column:1;grid-row:1;min-width:0;width:auto;padding:0}
#invitation-content.sb-book .sb-timeline article h3{margin:2px 0 2px;font:600 19px/1.35 var(--serif);color:var(--theme-ink);overflow-wrap:anywhere}
#invitation-content.sb-book .sb-timeline article p{margin:0;font:400 14px/1.55 var(--sans);color:var(--theme-muted);overflow-wrap:anywhere}
#invitation-content.sb-book .sb-timeline [data-event-date]{font:600 12px/1.5 var(--sans);letter-spacing:.06em;color:var(--accent)}
#invitation-content.sb-book .sb-timeline .v-round-link{grid-column:2;grid-row:1;width:44px;height:44px;margin:0;justify-self:end}
#invitation-content.sb-book .sb-venue-card{display:grid;grid-template-columns:minmax(0,1fr);gap:18px;align-items:center;max-width:620px;margin:0 auto 30px;padding:16px;border-radius:22px;background:color-mix(in srgb,var(--paper) 90%,var(--accent));box-shadow:inset 0 0 0 1px var(--theme-line);text-align:center}
#invitation-content.sb-book .sb-map{border-radius:16px;overflow:hidden}#invitation-content.sb-book .sb-map svg{display:block;width:100%;height:auto}
#invitation-content.sb-book .sb-venue-card h3{margin:4px 0;font:600 22px/1.3 var(--serif);overflow-wrap:anywhere}
#invitation-content.sb-book .sb-venue-card p{margin:0 0 14px;font:400 15px/1.6 var(--sans);color:var(--theme-muted);overflow-wrap:anywhere}

/* Details, gallery, RSVP */
#invitation-content.sb-book .v-guest-details.sb-details{display:grid;grid-template-columns:minmax(0,1fr);gap:16px;max-width:none}
#invitation-content.sb-book .sb-details article{max-width:560px;width:100%;margin:0 auto;padding:22px 20px;border-radius:20px;background:color-mix(in srgb,var(--paper) 88%,var(--accent));box-shadow:inset 0 0 0 1px var(--theme-line)}
#invitation-content.sb-book .sb-details h3{margin:6px 0;font:400 30px/1.2 var(--sb-title-font);color:var(--accent)}
#invitation-content.sb-book .sb-details p{margin:0;font:400 16px/1.7 var(--sans);overflow-wrap:anywhere}
#invitation-content.sb-book .sb-icon{display:inline-grid;place-items:center;width:52px;height:52px;border-radius:50%;background:var(--paper);color:var(--accent);box-shadow:inset 0 0 0 1px var(--theme-line);font-size:22px}#invitation-content.sb-book .sb-icon svg{width:30px;height:30px}
#invitation-content.sb-book .sb-polaroids{display:flex;flex-wrap:wrap;justify-content:center;gap:18px;max-width:900px;margin:0 auto;padding:0;border:0}
#invitation-content.sb-book .sb-polaroids>button{width:min(240px,42vw);margin:0;padding:8px 8px 28px;border:0;border-radius:2px;background:#fff;box-shadow:0 12px 30px rgba(0,0,0,.14);transform:rotate(var(--tilt,0deg));transition:transform .4s}
#invitation-content.sb-book .sb-polaroids>button:hover{transform:rotate(0) scale(1.03)}
#invitation-content.sb-book .sb-polaroids img{width:100%;height:220px;object-fit:cover;background:#f4f1ec}
#invitation-content.sb-book .v-rsvp-section.sb-rsvp{border-top:0;background:var(--paper)}
#invitation-content.sb-book .v-rsvp-section.sb-rsvp>h2{font:400 clamp(40px,11vw,60px)/1.15 var(--sb-title-font);color:var(--accent)}
#invitation-content.sb-book .sb-rsvp .v-rsvp-form{padding:24px 18px;border-radius:24px;background:color-mix(in srgb,var(--paper) 90%,var(--accent));box-shadow:inset 0 0 0 1px var(--theme-line),0 16px 40px color-mix(in srgb,var(--accent) 10%,transparent);text-align:start}
#invitation-content.sb-book .sb-rsvp .v-guest-button{border-radius:999px;background:var(--accent);color:var(--paper);border:0}
.theme-noornikah #invitation-content.sb-book .sb-rsvp .v-guest-button{color:#101c3b}

/* Finale */
#invitation-content.sb-book .sb-finale-copy{margin-top:calc(60px + 2svh)}
#invitation-content.sb-book .sb-finale-copy h2{margin:0;font:400 clamp(32px,9vw,52px)/1.15 var(--sb-title-font);color:var(--sb-scene,var(--accent))}
#invitation-content.sb-book .sb-finale-copy p{margin:6px 0 0;font:500 15px/1.5 var(--serif)}
#invitation-content.sb-book .sb-finale-names{font:400 26px/1.3 var(--sb-name-font)!important;color:var(--sb-name)}
.theme-blushletter #invitation-content.sb-book .sb-finale-names,.theme-aegean #invitation-content.sb-book .sb-finale-names{color:var(--accent)}
#invitation-content.sb-book .v-invite-footer.sb-footer{padding:40px 20px 120px;text-align:center;background:var(--paper)}
#invitation-content.sb-book .sb-footer h2{font:400 34px/1.3 var(--sb-name-font);color:var(--accent)}
#invitation-content.sb-book .sb-footer a{color:var(--theme-muted)}

/* ---------- Particle layers inside scenes ---------- */
#invitation-content.sb-book .sb-fx{position:absolute;inset:0;z-index:2;overflow:hidden;pointer-events:none}
.sb-fx i{position:absolute;top:-8%;left:calc(var(--p,50) * 1%);width:12px;height:9px;border-radius:60% 0 60% 0;background:#f39ab4;opacity:0;animation:sb-fall var(--d,7s) linear var(--delay,0s) infinite}
.sb-fx i:nth-child(1){--p:6;--d:7.5s;--delay:-1s}.sb-fx i:nth-child(2){--p:14;--d:9s;--delay:-4s}.sb-fx i:nth-child(3){--p:22;--d:6.8s;--delay:-2.5s}.sb-fx i:nth-child(4){--p:31;--d:8.4s;--delay:-6s}.sb-fx i:nth-child(5){--p:39;--d:7.2s;--delay:-3.2s}.sb-fx i:nth-child(6){--p:47;--d:9.6s;--delay:-.5s}.sb-fx i:nth-child(7){--p:55;--d:6.6s;--delay:-5.1s}.sb-fx i:nth-child(8){--p:63;--d:8.8s;--delay:-2s}.sb-fx i:nth-child(9){--p:71;--d:7.7s;--delay:-7s}.sb-fx i:nth-child(10){--p:79;--d:9.1s;--delay:-3.8s}.sb-fx i:nth-child(11){--p:87;--d:6.9s;--delay:-1.6s}.sb-fx i:nth-child(12){--p:94;--d:8.1s;--delay:-4.6s}.sb-fx i:nth-child(13){--p:27;--d:10s;--delay:-8s}.sb-fx i:nth-child(14){--p:68;--d:10.4s;--delay:-6.6s}
.sb-fx i:nth-child(3n){background:#fff1f4}.sb-fx i:nth-child(4n){background:#f6c142}
.sb-fx-confetti i{width:8px;height:12px;border-radius:2px;background:#e2416b}.sb-fx-confetti i:nth-child(3n){background:#f6a51b}.sb-fx-confetti i:nth-child(4n){background:#2fa37a}.sb-fx-confetti i:nth-child(5n){background:#6c5ccf}
.sb-fx-marigold i{width:12px;height:12px;border-radius:50%;background:radial-gradient(circle,#e8820c 30%,#f6b21b 34%)}.sb-fx-marigold i:nth-child(3n){background:radial-gradient(circle,#c4410c 30%,#f08a1c 34%)}
.sb-fx-notes i,.sb-fx-embers i,.sb-fx-sparkle i,.sb-fx-glints i,.sb-fx-fireflies i{top:auto;bottom:-6%;animation-name:sb-rise-fx}
.sb-fx-notes i{width:auto;height:auto;background:none;border-radius:0;color:#ffe0a3;font:20px/1 serif}.sb-fx-notes i::before{content:"♪"}.sb-fx-notes i:nth-child(2n)::before{content:"♫"}
.sb-fx-embers i{width:4px;height:4px;border-radius:50%;background:#ffd27a;box-shadow:0 0 8px 2px #ffae42;bottom:6%;--d:3.8s!important}
.sb-fx-sparkle i,.sb-fx-glints i{width:10px;height:10px;border-radius:0;background:#fff6dc;clip-path:polygon(50% 0,62% 38%,100% 50%,62% 62%,50% 100%,38% 62%,0 50%,38% 38%);animation-name:sb-twinkle-fx;top:calc(var(--p) * .9%);bottom:auto}
.sb-fx-glints i{background:#f3d68c}
.sb-fx-fireflies i{width:6px;height:6px;border-radius:50%;background:#fff3b0;box-shadow:0 0 10px 3px rgba(255,236,150,.8);animation-name:sb-wander;top:calc(30% + var(--p) * .5%);bottom:auto}

/* ---------- Illustration motion ---------- */
/* Static drawings are painted once. Only small .sb-p pieces animate their insides; characters,
   swinging props, corners and skies move as whole composited layers (no scene repaint). */
#invitation-content.sb-book .sb-stage-box{position:absolute;left:50%;bottom:0;height:100%;aspect-ratio:600/640;translate:-50% 0}
#invitation-content.sb-book .sb-stage-box>svg{position:absolute;display:block;overflow:visible;max-width:none}
#invitation-content.sb-book .sb-stage-box>.sb-piece-html{position:absolute;display:block;max-width:none}
#invitation-content.sb-book .sb-stage-box>.sb-piece-static-fallback{display:none}
#invitation-content.sb-book .sb-stage-box>.sb-layer{inset:0;width:100%;height:100%}
/* Own compositor layer per piece, so a flickering flame never repaints the drawing beneath it. */
#invitation-content.sb-book .sb-piece{will-change:transform}
.sb-person-modern{filter:drop-shadow(0 7px 5px rgba(38,20,26,.16)) drop-shadow(0 1px 0 rgba(255,255,255,.35))}
.sb-main-character{opacity:0}
.sb-cinematic-piece{z-index:6;animation:none;filter:drop-shadow(0 18px 13px rgba(35,17,24,.24))}
/* Character poses provide the motion; the entire scene stays anchored. */
.sb-cinematic-piece .sb-cinematic-couple,.sb-cinematic-piece .sb-morph{filter:saturate(1.025) contrast(1.015)}
/* Modern scene art replaces only the old character drawings. The original sets and props remain. */
.sb-stage-box-modern-scene .sb-actor-piece,.sb-stage-box-modern-scene>.sb-trot{opacity:0;animation:none}
.sb-cinematic-scene{z-index:6;will-change:transform}
/* The first pose stays painted until the canvas shows the same pose, so the cast can never
   disappear; the swap happens in one composited frame. */
.sb-morph{position:absolute;overflow:visible}
.sb-morph>img,.sb-morph>canvas{position:absolute;inset:0;display:block;width:100%;height:100%;max-width:none;pointer-events:none}
.sb-morph>canvas{visibility:hidden}
.sb-morph.is-playing>canvas{visibility:visible}
.sb-morph.is-playing>img{visibility:hidden}
.sb-chapter-pheras .sb-stage-box>.sb-p{z-index:7}
.sb-scene-motion-mehndi{animation:sb-scene-gather 5.2s ease-in-out infinite}
.sb-scene-motion-haldi{animation:sb-scene-celebrate 2.8s ease-in-out infinite}
.sb-scene-motion-sangeet{animation:sb-scene-dance 3.2s cubic-bezier(.45,0,.35,1) infinite}
.sb-scene-motion-baraat{animation:sb-scene-procession 1.25s ease-in-out infinite}
.sb-scene-motion-pheras,.sb-scene-motion-nikah,.sb-scene-motion-chapel,.sb-scene-motion-vows{animation:sb-scene-ceremony 6.8s ease-in-out infinite}
.sb-scene-motion-garland{animation:sb-scene-garland 4.2s ease-in-out infinite}
.sb-scene-motion-reception,.sb-scene-motion-welcome,.sb-scene-motion-finale{animation:sb-scene-wave 4.6s ease-in-out infinite}
#invitation-content.sb-book .sb-cinematic-scene{animation:none}
.sb-person-modern .sb-head,.sb-person-modern .sb-arm{transform-box:fill-box;will-change:transform}
.sb-actor-piece .sb-person-modern .sb-head{transform-origin:50% 92%;animation:sb-head-alive 7.2s cubic-bezier(.45,0,.35,1) infinite}
.sb-actor-piece .sb-person-modern .sb-arm-l{transform-origin:88% 10%;animation:sb-hand-alive 6.8s ease-in-out -1.4s infinite}
.sb-actor-piece .sb-person-modern .sb-arm-r{transform-origin:12% 10%;animation:sb-hand-alive-r 7.4s ease-in-out -3.1s infinite}
.sb-person-modern .sb-face{filter:drop-shadow(0 .7px .4px rgba(70,30,20,.12))}
.sb-piece .sb-eyes,.sb-medallion-art .sb-eyes,.sb-cast-preview .sb-eyes{transform-box:fill-box;transform-origin:50% 55%;animation:sb-blink 5.4s infinite}
.sb-p .sb-sway{transform-box:fill-box;transform-origin:50% 0;animation:sb-sway 3.6s ease-in-out infinite alternate}
.sb-p .sb-flicker{transform-box:fill-box;transform-origin:50% 100%;animation:sb-flicker .8s ease-in-out infinite alternate}
.sb-p .sb-twinkle{animation:sb-twinkle 3.2s ease-in-out infinite}
.sb-p .sb-flow{animation:sb-flow 1.1s linear infinite}
.sb-p .sb-ripple{transform-box:fill-box;transform-origin:center;animation:sb-ripple 3s ease-out infinite}
.sb-p .sb-ember{animation:sb-ember 2.6s ease-out infinite}
.sb-p .sb-dove{animation:sb-dove 10s ease-in-out infinite}.sb-p .sb-wing{transform-box:fill-box;transform-origin:50% 100%;animation:sb-wing .5s ease-in-out infinite alternate}
.sb-p .sb-draw{stroke-dasharray:1;stroke-dashoffset:1;animation:sb-draw 3.4s ease forwards}
.sb-drummer .sb-drum-l{transform-box:fill-box;transform-origin:20% 10%;animation:sb-drum .32s ease-in-out infinite alternate}
.sb-drummer .sb-drum-r{transform-box:fill-box;transform-origin:20% 10%;animation:sb-drum .32s ease-in-out -.16s infinite alternate}
.sb-actor-piece{animation:sb-idle 4.6s ease-in-out infinite}
.sb-actor-piece.sb-lean-r{animation:sb-idle-r 6.4s ease-in-out infinite}
.sb-actor-piece.sb-lean-l{animation:sb-idle-l 6.4s ease-in-out infinite}
.sb-actor-piece.sb-bob,.sb-actor-piece.sb-drummer{animation:sb-bob 1.1s ease-in-out infinite alternate}
.sb-actor-piece.sb-bob-late{animation-delay:-.55s}
.sb-actor-piece.sb-twirl{animation:sb-twirl 2.6s ease-in-out infinite}
.sb-piece.sb-trot{animation:sb-trot .9s ease-in-out infinite alternate}
.sb-piece.sb-spin-piece{animation:sb-spin 40s linear infinite}
.sb-piece.sb-swing{animation:sb-sway 5.5s ease-in-out infinite alternate}
.sb-piece.sb-glow-piece{animation:sb-glow 3.4s ease-in-out infinite}
@keyframes sb-glow{0%,100%{opacity:.55}50%{opacity:1}}
#invitation-content.sb-book .sb-front>svg{transform-origin:0 0;animation:sb-corner-sway 7s ease-in-out infinite alternate}
#invitation-content.sb-book .sb-front-tr>svg{transform-origin:100% 0}#invitation-content.sb-book .sb-front-bl>svg{transform-origin:0 100%}#invitation-content.sb-book .sb-front-br>svg{transform-origin:100% 100%}
#invitation-content.sb-book .sb-scene.is-live .sb-backdrop>svg{animation:sb-pan 36s ease-in-out infinite alternate}
.sb-monogram{font:400 34px/1 'Great Vibes',Georgia,serif}
/* Sky effects: a handful of composited HTML sparkles per scene. */
#invitation-content.sb-book .sb-sky{position:absolute;inset:0;z-index:-1;overflow:hidden;pointer-events:none}
.sb-sky i{position:absolute;left:var(--x);top:var(--y);display:block;width:9px;height:9px;opacity:0;animation:sb-twinkle-fx var(--d,3.4s) ease-in-out var(--delay,0s) infinite}
.sb-sky i:nth-child(1){--x:7%;--y:10%;--d:3.1s;--delay:-.4s}.sb-sky i:nth-child(2){--x:22%;--y:24%;--d:4.2s;--delay:-1.9s}.sb-sky i:nth-child(3){--x:36%;--y:6%;--d:3.6s;--delay:-2.6s}.sb-sky i:nth-child(4){--x:51%;--y:18%;--d:4.8s;--delay:-.9s}.sb-sky i:nth-child(5){--x:66%;--y:9%;--d:3.3s;--delay:-3.1s}.sb-sky i:nth-child(6){--x:81%;--y:21%;--d:4.4s;--delay:-1.2s}.sb-sky i:nth-child(7){--x:93%;--y:7%;--d:3.9s;--delay:-2.2s}.sb-sky i:nth-child(8){--x:14%;--y:38%;--d:5s;--delay:-3.6s}
.sb-sky i:nth-child(9){--x:44%;--y:33%;--d:3.5s;--delay:-.2s}.sb-sky i:nth-child(10){--x:73%;--y:36%;--d:4.6s;--delay:-2.9s}.sb-sky i:nth-child(11){--x:88%;--y:44%;--d:3.7s;--delay:-1.5s}.sb-sky i:nth-child(12){--x:29%;--y:48%;--d:4.1s;--delay:-3.3s}.sb-sky i:nth-child(13){--x:58%;--y:52%;--d:3.2s;--delay:-.7s}.sb-sky i:nth-child(14){--x:4%;--y:58%;--d:4.9s;--delay:-2.4s}.sb-sky i:nth-child(15){--x:96%;--y:62%;--d:3.8s;--delay:-1.1s}.sb-sky i:nth-child(16){--x:47%;--y:3%;--d:4.3s;--delay:-3.8s}
.sb-sky-stars i{background:#fff7dc;clip-path:polygon(50% 0,60% 40%,100% 50%,60% 60%,50% 100%,40% 60%,0 50%,40% 40%)}
.sb-sky-lights i{width:12px;height:12px;border-radius:50%;background:radial-gradient(circle,#fff6d0 0 28%,rgba(255,214,140,.65) 42%,transparent 70%)}
.sb-sky-bokeh i{width:54px;height:54px;border-radius:50%;background:radial-gradient(circle,rgba(255,255,255,.7),rgba(255,255,255,0) 68%);animation-name:sb-bokeh;--d:7s}
.sb-sky-glints i{top:calc(62% + var(--y) * .35);width:28px;height:2px;border-radius:2px;background:#fff;animation-name:sb-shine}
.sb-sky-pollen i{width:5px;height:5px;border-radius:50%;background:#fff8d6;box-shadow:0 0 6px #fff1a8;animation-name:sb-wander}
.sb-sky-fireworks i{top:calc(var(--y) * .9);width:150px;height:150px;margin:-75px 0 0 -75px;border-radius:50%;background:repeating-conic-gradient(var(--c,#ffcf5c) 0 3deg,transparent 3deg 22deg);-webkit-mask:radial-gradient(circle,transparent 16%,#000 18%,#000 46%,transparent 50%);mask:radial-gradient(circle,transparent 16%,#000 18%,#000 46%,transparent 50%);animation-name:sb-burst;--d:3.2s}
.sb-sky-fireworks i:nth-child(2){--c:#ff6b9a;--x:78%}.sb-sky-fireworks i:nth-child(3){--c:#7fd6ff;--x:46%}.sb-sky-fireworks i:nth-child(4){--c:#b892ff;--x:30%}.sb-sky-fireworks i:nth-child(5){--c:#ffd27a;--x:64%}
.sb-sky-rays i{top:-10%;width:80px;height:120%;background:linear-gradient(rgba(255,246,216,.5),transparent 80%);transform:rotate(14deg);animation-name:sb-ray;--d:6s}
.sb-map .sb-map-pin{transform-box:fill-box;transform-origin:50% 100%;animation:sb-pin 2.4s ease-in-out infinite}.sb-map .sb-map-ripple{transform-box:fill-box;transform-origin:center;animation:sb-ripple 2.4s ease-out infinite}
@keyframes sb-idle{0%,100%{transform:translate3d(0,0,0) rotate(-.15deg)}48%{transform:translate3d(0,-3px,0) rotate(.2deg)}72%{transform:translate3d(1px,-1px,0) rotate(.1deg)}}
@keyframes sb-idle-r{0%,100%{transform:translateY(0) rotate(-.25deg)}45%,60%{transform:translateY(-2px) rotate(1.05deg)}}
@keyframes sb-idle-l{0%,100%{transform:translateY(0) rotate(.25deg)}45%,60%{transform:translateY(-2px) rotate(-1.05deg)}}
@keyframes sb-cinematic-alive{0%,100%{transform:translateY(0) rotate(-.18deg)}48%,58%{transform:translateY(-4px) rotate(.18deg)}}
@keyframes sb-scene-gather{0%,100%{transform:translateY(0) rotate(-.12deg)}50%{transform:translateY(-3px) rotate(.12deg)}}
@keyframes sb-scene-celebrate{0%,100%{transform:translateY(0) rotate(-.25deg)}45%{transform:translateY(-6px) rotate(.28deg)}70%{transform:translateY(-2px) rotate(-.1deg)}}
@keyframes sb-scene-dance{0%,100%{transform:translateY(0) rotate(-.7deg)}25%{transform:translateY(-5px) rotate(.65deg)}55%{transform:translateY(-2px) rotate(-.35deg)}78%{transform:translateY(-6px) rotate(.55deg)}}
@keyframes sb-scene-procession{0%,100%{transform:translate(0,0) rotate(-.15deg)}50%{transform:translate(3px,-7px) rotate(.18deg)}}
@keyframes sb-scene-ceremony{0%,100%{transform:translateY(0) scale(1)}52%{transform:translateY(-2px) scale(1.006)}}
@keyframes sb-scene-garland{0%,100%{transform:translateY(0) rotate(-.2deg)}50%{transform:translateY(-4px) rotate(.2deg)}}
@keyframes sb-scene-wave{0%,100%{transform:translateY(0) rotate(-.3deg)}45%{transform:translateY(-4px) rotate(.35deg)}70%{transform:translateY(-2px) rotate(-.18deg)}}
@keyframes sb-head-alive{0%,100%{transform:rotate(0deg) translateY(0)}38%{transform:rotate(.65deg) translateY(-.8px)}66%{transform:rotate(-.45deg) translateY(0)}}
@keyframes sb-hand-alive{0%,100%{transform:rotate(0)}50%{transform:rotate(.65deg)}}
@keyframes sb-hand-alive-r{0%,100%{transform:rotate(0)}50%{transform:rotate(-.65deg)}}
@keyframes sb-corner-sway{from{transform:rotate(0)}to{transform:rotate(1.4deg)}}
@keyframes sb-pan{from{transform:translateX(0) scale(1)}to{transform:translateX(-1.2%) scale(1.035)}}
@keyframes sb-bokeh{0%,100%{opacity:.15;transform:translateY(0) scale(.9)}50%{opacity:.85;transform:translateY(-18px) scale(1.05)}}
@keyframes sb-shine{0%,100%{opacity:0;transform:scaleX(.3)}50%{opacity:.9;transform:scaleX(1)}}
@keyframes sb-burst{0%{opacity:0;transform:scale(.15)}15%{opacity:1}60%{opacity:1;transform:scale(1)}100%{opacity:0;transform:scale(1.12)}}
@keyframes sb-ray{0%,100%{opacity:.25}50%{opacity:.8}}

/* Hero entrance after the opening, and chapter entrances on scroll. */
.sb-hero.is-entering .sb-stage{animation:sb-stage-in 1.3s cubic-bezier(.2,.8,.2,1) both}
.sb-hero.is-entering .sb-backdrop{animation:sb-zoom-out 2.6s cubic-bezier(.2,.8,.2,1) both}
.sb-hero.is-entering .sb-front-tl,.sb-hero.is-entering .sb-front-bl{animation:sb-corner-l 1.4s .2s cubic-bezier(.2,.8,.2,1) both}
.sb-hero.is-entering .sb-front-tr,.sb-hero.is-entering .sb-front-br{animation:sb-corner-r 1.4s .2s cubic-bezier(.2,.8,.2,1) both}
.sb-hero.is-entering .sb-copy>:not(h1){animation:sb-fade-up .9s both}
.sb-hero.is-entering .sb-copy .sb-sacred{animation-delay:.3s}.sb-hero.is-entering .sb-copy .sb-eyebrow{animation-delay:.5s}.sb-hero.is-entering .sb-copy .sb-date{animation-delay:2.6s}.sb-hero.is-entering .sb-copy .sb-venue{animation-delay:2.9s}
.sb-hero.is-entering .sb-copy .sb-hosts,.sb-hero.is-entering .sb-copy .sb-weds{animation:sb-fade-up .8s both}
.sb-hero.is-entering .sb-copy .sb-hosts{animation-delay:1.5s}.sb-hero.is-entering .sb-copy .sb-weds{animation-delay:1.3s}.sb-hero.is-entering .sb-copy .sb-hosts:last-child{animation-delay:2.4s}
.sb-js .sb-chapter:not(.is-entered) .sb-plaque,.sb-js .sb-chapter:not(.is-entered) .sb-stage{opacity:0}
.sb-chapter.is-entered .sb-plaque{animation:sb-drop 1s cubic-bezier(.2,1.4,.4,1) both}
.sb-chapter.is-entered .sb-stage{animation:sb-stage-in 1.2s .15s cubic-bezier(.2,.8,.2,1) both}
.sb-chapter.is-entered .sb-backdrop{animation:sb-zoom-out 6s ease-out both}
.sb-typing .sb-ch{opacity:0;animation:sb-type .05s steps(1) forwards;animation-delay:calc(var(--i) * 75ms + var(--start,0ms))}
.sb-typing.sb-typing-done .sb-ch{opacity:1;animation:none}
.sb-wipe{animation:sb-wipe 1.4s cubic-bezier(.4,0,.2,1) var(--start,0ms) both}
[dir=rtl] .sb-wipe{animation-name:sb-wipe-rtl}

/* Paused, offscreen, or reduced motion. */
.sb-scene:not(.is-live) *,.v-atmosphere-paused .sb-book *,.v-tab-hidden .sb-book *{animation-play-state:paused!important}
.sb-scene:not(.is-live) .sb-fx{visibility:hidden}
#invitation-content.sb-book[data-motion=none] *,#invitation-content.sb-book[data-motion=none] .sb-fx{animation:none!important}
#invitation-content.sb-book[data-motion=none] .sb-fx{display:none}
#invitation-content.sb-book[data-motion=none] .sb-stage-box>.sb-piece-html{display:none}
#invitation-content.sb-book[data-motion=none] .sb-stage-box>.sb-piece-static-fallback{display:block}
#invitation-content.sb-book[data-motion=gentle] .sb-fx i:nth-child(n+8){display:none}
@media (prefers-reduced-motion:reduce){.sb-book *,.sb-opening *,.sb-thumb *,.sb-cast-preview *{animation:none!important;transition:none!important}.sb-book .sb-fx{display:none}.sb-js .sb-chapter .sb-plaque,.sb-js .sb-chapter .sb-stage{opacity:1}.sb-draw{stroke-dashoffset:0}.sb-stage-box>.sb-piece-html{display:none!important}.sb-stage-box>.sb-piece-static-fallback{display:block!important}}

/* ---------- Keyframes ---------- */
@keyframes sb-blink{0%,92%,100%{transform:scaleY(1)}95%{transform:scaleY(.08)}}
@keyframes sb-breathe{0%,100%{transform:scaleY(1)}50%{transform:scaleY(1.012)}}
@keyframes sb-lean-r{0%,100%{transform:rotate(0)}40%,60%{transform:rotate(5deg)}}
@keyframes sb-lean-l{0%,100%{transform:rotate(0)}40%,60%{transform:rotate(-5deg)}}
@keyframes sb-veil{from{transform:skewX(0)}to{transform:skewX(1.6deg)}}
@keyframes sb-sway{from{transform:rotate(-3.5deg)}to{transform:rotate(3.5deg)}}
@keyframes sb-flicker{0%{transform:scale(1,1);opacity:.92}50%{transform:scale(.92,1.08)}100%{transform:scale(1.04,.94);opacity:1}}
@keyframes sb-twinkle{0%,100%{opacity:.25}50%{opacity:1}}
@keyframes sb-drift{from{transform:translateX(-50px)}to{transform:translateX(60px)}}
@keyframes sb-billow{from{transform:skewX(0) scaleX(1)}to{transform:skewX(2.4deg) scaleX(1.03)}}
@keyframes sb-pulse{0%,100%{transform:scale(1);opacity:.9}50%{transform:scale(1.06);opacity:1}}
@keyframes sb-flow{to{stroke-dashoffset:-44}}
@keyframes sb-ripple{from{transform:scale(.4);opacity:.9}to{transform:scale(1.6);opacity:0}}
@keyframes sb-ember{from{transform:translateY(0);opacity:1}to{transform:translateY(-120px) translateX(12px);opacity:0}}
@keyframes sb-firework{0%{transform:scale(.1);opacity:0}12%{opacity:1}55%{transform:scale(1);opacity:1}100%{transform:scale(1.15);opacity:0}}
@keyframes sb-dove{0%{transform:translate(-60px,30px)}50%{transform:translate(40px,-20px)}100%{transform:translate(-60px,30px)}}
@keyframes sb-wing{from{transform:rotate(0)}to{transform:rotate(-24deg)}}
@keyframes sb-spin{to{transform:rotate(360deg)}}
@keyframes sb-float{0%,100%{transform:translateY(0)}50%{transform:translateY(-10px)}}
@keyframes sb-trot{from{transform:translateY(0)}to{transform:translateY(-6px)}}
@keyframes sb-draw{to{stroke-dashoffset:0}}
@keyframes sb-bob{from{transform:translateY(0) rotate(-.4deg)}to{transform:translateY(-5px) rotate(.6deg)}}
@keyframes sb-twirl{0%,100%{transform:rotate(-1.8deg)}50%{transform:rotate(2deg) translateY(-4px)}}
@keyframes sb-drum{from{transform:rotate(0)}to{transform:rotate(-14deg)}}
@keyframes sb-pin{0%,100%{transform:translateY(0)}50%{transform:translateY(-8px)}}
@keyframes sb-fall{0%{transform:translate(0,0) rotate(0);opacity:0}8%{opacity:.95}100%{transform:translate(40px,110vh) rotate(540deg);opacity:.8}}
@keyframes sb-rise-fx{0%{transform:translate(0,0);opacity:0}10%{opacity:1}100%{transform:translate(18px,-90vh);opacity:0}}
@keyframes sb-twinkle-fx{0%,100%{transform:scale(.3);opacity:0}50%{transform:scale(1.2);opacity:1}}
@keyframes sb-wander{0%,100%{transform:translate(0,0);opacity:.2}25%{transform:translate(30px,-20px);opacity:1}50%{transform:translate(-10px,-40px);opacity:.4}75%{transform:translate(-30px,-10px);opacity:1}}
@keyframes sb-stage-in{from{opacity:0;transform:translateY(48px) scale(.96)}to{opacity:1;transform:none}}
@keyframes sb-zoom-out{from{transform:scale(1.12)}to{transform:none}}
@keyframes sb-corner-l{from{opacity:0;transform:translate(-30%,-10%)}to{opacity:1;transform:none}}
@keyframes sb-corner-r{from{opacity:0;transform:translate(30%,-10%)}to{opacity:1;transform:none}}
@keyframes sb-fade-up{from{opacity:0;transform:translateY(14px)}to{opacity:1;transform:none}}
@keyframes sb-drop{0%{opacity:0;transform:translateY(-40px) rotate(-3deg)}60%{opacity:1}100%{opacity:1;transform:none}}
@keyframes sb-type{to{opacity:1}}
@keyframes sb-wipe{from{clip-path:inset(0 100% 0 0)}to{clip-path:inset(0 0 0 0)}}
@keyframes sb-wipe-rtl{from{clip-path:inset(0 0 0 100%)}to{clip-path:inset(0 0 0 0)}}
@keyframes sb-flip{0%{transform:rotateX(0)}50%{transform:rotateX(80deg);opacity:.4}100%{transform:rotateX(0)}}
@keyframes sb-heart-pop{0%{transform:scale(.9)}60%{transform:scale(1.06)}100%{transform:scale(1)}}
@keyframes sb-out{to{opacity:0;visibility:hidden}}

/* ---------- Openings ---------- */
.sb-opening{position:fixed;inset:0;z-index:90;display:flex;align-items:center;justify-content:center;overflow:hidden;color:#fff;font-family:var(--sans,'Segoe UI',sans-serif);background:var(--paper)}
.sb-opening[hidden]{display:none}
.sb-opening.is-opening{pointer-events:none}
.sb-opening.is-resetting,.sb-opening.is-resetting *{animation:none!important;transition:none!important}
.sb-box{position:absolute;left:50%;top:50%;translate:-50% -50%;height:100%;aspect-ratio:3/4}
.sb-box>div{position:absolute}
.sb-box svg{display:block;width:100%;height:100%;overflow:visible}
.sb-open-copy{position:relative;z-index:6;width:min(92vw,560px);text-align:center;text-shadow:0 2px 14px rgba(0,0,0,.35)}
.sb-open-eyebrow{margin:0 0 8px;font:700 12px/1.5 var(--sans);letter-spacing:.24em;text-transform:uppercase}
.sb-open-names{margin:0;font:400 clamp(40px,11vw,74px)/1.05 var(--sb-name-font);overflow-wrap:anywhere}
.sb-open-names span{display:block}.sb-open-names i{display:block;font:italic 400 .42em/1.4 var(--serif)}
.sb-open-date{margin:8px 0 0;font:500 17px/1.4 var(--serif)}
.sb-opening .sb-sacred{display:block;margin:0 auto 8px;font-size:26px;color:inherit}
.sb-opening .v-sacred-art.sb-sacred{width:70px;height:70px}.sb-opening .v-sacred-art img{width:100%;height:100%;object-fit:contain}
.sb-open-button{position:absolute;z-index:7;left:50%;bottom:calc(40px + env(safe-area-inset-bottom,0px));display:inline-flex;white-space:nowrap;align-items:center;gap:10px;min-height:52px;padding:14px 28px;transform:translateX(-50%);border:1px solid rgba(255,255,255,.6);border-radius:999px;background:linear-gradient(135deg,var(--accent),color-mix(in srgb,var(--accent) 60%,#000));color:#fff;font:700 14px/1.2 var(--sans);letter-spacing:.14em;text-transform:uppercase;box-shadow:0 12px 32px rgba(0,0,0,.28);cursor:pointer}
.sb-open-button::after{content:"";position:absolute;inset:-6px;border-radius:inherit;border:1px solid rgba(255,255,255,.55);animation:sb-halo 2.4s ease-out infinite;pointer-events:none}
.sb-open-button:focus-visible,.sb-wax-seal:focus-visible,.sb-medallion-button:focus-visible{outline:3px solid #fff;outline-offset:4px}
.sb-open-hint{position:absolute;z-index:7;left:0;right:0;bottom:calc(26px + env(safe-area-inset-bottom,0px));margin:0;text-align:center;font:600 13px/1.4 var(--sans);letter-spacing:.14em;text-transform:uppercase;animation:sb-twinkle 2.4s ease-in-out infinite}
.sb-opening.is-opening .sb-open-button,.sb-opening.is-opening .sb-open-copy,.sb-opening.is-opening .sb-open-hint{animation:sb-out .45s forwards}
.sb-opening.is-opening .sb-open-button::after{animation:none}
@keyframes sb-halo{from{transform:scale(1);opacity:.9}to{transform:scale(1.25);opacity:0}}
.sb-petal-rain{position:absolute;inset:0;z-index:5;pointer-events:none;overflow:hidden}
.sb-petal-rain i{position:absolute;top:-5%;left:var(--x);width:14px;height:10px;border-radius:60% 0 60% 0;background:#e64a6b;transform:scale(var(--s));animation:sb-fall var(--d) linear var(--delay) infinite}
.sb-petal-rain i:nth-child(3n){background:#f6a51b}.sb-petal-rain i:nth-child(4n){background:#fff4e0}

/* Palace / jaali gates */
.sb-open-gates{background:#c98b45;perspective:1400px}
.sb-open-gates.sb-variant-jaali{background:#efe5d1}
.sb-open-gates .sb-cam{transform-origin:50% 64%;perspective:1200px}
.sb-gate-beyond{inset:0}
.sb-gate-rays{left:25%;top:33.75%;width:50%;height:63.75%;background:repeating-conic-gradient(from 0deg at 50% 70%,rgba(255,250,225,.75) 0deg 6deg,transparent 6deg 18deg);opacity:0;-webkit-mask:radial-gradient(circle at 50% 70%,#000 20%,transparent 70%);mask:radial-gradient(circle at 50% 70%,#000 20%,transparent 70%)}
.sb-gate-door{top:33.75%;width:25%;height:63.75%;transform-style:preserve-3d;backface-visibility:hidden}
.sb-variant-jaali .sb-gate-door{top:29.5%;height:68%}
.sb-door-l{left:25%;transform-origin:0 50%}.sb-door-r{left:50%;transform-origin:100% 50%}
.sb-gate-frame{inset:0;pointer-events:none}
/* A warm glow from beyond the gates, never a white-out: the scene fades in through gold, not through a flash. */
.sb-bloom{position:absolute;inset:0;z-index:4;background:radial-gradient(circle at 50% 60%,#fff0cf,#f3c77e 60%,#d79a4f);opacity:0;pointer-events:none}
.sb-variant-jaali .sb-bloom{background:radial-gradient(circle at 50% 60%,#fff1d6,#e8c879 70%,#1c2a55)}
.sb-gate-plaque{position:absolute;top:calc(14px + env(safe-area-inset-top,0px));left:50%;translate:-50% 0;color:#fff8e7}
.sb-plaque-card{display:inline-flex;flex-direction:column;gap:2px;margin:6px auto 10px;padding:12px 26px;border-radius:12px;background:linear-gradient(#5a1a24,#3b0f17);box-shadow:inset 0 0 0 2px #e5b04f,inset 0 0 0 6px #5a1a24,inset 0 0 0 7px #e5b04f,0 10px 30px rgba(0,0,0,.35)}
.sb-plaque-card strong{font:400 clamp(24px,6.6vw,34px)/1.1 'Great Vibes',Georgia,serif;color:#f6d892}
.sb-plaque-card span{font:600 12px/1.4 var(--sans);letter-spacing:.16em;text-transform:uppercase;color:#fff3d6}
.sb-variant-jaali .sb-plaque-card{background:linear-gradient(#0f5a4a,#0a3d33);box-shadow:inset 0 0 0 2px #e3c27a,inset 0 0 0 6px #0f5a4a,inset 0 0 0 7px #e3c27a,0 10px 30px rgba(0,0,0,.35)}
.sb-gate-plaque .sb-open-names{font-size:clamp(28px,min(8vw,5.2vh),50px)}
.sb-gate-plaque .sb-open-names span,.sb-gate-plaque .sb-open-names i{display:inline}.sb-gate-plaque .sb-open-names i{margin:0 .25em;font-size:.6em}
.sb-variant-jaali .sb-gate-plaque{color:#0f2a4a;text-shadow:0 1px 0 #fff}
.sb-open-gates.is-opening .sb-door-l{animation:sb-door-l 1.35s .25s cubic-bezier(.45,0,.25,1) forwards}
.sb-open-gates.is-opening .sb-door-r{animation:sb-door-r 1.35s .25s cubic-bezier(.45,0,.25,1) forwards}
.sb-open-gates.is-opening .sb-gate-rays{animation:sb-rays 2.4s .3s ease-out forwards}
.sb-open-gates.is-opening .sb-cam{animation:sb-cam-in 1.7s .85s cubic-bezier(.55,0,.35,1) forwards}
.sb-open-gates.is-opening .sb-bloom{animation:sb-bloom 1.2s 1.35s ease-in-out forwards}
.sb-open-gates.is-opening{animation:sb-out .65s 2.2s ease-in-out forwards}
@keyframes sb-door-l{to{transform:rotateY(-108deg)}}
@keyframes sb-door-r{to{transform:rotateY(108deg)}}
@keyframes sb-rays{0%{opacity:0;transform:scale(.6) rotate(0)}40%{opacity:1}100%{opacity:1;transform:scale(1.5) rotate(20deg)}}
@keyframes sb-cam-in{to{transform:scale(2.7)}}
@keyframes sb-bloom{from{opacity:0}to{opacity:.82}}

/* Envelope and wax seal */
.sb-open-envelope{background:radial-gradient(circle at 50% 30%,#fff1f3,#f6d3dc 60%,#e8b3c1)}
.sb-table{position:absolute;inset:0;pointer-events:none}
.sb-table>svg{position:absolute;bottom:0;width:min(44vw,300px);height:auto}.sb-table>svg:first-child{left:0}.sb-table>svg:last-child{right:0}
.sb-env-wrap{position:relative;z-index:3;width:min(84vw,430px);aspect-ratio:3/4;perspective:1500px}
.sb-env{position:absolute;inset:0;transform-style:preserve-3d}
.sb-env-back{position:absolute;inset:0;border-radius:10px;background:linear-gradient(160deg,#f3b9c8,#e597ab);box-shadow:0 30px 60px rgba(120,40,70,.3)}
.sb-env-card{position:absolute;left:6%;right:6%;top:8%;bottom:6%;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:20px;border-radius:6px;background:#fffaf3;color:#7a3a52;text-align:center;box-shadow:0 6px 20px rgba(120,40,70,.18);z-index:1}
.sb-env-card{overflow:hidden}
.sb-env-card .sb-open-names{font-family:'Great Vibes',Georgia,serif;font-size:clamp(30px,9vw,56px);color:#b04b6e}
.sb-card-ornament{width:110px;height:24px;margin-bottom:8px;background:center/contain no-repeat url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 120 26'%3E%3Cpath d='M2 13H44M76 13H118' stroke='%23d9a86c' stroke-width='1.4'/%3E%3Cpath d='M60 22C48 13 50 4 56 4C59 4 60 7 60 8C60 7 61 4 64 4C70 4 72 13 60 22Z' fill='%23d9a86c'/%3E%3C/svg%3E")}
.sb-env-pocket{position:absolute;inset:0;z-index:2;border-radius:10px;background:linear-gradient(170deg,#f6c6d3,#eaa3b7);clip-path:polygon(0 0,50% 54%,100% 0,100% 100%,0 100%);box-shadow:inset 0 -10px 30px rgba(140,50,80,.15)}
.sb-env-pocket::before{content:"";position:absolute;inset:0;background:linear-gradient(to top right,transparent 49.6%,rgba(140,50,80,.18) 50%,transparent 50.6%),linear-gradient(to top left,transparent 49.6%,rgba(140,50,80,.18) 50%,transparent 50.6%)}
.sb-env-pocket span{position:absolute;left:0;right:0;bottom:14%;text-align:center;font:400 clamp(22px,6vw,30px)/1.2 'Great Vibes',Georgia,serif;color:#9b3d5f;text-shadow:0 1px 0 rgba(255,255,255,.6)}
.sb-env-flap{position:absolute;left:0;right:0;top:0;height:56%;z-index:3;transform-origin:50% 0;clip-path:polygon(0 0,100% 0,50% 100%);background:linear-gradient(180deg,#f8cbd7,#ef9fb5);filter:drop-shadow(0 4px 6px rgba(120,40,70,.25));backface-visibility:visible}
.sb-wax-seal{position:absolute;z-index:4;left:50%;top:56%;width:clamp(76px,22vw,104px);aspect-ratio:1;margin:0;padding:0;translate:-50% -50%;border:0;border-radius:47% 53% 50% 50%/52% 48% 52% 48%;background:radial-gradient(circle at 35% 30%,#f8dc8c,#d4a03a 45%,#9c6a1c 85%);box-shadow:0 0 0 5px rgba(212,160,58,.45),0 8px 18px rgba(80,40,10,.4),inset 0 -4px 10px rgba(80,40,10,.4);color:#6e4510;font:400 clamp(24px,7vw,32px)/1 'Great Vibes',Georgia,serif;cursor:pointer}
.sb-wax-seal span{display:block;text-shadow:0 1px 0 rgba(255,240,200,.7)}.sb-wax-seal i{font-style:normal;font-size:.7em;margin:0 2px}
.sb-wax-seal::after{content:"";position:absolute;inset:-12px;border-radius:50%;border:2px solid rgba(255,255,255,.7);animation:sb-halo 2.2s ease-out infinite;pointer-events:none}
.sb-open-envelope .sb-open-hint{color:#9b3d5f}
.sb-open-envelope.is-opening .sb-wax-seal{animation:sb-seal .55s forwards}
.sb-open-envelope.is-opening .sb-wax-seal::after{animation:none;opacity:0}
.sb-open-envelope.is-opening .sb-env-flap{animation:sb-flap .8s .35s cubic-bezier(.5,0,.3,1) forwards}
.sb-open-envelope.is-opening .sb-env-card{animation:sb-card-up .9s 1.1s cubic-bezier(.3,0,.2,1) forwards,sb-card-fill .85s 2s cubic-bezier(.6,0,.3,1) forwards}
.sb-open-envelope.is-opening .sb-env-back,.sb-open-envelope.is-opening .sb-env-pocket,.sb-open-envelope.is-opening .sb-env-flap{animation-fill-mode:forwards}
.sb-open-envelope.is-opening .sb-env-pocket,.sb-open-envelope.is-opening .sb-env-back{animation:sb-env-drop .8s 1.95s ease-in forwards}
.sb-open-envelope.is-opening .sb-table{animation:sb-out .6s 2s forwards}
.sb-open-envelope.is-opening{animation:sb-out .45s 2.65s forwards}
@keyframes sb-seal{0%{transform:scale(1)}35%{transform:scale(1.18) rotate(-8deg)}100%{transform:scale(.4) rotate(30deg) translateY(-40px);opacity:0}}
@keyframes sb-flap{0%{transform:rotateX(0);z-index:3}49%{z-index:3}50%{z-index:0}100%{transform:rotateX(180deg);z-index:0}}
@keyframes sb-card-up{to{transform:translateY(-58%)}}
@keyframes sb-card-fill{from{transform:translateY(-58%)}to{transform:translateY(-10%) scale(3.4);opacity:.2}}
@keyframes sb-env-drop{to{transform:translateY(60%);opacity:0}}

/* Santorini portal: door, then a camera move through the room and window. */
.sb-open-portal{background:#f4f1ea}
.sb-portal-vista{position:absolute;inset:0}.sb-portal-vista svg{width:100%;height:100%;display:block}
.sb-portal-cam{transform-origin:50% 69%;perspective:1200px}
.sb-portal-room,.sb-portal-wall{inset:0}
.sb-portal-room{transform-origin:50% 54%}
.sb-portal-door{left:31.667%;top:40%;width:36.667%;height:58.75%;transform-origin:0 50%;transform-style:preserve-3d}
.sb-open-portal>.sb-open-copy{position:absolute;top:calc(22px + env(safe-area-inset-top,0px));left:50%;translate:-50% 0;color:#1d3d5c;text-shadow:0 1px 0 #fff,0 0 18px #fff}
.sb-open-portal .sb-open-names{font-family:'Great Vibes',Georgia,serif;color:#a77a1f}
.sb-open-portal.is-opening .sb-portal-door{animation:sb-door-l 1s .2s cubic-bezier(.45,0,.25,1) forwards}
.sb-open-portal.is-opening .sb-portal-cam{animation:sb-cam-portal 1.3s .8s cubic-bezier(.5,0,.3,1) forwards}
.sb-open-portal.is-opening .sb-portal-wall,.sb-open-portal.is-opening .sb-portal-door{animation-fill-mode:forwards}
.sb-open-portal.is-opening .sb-portal-wall{animation:sb-out .4s 1.65s forwards}
.sb-open-portal.is-opening .sb-portal-room{animation:sb-room 1.2s 2s cubic-bezier(.55,0,.3,1) forwards}
.sb-open-portal.is-opening .sb-portal-vista{animation:sb-zoom-out 3.4s ease-out both}
.sb-open-portal.is-opening{animation:sb-out .4s 3.1s forwards}
@keyframes sb-cam-portal{to{transform:scale(2.05)}}
@keyframes sb-room{0%{transform:scale(1)}80%{opacity:1}100%{transform:scale(2.8);opacity:0}}

/* Embossed sage doors and pearl curtains */
.sb-open-doors{background:transparent}
.sb-panel{position:absolute;top:0;bottom:0;width:50.5%;z-index:3;box-shadow:0 0 40px rgba(0,0,0,.25)}
.sb-panel svg{width:100%;height:100%;display:block}
.sb-panel-l{left:0}.sb-panel-r{right:0}
.sb-curtain{position:absolute;top:0;bottom:0;width:50.5%;z-index:2;background:repeating-linear-gradient(90deg,#fbf6ec 0 18px,#efe5d2 26px,#fbf6ec 36px),#fbf6ec;box-shadow:inset 0 -60px 80px rgba(150,120,80,.18)}
.sb-curtain::before{content:"";position:absolute;inset:0;background:radial-gradient(circle,#fff 1.6px,transparent 2.4px) 8px 0/36px 22px;opacity:.9}
.sb-curtain::after{content:"";position:absolute;left:0;right:0;top:0;height:46px;background:repeating-radial-gradient(circle at 18px -10px,#f6eedd 0 26px,#e6d8bd 27px 30px);background-size:36px 46px}
.sb-curtain-l{left:0;transform-origin:0 50%}.sb-curtain-r{right:0;transform-origin:100% 50%}
.sb-doors-copy{position:absolute;top:calc(20px + env(safe-area-inset-top,0px));left:50%;translate:-50% 0;color:#f8f6ef;text-shadow:0 1px 8px rgba(40,60,30,.5)}
.sb-medallion-button{position:absolute;z-index:6;left:50%;top:50%;width:clamp(170px,48vw,240px);aspect-ratio:1;translate:-50% -50%;margin:0;padding:0;border:0;border-radius:50%;background:radial-gradient(circle,#fffdf6 55%,#f1e8d4 70%,#e3d4b2);box-shadow:0 0 0 6px #f6efdf,0 0 0 8px #c9a961,0 18px 40px rgba(30,40,20,.35);color:#4f6b4a;cursor:pointer}
.sb-medallion-ring{position:absolute;inset:10px;border-radius:50%;border:1.5px dashed #c9a961}
.sb-medallion-ring::after{content:"";position:absolute;inset:-26px;border-radius:50%;border:2px solid rgba(255,255,255,.7);animation:sb-halo 2.4s ease-out infinite}
.sb-medallion-text{position:relative;display:flex;flex-direction:column;align-items:center;gap:2px;padding:0 18%}
.sb-medallion-text b{font:400 clamp(40px,11vw,56px)/1 'Great Vibes',Georgia,serif}.sb-medallion-text b i{font-size:.6em;font-style:normal}
.sb-medallion-text small{font:600 11px/1.3 var(--sans);letter-spacing:.08em;overflow-wrap:anywhere}.sb-medallion-text em{font:italic 400 13px/1.3 var(--serif);color:#7d8a6f}
.sb-open-doors .sb-open-hint{color:#f8f6ef;text-shadow:0 1px 6px rgba(40,60,30,.6)}
.sb-open-doors.is-opening .sb-medallion-button{animation:sb-out .5s forwards}
.sb-open-doors.is-opening .sb-panel-l{animation:sb-panel-l 1.05s .3s cubic-bezier(.6,0,.3,1) forwards}
.sb-open-doors.is-opening .sb-panel-r{animation:sb-panel-r 1.05s .3s cubic-bezier(.6,0,.3,1) forwards}
.sb-open-doors.is-opening .sb-curtain{animation:sb-gather 1.25s 1.3s cubic-bezier(.6,0,.3,1) forwards}
.sb-open-doors.is-opening{animation:sb-out .5s 2.55s forwards}
@keyframes sb-panel-l{to{transform:translateX(-104%)}}
@keyframes sb-panel-r{to{transform:translateX(104%)}}
@keyframes sb-gather{to{transform:scaleX(.12) skewY(-2deg);opacity:.85}}

/* Kanjivaram silk curtain */
.sb-open-curtain{background:transparent}
.sb-silk{position:absolute;inset:0;z-index:2;transform-origin:50% 0;box-shadow:0 20px 50px rgba(0,0,0,.35)}
.sb-silk svg{width:100%;height:100%;display:block}
.sb-silk::after{content:"";position:absolute;inset:0;background:repeating-linear-gradient(90deg,rgba(255,255,255,.07) 0 30px,rgba(0,0,0,.12) 60px,rgba(255,255,255,.07) 90px)}
.sb-rod{position:absolute;z-index:3;left:0;right:0;top:0;height:120px;pointer-events:none}.sb-rod svg{width:100%;height:100%}
.sb-open-curtain>.sb-open-copy{color:#fff4dc}
.sb-open-curtain .sb-open-names{color:#ffd98a}
.sb-lamp-button{background:linear-gradient(135deg,#d9a63e,#a5164f)}
.sb-lamp{display:inline-block;width:22px;height:40px}.sb-lamp svg{width:100%;height:100%;overflow:visible}
.sb-open-curtain.is-opening .sb-silk{animation:sb-lift 1.6s .4s cubic-bezier(.6,0,.25,1) forwards}
.sb-open-curtain.is-opening .sb-rod{animation:sb-out .5s 1.7s forwards}
.sb-open-curtain.is-opening{animation:sb-out .5s 2.2s forwards}
@keyframes sb-lift{0%{transform:translateY(0) scaleY(1)}30%{transform:translateY(-6%) scaleY(.97) skewX(-1deg)}100%{transform:translateY(-108%) scaleY(.9) skewX(1deg)}}

/* ---------- Wider screens: copy beside the stage, chapters alternate sides ---------- */
@media (min-width:700px) and (min-aspect-ratio:5/4){
 #invitation-content.sb-book .sb-scene{flex-direction:row;align-items:center;justify-content:center}
 #invitation-content.sb-book .v-invite-hero-copy.sb-copy{flex:0 0 44%;max-width:none;padding:90px 2vw 70px 5vw}
 #invitation-content.sb-book .sb-stage{flex:0 0 56%;align-self:stretch;min-height:0;margin:0}
 #invitation-content.sb-book .sb-stage-box{height:94%}
 #invitation-content.sb-book .sb-copy h1{font-size:clamp(44px,6.4vw,96px)}
 .theme-blushletter #invitation-content.sb-book .sb-copy h1,.theme-aegean #invitation-content.sb-book .sb-copy h1,.theme-sagegarden #invitation-content.sb-book .sb-copy h1{font-size:clamp(56px,7.6vw,118px)}
 #invitation-content.sb-book .sb-chapter .sb-plaque{flex:0 0 auto;width:min(40%,470px);margin:0 2vw 0 6vw}
 #invitation-content.sb-book .sb-chapter.sb-flip{flex-direction:row-reverse}
 #invitation-content.sb-book .sb-chapter.sb-flip .sb-plaque{margin:0 6vw 0 2vw}
 #invitation-content.sb-book .sb-finale{flex-direction:row}
 #invitation-content.sb-book .sb-finale-copy{flex:0 0 40%;margin:0 2vw 0 6vw}
 #invitation-content.sb-book .sb-front{width:min(24vw,320px)}
 #invitation-content.sb-book .v-invite-story.sb-story{grid-template-columns:minmax(0,1fr) minmax(0,1.2fr);max-width:1100px;margin:0 auto;align-items:center}
 #invitation-content.sb-book .sb-story p{text-align:start}#invitation-content.sb-book .sb-story>div:last-child{text-align:start}
 #invitation-content.sb-book .v-guest-details.sb-details{grid-template-columns:repeat(auto-fit,minmax(260px,1fr));max-width:1100px;margin:0 auto}
 #invitation-content.sb-book .sb-venue-card{grid-template-columns:minmax(0,1.1fr) minmax(0,1fr);text-align:start}
 .sb-box{height:100%}
}
@media (min-width:700px) and (min-aspect-ratio:5/4) and (max-height:620px){
 #invitation-content.sb-book .sb-copy h1{font-size:clamp(34px,8vh,60px)}
 #invitation-content.sb-book .v-invite-hero-copy.sb-copy{padding-top:64px;padding-bottom:30px}
 #invitation-content.sb-book .sb-plaque h3{font-size:clamp(28px,7vh,44px)}
 #invitation-content.sb-book .sb-scene{min-height:max(100svh,420px)}
}
@media (max-width:480px){
 #invitation-content.sb-book .v-guest-nav.sb-nav{flex-wrap:nowrap;gap:12px;padding:4px 14px;font-size:12px;letter-spacing:0;white-space:nowrap}
 #invitation-content.sb-book .sb-nav a[href="#our-story"]{display:none}
}
@media (max-width:380px){
 #invitation-content.sb-book .v-guest-nav.sb-nav{gap:10px;padding:4px 12px;font-size:11.5px}
 #invitation-content.sb-book .sb-page{padding:56px 16px}
 #invitation-content.sb-book .v-countdown.sb-countdown{gap:6px}
 #invitation-content.sb-book .sb-countdown span{font-size:9.5px;letter-spacing:.04em}
 #invitation-content.sb-book .sb-plaque{padding:20px 16px 16px}
 #invitation-content.sb-book .v-event-timeline.sb-timeline{padding-inline-start:24px}
 #invitation-content.sb-book .sb-timeline::before{inset-inline-start:6px}
 #invitation-content.sb-book .sb-timeline article{grid-template-columns:minmax(0,1fr) 40px;gap:8px;padding:14px 10px 14px 14px}
 #invitation-content.sb-book .sb-timeline article::before{inset-inline-start:-24px}
 #invitation-content.sb-book .sb-timeline .v-round-link{width:40px;height:40px}
}
@media (max-height:700px) and (max-aspect-ratio:5/4){
 #invitation-content.sb-book .v-invite-hero-copy.sb-copy{padding-top:62px}
 #invitation-content.sb-book .sb-copy h1{font-size:clamp(38px,10.5vw,70px)}
 .theme-blushletter #invitation-content.sb-book .sb-copy h1,.theme-aegean #invitation-content.sb-book .sb-copy h1,.theme-sagegarden #invitation-content.sb-book .sb-copy h1{font-size:clamp(46px,13vw,84px)}
}
@media print{.sb-opening,.sb-fx,.sb-sky,.sb-front,.sb-play{display:none!important}#invitation-content.sb-book .sb-scene{min-height:0;page-break-inside:avoid}.sb-js .sb-chapter .sb-plaque,.sb-js .sb-chapter .sb-stage{opacity:1!important}.sb-scratch-canvas{display:none}}

/* ---------- Studio: collection cards, creator thumbnails and the cast picker ---------- */
.vows-studio .v-theme-art[data-storybook]{position:relative;padding:0;overflow:hidden;background:#1f1830}
.vows-studio .v-theme-art[data-storybook] .sb-mini{position:absolute;inset:0;padding:0;border-radius:inherit;overflow:hidden;background:none}
.sb-mini>.sb-thumb{position:absolute;inset:0;width:100%;height:100%;display:block}
.sb-mini-copy{position:absolute;left:0;right:0;top:9%;z-index:2;text-align:center;padding:0 16px}
.vows-studio .sb-mini-copy small{display:block;font:700 9px/1.4 var(--sans);letter-spacing:.2em;color:#fff;text-shadow:0 1px 6px rgba(0,0,0,.45)}
.vows-studio .v-mini-invite.sb-mini h3{margin:2px 0 0;font:400 34px/1.05 'Great Vibes',Georgia,serif;color:#fff;text-shadow:0 2px 12px rgba(0,0,0,.5)}
.vows-studio .v-mini-invite.sb-mini h3 i{font-size:.6em;margin:0 6px}
.sb-mini .sb-badge{position:absolute;z-index:3;right:12px;bottom:12px;padding:6px 10px;border-radius:999px;background:rgba(255,255,255,.92);color:#5b2b3e;font:700 10px/1.2 var(--sans);letter-spacing:.06em}
.v-theme-option>span.sb-option-thumb{background:var(--paper)}
.v-theme-option>span.sb-option-thumb::after{content:"";position:absolute;z-index:.5;left:0;right:0;bottom:0;height:42%;background:linear-gradient(0deg,var(--paper) 72%,color-mix(in srgb,var(--paper) 88%,transparent) 86%,transparent)}
.v-theme-option>span.sb-option-thumb>.sb-thumb{position:absolute;left:0;top:0;width:100%;height:72%;z-index:0;pointer-events:none}
.v-theme-option>span.sb-option-thumb>:not(.sb-thumb){position:relative;z-index:1}
.v-theme-option>span.sb-option-thumb>b{display:none}
.v-theme-option>span.sb-option-thumb>strong{position:absolute!important;left:5px;right:5px;bottom:25px}
.v-theme-option>span.sb-option-thumb>small{position:absolute!important;left:5px;right:5px;bottom:7px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.v-filter-bar [data-filter=storybook]{border-color:#c2557a}
.v-filter-bar [data-filter=storybook] b{margin-left:6px;padding:2px 6px;border-radius:6px;background:#c2557a;color:#fff;font-size:10px}
.sb-promo{position:relative;isolation:isolate;overflow:hidden;display:grid;grid-template-columns:minmax(0,1fr);gap:26px;align-items:center;margin:30px auto;padding:28px;border:1px solid rgba(255,232,203,.16);border-radius:30px;color:#fff7ef;background:radial-gradient(circle at 88% 15%,rgba(220,134,128,.4),transparent 32%),linear-gradient(135deg,#211522,#4b2038 56%,#7c3b4a);box-shadow:0 24px 70px rgba(43,17,34,.18),inset 0 1px rgba(255,255,255,.12)}
.sb-promo::after{content:"";position:absolute;inset:10px;z-index:-1;border:1px solid rgba(255,235,209,.16);border-radius:22px;pointer-events:none}
.sb-promo .v-eyebrow{color:#f5cb91}.sb-promo h2{margin:4px 0 8px;font:500 clamp(28px,4vw,44px)/1.08 var(--serif,Georgia);letter-spacing:-.025em}.sb-promo p{margin:0 0 18px;max-width:660px;color:rgba(255,247,239,.76);line-height:1.7}.sb-promo .v-button{background:#fff7ef;color:#3f1b31}
.sb-promo-art{display:flex;gap:12px;justify-content:center;perspective:900px}.sb-promo-art a{display:block;width:30%;max-width:160px;aspect-ratio:3/4;border:1px solid rgba(255,239,215,.28);border-radius:80px 80px 18px 18px;overflow:hidden;box-shadow:0 22px 44px rgba(18,6,15,.34);transform:rotate(var(--tilt,-2deg));transition:transform .45s cubic-bezier(.2,.8,.2,1)}.sb-promo-art a:nth-child(2){--tilt:1.5deg;translate:0 -8px}.sb-promo-art a:nth-child(3){--tilt:3deg}.sb-promo-art a:hover{transform:rotate(0) translateY(-7px)}.sb-promo-art svg{width:100%;height:100%;display:block}
@media(min-width:860px){.sb-promo{grid-template-columns:minmax(0,1fr) minmax(0,1fr);padding:30px 34px}}
.sb-cast{margin:22px 0 6px;padding:20px;border:1px solid rgba(92,50,72,.1);border-radius:24px;background:linear-gradient(145deg,rgba(255,255,255,.86),rgba(255,247,242,.76));box-shadow:0 18px 50px rgba(75,32,56,.08),inset 0 1px rgba(255,255,255,.8)}
.sb-cast[hidden]{display:none}
.sb-cast>h3{margin:0 0 4px;font:600 20px/1.3 var(--serif,Georgia)}.sb-cast>p{margin:0 0 14px;font-size:14px;color:#6d5562}
.sb-cast-grid{display:grid;grid-template-columns:minmax(0,1fr);gap:16px}
.sb-cast-person{min-width:0;padding:16px;border:1px solid rgba(92,50,72,.08);border-radius:18px;background:rgba(255,255,255,.86);box-shadow:0 12px 34px rgba(90,40,60,.07)}
.sb-cast-person>h4{display:flex;align-items:center;gap:10px;margin:0 0 10px;font:700 14px/1.3 var(--sans,sans-serif);overflow-wrap:anywhere}
.sb-cast-preview{flex:none;width:62px;height:82px;border:1px solid rgba(92,50,72,.1);border-radius:16px;background:radial-gradient(circle at 50% 20%,#fff 0 8%,transparent 40%),linear-gradient(145deg,#f8e2e8,#ede3d5);overflow:hidden;box-shadow:0 10px 24px rgba(75,32,56,.1)}.sb-cast-preview svg{width:100%;height:100%;display:block}
.sb-swatches{display:flex;flex-wrap:wrap;gap:8px;margin:6px 0 12px;padding:0;border:0}
.sb-swatches legend{width:100%;margin-bottom:6px;font:600 13px/1.4 var(--sans,sans-serif);color:#4a3540}
.sb-swatches label{position:relative;display:block;width:34px;height:34px;cursor:pointer}
.sb-swatches input{position:absolute;inset:0;opacity:0;margin:0;cursor:pointer}
.sb-swatches .sb-sw{display:block;width:100%;height:100%;border-radius:50%;background:var(--swatch);box-shadow:inset 0 0 0 2px rgba(255,255,255,.8),0 0 0 1px #d8c6cf}
.sb-swatches .sb-sw.sb-auto{background:conic-gradient(#b3192c,#d8a23f,#13795b,#22315f,#d6416b,#b3192c);}
.sb-swatches input:checked+.sb-sw{box-shadow:inset 0 0 0 2px #fff,0 0 0 3px #c2557a}
.sb-swatches input:focus-visible+.sb-sw{outline:3px solid #22315f;outline-offset:2px}
.sb-cast-person .v-field{margin-bottom:10px}
@media(min-width:720px){.sb-cast-grid{grid-template-columns:minmax(0,1fr) minmax(0,1fr)}}
.v-event-editor [data-event-scene][hidden]{display:none}
