/* canonical-render.css — B3.1
 * Brand-agnostic styling. Consumes the semantic token layer published by
 * tokens/base.css + the active brand theme files. No hex literals, no font
 * literals, no fallback values — token presence is a precondition.
 * Reference design: prototype/canonical-tickets.html.
 *
 * Theme flip: every --surface-* and --focus-ring var consumed here is
 * defined twice, once per [data-theme="dark|light"] block in
 * tokens/teglo.{dark,light}.css. Toggling data-theme on <html> re-resolves
 * the cascade and re-paints widget cards / inputs / modals automatically.
 * No JS coupling, no per-component theme override needed.
 *
 * Algorithmic palette: --accent-complementary, --accent-analogous-{1,2},
 * --accent-triadic-{1,2}, --accent-split-complementary-{1,2} are emitted
 * at runtime by BrandInheritance (index.html) from the active Lens accent
 * via chroma-js HSL math. Consumed indirectly through colorForKey() in
 * canonical-render.js for multi-category enum rotations.
 */

.cnl-root {
  font-family: var(--font-body);
  font-size: var(--fs-base);
  line-height: var(--lh-normal);
  color: var(--text-primary);
}

.cnl-is-loading {
  cursor: progress;
}
.cnl-is-loading .cnl-table-wrap,
.cnl-is-loading .cnl-widgets {
  opacity: 0.6;
  transition: opacity var(--duration-fast) var(--ease-out);
}

/* ---------- Header ---------- */

.cnl-header {
  display: flex;
  flex-direction: column;
  gap: var(--space-md);
  padding-bottom: var(--space-lg);
  border-bottom: 1px solid var(--surface-card-border);
  margin-bottom: var(--space-lg);
}

.cnl-header-row {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--space-md);
  flex-wrap: wrap;
}
/* Row 1 — title + total-count badge inline. Baseline-align so the
   badge sits with the heading's baseline, not its bounding-box centre. */
.cnl-header-row-title {
  align-items: baseline;
  justify-content: flex-start;
  gap: var(--space-sm);
}
/* Row 2 — primary switcher row. Lens mount on the left, time chips +
   Filters on the right. align-items:center so the three primary
   switchers (all 46px) line up cleanly. */
.cnl-header-row-switchers {
  align-items: center;
  justify-content: space-between;
  gap: var(--space-md);
}
.cnl-header-row-switchers .cnl-controls {
  display: inline-flex;
  align-items: center;
  gap: var(--space-md);
  flex-wrap: wrap;
}
.cnl-lens-mount {
  display: inline-flex;
  align-items: center;
  min-height: 46px;   /* preserve row height even before chrome moves the lens in */
}

/* Total-count badge — replaces the legacy "1-10 of 2141" inline text in
   the title row. Carries just the TOTAL; the start-end window context
   moved to the pager footer (renderPager) so this row reads as a single
   piece of section identity. */
.cnl-total-badge {
  display: inline-flex;
  align-items: center;
  padding: 0 var(--space-sm);
  height: 1.5rem;
  border-radius: var(--radius-pill);
  background: var(--accent-soft);
  color: var(--accent);
  font-family: var(--font-body);
  font-size: var(--fs-sm);
  font-weight: var(--fw-semibold);
  font-variant-numeric: tabular-nums;
  border: 1px solid var(--accent);
  letter-spacing: var(--ls-normal);
}

/* ============================================================
   Component library — tier hierarchy
   ============================================================
   The canonical-render component library establishes formal control
   tiers; future Image-Derived Dashboard Composition (Patent #5)
   composes existing primitives rather than inventing new CSS per
   reference. Three tiers, each on the 8px grid:

   Primary switcher  — 46px, top-of-section, "main switchers"
     SHIPPED — class: .pg-primary-switcher
     Applied to: chrome lens switcher (.bc-btn when relocated into the
     section header), in-section time-range chip group, in-section
     Filters button. Visual baseline: all three at exactly 46px height
     with matching border + padding + radius. Background reads
     --surface-card-bg in the resting state; --accent border + glow
     in the active/open state.

   Secondary switcher — 32px, in-section, smaller dropdowns /
     sub-filters / variant-picker triggers. NOT shipped today.

   Compact control   — 24px or smaller, contextual chrome inside
     popovers / detail panels. NOT shipped today.

   Each tier consumes the same token primitives (--surface-card-bg,
   --surface-card-border, --accent) so brand inheritance flows
   uniformly across tiers. */
.pg-primary-switcher {
  height: 46px;
  box-sizing: border-box;
  display: inline-flex;
  align-items: center;
  padding: 0 var(--space-md);
  background: var(--surface-card-bg);
  border: 1px solid var(--surface-card-border);
  border-radius: var(--radius-pill);
  font-family: var(--font-body);
  font-size: var(--fs-sm);
  color: var(--text-secondary);
  transition: background var(--duration-fast) var(--ease-out),
              border-color var(--duration-fast) var(--ease-out),
              color var(--duration-fast) var(--ease-out);
}
.pg-primary-switcher:focus-visible {
  outline: 2px solid var(--focus-ring);
  outline-offset: 2px;
}

.cnl-title {
  margin: 0;
  font-family: var(--font-display);
  font-size: var(--fs-xl);
  font-weight: var(--fw-semibold);
  letter-spacing: var(--ls-tight);
  text-transform: capitalize;
}

.cnl-controls {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: var(--space-md);
}

/* Filters button — primary-switcher tier instance. Inherits the
   46px height / pill / surface from .pg-primary-switcher; carries its
   own icon + active-state styling on top. */
.cnl-filters-btn {
  appearance: none;
  gap: var(--space-xs);
  font-weight: var(--fw-medium);
  cursor: pointer;
}
.cnl-filters-btn svg { width: 0.875rem; height: 0.875rem; }
.cnl-filters-btn:hover { color: var(--text-primary); border-color: var(--focus-ring); }
.cnl-filters-btn-active {
  background: var(--accent-soft);
  color: var(--accent);
  border-color: var(--accent);
}

/* ---------- Chip groups (time range) ---------- */

/* Chip group — primary-switcher tier instance. Inner padding 0 so
   the chip pills hug the outer pill edge; the 8px gap between chips
   reads as breathing room within the 46px outer height. */
.cnl-chip-group {
  gap: var(--space-xs);
  padding: 0 var(--space-2xs, 4px);
}

.cnl-chip {
  appearance: none;
  border: 0;
  background: transparent;
  color: var(--text-secondary);
  font-family: var(--font-body);
  font-size: var(--fs-sm);
  font-weight: var(--fw-medium);
  padding: var(--space-xs) var(--space-md);
  border-radius: var(--radius-pill);
  cursor: pointer;
  transition: background var(--duration-fast) var(--ease-out),
              color var(--duration-fast) var(--ease-out);
}
.cnl-chip:hover { color: var(--text-primary); }
.cnl-chip[aria-pressed="true"] {
  background: var(--accent);
  color: var(--text-on-accent);
}
.cnl-chip:focus-visible {
  outline: 2px solid var(--focus-ring);
  outline-offset: 2px;
}

/* ---------- Import-in-progress pill ---------- */

.cnl-import-pill {
  display: inline-flex;
  align-items: center;
  gap: var(--space-sm);
  align-self: flex-start;
  padding: var(--space-xs) var(--space-md);
  background: var(--accent-soft);
  border: 1px solid var(--surface-card-border);
  border-radius: var(--radius-pill);
  color: var(--text-primary);
  font-size: var(--fs-sm);
}
.cnl-import-pill[hidden] { display: none; }
.cnl-import-dot {
  width: 0.5rem;
  height: 0.5rem;
  border-radius: var(--radius-circle);
  background: var(--accent-bright);
  box-shadow: 0 0 0 0 var(--accent-glow);
  animation: cnl-pulse 1.6s var(--ease-in-out) infinite;
}
.cnl-import-batch {
  font-family: var(--font-mono);
  font-size: var(--fs-xs);
  color: var(--text-secondary);
}
.cnl-import-progress,
.cnl-import-counts {
  font-variant-numeric: tabular-nums;
  color: var(--text-tertiary);
  font-size: var(--fs-xs);
}

@keyframes cnl-pulse {
  0%   { box-shadow: 0 0 0 0   var(--accent-glow); }
  70%  { box-shadow: 0 0 0 6px transparent; }
  100% { box-shadow: 0 0 0 0   transparent; }
}

/* ---------- Family 2: state primitives ----------
 * Shared loading/empty/error primitives consumed by section-tile bodies
 * and any future surface that needs a neutral placeholder. Token-backed.
 */
.pg-skeleton {
  display: flex;
  flex-direction: column;
  gap: var(--space-sm);
  min-height: 8rem;
}
.pg-skeleton-card {
  display: flex;
  flex-direction: column;
  gap: var(--space-xs);
  padding: var(--space-sm) var(--space-md);
  border: 1px solid var(--surface-card-border);
  border-radius: var(--radius-md);
  background: var(--surface-raised-bg);
}
.pg-skeleton-card-meta {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--space-sm);
  margin-bottom: var(--space-xs);
}
.pg-skeleton-line {
  /* Neutral knocked-back values via existing tokens — brand accent is
     reserved for actionable/state-indicating elements. Matches the
     opacity bands used by the legacy .skeleton / .skeleton-row family
     in index.html (~0.06 base, ~0.10-0.12 highlight) and flips with
     theme automatically. */
  height: 0.75rem;
  background-color: var(--color-border-subtle);
  background-image: linear-gradient(
    90deg,
    var(--color-border-subtle) 0%,
    var(--color-border-default) 50%,
    var(--color-border-subtle) 100%
  );
  background-size: 200% 100%;
  border-radius: var(--radius-md);
  animation: pg-skeleton-shimmer 1.6s var(--ease-in-out) infinite;
}
@media (prefers-reduced-motion: reduce) {
  .pg-skeleton-line { animation: none; }
}
.pg-skeleton-line-short   { width: 60%; }
.pg-skeleton-line-meta    { width: 9rem; height: 0.625rem; }
.pg-skeleton-line-ts      { width: 4.5rem; height: 0.625rem; }
.pg-skeleton-line-summary { width: 100%; }
.pg-skeleton-line-summary-2 { width: 75%; }
@keyframes pg-skeleton-shimmer {
  0%   { background-position: 200% 0; }
  100% { background-position: -200% 0; }
}
.pg-empty-state {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: var(--space-xs);
  text-align: center;
  font-size: var(--fs-sm);
  color: var(--text-secondary);
  line-height: var(--lh-relaxed);
  padding: var(--space-md) var(--space-sm);
  border: 1px dashed var(--surface-card-border);
  border-radius: var(--radius-md);
  background: var(--surface-raised-bg);
}
.pg-empty-state svg {
  width: 1.5rem;
  height: 1.5rem;
  color: var(--text-tertiary);
  opacity: 0.7;
}
.pg-empty-state-title {
  font-weight: var(--fw-semibold);
  color: var(--text-primary);
}
.pg-empty-state-body { max-width: 48ch; margin: 0; }
.pg-error-state {
  display: flex;
  align-items: center;
  gap: var(--space-xs);
  font-size: var(--fs-sm);
  color: var(--status-danger);
  line-height: var(--lh-relaxed);
  padding: var(--space-sm) var(--space-md);
  border: 1px solid var(--status-danger);
  border-radius: var(--radius-md);
  background: var(--surface-raised-bg);
}

/* ---------- Family: .pg-section-tile-* (abstract section-tile shell) ----------
 * Composable shell. Header slot (type pill + section name + lens scope pip),
 * body slot (tile-specific renderer), footer slot (metadata). Variant-lock aware
 * via canonical_section_variant_locks with field_path = 'tile:<tile_type>'.
 * First consumer: .pg-memory-tile-body (Phase 4.5). Cost tile and future
 * contextual tiles (Activity, Compliance, SLA) reuse the same shell.
 * Patent #7 (Section-Aware Memory Hooks) defensibility surface.
 */
.pg-section-tile {
  display: flex;
  flex-direction: column;
  gap: var(--space-md);
  padding: var(--space-md) var(--space-lg);
  background: var(--surface-card-bg);
  border: 1px solid var(--surface-card-border);
  border-radius: var(--radius-lg);
  margin-bottom: var(--space-lg);
  box-shadow: var(--shadow-sm);
  position: relative;
}
.pg-section-tile::before {
  content: '';
  position: absolute;
  top: 0;
  left: 0;
  right: 0;
  height: 2px;
  background: linear-gradient(90deg, var(--accent), var(--accent-soft));
  border-radius: var(--radius-lg) var(--radius-lg) 0 0;
  opacity: 0.5;
}
.pg-section-tile-hd {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: var(--space-md);
  flex-wrap: wrap;
}
.pg-section-tile-hd-text { min-width: 0; flex: 1 1 20rem; }
.pg-section-tile-hd-meta {
  display: inline-flex;
  align-items: center;
  gap: var(--space-xs);
  margin-bottom: var(--space-xs);
  font-size: var(--fs-xs);
  text-transform: uppercase;
  letter-spacing: var(--ls-wide);
  color: var(--text-tertiary);
}
.pg-section-tile-type-pill {
  display: inline-flex;
  align-items: center;
  gap: var(--space-xs);
  font-weight: var(--fw-semibold);
  color: var(--accent);
  padding: 0 var(--space-xs);
  border-radius: var(--radius-md);
  background: var(--accent-soft);
}
.pg-section-tile-scope-pip {
  display: inline-block;
  width: 0.5rem;
  height: 0.5rem;
  border-radius: 50%;
  background: var(--accent);
  opacity: 0.7;
}
.pg-section-tile-title {
  margin: 0 0 var(--space-xs);
  font-family: var(--font-display);
  font-size: var(--fs-md, var(--fs-base));
  font-weight: var(--fw-semibold);
  color: var(--text-primary);
  display: inline-flex;
  align-items: center;
  gap: var(--space-xs);
}
.pg-section-tile-title svg { width: 1.125rem; height: 1.125rem; color: var(--accent); }
.pg-section-tile-sub {
  margin: 0;
  font-size: var(--fs-sm);
  color: var(--text-secondary);
  line-height: var(--lh-relaxed);
  max-width: 56ch;
}
.pg-section-tile-action {
  appearance: none;
  display: inline-flex;
  align-items: center;
  gap: var(--space-xs);
  background: transparent;
  border: 1px solid var(--surface-card-border);
  color: var(--text-secondary);
  font-family: var(--font-body);
  font-size: var(--fs-sm);
  font-weight: var(--fw-medium);
  padding: var(--space-xs) var(--space-md);
  border-radius: var(--radius-md);
  cursor: pointer;
  white-space: nowrap;
  transition: background var(--duration-fast) var(--ease-out),
              color var(--duration-fast) var(--ease-out),
              border-color var(--duration-fast) var(--ease-out);
}
.pg-section-tile-action svg { width: 0.875rem; height: 0.875rem; }
.pg-section-tile-action:hover {
  background: var(--accent-soft);
  color: var(--accent);
  border-color: var(--accent);
}
.pg-section-tile-action:focus-visible {
  outline: 2px solid var(--focus-ring);
  outline-offset: 2px;
}
.pg-section-tile-body {
  display: flex;
  flex-direction: column;
  gap: var(--space-sm);
  max-height: 24rem;
  overflow-y: auto;
}
.pg-section-tile-ft {
  display: flex;
  flex-wrap: wrap;
  gap: var(--space-md);
  font-size: var(--fs-xs);
  color: var(--text-tertiary);
  font-variant-numeric: tabular-nums;
  border-top: 1px solid var(--surface-card-border);
  padding-top: var(--space-sm);
}
.pg-section-tile-ft-item { display: inline-flex; align-items: center; gap: var(--space-xs); }

/* ---------- Family: .pg-memory-tile-body-* (Memory tile body, first consumer) ----------
 * Renders memory_aggregations rows inside the .pg-section-tile shell.
 * Severity colour mapping follows the memory_aggregations.severity CHECK
 * vocabulary (ok, info, warn, danger, critical).
 */
.pg-memory-tile-body-card {
  background: var(--surface-raised-bg);
  border: 1px solid var(--surface-card-border);
  border-radius: var(--radius-md);
  padding: var(--space-sm) var(--space-md);
}
.pg-memory-tile-body-card-meta {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--space-sm);
  margin-bottom: var(--space-xs);
  flex-wrap: wrap;
}
.pg-memory-tile-body-card-lead {
  display: inline-flex;
  align-items: center;
  gap: var(--space-xs);
}
.pg-memory-tile-body-card-severity {
  display: inline-block;
  width: 0.5rem;
  height: 0.5rem;
  border-radius: 50%;
  background: var(--text-tertiary);
}
.pg-memory-tile-body-card-severity-ok       { background: var(--status-ok); }
.pg-memory-tile-body-card-severity-info     { background: var(--accent); }
.pg-memory-tile-body-card-severity-warn     { background: var(--status-warn); }
.pg-memory-tile-body-card-severity-danger,
.pg-memory-tile-body-card-severity-critical { background: var(--status-danger); }
.pg-memory-tile-body-card-kind {
  font-size: var(--fs-xs);
  font-weight: var(--fw-semibold);
  text-transform: uppercase;
  letter-spacing: var(--ls-wide);
  color: var(--text-secondary);
}
.pg-memory-tile-body-card-source-count {
  font-size: var(--fs-xs);
  color: var(--text-tertiary);
  padding: 0 var(--space-xs);
  border-radius: var(--radius-md);
  background: var(--surface-card-bg);
  font-variant-numeric: tabular-nums;
}
.pg-memory-tile-body-card-ts {
  font-size: var(--fs-xs);
  color: var(--text-tertiary);
  font-variant-numeric: tabular-nums;
}
.pg-memory-tile-body-card-summary {
  margin: 0;
  font-size: var(--fs-sm);
  color: var(--text-primary);
  line-height: var(--lh-relaxed);
}

/* ---------- Widgets ---------- */

.cnl-widgets {
  display: grid;
  gap: var(--space-md);
  padding: 0 0 var(--space-lg);
  grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
}

.cnl-widget {
  background: var(--surface-card-bg);
  border: 1px solid var(--surface-card-border);
  border-radius: var(--radius-lg);
  padding: var(--space-md);
  box-shadow: var(--shadow-sm);
}
.cnl-widget { position: relative; }
.cnl-widget-title {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--space-sm);
  font-family: var(--font-display);
  font-size: var(--fs-sm);
  font-weight: var(--fw-semibold);
  color: var(--text-primary);
  margin-bottom: var(--space-sm);
  text-transform: capitalize;
}
.cnl-widget-title-text { min-width: 0; }
.cnl-widget-title small {
  color: var(--text-tertiary);
  font-weight: var(--fw-regular);
  margin-left: var(--space-xs);
  text-transform: lowercase;
}
.cnl-widget-lock-pip {
  color: var(--accent);
  margin-left: var(--space-xs);
  font-size: var(--fs-xs);
}
.cnl-widget-body { display: flex; flex-direction: column; align-items: center; }

/* ---------- Gear icon + variant picker ---------- */

.cnl-gear {
  appearance: none;
  background: transparent;
  border: 1px solid transparent;
  color: var(--text-tertiary);
  padding: var(--space-xs);
  border-radius: var(--radius-md);
  cursor: pointer;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 1.75rem;
  height: 1.75rem;
  transition: color var(--duration-fast) var(--ease-out),
              background var(--duration-fast) var(--ease-out),
              border-color var(--duration-fast) var(--ease-out);
}
.cnl-gear svg { width: 1rem; height: 1rem; }
.cnl-gear:hover:not(:disabled) {
  color: var(--text-primary);
  background: var(--surface-raised-bg);
  border-color: var(--surface-card-border);
}
.cnl-gear:focus-visible {
  outline: 2px solid var(--focus-ring);
  outline-offset: 2px;
}
.cnl-gear:disabled {
  cursor: not-allowed;
  opacity: 0.4;
}

.cnl-variant-picker {
  position: absolute;
  top: calc(var(--space-lg) + 1.5rem);
  right: var(--space-md);
  z-index: var(--z-popover, 50);
  background: var(--surface-modal-bg, var(--surface-card-bg));
  border: 1px solid var(--surface-card-border);
  border-radius: var(--radius-md);
  box-shadow: var(--shadow-lg);
  padding: var(--space-sm);
  min-width: 18rem;
}
.cnl-variant-picker[hidden] { display: none; }
.cnl-variant-picker-hd {
  font-size: var(--fs-xs);
  color: var(--text-tertiary);
  margin-bottom: var(--space-sm);
  text-transform: uppercase;
  letter-spacing: var(--ls-wide);
}
.cnl-variant-picker-row {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: var(--space-sm);
}
.cnl-variant-thumb {
  appearance: none;
  background: var(--surface-raised-bg);
  border: 1px solid var(--surface-card-border);
  color: var(--text-secondary);
  border-radius: var(--radius-md);
  padding: var(--space-sm);
  cursor: pointer;
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: var(--space-xs);
  font-family: var(--font-body);
  font-size: var(--fs-xs);
  transition: background var(--duration-fast) var(--ease-out),
              border-color var(--duration-fast) var(--ease-out),
              color var(--duration-fast) var(--ease-out);
}
.cnl-variant-thumb:hover {
  border-color: var(--focus-ring);
  color: var(--text-primary);
}
.cnl-variant-thumb-active {
  border-color: var(--accent);
  color: var(--accent);
  background: var(--accent-soft);
}
.cnl-variant-thumb-glyph {
  display: inline-flex;
  align-items: center;
  justify-content: center;
}
/* Thumbnail normalization: every variant SVG paints in the same
   text-secondary at 80% opacity so only the SHAPE communicates the
   variant choice, not color contrast. fill:currentColor cascades to
   rects/paths that don't carry an explicit fill attribute (donut + the
   stroked variants set fill="none" explicitly so they stay outlines).
   Active variant pushes opacity to full + recolors to --accent via
   .cnl-variant-thumb-active. */
.cnl-variant-thumb-glyph svg {
  width: 100%;
  height: auto;
  max-width: 3rem;
  fill: currentColor;
  opacity: 0.8;
}
.cnl-variant-thumb-active .cnl-variant-thumb-glyph svg { opacity: 1; }
.cnl-variant-thumb-label { line-height: 1.2; text-align: center; }
.cnl-variant-thumb:focus-visible {
  outline: 2px solid var(--focus-ring);
  outline-offset: 2px;
}

/* Donut */
.cnl-donut { width: 180px; height: 180px; }
.cnl-donut-total {
  font-size: var(--fs-lg);
  font-weight: var(--fw-semibold);
  fill: var(--text-primary);
}
.cnl-donut-sub {
  font-size: var(--fs-xs);
  fill: var(--text-tertiary);
}
.cnl-empty-circle {
  fill: none;
  stroke: var(--surface-card-border);
  stroke-width: 7;
}
.cnl-empty-label {
  font-size: var(--fs-xs);
  fill: var(--text-tertiary);
}

.cnl-legend {
  display: flex; flex-wrap: wrap; gap: var(--space-xs);
  margin-top: var(--space-sm);
  justify-content: center;
  max-width: 220px;
}
.cnl-legend-item {
  font-size: var(--fs-xs);
  display: inline-flex;
  align-items: center;
  gap: var(--space-xs);
  color: var(--text-secondary);
}
.cnl-legend-item i { display: inline-block; width: 0.625rem; height: 0.625rem; border-radius: var(--radius-md); }
.cnl-legend-item b { font-weight: var(--fw-semibold); color: var(--text-primary); }

/* Sparkline */
.cnl-spark { width: 100%; max-width: 320px; height: 96px; }
.cnl-spark-area { fill: var(--accent-soft); }
.cnl-spark-line {
  fill: none;
  stroke: var(--accent);
  stroke-width: 1.5;
  stroke-linejoin: round;
  stroke-linecap: round;
}
/* Axis labels stay low-emphasis (text-tertiary) so they read as context
   not data. Tabular numerics so the y-axis max doesn't dance with width. */
.cnl-spark-axis {
  font-size: var(--fs-xs);
  fill: var(--text-tertiary);
  font-variant-numeric: tabular-nums;
}

/* Bar */
.cnl-bar { width: 100%; max-width: 320px; }
.cnl-bar-label { font-size: var(--fs-xs); fill: var(--text-secondary); }
.cnl-bar-fill { fill: var(--accent); }
.cnl-bar-value { font-size: var(--fs-xs); fill: var(--text-tertiary); }

/* Heatmap — populated cells paint var(--accent) with per-cell
   fill-opacity for intensity. Re-themes (lens / theme / preview) for
   free without re-rendering. */
.cnl-heat { width: 100%; max-width: 320px; }
.cnl-heat-label { font-size: var(--fs-xs); fill: var(--text-tertiary); }
.cnl-heat-cell  { fill: var(--accent); }
.cnl-heat-empty { fill: var(--surface-raised-bg); }

/* Horizontal stacked bar */
.cnl-hstack { width: 100%; max-width: 320px; height: 24px; border-radius: var(--radius-md); overflow: hidden; }

/* Time-bucketed bar */
.cnl-tbar { width: 100%; max-width: 320px; height: 120px; }
.cnl-tbar-fill { fill: var(--accent); }
.cnl-tbar-axis { font-size: var(--fs-xs); fill: var(--text-tertiary); }

/* Mini bar */
.cnl-mini { width: 100%; max-width: 320px; }
.cnl-mini-label { font-size: var(--fs-xs); fill: var(--text-secondary); }
.cnl-mini-value { font-size: var(--fs-xs); fill: var(--text-tertiary); }

/* Histogram */
.cnl-hist { width: 100%; max-width: 320px; height: 120px; }
.cnl-hist-fill { fill: var(--accent); }

/* Count-with-percentage list */
.cnl-cwp { width: 100%; max-width: 320px; display: flex; flex-direction: column; gap: var(--space-xs); }
.cnl-cwp-row {
  display: grid;
  grid-template-columns: 1fr auto auto;
  gap: var(--space-md);
  align-items: baseline;
  padding: var(--space-xs) var(--space-sm);
  background: var(--surface-raised-bg);
  border-radius: var(--radius-md);
}
/* Key text is neutral (text-secondary) — semantic is carried by the
   leading dot. Count is primary data. Pct is a minor stat. */
.cnl-cwp-key {
  font-size: var(--fs-sm);
  font-weight: var(--fw-medium);
  text-transform: capitalize;
  color: var(--text-secondary);
  display: inline-flex;
  align-items: center;
  gap: var(--space-xs);
}
.cnl-cwp-dot {
  display: inline-block;
  width: 0.5rem;
  height: 0.5rem;
  border-radius: var(--radius-circle);
  flex-shrink: 0;
}
.cnl-cwp-count { font-variant-numeric: tabular-nums; color: var(--text-primary); font-weight: var(--fw-semibold); }
.cnl-cwp-pct { font-variant-numeric: tabular-nums; color: var(--text-tertiary); font-size: var(--fs-xs); }

/* Mean / median display */
.cnl-mmd { display: flex; flex-direction: column; align-items: center; gap: var(--space-xs); }
.cnl-mmd-pair { display: flex; gap: var(--space-md); align-items: baseline; }
.cnl-mmd-label { font-size: var(--fs-xs); color: var(--text-tertiary); text-transform: uppercase; letter-spacing: var(--ls-wide); min-width: 4rem; }
.cnl-mmd-value { font-size: var(--fs-xl); font-weight: var(--fw-semibold); color: var(--text-primary); font-variant-numeric: tabular-nums; }
.cnl-mmd-range { font-size: var(--fs-xs); color: var(--text-tertiary); margin-top: var(--space-xs); }

/* Big-number-with-percentage. Headline % is the primary KPI → text-primary
   (was previously accent-tinted; that broke the "accent = chrome / not
   data" rule). Subordinate row keys stay neutral; the colored fill bar
   carries the semantic. A small dot before the dominant label keeps the
   semantic hint at the headline without colouring the number itself. */
.cnl-bnp { width: 100%; max-width: 320px; display: flex; flex-direction: column; align-items: center; gap: var(--space-xs); }
.cnl-bnp-pct {
  font-family: var(--font-display);
  font-size: var(--fs-2xl, var(--fs-xl));
  font-weight: var(--fw-semibold);
  font-variant-numeric: tabular-nums;
  line-height: 1;
  color: var(--text-primary);
}
.cnl-bnp-label {
  font-size: var(--fs-xs);
  color: var(--text-secondary);
  text-transform: capitalize;
  display: inline-flex;
  align-items: center;
  gap: var(--space-xs);
}
.cnl-bnp-dot {
  display: inline-block;
  width: 0.5rem;
  height: 0.5rem;
  border-radius: var(--radius-circle);
}
.cnl-bnp-tail { width: 100%; display: flex; flex-direction: column; gap: var(--space-xs); margin-top: var(--space-sm); }
.cnl-bnp-row { display: grid; grid-template-columns: 6rem 1fr 3rem; gap: var(--space-sm); align-items: center; font-size: var(--fs-xs); }
.cnl-bnp-row-key { color: var(--text-secondary); text-transform: capitalize; }
.cnl-bnp-row-bar { background: var(--surface-raised-bg); border-radius: var(--radius-md); height: 0.5rem; overflow: hidden; }
.cnl-bnp-row-fill { display: block; height: 100%; }
.cnl-bnp-row-pct { font-variant-numeric: tabular-nums; color: var(--text-tertiary); text-align: right; }

/* ---------- Table ---------- */

.cnl-table-wrap {
  overflow-x: auto;
  background: var(--surface-card-bg);
  border: 1px solid var(--surface-card-border);
  border-radius: var(--radius-lg);
  box-shadow: var(--shadow-sm);
}
.cnl-table { width: 100%; border-collapse: collapse; font-size: var(--fs-sm); }
.cnl-table th {
  text-align: left;
  padding: var(--space-sm) var(--space-md);
  background: var(--surface-raised-bg);
  font-family: var(--font-display);
  font-weight: var(--fw-semibold);
  color: var(--text-secondary);
  letter-spacing: var(--ls-wide);
  text-transform: uppercase;
  font-size: var(--fs-xs);
  border-bottom: 1px solid var(--surface-card-border);
  white-space: nowrap;
}
.cnl-table td {
  padding: var(--space-sm) var(--space-md);
  border-bottom: 1px solid var(--surface-card-border);
  vertical-align: top;
  color: var(--text-primary);
}
.cnl-table tbody tr:last-child td { border-bottom: none; }
.cnl-table tbody tr:hover { background: var(--surface-raised-bg); }
.cnl-num { font-variant-numeric: tabular-nums; }

.cnl-row-clickable { cursor: pointer; }
.cnl-row-clickable:focus-visible {
  outline: 2px solid var(--focus-ring);
  outline-offset: -2px;
}

/* ---------- Detail panel (slide-in from right) ---------- */

.cnl-detail-root {
  position: fixed;
  inset: 0;
  pointer-events: none;
  z-index: var(--z-modal, 100);
}
.cnl-detail-backdrop {
  position: absolute;
  inset: 0;
  background: var(--surface-modal-overlay, rgba(0, 0, 0, 0.5));
  opacity: 0;
  transition: opacity var(--duration-medium) var(--ease-out);
  pointer-events: none;
}
.cnl-detail-panel {
  position: absolute;
  top: 0;
  right: 0;
  height: 100%;
  width: min(34rem, 100%);
  background: var(--surface-modal-bg, var(--surface-card-bg));
  border-left: 1px solid var(--surface-card-border);
  box-shadow: var(--shadow-lg);
  transform: translateX(100%);
  transition: transform var(--duration-medium) var(--ease-out);
  pointer-events: none;
  overflow-y: auto;
  display: flex;
  flex-direction: column;
}
.cnl-detail-root.cnl-detail-open { pointer-events: auto; }
.cnl-detail-root.cnl-detail-open .cnl-detail-backdrop {
  opacity: 1;
  pointer-events: auto;
}
.cnl-detail-root.cnl-detail-open .cnl-detail-panel {
  transform: translateX(0);
  pointer-events: auto;
}

.cnl-detail-hd {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--space-md);
  padding: var(--space-md) var(--space-lg);
  border-bottom: 1px solid var(--surface-card-border);
}
.cnl-detail-hd-meta { display: flex; align-items: center; gap: var(--space-sm); min-width: 0; }
.cnl-detail-lens {
  display: inline-flex;
  align-items: center;
  gap: var(--space-xs);
  font-size: var(--fs-xs);
  color: var(--text-tertiary);
  text-transform: uppercase;
  letter-spacing: var(--ls-wide);
}
.cnl-detail-lens-dot {
  display: inline-block;
  width: 0.5rem;
  height: 0.5rem;
  border-radius: var(--radius-circle);
  background: var(--accent);
}
.cnl-detail-lens-label { color: var(--text-secondary); text-transform: none; letter-spacing: 0; font-size: var(--fs-sm); }

.cnl-detail-ask-orbi {
  appearance: none;
  margin-left: auto;
  background: var(--accent-bg);
  border: 1px solid var(--color-accent);
  color: var(--color-accent);
  padding: var(--space-xs) var(--space-md);
  border-radius: var(--radius-pill, 999px);
  cursor: pointer;
  font-family: var(--font-mono);
  font-size: var(--fs-xs);
  letter-spacing: var(--ls-wide);
  text-transform: uppercase;
  white-space: nowrap;
  transition: background var(--duration-fast) var(--ease-out),
              color var(--duration-fast) var(--ease-out);
}
.cnl-detail-ask-orbi:hover {
  background: var(--color-accent);
  color: var(--color-text-inverse);
}
.cnl-detail-ask-orbi:focus-visible {
  outline: 2px solid var(--focus-ring);
  outline-offset: 2px;
}

.cnl-detail-close {
  appearance: none;
  background: transparent;
  border: 1px solid transparent;
  color: var(--text-tertiary);
  padding: var(--space-xs);
  border-radius: var(--radius-md);
  cursor: pointer;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 2rem;
  height: 2rem;
  transition: color var(--duration-fast) var(--ease-out),
              background var(--duration-fast) var(--ease-out),
              border-color var(--duration-fast) var(--ease-out);
}
.cnl-detail-close svg { width: 1.25rem; height: 1.25rem; }
.cnl-detail-close:hover {
  color: var(--text-primary);
  background: var(--surface-raised-bg);
  border-color: var(--surface-card-border);
}
.cnl-detail-close:focus-visible {
  outline: 2px solid var(--focus-ring);
  outline-offset: 2px;
}

.cnl-detail-source {
  display: flex;
  flex-direction: column;
  gap: var(--space-xs);
  padding: var(--space-md) var(--space-lg) 0;
}
.cnl-detail-source-label {
  font-size: var(--fs-xs);
  color: var(--text-tertiary);
  text-transform: uppercase;
  letter-spacing: var(--ls-wide);
}
.cnl-detail-source-id {
  font-family: var(--font-mono);
  font-size: var(--fs-sm);
  color: var(--text-primary);
  background: var(--surface-raised-bg);
  padding: var(--space-xs) var(--space-sm);
  border-radius: var(--radius-md);
  align-self: flex-start;
}

.cnl-detail-subject {
  margin: var(--space-md) var(--space-lg) var(--space-md);
  font-family: var(--font-display);
  font-size: var(--fs-lg);
  font-weight: var(--fw-semibold);
  color: var(--text-primary);
  line-height: var(--lh-tight);
}

.cnl-detail-fields {
  display: flex;
  flex-direction: column;
  gap: var(--space-sm);
  padding: 0 var(--space-lg) var(--space-md);
}
.cnl-detail-row {
  display: grid;
  grid-template-columns: 8rem 1fr;
  gap: var(--space-md);
  align-items: baseline;
  padding: var(--space-xs) 0;
  border-bottom: 1px dashed var(--surface-card-border);
}
.cnl-detail-row:last-child { border-bottom: none; }
.cnl-detail-label {
  font-size: var(--fs-xs);
  color: var(--text-tertiary);
  text-transform: uppercase;
  letter-spacing: var(--ls-wide);
}
.cnl-detail-label small {
  display: block;
  margin-top: 0.125rem;
  font-size: 0.625rem;
  color: var(--text-disabled);
  text-transform: none;
  letter-spacing: 0;
  font-weight: var(--fw-regular);
}
.cnl-detail-value { font-size: var(--fs-sm); color: var(--text-primary); min-width: 0; word-break: break-word; }
.cnl-detail-ts { color: var(--text-primary); font-variant-numeric: tabular-nums; }
.cnl-detail-empty { color: var(--text-disabled); }
.cnl-detail-prose { margin: 0; line-height: var(--lh-relaxed); color: var(--text-secondary); }
.cnl-detail-json {
  margin: 0;
  font-family: var(--font-mono);
  font-size: var(--fs-xs);
  background: var(--surface-raised-bg);
  border: 1px solid var(--surface-card-border);
  border-radius: var(--radius-md);
  padding: var(--space-sm);
  overflow-x: auto;
  white-space: pre-wrap;
  word-break: break-word;
  color: var(--text-secondary);
  max-height: 18rem;
}

.cnl-detail-extras {
  margin: 0 var(--space-lg) var(--space-lg);
  border-top: 1px solid var(--surface-card-border);
  padding-top: var(--space-md);
}
.cnl-detail-extras > summary {
  cursor: pointer;
  font-size: var(--fs-sm);
  font-weight: var(--fw-medium);
  color: var(--text-secondary);
  padding: var(--space-xs) 0;
  list-style: none;
}
.cnl-detail-extras > summary::-webkit-details-marker { display: none; }
.cnl-detail-extras > summary::before {
  content: '▸';
  display: inline-block;
  margin-right: var(--space-xs);
  color: var(--text-tertiary);
  transition: transform var(--duration-fast) var(--ease-out);
}
.cnl-detail-extras[open] > summary::before { transform: rotate(90deg); }
.cnl-detail-extras-body {
  display: flex;
  flex-direction: column;
  gap: var(--space-sm);
  padding-top: var(--space-sm);
}

/* ---------- Pager ---------- */

.cnl-pager {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: var(--space-md);
  padding: var(--space-md) 0;
  color: var(--text-secondary);
  font-size: var(--fs-sm);
}
.cnl-page-btn {
  appearance: none;
  background: var(--surface-raised-bg);
  border: 1px solid var(--surface-card-border);
  color: var(--text-primary);
  font-family: var(--font-body);
  font-size: var(--fs-sm);
  font-weight: var(--fw-medium);
  padding: var(--space-xs) var(--space-md);
  border-radius: var(--radius-md);
  cursor: pointer;
  transition: background var(--duration-fast) var(--ease-out),
              border-color var(--duration-fast) var(--ease-out);
}
.cnl-page-btn:hover:not(:disabled) {
  border-color: var(--focus-ring);
}
.cnl-page-btn:focus-visible {
  outline: 2px solid var(--focus-ring);
  outline-offset: 2px;
}
.cnl-page-btn:disabled {
  color: var(--text-disabled);
  cursor: not-allowed;
  opacity: 0.6;
}
.cnl-page-label {
  font-variant-numeric: tabular-nums;
  color: var(--text-tertiary);
}
/* Start-end window context — moved here from the title row when the
   header was reorganised so the title row reads as a single piece
   of section identity. */
.cnl-page-window {
  font-variant-numeric: tabular-nums;
  color: var(--text-tertiary);
  font-size: var(--fs-xs);
}

.cnl-page-size {
  display: inline-flex;
  align-items: center;
  gap: var(--space-xs);
  color: var(--text-tertiary);
  font-size: var(--fs-sm);
}
.cnl-page-size select {
  appearance: none;
  background: var(--surface-raised-bg);
  border: 1px solid var(--surface-card-border);
  color: var(--text-primary);
  font-family: var(--font-body);
  font-size: var(--fs-sm);
  font-weight: var(--fw-medium);
  padding: var(--space-xs) var(--space-md);
  border-radius: var(--radius-md);
  cursor: pointer;
  transition: border-color var(--duration-fast) var(--ease-out);
}
.cnl-page-size select:hover { border-color: var(--focus-ring); }
.cnl-page-size select:focus-visible {
  outline: 2px solid var(--focus-ring);
  outline-offset: 2px;
}

/* ---------- Badges (enum + boolean) ---------- */

.cnl-badge {
  display: inline-block;
  padding: 0 var(--space-xs);
  border-radius: var(--radius-md);
  font-size: var(--fs-xs);
  font-weight: var(--fw-medium);
  line-height: 1.8;
}
.cnl-badge-true  { background: var(--accent-soft); color: var(--status-ok); }
.cnl-badge-false { background: var(--accent-soft); color: var(--status-danger); }
.cnl-enum        { background: var(--accent-soft); color: var(--text-primary); }
.cnl-enum-open, .cnl-enum-new                          { color: var(--status-warn); }
.cnl-enum-pending, .cnl-enum-in-progress               { color: var(--text-primary); }
.cnl-enum-resolved, .cnl-enum-closed, .cnl-enum-done   { color: var(--status-ok); }
.cnl-enum-high, .cnl-enum-urgent, .cnl-enum-critical   { color: var(--status-danger); }
.cnl-enum-medium, .cnl-enum-normal                     { color: var(--status-warn); }
.cnl-enum-low                                          { color: var(--text-tertiary); }

/* ---------- Empty + error states ---------- */

.cnl-empty {
  padding: var(--space-xl);
  text-align: center;
  color: var(--text-tertiary);
  font-size: var(--fs-sm);
  line-height: var(--lh-relaxed);
}
.cnl-empty strong { color: var(--text-primary); text-transform: capitalize; }
.cnl-empty em { color: var(--text-tertiary); font-style: normal; font-size: var(--fs-xs); }

.cnl-error {
  padding: var(--space-md);
  background: var(--accent-soft);
  color: var(--status-danger);
  border: 1px solid var(--surface-card-border);
  border-radius: var(--radius-md);
  margin: var(--space-md) 0;
  font-size: var(--fs-sm);
}
.cnl-error code {
  background: var(--surface-raised-bg);
  padding: 0 var(--space-xs);
  border-radius: var(--radius-md);
  font-family: var(--font-mono);
  font-size: var(--fs-xs);
  color: var(--text-primary);
}

/* ---------- Toast ---------- */

.cnl-toast {
  position: fixed;
  bottom: var(--space-lg);
  right: var(--space-lg);
  z-index: var(--z-toast);
  background: var(--surface-modal-bg);
  border: 1px solid var(--surface-card-border);
  color: var(--text-primary);
  font-family: var(--font-body);
  font-size: var(--fs-sm);
  padding: var(--space-sm) var(--space-md);
  border-radius: var(--radius-md);
  box-shadow: var(--shadow-lg);
  transition: opacity var(--duration-medium) var(--ease-out),
              transform var(--duration-medium) var(--ease-out);
}
.cnl-toast-out { opacity: 0; transform: translateY(8px); }

/* ---------- Facet panel (Step 6) ---------- */

.cnl-facet-root {
  position: fixed;
  inset: 0;
  pointer-events: none;
  z-index: var(--z-modal, 100);
}
.cnl-facet-backdrop {
  position: absolute;
  inset: 0;
  background: var(--surface-modal-overlay, rgba(0, 0, 0, 0.5));
  opacity: 0;
  transition: opacity var(--duration-medium) var(--ease-out);
  pointer-events: none;
}
/* Facet panel slides in from the RIGHT to share the right-side panel
   surface with the detail panel. Mutual exclusion is enforced in JS
   (openDetailPanel closes facet; opening facet closes detail) so the
   two panels never overlap. */
.cnl-facet-panel {
  position: absolute;
  top: 0;
  right: 0;
  height: 100%;
  width: min(20rem, 100%);
  background: var(--surface-modal-bg, var(--surface-card-bg));
  border-left: 1px solid var(--surface-card-border);
  box-shadow: var(--shadow-lg);
  transform: translateX(100%);
  transition: transform var(--duration-medium) var(--ease-out);
  pointer-events: none;
  overflow-y: auto;
  display: flex;
  flex-direction: column;
}
.cnl-facet-root.cnl-facet-open { pointer-events: auto; }
.cnl-facet-root.cnl-facet-open .cnl-facet-backdrop { opacity: 1; pointer-events: auto; }
.cnl-facet-root.cnl-facet-open .cnl-facet-panel { transform: translateX(0); pointer-events: auto; }

.cnl-facet-hd {
  display: grid;
  grid-template-columns: 1fr auto auto;
  align-items: center;
  gap: var(--space-sm);
  padding: var(--space-md) var(--space-lg);
  border-bottom: 1px solid var(--surface-card-border);
}
.cnl-facet-title {
  margin: 0;
  font-family: var(--font-display);
  font-size: var(--fs-md, var(--fs-base));
  font-weight: var(--fw-semibold);
  color: var(--text-primary);
}
.cnl-facet-reset {
  appearance: none;
  background: transparent;
  border: 1px solid var(--surface-card-border);
  color: var(--text-secondary);
  font-family: var(--font-body);
  font-size: var(--fs-xs);
  font-weight: var(--fw-medium);
  padding: var(--space-xs) var(--space-sm);
  border-radius: var(--radius-md);
  cursor: pointer;
  transition: color var(--duration-fast) var(--ease-out),
              border-color var(--duration-fast) var(--ease-out);
}
.cnl-facet-reset:hover:not(:disabled) { color: var(--text-primary); border-color: var(--focus-ring); }
.cnl-facet-reset:disabled { color: var(--text-disabled); cursor: not-allowed; }
.cnl-facet-close {
  appearance: none;
  background: transparent;
  border: 1px solid transparent;
  color: var(--text-tertiary);
  padding: var(--space-xs);
  border-radius: var(--radius-md);
  cursor: pointer;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 2rem;
  height: 2rem;
}
.cnl-facet-close svg { width: 1.125rem; height: 1.125rem; }
.cnl-facet-close:hover { color: var(--text-primary); background: var(--surface-raised-bg); border-color: var(--surface-card-border); }
.cnl-facet-close:focus-visible, .cnl-facet-reset:focus-visible {
  outline: 2px solid var(--focus-ring);
  outline-offset: 2px;
}

.cnl-facet-body {
  flex: 1;
  padding: var(--space-md) var(--space-lg) var(--space-xl);
  display: flex;
  flex-direction: column;
  gap: var(--space-lg);
}

.cnl-facet-group { display: flex; flex-direction: column; gap: var(--space-xs); }
.cnl-facet-group-hd {
  font-size: var(--fs-xs);
  font-weight: var(--fw-semibold);
  color: var(--text-tertiary);
  text-transform: uppercase;
  letter-spacing: var(--ls-wide);
  padding-bottom: var(--space-xs);
  border-bottom: 1px solid var(--surface-card-border);
}

.cnl-facet-opts { display: flex; flex-direction: column; }
.cnl-facet-opt {
  display: grid;
  grid-template-columns: 1rem 1fr auto;
  gap: var(--space-sm);
  align-items: center;
  padding: var(--space-xs) var(--space-sm);
  border-radius: var(--radius-md);
  cursor: pointer;
  font-size: var(--fs-sm);
  color: var(--text-secondary);
  transition: background var(--duration-fast) var(--ease-out),
              color var(--duration-fast) var(--ease-out);
}
.cnl-facet-opt:hover { background: var(--surface-raised-bg); color: var(--text-primary); }
.cnl-facet-opt-on { color: var(--text-primary); }
.cnl-facet-opt input[type="checkbox"] {
  appearance: none;
  width: 1rem;
  height: 1rem;
  border: 1px solid var(--surface-card-border);
  border-radius: var(--radius-sm, 0.25rem);
  background: var(--surface-raised-bg);
  cursor: pointer;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  position: relative;
}
.cnl-facet-opt input[type="checkbox"]:checked {
  background: var(--accent);
  border-color: var(--accent);
}
.cnl-facet-opt input[type="checkbox"]:checked::after {
  content: '';
  width: 0.625rem;
  height: 0.625rem;
  background-image: linear-gradient(45deg, transparent 35%, var(--text-on-accent, #0a0b0f) 35%, var(--text-on-accent, #0a0b0f) 45%, transparent 45%),
                    linear-gradient(-45deg, transparent 55%, var(--text-on-accent, #0a0b0f) 55%, var(--text-on-accent, #0a0b0f) 65%, transparent 65%);
}
.cnl-facet-opt input[type="checkbox"]:focus-visible {
  outline: 2px solid var(--focus-ring);
  outline-offset: 2px;
}
.cnl-facet-opt-name { text-transform: capitalize; word-break: break-word; }
.cnl-facet-opt-count {
  font-variant-numeric: tabular-nums;
  color: var(--text-tertiary);
  font-size: var(--fs-xs);
}

.cnl-facet-empty {
  font-size: var(--fs-sm);
  color: var(--text-tertiary);
  padding: var(--space-md);
  text-align: center;
}
