/* Festival family placement only; shared components own type, actions and spacing. */
.festival-package-hero { --ssm-hero-background:var(--ssm-red); --ssm-hero-color:var(--ssm-paper); }
.festival-package-section--cream { background:var(--ssm-cream); }
.festival-package .ssm-story-split { --ssm-story-align:start; }
.festival-package .ssm-story-split__media img,
.festival-package-media img,
.festival-package-map img,
.festival-package-video { display:block; width:100%; height:auto; }
.festival-package-media { width:min(100%,var(--ssm-reading-width,52rem)); margin:0 auto; }
.festival-package-map { margin:0; }
.festival-package-faq { padding-block:var(--ssm-heading-gap); border-bottom:1px solid var(--ssm-line); }
.festival-package-faq summary { font-family:var(--ssm-font-display); font-size:var(--ssm-text-cta-size); font-weight:700; cursor:pointer; }
.festival-package-faq .ssm-body-copy { margin-top:var(--ssm-heading-gap); }
.festival-package .ssm-story-split .ssm-photo-gallery { margin:0; }

.festival-package .ssm-video-embed { margin:0; }
.festival-package .ssm-video-embed figcaption { margin-top:var(--ssm-heading-gap); }
.festival-package-portrait-video video { display:block; width:min(100%,18rem); height:auto; }
/* Reused decorative backgrounds stay inside the new detail page sections. */
.festival-package :is(.ssm-festival-gallery,.ssm-festival-sponsors) { overflow:clip; }
/* Vendor marks preserve their full original proportions. */
.festival-package .festival-package-vendor-logo img { object-fit:contain; }
/* Original desktop Code Block is a contained preservation capsule. Written
   routes remain native, use common styling, and supply the small-screen view. */
.festival-itinerary-code__frame { display:block; width:100%; aspect-ratio:4420 / 2816.05; border:0; }
@media (max-width:1100px) { .festival-itinerary-code { display:none; } }
