/* ==========================================================================
   EVPS-1000X — Component & Layout Stylesheet
   Reads from evps-1000x-tokens.css. No hardcoded values.
   --------------------------------------------------------------------------
   Class naming: BEM-ish — `.evps-{block}__{element}--{modifier}`
   Loaded after tokens. ~Lagom-class scope, clean-room original.

   SECTION INDEX (use Ctrl/Cmd+G with a "go to line" tool, or Ctrl+F the
   section heading to jump directly):

   Line   ~9    BASE RESETS          * box-model, html/body, scrollbar
   Line  ~37    APP SHELL            .evps-app grid, .evps-sidebar, .evps-main,
                                     .evps-topbar, .evps-page
   Line ~301    COMPONENTS
                  ~306  Buttons      .evps-btn variants
                  ~349  Card         .evps-card
                  ~372  Badge        .evps-badge
                  ~394  Stat tile    .evps-stat
                  ~436  Service card .evps-service-card
                  ~493  Meter        .evps-meter
                  ~511  Avatar       .evps-avatar
                  ~525  Tabs         .evps-tabs
                  ~561  Table        .evps-table
                  ~589  Form ctrl    .evps-input / .evps-select / .evps-textarea
                  ~619  Switch       .evps-switch
                  ~641  Radio card   .evps-radio-card (base)
                  ~672  Alert        .evps-alert
                  ~695  Skeleton     .evps-skel / @keyframes evps-skel-shimmer
                  ~706  Empty state  .evps-empty
                  ~725  Spark        .evps-spark
                  ~730  Code block   .evps-code
                  ~753  Layout util  .evps-grid, .evps-row, .evps-stack, helpers
                  ~779  Surface sw.  .evps-surface-switcher / .evps-surface-tab
   Line ~829    AI ASSISTANT         .evps-ai-bubble, .evps-ai-drawer, messages
   Line ~1015   COMMAND PALETTE      .evps-cmdk__overlay / .evps-cmdk
   Line ~1067   TOAST                .evps-toast-stack / .evps-toast
   Line ~1099   TRUST STRIP          .evps-trust-strip
   Line ~1114   PROGRESS STEPS       .evps-steps / .evps-step
   Line ~1134   PRICING TIER         .evps-tier
   Line ~1174   KBD                  .evps-kbd
   Line ~1187   ORDER FORM           .evps-orderform layout + breadcrumb
   Line ~1258   PRODUCT GRID         .evps-product-grid / .evps-tier addons
   Line ~1282   RADIO CARD (full)    .evps-radio-card complete ruleset
   Line ~1345   OPTION CARD          .evps-option-card
   Line ~1415   PAYMENT METHOD       .evps-payment-method
   Line ~1445   TRUST STRIP ext.     .evps-trust-strip__item
   Line ~1460   ORDER SUMMARY        .evps-summary, .evps-order-summary
   Line ~1536   STEPS ext.           .evps-step__line transition
   Line ~1554   CART ROW             .evps-cart-row
   Line ~1585   DOMAIN               .evps-domain-search/result/suggestion/row
   Line ~1638   CONFIRM HERO         .evps-confirm-hero
   Line ~1688   TIMELINE             .evps-timeline
   Line ~1740   BULLET LIST          .evps-bullet-list
   Line ~1768   ACCOUNT SUMMARY      .evps-account-summary
   Line ~1787   CHECKOUT AUTH        .evps-checkout-auth
   Line ~1803   CHECKOUT SECURITY    .evps-checkout-security
   Line ~1825   CHECKOUT PLAN        .evps-checkout-summary-plan
   Line ~1833   CHECKOUT NEXT        .evps-checkout-next
   Line ~1861   SAVED METHOD         .evps-saved-method
   Line ~1903   TOS                  .evps-tos
   Line ~1932   SECURITY POLICIES    .evps-security-policies
   Line ~1979   INPUT PREFIX/GROUP   .evps-input-prefix / .evps-input-group
   Line ~2000   TOGGLE               .evps-toggle
   Line ~2022   TEXT UTILITY         .evps-text-dim / .evps-text-muted
   Line ~2029   TABLE WRAP           .evps-table-wrap
   Line ~2048   RESPONSIVE (OF)      Order-form @media adjustments
   Line ~2083   PRINT (OF)           Order-form print overrides

   ---- v1.1.0 APPENDED RULES ----
   Line ~2096   SIDEBAR COLLAPSE     body.evps-sidebar-collapsed + tooltip
   Line ~2173   MOBILE SIDEBAR       off-canvas + scrim + hamburger
   Line ~2249   DESKTOP OVERRIDES    hamburger hide, scrim hide, topbar logo
   Line ~2260   DENSITY COMPACT      [data-density="compact"] audit fills
   Line ~2294   THEME TOGGLE         sun/moon/auto icon swap via data-attr
   Line ~2313   FOCUS RINGS          :focus-visible audit — all interactives
   Line ~2356   CARD/STAT HOVER      scale + shadow, @media (hover:hover)
   Line ~2387   SKELETON MOTION      @media prefers-reduced-motion guard
   Line ~2410   TOAST STACK          slide-in / dismiss animations
   Line ~2482   PRINT (GLOBAL)       sidebar/topbar hide, full-width main
   Line ~2538   ACCOUNT MENU         .evps-account-menu details/summary
   Line ~2599   SKIP LINK            .evps-skip-link (also in critical CSS)
   Line ~2622   APP SHELL ANIM       .evps-app grid-col transition + motion
   ========================================================================== */

* { box-sizing: border-box; }
html, body { margin: 0; padding: 0; }
body {
  font-family: var(--evps-font-sans);
  font-size: var(--evps-fs-base);
  color: var(--evps-text);
  background: var(--evps-bg);
  line-height: var(--evps-lh-normal);
  -webkit-font-smoothing: antialiased;
  text-rendering: optimizeLegibility;
}
button { font: inherit; color: inherit; cursor: pointer; }
a { color: inherit; text-decoration: none; }
input, select, textarea { font: inherit; color: inherit; }
img, svg { display: block; max-width: 100%; }

/* ── Scrollbar (subtle, matches theme) ───────────────────────────────── */
::-webkit-scrollbar { width: 10px; height: 10px; }
::-webkit-scrollbar-track { background: transparent; }
::-webkit-scrollbar-thumb {
  background: var(--evps-border);
  border-radius: 999px;
  border: 2px solid var(--evps-bg);
}
::-webkit-scrollbar-thumb:hover { background: var(--evps-border-strong); }

/* ============================================================
   APP SHELL
   ============================================================ */
.evps-app {
  display: grid;
  grid-template-columns: var(--evps-sidebar-w) 1fr;
  min-height: 100vh;
  transition: grid-template-columns var(--evps-dur-base) var(--evps-ease-out);
}
.evps-app[data-sidebar="collapsed"] {
  grid-template-columns: var(--evps-sidebar-w-sm) 1fr;
}

/* ── Sidebar ───────────────────────────────────────────────── */
.evps-sidebar {
  background: var(--evps-surface);
  border-right: 1px solid var(--evps-border);
  display: flex;
  flex-direction: column;
  position: sticky;
  top: 0;
  height: 100vh;
  overflow: hidden;
}
.evps-sidebar__brand {
  display: flex;
  align-items: center;
  gap: var(--evps-space-3);
  padding: var(--evps-space-5) var(--evps-space-5);
  border-bottom: 1px solid var(--evps-border-subtle);
  height: var(--evps-topbar-h);
  min-height: var(--evps-topbar-h);
}
.evps-sidebar__logo {
  width: 28px; height: 28px;
  border-radius: var(--evps-radius-sm);
  background: linear-gradient(135deg, var(--evps-primary), var(--evps-accent));
  display: grid;
  place-items: center;
  color: white;
  font-weight: var(--evps-fw-bold);
  font-size: 14px;
  letter-spacing: -0.02em;
  flex-shrink: 0;
  position: relative;
  overflow: hidden;
}
.evps-sidebar__logo::after {
  content: "";
  position: absolute;
  inset: 0;
  background: linear-gradient(135deg, transparent 0%, rgba(255,255,255,0.18) 50%, transparent 100%);
}
.evps-sidebar__brand-text { display: flex; flex-direction: column; line-height: 1.1; }
.evps-sidebar__brand-name { font-weight: var(--evps-fw-semibold); font-size: 14px; letter-spacing: -0.01em; }
.evps-sidebar__brand-sub { font-size: 10px; color: var(--evps-text-dim); text-transform: uppercase; letter-spacing: var(--evps-tracking-caps); margin-top: 2px; }

.evps-app[data-sidebar="collapsed"] .evps-sidebar__brand-text { display: none; }

.evps-sidebar__nav { flex: 1; overflow-y: auto; padding: var(--evps-space-3) var(--evps-space-3); }
.evps-sidebar__group { margin-bottom: var(--evps-space-5); }
.evps-sidebar__group-label {
  /* Was --evps-text-dim (#5d667d) which fails WCAG AA on the dark
   * sidebar surface. Bumped to --evps-text-muted for contrast >= 4.5:1. */
  font-size: 11px;
  font-weight: var(--evps-fw-semibold);
  text-transform: uppercase;
  letter-spacing: var(--evps-tracking-caps);
  color: var(--evps-text-muted);
  padding: 0 var(--evps-space-3);
  margin-bottom: var(--evps-space-2);
}
.evps-app[data-sidebar="collapsed"] .evps-sidebar__group-label { display: none; }

.evps-nav-item {
  display: flex;
  align-items: center;
  gap: var(--evps-space-3);
  padding: 8px var(--evps-space-3);
  border-radius: var(--evps-radius-md);
  color: var(--evps-text-muted);
  font-size: 13.5px;
  font-weight: var(--evps-fw-medium);
  cursor: pointer;
  transition: all var(--evps-dur-fast) var(--evps-ease-out);
  position: relative;
  border: none;
  background: transparent;
  width: 100%;
  text-align: left;
}
.evps-nav-item:hover { background: var(--evps-surface-2); color: var(--evps-text); }
.evps-nav-item--active {
  background: var(--evps-primary-soft);
  color: var(--evps-text);
}
.evps-nav-item--active::before {
  content: "";
  position: absolute; left: -8px; top: 6px; bottom: 6px;
  width: 3px; border-radius: 2px;
  background: var(--evps-primary);
}
.evps-nav-item__icon { width: 18px; flex-shrink: 0; display: grid; place-items: center; color: var(--evps-text-muted); }
.evps-nav-item--active .evps-nav-item__icon { color: var(--evps-primary); }
.evps-nav-item__badge {
  margin-left: auto;
  font-size: 10px;
  font-weight: var(--evps-fw-semibold);
  background: var(--evps-surface-3);
  color: var(--evps-text-muted);
  padding: 2px 6px;
  border-radius: var(--evps-radius-pill);
  min-width: 18px;
  text-align: center;
}
.evps-app[data-sidebar="collapsed"] .evps-nav-item__label,
.evps-app[data-sidebar="collapsed"] .evps-nav-item__badge { display: none; }
.evps-app[data-sidebar="collapsed"] .evps-nav-item { justify-content: center; padding: 10px; }

.evps-sidebar__footer {
  border-top: 1px solid var(--evps-border-subtle);
  padding: var(--evps-space-3);
  display: flex;
  align-items: center;
  gap: var(--evps-space-3);
}
.evps-app[data-sidebar="collapsed"] .evps-sidebar__user-info { display: none; }
.evps-sidebar__user-info { flex: 1; min-width: 0; }
.evps-sidebar__user-name { font-size: 13px; font-weight: var(--evps-fw-semibold); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.evps-sidebar__user-tier { font-size: 10px; color: var(--evps-secondary); text-transform: uppercase; letter-spacing: var(--evps-tracking-caps); font-weight: var(--evps-fw-semibold); }

/* ── Topbar ───────────────────────────────────────────────── */
.evps-main {
  display: flex;
  flex-direction: column;
  min-width: 0;
}
.evps-topbar {
  height: var(--evps-topbar-h);
  border-bottom: 1px solid var(--evps-border);
  background: var(--evps-bg);
  display: flex;
  align-items: center;
  gap: var(--evps-space-3);
  padding: 0 var(--evps-space-6);
  position: sticky;
  top: 0;
  z-index: var(--evps-z-sticky);
  backdrop-filter: blur(12px);
}
.evps-topbar__crumbs {
  display: flex; align-items: center; gap: 6px;
  font-size: 13px; color: var(--evps-text-muted);
}
.evps-topbar__crumbs strong { color: var(--evps-text); font-weight: var(--evps-fw-semibold); }
.evps-topbar__crumbs i { color: var(--evps-text-dim); font-size: 10px; }

.evps-topbar__search {
  flex: 1;
  max-width: 480px;
  margin: 0 var(--evps-space-5);
  position: relative;
  display: flex;
  align-items: center;
}
.evps-topbar__search input {
  width: 100%;
  height: 34px;
  border-radius: var(--evps-radius-md);
  border: 1px solid var(--evps-border);
  background: var(--evps-surface-inset);
  color: var(--evps-text);
  padding: 0 var(--evps-space-4) 0 36px;
  font-size: 13px;
  outline: none;
  transition: border-color var(--evps-dur-fast), box-shadow var(--evps-dur-fast);
}
.evps-topbar__search input:focus { border-color: var(--evps-primary); box-shadow: 0 0 0 3px var(--evps-primary-ring); }
.evps-topbar__search input::placeholder { color: var(--evps-text-dim); }
.evps-topbar__search-icon { position: absolute; left: 12px; color: var(--evps-text-dim); pointer-events: none; }
.evps-topbar__search-kbd {
  /* a11y: --evps-text-dim is too faint here for AA contrast against
   * --evps-surface; promote to --evps-text-muted (4.5:1+). */
  position: absolute; right: 8px;
  font-family: var(--evps-font-mono);
  font-size: 11px;
  color: var(--evps-text-muted);
  border: 1px solid var(--evps-border);
  border-radius: var(--evps-radius-xs);
  padding: 2px 6px;
  background: var(--evps-surface);
}

.evps-topbar__actions {
  margin-left: auto;
  display: flex;
  align-items: center;
  gap: var(--evps-space-2);
}

.evps-iconbtn {
  width: 34px; height: 34px;
  border-radius: var(--evps-radius-md);
  border: 1px solid transparent;
  background: transparent;
  color: var(--evps-text-muted);
  display: grid; place-items: center;
  cursor: pointer;
  position: relative;
  transition: all var(--evps-dur-fast);
}
.evps-iconbtn:hover { background: var(--evps-surface-2); color: var(--evps-text); border-color: var(--evps-border); }
.evps-iconbtn[data-active="true"] { background: var(--evps-primary-soft); color: var(--evps-primary); }
.evps-iconbtn__dot {
  position: absolute; top: 6px; right: 6px;
  width: 7px; height: 7px;
  background: var(--evps-danger);
  border-radius: 50%;
  border: 2px solid var(--evps-bg);
}

.evps-env-badge {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  padding: 4px 10px;
  border-radius: var(--evps-radius-pill);
  font-size: 11px;
  font-weight: var(--evps-fw-semibold);
  letter-spacing: var(--evps-tracking-wide);
  text-transform: uppercase;
}
.evps-env-badge--live  { background: var(--evps-success-soft); color: var(--evps-success); }
.evps-env-badge--dev   { background: var(--evps-warning-soft); color: var(--evps-warning); }
.evps-env-badge::before {
  content: ""; width: 6px; height: 6px; border-radius: 50%;
  background: currentColor;
  box-shadow: 0 0 0 3px color-mix(in srgb, currentColor 25%, transparent);
}

/* ── Page container ─────────────────────────────────────── */
.evps-page {
  padding: var(--evps-space-7) var(--evps-space-7);
  max-width: var(--evps-content-max);
  margin: 0 auto;
  width: 100%;
}
@media (max-width: 768px) {
  .evps-page { padding: var(--evps-space-5) var(--evps-space-4); }
}
.evps-page__header {
  display: flex;
  align-items: flex-end;
  justify-content: space-between;
  gap: var(--evps-space-5);
  margin-bottom: var(--evps-space-7);
  flex-wrap: wrap;
}
.evps-page__title {
  font-size: var(--evps-fs-3xl);
  font-weight: var(--evps-fw-semibold);
  letter-spacing: var(--evps-tracking-tight);
  margin: 0 0 4px;
}
.evps-page__subtitle {
  font-size: var(--evps-fs-md);
  color: var(--evps-text-muted);
  margin: 0;
}

/* ============================================================
   COMPONENTS
   ============================================================ */

/* ── Buttons ───────────────────────────────────────────── */
.evps-btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: var(--evps-space-2);
  height: var(--evps-control-h-md);
  padding: 0 var(--evps-space-4);
  border-radius: var(--evps-radius-md);
  font-size: 13px;
  font-weight: var(--evps-fw-semibold);
  letter-spacing: -0.005em;
  border: 1px solid transparent;
  background: var(--evps-surface-2);
  color: var(--evps-text);
  cursor: pointer;
  white-space: nowrap;
  transition: all var(--evps-dur-fast);
  user-select: none;
}
.evps-btn:hover { background: var(--evps-surface-3); }
.evps-btn:focus-visible { outline: none; box-shadow: 0 0 0 3px var(--evps-primary-ring); }
.evps-btn:active { transform: translateY(0.5px); }

.evps-btn--primary {
  background: var(--evps-primary);
  color: white;
  box-shadow: 0 1px 0 rgba(255,255,255,0.12) inset, 0 1px 2px rgba(0,0,0,0.3);
}
.evps-btn--primary:hover { background: var(--evps-primary-hover); }
.evps-btn--primary:active { background: var(--evps-primary-active); }

.evps-btn--ghost { background: transparent; border-color: transparent; color: var(--evps-text-muted); }
.evps-btn--ghost:hover { background: var(--evps-surface-2); color: var(--evps-text); }

.evps-btn--outline { background: transparent; border-color: var(--evps-border); }
.evps-btn--outline:hover { background: var(--evps-surface-2); border-color: var(--evps-border-strong); }

.evps-btn--danger { background: var(--evps-danger); color: white; }
.evps-btn--success { background: var(--evps-success); color: white; }

.evps-btn--sm { height: var(--evps-control-h-sm); padding: 0 var(--evps-space-3); font-size: 12px; }
.evps-btn--lg { height: var(--evps-control-h-lg); padding: 0 var(--evps-space-5); font-size: 14px; }

/* ── Card ───────────────────────────────────────────────── */
.evps-card {
  background: var(--evps-surface);
  border: 1px solid var(--evps-border);
  border-radius: var(--evps-radius-lg);
  padding: var(--evps-card-pad);
  box-shadow: var(--evps-shadow-sm);
  position: relative;
}
.evps-card--bare { padding: 0; overflow: hidden; }
.evps-card__header {
  display: flex; align-items: center; justify-content: space-between;
  margin-bottom: var(--evps-space-4);
  gap: var(--evps-space-3);
}
.evps-card__title {
  font-size: 14px; font-weight: var(--evps-fw-semibold);
  margin: 0;
  letter-spacing: -0.005em;
}
.evps-card__sub { font-size: 12px; color: var(--evps-text-muted); margin-top: 2px; }
.evps-card__actions { display: flex; align-items: center; gap: 6px; }

/* ── Badge ───────────────────────────────────────────────── */
.evps-badge {
  display: inline-flex;
  align-items: center;
  gap: 5px;
  padding: 3px 8px;
  border-radius: var(--evps-radius-pill);
  font-size: 11px;
  font-weight: var(--evps-fw-semibold);
  letter-spacing: 0;
  background: var(--evps-surface-3);
  color: var(--evps-text-muted);
  border: 1px solid var(--evps-border-subtle);
  white-space: nowrap;
}
.evps-badge--success { background: var(--evps-success-soft); color: var(--evps-success-text); border-color: transparent; }
.evps-badge--warning { background: var(--evps-warning-soft); color: var(--evps-warning-text); border-color: transparent; }
.evps-badge--danger  { background: var(--evps-danger-soft); color: var(--evps-danger-text); border-color: transparent; }
.evps-badge--info    { background: var(--evps-info-soft); color: var(--evps-info-text); border-color: transparent; }
.evps-badge--accent  { background: var(--evps-accent-soft); color: var(--evps-accent-text); border-color: transparent; }
.evps-badge__dot { width: 6px; height: 6px; border-radius: 50%; background: currentColor; }

/* ── Stat tile ───────────────────────────────────────────── */
.evps-stat {
  display: flex;
  flex-direction: column;
  gap: var(--evps-space-2);
  padding: var(--evps-card-pad);
  background: var(--evps-surface);
  border: 1px solid var(--evps-border);
  border-radius: var(--evps-radius-lg);
  position: relative;
  overflow: hidden;
}
.evps-stat__label {
  font-size: 11px;
  font-weight: var(--evps-fw-semibold);
  text-transform: uppercase;
  letter-spacing: var(--evps-tracking-caps);
  color: var(--evps-text-muted);
}
.evps-stat__value {
  font-size: var(--evps-fs-2xl);
  font-weight: var(--evps-fw-semibold);
  letter-spacing: var(--evps-tracking-tight);
  font-feature-settings: "tnum" 1;
}
.evps-stat__delta {
  display: inline-flex; align-items: center; gap: 4px;
  font-size: 11px;
  font-weight: var(--evps-fw-semibold);
  color: var(--evps-success);
}
.evps-stat__delta--down { color: var(--evps-danger); }

.evps-stat__icon {
  position: absolute; top: 14px; right: 14px;
  width: 32px; height: 32px;
  border-radius: var(--evps-radius-md);
  display: grid; place-items: center;
  background: var(--evps-primary-soft);
  color: var(--evps-primary);
}

/* ── Service card ───────────────────────────────────────── */
.evps-service-card {
  background: var(--evps-surface);
  border: 1px solid var(--evps-border);
  border-radius: var(--evps-radius-lg);
  padding: var(--evps-card-pad);
  display: flex;
  flex-direction: column;
  gap: var(--evps-space-3);
  cursor: pointer;
  transition: all var(--evps-dur-base) var(--evps-ease-out);
  position: relative;
  overflow: hidden;
}
.evps-service-card:hover {
  border-color: var(--evps-border-strong);
  background: var(--evps-surface-2);
  transform: translateY(-1px);
  box-shadow: var(--evps-shadow-md);
}
.evps-service-card::before {
  content: "";
  position: absolute; top: 0; left: 0; right: 0; height: 2px;
  background: linear-gradient(90deg, var(--evps-primary), var(--evps-accent));
  opacity: 0;
  transition: opacity var(--evps-dur-base);
}
.evps-service-card:hover::before { opacity: 1; }

.evps-service-card__head { display: flex; align-items: flex-start; justify-content: space-between; gap: var(--evps-space-3); }
.evps-service-card__icon {
  width: 38px; height: 38px;
  border-radius: var(--evps-radius-md);
  background: var(--evps-surface-3);
  display: grid; place-items: center;
  color: var(--evps-primary);
  flex-shrink: 0;
}
.evps-service-card__name { font-size: 14px; font-weight: var(--evps-fw-semibold); margin: 0; letter-spacing: -0.005em; }
.evps-service-card__sub { font-size: 12px; color: var(--evps-text-muted); margin-top: 2px; font-family: var(--evps-font-mono); }

.evps-service-card__metrics {
  display: grid; grid-template-columns: 1fr 1fr 1fr;
  gap: var(--evps-space-2);
  padding: var(--evps-space-3) 0;
  border-top: 1px solid var(--evps-border-subtle);
  border-bottom: 1px solid var(--evps-border-subtle);
}
.evps-service-card__metric { display: flex; flex-direction: column; gap: 4px; }
.evps-service-card__metric-label { font-size: 10px; color: var(--evps-text-dim); text-transform: uppercase; letter-spacing: var(--evps-tracking-caps); }
.evps-service-card__metric-value { font-size: 12.5px; font-weight: var(--evps-fw-semibold); font-family: var(--evps-font-mono); }

.evps-service-card__foot {
  display: flex; align-items: center; justify-content: space-between;
  font-size: 11px; color: var(--evps-text-muted);
}

/* ── Meter / progress ────────────────────────────────── */
.evps-meter {
  position: relative;
  height: 4px;
  background: var(--evps-surface-3);
  border-radius: 999px;
  overflow: hidden;
}
.evps-meter__fill {
  position: absolute; left: 0; top: 0; bottom: 0;
  background: var(--evps-primary);
  border-radius: 999px;
  transition: width var(--evps-dur-slow) var(--evps-ease-out);
}
.evps-meter__fill--success { background: var(--evps-success); }
.evps-meter__fill--warning { background: var(--evps-warning); }
.evps-meter__fill--danger  { background: var(--evps-danger); }

/* ── Avatar ───────────────────────────────────────────── */
.evps-avatar {
  width: 32px; height: 32px;
  border-radius: 50%;
  background: linear-gradient(135deg, var(--evps-primary), var(--evps-accent));
  display: grid; place-items: center;
  color: white;
  font-size: 12px;
  font-weight: var(--evps-fw-semibold);
  flex-shrink: 0;
}
.evps-avatar--sm { width: 24px; height: 24px; font-size: 10px; }
.evps-avatar--lg { width: 44px; height: 44px; font-size: 14px; }

/* ── Tabs ───────────────────────────────────────────────── */
.evps-tabs {
  display: flex;
  gap: 0;
  border-bottom: 1px solid var(--evps-border);
  margin-bottom: var(--evps-space-5);
  overflow-x: auto;
}
.evps-tabs__item {
  padding: 10px var(--evps-space-4);
  font-size: 13px;
  font-weight: var(--evps-fw-medium);
  color: var(--evps-text-muted);
  cursor: pointer;
  border: none;
  background: transparent;
  position: relative;
  white-space: nowrap;
  transition: color var(--evps-dur-fast);
  border-bottom: 2px solid transparent;
  margin-bottom: -1px;
}
.evps-tabs__item:hover { color: var(--evps-text); }
.evps-tabs__item--active {
  color: var(--evps-text);
  border-bottom-color: var(--evps-primary);
}
.evps-tabs__count {
  display: inline-block; margin-left: 6px;
  background: var(--evps-surface-3);
  color: var(--evps-text-muted);
  font-size: 10px; font-weight: var(--evps-fw-semibold);
  padding: 1px 6px;
  border-radius: var(--evps-radius-pill);
}

/* ── Table ───────────────────────────────────────────────── */
.evps-table {
  width: 100%;
  border-collapse: collapse;
  font-size: 13px;
}
.evps-table thead th {
  text-align: left;
  font-size: 10px;
  text-transform: uppercase;
  letter-spacing: var(--evps-tracking-caps);
  font-weight: var(--evps-fw-semibold);
  color: var(--evps-text-muted);
  padding: var(--evps-space-3) var(--evps-space-4);
  border-bottom: 1px solid var(--evps-border);
  background: var(--evps-surface-2);
}
.evps-table tbody td {
  padding: var(--evps-row-py) var(--evps-space-4);
  border-bottom: 1px solid var(--evps-border-subtle);
  color: var(--evps-text);
}
.evps-table tbody tr { transition: background var(--evps-dur-fast); }
.evps-table tbody tr:hover { background: var(--evps-surface-2); }
.evps-table tbody tr:last-child td { border-bottom: 0; }
.evps-table__primary { font-weight: var(--evps-fw-medium); }
.evps-table__mono { font-family: var(--evps-font-mono); font-size: 12px; color: var(--evps-text-muted); }

/* ── Form controls ───────────────────────────────────── */
.evps-input, .evps-select, .evps-textarea {
  width: 100%;
  height: var(--evps-control-h-md);
  padding: 0 var(--evps-control-px);
  background: var(--evps-surface-inset);
  border: 1px solid var(--evps-border);
  border-radius: var(--evps-radius-md);
  color: var(--evps-text);
  font-size: 13px;
  outline: none;
  transition: border-color var(--evps-dur-fast), box-shadow var(--evps-dur-fast);
}
.evps-textarea { height: auto; padding: 10px var(--evps-control-px); resize: vertical; min-height: 80px; }
.evps-input:focus, .evps-select:focus, .evps-textarea:focus {
  border-color: var(--evps-primary);
  box-shadow: 0 0 0 3px var(--evps-primary-ring);
}
.evps-input::placeholder, .evps-textarea::placeholder { color: var(--evps-text-dim); }
.evps-label {
  display: block;
  font-size: 12px;
  font-weight: var(--evps-fw-semibold);
  color: var(--evps-text);
  margin-bottom: 6px;
}
.evps-help { font-size: 11px; color: var(--evps-text-muted); margin-top: 4px; }

.evps-field { margin-bottom: var(--evps-space-4); }

/* ── Switch ────────────────────────────────────────────── */
.evps-switch {
  position: relative;
  display: inline-block;
  width: 36px; height: 20px;
  background: var(--evps-surface-3);
  border-radius: 999px;
  cursor: pointer;
  border: 1px solid var(--evps-border);
  transition: background var(--evps-dur-fast);
}
.evps-switch::after {
  content: "";
  position: absolute; left: 2px; top: 1px;
  width: 14px; height: 14px;
  background: var(--evps-text);
  border-radius: 50%;
  transition: all var(--evps-dur-base) var(--evps-ease-spring);
}
.evps-switch[aria-checked="true"] { background: var(--evps-primary); border-color: var(--evps-primary); }
.evps-switch[aria-checked="true"]::after { left: 18px; background: white; }

/* ── Radio card ────────────────────────────────────────── */
.evps-radio-card {
  border: 1px solid var(--evps-border);
  background: var(--evps-surface);
  border-radius: var(--evps-radius-md);
  padding: var(--evps-space-4);
  cursor: pointer;
  position: relative;
  transition: all var(--evps-dur-fast);
  display: flex;
  flex-direction: column;
  gap: 4px;
}
.evps-radio-card:hover { border-color: var(--evps-border-strong); background: var(--evps-surface-2); }
.evps-radio-card[data-selected="true"] {
  border-color: var(--evps-primary);
  background: var(--evps-primary-soft);
  box-shadow: 0 0 0 1px var(--evps-primary);
}
.evps-radio-card[data-selected="true"]::after {
  content: "✓";
  position: absolute; top: 8px; right: 8px;
  width: 18px; height: 18px;
  background: var(--evps-primary);
  color: white;
  border-radius: 50%;
  display: grid; place-items: center;
  font-size: 11px;
  font-weight: var(--evps-fw-bold);
}

/* ── Alert ────────────────────────────────────────────── */
.evps-alert {
  border: 1px solid var(--evps-border);
  background: var(--evps-surface);
  border-radius: var(--evps-radius-md);
  padding: var(--evps-space-4);
  display: flex;
  gap: var(--evps-space-3);
  align-items: flex-start;
  position: relative;
}
.evps-alert--info { background: var(--evps-info-soft); border-color: transparent; }
.evps-alert--success { background: var(--evps-success-soft); border-color: transparent; }
.evps-alert--warning { background: var(--evps-warning-soft); border-color: transparent; }
.evps-alert--danger { background: var(--evps-danger-soft); border-color: transparent; }
.evps-alert__icon { flex-shrink: 0; margin-top: 1px; }
.evps-alert--info .evps-alert__icon { color: var(--evps-info); }
.evps-alert--success .evps-alert__icon { color: var(--evps-success); }
.evps-alert--warning .evps-alert__icon { color: var(--evps-warning); }
.evps-alert--danger .evps-alert__icon { color: var(--evps-danger); }
.evps-alert__title { font-weight: var(--evps-fw-semibold); font-size: 13px; }
.evps-alert__body { font-size: 12.5px; color: var(--evps-text-muted); margin-top: 2px; }

/* ── Skeleton ──────────────────────────────────────────── */
.evps-skel {
  background: linear-gradient(90deg, var(--evps-surface-2) 25%, var(--evps-surface-3) 50%, var(--evps-surface-2) 75%);
  background-size: 200% 100%;
  animation: evps-skel-shimmer 1.4s ease-in-out infinite;
  border-radius: var(--evps-radius-sm);
}
@keyframes evps-skel-shimmer {
  0% { background-position: 200% 0; }
  100% { background-position: -200% 0; }
}

/* ── Empty state ───────────────────────────────────────── */
.evps-empty {
  text-align: center;
  padding: var(--evps-space-9) var(--evps-space-5);
  color: var(--evps-text-muted);
}
.evps-empty__icon {
  width: 56px; height: 56px;
  margin: 0 auto var(--evps-space-4);
  background: var(--evps-surface-2);
  border: 1px solid var(--evps-border);
  border-radius: var(--evps-radius-lg);
  display: grid; place-items: center;
  color: var(--evps-text-dim);
}
.evps-empty__title { font-size: 14px; font-weight: var(--evps-fw-semibold); color: var(--evps-text); margin: 0 0 6px; }
.evps-empty__desc { font-size: 12.5px; max-width: 360px; margin: 0 auto var(--evps-space-4); line-height: var(--evps-lh-snug); }

/* ── Spark / mini chart ───────────────────────────────── */
.evps-spark { width: 100%; height: 36px; }
.evps-spark path { fill: none; stroke: var(--evps-primary); stroke-width: 1.5; }
.evps-spark .evps-spark__area { fill: var(--evps-primary-soft); stroke: none; }

/* ── Code block ─────────────────────────────────────── */
.evps-code {
  font-family: var(--evps-font-mono);
  font-size: 12px;
  background: var(--evps-surface-inset);
  border: 1px solid var(--evps-border);
  border-radius: var(--evps-radius-md);
  padding: var(--evps-space-4);
  color: var(--evps-text);
  line-height: var(--evps-lh-relaxed);
  overflow-x: auto;
  position: relative;
  white-space: pre;
}
.evps-code__lang {
  position: absolute; top: 6px; right: 6px;
  font-size: 10px; text-transform: uppercase;
  color: var(--evps-text-dim);
  letter-spacing: var(--evps-tracking-caps);
  font-family: var(--evps-font-sans);
  font-weight: var(--evps-fw-semibold);
}

/* ── Layout helpers ──────────────────────────────────── */
.evps-grid { display: grid; gap: var(--evps-space-5); }
.evps-grid--2 { grid-template-columns: repeat(2, 1fr); }
.evps-grid--3 { grid-template-columns: repeat(3, 1fr); }
.evps-grid--4 { grid-template-columns: repeat(4, 1fr); }
.evps-grid--12 { grid-template-columns: repeat(12, 1fr); }
.evps-row { display: flex; align-items: center; gap: var(--evps-space-3); }
.evps-row--between { justify-content: space-between; }
.evps-stack { display: flex; flex-direction: column; gap: var(--evps-space-3); }
.evps-stack--lg { gap: var(--evps-space-5); }
.evps-stack--sm { gap: var(--evps-space-2); }
.evps-mono { font-family: var(--evps-font-mono); }
.evps-tnum { font-feature-settings: "tnum" 1; }
.evps-muted { color: var(--evps-text-muted); }
.evps-dim   { color: var(--evps-text-dim); }
.evps-truncate { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.evps-divider { height: 1px; background: var(--evps-border-subtle); margin: var(--evps-space-5) 0; }

@media (max-width: 1024px) {
  .evps-grid--4 { grid-template-columns: repeat(2, 1fr); }
  .evps-grid--3 { grid-template-columns: repeat(2, 1fr); }
}
@media (max-width: 640px) {
  .evps-grid--2, .evps-grid--3, .evps-grid--4 { grid-template-columns: 1fr; }
}

/* ── Surface switcher (top-of-page in this prototype) ── */
.evps-surface-switcher {
  position: sticky;
  top: 0;
  z-index: var(--evps-z-sticky);
  background: var(--evps-bg-elevated);
  border-bottom: 1px solid var(--evps-border);
  padding: var(--evps-space-3) var(--evps-space-6);
  display: flex;
  align-items: center;
  gap: var(--evps-space-3);
  flex-wrap: wrap;
}
.evps-surface-switcher__brand {
  display: flex; align-items: center; gap: var(--evps-space-2);
  font-weight: var(--evps-fw-semibold);
  font-size: 13px;
  letter-spacing: -0.01em;
  margin-right: var(--evps-space-3);
}
.evps-surface-switcher__brand-mark {
  width: 22px; height: 22px;
  border-radius: var(--evps-radius-xs);
  background: linear-gradient(135deg, var(--evps-primary), var(--evps-accent));
  display: grid; place-items: center;
  color: white;
  font-size: 11px;
  font-weight: var(--evps-fw-bold);
}
.evps-surface-tab {
  padding: 6px var(--evps-space-3);
  border-radius: var(--evps-radius-md);
  font-size: 12.5px;
  font-weight: var(--evps-fw-medium);
  color: var(--evps-text-muted);
  background: transparent;
  border: 1px solid transparent;
  cursor: pointer;
  display: inline-flex;
  align-items: center;
  gap: 6px;
  transition: all var(--evps-dur-fast);
}
.evps-surface-tab:hover { color: var(--evps-text); background: var(--evps-surface-2); }
.evps-surface-tab--active {
  color: var(--evps-text);
  background: var(--evps-surface-2);
  border-color: var(--evps-border);
}

/* ── AI Assistant — Floating Bubble + Drawer ─────────── */
.evps-ai-bubble {
  position: fixed;
  z-index: var(--evps-z-ai);
  width: 56px; height: 56px;
  border-radius: 50%;
  background: linear-gradient(135deg, var(--evps-accent), var(--evps-primary));
  color: white;
  border: none;
  cursor: grab;
  box-shadow: var(--evps-shadow-lg), 0 0 0 4px var(--evps-bg-elevated), 0 0 24px rgba(139, 92, 246, 0.45);
  display: grid; place-items: center;
  transition: transform var(--evps-dur-base) var(--evps-ease-spring);
}
.evps-ai-bubble:hover { transform: scale(1.06); }
.evps-ai-bubble:active { cursor: grabbing; }
.evps-ai-bubble[data-dragging="true"] { transition: none; }
.evps-ai-bubble__pulse {
  position: absolute; inset: -4px;
  border-radius: 50%;
  border: 2px solid var(--evps-accent);
  animation: evps-ai-pulse 2.4s ease-out infinite;
}
@keyframes evps-ai-pulse {
  0% { transform: scale(0.85); opacity: 0.8; }
  100% { transform: scale(1.4); opacity: 0; }
}

.evps-ai-drawer {
  position: fixed;
  z-index: var(--evps-z-ai);
  width: 420px;
  max-width: calc(100vw - 32px);
  max-height: 80vh;
  background: var(--evps-bg-elevated);
  border: 1px solid var(--evps-border);
  border-radius: var(--evps-radius-xl);
  box-shadow: var(--evps-shadow-xl);
  display: flex;
  flex-direction: column;
  overflow: hidden;
  animation: evps-ai-pop var(--evps-dur-base) var(--evps-ease-spring);
}
@keyframes evps-ai-pop {
  from { opacity: 0; transform: translateY(12px) scale(0.96); }
  to   { opacity: 1; transform: translateY(0) scale(1); }
}
.evps-ai-drawer__head {
  padding: var(--evps-space-4);
  border-bottom: 1px solid var(--evps-border);
  display: flex;
  align-items: center;
  gap: var(--evps-space-3);
  cursor: grab;
  background: linear-gradient(180deg, color-mix(in srgb, var(--evps-accent) 12%, transparent) 0%, transparent 100%);
}
.evps-ai-drawer__head:active { cursor: grabbing; }
.evps-ai-drawer__avatar {
  width: 32px; height: 32px;
  border-radius: var(--evps-radius-md);
  background: linear-gradient(135deg, var(--evps-accent), var(--evps-primary));
  display: grid; place-items: center;
  color: white;
  font-size: 14px;
}
.evps-ai-drawer__title { font-size: 13.5px; font-weight: var(--evps-fw-semibold); }
.evps-ai-drawer__sub { font-size: 11px; color: var(--evps-text-muted); display: flex; align-items: center; gap: 5px; }
.evps-ai-drawer__sub::before {
  content: ""; width: 6px; height: 6px; background: var(--evps-success); border-radius: 50%;
  box-shadow: 0 0 0 3px var(--evps-success-soft);
}
.evps-ai-drawer__close { margin-left: auto; }
.evps-ai-drawer__body { flex: 1; overflow-y: auto; padding: var(--evps-space-4); display: flex; flex-direction: column; gap: var(--evps-space-3); }
.evps-ai-context {
  font-size: 11px; color: var(--evps-text-muted);
  background: var(--evps-surface-2);
  border: 1px dashed var(--evps-border);
  border-radius: var(--evps-radius-md);
  padding: 8px 10px;
  display: flex; align-items: center; gap: 6px;
}

.evps-ai-msg { display: flex; gap: 10px; }
.evps-ai-msg__avatar {
  width: 28px; height: 28px;
  border-radius: var(--evps-radius-md);
  display: grid; place-items: center;
  flex-shrink: 0;
  font-size: 11px;
  font-weight: var(--evps-fw-semibold);
}
.evps-ai-msg--bot .evps-ai-msg__avatar {
  background: linear-gradient(135deg, var(--evps-accent), var(--evps-primary));
  color: white;
}
.evps-ai-msg--user { flex-direction: row-reverse; }
.evps-ai-msg--user .evps-ai-msg__avatar {
  background: var(--evps-surface-3);
  color: var(--evps-text);
}
.evps-ai-msg__bubble {
  background: var(--evps-surface-2);
  border: 1px solid var(--evps-border);
  border-radius: var(--evps-radius-md);
  padding: 10px 12px;
  font-size: 13px;
  max-width: 85%;
  line-height: var(--evps-lh-snug);
}
.evps-ai-msg--user .evps-ai-msg__bubble {
  background: var(--evps-primary);
  color: white;
  border-color: transparent;
}
.evps-ai-msg__bubble pre {
  margin: 8px 0 0;
  background: var(--evps-surface-inset);
  border: 1px solid var(--evps-border);
  border-radius: var(--evps-radius-sm);
  padding: 8px 10px;
  font-family: var(--evps-font-mono);
  font-size: 11.5px;
  overflow-x: auto;
  position: relative;
}

.evps-ai-typing {
  display: inline-flex; gap: 3px;
  padding: 10px 14px;
  background: var(--evps-surface-2);
  border: 1px solid var(--evps-border);
  border-radius: var(--evps-radius-md);
}
.evps-ai-typing span {
  width: 5px; height: 5px;
  background: var(--evps-text-muted);
  border-radius: 50%;
  animation: evps-ai-dot 1.2s infinite;
}
.evps-ai-typing span:nth-child(2) { animation-delay: 0.2s; }
.evps-ai-typing span:nth-child(3) { animation-delay: 0.4s; }
@keyframes evps-ai-dot {
  0%,60%,100% { opacity: 0.3; transform: translateY(0); }
  30% { opacity: 1; transform: translateY(-2px); }
}

.evps-ai-prompts { display: flex; flex-wrap: wrap; gap: 6px; }
.evps-ai-prompt {
  font-size: 11.5px;
  padding: 5px 10px;
  background: var(--evps-surface-2);
  border: 1px solid var(--evps-border);
  border-radius: var(--evps-radius-pill);
  cursor: pointer;
  color: var(--evps-text-muted);
  transition: all var(--evps-dur-fast);
}
.evps-ai-prompt:hover { background: var(--evps-primary-soft); color: var(--evps-primary); border-color: transparent; }

.evps-ai-drawer__input {
  border-top: 1px solid var(--evps-border);
  padding: var(--evps-space-3);
  display: flex;
  align-items: flex-end;
  gap: var(--evps-space-2);
}
.evps-ai-drawer__input textarea {
  flex: 1;
  background: var(--evps-surface-inset);
  border: 1px solid var(--evps-border);
  border-radius: var(--evps-radius-md);
  resize: none;
  padding: 8px 10px;
  font-size: 13px;
  color: var(--evps-text);
  outline: none;
  min-height: 36px;
  max-height: 120px;
  font-family: var(--evps-font-sans);
}
.evps-ai-drawer__input textarea:focus { border-color: var(--evps-primary); box-shadow: 0 0 0 3px var(--evps-primary-ring); }

@media (max-width: 640px) {
  .evps-ai-drawer { width: calc(100vw - 24px); right: 12px !important; left: 12px !important; bottom: 12px !important; top: auto !important; }
}

/* ── Command palette ──────────────────────────────────── */
.evps-cmdk__overlay {
  position: fixed; inset: 0;
  background: rgba(8, 10, 16, 0.6);
  backdrop-filter: blur(6px);
  z-index: var(--evps-z-cmdk);
  display: grid;
  place-items: start center;
  padding-top: 12vh;
}
.evps-cmdk {
  width: 640px; max-width: calc(100vw - 32px);
  background: var(--evps-bg-elevated);
  border: 1px solid var(--evps-border);
  border-radius: var(--evps-radius-xl);
  box-shadow: var(--evps-shadow-xl);
  overflow: hidden;
  display: flex;
  flex-direction: column;
  max-height: 70vh;
}
.evps-cmdk__input {
  border: none;
  background: transparent;
  padding: var(--evps-space-5);
  font-size: 16px;
  color: var(--evps-text);
  outline: none;
  border-bottom: 1px solid var(--evps-border);
}
.evps-cmdk__list { padding: 6px; overflow-y: auto; flex: 1; }
.evps-cmdk__group {
  font-size: 10px;
  text-transform: uppercase;
  letter-spacing: var(--evps-tracking-caps);
  color: var(--evps-text-dim);
  padding: 8px 12px 4px;
  font-weight: var(--evps-fw-semibold);
}
.evps-cmdk__item {
  padding: 8px 10px;
  border-radius: var(--evps-radius-md);
  display: flex;
  align-items: center;
  gap: var(--evps-space-3);
  cursor: pointer;
  font-size: 13px;
}
.evps-cmdk__item:hover, .evps-cmdk__item--active { background: var(--evps-primary-soft); }
.evps-cmdk__item-icon { width: 20px; color: var(--evps-text-muted); display: grid; place-items: center; }
.evps-cmdk__item-shortcut { margin-left: auto; font-family: var(--evps-font-mono); font-size: 11px; color: var(--evps-text-dim); }

/* ── Toast ──────────────────────────────────────────── */
.evps-toast-stack {
  position: fixed;
  bottom: 16px; right: 16px;
  z-index: var(--evps-z-toast);
  display: flex;
  flex-direction: column-reverse;
  gap: 8px;
  pointer-events: none;
}
.evps-toast {
  pointer-events: auto;
  background: var(--evps-surface);
  border: 1px solid var(--evps-border);
  border-radius: var(--evps-radius-md);
  padding: 10px 12px;
  font-size: 13px;
  display: flex;
  align-items: center;
  gap: 10px;
  min-width: 280px;
  box-shadow: var(--evps-shadow-md);
  animation: evps-toast-in 240ms var(--evps-ease-spring);
}
@keyframes evps-toast-in {
  from { opacity: 0; transform: translateY(8px); }
  to   { opacity: 1; transform: translateY(0); }
}
.evps-toast__icon { color: var(--evps-success); flex-shrink: 0; }
.evps-toast--info .evps-toast__icon { color: var(--evps-info); }
.evps-toast--danger .evps-toast__icon { color: var(--evps-danger); }

/* ── Trust strip ───────────────────────────────────── */
.evps-trust-strip {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: var(--evps-space-7);
  padding: var(--evps-space-4) var(--evps-space-5);
  border-top: 1px solid var(--evps-border-subtle);
  border-bottom: 1px solid var(--evps-border-subtle);
  font-size: 11px;
  color: var(--evps-text-muted);
  flex-wrap: wrap;
}
.evps-trust-strip i { color: var(--evps-success); margin-right: 6px; }

/* ── Progress steps ────────────────────────────────── */
.evps-steps { display: flex; gap: 0; align-items: center; }
.evps-step { display: flex; align-items: center; gap: 8px; flex: 1; }
.evps-step__dot {
  width: 24px; height: 24px;
  border-radius: 50%;
  background: var(--evps-surface-3);
  display: grid; place-items: center;
  font-size: 11px;
  font-weight: var(--evps-fw-semibold);
  color: var(--evps-text-muted);
  border: 1px solid var(--evps-border);
}
.evps-step--done .evps-step__dot { background: var(--evps-success); color: white; border-color: transparent; }
.evps-step--current .evps-step__dot { background: var(--evps-primary); color: white; border-color: transparent; box-shadow: 0 0 0 4px var(--evps-primary-ring); }
.evps-step__label { font-size: 12px; color: var(--evps-text-muted); }
.evps-step--done .evps-step__label, .evps-step--current .evps-step__label { color: var(--evps-text); font-weight: var(--evps-fw-medium); }
.evps-step__line { flex: 1; height: 1px; background: var(--evps-border); margin: 0 8px; }
.evps-step--done + .evps-step .evps-step__line { background: var(--evps-success); }

/* ── Pricing tier card ───────────────────────────── */
.evps-tier {
  position: relative;
  background: var(--evps-surface);
  border: 1px solid var(--evps-border);
  border-radius: var(--evps-radius-xl);
  padding: var(--evps-space-6);
  display: flex;
  flex-direction: column;
  gap: var(--evps-space-4);
  transition: all var(--evps-dur-base);
}
.evps-tier:hover { border-color: var(--evps-border-strong); box-shadow: var(--evps-shadow-md); }
.evps-tier--featured {
  border-color: var(--evps-primary);
  background: linear-gradient(180deg, var(--evps-primary-soft) 0%, var(--evps-surface) 35%);
  box-shadow: 0 0 0 1px var(--evps-primary), var(--evps-shadow-md);
}
.evps-tier__ribbon {
  position: absolute;
  top: -10px; right: 18px;
  padding: 3px 10px;
  background: var(--evps-primary);
  color: white;
  font-size: 10px;
  font-weight: var(--evps-fw-bold);
  letter-spacing: var(--evps-tracking-caps);
  text-transform: uppercase;
  border-radius: var(--evps-radius-pill);
}
.evps-tier__name { font-size: 14px; font-weight: var(--evps-fw-semibold); letter-spacing: -0.005em; margin: 0; }
.evps-tier__desc { font-size: 12px; color: var(--evps-text-muted); }
.evps-tier__price { display: flex; align-items: baseline; gap: 4px; }
.evps-tier__price-amt { font-size: 32px; font-weight: var(--evps-fw-semibold); letter-spacing: var(--evps-tracking-tight); }
.evps-tier__price-cycle { font-size: 12px; color: var(--evps-text-muted); }
.evps-tier__features { display: flex; flex-direction: column; gap: 8px; font-size: 12.5px; }
.evps-tier__feat { display: flex; align-items: center; gap: 8px; color: var(--evps-text-muted); }
.evps-tier__feat i { color: var(--evps-success); font-size: 11px; }
.evps-tier__feat strong { color: var(--evps-text); font-weight: var(--evps-fw-semibold); }

/* ── KBD ───────────────────────────────────────────── */
.evps-kbd {
  display: inline-block;
  font-family: var(--evps-font-mono);
  font-size: 10px;
  border: 1px solid var(--evps-border);
  border-bottom-width: 2px;
  border-radius: var(--evps-radius-xs);
  padding: 1px 5px;
  color: var(--evps-text-muted);
  background: var(--evps-surface-2);
}

/* ── Order Form additions (Phase 5) ── */

/* ============================================================
   ORDER FORM PAGE WRAPPER & LAYOUT
   ============================================================ */

/* Page shell */
.evps-orderform {
  padding: var(--evps-space-6) var(--evps-space-4);
}
@media (min-width: 768px) {
  .evps-orderform { padding: var(--evps-space-8) var(--evps-space-6); }
}

/* Breadcrumb trail */
.evps-orderform__breadcrumb {
  display: flex;
  align-items: center;
  gap: var(--evps-space-2);
  margin-bottom: var(--evps-space-5);
  font-size: var(--evps-fs-sm);
  color: var(--evps-text-muted);
  flex-wrap: wrap;
}
.evps-orderform__crumb-sep { color: var(--evps-text-dim); }
.evps-orderform__crumb { color: var(--evps-text); font-weight: var(--evps-fw-medium); }

/* 2-column layout: main content + sticky sidebar */
.evps-orderform__layout {
  display: grid;
  grid-template-columns: 1fr;
  gap: var(--evps-space-6);
  align-items: start;
}
@media (min-width: 992px) {
  .evps-orderform__layout { grid-template-columns: 1fr 380px; }
}

/* Product group tabs nav */
.evps-orderform__groups {
  margin-bottom: var(--evps-space-6);
}

/* Domain search/configure section */
.evps-orderform__domain-step { margin-bottom: var(--evps-space-5); }
.evps-orderform__domain-input { margin-top: var(--evps-space-4); }

/* Compare / cross-sell block */
.evps-orderform__compare {
  margin-top: var(--evps-space-7);
  padding: var(--evps-space-6);
  background: var(--evps-surface-inset);
  border-radius: var(--evps-radius-lg);
  border: 1px solid var(--evps-border-subtle);
}

/* Action row (back/forward buttons) */
.evps-orderform__actions {
  display: flex;
  align-items: center;
  gap: var(--evps-space-3);
  flex-wrap: wrap;
  margin-top: var(--evps-space-6);
}

/* Checkout page centred hero header */
.evps-orderform__checkout-header {
  text-align: center;
  margin-bottom: var(--evps-space-6);
}

/* ============================================================
   EVPS-TIER  (product pricing cards inside evps-product-grid)
   ============================================================ */

/* evps-product-grid: auto-fit responsive grid */
.evps-product-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(260px, 1fr));
  gap: var(--evps-space-5);
  align-items: start;
}

/* Tier card — base already established in main CSS; these are additive elements */
.evps-tier__head {
  display: flex;
  flex-direction: column;
  gap: var(--evps-space-1);
}
.evps-tier__setup {
  font-size: var(--evps-fs-xs);
  color: var(--evps-text-dim);
  margin-top: calc(-1 * var(--evps-space-2));
}

/* ============================================================
   EVPS-RADIO-CARD  (cycle picker, domain mode, etc.)
   ============================================================ */

.evps-radio-card {
  position: relative;
  display: flex;
  align-items: center;
  gap: var(--evps-space-3);
  padding: var(--evps-space-3) var(--evps-space-4);
  background: var(--evps-surface);
  border: 1px solid var(--evps-border);
  border-radius: var(--evps-radius-md);
  cursor: pointer;
  transition: border-color var(--evps-dur-fast) var(--evps-ease-out),
              box-shadow  var(--evps-dur-fast) var(--evps-ease-out),
              background  var(--evps-dur-fast) var(--evps-ease-out);
  user-select: none;
}
@media (prefers-reduced-motion: reduce) {
  .evps-radio-card { transition: none; }
}
.evps-radio-card:hover { border-color: var(--evps-border-strong); background: var(--evps-surface-2); }
.evps-radio-card.is-selected,
.evps-radio-card:has(.evps-radio-card__input:checked) {
  border-color: var(--evps-primary);
  box-shadow: 0 0 0 2px var(--evps-primary-ring);
  background: var(--evps-primary-soft);
}
.evps-radio-card.is-disabled,
.evps-radio-card:has(.evps-radio-card__input:disabled) { opacity: 0.45; pointer-events: none; }

/* Visually-hidden input */
.evps-radio-card__input {
  position: absolute;
  width: 1px; height: 1px;
  padding: 0; margin: -1px;
  overflow: hidden;
  clip: rect(0,0,0,0);
  white-space: nowrap;
  border: 0;
}
.evps-radio-card__input:focus-visible ~ .evps-radio-card__body { outline: 2px solid var(--evps-primary-ring); outline-offset: 2px; }

.evps-radio-card__icon {
  flex-shrink: 0;
  width: 28px; height: 28px;
  display: grid; place-items: center;
  border-radius: var(--evps-radius-sm);
  background: var(--evps-surface-3);
  color: var(--evps-text-muted);
}
.evps-radio-card.is-selected .evps-radio-card__icon,
.evps-radio-card:has(.evps-radio-card__input:checked) .evps-radio-card__icon {
  background: var(--evps-primary-soft);
  color: var(--evps-primary);
}

.evps-radio-card__body { flex: 1; min-width: 0; }
.evps-radio-card__label { font-size: var(--evps-fs-base); font-weight: var(--evps-fw-medium); color: var(--evps-text); }
.evps-radio-card__sub   { font-size: var(--evps-fs-sm); color: var(--evps-text-muted); margin-top: 2px; }
.evps-radio-card__hint  { font-size: var(--evps-fs-xs); color: var(--evps-success); margin-top: 2px; }

/* ============================================================
   EVPS-OPTION-CARD  (OS, region, add-on picker)
   ============================================================ */

.evps-option-card {
  position: relative;
  display: flex;
  align-items: flex-start;
  gap: var(--evps-space-3);
  padding: var(--evps-space-3) var(--evps-space-4);
  background: var(--evps-surface);
  border: 1px solid var(--evps-border);
  border-radius: var(--evps-radius-md);
  cursor: pointer;
  transition: border-color var(--evps-dur-fast) var(--evps-ease-out),
              box-shadow  var(--evps-dur-fast) var(--evps-ease-out),
              background  var(--evps-dur-fast) var(--evps-ease-out);
  user-select: none;
}
@media (prefers-reduced-motion: reduce) {
  .evps-option-card { transition: none; }
}
.evps-option-card:hover { border-color: var(--evps-border-strong); background: var(--evps-surface-2); }
.evps-option-card.is-selected,
.evps-option-card:has(.evps-option-card__input:checked) {
  border-color: var(--evps-primary);
  box-shadow: 0 0 0 2px var(--evps-primary-ring);
  background: var(--evps-primary-soft);
}

.evps-option-card__input {
  position: absolute;
  width: 1px; height: 1px;
  padding: 0; margin: -1px;
  overflow: hidden;
  clip: rect(0,0,0,0);
  white-space: nowrap;
  border: 0;
}
.evps-option-card__input:focus-visible ~ .evps-option-card__body { outline: 2px solid var(--evps-primary-ring); outline-offset: 2px; }

.evps-option-card__icon {
  flex-shrink: 0;
  width: 32px; height: 32px;
  display: grid; place-items: center;
  border-radius: var(--evps-radius-sm);
  background: var(--evps-surface-3);
  color: var(--evps-text-muted);
}
.evps-option-card.is-selected .evps-option-card__icon,
.evps-option-card:has(.evps-option-card__input:checked) .evps-option-card__icon {
  background: var(--evps-primary-soft);
  color: var(--evps-primary);
}

.evps-option-card__body  { flex: 1; min-width: 0; }
.evps-option-card__head  { display: flex; align-items: center; gap: var(--evps-space-2); flex-wrap: wrap; }
.evps-option-card__label { font-size: var(--evps-fs-base); font-weight: var(--evps-fw-medium); color: var(--evps-text); }
.evps-option-card__sub   { font-size: var(--evps-fs-sm); color: var(--evps-text-muted); margin-top: 2px; }
.evps-option-card__desc  { font-size: var(--evps-fs-sm); color: var(--evps-text-muted); margin-top: var(--evps-space-1); line-height: var(--evps-lh-relaxed); }
.evps-option-card__price {
  flex-shrink: 0;
  font-size: var(--evps-fs-sm);
  font-weight: var(--evps-fw-medium);
  color: var(--evps-text);
  white-space: nowrap;
  margin-left: auto;
  align-self: center;
}

/* ============================================================
   EVPS-PAYMENT-METHOD  (gateway picker, extends radio-card)
   ============================================================ */

.evps-payment-method__badges {
  display: flex;
  gap: var(--evps-space-1);
  flex-shrink: 0;
}
.evps-payment-method__badge {
  display: inline-block;
  padding: 2px 6px;
  border-radius: var(--evps-radius-xs);
  background: var(--evps-surface-3);
  border: 1px solid var(--evps-border);
  font-size: var(--evps-fs-xs);
  font-weight: var(--evps-fw-bold);
  letter-spacing: var(--evps-tracking-wide);
  color: var(--evps-text-muted);
  text-transform: uppercase;
}
.evps-payment-method__icon {
  flex-shrink: 0;
  width: 32px; height: 32px;
  display: grid; place-items: center;
  border-radius: var(--evps-radius-sm);
  background: var(--evps-surface-3);
  color: var(--evps-text-muted);
}

/* ============================================================
   EVPS-TRUST-STRIP  (extend with __item)
   ============================================================ */

.evps-trust-strip__item {
  display: flex;
  align-items: center;
  gap: var(--evps-space-2);
  font-size: var(--evps-fs-xs);
  color: var(--evps-text-muted);
  white-space: nowrap;
}
.evps-trust-strip__item i,
.evps-trust-strip__item svg { color: var(--evps-success); flex-shrink: 0; }

/* ============================================================
   EVPS-SUMMARY  (sticky wrapper for order_summary.tpl)
   ============================================================ */

.evps-summary { width: 100%; }
@media (min-width: 992px) {
  .evps-summary--sticky {
    position: sticky;
    top: var(--evps-space-4);
    max-height: calc(100vh - var(--evps-space-8));
    overflow-y: auto;
    overscroll-behavior: contain;
    z-index: var(--evps-z-sticky);
    scrollbar-width: thin;
    scrollbar-color: var(--evps-border) transparent;
  }
}
@media print {
  .evps-summary--sticky { position: static; max-height: none; overflow: visible; }
}

/* ============================================================
   EVPS-ORDER-SUMMARY  (line-item breakdown inside the card)
   ============================================================ */

.evps-order-summary__intro {
  padding-bottom: var(--evps-space-4);
  margin-bottom: var(--evps-space-4);
  border-bottom: 1px solid var(--evps-border-subtle);
}
.evps-order-summary__lines {
  display: flex;
  flex-direction: column;
  gap: var(--evps-space-2);
  margin-bottom: var(--evps-space-3);
}
.evps-order-summary__row {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: var(--evps-space-3);
  font-size: var(--evps-fs-sm);
  color: var(--evps-text);
}
.evps-order-summary__row.is-muted { color: var(--evps-text-muted); }
.evps-order-summary__row.is-bold  { font-weight: var(--evps-fw-semibold); }
.evps-order-summary__label { flex: 1; min-width: 0; }
.evps-order-summary__amt   { flex-shrink: 0; }
.evps-order-summary__rule  { height: 1px; background: var(--evps-border-subtle); margin: var(--evps-space-3) 0; }
.evps-order-summary__total {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: var(--evps-space-3);
  margin-bottom: var(--evps-space-4);
}
.evps-order-summary__total-label { font-size: var(--evps-fs-base); font-weight: var(--evps-fw-semibold); }
.evps-order-summary__total-amt   { font-size: var(--evps-fs-xl); font-weight: var(--evps-fw-bold); letter-spacing: var(--evps-tracking-tight); }
.evps-order-summary__promo       { margin-top: var(--evps-space-4); }
.evps-order-summary__assurances  {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: var(--evps-space-4);
  margin-top: var(--evps-space-4);
  font-size: var(--evps-fs-xs);
  color: var(--evps-text-dim);
  flex-wrap: wrap;
}
.evps-order-summary__assurances span { display: flex; align-items: center; gap: 4px; }
.evps-order-summary__footer {
  margin-top: var(--evps-space-4);
  padding-top: var(--evps-space-4);
  border-top: 1px solid var(--evps-border-subtle);
}

/* ============================================================
   EVPS-STEPS  (stepper — already has base rules; add line state)
   ============================================================ */

/* Connector line — is a sibling <li> between step <li> items */
.evps-step__line {
  flex: 1;
  height: 1px;
  background: var(--evps-border);
  margin: 0 var(--evps-space-2);
  transition: background var(--evps-dur-base);
}
@media (prefers-reduced-motion: reduce) {
  .evps-step__line { transition: none; }
}
/* Done step: colour the following connector */
.evps-step--done ~ .evps-step__line { background: var(--evps-success); }

/* ============================================================
   EVPS-CART-ROW  (product/domain line item in cart)
   ============================================================ */

.evps-cart-row {
  display: flex;
  align-items: center;
  gap: var(--evps-space-4);
  padding: var(--evps-space-4) 0;
  border-bottom: 1px solid var(--evps-border-subtle);
}
.evps-cart-row:last-child { border-bottom: none; }
.evps-cart-row__main  { flex: 1; min-width: 0; }
.evps-cart-row__title { font-size: var(--evps-fs-base); font-weight: var(--evps-fw-medium); color: var(--evps-text); }
.evps-cart-row__sub   { font-size: var(--evps-fs-sm); color: var(--evps-text-muted); margin-top: 2px; }
.evps-cart-row__meta  { font-size: var(--evps-fs-xs); color: var(--evps-text-dim); margin-top: 2px; }
.evps-cart-row__price {
  flex-shrink: 0;
  font-size: var(--evps-fs-md);
  font-weight: var(--evps-fw-semibold);
  color: var(--evps-text);
  text-align: right;
}
.evps-cart-row__price-aux { font-size: var(--evps-fs-xs); color: var(--evps-text-muted); font-weight: var(--evps-fw-regular); }
.evps-cart-row__actions {
  flex-shrink: 0;
  display: flex;
  align-items: center;
  gap: var(--evps-space-2);
}

/* ============================================================
   EVPS-DOMAIN-SEARCH  /  EVPS-DOMAIN-RESULT  /  EVPS-DOMAIN-SUGGESTION
   ============================================================ */

/* Domain search form wrapper */
.evps-domain-search { margin-bottom: var(--evps-space-7); }
.evps-domain-search__input-group { width: 100%; }
@media (min-width: 768px) {
  .evps-domain-search__input-group { max-width: 720px; margin-inline: auto; }
}

/* Single domain result row */
.evps-domain-result {
  display: flex;
  align-items: center;
  gap: var(--evps-space-4);
  padding: var(--evps-space-3) var(--evps-space-4);
  border-radius: var(--evps-radius-md);
  background: var(--evps-surface-inset);
  border: 1px solid var(--evps-border-subtle);
  transition: border-color var(--evps-dur-fast);
  flex-wrap: wrap;
}
.evps-domain-result.is-available { border-color: var(--evps-success); background: var(--evps-success-soft); }
.evps-domain-result__name   { flex: 1; min-width: 0; font-size: var(--evps-fs-md); font-weight: var(--evps-fw-medium); color: var(--evps-text); }
.evps-domain-result__status { flex-shrink: 0; }
.evps-domain-result__price  { flex-shrink: 0; font-size: var(--evps-fs-sm); color: var(--evps-text-muted); }
.evps-domain-result__action { flex-shrink: 0; }

/* Suggestion card (grid of alternates) */
.evps-domain-suggestion {
  display: flex;
  flex-direction: column;
  gap: var(--evps-space-2);
  padding: var(--evps-space-4);
  background: var(--evps-surface);
  border: 1px solid var(--evps-border);
  border-radius: var(--evps-radius-md);
  align-items: flex-start;
}
.evps-domain-suggestion:hover { border-color: var(--evps-border-strong); }

/* Generic domain row (reusable in addons/transfers) */
.evps-domain-row {
  display: flex;
  align-items: center;
  gap: var(--evps-space-3);
  padding: var(--evps-space-3) 0;
  border-bottom: 1px solid var(--evps-border-subtle);
  font-size: var(--evps-fs-sm);
}
.evps-domain-row:last-child { border-bottom: none; }

/* ============================================================
   EVPS-CONFIRM-HERO  (success / pending / danger states)
   ============================================================ */

.evps-confirm-hero {
  display: flex;
  flex-direction: column;
  align-items: center;
  text-align: center;
  gap: var(--evps-space-3);
  padding: var(--evps-space-10) var(--evps-space-5);
}
.evps-confirm-hero__icon {
  width: 80px; height: 80px;
  border-radius: 50%;
  display: grid; place-items: center;
  background: var(--evps-success-soft);
  color: var(--evps-success);
  font-size: 0;
}
.evps-confirm-hero--pending .evps-confirm-hero__icon,
.evps-confirm-hero__icon--warning {
  background: var(--evps-warning-soft);
  color: var(--evps-warning);
}
.evps-confirm-hero--danger .evps-confirm-hero__icon,
.evps-confirm-hero__icon--danger {
  background: var(--evps-danger-soft);
  color: var(--evps-danger);
}
.evps-confirm-hero__title {
  font-size: var(--evps-fs-2xl);
  font-weight: var(--evps-fw-bold);
  letter-spacing: var(--evps-tracking-tight);
  margin: 0;
}
.evps-confirm-hero__subtitle {
  font-size: var(--evps-fs-md);
  color: var(--evps-text-muted);
  max-width: 560px;
  line-height: var(--evps-lh-relaxed);
  margin: 0;
}
.evps-confirm-hero__amount {
  font-size: var(--evps-fs-3xl);
  font-weight: var(--evps-fw-bold);
  letter-spacing: var(--evps-tracking-tight);
  margin-top: var(--evps-space-2);
}

/* ============================================================
   EVPS-TIMELINE  (provisioning step list on complete.tpl)
   ============================================================ */

.evps-timeline {
  list-style: none;
  margin: 0; padding: 0;
  display: flex;
  flex-direction: column;
  gap: 0;
}
.evps-timeline__item {
  display: flex;
  align-items: flex-start;
  gap: var(--evps-space-4);
  padding: var(--evps-space-4) 0;
  position: relative;
}
/* vertical connector line */
.evps-timeline__item:not(:last-child)::before {
  content: '';
  position: absolute;
  left: 15px; top: 44px;
  width: 2px;
  bottom: 0;
  background: var(--evps-border);
}
.evps-timeline__item--done::before    { background: var(--evps-success); }
.evps-timeline__item--current::before { background: var(--evps-primary-soft); }

.evps-timeline__dot {
  flex-shrink: 0;
  width: 32px; height: 32px;
  border-radius: 50%;
  display: grid; place-items: center;
  background: var(--evps-surface-3);
  border: 2px solid var(--evps-border);
  color: var(--evps-text-muted);
  z-index: 1;
}
.evps-timeline__item--done    .evps-timeline__dot { background: var(--evps-success); border-color: transparent; color: var(--evps-text-inverse); }
.evps-timeline__item--current .evps-timeline__dot {
  background: var(--evps-primary);
  border-color: transparent;
  color: var(--evps-text-inverse);
  box-shadow: 0 0 0 4px var(--evps-primary-ring);
}

.evps-timeline__body  { flex: 1; min-width: 0; padding-top: 5px; }
.evps-timeline__title { font-size: var(--evps-fs-base); font-weight: var(--evps-fw-medium); color: var(--evps-text); }
.evps-timeline__meta  { font-size: var(--evps-fs-sm); color: var(--evps-text-muted); margin-top: 2px; line-height: var(--evps-lh-relaxed); }

/* ============================================================
   EVPS-BULLET-LIST  (custom-dot branded list)
   ============================================================ */

.evps-bullet-list {
  list-style: none;
  margin: 0; padding: 0;
  display: flex;
  flex-direction: column;
  gap: var(--evps-space-3);
}
.evps-bullet-list li {
  display: flex;
  align-items: flex-start;
  gap: var(--evps-space-3);
  font-size: var(--evps-fs-base);
  color: var(--evps-text);
  line-height: var(--evps-lh-relaxed);
}
.evps-bullet-list li::before {
  content: '';
  flex-shrink: 0;
  width: 6px; height: 6px;
  border-radius: 50%;
  background: var(--evps-primary);
  margin-top: 7px;
}

/* ============================================================
   EVPS-ACCOUNT-SUMMARY  (signed-in user row on checkout)
   ============================================================ */

.evps-account-summary {
  display: flex;
  align-items: center;
  gap: var(--evps-space-4);
  padding: var(--evps-space-4) 0;
  flex-wrap: wrap;
}
.evps-account-summary__body { flex: 1; min-width: 0; }
.evps-account-summary__name {
  font-size: var(--evps-fs-base);
  font-weight: var(--evps-fw-medium);
  color: var(--evps-text);
}
.evps-account-summary__email { font-size: var(--evps-fs-sm); color: var(--evps-text-muted); margin-top: 1px; }

/* ============================================================
   EVPS-CHECKOUT-AUTH  (guest sign-in nudge)
   ============================================================ */

.evps-checkout-auth__intro {
  font-size: var(--evps-fs-sm);
  color: var(--evps-text-muted);
  margin-bottom: var(--evps-space-4);
  line-height: var(--evps-lh-relaxed);
}
.evps-checkout-auth__intro a {
  color: var(--evps-primary);
  text-decoration: underline;
  text-underline-offset: 3px;
}

/* ============================================================
   EVPS-CHECKOUT-SECURITY  (SSL / silent-challenge row)
   ============================================================ */

.evps-checkout-security {
  display: flex;
  align-items: center;
  gap: var(--evps-space-4);
  padding: var(--evps-space-3) 0;
}
.evps-checkout-security__icon {
  flex-shrink: 0;
  width: 36px; height: 36px;
  border-radius: var(--evps-radius-sm);
  background: var(--evps-success-soft);
  color: var(--evps-success);
  display: grid; place-items: center;
}
.evps-checkout-security__body  { flex: 1; min-width: 0; }
.evps-checkout-security__title { font-size: var(--evps-fs-base); font-weight: var(--evps-fw-medium); color: var(--evps-text); }
.evps-checkout-security__desc  { font-size: var(--evps-fs-sm); color: var(--evps-text-muted); margin-top: 1px; }

/* ============================================================
   EVPS-CHECKOUT-SUMMARY-PLAN  (plan name+meta in summary intro)
   ============================================================ */

.evps-checkout-summary-plan { padding: var(--evps-space-2) 0; }
.evps-checkout-summary-plan__name { font-size: var(--evps-fs-base); font-weight: var(--evps-fw-semibold); color: var(--evps-text); margin-bottom: 2px; }
.evps-checkout-summary-plan__meta { font-size: var(--evps-fs-sm); color: var(--evps-text-muted); line-height: var(--evps-lh-relaxed); }

/* ============================================================
   EVPS-CHECKOUT-NEXT  ("What happens next" footer panel)
   ============================================================ */

.evps-checkout-next {
  background: var(--evps-surface-inset);
  border-radius: var(--evps-radius-md);
  padding: var(--evps-space-4);
  font-size: var(--evps-fs-sm);
}
.evps-checkout-next__title {
  display: flex;
  align-items: center;
  gap: var(--evps-space-2);
  font-weight: var(--evps-fw-semibold);
  color: var(--evps-text);
  margin-bottom: var(--evps-space-3);
}
.evps-checkout-next__steps {
  margin: 0;
  padding-left: var(--evps-space-5);
  display: flex;
  flex-direction: column;
  gap: var(--evps-space-2);
  color: var(--evps-text-muted);
  line-height: var(--evps-lh-relaxed);
}

/* ============================================================
   EVPS-SAVED-METHOD  (saved-card row in checkout)
   ============================================================ */

.evps-saved-method {
  display: flex;
  align-items: center;
  gap: var(--evps-space-3);
  padding: var(--evps-space-3) var(--evps-space-4);
  background: var(--evps-surface);
  border: 1px solid var(--evps-border);
  border-radius: var(--evps-radius-md);
  cursor: pointer;
  transition: border-color var(--evps-dur-fast) var(--evps-ease-out),
              background  var(--evps-dur-fast) var(--evps-ease-out);
}
@media (prefers-reduced-motion: reduce) {
  .evps-saved-method { transition: none; }
}
.evps-saved-method:hover { border-color: var(--evps-border-strong); background: var(--evps-surface-2); }
.evps-saved-method:has(input[type="radio"]:checked) {
  border-color: var(--evps-primary);
  box-shadow: 0 0 0 2px var(--evps-primary-ring);
  background: var(--evps-primary-soft);
}
.evps-saved-method input[type="radio"] {
  flex-shrink: 0;
  accent-color: var(--evps-primary);
  width: 16px; height: 16px;
}
.evps-saved-method__icon {
  flex-shrink: 0;
  width: 32px; height: 32px;
  border-radius: var(--evps-radius-sm);
  background: var(--evps-surface-3);
  display: grid; place-items: center;
  color: var(--evps-text-muted);
}
.evps-saved-method__body  { flex: 1; min-width: 0; }
.evps-saved-method__name  { font-size: var(--evps-fs-base); font-weight: var(--evps-fw-medium); color: var(--evps-text); }
.evps-saved-method__exp   { font-size: var(--evps-fs-xs); color: var(--evps-text-muted); margin-top: 1px; }

/* ============================================================
   EVPS-TOS  (Terms of Service acceptance row)
   ============================================================ */

.evps-tos {
  display: flex;
  align-items: flex-start;
  gap: var(--evps-space-3);
  cursor: pointer;
}
.evps-tos input[type="checkbox"] {
  flex-shrink: 0;
  margin-top: 2px;
  accent-color: var(--evps-primary);
  width: 16px; height: 16px;
}
.evps-tos input[type="checkbox"]:focus-visible { outline: 2px solid var(--evps-primary-ring); outline-offset: 2px; }
.evps-tos__text {
  font-size: var(--evps-fs-sm);
  color: var(--evps-text-muted);
  line-height: var(--evps-lh-relaxed);
}
.evps-tos__text a {
  color: var(--evps-primary);
  text-decoration: underline;
  text-underline-offset: 3px;
}
.evps-tos__text a:focus-visible { outline: 2px solid var(--evps-primary-ring); outline-offset: 2px; }

/* ============================================================
   EVPS-SECURITY-POLICIES  (embedded T&C block)
   ============================================================ */

.evps-security-policies__body {
  font-size: var(--evps-fs-sm);
  color: var(--evps-text-muted);
  line-height: var(--evps-lh-relaxed);
  max-height: 240px;
  overflow-y: auto;
  border: 1px solid var(--evps-border-subtle);
  border-radius: var(--evps-radius-sm);
  padding: var(--evps-space-4);
  background: var(--evps-surface-inset);
  scrollbar-width: thin;
  scrollbar-color: var(--evps-border) transparent;
}
.evps-security-policies__list {
  list-style: none;
  margin: 0; padding: 0;
  display: flex;
  flex-direction: column;
  gap: var(--evps-space-3);
}
.evps-security-policies__list li {
  display: flex;
  align-items: flex-start;
  gap: var(--evps-space-3);
  font-size: var(--evps-fs-sm);
  color: var(--evps-text-muted);
  line-height: var(--evps-lh-relaxed);
}
.evps-security-policies__list li svg,
.evps-security-policies__list li i { color: var(--evps-primary); flex-shrink: 0; margin-top: 2px; }
.evps-security-policies__assurances {
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  gap: var(--evps-space-4);
  margin-top: var(--evps-space-5);
  font-size: var(--evps-fs-xs);
  color: var(--evps-text-muted);
}
.evps-security-policies__assurances span { display: flex; align-items: center; gap: var(--evps-space-2); }
.evps-security-policies__assurances svg,
.evps-security-policies__assurances i   { color: var(--evps-success); }

/* ============================================================
   EVPS-INPUT-PREFIX  (inline prefix/suffix for input groups)
   ============================================================ */

.evps-input-prefix {
  display: inline-flex;
  align-items: center;
  padding: 0 var(--evps-space-3);
  background: var(--evps-surface-3);
  border: 1px solid var(--evps-border);
  border-right: none;
  border-radius: var(--evps-radius-md) 0 0 var(--evps-radius-md);
  font-size: var(--evps-fs-sm);
  color: var(--evps-text-dim);
  white-space: nowrap;
  height: var(--evps-control-h-lg);
  flex-shrink: 0;
}
/* Inside an evps-input-group, round left edge of subsequent input */
.evps-input-group > .evps-input-prefix + .evps-input { border-radius: 0; }

/* ============================================================
   EVPS-TOGGLE  (small inline toggle / show-advanced row)
   ============================================================ */

.evps-toggle {
  display: inline-flex;
  align-items: center;
  gap: var(--evps-space-2);
  cursor: pointer;
  user-select: none;
  font-size: var(--evps-fs-sm);
  color: var(--evps-text-muted);
  padding: var(--evps-space-1) 0;
}
.evps-toggle input[type="checkbox"] {
  accent-color: var(--evps-primary);
  width: 15px; height: 15px;
  flex-shrink: 0;
}
.evps-toggle input[type="checkbox"]:focus-visible { outline: 2px solid var(--evps-primary-ring); outline-offset: 2px; }
.evps-toggle:hover { color: var(--evps-text); }

/* ============================================================
   EVPS-TEXT-DIM  (secondary / muted utility)
   ============================================================ */

.evps-text-dim  { color: var(--evps-text-dim) !important; }
.evps-text-muted { color: var(--evps-text-muted) !important; }

/* ============================================================
   EVPS-TABLE-WRAP  (horizontal scroll container)
   ============================================================ */

.evps-table-wrap {
  width: 100%;
  overflow-x: auto;
  -webkit-overflow-scrolling: touch;
  border-radius: var(--evps-radius-md);
  border: 1px solid var(--evps-border);
  scrollbar-width: thin;
  scrollbar-color: var(--evps-border) transparent;
}
.evps-table-wrap table {
  width: 100%;
  min-width: 540px;
  border-collapse: collapse;
}

/* ============================================================
   RESPONSIVE ADJUSTMENTS
   ============================================================ */

@media (max-width: 767px) {
  /* Stepper: hide labels on tiny viewports */
  .evps-step__label { display: none; }
  .evps-step { flex: none; }

  /* Cart rows: stack meta under title on very narrow screens */
  .evps-cart-row { flex-wrap: wrap; }
  .evps-cart-row__price { width: 100%; text-align: left; }

  /* Domain results: stack vertically */
  .evps-domain-result { flex-direction: column; align-items: flex-start; gap: var(--evps-space-3); }
  .evps-domain-result__action { width: 100%; }

  /* Confirm hero: reduce padding */
  .evps-confirm-hero { padding: var(--evps-space-7) var(--evps-space-4); }
  .evps-confirm-hero__title { font-size: var(--evps-fs-xl); }

  /* Product grid: single column */
  .evps-product-grid { grid-template-columns: 1fr; }
}

@media (min-width: 768px) {
  /* Cart rows: tighter on tablet+ */
  .evps-cart-row { flex-wrap: nowrap; }

  /* Domain result: inline row */
  .evps-domain-result { flex-direction: row; align-items: center; }

  /* Show step labels */
  .evps-step__label { display: inline; }
}

/* ============================================================
   PRINT OVERRIDES
   ============================================================ */

@media print {
  .evps-orderform__actions,
  .evps-confirm-hero .evps-btn,
  .evps-summary--sticky { display: none !important; }
  .evps-cart-row { page-break-inside: avoid; }
  .evps-timeline__item { page-break-inside: avoid; }
}

/* ==========================================================================
   VISUAL POLISH + RESPONSIVE PASS — v1.1.0
   Appended rules. All colors via var(--evps-*). All transitions guarded by
   prefers-reduced-motion. Mobile-first (min-width breakpoints).
   ========================================================================== */

/* ============================================================
   SIDEBAR COLLAPSE — icon-only rail at 64px
   Triggered by body.evps-sidebar-collapsed (JS toggles this).
   The existing [data-sidebar="collapsed"] approach on .evps-app
   remains for server-rendered state; this body-class approach
   allows pure-JS toggling without touching data attributes.
   ============================================================ */

body.evps-sidebar-collapsed .evps-app {
  grid-template-columns: var(--evps-sidebar-w-sm) 1fr;
}
body.evps-sidebar-collapsed .evps-sidebar {
  width: var(--evps-sidebar-w-sm);
  overflow: visible; /* allow tooltip overflow */
}
body.evps-sidebar-collapsed .evps-sidebar__brand-text,
body.evps-sidebar-collapsed .evps-sidebar__group-label,
body.evps-sidebar-collapsed .evps-nav-item__label,
body.evps-sidebar-collapsed .evps-nav-item__badge,
body.evps-sidebar-collapsed .evps-sidebar__user-info {
  display: none;
}
body.evps-sidebar-collapsed .evps-nav-item {
  justify-content: center;
  padding: 10px;
}
body.evps-sidebar-collapsed .evps-sidebar__footer {
  justify-content: center;
}
/* Chevron flips when collapsed */
body.evps-sidebar-collapsed [data-evps-sidebar-toggle] i {
  transform: rotate(180deg);
}
[data-evps-sidebar-toggle] i {
  transition: transform var(--evps-dur-base) var(--evps-ease-out);
}
@media (prefers-reduced-motion: reduce) {
  [data-evps-sidebar-toggle] i { transition: none; }
}

/* Tooltip on hover in collapsed state */
body.evps-sidebar-collapsed .evps-nav-item {
  position: relative;
}
body.evps-sidebar-collapsed .evps-nav-item::after {
  content: attr(data-label);
  position: absolute;
  left: calc(100% + 10px);
  top: 50%;
  transform: translateY(-50%);
  background: var(--evps-surface-2);
  border: 1px solid var(--evps-border);
  border-radius: var(--evps-radius-md);
  padding: 5px 10px;
  font-size: 12px;
  font-weight: var(--evps-fw-medium);
  color: var(--evps-text);
  white-space: nowrap;
  box-shadow: var(--evps-shadow-md);
  opacity: 0;
  pointer-events: none;
  z-index: var(--evps-z-tooltip);
  transition: opacity var(--evps-dur-fast) var(--evps-ease-out);
}
body.evps-sidebar-collapsed .evps-nav-item:hover::after {
  opacity: 1;
}
@media (prefers-reduced-motion: reduce) {
  body.evps-sidebar-collapsed .evps-nav-item::after { transition: none; }
}

/* ============================================================
   MOBILE SIDEBAR — off-canvas slide + scrim overlay
   <768px: sidebar slides off-screen left; hamburger reveals it.
   body.evps-sidebar-open shows it; scrim click closes.
   ============================================================ */

@media (max-width: 767px) {
  .evps-app {
    grid-template-columns: 1fr !important;
  }
  .evps-sidebar {
    position: fixed;
    top: 0; left: 0; bottom: 0;
    width: var(--evps-sidebar-w) !important;
    z-index: var(--evps-z-drawer);
    transform: translateX(-100%);
    transition: transform var(--evps-dur-slow) var(--evps-ease-out), visibility var(--evps-dur-slow);
    box-shadow: none;
    /* Off-canvas AND hidden so the nav links inside are not keyboard-tabbable
       or screen-reader-reachable while the drawer is closed (A11Y-006). */
    visibility: hidden;
  }
  body.evps-sidebar-open .evps-sidebar {
    transform: translateX(0);
    box-shadow: var(--evps-shadow-xl);
    visibility: visible;
  }
  @media (prefers-reduced-motion: reduce) {
    .evps-sidebar { transition: none; }
  }

  /* Scrim overlay */
  .evps-sidebar-scrim {
    display: block;
    position: fixed;
    inset: 0;
    background: rgba(0,0,0,0.55);
    z-index: calc(var(--evps-z-drawer) - 1);
    opacity: 0;
    pointer-events: none;
    transition: opacity var(--evps-dur-base) var(--evps-ease-out);
  }
  body.evps-sidebar-open .evps-sidebar-scrim {
    opacity: 1;
    pointer-events: auto;
  }
  @media (prefers-reduced-motion: reduce) {
    .evps-sidebar-scrim { transition: none; }
  }

  /* Topbar: show hamburger, hide desktop sidebar toggle in footer */
  .evps-topbar__hamburger {
    display: grid;
    place-items: center;
    width: 34px; height: 34px;
    border-radius: var(--evps-radius-md);
    border: 1px solid transparent;
    background: transparent;
    color: var(--evps-text-muted);
    cursor: pointer;
    flex-shrink: 0;
    transition: background var(--evps-dur-fast);
  }
  .evps-topbar__hamburger:hover {
    background: var(--evps-surface-2);
    color: var(--evps-text);
    border-color: var(--evps-border);
  }
  /* Hide desktop collapse toggle inside sidebar footer on mobile */
  .evps-sidebar__footer [data-evps-sidebar-toggle] {
    display: none;
  }
  /* Always show labels in mobile sidebar (not collapsed) */
  body.evps-sidebar-open .evps-nav-item__label,
  body.evps-sidebar-open .evps-sidebar__brand-text,
  body.evps-sidebar-open .evps-sidebar__group-label {
    display: revert;
  }
}

/* Hide hamburger on desktop */
@media (min-width: 768px) {
  .evps-topbar__hamburger { display: none; }
  .evps-sidebar-scrim     { display: none !important; }
}

/* Logo in topbar: hide on desktop where sidebar logo covers it */
@media (min-width: 768px) {
  .evps-topbar__logo { display: none; }
}

/* ============================================================
   DENSITY COMPACT — audit + gap fills
   Tokens already handle --evps-row-py / --evps-card-pad.
   These rules catch components that read padding directly.
   ============================================================ */

[data-density="compact"] .evps-page {
  padding: var(--evps-space-5) var(--evps-space-5);
}
[data-density="compact"] .evps-tabs__item {
  padding: 7px var(--evps-space-3);
}
[data-density="compact"] .evps-table thead th {
  padding: var(--evps-space-2) var(--evps-space-3);
}
[data-density="compact"] .evps-table tbody td {
  padding: var(--evps-row-py) var(--evps-space-3);
}
[data-density="compact"] .evps-stat {
  padding: var(--evps-card-pad);
}
[data-density="compact"] .evps-service-card {
  padding: var(--evps-card-pad);
}
[data-density="compact"] .evps-field {
  margin-bottom: var(--evps-space-3);
}
[data-density="compact"] .evps-cart-row {
  padding: var(--evps-space-3) 0;
}
[data-density="compact"] .evps-timeline__item {
  padding: var(--evps-space-3) 0;
}

/* ============================================================
   THEME TOGGLE — sun/moon icon swap
   data-current-theme attr is set by applyTheme() in JS.
   We swap visibility; aria-label handles screen-reader context.
   ============================================================ */

/* Dark mode: show moon */
[data-evps-theme-toggle] .evps-theme-icon-moon   { display: inline; }
[data-evps-theme-toggle] .evps-theme-icon-sun    { display: none; }
[data-evps-theme-toggle] .evps-theme-icon-auto   { display: none; }
/* Light mode */
[data-evps-theme-toggle][data-current-theme="light"] .evps-theme-icon-moon  { display: none; }
[data-evps-theme-toggle][data-current-theme="light"] .evps-theme-icon-sun   { display: inline; }
[data-evps-theme-toggle][data-current-theme="light"] .evps-theme-icon-auto  { display: none; }
/* Auto mode */
[data-evps-theme-toggle][data-current-theme="auto"] .evps-theme-icon-moon   { display: none; }
[data-evps-theme-toggle][data-current-theme="auto"] .evps-theme-icon-sun    { display: none; }
[data-evps-theme-toggle][data-current-theme="auto"] .evps-theme-icon-auto   { display: inline; }

/* ── Segmented 3-way switcher (Auto / Light / Dark) — the discoverable
   header control. A pill of three icon buttons; the active one is filled. */
.evps-theme-toggle {
  display: inline-flex;
  align-items: center;
  gap: 2px;
  padding: 2px;
  border-radius: var(--evps-radius-pill, 999px);
  background: var(--evps-surface-2, #181d28);
  border: 1px solid var(--evps-border, #232a39);
}
.evps-theme-toggle .evps-iconbtn {
  width: 28px;
  height: 28px;
  border-radius: var(--evps-radius-pill, 999px);
  border: 0;
  background: transparent;
  color: var(--evps-text-muted, #9aa3b8);
  display: inline-flex;
  align-items: center;
  justify-content: center;
  cursor: pointer;
  transition: background var(--evps-dur-fast, .15s), color var(--evps-dur-fast, .15s);
}
.evps-theme-toggle .evps-iconbtn:hover { color: var(--evps-text, #e8ecf5); }
.evps-theme-toggle .evps-iconbtn.is-active {
  background: var(--evps-primary, #3b6cf6);
  color: #fff;
}
.evps-theme-toggle .evps-iconbtn:focus-visible {
  outline: none;
  box-shadow: 0 0 0 3px var(--evps-primary-ring, rgba(59,108,246,.4));
}

/* ============================================================
   FOCUS RINGS — :focus-visible audit
   Every interactive element gets a ring using the primary ring
   token. We use outline so it respects border-radius cleanly.
   ============================================================ */

a:focus-visible,
button:focus-visible,
input:focus-visible,
select:focus-visible,
textarea:focus-visible,
[tabindex]:not([tabindex="-1"]):focus-visible,
summary:focus-visible {
  outline: 2px solid var(--evps-primary);
  outline-offset: 2px;
  box-shadow: 0 0 0 4px var(--evps-primary-ring);
}
/* Suppress for elements that already manage their own ring */
.evps-btn:focus-visible,
.evps-input:focus-visible,
.evps-select:focus-visible,
.evps-textarea:focus-visible,
.evps-topbar__search input:focus-visible {
  outline: none; /* box-shadow ring already applied by component rules */
}
/* Account menu details/summary */
.evps-account-menu > summary:focus-visible {
  outline: 2px solid var(--evps-primary);
  outline-offset: 3px;
  box-shadow: 0 0 0 4px var(--evps-primary-ring);
}
/* Nav items */
.evps-nav-item:focus-visible {
  outline: 2px solid var(--evps-primary);
  outline-offset: -2px;
}
/* Icon buttons */
.evps-iconbtn:focus-visible {
  outline: 2px solid var(--evps-primary);
  outline-offset: 2px;
  box-shadow: 0 0 0 4px var(--evps-primary-ring);
}

/* ============================================================
   CARD + STAT HOVER — scale + shadow (pointer devices only)
   ============================================================ */

@media (hover: hover) {
  .evps-card {
    transition: box-shadow var(--evps-dur-base) var(--evps-ease-out),
                transform  var(--evps-dur-base) var(--evps-ease-out),
                border-color var(--evps-dur-base);
  }
  .evps-card:hover {
    box-shadow: var(--evps-shadow-md);
    transform: translateY(-1px);
    border-color: var(--evps-border-strong);
  }
  .evps-stat {
    transition: box-shadow var(--evps-dur-base) var(--evps-ease-out),
                transform  var(--evps-dur-base) var(--evps-ease-out);
  }
  .evps-stat:hover {
    box-shadow: var(--evps-shadow-md);
    transform: translateY(-1px);
  }
  @media (prefers-reduced-motion: reduce) {
    .evps-card,
    .evps-stat { transition: box-shadow var(--evps-dur-base); }
    .evps-card:hover,
    .evps-stat:hover { transform: none; }
  }
}

/* ============================================================
   SKELETON SHIMMER — respect prefers-reduced-motion
   The global token already zeroes durations, but the
   @keyframes animation still plays. Explicitly pause it.
   ============================================================ */

@media (prefers-reduced-motion: reduce) {
  .evps-skel,
  .evps-skeleton-line {
    animation: none;
    background: var(--evps-surface-3);
  }
}
/* .evps-skeleton-line alias (referenced in task brief) */
.evps-skeleton-line {
  display: block;
  height: 14px;
  border-radius: var(--evps-radius-sm);
  background: linear-gradient(90deg, var(--evps-surface-2) 25%, var(--evps-surface-3) 50%, var(--evps-surface-2) 75%);
  background-size: 200% 100%;
  animation: evps-skel-shimmer 1.4s ease-in-out infinite;
}

/* ============================================================
   TOAST STACK — slide-in animation, max 4 visible, dismiss
   #evps-toast-root is the mount point injected by JS.
   ============================================================ */

#evps-toast-root {
  position: fixed;
  bottom: var(--evps-space-4);
  right:  var(--evps-space-4);
  z-index: var(--evps-z-toast);
  display: flex;
  flex-direction: column-reverse;
  gap: var(--evps-space-2);
  pointer-events: none;
  max-width: 380px;
  width: calc(100vw - var(--evps-space-8));
}
#evps-toast-root .evps-toast {
  pointer-events: auto;
  transform: translateX(0);
  animation: evps-toast-slide-in var(--evps-dur-base) var(--evps-ease-spring) both;
}
/* Cap to 4 visible — 5th and beyond hidden via :nth-child */
#evps-toast-root .evps-toast:nth-child(n+5) {
  display: none;
}
@keyframes evps-toast-slide-in {
  from {
    opacity: 0;
    transform: translateX(calc(100% + var(--evps-space-4)));
  }
  to {
    opacity: 1;
    transform: translateX(0);
  }
}
@media (prefers-reduced-motion: reduce) {
  #evps-toast-root .evps-toast {
    animation: none;
  }
}

/* Dismiss state */
.evps-toast.is-dismissing {
  animation: evps-toast-slide-out var(--evps-dur-base) var(--evps-ease-in-out) forwards;
}
@keyframes evps-toast-slide-out {
  from { opacity: 1; transform: translateX(0); max-height: 80px; margin-bottom: 0; }
  to   { opacity: 0; transform: translateX(calc(100% + var(--evps-space-4))); max-height: 0; margin-bottom: calc(-1 * var(--evps-space-2)); }
}
@media (prefers-reduced-motion: reduce) {
  .evps-toast.is-dismissing { animation: none; opacity: 0; }
}

/* Close button inside toast */
.evps-toast__close {
  margin-left: auto;
  flex-shrink: 0;
  background: transparent;
  border: none;
  color: var(--evps-text-dim);
  cursor: pointer;
  padding: 2px;
  border-radius: var(--evps-radius-xs);
  line-height: 1;
}
.evps-toast__close:hover { color: var(--evps-text); }
.evps-toast__close:focus-visible {
  outline: 2px solid var(--evps-primary);
  outline-offset: 2px;
}

/* ============================================================
   PRINT STYLES — invoice / full-page print pass
   ============================================================ */

@media print {
  /* Hide chrome */
  .evps-sidebar,
  .evps-topbar,
  .evps-sidebar-scrim,
  #evps-toast-root,
  .evps-ai-bubble,
  .evps-ai-drawer,
  [data-evps-cmdk-trigger],
  .evps-topbar__actions,
  .evps-topbar__hamburger {
    display: none !important;
  }

  /* Expand main content to full width */
  .evps-app {
    display: block !important;
  }
  .evps-main {
    display: block !important;
    width: 100% !important;
  }
  .evps-content,
  .evps-page {
    padding: 0 !important;
    max-width: 100% !important;
  }

  /* Reset sticky/fixed positioning */
  .evps-topbar { position: static !important; }

  /* Fonts and color */
  body {
    font-size: 12pt;
    color: #000;
    background: #fff;
  }
  .evps-card {
    border: 1px solid #ccc !important;
    box-shadow: none !important;
    break-inside: avoid;
  }
  a { color: #000 !important; text-decoration: none !important; }

  /* Tables: show borders */
  .evps-table thead th,
  .evps-table tbody td {
    border: 1px solid #ccc !important;
    color: #000 !important;
  }
}

/* ============================================================
   ACCOUNT MENU — details/summary polish
   ============================================================ */

.evps-account-menu {
  position: relative;
}
.evps-account-menu > summary {
  list-style: none;
  cursor: pointer;
}
.evps-account-menu > summary::-webkit-details-marker { display: none; }
.evps-account-menu__panel {
  position: absolute;
  top: calc(100% + 8px);
  right: 0;
  min-width: 200px;
  background: var(--evps-surface-2);
  border: 1px solid var(--evps-border);
  border-radius: var(--evps-radius-lg);
  box-shadow: var(--evps-shadow-lg);
  z-index: var(--evps-z-dropdown);
  overflow: hidden;
  padding: var(--evps-space-2) 0;
}
.evps-account-menu__header {
  padding: var(--evps-space-3) var(--evps-space-4);
  border-bottom: 1px solid var(--evps-border-subtle);
  margin-bottom: var(--evps-space-1);
}
.evps-account-menu__name {
  font-size: 13px;
  font-weight: var(--evps-fw-semibold);
  color: var(--evps-text);
}
.evps-account-menu__email {
  font-size: 11px;
  color: var(--evps-text-muted);
  margin-top: 1px;
}
.evps-account-menu__item {
  display: flex;
  align-items: center;
  gap: var(--evps-space-3);
  padding: var(--evps-space-2) var(--evps-space-4);
  font-size: 13px;
  color: var(--evps-text-muted);
  transition: background var(--evps-dur-fast), color var(--evps-dur-fast);
}
.evps-account-menu__item:hover {
  background: var(--evps-surface-3);
  color: var(--evps-text);
}
.evps-account-menu__item:focus-visible {
  outline: 2px solid var(--evps-primary);
  outline-offset: -2px;
}
@media (prefers-reduced-motion: reduce) {
  .evps-account-menu__item { transition: none; }
}

/* ============================================================
   SKIP LINK
   ============================================================ */

.evps-skip-link {
  position: absolute;
  top: -100%;
  left: var(--evps-space-4);
  z-index: var(--evps-z-cmdk);
  background: var(--evps-primary);
  color: white;
  padding: var(--evps-space-2) var(--evps-space-4);
  border-radius: var(--evps-radius-md);
  font-size: 13px;
  font-weight: var(--evps-fw-semibold);
  text-decoration: none;
}
.evps-skip-link:focus-visible {
  top: var(--evps-space-4);
  outline: 2px solid white;
  outline-offset: 2px;
}

/* ============================================================
   APP SHELL TRANSITION — grid col change smoothed
   ============================================================ */

.evps-app {
  transition: grid-template-columns var(--evps-dur-base) var(--evps-ease-out);
}
@media (prefers-reduced-motion: reduce) {
  .evps-app { transition: none; }
}

/* ==========================================================================
   PHASE G — Third-party CSS override defense (1.0.14)
   --------------------------------------------------------------------------
   Audit on 2026-05-07 found `fps-site-theme.css` (Fraud Prevention Suite
   addon) injecting global rules like:
     h1, h2, h3, h4, h5, h6,
     .section-title, .panel-heading, .modal-title, .package-name {
       color: rgb(15, 23, 42);
     }
   That file loads AFTER our evps-1000x.css so its declarations win the
   cascade and force every heading on our dark surface to slate-900 —
   invisible. Phase G re-asserts our token-driven values on every EVPS
   class with !important, scoped to data-theme so light mode still flips.
   ========================================================================== */

/* 1. EVPS heading + label colors */
[data-theme="dark"] .evps-card__title,
[data-theme="dark"] .evps-empty__title,
[data-theme="dark"] .evps-stat__label,
[data-theme="dark"] .evps-stat__value,
[data-theme="dark"] .evps-stat__icon,
[data-theme="dark"] .evps-page__title,
[data-theme="dark"] .evps-page__subtitle,
[data-theme="dark"] .evps-section__title,
[data-theme="dark"] .evps-section__subtitle,
[data-theme="dark"] .evps-sidebar__brand-name,
[data-theme="dark"] .evps-sidebar__user-name,
[data-theme="dark"] .evps-topbar__logo,
[data-theme="dark"] .evps-topbar__breadcrumb,
[data-theme="dark"] .evps-account-menu__name,
[data-theme="dark"] .evps-account-menu__header,
[data-theme="dark"] .evps-link__title,
[data-theme="dark"] .evps-ticket-card__title,
[data-theme="dark"] .evps-service-card__title,
[data-theme="dark"] .evps-product-card__title,
[data-theme="dark"] .evps-modal__title,
[data-theme="dark"] .evps-form__legend,
[data-theme="dark"] .evps-app h1,
[data-theme="dark"] .evps-app h2,
[data-theme="dark"] .evps-app h3,
[data-theme="dark"] .evps-app h4,
[data-theme="dark"] .evps-app h5,
[data-theme="dark"] .evps-app h6,
[data-theme="dark"] .evps-page h1,
[data-theme="dark"] .evps-page h2,
[data-theme="dark"] .evps-page h3,
[data-theme="dark"] .evps-page h4 {
  color: var(--evps-text) !important;
}

/* 2. Muted secondary text */
[data-theme="dark"] .evps-card__sub,
[data-theme="dark"] .evps-stat__delta,
[data-theme="dark"] .evps-empty__desc,
[data-theme="dark"] .evps-link__sub,
[data-theme="dark"] .evps-form__hint,
[data-theme="dark"] .evps-help,
[data-theme="dark"] .evps-text-muted,
[data-theme="dark"] .evps-account-menu__email,
[data-theme="dark"] .evps-sidebar__brand-sub,
[data-theme="dark"] .evps-sidebar__user-tier {
  color: var(--evps-text-muted) !important;
}

/* 3. Card surface defense */
[data-theme="dark"] .evps-card,
[data-theme="dark"] .evps-stat,
[data-theme="dark"] .evps-empty,
[data-theme="dark"] .evps-ticket-card,
[data-theme="dark"] .evps-service-card,
[data-theme="dark"] .evps-product-card,
[data-theme="dark"] .evps-section {
  background: var(--evps-surface) !important;
  color: var(--evps-text) !important;
  border-color: var(--evps-border) !important;
}

/* 4. Sidebar + topbar foundation */
[data-theme="dark"] .evps-sidebar,
[data-theme="dark"] .evps-topbar {
  background: var(--evps-bg) !important;
  color: var(--evps-text) !important;
  border-color: var(--evps-border) !important;
}

/* 5. Theme/density/sidebar toggle bumped visibility */
.evps-iconbtn {
  background: var(--evps-surface) !important;
  border: 1px solid var(--evps-border) !important;
  color: var(--evps-text) !important;
}
.evps-iconbtn:hover {
  background: var(--evps-surface-2) !important;
  border-color: var(--evps-border-strong) !important;
  color: var(--evps-text) !important;
}
.evps-iconbtn:focus-visible {
  outline: 2px solid var(--evps-primary) !important;
  outline-offset: 2px;
}
.evps-iconbtn[data-active="true"] {
  background: var(--evps-primary-soft) !important;
  color: var(--evps-primary) !important;
  border-color: rgba(59, 108, 246, 0.4) !important;
}

/* 6. Service / invoice / ticket cards body text */
[data-theme="dark"] .evps-service-card__name,
[data-theme="dark"] .evps-invoice-card__number,
[data-theme="dark"] .evps-ticket-card__number,
[data-theme="dark"] .evps-service-card__domain,
[data-theme="dark"] .evps-invoice-card__total {
  color: var(--evps-text) !important;
  font-weight: var(--evps-fw-semibold);
}

/* 7. Tab nav (filter pills) */
[data-theme="dark"] .evps-tabs .evps-tab,
[data-theme="dark"] .evps-pill-tabs a,
[data-theme="dark"] .evps-tab-list a {
  color: var(--evps-text-muted) !important;
}
[data-theme="dark"] .evps-tabs .evps-tab.is-active,
[data-theme="dark"] .evps-tabs .evps-tab[aria-selected="true"],
[data-theme="dark"] .evps-pill-tabs a.is-active,
[data-theme="dark"] .evps-tab-list a.is-active {
  color: var(--evps-text) !important;
  background: var(--evps-surface-2) !important;
  border-color: var(--evps-primary) !important;
}

/* 8. Form labels (Account Details was nearly invisible) */
[data-theme="dark"] .evps-form .evps-label,
[data-theme="dark"] .evps-field label,
[data-theme="dark"] .evps-page form label {
  color: var(--evps-text) !important;
  font-weight: var(--evps-fw-semibold);
}
[data-theme="dark"] .evps-form input[type="text"],
[data-theme="dark"] .evps-form input[type="email"],
[data-theme="dark"] .evps-form input[type="password"],
[data-theme="dark"] .evps-form input[type="tel"],
[data-theme="dark"] .evps-form input[type="number"],
[data-theme="dark"] .evps-form select,
[data-theme="dark"] .evps-form textarea,
[data-theme="dark"] .evps-page form input[type="text"],
[data-theme="dark"] .evps-page form input[type="email"],
[data-theme="dark"] .evps-page form input[type="tel"],
[data-theme="dark"] .evps-page form input[type="number"],
[data-theme="dark"] .evps-page form select {
  background: var(--evps-surface-inset) !important;
  color: var(--evps-text) !important;
  border-color: var(--evps-border) !important;
}
[data-theme="dark"] .evps-form select option {
  background: var(--evps-surface) !important;
  color: var(--evps-text) !important;
}

/* 9. Topbar search bar */
[data-theme="dark"] .evps-topbar__search,
[data-theme="dark"] .evps-topbar__search input {
  background: var(--evps-surface-inset) !important;
  color: var(--evps-text) !important;
  border-color: var(--evps-border) !important;
}
[data-theme="dark"] .evps-topbar__search input::placeholder {
  color: var(--evps-text-muted) !important;
}

/* 10. Sidebar nav links */
[data-theme="dark"] .evps-sidebar .evps-nav-item,
[data-theme="dark"] .evps-sidebar .evps-nav-item a,
[data-theme="dark"] .evps-sidebar nav a {
  color: var(--evps-text-muted) !important;
}
[data-theme="dark"] .evps-sidebar .evps-nav-item:hover,
[data-theme="dark"] .evps-sidebar .evps-nav-item.is-active,
[data-theme="dark"] .evps-sidebar .evps-nav-item.is-active a,
[data-theme="dark"] .evps-sidebar nav a.is-active {
  color: var(--evps-text) !important;
}

/* 11. Light theme parity */
[data-theme="light"] .evps-card__title,
[data-theme="light"] .evps-empty__title,
[data-theme="light"] .evps-stat__value,
[data-theme="light"] .evps-page__title,
[data-theme="light"] .evps-section__title,
[data-theme="light"] .evps-app h1,
[data-theme="light"] .evps-app h2,
[data-theme="light"] .evps-app h3,
[data-theme="light"] .evps-app h4 {
  color: var(--evps-text) !important;
}

/* 12. Body + main background defense — FPS site theme forces body bg to
   #f8fafc (light), defeating our dark surface. Force the body + main
   content area to our token bg so light text isn't on light bg. */
[data-theme="dark"] html,
[data-theme="dark"] body,
[data-theme="dark"] body.bodyBg,
[data-theme="dark"] body.body-with-sidebar,
[data-theme="dark"] body.body-without-sidebar {
  background: var(--evps-bg) !important;
  color: var(--evps-text) !important;
}
[data-theme="dark"] .evps-app,
[data-theme="dark"] .evps-app__main,
[data-theme="dark"] .evps-main,
[data-theme="dark"] .evps-page,
[data-theme="dark"] main,
[data-theme="dark"] .main-body,
[data-theme="dark"] #main-body,
[data-theme="dark"] .container-fluid,
[data-theme="dark"] .row {
  background: transparent !important;
  color: var(--evps-text) !important;
}

/* 13. Page header subtitle / lead text in dark mode */
[data-theme="dark"] .evps-page__subtitle,
[data-theme="dark"] .evps-page__lead,
[data-theme="dark"] .evps-page p.lead {
  color: var(--evps-text-muted) !important;
}

/* 14. Light mode body should be light */
[data-theme="light"] html,
[data-theme="light"] body {
  background: var(--evps-bg) !important;
  color: var(--evps-text) !important;
}

/* ── 15. Responsive helpers — `.evps-only-desktop` / `.evps-only-mobile`
       Used across templates (invoices, tickets, services) to render a
       table on desktop and stacked cards on mobile. Without these rules
       BOTH render simultaneously. */
.evps-only-mobile { display: none !important; }
.evps-only-desktop { display: block !important; }
@media (max-width: 768px) {
  .evps-only-desktop { display: none !important; }
  .evps-only-mobile { display: block !important; }
}

/* ── 16. Hide the FPS Fraud-Prevention-Suite colorblind-toggle button on
       EVPS-managed pages. FPS still injects this <button> at the top-left
       of the body even when `enable_site_theme_overrides` is off, because
       it's a separate accessibility feature. On dark-themed EVPS pages it
       renders with browser-default outset border + #f0f0f0 bg, which the
       user sees as a broken pale rectangle in the top-left. Operators who
       want the FA can opt back in via FPS settings, but EVPS hides it by
       default. */
body.evps-skin .fps-cb-toggle,
body[data-evps-managed] .fps-cb-toggle,
.evps-app .fps-cb-toggle,
#fps-cb-btn {
  display: none !important;
}

/* ==========================================================================
   PHASE J — WOW factor (1.0.17)
   --------------------------------------------------------------------------
   Premium design pass: gradient meshes, hover lift + glow, status-tinted
   borders, animated entrance, glass topbar, premium buttons, accent
   sidebar, custom empty states. All token-driven, all dark-first with
   light-theme parity. Respects prefers-reduced-motion.
   ========================================================================== */

/* ── J1. App backdrop — subtle vignette + radial accents ───────────────── */
[data-theme="dark"] body {
  background:
    radial-gradient(900px 600px at 80% -10%, rgba(59, 108, 246, 0.10), transparent 60%),
    radial-gradient(720px 540px at -10% 90%, rgba(139, 92, 246, 0.07), transparent 55%),
    var(--evps-bg) !important;
  background-attachment: fixed !important;
}

/* ── J2. Page hero — gradient mesh + display title + accent stripe ─────── */
.evps-page__header {
  position: relative;
  padding: 26px 28px 22px !important;
  margin-bottom: 24px !important;
  border-radius: 16px;
  background:
    linear-gradient(135deg, rgba(59, 108, 246, 0.12) 0%, rgba(139, 92, 246, 0.06) 35%, transparent 70%),
    linear-gradient(180deg, var(--evps-surface) 0%, rgba(18, 22, 31, 0.6) 100%);
  border: 1px solid var(--evps-border);
  overflow: hidden;
  isolation: isolate;
}
.evps-page__header::before {
  content: "";
  position: absolute;
  inset: 0 0 auto 0;
  height: 2px;
  background: linear-gradient(90deg, transparent 0%, var(--evps-primary) 30%, var(--evps-accent, #14b8a6) 70%, transparent 100%);
  opacity: 0.6;
  z-index: 1;
}
.evps-page__header::after {
  content: "";
  position: absolute;
  top: -120px; right: -120px;
  width: 320px; height: 320px;
  border-radius: 50%;
  background: radial-gradient(circle, rgba(59, 108, 246, 0.18), transparent 70%);
  pointer-events: none;
  z-index: 0;
}
[data-theme="dark"] .evps-page__title {
  font-size: 30px !important;
  font-weight: 700 !important;
  letter-spacing: -0.02em !important;
  background: linear-gradient(180deg, #ffffff 0%, var(--evps-text-muted) 140%);
  background-clip: text;
  -webkit-background-clip: text;
  -webkit-text-fill-color: transparent;
  margin: 0 0 4px !important;
}
[data-theme="dark"] .evps-page__subtitle {
  font-size: 13px !important;
  color: var(--evps-text-muted) !important;
}

/* ── J3. Cards — hover lift + accent glow ──────────────────────────────── */
[data-theme="dark"] .evps-card,
[data-theme="dark"] .evps-stat,
[data-theme="dark"] .evps-service-card,
[data-theme="dark"] .evps-invoice-card,
[data-theme="dark"] .evps-ticket-card {
  position: relative;
  border-radius: 14px !important;
  transition:
    transform 220ms cubic-bezier(.2,.8,.2,1),
    box-shadow 220ms cubic-bezier(.2,.8,.2,1),
    border-color 220ms ease !important;
  background:
    linear-gradient(180deg, var(--evps-surface) 0%, var(--evps-surface-2, #181d28) 100%) !important;
}
[data-theme="dark"] .evps-card:hover,
[data-theme="dark"] .evps-stat:hover,
[data-theme="dark"] .evps-service-card:hover,
[data-theme="dark"] .evps-invoice-card:hover,
[data-theme="dark"] .evps-ticket-card:hover {
  transform: translateY(-2px);
  box-shadow:
    0 12px 32px -8px rgba(8, 10, 18, 0.6),
    0 0 0 1px rgba(59, 108, 246, 0.18),
    0 8px 24px -12px rgba(59, 108, 246, 0.32) !important;
  border-color: rgba(59, 108, 246, 0.32) !important;
}

/* ── J4. Stat tile — accent left stripe + glow on icon plate ──────────── */
[data-theme="dark"] .evps-stat {
  padding: 18px 20px !important;
  overflow: hidden;
}
[data-theme="dark"] .evps-stat::before {
  content: "";
  position: absolute;
  left: 0; top: 14%; bottom: 14%;
  width: 3px;
  border-radius: 0 3px 3px 0;
  background: linear-gradient(180deg, var(--evps-primary), var(--evps-accent, #14b8a6));
  opacity: 0.7;
}
[data-theme="dark"] .evps-stat--success::before { background: linear-gradient(180deg, var(--evps-success), #14b8a6); }
[data-theme="dark"] .evps-stat--warning::before { background: linear-gradient(180deg, var(--evps-warning), #fb923c); }
[data-theme="dark"] .evps-stat--danger::before  { background: linear-gradient(180deg, var(--evps-danger), #ef4444); }
[data-theme="dark"] .evps-stat--info::before    { background: linear-gradient(180deg, var(--evps-info, #3b6cf6), #8b5cf6); }
[data-theme="dark"] .evps-stat__icon {
  width: 36px; height: 36px;
  border-radius: 10px !important;
  display: inline-flex; align-items: center; justify-content: center;
  background:
    linear-gradient(135deg, var(--evps-primary-soft, rgba(59,108,246,0.14)), rgba(139,92,246,0.10)) !important;
  color: var(--evps-primary) !important;
  border: 1px solid rgba(59, 108, 246, 0.28) !important;
  box-shadow: 0 0 0 4px rgba(59, 108, 246, 0.06), inset 0 1px 0 rgba(255,255,255,0.04) !important;
}
[data-theme="dark"] .evps-stat__value {
  font-size: 28px !important;
  font-weight: 700 !important;
  letter-spacing: -0.02em !important;
  font-feature-settings: "tnum" 1, "lnum" 1 !important;
  background: linear-gradient(180deg, #ffffff, #c7cdd9);
  background-clip: text;
  -webkit-background-clip: text;
  -webkit-text-fill-color: transparent;
}
[data-theme="dark"] .evps-stat__label {
  font-size: 10px !important;
  font-weight: 700 !important;
  letter-spacing: .08em !important;
  text-transform: uppercase !important;
  color: var(--evps-text-muted) !important;
}

/* ── J5. Service / invoice / ticket cards — premium chrome ─────────────── */
[data-theme="dark"] .evps-service-card,
[data-theme="dark"] .evps-invoice-card,
[data-theme="dark"] .evps-ticket-card {
  padding: 18px 20px !important;
  border: 1px solid var(--evps-border) !important;
  border-left: 3px solid var(--evps-primary) !important;
}
[data-theme="dark"] .evps-service-card[data-status="active"],
[data-theme="dark"] .evps-service-card[data-status="paid"]    { border-left-color: var(--evps-success, #2bb673) !important; }
[data-theme="dark"] .evps-service-card[data-status="pending"],
[data-theme="dark"] .evps-service-card[data-status="unpaid"]  { border-left-color: var(--evps-warning, #f0b429) !important; }
[data-theme="dark"] .evps-service-card[data-status="suspended"],
[data-theme="dark"] .evps-service-card[data-status="overdue"] { border-left-color: var(--evps-danger,  #e23d51) !important; }
[data-theme="dark"] .evps-service-card[data-status="terminated"],
[data-theme="dark"] .evps-service-card[data-status="cancelled"] { border-left-color: var(--evps-text-dim, #5d667d) !important; }

/* ── J6. Buttons — premium primary with gradient + glow ───────────────── */
.evps-btn--primary {
  background: linear-gradient(180deg, var(--evps-primary, #3b6cf6) 0%, #2f5cdf 100%) !important;
  color: #ffffff !important;
  border: 1px solid rgba(255,255,255,0.06) !important;
  font-weight: 600 !important;
  letter-spacing: .005em !important;
  box-shadow:
    0 1px 0 rgba(255,255,255,0.10) inset,
    0 1px 2px rgba(8,10,18,0.4),
    0 4px 12px -2px rgba(59, 108, 246, 0.36) !important;
  transition: transform 140ms ease, box-shadow 220ms ease, filter 140ms ease !important;
}
.evps-btn--primary:hover {
  transform: translateY(-1px);
  filter: brightness(1.06);
  box-shadow:
    0 1px 0 rgba(255,255,255,0.14) inset,
    0 2px 4px rgba(8,10,18,0.5),
    0 8px 22px -4px rgba(59, 108, 246, 0.55) !important;
}
.evps-btn--primary:active { transform: translateY(0); filter: brightness(0.96); }

.evps-btn--success {
  background: linear-gradient(180deg, #2bb673 0%, #1f8f5b 100%) !important;
  color: #ffffff !important;
  box-shadow:
    0 1px 0 rgba(255,255,255,0.10) inset,
    0 4px 12px -2px rgba(43, 182, 115, 0.36) !important;
}
.evps-btn--danger {
  background: linear-gradient(180deg, #e23d51 0%, #b22b3d 100%) !important;
  color: #ffffff !important;
  box-shadow: 0 1px 0 rgba(255,255,255,0.10) inset, 0 4px 12px -2px rgba(226, 61, 81, 0.36) !important;
}
.evps-btn--outline {
  background: transparent !important;
  color: var(--evps-text) !important;
  border: 1px solid var(--evps-border-strong, #2e3648) !important;
}
.evps-btn--outline:hover {
  background: var(--evps-surface-2, #181d28) !important;
  border-color: var(--evps-primary) !important;
  color: var(--evps-primary) !important;
}

/* ── J7. Sidebar active — accent glow + animated rail ─────────────────── */
[data-theme="dark"] .evps-sidebar .evps-nav-item.is-active,
[data-theme="dark"] .evps-sidebar nav a.is-active,
[data-theme="dark"] .evps-sidebar .nav-item.is-active {
  position: relative;
  background:
    linear-gradient(90deg, rgba(59,108,246,0.18), rgba(59,108,246,0.04)) !important;
  color: var(--evps-text) !important;
  border-radius: 8px !important;
}
[data-theme="dark"] .evps-sidebar .evps-nav-item.is-active::before,
[data-theme="dark"] .evps-sidebar nav a.is-active::before {
  content: "";
  position: absolute;
  left: -2px; top: 8%; bottom: 8%;
  width: 3px;
  background: linear-gradient(180deg, var(--evps-primary), var(--evps-accent, #14b8a6));
  border-radius: 3px;
  box-shadow: 0 0 12px var(--evps-primary, #3b6cf6);
}
[data-theme="dark"] .evps-sidebar .evps-nav-item:hover {
  background: rgba(255,255,255,0.04) !important;
}

/* ── J8. Topbar — glass backdrop ──────────────────────────────────────── */
[data-theme="dark"] .evps-topbar {
  backdrop-filter: blur(18px) saturate(120%) !important;
  -webkit-backdrop-filter: blur(18px) saturate(120%) !important;
  background: linear-gradient(180deg, rgba(11,16,32,0.78), rgba(11,16,32,0.58)) !important;
  border-bottom: 1px solid var(--evps-border) !important;
}
[data-theme="dark"] .evps-topbar__search input {
  background: rgba(8, 11, 22, 0.6) !important;
  backdrop-filter: blur(8px);
  -webkit-backdrop-filter: blur(8px);
  border: 1px solid rgba(255,255,255,0.06) !important;
  transition: border-color 200ms ease, box-shadow 200ms ease !important;
}
[data-theme="dark"] .evps-topbar__search input:focus {
  border-color: rgba(59,108,246,0.5) !important;
  box-shadow:
    0 0 0 4px rgba(59,108,246,0.12),
    0 6px 22px -8px rgba(59,108,246,0.4) !important;
}

/* ── J9. Empty states — gradient halo + animated dot ──────────────────── */
.evps-empty {
  position: relative;
  padding: 56px 24px !important;
  border-radius: 14px;
  background:
    radial-gradient(360px 220px at 50% 0%, rgba(59,108,246,0.08), transparent 60%),
    var(--evps-surface) !important;
  border: 1px dashed rgba(255,255,255,0.06) !important;
  text-align: center;
}
.evps-empty__icon {
  position: relative;
  width: 64px !important;
  height: 64px !important;
  border-radius: 16px !important;
  background: linear-gradient(135deg, rgba(59,108,246,0.16), rgba(139,92,246,0.10)) !important;
  border: 1px solid rgba(59,108,246,0.28) !important;
  box-shadow: 0 8px 24px -8px rgba(59,108,246,0.4), inset 0 1px 0 rgba(255,255,255,0.06) !important;
  color: var(--evps-primary) !important;
  font-size: 22px !important;
}
.evps-empty__icon::after {
  content: "";
  position: absolute;
  inset: -4px;
  border-radius: 18px;
  border: 1px solid rgba(59,108,246,0.18);
  animation: evps-empty-halo 2.4s ease-in-out infinite;
  pointer-events: none;
}
@keyframes evps-empty-halo {
  0%, 100% { transform: scale(1); opacity: 0.6; }
  50%      { transform: scale(1.06); opacity: 0; }
}
[data-theme="dark"] .evps-empty__title {
  font-size: 16px !important;
  font-weight: 600 !important;
  color: var(--evps-text) !important;
}
[data-theme="dark"] .evps-empty__desc {
  color: var(--evps-text-muted) !important;
  max-width: 380px;
  margin-left: auto;
  margin-right: auto;
}

/* ── J10. Status pills — gradient + soft glow.
 *  Scoped to [data-theme="dark"] only because the bright text colors
 *  (#4ade80, #fbbf24, #fb7185, #93c5fd) only meet WCAG AA against dark
 *  surfaces. In light theme the base .evps-badge--* rules at the top of
 *  this file plus Phase L hardening provide the legible fg/bg combo. */
[data-theme="dark"] .evps-badge--success {
  background: linear-gradient(180deg, rgba(43,182,115,0.22), rgba(43,182,115,0.10)) !important;
  color: #4ade80 !important;
  border: 1px solid rgba(43,182,115,0.45) !important;
  box-shadow: 0 1px 0 rgba(255,255,255,0.04) inset, 0 0 16px -8px rgba(43,182,115,0.6) !important;
}
[data-theme="dark"] .evps-badge--warning {
  background: linear-gradient(180deg, rgba(240,180,41,0.22), rgba(240,180,41,0.10)) !important;
  color: #fbbf24 !important;
  border: 1px solid rgba(240,180,41,0.45) !important;
  box-shadow: 0 1px 0 rgba(255,255,255,0.04) inset, 0 0 16px -8px rgba(240,180,41,0.6) !important;
}
[data-theme="dark"] .evps-badge--danger {
  background: linear-gradient(180deg, rgba(226,61,81,0.22), rgba(226,61,81,0.10)) !important;
  color: #fb7185 !important;
  border: 1px solid rgba(226,61,81,0.45) !important;
  box-shadow: 0 1px 0 rgba(255,255,255,0.04) inset, 0 0 16px -8px rgba(226,61,81,0.6) !important;
}
[data-theme="dark"] .evps-badge--info {
  background: linear-gradient(180deg, rgba(59,108,246,0.22), rgba(59,108,246,0.10)) !important;
  color: #93c5fd !important;
  border: 1px solid rgba(59,108,246,0.45) !important;
  box-shadow: 0 1px 0 rgba(255,255,255,0.04) inset, 0 0 16px -8px rgba(59,108,246,0.6) !important;
}

/* ── J11. AI bubble — glow + breathing animation ──────────────────────── */
[data-theme="dark"] #evps-ai-root,
[data-theme="dark"] [data-evps-ai] {
  filter: drop-shadow(0 8px 24px rgba(139, 92, 246, 0.45));
}
@keyframes evps-ai-breathe {
  0%, 100% { box-shadow: 0 0 0 0 rgba(139, 92, 246, 0.4); }
  50%      { box-shadow: 0 0 0 12px rgba(139, 92, 246, 0); }
}
[data-theme="dark"] [data-evps-ai] > button:first-child {
  animation: evps-ai-breathe 2.6s ease-in-out infinite;
}

/* ── J12. Tables — sticky head + soft hover row ───────────────────────── */
[data-theme="dark"] .evps-table thead th {
  position: sticky;
  top: 0;
  z-index: 1;
  background: linear-gradient(180deg, var(--evps-surface-2, #181d28), var(--evps-surface)) !important;
  font-size: 11px !important;
  font-weight: 700 !important;
  letter-spacing: .06em !important;
  text-transform: uppercase !important;
  color: var(--evps-text-muted) !important;
  border-bottom: 1px solid var(--evps-border) !important;
  padding: 14px 16px !important;
}
[data-theme="dark"] .evps-table tbody tr {
  transition: background 150ms ease;
}
[data-theme="dark"] .evps-table tbody tr:hover {
  background: rgba(59,108,246,0.05) !important;
}
[data-theme="dark"] .evps-table tbody td {
  padding: 14px 16px !important;
  border-bottom: 1px solid rgba(255,255,255,0.04) !important;
}
[data-theme="dark"] .evps-table__primary a {
  font-weight: 600 !important;
  /* --evps-primary on dark surface = 4.0:1 (just shy of AA). --evps-link
   * #93b8ff is 6.0:1+ on the same surface. */
  color: var(--evps-link, #93b8ff) !important;
}
[data-theme="dark"] .evps-table__primary a:hover { text-decoration: underline; }

/* ── J13. Filter chips — premium pill with active glow ────────────────── */
.evps-chipgroup { gap: 6px !important; }
.evps-chip {
  padding: 6px 12px !important;
  border-radius: 999px !important;
  font-size: 12px !important;
  font-weight: 600 !important;
  color: var(--evps-text-muted) !important;
  background: var(--evps-surface) !important;
  border: 1px solid var(--evps-border) !important;
  transition: all 160ms ease !important;
  text-decoration: none !important;
}
.evps-chip:hover {
  color: var(--evps-text) !important;
  border-color: var(--evps-border-strong, #2e3648) !important;
  background: var(--evps-surface-2, #181d28) !important;
}
.evps-chip.is-active {
  color: #ffffff !important;
  background: linear-gradient(180deg, var(--evps-primary), #2f5cdf) !important;
  border-color: rgba(255,255,255,0.10) !important;
  box-shadow:
    0 1px 0 rgba(255,255,255,0.10) inset,
    0 4px 14px -4px rgba(59,108,246,0.5) !important;
}

/* ── J14. Stagger fade-in on first paint (no scroll-trigger) ─────────── */
@keyframes evps-rise {
  from { opacity: 0; transform: translateY(8px); }
  to   { opacity: 1; transform: translateY(0); }
}
@media (prefers-reduced-motion: no-preference) {
  .evps-page > .evps-page__header,
  .evps-page > .evps-grid > *,
  .evps-page > .evps-stack > *,
  .evps-page > .evps-card,
  .evps-page > .evps-stat {
    animation: evps-rise 320ms cubic-bezier(.2,.8,.2,1) both;
  }
  .evps-page > *:nth-child(2) { animation-delay: 40ms; }
  .evps-page > *:nth-child(3) { animation-delay: 80ms; }
  .evps-page > *:nth-child(4) { animation-delay: 120ms; }
  .evps-page > *:nth-child(5) { animation-delay: 160ms; }
}

/* ── J15. Light theme parity for J1–J14 ───────────────────────────────── */
[data-theme="light"] body {
  background:
    radial-gradient(900px 600px at 80% -10%, rgba(59,108,246,0.05), transparent 60%),
    var(--evps-bg) !important;
}
[data-theme="light"] .evps-page__header {
  background: linear-gradient(135deg, rgba(59,108,246,0.05), transparent 60%), var(--evps-surface);
  border-color: var(--evps-border);
}
[data-theme="light"] .evps-page__title {
  background: linear-gradient(180deg, var(--evps-text), var(--evps-text-muted));
  background-clip: text;
  -webkit-background-clip: text;
  -webkit-text-fill-color: transparent;
}

/* End of Phase J */

/* ==========================================================================
   PHASE K-B — 3RD-PARTY AI CHAT WIDGET CONTRAST FIX (v1.0.27)
   --------------------------------------------------------------------------
   The whmcs/ai_assistant addon ships its own .ai-chat-input-wrapper that
   forces a WHITE background, but the <input id="ai-chat-input"> inside it
   inherits our global --evps-text token (#e6e8ee in dark theme = light grey).
   Result: white-on-white-ish — user can't see what they're typing.
   Fix: force a hard-coded readable color + background on the AI chat input
   regardless of theme. Both target the addon's own selectors so we don't
   need to modify their code.
   ========================================================================== */
input.ai-chat-input,
input#ai-chat-input,
.ai-chat-input-wrapper input,
.ai-chat-input-wrapper textarea,
.ai-chat-message-input,
.ai-chat-input-container input,
.ai-chat-input-container textarea {
  color: #111827 !important;          /* slate-900 — readable on white */
  background: #ffffff !important;
  -webkit-text-fill-color: #111827 !important; /* iOS Safari override */
  caret-color: #2f6df3 !important;    /* visible cursor */
}
input.ai-chat-input::placeholder,
input#ai-chat-input::placeholder,
.ai-chat-input-wrapper input::placeholder,
.ai-chat-input-wrapper textarea::placeholder {
  color: #6b7280 !important;
  opacity: 1 !important;
}
/* When dark theme is active, the bubble/wrapper is dark — adapt to that. */
[data-theme="dark"] .ai-chat-input-wrapper,
[data-theme="dark"] .ai-chat-input-container {
  background: var(--evps-surface, #11151c) !important;
}
[data-theme="dark"] input.ai-chat-input,
[data-theme="dark"] input#ai-chat-input,
[data-theme="dark"] .ai-chat-input-wrapper input,
[data-theme="dark"] .ai-chat-input-wrapper textarea {
  color: #e8ecf5 !important;
  background: var(--evps-surface-inset, #0c1019) !important;
  -webkit-text-fill-color: #e8ecf5 !important;
}
[data-theme="dark"] input.ai-chat-input::placeholder,
[data-theme="dark"] input#ai-chat-input::placeholder {
  color: #9aa3b8 !important;
}

/* ==========================================================================
   PHASE K — MOBILE-OVERFLOW FIX (v1.0.24)
   --------------------------------------------------------------------------
   bughunt scanner found that every page caused horizontal overflow at 375px.
   Root cause: the topbar (search bar + crumbs + actions) totals ~500px of
   intrinsic content, which extends past the viewport when the sidebar is
   collapsed under the hamburger.
   Fix: at <=640px, hide the topbar search + breadcrumb (hamburger + logo +
   actions still visible), force the .evps-app + .evps-main to overflow-x:
   hidden as a defensive guard, and ensure no ad-hoc inline style or
   user-content widget can break the document scroll width.
   ========================================================================== */
@media (max-width: 640px) {
  /* Defensive: prevent ANY descendant from forcing horizontal scroll. */
  html, body { overflow-x: hidden; max-width: 100vw; }
  body.evps-body, .evps-app, .evps-main, .evps-content, main#evps-main-content {
    overflow-x: hidden;
    max-width: 100vw;
  }
  /* Topbar search collapses on small screens — Cmd/Ctrl-K still triggers it. */
  .evps-topbar__search { display: none; }
  /* Breadcrumb hides; the page H1 is the truth. */
  .evps-topbar__crumbs { display: none; }
  /* Topbar reduces horizontal padding. */
  .evps-topbar { padding: 0 var(--evps-space-3); gap: var(--evps-space-2); }
  /* Topbar action buttons reduce gap + may wrap. */
  .evps-topbar__actions { gap: 4px; }
  .evps-topbar__actions .evps-btn { padding: 0 var(--evps-space-3); }
  /* Sidebar already absolute when not collapsed; ensure when CLOSED on mobile
   * it doesn't contribute to scrollWidth. translateX(-100%) keeps it visually
   * off-screen but its bounding box can still be inside negative coords —
   * the overflow-x: hidden on body short-circuits this. */
  .evps-sidebar:not(.is-mobile-open) { contain: layout paint; }
  /* Content padding shrinks for tiny screens. */
  .evps-page { padding: var(--evps-space-4) var(--evps-space-3); }
  /* Cards/tables that get long content stop forcing horizontal scroll. */
  .evps-card, .evps-table { max-width: 100%; }
  .evps-table { display: block; overflow-x: auto; }
  /* Long monospaced strings (invoice numbers, hashes) wrap on mobile. */
  .evps-mono { word-break: break-all; }
}
/* End of Phase K */

/* End of Phase G */


/* ─── Phase L: contrast hardening (v1.0.33) ──────────────────────────────
 * Discovered via tests/browser/contrast-shots.spec.mjs scan: 886 WCAG-AA
 * offenders concentrated in (a) Bootstrap default <code> bleed-through in
 * WHMCS admin chrome, (b) sidebar tier label using --evps-secondary on
 * white, (c) env-badge color using --evps-success on white, (d)
 * placeholders using --evps-text-dim on light surfaces, (e) muted text
 * tokens too pale in light theme. Each rule below is scoped tightly so
 * it only touches contexts owned by EVPS templates and never WHMCS
 * native chrome we don't ship. */

/* (a) <code> elements inside EVPS surfaces — Bootstrap's default
 *     #c7254e on dark = 3.47, fails AA. Use a tinted background so the
 *     pink stays distinctive but legible in both themes. */
.evps-page code,
.evps-card code,
.evps-mc code,
.evps-table code,
.evps-tab-content code,
.evps-alert code,
.evps-admin-shell code,
.evps-admin-content code,
.evps-skin code {
  background: var(--evps-primary-soft);
  color: var(--evps-primary);
  padding: 1px 6px;
  border-radius: 4px;
  font-family: var(--evps-font-mono, ui-monospace, monospace);
  font-size: 0.92em;
  white-space: pre-wrap;
  word-break: break-word;
}
[data-theme="light"] .evps-page code,
[data-theme="light"] .evps-card code,
[data-theme="light"] .evps-mc code,
[data-theme="light"] .evps-table code,
[data-theme="light"] .evps-tab-content code,
[data-theme="light"] .evps-alert code,
[data-theme="light"] .evps-admin-shell code,
[data-theme="light"] .evps-admin-content code,
[data-theme="light"] .evps-skin code {
  color: var(--evps-info-text, #1c4eda);
}

/* (b) Sidebar tier label — was --evps-secondary (#14b8a6) on white = 2.49 */
.evps-sidebar__user-tier {
  color: var(--evps-text-muted);
}

/* (c) Env-badge "Demo Site" green-on-white pill — promote to text token */
.evps-env-badge--live {
  color: var(--evps-success-text, var(--evps-success));
}
.evps-env-badge--dev,
.evps-env-badge--demo {
  color: var(--evps-warning-text, var(--evps-warning));
}

/* (d) Placeholder hardening across both themes. WCAG AA needs 4.5:1 for
 *     placeholder text per WAI guidance; default --evps-text-dim alone is
 *     insufficient on light tinted-input surfaces (--evps-surface-2). */
.evps-input::placeholder,
.evps-textarea::placeholder,
.evps-topbar__search input::placeholder,
input[type="text"]::placeholder,
input[type="search"]::placeholder,
input[type="email"]::placeholder,
input[type="password"]::placeholder,
textarea::placeholder {
  color: var(--evps-text-muted);
  opacity: 1;     /* Firefox lowers placeholder opacity by default */
}

/* (e) Status-text variants on cards/lists/sidebar — anywhere we previously
 *     used the bright base hue as fg on a light surface. */
[data-theme="light"] .evps-text-success,
[data-theme="light"] .evps-pill--success > span,
[data-theme="light"] .evps-status-success {
  color: var(--evps-success-text);
}
[data-theme="light"] .evps-text-warning,
[data-theme="light"] .evps-pill--warning > span,
[data-theme="light"] .evps-status-warning {
  color: var(--evps-warning-text);
}
[data-theme="light"] .evps-text-danger,
[data-theme="light"] .evps-pill--danger > span,
[data-theme="light"] .evps-status-danger {
  color: var(--evps-danger-text);
}
[data-theme="light"] .evps-text-info,
[data-theme="light"] .evps-pill--info > span,
[data-theme="light"] .evps-status-info {
  color: var(--evps-info-text);
}

/* ═════ v1.0.42 — Mobile tap-target audit (WCAG 2.5.5) ═════
 * Premium-theme research surfaced that our mobile tap targets sit at
 * 28-32px on key client surfaces. WCAG 2.5.5 (Target Size) recommends
 * 44x44 minimum. Bump primary actionable elements to ≥44px on touch
 * surfaces; desktop sizing unaffected.
 */
@media (hover: none) and (pointer: coarse), (max-width: 768px) {
  .evps-btn:not(.evps-btn--xs),
  .evps-iconbtn,
  .evps-tab,
  .evps-account-menu summary,
  .evps-navlink,
  .evps-side-nav__item,
  a.evps-link[role="button"],
  button.evps-btn--ghost,
  button.evps-btn--sm,
  .evps-stat__action,
  .evps-card__actions a.evps-btn--sm {
    min-height: 44px;
    min-width: 44px;
    padding-top: 10px;
    padding-bottom: 10px;
  }
  /* Small "Back to Invoices"-style ghost buttons get a wider tap area
     without growing their visual footprint via inflated padding. */
  .evps-btn.evps-btn--sm.evps-btn--ghost {
    padding-left: 14px;
    padding-right: 14px;
  }
  /* Service-card "View" affordance, KPI tile chevron, table-row link
     buttons: enforce minimum hit area via ::before pseudo-overlay. */
  .evps-service-card--link::after,
  .evps-stat::after,
  .evps-table a[href*="productdetails"]::after {
    content: '';
    position: absolute;
    inset: -6px;
    min-height: 44px;
    min-width: 44px;
  }
  /* Form fields need finger-tappable padding too. */
  .evps-form-field input,
  .evps-form-field select,
  .evps-form-field textarea {
    min-height: 44px;
    padding: 10px 14px;
  }
}

/* ═════ v1.0.42 — Skeleton-loader animation utility ═════ */
.evps-skel {
  display: inline-block;
  background: linear-gradient(
    90deg,
    var(--evps-surface-2, #f1f5f9) 0%,
    var(--evps-surface-3, #e2e8f0) 50%,
    var(--evps-surface-2, #f1f5f9) 100%
  );
  background-size: 200% 100%;
  border-radius: 4px;
  animation: evpsSkelShimmer 1.4s ease-in-out infinite;
}
@keyframes evpsSkelShimmer {
  0% { background-position: 200% 0; }
  100% { background-position: -200% 0; }
}
@media (prefers-reduced-motion: reduce) {
  .evps-skel { animation: none; opacity: 0.7; }
}

/* ═════ v1.0.42 — KB autocomplete popup polish ═════ */
.evps-kb-autocomplete [role="option"]:hover,
.evps-kb-autocomplete [role="option"]:focus {
  background: var(--evps-surface-2, #f1f5f9);
  outline: none;
}
.evps-kb-autocomplete [role="option"]:last-child {
  border-bottom: 0;
}

/* =====================================================================
   FULL-TAKEOVER COVERAGE (v1.0.61) — classes referenced across client
   templates that previously had NO CSS rule (frames rendered with browser
   defaults). Audited + confirmed via the coverage workflow. All values map
   to --evps-* tokens so brand + light/dark follow automatically.
   ===================================================================== */

/* u-* utilities (63 templates; u-col-span-2 fixes full-width form fields
   collapsing inside .evps-grid--2) */
.evps-app .u-col-span-2 { grid-column: span 2; }
.evps-app .u-gap-1{gap:var(--evps-space-1)} .evps-app .u-gap-2{gap:var(--evps-space-2)} .evps-app .u-gap-3{gap:var(--evps-space-3)}
.evps-app .u-gap-4{gap:var(--evps-space-4)} .evps-app .u-gap-5{gap:var(--evps-space-5)} .evps-app .u-gap-6{gap:var(--evps-space-6)}
.evps-app .u-mt-1{margin-top:var(--evps-space-1)} .evps-app .u-mt-2{margin-top:var(--evps-space-2)} .evps-app .u-mt-3{margin-top:var(--evps-space-3)}
.evps-app .u-mt-4{margin-top:var(--evps-space-4)} .evps-app .u-mt-5{margin-top:var(--evps-space-5)} .evps-app .u-mt-6{margin-top:var(--evps-space-6)}
.evps-app .u-mb-1{margin-bottom:var(--evps-space-1)} .evps-app .u-mb-2{margin-bottom:var(--evps-space-2)} .evps-app .u-mb-3{margin-bottom:var(--evps-space-3)}
.evps-app .u-mb-4{margin-bottom:var(--evps-space-4)} .evps-app .u-mb-5{margin-bottom:var(--evps-space-5)} .evps-app .u-mb-6{margin-bottom:var(--evps-space-6)}
.evps-app .u-ml-1{margin-left:var(--evps-space-1)} .evps-app .u-ml-2{margin-left:var(--evps-space-2)} .evps-app .u-ml-3{margin-left:var(--evps-space-3)} .evps-app .u-ml-4{margin-left:var(--evps-space-4)}
.evps-app .u-p-3{padding:var(--evps-space-3)} .evps-app .u-p-4{padding:var(--evps-space-4)}
.evps-app .u-text-right{text-align:right} .evps-app .u-text-center{text-align:center}
.evps-app .u-list-reset{list-style:none;margin:0;padding:0} .evps-app .u-inline{display:inline-block}
.evps-app .u-flex{display:flex} .evps-app .u-flex-col{display:flex;flex-direction:column}
.evps-app .u-items-center{align-items:center} .evps-app .u-justify-between{justify-content:space-between}
.evps-app .u-wrap{flex-wrap:wrap} .evps-app .u-full{width:100%} .evps-app .u-muted{color:var(--evps-text-muted)}

/* form primitives */
.evps-app .evps-checkbox{display:flex;align-items:center;gap:8px;cursor:pointer;color:var(--evps-text)}
.evps-app .evps-checkbox input[type="checkbox"]{accent-color:var(--evps-accent);width:16px;height:16px}
.evps-app .evps-radio{display:flex;align-items:center;gap:10px;cursor:pointer;padding:6px 0;color:var(--evps-text)}
.evps-app .evps-radio input[type="radio"]{accent-color:var(--evps-accent);width:16px;height:16px}
.evps-app .evps-radio-group{display:flex;flex-direction:column;gap:6px}
.evps-app .evps-fieldset{border:1px solid var(--evps-border-subtle);border-radius:var(--evps-radius-md);padding:16px;margin:0 0 var(--evps-space-4)}
.evps-app .evps-legend{font-weight:600;font-size:13px;color:var(--evps-text-muted);padding:0 6px}
.evps-app .evps-select-wrap{display:block}
.evps-app .evps-select-wrap select{width:100%}
.evps-app .evps-form-actions{display:flex;justify-content:flex-end;gap:var(--evps-space-3);flex-wrap:wrap;margin-top:var(--evps-space-4)}
.evps-app .evps-btn--danger-soft{color:var(--evps-danger);background:transparent;border-color:transparent}
.evps-app .evps-btn--danger-soft:hover{background:var(--evps-danger-soft);color:var(--evps-danger)}

/* switch (label > input + __track + __label) */
.evps-app .evps-switch input[type="checkbox"]{position:absolute;opacity:0;width:0;height:0}
.evps-app .evps-switch__track{position:relative;display:inline-block;width:40px;height:22px;border-radius:999px;background:var(--evps-surface-3,var(--evps-border));border:1px solid var(--evps-border);transition:background .15s;vertical-align:middle;flex:none}
.evps-app .evps-switch__track::before{content:"";position:absolute;top:2px;left:2px;width:16px;height:16px;border-radius:50%;background:#fff;transition:transform .15s;box-shadow:0 1px 2px rgba(0,0,0,.3)}
.evps-app .evps-switch input:checked ~ .evps-switch__track{background:var(--evps-accent);border-color:var(--evps-accent)}
.evps-app .evps-switch input:checked ~ .evps-switch__track::before{transform:translateX(18px)}
.evps-app .evps-switch__label{margin-left:8px;color:var(--evps-text)}

/* definition list (service/config/credentials/ticket/domain overviews) */
.evps-app .evps-deflist{margin:0}
.evps-app .evps-deflist__row{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.4fr);gap:var(--evps-space-2);padding:var(--evps-space-3) var(--evps-space-4);border-bottom:1px solid var(--evps-border)}
.evps-app .evps-deflist__row:last-child{border-bottom:0}
.evps-app .evps-deflist__row dt,.evps-app .evps-deflist__row>:first-child{color:var(--evps-text-muted);font-weight:500}
.evps-app .evps-deflist__row dd,.evps-app .evps-deflist__row>:last-child{margin:0;color:var(--evps-text)}
@media (max-width:560px){.evps-app .evps-deflist__row{grid-template-columns:1fr;gap:2px}}

/* ticket conversation thread */
.evps-app .evps-msg{border:1px solid var(--evps-border);border-radius:var(--evps-radius-md);background:var(--evps-surface);padding:var(--evps-space-4);margin-bottom:var(--evps-space-3)}
.evps-app .evps-msg--admin{background:var(--evps-accent-soft);border-color:var(--evps-accent)}
.evps-app .evps-msg--client{background:var(--evps-surface)}
.evps-app .evps-msg__head{display:flex;align-items:center;justify-content:space-between;gap:var(--evps-space-3);margin-bottom:var(--evps-space-2)}
.evps-app .evps-msg__author{font-weight:600;color:var(--evps-text)}
.evps-app .evps-msg__time{font-size:12px;color:var(--evps-text-muted)}
.evps-app .evps-msg__body{color:var(--evps-text);line-height:1.6}
.evps-app .evps-msg__attachments{display:flex;flex-wrap:wrap;gap:6px;margin-top:var(--evps-space-3)}
.evps-app .evps-attach-pill{display:inline-flex;align-items:center;gap:6px;padding:3px 10px;border-radius:999px;background:var(--evps-surface-2);border:1px solid var(--evps-border);font-size:12px;color:var(--evps-text);text-decoration:none}
.evps-app .evps-attach-pill:hover{border-color:var(--evps-accent);color:var(--evps-accent)}

/* card accent / selected */
.evps-app .evps-card--accent{border-color:var(--evps-accent);background:var(--evps-accent-soft)}
.evps-app .evps-card--accent:has(input:checked){box-shadow:0 0 0 1px var(--evps-accent)}

/* breadcrumbs + inline chevron icon */
.evps-app .evps-breadcrumbs{display:flex;align-items:center;gap:var(--evps-space-2);font-size:13px;color:var(--evps-text-muted);margin-bottom:var(--evps-space-3);flex-wrap:wrap}
.evps-app .evps-breadcrumbs a{color:var(--evps-text-muted);text-decoration:none}
.evps-app .evps-breadcrumbs a:hover{color:var(--evps-accent)}
.evps-app .evps-i{display:inline-flex;align-items:center;justify-content:center;line-height:1}
.evps-app .evps-i--chev::before{content:"\203A";color:currentColor;opacity:.7}

/* services toolbar + chips + page actions */
.evps-app .evps-toolbar{display:flex;align-items:center;gap:var(--evps-space-3);flex-wrap:wrap;margin-bottom:var(--evps-space-4)}
.evps-app .evps-toolbar__search{flex:1 1 240px}
.evps-app .evps-chipgroup{display:flex;flex-wrap:wrap;gap:var(--evps-space-2)}
.evps-app .evps-chip__count{margin-left:6px;padding:1px 7px;border-radius:999px;background:var(--evps-surface-2);font-size:11px;font-weight:600;color:var(--evps-text-muted)}
.evps-app .evps-page__actions{display:flex;gap:var(--evps-space-3);flex-wrap:wrap}
.evps-app .evps-page__back{margin-bottom:var(--evps-space-4)}

/* billing: saved-card row + gateway iframe slot */
.evps-app .evps-creditcard-row{display:flex;align-items:center;gap:var(--evps-space-4);padding:var(--evps-space-3) var(--evps-space-4);justify-content:space-between;border:1px solid var(--evps-border);border-radius:var(--evps-radius-md)}
.evps-app .evps-creditcard-row__brand{display:flex;align-items:center;gap:var(--evps-space-2)}
.evps-app .evps-creditcard-row__num{flex:1;font-family:var(--evps-font-mono,monospace)}
.evps-app .evps-creditcard-row__exp{color:var(--evps-text-muted)}
.evps-app .evps-iframe-slot{border:1px solid var(--evps-border-subtle);border-radius:var(--evps-radius-md);background:var(--evps-surface-2);min-height:220px;overflow:hidden}
.evps-app .evps-iframe-slot iframe{width:100%;min-height:220px;border:0;display:block}
.evps-app .evps-creditcard-input{display:block}

/* base link (only role=button variant existed before) */
.evps-app .evps-link{color:var(--evps-accent);text-decoration:none}
.evps-app .evps-link:hover{text-decoration:underline}

/* ticket feedback star rating (fill-up-to-N selected state) */
.evps-app .evps-rating-stars{display:inline-flex;gap:8px;font-size:24px;flex-direction:row-reverse;justify-content:flex-end}
.evps-app .evps-rating-stars input{display:none}
.evps-app .evps-rating-stars label{cursor:pointer}
.evps-app .evps-rating-stars label i{color:var(--evps-text-muted);transition:color .1s}
.evps-app .evps-rating-stars input:checked ~ label i,
.evps-app .evps-rating-stars label:hover i,
.evps-app .evps-rating-stars label:hover ~ label i{color:var(--evps-warning)}

/* radio-card title/desc (dept picker) */
.evps-app .evps-radio-card__title{font-weight:500;color:var(--evps-text)}
.evps-app .evps-radio-card__desc{font-size:13px;color:var(--evps-text-muted)}

/* tame raw server-module ClientArea() output inside an evps card */
.evps-app .evps-module-output{color:var(--evps-text);overflow-x:auto}
.evps-app .evps-module-output table{width:100%;border-collapse:collapse}
.evps-app .evps-module-output table th,.evps-app .evps-module-output table td{padding:8px 10px;border-bottom:1px solid var(--evps-border);text-align:left}
.evps-app .evps-module-output .btn{display:inline-flex;align-items:center;gap:6px;padding:0 14px;height:36px;border-radius:var(--evps-radius-sm);background:var(--evps-surface-2);border:1px solid var(--evps-border);color:var(--evps-text);text-decoration:none}

/* =====================================================================
   FULL-TAKEOVER COVERAGE — BATCH 2 (v1.0.62). Second loop: a static scan
   for every evps-*/u-* class referenced in templates but with no CSS rule
   found a further set of genuinely-unstyled components (footer renders
   display:block padding:0 confirmed live). Define them all, token-based.
   ===================================================================== */

/* footer (on every page via footer.tpl). Element+class selector to beat the
   preflight reset (*{border-width:0}) that otherwise zeroes border-top-width. */
.evps-app footer.evps-footer{border-top:1px solid var(--evps-border) !important;margin-top:var(--evps-space-8);padding-top:var(--evps-space-5) !important}
.evps-app .evps-footer__inner{display:flex;align-items:center;justify-content:space-between;gap:var(--evps-space-4);flex-wrap:wrap}
.evps-app .evps-footer__brand{display:flex;align-items:center;gap:var(--evps-space-2);color:var(--evps-text-muted);font-size:13px}
.evps-app .evps-footer__links{display:flex;gap:var(--evps-space-4);flex-wrap:wrap;list-style:none;margin:0;padding:0}
.evps-app .evps-footer__links a{color:var(--evps-text-muted);text-decoration:none}
.evps-app .evps-footer__links a:hover{color:var(--evps-accent)}
.evps-app .evps-footer__meta{display:flex;align-items:center;gap:var(--evps-space-2);color:var(--evps-text-dim);font-size:12px}

/* hero (homepage) */
.evps-app .evps-hero{display:flex;align-items:center;justify-content:space-between;gap:var(--evps-space-6);flex-wrap:wrap;padding:var(--evps-space-6) 0}
.evps-app .evps-hero__copy{flex:1 1 320px}
.evps-app .evps-hero__title{font-size:1.9rem;font-weight:700;color:var(--evps-text);margin:0 0 var(--evps-space-2);line-height:1.15}
.evps-app .evps-hero__subtitle{color:var(--evps-text-muted);font-size:1.05rem;margin:0}
.evps-app .evps-hero__actions{display:flex;gap:var(--evps-space-3);flex-wrap:wrap;margin-top:var(--evps-space-4)}

/* auth pages (login/register/pwreset/2fa) */
.evps-app .evps-page--auth,.evps-app .evps-page--center{display:flex;align-items:center;justify-content:center;min-height:60vh;padding:var(--evps-space-6) var(--evps-space-4)}
.evps-app .evps-auth{width:100%;max-width:420px;margin:0 auto}
.evps-app .evps-auth--wide{max-width:680px}
.evps-app .evps-auth__card{background:var(--evps-surface);border:1px solid var(--evps-border);border-radius:var(--evps-radius-lg);padding:var(--evps-space-6);box-shadow:var(--evps-shadow-md)}
.evps-app .evps-auth__header{text-align:center;margin-bottom:var(--evps-space-5)}
.evps-app .evps-auth__header h1,.evps-app .evps-auth__header h2{margin:0 0 var(--evps-space-2);color:var(--evps-text)}
.evps-app .evps-auth__footer{text-align:center;margin-top:var(--evps-space-4);font-size:13px;color:var(--evps-text-muted)}

/* generic list component (8 templates) */
.evps-app .evps-list{display:flex;flex-direction:column;list-style:none;margin:0;padding:0}
.evps-app .evps-list__item{display:flex;align-items:center;justify-content:space-between;gap:var(--evps-space-3);padding:var(--evps-space-3) var(--evps-space-4);border-bottom:1px solid var(--evps-border)}
.evps-app .evps-list__item:last-child{border-bottom:0}
.evps-app .evps-list__body{flex:1;min-width:0}
.evps-app .evps-list__title{font-weight:600;color:var(--evps-text)}
.evps-app .evps-list__sub,.evps-app .evps-list__meta{font-size:12px;color:var(--evps-text-muted)}

/* KB / email articles */
.evps-app .evps-article{color:var(--evps-text);line-height:1.7}
.evps-app .evps-article__excerpt{color:var(--evps-text-muted)}
.evps-app .evps-article__body{color:var(--evps-text);line-height:1.7}
.evps-app .evps-article__body h2,.evps-app .evps-article__body h3{color:var(--evps-text);margin-top:var(--evps-space-5)}
.evps-app .evps-email-content{color:var(--evps-text);line-height:1.6}
.evps-app .evps-markdown-guide{color:var(--evps-text);line-height:1.6}

/* empty-state (alias family of the defined evps-empty) */
.evps-app .evps-empty-state{text-align:center;padding:var(--evps-space-8) var(--evps-space-4);color:var(--evps-text-muted)}
.evps-app .evps-empty-state--center{display:flex;flex-direction:column;align-items:center}
.evps-app .evps-empty-state__icon{font-size:2rem;color:var(--evps-text-dim);margin-bottom:var(--evps-space-3)}
.evps-app .evps-empty-state__title,.evps-app .evps-empty__title{font-weight:600;color:var(--evps-text);margin-bottom:var(--evps-space-2)}
.evps-app .evps-empty-state__description{color:var(--evps-text-muted);max-width:420px;margin:0 auto var(--evps-space-4)}
.evps-app .evps-empty-state__actions,.evps-app .evps-empty__actions{display:flex;gap:var(--evps-space-3);justify-content:center;flex-wrap:wrap}

/* headings + helpers */
.evps-app .evps-h5{font-size:1rem;font-weight:600;color:var(--evps-text);margin:0 0 var(--evps-space-2)}
.evps-app .evps-h6{font-size:.85rem;font-weight:600;text-transform:uppercase;letter-spacing:.04em;color:var(--evps-text-muted);margin:0 0 var(--evps-space-2)}
.evps-app .evps-help-text,.evps-app .evps-field__hint{font-size:12px;color:var(--evps-text-muted);margin-top:4px}
.evps-app .evps-text-accent{color:var(--evps-accent)}
.evps-app .evps-link--back{color:var(--evps-text-muted);text-decoration:none;display:inline-flex;align-items:center;gap:6px}
.evps-app .evps-link--back:hover{color:var(--evps-accent)}
.evps-app .evps-container{max-width:1200px;margin:0 auto}
.evps-app .evps-address{font-style:normal;color:var(--evps-text);line-height:1.6}
.evps-app .evps-codeblock{font-family:var(--evps-font-mono,monospace);font-size:12.5px;background:var(--evps-surface-inset,var(--evps-surface-2));border:1px solid var(--evps-border);border-radius:var(--evps-radius-sm);padding:var(--evps-space-3);overflow-x:auto;color:var(--evps-text)}
.evps-app .evps-secret{font-family:var(--evps-font-mono,monospace);background:var(--evps-surface-inset,var(--evps-surface-2));border:1px solid var(--evps-border);border-radius:var(--evps-radius-sm);padding:2px 8px;color:var(--evps-text)}
.evps-app .evps-whois-output{font-family:var(--evps-font-mono,monospace);font-size:12.5px;white-space:pre-wrap;background:var(--evps-surface-inset,var(--evps-surface-2));border:1px solid var(--evps-border);border-radius:var(--evps-radius-sm);padding:var(--evps-space-3);color:var(--evps-text);max-height:480px;overflow:auto}

/* nav-link family (footer/utility nav) */
.evps-app .evps-nav-links{display:flex;gap:var(--evps-space-4);flex-wrap:wrap;list-style:none;margin:0;padding:0}
.evps-app .evps-nav-link{color:var(--evps-text-muted);text-decoration:none}
.evps-app .evps-nav-link:hover,.evps-app .evps-nav-link.is-active{color:var(--evps-accent)}

/* form row grid helpers (parents .evps-form/.evps-field are defined) */
.evps-app .evps-form__row{display:grid;grid-template-columns:1fr;gap:var(--evps-space-4);margin-bottom:var(--evps-space-4)}
.evps-app .evps-form__row--2col{grid-template-columns:repeat(2,minmax(0,1fr))}
.evps-app .evps-form__row--3col{grid-template-columns:repeat(3,minmax(0,1fr))}
@media (max-width:640px){.evps-app .evps-form__row--2col,.evps-app .evps-form__row--3col{grid-template-columns:1fr}}
.evps-app .evps-form__field{display:flex;flex-direction:column;gap:6px}
.evps-app .evps-form__label{font-size:13px;font-weight:500;color:var(--evps-text)}
.evps-app .evps-form-inline{display:flex;gap:var(--evps-space-3);align-items:flex-end;flex-wrap:wrap}

/* card sub-elements (.evps-card already has padding; body is a plain block) */
.evps-app .evps-card__body{color:var(--evps-text)}
.evps-app .evps-card__heading{display:flex;align-items:center;gap:var(--evps-space-2);margin-bottom:var(--evps-space-2)}
.evps-app .evps-card__icon{display:inline-flex;align-items:center;justify-content:center;color:var(--evps-accent)}
.evps-app .evps-card__actions--inline{display:flex;gap:var(--evps-space-2);align-items:center}
.evps-app .evps-card--link{cursor:pointer;transition:border-color .12s}
.evps-app .evps-card--link:hover{border-color:var(--evps-accent)}
.evps-app .evps-card--list{padding:0;overflow:hidden}
.evps-app .evps-card--auth{max-width:420px;margin:0 auto}

/* domain/service/billing one-offs */
.evps-app .evps-data-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:var(--evps-space-4)}
.evps-app .evps-contact-list{display:flex;flex-direction:column;gap:var(--evps-space-3)}
.evps-app .evps-txn-row{display:flex;align-items:center;justify-content:space-between;gap:var(--evps-space-3);padding:var(--evps-space-3) 0;border-bottom:1px solid var(--evps-border)}
.evps-app .evps-audit-row{display:flex;align-items:center;gap:var(--evps-space-3);padding:var(--evps-space-2) 0;border-bottom:1px solid var(--evps-border);font-size:13px}
.evps-app .evps-incident{border-left:3px solid var(--evps-warning);background:var(--evps-warning-soft);padding:var(--evps-space-3) var(--evps-space-4);border-radius:var(--evps-radius-sm);margin-bottom:var(--evps-space-3)}
.evps-app .evps-server-card{border:1px solid var(--evps-border);border-radius:var(--evps-radius-md);padding:var(--evps-space-4);background:var(--evps-surface)}
.evps-app .evps-tags{display:flex;flex-wrap:wrap;gap:6px}
.evps-app .evps-store-desc{color:var(--evps-text-muted);line-height:1.6}
.evps-app .evps-service-header{display:flex;align-items:center;justify-content:space-between;gap:var(--evps-space-4);flex-wrap:wrap;margin-bottom:var(--evps-space-4)}
.evps-app .evps-service-item{display:flex;align-items:center;justify-content:space-between;gap:var(--evps-space-3);padding:var(--evps-space-3) var(--evps-space-4);border:1px solid var(--evps-border);border-radius:var(--evps-radius-md);margin-bottom:var(--evps-space-2)}
.evps-app .evps-payment-method__logo{height:28px;width:auto}
.evps-app .evps-saved-method__actions{display:flex;gap:var(--evps-space-2)}
.evps-app .evps-forwardpage__form{max-width:480px;margin:0 auto}
.evps-app .evps-widget{border:1px solid var(--evps-border);border-radius:var(--evps-radius-md);background:var(--evps-surface);padding:var(--evps-space-4)}
.evps-app .evps-ai-suggestion{border:1px solid var(--evps-border);border-radius:var(--evps-radius-md);padding:var(--evps-space-3);background:var(--evps-surface-2)}
.evps-app .evps-ai-suggestion__title{font-weight:600;color:var(--evps-text);margin-bottom:4px}
.evps-app .u-col-span-1{grid-column:span 1}

/* FULL-TAKEOVER COVERAGE — BATCH 3 (v1.0.62): BEM sub-elements of the
   now-defined parents + a few high-use modifiers. (evps-ai-mount /
   evps-cmdk-mount are JS mount targets — intentionally no CSS.) */
.evps-app .evps-btn--block{width:100%;justify-content:center}
.evps-app .evps-btn__label{display:inline-flex;align-items:center}
.evps-app .evps-alert__content{flex:1;min-width:0}
.evps-app .evps-alert__close{flex:none;margin-left:auto}
.evps-app .evps-page__sub{color:var(--evps-text-muted);margin:4px 0 0}
.evps-app .evps-page--hero{padding-top:var(--evps-space-4)}
.evps-app .evps-section__header{display:flex;align-items:center;justify-content:space-between;gap:var(--evps-space-3);flex-wrap:wrap;margin-bottom:var(--evps-space-3)}
.evps-app .evps-tabs__panels{margin-top:var(--evps-space-4)}
.evps-app .evps-option-card__img{max-width:100%;height:auto;border-radius:var(--evps-radius-sm)}
.evps-app .evps-sidebar__logo--lg{height:40px;width:auto}
.evps-app .evps-cmdk__empty{padding:var(--evps-space-5);text-align:center;color:var(--evps-text-muted)}
/* widget internals */
.evps-app .evps-widget__header{display:flex;align-items:center;justify-content:space-between;gap:var(--evps-space-2);margin-bottom:var(--evps-space-3)}
.evps-app .evps-widget__title{font-weight:600;color:var(--evps-text)}
.evps-app .evps-widget__sub{font-size:12px;color:var(--evps-text-muted)}
.evps-app .evps-widget__body{color:var(--evps-text)}
.evps-app .evps-widget__actions{display:flex;gap:var(--evps-space-2);flex-wrap:wrap}
/* service-item internals */
.evps-app .evps-service-item__main{flex:1;min-width:0}
.evps-app .evps-service-item__name{font-weight:600;color:var(--evps-text)}
.evps-app .evps-service-item__domain{font-size:12px;color:var(--evps-text-muted)}
.evps-app .evps-service-item__aside{display:flex;align-items:center;gap:var(--evps-space-3)}
/* table sub-elements (.evps-table is defined) */
.evps-app .evps-table--compact th,.evps-app .evps-table--compact td{padding:6px 8px}
.evps-app .evps-table__actions{display:flex;gap:var(--evps-space-2);justify-content:flex-end}
.evps-app .evps-table__empty{text-align:center;color:var(--evps-text-muted);padding:var(--evps-space-6)}
.evps-app .evps-table__total{font-weight:700;color:var(--evps-text)}
.evps-app .evps-table__row--clickable{cursor:pointer}
.evps-app .evps-table__row--clickable:hover{background:var(--evps-surface-2)}
.evps-app .evps-table__skeleton{height:14px;border-radius:4px;background:linear-gradient(90deg,var(--evps-surface-2),var(--evps-surface-3),var(--evps-surface-2));background-size:200% 100%;animation:evps-shimmer 1.2s infinite}
@keyframes evps-shimmer{0%{background-position:200% 0}100%{background-position:-200% 0}}
