/* Shared data-bound readability and fallback; the two original art directions stay intact. */
[data-story-body],.arrival p,.programme span { white-space:pre-line; overflow-wrap:anywhere; }
.story-reel .act [data-story-body] { font-size:20px;line-height:1.95;opacity:1; }
.story-reel .act h2 { white-space:normal; }
/* Story headings receive focus for screen-reader navigation, not as editable fields. */
.story-reel .act h2[tabindex="-1"]:focus { outline:none; }
.act h2 { overflow-wrap:anywhere; text-wrap:pretty; }
.cinema-wordmark,.ticket-names,.invitation-names,.signature { overflow-wrap:anywhere; max-width:100%; }
.cinema-wordmark { max-width:45vw; line-height:1.2; }
.long-names .cinema-wordmark { font-size:clamp(16px,2.4vw,30px); }
.long-names .ticket-names { font-size:clamp(26px,4vw,54px); }
.long-names .poster-four .poster-title { font-size:12cqw; line-height:1.4; padding:0 10%; }
.poster-four .poster-title { overflow-wrap:anywhere; }
.photo-frame img { width:100%;height:100%;object-fit:contain!important; }
.poster-front>img,.poster-photo img { width:100%;height:100%;object-fit:contain!important; }
.photo-frame:disabled { cursor:default; }
.photo-frame:disabled .photo-expand { display:none; }
.photo-dialog img { object-fit:contain; }
.programme time { font-size:clamp(20px,2.5vw,32px);white-space:nowrap; }
.wedding-fallback-response { display:inline-flex;min-height:46px;align-items:center;margin:28px 0;padding:12px 20px;border:1px solid currentColor; }
.invite-design-return { position:fixed;top:12px;left:16px;z-index:30;display:inline-flex;align-items:center;min-height:44px;padding:8px 14px;max-width:calc(100vw - 32px);background:var(--paper,#f4eee5);color:var(--ink,#38232b);border:1px solid var(--line,#c6af88);font-size:14px;line-height:1.5;text-decoration:none; }
.wedding-gallery { display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:20px;margin:44px 0; }
.wedding-gallery .photo-frame { aspect-ratio:4/5; }
.act-rule { justify-content:flex-start; }
.act-rule>span { font:inherit!important; }
.rsvp-dialog [role=alert] { color:#7e293c;font:16px/1.8 var(--sans);white-space:pre-line; }
.rsvp-dialog [data-field-error] { color:#7e293c;font-size:14px;line-height:1.7; }
.rsvp-dialog [data-custom-fields] label { display:grid;gap:10px;margin:16px 0; }
.rsvp-dialog button:disabled { opacity:.6;cursor:wait; }
.rsvp-activity-description { white-space:pre-line;font-size:16px;line-height:1.9; }
html:not(.js) .reveal { opacity:1!important;transform:none!important;clip-path:none!important; }
html:not(.js) .poster-theatre { height:200px;min-height:200px; }
html:not(.js) :is(.poster-stage,.gallery-bottom,.theatre-footer,.chapter-toggle,.chapter-rail,.scene-curtain,.poster-flight) { display:none; }
html:not(.js) .story-reel { display:block!important; }
html:not(.js) .cinema-header { position:absolute; }
@media(max-width:700px) {
 .act [data-story-body],.arrival p { font-size:18px!important;line-height:1.95!important; }
 .cinema-wordmark { font-size:clamp(22px,5vw,30px);max-width:42vw; }
 .long-names .cinema-wordmark { font-size:16px; }
 .ticket-names { font-size:clamp(30px,8vw,52px); }
 .selected-chapter { min-width:0;flex-wrap:wrap;gap:4px 10px; }
 .wedding-gallery { grid-template-columns:repeat(2,minmax(0,1fr));gap:12px; }
 .programme { overflow-wrap:anywhere; }
 .programme li { gap:14px; }
}
@media(prefers-reduced-motion:reduce) { *,*::before,*::after { scroll-behavior:auto!important;animation-duration:.01ms!important;transition-duration:.01ms!important; } }
