body { margin: 0; background: var(--surface); }
.wrap { max-width: var(--container); margin: 0 auto; padding-inline: var(--space-4); }
@media (min-width: 720px) { .wrap { padding-inline: var(--space-6); } }
.ph { background: #fff2a8; color: #021e30; padding: 0 .25em; border-radius: 3px; font-weight: inherit; }
.preview-bar { background: #111; color: #eee; font: 13px/18px var(--font-mono); padding: 8px var(--space-4); text-align: center; }

.hero-grid { display: grid; gap: var(--space-6); padding-block: var(--space-8) var(--space-12); position: relative; z-index: 1; }
.hero-copy { display: grid; gap: var(--space-3); align-content: start; }
.hero-copy .aa-lead { margin: 0; font-size: 18px; line-height: 28px; color: var(--ink-muted); max-width: 90ch; }
@media (max-width: 860px) { .hero-grid { padding-block: var(--space-6) var(--space-8); } }

.band { padding-block: var(--space-16); }
.band.alt { background: var(--surface-alt); }
@media (max-width: 640px) { .band { padding-block: var(--space-12); } }
.stack { display: grid; gap: var(--space-8); }
.prose { max-width: var(--measure); font-size: 16px; line-height: 26px; color: var(--ink); }
.prose p { margin: 0 0 var(--space-3); }
.prose a { color: var(--link); }
.cols { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: var(--space-8); }
@media (max-width: 760px) { .cols { grid-template-columns: 1fr; } }
.list-title { margin: 0 0 var(--space-3); font-size: 20px; line-height: 28px; font-weight: 600; }
.ticks { margin: 0; padding: 0; list-style: none; display: grid; gap: var(--space-2); }
.ticks li { display: grid; grid-template-columns: 14px 1fr; gap: var(--space-2); font-size: 16px; line-height: 24px; color: var(--ink); }
.ticks li::before { content: ""; width: 8px; height: 8px; margin-top: 8px; border: 2px solid var(--signal); border-radius: 2px; }
.table-scroll { overflow-x: auto; border: 1px solid var(--line); border-radius: var(--radius-lg); background: var(--surface-raised); }
table.courses { width: 100%; border-collapse: collapse; font-size: 15px; line-height: 22px; }
table.courses th { text-align: left; font: 500 12px/16px var(--font-mono); letter-spacing: .14em; text-transform: uppercase; color: var(--link); padding: var(--space-3) var(--space-4); border-bottom: 1px solid var(--line); }
table.courses td { padding: var(--space-3) var(--space-4); border-bottom: 1px solid var(--line); vertical-align: top; }
table.courses tr:last-child td { border-bottom: 0; }
table.courses td.mono { font-family: var(--font-mono); color: var(--link); white-space: nowrap; font-variant-numeric: tabular-nums; }
.office { display: grid; gap: var(--space-1); font-size: 16px; line-height: 24px; }
.office b { font-weight: 600; }
.office .mono { font-family: var(--font-mono); font-size: 15px; }

.site-foot { padding-block: var(--space-12) calc(var(--space-16) + var(--space-8)); background: var(--surface); color: var(--ink); border-top: 1px solid var(--line); }
.site-foot .foot-grid { display: grid; grid-template-columns: auto 1fr; gap: var(--space-8); align-items: start; }
.site-foot img { height: 36px; width: auto; }
.site-foot p { margin: 0 0 var(--space-3); color: var(--ink-muted); font-size: 14px; line-height: 22px; max-width: var(--measure); }
.site-foot .links { display: flex; flex-wrap: wrap; gap: var(--space-2) var(--space-6); font-size: 14px; }
.site-foot a { color: var(--link); }
@media (max-width: 640px) { .site-foot .foot-grid { grid-template-columns: 1fr; } }
.form-msg { font-size: 14px; line-height: 22px; margin: 0; }
.form-msg.err { color: var(--danger); }
.form-msg.ok { color: var(--success); }
.form-msg:empty { display: none; }
.booking { display: grid; gap: var(--space-2); }
.booking[hidden] { display: none; }
.book-dialog { width: min(1040px, calc(100vw - 2 * var(--space-4))); }
.book-dialog .aa-card { height: calc(100dvh - 2 * var(--space-4)); padding: calc(36px + 2 * var(--space-3)) var(--space-2) var(--space-2); grid-template-rows: 1fr; background: #fff; }
.book-dialog iframe { width: 100%; height: 100%; border: 0; display: block; }
.booking p, .thanks-msg { font-size: 16px; line-height: 24px; margin: 0; }
.aa-hp { position: absolute; left: -10000px; width: 1px; height: 1px; overflow: hidden; }
.aa-ts:has(iframe) { margin: var(--space-1, 8px) 0; } /* Turnstile: takes space only when Cloudflare shows the check */

/* home */
.who { margin: 0; font-size: 18px; line-height: 28px; color: var(--ink); max-width: 90ch; }
.who b { font-weight: 600; }
a.aa-tile { text-decoration: none; color: var(--ink); }
a.aa-tile:focus-visible { outline: 2px solid var(--focus); outline-offset: 2px; }
.prov-group { display: grid; gap: var(--space-3); }
/* two dropdowns side by side, also on phones; the design system's form fields */
.prog-filter { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: var(--space-3); max-width: 560px; }
.prog-filter .aa-field { min-width: 0; }
.prog-filter select { cursor: pointer; }
.prog-none { display: none; margin: 0; color: var(--ink-muted); }
@supports not selector(:has(*)) { .prog-filter { display: none; } }
.prov-h { margin: 0; font-family: var(--font-display); font-size: 24px; line-height: 30px; font-weight: 500; }
.aa-tile h4 { margin: 0; font-family: var(--font-display); font-size: 20px; line-height: 26px; font-weight: 500; text-wrap: balance; }
.tp { display: grid; gap: var(--space-8); }
.tp-sec h2 { margin: 0 0 var(--space-3); font-family: var(--font-display); font-size: 26px; line-height: 32px; font-weight: 500; }
.tp-sec p:last-child { margin-bottom: 0; }
.tp-sec .ticks { margin-top: var(--space-3); }
.tp-updated { margin: 0; font-size: 14px; color: var(--ink-muted); }
.prog-by { margin: 0; font-size: 15px; line-height: 22px; color: var(--ink-muted); }
.prog-go { margin-top: auto; font-weight: 600; color: var(--link); }
.steps { margin: 0; padding: 0; list-style: none; display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: var(--space-6); counter-reset: step; }
.steps li { counter-increment: step; display: grid; gap: var(--space-2); font-size: 16px; line-height: 24px; color: var(--ink-muted); }
.steps li::before { content: counter(step, decimal-leading-zero); font: 500 13px/16px var(--font-mono); letter-spacing: .14em; color: var(--link); }
.steps b { color: var(--ink); font-weight: 600; font-size: 18px; line-height: 26px; }
@media (max-width: 760px) { .steps { grid-template-columns: 1fr; } }
.offices { display: grid; grid-template-columns: repeat(auto-fill, minmax(min(100%, 240px), 1fr)); gap: var(--space-4); }
.offices address { font-style: normal; display: grid; gap: var(--space-1); align-content: start; padding: var(--space-6); background: var(--surface-raised); border: 1px solid var(--line); border-radius: var(--radius-lg); font-size: 15px; line-height: 22px; color: var(--ink-muted); }
.offices address b { color: var(--ink); font-size: 16px; font-weight: 600; }
.offices address .tag { font: 500 12px/16px var(--font-mono); letter-spacing: .12em; text-transform: uppercase; color: var(--link); }
.offices a { color: var(--link); }
.cta-band { display: grid; gap: var(--space-4); justify-items: start; }
.aa-tile p { margin: 0; font-size: 15px; line-height: 22px; color: var(--ink-muted); }
