/* Public timetable: a readable desktop matrix and compact group cards below 1100px. */
.schedule-page { --schedule-line: #d7dfd6; --schedule-muted: #526056; --schedule-red: #a72925; background: #fafbf8; color: #202b25; }
.schedule-page [hidden] { display: none !important; }
.schedule-page .site-container { width: min(1360px, calc(100% - 3rem)); }
.schedule-page :is(input, select, button, a) { scroll-margin-block: 110px 24px; }
.schedule-page :is(button, input, select, a):focus-visible { outline: 3px solid #1473bb; outline-offset: 3px; }
.schedule-hero { background: #edf1e8; border-bottom: 1px solid var(--schedule-line); }
.schedule-hero-grid { display: flex; justify-content: space-between; align-items: end; gap: 2rem; padding-block: 2rem; }
.schedule-hero .site-eyebrow { font-size: .75rem; margin-bottom: .7rem; }
.public-site .schedule-hero h1 { font-size: clamp(2rem, 3.5vw, 3.4rem); line-height: 1.12; letter-spacing: -.045em; margin: 0 0 .7rem; }
.schedule-hero h1 em { color: var(--schedule-red); font-style: normal; }
.schedule-intro { font-size: 1rem; color: var(--schedule-muted); line-height: 1.5; margin: 0; }
.schedule-context { flex: 0 0 auto; font-size: .875rem; color: var(--schedule-muted); margin: 0 0 .15rem; line-height: 1.6; }
.schedule-context strong, .schedule-context span { display: block; }
.schedule-context strong { color: #202b25; }
.schedule-content { padding-block: 1.5rem 2.5rem; }
.schedule-filter-panel { display: flex; flex-wrap: wrap; gap: 1rem 2rem; align-items: center; padding: 1rem 1.2rem; background: white; border: 1px solid var(--schedule-line); border-radius: .65rem; }
.schedule-age-prompt { display: flex; flex-wrap: wrap; align-items: center; gap: .7rem 1.2rem; }
.schedule-age-prompt label { font-size: 1rem; font-weight: 750; }
.schedule-age-prompt p { font-size: .875rem; color: var(--schedule-muted); margin: .25rem 0 0; line-height: 1.4; }
.schedule-age-controls { display: flex; align-items: center; flex-wrap: wrap; gap: .5rem; }
.schedule-age-controls input { width: 82px; min-height: 48px; border: 1px solid #829086; border-radius: .4rem; padding: .5rem .65rem; font: inherit; font-size: 1.125rem; font-weight: 700; color: #202b25; background: #fafcf8; }
.schedule-age-controls input[aria-invalid="true"] { border-color: var(--schedule-red); background: #fff4f2; }
.schedule-age-controls > span { color: var(--schedule-muted); font-size: .875rem; }
.schedule-age-controls button { border: 0; background: transparent; padding: .5rem; min-height: 44px; min-width: 44px; color: var(--schedule-red); font: inherit; font-size: .875rem; text-decoration: underline; }
.schedule-age-prompt #schedule-age-error { flex-basis: 100%; color: #a52b25; font-weight: 650; }
.schedule-filters { display: flex; flex: 1 1 280px; gap: .75rem; }
.schedule-filters > div { flex: 1; min-width: 0; }
.schedule-filters label { display: block; font-size: .875rem; font-weight: 650; margin-bottom: .3rem; }
.schedule-filters select { width: 100%; min-height: 48px; padding: .6rem 1.5rem .6rem .7rem; border: 1px solid #829086; background: white; border-radius: .4rem; font: inherit; color: inherit; }
.schedule-results-heading { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: .75rem; margin-block: 1.2rem .8rem; }
.public-site .schedule-results-heading h2 { font-size: 1.25rem; letter-spacing: -.025em; margin: 0 0 .3rem; }
.schedule-result { font-size: .875rem; color: var(--schedule-muted); margin: 0; line-height: 1.5; }
.schedule-reset { flex-shrink: 0; min-height: 44px; min-width: 44px; border: 1px solid #aebbb0; background: white; border-radius: .4rem; color: #354d3c; font: inherit; font-size: .875rem; font-weight: 650; padding: .5rem .7rem; }
.schedule-reset:disabled { color: #657267; border-color: var(--schedule-line); background: #f3f5ef; cursor: default; }
.schedule-day-picker { display: grid; grid-template-columns: repeat(8,minmax(0,1fr)); gap: .4rem; margin-bottom: 1rem; max-width: 900px; }
.schedule-day-picker button { display: flex; justify-content: center; align-items: center; flex-wrap: wrap; gap: .35rem; border: 1px solid #becabd; min-height: 44px; min-width: 0; padding: .5rem .3rem; font: inherit; font-size: .875rem; font-weight: 650; background: white; color: #35453b; border-radius: .4rem; }
.schedule-day-picker button[aria-pressed="true"] { background: #243c2c; border-color: #243c2c; color: white; }
.schedule-day-picker button[data-empty="true"]:not([aria-pressed="true"]) { background: #f3f5ef; color: #657267; border-color: var(--schedule-line); }
.schedule-count { font-size: .75rem; font-weight: 500; }
.schedule-count [data-day-count] { display: inline-flex; min-width: 1.1rem; justify-content: center; }
.schedule-board { border: 1px solid var(--schedule-line); border-radius: .65rem; overflow: hidden; background: white; }
.schedule-week-table { width: 100%; table-layout: fixed; border-collapse: collapse; }
.schedule-week-table th, .schedule-week-table td { text-align: left; vertical-align: top; padding: .8rem .65rem; border-bottom: 1px solid var(--schedule-line); }
.schedule-week-table thead th { background: #243c2c; color: white; padding-block: .85rem; font-size: .9375rem; }
.schedule-week-table th:first-child { width: 210px; padding-inline: 1rem; }
.schedule-week-table thead abbr { text-decoration: none; cursor: default; }
.schedule-table-hint { display: block; font-size: .8125rem; color: #d3e0d1; font-weight: 400; margin-top: .2rem; }
.schedule-week-table tbody th { background: #f4f6f0; font-weight: 400; }
.schedule-week-table tbody td { border-left: 1px solid #edf0e8; }
.schedule-week-table tbody tr:last-child > * { border-bottom: 0; }
.schedule-board[data-single-day="true"] { max-width: 680px; }
.schedule-board[data-single-day="true"] th:first-child { width: 50%; }
.schedule-group-name { display: block; font-size: 1rem; font-weight: 750; line-height: 1.35; margin-bottom: .5rem; overflow-wrap: anywhere; }
.schedule-age-badge { display: inline-block; font-size: .8125rem; color: #354d3c; background: #e7eddf; border-radius: .3rem; padding: .25rem .45rem; line-height: 1.4; }
.schedule-card-program { display: block; font-size: .8125rem; font-weight: 650; color: var(--schedule-muted); margin: 0 0 .4rem; }
.schedule-group-place { display: block; font-size: .875rem; line-height: 1.5; color: var(--schedule-muted); margin: .45rem 0 0; }
.schedule-card + .schedule-card { border-top: 1px solid var(--schedule-line); margin-top: .65rem; padding-top: .65rem; }
.schedule-card-time { font-size: .9375rem; font-weight: 750; font-variant-numeric: tabular-nums; line-height: 1.5; color: var(--schedule-red); margin: 0; }
.schedule-card-time > span { display: block; }
.schedule-time-end { font-weight: 500; color: #35453b; }
.schedule-card-date { font-size: .8125rem; line-height: 1.4; color: #76551e; margin: .4rem 0 0; }
.schedule-cell-empty { display: block; color: #6b796b; padding-top: .25rem; }
.schedule-card-notice { display: block; font-size: .8125rem; line-height: 1.4; padding: .4rem .5rem; background: #fff1df; color: #764d18; margin: .6rem 0 0; border-radius: .25rem; }
.schedule-group-list { display: none; }
.schedule-empty { padding: 1.5rem; border: 1px solid var(--schedule-line); border-radius: .6rem; background: #f0f4ea; margin-block: 1rem; }
.public-site .schedule-empty h3 { font-size: 1.2rem; margin: 0 0 .6rem; }
.schedule-empty p { font-size: .9375rem; color: var(--schedule-muted); line-height: 1.5; max-width: 65ch; }
.schedule-empty-actions { display: flex; flex-wrap: wrap; gap: .5rem 1rem; align-items: center; }
.schedule-recover { min-height: 44px; border: 1px solid #243c2c; border-radius: .4rem; padding: .5rem .8rem; font: inherit; font-size: .9375rem; background: #243c2c; color: white; font-weight: 650; }
.schedule-empty a, .schedule-contact-link { display: inline-flex; align-items: center; min-height: 44px; padding-block: .5rem; font-size: .9375rem; color: #354d3c; text-decoration: underline; font-weight: 650; }
.schedule-pending { margin-top: 1.5rem; padding-top: 1.25rem; border-top: 1px solid var(--schedule-line); }
.public-site .schedule-pending h3 { font-size: 1.2rem; }
.schedule-pending > p { color: var(--schedule-muted); font-size: .9375rem; }
.schedule-pending-grid { display: grid; grid-template-columns: repeat(3,minmax(0,1fr)); gap: .75rem; }
.schedule-pending-card { padding: 1rem; border: 1px solid var(--schedule-line); border-radius: .4rem; }
.public-site .schedule-pending-card h4 { font-size: 1rem; }
.schedule-pending-card p { color: var(--schedule-muted); font-size: .875rem; margin: 0; }
.schedule-note { font-size: .875rem; color: var(--schedule-muted); line-height: 1.6; margin-block: 1rem 1.5rem; max-width: 100ch; }
.schedule-help { display: flex; align-items: center; justify-content: space-between; flex-wrap: wrap; gap: 1rem 2rem; padding: 1.5rem; border: 1px solid var(--schedule-line); border-radius: .65rem; background: #edf1e8; }
.public-site .schedule-help h2 { font-size: 1.35rem; letter-spacing: -.025em; margin: 0 0 .35rem; }
.schedule-help p { color: var(--schedule-muted); margin: 0; font-size: .9375rem; }
.schedule-help-actions { display: flex; flex-wrap: wrap; align-items: center; gap: .5rem 1.2rem; min-width: 0; }
.schedule-help-actions > a { min-width: 0; max-width: 100%; overflow-wrap: anywhere; }
.schedule-help .btn { display: inline-flex; gap: 1rem; align-items: center; white-space: normal; }
@media (max-width: 1099px) {
    .schedule-hero-grid { display: block; padding-block: 1.5rem; }
    .schedule-context { margin-top: .75rem; font-size: .875rem; }
    .schedule-context strong, .schedule-context span { display: inline; }
    .schedule-context strong::after { content: ' · '; font-weight: 400; }
    .schedule-board { display: none; }
    .schedule-group-list { display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); gap: 1rem; }
    .schedule-group-card { min-width: 0; padding: 1rem; background: white; border: 1px solid var(--schedule-line); border-top: 3px solid #55734f; border-radius: .5rem; overflow-wrap: anywhere; }
    .schedule-group-title { display: flex; flex-wrap: wrap; align-items: baseline; gap: .5rem .75rem; }
    .public-site .schedule-group-title h3 { min-width: 0; max-width: 100%; overflow-wrap: anywhere; font-size: 1.125rem; line-height: 1.35; letter-spacing: -.025em; margin: 0; }
    .schedule-group-times { list-style: none; padding: 0; margin: .75rem 0 0; }
    .schedule-group-slot { display: flex; flex-wrap: wrap; gap: .3rem .75rem; align-items: baseline; border-top: 1px solid #e3e8df; padding-block: .65rem; font-size: .875rem; line-height: 1.5; }
    .schedule-group-slot:last-child { padding-bottom: 0; }
    .schedule-slot-days { color: var(--schedule-muted); flex: 1 1 100px; }
    .schedule-group-slot strong { color: var(--schedule-red); font-weight: 750; font-variant-numeric: tabular-nums; }
    .schedule-group-slot small { flex-basis: 100%; color: #76551e; font-size: .8125rem; }
}
@media (max-width: 600px) {
    .schedule-page .site-container { width: calc(100% - 2rem); }
    .schedule-hero-grid { padding-block: 1.2rem; }
    .schedule-hero .site-eyebrow { display: none; }
    .public-site .schedule-hero h1 { font-size: 1.85rem; line-height: 1.12; margin-bottom: .5rem; }
    .schedule-intro { font-size: .9375rem; }
    .schedule-context { font-size: .8125rem; line-height: 1.5; }
    .schedule-content { padding-block: 1rem 1.5rem; }
    .schedule-filter-panel { padding: .9rem; gap: .75rem; }
    .schedule-age-prompt { gap: .65rem; }
    .schedule-age-prompt > div:first-child { flex: 1 1 150px; }
    .schedule-age-prompt p { font-size: .8125rem; }
    .schedule-age-controls input { width: 68px; }
    .schedule-age-controls { gap: .35rem; }
    .schedule-filters { flex-basis: 100%; }
    .schedule-filters label { font-size: .8125rem; }
    .schedule-results-heading { margin-top: 1rem; }
    .public-site .schedule-results-heading h2 { font-size: 1.125rem; }
    .schedule-reset { font-size: .8125rem; padding-inline: .5rem; }
    .schedule-day-picker { grid-template-columns: repeat(4,minmax(0,1fr)); gap: .375rem; }
    .schedule-day-picker button { font-size: .8125rem; gap: .2rem; }
    .schedule-group-list, .schedule-pending-grid { grid-template-columns: 1fr; gap: .75rem; }
    .schedule-group-card { padding: .9rem; }
    .schedule-help { padding: 1.2rem; }
    .schedule-help-actions { align-items: stretch; flex-direction: column; width: 100%; gap: .25rem; }
    .schedule-help .btn { justify-content: space-between; }
    .schedule-contact-link { justify-content: center; }
}
@media (hover: hover) and (pointer: fine) {
    .schedule-day-picker button:not([aria-pressed="true"]):hover { border-color: #55734f; background: #e7eddf; }
    .schedule-week-row:hover > * { background-color: #f1f5ec; }
    .schedule-reset:enabled:hover { background: #e7eddf; }
}
@media print {
    .schedule-filter-panel, .schedule-day-picker, .schedule-reset, .schedule-help { display: none !important; }
    .schedule-board { display: block; }
    .schedule-group-list { display: none; }
}
