/*
 * showcase.css — page chrome for the inert4-ui component showcase.
 *
 * This stylesheet styles the SHOWCASE PAGE only (nav, settings panel,
 * specimen table, section rhythm, typography). It deliberately does NOT
 * style the inert4-ui components themselves — those are painted by beercss
 * plus the theme tokens that <ThemeProvider> writes to :root and <body>.
 * The whole point of the demo is to show the real components reacting to
 * the live theme, so the page chrome leans on the same MD3 variables
 * (--surface, --primary, --on-surface, …) wherever it can, and only adds
 * its own editorial layer (display type, the plate grid, the rail).
 *
 * Aesthetic: a type-foundry / design-system specimen book. Warm Material
 * You palette (terracotta + peach), Fraunces for display headings, Hanken
 * Grotesk for running text, Spline Sans Mono for the catalog indices and
 * prop chips. Strong left rail, generous plates, hairline rules.
 */

:root {
  /* Typography is beercss-native: the whole page draws its typeface from
     beercss's --font (which the theme studio's Typeface control drives), so
     chrome and components always share one font. These aliases keep the
     role names (display / sans / mono) but all resolve to --font now —
     no bespoke editorial faces, nothing custom to maintain. */
  --ui-display: var(--font);
  --ui-sans: var(--font);
  --ui-mono: var(--font);

  /* Page-chrome rhythm. */
  --ui-rail-w: 76px;
  --ui-maxw: 1240px;
  --ui-gutter: clamp(16px, 4vw, 56px);

  --ui-shadow-soft:
    0 1px 2px rgba(0, 0, 0, 0.06), 0 8px 24px -12px rgba(0, 0, 0, 0.18);

  /* NOTE: the palette-derived tokens (--ui-hairline*, --ui-plate-bg,
     --ui-shadow-panel) are deliberately NOT declared here. beercss sets
     --surface / --on-surface / --primary on <body> (via the `light`/`dark`
     class plus the inline palette ThemeProvider writes), so a token that
     substitutes var(--surface) must be declared where <body>'s value is in
     scope. Declaring it on :root (= <html>, the PARENT of <body>) resolves
     var(--surface) against beercss's light defaults, and that frozen light
     value is then inherited unchanged into dark mode — the cause of the
     near-white plates bug. These tokens live on the `body` rule below. */
}

/* ------------------------------------------------------------------ *
 * Reset / page base
 * ------------------------------------------------------------------ */

* {
  box-sizing: border-box;
}

html {
  scroll-behavior: smooth;
}

body {
  margin: 0;

  /* Palette-derived chrome tokens. Declared HERE (on <body>) — not on
     :root — so each var(--surface)/var(--on-surface)/var(--primary)
     substitution sees the mode-correct value beercss writes on <body>.
     This is what makes the plates, hairlines and panel shadow flip with
     light/dark instead of freezing at the light defaults. */
  --ui-hairline: color-mix(
    in oklab,
    var(--on-surface, #1c1b1f) 12%,
    transparent
  );
  --ui-hairline-strong: color-mix(
    in oklab,
    var(--on-surface, #1c1b1f) 22%,
    transparent
  );
  --ui-plate-bg: color-mix(
    in oklab,
    var(--surface, #fff) 92%,
    var(--primary, #7b3a3a) 4%
  );
  --ui-shadow-panel:
    0 0 0 1px var(--ui-hairline), 24px 0 60px -28px rgba(0, 0, 0, 0.45);

  /* Run the page in the theme's own surface + text colours so the chrome
     and the components share one palette and dark-mode flips everything. */
  background: var(--surface, #fefbf8);
  color: var(--on-surface, #211a17);
  font-family: var(--ui-sans);
  font-size: 16px;
  line-height: 1.55;
  -webkit-font-smoothing: antialiased;
  text-rendering: optimizeLegibility;
  overflow-x: hidden;
}

/* A faint warm paper grain + corner glow so the page never reads as a
   flat white slab. Sits behind everything, ignores pointer events. */
body::before {
  content: '';
  position: fixed;
  inset: 0;
  z-index: -1;
  pointer-events: none;
  background:
    radial-gradient(
      120% 80% at 100% 0%,
      color-mix(in oklab, var(--primary, #7b3a3a) 14%, transparent),
      transparent 60%
    ),
    radial-gradient(
      90% 70% at 0% 100%,
      color-mix(in oklab, var(--secondary, #d9a47e) 12%, transparent),
      transparent 55%
    );
  opacity: 0.7;
  transition: background 0.4s ease;
}

a {
  color: inherit;
}

h1,
h2,
h3 {
  font-family: var(--ui-display);
  font-weight: 540;
  letter-spacing: -0.01em;
  margin: 0;
}

/* ------------------------------------------------------------------ *
 * Top navigation
 * ------------------------------------------------------------------ */

/* App bar = beercss <header> + <nav>. beercss paints the bar itself (4rem
   height, padding, grid layout, the surface-container colour we add as a
   class); the only thing we add is stickiness + a hairline. */
.sc-appbar {
  position: sticky;
  top: 0;
  z-index: 40;
  border-bottom: 1px solid var(--ui-hairline);
}

.sc-brand {
  display: flex;
  align-items: baseline;
  gap: 10px;
  min-width: 0;
}

.sc-brand__mark {
  font-family: var(--ui-display);
  font-weight: 600;
  font-size: clamp(18px, 2.4vw, 23px);
  letter-spacing: -0.02em;
  white-space: nowrap;
}

.sc-brand__mark em {
  font-style: italic;
  color: var(--primary, #7b3a3a);
}

.sc-brand__tag {
  font-family: var(--ui-mono);
  font-size: 11px;
  letter-spacing: 0.04em;
  text-transform: uppercase;
  color: color-mix(in oklab, var(--on-surface, #1c1b1f) 58%, transparent);
  white-space: nowrap;
}

/* The DarkModeToggle ships two stacked glyphs and relies on the host to
   hide whichever one isn't relevant for the active mode (the ui-lib
   trick). Wire that visibility to body.light / body.dark here. */
.dark-light-mode-toggle {
  display: inline-flex;
  align-items: center;
}
body.light .dark-light-mode-toggle .light-mode-btn,
body.dark .dark-light-mode-toggle .dark-mode-btn {
  display: none;
}

/* ------------------------------------------------------------------ *
 * Hero / masthead
 * ------------------------------------------------------------------ */

/* Width is owned by the beercss `responsive` / `max` class on <main>
   (toggled by the Page-width control); we keep only the horizontal gutter. */
.sc-shell {
  padding: 0 var(--ui-gutter);
}

.sc-hero {
  padding: clamp(40px, 8vw, 96px) 0 clamp(28px, 5vw, 52px);
  border-bottom: 1px solid var(--ui-hairline);
  position: relative;
}

.sc-hero__eyebrow {
  font-family: var(--ui-mono);
  font-size: 12px;
  letter-spacing: 0.22em;
  text-transform: uppercase;
  color: var(--primary, #7b3a3a);
  margin: 0 0 18px;
  display: flex;
  align-items: center;
  gap: 12px;
}

.sc-hero__eyebrow::before {
  content: '';
  width: 34px;
  height: 1px;
  background: currentColor;
  display: inline-block;
}

.sc-hero__title {
  font-size: clamp(40px, 9vw, 92px);
  line-height: 0.96;
  letter-spacing: -0.03em;
  max-width: 14ch;
}

.sc-hero__title em {
  font-style: italic;
  font-weight: 460;
  color: var(--primary, #7b3a3a);
}

.sc-hero__lede {
  margin: 26px 0 0;
  max-width: 58ch;
  font-size: clamp(16px, 2.1vw, 19px);
  color: color-mix(in oklab, var(--on-surface, #1c1b1f) 78%, transparent);
}

.sc-hero__meta {
  display: flex;
  flex-wrap: wrap;
  gap: 8px 10px;
  margin-top: 30px;
}

.sc-chip {
  font-family: var(--ui-mono);
  font-size: 11.5px;
  letter-spacing: 0.02em;
  padding: 5px 11px;
  border: 1px solid var(--ui-hairline-strong);
  border-radius: 999px;
  color: color-mix(in oklab, var(--on-surface, #1c1b1f) 72%, transparent);
  white-space: nowrap;
}

.sc-chip strong {
  color: var(--primary, #7b3a3a);
  font-weight: 600;
}

/* ------------------------------------------------------------------ *
 * Section headers
 * ------------------------------------------------------------------ */

.sc-section {
  padding: clamp(32px, 6vw, 64px) 0 0;
}

.sc-section__head {
  display: flex;
  align-items: flex-end;
  justify-content: space-between;
  gap: 24px;
  padding-bottom: 18px;
  border-bottom: 2px solid var(--on-surface, #1c1b1f);
  margin-bottom: 0;
}

.sc-section__title {
  font-size: clamp(24px, 4vw, 38px);
  letter-spacing: -0.02em;
}

.sc-section__count {
  font-family: var(--ui-mono);
  font-size: 12px;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: color-mix(in oklab, var(--on-surface, #1c1b1f) 55%, transparent);
  white-space: nowrap;
  padding-bottom: 4px;
}

/* ------------------------------------------------------------------ *
 * Specimen table — the two-column catalog
 * ------------------------------------------------------------------ */

.sc-specimens {
  /* The list is a stack of "plate" rows separated by hairlines. */
  display: flex;
  flex-direction: column;
}

.sc-plate {
  display: grid;
  grid-template-columns: var(--ui-rail-w) minmax(0, 5fr) minmax(0, 7fr);
  gap: clamp(16px, 3vw, 40px);
  padding: clamp(26px, 4vw, 44px) 0;
  border-bottom: 1px solid var(--ui-hairline);
  align-items: start;
}

.sc-plate:last-child {
  border-bottom: none;
}

/* Left rail: a big monospaced catalog index. */
.sc-plate__index {
  font-family: var(--ui-mono);
  font-size: clamp(15px, 1.4vw, 17px);
  font-weight: 500;
  color: var(--primary, #7b3a3a);
  padding-top: 6px;
  letter-spacing: 0.02em;
  position: sticky;
  top: 84px;
}

/* Column 1 of the row body: name + description + prop chips. */
.sc-plate__lead {
  min-width: 0;
}

.sc-plate__name {
  font-family: var(--ui-display);
  font-size: clamp(22px, 2.6vw, 30px);
  line-height: 1.1;
  letter-spacing: -0.015em;
  margin: 0 0 4px;
}

.sc-plate__kind {
  font-family: var(--ui-mono);
  font-size: 10.5px;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  color: color-mix(in oklab, var(--on-surface, #1c1b1f) 50%, transparent);
  margin: 0 0 12px;
}

.sc-plate__desc {
  margin: 0 0 16px;
  font-size: 14.5px;
  line-height: 1.55;
  color: color-mix(in oklab, var(--on-surface, #1c1b1f) 80%, transparent);
  max-width: 42ch;
}

.sc-props {
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
}

.sc-prop {
  font-family: var(--ui-mono);
  font-size: 11px;
  letter-spacing: 0.01em;
  padding: 3px 8px;
  border-radius: 6px;
  background: color-mix(in oklab, var(--primary, #7b3a3a) 9%, transparent);
  color: color-mix(in oklab, var(--on-surface, #1c1b1f) 82%, transparent);
  border: 1px solid
    color-mix(in oklab, var(--primary, #7b3a3a) 16%, transparent);
}

.sc-prop b {
  color: var(--primary, #7b3a3a);
  font-weight: 600;
}

/* Column 2 of the row body: the live demo stage. */
.sc-plate__demo {
  min-width: 0;
  display: flex;
  flex-direction: column;
  gap: 18px;
}

.sc-stage {
  /* A neutral "stage" the live component sits on, set off from the page
     so elevation and surface tones read clearly in both modes. */
  position: relative;
  border: 1px solid var(--ui-hairline);
  border-radius: 16px;
  background: var(--ui-plate-bg);
  padding: clamp(18px, 2.6vw, 28px);
  box-shadow: var(--ui-shadow-soft);
}

.sc-stage + .sc-stage {
  margin-top: 2px;
}

.sc-stage__label {
  position: absolute;
  top: -9px;
  left: 16px;
  font-family: var(--ui-mono);
  font-size: 10px;
  letter-spacing: 0.1em;
  text-transform: uppercase;
  padding: 1px 8px;
  background: var(--surface, #fff);
  color: color-mix(in oklab, var(--on-surface, #1c1b1f) 60%, transparent);
  border: 1px solid var(--ui-hairline);
  border-radius: 999px;
}

.sc-stage__row {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 12px;
}

.sc-stage__note {
  margin: 12px 0 0;
  font-size: 12.5px;
  color: color-mix(in oklab, var(--on-surface, #1c1b1f) 62%, transparent);
}

/* Make swatch labels for inline annotations. */
.sc-tag {
  font-family: var(--ui-mono);
  font-size: 10.5px;
  letter-spacing: 0.05em;
  text-transform: uppercase;
  color: color-mix(in oklab, var(--on-surface, #1c1b1f) 50%, transparent);
}

/* ------------------------------------------------------------------ *
 * Settings panel — slides in from the LEFT
 * ------------------------------------------------------------------ */

.sc-scrim {
  position: fixed;
  inset: 0;
  z-index: 90;
  background: color-mix(in oklab, var(--scrim, #000) 46%, transparent);
  opacity: 0;
  visibility: hidden;
  transition:
    opacity 0.32s ease,
    visibility 0.32s ease;
}

.sc-panel {
  position: fixed;
  top: 0;
  left: 0;
  z-index: 100;
  height: 100dvh;
  width: min(384px, 90vw);
  display: flex;
  flex-direction: column;
  background: var(--surface, #fff);
  color: var(--on-surface, #1c1b1f);
  box-shadow: var(--ui-shadow-panel);
  transform: translateX(-102%);
  transition: transform 0.4s cubic-bezier(0.22, 1, 0.36, 1);
  will-change: transform;
}

/* Open state is driven by a reactive class on <html>: the panelOpen signal
   flips `sc-open` and CSS does the rest (no JS animation loop). */
.sc-open .sc-scrim {
  opacity: 1;
  visibility: visible;
}

.sc-open .sc-panel {
  transform: translateX(0);
}

.sc-panel__head {
  display: flex;
  align-items: center;
  gap: 12px;
  padding: 18px 18px 16px 22px;
  border-bottom: 1px solid var(--ui-hairline);
}

.sc-panel__title {
  font-family: var(--ui-display);
  font-size: 21px;
  letter-spacing: -0.01em;
}

.sc-panel__title small {
  display: block;
  font-family: var(--ui-mono);
  font-size: 10.5px;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  color: var(--primary, #7b3a3a);
  margin-top: 2px;
}

.sc-panel__body {
  flex: 1 1 auto;
  overflow-y: auto;
  padding: 20px 22px 28px;
  display: flex;
  flex-direction: column;
  gap: 22px;
}

.sc-field {
  display: flex;
  flex-direction: column;
  gap: 8px;
}

.sc-field__label {
  font-family: var(--ui-mono);
  font-size: 11px;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: color-mix(in oklab, var(--on-surface, #1c1b1f) 64%, transparent);
}

/* Segmented control used for mode / corners / density inside the panel. */
.sc-seg {
  display: grid;
  grid-auto-flow: column;
  grid-auto-columns: 1fr;
  gap: 4px;
  padding: 4px;
  border: 1px solid var(--ui-hairline-strong);
  border-radius: 12px;
  background: color-mix(
    in oklab,
    var(--surface, #fff) 80%,
    var(--on-surface) 4%
  );
}

.sc-seg button {
  appearance: none;
  border: 0;
  background: transparent;
  color: inherit;
  font-family: var(--ui-sans);
  font-size: 13px;
  font-weight: 500;
  padding: 7px 6px;
  border-radius: 8px;
  cursor: pointer;
  transition:
    background 0.18s ease,
    color 0.18s ease;
  white-space: nowrap;
}

.sc-seg button:hover {
  background: color-mix(in oklab, var(--primary, #7b3a3a) 12%, transparent);
}

.sc-seg button[aria-pressed='true'] {
  background: var(--primary, #7b3a3a);
  color: var(--on-primary, #fff);
}

/* Colour preset swatches. */
.sc-swatches {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  align-items: center;
}

.sc-swatch {
  width: 30px;
  height: 30px;
  border-radius: 999px;
  border: 2px solid transparent;
  box-shadow: 0 0 0 1px var(--ui-hairline-strong);
  cursor: pointer;
  padding: 0;
  transition:
    transform 0.15s ease,
    border-color 0.15s ease;
}

.sc-swatch:hover {
  transform: scale(1.12);
}

.sc-swatch[aria-pressed='true'] {
  border-color: var(--surface, #fff);
  box-shadow: 0 0 0 2px var(--on-surface, #1c1b1f);
}

.sc-swatch--custom {
  position: relative;
  overflow: hidden;
  background: conic-gradient(
    from 0deg,
    #ef4444,
    #f59e0b,
    #eab308,
    #22c55e,
    #06b6d4,
    #6366f1,
    #d946ef,
    #ef4444
  );
  display: inline-grid;
  place-items: center;
}

.sc-swatch--custom input[type='color'] {
  position: absolute;
  inset: -4px;
  opacity: 0;
  cursor: pointer;
  border: 0;
  padding: 0;
}

.sc-swatch--custom span {
  font-family: var(--ui-mono);
  font-size: 13px;
  color: #fff;
  text-shadow: 0 1px 2px rgba(0, 0, 0, 0.6);
  pointer-events: none;
}

.sc-panel__foot {
  padding: 14px 22px 22px;
  border-top: 1px solid var(--ui-hairline);
  font-family: var(--ui-mono);
  font-size: 11px;
  line-height: 1.5;
  color: color-mix(in oklab, var(--on-surface, #1c1b1f) 55%, transparent);
}

.sc-panel__foot b {
  color: var(--primary, #7b3a3a);
}

/* The panel reuses inert4-ui's <Select> (beercss field) for font family.
   Give those a sane width inside the narrow rail. */
.sc-panel .field {
  width: 100%;
  margin: 0;
}

/* ------------------------------------------------------------------ *
 * Footer
 * ------------------------------------------------------------------ */

.sc-foot {
  margin-top: clamp(48px, 8vw, 96px);
  border-top: 2px solid var(--on-surface, #1c1b1f);
  padding: 36px 0 64px;
  display: flex;
  flex-wrap: wrap;
  align-items: baseline;
  justify-content: space-between;
  gap: 18px;
}

.sc-foot__mark {
  font-family: var(--ui-display);
  font-size: clamp(22px, 3vw, 30px);
  letter-spacing: -0.02em;
}

.sc-foot__mark em {
  font-style: italic;
  color: var(--primary, #7b3a3a);
}

.sc-foot__meta {
  font-family: var(--ui-mono);
  font-size: 11.5px;
  letter-spacing: 0.03em;
  color: color-mix(in oklab, var(--on-surface, #1c1b1f) 58%, transparent);
  text-align: right;
}

/* ------------------------------------------------------------------ *
 * Responsive — collapse the 3-track plate to stacked rows
 * ------------------------------------------------------------------ */

/* Tablet: drop the dedicated index rail; inline the index above the name. */
@media (max-width: 920px) {
  :root {
    --ui-rail-w: 0px;
  }

  .sc-plate {
    grid-template-columns: minmax(0, 1fr);
    gap: 22px;
  }

  .sc-plate__index {
    position: static;
    padding-top: 0;
    font-size: 13px;
    margin-bottom: -8px;
  }

  .sc-plate__index::after {
    content: '';
    display: inline-block;
    width: 28px;
    height: 1px;
    background: var(--ui-hairline-strong);
    vertical-align: middle;
    margin-left: 10px;
  }

  .sc-plate__desc {
    max-width: 64ch;
  }
}

/* Phone: tighten gutters, shrink hero, let stages breathe edge-to-edge. */
@media (max-width: 560px) {
  body {
    font-size: 15px;
  }

  .sc-section__head {
    flex-direction: column;
    align-items: flex-start;
    gap: 6px;
  }

  .sc-section__count {
    padding-bottom: 0;
  }

  .sc-stage {
    padding: 18px 14px;
    border-radius: 14px;
  }

  .sc-stage__row {
    gap: 9px;
  }

  .sc-topnav {
    padding: 10px 16px;
  }

  .sc-brand__tag {
    display: none;
  }
}

/* Very small phones (~320px): keep the masthead from overflowing. */
@media (max-width: 380px) {
  .sc-hero__title {
    font-size: 38px;
  }

  .sc-chip {
    font-size: 10.5px;
    padding: 4px 9px;
  }
}

/* Respect reduced-motion: kill the slide + smooth scroll. */
@media (prefers-reduced-motion: reduce) {
  html {
    scroll-behavior: auto;
  }
  .sc-panel,
  .sc-scrim,
  .sc-swatch {
    transition: none;
  }
}

/* ------------------------------------------------------------------ *
 * Page templates (PagesSection + EventListPage)
 *
 * All colour comes from beercss tokens (--surface, --primary,
 * --on-surface) so these flip for light / dark and the theme studio.
 * Layout uses CSS logical properties so it mirrors cleanly under RTL.
 * ------------------------------------------------------------------ */

.sc-section__lead {
  margin: -6px 0 8px;
  max-width: 60ch;
  font-size: 15px;
  line-height: 1.6;
  color: color-mix(in oklab, var(--on-surface, #1c1b1f) 78%, transparent);
}

.sc-page-plate {
  padding: clamp(22px, 3.5vw, 38px) 0 0;
}

.sc-page-plate__lead {
  display: grid;
  grid-template-columns: var(--ui-rail-w) minmax(0, 1fr);
  gap: clamp(16px, 3vw, 40px);
  margin-block-end: 22px;
}

.sc-page-plate__lead .sc-plate__index {
  position: static;
}

.sc-page-toolbar {
  display: flex;
  justify-content: flex-end;
  margin-block-end: 14px;
}

/* The framed "stage" the live page sits on. */
.sc-page-host {
  border: 1px solid var(--ui-hairline);
  border-radius: 18px;
  background: var(--ui-plate-bg);
  padding: clamp(16px, 2.4vw, 26px);
  box-shadow: var(--ui-shadow-soft);
}

/* ---- EventListPage --------------------------------------------------- */

.inert4-ui-eventlist {
  display: block;
  color: var(--on-surface, #1c1b1f);
}

.inert4-ui-event-header {
  margin-block-end: 18px;
}

.inert4-ui-event-header__titles {
  display: flex;
  align-items: baseline;
  gap: 12px;
  flex-wrap: wrap;
}

.inert4-ui-event-title {
  font-family: var(--ui-display);
  font-size: clamp(22px, 2.6vw, 30px);
  line-height: 1.1;
  letter-spacing: -0.015em;
  margin: 0;
}

.inert4-ui-event-subtitle {
  font-family: var(--ui-mono);
  font-size: 12px;
  color: color-mix(in oklab, var(--on-surface, #1c1b1f) 56%, transparent);
}

/* Top-bar layout: search + filters in one wrapping row. */
.inert4-ui-event-bar {
  display: flex;
  flex-wrap: wrap;
  align-items: end;
  gap: 14px;
  margin-block-end: 22px;
  padding-block-end: 20px;
  border-block-end: 1px solid var(--ui-hairline);
}

.inert4-ui-event-bar__search {
  flex: 1 1 260px;
  min-inline-size: 0;
}

.inert4-ui-event-bar__filters {
  display: flex;
  flex-wrap: wrap;
  gap: 12px;
}

.inert4-ui-event-bar__filters .field {
  min-inline-size: 168px;
}

/* Side-rail layout. */
.inert4-ui-event-rail {
  display: flex;
  flex-direction: column;
  gap: 14px;
  padding-inline-end: 6px;
}

.inert4-ui-event-rail__search {
  margin-block-end: 4px;
}

/* Month sections. */
.inert4-ui-event-month + .inert4-ui-event-month {
  margin-block-start: 30px;
}

.inert4-ui-event-month__head {
  display: flex;
  align-items: baseline;
  gap: 10px;
  position: sticky;
  top: 72px;
  z-index: 1;
  padding-block: 8px;
  background: linear-gradient(
    var(--ui-plate-bg) 70%,
    transparent
  );
  margin-block-end: 6px;
}

.inert4-ui-event-month__title {
  font-family: var(--ui-display);
  font-size: clamp(16px, 1.8vw, 20px);
  margin: 0;
}

.inert4-ui-event-month__count {
  font-family: var(--ui-mono);
  font-size: 11px;
  color: color-mix(in oklab, var(--on-surface, #1c1b1f) 52%, transparent);
}

/* Card grid. */
.inert4-ui-event-grid {
  list-style: none;
  margin: 0;
  padding: 0;
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(min(100%, 320px), 1fr));
  gap: 14px;
}

.inert4-ui-event-li {
  display: block;
}

.inert4-ui-event-card {
  display: grid;
  grid-template-columns: auto minmax(0, 1fr);
  gap: 14px;
  align-items: start;
  margin: 0;
  padding: 16px;
  inline-size: 100%;
  block-size: 100%;
  text-align: start;
  cursor: pointer;
}

.inert4-ui-event-card:focus-visible {
  outline: 2px solid var(--primary, #7b3a3a);
  outline-offset: 2px;
}

/* Leading calendar chip. */
.inert4-ui-event-date {
  display: grid;
  place-items: center;
  inline-size: 52px;
  padding-block: 8px;
  border-radius: 12px;
  background: color-mix(in oklab, var(--primary, #7b3a3a) 14%, transparent);
  color: var(--primary, #7b3a3a);
  line-height: 1;
}

.inert4-ui-event-date__day {
  font-size: 22px;
  font-weight: 600;
}

.inert4-ui-event-date__mon {
  font-size: 11px;
  text-transform: uppercase;
  letter-spacing: 0.06em;
  margin-block-start: 2px;
}

.inert4-ui-event-card__body {
  min-inline-size: 0;
  display: flex;
  flex-direction: column;
  gap: 8px;
}

.inert4-ui-event-name {
  margin: 0;
  font-weight: 600;
  font-size: 15.5px;
  line-height: 1.3;
}

.inert4-ui-event-metarow {
  display: flex;
  flex-direction: column;
  gap: 3px;
}

.inert4-ui-event-meta {
  font-size: 12.5px;
  color: color-mix(in oklab, var(--on-surface, #1c1b1f) 70%, transparent);
}

.inert4-ui-event-card__footer {
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  gap: 10px;
  margin-block-start: auto;
  padding-block-start: 4px;
}

.inert4-ui-event-cta {
  margin-inline-start: auto;
}

/* The status uses the Badge component, whose beercss `.badge` is an absolute
 * corner-overlay; force it into normal flow so it sits inline in the footer
 * row (next to the meter) instead of floating over it. */
.inert4-ui-event-status {
  display: inline-flex;
  align-items: center;
}
.inert4-ui-event-status .badge {
  position: static;
  inset: auto;
}

/* Entry meter. */
.inert4-ui-event-meter {
  display: flex;
  align-items: center;
  gap: 6px;
}

.inert4-ui-event-meter__track {
  inline-size: 64px;
  block-size: 6px;
  border-radius: 999px;
  background: color-mix(in oklab, var(--on-surface, #1c1b1f) 14%, transparent);
  overflow: hidden;
}

.inert4-ui-event-meter__fill {
  block-size: 100%;
  border-radius: inherit;
  background: var(--primary, #7b3a3a);
}

.inert4-ui-event-meter__text {
  font-family: var(--ui-mono);
  font-size: 11px;
  color: color-mix(in oklab, var(--on-surface, #1c1b1f) 60%, transparent);
}

/* Empty state. */
.inert4-ui-event-empty {
  display: grid;
  place-items: center;
  gap: 4px;
  padding: 56px 16px;
  text-align: center;
  color: color-mix(in oklab, var(--on-surface, #1c1b1f) 64%, transparent);
}

@media (max-width: 720px) {
  .sc-page-plate__lead {
    grid-template-columns: 1fr;
    gap: 8px;
  }
  .inert4-ui-event-month__head {
    position: static;
  }
}

/* ===========================================================================
   EventFormPage — sectioned create/edit form with a sticky section navigator.
   Canonical beercss surfaces + tokens; CSS logical properties throughout so it
   flips under dir="rtl" and repaints for light / dark / corner / density.
   =========================================================================== */
.inert4-ui-eventform {
  display: block;
  color: var(--on-surface, #1c1b1f);
}

.inert4-ui-eventform-header {
  margin-block-end: 18px;
}

.inert4-ui-eventform-title {
  font-family: var(--ui-display);
  font-size: clamp(22px, 2.6vw, 30px);
  line-height: 1.1;
  letter-spacing: -0.015em;
  margin: 0;
}

.inert4-ui-eventform-subtitle {
  margin: 6px 0 0;
  font-size: 14px;
  color: color-mix(in oklab, var(--on-surface, #1c1b1f) 64%, transparent);
}

.inert4-ui-eventform-layout {
  align-items: start;
}

/* The section navigator sticks beside the form so any section is one click. */
.inert4-ui-eventform-railcol {
  position: sticky;
  inset-block-start: 12px;
}

.inert4-ui-eventform-nav {
  border: 1px solid var(--ui-hairline);
  border-radius: 16px;
  background: var(--ui-plate-bg);
  padding: 8px;
}

.inert4-ui-eventform-nav__list {
  list-style: none;
  margin: 0;
  padding: 0;
  display: flex;
  flex-direction: column;
  gap: 2px;
}

.inert4-ui-eventform-nav__item {
  margin: 0;
}

.inert4-ui-eventform-nav__link {
  display: flex;
  align-items: center;
  gap: 12px;
  padding: 10px 12px;
  border-radius: 12px;
  text-decoration: none;
  color: color-mix(in oklab, var(--on-surface, #1c1b1f) 78%, transparent);
  font-size: 14px;
  line-height: 1.2;
  transition: background 0.15s ease, color 0.15s ease;
}

.inert4-ui-eventform-nav__link:hover {
  background: color-mix(in oklab, var(--primary, #6750a4) 10%, transparent);
}

.inert4-ui-eventform-nav__link.active {
  background: color-mix(in oklab, var(--primary, #6750a4) 16%, transparent);
  color: var(--on-surface, #1c1b1f);
  font-weight: 600;
}

.inert4-ui-eventform-nav__link:focus-visible {
  outline: 2px solid var(--primary, #6750a4);
  outline-offset: 2px;
}

.inert4-ui-eventform-form {
  display: flex;
  flex-direction: column;
  gap: 22px;
}

.inert4-ui-eventform-section {
  border: 1px solid var(--ui-hairline);
  border-radius: 18px;
  background: var(--ui-plate-bg);
  padding: 20px;
  scroll-margin-block-start: 16px;
}

.inert4-ui-eventform-section__head {
  display: flex;
  align-items: center;
  gap: 10px;
  margin-block-end: 16px;
}

.inert4-ui-eventform-section__icon {
  font-size: 18px;
  line-height: 1;
}

.inert4-ui-eventform-section__title {
  font-family: var(--ui-display);
  font-size: 17px;
  margin: 0;
}

.inert4-ui-eventform-grid {
  row-gap: 4px;
}

/* Divisions builder. */
.inert4-ui-eventform-divadd {
  display: flex;
  align-items: end;
  gap: 10px;
}

.inert4-ui-eventform-divadd__field {
  flex: 1 1 auto;
  margin: 0;
}

.inert4-ui-eventform-suggest {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 6px;
  margin-block: 10px 4px;
}

.inert4-ui-eventform-suggest__label {
  font-size: 12px;
  color: color-mix(in oklab, var(--on-surface, #1c1b1f) 60%, transparent);
}

.inert4-ui-eventform-suggest__chip {
  cursor: pointer;
  border: 1px dashed var(--ui-hairline-strong, var(--ui-hairline));
  background: transparent;
  font: inherit;
  font-size: 12px;
}

.inert4-ui-eventform-chips {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  margin-block-start: 12px;
}

.inert4-ui-eventform-chips__empty {
  font-size: 13px;
  color: color-mix(in oklab, var(--on-surface, #1c1b1f) 52%, transparent);
}

.inert4-ui-eventform-chip {
  display: inline-flex;
  align-items: center;
  gap: 6px;
}

.inert4-ui-eventform-chip__x {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  inline-size: 18px;
  block-size: 18px;
  padding: 0;
  border: 0;
  border-radius: 50%;
  cursor: pointer;
  font: inherit;
  font-size: 11px;
  line-height: 1;
  color: inherit;
  background: color-mix(in oklab, var(--on-surface, #1c1b1f) 14%, transparent);
}

.inert4-ui-eventform-chip__x:hover {
  background: color-mix(in oklab, var(--on-surface, #1c1b1f) 26%, transparent);
}

.inert4-ui-eventform-chip__x:focus-visible {
  outline: 2px solid var(--primary, #6750a4);
  outline-offset: 1px;
}

/* Entry-settings switches. */
.inert4-ui-eventform-switches {
  display: flex;
  flex-direction: column;
  gap: 4px;
  margin-block-start: 8px;
}

.inert4-ui-eventform-switch {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 16px;
  padding: 12px 4px;
}

.inert4-ui-eventform-switch + .inert4-ui-eventform-switch {
  border-block-start: 1px solid var(--ui-hairline);
}

.inert4-ui-eventform-switch__text {
  display: flex;
  flex-direction: column;
  gap: 2px;
  min-inline-size: 0;
}

.inert4-ui-eventform-switch__label {
  font-size: 14px;
}

.inert4-ui-eventform-switch__helper {
  font-size: 12px;
  color: color-mix(in oklab, var(--on-surface, #1c1b1f) 58%, transparent);
}

/* Sticky action bar. */
.inert4-ui-eventform-actions {
  position: sticky;
  inset-block-end: 0;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  margin-block-start: 20px;
  padding: 14px 0;
  background: linear-gradient(
    to top,
    var(--surface, #fef7ff) 70%,
    transparent
  );
}

.inert4-ui-eventform-actions__right {
  display: flex;
  gap: 10px;
}

@media (max-width: 720px) {
  .inert4-ui-eventform-railcol {
    position: static;
  }
  .inert4-ui-eventform-nav__list {
    flex-direction: row;
    flex-wrap: wrap;
  }
  .inert4-ui-eventform-divadd {
    flex-direction: column;
    align-items: stretch;
  }
}

.sc-page-status {
  min-block-size: 1.2em;
  margin: 12px 0 0;
  font-family: var(--ui-mono);
  font-size: 12px;
  color: color-mix(in oklab, var(--on-surface, #1c1b1f) 70%, transparent);
}

/* ------------------------------------------------------------------------- */
/* UserFormPage — sectioned create/edit member form                          */
/* ------------------------------------------------------------------------- */

.inert4-ui-userform {
  display: block;
  color: var(--on-surface, #1c1b1f);
}

.inert4-ui-userform-header {
  margin-block-end: 18px;
}

.inert4-ui-userform-title {
  font-family: var(--ui-display);
  font-size: clamp(22px, 2.6vw, 30px);
  line-height: 1.1;
  letter-spacing: -0.015em;
  margin: 0;
}

.inert4-ui-userform-subtitle {
  margin: 6px 0 0;
  font-size: 14px;
  color: color-mix(in oklab, var(--on-surface, #1c1b1f) 64%, transparent);
}

.inert4-ui-userform-layout {
  align-items: start;
}

/* The section navigator sticks beside the form so any section is one click. */
.inert4-ui-userform-railcol {
  position: sticky;
  inset-block-start: 12px;
}

.inert4-ui-userform-nav {
  border: 1px solid var(--ui-hairline);
  border-radius: 16px;
  background: var(--ui-plate-bg);
  padding: 8px;
}

.inert4-ui-userform-nav__list {
  list-style: none;
  margin: 0;
  padding: 0;
  display: flex;
  flex-direction: column;
  gap: 2px;
}

.inert4-ui-userform-nav__item {
  margin: 0;
}

.inert4-ui-userform-nav__link {
  display: flex;
  align-items: center;
  gap: 12px;
  padding: 10px 12px;
  border-radius: 12px;
  text-decoration: none;
  color: color-mix(in oklab, var(--on-surface, #1c1b1f) 78%, transparent);
  font-size: 14px;
  line-height: 1.2;
  transition: background 0.15s ease, color 0.15s ease;
}

.inert4-ui-userform-nav__link:hover {
  background: color-mix(in oklab, var(--primary, #6750a4) 10%, transparent);
}

.inert4-ui-userform-nav__link.active {
  background: color-mix(in oklab, var(--primary, #6750a4) 16%, transparent);
  color: var(--on-surface, #1c1b1f);
  font-weight: 600;
}

.inert4-ui-userform-nav__link:focus-visible {
  outline: 2px solid var(--primary, #6750a4);
  outline-offset: 2px;
}

.inert4-ui-userform-form {
  display: flex;
  flex-direction: column;
  gap: 22px;
}

.inert4-ui-userform-section {
  border: 1px solid var(--ui-hairline);
  border-radius: 18px;
  background: var(--ui-plate-bg);
  padding: 20px;
  scroll-margin-block-start: 16px;
}

.inert4-ui-userform-section__head {
  display: flex;
  align-items: center;
  gap: 10px;
  margin-block-end: 16px;
}

.inert4-ui-userform-section__icon {
  font-size: 18px;
  line-height: 1;
}

.inert4-ui-userform-section__title {
  font-family: var(--ui-display);
  font-size: 17px;
  margin: 0;
}

.inert4-ui-userform-grid {
  row-gap: 4px;
}

/* Avatar row in the Profile section. */
.inert4-ui-userform-avatarrow {
  margin-block-end: 6px;
}

.inert4-ui-userform-avatar {
  display: flex;
  align-items: center;
  gap: 16px;
}

.inert4-ui-userform-avatar__disc {
  flex: 0 0 auto;
  inline-size: 72px;
  block-size: 72px;
  border-radius: 50%;
  display: flex;
  align-items: center;
  justify-content: center;
  overflow: hidden;
  background: color-mix(in oklab, var(--primary, #6750a4) 18%, transparent);
  color: var(--primary, #6750a4);
  border: 1px solid var(--ui-hairline);
}

.inert4-ui-userform-avatar__initials {
  font-family: var(--ui-display);
  font-size: 26px;
  font-weight: 600;
  line-height: 1;
  letter-spacing: 0.02em;
}

.inert4-ui-userform-avatar__img {
  inline-size: 100%;
  block-size: 100%;
  object-fit: cover;
}

.inert4-ui-userform-avatar__meta {
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  gap: 6px;
  min-inline-size: 0;
}

.inert4-ui-userform-avatar__hint {
  font-size: 12px;
  color: color-mix(in oklab, var(--on-surface, #1c1b1f) 58%, transparent);
}

.inert4-ui-userform-avatar__file {
  position: absolute;
  inline-size: 1px;
  block-size: 1px;
  padding: 0;
  margin: -1px;
  overflow: hidden;
  clip: rect(0, 0, 0, 0);
  white-space: nowrap;
  border: 0;
}

/* Preference switches. */
.inert4-ui-userform-switches {
  display: flex;
  flex-direction: column;
  gap: 4px;
  margin-block-start: 8px;
}

.inert4-ui-userform-switch {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 16px;
  padding: 12px 4px;
}

.inert4-ui-userform-switch + .inert4-ui-userform-switch {
  border-block-start: 1px solid var(--ui-hairline);
}

.inert4-ui-userform-switch__text {
  display: flex;
  flex-direction: column;
  gap: 2px;
  min-inline-size: 0;
}

.inert4-ui-userform-switch__label {
  font-size: 14px;
}

.inert4-ui-userform-switch__helper {
  font-size: 12px;
  color: color-mix(in oklab, var(--on-surface, #1c1b1f) 58%, transparent);
}

/* Sticky action bar. */
.inert4-ui-userform-actions {
  position: sticky;
  inset-block-end: 0;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  margin-block-start: 20px;
  padding: 14px 0;
  background: linear-gradient(
    to top,
    var(--surface, #fef7ff) 70%,
    transparent
  );
}

.inert4-ui-userform-actions__right {
  display: flex;
  gap: 10px;
}

@media (max-width: 720px) {
  .inert4-ui-userform-railcol {
    position: static;
  }
  .inert4-ui-userform-nav__list {
    flex-direction: row;
    flex-wrap: wrap;
  }
  .inert4-ui-userform-avatar {
    flex-wrap: wrap;
  }
}

/* ===========================================================================
 * AccessRightsPage (P4) — user groups + permission matrix
 * ======================================================================== */
.inert4-ui-access {
  display: block;
  color: var(--on-surface, #1c1b1f);
}

.inert4-ui-access-pagehead {
  margin-block-end: 18px;
}

.inert4-ui-access-pagetitle {
  font-family: var(--ui-display);
  font-size: clamp(22px, 2.6vw, 30px);
  line-height: 1.1;
  letter-spacing: -0.015em;
  margin: 0;
}

.inert4-ui-access-pagesub {
  margin: 6px 0 0;
  font-size: 14px;
  max-inline-size: 60ch;
  color: color-mix(in oklab, var(--on-surface, #1c1b1f) 64%, transparent);
}

.inert4-ui-access-layout {
  align-items: start;
}

/* ---- Group rail --------------------------------------------------------- */
.inert4-ui-access-railcol {
  position: sticky;
  inset-block-start: 12px;
}

.inert4-ui-access-rail {
  /* Override beercss's default `nav { display:flex; flex-direction:row }` so
   * the head + group list stack vertically and fill the rail column. */
  display: block;
  border: 1px solid var(--ui-hairline);
  border-radius: 16px;
  background: var(--ui-plate-bg);
  padding: 10px;
}

.inert4-ui-access-rail__head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 8px;
  margin-block-end: 8px;
  padding-inline: 4px;
}

.inert4-ui-access-rail__title {
  font-family: var(--ui-display);
  font-size: 15px;
  margin: 0;
}

.inert4-ui-access-rail__list {
  list-style: none;
  margin: 0;
  padding: 0;
  display: flex;
  flex-direction: column;
  align-items: stretch;
  gap: 4px;
}

.inert4-ui-access-rail__row {
  list-style: none;
}

.inert4-ui-access-rail__item {
  inline-size: 100%;
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  gap: 4px;
  text-align: start;
  block-size: auto;
  padding: 10px 12px;
  border: 1px solid transparent;
  border-radius: 12px;
  background: transparent;
  color: inherit;
  cursor: pointer;
  font: inherit;
  transition: background 0.12s ease, border-color 0.12s ease;
}

.inert4-ui-access-rail__item:hover {
  background: color-mix(in oklab, var(--primary, #6750a4) 8%, transparent);
}

.inert4-ui-access-rail__item.active {
  background: color-mix(in oklab, var(--primary, #6750a4) 14%, transparent);
  border-color: color-mix(in oklab, var(--primary, #6750a4) 40%, transparent);
}

.inert4-ui-access-rail__item:focus-visible {
  outline: 2px solid var(--primary, #6750a4);
  outline-offset: 2px;
}

.inert4-ui-access-rail__name {
  font-weight: 600;
  font-size: 14px;
}

.inert4-ui-access-rail__meta {
  display: flex;
  align-items: center;
  gap: 8px;
  font-size: 12px;
  color: color-mix(in oklab, var(--on-surface, #1c1b1f) 60%, transparent);
}

.inert4-ui-access-rail__sys {
  font-size: 11px;
  font-weight: 600;
  padding: 1px 7px;
  border-radius: 999px;
  background: color-mix(in oklab, var(--primary, #6750a4) 16%, transparent);
  color: var(--primary, #6750a4);
}

/* ---- Group header ------------------------------------------------------- */
.inert4-ui-access-grouphd {
  display: flex;
  flex-wrap: wrap;
  align-items: flex-start;
  justify-content: space-between;
  gap: 14px;
  margin-block-end: 14px;
}

.inert4-ui-access-grouphd__titlerow {
  display: flex;
  align-items: center;
  gap: 10px;
}

.inert4-ui-access-grouphd__name {
  font-family: var(--ui-display);
  font-size: 20px;
  margin: 0;
}

.inert4-ui-access-tag {
  font-size: 11px;
  font-weight: 600;
  padding: 2px 9px;
  border-radius: 999px;
  background: color-mix(in oklab, var(--primary, #6750a4) 16%, transparent);
  color: var(--primary, #6750a4);
}

.inert4-ui-access-grouphd__desc {
  margin: 5px 0 0;
  font-size: 13px;
  max-inline-size: 56ch;
  color: color-mix(in oklab, var(--on-surface, #1c1b1f) 64%, transparent);
}

.inert4-ui-access-grouphd__meta {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 14px;
  margin-block-start: 8px;
  font-size: 13px;
}

.inert4-ui-access-summary {
  display: inline-flex;
  gap: 10px;
}

.inert4-ui-access-summary__grant,
.inert4-ui-access-summary__deny {
  display: inline-flex;
  align-items: center;
  gap: 5px;
  font-weight: 600;
}

.inert4-ui-access-summary__grant::before,
.inert4-ui-access-summary__deny::before {
  content: '';
  inline-size: 9px;
  block-size: 9px;
  border-radius: 3px;
}

.inert4-ui-access-summary__grant {
  color: var(--primary, #6750a4);
}

.inert4-ui-access-summary__grant::before {
  background: var(--primary, #6750a4);
}

.inert4-ui-access-summary__deny {
  color: var(--error, #b3261e);
}

.inert4-ui-access-summary__deny::before {
  background: var(--error, #b3261e);
}

.inert4-ui-access-grouphd__actions {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 4px;
}

/* ---- Legend ------------------------------------------------------------- */
.inert4-ui-access-legend {
  display: flex;
  flex-wrap: wrap;
  gap: 16px;
  margin-block-end: 12px;
  font-size: 12px;
  color: color-mix(in oklab, var(--on-surface, #1c1b1f) 66%, transparent);
}

.inert4-ui-access-legend__item {
  display: inline-flex;
  align-items: center;
  gap: 7px;
}

.inert4-ui-access-legend__swatch {
  inline-size: 22px;
  block-size: 22px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  border-radius: 7px;
  font-size: 12px;
  font-weight: 700;
}

/* ---- Matrix ------------------------------------------------------------- */
.inert4-ui-access-matrixwrap {
  overflow-x: auto;
  border: 1px solid var(--ui-hairline);
  border-radius: 16px;
  background: var(--ui-plate-bg);
}

.inert4-ui-access-matrix {
  inline-size: 100%;
  border-collapse: collapse;
  font-size: 13px;
}

.inert4-ui-access-th {
  text-align: center;
  font-weight: 600;
  font-size: 12px;
  letter-spacing: 0.02em;
  text-transform: uppercase;
  padding: 12px 8px;
  color: color-mix(in oklab, var(--on-surface, #1c1b1f) 60%, transparent);
  border-block-end: 1px solid var(--ui-hairline-strong);
  white-space: nowrap;
}

.inert4-ui-access-th--res {
  text-align: start;
  padding-inline-start: 16px;
}

.inert4-ui-access-matrix tbody tr + tr .inert4-ui-access-rowhead,
.inert4-ui-access-matrix tbody tr + tr .inert4-ui-access-td {
  border-block-start: 1px solid var(--ui-hairline);
}

.inert4-ui-access-rowhead {
  text-align: start;
  font-weight: 500;
  padding: 10px 8px 10px 16px;
  vertical-align: middle;
}

.inert4-ui-access-rowhead {
  display: flex;
  align-items: center;
  gap: 10px;
}

.inert4-ui-access-rowhead__icon {
  font-size: 18px;
  line-height: 1;
}

.inert4-ui-access-rowhead__text {
  display: flex;
  flex-direction: column;
  gap: 1px;
  min-inline-size: 0;
}

.inert4-ui-access-rowhead__label {
  font-weight: 600;
}

.inert4-ui-access-rowhead__hint {
  font-size: 11px;
  color: color-mix(in oklab, var(--on-surface, #1c1b1f) 56%, transparent);
}

.inert4-ui-access-rowhead__bulk {
  display: inline-flex;
  gap: 4px;
  margin-inline-start: auto;
  opacity: 0.55;
  transition: opacity 0.12s ease;
}

.inert4-ui-access-rowhead:hover .inert4-ui-access-rowhead__bulk,
.inert4-ui-access-rowhead:focus-within .inert4-ui-access-rowhead__bulk {
  opacity: 1;
}

.inert4-ui-access-bulk {
  inline-size: 22px;
  block-size: 22px;
  border-radius: 7px;
  border: 1px solid var(--ui-hairline-strong);
  background: transparent;
  cursor: pointer;
  font-size: 11px;
  line-height: 1;
  color: inherit;
}

.inert4-ui-access-bulk--grant:hover {
  border-color: var(--primary, #6750a4);
  color: var(--primary, #6750a4);
}

.inert4-ui-access-bulk--deny:hover {
  border-color: var(--error, #b3261e);
  color: var(--error, #b3261e);
}

.inert4-ui-access-bulk:focus-visible {
  outline: 2px solid var(--primary, #6750a4);
  outline-offset: 1px;
}

.inert4-ui-access-td {
  text-align: center;
  padding: 8px;
}

/* Tri-state cell toggle */
.inert4-ui-access-cell {
  inline-size: 34px;
  block-size: 34px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  border-radius: 9px;
  border: 1px solid var(--ui-hairline-strong);
  background: transparent;
  cursor: pointer;
  font-size: 14px;
  font-weight: 700;
  line-height: 1;
  color: color-mix(in oklab, var(--on-surface, #1c1b1f) 40%, transparent);
  transition: background 0.1s ease, border-color 0.1s ease, color 0.1s ease;
}

.inert4-ui-access-cell:hover {
  border-color: color-mix(in oklab, var(--on-surface, #1c1b1f) 40%, transparent);
}

.inert4-ui-access-cell:focus-visible {
  outline: 2px solid var(--primary, #6750a4);
  outline-offset: 2px;
}

.inert4-ui-access-cell--inherit {
  color: color-mix(in oklab, var(--on-surface, #1c1b1f) 34%, transparent);
}

.inert4-ui-access-cell--grant {
  background: var(--primary, #6750a4);
  border-color: var(--primary, #6750a4);
  color: var(--on-primary, #fff);
}

.inert4-ui-access-cell--deny {
  background: var(--error, #b3261e);
  border-color: var(--error, #b3261e);
  color: var(--on-error, #fff);
}

.inert4-ui-access-empty {
  padding: 28px 16px;
  text-align: center;
  font-size: 14px;
  color: color-mix(in oklab, var(--on-surface, #1c1b1f) 60%, transparent);
  border: 1px dashed var(--ui-hairline-strong);
  border-radius: 16px;
}

@media (max-width: 720px) {
  .inert4-ui-access-railcol {
    position: static;
  }
  .inert4-ui-access-grouphd__actions {
    inline-size: 100%;
  }
}

/* ========================================================================= */
/* PlayerProfilePage                                                          */
/* ========================================================================= */
.inert4-ui-player {
  display: block;
  color: var(--on-surface, #1c1b1f);
}

/* ---- Identity header ---------------------------------------------------- */
.inert4-ui-player-header {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 16px;
  flex-wrap: wrap;
  padding: 18px;
  border: 1px solid var(--ui-hairline);
  border-radius: 20px;
  background: var(--ui-plate-bg);
  margin-block-end: 18px;
}

.inert4-ui-player-identity {
  display: flex;
  align-items: center;
  gap: 16px;
  min-inline-size: 0;
  flex: 1 1 320px;
}

.inert4-ui-player-avatar {
  inline-size: 72px;
  block-size: 72px;
  flex: 0 0 auto;
  border-radius: 999px;
  overflow: hidden;
  display: grid;
  place-items: center;
  background: color-mix(in oklab, var(--primary, #6750a4) 18%, transparent);
  color: var(--primary, #6750a4);
  border: 1px solid color-mix(in oklab, var(--primary, #6750a4) 32%, transparent);
}

.inert4-ui-player-avatar__img {
  inline-size: 100%;
  block-size: 100%;
  object-fit: cover;
}

.inert4-ui-player-avatar__initials {
  font-family: var(--ui-display);
  font-size: 26px;
  font-weight: 600;
  letter-spacing: -0.01em;
}

.inert4-ui-player-identity__body {
  min-inline-size: 0;
}

.inert4-ui-player-identity__namerow {
  display: flex;
  align-items: center;
  gap: 10px;
  flex-wrap: wrap;
}

.inert4-ui-player-name {
  font-family: var(--ui-display);
  font-size: clamp(22px, 2.6vw, 30px);
  line-height: 1.1;
  letter-spacing: -0.015em;
  margin: 0;
}

.inert4-ui-player-status {
  font-size: 11px;
  font-weight: 600;
  padding: 2px 9px;
  border-radius: 999px;
  background: color-mix(in oklab, var(--primary, #6750a4) 14%, transparent);
  color: var(--primary, #6750a4);
}

.inert4-ui-player-status--active {
  background: color-mix(in oklab, var(--tertiary, #386641) 18%, transparent);
  color: var(--tertiary, #386641);
}

.inert4-ui-player-status--suspended,
.inert4-ui-player-status--inactive {
  background: color-mix(in oklab, var(--error, #b3261e) 16%, transparent);
  color: var(--error, #b3261e);
}

.inert4-ui-player-affiliation {
  margin: 4px 0 0;
  font-size: 14px;
  font-weight: 500;
  color: color-mix(in oklab, var(--on-surface, #1c1b1f) 72%, transparent);
}

.inert4-ui-player-chips {
  display: flex;
  flex-wrap: wrap;
  gap: 6px 12px;
  margin-block-start: 8px;
}

.inert4-ui-player-chip {
  display: inline-flex;
  align-items: center;
  gap: 5px;
  font-size: 12.5px;
  color: color-mix(in oklab, var(--on-surface, #1c1b1f) 64%, transparent);
}

.inert4-ui-player-rank {
  flex: 0 0 auto;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 2px;
  min-inline-size: 92px;
  padding: 12px 16px;
  border-radius: 16px;
  background: var(--primary, #6750a4);
  color: var(--on-primary, #fff);
}

.inert4-ui-player-rank__label {
  font-size: 11px;
  text-transform: uppercase;
  letter-spacing: 0.06em;
  opacity: 0.85;
}

.inert4-ui-player-rank__value {
  font-family: var(--ui-display);
  font-size: 28px;
  font-weight: 700;
  line-height: 1;
}

.inert4-ui-player-header__actions {
  display: flex;
  align-items: center;
  gap: 8px;
  flex-wrap: wrap;
}

/* ---- Stat strip --------------------------------------------------------- */
.inert4-ui-player-stats {
  margin-block-end: 18px;
}

.inert4-ui-player-stat {
  display: flex;
  flex-direction: column;
  gap: 4px;
  padding: 14px 16px;
  border: 1px solid var(--ui-hairline);
  border-radius: 16px;
  background: var(--ui-plate-bg);
}

.inert4-ui-player-stat__label {
  font-size: 12px;
  text-transform: uppercase;
  letter-spacing: 0.05em;
  color: color-mix(in oklab, var(--on-surface, #1c1b1f) 60%, transparent);
}

.inert4-ui-player-stat__value {
  font-family: var(--ui-display);
  font-size: clamp(22px, 2.4vw, 28px);
  font-weight: 700;
  line-height: 1.05;
}

.inert4-ui-player-stat__value--accent {
  color: var(--primary, #6750a4);
}

.inert4-ui-player-stat__hint {
  font-size: 12.5px;
  color: color-mix(in oklab, var(--on-surface, #1c1b1f) 58%, transparent);
}

/* ---- Tabbed history ----------------------------------------------------- */
.inert4-ui-player-history {
  border: 1px solid var(--ui-hairline);
  border-radius: 20px;
  background: var(--ui-plate-bg);
  padding: 6px;
}

.inert4-ui-player-tabs {
  display: flex;
  gap: 4px;
  padding: 4px;
  border-radius: 14px;
  background: color-mix(in oklab, var(--on-surface, #1c1b1f) 5%, transparent);
}

.inert4-ui-player-tab {
  flex: 1 1 auto;
  padding: 9px 14px;
  border: 1px solid transparent;
  border-radius: 11px;
  background: transparent;
  color: color-mix(in oklab, var(--on-surface, #1c1b1f) 70%, transparent);
  cursor: pointer;
  font: inherit;
  font-weight: 600;
  font-size: 13.5px;
  transition: background 0.12s ease, color 0.12s ease;
}

.inert4-ui-player-tab:hover {
  color: var(--on-surface, #1c1b1f);
}

.inert4-ui-player-tab.active {
  background: var(--ui-plate-bg);
  color: var(--primary, #6750a4);
  border-color: var(--ui-hairline);
  box-shadow: 0 1px 2px rgba(0, 0, 0, 0.06);
}

.inert4-ui-player-tab:focus-visible {
  outline: 2px solid var(--primary, #6750a4);
  outline-offset: 2px;
}

.inert4-ui-player-panel {
  padding: 12px 8px 8px;
}

.inert4-ui-player-panel[hidden] {
  display: none;
}

/* Tournament name cell */
.inert4-ui-player-tname {
  display: flex;
  flex-direction: column;
  gap: 1px;
}

.inert4-ui-player-tname__name {
  font-weight: 600;
}

.inert4-ui-player-tname__loc {
  font-size: 12px;
  color: color-mix(in oklab, var(--on-surface, #1c1b1f) 58%, transparent);
}

.inert4-ui-player-place {
  font-weight: 600;
}

.inert4-ui-player-place--podium {
  display: inline-block;
  padding: 1px 9px;
  border-radius: 999px;
  background: color-mix(in oklab, var(--tertiary, #386641) 18%, transparent);
  color: var(--tertiary, #386641);
}

.inert4-ui-player-view {
  padding: 4px 12px;
  border: 1px solid var(--ui-hairline-strong);
  border-radius: 999px;
  background: transparent;
  color: var(--primary, #6750a4);
  cursor: pointer;
  font: inherit;
  font-size: 12.5px;
  font-weight: 600;
}

.inert4-ui-player-view:hover {
  background: color-mix(in oklab, var(--primary, #6750a4) 10%, transparent);
}

.inert4-ui-player-view:focus-visible {
  outline: 2px solid var(--primary, #6750a4);
  outline-offset: 2px;
}

/* ---- Match list --------------------------------------------------------- */
.inert4-ui-player-matches {
  list-style: none;
  margin: 0;
  padding: 0;
  display: flex;
  flex-direction: column;
  gap: 6px;
}

.inert4-ui-player-match {
  display: flex;
  align-items: center;
  gap: 12px;
  padding: 10px 12px;
  border: 1px solid var(--ui-hairline);
  border-radius: 13px;
  border-inline-start-width: 3px;
}

.inert4-ui-player-match--win {
  border-inline-start-color: var(--tertiary, #386641);
}

.inert4-ui-player-match--loss {
  border-inline-start-color: color-mix(
    in oklab,
    var(--on-surface, #1c1b1f) 30%,
    transparent
  );
}

.inert4-ui-player-result {
  flex: 0 0 auto;
  inline-size: 28px;
  block-size: 28px;
  border-radius: 999px;
  display: grid;
  place-items: center;
  font-weight: 700;
  font-size: 13px;
}

.inert4-ui-player-result--win {
  background: var(--tertiary, #386641);
  color: var(--on-tertiary, #fff);
}

.inert4-ui-player-result--loss {
  background: color-mix(in oklab, var(--on-surface, #1c1b1f) 14%, transparent);
  color: color-mix(in oklab, var(--on-surface, #1c1b1f) 80%, transparent);
}

.inert4-ui-player-match__body {
  flex: 1 1 auto;
  min-inline-size: 0;
}

.inert4-ui-player-match__top {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: 10px;
}

.inert4-ui-player-match__vslabel {
  color: color-mix(in oklab, var(--on-surface, #1c1b1f) 50%, transparent);
}

.inert4-ui-player-match__opp {
  font-weight: 600;
}

.inert4-ui-player-match__score {
  font-size: 13px;
  font-variant-numeric: tabular-nums;
  color: color-mix(in oklab, var(--on-surface, #1c1b1f) 70%, transparent);
}

.inert4-ui-player-match__meta {
  margin-block-start: 2px;
  font-size: 12.5px;
  color: color-mix(in oklab, var(--on-surface, #1c1b1f) 56%, transparent);
}

/* Visually-hidden per-match outcome label for screen readers. */
.inert4-ui-player-srlabel {
  position: absolute;
  inline-size: 1px;
  block-size: 1px;
  padding: 0;
  margin: -1px;
  overflow: hidden;
  clip: rect(0, 0, 0, 0);
  white-space: nowrap;
  border: 0;
}

.inert4-ui-player-empty {
  padding: 28px 16px;
  text-align: center;
  font-size: 14px;
  color: color-mix(in oklab, var(--on-surface, #1c1b1f) 60%, transparent);
  border: 1px dashed var(--ui-hairline-strong);
  border-radius: 16px;
}

@media (max-width: 720px) {
  .inert4-ui-player-rank {
    align-items: flex-start;
  }
  .inert4-ui-player-header__actions {
    inline-size: 100%;
  }
}

/* ========================================================================= */
/* AdminDashboardPage                                                        */
/* ========================================================================= */
.inert4-ui-admin {
  display: block;
  color: var(--on-surface, #1c1b1f);
}

/* ---- Scope header -------------------------------------------------------- */
.inert4-ui-admin-header {
  display: flex;
  align-items: flex-end;
  justify-content: space-between;
  gap: 16px;
  flex-wrap: wrap;
  margin-block-end: 18px;
}

.inert4-ui-admin-header__heading {
  min-inline-size: 0;
}

.inert4-ui-admin-eyebrow {
  display: inline-flex;
  align-items: center;
  gap: 7px;
  margin: 0 0 6px;
  font-size: 12px;
  font-weight: 600;
  letter-spacing: 0.04em;
  text-transform: uppercase;
  color: color-mix(in oklab, var(--on-surface, #1c1b1f) 62%, transparent);
}

.inert4-ui-admin-eyebrow__dot {
  inline-size: 9px;
  block-size: 9px;
  border-radius: 999px;
  background: var(--primary, #6750a4);
}

.inert4-ui-admin-eyebrow__dot--federation {
  background: var(--secondary, #625b71);
}

.inert4-ui-admin-eyebrow__dot--club {
  background: var(--tertiary, #386641);
}

.inert4-ui-admin-title {
  font-family: var(--ui-display);
  font-size: clamp(24px, 3vw, 34px);
  line-height: 1.08;
  letter-spacing: -0.018em;
  margin: 0;
}

.inert4-ui-admin-subtitle {
  margin: 5px 0 0;
  font-size: 13.5px;
  color: color-mix(in oklab, var(--on-surface, #1c1b1f) 64%, transparent);
}

.inert4-ui-admin-header__controls {
  display: flex;
  align-items: center;
  gap: 10px;
  flex-wrap: wrap;
}

.inert4-ui-admin-search {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  padding-inline: 12px;
  block-size: 40px;
  border-radius: 999px;
  border: 1px solid var(--ui-hairline);
  background: var(--ui-plate-bg);
}

.inert4-ui-admin-search__icon {
  font-size: 14px;
  opacity: 0.7;
}

.inert4-ui-admin-search__input {
  border: 0;
  background: transparent;
  outline: none;
  color: inherit;
  font: inherit;
  font-size: 14px;
  inline-size: clamp(120px, 22vw, 220px);
}

/* ---- Metric strip -------------------------------------------------------- */
.inert4-ui-admin-metrics {
  list-style: none;
  margin: 0 0 18px;
  padding: 0;
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(180px, 1fr));
  gap: 12px;
}

.inert4-ui-admin-metric {
  display: flex;
  flex-direction: column;
  gap: 4px;
  padding: 14px 16px;
  border: 1px solid var(--ui-hairline);
  border-radius: 16px;
  background: var(--ui-plate-bg);
}

.inert4-ui-admin-metric--accent {
  border-color: color-mix(in oklab, var(--primary, #6750a4) 38%, transparent);
  background: color-mix(in oklab, var(--primary, #6750a4) 8%, var(--ui-plate-bg));
}

.inert4-ui-admin-metric__head {
  display: inline-flex;
  align-items: center;
  gap: 7px;
  font-size: 12.5px;
  color: color-mix(in oklab, var(--on-surface, #1c1b1f) 66%, transparent);
}

.inert4-ui-admin-metric__icon {
  font-size: 14px;
}

.inert4-ui-admin-metric__value {
  font-family: var(--ui-display);
  font-size: 28px;
  font-weight: 600;
  line-height: 1.05;
  letter-spacing: -0.01em;
}

.inert4-ui-admin-metric--accent .inert4-ui-admin-metric__value {
  color: var(--primary, #6750a4);
}

.inert4-ui-admin-metric__delta {
  font-size: 12px;
  font-weight: 500;
}

.inert4-ui-admin-metric__delta--up {
  color: var(--tertiary, #386641);
}

.inert4-ui-admin-metric__delta--down {
  color: var(--error, #b3261e);
}

.inert4-ui-admin-metric__delta--flat {
  color: color-mix(in oklab, var(--on-surface, #1c1b1f) 56%, transparent);
}

/* ---- Body: action grid + activity rail ----------------------------------- */
.inert4-ui-admin-body {
  display: grid;
  grid-template-columns: minmax(0, 1fr) minmax(240px, 300px);
  gap: 18px;
  align-items: start;
}

.inert4-ui-admin-body--norail {
  grid-template-columns: minmax(0, 1fr);
}

.inert4-ui-admin-groups {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(240px, 1fr));
  gap: 14px;
}

.inert4-ui-admin-group {
  display: flex;
  flex-direction: column;
  border: 1px solid var(--ui-hairline);
  border-radius: 18px;
  background: var(--ui-plate-bg);
  padding: 16px;
}

.inert4-ui-admin-group__head {
  display: flex;
  align-items: flex-start;
  gap: 10px;
  margin-block-end: 12px;
}

.inert4-ui-admin-group__icon {
  font-size: 20px;
  flex: 0 0 auto;
  line-height: 1.4;
}

.inert4-ui-admin-group__heading {
  flex: 1 1 auto;
  min-inline-size: 0;
}

.inert4-ui-admin-group__title {
  font-family: var(--ui-display);
  font-size: 17px;
  font-weight: 600;
  margin: 0;
}

.inert4-ui-admin-group__desc {
  margin: 2px 0 0;
  font-size: 12.5px;
  color: color-mix(in oklab, var(--on-surface, #1c1b1f) 62%, transparent);
}

.inert4-ui-admin-group__tiles {
  display: flex;
  flex-direction: column;
  gap: 6px;
}

.inert4-ui-admin-tile {
  display: flex;
  align-items: center;
  gap: 10px;
  inline-size: 100%;
  text-align: start;
  padding: 9px 11px;
  border: 1px solid transparent;
  border-radius: 12px;
  background: color-mix(in oklab, var(--on-surface, #1c1b1f) 4%, transparent);
  color: inherit;
  font: inherit;
  cursor: pointer;
  transition: background 120ms ease, border-color 120ms ease;
}

.inert4-ui-admin-tile:hover {
  background: color-mix(in oklab, var(--primary, #6750a4) 12%, transparent);
}

.inert4-ui-admin-tile:focus-visible {
  outline: 2px solid var(--primary, #6750a4);
  outline-offset: 2px;
}

.inert4-ui-admin-tile--accent {
  border-color: color-mix(in oklab, var(--primary, #6750a4) 32%, transparent);
  background: color-mix(in oklab, var(--primary, #6750a4) 10%, transparent);
}

.inert4-ui-admin-tile__body {
  display: flex;
  flex-direction: column;
  gap: 1px;
  flex: 1 1 auto;
  min-inline-size: 0;
}

.inert4-ui-admin-tile__label {
  font-size: 14px;
  font-weight: 500;
}

.inert4-ui-admin-tile__hint {
  font-size: 11.5px;
  color: color-mix(in oklab, var(--on-surface, #1c1b1f) 60%, transparent);
}

.inert4-ui-admin-tile__badge {
  flex: 0 0 auto;
  min-inline-size: 20px;
  padding: 1px 6px;
  border-radius: 999px;
  text-align: center;
  font-size: 11.5px;
  font-weight: 600;
  background: var(--error, #b3261e);
  color: var(--on-error, #fff);
}

.inert4-ui-admin-tile__chev {
  flex: 0 0 auto;
  font-size: 18px;
  line-height: 1;
  opacity: 0.5;
}

[dir='rtl'] .inert4-ui-admin-tile__chev {
  transform: scaleX(-1);
}

/* ---- Activity rail ------------------------------------------------------- */
.inert4-ui-admin-activity {
  border: 1px solid var(--ui-hairline);
  border-radius: 18px;
  background: var(--ui-plate-bg);
  padding: 16px;
}

.inert4-ui-admin-activity__title {
  font-family: var(--ui-display);
  font-size: 15px;
  font-weight: 600;
  margin: 0 0 12px;
}

.inert4-ui-admin-activity__list {
  list-style: none;
  margin: 0;
  padding: 0;
  display: flex;
  flex-direction: column;
  gap: 14px;
}

.inert4-ui-admin-activity__item {
  display: flex;
  gap: 10px;
}

.inert4-ui-admin-activity__icon {
  flex: 0 0 auto;
  inline-size: 26px;
  block-size: 26px;
  border-radius: 999px;
  display: grid;
  place-items: center;
  font-size: 13px;
  background: color-mix(in oklab, var(--primary, #6750a4) 14%, transparent);
}

.inert4-ui-admin-activity__body {
  min-inline-size: 0;
}

.inert4-ui-admin-activity__text {
  margin: 0;
  font-size: 13.5px;
  line-height: 1.35;
}

.inert4-ui-admin-activity__meta {
  display: flex;
  align-items: center;
  gap: 8px;
  margin-block-start: 3px;
}

.inert4-ui-admin-activity__tag {
  font-size: 11px;
  font-weight: 600;
  padding: 1px 7px;
  border-radius: 999px;
  background: color-mix(in oklab, var(--on-surface, #1c1b1f) 8%, transparent);
  color: color-mix(in oklab, var(--on-surface, #1c1b1f) 70%, transparent);
}

.inert4-ui-admin-activity__time {
  font-size: 11.5px;
  color: color-mix(in oklab, var(--on-surface, #1c1b1f) 54%, transparent);
}

@media (max-width: 860px) {
  .inert4-ui-admin-body {
    grid-template-columns: minmax(0, 1fr);
  }
  .inert4-ui-admin-header__controls {
    inline-size: 100%;
  }
}

/* ------------------------------------------------------------------ */
/* CustomFieldsPage (P7) — custom-field manager + renderer            */
/* ------------------------------------------------------------------ */
.inert4-ui-cfields {
  display: block;
  color: var(--on-surface, #1c1b1f);
}

.inert4-ui-cfields-header {
  display: flex;
  align-items: flex-end;
  justify-content: space-between;
  gap: 16px;
  flex-wrap: wrap;
  margin-block-end: 16px;
}

.inert4-ui-cfields-title {
  font-family: var(--ui-display);
  font-size: clamp(22px, 2.6vw, 30px);
  line-height: 1.1;
  letter-spacing: -0.015em;
  margin: 0;
}

.inert4-ui-cfields-subtitle {
  margin: 6px 0 0;
  font-size: 14px;
  max-inline-size: 52ch;
  color: color-mix(in oklab, var(--on-surface, #1c1b1f) 64%, transparent);
}

/* Entity rail — a horizontal row of segmented buttons, one click each. */
.inert4-ui-cfields-rail {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  padding: 6px;
  margin-block-end: 18px;
  border: 1px solid var(--ui-hairline);
  border-radius: 16px;
  background: var(--ui-plate-bg);
}

.inert4-ui-cfields-rail__btn {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  padding: 9px 14px;
  border: 1px solid transparent;
  border-radius: 12px;
  background: transparent;
  color: color-mix(in oklab, var(--on-surface, #1c1b1f) 78%, transparent);
  font: inherit;
  font-size: 14px;
  cursor: pointer;
  transition: background 0.15s ease, color 0.15s ease, border-color 0.15s ease;
}

.inert4-ui-cfields-rail__btn:hover {
  background: color-mix(in oklab, var(--primary, #6750a4) 10%, transparent);
}

.inert4-ui-cfields-rail__btn.active {
  background: color-mix(in oklab, var(--primary, #6750a4) 16%, transparent);
  border-color: color-mix(in oklab, var(--primary, #6750a4) 36%, transparent);
  color: var(--on-surface, #1c1b1f);
  font-weight: 600;
}

.inert4-ui-cfields-rail__btn:focus-visible {
  outline: 2px solid var(--primary, #6750a4);
  outline-offset: 2px;
}

.inert4-ui-cfields-rail__count {
  min-inline-size: 1.4em;
  padding: 1px 7px;
  border-radius: 999px;
  font-size: 12px;
  font-weight: 600;
  text-align: center;
  background: color-mix(in oklab, var(--on-surface, #1c1b1f) 12%, transparent);
  color: color-mix(in oklab, var(--on-surface, #1c1b1f) 80%, transparent);
}

.inert4-ui-cfields-main {
  align-items: start;
}

/* Field list. */
.inert4-ui-cfields-listhead {
  margin-block-end: 10px;
}

.inert4-ui-cfields-listhead__title {
  font-family: var(--ui-display);
  font-size: 16px;
  margin: 0;
}

.inert4-ui-cfields-list {
  display: flex;
  flex-direction: column;
  gap: 10px;
}

.inert4-ui-cfields-row {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  padding: 14px 16px;
  border: 1px solid var(--ui-hairline);
  border-radius: 14px;
  background: var(--ui-plate-bg);
}

.inert4-ui-cfields-row__title {
  display: flex;
  align-items: center;
  gap: 8px;
}

.inert4-ui-cfields-row__label {
  font-weight: 600;
  font-size: 15px;
}

.inert4-ui-cfields-row__req {
  font-size: 11px;
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: 0.04em;
  padding: 1px 7px;
  border-radius: 999px;
  color: var(--error, #ba1a1a);
  background: color-mix(in oklab, var(--error, #ba1a1a) 14%, transparent);
}

.inert4-ui-cfields-row__sub {
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  gap: 8px;
  margin-block-start: 6px;
  font-size: 13px;
  color: color-mix(in oklab, var(--on-surface, #1c1b1f) 62%, transparent);
}

.inert4-ui-cfields-row__key {
  font-family: var(--ui-mono);
  font-size: 12px;
  padding: 1px 6px;
  border-radius: 6px;
  background: color-mix(in oklab, var(--on-surface, #1c1b1f) 8%, transparent);
}

.inert4-ui-cfields-row__actions {
  display: flex;
  align-items: center;
  gap: 2px;
  flex: 0 0 auto;
}

.inert4-ui-cfields-chip {
  display: inline-flex;
  align-items: center;
  gap: 5px;
  padding: 2px 9px;
  border-radius: 999px;
  font-size: 12px;
  font-weight: 600;
  background: color-mix(in oklab, var(--secondary, #625b71) 16%, transparent);
  color: color-mix(in oklab, var(--on-surface, #1c1b1f) 86%, transparent);
}

.inert4-ui-cfields-empty {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 8px;
  text-align: center;
  padding: 32px 20px;
  border: 1px dashed var(--ui-hairline-strong, var(--ui-hairline));
  border-radius: 14px;
  color: color-mix(in oklab, var(--on-surface, #1c1b1f) 62%, transparent);
}

.inert4-ui-cfields-empty__icon {
  font-size: 26px;
}

/* Editor panel — sticky beside the list. */
.inert4-ui-cfields-editcol {
  position: sticky;
  inset-block-start: 12px;
}

.inert4-ui-cfields-editor {
  border: 1px solid var(--ui-hairline);
  border-radius: 18px;
  background: var(--ui-plate-bg);
  padding: 18px;
}

.inert4-ui-cfields-editor__title {
  font-family: var(--ui-display);
  font-size: 16px;
  margin: 0 0 14px;
}

.inert4-ui-cfields-editor__body {
  display: flex;
  flex-direction: column;
  gap: 14px;
}

.inert4-ui-cfields-editor__closed {
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  gap: 14px;
  font-size: 14px;
  color: color-mix(in oklab, var(--on-surface, #1c1b1f) 64%, transparent);
}

.inert4-ui-cfields-editor__actions {
  display: flex;
  justify-content: flex-end;
  gap: 8px;
  margin-block-start: 16px;
}

.inert4-ui-cfields-keyrow {
  margin: -6px 0 0;
  font-size: 12px;
  color: color-mix(in oklab, var(--on-surface, #1c1b1f) 60%, transparent);
}

.inert4-ui-cfields-keyhint,
.inert4-ui-cfields-keyrow code {
  font-family: var(--ui-mono);
  font-size: 12px;
  padding: 1px 6px;
  border-radius: 6px;
  background: color-mix(in oklab, var(--on-surface, #1c1b1f) 8%, transparent);
}

.inert4-ui-cfields-switch {
  display: flex;
  align-items: center;
  gap: 10px;
}

.inert4-ui-cfields-switch__text {
  font-size: 14px;
}

/* Options builder for select fields. */
.inert4-ui-cfields-optsblock {
  display: flex;
  flex-direction: column;
  gap: 8px;
  padding: 12px;
  border: 1px solid var(--ui-hairline);
  border-radius: 12px;
}

.inert4-ui-cfields-optsblock__label {
  font-size: 13px;
  font-weight: 600;
  color: color-mix(in oklab, var(--on-surface, #1c1b1f) 78%, transparent);
}

.inert4-ui-cfields-opts {
  display: flex;
  flex-direction: column;
  gap: 8px;
}

.inert4-ui-cfields-opts__row {
  display: flex;
  align-items: center;
  gap: 6px;
}

.inert4-ui-cfields-opts__input {
  flex: 1 1 auto;
  min-inline-size: 0;
  padding: 8px 10px;
  border: 1px solid var(--ui-hairline);
  border-radius: 10px;
  background: var(--surface, #fff);
  color: var(--on-surface, #1c1b1f);
  font: inherit;
  font-size: 14px;
}

.inert4-ui-cfields-opts__input:focus-visible {
  outline: 2px solid var(--primary, #6750a4);
  outline-offset: 1px;
}

/* Live preview. */
.inert4-ui-cfields-preview {
  margin-block-start: 18px;
  padding-block-start: 16px;
  border-block-start: 1px solid var(--ui-hairline);
}

.inert4-ui-cfields-preview__label {
  display: block;
  font-size: 12px;
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: 0.06em;
  margin-block-end: 10px;
  color: color-mix(in oklab, var(--on-surface, #1c1b1f) 56%, transparent);
}

/* Renderer output — a plain fieldset of beercss controls. */
.inert4-ui-cfields-set {
  border: none;
  margin: 0;
  padding: 0;
  display: flex;
  flex-direction: column;
  gap: 14px;
}

.inert4-ui-cfields-set__legend {
  font-family: var(--ui-display);
  font-size: 15px;
  font-weight: 600;
  padding: 0;
  margin-block-end: 4px;
}

.inert4-ui-cfields-render__check {
  display: flex;
  flex-direction: column;
  gap: 4px;
}

@media (max-width: 960px) {
  .inert4-ui-cfields-editcol {
    position: static;
  }
}

/* ===========================================================================
   Chart — configurable, theme-aware SVG charts (bar/line/area/pie/donut).
   All colour comes from beercss role vars inside the SVG; these hooks only
   handle layout, typography and the screen-reader data-table fallback.
   ========================================================================= */
.inert4-ui-chart {
  margin: 0;
  display: flex;
  flex-direction: column;
  gap: 0.6rem;
  color: var(--on-surface);
}

.inert4-ui-chart__title {
  font-size: 1rem;
  font-weight: 600;
  margin: 0;
  color: var(--on-surface);
}

.inert4-ui-chart__ylabel {
  font-size: 0.72rem;
  letter-spacing: 0.04em;
  text-transform: uppercase;
  opacity: 0.66;
  margin: 0;
}

.inert4-ui-chart__plot {
  inline-size: 100%;
}

.inert4-ui-chart__svg {
  display: block;
  inline-size: 100%;
  block-size: auto;
  overflow: visible;
}

.inert4-ui-chart__legend {
  list-style: none;
  margin: 0;
  padding: 0;
  display: flex;
  flex-wrap: wrap;
  gap: 0.35rem 0.9rem;
}

.inert4-ui-chart__legend-item {
  display: inline-flex;
  align-items: center;
  gap: 0.4rem;
  font-size: 0.82rem;
}

.inert4-ui-chart__swatch {
  inline-size: 0.85rem;
  block-size: 0.85rem;
  border-radius: 0.2rem;
  flex: none;
}

/* The data-table equivalent — present for assistive tech, visually hidden. */
.inert4-ui-chart__sr {
  position: absolute;
  inline-size: 1px;
  block-size: 1px;
  padding: 0;
  margin: -1px;
  overflow: hidden;
  clip: rect(0, 0, 0, 0);
  white-space: nowrap;
  border: 0;
}

/* Showcase-only: lay the five chart specimens out in a responsive grid. */
.sc-chart-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
  gap: 1.5rem 2rem;
  inline-size: 100%;
}

/* ===========================================================================
 * EntityBuilderPage — drag-and-drop entity / field builder (page plate P8).
 * Canonical beercss chrome tokens, CSS logical properties (RTL-safe), and
 * beercss colour vars so it repaints for theme + dark mode with no re-render.
 * ======================================================================== */
.inert4-ui-eb {
  display: block;
  color: var(--on-surface, #1c1b1f);
}

.inert4-ui-eb__cols {
  display: grid;
  grid-template-columns: minmax(220px, 0.8fr) minmax(0, 1.6fr);
  gap: 20px;
  align-items: start;
}

@media (max-width: 720px) {
  .inert4-ui-eb__cols {
    grid-template-columns: 1fr;
  }
}

/* -- Palette -------------------------------------------------------------- */
.inert4-ui-eb__palette,
.inert4-ui-eb__canvas {
  border: 1px solid var(--ui-hairline);
  border-radius: 16px;
  background: var(--ui-plate-bg);
  padding: 16px;
}

.inert4-ui-eb__col-title {
  font-family: var(--ui-display);
  font-size: 16px;
  margin: 0 0 4px;
}

.inert4-ui-eb__col-hint {
  margin: 0 0 14px;
  font-size: 13px;
  color: color-mix(in oklab, var(--on-surface, #1c1b1f) 60%, transparent);
}

.inert4-ui-eb__chips {
  list-style: none;
  margin: 0;
  padding: 0;
  display: flex;
  flex-direction: column;
  gap: 8px;
}

.inert4-ui-eb__chip {
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 10px 10px 10px 12px;
  border: 1px solid var(--ui-hairline);
  border-radius: 12px;
  background: var(--surface, #fff);
  cursor: grab;
  transition: border-color 0.15s ease, background 0.15s ease,
    box-shadow 0.15s ease;
}

.inert4-ui-eb__chip:hover {
  border-color: color-mix(in oklab, var(--primary, #6750a4) 40%, transparent);
  background: color-mix(in oklab, var(--primary, #6750a4) 7%, var(--surface));
}

.inert4-ui-eb__chip:focus-visible {
  outline: 2px solid var(--primary, #6750a4);
  outline-offset: 2px;
}

.inert4-ui-eb__chip:active {
  cursor: grabbing;
}

.inert4-ui-eb__chip-icon {
  font-size: 20px;
  line-height: 1;
  flex: 0 0 auto;
}

.inert4-ui-eb__chip-body {
  display: flex;
  flex-direction: column;
  gap: 1px;
  flex: 1 1 auto;
  min-inline-size: 0;
}

.inert4-ui-eb__chip-label {
  font-size: 14px;
  font-weight: 600;
}

.inert4-ui-eb__chip-desc {
  font-size: 12px;
  color: color-mix(in oklab, var(--on-surface, #1c1b1f) 58%, transparent);
}

.inert4-ui-eb__chip-add {
  flex: 0 0 auto;
}

/* -- Canvas --------------------------------------------------------------- */
.inert4-ui-eb__canvas.is-over {
  border-color: color-mix(in oklab, var(--primary, #6750a4) 55%, transparent);
  background: color-mix(in oklab, var(--primary, #6750a4) 6%, var(--ui-plate-bg));
}

.inert4-ui-eb__canvas-head {
  display: flex;
  align-items: flex-end;
  justify-content: space-between;
  gap: 16px;
  flex-wrap: wrap;
  margin-block-end: 14px;
}

.inert4-ui-eb__name {
  display: flex;
  flex-direction: column;
  gap: 4px;
  flex: 1 1 auto;
  min-inline-size: 0;
}

.inert4-ui-eb__name-label {
  font-size: 12px;
  font-weight: 600;
  color: color-mix(in oklab, var(--on-surface, #1c1b1f) 62%, transparent);
}

.inert4-ui-eb__name-input,
.inert4-ui-eb__row-label {
  font: inherit;
  color: inherit;
  padding: 8px 12px;
  border: 1px solid var(--ui-hairline);
  border-radius: 10px;
  background: var(--surface, #fff);
}

.inert4-ui-eb__name-input {
  font-size: 18px;
  font-weight: 600;
  max-inline-size: 28ch;
}

.inert4-ui-eb__name-input:focus-visible,
.inert4-ui-eb__row-label:focus-visible {
  outline: 2px solid var(--primary, #6750a4);
  outline-offset: 1px;
}

.inert4-ui-eb__count {
  font-size: 13px;
  font-weight: 600;
  color: color-mix(in oklab, var(--on-surface, #1c1b1f) 64%, transparent);
}

.inert4-ui-eb__list {
  list-style: none;
  margin: 0;
  padding: 0;
  display: flex;
  flex-direction: column;
  gap: 8px;
}

.inert4-ui-eb__row {
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 8px 10px;
  border: 1px solid var(--ui-hairline);
  border-radius: 12px;
  background: var(--surface, #fff);
}

.inert4-ui-eb__row.is-dragging {
  opacity: 0.5;
}

.inert4-ui-eb__row.is-over {
  border-color: color-mix(in oklab, var(--primary, #6750a4) 55%, transparent);
  box-shadow: inset 0 2px 0 color-mix(in oklab, var(--primary, #6750a4) 60%, transparent);
}

.inert4-ui-eb__row-handle {
  cursor: grab;
  color: color-mix(in oklab, var(--on-surface, #1c1b1f) 40%, transparent);
  font-size: 14px;
  flex: 0 0 auto;
}

.inert4-ui-eb__row-icon {
  font-size: 16px;
  flex: 0 0 auto;
}

.inert4-ui-eb__row-type {
  flex: 0 0 auto;
  font-size: 12px;
}

.inert4-ui-eb__row-label {
  flex: 1 1 auto;
  min-inline-size: 8ch;
}

.inert4-ui-eb__row-req {
  flex: 0 0 auto;
  font-size: 12px;
}

.inert4-ui-eb__row-req-text {
  margin-inline-start: 4px;
}

.inert4-ui-eb__row-actions {
  display: inline-flex;
  align-items: center;
  gap: 2px;
  flex: 0 0 auto;
}

.inert4-ui-eb__row-remove:hover {
  color: var(--error, #ba1a1a);
}

/* -- Empty state ---------------------------------------------------------- */
.inert4-ui-eb__empty {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 8px;
  padding: 32px 16px;
  border: 1.5px dashed
    color-mix(in oklab, var(--on-surface, #1c1b1f) 26%, transparent);
  border-radius: 14px;
  text-align: center;
}

.inert4-ui-eb__empty-icon {
  font-size: 26px;
  color: color-mix(in oklab, var(--on-surface, #1c1b1f) 44%, transparent);
}

.inert4-ui-eb__empty-text {
  margin: 0;
  font-size: 13px;
  color: color-mix(in oklab, var(--on-surface, #1c1b1f) 60%, transparent);
}

/* -- Footer --------------------------------------------------------------- */
.inert4-ui-eb__footer {
  display: flex;
  justify-content: flex-end;
  gap: 10px;
  margin-block-start: 18px;
}

/* ========================================================================== */
/* ReportDesignerPage (.inert4-ui-rd)                                          */
/* ========================================================================== */
.inert4-ui-rd {
  display: block;
  color: var(--on-surface, #1c1b1f);
}

.inert4-ui-rd__cols {
  display: grid;
  grid-template-columns: minmax(240px, 0.8fr) minmax(0, 1.7fr);
  gap: 20px;
  align-items: start;
}

@media (max-width: 720px) {
  .inert4-ui-rd__cols {
    grid-template-columns: 1fr;
  }
}

.inert4-ui-rd__config,
.inert4-ui-rd__preview {
  border: 1px solid var(--ui-hairline);
  border-radius: 16px;
  background: var(--ui-plate-bg);
  padding: 16px;
}

/* -- Config column -------------------------------------------------------- */
.inert4-ui-rd__group {
  margin-block-end: 18px;
}
.inert4-ui-rd__group:last-child {
  margin-block-end: 0;
}

.inert4-ui-rd__group-row {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 8px;
}

.inert4-ui-rd__group-title {
  font-family: var(--ui-display);
  font-size: 13px;
  text-transform: uppercase;
  letter-spacing: 0.06em;
  color: color-mix(in oklab, var(--on-surface, #1c1b1f) 62%, transparent);
  margin: 0 0 10px;
}

.inert4-ui-rd__entities {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
}

.inert4-ui-rd__entity {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  cursor: pointer;
  border: 1px solid var(--ui-hairline);
  background: var(--surface, #fff);
  color: inherit;
  transition: border-color 0.15s ease, background 0.15s ease;
}

.inert4-ui-rd__entity:hover {
  border-color: color-mix(in oklab, var(--primary, #6750a4) 40%, transparent);
}

.inert4-ui-rd__entity:focus-visible {
  outline: 2px solid var(--primary, #6750a4);
  outline-offset: 2px;
}

.inert4-ui-rd__entity.fill {
  background: var(--primary, #6750a4);
  color: var(--on-primary, #fff);
  border-color: transparent;
}

.inert4-ui-rd__entity-icon {
  font-size: 16px;
  line-height: 1;
}

.inert4-ui-rd__column-tools {
  display: flex;
  gap: 2px;
}

.inert4-ui-rd__columns {
  list-style: none;
  margin: 0;
  padding: 0;
  display: flex;
  flex-direction: column;
  gap: 4px;
}

.inert4-ui-rd__column-label {
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 6px 8px;
  border-radius: 10px;
  cursor: pointer;
  transition: background 0.12s ease;
}

.inert4-ui-rd__column-label:hover {
  background: color-mix(in oklab, var(--primary, #6750a4) 7%, transparent);
}

.inert4-ui-rd__sort-row {
  display: flex;
  align-items: center;
  gap: 10px;
  margin-block-start: 10px;
}

.inert4-ui-rd__sort-row > :first-child {
  flex: 1 1 auto;
  min-inline-size: 0;
}

.inert4-ui-rd__dir {
  cursor: pointer;
  white-space: nowrap;
  border: 1px solid var(--ui-hairline);
  background: var(--surface, #fff);
  color: inherit;
}

.inert4-ui-rd__dir:focus-visible {
  outline: 2px solid var(--primary, #6750a4);
  outline-offset: 2px;
}

/* -- Preview column ------------------------------------------------------- */
.inert4-ui-rd__preview-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 16px;
  flex-wrap: wrap;
  margin-block-end: 14px;
}

.inert4-ui-rd__title-input {
  flex: 1 1 220px;
  min-inline-size: 0;
  font-family: var(--ui-display);
  font-size: 18px;
  font-weight: 600;
  color: inherit;
  background: transparent;
  border: none;
  border-block-end: 2px solid transparent;
  padding: 4px 2px;
}

.inert4-ui-rd__title-input:hover {
  border-block-end-color: var(--ui-hairline);
}

.inert4-ui-rd__title-input:focus-visible {
  outline: none;
  border-block-end-color: var(--primary, #6750a4);
}

.inert4-ui-rd__summary {
  font-size: 13px;
  color: color-mix(in oklab, var(--on-surface, #1c1b1f) 60%, transparent);
  white-space: nowrap;
}

.inert4-ui-rd__preview-body {
  overflow-x: auto;
}

.inert4-ui-rd__table {
  inline-size: 100%;
  border-collapse: collapse;
  font-size: 14px;
}

.inert4-ui-rd__table th,
.inert4-ui-rd__table td {
  text-align: start;
  padding: 9px 12px;
  border-block-end: 1px solid var(--ui-hairline);
}

.inert4-ui-rd__table thead th {
  font-size: 12px;
  text-transform: uppercase;
  letter-spacing: 0.04em;
  color: color-mix(in oklab, var(--on-surface, #1c1b1f) 62%, transparent);
  border-block-end: 2px solid var(--ui-hairline);
}

.inert4-ui-rd__table .inert4-ui-rd__num {
  text-align: end;
  font-variant-numeric: tabular-nums;
}

.inert4-ui-rd__table tbody tr:hover {
  background: color-mix(in oklab, var(--primary, #6750a4) 5%, transparent);
}

.inert4-ui-rd__group-head th {
  background: color-mix(in oklab, var(--primary, #6750a4) 10%, transparent);
  font-weight: 600;
  border-block-end: 1px solid var(--ui-hairline);
}

.inert4-ui-rd__group-name {
  font-size: 13px;
}

.inert4-ui-rd__group-count {
  display: inline-block;
  margin-inline-start: 8px;
  min-inline-size: 20px;
  padding: 1px 7px;
  border-radius: 999px;
  font-size: 11px;
  background: color-mix(in oklab, var(--primary, #6750a4) 20%, transparent);
  color: var(--on-surface, #1c1b1f);
}

.inert4-ui-rd__empty {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 8px;
  padding: 36px 16px;
  text-align: center;
  color: color-mix(in oklab, var(--on-surface, #1c1b1f) 55%, transparent);
}

.inert4-ui-rd__empty-icon {
  font-size: 30px;
  line-height: 1;
}

.inert4-ui-rd__footer {
  display: flex;
  justify-content: flex-end;
  gap: 10px;
  margin-block-start: 18px;
}

/* -- FileUploader focus ring (keyboard reaches the hidden file input) ----- */
.sc-dropzone:focus-within {
  outline: 2px solid var(--primary);
  outline-offset: 2px;
}

/* ========================================================================== */
/* DocumentViewerPage (.inert4-ui-dv)                                          */
/* ========================================================================== */
.inert4-ui-dv {
  display: grid;
  grid-template-columns: minmax(220px, 0.85fr) minmax(0, 1.9fr) minmax(
      200px,
      0.7fr
    );
  gap: 16px;
  align-items: stretch;
  color: var(--on-surface, #1c1b1f);
}

@media (max-width: 900px) {
  .inert4-ui-dv {
    grid-template-columns: 1fr;
  }
}

.inert4-ui-dv__rail,
.inert4-ui-dv__main,
.inert4-ui-dv__details {
  border: 1px solid var(--ui-hairline);
  border-radius: 16px;
  background: var(--ui-plate-bg);
  padding: 14px;
}

/* -- Library rail --------------------------------------------------------- */
.inert4-ui-dv__rail {
  display: flex;
  flex-direction: column;
  gap: 12px;
  min-block-size: 0;
}

.inert4-ui-dv__rail-head {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: 8px;
}

.inert4-ui-dv__rail-title {
  font-family: var(--ui-display);
  font-size: 15px;
  margin: 0;
}

.inert4-ui-dv__rail-count {
  font-size: 12px;
  color: color-mix(in oklab, var(--on-surface, #1c1b1f) 60%, transparent);
  background: color-mix(in oklab, var(--primary, #6750a4) 14%, transparent);
  border-radius: 999px;
  padding-inline: 8px;
  padding-block: 2px;
}

.inert4-ui-dv__kinds {
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
}

.inert4-ui-dv__kind {
  cursor: pointer;
}

.inert4-ui-dv__list {
  list-style: none;
  margin: 0;
  padding: 0;
  display: flex;
  flex-direction: column;
  gap: 4px;
  overflow-y: auto;
  max-block-size: 460px;
}

.inert4-ui-dv__list:focus-visible {
  outline: 2px solid var(--primary, #6750a4);
  outline-offset: 2px;
  border-radius: 10px;
}

.inert4-ui-dv__item {
  display: grid;
  grid-template-columns: auto 1fr auto;
  align-items: center;
  gap: 10px;
  padding: 9px 10px;
  border-radius: 12px;
  border: 1px solid transparent;
  cursor: pointer;
  text-align: start;
}

.inert4-ui-dv__item:hover {
  background: color-mix(in oklab, var(--on-surface, #1c1b1f) 5%, transparent);
}

.inert4-ui-dv__item:focus-visible {
  outline: 2px solid var(--primary, #6750a4);
  outline-offset: 1px;
}

.inert4-ui-dv__item--on {
  background: color-mix(in oklab, var(--primary, #6750a4) 14%, transparent);
  border-color: color-mix(in oklab, var(--primary, #6750a4) 38%, transparent);
}

.inert4-ui-dv__item-icon {
  font-size: 20px;
  line-height: 1;
}

.inert4-ui-dv__item-main {
  display: flex;
  flex-direction: column;
  gap: 1px;
  min-inline-size: 0;
}

.inert4-ui-dv__item-name {
  font-size: 13.5px;
  font-weight: 600;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}

.inert4-ui-dv__item-meta {
  font-size: 11.5px;
  color: color-mix(in oklab, var(--on-surface, #1c1b1f) 58%, transparent);
}

.inert4-ui-dv__dot {
  inline-size: 9px;
  block-size: 9px;
  border-radius: 999px;
  background: color-mix(in oklab, var(--on-surface, #1c1b1f) 30%, transparent);
}
.inert4-ui-dv__dot--approved {
  background: #2e7d32;
}
.inert4-ui-dv__dot--pending {
  background: #ed6c02;
}
.inert4-ui-dv__dot--rejected {
  background: var(--error, #b3261e);
}

.inert4-ui-dv__list-empty {
  padding: 16px 8px;
  font-size: 13px;
  color: color-mix(in oklab, var(--on-surface, #1c1b1f) 55%, transparent);
}

/* -- Viewer --------------------------------------------------------------- */
.inert4-ui-dv__main {
  padding: 0;
  display: flex;
  flex-direction: column;
  overflow: hidden;
}

.inert4-ui-dv__viewer {
  display: flex;
  flex-direction: column;
  min-block-size: 420px;
}

.inert4-ui-dv__viewer-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 10px;
  padding: 12px 14px;
  border-bottom: 1px solid var(--ui-hairline);
}

.inert4-ui-dv__viewer-title {
  display: flex;
  align-items: center;
  gap: 9px;
  min-inline-size: 0;
}

.inert4-ui-dv__viewer-icon {
  font-size: 20px;
}

.inert4-ui-dv__viewer-name {
  font-family: var(--ui-display);
  font-size: 15px;
  margin: 0;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}

.inert4-ui-dv__viewer-actions {
  display: flex;
  gap: 6px;
  flex-shrink: 0;
}

.inert4-ui-dv__surface {
  flex: 1;
  padding: 16px;
  overflow: auto;
  background: color-mix(in oklab, var(--on-surface, #1c1b1f) 4%, transparent);
}

.inert4-ui-dv__text {
  margin: 0;
  font-family: ui-monospace, "SF Mono", Menlo, Consolas, monospace;
  font-size: 12.5px;
  line-height: 1.55;
  white-space: pre;
  color: var(--on-surface, #1c1b1f);
  background: var(--ui-plate-bg);
  border: 1px solid var(--ui-hairline);
  border-radius: 12px;
  padding: 14px 16px;
  overflow: auto;
}

.inert4-ui-dv__image-wrap {
  display: flex;
  justify-content: center;
  align-items: flex-start;
}

.inert4-ui-dv__image {
  max-inline-size: 100%;
  block-size: auto;
  border-radius: 12px;
  border: 1px solid var(--ui-hairline);
}

.inert4-ui-dv__pdf {
  display: flex;
  justify-content: center;
}

.inert4-ui-dv__pdf-page {
  inline-size: min(440px, 100%);
  aspect-ratio: 1 / 1.32;
  background: var(--ui-plate-bg);
  border: 1px solid var(--ui-hairline-strong);
  border-radius: 8px;
  box-shadow: 0 10px 30px -18px rgba(0, 0, 0, 0.5);
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 6px;
  text-align: center;
  padding: 24px;
}

.inert4-ui-dv__pdf-glyph {
  font-size: 48px;
}

.inert4-ui-dv__pdf-name {
  font-family: var(--ui-display);
  font-size: 14px;
  margin: 0;
  word-break: break-word;
}

.inert4-ui-dv__pdf-pages {
  margin: 0;
  font-size: 12px;
  color: color-mix(in oklab, var(--on-surface, #1c1b1f) 55%, transparent);
}

.inert4-ui-dv__pdf-note {
  margin: 8px 0 0;
  font-size: 11.5px;
  color: color-mix(in oklab, var(--on-surface, #1c1b1f) 45%, transparent);
}

.inert4-ui-dv__placeholder {
  flex: 1;
  display: flex;
  flex-direction: column;
  gap: 8px;
  align-items: center;
  justify-content: center;
  color: color-mix(in oklab, var(--on-surface, #1c1b1f) 50%, transparent);
}
.inert4-ui-dv__placeholder-icon {
  font-size: 40px;
}

/* -- Details -------------------------------------------------------------- */
.inert4-ui-dv__details {
  display: flex;
  flex-direction: column;
  gap: 14px;
}

.inert4-ui-dv__details-title {
  font-family: var(--ui-display);
  font-size: 13px;
  text-transform: uppercase;
  letter-spacing: 0.06em;
  color: color-mix(in oklab, var(--on-surface, #1c1b1f) 62%, transparent);
  margin: 0;
}

.inert4-ui-dv__detail-list {
  margin: 0;
  display: flex;
  flex-direction: column;
  gap: 10px;
}

.inert4-ui-dv__detail {
  display: flex;
  flex-direction: column;
  gap: 1px;
}

.inert4-ui-dv__detail-term {
  font-size: 11px;
  text-transform: uppercase;
  letter-spacing: 0.05em;
  color: color-mix(in oklab, var(--on-surface, #1c1b1f) 52%, transparent);
}

.inert4-ui-dv__detail-value {
  margin: 0;
  font-size: 13.5px;
}

.inert4-ui-dv__badge {
  display: inline-block;
  font-size: 11px;
  font-weight: 600;
  text-transform: capitalize;
  border-radius: 999px;
  padding-inline: 9px;
  padding-block: 2px;
  color: #fff;
  background: color-mix(in oklab, var(--on-surface, #1c1b1f) 40%, transparent);
}
.inert4-ui-dv__badge--approved {
  background: #2e7d32;
}
.inert4-ui-dv__badge--pending {
  background: #ed6c02;
}
.inert4-ui-dv__badge--rejected {
  background: var(--error, #b3261e);
}

.inert4-ui-dv__tags {
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
}

.inert4-ui-dv__details-empty {
  font-size: 13px;
  color: color-mix(in oklab, var(--on-surface, #1c1b1f) 55%, transparent);
}

/* -- LoginPanel ---------------------------------------------------------- */
/* The panel is a beercss `article`, so surface/elevation/corner come from
   beercss vars; only layout is added here. Sized to a comfortable sign-in
   card and centred in its stage. */
.sc-login {
  inline-size: 100%;
  max-inline-size: 24rem;
  margin-inline: auto;
  padding: 1.5rem;
  display: flex;
  flex-direction: column;
  gap: 1.25rem;
}

.sc-login__head {
  display: flex;
  flex-direction: column;
  gap: 0.25rem;
  text-align: start;
}

.sc-login__title {
  margin: 0;
  font-size: 1.4rem;
  font-weight: 600;
  color: var(--on-surface);
}

.sc-login__subtitle {
  margin: 0;
  font-size: 0.875rem;
  color: color-mix(in oklab, var(--on-surface) 65%, transparent);
}

.sc-login__form {
  display: flex;
  flex-direction: column;
  gap: 1rem;
}

/* Login button spans the full panel width for an obvious primary target. */
.sc-login__submit {
  inline-size: 100%;
  justify-content: center;
}

/* Secondary row: forgot (text, inline-start) + sign up (border, inline-end). */
.sc-login__secondary {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 0.5rem;
  flex-wrap: wrap;
}

/* The reveal toggle sits at the inline-end of the password input row. The
   beercss `.field` is `position: relative` and the input occupies the top
   3rem; we pin the toggle there (logical props, so it mirrors under RTL) and
   reserve matching inline-end padding on the input so text never slides under
   it. The error `<output>` is the field's real last child, so we can't lean on
   beercss's icon-suffix positioning here. */
.sc-login .field.suffix {
  position: relative;
}

.sc-login .field.suffix > input {
  padding-inline-end: 4.25rem;
}

.sc-login__reveal {
  position: absolute;
  inset-inline-end: 0.5rem;
  inset-block-start: 0;
  block-size: 3rem;
  display: inline-flex;
  align-items: center;
  padding-inline: 0.5rem;
  font-size: 0.8125rem;
  font-weight: 600;
  color: var(--primary);
}

/* ========================================================================== */
/* DocumentApproverPage (.inert4-ui-da)                                       */
/* ========================================================================== */
.inert4-ui-da {
  display: grid;
  grid-template-columns: minmax(240px, 0.85fr) minmax(0, 2fr);
  gap: 16px;
  align-items: stretch;
  color: var(--on-surface, #1c1b1f);
}

@media (max-width: 860px) {
  .inert4-ui-da {
    grid-template-columns: 1fr;
  }
}

.inert4-ui-da__rail,
.inert4-ui-da__main {
  border: 1px solid var(--ui-hairline);
  border-radius: 16px;
  background: var(--ui-plate-bg);
  padding: 14px;
}

.inert4-ui-da__main {
  padding: 0;
  display: flex;
  flex-direction: column;
  overflow: hidden;
}

/* -- Queue rail ----------------------------------------------------------- */
.inert4-ui-da__rail {
  display: flex;
  flex-direction: column;
  gap: 12px;
  min-block-size: 0;
}

.inert4-ui-da__rail-head {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: 8px;
}

.inert4-ui-da__rail-title {
  font-family: var(--ui-display);
  font-size: 15px;
  margin: 0;
}

.inert4-ui-da__count {
  font-size: 12px;
  color: var(--on-surface, #1c1b1f);
  background: color-mix(in oklab, var(--primary, #6750a4) 14%, transparent);
  border-radius: 999px;
  padding-inline: 9px;
  padding-block: 2px;
  white-space: nowrap;
}

.inert4-ui-da__count-label {
  color: color-mix(in oklab, var(--on-surface, #1c1b1f) 60%, transparent);
}

.inert4-ui-da__count-done {
  color: color-mix(in oklab, var(--on-surface, #1c1b1f) 48%, transparent);
}

.inert4-ui-da__list {
  list-style: none;
  margin: 0;
  padding: 0;
  display: flex;
  flex-direction: column;
  gap: 4px;
  overflow-y: auto;
  max-block-size: 480px;
}

.inert4-ui-da__item {
  display: grid;
  grid-template-columns: auto 1fr auto;
  align-items: center;
  gap: 10px;
  padding: 9px 10px;
  border-radius: 12px;
  border: 1px solid transparent;
  cursor: pointer;
  text-align: start;
}

.inert4-ui-da__item:hover {
  background: color-mix(in oklab, var(--on-surface, #1c1b1f) 5%, transparent);
}

.inert4-ui-da__item:focus-visible {
  outline: 2px solid var(--primary, #6750a4);
  outline-offset: 1px;
}

.inert4-ui-da__item--on {
  background: color-mix(in oklab, var(--primary, #6750a4) 14%, transparent);
  border-color: color-mix(in oklab, var(--primary, #6750a4) 38%, transparent);
}

.inert4-ui-da__item-icon {
  font-size: 20px;
  line-height: 1;
}

.inert4-ui-da__item-main {
  display: flex;
  flex-direction: column;
  gap: 1px;
  min-inline-size: 0;
}

.inert4-ui-da__item-name {
  font-size: 13.5px;
  font-weight: 600;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}

.inert4-ui-da__item-meta {
  font-size: 11.5px;
  color: color-mix(in oklab, var(--on-surface, #1c1b1f) 58%, transparent);
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}

.inert4-ui-da__req {
  font-size: 10px;
  font-weight: 700;
  letter-spacing: 0.04em;
  text-transform: uppercase;
  color: #b26a00;
  background: color-mix(in oklab, #ed6c02 16%, transparent);
  border-radius: 999px;
  padding-inline: 7px;
  padding-block: 2px;
  white-space: nowrap;
}

.inert4-ui-da__list-empty {
  padding: 18px 8px;
  font-size: 13px;
  text-align: center;
  color: color-mix(in oklab, var(--on-surface, #1c1b1f) 55%, transparent);
}

/* -- Review pane ---------------------------------------------------------- */
.inert4-ui-da__review {
  display: flex;
  flex-direction: column;
  min-block-size: 480px;
}

.inert4-ui-da__review-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  flex-wrap: wrap;
  padding: 12px 14px;
  border-bottom: 1px solid var(--ui-hairline);
}

.inert4-ui-da__review-title {
  display: flex;
  align-items: center;
  gap: 10px;
  min-inline-size: 0;
}

.inert4-ui-da__review-icon {
  font-size: 22px;
}

.inert4-ui-da__review-name {
  font-family: var(--ui-display);
  font-size: 15.5px;
  margin: 0;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}

.inert4-ui-da__review-sub {
  margin: 2px 0 0;
  font-size: 11.5px;
  color: color-mix(in oklab, var(--on-surface, #1c1b1f) 58%, transparent);
}

.inert4-ui-da__nav {
  display: flex;
  align-items: center;
  gap: 6px;
  flex-shrink: 0;
}

.inert4-ui-da__progress {
  font-size: 12px;
  font-variant-numeric: tabular-nums;
  color: color-mix(in oklab, var(--on-surface, #1c1b1f) 62%, transparent);
  padding-inline-end: 4px;
}

.inert4-ui-da__surface {
  flex: 1;
  padding: 16px;
  overflow: auto;
  background: color-mix(in oklab, var(--on-surface, #1c1b1f) 4%, transparent);
}

.inert4-ui-da__text {
  margin: 0;
  font-family: ui-monospace, "SF Mono", Menlo, Consolas, monospace;
  font-size: 12.5px;
  line-height: 1.55;
  white-space: pre;
  color: var(--on-surface, #1c1b1f);
  background: var(--ui-plate-bg);
  border: 1px solid var(--ui-hairline);
  border-radius: 12px;
  padding: 14px;
}

.inert4-ui-da__image-wrap {
  display: flex;
  justify-content: center;
}

.inert4-ui-da__image {
  max-inline-size: 100%;
  block-size: auto;
  border-radius: 12px;
  border: 1px solid var(--ui-hairline);
}

.inert4-ui-da__pdf {
  display: flex;
  justify-content: center;
}

.inert4-ui-da__pdf-page {
  inline-size: min(360px, 100%);
  aspect-ratio: 1 / 1.3;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 6px;
  text-align: center;
  background: var(--ui-plate-bg);
  border: 1px solid var(--ui-hairline);
  border-radius: 12px;
  padding: 18px;
}

.inert4-ui-da__pdf-glyph {
  font-size: 44px;
}

.inert4-ui-da__pdf-name {
  margin: 0;
  font-weight: 600;
  font-size: 13.5px;
}

.inert4-ui-da__pdf-pages {
  margin: 0;
  font-size: 12px;
  color: color-mix(in oklab, var(--on-surface, #1c1b1f) 58%, transparent);
}

.inert4-ui-da__pdf-note {
  margin: 6px 0 0;
  font-size: 11.5px;
  color: color-mix(in oklab, var(--on-surface, #1c1b1f) 50%, transparent);
}

/* -- Decision footer ------------------------------------------------------ */
.inert4-ui-da__decide {
  border-top: 1px solid var(--ui-hairline);
  padding: 14px;
  display: flex;
  flex-direction: column;
  gap: 12px;
}

.inert4-ui-da__who {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(180px, 1fr));
  gap: 4px 16px;
  margin: 0;
}

.inert4-ui-da__who-row {
  display: flex;
  gap: 6px;
  font-size: 12.5px;
  padding-block: 2px;
}

.inert4-ui-da__who-term {
  flex-shrink: 0;
  color: color-mix(in oklab, var(--on-surface, #1c1b1f) 56%, transparent);
}

.inert4-ui-da__who-value {
  margin: 0;
  font-weight: 600;
}

.inert4-ui-da__comment {
  margin: 0;
}

.inert4-ui-da__comment-label {
  font-size: 12px;
  color: color-mix(in oklab, var(--on-surface, #1c1b1f) 60%, transparent);
}

.inert4-ui-da__comment-input {
  inline-size: 100%;
  resize: vertical;
}

.inert4-ui-da__actions {
  display: flex;
  justify-content: flex-end;
  gap: 8px;
}

/* -- Empty / cleared states ---------------------------------------------- */
.inert4-ui-da__empty {
  flex: 1;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 8px;
  text-align: center;
  padding: 40px 24px;
}

.inert4-ui-da__empty-icon {
  font-size: 40px;
}

.inert4-ui-da__empty-title {
  font-family: var(--ui-display);
  font-size: 17px;
  margin: 0;
}

.inert4-ui-da__empty-note {
  margin: 0;
  font-size: 13px;
  color: color-mix(in oklab, var(--on-surface, #1c1b1f) 58%, transparent);
}

/* SignUpForm — the account-creation sibling of the login panel. Same canonical
   beercss surface + field recipe, with a fixed four-field stack. */
.sc-signup {
  inline-size: 100%;
  max-inline-size: 26rem;
  margin-inline: auto;
  padding: 1.5rem;
  display: flex;
  flex-direction: column;
  gap: 1.25rem;
}

.sc-signup__head {
  display: flex;
  flex-direction: column;
  gap: 0.25rem;
  text-align: start;
}

.sc-signup__title {
  margin: 0;
  font-size: 1.4rem;
  font-weight: 600;
  color: var(--on-surface);
}

.sc-signup__subtitle {
  margin: 0;
  font-size: 0.875rem;
  color: color-mix(in oklab, var(--on-surface) 65%, transparent);
}

.sc-signup__form {
  display: flex;
  flex-direction: column;
  gap: 1rem;
}

/* Submit spans the full panel width for an obvious primary target. */
.sc-signup__submit {
  inline-size: 100%;
  justify-content: center;
}

/* Secondary row holds the optional "already have an account" action. */
.sc-signup__secondary {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 0.5rem;
  flex-wrap: wrap;
}

/* Reveal toggle pinned to the password field suffix; logical props mirror it
   under RTL. See the sc-login note for why we can't lean on beercss's icon
   suffix positioning (the error <output> is the field's real last child). */
.sc-signup .field.suffix {
  position: relative;
}

.sc-signup .field.suffix > input {
  padding-inline-end: 4.25rem;
}

.sc-signup__reveal {
  position: absolute;
  inset-inline-end: 0.5rem;
  inset-block-start: 0;
  block-size: 3rem;
  display: inline-flex;
  align-items: center;
  padding-inline: 0.5rem;
  font-size: 0.8125rem;
  font-weight: 600;
  color: var(--primary);
}

/* ---------------------------------------------------------------------------
 * TournamentEntryPage (P12) — single-screen tournament entry + order summary
 * ------------------------------------------------------------------------- */
.inert4-ui-entry {
  display: block;
  color: var(--on-surface, #1c1b1f);
}

.inert4-ui-entry-header {
  margin-block-end: 20px;
}

.inert4-ui-entry-eyebrow {
  margin: 0 0 4px;
  font-size: 12px;
  font-weight: 600;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: var(--primary, #6750a4);
}

.inert4-ui-entry-title {
  font-family: var(--ui-display);
  font-size: clamp(22px, 2.6vw, 30px);
  line-height: 1.1;
  letter-spacing: -0.015em;
  margin: 0;
}

.inert4-ui-entry-meta {
  display: flex;
  flex-wrap: wrap;
  gap: 8px 18px;
  margin-block-start: 12px;
}

.inert4-ui-entry-meta__item {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  font-size: 13px;
  color: color-mix(in oklab, var(--on-surface, #1c1b1f) 70%, transparent);
}

.inert4-ui-entry-deadline {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  margin: 12px 0 0;
  padding: 4px 12px;
  border-radius: 999px;
  font-size: 13px;
  font-weight: 600;
  color: var(--primary, #6750a4);
  background: color-mix(in oklab, var(--primary, #6750a4) 12%, transparent);
}

.inert4-ui-entry-layout {
  align-items: start;
}

.inert4-ui-entry-maincol {
  display: flex;
  flex-direction: column;
  gap: 18px;
}

.inert4-ui-entry-block {
  border: 1px solid var(--ui-hairline);
  border-radius: 18px;
  background: var(--ui-plate-bg);
  padding: 20px;
}

.inert4-ui-entry-block__head {
  margin-block-end: 14px;
}

.inert4-ui-entry-block__title {
  font-family: var(--ui-display);
  font-size: 16px;
  margin: 0;
}

.inert4-ui-entry-block__hint {
  margin: 4px 0 0;
  font-size: 13px;
  color: color-mix(in oklab, var(--on-surface, #1c1b1f) 60%, transparent);
}

.inert4-ui-entry-rows {
  display: flex;
  flex-direction: column;
  gap: 8px;
}

.inert4-ui-entry-row {
  display: flex;
  align-items: center;
  gap: 14px;
  padding: 12px 14px;
  border: 1px solid var(--ui-hairline);
  border-radius: 14px;
  cursor: pointer;
  transition: border-color 0.15s ease, background 0.15s ease;
}

.inert4-ui-entry-row:hover {
  border-color: color-mix(in oklab, var(--primary, #6750a4) 50%, var(--ui-hairline));
}

.inert4-ui-entry-row:focus-within {
  outline: 2px solid var(--primary, #6750a4);
  outline-offset: 2px;
}

.inert4-ui-entry-row--full {
  opacity: 0.6;
  cursor: not-allowed;
}

.inert4-ui-entry-row__check {
  flex: 0 0 auto;
}

.inert4-ui-entry-row__body {
  display: flex;
  flex-direction: column;
  gap: 2px;
  flex: 1 1 auto;
  min-inline-size: 0;
}

.inert4-ui-entry-row__name {
  font-size: 15px;
  font-weight: 600;
}

.inert4-ui-entry-row__note {
  font-size: 12px;
  color: color-mix(in oklab, var(--on-surface, #1c1b1f) 58%, transparent);
}

.inert4-ui-entry-row__aside {
  display: flex;
  flex-direction: column;
  align-items: flex-end;
  gap: 2px;
  text-align: end;
}

.inert4-ui-entry-row__fee {
  font-size: 15px;
  font-weight: 700;
}

.inert4-ui-entry-row__spots {
  font-size: 12px;
  color: color-mix(in oklab, var(--on-surface, #1c1b1f) 58%, transparent);
}

.inert4-ui-entry-row__full {
  font-size: 12px;
  font-weight: 600;
  color: var(--error, #ba1a1a);
}

/* ---- Sticky order summary ---- */
.inert4-ui-entry-sidecol {
  position: sticky;
  inset-block-start: 12px;
}

.inert4-ui-entry-summary {
  border: 1px solid var(--ui-hairline);
  border-radius: 18px;
  background: var(--ui-plate-bg);
  padding: 20px;
  display: flex;
  flex-direction: column;
  gap: 16px;
}

.inert4-ui-entry-summary__title {
  font-family: var(--ui-display);
  font-size: 16px;
  margin: 0;
}

.inert4-ui-entry-summary__body {
  display: flex;
  flex-direction: column;
  gap: 14px;
}

.inert4-ui-entry-summary__entrant {
  display: flex;
  flex-direction: column;
  gap: 2px;
  padding-block-end: 12px;
  border-block-end: 1px solid var(--ui-hairline);
}

.inert4-ui-entry-summary__who-label {
  font-size: 11px;
  font-weight: 600;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  color: color-mix(in oklab, var(--on-surface, #1c1b1f) 56%, transparent);
}

.inert4-ui-entry-summary__who-name {
  font-size: 15px;
  font-weight: 600;
}

.inert4-ui-entry-summary__empty {
  margin: 0;
  font-size: 13px;
  color: color-mix(in oklab, var(--on-surface, #1c1b1f) 58%, transparent);
}

.inert4-ui-entry-summary__lines {
  list-style: none;
  margin: 0;
  padding: 0;
  display: flex;
  flex-direction: column;
  gap: 8px;
}

.inert4-ui-entry-summary__line {
  display: flex;
  align-items: center;
  gap: 10px;
  font-size: 14px;
}

.inert4-ui-entry-summary__line-name {
  flex: 1 1 auto;
  min-inline-size: 0;
}

.inert4-ui-entry-summary__line-fee {
  font-weight: 600;
  white-space: nowrap;
}

.inert4-ui-entry-summary__remove {
  flex: 0 0 auto;
  inline-size: 22px;
  block-size: 22px;
  border: none;
  border-radius: 999px;
  cursor: pointer;
  font-size: 12px;
  line-height: 1;
  color: var(--on-surface, #1c1b1f);
  background: color-mix(in oklab, var(--on-surface, #1c1b1f) 8%, transparent);
  transition: background 0.15s ease, color 0.15s ease;
}

.inert4-ui-entry-summary__remove:hover {
  background: color-mix(in oklab, var(--error, #ba1a1a) 16%, transparent);
  color: var(--error, #ba1a1a);
}

.inert4-ui-entry-summary__remove:focus-visible {
  outline: 2px solid var(--primary, #6750a4);
  outline-offset: 2px;
}

.inert4-ui-entry-summary__totals {
  display: flex;
  flex-direction: column;
  gap: 6px;
  padding-block-start: 12px;
  border-block-start: 1px solid var(--ui-hairline);
}

.inert4-ui-entry-summary__row {
  display: flex;
  justify-content: space-between;
  gap: 12px;
  font-size: 14px;
  color: color-mix(in oklab, var(--on-surface, #1c1b1f) 72%, transparent);
}

.inert4-ui-entry-summary__row--grand {
  margin-block-start: 4px;
  padding-block-start: 8px;
  border-block-start: 1px solid var(--ui-hairline);
  font-size: 17px;
  font-weight: 700;
  color: var(--on-surface, #1c1b1f);
}

.inert4-ui-entry-summary__actions {
  display: flex;
  flex-direction: column;
  gap: 6px;
}

.inert4-ui-entry-summary__actions > * {
  inline-size: 100%;
}

.inert4-ui-entry-summary__note {
  margin: 0;
  font-size: 12px;
  text-align: center;
  color: color-mix(in oklab, var(--on-surface, #1c1b1f) 52%, transparent);
}

/* UnsubscribeForm — the opt-out sibling of the sign-up panel. Same canonical
   beercss surface + field recipe: email, a reason <select> and a primary
   Unsubscribe button, with an optional bordered "keep subscribed" action. */
.sc-unsub {
  inline-size: 100%;
  max-inline-size: 26rem;
  margin-inline: auto;
  padding: 1.5rem;
  display: flex;
  flex-direction: column;
  gap: 1.25rem;
}

.sc-unsub__head {
  display: flex;
  flex-direction: column;
  gap: 0.25rem;
  text-align: start;
}

.sc-unsub__title {
  margin: 0;
  font-size: 1.4rem;
  font-weight: 600;
  color: var(--on-surface);
}

.sc-unsub__subtitle {
  margin: 0;
  font-size: 0.875rem;
  color: color-mix(in oklab, var(--on-surface) 65%, transparent);
}

.sc-unsub__form {
  display: flex;
  flex-direction: column;
  gap: 1rem;
}

/* The comment box only matters for the "Other" reason; collapse it otherwise
   without disturbing the flex gap above it. */
.sc-unsub__form .field.hidden {
  display: none;
}

/* Submit spans the full panel width for an obvious primary target. */
.sc-unsub__submit {
  inline-size: 100%;
  justify-content: center;
}

/* Secondary row holds the optional "keep me subscribed" action. */
.sc-unsub__secondary {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 0.5rem;
  flex-wrap: wrap;
}
/* ── P13 · ImportWizardPage ───────────────────────────────────────────────
   Bulk-import surface: source box, column-mapping grid, validation dry-run.
   All colour from beercss tokens; layout in logical properties for RTL. */
.inert4-ui-import {
  display: flex;
  flex-direction: column;
  gap: 18px;
}

.inert4-ui-import-header {
  display: flex;
  flex-direction: column;
  gap: 4px;
}

.inert4-ui-import-eyebrow {
  margin: 0;
  font-size: 12px;
  font-weight: 600;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: var(--primary, #7b3a3a);
}

.inert4-ui-import-title {
  margin: 0;
  font-size: 24px;
  line-height: 1.2;
  color: var(--on-surface, #1c1b1f);
}

.inert4-ui-import-lead {
  margin: 0;
  max-inline-size: 70ch;
  font-size: 14px;
  color: color-mix(in oklab, var(--on-surface, #1c1b1f) 64%, transparent);
}

.inert4-ui-import-block {
  display: flex;
  flex-direction: column;
  gap: 12px;
  padding: 16px;
  border: 1px solid var(--ui-hairline, rgba(0, 0, 0, 0.12));
  border-radius: 16px;
  background: color-mix(in oklab, var(--surface, #fff) 92%, transparent);
}

.inert4-ui-import-block__head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  flex-wrap: wrap;
}

.inert4-ui-import-block__title {
  margin: 0;
  font-size: 16px;
  font-weight: 600;
  color: var(--on-surface, #1c1b1f);
}

.inert4-ui-import-block__hint {
  margin: 0;
  font-size: 13px;
  color: color-mix(in oklab, var(--on-surface, #1c1b1f) 55%, transparent);
}

/* Source --------------------------------------------------------------- */
.inert4-ui-import-field {
  inline-size: 100%;
}

.inert4-ui-import-textarea {
  inline-size: 100%;
  min-block-size: 7rem;
  font-family: var(--font-mono, ui-monospace, "SF Mono", Menlo, monospace);
  font-size: 13px;
  line-height: 1.5;
  resize: vertical;
}

.inert4-ui-import-source-opts {
  align-items: end;
}

.inert4-ui-import-switch-cell {
  display: flex;
  align-items: center;
}

.inert4-ui-import-switch__text {
  margin-inline-start: 8px;
  font-size: 14px;
  color: color-mix(in oklab, var(--on-surface, #1c1b1f) 80%, transparent);
}

/* Mapping -------------------------------------------------------------- */
.inert4-ui-import-blocker {
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  gap: 8px;
  font-size: 13px;
}

.inert4-ui-import-blocker__ok {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  padding-block: 4px;
  padding-inline: 10px;
  border-radius: 999px;
  font-weight: 600;
  color: var(--primary, #7b3a3a);
  background: color-mix(in oklab, var(--primary, #7b3a3a) 12%, transparent);
}

.inert4-ui-import-blocker__chip {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  padding-block: 4px;
  padding-inline: 10px;
  border-radius: 999px;
  font-weight: 600;
  color: var(--error, #b3261e);
  background: color-mix(in oklab, var(--error, #b3261e) 12%, transparent);
}

.inert4-ui-import-blocker__field {
  padding-block: 3px;
  padding-inline: 9px;
  border-radius: 999px;
  border: 1px solid color-mix(in oklab, var(--error, #b3261e) 40%, transparent);
  color: var(--error, #b3261e);
}

.inert4-ui-import-maprows {
  display: flex;
  flex-direction: column;
  gap: 8px;
}

.inert4-ui-import-maprow {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto minmax(0, 1fr);
  align-items: center;
  gap: 12px;
  padding: 10px;
  border-radius: 12px;
  background: color-mix(in oklab, var(--on-surface, #1c1b1f) 3%, transparent);
}

.inert4-ui-import-maprow__src {
  display: flex;
  flex-direction: column;
  gap: 2px;
  min-inline-size: 0;
}

.inert4-ui-import-maprow__col {
  font-weight: 600;
  font-size: 14px;
  color: var(--on-surface, #1c1b1f);
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.inert4-ui-import-maprow__sample {
  font-size: 12px;
  font-family: var(--font-mono, ui-monospace, Menlo, monospace);
  color: color-mix(in oklab, var(--on-surface, #1c1b1f) 50%, transparent);
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.inert4-ui-import-maprow__arrow {
  font-style: normal;
  color: color-mix(in oklab, var(--on-surface, #1c1b1f) 45%, transparent);
}

/* The → glyph flips with the writing direction. */
[dir="rtl"] .inert4-ui-import-maprow__arrow {
  transform: scaleX(-1);
}

.inert4-ui-import-maprow__target {
  min-inline-size: 0;
}

/* Preview / dry-run ---------------------------------------------------- */
.inert4-ui-import-summary {
  display: flex;
  flex-wrap: wrap;
  gap: 10px;
}

.inert4-ui-import-stat {
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  gap: 1px;
  padding-block: 6px;
  padding-inline: 14px;
  border-radius: 12px;
  min-inline-size: 5rem;
  background: color-mix(in oklab, var(--on-surface, #1c1b1f) 5%, transparent);
}

.inert4-ui-import-stat__num {
  font-size: 22px;
  font-weight: 700;
  line-height: 1.1;
  color: var(--on-surface, #1c1b1f);
}

.inert4-ui-import-stat__label {
  font-size: 12px;
  color: color-mix(in oklab, var(--on-surface, #1c1b1f) 58%, transparent);
}

.inert4-ui-import-stat--ok {
  background: color-mix(in oklab, var(--primary, #7b3a3a) 12%, transparent);
}

.inert4-ui-import-stat--ok .inert4-ui-import-stat__num {
  color: var(--primary, #7b3a3a);
}

.inert4-ui-import-stat--err {
  background: color-mix(in oklab, var(--error, #b3261e) 12%, transparent);
}

.inert4-ui-import-stat--err .inert4-ui-import-stat__num {
  color: var(--error, #b3261e);
}

.inert4-ui-import-tablewrap {
  overflow-x: auto;
}

.inert4-ui-import-table {
  inline-size: 100%;
  font-size: 13px;
}

.inert4-ui-import-table th {
  text-align: start;
  white-space: nowrap;
  font-weight: 600;
  color: color-mix(in oklab, var(--on-surface, #1c1b1f) 70%, transparent);
}

.inert4-ui-import-rownum {
  font-variant-numeric: tabular-nums;
  color: color-mix(in oklab, var(--on-surface, #1c1b1f) 45%, transparent);
}

.inert4-ui-import-cell {
  vertical-align: top;
}

.inert4-ui-import-cell--bad {
  background: color-mix(in oklab, var(--error, #b3261e) 10%, transparent);
}

.inert4-ui-import-cell__msg {
  display: flex;
  flex-direction: column;
  gap: 1px;
}

.inert4-ui-import-cell__val {
  color: var(--error, #b3261e);
  font-weight: 600;
}

.inert4-ui-import-cell__why {
  font-size: 11px;
  color: color-mix(in oklab, var(--error, #b3261e) 80%, var(--on-surface));
}

.inert4-ui-import-empty {
  color: color-mix(in oklab, var(--on-surface, #1c1b1f) 35%, transparent);
}

.inert4-ui-import-rowbadge {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  padding-block: 2px;
  padding-inline: 8px;
  border-radius: 999px;
  font-size: 12px;
  font-weight: 600;
  white-space: nowrap;
}

.inert4-ui-import-rowbadge--ok {
  color: var(--primary, #7b3a3a);
  background: color-mix(in oklab, var(--primary, #7b3a3a) 14%, transparent);
}

.inert4-ui-import-rowbadge--err {
  color: var(--error, #b3261e);
  background: color-mix(in oklab, var(--error, #b3261e) 14%, transparent);
}

.inert4-ui-import-more {
  margin-block: 8px 0;
  font-size: 12px;
  color: color-mix(in oklab, var(--on-surface, #1c1b1f) 55%, transparent);
}

.inert4-ui-import-actions {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  margin-block-start: 4px;
}

@media (max-width: 640px) {
  .inert4-ui-import-maprow {
    grid-template-columns: 1fr;
    gap: 6px;
  }
  .inert4-ui-import-maprow__arrow {
    display: none;
  }
}

/* --- NotificationsCenterPage (P14) -------------------------------------- */
.inert4-ui-notif {
  display: flex;
  flex-direction: column;
  gap: 18px;
}

.inert4-ui-notif-header {
  display: flex;
  flex-direction: column;
  gap: 4px;
}

.inert4-ui-notif-eyebrow {
  margin: 0;
  font-size: 12px;
  font-weight: 600;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: var(--primary, #7b3a3a);
}

.inert4-ui-notif-title {
  margin: 0;
  font-size: 24px;
  line-height: 1.2;
  color: var(--on-surface, #1c1b1f);
}

.inert4-ui-notif-lead {
  margin: 0;
  max-inline-size: 72ch;
  font-size: 14px;
  color: color-mix(in oklab, var(--on-surface, #1c1b1f) 64%, transparent);
}

.inert4-ui-notif-cols {
  display: grid;
  grid-template-columns: minmax(0, 1.2fr) minmax(0, 1fr);
  gap: 16px;
  align-items: start;
}

.inert4-ui-notif-panel {
  display: flex;
  flex-direction: column;
  gap: 12px;
  padding: 16px;
  border: 1px solid var(--ui-hairline, rgba(0, 0, 0, 0.12));
  border-radius: 16px;
  background: color-mix(in oklab, var(--surface, #fff) 92%, transparent);
}

.inert4-ui-notif-panel__head {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 12px;
  flex-wrap: wrap;
}

.inert4-ui-notif-panel__title {
  margin: 0;
  font-size: 17px;
  font-weight: 600;
  color: var(--on-surface, #1c1b1f);
}

.inert4-ui-notif-panel__sub,
.inert4-ui-notif-unread {
  display: block;
  font-size: 12.5px;
  color: color-mix(in oklab, var(--on-surface, #1c1b1f) 58%, transparent);
}

.inert4-ui-notif-unread__badge {
  font-weight: 600;
  color: var(--primary, #7b3a3a);
}

.inert4-ui-notif-unread__clear {
  color: color-mix(in oklab, #2e7d32 80%, var(--on-surface, #1c1b1f));
}

/* Filter chips */
.inert4-ui-notif-filters {
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
}

.inert4-ui-notif-filter {
  display: inline-flex;
  align-items: center;
  gap: 6px;
}

.inert4-ui-notif-filter__n {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-inline-size: 18px;
  padding-inline: 5px;
  border-radius: 9px;
  font-size: 11px;
  font-weight: 600;
  background: color-mix(in oklab, var(--on-surface, #1c1b1f) 12%, transparent);
}

.inert4-ui-notif-filter--on .inert4-ui-notif-filter__n {
  background: color-mix(in oklab, var(--on-primary, #fff) 30%, transparent);
}

/* Inbox list */
.inert4-ui-notif-list {
  display: flex;
  flex-direction: column;
  gap: 14px;
}

.inert4-ui-notif-group__head {
  margin: 0 0 6px;
  font-size: 12px;
  font-weight: 600;
  letter-spacing: 0.04em;
  text-transform: uppercase;
  color: color-mix(in oklab, var(--on-surface, #1c1b1f) 52%, transparent);
}

.inert4-ui-notif-items {
  list-style: none;
  margin: 0;
  padding: 0;
  display: flex;
  flex-direction: column;
  gap: 6px;
}

.inert4-ui-notif-item {
  display: grid;
  grid-template-columns: auto minmax(0, 1fr) auto;
  gap: 10px;
  align-items: start;
  padding: 10px 12px;
  border-radius: 12px;
  border: 1px solid transparent;
  background: color-mix(in oklab, var(--surface, #fff) 80%, transparent);
}

.inert4-ui-notif-item--unread {
  border-color: color-mix(in oklab, var(--primary, #7b3a3a) 35%, transparent);
  background: color-mix(in oklab, var(--primary, #7b3a3a) 7%, var(--surface, #fff));
}

.inert4-ui-notif-item__icon {
  font-size: 18px;
  line-height: 1.4;
}

.inert4-ui-notif-item__title {
  margin: 0;
  font-size: 14px;
  font-weight: 600;
  color: var(--on-surface, #1c1b1f);
}

.inert4-ui-notif-item--unread .inert4-ui-notif-item__title {
  color: var(--primary, #7b3a3a);
}

.inert4-ui-notif-item__sub {
  margin: 2px 0 0;
  font-size: 12.5px;
  color: color-mix(in oklab, var(--on-surface, #1c1b1f) 62%, transparent);
}

.inert4-ui-notif-item__meta {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  margin-block-start: 4px;
  font-size: 11.5px;
  color: color-mix(in oklab, var(--on-surface, #1c1b1f) 52%, transparent);
}

.inert4-ui-notif-item__chan::before {
  content: '';
  display: inline-block;
  inline-size: 6px;
  block-size: 6px;
  margin-inline-end: 5px;
  border-radius: 50%;
  background: color-mix(in oklab, var(--secondary, #9c6a6a) 80%, transparent);
  vertical-align: middle;
}

.inert4-ui-notif-item__actions {
  display: flex;
  align-items: center;
  gap: 4px;
}

.inert4-ui-notif-dot {
  inline-size: 16px;
  block-size: 16px;
  border-radius: 50%;
  border: 2px solid color-mix(in oklab, var(--primary, #7b3a3a) 60%, transparent);
  background: transparent;
  cursor: pointer;
  padding: 0;
}

.inert4-ui-notif-item--unread .inert4-ui-notif-dot {
  background: var(--primary, #7b3a3a);
}

.inert4-ui-notif-dismiss {
  border: none;
  background: transparent;
  cursor: pointer;
  font-size: 13px;
  line-height: 1;
  padding: 4px;
  border-radius: 8px;
  color: color-mix(in oklab, var(--on-surface, #1c1b1f) 50%, transparent);
}

.inert4-ui-notif-dismiss:hover,
.inert4-ui-notif-dot:hover {
  background: color-mix(in oklab, var(--on-surface, #1c1b1f) 8%, transparent);
}

.inert4-ui-notif-empty {
  padding: 18px;
  text-align: center;
  font-size: 13px;
  border-radius: 12px;
  border: 1px dashed var(--ui-hairline, rgba(0, 0, 0, 0.16));
  color: color-mix(in oklab, var(--on-surface, #1c1b1f) 55%, transparent);
}

/* Rules */
.inert4-ui-notif-rules {
  display: flex;
  flex-direction: column;
  gap: 8px;
}

.inert4-ui-notif-rule {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  padding: 10px 12px;
  border-radius: 12px;
  border: 1px solid var(--ui-hairline, rgba(0, 0, 0, 0.12));
  background: color-mix(in oklab, var(--surface, #fff) 82%, transparent);
}

.inert4-ui-notif-rule--off {
  opacity: 0.62;
}

.inert4-ui-notif-rule__main {
  display: flex;
  align-items: center;
  gap: 10px;
  min-inline-size: 0;
}

.inert4-ui-notif-rule__icon {
  font-size: 18px;
}

.inert4-ui-notif-rule__text {
  min-inline-size: 0;
}

.inert4-ui-notif-rule__what {
  margin: 0 0 5px;
  font-size: 13.5px;
  font-weight: 600;
  color: var(--on-surface, #1c1b1f);
}

.inert4-ui-notif-rule__chans,
.inert4-ui-notif-add__chans {
  display: flex;
  flex-wrap: wrap;
  gap: 5px;
}

.inert4-ui-notif-rule__timing {
  white-space: nowrap;
}

.inert4-ui-notif-rule__side {
  display: flex;
  align-items: center;
  gap: 6px;
}

.inert4-ui-notif-rule__del {
  border: none;
  background: transparent;
  cursor: pointer;
  font-size: 14px;
  padding: 4px;
  border-radius: 8px;
  color: color-mix(in oklab, var(--on-surface, #1c1b1f) 55%, transparent);
}

.inert4-ui-notif-rule__del:hover {
  background: color-mix(in oklab, var(--error, #ba1a1a) 14%, transparent);
  color: var(--error, #ba1a1a);
}

/* Add-rule form */
.inert4-ui-notif-add {
  display: flex;
  flex-direction: column;
  gap: 10px;
  margin-block-start: 4px;
  padding: 14px;
  border-radius: 14px;
  border: 1px solid var(--ui-hairline, rgba(0, 0, 0, 0.12));
  background: color-mix(in oklab, var(--primary, #7b3a3a) 5%, var(--surface, #fff));
}

.inert4-ui-notif-add__title {
  margin: 0;
  font-size: 14px;
  font-weight: 600;
  color: var(--on-surface, #1c1b1f);
}

.inert4-ui-notif-add__legend {
  margin: 2px 0 0;
  font-size: 12.5px;
  color: color-mix(in oklab, var(--on-surface, #1c1b1f) 60%, transparent);
}

.inert4-ui-notif-add__timing {
  align-items: end;
}

.inert4-ui-notif-add__actions {
  display: flex;
  justify-content: flex-end;
}

@media (max-width: 860px) {
  .inert4-ui-notif-cols {
    grid-template-columns: 1fr;
  }
}

@media (max-width: 520px) {
  .inert4-ui-notif-rule {
    flex-direction: column;
    align-items: stretch;
  }
  .inert4-ui-notif-rule__side {
    justify-content: space-between;
  }
}

/* --- MembershipManagerPage (P15) --------------------------------------- */
.inert4-ui-mem {
  display: flex;
  flex-direction: column;
  gap: 18px;
}

.inert4-ui-mem-header {
  display: flex;
  flex-direction: column;
  gap: 4px;
}

.inert4-ui-mem-eyebrow {
  margin: 0;
  font-size: 0.75rem;
  font-weight: 600;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: var(--primary);
}

.inert4-ui-mem-title {
  margin: 0;
  font-size: 1.6rem;
  line-height: 1.2;
  color: var(--on-surface);
}

.inert4-ui-mem-lead {
  margin: 0;
  max-inline-size: 70ch;
  color: var(--on-surface-variant);
}

.inert4-ui-mem-cols {
  display: grid;
  grid-template-columns: minmax(0, 1.1fr) minmax(0, 1fr);
  gap: 16px;
  align-items: start;
}

.inert4-ui-mem-panel {
  display: flex;
  flex-direction: column;
  gap: 14px;
  padding: 16px;
  border-radius: 1rem;
  background: var(--surface-container-low);
  border: 1px solid var(--outline-variant);
}

.inert4-ui-mem-panel__head {
  display: flex;
  justify-content: space-between;
  align-items: flex-start;
  gap: 12px;
}

.inert4-ui-mem-panel__title {
  margin: 0;
  font-size: 1.1rem;
  color: var(--on-surface);
}

.inert4-ui-mem-panel__sub {
  margin: 2px 0 0;
  font-size: 0.85rem;
  color: var(--on-surface-variant);
}

/* Roster filters */
.inert4-ui-mem-filters {
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
}

.inert4-ui-mem-filter {
  display: inline-flex;
  align-items: center;
  gap: 6px;
}

.inert4-ui-mem-filter__n {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-inline-size: 1.25rem;
  padding-inline: 5px;
  border-radius: 1rem;
  font-size: 0.72rem;
  font-weight: 600;
  background: var(--surface-container-highest);
  color: var(--on-surface-variant);
}

.inert4-ui-mem-filter--on .inert4-ui-mem-filter__n {
  background: var(--on-primary);
  color: var(--primary);
}

/* Roster list */
.inert4-ui-mem-list {
  display: flex;
  flex-direction: column;
  gap: 8px;
}

.inert4-ui-mem-row {
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: 12px;
  inline-size: 100%;
  padding: 12px 14px;
  border-radius: 0.75rem;
  border: 1px solid var(--outline-variant);
  background: var(--surface);
  text-align: start;
  cursor: pointer;
  transition: background 0.15s, border-color 0.15s;
}

.inert4-ui-mem-row:hover {
  background: var(--surface-container);
}

.inert4-ui-mem-row--sel {
  border-color: var(--primary);
  background: var(--surface-container);
  box-shadow: inset 0.25rem 0 0 var(--primary);
}

.inert4-ui-mem-row__main {
  display: flex;
  align-items: center;
  gap: 10px;
  min-inline-size: 0;
}

.inert4-ui-mem-row__avatar {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  inline-size: 2.25rem;
  block-size: 2.25rem;
  border-radius: 50%;
  background: var(--surface-container-highest);
  font-size: 1.1rem;
  flex: 0 0 auto;
}

.inert4-ui-mem-row__text {
  min-inline-size: 0;
}

.inert4-ui-mem-row__name {
  margin: 0;
  font-weight: 600;
  color: var(--on-surface);
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.inert4-ui-mem-row__sub {
  margin: 2px 0 0;
  font-size: 0.8rem;
  color: var(--on-surface-variant);
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.inert4-ui-mem-row__side {
  display: flex;
  align-items: center;
  gap: 10px;
  flex: 0 0 auto;
}

.inert4-ui-mem-row__renewal {
  font-size: 0.78rem;
  color: var(--on-surface-variant);
  white-space: nowrap;
}

.inert4-ui-mem-row__fee {
  font-weight: 600;
  font-size: 0.85rem;
  color: var(--on-surface);
  white-space: nowrap;
}

.inert4-ui-mem-row__renew {
  white-space: nowrap;
}

/* Status badges */
.inert4-ui-mem-badge {
  font-size: 0.7rem;
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: 0.04em;
}

.inert4-ui-mem-badge--active {
  background: var(--primary-container);
  color: var(--on-primary-container);
}

.inert4-ui-mem-badge--expiring {
  background: var(--tertiary-container);
  color: var(--on-tertiary-container);
}

.inert4-ui-mem-badge--expired {
  background: var(--error-container);
  color: var(--on-error-container);
}

.inert4-ui-mem-badge--pending {
  background: var(--surface-container-highest);
  color: var(--on-surface-variant);
}

/* Detail panel */
.inert4-ui-mem-detail {
  display: flex;
  flex-direction: column;
  gap: 14px;
}

.inert4-ui-mem-detail__head {
  display: flex;
  justify-content: space-between;
  align-items: flex-start;
  gap: 12px;
}

.inert4-ui-mem-detail__name {
  margin: 0;
  font-size: 1.15rem;
  font-weight: 600;
  color: var(--on-surface);
}

.inert4-ui-mem-detail__plan {
  margin: 2px 0 0;
  color: var(--on-surface-variant);
}

.inert4-ui-mem-meta {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 6px 18px;
}

.inert4-ui-mem-meta__row {
  display: flex;
  justify-content: space-between;
  gap: 10px;
  padding-block: 4px;
  border-bottom: 1px solid var(--outline-variant);
}

.inert4-ui-mem-meta__k {
  font-size: 0.8rem;
  color: var(--on-surface-variant);
}

.inert4-ui-mem-meta__v {
  font-size: 0.85rem;
  font-weight: 500;
  color: var(--on-surface);
  text-align: end;
}

/* Split visualizer */
.inert4-ui-mem-split-block {
  display: flex;
  flex-direction: column;
  gap: 10px;
  padding: 14px;
  border-radius: 0.75rem;
  background: var(--surface-container);
  border: 1px solid var(--outline-variant);
}

.inert4-ui-mem-split-block__head {
  display: flex;
  justify-content: space-between;
  align-items: baseline;
  gap: 10px;
}

.inert4-ui-mem-split-block__title {
  margin: 0;
  font-size: 0.95rem;
  color: var(--on-surface);
}

.inert4-ui-mem-split-block__fee {
  font-weight: 700;
  color: var(--primary);
}

.inert4-ui-mem-bar {
  display: flex;
  inline-size: 100%;
  block-size: 1.25rem;
  border-radius: 0.5rem;
  overflow: hidden;
  background: var(--surface-container-highest);
}

.inert4-ui-mem-bar__seg {
  display: block;
  block-size: 100%;
  min-inline-size: 2px;
}

.inert4-ui-mem-bar__seg + .inert4-ui-mem-bar__seg {
  border-inline-start: 1px solid var(--surface);
}

.inert4-ui-mem-split {
  inline-size: 100%;
  border-collapse: collapse;
  font-size: 0.85rem;
}

.inert4-ui-mem-split th,
.inert4-ui-mem-split td {
  padding: 6px 8px;
  text-align: start;
  border-bottom: 1px solid var(--outline-variant);
}

.inert4-ui-mem-split thead th {
  font-size: 0.72rem;
  text-transform: uppercase;
  letter-spacing: 0.04em;
  color: var(--on-surface-variant);
}

.inert4-ui-mem-split__tier {
  display: flex;
  align-items: center;
  gap: 8px;
  font-weight: 500;
  color: var(--on-surface);
}

.inert4-ui-mem-split__swatch,
.inert4-ui-mem-plan__swatch {
  display: inline-block;
  inline-size: 0.75rem;
  block-size: 0.75rem;
  border-radius: 0.2rem;
  flex: 0 0 auto;
}

.inert4-ui-mem-split__pct,
.inert4-ui-mem-split__amt {
  text-align: end;
  white-space: nowrap;
}

.inert4-ui-mem-split__total th,
.inert4-ui-mem-split__total td {
  font-weight: 700;
  color: var(--on-surface);
  border-bottom: none;
}

.inert4-ui-mem-split tfoot td {
  text-align: end;
}

.inert4-ui-mem-split-warn {
  padding: 10px 12px;
  border-radius: 0.5rem;
  background: var(--error-container);
  color: var(--on-error-container);
  font-size: 0.85rem;
}

.inert4-ui-mem-detail__actions {
  display: flex;
  justify-content: flex-end;
}

/* Plan catalogue */
.inert4-ui-mem-plans-block {
  display: flex;
  flex-direction: column;
  gap: 10px;
  margin-block-start: 6px;
  padding-block-start: 14px;
  border-top: 1px solid var(--outline-variant);
}

.inert4-ui-mem-plans-block__title {
  margin: 0;
  font-size: 0.95rem;
  color: var(--on-surface);
}

.inert4-ui-mem-plans {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(220px, 1fr));
  gap: 10px;
}

.inert4-ui-mem-plan {
  display: flex;
  flex-direction: column;
  gap: 8px;
  padding: 12px;
  border-radius: 0.75rem;
  border: 1px solid var(--outline-variant);
  background: var(--surface);
}

.inert4-ui-mem-plan__head {
  display: flex;
  justify-content: space-between;
  align-items: flex-start;
  gap: 8px;
}

.inert4-ui-mem-plan__name {
  margin: 0;
  font-weight: 600;
  font-size: 0.9rem;
  color: var(--on-surface);
}

.inert4-ui-mem-plan__desc {
  margin: 2px 0 0;
  font-size: 0.78rem;
  color: var(--on-surface-variant);
}

.inert4-ui-mem-plan__price {
  text-align: end;
  white-space: nowrap;
}

.inert4-ui-mem-plan__amt {
  font-weight: 700;
  color: var(--on-surface);
}

.inert4-ui-mem-plan__term {
  font-size: 0.75rem;
  color: var(--on-surface-variant);
}

.inert4-ui-mem-plan__legend {
  display: flex;
  flex-wrap: wrap;
  gap: 4px 10px;
}

.inert4-ui-mem-plan__leg {
  display: inline-flex;
  align-items: center;
  gap: 5px;
  font-size: 0.72rem;
  color: var(--on-surface-variant);
}

.inert4-ui-mem-plan__warn {
  margin: 0;
  font-size: 0.78rem;
  color: var(--error);
}

.inert4-ui-mem-empty {
  padding: 18px;
  text-align: center;
  color: var(--on-surface-variant);
  border: 1px dashed var(--outline-variant);
  border-radius: 0.75rem;
}

@media (max-width: 860px) {
  .inert4-ui-mem-cols {
    grid-template-columns: 1fr;
  }
}

@media (max-width: 560px) {
  .inert4-ui-mem-row {
    flex-direction: column;
    align-items: stretch;
  }
  .inert4-ui-mem-row__side {
    justify-content: space-between;
  }
  .inert4-ui-mem-meta {
    grid-template-columns: 1fr;
  }
}

/* ===================================================================== */
/* RankingsPage (P16) — standings board + rating calculation explainer    */
/* ===================================================================== */
.inert4-ui-rank {
  display: flex;
  flex-direction: column;
  gap: 18px;
}

.inert4-ui-rank-header {
  display: flex;
  flex-direction: column;
  gap: 4px;
}

.inert4-ui-rank-eyebrow {
  margin: 0;
  font-size: 0.75rem;
  font-weight: 600;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: var(--primary);
}

.inert4-ui-rank-title {
  margin: 0;
  font-size: 1.6rem;
  line-height: 1.2;
  color: var(--on-surface);
}

.inert4-ui-rank-lead {
  margin: 0;
  max-inline-size: 70ch;
  color: var(--on-surface-variant);
}

.inert4-ui-rank-cols {
  display: grid;
  grid-template-columns: minmax(0, 1fr) minmax(0, 1.15fr);
  gap: 16px;
  align-items: start;
}

.inert4-ui-rank-panel {
  display: flex;
  flex-direction: column;
  gap: 14px;
  padding: 16px;
  border-radius: 1rem;
  background: var(--surface-container-low);
  border: 1px solid var(--outline-variant);
}

.inert4-ui-rank-panel__head {
  display: flex;
  flex-direction: column;
  gap: 2px;
}

.inert4-ui-rank-panel__title {
  margin: 0;
  font-size: 1.1rem;
  color: var(--on-surface);
}

.inert4-ui-rank-panel__sub {
  margin: 0;
  font-size: 0.85rem;
  color: var(--on-surface-variant);
}

/* Filters */
.inert4-ui-rank-filters {
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
}

.inert4-ui-rank-filter {
  display: inline-flex;
  align-items: center;
  gap: 6px;
}

.inert4-ui-rank-filter__n {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-inline-size: 1.25rem;
  padding-inline: 5px;
  border-radius: 1rem;
  font-size: 0.72rem;
  background: var(--surface-container-highest);
  color: var(--on-surface-variant);
}

.inert4-ui-rank-filter--on .inert4-ui-rank-filter__n {
  background: var(--on-primary);
  color: var(--primary);
}

/* Search */
.inert4-ui-rank-search {
  margin: 0;
}

/* Board */
.inert4-ui-rank-board {
  display: flex;
  flex-direction: column;
  gap: 4px;
}

.inert4-ui-rank-row {
  display: flex;
  align-items: center;
  gap: 10px;
  inline-size: 100%;
  padding: 8px 10px;
  border: 1px solid transparent;
  border-radius: 0.75rem;
  background: var(--surface-container);
  color: var(--on-surface);
  text-align: start;
  cursor: pointer;
  transition: background 0.12s ease, border-color 0.12s ease;
}

.inert4-ui-rank-row:hover {
  background: var(--surface-container-high);
}

.inert4-ui-rank-row:focus-visible {
  outline: 2px solid var(--primary);
  outline-offset: 2px;
}

.inert4-ui-rank-row--sel {
  border-color: var(--primary);
  background: var(--surface-container-high);
}

.inert4-ui-rank-row__rank {
  min-inline-size: 1.75rem;
  font-weight: 700;
  font-variant-numeric: tabular-nums;
  text-align: end;
  color: var(--on-surface);
}

.inert4-ui-rank-move {
  inline-size: 1rem;
  font-size: 0.8rem;
  text-align: center;
  color: var(--on-surface-variant);
}

.inert4-ui-rank-move--up {
  color: var(--primary);
}

.inert4-ui-rank-move--down {
  color: var(--error);
}

.inert4-ui-rank-move--new {
  color: var(--tertiary);
}

.inert4-ui-rank-row__avatar {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  inline-size: 2rem;
  block-size: 2rem;
  border-radius: 50%;
  background: var(--surface-container-highest);
  font-size: 1rem;
}

.inert4-ui-rank-row__text {
  flex: 1;
  min-inline-size: 0;
}

.inert4-ui-rank-row__name {
  margin: 0;
  font-weight: 600;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}

.inert4-ui-rank-row__sub {
  margin: 0;
  font-size: 0.78rem;
  color: var(--on-surface-variant);
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}

.inert4-ui-rank-row__nums {
  display: flex;
  flex-direction: column;
  align-items: flex-end;
  gap: 1px;
}

.inert4-ui-rank-row__rating {
  font-weight: 700;
  font-variant-numeric: tabular-nums;
  color: var(--on-surface);
}

.inert4-ui-rank-row__delta {
  font-size: 0.75rem;
  font-variant-numeric: tabular-nums;
  color: var(--on-surface-variant);
}

.inert4-ui-rank-row__delta--up {
  color: var(--primary);
}

.inert4-ui-rank-row__delta--down {
  color: var(--error);
}

.inert4-ui-rank-empty,
.inert4-ui-rank-noplay {
  padding: 16px;
  border-radius: 0.75rem;
  background: var(--surface-container);
  color: var(--on-surface-variant);
  text-align: center;
}

/* Detail / explainer */
.inert4-ui-rank-detail {
  display: flex;
  flex-direction: column;
  gap: 14px;
}

.inert4-ui-rank-detail__head {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 12px;
}

.inert4-ui-rank-detail__name {
  margin: 0;
  font-size: 1.2rem;
  font-weight: 700;
  color: var(--on-surface);
}

.inert4-ui-rank-detail__sub {
  margin: 2px 0 0;
  font-size: 0.85rem;
  color: var(--on-surface-variant);
}

.inert4-ui-rank-detail__score {
  display: flex;
  flex-direction: column;
  align-items: flex-end;
  line-height: 1;
}

.inert4-ui-rank-detail__rating {
  font-size: 2rem;
  font-weight: 800;
  font-variant-numeric: tabular-nums;
  color: var(--primary);
}

.inert4-ui-rank-detail__ratinglabel {
  font-size: 0.7rem;
  text-transform: uppercase;
  letter-spacing: 0.06em;
  color: var(--on-surface-variant);
}

.inert4-ui-rank-meta {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 8px;
}

.inert4-ui-rank-meta__row {
  display: flex;
  flex-direction: column;
  gap: 2px;
  padding: 8px 10px;
  border-radius: 0.6rem;
  background: var(--surface-container);
}

.inert4-ui-rank-meta__k {
  font-size: 0.72rem;
  text-transform: uppercase;
  letter-spacing: 0.05em;
  color: var(--on-surface-variant);
}

.inert4-ui-rank-meta__v {
  font-weight: 600;
  font-variant-numeric: tabular-nums;
  color: var(--on-surface);
}

.inert4-ui-rank-meta__delta--up {
  color: var(--primary);
}

.inert4-ui-rank-meta__delta--down {
  color: var(--error);
}

/* Explainer */
.inert4-ui-rank-explainer {
  display: flex;
  flex-direction: column;
  gap: 10px;
}

.inert4-ui-rank-explainer__head {
  display: flex;
  flex-direction: column;
  gap: 2px;
}

.inert4-ui-rank-explainer__title {
  margin: 0;
  font-size: 1rem;
  color: var(--on-surface);
}

.inert4-ui-rank-explainer__lead {
  margin: 0;
  font-size: 0.82rem;
  color: var(--on-surface-variant);
}

.inert4-ui-rank-steps {
  inline-size: 100%;
  border-collapse: collapse;
  font-size: 0.84rem;
}

.inert4-ui-rank-steps thead th {
  text-align: start;
  padding: 6px 8px;
  font-size: 0.72rem;
  text-transform: uppercase;
  letter-spacing: 0.04em;
  color: var(--on-surface-variant);
  border-block-end: 1px solid var(--outline-variant);
}

.inert4-ui-rank-steps tbody td,
.inert4-ui-rank-steps tbody th {
  padding: 8px;
  border-block-end: 1px solid var(--surface-container-highest);
  vertical-align: middle;
  font-variant-numeric: tabular-nums;
}

.inert4-ui-rank-step__match {
  text-align: start;
  font-weight: 400;
}

.inert4-ui-rank-step__match > div {
  display: inline-flex;
  flex-direction: column;
}

.inert4-ui-rank-step__n {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  inline-size: 1.4rem;
  block-size: 1.4rem;
  margin-inline-end: 8px;
  border-radius: 50%;
  background: var(--surface-container-highest);
  font-size: 0.72rem;
  color: var(--on-surface-variant);
  vertical-align: middle;
}

.inert4-ui-rank-step__opp {
  font-weight: 600;
  color: var(--on-surface);
}

.inert4-ui-rank-step__opprating {
  font-size: 0.74rem;
  color: var(--on-surface-variant);
}

.inert4-ui-rank-tag {
  display: inline-block;
  padding: 1px 8px;
  border-radius: 1rem;
  font-size: 0.72rem;
  font-weight: 600;
}

.inert4-ui-rank-tag--expected {
  background: var(--surface-container-highest);
  color: var(--on-surface-variant);
}

.inert4-ui-rank-tag--upset {
  background: var(--tertiary-container);
  color: var(--on-tertiary-container);
}

.inert4-ui-rank-result {
  font-size: 0.72rem;
}

.inert4-ui-rank-result--win {
  background: var(--primary-container);
  color: var(--on-primary-container);
}

.inert4-ui-rank-result--loss {
  background: var(--error-container);
  color: var(--on-error-container);
}

.inert4-ui-rank-step__pts--up {
  color: var(--primary);
  font-weight: 700;
}

.inert4-ui-rank-step__pts--down {
  color: var(--error);
  font-weight: 700;
}

.inert4-ui-rank-step__running {
  font-weight: 700;
  color: var(--on-surface);
}

/* Reconciliation strip */
.inert4-ui-rank-recon {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 8px;
  padding: 10px 12px;
  border-radius: 0.75rem;
  background: var(--surface-container);
  font-variant-numeric: tabular-nums;
}

.inert4-ui-rank-recon__part {
  color: var(--on-surface-variant);
}

.inert4-ui-rank-recon__op {
  color: var(--on-surface-variant);
  font-weight: 700;
}

.inert4-ui-rank-recon__total {
  font-weight: 700;
  color: var(--primary);
}

/* Exchange-table reference */
.inert4-ui-rank-ref {
  border: 1px solid var(--outline-variant);
  border-radius: 0.75rem;
  padding: 8px 12px;
  background: var(--surface-container);
}

.inert4-ui-rank-ref__summary {
  cursor: pointer;
  font-size: 0.84rem;
  font-weight: 600;
  color: var(--on-surface);
}

.inert4-ui-rank-reftable {
  inline-size: 100%;
  border-collapse: collapse;
  margin-block-start: 8px;
  font-size: 0.8rem;
  font-variant-numeric: tabular-nums;
}

.inert4-ui-rank-reftable th,
.inert4-ui-rank-reftable td {
  padding: 4px 8px;
  text-align: start;
  border-block-end: 1px solid var(--surface-container-highest);
}

.inert4-ui-rank-reftable thead th {
  font-size: 0.72rem;
  text-transform: uppercase;
  letter-spacing: 0.04em;
  color: var(--on-surface-variant);
}

.inert4-ui-rank-detail__actions {
  display: flex;
  justify-content: flex-end;
}

@media (max-width: 920px) {
  .inert4-ui-rank-cols {
    grid-template-columns: 1fr;
  }
}

@media (max-width: 560px) {
  .inert4-ui-rank-meta {
    grid-template-columns: 1fr;
  }
  .inert4-ui-rank-steps {
    font-size: 0.78rem;
  }
  .inert4-ui-rank-step__opprating {
    font-size: 0.7rem;
  }
}
