/* Frozen SaaS V2 tokens, integrated without prototype controllers. */
:root {
  /* Brand Palette - Deep Navy, Vibrant Enterprise Blue & Cyan Accents */
  --asfit-navy-950: #0a0f1d;
  --asfit-navy-900: #0f172a;
  --asfit-navy-850: #162036;
  --asfit-navy-800: #1e293b;
  --asfit-navy-700: #334155;
  --asfit-navy-600: #475569;

  /* Primary Accent - Tuned for WCAG AA Contrast (>5.2:1 with white) */
  --asfit-primary: #2563eb;
  --asfit-primary-hover: #1d4ed8;
  --asfit-primary-active: #1e40af;
  --asfit-primary-light: #eff6ff;
  --asfit-primary-border: #bfdbfe;
  --asfit-primary-glow: rgba(37, 99, 235, 0.18);

  /* Secondary Accent - Enterprise Cyan / Teal */
  --asfit-cyan: #0891b2;
  --asfit-cyan-hover: #0e7490;
  --asfit-cyan-light: #ecfeff;
  --asfit-cyan-border: #a5f3fc;

  /* Neutral Backgrounds & Surfaces */
  --bg-app: #f8fafc;
  --bg-surface: #ffffff;
  --bg-subtle: #f1f5f9;
  --bg-hover: #f8fafc;
  --bg-input: #ffffff;

  /* Text & Content Tokens */
  --text-heading: #0f172a;
  --text-body: #1e293b;
  --text-secondary: #475569;
  --text-muted: #64748b;
  --text-subtle: #94a3b8;
  --text-inverse: #ffffff;

  /* Border & Divider Tokens */
  --border-light: #f1f5f9;
  --border-subtle: #e2e8f0;
  --border-medium: #cbd5e1;
  --border-focus: #2563eb;

  /* Semantic Feedback & Status Tokens */
  --status-active-text: #15803d;
  --status-active-bg: #f0fdf4;
  --status-active-border: #bbf7d0;

  --status-review-text: #b45309;
  --status-review-bg: #fffbeb;
  --status-review-border: #fde68a;

  --status-danger-text: #b91c1c;
  --status-danger-bg: #fef2f2;
  --status-danger-border: #fecaca;

  --status-info-text: #1d4ed8;
  --status-info-bg: #eff6ff;
  --status-info-border: #bfdbfe;

  --status-neutral-text: #475569;
  --status-neutral-bg: #f1f5f9;
  --status-neutral-border: #cbd5e1;

  /* Spacing Scale */
  --space-2xs: 2px;
  --space-xs: 4px;
  --space-sm: 8px;
  --space-md: 12px;
  --space-lg: 16px;
  --space-xl: 20px;
  --space-2xl: 24px;
  --space-3xl: 32px;
  --space-4xl: 40px;

  /* Radii Scale (Bounded to <=8px for repeated controls per Codex audit) */
  --radius-xs: 4px;
  --radius-sm: 6px;
  --radius-md: 8px;
  --radius-lg: 12px;
  --radius-xl: 16px;
  --radius-full: 9999px;

  /* Elevation Shadows */
  --shadow-xs: 0 1px 2px rgba(15, 23, 42, 0.04);
  --shadow-sm: 0 1px 3px rgba(15, 23, 42, 0.06), 0 1px 2px rgba(15, 23, 42, 0.04);
  --shadow-md: 0 4px 12px rgba(15, 23, 42, 0.08), 0 2px 4px rgba(15, 23, 42, 0.04);
  --shadow-lg: 0 12px 28px rgba(15, 23, 42, 0.12), 0 4px 8px rgba(15, 23, 42, 0.06);
  --shadow-drawer: -4px 0 32px rgba(15, 23, 42, 0.18);
  --shadow-modal: 0 24px 48px rgba(15, 23, 42, 0.22);

  /* Typography System */
  --font-sans: 'Plus Jakarta Sans', system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Helvetica, Arial, sans-serif;
  --font-mono: 'JetBrains Mono', Consolas, Monaco, monospace;

  --font-size-2xs: 0.6875rem; /* 11px */
  --font-size-xs: 0.75rem;    /* 12px */
  --font-size-sm: 0.8125rem;  /* 13px */
  --font-size-base: 0.875rem; /* 14px */
  --font-size-md: 0.9375rem;  /* 15px */
  --font-size-lg: 1rem;       /* 16px */
  --font-size-xl: 1.125rem;   /* 18px */
  --font-size-2xl: 1.25rem;   /* 20px */
  --font-size-3xl: 1.5rem;    /* 24px */
  --font-size-4xl: 1.75rem;   /* 28px */

  /* Layout Constants */
  --sidebar-width: 256px;
  --header-height: 60px;
  --context-panel-width: 380px;
  --drawer-width: 520px;
}

/* P1 compatibility adapter: presentation only; never reset feature layout or form contracts. */
html.asfit-v2 {
  --blue: var(--asfit-primary); --blue-dark: var(--asfit-primary-hover);
  --navy: var(--asfit-navy-900); --line: var(--border-subtle);
  --surface: var(--bg-surface); --soft: var(--bg-app);
  --asfit-font-sans: var(--font-sans); --asfit-font-mono: var(--font-mono);
  --asfit-color-primary: var(--asfit-primary); --asfit-color-primary-hover: var(--asfit-primary-hover);
  --asfit-color-text: var(--text-heading); --asfit-color-text-secondary: var(--text-secondary);
  --asfit-color-text-muted: var(--text-muted); --asfit-color-surface: var(--bg-surface);
  --asfit-color-surface-subtle: var(--bg-subtle); --asfit-color-border: var(--border-subtle);
  --asfit-color-sidebar: var(--asfit-navy-900); --asfit-color-sidebar-border: var(--asfit-navy-800);
  --asfit-color-sidebar-hover: var(--asfit-navy-850); --asfit-color-sidebar-text: #cbd5e1;
  --color-bg-body: var(--bg-app); --color-bg-surface: var(--bg-surface);
  --color-text-main: var(--text-heading); --color-text-muted: var(--text-muted);
  --color-border: var(--border-subtle); --font-family: var(--font-sans);
}
.asfit-v2 body { margin:0; padding:0; background:var(--bg-app); color:var(--text-body); font-family:var(--font-sans); }
.asfit-v2 :where(button,input,select,textarea) { font-family:inherit; }
.asfit-v2 :where(a,button,input,select,textarea,summary,[tabindex]):focus-visible { outline:2px solid var(--border-focus); outline-offset:3px; }
.asfit-v2 :is(.button,.asfit-button,.btn) { border-radius:var(--radius-md); font-size:var(--font-size-sm); font-weight:700; line-height:1.4; min-height:40px; transition:background-color .15s,border-color .15s; }
.asfit-v2 :is(.button-primary,.asfit-button--primary,.btn-primary) { background:var(--asfit-primary); border-color:var(--asfit-primary); color:#fff; }
.asfit-v2 :is(.button-primary,.asfit-button--primary,.btn-primary):hover:not(:disabled) { background:var(--asfit-primary-hover); border-color:var(--asfit-primary-hover); color:#fff; }
.asfit-v2 :is(.button-secondary,.asfit-button--secondary,.btn-secondary) { background:var(--bg-surface); border-color:var(--border-medium); color:var(--text-secondary); }
.asfit-v2 :is(.button-secondary,.asfit-button--secondary,.btn-secondary):hover:not(:disabled) { background:var(--bg-subtle); color:var(--text-heading); }
.asfit-v2 :is(.button,.asfit-button,.btn):disabled { cursor:not-allowed; box-shadow:none; }
.asfit-v2 :where(input:not([type=checkbox]):not([type=radio]):not([type=hidden]):not([type=file]),select,textarea) { border-color:var(--border-medium); border-radius:var(--radius-md); background-color:var(--bg-input); color:var(--text-heading); }
.asfit-v2 :where(input,select,textarea):focus-visible { border-color:var(--border-focus); }
.asfit-v2 :where(.panel,.card) { border-color:var(--border-subtle); box-shadow:var(--shadow-xs); }
.asfit-v2 :where(table) { border-color:var(--border-subtle); }
.asfit-v2 :where(th) { background:var(--bg-subtle); color:var(--text-secondary); }
.asfit-v2 :where(td,th) { border-color:var(--border-subtle); }
.asfit-v2 :where(td) { font-variant-numeric:tabular-nums; }
.asfit-v2 :where(.badge,.asfit-status,.asfit-badge) { font-size:var(--font-size-xs); font-weight:700; }
.asfit-v2 :is(.badge-active,.badge-approved,.badge-completed) { color:var(--status-active-text); background:var(--status-active-bg); border-color:var(--status-active-border); }
.asfit-v2 :is(.badge-pending,.badge-in_review,.badge-on_hold) { color:var(--status-review-text); background:var(--status-review-bg); border-color:var(--status-review-border); }
.asfit-v2 :is(.badge-rejected,.badge-cancelled) { color:var(--status-danger-text); background:var(--status-danger-bg); border-color:var(--status-danger-border); }
.asfit-v2 :where(.crm-contact-edit-dialog,.crm-deal-dialog,.auth-card) { border-color:var(--border-subtle); }
.asfit-v2 :where(.admin-toast,.portal-toast) { border-radius:var(--radius-md); box-shadow:var(--shadow-md); }
@media(max-width:768px) { .asfit-v2 :is(.button,.asfit-button,.btn) { min-height:44px; } }
@media(prefers-reduced-motion:reduce) { .asfit-v2 :is(.button,.asfit-button,.btn,.admin-sidebar,.app-sidebar) { transition:none; } }

/* Portal shell. Retain existing client-only links, count hooks, forms and bottom navigation. */
.asfit-v2 .app-sidebar { width:var(--sidebar-width); background:var(--asfit-navy-900); border-right:1px solid var(--asfit-navy-800); }
.asfit-v2 .sidebar-header { height:var(--header-height); min-height:var(--header-height); padding:0 16px; border-color:var(--asfit-navy-800); }
.asfit-v2 .brand-icon { width:32px; height:32px; border-radius:8px; font-size:var(--font-size-sm); font-weight:800; background:linear-gradient(135deg,var(--asfit-primary),var(--asfit-cyan)); box-shadow:0 2px 6px rgba(37,99,235,.35); }
.asfit-v2 .v2-brand-copy { display:flex; flex-direction:column; gap:2px; }
.asfit-v2 .v2-brand-copy strong { color:#fff; font-size:var(--font-size-base); font-weight:800; }
.asfit-v2 .v2-brand-copy small { color:var(--asfit-cyan); font-size:var(--font-size-2xs); font-weight:600; text-transform:uppercase; }
.asfit-v2 .brand-tag { display:none; }
.asfit-v2 .v2-workspace-context { padding:12px 16px 8px; flex:0 0 auto; }
.asfit-v2 .v2-workspace-card { display:flex; flex-direction:column; gap:2px; padding:8px 10px; border:1px solid var(--asfit-navy-800); border-radius:var(--radius-md); background:var(--asfit-navy-850); overflow-wrap:anywhere; }
.asfit-v2 .v2-workspace-card strong { color:#fff; font-size:var(--font-size-xs); font-weight:700; }
.asfit-v2 .v2-workspace-card span { color:var(--text-subtle); font-size:var(--font-size-2xs); }
.asfit-v2 .sidebar-nav { display:flex; flex-direction:column; padding:8px 12px 16px; gap:2px; min-height:0; overflow-y:auto; }
.asfit-v2 .nav-section-title { color:var(--asfit-navy-600); font-size:var(--font-size-2xs); font-weight:700; letter-spacing:0; padding:4px 8px; margin:0 0 6px; }
.asfit-v2 .nav-account-title { margin-top:16px; }
.asfit-v2 .nav-link { min-height:40px; margin:0; padding:8px 10px; gap:10px; border:1px solid transparent; color:#cbd5e1; font-size:var(--font-size-base); font-weight:500; border-radius:8px; }
.asfit-v2 .nav-link:hover { color:#fff; background:var(--asfit-navy-800); }
.asfit-v2 .nav-link.active { color:#fff; font-weight:700; background:var(--asfit-primary); box-shadow:0 2px 8px rgba(37,99,235,.35); }
.asfit-v2 .sidebar-nav .nav-unread-count { min-width:0; height:auto; padding:2px 6px; border-radius:var(--radius-xs); font-size:var(--font-size-2xs); line-height:1.4; font-weight:700; color:#fff; background:#ef4444; }
.asfit-v2 .sidebar-nav .nav-count-neutral { background:var(--asfit-navy-700); }
.asfit-v2 .sidebar-nav .nav-count-warning { background:#f59e0b; color:var(--asfit-navy-900); }
.asfit-v2 .sidebar-footer { min-height:0; background:var(--asfit-navy-950); border-color:var(--asfit-navy-800); padding:12px 16px; }
.asfit-v2 .client-profile-summary { gap:10px; }
.asfit-v2 .client-profile-avatar { width:32px; height:32px; flex:0 0 32px; font-size:var(--font-size-xs); font-weight:700; background:var(--asfit-primary); }
.asfit-v2 .client-profile-copy strong { font-size:var(--font-size-xs); font-weight:700; }
.asfit-v2 .client-profile-copy>span { color:var(--text-subtle); font-size:var(--font-size-2xs); }
.asfit-v2 .app-main { width:calc(100% - var(--sidebar-width)); margin-left:var(--sidebar-width); }
.asfit-v2 .top-header { height:var(--header-height); min-height:var(--header-height); padding:0 24px; gap:16px; border-color:var(--border-subtle); background:var(--bg-surface); }
.asfit-v2 .header-workspace-identity { display:flex; align-items:center; gap:8px; }
.asfit-v2 .header-eyebrow { display:block; flex:0 0 auto; font-size:var(--font-size-sm); font-weight:400; text-transform:none; color:var(--text-muted); }
.asfit-v2 .v2-breadcrumb-separator { flex:0 0 auto; color:var(--text-muted); }
.asfit-v2 .header-title { min-width:0; font-size:var(--font-size-sm); font-weight:700; color:var(--text-heading); }
.asfit-v2 .app-content { min-width:0; width:100%; max-width:1440px; }
.asfit-v2 .mobile-nav-toggle { display:none; }
.asfit-v2 .drawer-backdrop { z-index:60; }
.asfit-v2 .v2-portal-skip { position:fixed; left:280px; top:8px; padding:10px 14px; transform:translateY(-160%); z-index:1000; background:#fff; color:var(--asfit-primary-hover); border:2px solid var(--border-focus); border-radius:8px; }
.asfit-v2 .v2-portal-skip:focus { transform:none; }
@media(max-width:1024px) {
 .asfit-v2 .app-sidebar { transform:translateX(-100%); z-index:70; }
 .asfit-v2 .app-sidebar.mobile-open { transform:translateX(0); }
 .asfit-v2 .app-main { width:100%; max-width:100%; margin-left:0; }
 .asfit-v2 .mobile-nav-toggle { display:inline-flex; width:44px; height:44px; }
 .asfit-v2 .top-header { padding:0 16px; }
 .asfit-v2 .nav-link { min-height:44px; }
 .asfit-v2 .v2-portal-skip { left:12px; }
}

