/*
 * Corrowden School: the four sub-pages (Admissions, Learning, School life, Visit days).
 * Each section composes differently: doors, a ledger, a fees table, an oxide bursary band, a
 * form; stage sections with a drawn week; house name boards, a chalk slipway board, a fixtures
 * card on the fog, figures beside a score; the calendar, three kinds of visit, an hour-by-hour
 * line. Values come from assets/tokens.css only.
 */
.cw-section-title { margin-bottom: var(--s-space-7); }
.cw-concept {
    display: inline-flex; gap: var(--s-space-2); align-items: baseline; margin-top: var(--s-space-4);
    font-size: var(--s-size-small); color: var(--s-muted); font-style: italic;
}
.cw-concept::before { content: ""; flex: none; width: var(--s-space-2); height: var(--s-space-2); border: var(--s-hairline) solid currentColor; transform: rotate(45deg) translateY(calc(var(--s-space-1) * -0.5)); }
.cw-concept--on-oxide { color: var(--s-on-oxide-muted); }

/* ---- ADMISSIONS ----------------------------------------------------------------------- */

.cw-ledgerlist { padding-block: var(--s-section); background: var(--s-paper-2); }
.cw-ledgerlist__grid { display: grid; grid-template-columns: minmax(0, 0.7fr) minmax(0, 1.6fr); gap: var(--s-space-8); }
.cw-ledgerlist__items { border-top: var(--s-rule-w) solid var(--s-ink); counter-reset: none; }
.cw-lstep { display: grid; grid-template-columns: var(--s-space-8) minmax(0, 0.8fr) minmax(0, 1.4fr); gap: var(--s-space-5); padding-block: var(--s-space-5); border-bottom: var(--s-hairline) solid var(--s-rule-strong); align-items: baseline; }
.cw-lstep__n { font: var(--s-weight-medium) var(--s-size-h2)/var(--s-leading-solid) var(--s-font-display); color: var(--s-verdigris-deep); }
.cw-lstep__title { font: var(--s-weight-medium) var(--s-size-h3)/var(--s-leading-head) var(--s-font-display); }
.cw-lstep__when { margin-top: var(--s-space-2); color: var(--s-verdigris-deep); }

.cw-fees { padding-block: var(--s-section); }
.cw-fees__head { display: grid; grid-template-columns: minmax(0, 0.9fr) minmax(0, 1fr); gap: var(--s-space-7); align-items: end; margin-bottom: var(--s-space-7); }
.cw-fees__head .cw-lede { margin-top: 0; }
.cw-fees__switch { display: none; gap: var(--s-space-1); margin-bottom: var(--s-space-4); }
.cw-fees__switch button {
    flex: 1; min-height: var(--s-touch); padding: 0 var(--s-space-2); border: var(--s-hairline) solid var(--s-rule-strong); background: var(--s-paper);
    font-weight: var(--s-weight-medium); cursor: pointer; transition: background-color var(--s-dur-fast) var(--s-ease);
}
.cw-fees__switch button[aria-pressed="true"] { background: var(--s-oxide); color: var(--s-on-oxide); border-color: var(--s-oxide); }
.cw-fees__table { width: 100%; border-collapse: collapse; }
.cw-fees__table thead th { padding: var(--s-space-3) var(--s-space-4); text-align: right; font-size: var(--s-size-micro); letter-spacing: var(--s-track-micro); text-transform: uppercase; font-weight: var(--s-weight-bold); border-bottom: var(--s-rule-w) solid var(--s-ink); }
.cw-fees__table thead th:first-child { text-align: left; padding-left: 0; }
.cw-fees__table tbody th { padding: var(--s-space-5) var(--s-space-4) var(--s-space-5) 0; text-align: left; font-weight: var(--s-weight-regular); }
.cw-fees__stage { display: block; font: var(--s-weight-medium) var(--s-size-h3)/var(--s-leading-head) var(--s-font-display); }
.cw-fees__ages { display: block; margin-top: var(--s-space-1); color: var(--s-muted); font-size: var(--s-size-small); }
.cw-fees__table td { padding: var(--s-space-5) var(--s-space-4); text-align: right; font: var(--s-weight-medium) var(--s-size-h3)/var(--s-leading-solid) var(--s-font-display); font-variant-numeric: lining-nums tabular-nums; }
.cw-fees__table tbody tr { border-bottom: var(--s-hairline) solid var(--s-rule-strong); transition: background-color var(--s-dur-fast) var(--s-ease); }
.cw-fees__table tbody tr:hover { background: var(--s-verdigris-pale); }

.cw-bursary { padding-block: var(--s-section); background: var(--s-oxide); color: var(--s-on-oxide); }
.cw-bursary__grid { display: grid; grid-template-columns: minmax(0, 1.2fr) minmax(0, 1fr); gap: var(--s-space-8); align-items: center; }
.cw-bursary__body { margin-top: var(--s-space-5); max-width: var(--s-measure); color: var(--s-on-oxide-muted); font-size: var(--s-size-lede); line-height: var(--s-leading-snug); }
.cw-bursary__points { display: grid; gap: var(--s-space-3); }
.cw-bursary__points li {
    display: flex; align-items: center; gap: var(--s-space-4); padding: var(--s-space-4) var(--s-space-5);
    background: var(--s-oxide-2); border-left: var(--s-space-1) solid var(--s-verdigris);
    font: var(--s-weight-medium) var(--s-size-h3)/var(--s-leading-head) var(--s-font-display);
}
.cw-bursary__points li::before { content: ""; flex: none; width: var(--s-space-4); height: var(--s-space-2); border-left: var(--s-rule-w) solid var(--s-verdigris-light); border-bottom: var(--s-rule-w) solid var(--s-verdigris-light); transform: rotate(-45deg) translateY(calc(var(--s-space-1) * -1)); }

.cw-apply { padding-block: var(--s-section); }
.cw-apply__grid { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); gap: var(--s-space-8); align-items: start; }
.cw-apply__form { display: grid; gap: var(--s-space-4); padding: var(--s-space-6); background: var(--s-oxide); color: var(--s-on-oxide); }
.cw-apply__form .cw-ticket { justify-self: start; margin-top: var(--s-space-2); }
.cw-apply__form :focus-visible { outline-color: var(--s-focus-on-oxide); }

/* ---- The next-visit band (every sub-page but Visit days) -------------------------------- */
.cw-next { padding-block: var(--s-space-7); background: var(--s-verdigris-pale); border-top: var(--s-hairline) solid var(--s-rule); }
.cw-next__inner { display: flex; flex-wrap: wrap; align-items: baseline; gap: var(--s-space-3) var(--s-space-6); }
.cw-next__label { color: var(--s-verdigris-deep); }
.cw-next__date { font: var(--s-weight-medium) var(--s-size-h2-small)/var(--s-leading-head) var(--s-font-display); }
.cw-next__time { color: var(--s-muted); margin-right: auto; }
.cw-next .cw-ticket { align-self: center; }

/* ---- LEARNING ----------------------------------------------------------------------------- */
.cw-stage { padding-block: var(--s-section); position: relative; overflow: hidden; }
.cw-stage:nth-of-type(even) { background: var(--s-paper-2); }
.cw-stage__grid { display: grid; grid-template-columns: minmax(0, 0.85fr) minmax(0, 1.5fr); gap: var(--s-space-7) var(--s-space-8); align-items: start; }
.cw-stage__head { position: relative; }
.cw-stage__n {
    font: var(--s-weight-medium) var(--s-size-page-title)/var(--s-leading-solid) var(--s-font-display); color: var(--s-verdigris-deep);
    margin-bottom: var(--s-space-3); font-variant-numeric: lining-nums;
}
.cw-stage__ages { margin-top: var(--s-space-3); color: var(--s-verdigris-deep); }
.cw-stage__body { margin-top: var(--s-space-5); max-width: var(--s-measure-narrow); font-size: var(--s-size-lede); line-height: var(--s-leading-snug); color: var(--s-muted); }
.cw-stage__side { display: grid; gap: var(--s-space-6); align-content: start; }

/* Lower School: the subject line-up under the head, and a week with every period named */
.cw-subline { display: grid; gap: 0; border-top: var(--s-rule-w) solid var(--s-verdigris); }
.cw-subline > div { display: grid; grid-template-columns: 7.5rem minmax(0, 1fr); gap: var(--s-space-3); padding-block: var(--s-space-2); border-bottom: var(--s-hairline) solid var(--s-rule); }
.cw-subline dt { font-size: var(--s-size-micro); letter-spacing: var(--s-track-micro); text-transform: uppercase; font-weight: var(--s-weight-bold); color: var(--s-verdigris-deep); padding-top: var(--s-space-1); }
.cw-tt { margin: 0; padding: var(--s-space-5); background: var(--s-paper); border: var(--s-hairline) solid var(--s-rule-strong); box-shadow: var(--s-shadow-card); }
.cw-tt__scroll { overflow-x: auto; }
.cw-tt__scroll:focus-visible { outline-offset: var(--s-space-1); }
.cw-tt__grid { width: 100%; min-width: 36rem; border-collapse: separate; border-spacing: var(--s-space-1); table-layout: fixed; }
.cw-tt__title { padding-bottom: var(--s-space-4); text-align: left; font: var(--s-weight-medium) var(--s-size-h3)/var(--s-leading-head) var(--s-font-display); }
.cw-tt__grid thead th { padding-bottom: var(--s-space-2); font-size: var(--s-size-micro); letter-spacing: var(--s-track-micro); font-weight: var(--s-weight-bold); color: var(--s-muted); text-align: left; font-variant-numeric: tabular-nums lining-nums; }
.cw-tt__grid .cw-tt__corner { width: var(--s-space-8); }
.cw-tt__grid tbody th { text-align: left; font-size: var(--s-size-micro); letter-spacing: var(--s-track-micro); text-transform: uppercase; font-weight: var(--s-weight-bold); color: var(--s-muted); }
.cw-tt__p { height: var(--s-tt-cell); padding: var(--s-space-2); vertical-align: top; font-size: var(--s-size-small); font-weight: var(--s-weight-medium); line-height: var(--s-leading-solid); color: var(--s-ink); }
.cw-tt__p--core { background: var(--s-oxide); color: var(--s-on-oxide); }
.cw-tt__p--sci { background: var(--s-verdigris-deep); color: var(--s-on-oxide); }
.cw-tt__p--lang { background: var(--s-verdigris); }
.cw-tt__p--hum { background: var(--s-verdigris-light); }
.cw-tt__p--arts { background: var(--s-stone-dark); }
.cw-tt__p--games { background: var(--s-lead); color: var(--s-on-oxide); }
.cw-tt__p--free { background: repeating-linear-gradient(135deg, var(--s-paper-2) 0 var(--s-space-1), var(--s-paper-3) var(--s-space-1) var(--s-space-2)); box-shadow: inset 0 0 0 var(--s-hairline) var(--s-rule-strong); font-style: italic; }
.cw-js .cw-tt.is-in .cw-tt__p { animation: cw-cell var(--s-dur) var(--s-ease) both; animation-delay: calc(var(--s-dur-stagger) * (var(--d) + var(--p))); }
.cw-tt__cap { margin-top: var(--s-space-4); color: var(--s-muted); font-size: var(--s-size-small); max-width: var(--s-measure); }

/* Middle School: three for everyone, then choose four */
.cw-stage--middle .cw-stage__grid { grid-template-columns: 1fr; gap: var(--s-space-7); }
.cw-stage--middle .cw-stage__head { display: grid; grid-template-columns: minmax(0, 0.85fr) minmax(0, 1.5fr); column-gap: var(--s-space-8); }
.cw-stage--middle .cw-stage__head > * { grid-column: 1; }
.cw-stage--middle .cw-stage__head .cw-stage__body { grid-column: 2; grid-row: 1 / span 3; align-self: end; margin: 0; max-width: var(--s-measure); }
.cw-pick { display: grid; gap: var(--s-space-5); padding: var(--s-space-6); background: var(--s-paper); border: var(--s-hairline) solid var(--s-rule-strong); box-shadow: var(--s-shadow-card); }
.cw-pick__label { color: var(--s-verdigris-deep); margin-bottom: var(--s-space-3); }
.cw-pick__set { margin: 0; padding: 0; border: 0; min-width: 0; }
.cw-pick__set legend { float: left; width: 100%; }
.cw-pick__status { clear: both; margin-bottom: var(--s-space-3); font: italic var(--s-weight-regular) var(--s-size-body)/var(--s-leading-snug) var(--s-font-display); color: var(--s-muted); }
.cw-pick__opts { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: var(--s-space-1) var(--s-space-5); }
.cw-pick__opt { position: relative; display: flex; align-items: center; gap: var(--s-space-3); min-height: var(--s-touch); padding: 0 var(--s-space-3); border-bottom: var(--s-hairline) solid var(--s-rule); cursor: pointer; transition: background-color var(--s-dur-fast) var(--s-ease), opacity var(--s-dur-fast) var(--s-ease); }
.cw-pick__opt:hover { background: var(--s-paper-2); }
.cw-pick__opt input { position: absolute; opacity: 0; width: 1px; height: 1px; }
.cw-pick__box { flex: none; width: var(--s-space-5); height: var(--s-space-5); border: var(--s-rule-w) solid var(--s-ink); display: grid; place-items: center; transition: background-color var(--s-dur-fast) var(--s-ease); }
.cw-pick__box::after { content: ""; width: var(--s-space-3); height: var(--s-space-2); border-left: var(--s-rule-w) solid var(--s-ink); border-bottom: var(--s-rule-w) solid var(--s-ink); transform: rotate(-45deg) translate(1px, -1px) scale(0); transition: transform var(--s-dur-fast) var(--s-ease); }
.cw-pick__opt input:checked + .cw-pick__box { background: var(--s-verdigris); }
.cw-pick__opt input:checked + .cw-pick__box::after { transform: rotate(-45deg) translate(1px, -1px); }
.cw-pick__opt input:checked ~ .cw-pick__name { font-weight: var(--s-weight-bold); }
.cw-pick__opt input:focus-visible + .cw-pick__box { outline: var(--s-rule-w) solid var(--s-focus); outline-offset: var(--s-space-1); }
.cw-pick__opt.is-off { opacity: var(--s-pick-off); cursor: default; }
.cw-pick__opt.is-off:hover { background: none; }
/* The week fills in: seven subjects, three fixed and four chosen, as a row of timetable tiles */
.cw-pick__result { padding: var(--s-space-5); background: var(--s-oxide); color: var(--s-on-oxide); }
.cw-pick__result .cw-pick__label { color: var(--s-verdigris-light); }
.cw-pick__slots { display: grid; grid-template-columns: repeat(7, minmax(0, 1fr)); gap: var(--s-space-1); }
.cw-pick__slot { display: grid; align-content: space-between; gap: var(--s-space-2); min-height: var(--s-pick-slot-h); padding: var(--s-space-3); background: var(--s-oxide-2); font-weight: var(--s-weight-medium); font-size: var(--s-size-small); line-height: var(--s-leading-snug); }
.cw-pick__slot.is-fixed { color: var(--s-on-oxide); }
.cw-pick__slot-tag { color: var(--s-on-oxide-muted); }
.cw-pick__slot[data-cw-pick-slot] { border: var(--s-hairline) dashed var(--s-on-oxide-muted); background: none; }
.cw-pick__slot.is-filled { border-style: solid; border-color: var(--s-verdigris); background: var(--s-verdigris); color: var(--s-ink); }
.cw-pick__slot-n { display: grid; place-items: center; width: var(--s-space-5); height: var(--s-space-5); font-size: var(--s-size-micro); border: var(--s-hairline) solid currentColor; border-radius: 50%; color: var(--s-on-oxide-muted); }
.cw-pick__slot.is-filled .cw-pick__slot-n { color: var(--s-ink); }
.cw-pick__slot.is-popped { animation: cw-pop var(--s-dur-pop) var(--s-ease); }
.cw-pick__foot { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: var(--s-space-2) var(--s-space-5); margin-top: var(--s-space-3); }
.cw-pick__foot .cw-concept { color: var(--s-on-oxide-muted); }
.cw-pick__reset { min-height: var(--s-touch); padding: 0; border: 0; background: none; color: var(--s-verdigris-light); font-weight: var(--s-weight-bold); text-decoration: underline; text-underline-offset: var(--s-space-1); cursor: pointer; }
.cw-pick__result :focus-visible { outline-color: var(--s-focus-on-oxide); }

/* Sixth Form: the seminar table from above, the project brief, the A levels */
.cw-seminar { margin: 0; padding: var(--s-space-5); background: var(--s-paper); border: var(--s-hairline) solid var(--s-rule-strong); }
.cw-seminar__svg { width: 100%; height: auto; }
.cw-seminar__table { fill: var(--s-verdigris-pale); stroke: var(--s-ink); stroke-width: var(--s-rule-w); }
.cw-seminar__grain { fill: none; stroke: var(--s-verdigris); stroke-width: 1; opacity: 0.5; }
.cw-seminar__seat rect { fill: var(--s-paper-2); stroke: var(--s-ink); stroke-width: var(--s-rule-w); }
.cw-seminar__seat circle { fill: var(--s-verdigris-deep); }
.cw-seminar__seat--tutor rect { fill: var(--s-oxide); }
.cw-seminar__seat--tutor circle { fill: var(--s-verdigris-light); }
.cw-seminar__tag { font: var(--s-weight-bold) var(--s-size-seminar-tag) var(--s-font-body); letter-spacing: var(--s-track-micro); text-transform: uppercase; fill: var(--s-muted); }
.cw-js .cw-seminar.is-in .cw-seminar__seat { animation: cw-seat var(--s-dur) var(--s-ease) both; animation-delay: calc(var(--s-dur-stagger) * 2 * var(--i)); }
@keyframes cw-seat { from { opacity: 0; transform: translateY(var(--s-space-2)); } to { opacity: 1; transform: none; } }
.cw-seminar__cap { margin-top: var(--s-space-3); font: italic var(--s-weight-regular) var(--s-size-body)/var(--s-leading-snug) var(--s-font-display); color: var(--s-muted); }
.cw-sixth__main { display: grid; gap: var(--s-space-6); align-content: start; }
.cw-brief { position: relative; padding: var(--s-space-6); background: var(--s-paper); border: var(--s-hairline) solid var(--s-ink); box-shadow: var(--s-space-2) var(--s-space-2) 0 var(--s-verdigris-pale); }
.cw-brief__top { display: flex; justify-content: space-between; gap: var(--s-space-4); padding-bottom: var(--s-space-3); border-bottom: var(--s-rule-w) solid var(--s-ink); color: var(--s-verdigris-deep); }
.cw-brief__ref { font-size: var(--s-size-micro); letter-spacing: var(--s-track-micro); color: var(--s-muted); font-variant-numeric: tabular-nums; }
.cw-brief__title { margin-top: var(--s-space-4); font: var(--s-weight-medium) var(--s-size-h2-small)/var(--s-leading-head) var(--s-font-display); }
.cw-brief__rows { margin-top: var(--s-space-4); }
.cw-brief__rows > div { display: grid; grid-template-columns: 6.5rem minmax(0, 1fr); gap: var(--s-space-4); padding-block: var(--s-space-3); border-top: var(--s-hairline) solid var(--s-rule-strong); }
.cw-brief__rows dt { font-size: var(--s-size-micro); letter-spacing: var(--s-track-micro); text-transform: uppercase; font-weight: var(--s-weight-bold); padding-top: var(--s-space-1); }
.cw-brief__rows dd { line-height: var(--s-leading-snug); }
.cw-brief__note { margin-top: var(--s-space-3); color: var(--s-muted); }
.cw-alevels__title { color: var(--s-verdigris-deep); margin-bottom: var(--s-space-3); }
.cw-alevels__cols { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: var(--s-space-5); }
.cw-alevels__cols dt { padding-bottom: var(--s-space-2); border-bottom: var(--s-rule-w) solid var(--s-verdigris); font-weight: var(--s-weight-bold); font-size: var(--s-size-small); }
.cw-alevels__cols dd { padding-block: var(--s-space-1); border-bottom: var(--s-hairline) solid var(--s-rule); font-size: var(--s-size-small); }
.cw-week__grid { width: 100%; border-collapse: separate; border-spacing: var(--s-space-1); table-layout: fixed; }
.cw-week__grid th { width: var(--s-space-8); padding-right: var(--s-space-2); text-align: left; font-size: var(--s-size-micro); letter-spacing: var(--s-track-micro); text-transform: uppercase; font-weight: var(--s-weight-bold); color: var(--s-muted); }
.cw-week__p { height: var(--s-space-7); }
.cw-week__p--core { background: var(--s-oxide); }
.cw-week__p--sci { background: var(--s-verdigris-deep); }
.cw-week__p--lang { background: var(--s-verdigris); }
.cw-week__p--hum { background: var(--s-verdigris-light); }
.cw-week__p--arts { background: var(--s-stone-dark); }
.cw-week__p--games { background: var(--s-lead); }
.cw-week__p--free { background: repeating-linear-gradient(135deg, var(--s-paper-2) 0 var(--s-space-1), var(--s-paper-3) var(--s-space-1) var(--s-space-2)); box-shadow: inset 0 0 0 var(--s-hairline) var(--s-rule-strong); }
@keyframes cw-cell { from { transform: scale(0); } to { transform: none; } }
.cw-week__key { display: flex; flex-wrap: wrap; gap: var(--s-space-2) var(--s-space-5); margin-top: var(--s-space-4); font-size: var(--s-size-small); }
.cw-week__key li { display: inline-flex; align-items: center; gap: var(--s-space-2); }
.cw-week__swatch { width: var(--s-space-4); height: var(--s-space-4); }
.cw-report { padding-block: var(--s-section); background: var(--s-oxide); color: var(--s-on-oxide); }
.cw-report__inner { display: grid; grid-template-columns: minmax(0, 0.85fr) minmax(0, 1.5fr); gap: var(--s-space-8); align-items: baseline; }
.cw-report__body { font: var(--s-weight-regular) var(--s-size-h3)/var(--s-leading-snug) var(--s-font-display); color: var(--s-on-oxide-muted); max-width: var(--s-measure); }

/* ---- SCHOOL LIFE -------------------------------------------------------------------------- */
/* The house boards (the life page head, #houses) */
.cw-boards__head { margin-bottom: var(--s-space-6); max-width: var(--s-measure); }
.cw-boards__title { font: var(--s-weight-medium) var(--s-size-h3)/var(--s-leading-head) var(--s-font-display); color: var(--s-verdigris-light); }
.cw-boards__intro { margin-top: var(--s-space-2); color: var(--s-on-oxide-muted); }
.cw-boards__list { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: var(--s-space-7) var(--s-space-5); }
.cw-board {
    position: relative; padding: var(--s-space-5) var(--s-space-5) var(--s-space-5); background: var(--s-oxide-2); text-align: center;
    box-shadow: inset 0 0 0 var(--s-space-2) var(--s-oxide-2), inset 0 0 0 calc(var(--s-space-2) + var(--s-hairline)) var(--s-verdigris), var(--s-shadow-board);
    transform: rotate(var(--s-tilt-a)); transform-origin: 50% calc(var(--s-space-6) * -1);
}
.cw-board:nth-child(even) { transform: rotate(var(--s-tilt-b)); }
.cw-board__hooks { position: absolute; left: 22%; right: 22%; top: calc(var(--s-space-6) * -1); height: var(--s-space-6); border: var(--s-hairline) solid var(--s-on-oxide-muted); border-bottom: 0; border-radius: var(--s-space-6) var(--s-space-6) 0 0; opacity: 0.5; }
.cw-board__name { font: var(--s-weight-medium) var(--s-size-h3)/var(--s-leading-head) var(--s-font-display); letter-spacing: var(--s-track-board); text-transform: uppercase; color: var(--s-verdigris-light); }
.cw-board__who { margin-top: var(--s-space-2); padding-bottom: var(--s-space-3); border-bottom: var(--s-hairline) solid var(--s-rule-on-oxide); font-size: var(--s-size-micro); letter-spacing: var(--s-track-micro); text-transform: uppercase; color: var(--s-on-oxide); }
.cw-board__body { margin-top: var(--s-space-3); color: var(--s-on-oxide-muted); font-size: var(--s-size-small); line-height: var(--s-leading-snug); }
.cw-js .cw-board { animation: cw-swing var(--s-dur-slow) var(--s-ease) both; animation-delay: calc(var(--s-dur-stagger) * (4 + var(--i) * 2)); }
.cw-js .cw-board:nth-child(even) { animation-name: cw-swing-b; }
@keyframes cw-swing { from { opacity: 0; transform: rotate(calc(var(--s-tilt-a) * -3)); } to { opacity: 1; transform: rotate(var(--s-tilt-a)); } }
@keyframes cw-swing-b { from { opacity: 0; transform: rotate(calc(var(--s-tilt-b) * -3)); } to { opacity: 1; transform: rotate(var(--s-tilt-b)); } }

.cw-riverlife { padding-block: var(--s-section); background: var(--s-paper-2); }
.cw-riverlife__grid { display: grid; grid-template-columns: minmax(0, 1.1fr) minmax(0, 1fr); gap: var(--s-space-8); align-items: center; }
.cw-riverlife__photo { aspect-ratio: 4 / 5; overflow: hidden; }
.cw-riverlife__photo img { width: 100%; height: 100%; object-fit: cover; }
.cw-riverlife__body { margin-top: var(--s-space-5); max-width: var(--s-measure-narrow); font-size: var(--s-size-lede); line-height: var(--s-leading-snug); color: var(--s-muted); }
.cw-chalk {
    margin-top: var(--s-space-6); padding: var(--s-space-5); background: var(--s-oxide-2); color: var(--s-on-oxide);
    box-shadow: inset 0 0 0 var(--s-space-2) var(--s-oxide-3), var(--s-shadow-lift); transform: rotate(calc(var(--s-tilt-b) / 2));
}
.cw-chalk__title { font: italic var(--s-weight-regular) var(--s-size-h3)/var(--s-leading-head) var(--s-font-display); margin: var(--s-space-2) 0 var(--s-space-3) var(--s-space-2); }
.cw-chalk__table { width: 100%; border-collapse: collapse; font-variant-numeric: tabular-nums; }
.cw-chalk__table th, .cw-chalk__table td { padding: var(--s-space-2) var(--s-space-2); text-align: left; border-bottom: var(--s-hairline) dashed var(--s-rule-on-oxide); }
.cw-chalk__table thead th { font-size: var(--s-size-micro); letter-spacing: var(--s-track-micro); text-transform: uppercase; color: var(--s-verdigris-light); }
.cw-chalk__table tbody th { font-weight: var(--s-weight-medium); }
.cw-chalk__note { margin: var(--s-space-3) var(--s-space-2) var(--s-space-1); font-size: var(--s-size-small); color: var(--s-on-oxide-muted); }

.cw-sport { position: relative; padding-bottom: var(--s-section); }
.cw-sport__photo { height: clamp(300px, 44vw, 560px); overflow: hidden; }
.cw-sport__photo img { width: 100%; height: 100%; object-fit: cover; object-position: var(--s-focus-sport); }
.cw-sport__grid { display: grid; grid-template-columns: repeat(12, minmax(0, 1fr)); margin-top: calc(var(--s-space-9) * -2); position: relative; }
.cw-sport__card { grid-column: 6 / span 7; padding: var(--s-space-7); background: var(--s-paper); box-shadow: var(--s-shadow-lift); border-top: var(--s-space-1) solid var(--s-verdigris); }
.cw-sport__body { margin-top: var(--s-space-4); max-width: var(--s-measure); }
.cw-sport__list { display: grid; grid-template-columns: 1fr 1fr; gap: 0 var(--s-space-6); margin-top: var(--s-space-5); }
.cw-sport__list li { display: flex; align-items: center; gap: var(--s-space-3); min-height: var(--s-touch); border-bottom: var(--s-hairline) solid var(--s-rule-strong); font-weight: var(--s-weight-medium); }
.cw-sport__list li::before { content: ""; width: var(--s-space-2); height: var(--s-space-2); background: var(--s-verdigris); transform: rotate(45deg); }

.cw-music { padding-block: var(--s-section); background: var(--s-oxide); color: var(--s-on-oxide); }
.cw-music__grid { display: grid; grid-template-columns: minmax(0, 1.3fr) minmax(0, 0.8fr); gap: var(--s-space-8); align-items: center; }
.cw-music__body { margin-top: var(--s-space-5); max-width: var(--s-measure); color: var(--s-on-oxide-muted); font-size: var(--s-size-lede); line-height: var(--s-leading-snug); }
.cw-music__figs { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); margin-top: var(--s-space-7); border-top: var(--s-rule-w) solid var(--s-verdigris); }
.cw-music__figs > div { display: grid; grid-template-rows: auto 1fr; padding-top: var(--s-space-4); }
.cw-music__figs dd { font: var(--s-weight-medium) var(--s-size-h2)/var(--s-leading-solid) var(--s-font-display); color: var(--s-verdigris-light); font-variant-numeric: lining-nums; }
.cw-music__figs dt { margin-top: var(--s-space-2); color: var(--s-on-oxide-muted); font-size: var(--s-size-small); }
.cw-music__photo { aspect-ratio: 2 / 3; overflow: hidden; }
.cw-music__photo img { width: 100%; height: 100%; object-fit: cover; }

/* ---- VISIT DAYS -------------------------------------------------------------------------- */
/* The calendar as the page head (#dates): a paper calendar and the booking panel on the plate */
.cw-calhead { color: var(--s-on-oxide); }
.cw-calhead__bar { display: flex; flex-wrap: wrap; align-items: baseline; gap: var(--s-space-2) var(--s-space-5); margin-bottom: var(--s-space-4); }
.cw-calhead__title { font: var(--s-weight-medium) var(--s-size-h3)/var(--s-leading-head) var(--s-font-display); color: var(--s-verdigris-light); }
.cw-calhead__intro { color: var(--s-on-oxide-muted); font-size: var(--s-size-small); }
.cw-calhead__grid { display: grid; grid-template-columns: minmax(0, 1.35fr) minmax(0, 1fr); gap: var(--s-space-5); align-items: start; color: var(--s-ink); }
.cw-calhead .cw-book__form { background: var(--s-oxide-2); color: var(--s-on-oxide); box-shadow: inset 0 0 0 var(--s-hairline) var(--s-rule-on-oxide); }
.cw-calhead .cw-cal { box-shadow: var(--s-shadow-board); }
.cw-pagehead--visit .cw-calhead { color: var(--s-ink); }
.cw-pagehead--visit .cw-calhead__title { color: var(--s-verdigris-deep); }
.cw-pagehead--visit .cw-calhead__intro { color: var(--s-muted); }
.cw-pagehead--visit .cw-cal { background: var(--s-paper); }

/* The age ruler (the admissions page head) */
.cw-agehead { display: grid; gap: var(--s-space-4); }
.cw-agehead__ruler { display: grid; grid-template-columns: repeat(var(--ages), minmax(0, 1fr)); height: var(--s-agehead-h); border-bottom: var(--s-rule-w) solid var(--s-on-oxide-muted); }
.cw-agehead__age {
    position: relative; border-left: var(--s-hairline) solid var(--s-rule-on-oxide);
    background: linear-gradient(var(--s-rule-on-oxide), var(--s-rule-on-oxide)) 33.33% 100% / var(--s-hairline) var(--s-space-3) no-repeat,
                linear-gradient(var(--s-rule-on-oxide), var(--s-rule-on-oxide)) 66.66% 100% / var(--s-hairline) var(--s-space-3) no-repeat;
}
.cw-agehead__n { position: absolute; left: var(--s-space-2); top: calc(100% + var(--s-space-3)); font: var(--s-weight-regular) var(--s-size-h3)/var(--s-leading-solid) var(--s-font-display); color: var(--s-on-oxide-muted); font-variant-numeric: lining-nums; }
.cw-agehead__age.is-entry { border-left-color: transparent; }
.cw-agehead__age.is-entry .cw-agehead__n { color: var(--s-on-oxide); font-weight: var(--s-weight-bold); }
.cw-agehead__post {
    position: absolute; left: calc(var(--s-rule-w) * -1); bottom: 0; width: var(--s-post-w);
    height: calc(var(--h) * (var(--s-agehead-h) - var(--s-agehead-flag))); background: var(--s-verdigris-light); transform-origin: bottom;
}
.cw-agehead__flag { position: absolute; left: 0; bottom: 100%; display: grid; gap: var(--s-space-1); padding: 0 0 var(--s-space-3) var(--s-space-3); border-left: var(--s-post-w) solid var(--s-verdigris-light); white-space: nowrap; }
.cw-agehead__label { font: var(--s-weight-medium) var(--s-size-entry)/var(--s-leading-solid) var(--s-font-display); color: var(--s-verdigris-light); font-variant-numeric: lining-nums; }
.cw-agehead__year { font-weight: var(--s-weight-bold); }
.cw-agehead__places { color: var(--s-on-oxide-muted); font-size: var(--s-size-small); }
.cw-agehead__notes { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: var(--s-space-3) var(--s-space-6); margin-top: var(--s-space-8); }
.cw-agehead__note { display: grid; gap: var(--s-space-2); padding-top: var(--s-space-3); border-top: var(--s-hairline) solid var(--s-rule-on-oxide); }
.cw-agehead__note-label { font: var(--s-weight-medium) var(--s-size-h3)/var(--s-leading-solid) var(--s-font-display); color: var(--s-verdigris-light); font-variant-numeric: lining-nums; }
.cw-agehead__note-body { color: var(--s-on-oxide-muted); font-size: var(--s-size-small); line-height: var(--s-leading-snug); }
.cw-agehead__cap { margin-top: var(--s-space-4); color: var(--s-on-oxide-muted); }
.cw-js .cw-agehead__post { animation: cw-post var(--s-dur-slow) var(--s-ease) both; animation-delay: calc(var(--s-dur-stagger) * (5 + var(--i))); }
.cw-js .cw-agehead__flag { animation: cw-fade var(--s-dur) var(--s-ease) both; animation-delay: calc(var(--s-dur-stagger) * (14 + var(--i))); }
@keyframes cw-post { from { transform: scaleY(0); } to { transform: none; } }

/* The drawn week (the learning page head): three timetables pinned side by side */
.cw-weeks { padding: var(--s-space-5); background: var(--s-paper); color: var(--s-ink); box-shadow: var(--s-shadow-board); }
.cw-weeks__row { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: var(--s-space-5); }
.cw-weeks__title { display: block; margin-bottom: var(--s-space-2); font: var(--s-weight-medium) var(--s-size-body)/var(--s-leading-head) var(--s-font-display); }
.cw-weeks__grid { border-spacing: var(--s-hairline) var(--s-space-1); }
.cw-weeks__grid th { width: var(--s-weeks-day); padding-right: var(--s-space-1); font-size: var(--s-size-micro); letter-spacing: var(--s-track-tight); }
.cw-weeks .cw-week__p { height: var(--s-space-5); }
.cw-weeks__free { display: block; margin-top: var(--s-space-2); font-size: var(--s-size-small); font-weight: var(--s-weight-bold); color: var(--s-verdigris-deep); }
.cw-weeks__key { margin-top: var(--s-space-4); padding-top: var(--s-space-3); border-top: var(--s-hairline) solid var(--s-rule); font-size: var(--s-size-micro); }
.cw-weeks__cap { margin-top: var(--s-space-3); color: var(--s-muted); }
.cw-js .cw-weeks .cw-week__p { transform: scale(0); transform-origin: left center; }
.cw-js .cw-weeks.is-in .cw-week__p { animation: cw-cell var(--s-dur) var(--s-ease) both; animation-delay: calc(var(--s-dur-stagger) * (var(--s) * 4 + var(--d) + var(--p)) * 0.5); }
.cw-kinds { padding-block: var(--s-section); background: var(--s-paper-2); }
.cw-kinds__list { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: var(--s-space-5); }
.cw-kind { padding: var(--s-space-6) var(--s-space-5); background: var(--s-paper); border-top: var(--s-space-1) solid var(--s-verdigris); box-shadow: var(--s-shadow-card); }
.cw-kind__time { display: flex; align-items: center; gap: var(--s-space-3); color: var(--s-verdigris-deep); }
.cw-kind__title { margin-top: var(--s-space-3); font: var(--s-weight-medium) var(--s-size-h2-small)/var(--s-leading-head) var(--s-font-display); }
.cw-kind__for { margin-top: var(--s-space-2); font-weight: var(--s-weight-bold); }
.cw-kind__detail { margin-top: var(--s-space-2); color: var(--s-muted); }
.cw-js .cw-kind[data-cw-reveal] { transition-delay: calc(var(--s-dur-stagger) * 2 * var(--i)); }
.cw-morning { padding-block: var(--s-section); background: var(--s-oxide); color: var(--s-on-oxide); }
.cw-morning__grid { display: grid; grid-template-columns: minmax(0, 0.85fr) minmax(0, 1.5fr); gap: var(--s-space-8); }
.cw-morning__list { position: relative; }
.cw-morning__list::before { content: ""; position: absolute; left: calc(5.5rem + var(--s-space-2)); top: var(--s-space-3); bottom: var(--s-space-3); width: var(--s-rule-w); background: var(--s-verdigris); transform-origin: top; }
.cw-js .cw-morning:not(.is-in) .cw-morning__list::before { transform: scaleY(0); }
.cw-morning.is-in .cw-morning__list::before { transition: transform var(--s-dur-draw) var(--s-ease-in-out); }
.cw-morning__list li { display: grid; grid-template-columns: 5.5rem minmax(0, 1fr); gap: var(--s-space-6); padding-block: var(--s-space-4); align-items: baseline; position: relative; }
.cw-morning__list li::after { content: ""; position: absolute; left: calc(5.5rem + var(--s-space-2) - var(--s-space-1) + var(--s-hairline)); top: calc(var(--s-space-4) + var(--s-space-2)); width: var(--s-space-3); height: var(--s-space-3); border-radius: 50%; background: var(--s-oxide); box-shadow: inset 0 0 0 var(--s-rule-w) var(--s-verdigris-light); }
.cw-morning__time { font: var(--s-weight-medium) var(--s-size-h3)/var(--s-leading-solid) var(--s-font-display); font-variant-numeric: tabular-nums lining-nums; color: var(--s-verdigris-light); }
.cw-morning__text { font-size: var(--s-size-lede); line-height: var(--s-leading-snug); }
.cw-js .cw-morning[data-cw-reveal] { opacity: 1; transform: none; }
.cw-getting { padding-block: var(--s-section); }
.cw-getting__grid { display: grid; grid-template-columns: minmax(0, 0.85fr) minmax(0, 1.2fr) minmax(0, 0.5fr); gap: var(--s-space-7); align-items: start; }
.cw-getting__list > div { display: grid; grid-template-columns: 8rem minmax(0, 1fr); gap: var(--s-space-4); padding-block: var(--s-space-4); border-bottom: var(--s-hairline) solid var(--s-rule-strong); }
.cw-getting__list > div:first-child { border-top: var(--s-rule-w) solid var(--s-ink); }
.cw-getting__list dt { font-weight: var(--s-weight-bold); }
.cw-getting__address { display: grid; font-style: normal; padding-left: var(--s-space-4); border-left: var(--s-rule-w) solid var(--s-verdigris); font: italic var(--s-weight-regular) var(--s-size-lede)/var(--s-leading-snug) var(--s-font-display); }

/* ---- Layouts ------------------------------------------------------------------------------- */
@media (max-width: 1100px) {
    .cw-getting__grid { grid-template-columns: 1fr 1fr; }
    .cw-getting__grid > h2 { grid-column: 1 / -1; }
    .cw-sport__card { grid-column: 3 / span 10; }
}
@media (max-width: 959px) {
    .cw-pick__opts { grid-template-columns: 1fr 1fr; }
    .cw-pick__slots { grid-template-columns: repeat(4, minmax(0, 1fr)); }
    .cw-ledgerlist__grid, .cw-apply__grid, .cw-bursary__grid, .cw-riverlife__grid, .cw-music__grid, .cw-morning__grid,
    .cw-report__inner, .cw-stage__grid, .cw-fees__head, .cw-calhead__grid { grid-template-columns: 1fr; gap: var(--s-space-6); }
    .cw-stage__head { grid-row: auto; }
    .cw-stage--middle .cw-stage__head { grid-template-columns: 1fr; }
    .cw-stage--middle .cw-stage__head .cw-stage__body { grid-column: 1; grid-row: auto; margin-top: var(--s-space-5); }
    .cw-agehead__notes { grid-template-columns: 1fr; }
    .cw-kinds__list { grid-template-columns: 1fr; }
    .cw-sport__card { grid-column: 1 / -1; }
    .cw-music__photo { max-width: 26rem; }
}
@media (max-width: 719px) {
    .cw-lstep { grid-template-columns: var(--s-space-7) minmax(0, 1fr); }
    .cw-lstep__body { grid-column: 2; }
    .cw-fees__switch { display: flex; }
    .cw-fees__table .is-off { display: none; }
    .cw-fees__table thead th:not(:first-child) { font-size: var(--s-size-micro); }
    .cw-apply__form { padding: var(--s-space-5) var(--s-space-4); }
    .cw-week__grid th { width: var(--s-space-7); }
    .cw-week__p { height: var(--s-space-6); }
    .cw-sport__grid { margin-top: calc(var(--s-space-8) * -1); }
    .cw-sport__card { padding: var(--s-space-5); }
    .cw-sport__list { grid-template-columns: 1fr; }
    .cw-music__figs dd { font-size: var(--s-size-h2-small); }
    .cw-morning__list::before { left: calc(4.4rem + var(--s-space-2)); }
    .cw-morning__list li { grid-template-columns: 4.4rem minmax(0, 1fr); gap: var(--s-space-5); }
    .cw-morning__list li::after { left: calc(4.4rem + var(--s-space-2) - var(--s-space-1) + var(--s-hairline)); }
    .cw-getting__grid { grid-template-columns: 1fr; }
    .cw-getting__list > div { grid-template-columns: 1fr; gap: var(--s-space-1); }
    .cw-next__inner { flex-direction: column; align-items: flex-start; }
    .cw-chalk { transform: none; }
    .cw-boards__list { grid-template-columns: 1fr; gap: var(--s-space-7); }
    .cw-weeks { padding: var(--s-space-4); }
    .cw-tt, .cw-pick, .cw-brief, .cw-seminar { padding: var(--s-space-4); }
    .cw-pick__opts { grid-template-columns: 1fr; }
    .cw-pick__slots { grid-template-columns: 1fr 1fr; }
    .cw-pick__slot { min-height: 0; }
    .cw-alevels__cols { grid-template-columns: 1fr 1fr; }
    .cw-brief__rows > div { grid-template-columns: 1fr; gap: var(--s-space-1); }
    .cw-subline > div { grid-template-columns: 1fr; gap: 0; }
    .cw-weeks__row { grid-template-columns: 1fr; }
    .cw-agehead__label { font-size: var(--s-size-h2-small); }
    .cw-agehead { margin-top: var(--s-space-5); }
    .cw-agehead__places { font-size: var(--s-size-micro); }
}
@media (prefers-reduced-motion: reduce) {
    .cw-js .cw-weeks .cw-week__p, .cw-js .cw-agehead__post { transform: none; }
    .cw-js .cw-tt.is-in .cw-tt__p, .cw-js .cw-seminar.is-in .cw-seminar__seat { opacity: 1; transform: none; }
    .cw-js .cw-morning:not(.is-in) .cw-morning__list::before { transform: none; }
}
