/* ==========================================================================
   GRE.A.T — static rebuild
   Clean, accessible design system. No framework. Brand: black / white / lime.
   ========================================================================== */

/* ---- Design tokens ---------------------------------------------------- */
:root {
  --lime:        #cdda29;          /* brand accent — used on dark bg / as fill */
  --lime-ink:    #4d5400;          /* darkened lime for text on white (AA)     */
  --black:       #111111;
  --black-2:     #1a1a1a;
  --ink:         #1a1a1a;          /* body text on white  ~16:1               */
  --muted:       #595959;          /* muted text on white ~7:1 (AA)           */
  --bg:          #ffffff;
  --bg-alt:      #f5f5f5;
  --line:        #e0e0e0;
  --white:       #ffffff;

  --font-head: "Montserrat", "Helvetica Neue", "Segoe UI", Arial, sans-serif;
  --font-body: "Dosis", "Segoe UI", Tahoma, "Helvetica Neue", Arial, sans-serif;

  --maxw: 1140px;
  --gap: 1.5rem;
  --radius: 6px;
  --focus-ring: 0 0 0 4px rgba(0,0,0,.85);
}

/* ---- Reset / base ----------------------------------------------------- */
*, *::before, *::after { box-sizing: border-box; }
html { -webkit-text-size-adjust: 100%; scroll-behavior: smooth; }
@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
  *, *::before, *::after { animation-duration: .001ms !important; animation-iteration-count: 1 !important; transition-duration: .001ms !important; }
}
body {
  margin: 0;
  font-family: var(--font-body);
  font-size: 1.125rem;            /* Dosis runs small; bump base size */
  font-weight: 400;
  line-height: 1.6;
  color: var(--ink);
  background: var(--bg);
  -webkit-font-smoothing: antialiased;
}
img { max-width: 100%; height: auto; display: block; }
a { color: var(--lime-ink); }
a:hover { color: var(--black); }
h1, h2, h3, h4, h5 {
  font-family: var(--font-head);
  line-height: 1.15;
  color: var(--black);
  margin: 0 0 .6em;
  font-weight: 700;
}
h1 { font-size: clamp(2rem, 5vw, 3.25rem); font-weight: 800; }
h2 { font-size: clamp(1.6rem, 3.5vw, 2.4rem); }
h3 { font-size: clamp(1.2rem, 2.5vw, 1.6rem); }
p { margin: 0 0 1rem; }
ul, ol { margin: 0 0 1rem; padding-left: 1.25rem; }

/* ---- Layout helpers --------------------------------------------------- */
.container { width: 100%; max-width: var(--maxw); margin-inline: auto; padding-inline: 1.25rem; }
.section { padding-block: clamp(2.5rem, 6vw, 5rem); }
.section--alt { background: var(--bg-alt); }
.section--dark { background: var(--black); color: #f2f2f2; }
.section--dark h1, .section--dark h2, .section--dark h3, .section--dark h4 { color: #fff; }
.section--dark a { color: var(--lime); }
.section--dark a:hover { color: #fff; }
/* buttons keep their own text colour inside dark sections */
.section--dark .btn { color: var(--black); }
.section--dark .btn:hover { color: var(--black); }
.section--dark .btn--ghost,
.section--dark .btn--dark { color: #fff; }
.section--dark .btn--ghost:hover { color: var(--black); }
.section__head { text-align: center; max-width: 720px; margin: 0 auto clamp(1.5rem,4vw,2.75rem); }
.section__head p { color: var(--muted); }
.section--dark .section__head p { color: #cfcfcf; }
.eyebrow {
  display: inline-block; font-family: var(--font-head); font-weight: 700;
  letter-spacing: .15em; text-transform: uppercase; font-size: .8rem;
  color: var(--lime-ink); margin-bottom: .5rem;
}
.section--dark .eyebrow { color: var(--lime); }
.accent-bar { width: 64px; height: 5px; background: var(--lime); border: 0; margin: 1rem auto 0; }

/* ---- Skip link -------------------------------------------------------- */
.skip-link {
  position: absolute; left: 1rem; top: -100px;
  background: var(--black); color: #fff; padding: .75rem 1.25rem;
  border-radius: var(--radius); z-index: 1000; font-family: var(--font-head);
  font-weight: 700; text-decoration: none; transition: top .15s ease;
}
.skip-link:focus { top: 1rem; color: #fff; }

/* ---- Visible focus everywhere ----------------------------------------- */
:focus-visible {
  outline: 3px solid var(--lime);
  outline-offset: 2px;
  box-shadow: var(--focus-ring);
  border-radius: 3px;
}
/* keep focus visible on dark surfaces too (lime ring carries it) */

/* ---- Buttons ---------------------------------------------------------- */
.btn {
  display: inline-block; font-family: var(--font-head); font-weight: 700;
  text-transform: uppercase; letter-spacing: .05em; font-size: .95rem;
  padding: .9rem 1.9rem; border-radius: 40px; border: 2px solid var(--lime);
  background: var(--lime); color: var(--black); text-decoration: none;
  cursor: pointer; transition: background .15s ease, color .15s ease, transform .15s ease;
}
.btn:hover { background: #b9c613; color: var(--black); }
.btn:active { transform: translateY(1px); }
.btn--ghost { background: transparent; color: #fff; border-color: #fff; }
.btn--ghost:hover { background: #fff; color: var(--black); }
.btn--dark { background: var(--black); border-color: var(--black); color: #fff; }
.btn--dark:hover { background: #000; color: var(--lime); }

/* ==========================================================================
   Header / navigation
   ========================================================================== */
.site-header {
  position: sticky; top: 0; z-index: 100;
  background: var(--black);
  border-bottom: 3px solid var(--lime);
}
.site-header__inner {
  display: flex; align-items: center; justify-content: space-between;
  gap: 1rem; min-height: 76px;
}
.site-logo { display: inline-flex; align-items: center; }
.site-logo img { height: 52px; width: auto; }
.primary-nav__list {
  list-style: none; margin: 0; padding: 0; display: flex; gap: .25rem; align-items: center;
}
.primary-nav a {
  display: block; font-family: var(--font-head); font-weight: 700;
  text-transform: uppercase; letter-spacing: .04em; font-size: .9rem;
  color: #fff; text-decoration: none; padding: .75rem 1rem; border-radius: var(--radius);
}
.primary-nav a:hover { color: var(--lime); }
.primary-nav a[aria-current="page"] { color: var(--black); background: var(--lime); }

.nav-toggle {
  display: none; align-items: center; gap: .5rem;
  background: transparent; border: 2px solid #fff; color: #fff;
  font-family: var(--font-head); font-weight: 700; text-transform: uppercase;
  font-size: .85rem; padding: .55rem .9rem; border-radius: var(--radius); cursor: pointer;
}
.nav-toggle .bars { display: inline-block; width: 20px; height: 2px; background: #fff; position: relative; }
.nav-toggle .bars::before, .nav-toggle .bars::after { content: ""; position: absolute; left: 0; width: 20px; height: 2px; background: #fff; }
.nav-toggle .bars::before { top: -6px; } .nav-toggle .bars::after { top: 6px; }

@media (max-width: 880px) {
  .nav-toggle { display: inline-flex; }
  .primary-nav {
    position: absolute; left: 0; right: 0; top: 100%;
    background: var(--black-2); border-bottom: 3px solid var(--lime);
    display: none;
  }
  .primary-nav.is-open { display: block; }
  .primary-nav__list { flex-direction: column; align-items: stretch; gap: 0; padding: .5rem 1.25rem 1rem; }
  .primary-nav a { padding: .9rem .5rem; border-bottom: 1px solid #2a2a2a; }
  .primary-nav a[aria-current="page"] { background: transparent; color: var(--lime); }
}

/* ==========================================================================
   Hero
   ========================================================================== */
.hero {
  position: relative; color: #fff; text-align: center;
  background: linear-gradient(rgba(0,0,0,.62), rgba(0,0,0,.72)), #000 center/cover no-repeat;
  padding-block: clamp(4rem, 14vw, 9rem);
}
.hero--photo { background-image: linear-gradient(rgba(0,0,0,.55), rgba(0,0,0,.75)), url("../img/1.jpg"); }
.hero h1 { color: #fff; text-transform: uppercase; letter-spacing: .02em; margin-bottom: .3em; }
.hero__sub {
  font-family: var(--font-head); font-weight: 700; text-transform: uppercase;
  letter-spacing: .25em; color: var(--lime); font-size: clamp(.9rem, 2.5vw, 1.25rem);
  margin: 0 0 1.75rem;
}
.hero__cta { display: flex; gap: 1rem; justify-content: center; flex-wrap: wrap; }

/* page banner (interior pages) */
.page-banner { background: var(--black); color: #fff; text-align: center; padding-block: clamp(2.5rem,8vw,4.5rem); border-bottom: 3px solid var(--lime); }
.page-banner h1 { color: #fff; }
.page-banner .eyebrow { color: var(--lime); }   /* bright lime on the dark banner (AA) */
.page-banner p { color: #cfcfcf; max-width: 640px; margin: 0 auto; }

/* ==========================================================================
   Feature / value-prop cards
   ========================================================================== */
.grid { display: grid; gap: var(--gap); }
.grid--3 { grid-template-columns: repeat(3, 1fr); }
.grid--4 { grid-template-columns: repeat(4, 1fr); }
.grid--2 { grid-template-columns: repeat(2, 1fr); }
@media (max-width: 860px) { .grid--3, .grid--4 { grid-template-columns: repeat(2, 1fr); } }
@media (max-width: 560px) { .grid--2, .grid--3, .grid--4 { grid-template-columns: 1fr; } }

.feature {
  text-align: center; padding: 2rem 1.25rem; background: var(--bg);
  border: 1px solid var(--line); border-radius: var(--radius);
}
.feature__icon { width: 84px; height: 84px; object-fit: contain; margin: 0 auto 1rem; }
.feature h3 { margin-bottom: 0; }

/* gym gallery */
.gallery { display: grid; grid-template-columns: repeat(4, 1fr); gap: .75rem; }
@media (max-width: 760px) { .gallery { grid-template-columns: repeat(2, 1fr); } }
.gallery img { width: 100%; aspect-ratio: 1 / 1; object-fit: cover; border-radius: var(--radius); }

/* sponsors */
.sponsors { display: grid; grid-template-columns: repeat(5, 1fr); gap: 1.25rem; align-items: center; }
@media (max-width: 860px) { .sponsors { grid-template-columns: repeat(3, 1fr); } }
@media (max-width: 480px) { .sponsors { grid-template-columns: repeat(2, 1fr); } }
.sponsor {
  display: flex; flex-direction: column; align-items: center; gap: .5rem;
  padding: 1.25rem; background: #fff; border: 1px solid var(--line); border-radius: var(--radius);
  text-align: center;
}
.sponsor img { max-height: 70px; width: auto; object-fit: contain; }
.sponsor .sponsor__name { font-family: var(--font-head); font-weight: 700; font-size: .95rem; }
.sponsor a { font-size: .85rem; }

/* schedule CTA */
.cta-band { text-align: center; }
.cta-band .btn { margin-top: 1rem; }

/* ==========================================================================
   Synergies (member benefits)
   ========================================================================== */
.synergy-grid { display: grid; grid-template-columns: repeat(2, 1fr); gap: var(--gap); }
@media (max-width: 720px) { .synergy-grid { grid-template-columns: 1fr; } }
.synergy-card {
  display: flex; flex-direction: column; background: #fff;
  border: 1px solid var(--line); border-radius: var(--radius); overflow: hidden;
}
.synergy-card img { width: 100%; aspect-ratio: 16 / 9; object-fit: cover; }
.synergy-card__body { padding: 1.5rem; flex: 1; display: flex; flex-direction: column; }
.synergy-card h3 { margin-bottom: .5rem; }
.synergy-card p { color: var(--muted); flex: 1; }
.synergy-card .btn { align-self: flex-start; margin-top: 1rem; }

/* article (synergy detail) */
.article { max-width: 760px; margin-inline: auto; }
.article__banner { width: 100%; aspect-ratio: 2 / 1; object-fit: cover; border-radius: var(--radius); margin-bottom: 2rem; }
.article p { color: #333; }
.article h2 { margin-top: 2rem; }
.profile { display: grid; grid-template-columns: 200px 1fr; gap: 1.5rem; align-items: start; margin: 1.5rem 0; padding-top: 1.5rem; border-top: 1px solid var(--line); }
@media (max-width: 560px) { .profile { grid-template-columns: 1fr; } }
.profile img { border-radius: var(--radius); }
.contact-line { font-family: var(--font-head); font-weight: 600; }

/* breadcrumb */
.breadcrumb { font-size: .9rem; padding-block: 1rem; }
.breadcrumb ol { list-style: none; display: flex; flex-wrap: wrap; gap: .4rem; padding: 0; margin: 0; }
.breadcrumb li::after { content: "›"; margin-left: .4rem; color: var(--muted); }
.breadcrumb li:last-child::after { content: ""; }
.breadcrumb [aria-current="page"] { color: var(--muted); }

/* ==========================================================================
   Contact page
   ========================================================================== */
.contact-grid { display: grid; grid-template-columns: 1fr 1fr; gap: clamp(1.5rem, 4vw, 3rem); align-items: start; }
@media (max-width: 820px) { .contact-grid { grid-template-columns: 1fr; } }
.info-card { background: var(--bg-alt); border-radius: var(--radius); padding: 1.75rem; }
.info-card h2 { font-size: 1.35rem; }
.info-list { list-style: none; padding: 0; margin: 0; }
.info-list li { display: flex; gap: .6rem; padding: .35rem 0; }
.info-list .lbl { font-family: var(--font-head); font-weight: 700; min-width: 5.5rem; color: var(--black); }
.hours { margin-top: 1.5rem; }
.hours dt { font-family: var(--font-head); font-weight: 700; }
.hours dd { margin: 0 0 .5rem; color: var(--muted); }

/* ---- Forms ------------------------------------------------------------ */
.form-field { margin-bottom: 1.25rem; }
.form-field label { display: block; font-family: var(--font-head); font-weight: 700; margin-bottom: .4rem; }
.req { color: #b3261e; }
.form-field input, .form-field textarea {
  width: 100%; font-family: var(--font-body); font-size: 1.05rem; color: var(--ink);
  padding: .8rem .9rem; border: 2px solid #767676; border-radius: var(--radius); background: #fff;
}
.form-field input:hover, .form-field textarea:hover { border-color: #555; }
.form-field input:focus-visible, .form-field textarea:focus-visible { border-color: var(--black); }
.form-field textarea { min-height: 160px; resize: vertical; }
.field-hint { font-size: .9rem; color: var(--muted); margin: .25rem 0 0; }
.field-error { display: none; color: #b3261e; font-weight: 600; font-size: .95rem; margin: .35rem 0 0; }
.form-field.has-error input, .form-field.has-error textarea { border-color: #b3261e; }
.form-field.has-error .field-error { display: block; }
.form-status { margin-top: 1rem; padding: 1rem 1.2rem; border-radius: var(--radius); font-weight: 600; }
.form-status[data-state="success"] { background: #e7f6e9; color: #14532d; border: 1px solid #9bd5a6; }
.form-status[data-state="error"]   { background: #fde8e7; color: #7a1f1a; border: 1px solid #f0a8a3; }

/* ==========================================================================
   Footer
   ========================================================================== */
.site-footer { background: var(--black); color: #cfcfcf; padding-block: clamp(2.5rem,6vw,4rem) 1.5rem; }
.site-footer h2 { color: #fff; font-size: 1.25rem; }
.footer-grid { display: grid; grid-template-columns: 1.2fr 1fr 1fr; gap: 2rem; }
@media (max-width: 760px) { .footer-grid { grid-template-columns: 1fr; gap: 1.5rem; } }
.site-footer a { color: var(--lime); }
.site-footer a:hover { color: #fff; }
.footer-logo img { height: 70px; width: auto; margin-bottom: 1rem; }
.social-list { list-style: none; padding: 0; margin: 0; display: flex; gap: .75rem; }
.social-list a {
  display: inline-flex; align-items: center; justify-content: center; width: 44px; height: 44px;
  border: 2px solid var(--lime); border-radius: 50%; color: var(--lime); font-family: var(--font-head); font-weight: 700;
  text-decoration: none;
}
.social-list a:hover { background: var(--lime); color: var(--black); }
.footer-bottom { border-top: 1px solid #2a2a2a; margin-top: 2.5rem; padding-top: 1.25rem; font-size: .9rem; color: #9a9a9a; text-align: center; }

/* utilities */
.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;
}
.text-center { text-align: center; }
.mt-2 { margin-top: 1.5rem; }
.lead { font-size: 1.2rem; }

/* ==========================================================================
   Language switcher (header)
   ========================================================================== */
.lang-switch { display: flex; align-items: center; gap: .15rem; }
.lang-switch a {
  font-family: var(--font-head); font-weight: 700; font-size: .82rem; letter-spacing: .04em;
  color: #fff; text-decoration: none; padding: .4rem .55rem; border-radius: var(--radius);
}
.lang-switch a:hover { color: var(--lime); }
.lang-switch a[aria-current="true"] { color: var(--black); background: var(--lime); }
.lang-switch a[aria-current="true"]:hover { color: var(--black); }
.lang-switch .sep { color: #777; font-weight: 700; }
.header-actions { display: flex; align-items: center; gap: .5rem; }

/* ==========================================================================
   ESPA funding banner — fixed to the bottom of the viewport, links to poster
   ========================================================================== */
:root { --espa-h: 66px; }
body { padding-bottom: var(--espa-h); }
.espa-banner {
  position: fixed; left: 0; right: 0; bottom: 0; z-index: 200;
  display: flex; align-items: center; justify-content: center; flex-wrap: wrap;
  gap: clamp(.6rem, 3vw, 2.5rem);
  min-height: var(--espa-h); padding: .45rem 1rem;
  background: #fff; border-top: 1px solid #d5d5d5; box-shadow: 0 -2px 14px rgba(0,0,0,.14);
  text-decoration: none; font-family: var(--font-head);
}
.espa-banner:hover { background: #fafafa; }
.espa-banner:focus-visible { outline-offset: -3px; }
.espa-banner img { height: 42px; width: auto; display: block; }
.espa-group { display: flex; align-items: center; gap: .55rem; }
.espa-cofund {
  color: #1a3aa0; font-weight: 700; line-height: 1.15;
  font-size: clamp(.66rem, 1.5vw, .9rem); max-width: 22ch;
}
.espa-prog { color: #0d2d6c; line-height: 1.05; text-align: left; }
.espa-prog .kicker { display: block; font-size: .58em; letter-spacing: .1em; font-weight: 700; }
.espa-prog .ttl { font-weight: 800; font-size: clamp(.8rem, 1.7vw, 1.1rem); letter-spacing: .01em; }
.espa-prog .yr { color: #3f6f1e; font-weight: 800; }  /* darkened for AA contrast on white */
@media (max-width: 720px) {
  :root { --espa-h: 58px; }
  .espa-banner { gap: .5rem 1.1rem; padding: .4rem .6rem; }
  .espa-banner img { height: 32px; }
  .espa-cofund { font-size: .6rem; max-width: 17ch; }
  .espa-prog .ttl { font-size: .74rem; }
}
@media (max-width: 430px) {
  /* keep ALL official elements (EU emblem + co-funding statement are mandatory);
     allow the bar to wrap to two rows and reserve space for it */
  :root { --espa-h: 90px; }
  .espa-banner { gap: .35rem .9rem; }
  .espa-banner img { height: 30px; }
  .espa-cofund { font-size: .56rem; max-width: 20ch; }
  .espa-prog .ttl { font-size: .72rem; }
}

/* ==========================================================================
   Accessibility widget (toolbar for assistive options)
   ========================================================================== */
.a11y-fab {
  position: fixed; left: 14px; bottom: calc(var(--espa-h) + 14px); z-index: 300;
  width: 52px; height: 52px; border-radius: 50%;
  background: #143a7b; color: #fff; border: 3px solid #fff;
  box-shadow: 0 3px 14px rgba(0,0,0,.35); cursor: pointer;
  display: flex; align-items: center; justify-content: center; padding: 0;
}
.a11y-fab:hover { background: #0f2c5e; }
.a11y-fab svg { width: 28px; height: 28px; display: block; }
.a11y-panel {
  position: fixed; left: 14px; bottom: calc(var(--espa-h) + 78px); z-index: 301;
  width: min(320px, calc(100vw - 28px)); max-height: min(70vh, 560px); overflow-y: auto;
  background: #fff; color: var(--ink); border: 2px solid #143a7b; border-radius: 10px;
  box-shadow: 0 10px 40px rgba(0,0,0,.3); padding: 1rem 1.1rem 1.25rem;
}
.a11y-panel[hidden] { display: none; }
.a11y-panel__head { display: flex; align-items: center; justify-content: space-between; gap: .5rem; margin-bottom: .75rem; }
.a11y-panel__head h2 { font-size: 1.1rem; margin: 0; color: #143a7b; }
.a11y-close {
  background: transparent; border: 2px solid #767676; border-radius: 6px; cursor: pointer;
  width: 34px; height: 34px; font-size: 1.1rem; line-height: 1; color: var(--ink); flex: none;
}
.a11y-close:hover { border-color: #143a7b; color: #143a7b; }
.a11y-row { margin: .6rem 0; }
.a11y-row__label { font-family: var(--font-head); font-weight: 700; font-size: .85rem; display: block; margin-bottom: .35rem; }
.a11y-fontsize { display: flex; gap: .4rem; align-items: stretch; }
.a11y-fontsize button {
  flex: 1; font-family: var(--font-head); font-weight: 700; cursor: pointer;
  background: #f0f0f0; border: 2px solid #767676; border-radius: 6px; color: var(--ink); padding: .5rem;
}
.a11y-fontsize button:hover { border-color: #143a7b; }
.a11y-toggle {
  display: flex; align-items: center; justify-content: space-between; gap: .75rem; width: 100%;
  font-family: var(--font-head); font-weight: 700; font-size: .9rem; text-align: left; cursor: pointer;
  background: #f0f0f0; border: 2px solid #767676; border-radius: 6px; color: var(--ink); padding: .6rem .75rem;
}
.a11y-toggle:hover { border-color: #143a7b; }
.a11y-toggle .state { font-size: .78rem; font-weight: 700; color: #595959; }
.a11y-toggle[aria-pressed="true"] { background: #143a7b; color: #fff; border-color: #143a7b; }
.a11y-toggle[aria-pressed="true"] .state { color: #fff; }
.a11y-reset {
  margin-top: .9rem; width: 100%; font-family: var(--font-head); font-weight: 700; cursor: pointer;
  background: #fff; border: 2px solid #143a7b; color: #143a7b; border-radius: 6px; padding: .6rem;
}
.a11y-reset:hover { background: #143a7b; color: #fff; }

/* ==========================================================================
   Accessibility MODES (toggled by the widget on <html>)
   ========================================================================== */
/* Highlight links */
html.a11y-links a { text-decoration: underline !important; text-underline-offset: 3px; }
html.a11y-links main a, html.a11y-links .site-footer a {
  outline: 1px dotted currentColor; outline-offset: 2px;
}
/* Readable font */
html.a11y-readable, html.a11y-readable body,
html.a11y-readable h1, html.a11y-readable h2, html.a11y-readable h3,
html.a11y-readable h4, html.a11y-readable h5, html.a11y-readable .btn,
html.a11y-readable input, html.a11y-readable textarea, html.a11y-readable button {
  font-family: Verdana, Tahoma, "Segoe UI", Arial, sans-serif !important;
  letter-spacing: normal !important;
}
/* Text spacing (WCAG 1.4.12 friendly) */
html.a11y-spacing p, html.a11y-spacing li, html.a11y-spacing dd, html.a11y-spacing address {
  line-height: 1.9 !important; letter-spacing: .07em !important; word-spacing: .16em !important;
}
/* Pause animations / motion */
html.a11y-nomotion *, html.a11y-nomotion *::before, html.a11y-nomotion *::after {
  animation: none !important; transition: none !important; scroll-behavior: auto !important;
}
/* Bigger cursor */
html.a11y-cursor, html.a11y-cursor * {
  cursor: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='48' height='48' viewBox='0 0 24 24'%3E%3Cpath d='M5 2l14 7-6 1.5L16 18l-3 1.3-3-7.3L5 16z' fill='%23000' stroke='%23fff' stroke-width='1.2'/%3E%3C/svg%3E") 4 2, auto !important;
}
/* High contrast */
html.a11y-contrast, html.a11y-contrast body { background: #000 !important; color: #fff !important; }
html.a11y-contrast h1, html.a11y-contrast h2, html.a11y-contrast h3,
html.a11y-contrast h4, html.a11y-contrast h5, html.a11y-contrast p,
html.a11y-contrast li, html.a11y-contrast dt, html.a11y-contrast dd,
html.a11y-contrast address, html.a11y-contrast .sponsor__name,
html.a11y-contrast .info-list .lbl, html.a11y-contrast label,
html.a11y-contrast .field-hint, html.a11y-contrast .eyebrow,
html.a11y-contrast .hero__sub { color: #fff !important; }
html.a11y-contrast .site-header, html.a11y-contrast .site-footer,
html.a11y-contrast .section, html.a11y-contrast .section--alt,
html.a11y-contrast .section--dark, html.a11y-contrast .page-banner,
html.a11y-contrast .hero, html.a11y-contrast .feature,
html.a11y-contrast .info-card, html.a11y-contrast .sponsor {
  background: #000 !important; border-color: #fff !important;
}
html.a11y-contrast .hero { background-image: none !important; }
html.a11y-contrast a { color: #ffff00 !important; }
html.a11y-contrast .primary-nav a[aria-current="page"],
html.a11y-contrast .lang-switch a[aria-current="true"] { background: #ffff00 !important; color: #000 !important; }
html.a11y-contrast .btn { background: #ffff00 !important; color: #000 !important; border-color: #ffff00 !important; }
html.a11y-contrast .btn--ghost { background: #000 !important; color: #ffff00 !important; border-color: #ffff00 !important; }
html.a11y-contrast .accent-bar, html.a11y-contrast .site-header { border-color: #ffff00 !important; }
/* keep the official ESPA banner on its white card so the emblems stay legible */
html.a11y-contrast .espa-banner { background: #fff !important; border-top: 2px solid #ffff00 !important; }
html.a11y-contrast .cookie-banner { background: #000 !important; border-top-color: #ffff00 !important; }
html.a11y-contrast .legal p, html.a11y-contrast .legal li,
html.a11y-contrast .legal th, html.a11y-contrast .legal td { color: #fff !important; }
html.a11y-contrast .legal th { background: #000 !important; }

/* ==========================================================================
   Cookie consent banner
   ========================================================================== */
.cookie-banner {
  position: fixed; left: 0; right: 0; bottom: var(--espa-h); z-index: 400;
  background: #141414; color: #f3f3f3; border-top: 3px solid var(--lime);
  box-shadow: 0 -6px 26px rgba(0,0,0,.45); padding: 1rem 1.1rem;
}
.cookie-banner[hidden] { display: none; }
body.cookie-active .a11y-fab { display: none; }   /* avoid overlap with the banner */
.cookie-banner__inner {
  max-width: var(--maxw); margin-inline: auto;
  display: flex; flex-wrap: wrap; gap: .85rem 1.5rem; align-items: center; justify-content: space-between;
}
.cookie-banner__text { flex: 1 1 360px; }
.cookie-banner h2 { color: #fff; font-size: 1.05rem; margin: 0 0 .3rem; }
.cookie-banner p { margin: 0; font-size: .92rem; line-height: 1.5; }
.cookie-banner a { color: var(--lime); }
.cookie-actions { display: flex; gap: .6rem; flex-wrap: wrap; }
.cookie-actions .btn { padding: .65rem 1.4rem; font-size: .85rem; }
.btn--light { background: #fff; color: #111; border-color: #fff; }
.btn--light:hover { background: #e3e3e3; color: #111; }
@media (max-width: 600px) {
  .cookie-actions { width: 100%; }
  .cookie-actions .btn { flex: 1 1 auto; text-align: center; }
}

/* ==========================================================================
   Footer legal links
   ========================================================================== */
.footer-legal { display: flex; flex-wrap: wrap; gap: .3rem 1.1rem; justify-content: center; margin-bottom: .65rem; }
.footer-legal a, .footer-legal .linklike { color: #d6d6d6; font-size: .9rem; text-decoration: underline; }
.footer-legal a:hover, .footer-legal .linklike:hover { color: var(--lime); }
.linklike {
  font-family: var(--font-body); background: none; border: 0; padding: 0; cursor: pointer;
}

/* ==========================================================================
   Legal / prose pages (Privacy, Terms)
   ========================================================================== */
.legal { max-width: 820px; margin-inline: auto; }
.legal h2 { margin-top: 2rem; }
.legal h3 { margin-top: 1.25rem; font-size: 1.1rem; }
.legal p, .legal li { color: #333; }
.legal .updated { color: var(--muted); font-style: italic; }
.legal address { font-style: normal; }
.legal table { width: 100%; border-collapse: collapse; margin: 1rem 0; font-size: .95rem; }
.legal th, .legal td { border: 1px solid var(--line); padding: .55rem .65rem; text-align: left; vertical-align: top; }
.legal th { background: var(--bg-alt); font-family: var(--font-head); }
