/**
 * North Star Backend Design System
 *
 * Colors, typography, spacing, components
 */

/* ═══════════════════════════════════════════════════════════════
   CSS VARIABLES
   ═══════════════════════════════════════════════════════════════ */

:root {
  /* ─── Base Colors ─── */
  --color-white: #FFFFFF;
  --color-black: #000000;

  /* ─── Gray Scale ─── */
  --gray-50: #F9FAFB;
  --gray-100: #F3F4F6;
  --gray-200: #E5E7EB;
  --gray-300: #D1D5DB;
  --gray-400: #9CA3AF;
  --gray-500: #6B7280;
  --gray-600: #4B5563;
  --gray-700: #374151;
  --gray-800: #1F2937;
  --gray-900: #111827;

  /* ─── Domain Colors ─── */
  --domain-identity: #8B5CF6;
  --domain-identity-light: #A78BFA;
  --domain-identity-dark: #7C3AED;

  --domain-audit: #6B7280;
  --domain-audit-light: #9CA3AF;
  --domain-audit-dark: #4B5563;

  --domain-team: #EC4899;
  --domain-team-light: #F472B6;
  --domain-team-dark: #DB2777;

  --domain-crm: #F97316;
  --domain-crm-light: #FB923C;
  --domain-crm-dark: #EA580C;

  --domain-projects: #3B82F6;
  --domain-projects-light: #60A5FA;
  --domain-projects-dark: #2563EB;

  --domain-products: #8B5CF6;
  --domain-products-light: #A78BFA;
  --domain-products-dark: #7C3AED;

  --domain-finance: #22C55E;
  --domain-finance-light: #4ADE80;
  --domain-finance-dark: #16A34A;

  --domain-expenses: #EF4444;
  --domain-expenses-light: #F87171;
  --domain-expenses-dark: #DC2626;

  --domain-vendors: #F97316;
  --domain-vendors-light: #FB923C;
  --domain-vendors-dark: #EA580C;

  --domain-skills: #F97316;
  --domain-training: #8B5CF6;
  --domain-leave: #10B981;
  --domain-performance: #F59E0B;

  --domain-calendar: #8B5CF6;
  --domain-notifications: #3B82F6;
  --domain-documents: #6B7280;
  --domain-qa: #EF4444;
  --domain-resources: #06B6D4;
  --domain-marketing: #EC4899;
  --domain-templates: #8B5CF6;
  --domain-knowledge: #3B82F6;
  --domain-tags: #EC4899;
  --domain-portal: #3B82F6;

  /* ─── Status Colors ─── */
  --status-success: #22C55E;
  --status-success-bg: #DCFCE7;
  --status-warning: #EAB308;
  --status-warning-bg: #FEF9C3;
  --status-error: #EF4444;
  --status-error-bg: #FEE2E2;
  --status-info: #3B82F6;
  --status-info-bg: #DBEAFE;

  /* ─── Priority Colors ─── */
  --priority-urgent: #EF4444;
  --priority-high: #F97316;
  --priority-medium: #EAB308;
  --priority-low: #22C55E;

  /* ─── Typography ─── */
  --font-sans: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
  --font-mono: 'JetBrains Mono', 'Fira Code', monospace;

  /* ─── Spacing ─── */
  --space-1: 0.25rem;
  --space-2: 0.5rem;
  --space-3: 0.75rem;
  --space-4: 1rem;
  --space-5: 1.25rem;
  --space-6: 1.5rem;
  --space-8: 2rem;
  --space-10: 2.5rem;
  --space-12: 3rem;

  /* ─── Border Radius ─── */
  --radius-sm: 0.25rem;
  --radius-md: 0.375rem;
  --radius-lg: 0.5rem;
  --radius-xl: 0.75rem;
  --radius-2xl: 1rem;
  --radius-full: 9999px;

  /* ─── Shadows ─── */
  --shadow-sm: 0 1px 2px 0 rgb(0 0 0 / 0.05);
  --shadow-md: 0 4px 6px -1px rgb(0 0 0 / 0.1);
  --shadow-lg: 0 10px 15px -3px rgb(0 0 0 / 0.1);
  --shadow-xl: 0 20px 25px -5px rgb(0 0 0 / 0.1);

  /* ─── Transitions ─── */
  --transition-fast: 150ms ease;
  --transition-normal: 200ms ease;
  --transition-slow: 300ms ease;

  /* ─── Theme-aware aliases (fallback — overridden by Theme Engine) ─── */
  --bg: #FFFFFF;
  --bg-sidebar: #FAFAFA;
  --bg-card: #FFFFFF;
  --bg-input: #FFFFFF;
  --text-1: #111827;
  --text-2: #374151;
  --text-3: #6B7280;
  --text-4: #9CA3AF;
  --border: #E5E7EB;
  --border-light: #F3F4F6;
  --accent: #3B82F6;
  --accent-soft: #DBEAFE;
  --green: #22C55E;
  --green-soft: #DCFCE7;
  --red: #EF4444;
  --red-soft: #FEE2E2;
  --yellow: #EAB308;
  --yellow-soft: #FEF9C3;
  --purple: #8B5CF6;
  --purple-soft: #EDE9FE;
  --r: 0.5rem;
  --r-sm: 0.25rem;
  --r-pill: 9999px;
  --pastel-blue: #DBEAFE;
  --pastel-green: #DCFCE7;
  --pastel-yellow: #FEF9C3;
  --pastel-pink: #FCE7F3;
  --pastel-purple: #EDE9FE;
  --pastel-orange: #FFEDD5;
  --pastel-teal: #CCFBF1;

  /* ─── Sidebar ─── */
  --sidebar-item-text: #888;
  --sidebar-item-hover-bg: #F3F3F3;
  --sidebar-item-hover-text: #555;
  --sidebar-item-active-bg: #111827;
  --sidebar-item-active-text: #fff;
  --sidebar-icon-opacity: 0.5;
  --sidebar-user-role: #aaa;

  /* ─── Topbar ─── */
  --topbar-badge-bg: #1A1A1A;
  --topbar-badge-text: #fff;

  /* ─── Buttons ─── */
  --btn-primary-bg: #2563EB;
  --btn-primary-hover: #1D4ED8;
  --btn-primary-active: #1E40AF;
  --btn-dark-bg: #1A1A1A;
  --btn-dark-hover: #333;
  --btn-dark-active: #0a0a0a;
  --btn-success-hover: #15803D;
  --btn-amber-hover: #B45309;
  --btn-indigo-bg: #4F46E5;
  --btn-indigo-hover: #4338CA;

  /* ─── Filters & Tables ─── */
  --filter-text: #6B6B6B;
  --filter-hover-text: #1A1A1A;
  --filter-active-bg: #1A1A1A;
  --filter-active-text: #fff;
  --filter-search-text: #1A1A1A;
  --filter-search-placeholder: #B5B5B5;
  --table-row-hover: #FAFAFA;
  --breadcrumb-text: #9B9B9B;
  --breadcrumb-hover: #1A1A1A;

  /* ─── Brand ─── */
  --brand-logo-bg: #111827;
  --brand-text: #111827;
}

/* ═══════════════════════════════════════════════════════════════
   DARK MODE — override delle variabili "theme-aware"
   ───────────────────────────────────────────────────────────────
   Tante pagine (SEMAFORO, NOVITÀ, ecc.) costruiscono i loro riquadri
   con var(--bg-card)/var(--bg)/var(--bg-input)/var(--text-*), ma queste
   variabili avevano SOLO valori chiari -> in modalità notte i riquadri
   restavano bianchi. Qui le ridefiniamo per html.dark UNA volta sola:
   tutte le pagine che usano queste variabili si adattano da sole.
   I valori sono allineati alla palette dark del layout (main.ejs).
   ═══════════════════════════════════════════════════════════════ */
html.dark {
  --bg: #111827;
  --bg-sidebar: #1f2937;
  --bg-card: #1f2937;
  --bg-input: #1a2332;
  --text-1: #f3f4f6;
  --text-2: #d1d5db;
  --text-3: #9ca3af;
  --text-4: #6b7280;
  --border: #374151;
  --border-light: #2a3441;
  /* accent/stato: stesso hue, soft più scuri per non "bruciare" sul fondo notte */
  --accent-soft: rgba(59,130,246,0.18);
  --green-soft: rgba(34,197,94,0.18);
  --red-soft: rgba(239,68,68,0.18);
  --yellow-soft: rgba(234,179,8,0.18);
  --purple-soft: rgba(139,92,246,0.18);
  --pastel-blue: rgba(59,130,246,0.16);
  --pastel-green: rgba(34,197,94,0.16);
  --pastel-yellow: rgba(234,179,8,0.16);
  --pastel-pink: rgba(236,72,153,0.16);
  --pastel-purple: rgba(139,92,246,0.16);
  --pastel-orange: rgba(249,115,22,0.16);
  --pastel-teal: rgba(20,184,166,0.16);
  --table-row-hover: #1a2332;
  --filter-search-text: #e5e7eb;
  --filter-search-placeholder: #6b7280;

  /* ─── Sidebar (dark) ───
     Le voci di menu (.sb-item) e le loro icone Phosphor leggono queste variabili
     con !important nella classe base (ds-editorial.css). In chiaro restavano #888
     e le icone al 50% di opacità -> su fondo notte risultavano smorte/illeggibili.
     Ridefinendo qui le variabili, TUTTE le voci (Semaforo, Novità, Calendar,
     Documents, Dashboard, ...) e le relative icone si adattano da sole. */
  --sidebar-item-text: #cbd5e1;
  --sidebar-item-hover-bg: #374151;
  --sidebar-item-hover-text: #f1f5f9;
  --sidebar-item-active-bg: #e5e7eb;
  --sidebar-item-active-text: #111827;
  --sidebar-icon-opacity: 0.85;
  --sidebar-user-role: #9ca3af;

  /* ─── Topbar / Brand (dark) ─── */
  --topbar-badge-bg: #374151;
  --topbar-badge-text: #f3f4f6;
  --brand-logo-bg: #374151;
  --brand-text: #f3f4f6;

  /* ─── Breadcrumb (dark) ─── */
  --breadcrumb-text: #9ca3af;
  --breadcrumb-hover: #f3f4f6;
}

/* Riquadri con bianco HARDCODED (non via variabile): adattali in dark.
   Copre .card (background:white) e le utility Tailwind bg-white/bg-gray-50/100
   usate inline nelle pagine senza variabile. */
html.dark .card { background-color: var(--bg-card) !important; color: var(--text-1); }
html.dark .bg-white { background-color: var(--bg-card) !important; }
html.dark .bg-gray-50 { background-color: #1a2332 !important; }
html.dark .bg-gray-100 { background-color: #1f2937 !important; }

/* ═══════════════════════════════════════════════════════════════
   COMPONENTS
   ═══════════════════════════════════════════════════════════════ */

/* ─── Cards ─── */
.card {
  background-color: white;
  border-radius: var(--radius-lg);
  box-shadow: var(--shadow-md);
  overflow: hidden;
}

.card-header {
  padding: var(--space-4) var(--space-6);
  border-bottom: 1px solid var(--gray-200);
  font-weight: 600;
}

.card-body {
  padding: var(--space-6);
}

/* ─── Domain Badge ─── */
.domain-badge {
  display: inline-flex;
  align-items: center;
  padding: var(--space-1) var(--space-3);
  border-radius: var(--radius-full);
  font-size: 0.75rem;
  font-weight: 500;
}

.domain-badge[data-domain="identity"] {
  background: rgba(139, 92, 246, 0.1);
  color: var(--domain-identity);
}
.domain-badge[data-domain="crm"] {
  background: rgba(249, 115, 22, 0.1);
  color: var(--domain-crm);
}
.domain-badge[data-domain="projects"] {
  background: rgba(59, 130, 246, 0.1);
  color: var(--domain-projects);
}
.domain-badge[data-domain="finance"] {
  background: rgba(34, 197, 94, 0.1);
  color: var(--domain-finance);
}
.domain-badge[data-domain="team"] {
  background: rgba(236, 72, 153, 0.1);
  color: var(--domain-team);
}

/* ─── Priority Badge ─── */
.priority-badge {
  display: inline-flex;
  align-items: center;
  padding: var(--space-1) var(--space-2);
  border-radius: var(--radius-md);
  font-size: 0.75rem;
  font-weight: 500;
}

.priority-badge[data-priority="urgent"] {
  background: rgba(239, 68, 68, 0.1);
  color: var(--priority-urgent);
}
.priority-badge[data-priority="high"] {
  background: rgba(249, 115, 22, 0.1);
  color: var(--priority-high);
}
.priority-badge[data-priority="medium"] {
  background: rgba(234, 179, 8, 0.1);
  color: var(--priority-medium);
}
.priority-badge[data-priority="low"] {
  background: rgba(34, 197, 94, 0.1);
  color: var(--priority-low);
}

/* ─── Status Badge ─── */
.status-badge {
  display: inline-flex;
  align-items: center;
  padding: var(--space-1) var(--space-3);
  border-radius: var(--radius-full);
  font-size: 0.75rem;
  font-weight: 500;
}

.status-badge.success { background: var(--status-success-bg); color: var(--status-success); }
.status-badge.warning { background: var(--status-warning-bg); color: var(--status-warning); }
.status-badge.error { background: var(--status-error-bg); color: var(--status-error); }
.status-badge.info { background: var(--status-info-bg); color: var(--status-info); }

/* ─── Stream Event ─── */
.stream-event {
  border-radius: var(--radius-lg);
  padding: var(--space-4);
  margin-bottom: var(--space-4);
  border-left: 4px solid;
  transition: transform var(--transition-fast), box-shadow var(--transition-fast);
  background: white;
  box-shadow: var(--shadow-sm);
}

.stream-event:hover {
  transform: translateY(-2px);
  box-shadow: var(--shadow-lg);
}

.stream-event[data-domain="calendar"] {
  background: rgba(139, 92, 246, 0.05);
  border-color: var(--domain-calendar);
}
.stream-event[data-domain="projects"] {
  background: rgba(59, 130, 246, 0.05);
  border-color: var(--domain-projects);
}
.stream-event[data-domain="finance"] {
  background: rgba(34, 197, 94, 0.05);
  border-color: var(--domain-finance);
}
.stream-event[data-domain="crm"] {
  background: rgba(249, 115, 22, 0.05);
  border-color: var(--domain-crm);
}
.stream-event[data-type="urgent"] {
  background: rgba(239, 68, 68, 0.1);
  border-color: var(--status-error);
}

/* ─── Rotor Task ─── */
.rotor-task {
  display: flex;
  align-items: center;
  padding: var(--space-3) var(--space-4);
  background: white;
  border-radius: var(--radius-lg);
  margin-bottom: var(--space-2);
  box-shadow: var(--shadow-sm);
  transition: transform var(--transition-fast);
  cursor: pointer;
}

.rotor-task:hover {
  transform: translateX(4px);
  box-shadow: var(--shadow-md);
}

.rotor-task.completed {
  opacity: 0.6;
}

.rotor-task.completed .task-title {
  text-decoration: line-through;
}

.rotor-task .priority-dot {
  width: 8px;
  height: 8px;
  border-radius: var(--radius-full);
  margin-right: var(--space-3);
  flex-shrink: 0;
}

.rotor-task .priority-dot.urgent { background: var(--priority-urgent); }
.rotor-task .priority-dot.high { background: var(--priority-high); }
.rotor-task .priority-dot.medium { background: var(--priority-medium); }
.rotor-task .priority-dot.low { background: var(--priority-low); }

/* ─── Stat Widget ─── */
.stat-widget {
  background: white;
  border-radius: var(--radius-lg);
  padding: var(--space-6);
  box-shadow: var(--shadow-md);
}

.stat-widget .stat-icon {
  width: 48px;
  height: 48px;
  border-radius: var(--radius-lg);
  display: flex;
  align-items: center;
  justify-content: center;
}

.stat-widget .stat-value {
  font-size: 2rem;
  font-weight: 700;
  line-height: 1;
}

.stat-widget .stat-label {
  font-size: 0.875rem;
  color: var(--gray-500);
}

.stat-widget .stat-change {
  font-size: 0.75rem;
  display: flex;
  align-items: center;
}

.stat-widget .stat-change.positive { color: var(--status-success); }
.stat-widget .stat-change.negative { color: var(--status-error); }

/* ─── Progress Bar ─── */
.progress-bar {
  height: 8px;
  background: var(--gray-200);
  border-radius: var(--radius-full);
  overflow: hidden;
}

.progress-bar .progress-fill {
  height: 100%;
  border-radius: var(--radius-full);
  transition: width var(--transition-slow);
}

/* ─── Avatar (3D editorial: inset highlight + inset shadow + drop subtle) ─── */
.avatar {
  width: 40px;
  height: 40px;
  border-radius: var(--radius-full);
  background: var(--domain-identity);
  color: white;
  display: flex;
  align-items: center;
  justify-content: center;
  font-weight: 600;
  position: relative;
  box-shadow:
    inset 0 2px 0 rgba(255, 255, 255, 0.22),
    inset 0 -2px 0 rgba(0, 0, 0, 0.18),
    0 1px 3px rgba(0, 0, 0, 0.10);
  text-shadow: 0 1px 0 rgba(0, 0, 0, 0.12);
}

.avatar-group {
  display: flex;
}

/* Cluster: avatar piccoli sovrapposti — restano flat (no 3D, evita rumore) */
.avatar-group .avatar {
  margin-left: -8px;
  border: 2px solid white;
  box-shadow: none;
  text-shadow: none;
}

.avatar-group .avatar:first-child {
  margin-left: 0;
}

/* Utility: applica effetto 3D editorial a qualsiasi avatar singolo (opt-in)
   Vedi .claude/rules/northstar-visual-contract.md sez. "Avatar persona 3D editorial". */
.avatar-3d {
  position: relative;
  box-shadow:
    inset 0 2px 0 rgba(255, 255, 255, 0.22),
    inset 0 -2px 0 rgba(0, 0, 0, 0.18),
    0 1px 3px rgba(0, 0, 0, 0.10);
  text-shadow: 0 1px 0 rgba(0, 0, 0, 0.12);
}

/* ═══════════════════════════════════════════════════════════════
   UTILITIES
   ═══════════════════════════════════════════════════════════════ */

.text-domain-identity { color: var(--domain-identity); }
.text-domain-crm { color: var(--domain-crm); }
.text-domain-projects { color: var(--domain-projects); }
.text-domain-finance { color: var(--domain-finance); }
.text-domain-team { color: var(--domain-team); }

.bg-domain-identity { background: var(--domain-identity); }
.bg-domain-crm { background: var(--domain-crm); }
.bg-domain-projects { background: var(--domain-projects); }
.bg-domain-finance { background: var(--domain-finance); }
.bg-domain-team { background: var(--domain-team); }

.border-domain-identity { border-color: var(--domain-identity); }
.border-domain-crm { border-color: var(--domain-crm); }
.border-domain-projects { border-color: var(--domain-projects); }
.border-domain-finance { border-color: var(--domain-finance); }
.border-domain-team { border-color: var(--domain-team); }

/* ═══════════════════════════════════════════════════════════════
   BUTTONS
   ═══════════════════════════════════════════════════════════════ */

/* ─── Base Button ─── */
.btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 0.5rem;
  padding: 0.5rem 1rem;
  font-size: 0.875rem;
  font-weight: 500;
  line-height: 1.25rem;
  border-radius: 0.5rem;
  border: 1px solid transparent;
  cursor: pointer;
  transition: all 0.15s ease;
  text-decoration: none;
  white-space: nowrap;
  background-color: var(--gray-100);
  color: var(--gray-700);
}

.btn:hover {
  background-color: var(--gray-200);
}

.btn:active {
  transform: scale(0.98);
}

.btn:disabled, .btn-disabled {
  opacity: 0.5;
  pointer-events: none;
  cursor: not-allowed;
}

.btn svg {
  width: 1.125rem;
  height: 1.125rem;
  flex-shrink: 0;
  color: inherit;
}

/* ─── Primary (Blue) ─── */
.btn-primary {
  background-color: var(--btn-primary-bg);
  color: white;
  border-color: var(--btn-primary-bg);
}

.btn-primary:hover {
  background-color: var(--btn-primary-hover);
  border-color: var(--btn-primary-hover);
}

/* ─── Secondary (Gray) ─── */
.btn-secondary {
  background-color: var(--btn-secondary-bg, #6B7280);
  color: white;
  border-color: var(--btn-secondary-bg, #6B7280);
}

.btn-secondary:hover {
  background-color: var(--btn-secondary-hover, #4B5563);
  border-color: var(--btn-secondary-hover, #4B5563);
}

/* ─── Success (Green) ─── */
.btn-success {
  background-color: #22C55E;
  color: white;
  border-color: #22C55E;
}

.btn-success:hover {
  background-color: var(--btn-success-hover);
  border-color: var(--btn-success-hover);
}

/* ─── Danger / Error (Red) ─── */
.btn-danger, .btn-error {
  background-color: #EF4444;
  color: white;
  border-color: #EF4444;
}

.btn-danger:hover, .btn-error:hover {
  background-color: #DC2626;
  border-color: #DC2626;
}

/* ─── Warning (Amber) ─── */
.btn-warning {
  background-color: #F59E0B;
  color: white;
  border-color: #F59E0B;
}

.btn-warning:hover {
  background-color: #D97706;
  border-color: #D97706;
}

/* ─── Outline (Bordered, transparent bg) ─── */
.btn-outline {
  background-color: transparent;
  color: var(--gray-700);
  border-color: var(--gray-300);
}

.btn-outline:hover {
  background-color: var(--gray-50);
  border-color: var(--gray-400);
}

.btn-outline-primary {
  background-color: transparent;
  color: var(--btn-primary-bg);
  border-color: var(--btn-primary-bg);
}

.btn-outline-primary:hover {
  background-color: #EFF6FF;
  color: var(--btn-primary-hover);
}

.btn-outline-secondary {
  background-color: transparent;
  color: #6B7280;
  border-color: #D1D5DB;
}

.btn-outline-secondary:hover {
  background-color: #F9FAFB;
  color: #4B5563;
}

/* ─── Ghost (No border, minimal) ─── */
.btn-ghost {
  background-color: transparent;
  color: var(--gray-600);
  border-color: transparent;
}

.btn-ghost:hover {
  background-color: var(--gray-100);
  color: var(--gray-900);
}

/* ─── Icon Button (Square) ─── */
.btn-icon {
  padding: 0.5rem;
  background-color: transparent;
  color: var(--gray-500);
  border-color: transparent;
}

.btn-icon:hover {
  background-color: var(--gray-100);
  color: var(--gray-700);
}

/* ─── Sizes ─── */
.btn-xs {
  padding: 0.25rem 0.5rem;
  font-size: 0.75rem;
  line-height: 1rem;
  border-radius: 0.375rem;
  gap: 0.25rem;
}

.btn-xs svg {
  width: 0.875rem;
  height: 0.875rem;
}

.btn-sm {
  padding: 0.375rem 0.75rem;
  font-size: 0.8125rem;
  line-height: 1.125rem;
  border-radius: 0.375rem;
  gap: 0.375rem;
}

.btn-sm svg {
  width: 1rem;
  height: 1rem;
}

.btn-lg {
  padding: 0.75rem 1.5rem;
  font-size: 1rem;
  line-height: 1.5rem;
  border-radius: 0.625rem;
  gap: 0.625rem;
}

.btn-lg svg {
  width: 1.25rem;
  height: 1.25rem;
}

/* ═══════════════════════════════════════════════════════════════
   ICONS & LINKS
   ═══════════════════════════════════════════════════════════════ */

/* SVG icons inherit colors */
svg {
  color: inherit;
}

button svg,
a svg {
  color: inherit;
}

/* Link colors — disabled: ds-editorial.css handles component-specific link colors.
   Uncomment only if NOT using ds-editorial theme.
a:not([class*="bg-"]):not([class*="text-"]):not(.btn) {
  color: #3B82F6;
}
a:not([class*="bg-"]):not([class*="text-"]):not(.btn):hover {
  color: #2563EB;
}
*/

/* ═══════════════════════════════════════════
   RESPONSIVE — Mobile overrides (<768px)
   ═══════════════════════════════════════════ */
@media (max-width: 767px) {
  /* Tabelle: padding compatto e font ridotto */
  table th,
  table td {
    padding-left: 0.5rem;
    padding-right: 0.5rem;
    font-size: 0.75rem;
    line-height: 1rem;
  }

  /* Stat widget compatti */
  .stat-widget {
    padding: 0.75rem;
  }
  .stat-widget .stat-value {
    font-size: 1.25rem;
  }

  /* Card compatte */
  .card-header {
    padding: 0.75rem 1rem;
  }
  .card-body {
    padding: 1rem;
  }
}
