/**
 * WEVEX Design System — foundation v1.
 * Canonical, opt-in components. Legacy selectors are intentionally untouched.
 */

*, *::before, *::after { box-sizing: border-box; }

.wx-ds {
  color: var(--wx-text-primary);
  font-family: var(--wx-font-ui);
  line-height: var(--wx-leading-normal);
}

.wx-sr-only {
  position: absolute !important;
  width: 1px !important;
  height: 1px !important;
  padding: 0 !important;
  margin: -1px !important;
  overflow: hidden !important;
  clip: rect(0, 0, 0, 0) !important;
  white-space: nowrap !important;
  border: 0 !important;
}

:where(.wx-ds, .wx-component-scope) :focus-visible,
:where(.wx-button, .wx-icon-button, .wx-field__control, .wx-tabs__item, .wx-sidebar__link, .wx-dialog__close):focus-visible {
  outline: 3px solid color-mix(in srgb, var(--wx-primary) 42%, transparent);
  outline-offset: 3px;
  box-shadow: var(--wx-focus-ring);
}

/* Shell and page structure */
.wx-app-shell { min-height: 100dvh; background: var(--wx-background); color: var(--wx-text-primary); }
.wx-page { width: min(100%, var(--wx-container-wide)); margin-inline: auto; padding: var(--wx-density-space); }
.wx-page--narrow { max-width: var(--wx-container-narrow); }
.wx-page-header { display: flex; align-items: flex-start; justify-content: space-between; gap: var(--wx-space-4); margin-block-end: var(--wx-density-space); }
.wx-page-header__copy { min-width: 0; }
.wx-page-header__eyebrow { margin: 0 0 var(--wx-space-1); color: var(--wx-primary); font-size: var(--wx-text-xs); font-weight: var(--wx-weight-bold); letter-spacing: .1em; text-transform: uppercase; }
.wx-page-header__title { margin: 0; color: var(--wx-text-primary); font: var(--wx-weight-bold) var(--wx-text-xl)/var(--wx-leading-tight) var(--wx-font-display); letter-spacing: -.025em; }
.wx-page-header__subtitle { margin: var(--wx-space-2) 0 0; color: var(--wx-text-muted); }
.wx-action-bar { display: flex; align-items: center; justify-content: flex-end; flex-wrap: wrap; gap: var(--wx-space-2); }
.wx-sidebar { background: var(--wx-surface); border-inline-end: 1px solid var(--wx-border); }
.wx-sidebar__link { display: flex; align-items: center; min-height: var(--wx-density-control); padding: var(--wx-space-2) var(--wx-space-3); border-radius: var(--wx-radius-md); color: var(--wx-text-secondary); text-decoration: none; }
.wx-sidebar__link[aria-current="page"] { color: var(--wx-primary); background: color-mix(in srgb, var(--wx-primary) 10%, var(--wx-surface)); font-weight: var(--wx-weight-semibold); }

/* Cards */
.wx-card, .wx-metric-card, .wx-operational-card, .wx-catalog-card {
  min-width: 0;
  padding: var(--wx-density-card-padding);
  border: 1px solid var(--wx-border);
  border-radius: var(--wx-radius-lg);
  background: var(--wx-surface);
  color: var(--wx-text-primary);
  box-shadow: var(--wx-shadow-sm);
}
.wx-card--raised { background: var(--wx-surface-raised); box-shadow: var(--wx-shadow); }
.wx-card__header { display: flex; align-items: flex-start; justify-content: space-between; gap: var(--wx-space-3); margin-block-end: var(--wx-space-3); }
.wx-card__title { margin: 0; font-size: var(--wx-text-lg); line-height: var(--wx-leading-snug); }
.wx-card__description { margin: var(--wx-space-1) 0 0; color: var(--wx-text-muted); font-size: var(--wx-text-sm); }
.wx-metric-card { display: grid; align-content: space-between; gap: var(--wx-space-2); min-height: 8rem; }
.wx-metric-card__label { color: var(--wx-text-muted); font-size: var(--wx-text-sm); }
.wx-metric-card__value { font: var(--wx-weight-bold) var(--wx-text-xl)/1 var(--wx-font-display); letter-spacing: -.025em; }
.wx-operational-card { border-inline-start: 4px solid var(--wx-primary); box-shadow: none; }
.wx-catalog-card { display: grid; gap: var(--wx-space-3); overflow: hidden; }

/* Actions */
.wx-button, .wx-icon-button {
  appearance: none;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: var(--wx-space-2);
  min-height: max(var(--wx-touch-min), var(--wx-density-control));
  border: 1px solid var(--wx-border-strong);
  border-radius: var(--wx-radius-md);
  background: var(--wx-surface);
  color: var(--wx-text-primary);
  font: var(--wx-weight-semibold) var(--wx-text-sm)/1 var(--wx-font-ui);
  text-decoration: none;
  cursor: pointer;
  transition: background-color var(--wx-duration-fast) var(--wx-ease), border-color var(--wx-duration-fast) var(--wx-ease), transform var(--wx-duration-fast) var(--wx-ease);
}
.wx-button { padding: var(--wx-space-2) var(--wx-space-4); }
.wx-icon-button { width: max(var(--wx-touch-min), var(--wx-density-control)); padding: 0; }
.wx-button:hover, .wx-icon-button:hover { border-color: var(--wx-primary); }
.wx-button:active, .wx-icon-button:active { transform: translateY(1px); }
.wx-button--primary { border-color: var(--wx-primary); background: var(--wx-primary); color: #fff; }
.wx-button--primary:hover { border-color: var(--wx-primary-hover); background: var(--wx-primary-hover); }
.wx-button--secondary { border-color: var(--wx-border-strong); background: color-mix(in srgb, var(--wx-surface-raised) 88%, var(--wx-primary)); color: var(--wx-text-primary); }
.wx-button--secondary:hover { border-color: color-mix(in srgb, var(--wx-primary) 45%, var(--wx-border-strong)); background: color-mix(in srgb, var(--wx-primary) 8%, var(--wx-surface)); }
.wx-button--danger { border-color: var(--wx-danger); color: var(--wx-danger); }
.wx-button--danger.wx-button--primary,
.wx-button--danger[data-variant="solid"] { background: var(--wx-danger); border-color: var(--wx-danger); color: #fff; }
.wx-button--ghost { border-color: transparent; background: transparent; }
.wx-button[disabled], .wx-icon-button[disabled], .wx-button[aria-disabled="true"] { opacity: .55; cursor: not-allowed; pointer-events: none; transform: none; }
.wx-button[aria-busy="true"] { cursor: progress; position: relative; }
.wx-button[aria-busy="true"]::after {
  content: "";
  width: .875rem;
  height: .875rem;
  margin-inline-start: var(--wx-space-1);
  border: 2px solid currentColor;
  border-right-color: transparent;
  border-radius: 50%;
  animation: wx-button-spin .75s linear infinite;
}
@keyframes wx-button-spin { to { transform: rotate(360deg); } }

/* Form controls */
.wx-field { display: grid; gap: var(--wx-space-2); min-width: 0; }
.wx-field__label { color: var(--wx-text-secondary); font-size: var(--wx-text-sm); font-weight: var(--wx-weight-semibold); }
.wx-field__control, .wx-select, .wx-search {
  width: 100%;
  min-height: max(var(--wx-touch-min), var(--wx-density-control));
  padding: var(--wx-space-2) var(--wx-space-3);
  border: 1px solid var(--wx-border-strong);
  border-radius: var(--wx-radius-md);
  background: var(--wx-surface);
  color: var(--wx-text-primary);
  font: inherit;
}
.wx-field__control::placeholder, .wx-search::placeholder { color: var(--wx-text-muted); }
.wx-field__help { color: var(--wx-text-muted); font-size: var(--wx-text-xs); }
.wx-field[data-state="error"] .wx-field__control { border-color: var(--wx-danger); }
.wx-field[data-state="success"] .wx-field__control { border-color: var(--wx-success); }
.wx-filter-bar { display: grid; grid-template-columns: minmax(12rem, 1fr) repeat(auto-fit, minmax(10rem, auto)); align-items: end; gap: var(--wx-space-3); margin-block-end: var(--wx-density-space); }

/* Tabs, badges and status */
.wx-tabs { display: flex; gap: var(--wx-space-2); overflow-x: auto; padding: var(--wx-space-1); scrollbar-width: thin; }
.wx-tabs__item { flex: 0 0 auto; min-height: var(--wx-touch-min); padding: var(--wx-space-2) var(--wx-space-3); border: 1px solid transparent; border-radius: var(--wx-radius-full); background: transparent; color: var(--wx-text-secondary); font-weight: var(--wx-weight-semibold); cursor: pointer; }
.wx-tabs__item[aria-selected="true"], .wx-tabs__item[aria-pressed="true"], .wx-tabs__item[aria-current="page"] { border-color: color-mix(in srgb, var(--wx-primary) 35%, var(--wx-border)); background: color-mix(in srgb, var(--wx-primary) 12%, var(--wx-surface)); color: var(--wx-primary); }
.wx-badge, .wx-status { display: inline-flex; align-items: center; gap: var(--wx-space-1); width: fit-content; min-height: 1.75rem; padding: .25rem .625rem; border: 1px solid var(--wx-border); border-radius: var(--wx-radius-full); background: var(--wx-surface); color: var(--wx-text-secondary); font-size: var(--wx-text-xs); font-weight: var(--wx-weight-semibold); }
.wx-status::before { content: ""; width: .5rem; height: .5rem; border-radius: 50%; background: currentColor; }
.wx-badge--success, .wx-status--success,
.wx-badge.ok, .wx-badge--ok { color: var(--wx-success); border-color: color-mix(in srgb, var(--wx-success) 40%, var(--wx-border)); }
.wx-badge--warning, .wx-status--warning,
.wx-badge.warn, .wx-badge--warn, .wx-badge-warn { color: var(--wx-warning); border-color: color-mix(in srgb, var(--wx-warning) 45%, var(--wx-border)); }
.wx-badge--danger, .wx-status--danger,
.wx-badge.danger, .wx-badge--danger { color: var(--wx-danger); border-color: color-mix(in srgb, var(--wx-danger) 40%, var(--wx-border)); }
.wx-badge--info, .wx-status--info { color: var(--wx-info); border-color: color-mix(in srgb, var(--wx-info) 40%, var(--wx-border)); }
.wx-badge--muted, .wx-status--muted,
.wx-badge.muted, .wx-badge--muted { color: var(--wx-text-muted); }

/* Data presentation */
.wx-table-wrap { width: 100%; overflow-x: auto; border: 1px solid var(--wx-border); border-radius: var(--wx-radius-lg); background: var(--wx-surface); }
.wx-table { width: 100%; border-collapse: collapse; color: var(--wx-text-primary); }
.wx-table th { color: var(--wx-text-muted); font-size: var(--wx-text-xs); font-weight: var(--wx-weight-bold); letter-spacing: .04em; text-align: start; text-transform: uppercase; }
.wx-table th, .wx-table td { min-height: var(--wx-density-row); padding: var(--wx-space-3) var(--wx-space-4); border-block-end: 1px solid var(--wx-border); vertical-align: middle; }
.wx-table tr:last-child td { border-block-end: 0; }
.wx-responsive-list { display: grid; gap: var(--wx-space-2); }
.wx-responsive-list__item { min-height: var(--wx-density-row); padding: var(--wx-space-3); border: 1px solid var(--wx-border); border-radius: var(--wx-radius-md); background: var(--wx-surface); }

/* KPI grid (executive home) */
.wx-kpi-grid, .wx-dash-kpis { display: grid; grid-template-columns: repeat(auto-fit, minmax(9.5rem, 1fr)); gap: var(--wx-space-3); margin-block-end: var(--wx-density-space); }
.wx-kpi, .wx-dash-kpi {
  display: grid;
  gap: var(--wx-space-1);
  min-height: 5.5rem;
  padding: var(--wx-space-3) var(--wx-space-4);
  border: 1px solid var(--wx-border);
  border-radius: var(--wx-radius-lg);
  background: var(--wx-surface);
}
.wx-kpi small, .wx-dash-kpi small { color: var(--wx-text-muted); font-size: var(--wx-text-xs); font-weight: var(--wx-weight-bold); letter-spacing: .06em; text-transform: uppercase; }
.wx-kpi strong, .wx-dash-kpi strong { font: var(--wx-weight-bold) var(--wx-text-lg)/var(--wx-leading-tight) var(--wx-font-display); letter-spacing: -.02em; }
.wx-kpi span, .wx-dash-kpi span { color: var(--wx-text-secondary); font-size: var(--wx-text-sm); }

/* Feedback and overlays */
.wx-alert, .wx-notice, .wx-toast, .wx-empty-state, .wx-error-state {
  padding: var(--wx-density-card-padding);
  border: 1px solid var(--wx-border);
  border-radius: var(--wx-radius-lg);
  background: var(--wx-surface);
  color: var(--wx-text-primary);
}
.wx-alert, .wx-notice { display: grid; grid-template-columns: auto minmax(0, 1fr); gap: var(--wx-space-3); }
.wx-alert__title, .wx-notice__title { display: block; margin-block-end: var(--wx-space-1); font-weight: var(--wx-weight-semibold); }
.wx-alert__body, .wx-notice__body { margin: 0; color: var(--wx-text-secondary); }
.wx-alert--success, .wx-notice--success { border-color: color-mix(in srgb, var(--wx-success) 45%, var(--wx-border)); }
.wx-alert--warning, .wx-notice--warning { border-color: color-mix(in srgb, var(--wx-warning) 50%, var(--wx-border)); }
.wx-alert--danger, .wx-notice--danger, .wx-error-state { border-color: color-mix(in srgb, var(--wx-danger) 45%, var(--wx-border)); }
.wx-alert--info, .wx-notice--info { border-color: color-mix(in srgb, var(--wx-info) 45%, var(--wx-border)); }
.wx-toast--success { border-color: color-mix(in srgb, var(--wx-success) 45%, var(--wx-border)); }
.wx-toast--warning { border-color: color-mix(in srgb, var(--wx-warning) 50%, var(--wx-border)); }
.wx-toast--danger { border-color: color-mix(in srgb, var(--wx-danger) 45%, var(--wx-border)); }
.wx-toast-region { position: fixed; inset: auto var(--wx-space-4) var(--wx-space-4) auto; z-index: var(--wx-z-toast); display: grid; gap: var(--wx-space-2); width: min(24rem, calc(100vw - 2rem)); }
.wx-toast { box-shadow: var(--wx-shadow-lg); }
.wx-dialog, .wx-drawer { max-width: min(42rem, calc(100vw - 2rem)); padding: 0; border: 1px solid var(--wx-border); border-radius: var(--wx-radius-xl); background: var(--wx-surface-raised); color: var(--wx-text-primary); box-shadow: var(--wx-shadow-lg); }
.wx-dialog::backdrop, .wx-drawer::backdrop { background: rgba(5, 7, 13, .68); backdrop-filter: blur(3px); }
.wx-dialog__header, .wx-dialog__body, .wx-dialog__footer, .wx-drawer__header, .wx-drawer__body, .wx-drawer__footer { padding: var(--wx-density-card-padding); }
.wx-dialog__header, .wx-drawer__header { display: flex; align-items: center; justify-content: space-between; gap: var(--wx-space-3); border-block-end: 1px solid var(--wx-border); }
.wx-dialog__footer, .wx-drawer__footer { display: flex; justify-content: flex-end; flex-wrap: wrap; gap: var(--wx-space-2); border-block-start: 1px solid var(--wx-border); }
.wx-drawer { position: fixed; inset: 0 0 0 auto; width: min(30rem, calc(100vw - 1rem)); max-height: none; height: 100dvh; border-radius: var(--wx-radius-xl) 0 0 var(--wx-radius-xl); }

/* Loading, skeleton and terminal states */
.wx-loading-state { display: grid; gap: var(--wx-space-3); padding: var(--wx-density-card-padding); }
.wx-skeleton-stack { display: grid; gap: var(--wx-space-2); width: 100%; }
.wx-skeleton { position: relative; overflow: hidden; min-height: 1rem; border-radius: var(--wx-radius-sm); background: color-mix(in srgb, var(--wx-text-muted) 14%, var(--wx-surface)); }
.wx-tooltip { position: relative; display: inline-flex; }
.wx-tooltip__bubble {
  position: absolute;
  z-index: var(--wx-z-overlay);
  inset: auto auto calc(100% + .35rem) 50%;
  transform: translateX(-50%);
  width: max-content;
  max-width: 16rem;
  padding: var(--wx-space-2) var(--wx-space-3);
  border: 1px solid var(--wx-border);
  border-radius: var(--wx-radius-md);
  background: var(--wx-surface-raised);
  color: var(--wx-text-secondary);
  font-size: var(--wx-text-xs);
  box-shadow: var(--wx-shadow-sm);
  pointer-events: none;
  opacity: 0;
  transition: opacity var(--wx-duration-fast) var(--wx-ease);
}
.wx-tooltip:focus-within .wx-tooltip__bubble,
.wx-tooltip:hover .wx-tooltip__bubble { opacity: 1; }
.wx-dropdown { position: relative; display: inline-flex; }
.wx-dropdown__menu {
  position: absolute;
  z-index: var(--wx-z-overlay);
  inset: calc(100% + .35rem) 0 auto auto;
  min-width: 12rem;
  padding: var(--wx-space-2);
  border: 1px solid var(--wx-border);
  border-radius: var(--wx-radius-lg);
  background: var(--wx-surface-raised);
  box-shadow: var(--wx-shadow-lg);
}
.wx-dropdown__menu[hidden] { display: none; }
.wx-notification-center { position: relative; display: inline-flex; }
.wx-notification-center__trigger {
  position: relative;
  min-width: max(var(--wx-touch-min), var(--wx-density-control));
  min-height: max(var(--wx-touch-min), var(--wx-density-control));
}
.wx-notification-center__badge {
  position: absolute;
  inset: .15rem .15rem auto auto;
  min-width: 1.125rem;
  height: 1.125rem;
  padding: 0 .25rem;
  border-radius: var(--wx-radius-full);
  background: var(--wx-danger);
  color: #fff;
  font-size: .65rem;
  font-weight: var(--wx-weight-bold);
  line-height: 1.125rem;
  text-align: center;
}
.wx-notification-center__panel {
  position: absolute;
  z-index: var(--wx-z-overlay);
  inset: calc(100% + .35rem) 0 auto auto;
  width: min(22rem, calc(100vw - 1.5rem));
  max-height: min(24rem, 70dvh);
  overflow: auto;
  padding: var(--wx-space-2);
  border: 1px solid var(--wx-border);
  border-radius: var(--wx-radius-lg);
  background: var(--wx-surface-raised);
  box-shadow: var(--wx-shadow-lg);
}
.wx-notification-center__panel[hidden] { display: none; }
.wx-notification-item {
  display: grid;
  gap: var(--wx-space-1);
  padding: var(--wx-space-3);
  border-radius: var(--wx-radius-md);
  border: 1px solid transparent;
  text-decoration: none;
  color: inherit;
}
.wx-notification-item:hover,
.wx-notification-item:focus-visible { border-color: var(--wx-border); background: color-mix(in srgb, var(--wx-primary) 6%, var(--wx-surface)); }
.wx-notification-item--high { border-inline-start: 3px solid var(--wx-danger); }
.wx-notification-item--unread { background: color-mix(in srgb, var(--wx-primary) 5%, var(--wx-surface)); }
.wx-notification-item__title { font-weight: var(--wx-weight-semibold); font-size: var(--wx-text-sm); }
.wx-notification-item__body { margin: 0; color: var(--wx-text-muted); font-size: var(--wx-text-xs); }
.wx-skeleton::after { content: ""; position: absolute; inset: 0; transform: translateX(-100%); background: linear-gradient(90deg, transparent, color-mix(in srgb, var(--wx-surface-raised) 70%, transparent), transparent); animation: wx-skeleton 1.4s infinite; }
.wx-skeleton--line { width: 100%; height: 1rem; }
.wx-skeleton--line.short { width: 62%; }
.wx-empty-state, .wx-error-state { display: grid; justify-items: center; gap: var(--wx-space-2); text-align: center; }
.wx-empty-state p, .wx-error-state p { max-width: 40rem; margin: 0; color: var(--wx-text-muted); }
.wx-context-help { margin: 0 0 var(--wx-density-space); border: 1px solid var(--wx-border); border-radius: var(--wx-radius-md); background: var(--wx-surface); color: var(--wx-text-primary); }
.wx-context-help summary { display: flex; align-items: center; gap: var(--wx-space-2); width: fit-content; min-height: var(--wx-touch-min); padding: var(--wx-space-2) var(--wx-space-3); color: var(--wx-primary); font-weight: var(--wx-weight-semibold); cursor: pointer; list-style: none; }
.wx-context-help summary::-webkit-details-marker { display: none; }
.wx-context-help summary > span { display: grid; place-items: center; width: 1.5rem; height: 1.5rem; border: 1px solid currentColor; border-radius: 50%; }
.wx-context-help__panel { padding: 0 var(--wx-space-4) var(--wx-space-4); }
.wx-context-help__panel h2 { margin: 0 0 var(--wx-space-3); font-size: var(--wx-text-md); }
.wx-context-help__panel dl { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: var(--wx-space-3); margin: 0; }
.wx-context-help__panel dl > div { min-width: 0; }
.wx-context-help__panel dt { color: var(--wx-text-muted); font-size: var(--wx-text-xs); font-weight: var(--wx-weight-bold); text-transform: uppercase; }
.wx-context-help__panel dd { margin: var(--wx-space-1) 0 0; color: var(--wx-text-secondary); font-size: var(--wx-text-sm); line-height: var(--wx-leading-normal); }
@keyframes wx-skeleton { to { transform: translateX(100%); } }

@media (max-width: 1023px) {
  .wx-page-header { align-items: stretch; flex-direction: column; }
  .wx-action-bar { justify-content: flex-start; }
  .wx-filter-bar { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}

@media (max-width: 767px) {
  .wx-page { padding: var(--wx-space-3); }
  .wx-page-header__title { font-size: var(--wx-text-lg); }
  .wx-action-bar > .wx-button { flex: 1 1 auto; }
  .wx-filter-bar { grid-template-columns: 1fr; }
  .wx-table--responsive thead { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0, 0, 0, 0); }
  .wx-table--responsive, .wx-table--responsive tbody, .wx-table--responsive tr, .wx-table--responsive td { display: block; width: 100%; }
  .wx-table--responsive tr { padding: var(--wx-space-3); border-block-end: 1px solid var(--wx-border); }
  .wx-table--responsive td { display: grid; grid-template-columns: minmax(7rem, .8fr) 1fr; gap: var(--wx-space-2); min-height: var(--wx-touch-min); padding: var(--wx-space-2) 0; border: 0; }
  .wx-table--responsive td::before { content: attr(data-label); color: var(--wx-text-muted); font-size: var(--wx-text-xs); font-weight: var(--wx-weight-bold); text-transform: uppercase; }
  .wx-dialog { width: calc(100vw - 1rem); }
  .wx-drawer { width: calc(100vw - .5rem); }
  .wx-context-help__panel dl { grid-template-columns: 1fr; }
}

@media (prefers-reduced-motion: reduce) {
  .wx-button, .wx-icon-button, .wx-skeleton::after, .wx-button[aria-busy="true"]::after { transition: none; animation: none; }
  .wx-button:active, .wx-icon-button:active { transform: none; }
}
