/* BAZSA R27 — canonical visual theme authority.
 * Only this file owns the shared Light/Dark semantic palette. Product and
 * navigation styles consume these values; legacy aliases remain temporarily
 * so unmigrated selectors inherit the same meaning without creating a second
 * theme owner. */
/* R27.9 — globally reusable primitives. Public/auth/portal roots and the app
 * resolve semantic roles from one primitive palette without duplicating literals. */
:root{
  /* R32.9.3: shared exact-value typography and density primitives. */
  --bz-type-caption:11px;
  --bz-space-compact:10px;
  --bz-color-forest-900:#12352F;
  --bz-color-forest-800:#18463E;
  --bz-color-teal-700:#087A68;
  --bz-color-teal-600:#0B927C;
  --bz-color-teal-300:#6BD4BC;
  --bz-color-teal-200:#8DE0CD;
  --bz-color-green-700:#11744B;
  --bz-color-green-600:#168A5B;
  --bz-color-green-300:#68D6A5;
  --bz-color-gold-700:#95651F;
  --bz-color-gold-600:#B7812C;
  --bz-color-gold-300:#F0C66D;
  --bz-color-red-700:#B93A35;
  --bz-color-red-600:#D84A43;
  --bz-color-red-300:#FF9890;
  --bz-color-neutral-0:#FFFFFF;
  --bz-color-neutral-25:#F8FAF9;
  --bz-color-neutral-50:#F5F7F6;
  --bz-color-neutral-100:#EFF4F1;
  --bz-color-neutral-150:#EDF1EF;
  --bz-color-neutral-200:#E2E8E5;
  --bz-color-neutral-300:#CBD6D1;
  --bz-color-neutral-400:#A8B2AE;
  --bz-color-neutral-500:#87938F;
  --bz-color-neutral-700:#596762;
  --bz-color-neutral-900:#18211F;
  --bz-color-dark-canvas:#0F0F10;
  --bz-color-dark-base:#151516;
  --bz-color-dark-subtle:#1A1A1C;
  --bz-color-dark-raised:#222224;
  --bz-color-dark-floating:#252527;
  --bz-color-dark-overlay:#29292C;
  --bz-color-dark-text-primary:#EEEEF0;
  --bz-color-dark-text-secondary:#BFC0C5;
  --bz-color-dark-text-muted:#96979F;
  --bz-color-dark-text-disabled:#65656D;
  --bz-color-dark-border-soft:#252527;
  --bz-color-dark-border-default:#333336;
  --bz-color-dark-border-strong:#505057;
}

#bazsa-app{
  /* Brand/action roles. */
  --bz-brand-anchor:var(--bz-color-forest-900);
  --bz-brand-accent:var(--bz-color-teal-600);
  --bz-brand-accent-soft:color-mix(in srgb,var(--bz-brand-accent) 10%,var(--bz-color-neutral-0));
  --bz-action-primary:var(--bz-color-teal-600);
  --bz-action-primary-hover:var(--bz-color-teal-700);
  --bz-action-primary-soft:color-mix(in srgb,var(--bz-action-primary) 10%,var(--bz-color-neutral-0));

  /* Status roles are deliberately separate from brand. */
  --bz-status-success:var(--bz-color-green-600);
  --bz-status-success-soft:color-mix(in srgb,var(--bz-status-success) 10%,var(--bz-color-neutral-0));
  --bz-status-attention:var(--bz-color-gold-600);
  --bz-status-attention-soft:color-mix(in srgb,var(--bz-status-attention) 11%,var(--bz-color-neutral-0));
  --bz-status-danger:var(--bz-color-red-600);
  --bz-status-danger-soft:color-mix(in srgb,var(--bz-status-danger) 10%,var(--bz-color-neutral-0));

  /* Five shared surface roles plus overlay. */
  --bz-surface-canvas:var(--bz-color-neutral-50);
  --bz-surface-base:var(--bz-color-neutral-0);
  --bz-surface-subtle:var(--bz-color-neutral-25);
  --bz-surface-raised:var(--bz-color-neutral-100);
  --bz-surface-floating:var(--bz-color-neutral-0);
  --bz-surface-overlay:var(--bz-color-neutral-0);

  /* Text and borders. */
  --bz-text-primary:var(--bz-color-neutral-900);
  --bz-text-secondary:var(--bz-color-neutral-700);
  --bz-text-muted:var(--bz-color-neutral-500);
  --bz-text-disabled:var(--bz-color-neutral-400);
  --bz-text-inverse:var(--bz-color-neutral-0);
  --bz-border-soft:var(--bz-color-neutral-150);
  --bz-border-default:var(--bz-color-neutral-200);
  --bz-border-strong:var(--bz-color-neutral-300);

  /* Shared interaction, geometry, elevation and motion. */
  --bz-interaction-hover:color-mix(in srgb,var(--bz-action-primary) 4%,var(--bz-surface-base));
  --bz-interaction-selected:color-mix(in srgb,var(--bz-action-primary) 9%,var(--bz-surface-base));
  --bz-focus-ring:color-mix(in srgb,var(--bz-action-primary) 34%,transparent);
  --bz-radius-control:8px;
  --bz-radius-row:9px;
  --bz-radius-surface:11px;
  --bz-radius-overlay:14px;
  --bz-shadow-surface:none;
  --bz-shadow-floating:0 10px 28px rgba(19,42,36,.11);
  --bz-shadow-overlay:0 20px 48px rgba(14,32,28,.17);
  --bz-motion-fast:140ms;
  --bz-motion-standard:180ms;
  --bz-motion-drawer:220ms;
  --bz-space-1:6px;
  --bz-space-2:8px;
  --bz-space-3:12px;
  --bz-space-4:16px;
  --bz-space-5:18px;
  --bz-space-6:22px;

  /* Previous semantic names remain as aliases while legacy selectors migrate. */
  --bz-status-positive:var(--bz-status-success);
  --bz-status-positive-soft:var(--bz-status-success-soft);
  --bz-status-warning:var(--bz-status-attention);
  --bz-status-warning-soft:var(--bz-status-attention-soft);
  --bz-status-critical:var(--bz-status-danger);
  --bz-status-critical-soft:var(--bz-status-danger-soft);
  --bz-surface-0:var(--bz-surface-canvas);
  --bz-surface-1:var(--bz-surface-base);
  --bz-surface-2:var(--bz-surface-subtle);
  --bz-surface-3:var(--bz-surface-raised);
  --bz-elevation-flat:var(--bz-shadow-surface);
  --bz-elevation-floating:var(--bz-shadow-floating);
  --bz-elevation-overlay:var(--bz-shadow-overlay);
  --bz-radius-panel:var(--bz-radius-surface);

  /* Compatibility bridge for patch-era public names. */
  --navy:var(--bz-brand-anchor);
  --navy-2:var(--bz-color-forest-800);
  --navy-3:color-mix(in srgb,var(--bz-brand-anchor) 78%,var(--bz-surface-base));
  --brand:var(--bz-action-primary);
  --primary:var(--bz-action-primary);
  --blue:var(--bz-action-primary);
  --blue-soft:var(--bz-action-primary-soft);
  --teal:var(--bz-brand-accent);
  --teal-2:var(--bz-color-teal-700);
  --teal-soft:var(--bz-brand-accent-soft);
  --green:var(--bz-status-success);
  --gold:var(--bz-status-attention);
  --gold-2:var(--bz-color-gold-700);
  --gold-soft:var(--bz-status-attention-soft);
  --orange:var(--bz-status-attention);
  --warning:var(--bz-status-attention);
  --orange-soft:var(--bz-status-attention-soft);
  --red:var(--bz-status-danger);
  --danger:var(--bz-status-danger);
  --red-soft:var(--bz-status-danger-soft);
  --success:var(--bz-status-success);
  --ok:var(--bz-status-success);
  --bg:var(--bz-surface-canvas);
  --surface:var(--bz-surface-base);
  --surface-2:var(--bz-surface-subtle);
  --surface-3:var(--bz-surface-raised);
  --card:var(--bz-surface-base);
  --card-2:var(--bz-surface-subtle);
  --panel:var(--bz-surface-base);
  --soft:var(--bz-surface-subtle);
  --ink:var(--bz-text-primary);
  --ink-2:var(--bz-text-secondary);
  --ink-3:var(--bz-text-muted);
  --ink-4:var(--bz-text-disabled);
  --text:var(--bz-text-primary);
  --txt:var(--bz-text-primary);
  --muted:var(--bz-text-muted);
  --mut:var(--bz-text-muted);
  --line:var(--bz-border-default);
  --line-2:var(--bz-border-soft);
  --line-strong:var(--bz-border-strong);
  --border:var(--bz-border-default);
  --focus:var(--bz-action-primary);
  --r:var(--bz-radius-row);
  --r-sm:var(--bz-radius-control);
  --r-lg:var(--bz-radius-surface);
  --sh:var(--bz-shadow-surface);
  --sh-2:var(--bz-shadow-floating);
  --sh-pop:var(--bz-shadow-overlay);
  --bz-primary:var(--bz-action-primary);
  --bz-surface:var(--bz-surface-base);
  --bz-border:var(--bz-border-default);
  --bz-text:var(--bz-text-primary);
  --bz-muted:var(--bz-text-muted);

  /* Legacy product-review aliases now resolve through R27 semantics. */
  --pr-page:var(--bz-surface-canvas);
  --pr-surface:var(--bz-surface-base);
  --pr-surface-raised:var(--bz-surface-floating);
  --pr-surface-soft:var(--bz-surface-subtle);
  --pr-surface-muted:var(--bz-surface-raised);
  --pr-text:var(--bz-text-primary);
  --pr-text-2:var(--bz-text-secondary);
  --pr-text-3:var(--bz-text-muted);
  --pr-text-4:var(--bz-text-disabled);
  --pr-border:var(--bz-border-default);
  --pr-border-strong:var(--bz-border-strong);
  --pr-focus:var(--bz-action-primary);
  --pr-warning-bg:var(--bz-status-attention-soft);
  --pr-warning-border:color-mix(in srgb,var(--bz-status-attention) 42%,var(--bz-border-default));
  --pr-warning-text:color-mix(in srgb,var(--bz-status-attention) 72%,var(--bz-text-primary));
  --pr-danger-bg:var(--bz-status-danger-soft);
  --pr-danger-text:var(--bz-status-danger);
  --pr-success-bg:var(--bz-status-success-soft);
  --pr-success-text:var(--bz-status-success);
  --bz-scrim-color:rgba(12,18,30,.42);
  --pr-overlay:var(--bz-scrim-color);

  /* Typography role aliases stay visual-system owned but font files remain separate. */
  --bz-type-page-weight:var(--bz-fw-bold,700);
  --bz-type-entity-weight:var(--bz-fw-semibold,600);
  --bz-type-section-weight:var(--bz-fw-section,650);
  --bz-type-body-weight:var(--bz-fw-body,450);
  --bz-type-meta-weight:var(--bz-fw-regular,400);
  --bz-type-kpi-weight:var(--bz-fw-bold,700);
  --bz-type-page-leading:var(--bz-leading-tight,1.42);
  --bz-type-section-leading:var(--bz-leading-compact,1.55);
  --bz-type-body-leading:var(--bz-leading-body,1.72);
  --bz-type-reading-leading:var(--bz-leading-relaxed,1.86);
}

#bazsa-app:is([data-theme="dark"],.theme-dark){
  /* R29.1.1: neutral structure; action and status colors remain semantic. */
  --bz-shell-nav-surface:var(--bz-color-dark-canvas);
  --bz-intelligence-surface:var(--bz-surface-subtle);
  --bz-intelligence-border:var(--bz-border-default);
  --bz-automation-rail:var(--bz-border-strong);
  --bz-automation-score-bg:var(--bz-surface-raised);
  --bz-automation-score-border:var(--bz-border-default);
  --bz-automation-score-text:var(--bz-text-secondary);
  --bz-quota-danger-bg:var(--bz-status-danger-soft);
  --bz-quota-danger-border:var(--bz-status-danger);
  --bz-quota-danger-text:var(--bz-status-danger);
  --bz-quota-warning-bg:var(--bz-status-attention-soft);
  --bz-quota-warning-border:var(--bz-status-attention);
  --bz-quota-warning-text:var(--bz-status-attention);

  --bz-brand-anchor:var(--bz-color-dark-raised);
  --navy-2:var(--bz-surface-raised);
  --navy-3:var(--bz-surface-floating);
  --bz-brand-accent:var(--bz-color-teal-300);
  --bz-brand-accent-soft:color-mix(in srgb,var(--bz-brand-accent) 13%,var(--bz-surface-base));
  --bz-action-primary:var(--bz-color-teal-300);
  --bz-action-primary-hover:var(--bz-color-teal-200);
  --bz-action-primary-soft:color-mix(in srgb,var(--bz-action-primary) 13%,var(--bz-surface-base));
  --bz-status-success:var(--bz-color-green-300);
  --bz-status-success-soft:color-mix(in srgb,var(--bz-status-success) 12%,var(--bz-surface-base));
  --bz-status-attention:var(--bz-color-gold-300);
  --bz-status-attention-soft:color-mix(in srgb,var(--bz-status-attention) 12%,var(--bz-surface-base));
  --bz-status-danger:var(--bz-color-red-300);
  --bz-status-danger-soft:color-mix(in srgb,var(--bz-status-danger) 12%,var(--bz-surface-base));
  --bz-surface-canvas:var(--bz-color-dark-canvas);
  --bz-surface-base:var(--bz-color-dark-base);
  --bz-surface-subtle:var(--bz-color-dark-subtle);
  --bz-surface-raised:var(--bz-color-dark-raised);
  --bz-surface-floating:var(--bz-color-dark-floating);
  --bz-surface-overlay:var(--bz-color-dark-overlay);
  --bz-text-primary:var(--bz-color-dark-text-primary);
  --bz-text-secondary:var(--bz-color-dark-text-secondary);
  --bz-text-muted:var(--bz-color-dark-text-muted);
  --bz-text-disabled:var(--bz-color-dark-text-disabled);
  --bz-text-inverse:var(--bz-color-dark-canvas);
  --bz-border-soft:var(--bz-color-dark-border-soft);
  --bz-border-default:var(--bz-color-dark-border-default);
  --bz-border-strong:var(--bz-color-dark-border-strong);
  --bz-interaction-hover:var(--bz-color-dark-raised);
  --bz-interaction-selected:var(--bz-color-dark-overlay);
  --bz-focus-ring:color-mix(in srgb,var(--bz-action-primary) 38%,transparent);
  --bz-shadow-surface:none;
  --bz-shadow-floating:0 14px 34px rgba(0,0,0,.25);
  --bz-shadow-overlay:0 28px 72px rgba(0,0,0,.44);
  --bz-scrim-color:rgba(0,0,0,.74);
  --pr-overlay:var(--bz-scrim-color);
}

@media (prefers-reduced-motion: reduce){
  #bazsa-app{
    --bz-motion-fast:0ms;
    --bz-motion-standard:0ms;
    --bz-motion-drawer:0ms;
  }
}

/* R27.4 — reusable BAZSA visual-signature semantics. */
#bazsa-app{
  --bz-intelligence-gold:var(--bz-status-attention);
  --bz-intelligence-teal:var(--bz-brand-accent);
  --bz-intelligence-surface:color-mix(in srgb,var(--bz-intelligence-gold) 4%,var(--bz-surface-base));
  --bz-intelligence-border:color-mix(in srgb,var(--bz-intelligence-gold) 20%,var(--bz-border-default));
  --bz-signature-rail:var(--bz-action-primary);
  --bz-presence-ring:var(--bz-surface-base);
  --bz-presence-online:var(--bz-status-success);
  --bz-progress-track:color-mix(in srgb,var(--bz-action-primary) 10%,var(--bz-surface-raised));
  --bz-progress-fill:var(--bz-action-primary);
}


/* R27.5 — global shell/navigation component semantics.
 * These are component aliases only; Light/Dark meaning still comes from the
 * semantic roles above, so navigation never becomes a second theme owner. */
#bazsa-app{
  --bz-shell-nav-surface:var(--bz-surface-subtle);
  --bz-shell-main-surface:var(--bz-surface-base);
  --bz-shell-floating:var(--bz-surface-floating);
  --bz-shell-border:var(--bz-border-default);
  --bz-shell-border-soft:var(--bz-border-soft);
  --bz-shell-text:var(--bz-text-primary);
  --bz-shell-muted:var(--bz-text-muted);
  --bz-shell-hover:var(--bz-interaction-hover);
  --bz-shell-selected:var(--bz-interaction-selected);
  --bz-shell-active:var(--bz-action-primary);
  --bz-shell-active-hover:var(--bz-action-primary-hover);
  --bz-shell-focus:var(--bz-focus-ring);
}

/* R27.6 — core workspace component semantics.
 * These aliases keep Today, Projects, Project/Board, Task, Communication and
 * Team on one hierarchy without creating page-specific palettes. */
#bazsa-app{
  --bz-workspace-canvas:var(--bz-surface-canvas);
  --bz-workspace-panel:var(--bz-surface-base);
  --bz-workspace-panel-subtle:var(--bz-surface-subtle);
  --bz-workspace-column:var(--bz-surface-raised);
  --bz-workspace-floating:var(--bz-surface-floating);
  --bz-workspace-divider:var(--bz-border-soft);
  --bz-workspace-border:var(--bz-border-default);
  --bz-workspace-hover:var(--bz-interaction-hover);
  --bz-workspace-selected:var(--bz-interaction-selected);
  --bz-workspace-message:var(--bz-surface-subtle);
  --bz-workspace-message-own:var(--bz-action-primary-soft);
  --bz-workspace-focus:var(--bz-focus-ring);
  --bz-workspace-surface:var(--bz-workspace-panel);
  --bz-workspace-surface-2:var(--bz-workspace-panel-subtle);
  --bz-workspace-surface-3:var(--bz-workspace-column);
  --bz-workspace-border-soft:var(--bz-workspace-divider);
  --bz-workspace-text:var(--bz-text-primary);
  --bz-workspace-muted:var(--bz-text-muted);
  --bz-workspace-accent:var(--bz-action-primary);
  --bz-workspace-gold-soft:var(--bz-status-attention-soft);
  --bz-workspace-risk-soft:var(--bz-status-danger-soft);
  --bz-workspace-ok-soft:var(--bz-status-success-soft);
}

/* R27.7 — operational modules and intelligence semantics.
 * Operational modules reuse the same theme roles; report data colors remain
 * explicitly scoped to data visualization and never become UI chrome. */
#bazsa-app{
  --bz-operational-canvas:var(--bz-surface-canvas);
  --bz-operational-panel:var(--bz-surface-base);
  --bz-operational-subtle:var(--bz-surface-subtle);
  --bz-operational-floating:var(--bz-surface-floating);
  --bz-operational-border:var(--bz-border-default);
  --bz-operational-border-soft:var(--bz-border-soft);
  --bz-operational-hover:var(--bz-interaction-hover);
  --bz-operational-selected:var(--bz-interaction-selected);
  --bz-operational-focus:var(--bz-focus-ring);
  --bz-operational-intelligence:var(--bz-intelligence-surface);
  --bz-operational-intelligence-border:var(--bz-intelligence-border);
  --bz-data-viz-1:var(--bz-action-primary);
  --bz-data-viz-2:var(--bz-status-success);
  --bz-data-viz-3:var(--bz-status-attention);
  --bz-data-viz-4:var(--bz-status-danger);
  --bz-data-viz-neutral:var(--bz-text-muted);
}

/* R27.8 — Public Surfaces Theme Authority
 * Auth, external portal and partner portal live outside #bazsa-app. They now
 * receive the same semantic roles from this canonical owner instead of owning
 * independent Light/Dark palettes in their component stylesheets. */
:where(html.bazsa-auth-fullscreen,body.bazsa-auth-fullscreen,#bazsa-auth,#bazsa-external-portal,.bz-partner-body){
  --bz-brand-anchor:#12352F;
  --bz-brand-accent:#0B927C;
  --bz-action-primary:#0B927C;
  --bz-action-primary-hover:#087A68;
  --bz-action-primary-soft:color-mix(in srgb,var(--bz-action-primary) 10%,#FFFFFF);
  --bz-status-success:#168A5B;
  --bz-status-success-soft:color-mix(in srgb,var(--bz-status-success) 10%,#FFFFFF);
  --bz-status-attention:#B7812C;
  --bz-status-attention-soft:color-mix(in srgb,var(--bz-status-attention) 11%,#FFFFFF);
  --bz-status-danger:#D84A43;
  --bz-status-danger-soft:color-mix(in srgb,var(--bz-status-danger) 10%,#FFFFFF);
  --bz-surface-canvas:var(--bz-color-neutral-50);
  --bz-surface-base:var(--bz-color-neutral-0);
  --bz-surface-subtle:var(--bz-color-neutral-25);
  --bz-surface-raised:var(--bz-color-neutral-100);
  --bz-surface-floating:var(--bz-color-neutral-0);
  --bz-surface-overlay:var(--bz-color-neutral-0);
  --bz-text-primary:var(--bz-color-neutral-900);
  --bz-text-secondary:var(--bz-color-neutral-700);
  --bz-text-muted:var(--bz-color-neutral-500);
  --bz-text-disabled:var(--bz-color-neutral-400);
  --bz-text-inverse:var(--bz-color-neutral-0);
  --bz-border-soft:var(--bz-color-neutral-150);
  --bz-border-default:var(--bz-color-neutral-200);
  --bz-border-strong:var(--bz-color-neutral-300);
  --bz-interaction-hover:color-mix(in srgb,var(--bz-action-primary) 4%,var(--bz-surface-base));
  --bz-interaction-selected:color-mix(in srgb,var(--bz-action-primary) 9%,var(--bz-surface-base));
  --bz-focus-ring:color-mix(in srgb,var(--bz-action-primary) 34%,transparent);
  --bz-shadow-surface:none;
  --bz-shadow-floating:0 10px 28px color-mix(in srgb,var(--bz-brand-anchor) 11%,transparent);
  --bz-shadow-overlay:0 20px 48px color-mix(in srgb,var(--bz-brand-anchor) 17%,transparent);
  --bz-radius-control:8px;
  --bz-radius-row:9px;
  --bz-radius-surface:11px;
  --bz-radius-overlay:14px;
  --bz-motion-fast:140ms;
  --bz-motion-standard:180ms;
  --bz-motion-drawer:220ms;
}
@media (prefers-color-scheme: dark){
  :where(html.bazsa-auth-fullscreen,body.bazsa-auth-fullscreen,#bazsa-auth,#bazsa-external-portal,.bz-partner-body){
    --bz-brand-accent:#6BD4BC;
    --bz-action-primary:#6BD4BC;
    --bz-action-primary-hover:#8DE0CD;
    --bz-action-primary-soft:color-mix(in srgb,var(--bz-action-primary) 13%,var(--bz-surface-base));
    --bz-status-success:#68D6A5;
    --bz-status-success-soft:color-mix(in srgb,var(--bz-status-success) 12%,var(--bz-surface-base));
    --bz-status-attention:#F0C66D;
    --bz-status-attention-soft:color-mix(in srgb,var(--bz-status-attention) 12%,var(--bz-surface-base));
    --bz-status-danger:#FF9890;
    --bz-status-danger-soft:color-mix(in srgb,var(--bz-status-danger) 12%,var(--bz-surface-base));
    --bz-surface-canvas:var(--bz-color-dark-canvas);
    --bz-surface-base:var(--bz-color-dark-base);
    --bz-surface-subtle:var(--bz-color-dark-subtle);
    --bz-surface-raised:var(--bz-color-dark-raised);
    --bz-surface-floating:var(--bz-color-dark-floating);
    --bz-surface-overlay:var(--bz-color-dark-overlay);
    --bz-text-primary:var(--bz-color-dark-text-primary);
    --bz-text-secondary:var(--bz-color-dark-text-secondary);
    --bz-text-muted:var(--bz-color-dark-text-muted);
    --bz-text-disabled:var(--bz-color-dark-text-disabled);
    --bz-text-inverse:var(--bz-color-dark-canvas);
    --bz-border-soft:var(--bz-color-dark-border-soft);
    --bz-border-default:var(--bz-color-dark-border-default);
    --bz-border-strong:var(--bz-color-dark-border-strong);
    --bz-interaction-hover:var(--bz-color-dark-raised);
    --bz-interaction-selected:var(--bz-color-dark-overlay);
    --bz-focus-ring:color-mix(in srgb,var(--bz-action-primary) 38%,transparent);
    --bz-shadow-floating:0 14px 34px color-mix(in srgb,var(--bz-text-inverse) 25%,transparent);
    --bz-shadow-overlay:0 28px 72px color-mix(in srgb,var(--bz-text-inverse) 44%,transparent);
  }
}
