/* GOLDLEAF shell + page-group adapters. Loaded AFTER all domain stylesheets.
   Requires tokens.css (generated, measured). Every block is scoped to [data-gl-theme]
   and labelled with its rollout increment so unadapted areas are not silently claimed.
   Colour rule: text uses only measured foreground roles (foreground, mutedForeground,
   primary, accentForeground, destructive, and the light semantic text set verified in
   tests/test_design_system_wiring.js). Decorative borders never carry state. */

/* ===== Increment 2: shell, theme wiring, legacy variable bridge ===== */
[data-gl-theme] {
  --bg: var(--gl-background); --bg-2: var(--gl-card);
  --panel: var(--gl-card); --panel-2: var(--gl-popover); --panel-3: var(--gl-muted);
  --line: var(--gl-border); --border: var(--gl-border); --line-strong: var(--gl-input);
  --text: var(--gl-foreground); --muted: var(--gl-muted-foreground); --subtle: var(--gl-muted-foreground);
  --radius: 12px; --radius-sm: 8px;
  --font-sans: var(--gl-font-sans); --font-display: var(--gl-font-serif);
}
[data-gl-theme="dark"] {
  --gls-ink: #FAF7F0; --gls-dim: #B5B1A8; --gls-brand: #C9A96B; --gls-info: #8CB9DF; --gls-danger: #EA8E88; --gls-success: #86C8A0; --gls-warning: #F0A65A; --gls-purple: #C1A9DE;
  --gold: #C9A96B; --gold-2: #E3C991; --gold-3: #8F7444;
  --success: var(--gls-success); --warning: var(--gls-warning); --danger: var(--gls-danger); --info: var(--gls-info);
  --shadow: 0 18px 48px rgba(0,0,0,.45);
}
[data-gl-theme="light"] {
  /* Semantic text roles below are measured >=4.5:1 on background/card/popover/muted in tests. Warning is orange-brown, never brand gold. */
  --gls-ink: #171614; --gls-dim: #625D53; --gls-brand: #7A5B20; --gls-info: #315F7B; --gls-danger: #A12D2D; --gls-success: #286243; --gls-warning: #9A4A0B; --gls-purple: #6B4E8B;
  --gold: #7A5B20; --gold-2: #624513; --gold-3: #7A5B20;
  --success: var(--gls-success); --warning: var(--gls-warning); --danger: var(--gls-danger); --info: var(--gls-info);
  --shadow: 0 14px 40px rgba(23,22,20,.12);
}
[data-gl-theme] body { background: var(--gl-background); color: var(--gl-foreground); font-size: 16px; }
[data-gl-theme] :focus-visible { outline: 3px solid var(--gl-ring); outline-offset: 3px; transition: none !important; }
[data-gl-theme] :is(.nav button, .user-block .link-button, .mobile-nav-button, .skip-link, .account-early .link-button):focus-visible,
[data-gl-theme] .sidebar.open [data-mobile-open-focus] { outline: 3px solid var(--gl-ring); outline-offset: 2px; }
[data-gl-theme] :is(.kpi-value, .display-number, td, .management-count, .management-pulse-item strong) { font-variant-numeric: tabular-nums; }

[data-gl-theme] .sidebar { background: var(--gl-sidebar); border-right-color: var(--gl-sidebar-border); color: var(--gl-sidebar-foreground); }
[data-gl-theme] .brand-lockup small, [data-gl-theme] .user-block span, [data-gl-theme] .account-early { color: var(--gl-muted-foreground); font-size: 14px; letter-spacing: .02em; }
[data-gl-theme] .nav { gap: 2px; }
[data-gl-theme] .nav button { color: var(--gl-muted-foreground); min-height: 44px; padding: 8px 12px; border-radius: 8px; font-size: 14px; transition: color 120ms ease, background-color 120ms ease; }
[data-gl-theme] .nav button:hover { color: var(--gl-foreground); background: var(--gl-muted); }
[data-gl-theme] .nav button.active { color: var(--gl-sidebar-accent-foreground); background: var(--gl-sidebar-accent); box-shadow: inset 3px 0 0 var(--gl-sidebar-primary); font-weight: 600; }
[data-gl-theme] .link-button { color: var(--gl-primary); font-size: 14px; text-decoration: underline; text-underline-offset: 3px; }
/* Original white/dark and black/light pairings include the painted backing. */
[data-gl-theme] .master-logo { background: var(--gl-background); border-radius: 8px; }
[data-gl-theme] .topbar { height: 64px; background: var(--gl-background); border-bottom-color: var(--gl-border); backdrop-filter: none; }
/* At high zoom/short window heights, browser focus scrolling must not place
   content behind the expanded toolbar. Keep normal-height pinning unchanged. */
@media (max-height: 500px) {
  [data-gl-theme] .topbar { position: static; }
}
[data-gl-theme] .breadcrumb { color: var(--gl-muted-foreground); font-size: 14px; }
[data-gl-theme] .breadcrumb strong { color: var(--gl-foreground); }
[data-gl-theme] .env-pill { color: var(--gl-muted-foreground); border-color: var(--gl-input); font-size: 14px; }
[data-gl-theme] .app-footer { color: var(--gl-muted-foreground); font-size: 14px; border-top-color: var(--gl-border); }
[data-gl-theme] .skip-link { background: var(--gl-primary); color: var(--gl-primary-foreground); }
[data-gl-theme] .content { padding: 32px; }
[data-gl-theme] .gl-appearance-toggle {
  min-height: 44px; min-width: 44px; padding: 8px 12px; border-radius: 8px;
  border: 1px solid var(--gl-input); background: var(--gl-secondary); color: var(--gl-secondary-foreground);
  font: 600 14px/1 var(--gl-font-sans); cursor: pointer; transition: background-color 120ms ease;
}
[data-gl-theme] .gl-appearance-toggle[aria-pressed="true"] { background: var(--gl-accent); color: var(--gl-accent-foreground); border-color: var(--gl-primary); }
[data-gl-theme] .gl-appearance-toggle[aria-pressed="true"]::before { content: "\2713\00a0"; }

/* Shared primitives used by every group */
[data-gl-theme] .page-header h1 { font: 500 clamp(30px,3.4vw,44px)/1.05 var(--gl-font-serif); letter-spacing: -.02em; color: var(--gl-foreground); }
[data-gl-theme] .page-header p, [data-gl-theme] .muted { color: var(--gl-muted-foreground); }
[data-gl-theme] .subtle { color: var(--gl-muted-foreground); }
[data-gl-theme] .small, [data-gl-theme] .field-hint, [data-gl-theme] .kpi-foot, [data-gl-theme] .kpi-label { font-size: 14px; }
[data-gl-theme] .eyebrow { color: var(--gl-primary); font-size: 14px; letter-spacing: .18em; }
[data-gl-theme] .card { background: var(--gl-card); border-color: var(--gl-border); border-radius: 12px; box-shadow: none; color: var(--gl-card-foreground); }
[data-gl-theme] .card-header { border-bottom-color: var(--gl-border); }
[data-gl-theme] .card-header :is(h2,h3) { font-size: 15px; }
[data-gl-theme] .kpi { min-height: 120px; }
[data-gl-theme] .kpi::after { display: none; }
[data-gl-theme] .kpi-value { font-size: 36px; color: var(--gl-foreground); }
[data-gl-theme] .btn { min-height: 44px; border-radius: 8px; border-color: var(--gl-input); background: var(--gl-secondary); color: var(--gl-secondary-foreground); font-size: 14px; transition: background-color 120ms ease, border-color 120ms ease, color 120ms ease; }
[data-gl-theme] .btn:hover { transform: none; background: var(--gl-muted); border-color: var(--gl-primary); }
[data-gl-theme] .btn-sm { min-height: 44px; font-size: 14px; }
[data-gl-theme] .btn-primary { background: var(--gl-primary); color: var(--gl-primary-foreground); border-color: var(--gl-primary); box-shadow: none; }
[data-gl-theme] .btn-primary:hover { background: var(--gl-accent); color: var(--gl-accent-foreground); border-color: var(--gl-primary); }
[data-gl-theme] .btn-ghost { background: transparent; }
[data-gl-theme] .btn-danger { background: var(--gl-destructive); color: var(--gl-destructive-foreground); border-color: var(--gl-destructive); }
[data-gl-theme] .btn-success { background: var(--gl-secondary); color: var(--gl-foreground); border-color: var(--success); }
[data-gl-theme] .btn:disabled { opacity: 1; color: var(--gl-muted-foreground); background: var(--gl-muted); border-color: var(--gl-border); }
[data-gl-theme] .field label { color: var(--gl-foreground); font-size: 14px; }
[data-gl-theme] :is(.input, .textarea, .select, input:not([type=checkbox]):not([type=radio]):not([type=range]), select, textarea) { background: var(--gl-background); color: var(--gl-foreground); border-color: var(--gl-input); }
[data-gl-theme] :is(.input, .textarea, .select):focus { border-color: var(--gl-ring); box-shadow: none; }
[data-gl-theme] .check-chip span { background: var(--gl-card); border-color: var(--gl-input); color: var(--gl-muted-foreground); font-size: 14px; }
[data-gl-theme] .check-chip input:checked + span { background: var(--gl-accent); color: var(--gl-accent-foreground); border-color: var(--gl-primary); }
[data-gl-theme] .check-chip input:focus-visible + span { outline: 3px solid var(--gl-ring); outline-offset: 2px; }
[data-gl-theme] th { color: var(--gl-muted-foreground); font-size: 14px; border-bottom-color: var(--gl-input); }
[data-gl-theme] .gl-brand-light { display: none; }
[data-gl-theme] .master-logo img.gl-brand-dark,
[data-gl-theme] .master-logo img.gl-brand-light { filter: none; }
[data-gl-theme="light"] .gl-brand-dark { display: none; }
[data-gl-theme="light"] .gl-brand-light { display: inline-block; }
[data-gl-theme] :is(.gl-document-brand, .wq-sign-brand) {
  width: min(256px, 100%); padding: 12px; background: var(--gl-background);
  display: flex; align-items: center; justify-content: center;
}
[data-gl-theme] .gl-document-brand { margin: 24px 0; }
[data-gl-theme] .wq-sign-brand { margin: 0 auto 24px; }
[data-gl-theme] :is(.gl-document-brand, .wq-sign-brand) img {
  width: 100%; height: auto; filter: none;
}
/* Paper stays light even when the application was dark before Print. */
@media print {
  [data-gl-theme] :is(.gl-document-brand, .wq-sign-brand) { background: #fff !important; }
  [data-gl-theme] :is(.gl-document-brand, .wq-sign-brand) .gl-brand-dark { display: none !important; }
  [data-gl-theme] :is(.gl-document-brand, .wq-sign-brand) .gl-brand-light { display: block !important; }
}
.pw-mark img { width: min(180px, 100%); height: auto; vertical-align: middle; }
[data-gl-theme] td { font-size: 14px; padding: 10px 14px; border-bottom-color: var(--gl-border); color: var(--gl-foreground); }
[data-gl-theme] tr[data-clickable]:hover td { background: var(--gl-muted); }
[data-gl-theme] caption { color: var(--gl-muted-foreground); text-align: left; padding: 8px 14px; font-size: 14px; }
/* Badges: text carries meaning; colour is a secondary mark. */
[data-gl-theme] .badge { font-size: 14px; color: var(--gl-foreground); border-color: var(--gl-input); background: var(--gl-muted); }
[data-gl-theme] .badge.success::before { background: var(--success); }
[data-gl-theme] .badge.warning::before { background: var(--warning); border-radius: 1px; transform: rotate(45deg); }
[data-gl-theme] .badge.danger::before { background: var(--danger); border-radius: 0; }
[data-gl-theme] .badge.info::before { background: var(--info); }
[data-gl-theme] .badge.gold { color: var(--gl-accent-foreground); background: var(--gl-accent); border-color: var(--gl-primary); }
[data-gl-theme] .modal-backdrop { background: rgba(11,12,13,.72); }
[data-gl-theme] :is(.modal, .internal-dialog) { background: var(--gl-popover); color: var(--gl-popover-foreground); border-color: var(--gl-border); border-radius: 16px; }
[data-gl-theme] :is(.modal-head, .modal-foot) { border-color: var(--gl-border); }
[data-gl-theme] .toast { background: var(--gl-popover); color: var(--gl-popover-foreground); border-color: var(--gl-border); font-size: 14px; }
[data-gl-theme] .empty .symbol { border-color: var(--gl-input); color: var(--gl-primary); }
[data-gl-theme] .empty :is(h3, p) { font-size: 15px; }
[data-gl-theme] .empty p { color: var(--gl-muted-foreground); }
[data-gl-theme] .skeleton { background: var(--gl-muted); animation: gl-pulse 1.4s ease-in-out infinite; }
@keyframes gl-pulse { 50% { opacity: .55; } }

/* Shared domain role aliases (used by per-root bridges below). Decorative rules use --gl-border;
   meaningful boundaries use --gl-input; all text roles are --gls-* or measured --gl-* foregrounds. */

/* ===== Increment 3: sign-in / unavailable / command ===== */
[data-gl-theme] .login-shell { background: var(--gl-background); min-height: 100dvh; }
[data-gl-theme] .login-brand { border-right-color: var(--gl-border); }
[data-gl-theme] .login-brand::after { border-color: var(--gl-border); box-shadow: none; }
[data-gl-theme] .login-hero h1 { color: var(--gl-foreground); }
[data-gl-theme] .login-hero p, [data-gl-theme] .login-card > p { color: var(--gl-muted-foreground); }
[data-gl-theme] .login-foot { color: var(--gl-muted-foreground); font-size: 14px; }
[data-gl-theme] .login-card { background: var(--gl-card); border-color: var(--gl-border); border-radius: 16px; backdrop-filter: none; box-shadow: var(--shadow); }
[data-gl-theme] .login-card .btn-primary { background: var(--gl-primary); color: var(--gl-primary-foreground); border-color: var(--gl-primary); }
[data-gl-theme] .login-card .loader { border-color: var(--gl-border); border-top-color: currentColor; }
/* Sign-in error note carries an inline literal (#ffd2cf); bridge it to the measured danger role. */
[data-gl-theme] .demo-note[style*="#ffd2cf"] { color: var(--gls-danger) !important; border-color: var(--gls-danger) !important; background: var(--gl-card); }
[data-gl-theme] .demo-note { background: var(--gl-accent); color: var(--gl-accent-foreground); border-color: var(--gl-primary); font-size: 14px; }
[data-gl-theme] .cm-page { --cm-brass: var(--gls-brand); --cm-teal: var(--gls-info); --cm-rust: var(--gls-danger); --cm-sage: var(--gls-success); --cm-line: var(--gl-border); }
[data-gl-theme] .cm-msg-warning { border-left-color: var(--gls-warning); }
[data-gl-theme] .cm-dialog { background: var(--gl-popover); color: var(--gl-popover-foreground); }

/* ===== Increment 4: management, campaigns, library, integrations, operations, audit, workers, AI ===== */
[data-gl-theme] .management-hero { background: var(--gl-card); border-color: var(--gl-border); border-left: 3px solid var(--gl-primary); }
[data-gl-theme] .management-hero::after { display: none; }
[data-gl-theme] .management-hero-meta { border-top-color: var(--gl-border); font-size: 14px; }
[data-gl-theme] :is(.management-hero-meta strong, .management-count, .management-pulse-item strong, .approval-rail .display-number, .management-time-list strong) { color: var(--gl-foreground); }
[data-gl-theme] :is(.management-priority p, .management-domain p, .management-time p, .management-section-head p, .management-pulse-item span, .management-pulse-note, .management-priority-meta, .management-domain-foot small) { color: var(--gl-muted-foreground); }
[data-gl-theme] .management-priority-index { color: var(--gl-primary); }
[data-gl-theme] :is(.management-pulse, .management-domain) { background: var(--gl-card); }
[data-gl-theme] .management-unavailable { color: var(--gls-warning); border-color: var(--gls-warning); }
[data-gl-theme] .management-time-list span { background: var(--gl-muted); }
[data-gl-theme] :is(.service-card, .definition, .deliverable, .finding, .playbook-section, .conflict-card, .internal-panel, .internal-lead, .gp-device) { background: var(--gl-card); border-color: var(--gl-border); color: var(--gl-card-foreground); }
[data-gl-theme] :is(.service-card p, .finding p, .playbook-lead p, .playbook-section p) { color: var(--gl-muted-foreground); }
[data-gl-theme] .deliverable-body { color: var(--gl-foreground); }
[data-gl-theme] .service-card .category, [data-gl-theme] .playbook-lead .category { color: var(--gl-primary); }
[data-gl-theme] :is(.service-delivery, .playbook-section.recommendation, .approval-box) { background: var(--gl-accent); color: var(--gl-accent-foreground); border-color: var(--gl-primary); }
[data-gl-theme] .playbook-section.data-quality { background: var(--gl-muted); border-color: var(--gls-warning); }
[data-gl-theme] .playbook-section.data-quality p { color: var(--gl-foreground); }
[data-gl-theme] :is(.service-link, .service-link:hover) { color: var(--gl-primary); text-decoration: underline; }
[data-gl-theme] .source-flag { color: var(--gls-warning); border-color: var(--gls-warning); background: var(--gl-muted); }
[data-gl-theme] .definition-grid { background: var(--gl-border); border-color: var(--gl-border); }
[data-gl-theme] .finding-icon { background: var(--gl-muted); }
[data-gl-theme] .internal-banner { color: var(--gl-foreground); border-color: var(--gls-warning); background: var(--gl-muted); }
[data-gl-theme] :is(.internal-list-item:hover, .internal-list-item.active) { background: var(--gl-accent); color: var(--gl-accent-foreground); }
[data-gl-theme] :is(.incidents, .decisions) .internal-panel { border-color: var(--gl-border); }
[data-gl-theme] .production-evidence { background: var(--gl-muted); }

/* ===== Increment 5: Store Pulse, inventory, customer flow, finance, attribution ===== */
[data-gl-theme] .inv-page { --inv-ink: var(--gls-ink); --inv-dim: var(--gls-dim); --inv-line: var(--gl-border); --inv-card: var(--gl-card); --inv-gold: var(--gls-brand); --inv-ok: var(--gls-success); --inv-warn: var(--gls-warning); --inv-bad: var(--gls-danger); }
[data-gl-theme] .fi-page { --fi-brass: var(--gls-brand); --fi-ink: var(--gls-ink); --fi-teal: var(--gls-info); --fi-rust: var(--gls-danger); --fi-sage: var(--gls-success); --fi-line: var(--gl-border); --fi-paper: var(--gl-card); }
[data-gl-theme] .at-page { --at-brass: var(--gls-brand); --at-ink: var(--gls-ink); --at-teal: var(--gls-info); --at-rust: var(--gls-danger); --at-sage: var(--gls-success); --at-line: var(--gl-border); --at-paper: var(--gl-card); }
[data-gl-theme] .cf-page { --cf-gold: var(--gls-brand); --cf-gold-soft: var(--gl-accent); --cf-ink: var(--gls-ink); --cf-teal: var(--gls-info); --cf-rust: var(--gls-danger); --cf-sage: var(--gls-success); --cf-med: var(--gls-info); --cf-au: var(--gls-purple); --cf-line: var(--gl-border); }
[data-gl-theme] .pl-page { --pl-fc: var(--gls-brand); --pl-band: var(--gl-accent); --pl-actual: var(--gls-info); --pl-need: var(--gls-danger); --pl-sched: var(--gls-success); --pl-aheads: var(--gls-purple); }
/* Warning states previously drawn in brand brass now use the distinct warning role; labels unchanged. */
[data-gl-theme] :is(.at-msg-warning) { border-left-color: var(--gls-warning); }
[data-gl-theme] .at-overlap { color: var(--gls-warning); }
[data-gl-theme] :is(.cf-banner-stale, .cf-banner-partial) { border-left-color: var(--gls-warning); }
[data-gl-theme] :is(.cf-banner-stale, .cf-banner-partial) .cf-banner-mark { background: var(--gls-warning); }
[data-gl-theme] .cf-partial { color: var(--gls-warning); }
[data-gl-theme] :is(.at-sel .at-win-btn, .at-win-btn[aria-pressed="true"], .fi-sel) { background: var(--gl-accent); color: var(--gl-accent-foreground); }
[data-gl-theme] :is(.cf-grid, .pl-grid) { stroke: var(--gl-border); }
[data-gl-theme] :is(.cf-axis, .pl-axis) { stroke: var(--gl-input); }
[data-gl-theme] .cf-mix-unk { stroke: var(--gl-input); }
[data-gl-theme] .pl-sw { border-color: var(--gl-input); }
[data-gl-theme] :is(.at-v-inconclusive, .at-v-neutral, .at-v-none, .at-unav, .fi-unav, .fi-band-none, .fi-band-na) { color: var(--gls-dim); }
[data-gl-theme] :is(.cf-l1, .cf-l2, .cf-l3) { color: var(--gls-ink); }
[data-gl-theme] .pl-h-unsched { color: var(--gls-dim); }
[data-gl-theme] :is(.pl-tabs) { background: var(--gl-muted); border-color: var(--gl-border); }
[data-gl-theme] .pl-tab:hover { background: var(--gl-accent); color: var(--gl-accent-foreground); }
[data-gl-theme] .pl-tab.is-current { background: var(--gl-card); color: var(--gl-foreground); }
[data-gl-theme] :is(.pl-table th, .pl-table td, .pl-groups li) { border-color: var(--gl-border); }
[data-gl-theme] .pl-table tfoot :is(th, td) { border-top-color: var(--gl-input); }
[data-gl-theme] .pl-rec-list > li { border-bottom-color: var(--gl-border); }
[data-gl-theme] :is(.sp-status.sp-warning, .sp-pill-closing_unavailable, .sp-pill-partial, .pl-uncal, .pl-conf-medium, .pl-fresh-partial, .pl-fresh-stale) { color: var(--gls-warning); }
[data-gl-theme] .sp-banner-unknown .sp-banner-mark { background: var(--gls-dim); }
[data-gl-theme] :is(.sp-pill) { background: var(--gl-muted); }
[data-gl-theme] :is(.sp-bar) { fill: var(--gls-brand); }
[data-gl-theme] :is(.bf-dialog) { background: var(--gl-popover); color: var(--gl-popover-foreground); border-color: var(--gl-border); }
[data-gl-theme] .bf-cov { background: var(--gl-muted); }
[data-gl-theme] :is(.bf-pill-running, .bf-pill-active, .bf-pill-queued, .bf-pill-pending) { color: var(--gls-info); }
[data-gl-theme] .bf-pill-paused { color: var(--gls-warning); }

/* ===== Increment 6: compliance, goals, sales, reports, global search ===== */
[data-gl-theme] .cp-page { --cp-brass: var(--gls-brand); --cp-teal: var(--gls-info); --cp-rust: var(--gls-danger); --cp-sage: var(--gls-success); --cp-line: var(--gl-border); }
[data-gl-theme] .gl-page { --gl-brass: var(--gls-brand); --gl-teal: var(--gls-info); --gl-rust: var(--gls-danger); --gl-sage: var(--gls-success); --gl-line: var(--gl-border); }
[data-gl-theme] .rp-page { --rp-gold: var(--gls-brand); --rp-line: var(--gl-border); --rp-ink: var(--gls-ink); }
[data-gl-theme] :is(.cp-msg-warning, .gl-msg-warning, .rp-msg-warning) { border-left-color: var(--gls-warning); }
[data-gl-theme] .rp-note { color: var(--gls-warning); }
[data-gl-theme] .rp-seg-on { background: var(--gl-primary); color: var(--gl-primary-foreground); }
[data-gl-theme] .rp-svg text { fill: var(--gls-dim); }
[data-gl-theme] :is(.cp-dialog, .gl-dialog) { background: var(--gl-popover); color: var(--gl-popover-foreground); }
[data-gl-theme] :is(.gl-open > *, .gl-hrow > td, .cp-over) { background: var(--gl-muted); }
[data-gl-theme] .gs-input { border-color: var(--gl-input); background: var(--gl-background); color: var(--gl-foreground); min-height: 44px; }
[data-gl-theme] .gs-list { background: var(--gl-popover); color: var(--gl-popover-foreground); border-color: var(--gl-border); }
[data-gl-theme] .gs-gh { color: var(--gl-primary); }
[data-gl-theme] :is(.gs-opt:hover, .gs-active) { background: var(--gl-accent); color: var(--gl-accent-foreground); }
[data-gl-theme] .gs-sk { border-color: var(--gl-input); }

/* ===== Increment 7: workforce, notifications, settings ===== */
[data-gl-theme] .st-page { --st-ink: var(--gls-ink); --st-sub: var(--gls-dim); --st-line: var(--gl-border); --st-paper: var(--gl-background); --st-card: var(--gl-card); --st-gold: var(--gls-brand); --st-gold-soft: var(--gl-accent); --st-moss: var(--gls-success); --st-moss-soft: var(--gl-muted); --st-rust: var(--gls-danger); --st-rust-soft: var(--gl-muted); }
[data-gl-theme] .st-pill-paused { color: var(--gl-accent-foreground); }
[data-gl-theme] .st-page :is(input, select) { border-color: var(--gl-input); }
[data-gl-theme] :is(.sc-dialog) { background: var(--gl-popover); color: var(--gl-popover-foreground); }
[data-gl-theme] :is(.sc-status.sc-warning, .sc-pill-off, .sc-out-run, .lb-pill-scheduled_only) { color: var(--gls-warning); }
[data-gl-theme] :is(.sc-out, .sc-out-ok, .sc-out-bad, .sc-out-run) { background: var(--gl-muted); }
[data-gl-theme] .gl-tab { color: var(--gls-dim); min-height: 44px; }
[data-gl-theme] .gl-tab-on { background: var(--gl-primary); color: var(--gl-primary-foreground); }
[data-gl-theme] .gl-tabs { background: var(--gl-muted); border-color: var(--gl-border); }
[data-gl-theme] :is(.lb-act, .lb-key-act) { fill: var(--gls-ink); background: var(--gls-ink); }
[data-gl-theme] :is(.lb-sched, .lb-key-sched) { fill: var(--gls-brand); background: var(--gls-brand); }
[data-gl-theme] .gn-badge { background: var(--gl-primary); color: var(--gl-primary-foreground); }
[data-gl-theme] .gn-unread { background: var(--gl-accent); }
[data-gl-theme] :is(.gn-empty, .gn-panel) { background: var(--gl-card); border-color: var(--gl-input); }
[data-gl-theme] .ca-danger-solid { background: var(--gl-destructive); color: var(--gl-destructive-foreground); border-color: var(--gl-destructive); }
[data-gl-theme] .ca-editing td { background: var(--gl-accent); }

/* ===== Increment 8: waitlist desk / board / kiosk (in-app) ===== */
[data-gl-theme] .wq-noshow.is-due { color: var(--gl-background); background: var(--gls-warning); border-color: var(--gls-warning); }
[data-gl-theme] .wq-warnbox { border-color: var(--gls-warning); background: var(--gl-muted); }
[data-gl-theme] .wq-joinurl { background: var(--gl-muted); color: var(--gl-foreground); }
/* .wq-qr / .wq-sign-qr keep their fixed light backing: QR scan contrast, not theme. Print sign untouched. */

/* ===== Increment 8: public join / status (public.css variable bridge) ===== */
[data-gl-theme] body.pw {
  --pw-bg: var(--gl-background); --pw-panel: var(--gl-card); --pw-panel-2: var(--gl-card); --pw-line: var(--gl-input);
  --pw-text: var(--gl-foreground); --pw-muted: var(--gl-muted-foreground); --pw-gold: var(--gls-brand); --pw-gold-2: var(--gls-brand);
  --pw-ready: var(--gls-success); --pw-amber: var(--gls-warning); --pw-danger: var(--gls-danger);
  --pw-sans: var(--gl-font-sans); --pw-serif: var(--gl-font-serif);
  background: var(--gl-background);
}
[data-gl-theme] body.pw :is(.pw-f input, .pw-f select, .pw-seg span) { background: var(--gl-background); color: var(--gl-foreground); }
[data-gl-theme] body.pw .pw-seg input:checked + span { background: var(--gl-accent); color: var(--gl-accent-foreground); }
[data-gl-theme] body.pw .pw-btn { background: var(--gl-primary); color: var(--gl-primary-foreground); }
[data-gl-theme] body.pw .pw-btn-quiet { background: transparent; color: var(--gls-brand); }
[data-gl-theme] body.pw .pw-btn:disabled { opacity: 1; background: var(--gl-muted); color: var(--gl-muted-foreground); }
[data-gl-theme] body.pw .pw-skel div { background: var(--gl-muted); }
[data-gl-theme] body.pw .pw-error { background: var(--gl-card); border-color: var(--gls-danger); }
[data-gl-theme] .pw-brand [data-gl-appearance-slot] { display: inline-flex; margin-left: 12px; }
[data-gl-theme] .pw-brand { flex-wrap: wrap; }
[data-gl-theme] .login-card > .gl-appearance-toggle { margin-top: 24px; }

/* ===== Increment 9: install / offline / cost review =====
   offline.html is script-free by sealed contract: it cannot read the saved preference and
   falls back to dark. /install uses .gp-device (Increment 4 surfaces). */
[data-gl-theme] body.gp-offline-body { background: var(--gl-background); color: var(--gl-foreground); }
[data-gl-theme] body.gl-cost-review { --bg: var(--gl-background); --panel: var(--gl-card); --line: var(--gl-border); --text: var(--gl-foreground); --muted: var(--gl-muted-foreground); --gold: var(--gls-brand); background: var(--gl-background); }
[data-gl-theme] body.gl-cost-review .gl-appearance-slot { display: flex; justify-content: flex-end; }

/* GENERATED supporting-text floor: selectors found with font-size <14px in route CSS. */
[data-gl-theme] :is(.account-early,
  .app-footer,
  .at-brief-l,
  .at-field label,
  .at-kicker,
  .at-legend,
  .at-overlap,
  .at-sources,
  .at-src,
  .at-src-l,
  .at-status,
  .at-table thead th,
  .at-verdict,
  .at-win-meta,
  .badge,
  .bf-missing summary,
  .bf-missing ul,
  .brand-lockup .wordmark,
  .breadcrumb,
  .btn,
  .btn-sm,
  .ca-dialog label,
  .ca-form label,
  .ca-role,
  .ca-status,
  .ca-table code,
  .ca-table thead th,
  .cf-big-l,
  .cf-field label,
  .cf-kicker,
  .cf-legend,
  .cf-pill,
  .cf-table,
  .cf-table thead th,
  .cf-target-form label,
  .cf-unk,
  .check-chip span,
  .chip,
  .cm-btable,
  .cm-btable thead th,
  .cm-count,
  .cm-field label,
  .cm-group-h,
  .cm-kicker,
  .cm-lab,
  .cm-meta,
  .cm-note,
  .cm-sev,
  .cm-status,
  .cm-sum,
  .cm-t dt,
  .conflict-card p,
  .conflict-data dd,
  .conflict-data dt,
  .conflict-form-error,
  .conflict-form-intro,
  .conflict-pair p,
  .conflict-scope,
  .conflicts-hero-foot,
  .conflicts-section-head p,
  .cp-count,
  .cp-date-m,
  .cp-evidence,
  .cp-field label,
  .cp-fixed-l,
  .cp-group-h,
  .cp-kicker,
  .cp-meta,
  .cp-status,
  .cp-t dt,
  .decision-thesis span,
  .definition label,
  .definition strong,
  .deliverable-body,
  .deliverable-head h3,
  .demo-note,
  .empty p,
  .env-pill,
  .eyebrow,
  .fi-band,
  .fi-comp,
  .fi-field label,
  .fi-kicker,
  .fi-kpi-l,
  .fi-legend,
  .fi-sev,
  .fi-src,
  .fi-table thead th,
  .fi-unk,
  .field label,
  .field-hint,
  .finding h3,
  .finding h4,
  .finding p,
  .gl-dir,
  .gl-field label,
  .gl-grade,
  .gl-kicker,
  .gl-status,
  .gl-table thead th,
  .gl-trend,
  .gn-body,
  .gn-check,
  .gn-count,
  .gn-done,
  .gn-fs legend,
  .gn-meta,
  .gn-mono,
  .gn-msg,
  .gn-note,
  .gn-quiet label,
  .gn-sub-t,
  .gn-table,
  .gn-table th,
  .gn-tabs a,
  .gp-foot,
  .gp-here,
  .gp-meta dt,
  .gp-msg,
  .gp-rules dt,
  .gp-state,
  .gp-step p,
  .gs-gh,
  .gs-s,
  .incident-history .internal-timeline strong,
  .internal-banner,
  .internal-brief-item p,
  .internal-empty,
  .internal-fact span,
  .internal-fact strong,
  .internal-form-error,
  .internal-lead p,
  .internal-list-item small,
  .internal-summary span,
  .internal-timeline li,
  .inv-arrow,
  .inv-day,
  .inv-field label,
  .inv-table thead th,
  .inv-vel-sum,
  .kpi-foot,
  .kpi-label,
  .lb-pos,
  .link-button,
  .login-foot,
  .management-domain p,
  .management-hero-meta,
  .management-priority p,
  .management-priority-meta,
  .management-pulse-item span,
  .management-pulse-note,
  .management-section-head p,
  .management-time p,
  .management-time-list span,
  .management-unavailable,
  .pl-dlg-err,
  .pl-facts dt,
  .pl-legend,
  .pl-mono,
  .pl-sub,
  .pl-tab,
  .pl-table,
  .pl-table thead th,
  .pl-today,
  .playbook-lead .category,
  .playbook-lead p,
  .playbook-section label,
  .playbook-section p,
  .production-warning,
  .pw-eyebrow,
  .pw-fine,
  .pw-mark,
  .rp-field label,
  .rp-kicker,
  .rp-kind,
  .rp-lab,
  .rp-meta,
  .sc-builtin,
  .sc-health-meta dt,
  .sc-job-facts dt,
  .sc-mono,
  .sc-out,
  .sc-pill,
  .sc-table,
  .service-card .category,
  .service-card p,
  .service-delivery,
  .service-meta,
  .small,
  .source-flag,
  .sp-pill,
  .sp-table thead th,
  .st-code,
  .st-count,
  .st-day legend,
  .st-facts dt,
  .st-mono,
  .st-page label,
  .st-pill,
  .st-table thead th,
  .st-tz,
  .toast,
  .user-block span,
  .user-block strong,
  .wq-board-foot,
  .wq-bubble,
  .wq-check,
  .wq-consent-check small,
  .wq-consent-script,
  .wq-consent-tag,
  .wq-consentref,
  .wq-count span,
  .wq-dl,
  .wq-events li,
  .wq-eyebrow,
  .wq-f,
  .wq-hist li,
  .wq-joinurl,
  .wq-msg,
  .wq-name small,
  .wq-noshow,
  .wq-note,
  .wq-purpose,
  .wq-reg,
  .wq-seg,
  .wq-seg legend,
  .wq-sname small,
  .wq-sub,
  .wq-tab,
  .wq-table,
  .wq-table td small,
  .wq-table th,
  .wq-tile span,
  .wq-tool h4,
  .wq-warnbox,
  .ws-eyebrow,
  .ws-f,
  .ws-hint,
  .wsrc-eyebrow,
  .wsrc-f,
  td,
  th) { font-size: 14px; }
/* Data labels remain readable too; original text summaries/data tables are retained.
   Print uses its separate paper layout, not the interactive theme's density. */
[data-gl-theme] :is(.at-tick, .cf-axis-l, .cf-heat, .cf-tick, .fi-tick,
  .gn-badge, .gn-switch, .lb-axis, .pl-axis-label, .pl-heat-table,
  .pl-heat-table thead th, .pl-tick, .rp-svg text, .sp-tick) { font-size: 14px; }
[data-gl-theme] :is(.gl-goals, .gl-hist, .gn-table, .inv-table, .wq-table) td::before {
  font-size: 14px; white-space: normal; overflow-wrap: anywhere;
}

@media (max-width: 880px) {
  [data-gl-theme] .content { padding: 20px 16px; }
  [data-gl-theme] .topbar { padding: 0 16px; }
}
@media (max-width: 680px) {
  [data-gl-theme] .topbar { height: auto; min-height: 64px; flex-wrap: wrap; gap: 8px; padding-block: 8px; }
  [data-gl-theme] .top-actions { flex-wrap: wrap; max-width: 100%; }
}
@media (prefers-reduced-motion: reduce) {
  [data-gl-theme] *, [data-gl-theme] *::before, [data-gl-theme] *::after { animation-duration: .01ms !important; animation-iteration-count: 1 !important; transition-duration: .01ms !important; scroll-behavior: auto !important; }
}
@media (forced-colors: active) {
  [data-gl-theme] .nav button.active { outline: 2px solid CanvasText; }
}

/* DS01 narrow-layout repair. Keep intrinsic table widths inside their own
   scroll regions; responsive stacked tables must release the shared 720px
   minimum. Do not conceal overflow on the page or change table semantics. */
[data-gl-theme] :is(.fi-page, .at-page, .gl-page, .cm-page) {
  grid-template-columns: minmax(0, 1fr);
}
[data-gl-theme] :is(.fi-page, .at-page, .gl-page, .cm-page) > * {
  min-width: 0; max-width: 100%;
}
[data-gl-theme] .cm-page .table-wrap { min-width: 0; max-width: 100%; }
[data-gl-theme] .wq-summary .table-wrap {
  position: relative; min-width: 0; max-width: 100%;
}
[data-gl-theme] .fi-card { grid-template-columns: minmax(0, 1fr); }
[data-gl-theme] .fi-table-wrap { position: relative; min-width: 0; }
[data-gl-theme] .fi-kpis {
  grid-template-columns: repeat(auto-fit, minmax(min(100%, 13rem), 1fr));
}
[data-gl-theme] .fi-kpi { min-width: 0; grid-template-columns: minmax(0, 1fr); }
[data-gl-theme] .fi-kpi-n { white-space: nowrap; overflow-wrap: normal; }
[data-gl-theme] .gl-card { grid-template-columns: minmax(0, 1fr); }
[data-gl-theme] .gl-table-wrap { position: relative; min-width: 0; }
@media (min-width: 721px) {
  [data-gl-theme] :is(.fi-table, .gl-table) { overflow-wrap: normal; }
  [data-gl-theme] .fi-table .fi-num { white-space: nowrap; }
  [data-gl-theme] .fi-table tbody th,
  [data-gl-theme] .fi-month-btn { white-space: nowrap; overflow-wrap: normal; }
  [data-gl-theme] .fi-table .fi-srcs { flex-wrap: nowrap; }
  /* .gl-row is also a flex form utility; real ledger rows stay table rows. */
  [data-gl-theme] .gl-goals > tbody > tr.gl-row { display: table-row; }
}
[data-gl-theme] .cm-btable { min-width: 0; }
[data-gl-theme] .conflicts { min-width: 0; overflow-wrap: anywhere; }
[data-gl-theme] .conflicts :is(.conflicts-hero-foot, .conflicts-section-head, .conflict-card-head, .conflict-pair-head) {
  flex-wrap: wrap;
}
[data-gl-theme] .conflicts :is(.conflicts-hero-foot, .conflicts-section-head, .conflict-card-head, .conflict-pair-head) > * {
  min-width: 0; max-width: 100%;
}
[data-gl-theme] .conflicts .btn { max-width: 100%; white-space: normal; }
/* The existing unique import control identifies Integrations without changing
   the router, private render guards, DOM roles, or any provider action. */
[data-gl-theme] .content:has(#manual-po-file) { overflow-wrap: anywhere; }
[data-gl-theme] .content:has(#manual-po-file) :is(.card, .card-body, .card-header, .grid > *, .field) {
  min-width: 0; max-width: 100%;
}
[data-gl-theme] .content:has(#manual-po-file) :is(.card-body, .card-header) { flex-wrap: wrap; }
[data-gl-theme] .content:has(#manual-po-file) .card-body > * { min-width: 0; max-width: 100%; }
[data-gl-theme] .content:has(#manual-po-file) :is(.field, .stack) { grid-template-columns: minmax(0, 1fr); }
[data-gl-theme] .content:has(#manual-po-file) :is(input, select, textarea) { min-width: 0; max-width: 100%; }
[data-gl-theme] .content:has(#manual-po-file) :is(.badge, .btn) { max-width: 100%; white-space: normal; }
@media (max-width: 720px) {
  [data-gl-theme] :is(.fi-table, .at-table, .gl-goals, .gl-hist) { min-width: 0; }
  [data-gl-theme] :is(.fi-src, .gl-status, .gl-grade) {
    max-width: 100%; white-space: normal; overflow-wrap: anywhere;
  }
  [data-gl-theme] :is(.gl-goals, .gl-hist) td { flex-wrap: wrap; min-width: 0; }
}
