/* ============================================================
   expressmove-theme.css — ExpressMove design tokens (CSS vars)
   Drop into wwwroot/css/ and reference once in _Layout.cshtml.
   Pure CSS custom properties — NO SCSS/build step required.
   These are the SAME tokens as the HTML design system.
   ============================================================ */

:root {
  /* surfaces */
  --em-bg: #FFFFFF;
  --em-surface: #F4F6F9;
  --em-surface-alt: #EEF1F5;
  --em-card: #FFFFFF;

  /* text */
  --em-ink: #0A0A0E;      /* primary text + primary buttons */
  --em-body: #22262C;
  --em-muted: #6B7280;
  --em-faint: #9AA0A6;

  /* lines */
  --em-line: #EEF0F4;
  --em-line-strong: #E1E4EA;

  /* admin accent (blue) */
  --em-blue: #1E5AFE;
  --em-blue-soft: #EAF0FF;
  --em-blue-ink: #0B2E91;

  /* shipper accent (violet) */
  --em-violet: #7C3AED;
  --em-violet-soft: #F2ECFE;
  --em-violet-ink: #4C1D95;

  /* status */
  --em-green: #16A34A;  --em-green-soft: #E7F7EC;  --em-green-ink: #15803D;
  --em-amber: #F59E0B;  --em-amber-soft: #FEF3DC;  --em-amber-ink: #92590A;
  --em-red:   #E11D48;  --em-red-soft:   #FCE7EC;  --em-red-ink:   #9F1239;

  /* role-scoped accent — set on <body class="em-admin"> or <body class="em-shipper">.
     Components use var(--em-accent*) so they recolor automatically per area. */
  --em-accent: var(--em-blue);
  --em-accent-soft: var(--em-blue-soft);
  --em-accent-ink: var(--em-blue-ink);

  /* radius */
  --em-r-sm: 10px;   /* small buttons */
  --em-r-md: 14px;   /* inputs, buttons */
  --em-r-lg: 18px;   /* cards */
  --em-r-xl: 22px;   /* hero / modals */
  --em-r-pill: 999px;

  /* spacing scale */
  --em-s-xs: 4px; --em-s-sm: 8px; --em-s-md: 12px; --em-s-lg: 16px; --em-s-xl: 24px; --em-s-2xl: 32px;

  /* shadows (subtle — borders do most of the work) */
  --em-shadow-card: 0 1px 2px rgba(15,20,40,.03);
  --em-shadow-pop: 0 10px 30px rgba(15,20,40,.12);
  --em-shadow-toast: 0 12px 32px rgba(15,20,40,.25);

  /* type */
  --em-font-display: "Geist", "Segoe UI", system-ui, sans-serif;
  --em-font-sans: "Inter", "Segoe UI", system-ui, sans-serif;
  --em-font-mono: "Geist Mono", ui-monospace, "Cascadia Code", monospace;
}

/* role scoping */
body.em-admin   { --em-accent: var(--em-blue);   --em-accent-soft: var(--em-blue-soft);   --em-accent-ink: var(--em-blue-ink); }
body.em-shipper { --em-accent: var(--em-violet); --em-accent-soft: var(--em-violet-soft); --em-accent-ink: var(--em-violet-ink); }

/* ---- base ---- */
* { box-sizing: border-box; }
body { margin: 0; font-family: var(--em-font-sans); color: var(--em-ink); background: var(--em-surface);
  -webkit-font-smoothing: antialiased; }

/* ---- buttons ---- */
.em-btn { font-family: var(--em-font-sans); font-weight: 600; border: none; cursor: pointer;
  display: inline-flex; align-items: center; justify-content: center; gap: 8px; white-space: nowrap;
  border-radius: var(--em-r-md); padding: 10px 16px; font-size: 14px; min-height: 40px;
  transition: filter .12s, opacity .12s; }
.em-btn:hover { filter: brightness(.97); }
.em-btn:disabled { opacity: .4; cursor: default; }
.em-btn--lg { padding: 13px 20px; font-size: 15px; min-height: 48px; }
.em-btn--sm { padding: 7px 12px; font-size: 13px; min-height: 34px; border-radius: var(--em-r-sm); }
.em-btn--primary { background: var(--em-ink); color: #fff; }            /* black primary (Uber-style) */
.em-btn--accent  { background: var(--em-accent); color: #fff; }         /* blue (admin) / violet (shipper) */
.em-btn--soft    { background: var(--em-accent-soft); color: var(--em-accent-ink); }
.em-btn--outline { background: #fff; color: var(--em-ink); box-shadow: inset 0 0 0 1px var(--em-line-strong); }
.em-btn--surface { background: var(--em-surface); color: var(--em-ink); }
.em-btn--ghost   { background: transparent; color: var(--em-body); }
.em-btn--danger  { background: var(--em-red-soft); color: var(--em-red-ink); }

/* ---- card ---- */
.em-card { background: var(--em-card); border: 1px solid var(--em-line); border-radius: var(--em-r-lg);
  box-shadow: var(--em-shadow-card); }

/* ---- pill / badge ---- */
.em-pill { display: inline-flex; align-items: center; gap: 4px; padding: 5px 10px;
  border-radius: var(--em-r-pill); font-weight: 600; font-size: 12px; line-height: 14px; white-space: nowrap; }
.em-pill--sm { padding: 3px 8px; font-size: 11px; }
.em-pill--gray   { background: #F1F3F6; color: #374151; }
.em-pill--blue   { background: var(--em-blue-soft);   color: var(--em-blue-ink); }
.em-pill--violet { background: var(--em-violet-soft); color: var(--em-violet-ink); }
.em-pill--green  { background: var(--em-green-soft);  color: var(--em-green-ink); }
.em-pill--amber  { background: var(--em-amber-soft);  color: var(--em-amber-ink); }
.em-pill--red    { background: var(--em-red-soft);    color: var(--em-red-ink); }
.em-pill--ink    { background: var(--em-ink); color: #fff; }

/* ---- input ---- */
.em-field { display: block; }
.em-field > label { font-size: 11.5px; font-weight: 600; color: var(--em-muted);
  text-transform: uppercase; letter-spacing: .5px; margin-bottom: 7px; display: block; }
.em-input { width: 100%; background: #fff; border: 1px solid var(--em-line);
  border-radius: var(--em-r-md); padding: 12px 14px; font-size: 14px; font-family: var(--em-font-sans);
  color: var(--em-ink); outline: none; transition: border-color .12s; }
.em-input:focus { border-color: var(--em-accent); border-width: 1.5px; }
.em-input.is-error { border-color: var(--em-red); border-width: 1.5px; }
.em-field .em-error { color: var(--em-red); font-size: 11.5px; font-weight: 500; margin-top: 6px; }

/* ---- tabs (filter pills) ---- */
.em-tabs { display: flex; gap: 8px; }
.em-tab { padding: 8px 14px; border-radius: var(--em-r-pill); font-size: 13px; font-weight: 600;
  cursor: pointer; background: #fff; color: var(--em-body); border: 1px solid var(--em-line);
  display: inline-flex; align-items: center; gap: 6px; }
.em-tab.is-active { background: var(--em-ink); color: #fff; border-color: transparent; }
.em-tab .em-tab-count { background: var(--em-surface); color: var(--em-muted); padding: 1px 7px;
  border-radius: var(--em-r-pill); font-size: 11px; }
.em-tab.is-active .em-tab-count { background: rgba(255,255,255,.2); color: #fff; }

/* ---- dropdown ---- */
.em-dropdown { position: relative; }
.em-dropdown__btn { background: #fff; border: 1px solid var(--em-line); border-radius: var(--em-r-md);
  padding: 12px 14px; display: flex; align-items: center; gap: 10px; cursor: pointer; width: 100%; }
.em-dropdown.is-open .em-dropdown__btn { border-color: var(--em-accent); border-width: 1.5px; }
.em-dropdown__menu { position: absolute; top: calc(100% + 6px); left: 0; right: 0; background: #fff;
  border: 1px solid var(--em-line); border-radius: var(--em-r-md); box-shadow: var(--em-shadow-pop);
  padding: 4px; z-index: 50; display: none; }
.em-dropdown.is-open .em-dropdown__menu { display: block; }
.em-dropdown__item { padding: 10px 12px; border-radius: var(--em-r-sm); font-size: 13px; cursor: pointer; }
.em-dropdown__item:hover { background: var(--em-surface); }
.em-dropdown__item.is-selected { background: var(--em-accent-soft); color: var(--em-accent-ink); font-weight: 600; }

/* ---- toggle / checkbox ---- */
.em-toggle { width: 44px; height: 26px; border-radius: var(--em-r-pill); background: var(--em-line-strong);
  position: relative; cursor: pointer; border: none; padding: 0; transition: background .18s; }
.em-toggle.is-on { background: var(--em-accent); }
.em-toggle::after { content: ""; position: absolute; top: 2px; left: 2px; width: 22px; height: 22px;
  border-radius: 50%; background: #fff; box-shadow: 0 1px 3px rgba(0,0,0,.18); transition: left .18s; }
.em-toggle.is-on::after { left: 20px; }
.em-check { width: 20px; height: 20px; border-radius: 6px; background: #fff; cursor: pointer;
  box-shadow: inset 0 0 0 1.5px var(--em-line-strong); display: inline-flex; align-items: center;
  justify-content: center; color: #fff; }
.em-check.is-on { background: var(--em-accent); box-shadow: none; }

/* ---- table ---- */
.em-table { width: 100%; border-collapse: collapse; }
.em-table thead th { background: var(--em-surface); font-size: 11px; font-weight: 700; color: var(--em-muted);
  letter-spacing: .5px; text-transform: uppercase; padding: 14px 22px; text-align: left;
  border-bottom: 1px solid var(--em-line); }
.em-table tbody td { padding: 14px 22px; border-bottom: 1px solid var(--em-line); font-size: 14px; }
.em-pagination { display: flex; align-items: center; justify-content: space-between; padding: 12px 22px; }
.em-page { min-width: 34px; height: 34px; border-radius: var(--em-r-sm); border: none; cursor: pointer;
  background: var(--em-surface); color: var(--em-body); font-weight: 600; font-size: 13px; }
.em-page.is-active { background: var(--em-accent); color: #fff; }

/* ---- toast ---- */
.em-toast-host { position: fixed; top: 20px; right: 20px; display: flex; flex-direction: column; gap: 10px; z-index: 9999; }
.em-toast { background: var(--em-ink); color: #fff; border-radius: var(--em-r-md); padding: 12px 14px;
  display: flex; align-items: center; gap: 12px; box-shadow: var(--em-shadow-toast);
  animation: em-toast-in .2s ease; }
@keyframes em-toast-in { from { opacity: 0; transform: translateY(-6px); } to { opacity: 1; transform: none; } }

/* ---- modal / sheet ---- */
.em-modal-backdrop { position: fixed; inset: 0; background: rgba(15,20,40,.45); z-index: 9000;
  display: flex; align-items: center; justify-content: center; }
.em-modal { background: #fff; border-radius: var(--em-r-xl); padding: 22px; max-width: 420px; width: 90%; }
.em-spin { width: 18px; height: 18px; border-radius: 50%; border: 2px solid rgba(255,255,255,.35);
  border-top-color: #fff; animation: em-spin .7s linear infinite; }
@keyframes em-spin { to { transform: rotate(360deg); } }
