:root{
  --purple:var(--color-primary);
  --blue:var(--color-secondary);
  --ink:var(--color-text);
  --muted:var(--color-muted);
  --paper:var(--color-bg);
  --lavender:#F4F8FF;
  --line:#E6EEFF
 }
*{box-sizing:border-box}

html{scroll-padding-top:1rem}

body{
  margin:0;
  background:var(--paper);
  color:var(--ink);
  font:1.0625rem/1.65 system-ui,-apple-system,"Segoe UI",sans-serif
 }
h1,h2,h3,p{margin-top:0}
h1,h2,h3{line-height:1.14;letter-spacing:-.04em}
h1{font-size:clamp(2.65rem,5.1vw,4.6rem);font-weight:650;margin-bottom:1.6rem}
h1 span{color:var(--purple)}
h2{font-size:clamp(2rem,3.2vw,2.8rem);font-weight:650}
h3{font-size:1.6rem;font-weight:650}p{margin-bottom:1.25rem}
a{color:var(--purple);text-underline-offset:.24em;overflow-wrap:anywhere}
a:hover{text-decoration-thickness:3px}
a:focus-visible,summary:focus-visible,button:focus-visible{
  outline:3px solid #0a518b;outline-offset:5px;box-shadow:0 0 0 5px white;border-radius:3px}.wrap{width:min(1160px,calc(100% - 3rem));margin-inline:auto}
section{padding-block:5rem;scroll-margin:1rem}
.site-header{background:var(--purple);color:white}
.nav{display:flex;align-items:center;justify-content:space-between;gap:2rem;padding-block:1.2rem}
.brand{display:block;flex-shrink:0}
.brand img{width:205px;max-width:100%;height:auto;display:block}
.nav nav{display:flex;align-items:center;gap:1.8rem;flex-wrap:wrap}
.nav nav a{color:white;padding-block:.6rem;font-size:.95rem;font-weight:600;text-decoration:none;min-height:44px}
.nav nav a[aria-current]{text-decoration:underline;text-decoration-thickness:2px;text-underline-offset:.5em}
.nav a:focus-visible,footer a:focus-visible{outline-color:#ffca28;box-shadow:0 0 0 5px var(--purple)}

.button{display:inline-flex;
  align-items:center;
  justify-content:center;
  gap:1rem;padding:.95rem 1.4rem;
  border:2px solid var(--purple);
  background:var(--purple);
  color:#fff;
  min-height:48px;
  border-radius:.4rem;
  font-weight:650;
  text-decoration:none;
  font-size:1rem
}

.button:hover{background:#531479;color:white}
.button.light{background:#fff;color:var(--purple);border-color:#fff}
.button.light:hover{background:#eee7f4;color:var(--purple)}
.small{padding:.65rem 1.1rem}
.skip{position:absolute;left:1rem;top:-200px;z-index:10;background:white;padding:1rem}
.skip:focus{top:1rem}

main:focus{outline:none}
.hero{display:grid;grid-template-columns:1.1fr 1fr;gap:4rem;align-items:center;padding-block:4.5rem}
.eyebrow{text-transform:uppercase;font-size:.76rem;font-weight:750;letter-spacing:.13em;color:var(--purple);margin-bottom:1.2rem}
.lead{font-size:1.2rem;line-height:1.7;max-width:46ch;color:var(--muted)}
.actions{display:flex;align-items:flex-start;flex-direction:column;gap:1.1rem;margin-block:2rem}
.textlink{font-weight:650;display:inline-block;padding-block:.4rem}
.caption{font-size:.9rem;color:var(--muted);margin-top:1.1rem}
.visual{background:var(--lavender);border-radius:1rem;overflow:hidden;box-shadow:12px 12px 0 #e4d9ed}
.visual-top{display:flex;align-items:center;justify-content:space-between;padding:1.5rem 1.8rem;color:var(--purple)}
.visual-top>span:last-child{font-size:2rem}
.pill{font-size:.7rem;letter-spacing:.09em;font-weight:750;padding:.4rem .7rem;border:1px solid #91829c;border-radius:2rem}
.learner-photo{display:block;width:100%;height:auto;aspect-ratio:1.9;object-fit:cover;object-position:center top}
.visual-bottom{padding:1.7rem 2rem;display:flex;gap:1.5rem;align-items:flex-end}
.visual-bottom strong{font-size:1.75rem;line-height:1.2;letter-spacing:-.025em;color:var(--purple)}
.visual-bottom p{font-size:.87rem;line-height:1.55;margin:0;color:var(--muted)}
.principles{background:var(--purple);color:#fff}
.principles .wrap{display:flex;justify-content:space-between;gap:1.5rem;flex-wrap:wrap;padding-block:1.2rem;font-size:.9rem;font-weight:600}
.principles span:before{content:'✓';color:#ffca28;padding-right:.7rem}
.section-title{max-width:700px;margin-bottom:2.5rem}
.section-title>p:last-child{color:var(--muted)}
.routes{display:grid;grid-template-columns:1fr 1fr;gap:1.5rem}
.route{padding:2.5rem;background:#fff;border:1px solid var(--line);border-radius:.7rem}
.route h3{font-size:2rem;margin-top:1.5rem}
.route p{color:var(--muted)}
.route ul{padding-left:1.25rem;margin-block:1.6rem}
.route li{margin-bottom:.7rem}
.lavender{background:var(--lavender)}
.badge{font-size:.8rem;font-weight:700;border-bottom:2px solid var(--purple);padding-bottom:.5rem;color:var(--purple)}
.tint{background:#f1edf3}
.steps{list-style:none;padding:0;margin:0;display:grid;grid-template-columns:repeat(3,1fr);gap:2.5rem}
.steps span{display:block;color:var(--purple);font-size:1rem;font-weight:750;border-top:1px solid #95869e;padding-top:1rem;margin-bottom:1.5rem}
.steps p{color:var(--muted);margin-bottom:0}
.cta{padding:3rem;background:var(--purple);border-radius:.7rem;color:#fff;display:flex;align-items:center;gap:3rem;justify-content:space-between}
.cta .eyebrow{color:#ead9f7}
.cta h2{max-width:650px}
.cta p:last-child{margin:0;color:#eee7f4}
.cta .button{flex-shrink:0}footer{background:var(--purple);color:#eee7f4;padding-top:3.5rem}
.footgrid{display:grid;grid-template-columns:1.3fr 1fr 1.2fr;gap:3rem}
.footerbrand{font-size:1.35rem;color:#fff}
.footgrid p{font-size:.94rem;margin-top:.75rem}
.footgrid a{display:block;color:#fff;font-size:.94rem;width:fit-content;padding-block:.35rem;min-height:36px}
.footgrid strong{display:block;margin-bottom:.75rem}
.footnote{display:flex;justify-content:space-between;border-top:1px solid #81618f;padding-block:1.5rem;margin-top:2.5rem;font-size:.8rem}
.offer{display:grid;grid-template-columns:1.7fr 1fr;gap:4rem;align-items:center}
.offer>div>p{color:var(--muted)}.price{background:var(--lavender);padding:2rem;border-radius:.7rem;border-top:4px solid var(--purple)}
.price .amount{font-size:4rem;line-height:1;font-weight:650;color:var(--purple);letter-spacing:-.05em}
.price p:not(.amount):not(.eyebrow){font-size:1rem}.topics{display:grid;grid-template-columns:repeat(3,1fr);gap:1.2rem}
.topic{background:#fff;padding:1.8rem;border:1px solid var(--line);border-radius:.6rem}
.topic-top{display:flex;align-items:center;gap:1rem;margin-bottom:1.5rem}
.topic-top .eyebrow{margin:0;font-size:.68rem}
.topic h3{font-size:1.4rem;line-height:1.25}
.topic p{font-size:1rem;margin:0;color:var(--muted)}
.event{display:grid;grid-template-columns:1.2fr 1fr;border:1px solid var(--line);border-radius:.8rem;overflow:hidden}
.event>div{padding:3rem}
.event-note{background:var(--lavender)}
.event-note>span{font:4rem Georgia;color:var(--purple);line-height:1}
.chat-icon{display:block;width:3rem;height:3rem;margin-bottom:1rem;fill:var(--purple)}
.chat-icon .dot{fill:var(--lavender)}
.event-note h3{font-size:2rem}
.faq{padding-top:0}
.faq details{border-top:1px solid #a698af;padding:1rem 0;max-width:850px}
.faq details:last-child{border-bottom:1px solid #a698af}
.faq summary{font-weight:650;font-size:1.1rem;cursor:pointer;padding:.65rem .5rem;min-height:48px}
.faq details p{padding:.8rem .5rem 0;margin:0;color:var(--muted)}
.page-intro{min-height:60vh}
.page-intro h1{max-width:800px}
.contact-grid{display:grid;grid-template-columns:1fr 1fr;gap:1.5rem;margin-block:3rem}
.contact-grid h2{font-size:1.8rem}
.contact-link{display:block;padding:.6rem 0;font-size:1.2rem;font-weight:700}
.prose{max-width:850px}
.prose h2{font-size:1.7rem;margin-top:2.5rem}
.prose li{margin-bottom:.6rem}

@media(max-width:1000px){.nav{flex-direction:column;align-items:flex-start;gap:.75rem}

.nav nav{gap:1.5rem}
.hero{gap:2rem}
.visual-bottom{display:block}
.visual-bottom p{margin-top:1rem}
.topics{grid-template-columns:repeat(2,1fr)}
.footgrid{gap:1.5rem}
.offer{gap:2rem}}

@media(max-width:700px){.wrap{width:calc(100% - 2rem)}

section{padding-block:3rem}
.hero,.routes,.offer,.event,.contact-grid,.steps,.footgrid{grid-template-columns:1fr}
.hero{padding-block:3rem;gap:2.5rem}
.nav nav{gap:.3rem 1.2rem;width:100%}
.nav nav a{font-size:.9rem}
.nav nav .button{margin-block:.4rem}
.nav .brand img{width:180px}
.topics{grid-template-columns:1fr}
.route,.event>div{padding:1.6rem}
.cta{padding:2rem;flex-direction:column;align-items:flex-start;gap:1.5rem}
.footgrid{gap:2rem}
.principles .wrap{display:grid;grid-template-columns:1fr}
.visual{margin-right:.7rem}
.visual-bottom{display:flex}
.visual-bottom p{margin:0}
.training-hero h1{font-size:2.8rem}
.page-intro h1{font-size:2.7rem}
.footnote{gap:1rem;flex-wrap:wrap}
.steps{gap:1.5rem}}

@media(prefers-reduced-motion:reduce){*{scroll-behavior:auto;animation:none;transition:none}}
@media(forced-colors:active){.button,.route,.topic,.visual,.price,.event{border:1px solid CanvasText}
a:focus-visible,summary:focus-visible{outline:3px solid Highlight;box-shadow:none}}
.booking-layout{display:grid;grid-template-columns:.8fr 1.3fr;gap:3rem;align-items:start}
.booking-form{background:white;border:1px solid var(--line);border-radius:.7rem;padding:2rem;min-width:0}
.booking-form>p:first-child{font-size:1rem}
.field{margin-bottom:1.5rem;min-width:0}
.field label,.booking-result label{display:block;font-weight:650;margin-bottom:.5rem}

.booking-form input,.booking-form select,.booking-form textarea{
  width:100%;
  min-width:0;
  max-width:100%;
  font:inherit;color:var(--ink);
  background:#fff;
  border:2px solid #84768f;
  border-radius:.35rem;
  padding:.75rem;
  min-height:48px}

.booking-form textarea{resize:vertical}
.booking-form ::placeholder{color:#625868;opacity:1}
.booking-form input:focus-visible,.booking-form select:focus-visible,.booking-form textarea:focus-visible{outline:3px solid var(--blue);outline-offset:3px}
.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:1.2rem}
.field-help{font-size:.9rem;color:var(--muted);margin:.5rem 0 0}
.field-error{font-size:1rem;color:#9c2017;margin:.4rem 0 0;font-weight:600}
.booking-form [aria-invalid=true]{border-color:#9c2017}
.error-summary{background:#fff3f1;border:2px solid #9c2017;padding:1.25rem;margin-bottom:1.5rem}
.error-summary h3{font-size:1.3rem}
.error-summary a{color:#9c2017;font-weight:600}
.error-summary ul{padding-left:1.2rem;margin-bottom:0}
.error-summary:focus{outline:3px solid var(--blue);outline-offset:3px}
.booking-result{margin-top:1.5rem;padding:1.25rem;background:var(--lavender);border-left:4px solid var(--purple)}
.booking-result p{font-size:1rem}.booking-form button{font:inherit;font-weight:650;cursor:pointer}
.booking-form button:disabled{opacity:.6;cursor:not-allowed}
[hidden]{display:none!important}

@media(max-width:900px){.booking-layout{grid-template-columns:1fr;gap:1.5rem}}
@media(max-width:600px){.form-grid{grid-template-columns:1fr;gap:0}
.booking-form{padding:1.25rem}
.booking-form input[type=date]{font-size:1rem}}
.accessibility-panel{background:var(--lavender);padding:2.5rem;border-radius:.8rem;border-top:5px solid var(--purple)}
.accessibility-panel h2{font-size:2.4rem}
.accessibility-panel ul{padding:0;list-style:none}
.accessibility-panel li{border-top:1px solid #ad9eb8;padding:1rem 0}
.accessibility-panel li strong,.accessibility-panel li span{display:block}
.accessibility-panel li span{color:var(--muted);font-size:1rem}
.accessibility-panel ul{margin-bottom:0;border-bottom:1px solid #ad9eb8}
.panel-summary{margin:1.5rem 0 0;padding:1rem 1.25rem;background:var(--color-surface);border-left:5px solid var(--purple);border-radius:.4rem;font-size:1.2rem;font-weight:700;line-height:1.4;color:var(--ink)}
.session-dates{margin-top:2.5rem;border-top:1px solid var(--line);padding-top:2rem}
.session-intro{max-width:70ch;color:var(--muted);margin-bottom:1.5rem}
.session-intro strong{color:var(--color-text)}
.session-days{list-style:none;padding:0;margin:0;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:1.25rem}
.session-day{padding:1.6rem;background:var(--lavender);border:1px solid var(--line);border-top:4px solid var(--purple);border-radius:.6rem}
.session-day h4{font-size:1.6rem;line-height:1.2;color:var(--purple);margin:0}
.session-label{font-size:.8rem;font-weight:750;text-transform:uppercase;letter-spacing:.1em;color:var(--muted);margin:1.3rem 0 .6rem}
.session-times,.session-calendar{list-style:none;padding:0;margin:0;display:flex;flex-wrap:wrap;gap:.5rem}
.session-times li{flex:1 1 10rem;background:var(--color-surface);border:1px solid var(--line);border-radius:.5rem;padding:.75rem 1rem;font-size:1.2rem;font-weight:650}
.session-times span{display:block;font-size:.85rem;font-weight:700;color:var(--purple)}
.session-calendar li{min-width:4.25rem;text-align:center;background:var(--color-surface);border:1px solid var(--line);border-radius:.5rem;padding:.45rem .5rem;font-size:.9rem;line-height:1.2}
.session-calendar strong{display:block;font-size:1.35rem}
.session-none{padding:1.4rem;background:var(--lavender);border:1px solid var(--line);border-left:4px solid var(--purple);border-radius:.5rem;max-width:70ch}
.coming-soon{display:flex;align-items:center;justify-content:space-between;gap:2.5rem;padding:2.5rem;background:#e4edf5;border:1px solid #a4b8ca;border-radius:.7rem}
.coming-soon p{max-width:65ch}
.coming-soon .button{flex-shrink:0}
.coming-badge{display:inline-block;background:var(--purple);color:#fff;font-size:.85rem;font-weight:700;padding:.4rem .8rem;border-radius:2rem;margin-bottom:1rem}
.coming-soon .caption{margin-bottom:0}

@media(max-width:700px){.session-days{grid-template-columns:1fr}
.coming-soon{flex-direction:column;align-items:flex-start;padding:1.6rem}
.accessibility-panel{padding:1.6rem}}

.bot-field{display:none}
.table-region{overflow-x:auto;margin:2rem 0;border:1px solid var(--line);border-radius:.4rem}
.table-region:focus-visible{outline:3px solid var(--blue);outline-offset:4px}
table{width:100%;border-collapse:collapse;min-width:620px;font-size:1rem;background:#fff}
caption{text-align:left;padding:1rem;font-weight:700;background:var(--lavender)}
th,td{padding:1rem;text-align:left;vertical-align:top;border-bottom:1px solid var(--line)}
thead{background:var(--purple);color:#fff}
tbody th{width:24%}
tbody td:nth-child(2){width:25%}
.about-subheading{margin-top:3rem}
.booking-result:focus{outline:3px solid var(--blue);outline-offset:4px}

/* Brand palette comes from assets/tokens.css (the supplied MSR tokens). */
a { color: var(--color-secondary); }
.site-header, .principles {
  background:
    radial-gradient(1200px 300px at 80% -50%, rgba(255,202,40,.3), transparent 60%),
    linear-gradient(135deg, var(--color-primary), var(--color-secondary));
}
.button {
  background: var(--color-accent1);
  border-color: var(--color-accent1);
  color: #fff;
  border-radius: 8px;
}
.button:hover { background: #dee854; border-color: #dee854; color: #111; }
.button.light { background: #fff; color: var(--color-primary); border-color: #fff; }
.button.light:hover { background: var(--color-accent2); border-color: var(--color-accent2); color: #212121; }
.cta { background: linear-gradient(135deg, var(--color-accent3), var(--color-secondary)); }
.cta .eyebrow, .cta p:last-child { color: #fff; }
footer { background: #111; color: #ddd; }
.footnote { border-color: #666; }
.tint { background: var(--color-bg); }
.price { border-top-color: var(--color-secondary); }
.coming-badge { background: var(--color-primary); }
/* Oblong hover outlines: straight sides and gently rounded 8px corners. */
.site-header .nav nav a, .textlink, .footgrid a, .button { border-radius: 8px; }
.site-header .nav nav a {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  max-width: 100%;
  padding-inline: .85rem;
}
.site-header .nav nav a:not(.button) { padding-block: .65rem; }
.site-header .nav nav a:hover {
  outline: none;
  box-shadow: 0 0 0 2px #fff;
  text-decoration: underline;
  text-underline-offset: .35em;
}
.textlink { padding-inline: .45rem; }
.footgrid a { padding-inline: .45rem; }
.textlink:hover, .button:hover {
  outline: 2px solid var(--color-primary);
  outline-offset: 3px;
}
.footgrid a:hover, .cta .button:hover {
  outline: none;
  box-shadow: 0 0 0 2px #fff;
}

.footgrid a:focus-visible {
  outline: 3px solid var(--color-accent2);
  outline-offset: 4px;
  box-shadow: none;
}
.textlink:focus-visible, .button:focus-visible {
  outline: var(--focus-width) solid var(--focus-color);
  outline-offset: var(--focus-offset);
  box-shadow: 0 0 0 5px #fff;
}
.site-header .nav nav a:focus-visible,
.site-header .nav nav a.button:focus-visible {
  outline: 3px solid #fff;
  outline-offset: 4px;
  box-shadow: 0 0 0 6px #111;
}
@media (forced-colors: active) {
  .site-header .nav nav a:hover, .textlink:hover, .footgrid a:hover,
  .button:hover, .site-header .nav nav a:focus-visible,
  .footgrid a:focus-visible, .textlink:focus-visible, .button:focus-visible {
    outline: 3px solid Highlight;
    outline-offset: 3px;
    box-shadow: none;
  }
}

/* Pastel heading panels distinguish topic choices without implying a sequence. */
.topic { --heading-pastel: #FFE1DD; }
.topic:nth-child(3n + 2) { --heading-pastel: #D9F2EF; }
.topic:nth-child(3n) { --heading-pastel: #FFF3CC; }
.topic h3 {
  background: var(--heading-pastel);
  color: var(--color-primary);
  padding: .85rem 1rem;
  border-radius: 8px;
  margin-bottom: 1rem;
}
.topic-top { margin-bottom: 1rem; }

/* The original supplied tokens remain the light-mode brand palette. */
:root { color-scheme: light; }
.site-header .nav nav a.button.light { color: #370556; }
.theme-toggle {
  display: inline-flex; align-items: center; justify-content: center; gap: .65rem;
  min-height: 48px; padding: .65rem .85rem; border: 2px solid #fff;
  border-radius: 8px; background: transparent; color: #fff;
  font: inherit; font-size: .95rem; font-weight: 600; cursor: pointer;
}
.theme-track { display: inline-flex; align-items: center; width: 42px; height: 24px;
  padding: 3px; border: 2px solid #fff; border-radius: 20px; }
.theme-track > span { width: 14px; height: 14px; border-radius: 50%; background: #fff; }
.theme-toggle[aria-checked="true"] .theme-track { background: #FFCA28; border-color: #FFCA28; }
.theme-toggle[aria-checked="true"] .theme-track > span { margin-left: auto; background: #370556; }
.theme-toggle:hover { box-shadow: 0 0 0 2px #fff; }
.theme-toggle:focus-visible { outline: 3px solid #FFCA28; outline-offset: 4px; box-shadow: none; }
:root[data-theme="dark"] {
  color-scheme: dark;
  --color-primary: #DFC0FF; --color-secondary: #9CCFFF;
  --color-accent1: #FFAA9E; --color-accent3: #89DCD1;
  --color-bg: #171221; --color-surface: #241C30;
  --color-text: #F5F0FA; --color-muted: #C9BDD4;
  --lavender: #2C243A; --line: #665572; --focus-color: #FFCA28;
}
[data-theme="dark"] .site-header, [data-theme="dark"] .principles {
  background: radial-gradient(1200px 300px at 80% -50%, rgba(255,202,40,.2), transparent 60%),
    linear-gradient(135deg, #370556, #0A518B);
}
[data-theme="dark"] .route, [data-theme="dark"] .topic,
[data-theme="dark"] .booking-form, [data-theme="dark"] table { background: var(--color-surface); }
[data-theme="dark"] .coming-soon { background: #20323D; border-color: #7797AC; }
[data-theme="dark"] .visual { box-shadow: 12px 12px 0 #49365B; }
[data-theme="dark"] .button { color: #26112E; }
[data-theme="dark"] .button.light { background: #fff; color: #370556; border-color: #fff; }
[data-theme="dark"] .button.light:hover { background: #FFCA28; border-color: #FFCA28; color: #212121; }
[data-theme="dark"] .cta { background: linear-gradient(135deg, #006B61, #0A518B); }
[data-theme="dark"] .topic h3 { color: #370556; }
[data-theme="dark"] .coming-badge, [data-theme="dark"] thead { background: #DFC0FF; color: #26112E; }
[data-theme="dark"] .booking-form input, [data-theme="dark"] .booking-form select,
[data-theme="dark"] .booking-form textarea { background: #171221; border-color: #A896B6; }
[data-theme="dark"] .booking-form ::placeholder { color: #C9BDD4; }
[data-theme="dark"] .field-error, [data-theme="dark"] .error-summary a { color: #FFAA9E; }
[data-theme="dark"] .booking-form [aria-invalid="true"] { border-color: #FFAA9E; }
[data-theme="dark"] .error-summary { background: #382029; border-color: #FFAA9E; }
[data-theme="dark"] .skip { background: #241C30; }
[data-theme="dark"] a:focus-visible, [data-theme="dark"] summary:focus-visible,
[data-theme="dark"] button:focus-visible { outline-color: #FFCA28; box-shadow: 0 0 0 5px #171221; }
[data-theme="dark"] .booking-form input:focus-visible,
[data-theme="dark"] .booking-form select:focus-visible,
[data-theme="dark"] .booking-form textarea:focus-visible { outline-color: #FFCA28; }
@media (forced-colors: active) {
  .theme-toggle, .theme-track { border-color: ButtonText; }
  .theme-track > span { background: ButtonText; }
  .theme-toggle[aria-checked="true"] .theme-track { background: Highlight; border-color: Highlight; }
  .theme-toggle[aria-checked="true"] .theme-track > span { background: HighlightText; }
  .theme-toggle:focus-visible { outline: 3px solid Highlight; box-shadow: none; }
}

/* Accessibility update: mobile reflow and enlarged text (October 2026).
   Keep this section after the existing responsive and theme rules. */
html { -webkit-text-size-adjust: 100%; text-size-adjust: 100%; }
.wrap, main, section, .prose { min-width: 0; }
:is(.hero, .routes, .offer, .event, .contact-grid, .steps, .footgrid,
    .topics, .booking-layout, .form-grid, .nav, .cta, .coming-soon,
    .visual-top, .visual-bottom) > * { min-width: 0; }
h1, h2, h3, p, li, label, summary, .footerbrand, .pill {
  overflow-wrap: anywhere;
}
img { max-width: 100%; }
.button, .theme-toggle {
  max-width: 100%; white-space: normal; overflow-wrap: anywhere;
  text-align: center; flex-wrap: wrap; height: auto;
}
.theme-track { flex: 0 0 42px; }
.nav nav { min-width: 0; max-width: 100%; }
.visual-top, .visual-bottom { flex-wrap: wrap; }
.visual-bottom strong, .visual-bottom p { flex: 1 1 12rem; }
.pill { max-width: 100%; }
.footgrid a { max-width: 100%; }
.booking-form input, .booking-form select, .booking-form textarea {
  box-sizing: border-box; width: 100%; min-width: 0;
}
.table-region { min-width: 0; max-width: 100%; }
.table-region table { min-width: 0; }
.table-region th, .table-region td { overflow-wrap: anywhere; }

/* em breakpoints also respond to an enlarged default browser font. */
@media (max-width: 64em) {
  .nav { flex-direction: column; align-items: flex-start; gap: 1rem; }
  .nav nav { width: 100%; gap: .75rem 1rem; }
  .cta, .coming-soon { flex-wrap: wrap; }
  .cta .button, .coming-soon .button { flex-shrink: 1; }
}
@media (max-width: 48em) {
  .hero, .routes, .offer, .event, .contact-grid, .steps, .footgrid,
  .topics, .booking-layout, .form-grid {
    grid-template-columns: minmax(0, 1fr);
  }
  .form-grid { gap: 0; }
  .session-days { grid-template-columns: minmax(0, 1fr); }
  .cta, .coming-soon { flex-direction: column; align-items: flex-start; }
  .visual-bottom { display: flex; flex-direction: column; align-items: flex-start; }
  .visual-bottom strong, .visual-bottom p { flex: initial; }
  .visual-bottom p { margin-top: 1rem; }
  .table-region table { min-width: 38rem; }
}
@media (max-width: 30em) {
  .wrap { width: calc(100% - 2rem); }
  .nav nav { flex-direction: column; align-items: stretch; gap: .65rem; }
  .site-header .nav nav a, .theme-toggle { width: 100%; min-height: 48px; }
  .nav nav .button { margin-block: 0; }
  .hero { gap: 2rem; padding-block: 2.5rem; }
  h1, .training-hero h1, .page-intro h1 {
    font-size: 2.25rem; line-height: 1.15;
  }
  h2, .accessibility-panel h2 { font-size: 1.8rem; }
  .route h3, .event-note h3 { font-size: 1.65rem; }
  .route, .topic, .event > div, .cta, .coming-soon, .price,
  .accessibility-panel, .booking-form { padding: 1.25rem; }
  .visual-top, .visual-bottom { padding: 1.25rem; }
  .visual { margin-right: 0; box-shadow: none; }
  .actions { align-items: stretch; }
  .booking-form button { width: 100%; }
  .footnote { flex-wrap: wrap; gap: 1rem; }
}

.payment-panel{margin-top:1.5rem;padding-top:1.5rem;border-top:1px solid var(--line)}
.payment-panel h3{font-size:1.4rem;margin-bottom:.8rem}
.payment-summary{display:grid;gap:.4rem;margin:0 0 1.2rem;padding:1rem 1.2rem;background:var(--color-surface);border:1px solid var(--line);border-radius:.5rem}
.payment-summary div{display:flex;flex-wrap:wrap;gap:.25rem 1rem}
.payment-summary dt{font-weight:700;min-width:9rem}
.payment-summary dd{margin:0}
.payment-thanks{margin-top:2rem;padding:1.6rem;background:var(--lavender);border:1px solid var(--line);border-left:5px solid var(--color-accent3);border-radius:.6rem}
.payment-thanks h2{font-size:1.8rem;margin-bottom:.6rem}
.payment-thanks p:last-child{margin-bottom:0}
.visually-hidden{position:absolute!important;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}

.fee-table .fee{display:block;margin-top:.25rem;font-size:1rem;color:var(--muted)}
.table-region .fee-table{min-width:48rem}
.fee-table th,.fee-table td{overflow-wrap:normal}
.fee-table td{white-space:nowrap}
.fee-table thead tr:first-child th:last-child,.fee-table td:last-child{white-space:normal;min-width:11rem}
.fee-table th,.fee-table td{border:1px solid #b7aac2;vertical-align:middle}
.fee-table thead th{text-align:center;border-color:rgba(255,255,255,.45)}
.fee-table td{text-align:center}
.fee-table tbody th{text-align:left}
[data-theme="dark"] .fee-table th,[data-theme="dark"] .fee-table td{border-color:var(--line)}
.scroll-hint{display:none;font-size:1rem;color:var(--muted);margin:0 0 .5rem}
@media (max-width:48em){.scroll-hint{display:block}}

/* Readability update (October 2026): larger text for an audience aged 50+.
   WCAG 2.2 AA sets no minimum size; these follow common good practice:
   18px body text, at least 16px for any reading text, at least 14px for short
   bold uppercase labels. All sizes stay in rem so browser zoom and text-size
   settings keep working. Delete this block to return to the previous sizes. */
body { font-size: 1.125rem; }
.lead { font-size: 1.25rem; }
.nav nav a, .site-header .nav nav a, .theme-toggle { font-size: 1rem; }
.button { font-size: 1.0625rem; }
.eyebrow, .topic-top .eyebrow, .pill, .badge, .session-label { font-size: .875rem; }
.caption, .field-help, .principles .wrap, .visual-bottom p,
.footgrid p, .footgrid a, .footnote, .session-calendar li,
.session-times span, .coming-badge { font-size: 1rem; }
.topic p, .price p:not(.amount):not(.eyebrow), .booking-form > p:first-child,
.booking-result p, .accessibility-panel li span, .field-error, table { font-size: 1.0625rem; }
.booking-form input, .booking-form select, .booking-form textarea { font-size: 1.125rem; }

/* Accessibility update: forced colours / Windows contrast themes.
   These overrides must be last, after dark-mode rules. */
@media (forced-colors: active) {
  :root, :root[data-theme="dark"] {
    --color-primary: CanvasText; --color-secondary: LinkText;
    --color-accent1: ButtonFace; --color-accent2: Highlight;
    --color-accent3: CanvasText; --color-bg: Canvas;
    --color-surface: Canvas; --color-text: CanvasText;
    --color-muted: CanvasText; --lavender: Canvas; --line: CanvasText;
    --focus-color: Highlight;
  }
  body, .site-header, .principles, footer, .cta, .coming-soon,
  .route, .topic, .topic h3, .visual, .price, .event, .event-note,
  .booking-form, .booking-result, .error-summary, .accessibility-panel,
  table, thead, caption, .coming-badge, .skip {
    background: Canvas !important; color: CanvasText !important;
    box-shadow: none !important;
  }
  a { color: LinkText !important; }
  .button, .site-header .nav nav a.button, .theme-toggle {
    color: ButtonText !important; background: ButtonFace !important;
    border: 2px solid ButtonText !important; box-shadow: none !important;
  }
  .route, .topic, .visual, .price, .event, .cta, .coming-soon,
  .booking-form, .booking-result, .error-summary, .accessibility-panel,
  .coming-badge { border: 1px solid CanvasText; }
  .booking-form input, .booking-form select, .booking-form textarea {
    background: Field !important; color: FieldText !important;
    border: 2px solid ButtonText !important;
  }
  .booking-form ::placeholder { color: GrayText !important; }
  .booking-form [aria-invalid="true"] { border: 3px solid CanvasText !important; }
  .field-error { color: CanvasText !important; }
  .button:disabled { opacity: 1; color: GrayText !important; border-color: GrayText !important; }
  .theme-track, .theme-track > span { forced-color-adjust: none; }
  .theme-track { background: Canvas; border: 2px solid ButtonText; }
  .theme-track > span { background: ButtonText; }
  .theme-toggle[aria-checked="true"] .theme-track { background: Highlight; border-color: Highlight; }
  .theme-toggle[aria-checked="true"] .theme-track > span { background: HighlightText; }
  /* The white image logo needs its original dark backing. */
  .brand { background: #370556 !important; padding: .25rem; forced-color-adjust: none; }
  a:hover, .button:hover, .theme-toggle:hover { outline: 2px solid Highlight !important; outline-offset: 3px; box-shadow: none !important; }
  :focus-visible, .error-summary:focus, .booking-result:focus {
    outline: 3px solid Highlight !important; outline-offset: 3px !important;
    box-shadow: none !important;
  }
}
