/* Shared public layout repairs; retain the existing brand and Bootstrap grid. */
.public-site main { min-height: 45vh; overflow-wrap: anywhere; }
.public-site main img { max-width: 100%; }
.public-site main .royalSlider img { max-width: none; }
.public-site .hero-text { max-width: 100%; }
.public-site main a:not(.btn):not(.artist-link):not(.fa):not(.image-wrap) { text-underline-offset: .18em; }
.public-site main p a, .public-site address a, .newsletter-consent a { text-decoration: underline; }
.public-site a:focus-visible, .public-site button:focus-visible, .public-site [tabindex]:focus-visible,
.public-site input:focus-visible, .public-site select:focus-visible { outline: 3px solid #1267a3; outline-offset: 3px; }
.skip-link { max-width: calc(100vw - 24px); overflow-wrap: anywhere; position: fixed; top: 0; left: 12px; z-index: 2000; padding: 12px; color: #fff; background: #333; transform: translateY(-150%); }
.skip-link:focus { transform: none; color: #fff; }
.footer-spacer { height: 30px; }
.public-site #footer { overflow-wrap: anywhere; color: #b3b6ba; }
.public-site .dropdown-menu { min-width: 160px; max-width: calc(100vw - 30px); max-height: min(60vh, 420px); overflow-y: auto; }
.public-site .dropdown-menu li { min-width: 0 !important; white-space: normal; }
.public-site .dropdown-menu [role=menuitem] { padding: 8px; overflow-wrap: anywhere; cursor: pointer; }
.public-site .dropdown-menu [role=menuitem]:focus { outline-offset: -3px; background: #f2f2f2; }
.public-site dl dd { margin-bottom: 1em; }
.newsletter-form { color: #333; max-width: 760px; padding: 12px 0 28px; }
.newsletter-form [hidden] { display: none !important; }
.newsletter-form fieldset { margin: 0 0 20px; }
.newsletter-form legend { font-size: 16px; padding-bottom: 5px; color: #333; }
.newsletter-choice { display: block; font-weight: normal; margin-bottom: 8px; }
.newsletter-field { display: grid; grid-template-columns: minmax(120px, 1fr) minmax(0, 3fr); gap: 12px; margin: 14px 0; align-items: center; }
.newsletter-form label { font-size: 16px; }
.newsletter-form input:not([type=checkbox]), .newsletter-form select { width: 100%; min-width: 0; padding: 8px; font-size: 16px; border: 1px solid #777; border-radius: 0; background: #fff; color: #333; }
.newsletter-form input[type=checkbox] { width: 18px; height: 18px; vertical-align: middle; margin: 0 8px 0 0; }
.newsletter-birthday { display: grid; grid-template-columns: 1fr 2fr 1.3fr; gap: 10px; }
.newsletter-birthday label { display: block; }
.newsletter-consent { display: flex; align-items: baseline; margin: 18px 0; }
.newsletter-consent input { flex-shrink: 0; }
.newsletter-form [role=alert] { color: #891f12; }
.public-site .modal { overflow-y: auto; }
.public-site .modal-dialog { max-width: calc(100vw - 20px); }
.public-site .event-description > :last-child { margin-bottom: 0; }
@media(max-width:767px) {
 .newsletter-field { grid-template-columns: 1fr; gap: 4px; }
 .public-site .navbar-brand { max-width: calc(100% - 64px); }
 .public-site .navbar-brand img { max-width: 100%; height: auto; }
 .public-site .navbar-toggle { margin-right: 15px; }
 .public-site .hero-text h1 { font-size: clamp(24px, 6vw, 40px); }
 .public-site .hero-text p { font-size: 18px; }
 .public-site #filters-container .dropdown:last-child .dropdown-menu { right: 0; left: auto; }
 .public-site table { overflow-wrap: anywhere; }
}
@media(prefers-reduced-motion:reduce) {
 .public-site a, .public-site .service-item-card, .public-site .service-item-card img { transition: none; }
 .public-site .widget-body { scroll-behavior: auto !important; }
}

.public-site main .btn, .public-site footer .btn, .public-site .modal .btn { max-width: 100%; white-space: normal; overflow-wrap: anywhere; line-height: 1.5; height: auto; }
.public-site .footer-title { font-size: 14px; line-height: 1.1; margin-top: 20px; margin-bottom: 10px; }
.public-site .full-width-image { width: 100%; height: auto; }
.public-site main li > a, .public-site main [role=complementary] a { text-decoration: underline; }

.public-site main td a { text-decoration: underline; }
.ticket-category-color { display: inline-block; width: 20px; height: 20px; border: 1px solid #999; margin-right: 10px; vertical-align: middle; }

.public-site .rdio input:focus-visible + label { outline: 3px solid #1267a3; outline-offset: 3px; }

/* Legacy vendor styles point one directory too high for the bundled icon font. */
@font-face {
 font-family: 'FontAwesome';
 src: url('../fonts/fontawesome-webfont.woff') format('woff');
 font-weight: normal;
 font-style: normal;
 font-display: swap;
}
/* The old loading background points to a directory, not an image. */
.public-site .cbp-loading { background-image: none; }

/* Keep the primary event information first in the DOM and on small screens. */
.event-layout > *, .order-layout > * { min-width: 0; }
.event-booking { margin-bottom: 24px; }
.event-secondary { margin-top: 24px; }
.public-site ul.news-list li a.event-date-tile {
 width: auto; min-width: 60px; padding: 10px 6px;
 color: #fff; font-weight: bold; text-align: center;
}
.event-date-tile .event-date-day, .event-date-tile .event-date-year {
 display: block; white-space: nowrap; overflow-wrap: normal; line-height: 1.5;
}
.event-date-tile .event-date-year { font-size: 16px; font-weight: normal; }
.public-site .ticket-order-form input:not([type=hidden]):not([type=radio]):not([type=checkbox]),
.public-site .ticket-order-form select {
 width: 100%; max-width: 100%; min-width: 0; box-sizing: border-box;
 min-height: 44px; height: auto; padding: 8px; font-size: 16px; line-height: 1.5;
}
.public-site .ticket-order-form label { max-width: 100%; line-height: 1.5; margin-bottom: 6px; }
@media (min-width: 768px) {
 .event-layout, .order-layout { display: grid; align-items: start; }
 .event-layout { grid-template-columns: minmax(0, 1fr) minmax(0, 2fr) minmax(0, 1fr); grid-template-rows: auto 1fr; }
 .order-layout { grid-template-columns: minmax(0, 1fr) minmax(0, 3fr); }
 .event-layout::before, .event-layout::after, .order-layout::before, .order-layout::after { display: none; }
 .event-layout > *, .order-layout > * { width: auto; float: none; }
 .event-heading { grid-column: 2; grid-row: 1; }
 .event-copy { grid-column: 2; grid-row: 2; }
 .event-layout > .event-secondary { grid-column: 1; grid-row: 1 / span 2; margin-top: 0; }
 .event-booking { grid-column: 3; grid-row: 1 / span 2; position: sticky; top: 130px; }
 .order-primary { grid-column: 2; grid-row: 1; }
 .order-layout > .event-secondary { grid-column: 1; grid-row: 1; margin-top: 0; }
}
/* Enlarge actual targets, without adding a second carousel control bar. */
@media (max-width: 767px), (any-pointer: coarse) {
 .public-site .navbar-toggle { min-width: 44px; min-height: 44px; }
 .public-site main .btn, .public-site footer .btn, .public-site .modal .btn { min-height: 44px; min-width: 44px; }
 .public-site .modal .close { min-width: 44px; min-height: 44px; }
 .public-site .rsMinW .rsArrow { width: 44px; height: 44px; bottom: 6px; }
 .public-site .rsMinW .rsArrowLeft { right: 50px; }
 .public-site .rsMinW .rsArrowRight { right: 6px; }
 .public-site .rsMinW .rsArrowIcn { margin: 10px; }
 .public-site .rsMinW .rsBullets { display: flex; right: 94px; bottom: 6px; padding: 0; }
 .public-site .rsMinW .rsBullet { display: flex; align-items: center; justify-content: center; width: 44px; height: 44px; padding: 0; }
 .public-site .dateVanue { bottom: 56px; max-width: 100%; }
}

/* The legacy footer button has an inline fixed height; allow enlarged text to wrap. */
.public-site footer .btn { height: auto !important; }

.public-site .ticket-order-form, .public-site .newsletter-form { line-height: 1.5; }

/* Mobile news stays in the page flow; desktop retains its compact sidebar. */
.public-site .homepage-news { height: 385px; overflow: auto; scroll-behavior: smooth; }
.public-site .homepage-news-text { font-size: 14px; }
.public-site .homepage-news-item[hidden], .public-site .news-toggle[hidden] { display: none; }
@media (max-width: 767px) {
 .public-site .homepage-news { height: auto; overflow: visible; scroll-behavior: auto; }
 .public-site .homepage-news .news-list { display: flow-root; }
 .public-site .homepage-news .artist-link { font-size: 16px; line-height: 1.5; text-transform: none; }
 .public-site .homepage-news .homepage-news-text { font-size: 16px; line-height: 1.5; }
 .public-site .homepage-news .homepage-news-item { float: none; }
 .public-site .news-toggle { width: 100%; min-height: 44px; margin: 4px 0 12px; }
}

/* Keep the existing desktop poster/sidebar; expose one poster before mobile copy.
   Both placements share the same image URL and Twig fragment. */
.event-poster-mobile { display: none; }
.homepage-highlights { padding: 2px 40px 0 17px; }
@media (max-width: 767px) {
 .event-poster-mobile { display: block; margin-bottom: 24px; }
 .event-poster-desktop { display: none; }
 .homepage-highlights { padding: 2px 0 0; }
 .homepage-highlights > .widget-body { margin-left: 0; margin-right: 0; }
 /* Override the legacy plugin's inline pixel width and 330px upper limit. */
 .public-site #grid-container .cbp-item { width: 100% !important; max-width: 100%; }
}

/* Retain desktop card geometry; mobile actions get a separate touch-friendly row. */
.event-card-image { width: 120px; float: left; }
.event-card-copy { float: left; margin-left: 120px; padding-right: 5px; }
.event-card-datebox { height: 120px; }
.event-card-actions { padding: 10px 0 5px; margin-left: -110px; margin-right: 10px; bottom: 0; position: absolute; width: 100%; }
.event-card-action-list { margin-left: 120px; padding-left: 5px; }
.event-card-ticket { float: left; }
.event-card-info { float: right; margin-right: 20px; }
.event-card-link { font-size: 14px; font-weight: 700; color: #c53b34; text-transform: uppercase; text-decoration: none; }
@media (max-width: 767px) {
 /* The legacy plugin writes pixel heights. Let each mobile card fit its real copy. */
 .public-site #grid-container .event-card { height: auto !important; max-height: none !important; }
 .public-site .event-card .cbp-item-wrapper,
 .public-site .event-card .cbp-caption-activeWrap { position: relative; height: auto; overflow: visible; }
 .event-card-layout { display: grid; grid-template-columns: clamp(90px, 28vw, 120px) minmax(0, 1fr); gap: 12px; padding: 10px; }
 .public-site .event-card-image { position: static; float: none; width: auto; height: auto; }
 .public-site .event-card-image img { aspect-ratio: 12 / 17; object-fit: contain; }
 .event-card-copy { display: contents; }
 .event-card-copy > a { min-width: 0; }
 .event-card-datebox { height: auto; }
 .event-card-actions { grid-column: 1 / -1; position: static; width: auto; margin: 0; padding: 0; }
 .event-card-action-list { display: grid; grid-auto-flow: column; grid-auto-columns: minmax(0, 1fr); gap: 10px; margin: 0; padding: 0; }
 .event-card-ticket, .event-card-info { float: none; margin: 0; min-width: 0; }
 .public-site main .event-card-link { display: flex; align-items: center; justify-content: center; min-height: 44px; padding: 9px 12px; border: 1px solid #ad3923; color: #ad3923; background: #fff; line-height: 1.5; text-decoration: none; }
 .public-site main .event-card-ticket-link { color: #fff; background: #ad3923; }
 .public-site main .event-card-link:active { background: #f7eae7; }
 .public-site main .event-card-ticket-link:active { color: #fff; background: #8f2e1c; }
 .event-card-ticket > span { display: block; padding: 10px 0; }
}

/* News is a peer section of Highlights and Events; retain compact desktop type. */
.public-site .homepage-news-heading { font-size: 14px; font-weight: 600; line-height: 1.1; color: #666; margin: 0; padding: 20px 0 17px; }
@media (max-width: 767px) {
 .public-site .homepage-news-heading { font-size: 22px; line-height: 40px; margin: 28px 0 10px; padding: 0; }
}
