/* Stockwise — Design System
   Based on DaySmart Vet refined design system.
   All tokens pass WCAG AA. */

/* ============================================
   TOKENS
   ============================================ */
:root {
  /* Brand */
  --brand-900:#1a2e22; --brand-800:#243a2e; --brand-700:#2d5a3a;
  --brand-600:#3a7d4a; --brand-500:#4a9458; --brand-100:#e8f5e9; --brand-50:#f1f8f2;

  /* Neutral */
  --neutral-950:#111827; --neutral-800:#1f2937; --neutral-700:#374151;
  --neutral-500:#6b7280; --neutral-400:#9ca3af; --neutral-300:#d1d5db;
  --neutral-200:#e5e7eb; --neutral-100:#f3f4f6; --neutral-50:#f9fafb; --neutral-0:#fff;

  /* Semantic */
  --color-success:#16a34a; --color-success-light:#dcfce7;
  --color-warning:#d97706; --color-warning-light:#fef3c7;
  --color-error:#dc2626;   --color-error-light:#fee2e2;
  --color-info:#2563eb;    --color-info-light:#dbeafe;

  /* Typography */
  --font-family: Inter,"Helvetica Neue",Arial,sans-serif;
  --text-2xl:600 24px/32px var(--font-family);
  --text-xl:600 20px/28px var(--font-family);
  --text-lg:600 16px/24px var(--font-family);
  --text-base:400 14px/20px var(--font-family);
  --text-sm:500 13px/18px var(--font-family);
  --text-xs:400 12px/16px var(--font-family);
  --text-xxs:500 11px/14px var(--font-family);

  /* Spacing (4px grid) */
  --space-1:4px; --space-2:8px; --space-3:12px; --space-4:16px; --space-5:20px;
  --space-6:24px; --space-8:32px; --space-10:40px; --space-12:48px;

  /* Borders */
  --radius-sm:4px; --radius-md:6px; --radius-lg:8px; --radius-full:9999px;
  --border-default:1px solid var(--neutral-300);
  --border-subtle:1px solid var(--neutral-200);

  /* Elevation */
  --shadow-sm:0 1px 2px rgba(0,0,0,.05);
  --shadow-md:0 4px 12px rgba(0,0,0,.10);
  --shadow-lg:0 8px 24px rgba(0,0,0,.12);
  --shadow-ring:0 0 0 2px #e8f5e9,0 0 0 4px #3a7d4a;

  /* Motion */
  --duration-instant:100ms; --duration-fast:150ms; --duration-normal:200ms; --duration-slow:300ms;
  --easing-default:cubic-bezier(.4,0,.2,1);
  --easing-enter:cubic-bezier(0,0,.2,1);
  --easing-exit:cubic-bezier(.4,0,1,1);

  /* Chart colors (colorblind-safe) */
  --chart-1:#3a7d4a; --chart-2:#2563eb; --chart-3:#d97706; --chart-4:#7c3aed;
  --chart-5:#dc2626; --chart-6:#0891b2; --chart-7:#c026d3; --chart-8:#65a30d;

  /* Layout */
  --sidebar-width:240px;
  --sidebar-collapsed:64px;
  --topbar-height:48px;
}

@media(prefers-reduced-motion:reduce){
  *{transition-duration:0ms!important;animation-duration:0ms!important}
}

/* ============================================
   RESET & BASE
   ============================================ */
*, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }

body {
  font: var(--text-base);
  color: var(--neutral-950);
  background: var(--neutral-50);
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
}

a { color: var(--brand-600); text-decoration: none; }
a:hover { text-decoration: underline; }

/* ============================================
   LAYOUT — Sidebar + Topbar + Content
   ============================================ */
.app-layout {
  display: flex;
  min-height: 100vh;
}

/* Sidebar */
.sidebar {
  width: var(--sidebar-width);
  background: var(--brand-900);
  position: fixed;
  top: 0;
  left: 0;
  bottom: 0;
  z-index: 50;
  display: flex;
  flex-direction: column;
  transition: width var(--duration-normal) var(--easing-default);
  overflow: hidden;
}

.sidebar.collapsed {
  width: var(--sidebar-collapsed);
}

.sidebar-brand {
  display: flex;
  align-items: center;
  height: var(--topbar-height);
  padding: 0 var(--space-4);
  gap: var(--space-3);
  flex-shrink: 0;
  border-bottom: 1px solid rgba(255,255,255,.08);
}

.sidebar-brand svg {
  width: 24px;
  height: 24px;
  color: var(--brand-500);
  flex-shrink: 0;
}

.sidebar-brand-text {
  display: flex;
  flex-direction: column;
  min-width: 0;
}

.sidebar-brand-name {
  font: var(--text-lg);
  color: #fff;
  white-space: nowrap;
  overflow: hidden;
  line-height: 1.2;
}

.sidebar-brand-version {
  font: var(--text-xxs);
  color: var(--neutral-400);
  white-space: nowrap;
  line-height: 1;
}

.sidebar.collapsed .sidebar-brand-text { display: none; }

.sidebar-section-label {
  font: var(--text-xxs);
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: .05em;
  color: var(--neutral-400);
  padding: var(--space-4) var(--space-4) var(--space-2);
  white-space: nowrap;
  overflow: hidden;
}

.sidebar.collapsed .sidebar-section-label { opacity: 0; height: 0; padding: 0; }

.sidebar-nav {
  flex: 1;
  overflow-y: auto;
  padding: var(--space-2) 0;
}

.sidebar-nav a {
  display: flex;
  align-items: center;
  gap: var(--space-3);
  padding: var(--space-3) var(--space-4);
  font: var(--text-base);
  color: rgba(255,255,255,.7);
  text-decoration: none;
  border-left: 3px solid transparent;
  transition: background var(--duration-fast) var(--easing-default),
              color var(--duration-fast) var(--easing-default);
  white-space: nowrap;
}

.sidebar-nav a:hover {
  background: var(--brand-800);
  color: #fff;
  text-decoration: none;
}

.sidebar-nav a.active {
  background: var(--brand-700);
  border-left-color: var(--brand-500);
  color: #fff;
  font-weight: 500;
}

.sidebar-nav a svg {
  width: 20px;
  height: 20px;
  color: var(--neutral-400);
  flex-shrink: 0;
  stroke-width: 1.5;
}

.sidebar-nav a.active svg,
.sidebar-nav a:hover svg {
  color: #fff;
}

.sidebar.collapsed .sidebar-nav a span { opacity: 0; }

.sidebar-toggle {
  display: flex;
  align-items: center;
  justify-content: center;
  height: 40px;
  border-top: 1px solid rgba(255,255,255,.08);
  cursor: pointer;
  color: var(--neutral-400);
  transition: color var(--duration-fast) var(--easing-default);
  flex-shrink: 0;
  background: none;
  border-left: none;
  border-right: none;
  border-bottom: none;
  width: 100%;
}

.sidebar-toggle:hover { color: #fff; }
.sidebar-toggle svg { width: 20px; height: 20px; stroke-width: 1.5; }

/* Main area */
.main-area {
  flex: 1;
  margin-left: var(--sidebar-width);
  display: flex;
  flex-direction: column;
  min-height: 100vh;
  transition: margin-left var(--duration-normal) var(--easing-default);
}

.sidebar.collapsed ~ .main-area {
  margin-left: var(--sidebar-collapsed);
}

/* Top bar */
.topbar {
  height: var(--topbar-height);
  background: var(--neutral-0);
  border-bottom: var(--border-subtle);
  display: flex;
  align-items: center;
  padding: 0 var(--space-6);
  gap: var(--space-4);
  position: sticky;
  top: 0;
  z-index: 40;
  flex-shrink: 0;
}

.topbar-title {
  font: var(--text-sm);
  color: var(--neutral-700);
}

.topbar-spacer { flex: 1; }

.topbar-actions {
  display: flex;
  align-items: center;
  gap: var(--space-3);
}

/* Filters bar */
.filters-bar {
  background: var(--neutral-0);
  border-bottom: var(--border-subtle);
  padding: var(--space-3) var(--space-6);
}

.filters-bar form {
  display: flex;
  gap: var(--space-4);
  align-items: center;
  flex-wrap: wrap;
}

.filter-group {
  display: flex;
  align-items: center;
  gap: var(--space-2);
}

.filter-group label {
  font: var(--text-sm);
  color: var(--neutral-700);
}

.filter-group select,
.filter-group input[type="text"],
.filter-group input[type="number"],
.filter-group input[type="date"] {
  height: 32px;
  padding: var(--space-1) var(--space-3);
  border: var(--border-default);
  border-radius: var(--radius-sm);
  font: var(--text-base);
  color: var(--neutral-950);
  background: var(--neutral-0);
  transition: border-color var(--duration-fast) var(--easing-default);
}

.filter-group select:hover,
.filter-group input:hover {
  border-color: var(--neutral-400);
}

.filter-group select:focus,
.filter-group input:focus {
  outline: none;
  border-color: var(--brand-600);
  box-shadow: var(--shadow-ring);
}

/* Content */
.content {
  padding: var(--space-6);
  max-width: 1400px;
  flex: 1;
}

/* Footer */
.footer {
  font: var(--text-xs);
  color: var(--neutral-500);
  border-top: var(--border-subtle);
  display: flex;
  justify-content: space-between;
  padding: var(--space-3) var(--space-6);
  flex-shrink: 0;
}

/* ============================================
   BUTTONS
   ============================================ */
.btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: var(--space-2);
  border: none;
  border-radius: var(--radius-sm);
  cursor: pointer;
  font-family: var(--font-family);
  transition: background var(--duration-fast) var(--easing-default),
              box-shadow var(--duration-fast) var(--easing-default),
              transform var(--duration-instant) var(--easing-default);
  /* Default: md size */
  height: 36px;
  padding: var(--space-2) var(--space-4);
  font: var(--text-base);
  font-weight: 500;
}

.btn:active { transform: scale(0.98); }
.btn:focus-visible { box-shadow: var(--shadow-ring); outline: none; }
.btn:disabled { opacity: 0.4; cursor: not-allowed; }
.btn:disabled:active { transform: none; }

.btn svg { width: 16px; height: 16px; stroke-width: 1.5; }

/* Primary */
.btn-primary {
  background: var(--brand-600);
  color: #fff;
}
.btn-primary:hover:not(:disabled) { background: var(--brand-500); }
.btn-primary:active:not(:disabled) { background: var(--brand-700); }

/* Secondary */
.btn-secondary, .btn-outline {
  background: var(--neutral-0);
  border: var(--border-default);
  color: var(--neutral-800);
}
.btn-secondary:hover:not(:disabled),
.btn-outline:hover:not(:disabled) { background: var(--neutral-50); }
.btn-secondary:active:not(:disabled),
.btn-outline:active:not(:disabled) { background: var(--neutral-100); }

/* Ghost */
.btn-ghost {
  background: transparent;
  color: var(--neutral-700);
}
.btn-ghost:hover:not(:disabled) { background: var(--neutral-100); }

/* Danger */
.btn-danger {
  background: var(--color-error);
  color: #fff;
}
.btn-danger:hover:not(:disabled) { background: #b91c1c; }

/* Link */
.btn-link {
  background: transparent;
  color: var(--brand-600);
  padding: 0;
  height: auto;
  border: none;
}
.btn-link:hover:not(:disabled) { text-decoration: underline; }

/* Sizes */
.btn-sm {
  height: 32px;
  padding: var(--space-1) var(--space-3);
  font: var(--text-sm);
}

.btn-lg {
  height: 40px;
  padding: var(--space-3) var(--space-5);
  font: var(--text-base);
  font-weight: 500;
}

/* Status text */
.status-success { color: var(--color-success); font: var(--text-sm); }
.status-error { color: var(--color-error); font: var(--text-sm); }

/* ============================================
   INPUTS / FORMS
   ============================================ */
.form-section {
  margin-bottom: var(--space-5);
  padding-bottom: var(--space-5);
  border-bottom: var(--border-subtle);
}

.form-section:last-of-type {
  border-bottom: none;
  margin-bottom: var(--space-2);
}

.form-section h3 {
  font: var(--text-lg);
  color: var(--neutral-950);
  margin-bottom: var(--space-3);
}

.form-group {
  margin-bottom: var(--space-3);
}

.form-group label {
  display: block;
  font: var(--text-sm);
  color: var(--neutral-700);
  margin-bottom: var(--space-1);
}

.form-group input[type="text"],
.form-group input[type="email"],
.form-group input[type="password"],
.form-group input[type="number"],
.form-group select {
  width: 100%;
  height: 36px;
  padding: var(--space-2) var(--space-3);
  border: var(--border-default);
  border-radius: var(--radius-sm);
  font: var(--text-base);
  color: var(--neutral-950);
  background: var(--neutral-0);
  transition: border-color var(--duration-fast) var(--easing-default),
              box-shadow var(--duration-fast) var(--easing-default);
}

.form-group input::placeholder,
.form-group select::placeholder {
  color: var(--neutral-400);
}

.form-group input:hover,
.form-group select:hover {
  border-color: var(--neutral-400);
}

.form-group input:focus,
.form-group select:focus {
  outline: none;
  border-color: var(--brand-600);
  box-shadow: var(--shadow-ring);
}

.form-group input:disabled,
.form-group select:disabled {
  border-color: var(--neutral-200);
  background: var(--neutral-100);
  color: var(--neutral-500);
}

.form-row {
  display: flex;
  gap: var(--space-4);
}

.form-note {
  font: var(--text-xs);
  color: var(--neutral-500);
  margin-top: var(--space-1);
}

.form-actions {
  margin-top: var(--space-5);
  text-align: right;
}

/* Radio group */
.radio-group {
  display: flex;
  flex-direction: column;
  gap: var(--space-2);
}

.radio-label {
  display: flex;
  align-items: center;
  gap: var(--space-2);
  font: var(--text-base);
  cursor: pointer;
  padding: var(--space-2) var(--space-3);
  border-radius: var(--radius-sm);
  border: 1px solid transparent;
  transition: background var(--duration-fast) var(--easing-default);
}

.radio-label:hover { background: var(--neutral-50); }

.radio-label input[type="radio"] {
  accent-color: var(--brand-600);
}

/* Connection test */
.test-success {
  color: var(--color-success);
  font: var(--text-sm);
  margin-left: var(--space-3);
  font-weight: 500;
}

.test-error {
  color: var(--color-error);
  font: var(--text-sm);
  margin-left: var(--space-3);
  font-weight: 500;
}

/* ============================================
   CARDS
   ============================================ */
.card {
  background: var(--neutral-0);
  border: var(--border-subtle);
  border-radius: var(--radius-md);
  padding: var(--space-5);
}

.card-title {
  font: var(--text-lg);
  color: var(--neutral-950);
  margin-bottom: var(--space-4);
}

/* KPI Cards */
.kpi-row {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
  gap: var(--space-4);
  margin-bottom: var(--space-6);
}

.kpi-card {
  background: var(--neutral-0);
  border-radius: var(--radius-md);
  padding: var(--space-5);
  border: var(--border-subtle);
  box-shadow: var(--shadow-sm);
}

.kpi-card .kpi-label {
  font: var(--text-xxs);
  font-weight: 600;
  color: var(--neutral-500);
  text-transform: uppercase;
  letter-spacing: .05em;
  margin-bottom: var(--space-1);
}

.kpi-card .kpi-value {
  font: var(--text-2xl);
  color: var(--neutral-950);
}

.kpi-card .kpi-value.small {
  font-size: 20px;
}

a.kpi-card-link {
  text-decoration: none;
  color: inherit;
  display: block;
  transition: box-shadow 0.15s, transform 0.15s;
}

a.kpi-card-link:hover {
  box-shadow: var(--shadow-md);
  transform: translateY(-1px);
}

.kpi-card-accent {
  border-color: var(--brand-600);
  border-width: 2px;
}

.kpi-card-accent .kpi-value {
  color: var(--brand-600);
}

/* Chart Cards */
.charts-row {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: var(--space-4);
  margin-bottom: var(--space-6);
}

.chart-card {
  background: var(--neutral-0);
  border-radius: var(--radius-md);
  padding: var(--space-5);
  border: var(--border-subtle);
  box-shadow: var(--shadow-sm);
}

.chart-card h3 {
  font: var(--text-lg);
  color: var(--neutral-950);
  margin-bottom: var(--space-4);
}

.chart-card.full-width {
  grid-column: 1 / -1;
}

/* Detail header */
.detail-header {
  background: var(--neutral-0);
  border-radius: var(--radius-md);
  border: var(--border-subtle);
  padding: var(--space-5);
  margin-bottom: var(--space-6);
  box-shadow: var(--shadow-sm);
}

.detail-header h2 {
  font: var(--text-2xl);
  color: var(--neutral-950);
  margin-bottom: var(--space-4);
}

.detail-header h3 {
  font: var(--text-lg);
  color: var(--neutral-950);
  margin-bottom: var(--space-3);
}

.detail-header h4 {
  font: var(--text-sm);
  color: var(--neutral-500);
  margin-top: var(--space-4);
  margin-bottom: var(--space-2);
}

.detail-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(200px, 1fr));
  gap: var(--space-3);
}

.detail-field {
  font: var(--text-base);
}

.detail-field .label {
  font: var(--text-xxs);
  font-weight: 600;
  color: var(--neutral-500);
  text-transform: uppercase;
  letter-spacing: .03em;
}

.detail-field .value {
  font-weight: 500;
  color: var(--neutral-950);
}

/* Summary grid */
.summary-grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: var(--space-4);
  margin-bottom: var(--space-6);
}

/* Settings / Setup */
.setup-page {
  background: var(--neutral-50);
  min-height: 100vh;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: var(--space-8);
}

.setup-card {
  background: var(--neutral-0);
  border-radius: var(--radius-md);
  box-shadow: var(--shadow-lg);
  max-width: 600px;
  width: 100%;
  padding: var(--space-8) var(--space-10);
}

.setup-header {
  text-align: center;
  margin-bottom: var(--space-8);
}

.setup-header h1 {
  font: var(--text-2xl);
  color: var(--neutral-950);
  margin-bottom: var(--space-2);
}

.setup-header p {
  font: var(--text-base);
  color: var(--neutral-500);
}

.settings-card {
  background: var(--neutral-0);
  border-radius: var(--radius-md);
  border: var(--border-subtle);
  padding: var(--space-6) var(--space-8);
  max-width: none;
  box-shadow: var(--shadow-sm);
}

/* ============================================
   TABLES
   ============================================ */
.table-card {
  background: var(--neutral-0);
  border-radius: var(--radius-md);
  border: var(--border-subtle);
  overflow: hidden;
  margin-bottom: var(--space-6);
  box-shadow: var(--shadow-sm);
}

.table-card .table-header {
  display: flex;
  justify-content: space-between;
  align-items: center;
  padding: var(--space-4) var(--space-5);
  border-bottom: var(--border-subtle);
}

.table-card .table-header h3 {
  font: var(--text-lg);
  color: var(--neutral-950);
}

table {
  width: 100%;
  border-collapse: collapse;
  font: var(--text-base);
}

th {
  text-align: left;
  padding: var(--space-3) var(--space-4);
  background: var(--neutral-50);
  border-bottom: var(--border-subtle);
  font: var(--text-sm);
  font-weight: 600;
  color: var(--neutral-700);
  white-space: nowrap;
}

th[data-sort] { cursor: pointer; }
th[data-sort]:hover { color: var(--brand-600); }

td {
  padding: var(--space-3) var(--space-4);
  border-bottom: var(--border-subtle);
  min-height: 44px;
  vertical-align: middle;
}

tr:hover td { background: var(--brand-50); }

td a {
  color: var(--brand-600);
  font-weight: 500;
  text-decoration: none;
}

td a:hover { text-decoration: underline; }

.text-right { text-align: right; }
.text-center { text-align: center; }
.text-mono { font-family: "SF Mono","Consolas","Liberation Mono",monospace; font-size: 13px; font-variant-numeric: tabular-nums; }

/* Lot sub-rows */
.lot-row td {
  background: var(--neutral-50);
  padding-left: var(--space-10);
  font: var(--text-xs);
  color: var(--neutral-500);
}

.lot-row:hover td { background: var(--neutral-100); }

/* Empty state */
td[colspan] { text-align: center; padding: var(--space-8); color: var(--neutral-500); font: var(--text-sm); }

/* ============================================
   BADGES
   ============================================ */
.badge {
  display: inline-flex;
  align-items: center;
  height: 20px;
  padding: 2px 8px;
  border-radius: var(--radius-full);
  font: var(--text-xxs);
  font-weight: 500;
  white-space: nowrap;
}

.badge-md {
  height: 24px;
  padding: 2px 8px;
  font: var(--text-xs);
  font-weight: 500;
}

/* Semantic badge colors */
.badge-success, .badge-green {
  background: var(--color-success-light);
  color: var(--color-success);
}

.badge-warning, .badge-yellow {
  background: var(--color-warning-light);
  color: var(--color-warning);
}

.badge-error, .badge-red {
  background: var(--color-error-light);
  color: var(--color-error);
}

.badge-info {
  background: var(--color-info-light);
  color: var(--color-info);
}

.badge-neutral {
  background: var(--neutral-100);
  color: var(--neutral-500);
}

/* ============================================
   ALERTS
   ============================================ */
.alert-card {
  padding: var(--space-3) var(--space-4);
  border-radius: var(--radius-md);
  margin-bottom: var(--space-4);
  font: var(--text-sm);
  color: var(--neutral-800);
  display: flex;
  align-items: center;
  gap: var(--space-3);
}

.alert-card.alert-red {
  background: var(--color-error-light);
  border-left: 3px solid var(--color-error);
}

.alert-card.alert-yellow {
  background: var(--color-warning-light);
  border-left: 3px solid var(--color-warning);
}

.alert-card.alert-green {
  background: var(--color-success-light);
  border-left: 3px solid var(--color-success);
}

.alert-card.alert-info {
  background: var(--color-info-light);
  border-left: 3px solid var(--color-info);
}

/* Flash messages */
.flash-message {
  padding: var(--space-3) var(--space-4);
  border-radius: var(--radius-md);
  margin-bottom: var(--space-4);
  font: var(--text-sm);
  color: var(--neutral-800);
}

.flash-success {
  background: var(--color-success-light);
  border-left: 3px solid var(--color-success);
}

.flash-error {
  background: var(--color-error-light);
  border-left: 3px solid var(--color-error);
}

/* ============================================
   EXPIRY ROW COLORS
   ============================================ */
tr.expiry-red td { background: var(--color-error-light); }
tr.expiry-red:hover td { background: #fecaca; }
tr.expiry-yellow td { background: var(--color-warning-light); }
tr.expiry-yellow:hover td { background: #fde68a; }
tr.expiry-green td { background: var(--color-success-light); }
tr.expiry-green:hover td { background: #bbf7d0; }

/* ============================================
   PRICE TRENDS
   ============================================ */
.trend-up { color: var(--color-error); font-weight: 600; }
.trend-down { color: var(--color-success); font-weight: 600; }
.trend-same { color: var(--neutral-400); }

/* ============================================
   SECTION HEADING
   ============================================ */
.section-heading {
  font: var(--text-xl);
  color: var(--neutral-950);
  margin: var(--space-6) 0 var(--space-4);
  padding-bottom: var(--space-2);
  border-bottom: 2px solid var(--neutral-200);
}

/* ============================================
   BACK LINK
   ============================================ */
.back-link {
  display: inline-flex;
  align-items: center;
  gap: var(--space-2);
  margin-bottom: var(--space-4);
  color: var(--brand-600);
  text-decoration: none;
  font: var(--text-sm);
  transition: color var(--duration-fast) var(--easing-default);
}

.back-link:hover { color: var(--brand-500); text-decoration: underline; }

/* ============================================
   SEARCH
   ============================================ */
.search-box {
  display: flex;
  gap: var(--space-2);
  margin-bottom: var(--space-4);
}

.search-box input {
  height: 36px;
  padding: var(--space-2) var(--space-3);
  border: var(--border-default);
  border-radius: var(--radius-sm);
  font: var(--text-base);
  flex: 1;
  max-width: 400px;
  transition: border-color var(--duration-fast) var(--easing-default),
              box-shadow var(--duration-fast) var(--easing-default);
}

.search-box input:focus {
  outline: none;
  border-color: var(--brand-600);
  box-shadow: var(--shadow-ring);
}

/* ============================================
   TOOLTIP (CSS-only)
   ============================================ */
[data-tooltip] {
  position: relative;
}

[data-tooltip]::after {
  content: attr(data-tooltip);
  position: absolute;
  bottom: calc(100% + 6px);
  left: 50%;
  transform: translateX(-50%);
  background: var(--neutral-950);
  color: #fff;
  font: var(--text-xs);
  padding: var(--space-1) var(--space-2);
  border-radius: var(--radius-sm);
  box-shadow: var(--shadow-md);
  white-space: nowrap;
  max-width: 240px;
  opacity: 0;
  pointer-events: none;
  transition: opacity var(--duration-fast) var(--easing-default);
  transition-delay: 400ms;
  z-index: 100;
}

[data-tooltip]:hover::after { opacity: 1; }

/* ============================================
   RECEIVING SELECT
   ============================================ */
.receiving-select {
  height: 32px;
  padding: var(--space-1) var(--space-2);
  border: var(--border-default);
  border-radius: var(--radius-sm);
  font: var(--text-sm);
  color: var(--neutral-950);
  background: var(--neutral-0);
  cursor: pointer;
}

.receiving-select:focus {
  outline: none;
  border-color: var(--brand-600);
  box-shadow: var(--shadow-ring);
}

/* ============================================
   TOGGLE SWITCH
   ============================================ */
.toggle-switch {
  position: relative;
  display: inline-block;
  width: 44px;
  height: 24px;
  flex-shrink: 0;
}

.toggle-switch input {
  opacity: 0;
  width: 0;
  height: 0;
}

.toggle-slider {
  position: absolute;
  cursor: pointer;
  top: 0; left: 0; right: 0; bottom: 0;
  background: var(--neutral-300);
  border-radius: var(--radius-full);
  transition: background var(--duration-normal) var(--easing-default);
}

.toggle-slider::before {
  content: "";
  position: absolute;
  height: 18px;
  width: 18px;
  left: 3px;
  bottom: 3px;
  background: var(--neutral-0);
  border-radius: 50%;
  transition: transform var(--duration-normal) var(--easing-default);
  box-shadow: var(--shadow-sm);
}

.toggle-switch input:checked + .toggle-slider {
  background: var(--brand-600);
}

.toggle-switch input:checked + .toggle-slider::before {
  transform: translateX(20px);
}

.toggle-switch input:focus-visible + .toggle-slider {
  box-shadow: var(--shadow-ring);
}

/* ============================================
   FOCUS RING — all focusable elements
   ============================================ */
a:focus-visible,
button:focus-visible,
input:focus-visible,
select:focus-visible,
textarea:focus-visible {
  outline: none;
  box-shadow: var(--shadow-ring);
}

/* ============================================
   PAGE TITLE
   ============================================ */
.page-title {
  font: var(--text-2xl);
  color: var(--neutral-950);
  margin-bottom: var(--space-4);
}

/* ============================================
   RESPONSIVE
   ============================================ */
@media (max-width: 768px) {
  .sidebar { width: var(--sidebar-collapsed); }
  .sidebar .sidebar-brand span,
  .sidebar .sidebar-section-label,
  .sidebar-nav a span { opacity: 0; }
  .main-area { margin-left: var(--sidebar-collapsed); }
  .charts-row { grid-template-columns: 1fr; }
  .summary-grid { grid-template-columns: 1fr; }
}

/* ============================================
   TOAST NOTIFICATIONS
   ============================================ */
#toast-container {
  position: fixed;
  top: var(--space-6);
  right: var(--space-6);
  z-index: 200;
  display: flex;
  flex-direction: column;
  gap: var(--space-3);
  max-width: 400px;
  pointer-events: none;
}

.toast {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: var(--space-3);
  padding: var(--space-4);
  background: var(--neutral-950);
  color: var(--neutral-0);
  border-radius: var(--radius-md);
  box-shadow: var(--shadow-lg);
  border-left: 3px solid transparent;
  font: var(--text-sm);
  pointer-events: auto;
  opacity: 0;
  transform: translateY(calc(-1 * var(--space-3)));
  transition:
    opacity var(--duration-normal) var(--easing-enter),
    transform var(--duration-normal) var(--easing-enter);
}

.toast.toast-visible {
  opacity: 1;
  transform: translateY(0);
}

.toast.toast-leaving {
  opacity: 0;
  transform: translateY(calc(-1 * var(--space-3)));
  transition:
    opacity var(--duration-normal) var(--easing-exit),
    transform var(--duration-normal) var(--easing-exit);
}

.toast-error   { border-left-color: var(--color-error); }
.toast-success { border-left-color: var(--color-success); }
.toast-warning { border-left-color: var(--color-warning); }
.toast-info    { border-left-color: var(--color-info); }

.toast-message {
  flex: 1;
  margin: 0;
  line-height: 1.5;
}

.toast-dismiss {
  flex-shrink: 0;
  background: transparent;
  border: none;
  color: var(--neutral-400);
  cursor: pointer;
  font-size: 18px;
  line-height: 1;
  padding: 0;
  width: 20px;
  height: 20px;
  display: flex;
  align-items: center;
  justify-content: center;
  border-radius: var(--radius-sm);
  transition: color var(--duration-fast) var(--easing-default);
}
.toast-dismiss:hover { color: var(--neutral-0); }
.toast-dismiss:focus-visible { box-shadow: var(--shadow-ring); outline: none; }

/* ============================================
   FEATURE-LOCKED STATE
   ============================================ */
.feature-locked {
  position: relative;
  border: 1px solid var(--color-error) !important;
  border-radius: var(--radius-md);
  background: var(--neutral-100) !important;
  pointer-events: none;
  opacity: 0.65;
  transition:
    border-color var(--duration-normal) var(--easing-default),
    opacity var(--duration-normal) var(--easing-default);
}

.feature-locked::after {
  content: '';
  position: absolute;
  inset: 0;
  border-radius: inherit;
  background: repeating-linear-gradient(
    -45deg,
    transparent,
    transparent 8px,
    rgba(220, 38, 38, 0.04) 8px,
    rgba(220, 38, 38, 0.04) 16px
  );
  pointer-events: none;
}

.feature-locked button,
.feature-locked input,
.feature-locked select,
.feature-locked textarea,
.feature-locked a {
  pointer-events: none;
  opacity: 0.5;
}

/* ── Intelligence Dashboard ── */

.intel-cards {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(180px, 1fr));
  gap: var(--space-3);
  margin-bottom: var(--space-4);
}

.kpi-card .kpi-detail {
  font: var(--text-xxs);
  color: var(--neutral-400);
  margin-top: var(--space-1);
}

.kpi-value--danger { color: var(--color-error) !important; }
.kpi-value--warning { color: #d97706 !important; }
.text-danger { color: var(--color-error); font-weight: 500; }
.text-warning { color: #d97706; font-weight: 500; }

.intel-alerts {
  display: flex;
  flex-direction: column;
  gap: var(--space-2);
}

.intel-alert {
  display: flex;
  align-items: center;
  gap: var(--space-3);
  padding: var(--space-2) var(--space-3);
  border-radius: var(--radius-md);
  font: var(--text-sm);
  text-decoration: none;
  color: var(--neutral-800);
  transition: background 0.15s;
}

.intel-alert:hover {
  background: var(--neutral-50);
}

.intel-alert-badge {
  font: var(--text-xxs);
  font-weight: 700;
  padding: 2px 8px;
  border-radius: var(--radius-sm);
  white-space: nowrap;
  letter-spacing: 0.03em;
}

.intel-alert--critical .intel-alert-badge {
  background: #fecaca;
  color: #991b1b;
}

.intel-alert--warning .intel-alert-badge {
  background: #fef3c7;
  color: #92400e;
}

.intel-alert--info .intel-alert-badge {
  background: #dbeafe;
  color: #1e40af;
}

.alert-card.alert-blue {
  border-left: 4px solid #3b82f6;
  background: #eff6ff;
}

.intel-page .settings-card {
  max-width: none;
}

.intel-table tbody tr:hover {
  background: var(--neutral-50);
}

.category-badge {
  display: inline-block;
  font: var(--text-xxs);
  font-weight: 500;
  padding: 2px 8px;
  border-radius: var(--radius-sm);
  background: var(--neutral-100);
  color: var(--neutral-600);
  white-space: nowrap;
}

.empty-state {
  text-align: center;
  padding: var(--space-10) var(--space-4);
}

/* Reorder Intelligence panel */
.intel-reorder-grid {
  display: flex;
  flex-direction: column;
  gap: var(--space-2);
}

.intel-reorder-row {
  display: flex;
  justify-content: space-between;
  align-items: baseline;
  padding: var(--space-1) 0;
}

.intel-reorder-label {
  font: var(--text-sm);
  color: var(--neutral-600);
}

.intel-reorder-value {
  font: var(--text-sm);
  font-weight: 600;
  color: var(--neutral-950);
}

.intel-reorder-divider {
  border-top: 1px solid var(--neutral-200);
  margin: var(--space-2) 0;
}

.intel-reorder-row--highlight {
  background: var(--neutral-50);
  padding: var(--space-2) var(--space-3);
  border-radius: var(--radius-md);
  margin: 0 calc(-1 * var(--space-3));
}

.intel-reorder-row--highlight .intel-reorder-value {
  font: var(--text-base);
  font-weight: 700;
  color: var(--brand-600);
}

/* Lot status badges */
.lot-status {
  font: var(--text-xs);
  font-weight: 500;
  padding: 2px 8px;
  border-radius: var(--radius-sm);
  white-space: nowrap;
}

.lot-status--good { background: #d1fae5; color: #065f46; }
.lot-status--danger { background: #fecaca; color: #991b1b; }
.lot-status--warning { background: #fef3c7; color: #92400e; }
.lot-status--active { background: #dbeafe; color: #1e40af; }
.lot-status--written-off { background: #f3f4f6; color: #6b7280; text-decoration: line-through; }

.sortable {
  cursor: pointer;
  user-select: none;
}

.sortable:hover {
  color: var(--brand-600);
}

/* Trend Strip */
.trend-strip {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
  gap: var(--space-3);
  margin-bottom: var(--space-5);
}

.trend-tile {
  background: var(--neutral-0);
  border-radius: var(--radius-md);
  padding: var(--space-4);
  border: var(--border-subtle);
  box-shadow: var(--shadow-sm);
}

.trend-label {
  font: var(--text-xxs);
  font-weight: 600;
  color: var(--neutral-500);
  text-transform: uppercase;
  letter-spacing: .05em;
  margin-bottom: var(--space-1);
}

.trend-value {
  font: var(--text-xl);
  color: var(--neutral-950);
  margin-bottom: var(--space-2);
}

.trend-deltas {
  display: flex;
  gap: var(--space-3);
  font: var(--text-xs);
}

.trend-delta {
  color: var(--neutral-500);
  font-weight: 500;
}

.trend-delta.up   { color: var(--color-success); }
.trend-delta.down { color: var(--color-error); }

/* SKU Override Form */
.sku-override-details {
  margin-top: var(--space-4);
  border-top: var(--border-subtle);
  padding-top: var(--space-3);
}

.sku-override-details > summary {
  font: var(--text-sm);
  font-weight: 600;
  color: var(--neutral-700);
  cursor: pointer;
  user-select: none;
  padding: var(--space-1) 0;
}

.sku-override-details > summary:hover { color: var(--brand-600); }

.sku-override-badge {
  display: inline-block;
  margin-left: var(--space-2);
  padding: 1px 6px;
  font: var(--text-xxs);
  background: var(--brand-100);
  color: var(--brand-700);
  border-radius: var(--radius-full);
}

.sku-override-form { margin-top: var(--space-3); }

.sku-override-help {
  font: var(--text-xs);
  color: var(--neutral-500);
  margin: 0 0 var(--space-3);
}

.sku-override-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(140px, 1fr));
  gap: var(--space-3);
  margin-bottom: var(--space-3);
}

.sku-override-grid label {
  display: flex;
  flex-direction: column;
  gap: var(--space-1);
  font: var(--text-xs);
  color: var(--neutral-600);
}

.sku-override-grid input {
  padding: var(--space-2);
  border: var(--border-default);
  border-radius: var(--radius-sm);
  font: var(--text-sm);
}

.sku-override-actions {
  display: flex;
  gap: var(--space-2);
}

/* ============================================
   TODAY (home) workspace
   ============================================ */

.today-alerts {
  display: flex;
  flex-direction: column;
  gap: var(--space-2);
  margin-bottom: var(--space-5);
}

.today-alert {
  display: flex;
  align-items: center;
  gap: var(--space-3);
  padding: var(--space-3) var(--space-4);
  border-radius: var(--radius-md);
  border: 1px solid transparent;
  text-decoration: none;
  color: var(--neutral-950);
  transition: transform .15s, box-shadow .15s;
}
.today-alert:hover {
  text-decoration: none;
  box-shadow: var(--shadow-sm);
  transform: translateX(2px);
}
.today-alert--critical {
  background: var(--color-error-light);
  border-color: var(--color-error);
}
.today-alert--warning {
  background: var(--color-warning-light);
  border-color: var(--color-warning);
}

.today-alert-tag {
  font: var(--text-xxs);
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: .05em;
  padding: 2px 8px;
  border-radius: var(--radius-full);
  background: var(--neutral-0);
  flex-shrink: 0;
}
.today-alert--critical .today-alert-tag { color: var(--color-error); }
.today-alert--warning .today-alert-tag { color: var(--color-warning); }

.today-alert-body {
  font: var(--text-sm);
  color: var(--neutral-800);
  min-width: 0;
}
.today-alert-body strong {
  color: var(--neutral-950);
  font-weight: 600;
}


/* Two-column workspace */
.today-workspace {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: var(--space-5);
  margin-bottom: var(--space-5);
  align-items: start;
}

@media (max-width: 1100px) {
  .today-workspace { grid-template-columns: 1fr; }
}

.today-pane {
  background: var(--neutral-0);
  border: var(--border-subtle);
  border-radius: var(--radius-md);
  box-shadow: var(--shadow-sm);
  padding: var(--space-5);
  display: flex;
  flex-direction: column;
  gap: var(--space-4);
  min-width: 0;
}

.today-pane-header {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: var(--space-3);
  border-bottom: var(--border-subtle);
  padding-bottom: var(--space-3);
}
.today-pane-title {
  font: var(--text-xl);
  margin: 0;
  color: var(--neutral-950);
}
.today-pane-meta {
  font: var(--text-xs);
  color: var(--neutral-500);
}

.today-pane-footer {
  padding-top: var(--space-3);
  border-top: var(--border-subtle);
}

.today-empty {
  padding: var(--space-6) var(--space-4);
  text-align: center;
}
.today-empty p { margin: 0 0 var(--space-2); font: var(--text-base); color: var(--neutral-700); }
.today-empty p:first-child { color: var(--neutral-950); font-weight: 600; }
.today-empty-sub {
  color: var(--neutral-500);
  max-width: 32em;
  margin-left: auto !important;
  margin-right: auto !important;
  margin-bottom: var(--space-4) !important;
}

/* Receiving card */
.today-receiving-list {
  display: flex;
  flex-direction: column;
  gap: var(--space-2);
}

.receiving-card {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--space-3);
  padding: var(--space-3) var(--space-4);
  border: var(--border-subtle);
  border-left: 3px solid var(--brand-500);
  border-radius: var(--radius-sm);
  background: var(--neutral-0);
  text-decoration: none;
  color: inherit;
  transition: background .15s, transform .15s, border-color .15s;
}
.receiving-card:hover {
  background: var(--brand-50);
  border-left-color: var(--brand-700);
  text-decoration: none;
  transform: translateX(2px);
}

.receiving-card-main { min-width: 0; flex: 1; }
.receiving-card-title {
  display: flex;
  align-items: baseline;
  gap: var(--space-2);
  flex-wrap: wrap;
}
.receiving-card-supplier {
  font: var(--text-base);
  font-weight: 600;
  color: var(--neutral-950);
}
.receiving-card-invoice {
  font: var(--text-xs);
  color: var(--neutral-500);
}
.receiving-card-sub {
  font: var(--text-xs);
  color: var(--neutral-500);
  margin-top: var(--space-1);
}
.receiving-card-sub .dot {
  margin: 0 var(--space-1);
  color: var(--neutral-300);
}

.receiving-card-right {
  display: flex;
  flex-direction: column;
  align-items: flex-end;
  gap: var(--space-1);
  flex-shrink: 0;
}
.receiving-status {
  font: var(--text-xxs);
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: .05em;
  padding: 2px 8px;
  border-radius: var(--radius-full);
}
.receiving-status--shipped {
  background: var(--color-info-light);
  color: var(--color-info);
}
.receiving-status--ordered {
  background: var(--neutral-100);
  color: var(--neutral-700);
}

.receiving-age {
  font: var(--text-xs);
  color: var(--neutral-500);
}
.receiving-age--old {
  color: var(--color-warning);
  font-weight: 600;
}


/* Quicklinks grid */
.today-quicklinks {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
  gap: var(--space-3);
  margin-top: var(--space-5);
}

.today-quicklink {
  display: flex;
  flex-direction: column;
  gap: var(--space-1);
  padding: var(--space-4);
  background: var(--neutral-0);
  border: var(--border-subtle);
  border-radius: var(--radius-md);
  text-decoration: none;
  color: inherit;
  transition: border-color .15s, box-shadow .15s, transform .15s;
}
.today-quicklink:hover {
  border-color: var(--brand-500);
  box-shadow: var(--shadow-sm);
  text-decoration: none;
  transform: translateY(-1px);
}
.today-quicklink-label {
  font: var(--text-base);
  font-weight: 600;
  color: var(--brand-700);
}
.today-quicklink-sub {
  font: var(--text-xs);
  color: var(--neutral-500);
}

/* Status badge — shared with Ordering Assistant */
.status-badge {
  display: inline-block;
  font: var(--text-xxs);
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: .04em;
  padding: 2px 8px;
  border-radius: var(--radius-full);
  white-space: nowrap;
}
.status-badge--error {
  background: var(--color-error-light);
  color: var(--color-error);
}
.status-badge--warning {
  background: var(--color-warning-light);
  color: var(--color-warning);
}
.status-badge--info {
  background: var(--color-info-light);
  color: var(--color-info);
}
.status-badge--success {
  background: var(--color-success-light);
  color: var(--color-success);
}


@media print {
  .sidebar,
  .topbar,
  .filters-bar,
  .footer {
    display: none !important;
  }
  .app-layout,
  .main-area,
  .content {
    display: block;
    margin: 0;
    padding: 0;
  }
  .table-card {
    box-shadow: none;
    border: var(--border-subtle);
  }
  body, .main-area { background: white; }
}
