/* Independent compositions share only the guest controls and content model. */
body:not([data-theme=garden]){background:var(--paper)}
body:not([data-theme=garden]) .main{max-width:1320px;padding:38px 46px 40px}
body:not([data-theme=garden]) .invitation-page{gap:50px;grid-template-columns:1.15fr 1fr;min-height:620px}
body:not([data-theme=garden]) .stationery-scene{min-height:610px;min-width:0}
.theme-scene{width:100%;min-height:610px;position:relative;isolation:isolate;display:flex;align-items:center;justify-content:center}
.theme-picture{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;z-index:-2}
.theme-prop{position:absolute;bottom:-22px;right:-25px;width:45%;height:220px;object-fit:contain;z-index:3;pointer-events:none;animation:theme-drift 9s ease-in-out infinite}
.edition-number{position:absolute;top:20px;left:22px;font-size:14px;letter-spacing:.2em}
body:not([data-theme=garden]) .invitation-card{background:none;box-shadow:none;transform:none;animation:none;aspect-ratio:auto;min-height:0;width:100%;padding:65px 44px;max-width:450px}
body:not([data-theme=garden]) .invitation-card:before{display:none}
body:not([data-theme=garden]) .invitation-card h2{max-width:100%;font-size:clamp(52px,5.3vw,78px);overflow-wrap:anywhere;line-height:.97}
body:not([data-theme=garden]) .card-kicker{font-size:12px;letter-spacing:.15em;max-width:230px;margin:0 auto 24px}
body:not([data-theme=garden]) .card-date{font-size:14px;letter-spacing:.05em}
body:not([data-theme=garden]) .card-time{font-size:14px}
body:not([data-theme=garden]) .card-closing{font-size:22px}
body:not([data-theme=garden]) .card-venue{font-size:26px}
body:not([data-theme=garden]) .scene-tag{bottom:12px;left:20px;right:auto;font-size:20px}
body:not([data-theme=garden]) .welcome-copy h1{font-size:clamp(48px,4.8vw,72px);line-height:1.03}
body:not([data-theme=garden]) .welcome-note{font-size:16px}
body:not([data-theme=garden]) .eyebrow{font-size:12px}
body:not([data-theme=garden]) .event-essentials{font-size:15px}
body:not([data-theme=garden]) .event-essentials dt{font-size:14px;flex-shrink:0}
body:not([data-theme=garden]) .countdown b{font-size:38px}
body:not([data-theme=garden]) .countdown small,body:not([data-theme=garden]) .reply-by{font-size:12px}
body:not([data-theme=garden]) .venue-card,body:not([data-theme=garden]) .dress-note{background:color-mix(in srgb,var(--ink) 5%,var(--paper));border-color:var(--line)}
body:not([data-theme=garden]) .rsvp-paper{background:color-mix(in srgb,var(--paper) 94%,white);border-color:var(--coral);box-shadow:0 15px 55px #0000000c}
body:not([data-theme=garden]) .rsvp-paper input,body:not([data-theme=garden]) .rsvp-paper select,body:not([data-theme=garden]) .rsvp-paper textarea{color:#252525;background:#fff}
body:not([data-theme=garden]) .rsvp-paper .guest-fields{background:transparent}
body:not([data-theme=garden]) .venue-card>p,body:not([data-theme=garden]) .timeline p,body:not([data-theme=garden]) .questions p,body:not([data-theme=garden]) .dress-note>p:not(.eyebrow){font-size:16px}
.theme-detail-art{width:180px;height:130px;object-fit:contain;float:right;margin:-12px -18px 0 8px;pointer-events:none}
.theme-detail-art~h2{clear:none}
body:not([data-theme=garden]) .details-layout{gap:40px;max-width:1100px}
body:not([data-theme=garden]) .day summary{padding:20px 8px}
body:not([data-theme=garden]) .photo-card{background:var(--paper);color:var(--ink)}
body:not([data-theme=garden]) .bottom-nav{background:var(--paper);border-color:var(--line)}
body:not([data-theme=garden]) .bottom-nav button[aria-current],body:not([data-theme=garden]) .primary{color:var(--paper);background:var(--ink)}
body:not([data-theme=garden]) .bottom-nav button:hover:not([aria-current]){background:color-mix(in srgb,var(--ink) 10%,var(--paper))}
body:not([data-theme=garden]) .demo-label{font-size:12px;letter-spacing:.06em}
body[data-theme=velvet] .wordmark img,body[data-theme=midnight] .wordmark img{filter:invert(1)}
body[data-theme=velvet] .demo-note,body[data-theme=midnight] .demo-note{background:#ffffff14;color:var(--ink)}
body[data-theme=velvet] .rsvp-paper,body[data-theme=midnight] .rsvp-paper{background:#ffffff08}
/* Secret Orangery: a full botanical arch, followed by an airy welcome. */
body[data-layout=arch] .theme-scene{border-radius:48% 48% 4px 4px;overflow:hidden;min-height:680px}
body[data-layout=arch] .theme-picture{object-fit:fill}
body[data-layout=arch] .invitation-card{padding:130px 75px 95px!important}
body[data-layout=arch] .theme-prop{width:70%;height:185px;right:15%;bottom:-30px}
body[data-layout=arch] .edition-number,body[data-layout=arch] .scene-tag{display:none}
body[data-layout=arch] .venue-card{border-radius:110px 110px 4px 4px;padding-top:60px;text-align:center}
body[data-layout=arch] .theme-detail-art{float:none;margin:auto;width:230px}
/* Velvet: a playbill with its own broad, gold rules and ticket-like schedule. */
body[data-layout=playbill] .theme-scene{background:#310d1f;border:1px solid #c19963;outline:1px solid #a77e51;outline-offset:-14px}
body[data-layout=playbill] .theme-picture{opacity:.65}
body[data-layout=playbill] .invitation-card{background:#340e23ed!important;margin:58px 24px;padding:40px 22px!important;border-block:1px solid #c19963;width:calc(100% - 72px)!important}
body[data-layout=playbill] .card-kicker{color:#e7c17b}
body[data-layout=playbill] .card-script{text-transform:uppercase;font:14px var(--sans);letter-spacing:.2em}
body[data-layout=playbill] .theme-prop{width:100px;height:190px;right:-20px;bottom:0}
body[data-layout=playbill] .scene-tag{display:none}
body[data-layout=playbill] .day{border:1px solid var(--line);margin:16px 0;padding:10px 20px}
body[data-layout=playbill] #studio-menu{text-align:center;border:1px solid #c19963}
/* Dolce: majolica stationery and a sunny aperitivo illustration. */
body[data-layout=tile] .theme-picture{object-fit:fill}
body[data-layout=tile] .theme-scene{min-height:700px;transform:rotate(-2deg);max-width:495px;margin:auto}
body[data-layout=tile] .invitation-card{padding:80px 66px 175px!important}
body[data-layout=tile] .theme-prop{width:70%;height:240px;right:-40px;bottom:-25px;transform:rotate(4deg)}
body[data-layout=tile] .scene-tag,body[data-layout=tile] .edition-number{display:none}
body[data-layout=tile] #studio-menu{border:2px solid var(--ink);outline:1px solid var(--ink);outline-offset:-8px;text-align:center;padding:35px}
body[data-layout=tile] #studio-menu .theme-detail-art{float:none;margin:0 auto 10px;width:85%;height:180px}
body[data-layout=tile] .day-name strong{font-style:italic}
/* Pearl: spare, uncoated paper with a restrained satin composition. */
body[data-layout=silk] .theme-scene{background:#edeae4;border:1px solid #e1dcd4}
body[data-layout=silk] .theme-picture{opacity:.17}
body[data-layout=silk] .theme-prop{inset:0;width:100%;height:100%;opacity:.35;z-index:-1}
body[data-layout=silk] .invitation-card{background:#fffdf8ee!important;width:75%!important;padding:55px 28px!important;box-shadow:0 15px 45px #66554115!important;border:1px solid #dbd2c7}
body[data-layout=silk] .card-script{font:italic 24px var(--serif)}
body[data-layout=silk] .scene-tag{font-size:17px!important;bottom:20px!important}
body[data-layout=silk] .edition-number{display:none}
body[data-layout=silk] .venue-card,body[data-layout=silk] .dress-note{background:none!important;border:1px solid var(--line);padding:30px}
body[data-layout=silk] .photo-card{transform:none!important;box-shadow:none;padding:0}
body[data-layout=silk] .theme-detail-art{display:none}
/* Midnight: a tall celestial cover, luminous lettering and orbit-like rules. */
body[data-layout=constellation] .theme-picture{opacity:.7}
body[data-layout=constellation] .theme-scene{border-radius:180px 180px 0 0;overflow:hidden;border:1px solid #8274a2}
body[data-layout=constellation] .invitation-card{padding:100px 40px 60px!important;background:#11172fcc!important;width:86%!important;border-block:1px solid #9283ac}
body[data-layout=constellation] .theme-prop{display:none}
body[data-layout=constellation] .scene-tag{left:0!important;width:100%;text-align:center;bottom:18px!important}
body[data-layout=constellation] .card-rule{font-size:30px}
body[data-layout=constellation] .day-name strong{letter-spacing:.04em}
body[data-layout=constellation] .theme-detail-art{display:none}
/* Modern: an image-led, edge-to-edge editorial, names across the photograph. */
body[data-layout=editorial] .invitation-page{grid-template-columns:1.4fr 1fr;gap:45px}
body[data-layout=editorial] .theme-scene{min-height:690px;align-items:flex-end;background:#222}
body[data-layout=editorial] .theme-picture{filter:grayscale(1);opacity:.8}
body[data-layout=editorial] .invitation-card{padding:35px!important;background:linear-gradient(transparent,#000b)!important;max-width:none!important;color:#fff;text-align:left}
body[data-layout=editorial] .invitation-card h2{font-family:'DM Sans',Arial,sans-serif;font-weight:600;font-size:clamp(60px,6vw,92px)!important;letter-spacing:-.08em;line-height:.95!important}
body[data-layout=editorial] .invitation-card h2 span{font-family:var(--serif);display:inline;font-size:.75em;margin:0 10px}
body[data-layout=editorial] .card-kicker{margin:0 0 18px!important;max-width:100%!important}
body[data-layout=editorial] .card-venue,body[data-layout=editorial] .card-date{font-family:var(--sans);font-style:normal}
body[data-layout=editorial] .card-script,body[data-layout=editorial] .card-rule,body[data-layout=editorial] .card-time,body[data-layout=editorial] .card-closing,body[data-layout=editorial] .theme-prop,body[data-layout=editorial] .scene-tag{display:none}
body[data-layout=editorial] .edition-number{color:white;letter-spacing:-.06em;font-size:80px;line-height:1;font-weight:600}
body[data-layout=editorial] .welcome-copy h1{font-family:var(--sans);font-weight:600;letter-spacing:-.06em}
body[data-layout=editorial] .venue-card{border:0!important;border-top:3px solid var(--ink)!important;background:none!important;padding-left:0}
body[data-layout=editorial] .photo-card{transform:none!important;padding:0;box-shadow:none}
body[data-layout=editorial] .photo-year{display:none}
body[data-layout=editorial] .theme-detail-art{display:none}
/* Wildflower: a photograph tucked under an offset pressed-flower note. */
body[data-layout=scrapbook] .theme-scene{min-height:720px;justify-content:flex-end;align-items:flex-end;padding-bottom:40px}
body[data-layout=scrapbook] .theme-picture{width:66%;height:58%;inset:0 auto auto 0;object-fit:cover;border:12px solid #fffdf3;transform:rotate(-6deg);box-shadow:0 12px 25px #62483422}
body[data-layout=scrapbook] .invitation-card{background:#fffbee!important;width:68%!important;max-width:none;padding:40px 24px!important;transform:rotate(5deg);border:1px solid #d9c59f;box-shadow:0 15px 30px #63473415!important}
body[data-layout=scrapbook] .invitation-card h2{font-size:59px!important}
body[data-layout=scrapbook] .theme-prop{width:45%;height:270px;bottom:-20px;left:-20px;right:auto;transform:rotate(-25deg)}
body[data-layout=scrapbook] .edition-number{display:none}
body[data-layout=scrapbook] .scene-tag{top:28px;bottom:auto!important;left:auto!important;right:0;max-width:130px;transform:rotate(7deg)}
body[data-layout=scrapbook] .dress-note{transform:rotate(1deg);background:#fff9e9!important}
body[data-layout=scrapbook] .photo-card:nth-child(2n){transform:rotate(3deg)}
/* Coastal: a wide, split postcard with a clear address-side invitation. */
body[data-layout=postcard] .invitation-page{grid-template-columns:1fr;gap:30px}
body[data-layout=postcard] .stationery-scene{min-height:460px!important}
body[data-layout=postcard] .theme-scene{min-height:460px;display:grid;grid-template-columns:1fr 1fr;border:12px solid white;box-shadow:0 12px 40px #154b5c15;background:#fffefa}
body[data-layout=postcard] .theme-picture{position:relative;grid-column:1;height:100%;min-height:440px;z-index:0;object-fit:cover}
body[data-layout=postcard] .invitation-card{grid-column:2;padding:55px 35px!important;max-width:none;border-left:1px solid #c6d8d9}
body[data-layout=postcard] .theme-prop{width:150px;height:130px;bottom:-50px;right:25px}
body[data-layout=postcard] .edition-number{top:12px;left:auto;right:15px;border:1px dashed #739499;padding:6px;font-size:14px;z-index:1}
body[data-layout=postcard] .scene-tag{display:none}
body[data-layout=postcard] .welcome-copy{display:grid;grid-template-columns:1fr 1fr;gap:0 50px}
body[data-layout=postcard] .welcome-copy>.eyebrow,body[data-layout=postcard] .welcome-copy>h1,body[data-layout=postcard] .welcome-note{grid-column:1}
body[data-layout=postcard] .welcome-copy .event-essentials{grid-column:2;grid-row:1/4;padding-top:20px}
body[data-layout=postcard] .welcome-actions{grid-column:2;grid-row:4/6;width:100%;max-width:none}
body[data-layout=postcard] .countdown{grid-column:1}
body[data-layout=postcard] .day{border:1px solid var(--line);padding:12px 20px;background:#fffefa;margin-bottom:15px}
/* Rosewater: a palace portrait above a formal rose-paper invitation. */
body[data-layout=palace] .theme-scene{display:flex;flex-direction:column;min-height:720px;border:1px solid #bc8b7b;padding:18px;background:#fbf0ed}
body[data-layout=palace] .theme-picture{position:relative;inset:auto;width:100%;height:270px;border-radius:180px 180px 0 0;z-index:0;object-fit:cover}
body[data-layout=palace] .invitation-card{padding:28px 35px!important;min-height:350px}
body[data-layout=palace] .card-kicker{margin-bottom:14px!important}
body[data-layout=palace] .invitation-card h2{font-size:56px!important}
body[data-layout=palace] .invitation-card h2 span{display:inline;margin:0 8px}
body[data-layout=palace] .card-script,body[data-layout=palace] .card-time,body[data-layout=palace] .card-closing{display:none}
body[data-layout=palace] .theme-prop{width:32%;height:180px;bottom:-25px;right:-20px}
body[data-layout=palace] .edition-number,body[data-layout=palace] .scene-tag{display:none}
body[data-layout=palace] #studio-menu{text-align:center;border:1px solid #bc8b7b;border-radius:120px 120px 0 0;padding-top:50px}
/* Disco: poster-sized type, a vivid cocktail and a little dance-floor bounce. */
body[data-layout=party] .theme-scene{background:#e3ff72;border-radius:0 110px 0 0;min-height:660px;overflow:hidden}
body[data-layout=party] .theme-picture{width:55%;height:320px;object-fit:contain;inset:auto -30px -15px auto;z-index:2;transform:rotate(15deg);animation:disco-sway 7s ease-in-out infinite}
body[data-layout=party] .invitation-card{padding:35px 35px 170px!important;color:#4e2356;text-align:left;max-width:none}
body[data-layout=party] .invitation-card h2{font-family:'DM Sans',Arial,sans-serif;font-weight:700;text-transform:uppercase;letter-spacing:-.075em;font-size:clamp(58px,6vw,88px)!important}
body[data-layout=party] .invitation-card h2 span{font:italic 60px var(--serif)}
body[data-layout=party] .card-kicker{margin-left:0!important}
body[data-layout=party] .card-rule,body[data-layout=party] .card-closing,body[data-layout=party] .card-time,body[data-layout=party] .theme-prop,body[data-layout=party] .edition-number{display:none}
body[data-layout=party] .scene-tag{color:#4e2356;bottom:22px!important;max-width:145px;left:35px!important}
body[data-layout=party] .welcome-copy h1,body[data-layout=party] .page-intro h1{font-family:'DM Sans',Arial,sans-serif;font-weight:600;letter-spacing:-.06em}
body[data-layout=party] .day{border:1px solid var(--ink);padding:10px 22px;margin-bottom:14px;box-shadow:5px 5px 0 var(--ink)}
body[data-layout=party] #studio-menu{background:#e3ff72!important}
/* Little Celebration: a cheerful gift above a bold two-colour party card. */
body[data-layout=confetti] .theme-scene{background:#c5e0fa;min-height:670px;align-items:flex-end;border-radius:26px}
body[data-layout=confetti] .theme-picture{position:absolute;top:-30px;left:20%;width:60%;height:330px;object-fit:contain;z-index:1;animation:theme-drift 8s ease-in-out infinite}
body[data-layout=confetti] .invitation-card{background:#ffddbd!important;width:100%!important;max-width:none;border-radius:26px;padding:35px 28px!important;min-height:390px;margin-top:280px;z-index:2}
body[data-layout=confetti] .invitation-card h2{font-family:'DM Sans',Arial,sans-serif;letter-spacing:-.07em;font-weight:600;font-size:58px!important}
body[data-layout=confetti] .invitation-card h2 span{display:inline;margin:0 6px}
body[data-layout=confetti] .card-script,body[data-layout=confetti] .card-time,body[data-layout=confetti] .card-closing,body[data-layout=confetti] .theme-prop,body[data-layout=confetti] .scene-tag,body[data-layout=confetti] .edition-number{display:none}
body[data-layout=confetti] .venue-card,body[data-layout=confetti] .dress-note,body[data-layout=confetti] .rsvp-paper{border-radius:20px}
body[data-layout=confetti] .day{border-radius:20px;background:#deecfa;border:0;margin-bottom:15px;padding:10px 20px}
/* Eight openings. Raster objects articulate; every variant keeps Skip and Replay. */
body:not([data-theme=garden]) .opening:before{background:none}
body:not([data-theme=garden]) .opening{background:var(--deep);color:var(--paper)}
.opening-object{width:min(100%,430px)!important;max-width:430px!important;aspect-ratio:1!important;margin:20px auto!important;perspective:1400px}
.opening-object:hover{transform:translateY(-3px)}
.opening-object .opening-half,.opening-cover,.opening-lid,.opening-photo{position:absolute;inset:0;width:100%;height:100%;object-fit:contain;z-index:2;transform-origin:50% 50%;transition:transform 1.75s cubic-bezier(.3,.05,.15,1),opacity 1.5s}
.opening-half img{width:100%;height:100%;object-fit:contain}
.opening-half.half-left{clip-path:inset(0 50% 0 0);transform-origin:0 50%}
.opening-half.half-right{clip-path:inset(0 0 0 50%);transform-origin:100% 50%}
.opening-reveal{position:absolute;inset:24%;display:flex;flex-direction:column;align-items:center;justify-content:center;color:var(--paper);opacity:0;transform:scale(.9);transition:opacity .7s .8s,transform 1s .7s}
.opening-initials{font:52px/1.1 var(--serif);margin-bottom:12px;overflow-wrap:anywhere}
.opening-reveal small{font-size:14px}
.is-opening .opening-reveal{opacity:1;transform:scale(1)}
[data-opening=gates] .is-opening .half-left{transform:perspective(1200px) rotateY(-80deg) translateX(-13%)}
[data-opening=gates] .is-opening .half-right{transform:perspective(1200px) rotateY(80deg) translateX(13%)}
[data-opening=ribbon] .is-opening .half-left{transform:translate(-85%,8%) rotate(-18deg);opacity:0}
[data-opening=ribbon] .is-opening .half-right{transform:translate(85%,-8%) rotate(18deg);opacity:0}
[data-opening=book] .opening-cover{transform-origin:15% 50%;backface-visibility:hidden}
[data-opening=book] .is-opening .opening-cover{transform:rotateY(-120deg);opacity:0}
[data-opening=photo] .opening-photo{width:70%;left:15%;object-fit:cover;border:12px solid #fff6e6;border-bottom-width:50px;transform:rotate(-6deg);box-shadow:0 20px 45px #0003}
[data-opening=photo] .is-opening .opening-photo{transform:rotate(0) scale(1.5);opacity:0}
[data-opening=box] .is-opening .opening-lid{transform:translateY(-65%) rotate(-12deg) scale(1.15);opacity:0}
.motion-paused .theme-prop,.motion-paused .theme-picture{animation:none!important}
@keyframes theme-drift{0%,100%{translate:0 0}50%{translate:0 -9px}}
@keyframes disco-sway{0%,100%{rotate:-4deg}50%{rotate:4deg}}
@media(max-width:1000px){body:not([data-theme=garden]) .main{padding-inline:28px}body:not([data-theme=garden]) .invitation-page{gap:30px}.theme-prop{right:-10px}body:not([data-theme=garden]) .invitation-card h2{font-size:58px}.theme-scene{min-height:600px}body[data-layout=tile] .invitation-card{padding-inline:55px!important}body[data-layout=arch] .invitation-card{padding-inline:58px!important}}
@media(max-width:760px){
 body:not([data-theme=garden]) .main{padding:20px 20px 32px;overflow:clip}
 body:not([data-theme=garden]) .invitation-page{display:block;min-height:0}
 body:not([data-theme=garden]) .stationery-scene{min-height:0;margin:0 auto 32px;max-width:500px;padding:0}
 .theme-scene{min-height:550px}
 body:not([data-theme=garden]) .welcome-copy{display:block;padding:10px 3px}
 body:not([data-theme=garden]) .welcome-copy h1{font-size:48px;line-height:1.02}
 body:not([data-theme=garden]) .welcome-copy>.eyebrow{font-size:12px}
 body:not([data-theme=garden]) .invitation-card h2{font-size:60px}
 body:not([data-theme=garden]) .mobile-invitation-actions{display:none}
 body:not([data-theme=garden]) .welcome-actions{display:block;max-width:none}
 body:not([data-theme=garden]) .countdown{max-width:none;justify-content:center;padding-top:22px;margin-top:25px}
 body:not([data-theme=garden]) .reply-by{text-align:center}
 body:not([data-theme=garden]) .event-essentials{margin-top:24px}
 body:not([data-theme=garden]) .details-layout{display:block}
 body:not([data-theme=garden]) .page-intro h1{font-size:46px}
 body:not([data-theme=garden]) .rsvp-paper{padding:28px 20px}
 body:not([data-theme=garden]) .demo-label{font-size:12px;max-width:43%;text-align:center;line-height:1.2;letter-spacing:0}
 body:not([data-theme=garden]) .wordmark .brand-name{display:none}
 body:not([data-theme=garden]) .card-time{font-size:13px}
 .theme-prop{right:-10px;width:44%;height:180px}
 body[data-layout=arch] .theme-scene{min-height:590px}body[data-layout=arch] .invitation-card{padding:105px 48px 100px!important}
 body[data-layout=playbill] .invitation-card{width:calc(100% - 46px)!important;margin:46px 15px;padding-inline:15px!important}
 body[data-layout=tile] .theme-scene{min-height:640px;transform:rotate(-1deg)}body[data-layout=tile] .invitation-card{padding:70px 52px 165px!important}body[data-layout=tile] .theme-prop{width:75%;height:205px;right:-15px;bottom:-15px}
 body[data-layout=silk] .invitation-card{width:83%!important;padding:45px 20px!important}
 body[data-layout=constellation] .theme-scene{min-height:600px}body[data-layout=constellation] .invitation-card{padding:90px 25px 60px!important}
 body[data-layout=editorial] .theme-scene{min-height:610px}body[data-layout=editorial] .invitation-card{padding:25px!important}body[data-layout=editorial] .invitation-card h2{font-size:64px!important}
 body[data-layout=scrapbook] .theme-scene{min-height:670px}body[data-layout=scrapbook] .invitation-card{width:73%!important;padding:35px 15px!important}body[data-layout=scrapbook] .invitation-card h2{font-size:48px!important}body[data-layout=scrapbook] .theme-prop{width:42%;height:210px;left:-12px}body[data-layout=scrapbook] .scene-tag{font-size:18px!important;width:100px;right:-2px}
 body[data-layout=postcard] .theme-scene{display:flex;flex-direction:column;border-width:8px;min-height:0}body[data-layout=postcard] .theme-picture{height:230px;min-height:0}body[data-layout=postcard] .invitation-card{padding:35px 20px!important;border:0;border-top:1px solid #c6d8d9}body[data-layout=postcard] .edition-number{top:245px;right:8px;font-size:12px}body[data-layout=postcard] .theme-prop{width:110px;height:105px;right:-18px;bottom:-30px}body[data-layout=postcard] .welcome-copy{padding-top:20px}
 body[data-layout=palace] .theme-scene{min-height:0;padding:12px}body[data-layout=palace] .theme-picture{height:235px}body[data-layout=palace] .invitation-card{padding:28px 15px!important;min-height:340px}body[data-layout=palace] .invitation-card h2{font-size:49px!important}
 body[data-layout=party] .theme-scene{min-height:610px}body[data-layout=party] .invitation-card{padding:30px 25px 185px!important}body[data-layout=party] .invitation-card h2{font-size:64px!important}body[data-layout=party] .theme-picture{height:260px;right:-12px}
 body[data-layout=confetti] .theme-picture{height:260px;top:-15px;left:12%;width:76%}body[data-layout=confetti] .theme-scene{min-height:0}body[data-layout=confetti] .invitation-card{margin-top:230px;min-height:375px;padding:35px 22px!important}body[data-layout=confetti] .invitation-card h2{font-size:50px!important}
 .opening-object{width:min(100%,350px)!important;max-width:350px!important;margin:20px auto!important}
 .opening h1{font-size:clamp(34px,8vw,48px)!important}
 body:not([data-theme=garden]) .opening{padding:26px 20px;justify-content:center}
 .theme-detail-art{width:130px;height:120px;float:none;display:block;margin:0 auto 15px}
}
@media(max-height:700px){.opening-object{width:min(100%,290px)!important;max-width:290px!important;margin:12px auto!important}.opening-eyebrow{margin-bottom:12px!important}.opening-foot{display:none}body:not([data-theme=garden]) .opening{justify-content:flex-start; padding-top:22px}}
@media(prefers-reduced-motion:reduce){.theme-prop,.theme-picture{animation:none!important}.opening-object *{transition:none!important}}


body[data-layout=palace] .theme-picture{object-position:50% 0}body[data-layout=constellation] .theme-picture{opacity:1}body[data-layout=constellation] .invitation-card{background:#11172f9c!important}[data-opening=book] .opening-cover{max-width:78%;left:11%;box-shadow:12px 12px 35px #0003}

body[data-layout=postcard] .theme-picture{object-fit:contain;background:#d5edf0}body[data-layout=postcard] .theme-prop{width:100px;height:130px}

/* Opening foreground and background remain readable for both dark and light themes. */
body[data-theme] .opening{background:var(--opening-bg);color:var(--opening-ink)}body[data-theme] .opening .open-cta{background:var(--opening-ink);color:var(--opening-bg)}body[data-theme] .opening .skip-opening,body[data-theme] .opening-reveal{color:var(--opening-ink)}body[data-theme] .opening .open-cta:hover{filter:brightness(1.08)}

body:not([data-theme=garden]) .bottom-nav button:not([aria-current]){color:var(--muted)}@media(max-width:760px){body:not([data-theme=garden]) .bottom-nav button{font-size:13px}body:not([data-theme=garden]) .bottom-nav button[aria-current]:after{display:none}}
