/* ═══════════════════════════════════════════════════════════════
   EOS Platform Dashboard — Site Styles
   Consumes eos-tokens.css design system variables
   ═══════════════════════════════════════════════════════════════ */

/* ── Reset & Base ── */

*,
*::before,
*::after {
  box-sizing: border-box;
}

html, body {
  height: 100%;
  margin: 0;
  padding: 0;
}

body {
  font-family: var(--eos-font-sans);
  font-size: var(--eos-font-size-base);
  font-weight: var(--eos-font-weight-regular);
  line-height: var(--eos-line-height-normal);
  color: var(--eos-text-primary);
  background-color: var(--eos-surface-page);
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
}

code, kbd, pre, samp, .eos-mono {
  font-family: var(--eos-font-mono);
  font-size: var(--eos-font-size-mono);
  line-height: var(--eos-line-height-relaxed);
}

a {
  color: var(--eos-text-link);
  text-decoration: none;
}

a:hover {
  text-decoration: underline;
}

/* ── Skip Link (WCAG 2.4.1) ── */

.eos-skip-link {
  position: absolute;
  top: -100%;
  left: var(--eos-space-md);
  z-index: 10000;
  padding: var(--eos-space-xs) var(--eos-space-md);
  background-color: var(--eos-primary);
  color: var(--eos-text-inverse);
  border-radius: var(--eos-radius-md);
  font-size: var(--eos-font-size-sm);
  font-weight: var(--eos-font-weight-semibold);
  text-decoration: none;
  white-space: nowrap;
}

.eos-skip-link:focus {
  top: var(--eos-space-xs);
}

/* ── Focus Indicators (WCAG 2.4.7) ── */

*:focus-visible {
  outline: 2px solid var(--eos-border-focus);
  outline-offset: 2px;
}

/* Suppress focus ring on mouse clicks for non-text elements */
*:focus:not(:focus-visible) {
  outline: none;
}

/* Buttons */
.eos-btn:focus-visible,
.eos-hamburger:focus-visible,
.theme-toggle:focus-visible,
.logout-btn:focus-visible,
.eos-toast-dismiss:focus-visible {
  outline: 2px solid var(--eos-border-focus);
  outline-offset: 2px;
}

/* Sidebar nav items — light ring on dark background */
.eos-sidebar .nav-item:focus-visible {
  outline: 2px solid rgba(255, 255, 255, 0.7);
  outline-offset: -2px;
}

.eos-sidebar .nav-group-header:focus-visible {
  outline: 2px solid rgba(255, 255, 255, 0.7);
  outline-offset: -2px;
}

/* Form inputs */
.form-control:focus-visible,
.form-select:focus-visible,
input:focus-visible,
select:focus-visible,
textarea:focus-visible {
  outline: 2px solid var(--eos-border-focus);
  outline-offset: 0;
  border-color: var(--eos-border-focus);
}

/* Links */
a:focus-visible {
  outline: 2px solid var(--eos-border-focus);
  outline-offset: 2px;
  border-radius: var(--eos-radius-sm);
}

/* ── Layout Shell ── */

.eos-app {
  display: flex;
  height: 100vh;
  overflow: hidden;
}

/* ── Sidebar ── */

.eos-sidebar {
  width: var(--eos-sidebar-width);
  min-width: var(--eos-sidebar-width);
  height: 100vh;
  background-color: var(--eos-surface-sidebar);
  display: flex;
  flex-direction: column;
  overflow: hidden;
  box-shadow: var(--eos-shadow-card);
  z-index: 100;
}

.eos-sidebar .logo-area {
  display: flex;
  align-items: center;
  gap: var(--eos-space-sm);
  padding: var(--eos-space-md);
  height: var(--eos-header-height);
  border-bottom: var(--eos-border-width-thin) solid rgba(255, 255, 255, 0.1);
  flex-shrink: 0;
}

.eos-sidebar .logo-icon {
  width: 2rem;
  height: 2rem;
  background-color: var(--eos-primary);
  color: var(--eos-text-inverse);
  border-radius: var(--eos-radius-md);
  display: flex;
  align-items: center;
  justify-content: center;
  font-weight: var(--eos-font-weight-bold);
  font-size: var(--eos-font-size-base);
  flex-shrink: 0;
}

.eos-sidebar .logo-text {
  color: var(--eos-text-inverse);
  font-weight: var(--eos-font-weight-semibold);
  font-size: var(--eos-font-size-base);
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}

.eos-sidebar .nav-scroll {
  flex: 1;
  overflow-y: auto;
  overflow-x: hidden;
  padding: var(--eos-space-xs) 0;
}

.eos-sidebar .nav-group {
  margin-bottom: var(--eos-space-2xs);
}

.eos-sidebar .nav-group-label {
  padding: var(--eos-space-md) var(--eos-space-md) var(--eos-space-2xs);
  font-size: 0.625rem;
  font-weight: 700;
  color: var(--eos-text-tertiary);
  text-transform: uppercase;
  letter-spacing: 0.1em;
}

.eos-sidebar .nav-item {
  display: flex;
  align-items: center;
  gap: var(--eos-space-xs);
  padding: var(--eos-space-sm) var(--eos-space-md);
  color: var(--eos-text-sidebar);
  font-size: var(--eos-font-size-sm);
  text-decoration: none;
  transition: background-color 0.15s, color 0.15s;
  cursor: pointer;
}

.eos-sidebar .nav-item:hover {
  background-color: var(--eos-navy-light);
  color: var(--eos-text-sidebar-active);
  text-decoration: none;
}

.eos-sidebar .nav-item.active {
  background-color: var(--eos-navy-lighter);
  color: var(--eos-text-sidebar-active);
  font-weight: var(--eos-font-weight-medium);
}

.eos-sidebar .nav-item i {
  font-size: 1.125rem;
  width: 1.25rem;
  text-align: center;
  flex-shrink: 0;
}

.eos-sidebar .nav-badge {
  margin-left: auto;
  background-color: var(--eos-danger);
  color: var(--eos-text-inverse);
  font-size: var(--eos-font-size-xs);
  font-weight: var(--eos-font-weight-semibold);
  padding: 0.0625rem 0.375rem;
  border-radius: var(--eos-radius-full);
  line-height: 1.4;
}

.eos-sidebar .sidebar-footer {
  display: flex;
  align-items: center;
  gap: var(--eos-space-xs);
  padding: var(--eos-space-sm) var(--eos-space-md);
  border-top: var(--eos-border-width-thin) solid rgba(255, 255, 255, 0.1);
  flex-shrink: 0;
}

.eos-sidebar .user-avatar {
  width: 2rem;
  height: 2rem;
  background-color: var(--eos-primary);
  color: var(--eos-text-inverse);
  border-radius: var(--eos-radius-full);
  display: flex;
  align-items: center;
  justify-content: center;
  font-weight: var(--eos-font-weight-semibold);
  font-size: var(--eos-font-size-xs);
  flex-shrink: 0;
}

.eos-sidebar .user-name {
  color: var(--eos-text-inverse);
  font-size: var(--eos-font-size-sm);
  font-weight: var(--eos-font-weight-medium);
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}

.eos-sidebar .user-role {
  color: var(--eos-text-sidebar);
  font-size: var(--eos-font-size-xs);
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}

.eos-sidebar .logout-btn {
  margin-left: auto;
  background: none;
  border: none;
  color: var(--eos-text-sidebar);
  font-size: 1.125rem;
  cursor: pointer;
  padding: var(--eos-space-2xs);
  border-radius: var(--eos-radius-sm);
  transition: color 0.15s;
}

.eos-sidebar .logout-btn:hover {
  color: var(--eos-danger);
}

/* ── Main Area (Header + Content) ── */

.eos-main {
  flex: 1;
  display: flex;
  flex-direction: column;
  overflow: hidden;
  min-width: 0;
}

/* ── Header ── */

.eos-header {
  height: var(--eos-header-height);
  min-height: var(--eos-header-height);
  background-color: var(--eos-surface-header);
  border-bottom: var(--eos-border-width-thin) solid var(--eos-border-default);
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 0 var(--eos-space-lg);
  box-shadow: var(--eos-shadow-card);
  z-index: 90;
}

.eos-header .header-title {
  font-size: var(--eos-font-size-h5);
  font-weight: var(--eos-font-weight-semibold);
  color: var(--eos-text-primary);
}

.eos-header .header-meta {
  font-size: var(--eos-font-size-xs);
  color: var(--eos-text-tertiary);
}

.eos-header .header-right {
  display: flex;
  align-items: center;
  gap: var(--eos-space-md);
}

/* ── Content ── */

.eos-content {
  flex: 1;
  overflow-y: auto;
  padding: var(--eos-space-lg);
}

/* ── Cards ── */

.eos-card {
  background-color: var(--eos-surface-card);
  border: var(--eos-border-width-thin) solid var(--eos-border-default);
  border-radius: var(--eos-radius-md);
  box-shadow: var(--eos-shadow-card);
  padding: var(--eos-space-md);
}

/* ── Buttons ── */

.eos-btn {
  display: inline-flex;
  align-items: center;
  gap: var(--eos-space-2xs);
  padding: var(--eos-space-xs) var(--eos-space-md);
  border-radius: var(--eos-radius-md);
  font-size: var(--eos-font-size-base);
  font-weight: var(--eos-font-weight-medium);
  font-family: inherit;
  line-height: 1;
  border: var(--eos-border-width-default) solid transparent;
  cursor: pointer;
  transition: background-color 0.15s, border-color 0.15s, color 0.15s;
  white-space: nowrap;
}

.eos-btn-primary {
  background-color: var(--eos-primary);
  color: var(--eos-text-inverse);
  border-color: var(--eos-primary);
}

.eos-btn-primary:hover {
  background-color: var(--eos-primary-hover);
  border-color: var(--eos-primary-hover);
}

.eos-btn-outline {
  background-color: transparent;
  color: var(--eos-text-primary);
  border-color: var(--eos-border-default);
}

.eos-btn-outline:hover {
  background-color: var(--eos-surface-hover);
  border-color: var(--eos-border-strong);
}

.eos-btn-sm {
  padding: var(--eos-space-2xs) var(--eos-space-xs);
  font-size: var(--eos-font-size-sm);
}

/* ── Screen-Reader Only Utility ── */

.sr-only {
  position: absolute;
  width: 1px;
  height: 1px;
  padding: 0;
  margin: -1px;
  overflow: hidden;
  clip: rect(0, 0, 0, 0);
  white-space: nowrap;
  border: 0;
}

/* ── Status Badges ── */

.eos-badge--filled {
  display: inline-flex;
  align-items: center;
  gap: var(--eos-space-2xs);
  padding: var(--eos-space-3xs) var(--eos-space-xs);
  border-radius: var(--eos-radius-full);
  font-size: var(--eos-font-size-xs);
  font-weight: var(--eos-font-weight-medium);
  color: var(--eos-status-text-on-filled);
  line-height: 1;
  white-space: nowrap;
}

.eos-badge--filled.status-active     { background-color: var(--eos-status-active); }
.eos-badge--filled.status-pending    { background-color: var(--eos-status-pending); }
.eos-badge--filled.status-processing { background-color: var(--eos-status-processing); }
.eos-badge--filled.status-failed     { background-color: var(--eos-status-failed); }
.eos-badge--filled.status-warning    { background-color: var(--eos-status-warning); }
.eos-badge--filled.status-suspended  { background-color: var(--eos-status-suspended); }
.eos-badge--filled.status-escalated  { background-color: var(--eos-status-escalated); }
.eos-badge--filled.status-terminated { background-color: var(--eos-status-terminated); }
.eos-badge--filled.status-disputed   { background-color: var(--eos-status-disputed); }

.eos-badge--filled.status-pending,
.eos-badge--filled.status-suspended {
  color: var(--eos-text-primary);
}

[data-theme="dark"] .eos-badge--filled.status-pending,
[data-theme="dark"] .eos-badge--filled.status-suspended {
  color: var(--eos-status-text-on-filled);
}

.eos-badge--outline {
  display: inline-flex;
  align-items: center;
  gap: var(--eos-space-2xs);
  padding: var(--eos-space-3xs) var(--eos-space-xs);
  border-radius: var(--eos-radius-full);
  font-size: var(--eos-font-size-xs);
  font-weight: var(--eos-font-weight-medium);
  background-color: transparent;
  line-height: 1;
  white-space: nowrap;
  border-width: var(--eos-border-width-default);
  border-style: solid;
}

.eos-badge--outline.status-cancelled { color: var(--eos-status-cancelled); border-color: var(--eos-status-cancelled); }
.eos-badge--outline.status-reversed  { color: var(--eos-status-reversed);  border-color: var(--eos-status-reversed); }
.eos-badge--outline.status-draft     { color: var(--eos-status-draft);     border-color: var(--eos-status-draft); }
.eos-badge--outline.status-completed { color: var(--eos-status-completed); border-color: var(--eos-status-completed); }
.eos-badge--outline.status-expired   { color: var(--eos-status-expired);   border-color: var(--eos-status-expired); }

/* ── Status Dots ── */

.eos-status-dot {
  display: inline-block;
  width: 0.4375rem;
  height: 0.4375rem;
  border-radius: var(--eos-radius-full);
}

.eos-status-dot.status-active     { background-color: var(--eos-status-active); }
.eos-status-dot.status-pending    { background-color: var(--eos-status-pending); }
.eos-status-dot.status-processing { background-color: var(--eos-status-processing); }
.eos-status-dot.status-failed     { background-color: var(--eos-status-failed); }
.eos-status-dot.status-cancelled  { background-color: var(--eos-status-cancelled); }
.eos-status-dot.status-warning    { background-color: var(--eos-status-warning); }
.eos-status-dot.status-reversed   { background-color: var(--eos-status-reversed); }
.eos-status-dot.status-suspended  { background-color: var(--eos-status-suspended); }
.eos-status-dot.status-draft      { background-color: var(--eos-status-draft); }
.eos-status-dot.status-escalated  { background-color: var(--eos-status-escalated); }
.eos-status-dot.status-completed  { background-color: var(--eos-status-completed); }
.eos-status-dot.status-terminated { background-color: var(--eos-status-terminated); }
.eos-status-dot.status-disputed   { background-color: var(--eos-status-disputed); }
.eos-status-dot.status-expired    { background-color: var(--eos-status-expired); }

/* ── Section Labels ── */

.section-label {
  font-size: var(--eos-font-size-h6);
  font-weight: var(--eos-font-weight-semibold);
  color: var(--eos-text-secondary);
  margin-bottom: var(--eos-space-sm);
  display: flex;
  align-items: center;
}

/* ── Scrollbar (dark theme friendly) ── */

.eos-sidebar .nav-scroll::-webkit-scrollbar,
.eos-content::-webkit-scrollbar {
  width: 6px;
}

.eos-sidebar .nav-scroll::-webkit-scrollbar-track,
.eos-content::-webkit-scrollbar-track {
  background: transparent;
}

.eos-sidebar .nav-scroll::-webkit-scrollbar-thumb {
  background: rgba(255, 255, 255, 0.15);
  border-radius: var(--eos-radius-full);
}

.eos-content::-webkit-scrollbar-thumb {
  background: var(--eos-border-default);
  border-radius: var(--eos-radius-full);
}

/* ── Theme Toggle ── */

.theme-toggle {
  background: none;
  border: none;
  color: var(--eos-text-secondary);
  font-size: 1.125rem;
  cursor: pointer;
  padding: var(--eos-space-2xs);
  border-radius: var(--eos-radius-sm);
  transition: color 0.15s;
}

.theme-toggle:hover {
  color: var(--eos-text-primary);
}

/* ── Sidebar Navigation Groups ── */

.eos-sidebar .nav-group-header {
  display: flex;
  align-items: center;
  gap: var(--eos-space-xs);
  padding: var(--eos-space-sm) var(--eos-space-md);
  color: rgba(255, 255, 255, 0.5);
  font-size: var(--eos-font-size-xs);
  font-weight: var(--eos-font-weight-semibold);
  text-transform: uppercase;
  letter-spacing: 0.05em;
  cursor: pointer;
  user-select: none;
  transition: color 0.15s;
}

.eos-sidebar .nav-group-header:hover {
  color: rgba(255, 255, 255, 0.7);
}

.eos-sidebar .nav-group-header i:first-child {
  font-size: 1rem;
  width: 1.25rem;
  text-align: center;
  flex-shrink: 0;
}

.eos-sidebar .nav-chevron {
  margin-left: auto;
  font-size: 0.875rem;
  transition: transform 0.2s;
}

.eos-sidebar .nav-chevron.collapsed {
  transform: rotate(-90deg);
}

.eos-sidebar .nav-group-items {
  overflow: hidden;
  max-height: 100vh;
  transition: max-height 0.25s ease-in-out;
}

.eos-sidebar .nav-group-items.collapsed {
  max-height: 0;
}

.eos-sidebar .nav-group-items .nav-item {
  padding-left: calc(var(--eos-space-md) + 1.25rem + var(--eos-space-xs));
}

/* Active state: left border 3px + background tint */
.eos-sidebar .nav-item.active {
  border-left: 3px solid var(--eos-primary);
  background-color: var(--eos-navy-lighter);
  color: var(--eos-text-sidebar-active);
  font-weight: var(--eos-font-weight-medium);
}

/* ── Loading Skeletons ── */

@keyframes skeleton-pulse {
  0%   { background-color: #e9ecef; }
  50%  { background-color: #f8f9fa; }
  100% { background-color: #e9ecef; }
}

[data-theme="dark"] .skeleton-block,
[data-theme="dark"] .skeleton-row {
  animation-name: skeleton-pulse-dark;
}

@keyframes skeleton-pulse-dark {
  0%   { background-color: #1a2332; }
  50%  { background-color: #1e2d3f; }
  100% { background-color: #1a2332; }
}

.skeleton-container {
  padding: var(--eos-space-md);
}

.skeleton-toolbar {
  display: flex;
  gap: var(--eos-space-sm);
  margin-bottom: var(--eos-space-md);
}

.skeleton-block {
  background-color: #e9ecef;
  border-radius: var(--eos-radius-sm);
  animation: skeleton-pulse 1.5s ease-in-out infinite;
}

.skeleton-table {
  display: flex;
  flex-direction: column;
  gap: var(--eos-space-xs);
}

.skeleton-row {
  height: 40px;
  background-color: #e9ecef;
  border-radius: var(--eos-radius-sm);
  animation: skeleton-pulse 1.5s ease-in-out infinite;
}

.skeleton-row.skeleton-header {
  height: 44px;
  opacity: 0.7;
}

.skeleton-kpi-row {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
  gap: var(--eos-space-md);
}

.skeleton-kpi-card {
  background-color: var(--eos-surface-card);
  border: var(--eos-border-width-thin) solid var(--eos-border-default);
  border-radius: var(--eos-radius-md);
  padding: var(--eos-space-md);
}

/* ── Refreshing Overlay ── */

[data-load-state] {
  position: relative;
}

[data-load-state="refreshing"]::after {
  content: '';
  position: absolute;
  inset: 0;
  background: rgba(255, 255, 255, 0.6);
  display: flex;
  align-items: center;
  justify-content: center;
  z-index: 10;
  border-radius: inherit;
}

[data-theme="dark"] [data-load-state="refreshing"]::after {
  background: rgba(35, 35, 51, 0.6);
}

/* ── Error State ── */

.section-error {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  padding: var(--eos-space-2xl) var(--eos-space-md);
  color: var(--eos-text-secondary);
  text-align: center;
}

.section-error i {
  font-size: 2.5rem;
  margin-bottom: var(--eos-space-sm);
  color: var(--eos-danger);
}

.section-error p {
  margin-bottom: var(--eos-space-md);
}

/* ── Empty State ── */

.section-empty {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  padding: var(--eos-space-2xl) var(--eos-space-md);
  color: var(--eos-text-secondary);
  text-align: center;
}

.section-empty i {
  font-size: 2.5rem;
  margin-bottom: var(--eos-space-sm);
  color: var(--eos-text-tertiary);
}

.section-empty p {
  margin-bottom: var(--eos-space-md);
}

/* ── Stale Badge ── */

.stale-badge {
  display: inline-flex;
  align-items: center;
  gap: var(--eos-space-2xs);
  font-size: var(--eos-font-size-xs);
  padding: var(--eos-space-3xs) var(--eos-space-xs);
  border-radius: var(--eos-radius-full);
  font-weight: var(--eos-font-weight-medium);
}

.stale-badge.stale-green {
  color: var(--eos-success);
  background-color: var(--eos-success-light);
}

.stale-badge.stale-grey {
  color: var(--eos-text-secondary);
  background-color: var(--eos-secondary-light);
}

.stale-badge.stale-amber {
  color: var(--eos-warning);
  background-color: var(--eos-warning-light);
}

.stale-badge.stale-red {
  color: var(--eos-danger);
  background-color: var(--eos-danger-light);
}

/* ── Toast Container ── */

.eos-toast-container {
  position: fixed;
  top: 20px;
  right: 20px;
  z-index: 9999;
  display: flex;
  flex-direction: column;
  gap: var(--eos-space-xs);
  max-width: 420px;
  pointer-events: none;
}

.eos-toast {
  display: flex;
  align-items: flex-start;
  gap: var(--eos-space-xs);
  padding: var(--eos-space-sm) var(--eos-space-md);
  border-radius: var(--eos-radius-md);
  box-shadow: var(--eos-shadow-toast);
  font-size: var(--eos-font-size-sm);
  color: var(--eos-text-primary);
  background-color: var(--eos-surface-card);
  border-left: 4px solid transparent;
  pointer-events: auto;
}

.eos-toast i:first-child {
  font-size: 1.125rem;
  flex-shrink: 0;
  margin-top: 1px;
}

.eos-toast-message {
  flex: 1;
  line-height: var(--eos-line-height-normal);
}

.eos-toast-correlation {
  font-size: var(--eos-font-size-xs);
  color: var(--eos-text-tertiary);
  white-space: nowrap;
  margin-top: 1px;
}

.eos-toast-dismiss {
  background: none;
  border: none;
  color: var(--eos-text-tertiary);
  cursor: pointer;
  padding: 0;
  font-size: 1rem;
  flex-shrink: 0;
}

.eos-toast-dismiss:hover {
  color: var(--eos-text-primary);
}

.eos-toast--success {
  border-left-color: var(--eos-success);
}

.eos-toast--success i:first-child {
  color: var(--eos-success);
}

.eos-toast--info {
  border-left-color: var(--eos-info);
}

.eos-toast--info i:first-child {
  color: var(--eos-info);
}

.eos-toast--warning {
  border-left-color: var(--eos-warning);
}

.eos-toast--warning i:first-child {
  color: var(--eos-warning);
}

.eos-toast--error {
  border-left-color: var(--eos-danger);
}

.eos-toast--error i:first-child {
  color: var(--eos-danger);
}

/* ── Confirm Dialog ── */

.eos-confirm-dialog__body {
  display: flex;
  flex-direction: column;
  align-items: center;
  padding: var(--eos-space-md) var(--eos-space-md) var(--eos-space-sm);
  text-align: center;
}

.eos-confirm-dialog__icon i {
  font-size: 2.5rem;
  margin-bottom: var(--eos-space-sm);
}

.eos-confirm-dialog__icon--default {
  color: var(--eos-info);
}

.eos-confirm-dialog__icon--danger {
  color: var(--eos-danger);
}

.eos-confirm-dialog__message {
  color: var(--eos-text-primary);
  font-size: var(--eos-font-size-base);
  line-height: var(--eos-line-height-normal);
  margin: 0;
}

.eos-confirm-dialog__actions {
  display: flex;
  justify-content: flex-end;
  gap: var(--eos-space-xs);
  padding: var(--eos-space-sm) var(--eos-space-md) var(--eos-space-md);
  border-top: var(--eos-border-width-thin) solid var(--eos-border-subtle);
}

.eos-btn-danger {
  background-color: var(--eos-danger);
  color: var(--eos-text-inverse);
  border-color: var(--eos-danger);
}

.eos-btn-danger:hover {
  background-color: var(--eos-danger-hover);
  border-color: var(--eos-danger-hover);
}

/* ── Maker-Checker Banner ── */

.eos-mc-banner {
  display: flex;
  align-items: center;
  gap: var(--eos-space-sm);
  padding: var(--eos-space-sm) var(--eos-space-md);
  border-radius: var(--eos-radius-md);
  border-left: 4px solid transparent;
  margin-bottom: var(--eos-space-md);
  font-size: var(--eos-font-size-sm);
}

.eos-mc-banner--pending {
  background-color: var(--eos-warning-light);
  border-left-color: var(--eos-warning);
  color: var(--eos-text-primary);
}

.eos-mc-banner--approved {
  background-color: var(--eos-success-light);
  border-left-color: var(--eos-success);
  color: var(--eos-text-primary);
}

.eos-mc-banner--rejected {
  background-color: var(--eos-danger-light);
  border-left-color: var(--eos-danger);
  color: var(--eos-text-primary);
}

.eos-mc-banner--expired {
  background-color: var(--eos-secondary-light);
  border-left-color: var(--eos-secondary);
  color: var(--eos-text-primary);
}

.eos-mc-banner__icon i {
  font-size: 1.25rem;
  flex-shrink: 0;
}

.eos-mc-banner--pending .eos-mc-banner__icon i  { color: var(--eos-warning); }
.eos-mc-banner--approved .eos-mc-banner__icon i { color: var(--eos-success); }
.eos-mc-banner--rejected .eos-mc-banner__icon i { color: var(--eos-danger); }
.eos-mc-banner--expired .eos-mc-banner__icon i  { color: var(--eos-secondary); }

.eos-mc-banner__content {
  display: flex;
  flex-direction: column;
  flex: 1;
  min-width: 0;
}

.eos-mc-banner__title {
  font-weight: var(--eos-font-weight-semibold);
}

.eos-mc-banner__detail {
  color: var(--eos-text-secondary);
  font-size: var(--eos-font-size-xs);
}

.eos-mc-banner__meta {
  display: flex;
  flex-direction: column;
  align-items: flex-end;
  font-size: var(--eos-font-size-xs);
  color: var(--eos-text-secondary);
  flex-shrink: 0;
}

/* ── Loading Spinner ── */

.eos-spinner-wrapper {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: var(--eos-space-xs);
  padding: var(--eos-space-md);
}

.eos-spinner__circle {
  width: 1.5rem;
  height: 1.5rem;
  border: 3px solid var(--eos-border-default);
  border-top-color: var(--eos-primary);
  border-radius: var(--eos-radius-full);
  animation: eos-spin 0.75s linear infinite;
}

@keyframes eos-spin {
  to { transform: rotate(360deg); }
}

.eos-spinner__text {
  color: var(--eos-text-secondary);
  font-size: var(--eos-font-size-sm);
}

/* ── Form Validation ── */

.eos-validation-summary {
  background-color: var(--eos-danger-light);
  border: var(--eos-border-width-thin) solid var(--eos-danger);
  border-radius: var(--eos-radius-md);
  padding: var(--eos-space-sm) var(--eos-space-md);
  margin-bottom: var(--eos-space-md);
}

.eos-validation-summary__header {
  display: flex;
  align-items: center;
  gap: var(--eos-space-2xs);
  font-weight: var(--eos-font-weight-semibold);
  font-size: var(--eos-font-size-sm);
  color: var(--eos-danger);
  margin-bottom: var(--eos-space-2xs);
}

.eos-validation-summary__header i {
  font-size: 1.125rem;
}

.eos-validation-summary__list {
  margin: 0;
  padding-left: var(--eos-space-lg);
  font-size: var(--eos-font-size-sm);
  color: var(--eos-text-primary);
}

.eos-validation-summary__list li {
  margin-bottom: var(--eos-space-3xs);
}

.eos-field--invalid {
  border-color: var(--eos-danger) !important;
}

.eos-field-error {
  display: block;
  color: var(--eos-danger);
  font-size: var(--eos-font-size-xs);
  margin-top: var(--eos-space-3xs);
}

/* ── Hamburger Toggle ── */

.eos-hamburger {
  display: none;
  background: none;
  border: none;
  color: var(--eos-text-secondary);
  font-size: 1.25rem;
  cursor: pointer;
  padding: var(--eos-space-2xs);
  border-radius: var(--eos-radius-sm);
  transition: color 0.15s;
  margin-right: var(--eos-space-xs);
}

.eos-hamburger:hover {
  color: var(--eos-text-primary);
}

/* ── Sidebar Overlay Backdrop ── */

.eos-sidebar-backdrop {
  display: none;
  position: fixed;
  inset: 0;
  background-color: var(--eos-surface-overlay);
  z-index: 99;
}

.eos-sidebar-backdrop.active {
  display: block;
}

/* ── Sidebar Collapsed (icon-only) ── */

.eos-sidebar.sidebar-collapsed {
  width: 60px;
  min-width: 60px;
}

.eos-sidebar.sidebar-collapsed .logo-text,
.eos-sidebar.sidebar-collapsed .nav-group-label,
.eos-sidebar.sidebar-collapsed .nav-group-header span,
.eos-sidebar.sidebar-collapsed .nav-badge,
.eos-sidebar.sidebar-collapsed .nav-chevron,
.eos-sidebar.sidebar-collapsed .user-name,
.eos-sidebar.sidebar-collapsed .user-role,
.eos-sidebar.sidebar-collapsed .logout-btn {
  display: none;
}

.eos-sidebar.sidebar-collapsed .nav-item {
  justify-content: center;
  padding: var(--eos-space-sm) 0;
}

.eos-sidebar.sidebar-collapsed .nav-group-header {
  justify-content: center;
  padding: var(--eos-space-sm) 0;
}

.eos-sidebar.sidebar-collapsed .nav-group-header i:first-child {
  margin: 0;
}

.eos-sidebar.sidebar-collapsed .nav-group-items .nav-item {
  padding-left: 0;
}

.eos-sidebar.sidebar-collapsed .sidebar-footer {
  justify-content: center;
  padding: var(--eos-space-sm);
}

.eos-sidebar.sidebar-collapsed .logo-area {
  justify-content: center;
  padding: var(--eos-space-md) var(--eos-space-xs);
}

/* Expand sidebar on hover in collapsed state */
.eos-sidebar.sidebar-collapsed:hover {
  width: var(--eos-sidebar-width);
  min-width: var(--eos-sidebar-width);
  position: absolute;
  height: 100vh;
  z-index: 101;
}

.eos-sidebar.sidebar-collapsed:hover .logo-text,
.eos-sidebar.sidebar-collapsed:hover .nav-group-label,
.eos-sidebar.sidebar-collapsed:hover .nav-group-header span,
.eos-sidebar.sidebar-collapsed:hover .nav-badge,
.eos-sidebar.sidebar-collapsed:hover .nav-chevron,
.eos-sidebar.sidebar-collapsed:hover .user-name,
.eos-sidebar.sidebar-collapsed:hover .user-role,
.eos-sidebar.sidebar-collapsed:hover .logout-btn {
  display: unset;
}

.eos-sidebar.sidebar-collapsed:hover .nav-item {
  justify-content: flex-start;
  padding: var(--eos-space-sm) var(--eos-space-md);
}

.eos-sidebar.sidebar-collapsed:hover .nav-group-header {
  justify-content: flex-start;
  padding: var(--eos-space-sm) var(--eos-space-md);
}

.eos-sidebar.sidebar-collapsed:hover .nav-group-items .nav-item {
  padding-left: calc(var(--eos-space-md) + 1.25rem + var(--eos-space-xs));
}

.eos-sidebar.sidebar-collapsed:hover .sidebar-footer {
  justify-content: flex-start;
  padding: var(--eos-space-sm) var(--eos-space-md);
}

.eos-sidebar.sidebar-collapsed:hover .logo-area {
  justify-content: flex-start;
  padding: var(--eos-space-md);
}

/* ── Responsive Breakpoints ── */

/* 1024-1279px: sidebar expanded, hide low-priority grid columns */
@media (min-width: 1024px) and (max-width: 1279px) {
  .eos-grid-col-low-priority {
    display: none;
  }

  .eos-kpi-grid {
    grid-template-columns: repeat(3, 1fr);
  }
}

/* 768-1023px: sidebar collapsed icon-only 60px */
@media (min-width: 768px) and (max-width: 1023px) {
  .eos-sidebar {
    width: 60px;
    min-width: 60px;
  }

  .eos-sidebar .logo-text,
  .eos-sidebar .nav-group-label,
  .eos-sidebar .nav-group-header span,
  .eos-sidebar .nav-badge,
  .eos-sidebar .nav-chevron,
  .eos-sidebar .user-name,
  .eos-sidebar .user-role,
  .eos-sidebar .logout-btn {
    display: none;
  }

  .eos-sidebar .nav-item {
    justify-content: center;
    padding: var(--eos-space-sm) 0;
  }

  .eos-sidebar .nav-group-header {
    justify-content: center;
    padding: var(--eos-space-sm) 0;
  }

  .eos-sidebar .nav-group-items .nav-item {
    padding-left: 0;
  }

  .eos-sidebar .sidebar-footer {
    justify-content: center;
    padding: var(--eos-space-sm);
  }

  .eos-sidebar .logo-area {
    justify-content: center;
    padding: var(--eos-space-md) var(--eos-space-xs);
  }

  /* Expand sidebar on hover at tablet breakpoint */
  .eos-sidebar:hover {
    width: var(--eos-sidebar-width);
    min-width: var(--eos-sidebar-width);
    position: absolute;
    height: 100vh;
    z-index: 101;
  }

  .eos-sidebar:hover .logo-text,
  .eos-sidebar:hover .nav-group-label,
  .eos-sidebar:hover .nav-group-header span,
  .eos-sidebar:hover .nav-badge,
  .eos-sidebar:hover .nav-chevron,
  .eos-sidebar:hover .user-name,
  .eos-sidebar:hover .user-role,
  .eos-sidebar:hover .logout-btn {
    display: unset;
  }

  .eos-sidebar:hover .nav-item {
    justify-content: flex-start;
    padding: var(--eos-space-sm) var(--eos-space-md);
  }

  .eos-sidebar:hover .nav-group-header {
    justify-content: flex-start;
    padding: var(--eos-space-sm) var(--eos-space-md);
  }

  .eos-sidebar:hover .nav-group-items .nav-item {
    padding-left: calc(var(--eos-space-md) + 1.25rem + var(--eos-space-xs));
  }

  .eos-sidebar:hover .sidebar-footer {
    justify-content: flex-start;
    padding: var(--eos-space-sm) var(--eos-space-md);
  }

  .eos-sidebar:hover .logo-area {
    justify-content: flex-start;
    padding: var(--eos-space-md);
  }

  .eos-grid-col-low-priority,
  .eos-grid-col-medium-priority {
    display: none;
  }

  .eos-kpi-grid {
    grid-template-columns: repeat(2, 1fr);
  }
}

/* <768px: sidebar hidden, hamburger toggle, single-column */
@media (max-width: 767px) {
  .eos-hamburger {
    display: inline-flex;
  }

  .eos-sidebar {
    position: fixed;
    left: -250px;
    top: 0;
    width: var(--eos-sidebar-width);
    min-width: var(--eos-sidebar-width);
    height: 100vh;
    z-index: 100;
    transition: left 0.25s ease;
  }

  .eos-sidebar.sidebar-open {
    left: 0;
  }

  .eos-grid-col-low-priority,
  .eos-grid-col-medium-priority {
    display: none;
  }

  .eos-kpi-grid {
    grid-template-columns: 1fr;
  }

  .eos-content {
    padding: var(--eos-space-md);
  }

  .eos-header {
    padding: 0 var(--eos-space-md);
  }
}

/* ── KPI Card Grid ── */

.eos-kpi-grid {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: var(--eos-space-md);
}

/* ── KPI Card ── */

/* ── KPI Card (redesigned: icon-circle + content horizontal) ── */
.kpi-card {
  background-color: var(--eos-surface-card);
  border: var(--eos-border-width-thin) solid var(--eos-border-default);
  border-radius: var(--eos-radius-md);
  box-shadow: var(--eos-shadow-card);
  padding: var(--eos-space-md);
  display: flex;
  flex-direction: row;
  align-items: flex-start;
  gap: var(--eos-space-sm);
  transition: box-shadow 0.15s, border-color 0.15s;
}

.kpi-card:hover {
  box-shadow: var(--eos-shadow-dropdown);
  border-color: var(--eos-border-strong);
}

.kpi-card--stale {
  border-color: var(--eos-warning);
}

/* Icon circle (left side) */
.kpi-card__icon-circle {
  width: var(--eos-kpi-icon-size);
  height: var(--eos-kpi-icon-size);
  border-radius: var(--eos-kpi-icon-radius);
  display: flex;
  align-items: center;
  justify-content: center;
  flex-shrink: 0;
  font-size: 1.25rem;
}

.bg-primary-light { background: var(--eos-kpi-icon-bg-primary); color: var(--eos-primary); }
.bg-success-light { background: var(--eos-kpi-icon-bg-success); color: var(--eos-success); }
.bg-danger-light  { background: var(--eos-kpi-icon-bg-danger);  color: var(--eos-danger); }
.bg-warning-light { background: var(--eos-kpi-icon-bg-warning); color: var(--eos-warning); }
.bg-info-light    { background: var(--eos-kpi-icon-bg-info);    color: var(--eos-info); }

/* Content (right side: value + label + trend + footer) */
.kpi-card__content {
  flex: 1;
  min-width: 0;
  display: flex;
  flex-direction: column;
  gap: var(--eos-space-3xs);
}

.kpi-card__value {
  font-family: var(--eos-font-mono);
  font-size: 1.5rem;
  font-weight: var(--eos-font-weight-semibold);
  color: var(--eos-text-primary);
  line-height: var(--eos-line-height-tight);
}

.kpi-card__value--empty {
  color: var(--eos-text-tertiary);
}

.kpi-card__label {
  font-size: var(--eos-font-size-xs);
  color: var(--eos-text-secondary);
  display: flex;
  align-items: center;
  gap: var(--eos-space-3xs);
}

.kpi-card__stale-dot {
  width: 0.5rem;
  height: 0.5rem;
  border-radius: var(--eos-radius-full);
  background-color: var(--eos-warning);
  flex-shrink: 0;
}

/* Trend indicator */
.kpi-card__trend {
  display: flex;
  align-items: center;
  gap: var(--eos-space-3xs);
  font-size: var(--eos-font-size-sm);
  font-weight: var(--eos-font-weight-medium);
}

.kpi-card__trend--up    { color: var(--eos-status-active); }
.kpi-card__trend--down  { color: var(--eos-status-failed); }
.kpi-card__trend--neutral { color: var(--eos-text-tertiary); }

.kpi-card__trend-icon { font-size: 0.875rem; }
.kpi-card__trend-value { }

/* Footer */
.kpi-card__footer {
  margin-top: var(--eos-space-3xs);
}

.kpi-card__footer-text {
  font-size: var(--eos-font-size-xs);
  color: var(--eos-text-tertiary);
}

/* Legacy compat: old class names map to new */
.kpi-card__header { display: flex; align-items: center; gap: var(--eos-space-xs); }
.kpi-card__icon { font-size: 1.125rem; color: var(--eos-primary); flex-shrink: 0; }
.kpi-card__name { font-size: var(--eos-font-size-sm); color: var(--eos-text-secondary); flex: 1; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.kpi-card__body { flex: 1; display: flex; flex-direction: column; justify-content: center; min-height: 2.5rem; }
.kpi-card__timestamp { font-size: var(--eos-font-size-xs); color: var(--eos-text-tertiary); }

/* ── KPI Special Renderers ── */

/* table_mini: 5-row mini table */
.kpi-card__table-mini table {
  width: 100%;
  border-collapse: collapse;
}

.kpi-card__table-mini tr:not(:last-child) {
  border-bottom: var(--eos-border-width-thin) solid var(--eos-border-subtle);
}

.kpi-card__table-mini td {
  padding: var(--eos-space-3xs) 0;
  font-size: var(--eos-font-size-xs);
}

.kpi-card__table-label {
  color: var(--eos-text-secondary);
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  max-width: 0;
  width: 60%;
}

.kpi-card__table-value {
  color: var(--eos-text-primary);
  font-family: var(--eos-font-mono);
  font-weight: var(--eos-font-weight-medium);
  text-align: right;
  white-space: nowrap;
}

/* badge_set: row of coloured badges */
.kpi-card__badge-set {
  display: flex;
  flex-wrap: wrap;
  gap: var(--eos-space-2xs);
}

/* date_currency: date on first line, amount on second */
.kpi-card__date-currency {
  display: flex;
  flex-direction: column;
  gap: var(--eos-space-3xs);
}

.kpi-card__date {
  font-size: var(--eos-font-size-sm);
  color: var(--eos-text-secondary);
}

.kpi-card__currency {
  font-family: var(--eos-font-mono);
  font-size: 1.75rem;
  font-weight: var(--eos-font-weight-semibold);
  color: var(--eos-text-primary);
  line-height: var(--eos-line-height-tight);
}

/* ── KPI Card Inline Children (page-level cards) ── */

.kpi-card .kpi-icon {
  width: var(--eos-kpi-icon-size);
  height: var(--eos-kpi-icon-size);
  border-radius: var(--eos-kpi-icon-radius);
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 1.25rem;
  flex-shrink: 0;
  margin-bottom: var(--eos-space-xs);
}

.kpi-card .kpi-label {
  font-size: var(--eos-font-size-sm);
  font-weight: var(--eos-font-weight-medium);
  color: var(--eos-text-secondary);
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.kpi-card .kpi-value {
  font-family: var(--eos-font-mono);
  font-size: 1.5rem;
  font-weight: var(--eos-font-weight-bold);
  color: var(--eos-text-primary);
  line-height: 1.1;
}

.kpi-card .kpi-value .cur {
  font-size: var(--eos-font-size-xs);
  color: var(--eos-text-secondary);
  font-weight: 400;
  vertical-align: super;
}

.kpi-card .kpi-footer {
  font-size: 0.5625rem;
  color: var(--eos-text-tertiary);
  margin-top: var(--eos-space-xs);
}

/* ── Dashboard KPI Cards — vertical stack with icon bar (mockup pattern) ── */
/* When .eos-card wraps .kpi-card, override horizontal layout to vertical */

.eos-card.kpi-card {
  display: block;
  padding: var(--eos-space-md) var(--eos-space-lg);
}

.eos-card.kpi-card .kpi-icon {
  width: auto;
  height: auto;
  display: block;
  padding: var(--eos-space-xs) var(--eos-space-sm);
  border-radius: var(--eos-kpi-icon-radius);
  font-size: 1.125rem;
  margin-bottom: 0.375rem;
  flex-shrink: unset;
}

.eos-card.kpi-card .kpi-label {
  margin-bottom: 0.25rem;
}

.eos-card.kpi-card .kpi-value {
  font-weight: 700;
}

.eos-card.kpi-card .kpi-footer {
  margin-top: 0.375rem;
}

.eos-card.kpi-card .kpi-trend {
  font-size: var(--eos-font-size-xs);
  font-weight: 600;
  margin-top: 0.25rem;
  display: inline-flex;
  align-items: center;
  gap: 0.125rem;
}

.eos-card.kpi-card .kpi-trend.up { color: var(--eos-success); }
.eos-card.kpi-card .kpi-trend.down { color: var(--eos-danger); }

/* ── Utility ── */

.text-link { color: var(--eos-text-link); }
.text-secondary { color: var(--eos-text-secondary); }
.fs-xs { font-size: var(--eos-font-size-xs); }

/* ── Modal ── */

.eos-modal-overlay {
  position: fixed;
  inset: 0;
  z-index: 1050;
  background: rgba(0, 0, 0, 0.55);
  display: flex;
  align-items: center;
  justify-content: center;
}

.eos-modal {
  background: var(--eos-surface-card);
  border-radius: var(--eos-radius-lg);
  box-shadow: var(--eos-shadow-modal);
  width: 100%;
  max-height: 90vh;
  overflow-y: auto;
}

.eos-modal-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: var(--eos-space-md) var(--eos-space-lg);
  border-bottom: 1px solid var(--eos-border);
  color: var(--eos-text-primary);
}

.eos-modal-body {
  padding: var(--eos-space-lg);
}

.eos-modal-footer {
  padding: var(--eos-space-sm) var(--eos-space-lg) var(--eos-space-md);
  border-top: 1px solid var(--eos-border);
}

/* ═══════════════════════════════════════════════════════════════
   Design System Components — from eos-unified.css mockup spec
   ═══════════════════════════════════════════════════════════════ */

/* ── Tables ── */
.eos-table { width: 100%; font-size: var(--eos-font-size-sm); border-collapse: collapse }
.eos-table th { font-size: var(--eos-font-size-xs); font-weight: 600; color: var(--eos-text-tertiary); text-transform: uppercase; letter-spacing: 0.03em; padding: var(--eos-space-xs) var(--eos-space-sm); border-bottom: 1px solid var(--eos-border-default, var(--eos-border)); text-align: left }
.eos-table td { padding: var(--eos-space-xs) var(--eos-space-sm); border-bottom: 1px solid var(--eos-border-subtle, var(--eos-border)); vertical-align: middle }
.eos-table tr:hover { background: var(--eos-surface-hover) }
.eos-table .mono { font-family: var(--eos-font-mono) }
.eos-table .right { text-align: right }
.eos-table .row-failed { background: var(--eos-danger-light) }
.eos-table .row-disputed { background: var(--eos-purple-light, rgba(171,71,188,0.15)) }

/* Mini tables (KPI card) */
.mini-table { width: 100%; font-size: var(--eos-font-size-xs) }
.mini-table td { padding: 0.25rem 0.375rem; border-bottom: 1px solid var(--eos-border-subtle, var(--eos-border)) }
.mini-table .rank { color: var(--eos-text-tertiary); width: 1.5rem }
.mini-table .val { text-align: right; font-family: var(--eos-font-mono); font-weight: 600 }

/* ── Badges ── */
.eos-badge { display: inline-flex; align-items: center; gap: 0.25rem; padding: 0.1875rem 0.625rem; border-radius: var(--eos-radius-full, 9999px); font-size: var(--eos-font-size-xs); font-weight: 600 }
.eos-badge--success { background: var(--eos-success); color: var(--eos-text-inverse, #0f1724) }
.eos-badge--warning { background: var(--eos-warning); color: var(--eos-text-inverse, #0f1724) }
.eos-badge--danger { background: var(--eos-danger); color: #fff }
.eos-badge--info { background: var(--eos-info); color: var(--eos-text-inverse, #0f1724) }
.eos-badge--muted { background: var(--eos-status-cancelled, #78909c); color: #fff }
.eos-badge--purple { background: var(--eos-purple, #ab47bc); color: #fff }
.eos-badge--outline { border: 1px solid var(--eos-border-default, var(--eos-border)); color: var(--eos-text-secondary); background: transparent }
.eos-badge--sm { font-size: 0.5625rem; padding: 0.125rem 0.375rem }
.eos-badge--secondary { background: var(--eos-text-tertiary); color: #fff }

/* ── Tabs ── */
.eos-tabs { display: flex; gap: 0; border-bottom: 1px solid var(--eos-border-default, var(--eos-border)); margin-bottom: var(--eos-space-lg) }
.eos-tab { padding: var(--eos-space-sm) var(--eos-space-lg); font-size: var(--eos-font-size-sm); font-weight: 500; color: var(--eos-text-secondary); cursor: pointer; border-bottom: 2px solid transparent; transition: all 0.15s; background: none; border-top: none; border-left: none; border-right: none }
.eos-tab:hover { color: var(--eos-text-primary) }
.eos-tab.active { color: var(--eos-primary); border-bottom-color: var(--eos-primary); font-weight: 600 }
.eos-tab .tab-badge, .tab-btn .tab-badge, .tab-badge { margin-left: 0.375rem; background: var(--eos-danger); color: #fff; font-size: 0.5625rem; font-weight: 700; padding: 0.0625rem 0.375rem; border-radius: var(--eos-radius-full, 9999px); min-width: 16px; text-align: center; display: inline-block }

/* Tab buttons (alternate tab style) */
.tab-btn { padding: var(--eos-space-xs) var(--eos-space-md); font-size: var(--eos-font-size-sm); font-weight: 500; color: var(--eos-text-secondary); cursor: pointer; background: none; border: none; border-bottom: 2px solid transparent; transition: all 0.15s }
.tab-btn:hover { color: var(--eos-text-primary) }
.tab-btn.active { color: var(--eos-primary); border-bottom-color: var(--eos-primary); font-weight: 600 }

/* Tab panels */
.tab-panel { display: none }
.tab-panel.active { display: block }

/* ── Filter Bar ── */
.filter-bar { display: flex; flex-wrap: wrap; gap: var(--eos-space-xs); margin-bottom: var(--eos-space-md); align-items: center }
.filter-input { background: var(--eos-surface-card); border: 1px solid var(--eos-border-default, var(--eos-border)); color: var(--eos-text-primary); border-radius: var(--eos-radius-sm, 0.25rem); padding: 0.375rem 0.625rem; font-size: var(--eos-font-size-sm); font-family: var(--eos-font-sans) }
.filter-input:focus { outline: none; border-color: var(--eos-border-focus, var(--eos-primary)) }
.filter-input::placeholder { color: var(--eos-text-tertiary) }
.filter-select { background: var(--eos-surface-card); border: 1px solid var(--eos-border-default, var(--eos-border)); color: var(--eos-text-primary); border-radius: var(--eos-radius-sm, 0.25rem); padding: 0.375rem 0.625rem; font-size: var(--eos-font-size-sm); font-family: var(--eos-font-sans); min-width: 120px }
.filter-select:focus { outline: none; border-color: var(--eos-border-focus, var(--eos-primary)) }

/* ── Pagination ── */
.eos-pagination { display: flex; align-items: center; justify-content: space-between; padding: var(--eos-space-sm) 0; font-size: var(--eos-font-size-xs); color: var(--eos-text-secondary) }
.eos-pagination select { background: var(--eos-surface-card); border: 1px solid var(--eos-border-default, var(--eos-border)); color: var(--eos-text-primary); border-radius: var(--eos-radius-sm, 0.25rem); padding: 0.25rem 0.5rem; font-size: var(--eos-font-size-xs) }
.page-btns { display: flex; gap: 0.25rem }
.page-btn { width: 28px; height: 28px; border-radius: var(--eos-radius-sm, 0.25rem); border: 1px solid var(--eos-border-default, var(--eos-border)); background: transparent; color: var(--eos-text-secondary); font-size: var(--eos-font-size-xs); cursor: pointer; display: flex; align-items: center; justify-content: center }
.page-btn:hover { background: var(--eos-surface-hover) }
.page-btn.active { background: var(--eos-primary); color: var(--eos-text-inverse, #0f1724); border-color: var(--eos-primary) }
.page-btn:disabled { opacity: 0.3; cursor: not-allowed }

/* ── Timeline ── */
.timeline { position: relative; padding-left: 1.5rem }
.timeline::before { content: ''; position: absolute; left: 0.375rem; top: 0; bottom: 0; width: 2px; background: var(--eos-border-default, var(--eos-border)) }
.timeline-item { position: relative; padding-bottom: var(--eos-space-md) }
.timeline-dot { position: absolute; left: -1.125rem; top: 0.25rem; width: 10px; height: 10px; border-radius: 50%; border: 2px solid var(--eos-border-default, var(--eos-border)) }
.timeline-dot.green { border-color: var(--eos-success); background: var(--eos-success) }
.timeline-dot.blue { border-color: var(--eos-info); background: var(--eos-info) }
.timeline-dot.red { border-color: var(--eos-danger); background: var(--eos-danger) }
.timeline-dot.amber { border-color: var(--eos-warning); background: var(--eos-warning) }
.timeline-time { font-size: 0.625rem; color: var(--eos-text-tertiary) }
.timeline-text { font-size: var(--eos-font-size-sm); color: var(--eos-text-primary); margin-top: 0.125rem }

/* ── Risk Gauge ── */
.risk-gauge { display: inline-flex; align-items: center; gap: 0.375rem }
.risk-bar { width: 60px; height: 6px; border-radius: 3px; background: var(--eos-border-default, var(--eos-border)); position: relative; overflow: hidden }
.risk-fill { height: 100%; border-radius: 3px }
.risk-0-25 { background: var(--eos-success) }
.risk-26-50 { background: #8bc34a }
.risk-51-75 { background: var(--eos-warning) }
.risk-76-100 { background: var(--eos-danger) }

/* ── Progress Bar ── */
.eos-progress { height: 6px; background: var(--eos-border-default, var(--eos-border)); border-radius: 3px; overflow: hidden }
.eos-progress-bar { height: 100%; border-radius: 3px; transition: width 0.3s }

/* ── Status Dot ── */
.status-dot { width: 8px; height: 8px; border-radius: 50%; display: inline-block; margin-right: 0.375rem }

/* ── Channel / Badge Sets ── */
.channel-row, .badge-set { display: flex; flex-wrap: wrap; gap: 0.25rem; margin-top: 0.375rem }
.ch, .bs { font-size: 0.5625rem; font-weight: 600; padding: 0.125rem 0.375rem; border-radius: var(--eos-radius-full, 9999px) }
.ch-g, .bs-g { background: var(--eos-success-light); color: var(--eos-success) }
.ch-a, .bs-a { background: var(--eos-warning-light); color: var(--eos-warning) }
.ch-r, .bs-r { background: var(--eos-danger-light); color: var(--eos-danger) }
.bs-gf { background: var(--eos-success); color: var(--eos-text-inverse, #0f1724) }
.bs-af { background: var(--eos-warning); color: var(--eos-text-inverse, #0f1724) }
.bs-rf { background: var(--eos-danger); color: #fff }
.bs-if { background: var(--eos-info); color: var(--eos-text-inverse, #0f1724) }

/* ── Card Variants ── */
.eos-card-header { padding: var(--eos-space-md) var(--eos-space-lg); border-bottom: 1px solid var(--eos-border-subtle, var(--eos-border)); display: flex; align-items: center; justify-content: space-between }
.eos-card-body { padding: var(--eos-space-md) var(--eos-space-lg) }

/* ── Section Labels ── */
.section-label { font-size: var(--eos-font-size-xs); font-weight: 700; text-transform: uppercase; letter-spacing: 0.08em; color: var(--eos-text-tertiary); margin-bottom: 0.75rem; margin-top: 0.5rem; padding-bottom: 0.375rem; border-bottom: 1px solid var(--eos-border-subtle, var(--eos-border)) }

/* ── Forms ── */
.form-group { margin-bottom: var(--eos-space-md) }
.form-label { display: block; font-size: var(--eos-font-size-xs); font-weight: 600; color: var(--eos-text-secondary); margin-bottom: 0.25rem; text-transform: uppercase; letter-spacing: 0.03em }
.form-hint { font-size: 0.625rem; color: var(--eos-text-tertiary); margin-top: 0.25rem }

/* ── Splitter (master-detail layouts) ── */
.eos-splitter { display: flex; gap: 1px; background: var(--eos-border-subtle, var(--eos-border)) }
.eos-splitter-left { width: 400px; flex-shrink: 0; background: var(--eos-surface-page); overflow-y: auto; max-height: calc(100vh - 120px) }
.eos-splitter-right { flex: 1; background: var(--eos-surface-page); overflow-y: auto; max-height: calc(100vh - 120px); padding: var(--eos-space-lg) }

/* ── Upload Area ── */
.upload-area { border: 2px dashed var(--eos-border-default, var(--eos-border)); border-radius: var(--eos-radius-md, 0.5rem); padding: var(--eos-space-2xl, 3rem); text-align: center; color: var(--eos-text-secondary); cursor: pointer; transition: all 0.15s }
.upload-area:hover { border-color: var(--eos-primary); background: var(--eos-primary-light) }
.upload-area i { font-size: 2rem; margin-bottom: var(--eos-space-sm) }

/* ── KPI Extras ── */
.kpi-title { font-size: 0.625rem; font-weight: 700; text-transform: uppercase; letter-spacing: 0.05em; color: var(--eos-text-secondary); margin-bottom: 0.25rem }
.kpi-trend { font-size: var(--eos-font-size-xs); font-weight: 600; margin-top: 0.25rem; display: inline-flex; align-items: center; gap: 0.125rem }
.kpi-trend.up { color: var(--eos-success) }
.kpi-trend.down { color: var(--eos-danger) }
.kpi-link { font-size: var(--eos-font-size-xs); color: var(--eos-text-link, var(--eos-primary)); text-decoration: none; margin-top: 0.25rem; display: inline-block }
.kpi-link:hover { text-decoration: underline }
.kpi-value .cur { font-size: var(--eos-font-size-xs); color: var(--eos-text-secondary); font-weight: 400; vertical-align: super }
.kpi-value .unit { font-size: 0.875rem; color: var(--eos-text-secondary); font-weight: 400 }

/* ── Login Page ── */
.login-page { min-height: 100vh; display: flex; align-items: center; justify-content: center; background: var(--eos-surface-page) }
.login-card { width: 380px; padding: var(--eos-space-xl, 2rem); background: var(--eos-surface-card); border-radius: var(--eos-radius-lg, 0.75rem); box-shadow: var(--eos-shadow-card); border: 1px solid var(--eos-surface-card-border, var(--eos-border)) }
.login-logo { text-align: center; margin-bottom: var(--eos-space-xl, 2rem) }
.login-logo .logo-icon { width: 48px; height: 48px; border-radius: 12px; background: var(--eos-primary); color: var(--eos-text-inverse, #0f1724); display: inline-flex; align-items: center; justify-content: center; font-size: 1.5rem; font-weight: 700 }
.login-title { text-align: center; font-size: var(--eos-font-size-h4, 1.25rem); font-weight: var(--eos-font-weight-semibold, 600); margin-bottom: var(--eos-space-lg) }
.login-subtitle { text-align: center; font-size: var(--eos-font-size-sm); color: var(--eos-text-secondary); margin-bottom: var(--eos-space-lg) }

/* Password strength */
.pw-strength { display: flex; gap: 3px; margin-top: 0.375rem }
.pw-seg { height: 4px; flex: 1; border-radius: 2px; background: var(--eos-border-default, var(--eos-border)) }
.pw-seg.s1 { background: var(--eos-danger) }
.pw-seg.s2 { background: var(--eos-warning) }
.pw-seg.s3 { background: #8bc34a }
.pw-seg.s4 { background: var(--eos-success) }

/* ── Consumer Portal Brand Override ── */
.brand-override .logo-area .logo-icon { background: var(--brand-primary, var(--eos-primary)) }
.brand-override .nav-item.active { color: var(--brand-primary, var(--eos-primary)); border-left-color: var(--brand-primary, var(--eos-primary)); background: color-mix(in srgb, var(--brand-primary, var(--eos-primary)) 12%, transparent) }
.brand-override .eos-btn-primary { background: var(--brand-primary, var(--eos-primary)) }

/* ── Utilities ── */
.eos-mono { font-family: var(--eos-font-mono) }
.text-link { color: var(--eos-text-link, var(--eos-primary)); text-decoration: none }
.text-link:hover { text-decoration: underline }
.fw-600 { font-weight: 600 }
.fs-xs { font-size: var(--eos-font-size-xs) }
.fs-sm { font-size: var(--eos-font-size-sm) }
