.pcp-public {
    --pcp-accent: #174a6e;
    --pcp-on-accent: #fff;
    --pcp-page: #fff;
    --pcp-surface: #fff;
    --pcp-text: #202b35;
    --pcp-muted: #4f565d;
    --pcp-link: #174a6e;
    --pcp-border: #c9ced4;
    --pcp-divider: #e3e6ea;
    --pcp-tint: #eef0f2;
    --pcp-chip: #eef0f2;
    --pcp-font-heading: system-ui, -apple-system, "Segoe UI", sans-serif;
    --pcp-font-body: system-ui, -apple-system, "Segoe UI", sans-serif;
    color: var(--pcp-text);
    background: var(--pcp-page);
    font-family: var(--pcp-font-body);
    line-height: 1.6;
}
.pcp-public h1, .pcp-public h2, .pcp-public h3, .pcp-public h4,
.pcp-wordmark, .pcp-page-title, .pcp-event-title, .pcp-month-title, .pcp-detail-header h1 {
    font-family: var(--pcp-font-heading);
}
.pcp-public a { color: var(--pcp-link); text-underline-offset: 0.2em; }
.pcp-wordmark {
    display: grid;
    grid-template-columns: 56px minmax(0, 1fr) 56px;
    align-items: center;
    gap: 1rem;
    font-size: clamp(2rem, 4vw, 3.5rem);
    font-weight: 700;
    line-height: 1.15;
    text-decoration: none;
}
.pcp-wordmark img { object-fit: contain; }
.pcp-newsroom-name { grid-column: 2; overflow-wrap: anywhere; }
.pcp-portal-label { font-size: 1.25rem; letter-spacing: 0.08em; }

@media (max-width: 575.98px) {
    .pcp-wordmark { grid-template-columns: minmax(0, 1fr); justify-items: center; }
    .pcp-newsroom-name { grid-column: 1; }
}
.pcp-public .pcp-button, .pcp-public .pcp-button:hover, .pcp-public .pcp-button:focus { color: var(--pcp-on-accent); background: var(--pcp-accent); border-color: var(--pcp-accent); }
.pcp-public .pcp-button-secondary, .pcp-public .pcp-button-secondary:hover, .pcp-public .pcp-button-secondary:focus { color: var(--pcp-link); background: var(--pcp-surface); border: 1px solid var(--pcp-accent); }
.pcp-public :focus-visible { outline: 3px solid var(--pcp-text); outline-offset: 3px; }
.pcp-skip-link { position: absolute; top: -10rem; left: 1rem; padding: 1rem; background: var(--pcp-page); z-index: 100; }
.pcp-skip-link:focus { top: 1rem; }
.pcp-muted { color: var(--pcp-muted); }
.pcp-public select, .pcp-public input, .pcp-public .btn { min-height: 44px; }
.pcp-public .btn { display: inline-flex; align-items: center; justify-content: center; }

/* Discovery bar: search first, then one-tap date ranges. */
.pcp-discovery { display: flex; flex-direction: column; gap: 0.75rem; margin-bottom: 2rem; }
.pcp-page-title { font-size: 1.75rem; font-weight: 700; margin: 0; }
.pcp-discovery .lead { margin: 0; }
.pcp-portal-context { margin: 0; }
.pcp-search-row { display: flex; gap: 0.5rem; }
.pcp-search-input { flex: 1 1 auto; min-height: 52px; font-size: 1.125rem; border-radius: 0.75rem; }
.pcp-search-row .btn { border-radius: 0.75rem; padding: 0 1.25rem; white-space: nowrap; }
.pcp-chips { display: flex; flex-wrap: wrap; gap: 0.5rem; }
.pcp-public .pcp-chip {
    display: inline-flex; align-items: center; min-height: 44px; padding: 0 1.1rem;
    border: 1px solid var(--pcp-border); border-radius: 999px;
    color: var(--pcp-text); background: var(--pcp-surface); text-decoration: none; white-space: nowrap;
}
.pcp-public .pcp-chip:hover { border-color: var(--pcp-accent); }
.pcp-public .pcp-chip[aria-current] { color: var(--pcp-on-accent); background: var(--pcp-accent); border-color: var(--pcp-accent); }

/* Sidebar filters beside the results; they stack above results on narrow screens. */
.pcp-browse {
    display: flex; flex-wrap: wrap; gap: 2.5rem; align-items: flex-start;
    border-top: 1px solid var(--pcp-divider); padding-top: 1.5rem;
}
.pcp-sidebar { flex: 1 1 15rem; max-width: 18rem; display: flex; flex-direction: column; gap: 1rem; }
.pcp-sidebar .form-label { font-weight: 600; font-size: 0.9375rem; margin-bottom: 0.25rem; }
.pcp-filter-fields { display: flex; flex-direction: column; gap: 1rem; padding-top: 1rem; }
.pcp-filter-panel > summary { list-style: none; display: flex; align-items: center; min-height: 44px; }
.pcp-filter-panel > summary::-webkit-details-marker { display: none; }
.pcp-filter-panel > summary h2 { margin: 0; }
.pcp-filter-fields summary { min-height: 44px; padding: 0.5rem 0; cursor: pointer; color: var(--pcp-link); }
.pcp-date-fields { display: flex; flex-direction: column; gap: 0.75rem; }
.pcp-filter-actions { display: flex; flex-wrap: wrap; align-items: center; gap: 1rem; }
.pcp-sidebar-links { display: flex; flex-direction: column; gap: 0.5rem; border-top: 1px solid var(--pcp-divider); padding-top: 1rem; }
.pcp-results { flex: 999 1 35rem; min-width: 0; }
.pcp-results-header { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 1rem; margin-bottom: 0.5rem; }
.pcp-results-count { margin: 0; font-weight: 600; }
.pcp-results-count .pcp-muted { font-weight: 400; }
.pcp-view-toggle { display: flex; border: 1px solid var(--pcp-border); border-radius: 0.5rem; overflow: hidden; background: var(--pcp-surface); }
.pcp-public .pcp-view-toggle a { display: inline-flex; align-items: center; min-height: 44px; padding: 0 1.1rem; text-decoration: none; }
.pcp-public .pcp-view-toggle a[aria-current] { color: var(--pcp-on-accent); background: var(--pcp-accent); }
.pcp-pagination { display: flex; align-items: center; gap: 1.5rem; margin-top: 1.5rem; }

/* List: a date column on the left, that day's events on the right. */
.pcp-day {
    display: grid; grid-template-columns: 4.5rem minmax(0, 1fr); gap: 1.5rem;
    padding: 1.25rem 0; border-top: 1px solid var(--pcp-divider);
}
.pcp-day-rail { display: flex; flex-direction: column; align-items: center; margin: 0; line-height: 1.1; font-size: 1rem; padding-top: 0.25rem; }
.pcp-day-dow, .pcp-day-month { font-size: 0.8125rem; font-weight: 700; letter-spacing: 0.06em; text-transform: uppercase; color: var(--pcp-muted); }
.pcp-day-number { font-size: 2rem; font-weight: 700; }
.pcp-day-events { display: flex; flex-direction: column; gap: 1.25rem; }
.pcp-ongoing { display: flex; flex-direction: column; gap: 1.25rem; padding-bottom: 1.25rem; }
.pcp-event { display: flex; gap: 1.25rem; align-items: flex-start; overflow-wrap: anywhere; }
.pcp-event-thumb { flex: 0 0 auto; width: 10.5rem; height: 7rem; object-fit: cover; border-radius: 0.5rem; background: var(--pcp-tint); }
.pcp-event-body { display: flex; flex-direction: column; gap: 0.25rem; min-width: 0; }
.pcp-event-title { font-size: 1.1875rem; font-weight: 600; line-height: 1.3; margin: 0; }
.pcp-public .pcp-event-title a { text-decoration: none; }
.pcp-public .pcp-event-title a:hover { text-decoration: underline; }
.pcp-event-meta { margin: 0; color: var(--pcp-muted); }
.pcp-event-meta time { font-weight: 600; color: var(--pcp-text); }
.pcp-tags { display: flex; flex-wrap: wrap; gap: 0.375rem; list-style: none; padding: 0; margin: 0.25rem 0 0; }
.pcp-tags li { font-size: 0.8125rem; padding: 0.125rem 0.625rem; border-radius: 999px; background: var(--pcp-chip); color: var(--pcp-text); }
.pcp-more-dates { font-size: 0.9375rem; }

/* Month grid. */
.pcp-month-nav { display: flex; align-items: center; gap: 0.5rem; }
.pcp-month-title { font-size: 1.5rem; margin: 0 0.5rem; }
.pcp-public .pcp-month-step {
    display: inline-flex; align-items: center; justify-content: center; min-width: 44px; min-height: 44px;
    border: 1px solid var(--pcp-border); border-radius: 0.5rem; text-decoration: none; font-size: 1.25rem;
}
.pcp-month-jump { display: flex; flex-wrap: wrap; align-items: center; gap: 0.5rem; margin-bottom: 1rem; }
.pcp-month-jump .form-label { margin: 0; color: var(--pcp-muted); font-size: 0.9375rem; }
.pcp-month-jump .form-control { width: auto; }
.pcp-weekdays, .pcp-month-grid { display: grid; grid-template-columns: repeat(7, minmax(0, 1fr)); }
.pcp-weekdays {
    font-size: 0.8125rem; font-weight: 700; letter-spacing: 0.06em; text-transform: uppercase; color: var(--pcp-muted);
    border: 1px solid var(--pcp-divider); border-bottom: 0; background: var(--pcp-chip);
}
.pcp-weekdays span { padding: 0.5rem 0.625rem; }
.pcp-month-grid { border-left: 1px solid var(--pcp-divider); border-top: 1px solid var(--pcp-divider); }
.pcp-month-day, .pcp-month-blank {
    min-height: 7.5rem; min-width: 0; padding: 0.5rem 0.625rem;
    border-right: 1px solid var(--pcp-divider); border-bottom: 1px solid var(--pcp-divider); overflow-wrap: anywhere;
}
.pcp-month-blank { background: var(--pcp-chip); }
.pcp-month-date { display: flex; align-items: center; gap: 0.375rem; font-size: 0.9375rem; font-weight: 600; margin: 0 0 0.25rem; }
.pcp-today .pcp-month-date time { display: inline-flex; min-width: 1.75rem; justify-content: center; border-radius: 999px; color: var(--pcp-on-accent); background: var(--pcp-accent); }
.pcp-public .pcp-today .pcp-month-date a { color: var(--pcp-on-accent); }
.pcp-today-label { font-size: 0.75rem; font-weight: 700; text-transform: uppercase; color: var(--pcp-muted); }
.pcp-month-previews { display: flex; flex-direction: column; gap: 0.25rem; margin: 0; }
.pcp-public .pcp-month-preview a {
    display: block; padding: 0.125rem 0.375rem; border-radius: 0.25rem; background: var(--pcp-chip);
    font-size: 0.8125rem; line-height: 1.35; text-decoration: none;
}
.pcp-public .pcp-month-preview a:hover { text-decoration: underline; }
.pcp-month-time { display: block; font-weight: 600; color: var(--pcp-muted); }
.pcp-unavailable { color: var(--pcp-muted); font-size: 0.875rem; }
.pcp-day-link { display: inline-block; padding: 0.25rem 0; font-size: 0.875rem; }

/* Event detail: description beside a box of key facts and actions. */
.pcp-detail { overflow-wrap: anywhere; }
.pcp-public .pcp-back-link { display: inline-flex; align-items: center; min-height: 44px; margin-bottom: 1rem; }
.pcp-detail-header { display: flex; flex-direction: column; gap: 0.5rem; margin-bottom: 1.5rem; }
.pcp-detail-header h1 { margin: 0; font-size: 2.25rem; line-height: 1.15; }
.pcp-detail-summary { margin: 0; font-size: 1.125rem; color: var(--pcp-muted); }
.pcp-detail-columns { display: flex; flex-wrap: wrap; gap: 3rem; align-items: flex-start; }
.pcp-detail-main { flex: 999 1 35rem; min-width: 0; max-width: 46rem; }
.pcp-detail-photo img { max-height: 36rem; object-fit: contain; }
.pcp-description pre { white-space: pre-wrap; }
.pcp-detail-facts {
    flex: 1 1 18rem; max-width: 24rem; padding: 1.5rem;
    background: var(--pcp-surface);
    border: 1px solid var(--pcp-divider); border-radius: 0.75rem;
}
.pcp-detail-facts dl { margin: 0; }
.pcp-detail-facts dt { font-size: 0.8125rem; font-weight: 700; letter-spacing: 0.06em; text-transform: uppercase; color: var(--pcp-muted); }
.pcp-detail-facts dd { margin: 0.125rem 0 1rem; }
.pcp-detail-actions { display: flex; flex-direction: column; gap: 0.625rem; }

@media (min-width: 768px) {
    /* On wider screens the filters are always shown, so the heading is not a toggle. */
    .pcp-filter-panel > summary { pointer-events: none; }
}
@media (max-width: 767px) {
    .pcp-page-title { font-size: 1.375rem; }
    .pcp-chips { flex-wrap: nowrap; overflow-x: auto; padding-bottom: 0.25rem; }
    .pcp-sidebar { max-width: none; flex-basis: 100%; }
    .pcp-filter-panel > summary {
        justify-content: center; border: 1px solid var(--pcp-border); border-radius: 0.5rem; cursor: pointer;
    }
    .pcp-filter-panel > summary h2 { font-size: 1rem; font-weight: 400; }
    .pcp-day { grid-template-columns: 1fr; gap: 0.5rem; }
    .pcp-day-rail { flex-direction: row; gap: 0.375rem; align-items: baseline; }
    .pcp-day-number { font-size: 0.8125rem; color: var(--pcp-muted); }
    .pcp-event-thumb { width: 5.5rem; height: 5.5rem; }
    .pcp-month-grid { display: block; border: 0; }
    .pcp-weekdays, .pcp-month-blank, .pcp-empty-day { display: none; }
    .pcp-month-day { min-height: 0; margin-bottom: 0.75rem; border: 1px solid var(--pcp-divider); border-radius: 0.5rem; }
    .pcp-detail-facts { max-width: none; }
}

/* Newsroom theme variants. Kept last so they override baseline and responsive rules.
   Pills, circular date markers and dots keep their shapes; hit targets are unchanged.
   Fonts and colors arrive as custom properties on <body>; only density and
   corners remain classes because rules vary by them. */
.pcp-public.density-compact .pcp-day { padding-top: 0.75rem; padding-bottom: 0.75rem; }
.pcp-public.density-compact .pcp-day-events,
.pcp-public.density-compact .pcp-ongoing,
.pcp-public.density-compact .pcp-event { gap: 0.75rem; }
.pcp-public.density-compact .pcp-ongoing { padding-bottom: 0.75rem; }

.pcp-public.corners-square .pcp-search-input,
.pcp-public.corners-square .pcp-search-row .btn,
.pcp-public.corners-square .btn,
.pcp-public.corners-square .form-control,
.pcp-public.corners-square .form-select,
.pcp-public.corners-square .pcp-view-toggle,
.pcp-public.corners-square .pcp-event-thumb,
.pcp-public.corners-square .pcp-month-step,
.pcp-public.corners-square .pcp-month-preview a,
.pcp-public.corners-square .pcp-detail-facts { border-radius: 0; }

/* Header. The header owns its own vertical padding (not Bootstrap py-*) so the
   banded variant below can drop the bottom padding without !important. */
.pcp-header { padding: 1.5rem 0; }

/* Header band: the image sits behind the header; the strip holding the logo
   and title keeps a solid page-colored background so text stays readable.
   The strip is a tab (rounded top, flat bottom) whose flat edge rests on the
   band's bottom edge, so the page reads as rising into the photo. Its box
   sits inside .container, on the same column as the content below it. */
.pcp-public.has-header-image .pcp-header {
    background: var(--pcp-page) var(--pcp-header-image) center / cover no-repeat;
    min-height: 14rem;
    padding: 3rem 0 0;
    display: flex;
    align-items: flex-end;
}
.pcp-public.has-header-image .pcp-header > .container { width: 100%; }
.pcp-public.has-header-image .pcp-header-inner {
    background: var(--pcp-page);
    padding: 1rem 1.5rem;
    border-radius: 0.5rem 0.5rem 0 0;
}
.pcp-public.corners-square.has-header-image .pcp-header-inner { border-radius: 0; }
