/* ===========================================================================
   GramSaarthi Control Center — stylesheet.

   Values are transcribed from lib/src/design/gs_tokens.dart so the console and
   the Flutter app are visibly the same product: the same greens, the same 4px
   space scale, the same radii (6/10/14/18), the same restrained elevation.
   Nothing here loads from a network: the font stack is the system stack and
   every asset is local.
   =========================================================================== */

:root {
  /* --- Palette (gs_tokens.dart) ----------------------------------------- */
  --gs-green-50:  #F0F7F2;
  --gs-green-100: #DCEDE2;
  --gs-green-200: #B9DBC5;
  --gs-green-500: #2F7D54;
  --gs-green-600: #1E6440;
  --gs-green-700: #164D31;
  --gs-green-800: #113C27;

  --gs-orange-50:  #FFF5EB;
  --gs-orange-700: #9C4F0B;
  --gs-amber-50:   #FEF8E7;
  --gs-amber-700:  #7D5D06;
  --gs-red-50:     #FDEEEE;
  --gs-red-100:    #FAD8D8;
  --gs-red-700:    #752017;
  --gs-blue-50:    #EDF4FC;
  --gs-blue-100:   #D6E7F8;
  --gs-blue-500:   #2C6EA8;
  --gs-blue-700:   #194167;

  --gs-neutral-0:   #FFFFFF;
  --gs-neutral-50:  #F6F8F6;
  --gs-neutral-100: #EDF1EE;
  --gs-neutral-200: #DFE5E1;
  --gs-neutral-300: #C4CDC7;
  --gs-neutral-500: #6E7C74;
  --gs-neutral-600: #4F5B54;
  --gs-neutral-900: #141A16;

  /* --- Semantic roles --------------------------------------------------- */
  --brand: #2F7D54;
  --brand-strong: #164D31;
  --brand-subtle: #F0F7F2;
  --accent: #E07A1F;
  --support: #2C6EA8;

  --background: #F6F8F6;
  --surface: #FFFFFF;
  --surface-sunken: #EDF1EE;
  --border: #DFE5E1;
  --border-strong: #C4CDC7;

  /* Secondary copy uses --gs-neutral-600 (#4F5B54, 6.6:1 on the page
     background) rather than #6E7C74, which measures 4.1:1 and would fail
     WCAG AA for normal-size text. #6E7C74 remains for large text and icons. */
  --text: #141A16;
  --text-secondary: #4F5B54;
  --text-tertiary: #6E7C74;
  --text-on-brand: #FFFFFF;

  --verified: #164D31;
  --verified-subtle: #F0F7F2;
  --warning: #7D5D06;
  --warning-subtle: #FEF8E7;
  --critical: #752017;
  --critical-subtle: #FDEEEE;
  --review: #9C4F0B;
  --review-subtle: #FFF5EB;
  --info: #194167;
  --info-subtle: #EDF4FC;
  --pending: #4F5B54;
  --pending-subtle: #EDF1EE;

  --focus-ring: #2C6EA8;

  /* --- Space (4pt scale) ------------------------------------------------ */
  --space-xxs: 2px;
  --space-xs: 4px;
  --space-sm: 8px;
  --space-md: 12px;
  --space-lg: 16px;
  --space-xl: 20px;
  --space-2xl: 24px;
  --space-3xl: 32px;
  --space-4xl: 40px;
  --space-5xl: 56px;

  /* --- Radius ----------------------------------------------------------- */
  --radius-xs: 6px;
  --radius-sm: 10px;
  --radius-md: 14px;
  --radius-lg: 18px;

  /* --- Elevation (restrained: low-end devices) -------------------------- */
  --shadow-card: 0 2px 8px rgba(20, 26, 22, 0.06);
  --shadow-raised: 0 6px 16px rgba(20, 26, 22, 0.10);

  --font-sans: system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue",
               Arial, "Noto Sans", "Liberation Sans", sans-serif;
  --font-mono: ui-monospace, "SFMono-Regular", Consolas, "Liberation Mono", monospace;

  --measure: 1100px;
}

/* --- Reset ---------------------------------------------------------------- */
*, *::before, *::after { box-sizing: border-box; }

html { -webkit-text-size-adjust: 100%; }

body {
  margin: 0;
  background: var(--background);
  color: var(--text);
  font-family: var(--font-sans);
  font-size: 16px;
  line-height: 1.5;
  font-variant-numeric: tabular-nums;
}

[hidden] { display: none !important; }

h1, h2, h3, p, ul, ol, dl, dd, figure { margin: 0; }
ul, ol { padding: 0; list-style: none; }

img, svg { max-width: 100%; }

code { font-family: var(--font-mono); font-size: 0.9em; }

a { color: var(--brand-strong); }

/* One visible focus treatment everywhere, as a 3px ring that survives on both
   white surfaces and the brand fill. */
:focus-visible {
  outline: 3px solid var(--focus-ring);
  outline-offset: 2px;
  border-radius: var(--radius-xs);
}
:focus:not(:focus-visible) { outline: none; }

.visually-hidden {
  position: absolute !important;
  width: 1px; height: 1px;
  margin: -1px; padding: 0; border: 0;
  overflow: hidden; clip: rect(0 0 0 0); clip-path: inset(50%);
  white-space: nowrap;
}

.skip-link {
  position: absolute;
  left: var(--space-sm);
  top: -4rem;
  z-index: 20;
  background: var(--surface);
  color: var(--brand-strong);
  border: 2px solid var(--brand);
  border-radius: var(--radius-sm);
  padding: var(--space-sm) var(--space-md);
  font-weight: 600;
  text-decoration: none;
  transition: top 120ms ease-out;
}
.skip-link:focus { top: var(--space-sm); }

/* --- Typography ----------------------------------------------------------- */
h1 { font-size: 1.5rem; line-height: 1.25; font-weight: 700; letter-spacing: -0.01em; }
h2 { font-size: 1.125rem; line-height: 1.3; font-weight: 650; }
h3 { font-size: 1rem; line-height: 1.35; font-weight: 650; }

.page-sub {
  margin-top: var(--space-xs);
  color: var(--text-secondary);
  max-width: 68ch;
}

/* --- Buttons -------------------------------------------------------------- */
.btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: var(--space-sm);
  min-height: 44px;
  padding: var(--space-sm) var(--space-lg);
  border-radius: var(--radius-sm);
  border: 1px solid transparent;
  font: inherit;
  font-weight: 600;
  font-size: 0.9375rem;
  cursor: pointer;
  text-decoration: none;
  transition: background-color 140ms ease-out, border-color 140ms ease-out, color 140ms ease-out;
}
.btn--primary { background: var(--brand); color: var(--text-on-brand); border-color: var(--brand); }
.btn--primary:hover { background: var(--brand-strong); border-color: var(--brand-strong); }
.btn--outline { background: var(--surface); color: var(--brand-strong); border-color: var(--border-strong); }
.btn--outline:hover { background: var(--brand-subtle); border-color: var(--brand); }
.btn--ghost { background: var(--surface-sunken); color: var(--text); border-color: var(--border); }
.btn--ghost:hover { background: var(--gs-neutral-200); }
.btn--block { width: 100%; }
.btn[disabled], .btn[aria-disabled="true"] {
  background: var(--surface-sunken);
  color: var(--text-secondary);
  border-color: var(--border);
  cursor: not-allowed;
}
.btn--link {
  min-height: 44px;
  background: none;
  border: none;
  color: var(--brand-strong);
  text-decoration: underline;
  padding: var(--space-xs) var(--space-xs);
}

/* --- Badges and chips ----------------------------------------------------- */
.badge {
  display: inline-flex;
  align-items: center;
  gap: var(--space-xs);
  padding: 2px var(--space-sm);
  border-radius: 999px;
  border: 1px solid var(--border-strong);
  background: var(--surface-sunken);
  color: var(--text-secondary);
  font-size: 0.8125rem;
  font-weight: 600;
  white-space: nowrap;
}
.badge--owner  { background: var(--brand-subtle);   color: var(--brand-strong); border-color: var(--gs-green-200); }
.badge--admin  { background: var(--info-subtle);    color: var(--info);         border-color: var(--gs-blue-100); }
.badge--editor { background: var(--review-subtle);  color: var(--review);       border-color: #F3D6B4; }
.badge--viewer { background: var(--pending-subtle); color: var(--pending);      border-color: var(--border-strong); }

.badge--status-open        { background: var(--info-subtle);     color: var(--info);     border-color: var(--gs-blue-100); }
.badge--status-in_progress { background: var(--review-subtle);   color: var(--review);   border-color: #F3D6B4; }
.badge--status-resolved    { background: var(--verified-subtle); color: var(--verified); border-color: var(--gs-green-200); }
.badge--status-closed      { background: var(--pending-subtle);  color: var(--pending);  border-color: var(--border-strong); }

.badge--active    { background: var(--verified-subtle); color: var(--verified); border-color: var(--gs-green-200); }
.badge--suspended { background: var(--critical-subtle); color: var(--critical); border-color: var(--gs-red-100); }

.badge--priority-high   { background: var(--critical-subtle); color: var(--critical); border-color: var(--gs-red-100); }
.badge--priority-normal { background: var(--surface-sunken);  color: var(--text-secondary); }
.badge--priority-low    { background: var(--surface-sunken);  color: var(--text-secondary); }

.badge--ok      { background: var(--verified-subtle); color: var(--verified); border-color: var(--gs-green-200); }
.badge--degraded { background: var(--warning-subtle); color: var(--warning);  border-color: #EFD9A0; }
.badge--unknown { background: var(--pending-subtle);  color: var(--pending);  border-color: var(--border-strong); }
.badge--pending { background: var(--warning-subtle);  color: var(--warning);  border-color: #EFD9A0; }

.spacer-sm { height: var(--space-md); }

/* --- Notices -------------------------------------------------------------- */
.notice {
  border: 1px solid var(--border);
  border-left-width: 4px;
  border-radius: var(--radius-sm);
  background: var(--surface);
  padding: var(--space-md) var(--space-lg);
  color: var(--text);
}
.notice__title { display: block; font-weight: 650; }
.notice__body { margin-top: var(--space-xxs); color: var(--text); }
.notice__meta {
  margin-top: var(--space-sm);
  font-size: 0.8125rem;
  color: var(--text-secondary);
}
.notice__actions { margin-top: var(--space-md); display: flex; flex-wrap: wrap; gap: var(--space-sm); }
.notice--verified  { border-left-color: var(--verified); background: var(--verified-subtle); }
.notice--info      { border-left-color: var(--support);  background: var(--info-subtle); }
.notice--review    { border-left-color: var(--review);   background: var(--review-subtle); }
.notice--warning   { border-left-color: var(--warning);  background: var(--warning-subtle); }
.notice--critical  { border-left-color: var(--critical); background: var(--critical-subtle); }
.notice--pending   { border-left-color: var(--pending);  background: var(--pending-subtle); }

/* --- Forms ---------------------------------------------------------------- */
.form { display: grid; gap: var(--space-lg); }
.field { display: grid; gap: var(--space-xs); }
.field__label { font-weight: 600; font-size: 0.9375rem; }
.field__help { color: var(--text-secondary); font-size: 0.8125rem; max-width: 68ch; }
.field__group { display: flex; gap: var(--space-sm); align-items: stretch; }
.field__group .field__input { flex: 1 1 auto; min-width: 0; }

.field__input,
.field__select,
.field__textarea {
  width: 100%;
  min-height: 44px;
  padding: var(--space-sm) var(--space-md);
  border: 1px solid var(--border-strong);
  border-radius: var(--radius-sm);
  background: var(--surface);
  color: var(--text);
  font: inherit;
  font-size: 0.9375rem;
}
.field__textarea { min-height: 96px; resize: vertical; }
.field__input::placeholder,
.field__textarea::placeholder { color: var(--text-secondary); opacity: 1; }
.field__input[readonly],
.field__textarea[readonly] { background: var(--surface-sunken); color: var(--text); }
.field__input[disabled],
.field__textarea[disabled],
.field__select[disabled] { background: var(--surface-sunken); color: var(--text-secondary); }

.field--check { display: grid; grid-template-columns: auto 1fr; gap: var(--space-sm); align-items: start; }
.field__checkbox { width: 20px; height: 20px; margin: 2px 0 0; accent-color: var(--brand); }
.field__check-label { font-weight: 600; font-size: 0.9375rem; }

.field__error { color: var(--critical); font-size: 0.8125rem; font-weight: 600; }
.field__input[aria-invalid="true"] { border-color: var(--critical); border-width: 2px; }

.form__actions { display: flex; flex-wrap: wrap; gap: var(--space-sm); align-items: center; }
.form__status { color: var(--text-secondary); font-size: 0.875rem; }

/* --- Verification challenge (sign-in) ------------------------------------- */
.captcha {
  display: grid;
  gap: var(--space-sm);
  padding: var(--space-md);
  border: 1px solid var(--border);
  border-radius: var(--radius-sm);
  background: var(--surface-sunken);
}
.captcha__row { display: flex; flex-wrap: wrap; gap: var(--space-md); align-items: center; }
.captcha__image {
  display: flex;
  align-items: center;
  justify-content: center;
  min-width: 200px;
  min-height: 70px;
  padding: var(--space-xs);
  background: var(--gs-green-50);
  border: 1px solid var(--border-strong);
  border-radius: var(--radius-sm);
}
.captcha__image svg { display: block; max-width: 100%; height: auto; }
.captcha__placeholder { padding: var(--space-sm); color: var(--text-secondary); font-size: 0.875rem; }
.captcha__controls { display: grid; gap: var(--space-xs); justify-items: start; }
.captcha__validity { color: var(--text-secondary); font-size: 0.8125rem; }

/* --- Android releases ------------------------------------------------------ */
.progress { width: 100%; height: 12px; accent-color: var(--brand); }
.row-actions { display: flex; flex-wrap: wrap; gap: var(--space-sm); }
.hash {
  display: block;
  font-family: var(--font-mono);
  font-size: 0.8125rem;
  word-break: break-all;
}
.mono-wrap { font-family: var(--font-mono); font-size: 0.75rem; word-break: break-all; }
.notice--compact { margin-top: var(--space-sm); padding: var(--space-sm) var(--space-md); }
.reason-list {
  display: grid;
  gap: var(--space-xs);
  margin: var(--space-sm) 0 0;
  padding-left: var(--space-xl);
  list-style: disc;
}
.download-url {
  margin-top: var(--space-sm);
  font-family: var(--font-mono);
  font-size: 0.875rem;
  word-break: break-all;
}
.link-strong { font-weight: 600; }

/* Signature state, said in colour *and* in words next to every release. The
   colour is the fast read; the sentence beside it is the honest one. */
.badge--signing-ok       { background: var(--verified-subtle); color: var(--verified); border-color: var(--gs-green-200); }
.badge--signing-warn     { background: var(--warning-subtle);  color: var(--warning);  border-color: #EFD9A0; }
.badge--signing-critical { background: var(--critical-subtle); color: var(--critical); border-color: var(--gs-red-100); }
.badge--signing-unknown  { background: var(--pending-subtle);  color: var(--pending);  border-color: var(--border-strong); }

/* --- Boot ----------------------------------------------------------------- */
.boot {
  min-height: 100vh;
  display: grid;
  place-items: center;
  padding: var(--space-2xl);
  background: var(--background);
}
.boot__inner { display: grid; justify-items: center; gap: var(--space-md); text-align: center; }
.boot__title { font-size: 1.25rem; }
.boot__message { color: var(--text-secondary); }

/* --- Sign-in -------------------------------------------------------------- */
.signin {
  min-height: 100vh;
  display: grid;
  place-items: start center;
  padding: var(--space-3xl) var(--space-lg) var(--space-4xl);
  background: var(--background);
}
.signin__panel {
  width: 100%;
  max-width: 440px;
  background: var(--surface);
  border: 1px solid var(--border);
  border-radius: var(--radius-md);
  box-shadow: var(--shadow-card);
  padding: var(--space-2xl);
  display: grid;
  gap: var(--space-lg);
}
.signin__head { display: grid; justify-items: center; text-align: center; gap: var(--space-xs); }
.signin__product {
  font-size: 0.75rem;
  font-weight: 700;
  letter-spacing: 0.10em;
  text-transform: uppercase;
  color: var(--brand-strong);
}
.signin__title { font-size: 1.5rem; }
.signin__subtitle { color: var(--text-secondary); max-width: 40ch; }
.signin__notes { display: grid; gap: var(--space-md); }
.signin__meta { font-size: 0.8125rem; color: var(--text-secondary); text-align: center; word-break: break-all; }

/* --- Console shell -------------------------------------------------------- */
.console { display: flex; flex-direction: column; min-height: 100vh; }

.topbar {
  display: flex;
  flex-wrap: wrap;
  gap: var(--space-lg);
  align-items: center;
  justify-content: space-between;
  padding: var(--space-md) var(--space-lg);
  background: var(--surface);
  border-bottom: 1px solid var(--border);
}
.topbar__brand { display: flex; align-items: center; gap: var(--space-md); }
.topbar__words { display: grid; line-height: 1.2; }
.topbar__product { font-weight: 700; }
.topbar__section { font-size: 0.8125rem; color: var(--text-secondary); }
.topbar__account { display: flex; flex-wrap: wrap; align-items: center; gap: var(--space-sm) var(--space-lg); }
.topbar__who { display: flex; flex-wrap: wrap; align-items: baseline; gap: var(--space-xs) var(--space-sm); }
.topbar__role-line { display: flex; align-items: center; gap: var(--space-sm); }
.topbar__label {
  font-size: 0.6875rem;
  font-weight: 700;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: var(--text-secondary);
}
.topbar__email { color: var(--text-secondary); font-size: 0.8125rem; word-break: break-all; }

.nav {
  background: var(--surface);
  border-bottom: 1px solid var(--border);
  padding: 0 var(--space-lg);
}
.nav__list { display: flex; flex-wrap: wrap; gap: var(--space-xs); }
.nav__link {
  display: inline-flex;
  align-items: center;
  min-height: 44px;
  padding: var(--space-sm) var(--space-md);
  border-bottom: 3px solid transparent;
  color: var(--text-secondary);
  font-weight: 600;
  font-size: 0.9375rem;
  text-decoration: none;
}
.nav__link:hover { color: var(--brand-strong); background: var(--brand-subtle); }
.nav__link[aria-current="page"] {
  color: var(--brand-strong);
  border-bottom-color: var(--brand);
  background: var(--brand-subtle);
}

.main {
  flex: 1 1 auto;
  width: 100%;
  max-width: var(--measure);
  margin: 0 auto;
  padding: var(--space-2xl) var(--space-lg) var(--space-4xl);
}
.main:focus { outline: none; }
.main:focus-visible { outline: 3px solid var(--focus-ring); outline-offset: -3px; }

.footer {
  border-top: 1px solid var(--border);
  padding: var(--space-lg);
  text-align: center;
  color: var(--text-secondary);
  font-size: 0.8125rem;
}
.footer__meta { margin-top: var(--space-xs); word-break: break-all; }

.page-head { display: grid; gap: var(--space-xs); margin-bottom: var(--space-xl); }
.page-head__actions { display: flex; flex-wrap: wrap; gap: var(--space-sm); align-items: center; margin-top: var(--space-sm); }
.page-head__stamp { color: var(--text-secondary); font-size: 0.8125rem; }

.section { margin-top: var(--space-2xl); }
.section__head { display: flex; flex-wrap: wrap; gap: var(--space-sm); align-items: baseline; justify-content: space-between; margin-bottom: var(--space-md); }
.section__note { color: var(--text-secondary); font-size: 0.875rem; }

/* --- Cards and metric grid ------------------------------------------------ */
.grid-cards {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(210px, 1fr));
  gap: var(--space-md);
}
.card {
  background: var(--surface);
  border: 1px solid var(--border);
  border-radius: var(--radius-md);
  box-shadow: var(--shadow-card);
  padding: var(--space-lg);
}
.card__label {
  font-size: 0.8125rem;
  font-weight: 650;
  letter-spacing: 0.04em;
  text-transform: uppercase;
  color: var(--text-secondary);
}
.card__value { margin-top: var(--space-xs); font-size: 1.875rem; font-weight: 700; line-height: 1.1; }
.card__note { margin-top: var(--space-sm); color: var(--text-secondary); font-size: 0.875rem; }

.panel {
  background: var(--surface);
  border: 1px solid var(--border);
  border-radius: var(--radius-md);
  box-shadow: var(--shadow-card);
  padding: var(--space-lg);
}

.fact-list { display: grid; gap: var(--space-sm); }
.fact-list__row {
  display: grid;
  grid-template-columns: minmax(140px, 220px) 1fr;
  gap: var(--space-sm) var(--space-lg);
  padding-block: var(--space-xs);
  border-bottom: 1px solid var(--border);
}
.fact-list__row:last-child { border-bottom: none; }
.fact-list__term { color: var(--text-secondary); font-weight: 600; }
.fact-list__value { word-break: break-word; }

/* --- Activity / audit list ------------------------------------------------ */
.event-list { display: grid; gap: var(--space-sm); }
.event {
  display: grid;
  gap: var(--space-xs);
  padding: var(--space-md);
  border: 1px solid var(--border);
  border-radius: var(--radius-sm);
  background: var(--surface);
}
.event__top { display: flex; flex-wrap: wrap; align-items: center; gap: var(--space-sm); }
.event__action { font-weight: 650; font-family: var(--font-mono); font-size: 0.875rem; }
.event__meta { color: var(--text-secondary); font-size: 0.875rem; display: flex; flex-wrap: wrap; gap: var(--space-xs) var(--space-md); }
.event__time { color: var(--text-secondary); font-size: 0.8125rem; }

/* --- Tables --------------------------------------------------------------- */
.table-wrap {
  background: var(--surface);
  border: 1px solid var(--border);
  border-radius: var(--radius-md);
  box-shadow: var(--shadow-card);
  overflow: hidden;
}
table.data { width: 100%; border-collapse: collapse; }
table.data caption {
  text-align: left;
  padding: var(--space-md) var(--space-lg) 0;
  color: var(--text-secondary);
  font-size: 0.8125rem;
}
table.data th, table.data td {
  text-align: left;
  padding: var(--space-md) var(--space-lg);
  border-bottom: 1px solid var(--border);
  vertical-align: top;
}
table.data thead th {
  background: var(--surface-sunken);
  font-size: 0.75rem;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  color: var(--text-secondary);
  border-bottom: 1px solid var(--border-strong);
  white-space: nowrap;
}
table.data tbody tr:last-child td { border-bottom: none; }
.cell-sub { display: block; color: var(--text-secondary); font-size: 0.8125rem; }
.cell-strong { font-weight: 600; }

.pager {
  display: flex;
  flex-wrap: wrap;
  gap: var(--space-sm) var(--space-md);
  align-items: center;
  justify-content: space-between;
  margin-top: var(--space-md);
}
.pager__status { color: var(--text-secondary); font-size: 0.875rem; }
.pager__buttons { display: flex; gap: var(--space-sm); }

/* --- Filter row ----------------------------------------------------------- */
.filters {
  display: flex;
  flex-wrap: wrap;
  gap: var(--space-md);
  align-items: end;
  margin-bottom: var(--space-lg);
}
.filters .field { min-width: 220px; }
.filters__note { color: var(--text-secondary); font-size: 0.875rem; margin-bottom: var(--space-md); }

/* --- Small screens (360px target) ----------------------------------------- */
@media (max-width: 640px) {
  .topbar { align-items: flex-start; }
  .topbar__account { width: 100%; justify-content: space-between; }
  .main { padding: var(--space-lg) var(--space-md) var(--space-3xl); }
  .signin { padding: var(--space-xl) var(--space-md) var(--space-3xl); }
  .signin__panel { padding: var(--space-lg); }
  .page-head { margin-bottom: var(--space-lg); }
  .field__group { flex-wrap: wrap; }
  .field__group .btn { width: 100%; }
  .captcha__row { flex-direction: column; align-items: stretch; }
  .captcha__image { min-width: 0; }
  .captcha__controls { justify-items: stretch; }

  /* Data tables become stacked records: each cell carries its own header, so
     nothing is hidden and no horizontal scrolling is required at 360px. */
  table.data thead { position: absolute; width: 1px; height: 1px; overflow: hidden; clip-path: inset(50%); }
  table.data, table.data tbody, table.data tr, table.data td { display: block; width: 100%; }
  table.data tr { border-bottom: 1px solid var(--border-strong); padding-block: var(--space-sm); }
  table.data tr:last-child { border-bottom: none; }
  table.data td { border-bottom: none; padding: var(--space-xs) var(--space-lg); }
  table.data td::before {
    content: attr(data-label);
    display: block;
    font-size: 0.6875rem;
    font-weight: 700;
    letter-spacing: 0.06em;
    text-transform: uppercase;
    color: var(--text-secondary);
  }
  .fact-list__row { grid-template-columns: 1fr; }
}

/* --- Reduced motion ------------------------------------------------------- */
@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after {
    animation-duration: 0.001ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: 0.001ms !important;
  }
  .skip-link { transition: none; }
}

/* --- Higher contrast / forced colours ------------------------------------- */
@media (prefers-contrast: more) {
  :root {
    --border: #4F5B54;
    --border-strong: #141A16;
    --text-secondary: #242C27;
  }
}
