/* Avakode Hub: the cabinet in the hub tokens (lane 4.7, plan §3).
   The cabinet pages are the parent's templates (page-dashboard*, login, signup, forgot-password, reset-password, connect).
   The palette (palettes/avakode-v2.json, through the parent's forge_palette filter, inc/cabinet.php) recolors everything
   the parent reads from its variables. THIS sheet holds what the palette cannot reach: colors written into the parent's
   stylesheets and templates. Loaded on the cabinet pages only; every rule sits under body.hub-cabinet (and .fdry-light, the
   parent's «light content» skin that inc/cabinet.php puts on every cabinet page, so that the cabinet is one skin).
   Two skins (lane 5.20): /dashboard/* is LIGHT (body.hub-cabinet-light, the palette is palettes/avakode-cabinet-light.json), the
   sign-in pages and /connect are DARK. Every rule that paints with the dark tokens sits under the dark-skin selector
   body.hub-cabinet:not(.hub-cabinet-light); the rules of the light skin (body.hub-cabinet.hub-cabinet-light) read the palette
   variables the parent prints; the shared rules (fit on narrow screens) carry no color of the dark tokens.
   No color of its own: the tokens below repeat tokens.css (declared on .hub-chrome / body.hub-page there; the cabinet body is
   neither), white is the text on the primary fill, statuses and tints come from the palette variables (--status-*).
   Not touched on purpose: shadows of the parent's blocks (craft: box-shadow only in focus rules; on this background they are
   dark on dark), the product colors the parent paints by data (download cards, support dots, buy tabs). */

/* The faces: the same on both skins. */
body.hub-cabinet {
  --display: 'Bricolage Grotesque', system-ui, sans-serif;
  --mono: 'JetBrains Mono', ui-monospace, SFMono-Regular, Menlo, monospace;
}

/* The tokens of the DARK skin (the sign-in pages and /connect). A light page (body.hub-cabinet-light, /dashboard/*) does not
   declare them: it reads the light palette the parent prints on :root, and every rule below that reads these names sits under
   the dark-skin selector (tests/cabinet.test.mjs). */
body.hub-cabinet:not(.hub-cabinet-light) {
  --bg: #07060B;
  --bg-2: #0E0C16;
  --fg: #F3F0FC;
  --fg-2: #A9A3C4;
  --muted: #7F79A0;
  --signal: #7C5CFC;
  --signal-hot: #A98BFF;
  --signal-fill: #7757F8;
  --line: rgba(255,255,255,.09);

  /* The parent reads these as COLORS with a light fallback (var(--text, #1A1A2E) is ink; the hub's --text is a font and is
     not declared here), so on the cabinet they get the dark values. */
  --text: var(--fg);
  --ink: var(--fg);
  --forge-text: var(--fg);
  --forge-muted: var(--muted);
  --forge-surface: var(--bg-2);
  --forge-card: var(--bg-2);
  --forge-border: var(--line);
  --forge-accent: var(--signal);
  --surface-alt: var(--bg);
  --surface-2: var(--bg-2);
  --border-strong: var(--muted);
  --accent-strong: var(--signal-hot);
}

body.hub-cabinet:not(.hub-cabinet-light),
body.hub-cabinet:not(.hub-cabinet-light).foundry,
body.hub-cabinet:not(.hub-cabinet-light).foundry.fdry-light {
  background: var(--bg);
  color: var(--fg);
}

/* ---- page backgrounds ---- */
body.hub-cabinet:not(.hub-cabinet-light).fdry-light .forge-auth,
body.hub-cabinet:not(.hub-cabinet-light).fdry-light .forge-main.dash,
body.hub-cabinet:not(.hub-cabinet-light).fdry-light .forge-main.dash-buy-page,
body.hub-cabinet:not(.hub-cabinet-light).fdry-light .forge-dashboard {
  background: var(--bg);
}
body.hub-cabinet:not(.hub-cabinet-light).fdry-light .foundry .dash-buy-page .fg-wall-sec,
body.hub-cabinet:not(.hub-cabinet-light).fdry-light .fg-wall-sec {
  background: var(--bg);
  color: var(--fg);
}

/* ---- surfaces: cards and bars on --bg-2 with a hairline ---- */
body.hub-cabinet:not(.hub-cabinet-light).fdry-light .forge-dashboard__nav,
body.hub-cabinet:not(.hub-cabinet-light).fdry-light .dash-journey__step,
body.hub-cabinet:not(.hub-cabinet-light).fdry-light .dash-site,
body.hub-cabinet:not(.hub-cabinet-light).fdry-light .dash-attention__item,
body.hub-cabinet:not(.hub-cabinet-light).fdry-light .credits-card,
body.hub-cabinet:not(.hub-cabinet-light).fdry-light .forge-auth__card,
body.hub-cabinet:not(.hub-cabinet-light).fdry-light .dash-buy__tabs,
body.hub-cabinet:not(.hub-cabinet-light).fdry-light .dash-buy__tier,
body.hub-cabinet:not(.hub-cabinet-light).fdry-light .dash-buy__packs,
body.hub-cabinet:not(.hub-cabinet-light).fdry-light .dash-card,
body.hub-cabinet:not(.hub-cabinet-light).fdry-light .dash-table-wrap,
body.hub-cabinet:not(.hub-cabinet-light).fdry-light .dash-dl-card,
body.hub-cabinet:not(.hub-cabinet-light).fdry-light .dash-empty,
body.hub-cabinet:not(.hub-cabinet-light).fdry-light .support-card,
body.hub-cabinet:not(.hub-cabinet-light).fdry-light .support-form-wrap,
body.hub-cabinet:not(.hub-cabinet-light).fdry-light .support-doc-link,
body.hub-cabinet:not(.hub-cabinet-light).fdry-light .forge-billing-card,
body.hub-cabinet:not(.hub-cabinet-light).fdry-light .fl-card,
body.hub-cabinet:not(.hub-cabinet-light).fdry-light .dash-collapse {
  background: var(--bg-2);
  border-color: var(--line);
}
body.hub-cabinet:not(.hub-cabinet-light).fdry-light .dash-journey__step,
body.hub-cabinet:not(.hub-cabinet-light).fdry-light .dash-attention__item {
  border-left-width: 3px;
}
body.hub-cabinet:not(.hub-cabinet-light).fdry-light .dash-journey__step[data-state="done"] {
  border-left-color: var(--status-success);
}
body.hub-cabinet:not(.hub-cabinet-light).fdry-light .dash-journey__step[data-state="waiting_webhook"],
body.hub-cabinet:not(.hub-cabinet-light).fdry-light .dash-journey__step[data-state="check_email"],
body.hub-cabinet:not(.hub-cabinet-light).fdry-light .dash-journey__step[data-state="pending"],
body.hub-cabinet:not(.hub-cabinet-light).fdry-light .dash-attention__item {
  border-left-color: var(--status-warning);
}
body.hub-cabinet:not(.hub-cabinet-light).fdry-light .dash-journey__step[data-state="network_error"] {
  border-left-color: var(--status-error);
}

/* ---- insets: wells, tab trays, table heads on --bg ---- */
body.hub-cabinet:not(.hub-cabinet-light).fdry-light .credits-meta,
body.hub-cabinet:not(.hub-cabinet-light).fdry-light .credits-pack-btn,
body.hub-cabinet:not(.hub-cabinet-light).fdry-light .credits-breakdown-row,
body.hub-cabinet:not(.hub-cabinet-light).fdry-light .credits-site-row,
body.hub-cabinet:not(.hub-cabinet-light).fdry-light .dash-buy__pack,
body.hub-cabinet:not(.hub-cabinet-light).fdry-light .support-btn,
body.hub-cabinet:not(.hub-cabinet-light).fdry-light .support-form__file-item,
body.hub-cabinet:not(.hub-cabinet-light).fdry-light .support-form-empty,
body.hub-cabinet:not(.hub-cabinet-light).fdry-light .fl-key-row,
body.hub-cabinet:not(.hub-cabinet-light).fdry-light .fl-tabs,
body.hub-cabinet:not(.hub-cabinet-light).fdry-light .forge-auth__tabs,
body.hub-cabinet:not(.hub-cabinet-light).fdry-light .dash-table th,
body.hub-cabinet:not(.hub-cabinet-light).fdry-light .forge-dashboard__nav-refresh:hover:not(:disabled) {
  background: var(--bg);
  border-color: var(--line);
}
body.hub-cabinet:not(.hub-cabinet-light).fdry-light .dash-table th {
  color: var(--muted);
}
body.hub-cabinet:not(.hub-cabinet-light).fdry-light .forge-dashboard__subnav-link:hover,
body.hub-cabinet:not(.hub-cabinet-light).fdry-light .forge-dashboard__subnav-link.is-current,
body.hub-cabinet:not(.hub-cabinet-light).fdry-light .forge-auth__tab.is-active,
body.hub-cabinet:not(.hub-cabinet-light).fdry-light .fl-tab.is-current {
  background: var(--bg-2);
  border-color: var(--line);
}
body.hub-cabinet:not(.hub-cabinet-light).fdry-light .forge-auth__tab,
body.hub-cabinet:not(.hub-cabinet-light).fdry-light .fl-tab,
body.hub-cabinet:not(.hub-cabinet-light).fdry-light .dash-rail,
body.hub-cabinet:not(.hub-cabinet-light).fdry-light .dash-buy__tab,
body.hub-cabinet:not(.hub-cabinet-light).fdry-light .dash-buy__tier-cta.is-downgrade,
body.hub-cabinet:not(.hub-cabinet-light).fdry-light .dash-buy__pack-cta {
  color: var(--muted);
}
body.hub-cabinet:not(.hub-cabinet-light).fdry-light .forge-auth__tab:hover,
body.hub-cabinet:not(.hub-cabinet-light).fdry-light .fl-tab:hover:not(.is-current),
body.hub-cabinet:not(.hub-cabinet-light).fdry-light .fl-tab.is-current,
body.hub-cabinet:not(.hub-cabinet-light).fdry-light .forge-auth__tab.is-active,
body.hub-cabinet:not(.hub-cabinet-light).fdry-light .dash-buy__tab:hover {
  color: var(--fg);
}
body.hub-cabinet:not(.hub-cabinet-light).fdry-light .dash-buy__tab:hover {
  background: var(--bg);
}
body.hub-cabinet:not(.hub-cabinet-light).fdry-light .dash-buy__tier.is-featured {
  border-color: var(--panel-accent, var(--signal));
}
body.hub-cabinet:not(.hub-cabinet-light).fdry-light .forge-billing-card:hover,
body.hub-cabinet:not(.hub-cabinet-light).fdry-light .forge-dashboard__nav-refresh:hover:not(:disabled) {
  border-color: var(--muted);
}

/* ---- form controls ---- */
body.hub-cabinet:not(.hub-cabinet-light).fdry-light .forge-auth__field input,
body.hub-cabinet:not(.hub-cabinet-light).fdry-light .forge-auth__check input[type="checkbox"],
body.hub-cabinet:not(.hub-cabinet-light).fdry-light .dash-checkout__email input[type=email],
body.hub-cabinet:not(.hub-cabinet-light).fdry-light .support-form input[type="email"],
body.hub-cabinet:not(.hub-cabinet-light).fdry-light .support-form input[type="text"],
body.hub-cabinet:not(.hub-cabinet-light).fdry-light .support-form select,
body.hub-cabinet:not(.hub-cabinet-light).fdry-light .support-form textarea,
body.hub-cabinet:not(.hub-cabinet-light).fdry-light .support-form input[type="file"],
body.hub-cabinet:not(.hub-cabinet-light).fdry-light .support-form input[type="file"]:hover,
body.hub-cabinet:not(.hub-cabinet-light).fdry-light .tel-controls select,
body.hub-cabinet:not(.hub-cabinet-light).fdry-light .tel-ask textarea {
  background: var(--bg);
  color: var(--fg);
  border-color: var(--muted);
}
body.hub-cabinet:not(.hub-cabinet-light).fdry-light .forge-auth__field input::placeholder,
body.hub-cabinet:not(.hub-cabinet-light).fdry-light .support-form input::placeholder,
body.hub-cabinet:not(.hub-cabinet-light).fdry-light .support-form textarea::placeholder,
body.hub-cabinet:not(.hub-cabinet-light).fdry-light .dash-checkout__email input::placeholder,
body.hub-cabinet:not(.hub-cabinet-light).fdry-light .tel-ask textarea::placeholder {
  color: var(--muted);
  opacity: 1;
}
body.hub-cabinet:not(.hub-cabinet-light).fdry-light .forge-auth__field input:focus,
body.hub-cabinet:not(.hub-cabinet-light).fdry-light .support-form input:focus,
body.hub-cabinet:not(.hub-cabinet-light).fdry-light .support-form select:focus,
body.hub-cabinet:not(.hub-cabinet-light).fdry-light .support-form textarea:focus {
  border-color: var(--signal-hot);
}
body.hub-cabinet:not(.hub-cabinet-light).fdry-light .forge-auth__check input[type="checkbox"]:checked {
  background: var(--signal-fill);
  border-color: var(--signal-fill);
}
body.hub-cabinet:not(.hub-cabinet-light).fdry-light .support-form select option {
  background: var(--bg-2);
  color: var(--fg);
}
body.hub-cabinet:not(.hub-cabinet-light).fdry-light .support-form input[type="file"]::file-selector-button,
body.hub-cabinet:not(.hub-cabinet-light).fdry-light .support-form input[type="file"]::-webkit-file-upload-button {
  background: var(--bg-2);
  color: var(--fg);
  border-color: var(--line);
}
body.hub-cabinet:not(.hub-cabinet-light).fdry-light .support-form input[type="file"]:hover::file-selector-button,
body.hub-cabinet:not(.hub-cabinet-light).fdry-light .support-form input[type="file"]:hover::-webkit-file-upload-button {
  background: var(--signal-fill);
  color: #fff;
  border-color: var(--signal-fill);
}
body.hub-cabinet:not(.hub-cabinet-light).fdry-light .forge-auth__sso[data-sso="google"] {
  background: transparent;
  color: var(--fg);
  border-color: var(--line);
}
body.hub-cabinet:not(.hub-cabinet-light).fdry-light .forge-auth__sso[data-sso="google"]:hover,
body.hub-cabinet:not(.hub-cabinet-light).fdry-light .forge-auth__sso[data-sso="google"]:active {
  background: var(--bg);
  border-color: var(--muted);
}

/* ---- accent as text: the signal is 4.4:1 on --bg-2, so links and current tabs read --signal-hot ---- */
body.hub-cabinet:not(.hub-cabinet-light).fdry-light .forge-dashboard__nav-link.is-current,
body.hub-cabinet:not(.hub-cabinet-light).fdry-light .forge-dashboard__subnav-link.is-current,
body.hub-cabinet:not(.hub-cabinet-light).fdry-light .dash-card__link,
body.hub-cabinet:not(.hub-cabinet-light).fdry-light .credits-link,
body.hub-cabinet:not(.hub-cabinet-light).fdry-light .credits-pack-btn__price,
body.hub-cabinet:not(.hub-cabinet-light).fdry-light .credits-breakdown-row__credits,
body.hub-cabinet:not(.hub-cabinet-light).fdry-light .dash-hint a,
body.hub-cabinet:not(.hub-cabinet-light).fdry-light .forge-auth__link,
body.hub-cabinet:not(.hub-cabinet-light).fdry-light .forge-auth__foot a,
body.hub-cabinet:not(.hub-cabinet-light).fdry-light .dash-buy__pack-credits,
body.hub-cabinet:not(.hub-cabinet-light).fdry-light .dash-buy__pack:hover:not(:disabled) .dash-buy__pack-cta,
body.hub-cabinet:not(.hub-cabinet-light).fdry-light .fl-tab.is-current .fl-tab__count,
body.hub-cabinet:not(.hub-cabinet-light).fdry-light .support-doc-link:hover,
body.hub-cabinet:not(.hub-cabinet-light).fdry-light .support-doc-link:hover .support-doc-link__arrow,
body.hub-cabinet:not(.hub-cabinet-light).fdry-light .forge-auth__pwd-toggle:hover,
body.hub-cabinet:not(.hub-cabinet-light).fdry-light .forge-auth__pwd-toggle:focus-visible {
  color: var(--signal-hot);
}
body.hub-cabinet:not(.hub-cabinet-light).fdry-light .dash-dl-tier__hint {
  color: var(--fg-2);
}
/* The parent's focus ring of a switch (auto-renew on /dashboard/subscriptions/) is a faint violet glow, ~1.3:1 on --bg-2: a visible ring. */
body.hub-cabinet:not(.hub-cabinet-light).fdry-light .forge-toggle__input:focus-visible + .forge-toggle__track {
  outline: 2px solid var(--signal-hot);
  outline-offset: 2px;
}
body.hub-cabinet:not(.hub-cabinet-light).fdry-light .fl-tab__count {
  background: color-mix(in srgb, var(--fg) 10%, transparent);
  color: var(--fg-2);
}
body.hub-cabinet:not(.hub-cabinet-light).fdry-light .fl-tab.is-current .fl-tab__count {
  background: var(--accent-subtle);
}

/* ---- buttons: one primary fill under white text, secondary and ghost as hairline pills ---- */
body.hub-cabinet:not(.hub-cabinet-light).fdry-light .forge-btn--primary,
body.hub-cabinet:not(.hub-cabinet-light).fdry-light .forge-dashboard__nav-link--cta,
body.hub-cabinet:not(.hub-cabinet-light).fdry-light .forge-dashboard__nav-link--cta.is-current,
body.hub-cabinet:not(.hub-cabinet-light).fdry-light .fl-move-banner__btn--primary {
  background: var(--signal-fill);
  background-image: none;
  color: #fff;
  border-color: transparent;
}
body.hub-cabinet:not(.hub-cabinet-light).fdry-light .forge-btn--primary:hover,
body.hub-cabinet:not(.hub-cabinet-light).fdry-light .forge-dashboard__nav-link--cta:hover {
  background: var(--signal-hot);
  background-image: none;
  color: var(--bg);
}
body.hub-cabinet:not(.hub-cabinet-light).fdry-light .forge-btn--secondary,
body.hub-cabinet:not(.hub-cabinet-light).fdry-light .forge-btn--ghost,
body.hub-cabinet:not(.hub-cabinet-light).fdry-light .fdry-btn--ghost,
body.hub-cabinet:not(.hub-cabinet-light).fdry-light .support-btn,
body.hub-cabinet:not(.hub-cabinet-light).fdry-light .fl-btn,
body.hub-cabinet:not(.hub-cabinet-light).fdry-light .forge-dashboard__notice .forge-dashboard__notice-btn {
  background: transparent;
  color: var(--fg);
  border-color: var(--muted);
}
body.hub-cabinet:not(.hub-cabinet-light).fdry-light .forge-btn--secondary:hover,
body.hub-cabinet:not(.hub-cabinet-light).fdry-light .forge-btn--ghost:hover,
body.hub-cabinet:not(.hub-cabinet-light).fdry-light .fdry-btn--ghost:hover,
body.hub-cabinet:not(.hub-cabinet-light).fdry-light .support-btn:hover,
body.hub-cabinet:not(.hub-cabinet-light).fdry-light .fl-btn:hover {
  background: var(--bg);
  color: var(--fg);
  border-color: var(--signal-hot);
}
body.hub-cabinet:not(.hub-cabinet-light).fdry-light .fl-btn--danger {
  color: var(--status-error);
  border-color: var(--status-error);
}
body.hub-cabinet:not(.hub-cabinet-light).fdry-light .forge-btn--small,
body.hub-cabinet:not(.hub-cabinet-light).fdry-light .dash-dl-tier .forge-btn {
  color: var(--fg);
}
body.hub-cabinet:not(.hub-cabinet-light).fdry-light .dash-buy__tab.is-active,
body.hub-cabinet:not(.hub-cabinet-light).fdry-light .dash-buy__tier-ribbon,
body.hub-cabinet:not(.hub-cabinet-light).fdry-light .dash-buy__tier-cta {
  color: var(--bg);
}
body.hub-cabinet:not(.hub-cabinet-light).fdry-light .dash-buy__tier-cta.is-owned {
  background: var(--bg);
  color: var(--muted);
}
body.hub-cabinet:not(.hub-cabinet-light).fdry-light .dash-buy__tier-cta.is-downgrade {
  border-color: var(--line);
}

/* ---- muted text the parent wrote in a hex ---- */
body.hub-cabinet:not(.hub-cabinet-light).fdry-light .fl-meta,
body.hub-cabinet:not(.hub-cabinet-light).fdry-light .fl-move-hint,
body.hub-cabinet:not(.hub-cabinet-light).fdry-light .fl-install-url,
body.hub-cabinet:not(.hub-cabinet-light).fdry-light .dash-section-desc,
body.hub-cabinet:not(.hub-cabinet-light).fdry-light .forge-billing-card--loading,
body.hub-cabinet:not(.hub-cabinet-light).fdry-light .forge-billing-card--empty,
body.hub-cabinet:not(.hub-cabinet-light).fdry-light .forge-billing-card__key {
  color: var(--fg-2);
}
body.hub-cabinet:not(.hub-cabinet-light).fdry-light .fl-meta--warn {
  color: var(--status-error);
}
body.hub-cabinet:not(.hub-cabinet-light).fdry-light .fl-installs,
body.hub-cabinet:not(.hub-cabinet-light).fdry-light .fl-install-row,
body.hub-cabinet:not(.hub-cabinet-light).fdry-light .dash-dl-tier {
  border-color: var(--line);
}

/* ---- statuses: pills, flashes, notices — the palette status color over a tint of itself ---- */
body.hub-cabinet:not(.hub-cabinet-light).fdry-light .dash-pill--active,
body.hub-cabinet:not(.hub-cabinet-light).fdry-light .dash-pill--completed,
body.hub-cabinet:not(.hub-cabinet-light).fdry-light .forge-billing-card__pill,
body.hub-cabinet:not(.hub-cabinet-light).fdry-light .fl-pill--active,
body.hub-cabinet:not(.hub-cabinet-light).fdry-light .forge-auth__flash--success {
  background: color-mix(in srgb, var(--status-success) 12%, var(--bg-2));
  color: var(--status-success);
}
body.hub-cabinet:not(.hub-cabinet-light).fdry-light .dash-pill--cancelled,
body.hub-cabinet:not(.hub-cabinet-light).fdry-light .dash-pill--expired,
body.hub-cabinet:not(.hub-cabinet-light).fdry-light .forge-billing-card__pill--cancelled,
body.hub-cabinet:not(.hub-cabinet-light).fdry-light .forge-billing-card__pill--expired,
body.hub-cabinet:not(.hub-cabinet-light).fdry-light .fl-pill--expired,
body.hub-cabinet:not(.hub-cabinet-light).fdry-light .fl-pill--past_due,
body.hub-cabinet:not(.hub-cabinet-light).fdry-light .fl-pill--over_limit,
body.hub-cabinet:not(.hub-cabinet-light).fdry-light .forge-auth__flash--error {
  background: color-mix(in srgb, var(--status-error) 10%, var(--bg-2));
  color: var(--status-error);
}
body.hub-cabinet:not(.hub-cabinet-light).fdry-light .fl-pill--builder {
  background: color-mix(in srgb, var(--status-warning) 12%, var(--bg-2));
  color: var(--status-warning);
}
body.hub-cabinet:not(.hub-cabinet-light).fdry-light .dash-pill--refunded,
body.hub-cabinet:not(.hub-cabinet-light).fdry-light .forge-billing-card__pill--refunded,
body.hub-cabinet:not(.hub-cabinet-light).fdry-light .fl-pill--cancelled {
  background: var(--bg);
  color: var(--fg-2);
}
body.hub-cabinet:not(.hub-cabinet-light).fdry-light .forge-auth__flash--error,
body.hub-cabinet:not(.hub-cabinet-light).fdry-light .forge-auth__flash--success {
  border-color: var(--line);
}
body.hub-cabinet:not(.hub-cabinet-light).fdry-light .forge-dashboard__notice--unverified {
  background: color-mix(in srgb, var(--status-warning) 10%, var(--bg-2));
  color: var(--fg);
  border-color: color-mix(in srgb, var(--status-warning) 40%, transparent);
}
body.hub-cabinet:not(.hub-cabinet-light).fdry-light .dash-checkout__status.is-error,
body.hub-cabinet:not(.hub-cabinet-light).fdry-light .support-form__status.is-error,
body.hub-cabinet:not(.hub-cabinet-light).fdry-light .support-form__label-required {
  color: var(--status-error);
}
body.hub-cabinet:not(.hub-cabinet-light).fdry-light .support-form__status.is-success {
  color: var(--status-success);
}
body.hub-cabinet:not(.hub-cabinet-light).fdry-light .support-form__file-remove:hover {
  background: color-mix(in srgb, var(--status-error) 14%, var(--bg-2));
  color: var(--status-error);
  border-color: var(--status-error);
}

/* ---- tables: a table wider than the card scrolls inside the card (the parent clips it and its absolutely placed toggle
   boxes widen the whole page at 390 px; seen with account data on Subscriptions) ---- */
body.hub-cabinet.fdry-light .dash-table-wrap {
  overflow-x: auto;
  position: relative;
}

/* ---- licenses: the page writes its own light styles (move banner, collapsibles); inline styles need !important ---- */
body.hub-cabinet:not(.hub-cabinet-light).fdry-light .fl-move-banner {
  background: color-mix(in srgb, var(--status-warning) 10%, var(--bg-2));
  border-color: color-mix(in srgb, var(--status-warning) 40%, transparent);
}
body.hub-cabinet:not(.hub-cabinet-light).fdry-light .fl-move-banner h3,
body.hub-cabinet:not(.hub-cabinet-light).fdry-light .fl-move-banner p,
body.hub-cabinet:not(.hub-cabinet-light).fdry-light .fl-move-banner ul,
body.hub-cabinet:not(.hub-cabinet-light).fdry-light .fl-move-banner strong {
  color: var(--fg);
}
body.hub-cabinet:not(.hub-cabinet-light).fdry-light .fl-move-banner code {
  background: var(--bg);
  color: var(--fg);
  border-color: var(--line);
}
body.hub-cabinet:not(.hub-cabinet-light).fdry-light .fl-move-banner__btn--primary:hover {
  background: var(--signal-hot);
  color: var(--bg);
  border-color: var(--fg);
}
body.hub-cabinet:not(.hub-cabinet-light).fdry-light .fl-move-banner__btn--ghost {
  background: transparent;
  color: var(--fg);
  border-color: color-mix(in srgb, var(--status-warning) 40%, transparent);
}
body.hub-cabinet:not(.hub-cabinet-light).fdry-light .fl-move-banner__btn--ghost:hover {
  background: var(--bg);
}
body.hub-cabinet:not(.hub-cabinet-light).fdry-light .fl-move-banner--error {
  background: color-mix(in srgb, var(--status-error) 10%, var(--bg-2));
  border-color: color-mix(in srgb, var(--status-error) 40%, transparent);
}
body.hub-cabinet:not(.hub-cabinet-light).fdry-light .fl-move-banner--success {
  background: color-mix(in srgb, var(--status-success) 10%, var(--bg-2));
  border-color: color-mix(in srgb, var(--status-success) 40%, transparent);
}
body.hub-cabinet:not(.hub-cabinet-light).fdry-light details.dash-collapse {
  background: var(--bg-2) !important;
  border-color: var(--line) !important;
}
body.hub-cabinet:not(.hub-cabinet-light).fdry-light details.dash-collapse summary,
body.hub-cabinet:not(.hub-cabinet-light).fdry-light details.dash-collapse ol,
body.hub-cabinet:not(.hub-cabinet-light).fdry-light details.dash-collapse ul,
body.hub-cabinet:not(.hub-cabinet-light).fdry-light details.dash-collapse li,
body.hub-cabinet:not(.hub-cabinet-light).fdry-light details.dash-collapse p {
  color: var(--fg-2) !important;
}
body.hub-cabinet:not(.hub-cabinet-light).fdry-light details.dash-collapse summary {
  color: var(--fg) !important;
}
body.hub-cabinet:not(.hub-cabinet-light).fdry-light .forge-billing-card--empty[style*="color"] {
  color: var(--status-error) !important;
}

/* ---- Buy page: the wall of plaques and the chalkboard (the parent paints them as navy glass) ---- */
body.hub-cabinet:not(.hub-cabinet-light).fdry-light .fg-wall__board {
  background: var(--bg-2);
  border-color: var(--line);
}
body.hub-cabinet:not(.hub-cabinet-light).fdry-light .fg-plaque {
  background: var(--bg);
  border-color: var(--line);
}
body.hub-cabinet:not(.hub-cabinet-light).fdry-light .fg-chalk {
  background: var(--bg-2);
  border-color: var(--line);
}
body.hub-cabinet:not(.hub-cabinet-light).fdry-light .fg-plaque__tick {
  color: var(--bg);
}

/* ---- the docs-chat window: the parent pins it light (#1a1a2e text, #f4f6fb bubbles) whatever the page; in the cabinet it
   is dark like everything around it ---- */
body.hub-cabinet:not(.hub-cabinet-light).fdry-light .forge-chat__window {
  --text-primary: var(--fg);
  --bg-light: var(--bg);
  color: var(--fg);
}
body.hub-cabinet:not(.hub-cabinet-light).fdry-light .forge-chat__header {
  background: var(--signal-fill);
}
body.hub-cabinet:not(.hub-cabinet-light).fdry-light .forge-chat__status,
body.hub-cabinet:not(.hub-cabinet-light).fdry-light .forge-chat__close,
body.hub-cabinet:not(.hub-cabinet-light).fdry-light .forge-chat__clear {
  opacity: 1;
}
body.hub-cabinet:not(.hub-cabinet-light).fdry-light .forge-chat__message--user p,
body.hub-cabinet:not(.hub-cabinet-light).fdry-light .forge-chat__send,
body.hub-cabinet:not(.hub-cabinet-light).fdry-light .forge-chat__handoff-btn {
  background: var(--signal-fill);
  color: #fff;
}
body.hub-cabinet:not(.hub-cabinet-light).fdry-light .forge-chat__input {
  color: var(--fg);
  background: var(--bg);
  border-color: var(--muted);
}
body.hub-cabinet:not(.hub-cabinet-light).fdry-light .forge-chat__input::placeholder {
  color: var(--muted);
}
body.hub-cabinet:not(.hub-cabinet-light).fdry-light .forge-chat__input:focus {
  border-color: var(--signal-hot);
}
body.hub-cabinet:not(.hub-cabinet-light).fdry-light .forge-chat__powered {
  color: var(--muted);
}
body.hub-cabinet:not(.hub-cabinet-light).fdry-light .forge-chat__powered a {
  color: var(--signal-hot);
}
body.hub-cabinet:not(.hub-cabinet-light).fdry-light .forge-chat__message--bot code {
  background: var(--bg-2);
  color: var(--fg);
}
body.hub-cabinet:not(.hub-cabinet-light).fdry-light .forge-chat__message--bot .forge-chat__code-wrap {
  background: var(--bg-2);
  border: 1px solid var(--line);
}
body.hub-cabinet:not(.hub-cabinet-light).fdry-light .forge-chat__message--bot .forge-chat__code {
  color: var(--fg);
}

/* ---- owner telemetry: the parent has no rules for its dash-main / dash-btn markup (browser-default buttons, the title under
   the fixed nav, tables that widen the page at 390 px); put it in the frame and the button language of the other screens ---- */
body.hub-cabinet.fdry-light .dash-main {
  padding: 150px 0 120px;
}
body.hub-cabinet.fdry-light .dash-main__inner {
  width: 100%;
  max-width: 1280px;
  margin: 0 auto;
  padding: 0 24px;
  box-sizing: border-box;
}
body.hub-cabinet.fdry-light .dash-breadcrumbs {
  display: flex;
  gap: 8px;
  margin-bottom: 24px;
}
body.hub-cabinet.fdry-light .dash-header {
  margin-bottom: 24px;
}
body.hub-cabinet.fdry-light .dash-main .dash-card {
  overflow-x: auto;
  margin-bottom: 16px;
}
body.hub-cabinet.fdry-light .tel-controls {
  flex-direction: row;
  justify-content: flex-start;
}
body.hub-cabinet.fdry-light .dash-btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  padding: 8px 16px;
  border-radius: 12px;
  font: inherit;
  font-size: 13px;
  font-weight: 600;
  border: 1px solid transparent;
  cursor: pointer;
  text-decoration: none;
}
body.hub-cabinet:not(.hub-cabinet-light).fdry-light .dash-btn {
  background: transparent;
  color: var(--fg);
  border-color: var(--muted);
}
body.hub-cabinet:not(.hub-cabinet-light).fdry-light .dash-btn:hover {
  border-color: var(--fg);
}
body.hub-cabinet:not(.hub-cabinet-light).fdry-light .dash-btn--primary {
  background: var(--signal-fill);
  color: #fff;
  border-color: transparent;
}
body.hub-cabinet:not(.hub-cabinet-light).fdry-light .dash-btn--primary:hover {
  background: var(--signal-hot);
  color: var(--bg);
  border-color: transparent;
}

/* ---- telemetry (owner page): its own <style> block is light ---- */
body.hub-cabinet:not(.hub-cabinet-light).fdry-light .tel-controls label,
body.hub-cabinet:not(.hub-cabinet-light).fdry-light .tel-status,
body.hub-cabinet:not(.hub-cabinet-light).fdry-light .tel-kpi__label,
body.hub-cabinet:not(.hub-cabinet-light).fdry-light .tel-table th,
body.hub-cabinet:not(.hub-cabinet-light).fdry-light .tel-sample-file,
body.hub-cabinet:not(.hub-cabinet-light).fdry-light .tel-hash-only,
body.hub-cabinet:not(.hub-cabinet-light).fdry-light .tel-ask__hint {
  color: var(--muted);
}
body.hub-cabinet:not(.hub-cabinet-light).fdry-light .tel-kpi__value {
  color: var(--fg);
}
body.hub-cabinet:not(.hub-cabinet-light).fdry-light .tel-table th,
body.hub-cabinet:not(.hub-cabinet-light).fdry-light .tel-table td {
  border-bottom-color: var(--line);
}
body.hub-cabinet:not(.hub-cabinet-light).fdry-light .tel-table th {
  background: var(--bg);
}
body.hub-cabinet:not(.hub-cabinet-light).fdry-light .tel-badge {
  background: var(--bg);
  color: var(--fg-2);
}
body.hub-cabinet:not(.hub-cabinet-light).fdry-light .tel-badge.auth,
body.hub-cabinet:not(.hub-cabinet-light).fdry-light .tel-badge.upstream_5xx {
  background: color-mix(in srgb, var(--status-error) 10%, var(--bg-2));
  color: var(--status-error);
}
body.hub-cabinet:not(.hub-cabinet-light).fdry-light .tel-badge.rate_limit,
body.hub-cabinet:not(.hub-cabinet-light).fdry-light .tel-badge.credits_exhausted {
  background: color-mix(in srgb, var(--status-warning) 12%, var(--bg-2));
  color: var(--status-warning);
}
body.hub-cabinet:not(.hub-cabinet-light).fdry-light .tel-badge.geo_block {
  background: var(--accent-subtle);
  color: var(--signal-hot);
}
body.hub-cabinet:not(.hub-cabinet-light).fdry-light .tel-ask__out {
  background: var(--bg);
  border-color: var(--line);
  color: var(--fg);
}
body.hub-cabinet:not(.hub-cabinet-light).fdry-light .tel-status[style*="185, 28, 28"] {
  color: var(--status-error) !important;
}
body.hub-cabinet:not(.hub-cabinet-light).fdry-light .tel-status[style*="6, 95, 70"] {
  color: var(--status-success) !important;
}
body.hub-cabinet:not(.hub-cabinet-light).fdry-light .tel-status[style*="107, 114, 128"] {
  color: var(--muted) !important;
}

/* ====================================================================================================================
   THE LIGHT SKIN (lane 5.20): /dashboard/*, body.hub-cabinet-light. The palette (palettes/avakode-cabinet-light.json) gives the
   page, the cards, the ink and the accent; the parent's stylesheets do the rest, as before the redesign. What is here is what the
   parent writes in a hex or a fixed gradient that fails 4.5:1 or paints the old navy, so it is set by the palette variables
   the parent prints on :root (--accent, --text-accent, --text-primary, --text-secondary, --text-muted, --status-*, --surface,
   --bg-light, --border). The hub header and footer are not touched: they read their tokens from .hub-chrome.
   ==================================================================================================================== */

/* ---- primary buttons: the parent fills them with a fixed gradient #A78BFA -> #7C5CFC under white (2.7:1); one fill, white text ---- */
body.hub-cabinet.hub-cabinet-light .forge-btn--primary {
  background: var(--accent);
  background-image: none;
  color: var(--on-accent);
  border-color: transparent;
}
body.hub-cabinet.hub-cabinet-light .forge-btn--primary:hover {
  background: var(--accent-hover);
  background-image: none;
  color: var(--on-accent);
}
body.hub-cabinet.hub-cabinet-light .fl-move-banner__btn--primary {
  background: var(--status-warning);
  color: var(--on-accent);
}

/* ---- accent as text: the parent writes #7C5CFC (4.2:1 on the page) ---- */
body.hub-cabinet.hub-cabinet-light .dash-card__link,
body.hub-cabinet.hub-cabinet-light .credits-link,
body.hub-cabinet.hub-cabinet-light .credits-pack-btn__price,
body.hub-cabinet.hub-cabinet-light .credits-breakdown-row__credits,
body.hub-cabinet.hub-cabinet-light .dash-hint a,
body.hub-cabinet.hub-cabinet-light .dash-buy__pack-credits,
body.hub-cabinet.hub-cabinet-light .dash-buy__pack:hover:not(:disabled) .dash-buy__pack-cta,
body.hub-cabinet.hub-cabinet-light .fl-tab.is-current .fl-tab__count,
body.hub-cabinet.hub-cabinet-light .support-doc-link:hover,
body.hub-cabinet.hub-cabinet-light .support-doc-link:hover .support-doc-link__arrow {
  color: var(--text-accent);
}

/* ---- slate greys the parent writes in a hex (#64748B 4.3:1 on its own tint, #9CA3AF 2.5:1): the secondary and the muted ink ---- */
body.hub-cabinet.hub-cabinet-light .fl-tab,
body.hub-cabinet.hub-cabinet-light .fl-tab__count,
body.hub-cabinet.hub-cabinet-light .fl-pill--cancelled,
body.hub-cabinet.hub-cabinet-light .dash-pill--refunded,
body.hub-cabinet.hub-cabinet-light .forge-billing-card__pill--refunded {
  color: var(--text-secondary);
}
body.hub-cabinet.hub-cabinet-light .tel-hash-only {
  color: var(--text-muted);
}

/* ---- statuses: the parent's #0EC49E / #0b8a6f / #EF4444 as text, the palette status instead ---- */
body.hub-cabinet.hub-cabinet-light .dash-pill--active,
body.hub-cabinet.hub-cabinet-light .dash-pill--completed,
body.hub-cabinet.hub-cabinet-light .forge-billing-card__pill,
body.hub-cabinet.hub-cabinet-light .fl-pill--active,
body.hub-cabinet.hub-cabinet-light .forge-auth__flash--success,
body.hub-cabinet.hub-cabinet-light .dash-dl-tier__hint,
body.hub-cabinet.hub-cabinet-light .support-form__status.is-success {
  color: var(--status-success);
}
body.hub-cabinet.hub-cabinet-light .dash-pill--cancelled,
body.hub-cabinet.hub-cabinet-light .dash-pill--expired,
body.hub-cabinet.hub-cabinet-light .forge-billing-card__pill--cancelled,
body.hub-cabinet.hub-cabinet-light .forge-billing-card__pill--expired,
body.hub-cabinet.hub-cabinet-light .fl-pill--expired,
body.hub-cabinet.hub-cabinet-light .fl-pill--past_due,
body.hub-cabinet.hub-cabinet-light .fl-pill--over_limit,
body.hub-cabinet.hub-cabinet-light .fl-btn--danger,
body.hub-cabinet.hub-cabinet-light .fl-meta--warn,
body.hub-cabinet.hub-cabinet-light .dash-checkout__status.is-error,
body.hub-cabinet.hub-cabinet-light .support-form__status.is-error,
body.hub-cabinet.hub-cabinet-light .support-form__label-required {
  color: var(--status-error);
}
body.hub-cabinet.hub-cabinet-light .fl-btn--danger {
  border-color: var(--status-error);
}
body.hub-cabinet.hub-cabinet-light .fl-pill--builder {
  color: var(--status-warning);
}

/* ---- Buy: the wall of plaques and the chalkboard are a dark panel in the parent's light cabinet (its own comment: «becomes a dark
   panel»), made of a fixed navy gradient (#10142B -> #0B0E20) and the dark Foundry ink. On the light skin it is a light panel: the
   ink variables the wall reads are the palette inks, the surfaces the palette surfaces. ---- */
body.hub-cabinet.hub-cabinet-light .fg-wall-sec {
  --fdry-ink: var(--text-primary);
  --fdry-ink-soft: var(--text-secondary);
  --fdry-ink-faint: var(--text-secondary);
  --fg-chalk: var(--text-primary);
  background: var(--surface);
  border: 1px solid var(--border);
  color: var(--text-primary);
}
body.hub-cabinet.hub-cabinet-light .fdry-kicker,
body.hub-cabinet.hub-cabinet-light .fdry-kicker--accent {
  color: var(--text-accent);
}
/* «your set.»: a gradient text from the light violet through #fff; on a light page the white stop vanishes */
body.hub-cabinet.hub-cabinet-light .fdry-grad {
  background-image: linear-gradient(92deg, var(--accent), var(--accent-hover));
  -webkit-background-clip: text;
  background-clip: text;
}
body.hub-cabinet.hub-cabinet-light .fg-wall__board {
  background: var(--bg-light);
  border-color: var(--border);
}
body.hub-cabinet.hub-cabinet-light .fg-plaque {
  background: var(--surface);
  border-color: var(--border);
  color: var(--text-primary);
}
body.hub-cabinet.hub-cabinet-light .fg-plaque[aria-pressed="true"] {
  background: color-mix(in srgb, var(--fg-acc) 12%, var(--surface));
  border-color: var(--fg-acc);
}
body.hub-cabinet.hub-cabinet-light .fg-plaque--soon:hover {
  border-color: var(--border);
}
body.hub-cabinet.hub-cabinet-light .fg-plaque__tick {
  color: var(--text-primary);
}
body.hub-cabinet.hub-cabinet-light .fg-wall__msg {
  background: var(--bg-light);
  border-color: var(--border);
  color: var(--text-secondary);
}
body.hub-cabinet.hub-cabinet-light .fg-chalk {
  background: var(--bg-light);
  border-color: var(--border);
  color: var(--text-primary);
}
body.hub-cabinet.hub-cabinet-light .fg-chalk__rule {
  border-top-color: var(--border);
}
body.hub-cabinet.hub-cabinet-light .fg-chalk__line--off .v {
  color: var(--status-warning);
}
body.hub-cabinet.hub-cabinet-light .fg-chalk__save,
body.hub-cabinet.hub-cabinet-light .fg-chalk__promo {
  color: var(--status-success);
}
body.hub-cabinet.hub-cabinet-light .fg-chalk__note {
  color: var(--text-secondary);
}
body.hub-cabinet.hub-cabinet-light .fg-select__btn {
  background: var(--surface);
  border-color: var(--text-muted);
  color: var(--text-primary);
}
body.hub-cabinet.hub-cabinet-light .fg-select__btn:hover {
  border-color: var(--text-primary);
}
body.hub-cabinet.hub-cabinet-light .fg-select__list {
  background: var(--surface);
  border-color: var(--border);
}
body.hub-cabinet.hub-cabinet-light .fg-select__opt:hover,
body.hub-cabinet.hub-cabinet-light .fg-select__opt.is-active {
  background: var(--accent-subtle);
}
body.hub-cabinet.hub-cabinet-light .fg-select__opt[aria-selected="true"]::after {
  color: var(--text-accent);
}

/* ---- the docs-chat window: the parent's code panel is a dark one (var(--bg-darker), the hub's #07060B now) with light-on-dark text;
   on the light skin it is a light panel, and the status line of the header is not dimmed under white (4.2:1) ---- */
body.hub-cabinet.hub-cabinet-light .forge-chat__status,
body.hub-cabinet.hub-cabinet-light .forge-chat__close,
body.hub-cabinet.hub-cabinet-light .forge-chat__clear {
  opacity: 1;
}
body.hub-cabinet.hub-cabinet-light .forge-chat__message--bot .forge-chat__code-wrap {
  background: var(--bg-light);
  border: 1px solid var(--border);
}
body.hub-cabinet.hub-cabinet-light .forge-chat__message--bot .forge-chat__code-header {
  background: var(--surface);
  border-bottom-color: var(--border);
}
body.hub-cabinet.hub-cabinet-light .forge-chat__message--bot .forge-chat__code-lang {
  color: var(--text-secondary);
}
body.hub-cabinet.hub-cabinet-light .forge-chat__message--bot .forge-chat__code-copy {
  color: var(--text-secondary);
  border-color: var(--text-muted);
}
body.hub-cabinet.hub-cabinet-light .forge-chat__message--bot .forge-chat__code-copy:hover {
  color: var(--text-primary);
  border-color: var(--text-primary);
}
body.hub-cabinet.hub-cabinet-light .forge-chat__message--bot .forge-chat__code {
  color: var(--text-primary);
}

/* ---- owner telemetry: the buttons of the frame (structure is shared, see above) ---- */
body.hub-cabinet.hub-cabinet-light .dash-btn {
  background: transparent;
  color: var(--text-primary);
  border-color: var(--text-muted);
}
body.hub-cabinet.hub-cabinet-light .dash-btn:hover {
  border-color: var(--text-primary);
}
body.hub-cabinet.hub-cabinet-light .dash-btn--primary {
  background: var(--accent);
  color: var(--on-accent);
  border-color: transparent;
}
body.hub-cabinet.hub-cabinet-light .dash-btn--primary:hover {
  background: var(--accent-hover);
  border-color: transparent;
}

/* ---- fit on narrow screens (visual audit 5.7; the parent's layout, set right for 360 and 390 px) ---- */
/* a button label wraps instead of being cut by the button's own overflow:hidden (/connect/, «Allow this site to use my credits») */
body.hub-cabinet .forge-btn {
  white-space: normal;
  text-align: center;
}
/* a long address or e-mail in a detail row breaks inside its box instead of running out of the card (/connect/, the site) */
body.hub-cabinet .dash-card__row code,
body.hub-cabinet .dash-card__row strong {
  min-width: 0;
  overflow-wrap: anywhere;
  white-space: normal;
}
/* an address in a row or in the move banner moves to the next line whole; it is broken inside only when it is wider than the line itself */
body.hub-cabinet .dash-card__row code,
body.hub-cabinet .fl-move-banner code {
  display: inline-block;
  max-width: 100%;
  overflow-wrap: anywhere;
}
/* Buy: the wall and the chalkboard share one column up to 900 px; «1fr» alone lets the board's content stretch that column
   past the window (the board and «Your set» were cut at the right edge at 360 px), so the column may shrink */
@media (max-width: 900px) {
  body.hub-cabinet .fg-wall__grid { grid-template-columns: minmax(0, 1fr); }
}
/* Licenses: the key sits on its own line and the buttons under it on a phone, so the masked key is not cut in two («sk_li…1» / «706») */
@media (max-width: 560px) {
  body.hub-cabinet .fl-key-row { flex-wrap: wrap; }
  body.hub-cabinet .fl-key-row .fl-key { flex: 1 1 100%; }
  /* the site address on /connect/ fits the narrow details box at 360 px (it was 7 px wider than the box and broke in two) */
  body.hub-cabinet .dash-card__row code { font-size: clamp(12px, 3.6vw, 14px); }
}
/* Tables on a phone (lane 5.10): a row is a card, each cell is a line «label: value». The label is the text of the column head,
   written into `data-label` by hub_cabinet_table_labels() (inc/cabinet.php), so the words are the head's own. Nothing scrolls inside
   the box and the Status cell is whole; the head stays in the page for screen readers and is only taken out of the picture.
   Above 560 px the table is the parent's table, as it was. */
@media (max-width: 560px) {
  body.hub-cabinet .dash-table-wrap { padding: 10px; }
  body.hub-cabinet .dash-table,
  body.hub-cabinet .dash-table tbody,
  body.hub-cabinet .dash-table tr,
  body.hub-cabinet .dash-table td { display: block; width: 100%; }
  body.hub-cabinet .dash-table thead {
    position: absolute; width: 1px; height: 1px; margin: -1px; padding: 0; overflow: hidden;
    clip: rect(0 0 0 0); white-space: nowrap; border: 0;
  }
  body.hub-cabinet .dash-table tbody tr {
    margin: 0 0 10px; padding: 6px 0;
    border-width: 1px; border-style: solid; border-radius: 12px;
  }
  body.hub-cabinet:not(.hub-cabinet-light) .dash-table tbody tr { background: var(--bg); border-color: var(--line); }
  body.hub-cabinet.hub-cabinet-light .dash-table tbody tr { background: var(--bg-light); border-color: var(--border); }
  body.hub-cabinet .dash-table tbody tr:last-child { margin-bottom: 0; }
  body.hub-cabinet .dash-table td:not([colspan]) {
    position: relative; min-height: 32px; padding: 6px 14px 6px 118px; border: 0;
    text-align: left; overflow-wrap: anywhere;
  }
  body.hub-cabinet .dash-table td[data-label]::before {
    content: attr(data-label);
    position: absolute; left: 14px; top: 8px; width: 92px;
    font-family: var(--mono); font-size: 11px; font-weight: 600; letter-spacing: .06em; line-height: 1.5;
    text-transform: uppercase;
  }
  body.hub-cabinet:not(.hub-cabinet-light) .dash-table td[data-label]::before { color: var(--muted); }
  body.hub-cabinet.hub-cabinet-light .dash-table td[data-label]::before { color: var(--text-muted); }
  body.hub-cabinet .dash-table td:not([colspan]):not([data-label]) { padding-left: 14px; }
  body.hub-cabinet .dash-table td:empty { display: none; }
}
