/* The Vow. All artwork is original, and every rule is scoped to this theme.
   The shared illustrated collection supplies only structural primitives. */
body[data-theme="vow"],.op-vow{
 --wc-frame:url('/themes/the-vow/frame.webp');
 --wc-opening-art:url('/themes/the-vow/opening.webp');
 --wc-inner-art:url('/themes/the-vow/stationery.webp');
 --vow-ink:#334637;
 --vow-paper:#f3efe5;
}

/* The full garden scene is naturally sized; its width defines its height. */
body[data-theme="vow"] .wc-hero .wc-scene{
 width:100%;height:auto;overflow:hidden;aspect-ratio:auto;margin:0;
}
body[data-theme="vow"] .wc-hero .wc-scene img{
 display:block;width:100%;height:auto;max-height:none;
 object-fit:contain;object-position:center top;
}
/* Respect the frame's decorative caps without leaving empty half-pages. */
body[data-theme="vow"][data-collection="illustrated"] #invitation .wc-hero-copy,
body[data-theme="vow"][data-collection="illustrated"] #invitation main>.wc-section{
 padding:clamp(70px,19cqw,98px) clamp(24px,8cqw,38px) clamp(75px,19cqw,105px);
 margin:0;
 min-height:0;
 background-color:var(--paper);
}
body[data-theme="vow"][data-collection="illustrated"] #invitation .wc-hero-copy{
 padding-top:clamp(26px,8cqw,38px);
 text-align:center;
}
body[data-theme="vow"] .wc-hero-copy .wc-family,
body[data-theme="vow"] .wc-hero-copy .wc-welcome{
 margin:10px auto;max-width:32ch;line-height:1.45;
}
body[data-theme="vow"] .wc-hero-copy .wc-guest{
 margin:10px auto;max-width:100%;overflow-wrap:break-word;
}
body[data-theme="vow"][data-collection="illustrated"] .wc-hero .wc-names{
 display:flex;flex-direction:column;flex-wrap:nowrap;
 justify-content:center;align-items:center;
 margin:16px 0;gap:5px;
 font-size:clamp(29px,8.5cqw,43px);
 line-height:1.15;word-break:normal;overflow-wrap:normal;
}
body[data-theme="vow"] .wc-hero .wc-names>span{
 max-width:100%;text-wrap:balance;word-break:normal;overflow-wrap:normal;
}
body[data-theme="vow"] .wc-hero .wc-names em{font-size:.72em;line-height:1}
body[data-theme="vow"] .wc-hero-copy .wc-date{
 margin:14px 0 0;line-height:1.5;
}
body[data-theme="vow"] .wc-hero-copy .wc-divider{margin:12px auto 0}
body[data-theme="vow"] .wc-hero-copy .wc-explore{margin-top:14px}
/* All sections (including dynamic story, RSVP and memory panels) grow naturally. */
body[data-theme="vow"] #invitation main>.wc-section{
 height:auto;overflow:visible;
}
body[data-theme="vow"] #invitation .wc-section .wc-frame-copy{
 margin:0 auto;padding:0;min-width:0;width:100%;max-width:100%;
}
body[data-theme="vow"] #invitation .wc-section .wc-frame-copy h2{
 font-size:clamp(25px,7.3cqw,36px);
 line-height:1.2;margin:7px auto 15px;
 overflow-wrap:break-word;
}
body[data-theme="vow"] #invitation .wc-section .wc-frame-copy p,
body[data-theme="vow"] #invitation .wc-section .wc-event p{
 max-width:100%;line-height:1.5;
}
body[data-theme="vow"] #invitation .wc-section .wc-divider{margin:18px auto 0}
body[data-theme="vow"] #invitation .wc-section .wc-event-copy{
 min-width:0;overflow-wrap:break-word;
}
body[data-theme="vow"] #invitation .wc-section :is(button,a,input,textarea,select){
 max-width:100%;box-sizing:border-box;
}
body[data-theme="vow"] #invitation .wc-section :is(.gallery-grid,.timeline,.venue-frame,.upload-panel){
 max-width:100%;min-width:0;
}
body[data-theme="vow"] #invitation .wc-section .gallery-grid img{
 max-width:100%;height:auto;aspect-ratio:4/5;object-fit:cover;
}
/* A venue image should not become a second full-height hero. Shared
   illustrated CSS explicitly sets max-height:none; override that one rule. */
body[data-theme="vow"][data-collection="illustrated"] #invitation .wc-venue{
 width:80%;max-width:100%;margin:16px auto;
}
body[data-theme="vow"][data-collection="illustrated"] #invitation .wc-venue img{
 width:100%;height:auto;max-height:250px!important;
 object-fit:contain;object-position:center;
}
/* The original foliage panels frame a single full-length garden illustration. */
.wc-opening.op-vow{
 --vow-action-bottom:max(68px,calc(env(safe-area-inset-bottom) + 60px));
 background:var(--vow-paper);
 color:var(--vow-ink);
 /* Let the garden soften into the paper as the invitation comes through. */
 transition:opacity .42s ease .08s,visibility .5s;
}
.wc-opening.op-vow.is-opening{background:var(--vow-paper)}
.wc-opening.op-vow .wc-stage{
 position:absolute;inset:0;overflow:hidden;isolation:isolate;container-type:size;
 transition:opacity .24s ease-out;
}
.wc-opening.op-vow.op-exit .wc-stage{opacity:0}
.wc-opening.op-vow .wc-stage:before{
 content:"";position:absolute;inset:-24px;z-index:0;
 background:var(--wc-opening-art) center/cover no-repeat;
 filter:blur(26px);opacity:.16;pointer-events:none;
}
.wc-opening.op-vow .wc-couple{
 position:absolute;top:56%;left:50%;
 display:block;width:min(100%,62cqh);height:auto;
 object-fit:contain;transform:translate(-50%,-50%);z-index:2;
 mask-image:linear-gradient(transparent,#000 8%,#000 94%,transparent);
}
.wc-opening.op-vow .wc-garden-leaf{
 position:absolute;inset:0 auto 0 0;width:18%;z-index:5;
 overflow:hidden;backface-visibility:hidden;
 transition:transform 2.05s cubic-bezier(.22,.65,.2,1) .15s,opacity .75s ease .5s;
 mask-image:linear-gradient(to right,#000 72%,transparent);
}
.wc-opening.op-vow .wc-garden-leaf.wc-right{
 left:auto;right:0;
 mask-image:linear-gradient(to left,#000 72%,transparent);
}
.wc-opening.op-vow .wc-garden-door-art{
 display:block;width:100%;height:100%;
 object-fit:cover;object-position:left center;
 pointer-events:none;
}
.wc-opening.op-vow .wc-garden-leaf.wc-right .wc-garden-door-art{
 object-position:right center;
}
/* Keep the caption above the couple and visible throughout the opening. */
.wc-opening.op-vow .wc-garden-copy{
 position:absolute;top:3%;left:10%;right:10%;height:26%;
 display:flex;flex-direction:column;align-items:center;justify-content:center;
 gap:4px;z-index:4;margin:0;
 text-align:center;overflow:hidden;color:var(--vow-ink);
 pointer-events:none;
}
.wc-opening.op-vow .wc-garden-copy p{
 font:10px/1.35 Georgia,serif;margin:0;
}
.wc-opening.op-vow .wc-garden-copy .wc-garden-guest{
 max-width:100%;font-size:9px;line-height:1.35;
 overflow-wrap:break-word;text-align:center;
}
.wc-opening.op-vow .wc-garden-copy strong{
 width:100%;max-height:100%;
 display:flex;flex-direction:column;flex-wrap:nowrap;
 align-items:center;justify-content:center;gap:2px;
 font:400 clamp(20px,7.4cqw,31px)/1.13 'Cormorant Garamond',Georgia,serif;
 overflow-wrap:normal;word-break:normal;hyphens:none;
}
.wc-opening.op-vow .wc-garden-copy strong>span{
 max-width:100%;text-wrap:balance;overflow-wrap:normal;word-break:normal;
}
.wc-opening.op-vow .wc-garden-copy em{
 font-size:.72em;font-weight:400;line-height:1;
}
.wc-opening.op-vow.is-opening .wc-garden-leaf.wc-left{
 transform:translate3d(-101%,0,0);opacity:0;
}
.wc-opening.op-vow.is-opening .wc-garden-leaf.wc-right{
 transform:translate3d(101%,0,0);opacity:0;
}
/* Controls use safe-area spacing and remain apart on short screens. */
.wc-opening.op-vow .wc-seal{
 position:absolute;left:50%;top:auto;
 bottom:calc(var(--vow-action-bottom) + 75px);
 width:48px;height:48px;min-width:44px;min-height:44px;
 display:grid;place-items:center;
 margin:0;padding:0;
 transform:translateX(-50%);
 border:1px solid #b19a6b;border-radius:50%;
 background:#faf8efee;color:var(--vow-ink);
 font:italic 15px/1.1 Georgia,serif;z-index:7;
}
.wc-opening.op-vow .wc-seal span{
 display:block;max-width:42px;margin:0;white-space:nowrap;
}
.wc-opening.op-vow.is-opening .wc-seal{
 transform:translateX(-50%) scale(.85);
}
.wc-opening.op-vow .wc-enter{
 bottom:var(--vow-action-bottom);min-height:44px;
 padding:10px 20px;max-width:calc(100% - 32px);
 background:#faf8ef;color:var(--vow-ink);
}
.wc-opening.op-vow .wc-skip{
 top:max(12px,env(safe-area-inset-top));
 right:max(12px,env(safe-area-inset-right));
 min-height:44px;padding:9px 14px;
}
.wc-opening.op-vow .wc-brand{
 bottom:max(5px,env(safe-area-inset-bottom));padding:5px 8px;
}
body:has(.template-enquiry-bar) .wc-opening.op-vow{
 --vow-action-bottom:max(165px,calc(env(safe-area-inset-bottom) + 160px));
}
@media(max-height:640px){
 .wc-opening.op-vow .wc-garden-copy{top:2%;height:29%}
 .wc-opening.op-vow .wc-garden-copy p{font-size:9px}
 .wc-opening.op-vow .wc-seal{
  bottom:calc(var(--vow-action-bottom) + 62px);
 }
}
@media(max-height:510px){
 .wc-opening.op-vow .wc-garden-copy{top:1%;height:31%}
 .wc-opening.op-vow .wc-seal{
  width:44px;height:44px;bottom:calc(var(--vow-action-bottom) + 58px);
 }
 .wc-opening.op-vow .wc-enter{padding:8px 14px}
}
.wc-opening.op-vow[lang="ur"] .wc-garden-copy strong{
 line-height:1.5;
}
body[data-theme="vow"] #invitation [lang="ur"] .wc-names{
 line-height:1.5;
}
@media(prefers-reduced-motion:reduce){
 .wc-opening.op-vow .wc-garden-leaf{transition:none}
}
