/* Reusable Page Builder sections. Shared header, Home and footer geometry lives in layout.css. */
.dp-inner { --dp-section-title-size: clamp(2rem,4.6875vw,5.625rem); --dp-section-subtitle-size: clamp(1.25rem,2.0833333vw,2.5rem); --dp-section-copy-size: clamp(1rem,1.25vw,1.5rem); color: #292929; background: #fff; font-family: 'DIN2014Regular',sans-serif; }
.dp-inner *, .dp-inner *::before, .dp-inner *::after { box-sizing: border-box; }
.dp-inner :is(h1,h2,h3,h4,h5,h6,p,a) { letter-spacing: normal; }
.dp-inner :is(h1,h2,h3,h4,h5,h6,strong), .dp-card-title { font-family: 'DIN2014Bold',sans-serif; font-weight: normal; }
.dp-inner :is(a,button):focus-visible { outline: .1875rem solid var(--dp-green); outline-offset: .25rem; }
.dp-inner a { color: inherit; }
.dp-header :is(.current-menu-item,.current-menu-ancestor) > a { font-family: 'DIN2014Bold',sans-serif; }
.dp-section-container { width: 88.2%; margin-inline: auto; }
:is(.dp-content,.dp-two-columns,.dp-cards,.dp-gallery,.dp-booking,.dp-form) h2 { color: var(--dp-blue); text-transform: uppercase; }
:is(.dp-content,.dp-cards,.dp-gallery,.dp-booking) > h2, .dp-content-body > h2 { margin-bottom: .5em; font-size: var(--dp-section-title-size,var(--dp-h2-size)); line-height: 1.2; letter-spacing: .0089em; }
:is(.dp-content,.dp-two-columns,.dp-cards,.dp-blurbs,.dp-special,.dp-clubs,.dp-media-text) :is(p,li) { font-size: var(--dp-section-copy-size,1rem); line-height: 1.583333; }
/* Headings inside columns and cards share the V3 subtitle and panel sizes. */
:is(.dp-two-columns,.dp-special,.dp-clubs,.dp-media-text-copy) h2 { font-size: var(--dp-section-subtitle-size,var(--dp-h2-size)); line-height: 1.25; text-transform: uppercase; }
:is(.dp-blurb,.dp-image-link,.dp-download) :is(h2,h3) { font-size: var(--dp-panel-title-size); line-height: 1.25; }
:is(.dp-content,.dp-two-columns,.dp-special,.dp-clubs,.dp-media-text) :is(p,ul,ol) { max-width: 70ch; }
:is(.dp-content,.dp-two-columns,.dp-special,.dp-clubs,.dp-media-text,.dp-cards,.dp-highlights,.dp-blurbs,.dp-banner-copy) :is(iframe,video,embed,object) { max-width: 100%; }
.dp-button, .dp-section-button, .wp-theme-DailyPress :is(.custom-btn,.wp-block-button__link), .dp-form .gform_wrapper :is(.gform_button,.gform_next_button,.gform_previous_button) { display: inline-block; width: fit-content; max-width: 100%; padding: .75rem 1.5rem; border: 0; border-radius: 0; background: var(--dp-blue); color: #fff; font-family: 'DIN2014Bold',sans-serif; font-size: 1rem; line-height: 1.2; letter-spacing: normal; text-align: center; text-decoration: none; white-space: normal; overflow-wrap: anywhere; cursor: pointer; }
.dp-button:hover, .dp-section-button:hover, .wp-theme-DailyPress :is(.custom-btn,.wp-block-button__link):hover, .dp-form .gform_wrapper :is(.gform_button,.gform_next_button,.gform_previous_button):hover { background: var(--dp-dark); color: #fff; }
.dp-inner :is(.dp-button,.dp-section-button) { color: #fff; }

/* Banners: one media renderer supports both full-width and split content. */
.dp-page-hero { position: relative; display: grid; place-items: center; height: var(--dp-banner-height); overflow: hidden; background: var(--dp-dark); }
.dp-page-hero > img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; }
.dp-page-hero h1 { position: relative; width: fit-content; min-width: 48.098958vw; max-width: calc(100% - 3rem); margin: 0; padding: 1.6863vw 3.8234vw; border: .729167vw solid #fff; color: #fff; font-size: clamp(2rem,6.6946875vw,8.033625rem); line-height: 1.2; letter-spacing: .0089em; text-align: center; text-transform: uppercase; overflow-wrap: anywhere; }
.dp-page-hero > :is(.dp-banner-image,.swiper-container) { position: absolute; inset: 0; }
.dp-page-hero > h1 { z-index: 2; }
.dp-banner-split { display: grid; grid-template-columns: minmax(0,1fr) minmax(0,1.6fr); background: var(--dp-surface); }
.dp-banner-split--text { grid-template-columns: minmax(0,1fr); text-align: center; }
.dp-banner-split--text .dp-banner-buttons { justify-content: center; }
.dp-banner-copy { align-self: center; min-width: 0; padding: clamp(2rem,4vw,4rem); }
.dp-banner-copy h2 { color: var(--dp-blue); font-size: clamp(2rem,3.75vw,4.5rem); line-height: 1.2; text-transform: uppercase; }
.dp-banner-copy :is(p,li) { font-size: var(--dp-section-copy-size,1rem); line-height: 1.583333; }
.dp-banner-copy .dp-button { font-size: var(--dp-section-copy-size,1rem); }
.dp-banner-buttons { display: flex; flex-wrap: wrap; gap: 1rem; margin-top: 1.5rem; }
.dp-banner-media { min-width: 0; overflow: hidden; }
.dp-banner-media :is(.swiper-container,.swiper-wrapper,.swiper-slide,.dp-banner-image) { height: 100%; }
.dp-banner-media img { display: block; width: 100%; height: 100%; min-height: 20rem; max-height: var(--dp-banner-height); object-fit: cover; }

/* Text, outlined sections and two-column content. */
.dp-content { --dp-content-top-space: clamp(2rem,4vw,4rem); padding: var(--dp-content-top-space) 0 2rem; background: var(--dp-section-bg,#fff); color: var(--dp-section-ink,#292929); text-align: center; }
.dp-content + .dp-content { --dp-content-top-space: clamp(2rem,2.5vw,3rem); }
.dp-content:has(> .dp-content-body > h3:first-child):not(.dp-content--spaced) { --dp-content-top-space: clamp(1rem,1.39vw,1.668rem); }
.dp-content.dp-content--spaced { --dp-content-top-space: clamp(4rem,8vw,7rem); }
.dp-content-body { width: 88.2%; margin: 0 auto; }
.dp-content-body :is(p,ul,ol) { margin-inline: auto; }
.dp-content-body :is(p,ul,ol), .dp-card-copy :is(p,li), .dp-cards-intro p { max-width: 75vw; font-size: var(--dp-section-copy-size,1rem); line-height: 1.583333; }
.dp-content-body p { margin-bottom: 1.583333em; }
.dp-content-body h3, .dp-card h4, .dp-cards-intro h3 { font-size: var(--dp-section-subtitle-size,var(--dp-h3-size)); letter-spacing: .0089em; }
.dp-content-body > h3:first-child { margin-bottom: 0; }
.dp-content-body :is(ul,ol) { text-align: left; }
.dp-content-body :last-child { margin-bottom: 0; }
.dp-content h2 { color: var(--dp-section-heading,var(--dp-blue)); }
.dp-content--outlined .dp-content-body { width: 84%; border: .1875rem solid var(--dp-section-border,var(--dp-green)); padding: 1.5rem; }
.dp-content--outlined .dp-content-body > h2:first-child { display: table; max-width: 100%; margin: calc(-.6em - 1.5rem) auto 1rem; padding: 0 2.4vw; background: var(--dp-section-bg,#fff); }
.dp-two-columns { padding: clamp(2rem,4vw,4rem) 1.5rem; background: var(--dp-surface); }
.dp-two-columns-grid { display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); align-items: start; gap: clamp(2rem,5vw,5rem); max-width: 70rem; margin: auto; }
.dp-two-columns-intro { border-left: .1875rem solid var(--dp-green); padding-left: 1.5rem; }
.dp-two-columns-grid > div { min-width: 0; }

/* Bordered cards retain the V3 desktop widths. */
.dp-cards { position: relative; isolation: isolate; padding: clamp(2rem,4vw,4rem) 0; background: var(--dp-section-bg,#fff); color: var(--dp-section-ink,#292929); text-align: center; }
.dp-cards-background { position: absolute; z-index: -1; inset: 0; width: 100%; height: 100%; object-fit: cover; opacity: .16; }
.dp-cards h2 { color: var(--dp-section-heading,var(--dp-blue)); }
.dp-cards-intro { width: 88.2%; margin-inline: auto; }
.dp-cards > h2:has(+ .dp-cards-intro) { margin-bottom: 0; }
.dp-cards-intro p { margin-inline: auto; }
.dp-cards-intro h3 { margin-bottom: 0; }
.dp-cards-grid { display: grid; justify-content: center; align-items: stretch; margin: 2.5rem auto 0; gap: clamp(2rem,3.9vw,4.7rem); }
.dp-cards-intro + .dp-cards-grid { margin-top: clamp(2.5rem,3.020833vw,3.625rem); }
.dp-cards-intro + .dp-cards-grid:has(.dp-schedule-row) { margin-top: clamp(2.5rem,4.166667vw,5rem); }
.dp-cards--3 .dp-cards-grid { width: 84%; grid-template-columns: repeat(3,minmax(0,1fr)); }
.dp-cards--2 .dp-cards-grid { width: 53.3%; grid-template-columns: repeat(2,minmax(0,1fr)); gap: clamp(2rem,2.45vw,3rem); }
.dp-cards--1 .dp-cards-grid { width: 30.4%; grid-template-columns: minmax(0,1fr); }
.dp-card { min-width: 0; margin-top: .75rem; padding: 0 1.5vw 1.5rem; border: .15625vw solid var(--dp-green); background: #fff; color: #292929; }
.dp-card-title { display: table; width: fit-content; max-width: 100%; margin: -.65em auto 1rem; padding: 0 .5rem; background: #fff; color: #292929; font-size: var(--dp-section-subtitle-size,var(--dp-h3-size)); line-height: 1.25; text-transform: uppercase; overflow-wrap: anywhere; }
.dp-card-copy :last-child { margin-bottom: 0; }
.dp-card-copy table { width: auto; margin-inline: auto; border: 0; background: transparent; font-size: var(--dp-section-copy-size,1rem); }
.dp-card-copy table :is(th,td) { padding: 0 .75em; border: 0; background: transparent; color: inherit; font-size: inherit; line-height: 1.583333; text-align: left; }
.dp-card-copy table tbody tr:nth-child(even) { background: transparent; }
.dp-card-copy th { font-family: 'DIN2014Bold',sans-serif; }
.dp-cards--3 .dp-card:has(.dp-schedule-row) { min-height: 25.208333vw; }
.dp-schedule-row { display: grid; grid-template-columns: 5.333333em minmax(0,1fr); gap: .78125vw; margin-bottom: 1.583333em; padding-left: 2.5vw; text-align: left; font-size: var(--dp-section-copy-size,1rem); line-height: 1.583333; }
.dp-schedule-row strong { text-transform: uppercase; }
.dp-schedule-row:last-child { margin-bottom: 0; }
.dp-schedule-row span { display: block; }
.dp-cards--1 .dp-schedule-row { max-width: 18rem; margin-inline: auto; padding-left: 0; grid-template-columns: 6rem minmax(0,1fr); }
.dp-section-button { display: table; margin: 1.5rem auto -2.75rem; }
.dp-cards .dp-section-button { padding: .15625vw 1.666667vw; font-size: var(--dp-section-subtitle-size,1rem); line-height: 1; }
.dp-gallery-caption { font-size: var(--dp-section-copy-size,1rem); line-height: 1.5; }
.dp-event-empty { text-align: center; }
.dp-event-date { font-family: 'DIN2014Bold',sans-serif; font-size: var(--dp-section-copy-size,1rem); line-height: 1.583333; }
.dp-card-title a { color: inherit; text-decoration: none; }
/* Shown to logged-in editors only, next to each event that comes from Events. */
.dp-edit-link { display: block; width: fit-content; margin: .25rem 0 0; color: var(--dp-blue) !important; font-family: 'DIN2014Regular',sans-serif; font-size: .8125rem; line-height: 1.4; text-decoration: underline; text-transform: none; }
.dp-card > .dp-edit-link { margin: .75rem auto 0; }

/* Image galleries, including the existing Banner's optional extra images. */
.dp-gallery { padding: 2rem 0 3rem; text-align: center; }
.dp-gallery--carousel { padding-top: 2.16667vw; padding-bottom: 3.40625vw; }
.dp-gallery-container { position: relative; width: 88.2%; margin: auto; }
.dp-gallery--medium .dp-gallery-container { width: 75.3%; }
.dp-gallery-images { display: grid; grid-template-columns: repeat(3,minmax(0,1fr)); gap: clamp(1rem,1.56vw,2rem); }
.dp-gallery figure { min-width: 0; margin: 0; }
.dp-gallery a, .dp-gallery img { display: block; width: 100%; }
.dp-gallery img { height: auto; }
.dp-gallery--grid img { aspect-ratio: 683 / 576; object-fit: cover; }
.dp-gallery--stacked .dp-gallery-images { grid-template-columns: minmax(0,1fr); }
.dp-gallery--stacked.dp-gallery--wide img { box-shadow: 0 .25rem .75rem rgb(0 0 0 / 12%); }
.dp-gallery-caption { margin: -1rem 0 2rem; }
.dp-gallery .swiper-container { width: 100%; overflow: hidden; }
.dp-gallery .swiper-slide img { aspect-ratio: 5 / 6; object-fit: cover; }
.dp-gallery-prev, .dp-gallery-next { position: absolute; z-index: 2; top: 50%; width: 2.597917vw; height: 3.25625vw; padding: 0; border: 0; transform: translateY(-50%); background: transparent; cursor: pointer; }
.dp-gallery-prev { left: -4.38646vw; }
.dp-gallery-next { right: -4.38646vw; }
.dp-gallery-prev::after, .dp-gallery-next::after { content: ''; display: block; width: 100%; height: 100%; background: url('../images/gallery-arrow.svg') center / contain no-repeat; }
.dp-gallery-next::after { transform: scaleX(-1); }

/* Legacy block fields now render sections from the same visual system. */
:is(.dp-blurbs,.dp-special,.dp-clubs,.dp-image-links,.dp-sponsors,.dp-downloads,.dp-form,.dp-events) { padding-block: clamp(2rem,4vw,4rem); }
.dp-blurbs, .dp-special, .dp-clubs { position: relative; isolation: isolate; background: var(--dp-section-bg,var(--dp-surface)); }
.dp-blurbs-background, .dp-special-background, .dp-clubs-background { position: absolute; z-index: -1; inset: 0; width: 100%; height: 100%; object-fit: cover; opacity: .16; }
.dp-blurbs { color: var(--dp-section-ink,#292929); }
.dp-blurbs > .dp-section-container > h2 { color: var(--dp-section-heading,var(--dp-blue)); font-size: var(--dp-section-title-size,var(--dp-h2-size)); line-height: 1.2; text-align: center; text-transform: uppercase; }
/* Card rows stay centred when they hold fewer than four items. */
.dp-blurbs-grid, .dp-image-links-grid, .dp-sponsors-grid { --dp-per-row: 4; --dp-gap: 1.5rem; display: flex; flex-wrap: wrap; justify-content: center; align-items: flex-start; gap: var(--dp-gap); }
.dp-sponsors-grid { --dp-gap: 2rem; align-items: center; }
:is(.dp-blurbs-grid,.dp-image-links-grid,.dp-sponsors-grid) > * { flex: 0 1 calc((100% - (var(--dp-per-row) - 1) * var(--dp-gap)) / var(--dp-per-row)); }
.dp-blurb { min-width: 0; background: #fff; color: #292929; }
.dp-blurb > img { display: block; width: 100%; aspect-ratio: 4 / 3; object-fit: cover; }
.dp-blurb-copy { padding: 1.5rem; }
.dp-blurb h3 { color: var(--dp-blue); }
.dp-blurb-copy > :last-child { margin-bottom: 0; }
.dp-blurbs--centered .dp-blurb { text-align: center; }
.dp-special, .dp-clubs { padding-inline: 1.5rem; }
.dp-special-grid { display: grid; grid-template-columns: minmax(0,1fr) minmax(0,1.2fr); max-width: 70rem; margin: auto; }
.dp-special-grid:not(:has(.dp-special-image)) { grid-template-columns: minmax(0,1fr); }
.dp-special-image img { display: block; width: 100%; height: 100%; object-fit: cover; }
.dp-special-copy { min-width: 0; padding: clamp(1.5rem,3vw,3rem); background: #fff; color: #292929; }
.dp-special h2, .dp-clubs h2 { color: var(--dp-blue); }
.dp-clubs-content { max-width: 70rem; margin: auto; padding: 2rem; border: .1875rem solid var(--dp-green); background: #fff; color: #292929; }
.dp-clubs-grid { display: grid; grid-template-columns: repeat(auto-fit,minmax(min(100%,14rem),1fr)); gap: 2rem; }
.dp-image-link { min-width: 0; background: var(--dp-blue); color: #fff; }
.dp-image-link :is(a,div) { display: block; height: 100%; color: inherit; text-decoration: none; }
.dp-image-link img { display: block; width: 100%; aspect-ratio: 4 / 3; object-fit: cover; }
.dp-image-link h2 { margin: 0; padding: 1rem; text-align: center; text-transform: uppercase; }
.dp-image-link:has(a:hover) { background: var(--dp-dark); }
.dp-sponsor { min-width: 0; }
.dp-sponsor img { display: block; width: 100%; height: 9rem; object-fit: contain; }
.dp-downloads-grid { display: grid; grid-template-columns: repeat(auto-fit,minmax(min(100%,16rem),1fr)); gap: 1.5rem; }
.dp-download { min-width: 0; padding: 1.5rem; border: .125rem solid var(--dp-green); text-align: center; }
.dp-download > .fa { color: var(--dp-blue); font-size: 2rem; }
.dp-download h2 { color: var(--dp-blue); margin-block: 1rem; }
.dp-form h2 { text-align: center; }
body.wp-theme-DailyPress .gform_wrapper :is(input[type],select,textarea) { max-width: 100%; font-size: 1rem; line-height: 1.5; }
.wp-theme-DailyPress main .gform_wrapper :is(label,legend,.gfield_description,.gform_required_legend) { font-size: .875rem; line-height: 1.5; }
.dp-media-text { display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); background: var(--dp-section-bg,var(--dp-surface)); color: var(--dp-section-ink,#292929); }
.dp-media-text-media { order: 2; min-height: 20rem; }
.dp-media-text--media-first .dp-media-text-media { order: 0; }
.dp-media-text-media img { display: block; width: 100%; height: 100%; object-fit: cover; }
.dp-media-text-copy { order: 1; min-width: 0; padding: clamp(2rem,4vw,4rem); }
.dp-media-text-copy > :last-child { margin-bottom: 0; }
.dp-media-text:not(:has(.dp-media-text-media)) { grid-template-columns: minmax(0,1fr); }
.dp-media-text:not(:has(.dp-media-text-copy)) { grid-template-columns: minmax(0,1fr); }
.dp-booking { padding: 2rem 0 3rem; text-align: center; }
.dp-booking-frame { width: 89.3%; margin: auto; }
.dp-booking .dp-booking-frame iframe { display: block; width: 100%; max-width: 100%; height: 35rem; min-height: 0; margin: 0; border: 0; }

/* Native Calendar views inherit the site's scale; existing shortcode views remain supported. */
body.wp-theme-DailyPress {
    --tec-font-family-sans-serif: 'DIN2014Regular',sans-serif;
    --tec-font-size-0: .875rem; --tec-font-size-1: .875rem; --tec-font-size-2: .875rem;
    --tec-font-size-3: 1rem; --tec-font-size-4: 1.125rem; --tec-font-size-5: 1.25rem;
    --tec-font-size-6: 1.5rem; --tec-font-size-7: 1.5rem; --tec-font-size-8: 2rem;
    --tec-font-size-9: 2rem; --tec-font-size-10: 3rem;
    --tec-color-accent-primary: var(--dp-blue); --tec-color-text-primary: #292929;
    --tec-color-button-primary: var(--dp-dark);
}
.wp-theme-DailyPress .tribe-events-pro .tribe-events-pro-photo__event-featured-image-date-tag-month { font-family: 'DIN2014Regular',sans-serif; font-size: .875rem; }
.wp-theme-DailyPress .tribe-events-pro-photo .type-tribe_events .tribe-events-photo-event-wrap .tribe-events-event-details h3 { font-size: var(--dp-h3-size); line-height: 1.25; }
.wp-theme-DailyPress .tribe-events-pro-photo .type-tribe_events .tribe-events-photo-event-wrap .tribe-events-event-details .tribe-events-event-meta .tribe-event-schedule-details { font-size: 1rem; line-height: 1.6; }
.wp-theme-DailyPress .tribe-events-pro-photo .type-tribe_events .tribe-events-photo-event-wrap .tribe-events-event-details .event-more-btn-container .event-more-btn { background: var(--dp-blue); font-size: 1rem; }
.wp-theme-DailyPress.single-tribe_events .tribe-events-content p { font-family: 'DIN2014Regular',sans-serif; font-size: 1rem; line-height: 1.6; }
.dp-event-details .tribe-events-meta-group { min-width: 0; font-size: 1rem; }
.dp-event-details .tribe-events-meta-group h2 { font-size: var(--dp-h2-size); }

@media (max-width: 68.75rem) {
    .dp-content-body :is(p,ul,ol), .dp-card-copy :is(p,li), .dp-cards-intro p { max-width: 70ch; }
    .dp-gallery--carousel { padding-block: 2rem 3rem; }
    .dp-gallery-prev, .dp-gallery-next { width: 2.5rem; height: 3.5rem; }
    .dp-gallery-prev { left: -2.75rem; }
    .dp-gallery-next { right: -2.75rem; }
    .dp-card { border-width: 2px; padding-inline: 1.5rem; }
    .dp-cards--3 .dp-card:has(.dp-schedule-row) { min-height: 0; }
    .dp-schedule-row { gap: 1rem; margin-bottom: 1.25rem; padding-left: 0; }
    .dp-cards .dp-section-button { padding: .75rem 1.5rem; font-size: 1rem; line-height: 1.2; }
    .dp-section-container, .dp-content-body, .dp-content--outlined .dp-content-body, .dp-cards-intro, .dp-cards .dp-cards-grid { width: calc(100% - 4rem); }
    .dp-cards--1 .dp-cards-grid { max-width: 36rem; }
    .dp-gallery-container { width: calc(100% - 4rem); }
    .dp-gallery--medium .dp-gallery-container, .dp-gallery--carousel .dp-gallery-container { width: calc(100% - 6rem); }
    .dp-cards--3 .dp-cards-grid { grid-template-columns: repeat(2,minmax(0,1fr)); }
    .dp-blurbs-grid, .dp-image-links-grid { --dp-per-row: 2; }
}
@media (max-width: 48rem) {
    .dp-banner-split, .dp-two-columns-grid, .dp-special-grid, .dp-media-text { grid-template-columns: minmax(0,1fr); }
    .dp-media-text-media { order: 0; }
    .dp-sponsors-grid { --dp-per-row: 2; }
}
@media (max-width: 40rem) {
    .dp-page-hero h1 { min-width: 65%; padding: 1rem; }
    .dp-section-container, .dp-content-body, .dp-content--outlined .dp-content-body, .dp-cards-intro, .dp-cards .dp-cards-grid, .dp-gallery-container, .dp-gallery--medium .dp-gallery-container { width: calc(100% - 2.5rem); }
    .dp-content--outlined .dp-content-body { padding: 1.25rem; }
    .dp-content--outlined .dp-content-body > h2:first-child { margin-top: calc(-.6em - 1.25rem); }
    .dp-cards--3 .dp-cards-grid, .dp-cards--2 .dp-cards-grid { grid-template-columns: minmax(0,1fr); }
    .dp-blurbs-grid { --dp-per-row: 1; }
    .dp-card { padding-inline: 1.25rem; }
    .dp-gallery-images { grid-template-columns: minmax(0,1fr); }
    .dp-gallery--carousel .dp-gallery-container { width: calc(100% - 5rem); }
    .dp-gallery-prev { left: -2.5rem; }
    .dp-gallery-next { right: -2.5rem; }
    .dp-booking { padding-inline: 1.25rem; }
    .dp-booking-frame { width: 100%; }
}
