/* Additive styling: original Stitch UI is preserved in style.css. */
.loading-wedding{padding:35vh 15px;text-align:center;font-family:var(--serif);font-size:28px}.invitation-button{display:inline-flex;justify-content:center;align-items:center;cursor:pointer;text-decoration:none}.wedding-icon-button{display:grid;place-items:center;cursor:pointer}.scroll-reveal{opacity:0;transform:translateY(32px);transition:opacity 850ms cubic-bezier(.2,.7,.2,1),transform 850ms cubic-bezier(.2,.7,.2,1)}.scroll-reveal.is-visible{opacity:1;transform:translateY(0)}.opening--leaving .opening-content{animation:open-gateway .7s ease forwards}.guest-exit{animation:cover-out .55s ease forwards}.opening.opened .guest-block{pointer-events:none}.opening .opening-content{transition:transform .65s ease,opacity .65s ease}@keyframes open-gateway{0%{opacity:1;transform:scale(1)}50%{opacity:.65;transform:scale(1.025)}100%{opacity:1;transform:scale(1)}}@keyframes cover-out{to{opacity:0;transform:translateY(-20px)}}.leaf-drawing{font-size:180px;position:absolute;left:4%;top:12%;opacity:.11;color:var(--gold);pointer-events:none}.leaf-drawing.right{left:auto;right:4%;transform:scaleX(-1)}.person-parents{font-family:var(--serif);font-size:18px;color:var(--muted-foreground);margin-top:14px}.story-section{background:var(--background)}.rundown-section{background:var(--secondary)}.timeline{max-width:700px;margin:auto;position:relative;border-left:1px solid var(--gold);padding:12px 0 12px 37px}.timeline-item{position:relative;padding:13px 0 40px}.timeline-dot{position:absolute;left:-45px;top:17px;background:var(--gold);height:14px;width:14px;border:4px solid var(--background);outline:1px solid var(--gold);border-radius:50%}.timeline-item h3,.event-card h3{font:35px/1.1 var(--serif);margin:10px 0}.timeline-item>p:last-child,.event-card p{font:19px/1.65 var(--serif);color:var(--muted-foreground)}.event-list{max-width:760px;margin:auto}.event-card{display:grid;grid-template-columns:160px 1fr;gap:25px;padding:27px 0;border-bottom:1px solid var(--border);align-items:center}.event-time{color:var(--muted-foreground);font:22px var(--serif)}.gift-section{background:var(--secondary)}.gift-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,310px),1fr));gap:23px;max-width:760px;margin:auto}.gift-card{border:1px solid var(--border);background:var(--background);padding:35px 26px;text-align:center}.gift-card h3{font:38px var(--serif);margin:12px 0 20px}.gift-card strong{display:block;font:31px var(--serif);overflow-wrap:anywhere}.gift-card p{font-size:11px;margin:14px;color:var(--muted-foreground)}.gift-copy{min-height:40px;border:1px solid var(--border);background:transparent;color:var(--foreground);padding:12px 17px;cursor:pointer;display:inline-flex;align-items:center;justify-content:center;gap:8px;font-size:11px;margin-top:16px}.gift-copy:hover{background:var(--secondary)}.qr-wrap{background:#fff;display:grid;place-items:center;padding:15px;width:min(260px,100%);margin:auto}.qr-wrap img{max-width:100%;width:240px;max-height:280px;object-fit:contain}.music-control{position:fixed;z-index:50;right:20px;bottom:20px;border-radius:50%;background:var(--primary);color:var(--champagne);border:1px solid var(--gold);box-shadow:0 8px 25px #0002;width:45px;height:45px;display:grid;place-items:center;cursor:pointer}.music-control[hidden],.toast[hidden]{display:none}.form-panel select[hidden],.field-label[hidden]{display:none}.venue-art img{display:none}.venue-art{min-height:370px}.opening.opened{scroll-margin-top:0}
@media(max-width:600px){.event-card{grid-template-columns:1fr;gap:3px}.gift-card{padding:29px 18px}.timeline{padding-left:25px}.timeline-dot{left:-33px}.leaf-drawing{font-size:110px}.music-control{right:13px;bottom:13px}}
@media(prefers-reduced-motion:reduce){.scroll-reveal{opacity:1!important;transform:none!important;transition:none!important}.opening--leaving .opening-content,.guest-exit{animation:none!important}}

.center-reminder{text-align:center}

.draft-preview-banner{position:fixed;z-index:99;left:50%;top:7px;transform:translateX(-50%);background:#eddfc9;border:1px solid #b39b79;color:#4a3629;padding:9px 13px;box-shadow:0 7px 25px #0004;font:600 10px sans-serif;letter-spacing:.05em;text-align:center;max-width:95vw}

/* V5: lock the cover before the only opening interaction (Buka Undangan). */
html.invite-locked{overflow:hidden!important;overscroll-behavior:none;scroll-behavior:auto!important}
html.invite-locked body{position:fixed;inset:0;width:100%;height:100svh;overflow:hidden!important;overscroll-behavior:none;touch-action:pan-x}
html.invite-locked #main-content{visibility:hidden}
html.invite-locked .opening{overflow:hidden}
/* Do not enlarge names after opening: it previously jolted the mobile cover. */
.opening.opened .opening-content h1{font-size:106px}
@media(max-width:900px){.opening.opened .opening-content h1{font-size:94px}}
.music-control.is-playing{box-shadow:0 8px 25px #0002,0 0 0 4px color-mix(in srgb,var(--gold) 25%,transparent)}
@media(max-width:600px){
 .opening,.opening.opened{height:100svh;min-height:0;max-height:none;overflow:hidden}
 .wedding-nav{flex:none;padding:clamp(11px,2.3svh,18px) 23px 0;min-height:45px;box-sizing:border-box}
 .brand{font-size:25px}.nav-right{gap:10px}.nav-date{font-size:7px}
 .opening::after{inset:10px;bottom:10px}
 .opening-content,.opening.opened .opening-content{
  box-sizing:border-box;min-height:0;width:100%;flex:1 1 auto;
  justify-content:center;padding:0 22px 0;gap:0;
 }
 .arch,.opening.opened .arch{top:5px;bottom:4px;width:min(75vw,335px)}
 .small-crest,.opening.opened .opening-content .small-crest{
  width:clamp(37px,6.3svh,53px);height:clamp(37px,6.3svh,53px);
  margin-bottom:clamp(7px,1.6svh,14px);font-size:21px;flex-shrink:0
 }
 .opening h1,.opening.opened .opening-content h1{
  font-size:clamp(45px,8svh,70px);line-height:.83;
  margin:clamp(8px,1.8svh,14px) 0 clamp(9px,1.6svh,13px);
  gap:clamp(4px,1.1svh,8px)
 }
 .opening h1 em{font-size:clamp(29px,5svh,43px);margin:0;line-height:.8}
 .romantic-line{font-size:clamp(12px,2.2svh,17px);line-height:1.15}
 .opening .ornament{margin:clamp(8px,1.8svh,15px) 0}
 .opening-date{font-size:9px;margin-bottom:5px}
 .opening-place{font-size:7px}
 .guest-block{margin-top:clamp(10px,2.2svh,17px)}
 .guest-block p{font-size:9px}
 .guest-block strong{font-size:clamp(19px,3svh,23px);margin:4px 0 10px;max-width:85vw}
 #open-invite{height:clamp(40px,6svh,46px)!important;min-width:min(235px,85vw)}
 .guest-note{font-size:8px;margin-top:7px}
 .scroll-note{flex:none;justify-content:center;padding:0 0 max(12px,env(safe-area-inset-bottom));margin:0;font-size:7px;min-height:22px}
}
@media(max-width:600px) and (max-height:600px){
 .opening-content{padding-top:0}
 .small-crest,.opening.opened .opening-content .small-crest{width:35px;height:35px;margin-bottom:3px}
 .opening h1,.opening.opened .opening-content h1{font-size:clamp(39px,8svh,49px);margin:5px 0;gap:2px}
 .opening h1 em{font-size:27px}
 .opening .ornament{margin:6px 0}
 .guest-block{margin-top:7px}
 .guest-block strong{margin-bottom:6px}
 .guest-note{margin-top:3px}
 .scroll-note{padding-bottom:8px}
}
@media(prefers-reduced-motion:reduce){.music-control.is-playing{box-shadow:0 8px 25px #0002}}
