/* Restrained holiday colours within the existing comparison-table layout. */
.dsf-calendar { --calendar-state-width: 14rem; padding-block: var(--dsf-space-7); background: var(--dsf-color-surface); scroll-margin-block-start: calc(var(--dsf-header-height, 5rem) + 1rem); }
.dsf-calendar__lead { max-inline-size: var(--dsf-measure); margin-block-start: var(--dsf-space-3); color: var(--dsf-color-muted); }
.dsf-calendar__controls { display: grid; grid-template-columns: 8rem minmax(18.5rem, 23rem); align-items: end; gap: var(--dsf-space-4); margin-block: var(--dsf-space-5); }
.dsf-calendar__field { position: relative; min-inline-size: 0; }
.dsf-calendar__field label { display: block; margin-block-end: var(--dsf-space-2); color: var(--dsf-color-primary); font-size: var(--dsf-text-small); font-weight: 600; }
.dsf-calendar__field select { appearance: none; inline-size: 100%; block-size: 3rem; padding: var(--dsf-space-2) var(--dsf-space-7) var(--dsf-space-2) var(--dsf-space-4); border-radius: var(--dsf-radius-medium); font-size: var(--dsf-text-small); }
.dsf-calendar__field::after { content: ""; position: absolute; inset-inline-end: var(--dsf-space-4); inset-block-end: 1.25rem; inline-size: 0.4rem; block-size: 0.4rem; border-inline-end: 1.5px solid var(--dsf-color-primary); border-block-end: 1.5px solid var(--dsf-color-primary); transform: rotate(45deg); pointer-events: none; }
.dsf-calendar__field select:focus-visible { border-color: var(--dsf-color-accent); }
.dsf-calendar__scroll { max-inline-size: 100%; overflow-x: auto; border: 1px solid var(--dsf-color-border); border-radius: var(--dsf-radius-large); scrollbar-width: thin; scrollbar-color: var(--dsf-color-control-border) var(--dsf-color-background); }
.dsf-calendar__table { inline-size: 100%; min-inline-size: 74rem; table-layout: fixed; border-collapse: separate; border-spacing: 0; color: var(--dsf-color-primary); font-size: var(--dsf-text-small); }
.dsf-calendar__state-col { inline-size: var(--calendar-state-width); }
.dsf-calendar__table tr > :nth-child(2) { --holiday-color: #5278C5; }
.dsf-calendar__table tr > :nth-child(3) { --holiday-color: #238B72; }
.dsf-calendar__table tr > :nth-child(4) { --holiday-color: #8B5CC4; }
.dsf-calendar__table tr > :nth-child(5) { --holiday-color: #D89927; }
.dsf-calendar__table tr > :nth-child(6) { --holiday-color: #CA654E; }
.dsf-calendar__table tr > :nth-child(7) { --holiday-color: #377C92; }
.dsf-calendar__table th, .dsf-calendar__table td { padding: var(--dsf-space-2) var(--dsf-space-3); border: 0; border-inline-end: 1px solid var(--dsf-color-border); border-block-end: 1px solid var(--dsf-color-border); text-align: start; vertical-align: top; }
.dsf-calendar__table tr > :last-child { border-inline-end: 0; }
.dsf-calendar__table tbody tr:last-child > * { border-block-end: 0; }
.dsf-calendar__table thead th { padding-block: var(--dsf-space-3); background: var(--dsf-color-tint); font-weight: 700; }
.dsf-calendar__table thead th:not(:first-child) { background: color-mix(in srgb, var(--holiday-color) 7%, var(--dsf-color-surface)); color: color-mix(in srgb, var(--holiday-color) 25%, var(--dsf-color-primary)); box-shadow: inset 0 -2px var(--holiday-color); }
.dsf-calendar__table tr > :first-child { position: sticky; inset-inline-start: 0; z-index: 1; padding-inline: var(--dsf-space-4); }
.dsf-calendar__table thead th:first-child { z-index: 2; }
.dsf-calendar__table tbody tr { --calendar-row-background: var(--dsf-color-surface); }
.dsf-calendar__table tbody tr:nth-child(even) { --calendar-row-background: color-mix(in srgb, var(--dsf-color-primary) 3%, var(--dsf-color-surface)); }
.dsf-calendar__table tbody th, .dsf-calendar__table tbody td { background: var(--calendar-row-background); transition: background-color var(--dsf-duration-fast) var(--dsf-ease); }
.dsf-calendar__table tbody tr:hover, .dsf-calendar__table tbody tr:focus-within { --calendar-row-background: color-mix(in srgb, var(--dsf-color-accent) 6%, var(--dsf-color-surface)); }
.dsf-calendar__table tbody th { background: color-mix(in srgb, var(--dsf-color-primary) 4%, var(--calendar-row-background)); border-inline-end-color: var(--dsf-color-control-border); }
.dsf-calendar__state-name { display: flex; align-items: center; min-block-size: 2rem; color: var(--dsf-color-primary); font-family: var(--dsf-font-heading); font-weight: 700; line-height: 1.4; text-decoration: none; }
.dsf-calendar__state-name:hover, .dsf-calendar__state-name:focus-visible { color: var(--dsf-color-accent); text-decoration: underline; }
.dsf-calendar__ranges { margin: 0; padding: 0; list-style: none; }
.dsf-calendar__ranges > li + li { margin-block-start: var(--dsf-space-1); }
.dsf-calendar__dates { position: relative; display: block; padding: var(--dsf-space-1) 6px; padding-inline-start: var(--dsf-space-4); border-radius: var(--dsf-radius-small); background: color-mix(in srgb, var(--holiday-color) 8%, var(--dsf-color-surface)); color: color-mix(in srgb, var(--holiday-color) 15%, var(--dsf-color-primary)); font-weight: 700; line-height: 1.5; font-variant-numeric: tabular-nums; }
.dsf-calendar__dates::before { content: ""; position: absolute; inset-inline-start: 6px; inset-block-start: 0.8rem; inline-size: 4px; block-size: 4px; border-radius: 50%; background: var(--holiday-color); }
.dsf-calendar__dates time { white-space: nowrap; }
.dsf-calendar__dates > span[aria-hidden] { color: var(--dsf-color-muted); }
.dsf-calendar__scope { margin-block-start: var(--dsf-space-1); color: var(--dsf-color-muted); line-height: 1.45; }
.dsf-calendar__availability { color: var(--dsf-color-muted); font-weight: 400; line-height: 1.5; }
.dsf-calendar__availability[data-availability="not_yet_published"] { color: var(--dsf-color-primary); font-weight: 600; }
.dsf-calendar__availability + .dsf-calendar__ranges { margin-block-start: var(--dsf-space-1); }
.dsf-calendar__footer { display: flex; align-items: start; justify-content: space-between; gap: var(--dsf-space-5); margin-block-start: var(--dsf-space-4); }
.dsf-calendar__footer > p { max-inline-size: 70ch; color: var(--dsf-color-muted); font-size: var(--dsf-text-small); }
.dsf-calendar__actions { display: flex; flex-wrap: wrap; align-items: center; justify-content: flex-end; gap: var(--dsf-space-3) var(--dsf-space-5); }
.dsf-calendar__actions .dsf-button, .dsf-calendar__overview { font-size: var(--dsf-text-small); white-space: nowrap; }
.dsf-calendar__overview { display: inline-flex; align-items: center; gap: var(--dsf-space-2); min-block-size: 2.75rem; font-weight: 600; }
.dsf-calendar__feedback { color: var(--dsf-color-muted); font-size: var(--dsf-text-small); }
.dsf-calendar__feedback:not(:empty):not(.screen-reader-text) { margin-block-end: var(--dsf-space-3); }
@media (max-width: 70rem) { .dsf-calendar__footer { flex-direction: column; } .dsf-calendar__actions { justify-content: flex-start; } }
@media (max-width: 45rem) { .dsf-calendar { --calendar-state-width: 12rem; padding-block: var(--dsf-space-6); } .dsf-calendar__controls { grid-template-columns: minmax(0, 1fr); } .dsf-calendar__field select { font-size: var(--dsf-text-body); } }
@media print { .dsf-calendar__controls, .dsf-calendar__actions { display: none; } .dsf-calendar__scroll { overflow: visible; } .dsf-calendar__table { min-inline-size: 0; } .dsf-calendar__table tr > :first-child { position: static; } .dsf-calendar__table tr { break-inside: avoid; } }

/* Public-holiday view shares controls while leaving school-table styles intact. */
.dsf-calendar__tabs { display: inline-flex; gap: var(--dsf-space-1); max-inline-size: 100%; margin-block-end: var(--dsf-space-4); padding: var(--dsf-space-1); border: 1px solid var(--dsf-color-border); border-radius: var(--dsf-radius-medium); background: var(--dsf-color-background); }
.dsf-calendar__tabs [role="tab"] { min-block-size: 2.75rem; padding: var(--dsf-space-2) var(--dsf-space-5); border: 1px solid transparent; border-radius: var(--dsf-radius-small); background: transparent; color: var(--dsf-color-muted); font: inherit; font-weight: 600; white-space: nowrap; cursor: pointer; }
.dsf-calendar__tabs [aria-selected="true"] { border-color: var(--dsf-color-border); background: var(--dsf-color-surface); color: var(--dsf-color-primary); }
.dsf-calendar__tabs [role="tab"]:hover { color: var(--dsf-color-accent); }
.dsf-public-calendar { inline-size: 100%; min-inline-size: 40rem; border-collapse: collapse; color: var(--dsf-color-primary); font-size: var(--dsf-text-small); line-height: 1.5; }
.dsf-public-calendar th, .dsf-public-calendar td { padding: var(--dsf-space-3) var(--dsf-space-4); border-block-end: 1px solid var(--dsf-color-border); text-align: start; vertical-align: top; }
.dsf-public-calendar thead { background: var(--dsf-color-tint); }
.dsf-public-calendar th { font-weight: 700; }
.dsf-public-calendar th:first-child { inline-size: 25%; }
.dsf-public-calendar td:nth-child(2) { white-space: nowrap; font-weight: 600; font-variant-numeric: tabular-nums; }
.dsf-public-calendar tbody tr:nth-child(even) { background: var(--dsf-color-background); }
.dsf-public-calendar tbody tr:hover { background: var(--dsf-color-tint); }
.dsf-public-calendar tbody tr:last-child > * { border-block-end: 0; }
.dsf-calendar__public-note { margin-block: var(--dsf-space-3); color: var(--dsf-color-muted); font-size: var(--dsf-text-small); }
#feiertage { scroll-margin-block-start: calc(var(--dsf-header-height, 5rem) + 1rem); }
@media (max-width: 38rem) { .dsf-calendar__tabs [role="tab"] { padding-inline: var(--dsf-space-4); } }