@font-face {
  font-display: swap;
  font-family: "Inter";
  font-style: normal;
  font-weight: 100 900;
  src: url("../fonts/InterVariable.woff2") format("woff2-variations"), url("../fonts/InterVariable.woff2") format("woff2") tech(variations);
}

:root {
  --mv-font-family: "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
  --mv-sidebar-width: 244px;
  --mv-group-dialog-width: 720px;
  --mv-canvas: #f2f4f3;
  --mv-surface: #fff;
  --mv-surface-subtle: #f7f9f8;
  --mv-border: #e5e9e7;
  --mv-border-strong: #d4dad7;
  --mv-ink: #171b19;
  --mv-ink-muted: #68706c;
  --mv-muted: #68706c;
  --mv-primary: #1c864c;
  --mv-primary-hover: #116c32;
  --mv-primary-soft: #edf9f1;
  --mv-primary-ink: #0d7335;
  --mv-accent: #159447;
  --mv-focus: #0f7b3a;
  --mv-sidebar-active: #f2faf5;
  --mv-sidebar-active-ring: #d8eee0;
  --mv-danger: #dc2626;
  --mv-danger-soft: #fef2f2;
  --mv-danger-ink: #b91c1c;
  --mv-success: #16a34a;
  --mv-success-ink: #15803d;
  --mv-success-soft: #f0fdf4;
  --mv-warning: #d97706;
  --mv-warning-ink: #b45309;
  --mv-warning-soft: #fffbeb;
  --mv-info: #0284c7;
  --mv-info-ink: #0369a1;
  --mv-info-soft: #f0f9ff;
  --mv-neutral-soft: #f1f5f9;
  /* Fleet classes are categories, not states, so they take a brand ramp ordered light to heavy rather
     than the semantic colours — an orange "light truck" would read as a warning. */
  --mv-fleet-1: #a7dcbd; --mv-fleet-2: #6cc494; --mv-fleet-3: #35a468; --mv-fleet-4: #16703f;
  /* Coverage areas: the selected area, then the palette its group is shown in. zone-map.js reads these too. */
  --mv-area-selected: #d89938;
  --mv-area-tint-1: #2563eb; --mv-area-tint-2: #9333ea; --mv-area-tint-3: #0d9488; --mv-area-tint-4: #db2777;
  --mv-area-tint-5: #4f46e5; --mv-area-tint-6: #65a30d; --mv-area-tint-7: #0284c7; --mv-area-tint-8: #be123c;
  --mv-unknown-soft: #f5f3ff;
  --mv-unknown-ink: #7c3aed;
  --mv-radius: 9px;
  --mv-radius-lg: 16px;
  --mv-shadow-card: 0 1px 2px rgba(23, 27, 25, .04);
  --mv-shadow-popover: 0 12px 32px rgba(23, 27, 25, .12), 0 2px 8px rgba(23, 27, 25, .06);
  --mv-document-preview-height: min(68dvh, 760px);
  --mv-document-preview-mobile-height: calc(100dvh - 184px);
  --mv-document-preview-min-height: 360px;
  --mv-document-preview-gap: 12px;
  --mv-progress-chevron-notch: 12px;
  --mv-progress-chevron-gap: 3px;
  --rz-primary: var(--mv-primary);
  --rz-primary-light: #3b82f6;
  --rz-primary-lighter: var(--mv-primary-soft);
  --rz-primary-dark: var(--mv-primary-hover);
  --rz-on-primary: #fff;
  --rz-on-primary-lighter: var(--mv-primary-ink);
  --rz-danger: var(--mv-danger);
  --rz-success: var(--mv-success);
  --rz-warning: var(--mv-warning);
  --rz-info: var(--mv-info);
  --rz-base-background-color: var(--mv-surface);
  --rz-body-background-color: var(--mv-canvas);
  --rz-text-color: var(--mv-ink);
  --rz-text-title-color: var(--mv-ink);
  --rz-text-font-family: var(--mv-font-family);
  /* The app has no RadzenLayout, so rem sizes resolve against the html 14px below; 1rem = 14px. */
  --rz-body-font-size: 1rem;
  --rz-border-radius: var(--mv-radius);
  --rz-button-border-radius: var(--mv-radius);
  --rz-input-border-radius: var(--mv-radius);
  --rz-card-border-radius: var(--mv-radius-lg);
  --rz-panel-border-radius: var(--mv-radius-lg);
  --rz-dialog-border-radius: var(--mv-radius-lg);
  --rz-input-size-md: 2.714rem;
  --rz-button-size-md: 2.571rem;
  --rz-input-padding-block: 0.25rem;
  --rz-input-padding-inline: 0.5rem;
  --rz-grid-background-color: var(--mv-surface);
  --rz-grid-border: none;
  --rz-grid-cell-padding: 0.4rem 0.85rem;
  --rz-grid-cell-font-size: 1rem;
  --rz-grid-cell-line-height: 1.4;
  --rz-grid-cell-border: 1px solid var(--mv-border);
  --rz-grid-header-background-color: var(--mv-surface-subtle);
  --rz-grid-header-padding: 0.3rem 0.85rem;
  --rz-grid-header-font-size: 11px;
  --rz-grid-header-font-weight: 600;
  --rz-grid-header-color: var(--mv-ink-muted);
  --rz-grid-stripe-background-color: #fafbfc;
  --rz-grid-hover-background-color: rgba(37, 99, 235, .06);
  --rz-grid-hover-color: var(--mv-ink);
  --rz-grid-selected-background-color: rgba(37, 99, 235, .12);
  --rz-grid-sort-icon-color: var(--mv-primary);
  --rz-dropdown-item-hover-background-color: rgba(37, 99, 235, .08);
  --rz-dropdown-item-selected-background-color: var(--mv-primary);
  --rz-dropdown-item-selected-color: #fff;
  --rz-dialog-title-font-size: 1.143rem;
  --rz-notification-shadow: var(--mv-shadow-popover);
}

* , *::before, *::after { box-sizing: border-box; }
html { font-size: 14px; }
body { background: var(--mv-canvas); color: var(--mv-ink); font-family: var(--mv-font-family); font-size: 14px; font-weight: 400; line-height: 21px; margin: 0; }
button, input, select, textarea { font: inherit; }
img, svg { display: block; max-width: 100%; }
a { color: var(--mv-primary-ink); }
a:hover { color: var(--mv-primary-hover); }
/* Radzen hardcodes .rz-button-md padding; the height comes from the size variable above. */
.rz-button-md { padding: 0.25rem 0.75rem; }

.mv-shell-container { margin-inline: auto; max-width: 1720px; padding-inline: clamp(18px, 2.5vw, 34px); width: 100%; }
.mv-page-frame { margin-inline: auto; max-width: 1720px; padding-inline: clamp(18px, 2.5vw, 34px); width: 100%; }
.mv-profile-page { max-width: 920px; }
.mv-profile-address { grid-column: span 8; }
.mv-profile-vat { align-items: start; display: grid; gap: 14px; grid-template-columns: minmax(220px, 1fr) minmax(220px, 1fr); margin-top: 12px; }
.mv-profile-fieldset { border: 0; margin: 0; min-inline-size: 0; padding: 0; }
.mv-profile-page pre { margin: 0 0 14px; max-width: 100%; overflow-wrap: anywhere; white-space: pre-wrap; }
.mv-edit-fieldset { border: 0; margin: 0; min-inline-size: 0; padding: 0; }
.mv-checkbox-field { align-items: center; display: flex; gap: 10px; min-height: 44px; padding: 0 8px; }
.mv-checkbox-field input { height: 20px; margin: 0; width: 20px; }
.mv-checkbox-field small { color: var(--mv-ink-muted); display: block; font-size: 12px; line-height: 17px; margin-top: 3px; }
.mv-field-error { color: var(--mv-danger); font-size: 12px; margin: 4px 0 0; }
@media (max-width: 640px) { .mv-profile-address { grid-column: auto; } .mv-profile-vat { grid-template-columns: minmax(0, 1fr); } }
.mv-brand { align-items:center; color: var(--mv-ink); display:flex; font-size: 18px; font-weight: 700; gap:10px; letter-spacing: -.03em; text-decoration: none; }
.mv-brand__mark { align-items:center; background:linear-gradient(145deg,#1aa653,#087836); border-radius:8px; box-shadow:0 3px 8px rgba(15,123,58,.22); color:#fff; display:inline-flex; font-size:15px; font-weight:800; height:32px; justify-content:center; letter-spacing:-.08em; width:32px; }
.mv-brand__word { color:var(--mv-ink); }
.mv-brand:hover, .mv-brand:focus { color: var(--mv-ink); }
.mv-branding-summary { align-items:start; display:grid; gap:24px; grid-template-columns:minmax(0,1fr) minmax(230px,300px); }
.mv-branding-summary__facts { min-width:0; }
.mv-branding-logo { align-items:center; background:#f4faf6; border:1px solid var(--mv-border); border-radius:10px; display:flex; height:72px; justify-content:center; margin-bottom:14px; overflow:hidden; width:180px; }
.mv-branding-logo img { display:block; max-height:54px; max-width:156px; object-fit:contain; }
.mv-branding-logo span { color:var(--mv-green-700); font-size:24px; font-weight:800; letter-spacing:-.05em; }
.mv-colour-swatch { background:var(--mv-brand-preview-accent); border:1px solid rgba(0,0,0,.15); border-radius:50%; display:inline-block; height:14px; margin-right:8px; vertical-align:-2px; width:14px; }
.mv-brand-document-preview { align-self:start; background:#fff; border:1px solid #aeb7b2; border-radius:10px; box-shadow:0 8px 24px rgba(17,24,39,.08); color:#111827; min-width:0; overflow:hidden; }
.mv-brand-document-preview header { align-items:center; display:flex; gap:10px; justify-content:space-between; padding:12px; }
.mv-brand-document-preview header > div:last-child { display:flex; flex:1; flex-direction:column; min-width:0; text-align:right; }
.mv-brand-document-preview header strong { overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.mv-brand-document-preview header span { color:var(--mv-muted); font-size:10px; font-weight:700; letter-spacing:.08em; }
.mv-brand-document-preview__logo { align-items:center; display:flex; font-size:16px; font-weight:800; height:34px; justify-content:center; max-width:108px; min-width:54px; overflow:hidden; }
.mv-brand-document-preview__logo img { display:block; max-height:34px; max-width:108px; object-fit:contain; }
.mv-brand-document-preview__route { align-items:center; background:var(--mv-brand-preview-accent); color:var(--mv-brand-preview-ink); display:flex; justify-content:space-between; padding:9px 12px; }
.mv-brand-document-preview__warning { background:var(--mv-warning-soft); color:var(--mv-warning-ink); font-size:11px; margin:0; padding:7px 12px; }
.mv-brand-document-preview__route span { font-size:9px; font-weight:700; }
.mv-brand-document-preview__body { display:flex; flex-direction:column; gap:3px; min-height:104px; padding:12px; }
.mv-brand-document-preview__body > span:first-child { color:var(--mv-brand-preview-accent); font-size:10px; font-weight:800; }
.mv-brand-document-preview__body > span:not(:first-child) { color:var(--mv-muted); font-size:11px; }
.mv-brand-document-preview__barcode { background:repeating-linear-gradient(90deg,#111 0 2px,transparent 2px 5px,#111 5px 6px,transparent 6px 9px); display:block; height:26px; margin-top:9px; width:100%; }
.mv-brand-document-preview footer { border-top:1px solid var(--mv-border); color:var(--mv-muted); font-size:10px; overflow:hidden; padding:8px 12px; text-overflow:ellipsis; white-space:nowrap; }
.mv-branding-editor { display:grid; gap:24px; grid-template-columns:minmax(0,1fr) 280px; }
.mv-branding-editor__fields { display:grid; gap:16px; min-width:0; }
.mv-branding-upload { align-items:flex-start; display:flex; flex-direction:column; gap:8px; }
.mv-branding-upload input[type=file] { max-width:100%; min-height:44px; }
.mv-file-name { font-size:13px; font-weight:650; overflow-wrap:anywhere; }
.mv-colour-input { align-items:center; display:grid; gap:10px; grid-template-columns:48px minmax(0,1fr); }
.mv-colour-input input[type=color] { background:#fff; border:1px solid var(--mv-border); border-radius:8px; height:44px; padding:4px; width:48px; }
.mv-conflict-confirm { align-items:center; display:flex; flex-wrap:wrap; gap:8px; margin-top:8px; width:100%; }
.mv-conflict-confirm span { flex:1 1 100%; font-weight:650; }

/* Workspace shell: a light rail beside a topbar-led page column. The rail and topbar share the
   surface white so the console reads as one plane over the grey canvas. */
.mv-shell { background:var(--mv-surface); border:1px solid var(--mv-border); border-radius:20px; box-shadow:0 18px 48px rgba(23,27,25,.10); display: grid; grid-template-columns: var(--mv-sidebar-width) minmax(0, 1fr); margin:24px; min-height:calc(100vh - 48px); overflow:clip; }
.mv-shell__main { background: var(--mv-canvas); display: flex; flex-direction: column; min-width: 0; }
.mv-skip-link { background: var(--mv-surface); border-radius: var(--mv-radius); color: var(--mv-primary-ink); font-weight: 600; left: 8px; padding: 10px 14px; position: fixed; top: 8px; transform: translateY(-200%); z-index: 60; }
.mv-skip-link:focus { transform: translateY(0); }

.mv-sidebar { background: var(--mv-surface); border-right: 1px solid var(--mv-border); color: var(--mv-ink); display: flex; flex-direction: column; gap: 4px; max-height:calc(100vh - 48px); overflow-y: auto; overscroll-behavior: contain; position: sticky; scrollbar-width: thin; top: 24px; z-index: 40; }
.mv-sidebar__brand { display: grid; gap: 5px; padding: 20px 18px 14px; }
.mv-sidebar__label { color: var(--mv-ink-muted); font-size: 11.5px; font-weight: 500; letter-spacing: .01em; padding-left:42px; }
.mv-sidebar__nav { display: flex; flex-direction: column; gap: 1px; padding: 0 10px 12px; }
.mv-sidebar__group { color: #94a3b8; font-size: 10.5px; font-weight: 600; letter-spacing: .08em; margin: 14px 0 4px; padding-inline: 10px; text-transform: uppercase; }
.mv-sidebar__group:first-child { margin-top: 6px; }
.mv-sidebar__link { align-items: center; border-radius: var(--mv-radius); color: #5d6561; display: flex; font-size: 13px; font-weight: 500; gap: 9px; min-height: 36px; padding: 0 11px; text-decoration: none; transition: background 120ms ease, color 120ms ease; }
.mv-sidebar__link svg { flex: 0 0 auto; }
.mv-sidebar__link:hover, .mv-sidebar__link:focus { background: var(--mv-surface-subtle); color: var(--mv-ink); }
.mv-sidebar__link.active { background: var(--mv-sidebar-active); box-shadow: inset 0 0 0 1px var(--mv-sidebar-active-ring); color: var(--mv-primary-ink); font-weight: 600; }

.mv-topbar { align-items: center; background: rgba(255,255,255,.96); border-bottom: 1px solid var(--mv-border); display: flex; gap: 12px; min-height: 64px; padding-inline: clamp(18px, 2.5vw, 34px); position: sticky; top: 0; z-index: 30; }
.mv-topbar__toggle { align-items: center; background: transparent; border: 0; border-radius: var(--mv-radius); color: var(--mv-ink); cursor: pointer; display: none; height: 40px; justify-content: center; width: 40px; }
.mv-topbar__toggle:hover { background: var(--mv-surface-subtle); }
.mv-topbar__bars, .mv-topbar__bars::before, .mv-topbar__bars::after { background: currentColor; border-radius: 2px; content: ""; display: block; height: 2px; position: relative; width: 18px; }
.mv-topbar__bars::before { top: -6px; }
.mv-topbar__bars::after { top: 4px; }
.mv-topbar__brand { align-items:center; color: var(--mv-ink); display: none; font-size: 18px; font-weight: 700; gap:9px; letter-spacing: -.03em; }
/* The current section as a quiet chip: wayfinding the old desktop shell never had. */
.mv-topbar__section { align-items: center; color: var(--mv-ink); display: inline-flex; font-size: 15px; font-weight: 650; min-height: 28px; }
.mv-topbar__actions { align-items: center; display: flex; gap: 10px; margin-left: auto; }
.mv-topbar__user { color: var(--mv-ink-muted); font-size: 12.5px; max-width: 220px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }

.mv-brand:focus-visible, .mv-sidebar__link:focus-visible, .mv-topbar__toggle:focus-visible, .mv-button:focus-visible, .mv-back-link:focus-visible, .mv-breadcrumbs a:focus-visible, .mv-table-link:focus-visible, .mv-input:focus-visible, summary:focus-visible { box-shadow: 0 0 0 3px rgba(21, 148, 71, .28); outline: 2px solid var(--mv-focus); outline-offset: 1px; }
.mv-page-frame { min-height: calc(100vh - 84px); }

/* Below the rail's comfortable width it becomes a drawer; the topbar keeps the brand and toggle. */
@media (max-width: 1079px) {
  .mv-shell { border:0; border-radius:0; margin:0; min-height:100vh; }
  .mv-shell { grid-template-columns: minmax(0, 1fr); }
  .mv-topbar__toggle { display: flex; }
  .mv-topbar__brand { display: inline-flex; flex: 0 0 auto; }
  .mv-sidebar { border-right: 0; bottom: 0; box-shadow: var(--mv-shadow-popover); left: 0; max-height:100vh; position: fixed; top: 0; transform: translateX(-100%); transition: transform 180ms ease, visibility 0s linear 180ms; visibility: hidden; width: min(280px, 84vw); }
  .mv-shell--navigation-open .mv-sidebar { transform: translateX(0); transition-delay: 0s; visibility: visible; }
  .mv-shell--navigation-open .mv-sidebar__scrim { background: rgba(15, 23, 42, .45); display: block; inset: 0; position: fixed; z-index: 35; }
  .mv-sidebar__link { min-height: 44px; }
  .mv-topbar__toggle { height: 44px; min-height: 44px; width: 44px; }
  .mv-topbar__user { display: none; }
}
.mv-sidebar__scrim { display: none; }

@media (max-width: 640px) {
  .mv-topbar { gap: 8px; padding-inline: 12px; }
  .mv-topbar__section { display: none; }
  .mv-topbar__actions { gap: 6px; }
  .mv-topbar__actions .mv-button { padding-inline: 10px; white-space: nowrap; }
}

@media (prefers-reduced-motion: reduce) {
  .mv-sidebar, .mv-sidebar__link { transition: none; }
}
.mv-workspace-page { padding-block: 24px 36px; }
.mv-workspace-page--narrow { margin-inline: auto; max-width: 1240px; }
.mv-workspace-page--wide { margin-inline: auto; max-width: 1500px; }

/* Login: one centred card on the canvas. The old split gradient panel is gone. */
.mv-login-frame { min-height: 100vh; }
.mv-login-shell { align-items: center; background: var(--mv-canvas); display: flex; flex-direction: column; justify-content: flex-start; min-height: 100vh; padding: clamp(48px, 14vh, 150px) 20px 48px; }
.mv-login-card { width: 100%; max-width: 420px; }
.mv-login-heading { margin-bottom: 16px; }
.mv-login-wordmark { color: var(--mv-ink); display: block; font-size: 24px; font-weight: 700; letter-spacing: -.03em; margin: 0 auto 24px; text-align: center; text-decoration: none; width: fit-content; }
.mv-login-wordmark span { color: var(--mv-accent); }
.mv-login-panel { background: var(--mv-surface); border: 1px solid var(--mv-border); border-radius: var(--mv-radius-lg); box-shadow: var(--mv-shadow-card), 0 8px 24px rgba(15, 23, 42, .05); padding: 28px; }
.mv-login-heading .mv-page-title { font-size: 19px; }
.mv-login-fields { display: grid; gap: 14px; }
.mv-login-forgot { align-items: baseline; display: flex; justify-content: space-between; }
.mv-login-forgot a { font-size: 12px; font-weight: 500; }
.mv-login-note { color: #94a3b8; font-size: 12px; line-height: 17px; margin: 16px auto 0; max-width: 340px; text-align: center; }
.mv-login-card .mv-form-actions { border-top: 0; margin-top: 20px; padding-top: 0; }
.mv-login-card .mv-button--primary { justify-content: center; width: 100%; }
.mv-login-enrolment { background: var(--mv-surface-subtle); border: 1px solid var(--mv-border); border-radius: var(--mv-radius-lg); margin-bottom: 20px; padding: 18px; }
.mv-login-enrolment img { background: #fff; display: block; height: auto; margin-block: 12px; max-width: 230px; padding: 10px; width: 100%; }
.mv-visually-hidden { clip: rect(0 0 0 0); height: 1px; margin: -1px; overflow: hidden; padding: 0; position: absolute; white-space: nowrap; width: 1px; }

.mv-page-header { align-items: flex-end; display: flex; gap: 16px; justify-content: space-between; margin-bottom: 20px; }
.mv-page-header--detail { align-items: flex-start; margin-top: 8px; }
.mv-page-title, .mv-section-title { color: var(--mv-ink); font-weight: 600; }
.mv-page-title { font-size: 24px; font-weight: 680; letter-spacing: -.025em; line-height: 32px; margin: 0; }
.mv-page-header--detail .mv-page-title { font-size: 20px; line-height: 28px; }
/* The page title takes focus after navigation so a screen reader announces the new page, and it
   carries tabindex="-1", so it is never in the tab order and nobody can reach it by tabbing. Keyboard
   navigation still made :focus-visible match, and the browser drew its default ring around a heading
   that does nothing when activated. Suppressing it costs no keyboard affordance - there is none to
   lose - and the announcement is unaffected. */
.mv-page-title:focus, .mv-page-title:focus-visible { box-shadow: none; outline: none; }
.mv-section-title { font-size: 14px; line-height: 20px; margin: 0; }
.mv-page-summary { color: var(--mv-ink-muted); font-size: 14px; margin: 4px 0 0; max-width: 700px; }
.mv-eyebrow { color: var(--mv-ink-muted); display: block; font-size: 10.5px; font-weight: 600; letter-spacing: .07em; line-height: 15px; text-transform: uppercase; }
.mv-page-actions, .mv-form-actions { align-items: center; display: flex; flex-wrap: wrap; gap: 8px; }
.mv-filter { align-items: flex-end; display: flex; flex-wrap: wrap; gap: 8px; }
/* Filter controls used to size themselves to their longest option, so a row came out ragged - five
   different widths on the shipments list, and four more spelled out as inline styles per page. One
   basis here governs every filter row; the panel variant below keeps its own growing behaviour. */
.mv-filter > label:not(.mv-checkbox-label), .mv-filter .mv-field { flex: 0 1 200px; }
.mv-filter .mv-input { background: var(--mv-surface); border: 1px solid var(--mv-border-strong); border-radius: var(--mv-radius); box-sizing: border-box; height: 38px; min-width: 160px; padding: 7px 11px; }
#courier-search { background: var(--mv-surface); border: 1px solid var(--mv-border-strong); border-radius: var(--mv-radius); box-sizing: border-box; height: 38px; padding: 7px 11px; }
.mv-back-link { align-items: center; border-radius: var(--mv-radius); color: var(--mv-ink-muted); display: inline-flex; font-size: 13px; gap: 6px; margin-bottom: 10px; text-decoration: none; }
.mv-breadcrumbs { font-size: 13px; margin-bottom: 8px; }
.mv-breadcrumbs ol { align-items: center; display: flex; flex-wrap: wrap; gap: 4px; list-style: none; margin: 0; padding: 0; }
.mv-breadcrumbs li { align-items: center; display: inline-flex; gap: 4px; max-width: 100%; }
.mv-breadcrumbs li + li::before { color: var(--mv-ink-muted); content: "\203A"; content: "\203A" / ""; }
.mv-breadcrumbs a { border-radius: var(--mv-radius); color: var(--mv-ink-muted); max-width: 32ch; overflow: hidden; text-decoration: none; text-overflow: ellipsis; white-space: nowrap; }
.mv-breadcrumbs a:hover, .mv-breadcrumbs a:focus-visible { color: var(--mv-primary-ink); text-decoration: underline; }
.mv-back-link:hover { color: var(--mv-primary-ink); }

.mv-button { align-items: center; background: var(--mv-surface); border: 1px solid var(--mv-border-strong); border-radius: var(--mv-radius); color: var(--mv-ink); cursor: pointer; display: inline-flex; font-size: 13px; font-weight: 550; gap: 6px; justify-content: center; line-height: 19px; min-height: 36px; padding: 0 15px; text-decoration: none; transition: background-color 120ms ease, border-color 120ms ease, color 120ms ease, transform 120ms ease; }
.mv-button:hover, .mv-button:focus-visible { background: var(--mv-surface-subtle); border-color: var(--mv-border-strong); color: var(--mv-ink); }
.mv-button:disabled, .mv-button[aria-disabled="true"] { cursor: not-allowed; opacity: .52; }
.mv-button--primary { background: var(--mv-primary); border-color: var(--mv-primary); color: #fff; font-weight: 600; }
.mv-button--primary:hover, .mv-button--primary:focus-visible { background: var(--mv-primary-hover); border-color: var(--mv-primary-hover); color: #fff; }
.mv-button--secondary { background: var(--mv-surface); border-color: var(--mv-border-strong); color: var(--mv-ink); }
.mv-button--link { background: transparent; border-color: transparent; color: var(--mv-primary-ink); padding: 0 6px; }
.mv-button--link:hover, .mv-button--link:focus-visible { background: var(--mv-primary-soft); border-color: transparent; color: var(--mv-primary-ink); }
.mv-button-row { align-items: center; display: flex; flex-wrap: wrap; gap: 8px; }
.mv-offline-status { align-items: center; background: var(--mv-warning-soft); border: 1px solid #f0d9a8; border-radius: var(--mv-radius); display: flex; flex-wrap: wrap; gap: 8px 14px; margin-bottom: 14px; padding: 10px 14px; }
.mv-offline-status span { color: var(--mv-ink-muted); flex: 1 1 260px; }
/* Above the sidebar (40) and topbar (30). At 20 the shell painted over the backdrop and stayed
   clickable, so a nav link could be clicked through an open dialog and navigate away, destroying the
   form behind it - and at wider dialog sizes the sidebar covered the dialog's own submit button. */
.mv-modal-backdrop { align-items:center; background:rgba(15,23,42,.45); display:flex; inset:0; justify-content:center; padding:20px; position:fixed; z-index:60; }
.mv-modal { background:var(--mv-surface); border-radius:var(--mv-radius-lg); box-shadow:0 18px 50px rgba(15,23,42,.24); display:flex; flex-direction:column; max-height:calc(100vh - 40px); max-width:1220px; overflow:hidden; width:100%; }
.mv-modal__header,.mv-modal__footer { align-items:center; display:flex; justify-content:space-between; padding:12px 18px; }
.mv-modal__header { border-bottom:1px solid var(--mv-border); }
.mv-modal__header h2 { font-size:17px; margin:0; }
.mv-modal__close { background:none; border:0; cursor:pointer; font-size:24px; line-height:1; }
.mv-modal__body { overflow:auto; padding:14px 18px; }
.mv-modal__footer { border-top:1px solid var(--mv-border); }
/* The step rail is cut for five-step pages. A dialog's two or three steps share its width instead, so their names stay on one line. */
.mv-modal .mv-progress-steps { flex-wrap: nowrap; }
.mv-create-card { border:1px solid var(--mv-border); border-radius:var(--mv-radius-lg); min-height:210px; }
.mv-create-card__heading { align-items:center; background:var(--mv-surface-subtle); display:flex; gap:12px; padding:14px 18px; }
.mv-create-card__heading h2 { font-size:16px; margin:0; }
.mv-create-card__body { padding:18px; }
.mv-create-card__body h3 { font-size:14px; margin:0 0 12px; }
.mv-create-icon,.mv-account-avatar { align-items:center; background:var(--mv-primary-soft); border-radius:50%; color:var(--mv-primary-ink); display:inline-flex; height:32px; justify-content:center; width:32px; }
.mv-create-icon--green { background:var(--mv-success-soft); color:var(--mv-success-ink); }
.mv-create-account,.mv-toggle-row,.mv-inline-field { align-items:center; display:flex; gap:12px; }
.mv-create-account .mv-input { max-width:300px; }
.mv-account-results { border:1px solid var(--mv-border); border-radius:var(--mv-radius); margin:5px 0 0 70px; max-width:300px; overflow:hidden; }
.mv-account-result { align-items:center; background:#fff; border:0; cursor:pointer; display:flex; gap:10px; padding:8px 12px; text-align:left; width:100%; }
.mv-account-result:hover { background:var(--mv-primary-soft); }
.mv-account-result span:last-child { display:grid; }
.mv-account-result small,.mv-selected-account span,.mv-muted { color:var(--mv-muted); }
.mv-selected-account { display:flex; gap:8px; margin:12px 0 0 70px; }
.mv-toggle-row { margin:10px 0; }
.mv-toggle-row input { opacity:0; position:absolute; }
.mv-toggle { background:var(--mv-border-strong); border-radius:14px; height:24px; position:relative; width:44px; }
.mv-toggle::after { background:#fff; border-radius:50%; content:""; height:18px; left:3px; position:absolute; top:3px; width:18px; }
.mv-toggle-row input:checked + .mv-toggle { background:var(--mv-primary); }
.mv-toggle-row input:checked + .mv-toggle::after { left:23px; }
.mv-inline-field { margin:10px 0 16px 62px; }
.mv-inline-field .mv-input { max-width:180px; }
.mv-review-warning { background:var(--mv-warning-soft); border:1px solid #f0d9a8; border-radius:var(--mv-radius); margin-bottom:14px; padding:10px 12px; }
.mv-review-list div { border-bottom:1px solid var(--mv-border); display:flex; gap:20px; padding:7px 0; }
.mv-review-list dt { font-weight:600; min-width:110px; }
.mv-review-list dd { margin:0; }
@media(max-width:640px){.mv-modal-backdrop{padding:0}.mv-modal{border-radius:0;max-height:100vh}.mv-modal__header,.mv-modal__body,.mv-modal__footer,.mv-create-card__heading,.mv-create-card__body{padding-left:14px;padding-right:14px}.mv-modal__footer>div{display:flex}.mv-create-account{align-items:flex-start;flex-direction:column}.mv-create-account .mv-input,.mv-account-results{max-width:none;width:100%}.mv-account-results,.mv-selected-account{margin-left:0}}

@media(max-width:640px){.mv-track-lookup__form{display:flex;flex-direction:column;align-items:stretch}.mv-track-lookup__form .mv-button{width:100%}}

.mv-panel, .mv-table-panel, .mv-empty-state { background: var(--mv-surface); border: 1px solid var(--mv-border); border-radius: var(--mv-radius-lg); box-shadow: var(--mv-shadow-card); }
.mv-panel--padded { padding: 16px; }
.mv-track-lookup { max-width: 680px; }
.mv-track-lookup__form { align-items: end; display: grid; gap: 10px 14px; grid-template-columns: minmax(0, 1fr) auto; margin-top: 14px; }
.mv-track-lookup__form .mv-field { grid-column: 1; }
.mv-track-lookup__form .mv-button { grid-column: 2; grid-row: 1; }
.mv-field-help { color: var(--mv-ink-muted); font-size: 12.5px; grid-column: 1; margin: -2px 0 0; }
.mv-form-panel { padding: 22px; }
.mv-form-panel__heading { border-bottom: 1px solid var(--mv-border); margin-bottom: 10px; padding-bottom: 7px; }
.mv-form-stack { display: grid; gap: 10px; }
.mv-form-actions { border-top: 1px solid var(--mv-border); justify-content: flex-end; margin-top: 12px; padding-top: 12px; }
/* A button row that follows a heading is an action group for that heading, not part of it. Without
   this the buttons sit flush against the title they belong to. Table cells keep the bare class. */
.mv-section-title + .mv-button-row { margin-top: 10px; }
/* Section rhythm inside a form. Headings carry no margin globally, which is right in a panel head
   but leaves "Capacity and cost" sitting on top of the field above it. Only h3, which is what a
   section inside a form uses - h2 is a panel heading and owns its spacing. :first-of-type rather
   than :first-child because a form's first element node is the antiforgery input, so the opening
   heading is never the first child. */
form h3.mv-section-title { margin-top: 18px; }
form h3.mv-section-title:first-of-type { margin-top: 0; }
form h3.mv-section-title + .mv-field-hint { margin-top: 2px; }
form .mv-checkbox-label { margin-top: 8px; }
/* Twelve tracks, not two. Fields ask for `grid-column: span 6` to mean half a row, which in a
   two-track grid clamps to the whole row - so every form using this class rendered as one tall
   column and the span modifiers below did nothing. Both grids count in twelfths now. */
.mv-form-grid { display: grid; column-gap: 12px; row-gap: 8px; grid-template-columns: repeat(12, minmax(0, 1fr)); }
.mv-field-grid { display: grid; column-gap: 12px; row-gap: 8px; grid-template-columns: repeat(12, minmax(0, 1fr)); }
.mv-address-control { display: contents; }
.mv-field { display: flex; flex-direction: column; grid-column: span 6; min-width: 0; }
.mv-field--address { grid-column: span 6; }
.mv-field--locality, .mv-field--code { grid-column: span 3; }
.mv-field--contact { grid-column: span 4; }
.mv-field--email { grid-column: span 8; }
.mv-field--dimension { grid-column: span 2; }
.mv-field--wide { grid-column: 1 / -1; }
.mv-field-label { color: var(--mv-ink); font-size: 12.5px; font-weight: 600; line-height: 18px; margin-bottom: 4px; }
.mv-input { background: var(--mv-surface); border: 1px solid var(--mv-border-strong); border-radius: var(--mv-radius); color: var(--mv-ink); height: 38px; min-width: 0; padding: 7px 11px; width: 100%; }
.mv-input--readonly { background: var(--mv-surface-subtle); color: var(--mv-ink-muted); }
textarea.mv-input { height: auto; min-height: 60px; }
.mv-field-hint { color: var(--mv-ink-muted); font-size: 11px; line-height: 15px; margin-top: 2px; }
.mv-input.invalid { border-color: var(--mv-danger); }
.mv-input:hover { border-color: var(--mv-border-strong); }
.mv-input:focus { border-color: var(--mv-primary); }
.mv-checkbox-label { align-items: center; display: inline-flex; gap: 8px; }
.mv-choice-group { align-items: center; display: flex; flex-wrap: wrap; gap: 8px 16px; }
.validation-message { color: var(--mv-danger-ink); font-size: 12px; line-height: 16px; margin-top: 4px; }
.mv-address-autocomplete { position: relative; }
.mv-address-suggestions { background: var(--mv-surface); border: 1px solid var(--mv-border-strong); border-radius: var(--mv-radius); box-shadow: var(--mv-shadow-popover); list-style: none; margin: 4px 0 0; max-height: 240px; overflow-y: auto; padding: 4px; position: absolute; top: 100%; width: 100%; z-index: 20; }
.mv-address-suggestions__option { border-radius: var(--mv-radius); cursor: pointer; font-size: 13px; line-height: 19px; padding: 6px 8px; }
.mv-address-suggestions__option[aria-selected="true"], .mv-address-suggestions__option:hover { background: var(--mv-primary-soft); color: var(--mv-primary-ink); }
.mv-address-suggestions__attribution { border-top: 1px solid var(--mv-border); display: flex; justify-content: flex-end; list-style: none; margin-top: 4px; padding: 6px 8px 2px; }
.mv-address-suggestions__attribution img { height: 14px; width: auto; }
.mv-address-confirmation { color: var(--mv-success-ink); font-size: 12px; grid-column: 1 / -1; line-height: 16px; margin: -8px 0 0; }

.rz-data-grid.mv-data-grid { --rz-body-font-size: 13px; --rz-grid-cell-font-size: 13px; border: 0; font-family: var(--mv-font-family); }
.rz-data-grid.mv-data-grid.rz-density-compact { --rz-grid-cell-line-height: 19px; }
.rz-data-grid.mv-data-grid .rz-grid-table { font-variant-numeric: tabular-nums; table-layout: auto; width: 100%; }
.rz-data-grid.mv-data-grid .mv-table-link { align-items: center; display: inline-flex; font-family: var(--mv-font-family); font-size: 13px; line-height: 19px; min-height: 24px; }
.rz-data-grid.mv-data-grid .rz-column-title { font-size: 11px; font-weight: 600; letter-spacing: .04em; line-height: 15px; text-transform: uppercase; }
.mv-table-panel { display: block; max-width: 100%; overflow-x: auto; width: 100%; }
.mv-desktop-pager { align-items: center; border-top: 1px solid var(--mv-border); display: flex; gap: 8px; justify-content: space-between; padding: 6px 12px; }
.mv-desktop-pager > span { color: var(--mv-ink-muted); font-size: 12px; font-variant-numeric: tabular-nums; line-height: 16px; text-align: center; }
.mv-table-link { color: var(--mv-primary-ink); font-weight: 600; text-decoration: none; }
.mv-table-link:hover { text-decoration: underline; }
.mv-view-switch { display:flex; gap:8px; margin:12px 0; }
/* The map is the ground, not a panel beside one: controls float over it and the zone list is docked to
   the trailing edge, so the largest thing on screen is the country the courier is drawing on. */
.mv-zone-workspace { border:1px solid var(--mv-border); border-radius:var(--mv-radius-lg); display:grid; grid-template-columns:minmax(0,1fr) 0; grid-template-rows:minmax(0,1fr); height:clamp(560px,68dvh,820px); min-height:520px; overflow:hidden; position:relative; transition:grid-template-columns .22s ease; }
.mv-zone-workspace { height:clamp(520px,calc(100dvh - 300px),820px); }
.mv-zone-workspace--drawer-open { grid-template-columns:minmax(0,1fr) 310px; }
.mv-zone-map-surface { background:var(--mv-surface-subtle); grid-column:1; grid-row:1; min-height:0; width:100%; }
.mv-zone-workspace--drawing .mv-zone-map-surface { cursor:crosshair; }
.mv-zone-map-fallback { align-items:center; background:var(--mv-surface); border:1px solid var(--mv-border); border-radius:var(--mv-radius); display:grid; gap:8px; inset:auto auto 50% 50%; justify-items:center; max-width:calc(100% - 24px); padding:20px 24px; position:absolute; text-align:center; transform:translate(-50%,50%); width:min(460px,calc(100% - 24px)); z-index:3; }
.mv-zone-map-fallback span { color:var(--mv-ink-muted); font-size:13px; }
.mv-zone-map-fallback .mv-button { max-width:100%; }
.mv-workspace-page > .mv-zone-map-fallback { inset:auto; margin:16px auto; position:static; transform:none; }
.mv-zone-disclosure-triggers { display:flex; gap:6px; left:12px; position:absolute; top:12px; z-index:3; }
.mv-zone-disclosure-trigger { gap:6px; min-height:36px; }
.mv-zone-disclosure-trigger svg,.mv-zone-map-actions svg,.mv-zone-actions-disclosure svg { height:16px; width:16px; }
.mv-zone-search { align-items:center; background:var(--mv-surface); border:1px solid var(--mv-border); border-radius:var(--mv-radius-lg); box-shadow:var(--mv-shadow-popover); display:flex; gap:8px; left:12px; padding:8px; position:absolute; top:60px; width:min(300px,calc(100% - 150px)); z-index:3; }
.mv-zone-search .mv-input { flex:1 1 auto; min-width:0; }
.mv-zone-tools { align-items:stretch; background:var(--mv-surface); border:1px solid var(--mv-border); border-radius:var(--mv-radius-lg); box-shadow:var(--mv-shadow-popover); display:grid; gap:6px; left:12px; padding:8px; position:absolute; top:60px; width:140px; z-index:3; }
.mv-zone-tools .mv-button { justify-content:flex-start; width:100%; }
.mv-zone-tool-label--mobile { display:none; }
.mv-zone-command__hint { color:var(--mv-ink-muted); font-size:12px; }
.mv-zone-layers-popover,.mv-zone-draw-guide,.mv-zone-discard-prompt { background:var(--mv-surface); border:1px solid var(--mv-border); border-radius:var(--mv-radius); box-shadow:var(--mv-shadow-popover); display:grid; gap:8px; left:12px; padding:10px 12px; position:absolute; top:60px; width:min(280px,calc(100% - 486px)); z-index:3; }
.mv-zone-layers-popover { left:12px; text-align:left; width:min(240px,calc(100% - 24px)); }
.mv-zone-context-menu { background:var(--mv-surface); border:1px solid var(--mv-border); border-radius:var(--mv-radius); box-shadow:var(--mv-shadow-popover); display:grid; gap:8px; padding:10px 12px; position:absolute; text-align:left; width:260px; z-index:4; }
.mv-zone-context-menu__name { font-size:13px; font-weight:600; margin:0; }
.mv-zone-context-menu__tags,.mv-zone-context-menu__actions { display:flex; flex-wrap:wrap; gap:6px; }
.mv-zone-context-menu .mv-field-label,.mv-zone-context-menu .mv-field-hint { text-align:left; }
.mv-zone-layers-popover .mv-field-label,.mv-zone-layers-popover .mv-input,.mv-zone-layers-popover .mv-field-hint { text-align:left; }
.mv-zone-draw-guide,.mv-zone-discard-prompt { left:164px; width:min(360px,calc(100% - 526px)); }
.mv-zone-editor { display:flex; flex:1 1 auto; flex-direction:column; min-height:0; }
.mv-zone-editor__head { align-items:center; background:var(--mv-primary-soft); border-bottom:1px solid var(--mv-sidebar-active-ring); display:grid; gap:10px; grid-template-columns:auto minmax(0,1fr) auto; padding:8px 12px; }
.mv-zone-editor__back { align-items:center; background:var(--mv-surface); border:1px solid var(--mv-sidebar-active-ring); border-radius:999px; box-shadow:var(--mv-shadow-card); color:var(--mv-primary-ink); cursor:pointer; display:inline-flex; height:32px; justify-content:center; padding:0; transition:background .15s ease,color .15s ease; width:32px; }
.mv-zone-editor__back:hover:not(:disabled), .mv-zone-editor__back:focus-visible { background:var(--mv-primary); border-color:var(--mv-primary); color:var(--mv-surface); outline:2px solid var(--mv-focus); outline-offset:2px; }
.mv-zone-editor__back svg { height:16px; stroke-width:2; width:16px; }
.mv-zone-editor__title { min-width:0; }
.mv-zone-editor__trail { color:var(--mv-ink-muted); font-size:11px; line-height:15px; margin:0; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.mv-zone-editor__name { color:var(--mv-ink); font-size:13.5px; font-weight:700; line-height:18px; margin:0; overflow-wrap:anywhere; }
.mv-zone-editor__meta { color:var(--mv-ink-muted); font-size:11px; line-height:15px; margin:0; }
.mv-icon-button.mv-zone-editor__delete { color:var(--mv-danger-ink); }
.mv-zone-editor__delete svg, .mv-zone-drawer__close svg { height:16px; width:16px; }
.mv-icon-button.mv-zone-editor__delete:hover, .mv-icon-button.mv-zone-editor__delete:focus-visible { background:var(--mv-danger-soft); border-color:var(--mv-danger-soft); outline-color:var(--mv-danger); }
.mv-zone-editor__body { background:var(--mv-surface-subtle); display:flex; flex:1 1 auto; flex-direction:column; gap:8px; min-height:0; overflow:auto; padding:8px 10px; }
.mv-zone-editor__cards { display:grid; gap:8px; }
.mv-zone-card { background:var(--mv-surface); border:1px solid var(--mv-border); border-radius:var(--mv-radius); box-shadow:var(--mv-shadow-card); display:grid; gap:8px; padding:10px 12px; }
.mv-zone-card__title { color:var(--mv-ink-muted); font-size:10.5px; line-height:14px; font-weight:700; letter-spacing:.06em; margin:0; text-transform:uppercase; }
.mv-zone-card__hint { color:var(--mv-ink); font-size:12px; line-height:16px; margin:0; }
.mv-zone-card .mv-field-label { font-size:12px; line-height:16px; margin-bottom:3px; }
.mv-zone-card .mv-field-hint, .mv-zone-card small { font-size:11px; line-height:15px; }
.mv-zone-card__tools { display:grid; gap:6px; grid-template-columns:repeat(3,minmax(0,1fr)); }
.mv-zone-card__tool { align-items:center; background:var(--mv-surface-subtle); border:1px solid var(--mv-border); border-radius:var(--mv-radius); color:var(--mv-ink); cursor:pointer; display:flex; flex-direction:column; font:inherit; font-size:11.5px; font-weight:600; gap:3px; justify-content:center; line-height:15px; min-height:48px; min-width:0; padding:6px 4px; text-align:center; transition:background .15s ease,border-color .15s ease; }
.mv-zone-card__tool svg { color:var(--mv-primary-ink); flex:0 0 auto; height:16px; width:16px; }
.mv-zone-card__tool span { max-width:100%; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.mv-zone-card__tool:hover:not(:disabled), .mv-zone-card__tool:focus-visible, .mv-zone-card__tool:focus-within { background:var(--mv-primary-soft); border-color:var(--mv-sidebar-active-ring); }
.mv-zone-card__tool:disabled { cursor:default; opacity:.55; }
.mv-zone-card__tool[aria-pressed="true"] { background:var(--mv-primary-soft); border-color:var(--mv-primary); color:var(--mv-primary-ink); }
.mv-zone-card > .mv-field-hint { margin:-2px 0 0; }
.mv-zone-card__coordinates { border-top:1px dashed var(--mv-border-strong); display:grid; gap:8px; padding-top:8px; }
.mv-zone-card__coordinates textarea { font-family:var(--mv-font-mono,ui-monospace,monospace); font-size:11.5px; min-height:110px; }
.mv-zone-editor__foot { align-items:center; background:var(--mv-surface); border-top:1px solid var(--mv-border); display:flex; flex-wrap:wrap; font-size:12.5px; gap:6px; justify-content:space-between; padding:8px 10px; }
.mv-zone-editor__foot > .mv-button--primary { flex:1 1 auto; }
.mv-zone-editor__foot--danger { background:var(--mv-danger-soft); border-top-color:var(--mv-danger-soft); color:var(--mv-danger-ink); font-weight:600; }
.mv-zone-editor__foot-actions { display:flex; gap:6px; }
.mv-zone-editor__foot--warning { background:var(--mv-warning-soft); border-top-color:var(--mv-warning-soft); color:var(--mv-warning-ink); font-weight:600; }
.mv-zone-card__count { color:var(--mv-ink-muted); font-weight:500; letter-spacing:0; margin-left:4px; }
.mv-zone-siblings { display:grid; gap:4px; list-style:none; margin:0; padding:0; }
.mv-zone-sibling { --mv-sibling-tint: var(--mv-area-tint-1); background:color-mix(in srgb, var(--mv-sibling-tint) 12%, var(--mv-surface)); border:1px solid color-mix(in srgb, var(--mv-sibling-tint) 28%, var(--mv-surface)); border-radius:calc(var(--mv-radius) - 3px); color:var(--mv-ink); cursor:pointer; display:block; font:inherit; font-size:12.5px; font-weight:500; line-height:16px; overflow:hidden; padding:5px 8px; text-align:left; text-overflow:ellipsis; white-space:nowrap; width:100%; }
.mv-zone-sibling:hover:not(:disabled), .mv-zone-sibling:focus-visible { background:color-mix(in srgb, var(--mv-sibling-tint) 22%, var(--mv-surface)); border-color:var(--mv-sibling-tint); }
.mv-zone-sibling[aria-current="true"] { --mv-sibling-tint: var(--mv-area-selected); background:color-mix(in srgb, var(--mv-sibling-tint) 28%, var(--mv-surface)); border-color:var(--mv-sibling-tint); box-shadow:0 0 0 1px var(--mv-sibling-tint); cursor:default; font-weight:700; }
.mv-zone-sibling:disabled { cursor:default; opacity:.55; }
.mv-zone-sibling--tint-1 { --mv-sibling-tint: var(--mv-area-tint-1); }
.mv-zone-sibling--tint-2 { --mv-sibling-tint: var(--mv-area-tint-2); }
.mv-zone-sibling--tint-3 { --mv-sibling-tint: var(--mv-area-tint-3); }
.mv-zone-sibling--tint-4 { --mv-sibling-tint: var(--mv-area-tint-4); }
.mv-zone-sibling--tint-5 { --mv-sibling-tint: var(--mv-area-tint-5); }
.mv-zone-sibling--tint-6 { --mv-sibling-tint: var(--mv-area-tint-6); }
.mv-zone-sibling--tint-7 { --mv-sibling-tint: var(--mv-area-tint-7); }
.mv-zone-sibling--tint-8 { --mv-sibling-tint: var(--mv-area-tint-8); }
.mv-zone-editor__back:disabled { cursor:default; opacity:.55; }
.mv-zone-editor .mv-alert { margin:0; }
.mv-zone-status-chip--published { background: var(--mv-success-soft, #e3f3e8); }
.mv-zone-status-chip--changed { background: var(--mv-warning-soft, #fff1d6); }
.mv-zone-status-chip--new { background: var(--mv-info-soft, #e3ecfb); }
.mv-zone-status-chip--deleted, .mv-zone-status-chip--unknown { background: var(--mv-neutral-soft); color: var(--mv-ink-muted, var(--mv-ink)); }
.mv-zone-new-row { align-items: end; display: flex; flex-wrap: wrap; gap: 8px; margin-bottom: 8px; }
.mv-zone-grid .mv-input { min-width: 160px; }
.mv-zone-tag-chip { align-items:center; background:var(--mv-surface-subtle); border:1px solid var(--mv-border); border-radius:999px; display:inline-flex; font-size:12px; gap:4px; padding:2px 6px 2px 10px; }
.mv-zone-tag-chip__remove { background:none; border:0; border-radius:999px; color:var(--mv-ink-muted); cursor:pointer; font-size:14px; line-height:1; padding:0 4px; }
.mv-zone-tag-chip__remove:hover { color:var(--mv-ink); }
.mv-zone-tags { align-items:center; background:var(--mv-surface); border:1px solid var(--mv-border-strong); border-radius:var(--mv-radius); display:flex; flex-wrap:wrap; gap:4px; min-height:32px; padding:3px 3px 3px 6px; }
.mv-zone-tags:focus-within { border-color:var(--mv-primary); box-shadow:0 0 0 3px var(--mv-primary-soft); }
.mv-zone-tags__add { align-items:center; display:flex; flex:1 1 120px; gap:4px; min-width:0; }
.mv-zone-tags__icon { color:var(--mv-ink-muted); display:inline-flex; flex:0 0 auto; }
.mv-zone-tags__icon svg { height:14px; width:14px; }
.mv-zone-tags__input { background:none; border:0; color:var(--mv-ink); flex:1 1 auto; font:inherit; font-size:13px; height:24px; min-width:0; outline:0; padding:0 2px; }
.mv-zone-tags__input::placeholder { color:var(--mv-ink-muted); }
.mv-icon-button.mv-zone-tags__submit { flex:0 0 auto; height:24px; min-height:24px; width:24px; }
.mv-zone-tags__submit svg { height:14px; width:14px; }
.mv-zone-tags__submit:disabled { cursor:default; opacity:.35; }
.mv-zone-tags .mv-zone-tag-chip { background:var(--mv-primary-soft); border-color:var(--mv-sidebar-active-ring); color:var(--mv-primary-ink); font-weight:600; height:24px; }
.mv-zone-tags .mv-zone-tag-chip__remove { align-items:center; display:inline-flex; height:18px; justify-content:center; padding:0; width:18px; }
.mv-zone-tags .mv-zone-tag-chip__remove svg { height:10px; width:10px; }
.mv-zone-tags .mv-zone-tag-chip__remove:hover { background:var(--mv-surface); }
.mv-zone-reshape-tools { align-items:center; background:var(--mv-surface); border:1px solid var(--mv-border); border-radius:var(--mv-radius); box-shadow:var(--mv-shadow-popover); display:flex; flex-wrap:wrap; gap:8px; left:12px; padding:10px 12px; position:absolute; top:60px; z-index:6; }
.mv-zone-reshape-tools span { color:var(--mv-ink-muted); font-size:12px; }
.mv-import-preview { border:1px solid var(--mv-border); border-radius:var(--mv-radius); list-style:none; margin:12px 0; max-height:260px; overflow:auto; padding:6px; }
.mv-import-preview li { align-items:center; border-bottom:1px solid var(--mv-border); display:flex; gap:12px; justify-content:space-between; padding:7px 8px; }
.mv-import-preview li:last-child { border-bottom:0; }
.mv-import-preview small { color:var(--mv-ink-muted); }
.mv-zone-map-actions { align-items:center; display:flex; gap:6px; position:absolute; right:116px; top:12px; z-index:3; }
.mv-zone-workspace--drawer-open .mv-zone-map-actions { right:426px; }
.mv-zone-map-actions__secondary { display:flex; gap:6px; }
.mv-zone-map-actions .mv-zone-icon-command { align-items:center; background:var(--mv-surface); border:1px solid var(--mv-border-strong); border-radius:var(--mv-radius); box-shadow:var(--mv-shadow-card); display:inline-flex; justify-content:center; min-height:36px; min-width:36px; padding-inline:8px; }
.mv-zone-map-actions .mv-file-button.mv-zone-icon-command { overflow:visible; }
.mv-zone-map-actions .mv-zone-icon-command:hover { background:var(--mv-surface-subtle); border-color:var(--mv-border-strong); color:var(--mv-ink); }
.mv-zone-map-actions .mv-zone-icon-command:disabled { background:var(--mv-surface); opacity:1; }
.mv-zone-map-actions .mv-zone-icon-command:focus-visible,.mv-zone-map-actions .mv-zone-icon-command:focus-within { background:var(--mv-surface); border-color:var(--mv-focus); box-shadow:0 0 0 3px rgba(21,148,71,.28),var(--mv-shadow-card); color:var(--mv-ink); outline:2px solid var(--mv-focus); outline-offset:1px; }
.mv-zone-publish-command { gap:6px; }
.mv-zone-actions-trigger { display:none; gap:6px; }
.mv-zone-actions-disclosure { background:var(--mv-surface); border:1px solid var(--mv-border); border-radius:var(--mv-radius); box-shadow:var(--mv-shadow-popover); display:grid; gap:4px; padding:8px; position:absolute; right:116px; top:56px; width:220px; z-index:6; }
.mv-zone-actions-disclosure .mv-button { gap:8px; justify-content:flex-start; min-height:44px; width:100%; }
.mv-zone-map-actions [data-tooltip],.mv-zone-disclosure-trigger[data-tooltip] { position:relative; }
@media (hover:hover) { .mv-zone-map-actions [data-tooltip]:hover::after,.mv-zone-map-actions [data-tooltip]:focus-visible::after,.mv-zone-map-actions [data-tooltip]:focus-within::after,.mv-zone-disclosure-trigger[data-tooltip]:hover::after,.mv-zone-disclosure-trigger[data-tooltip]:focus-visible::after { background:var(--mv-ink); border-radius:5px; color:#fff; content:attr(data-tooltip); font-size:11px; left:50%; padding:4px 7px; pointer-events:none; position:absolute; top:calc(100% + 6px); transform:translateX(-50%); white-space:nowrap; z-index:20; } }
/* The drawer's icons use the same tip as the map toolbar. Near the panel's edges a tip anchors to that edge so it
   is not cut off by the drawer, which clips its overflow. */
.mv-zone-drawer [data-tooltip] { position:relative; }
@media (hover:hover) {
  .mv-zone-drawer [data-tooltip]:hover::after, .mv-zone-drawer [data-tooltip]:focus-visible::after, .mv-zone-drawer .mv-file-button[data-tooltip]:focus-within::after { background:var(--mv-ink); border-radius:5px; color:var(--mv-surface); content:attr(data-tooltip); font-size:11px; font-weight:500; left:50%; letter-spacing:0; line-height:14px; padding:4px 7px; pointer-events:none; position:absolute; text-transform:none; top:calc(100% + 6px); transform:translateX(-50%); white-space:nowrap; z-index:20; }
  .mv-zone-drawer [data-tooltip-align="end"]:hover::after, .mv-zone-drawer [data-tooltip-align="end"]:focus-visible::after { left:auto; right:0; transform:none; }
  .mv-zone-drawer [data-tooltip-align="start"]:hover::after, .mv-zone-drawer [data-tooltip-align="start"]:focus-visible::after { left:0; transform:none; }
  .mv-zone-drawer [data-tooltip]:disabled::after { display:none; }
}
.mv-zone-table-actions { display:flex; flex-wrap:wrap; gap:8px; justify-content:flex-end; margin-bottom:8px; }
.mv-zone-undo { align-items:center; display:flex; gap:8px; justify-content:space-between; }
.mv-zone-drawer { background:var(--mv-surface); border-left:1px solid var(--mv-border); display:flex; flex-direction:column; grid-column:2; grid-row:1; height:100%; min-width:0; overflow:hidden; position:relative; transition:opacity .16s ease,visibility 0s linear 0s; width:100%; z-index:4; }
.mv-zone-drawer--closed { opacity:0; pointer-events:none; visibility:hidden; }
.mv-zone-drawer-toggle { position:absolute; right:12px; top:12px; z-index:5; }
.mv-zone-workspace--drawer-open .mv-zone-drawer-toggle { right:322px; }
.mv-zone-drawer__title { align-items:center; display:flex; justify-content:space-between; }
.mv-zone-drawer__title .mv-button { min-height:44px; }
.mv-zone-drawer__notice { align-items:center; background:var(--mv-surface-subtle); border-bottom:1px solid var(--mv-border); display:flex; flex-wrap:wrap; font-size:12px; gap:6px; padding:8px 12px; }
.mv-zone-drawer__head { border-bottom:1px solid var(--mv-border); display:grid; gap:8px; padding:12px 14px; }
.mv-zone-drawer__head .mv-section-title { font-size:13px; margin:0; }
.mv-icon-button.mv-zone-drawer__close { color:var(--mv-ink-muted); }
.mv-zone-list { flex:1 1 auto; list-style:none; margin:0; min-height:0; overflow-y:auto; padding:8px; }
.mv-zone-list__item { align-items:center; border-radius:var(--mv-radius); display:flex; gap:4px; padding:2px 4px; }
.mv-zone-list__item--selected { background:var(--mv-sidebar-active); }
.mv-zone-list__pick { background:none; border:0; cursor:pointer; display:grid; flex:1 1 auto; gap:1px; min-width:0; padding:7px 8px; text-align:left; }
.mv-zone-list__name { color:var(--mv-ink); font-size:13px; font-weight:600; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.mv-zone-list__tags { color:var(--mv-ink-muted); font-size:11.5px; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.mv-zone-list__actions { display:flex; flex:0 0 auto; }
.mv-zone-list__empty { color:var(--mv-ink-muted); padding:14px 12px; }
.mv-zone-group { margin:0; }
.mv-zone-group__toggle { align-items:center; background:none; border:0; border-radius:var(--mv-radius); color:var(--mv-ink); cursor:pointer; display:flex; font-size:13px; font-weight:600; gap:8px; padding:9px 12px; text-align:left; width:100%; }
.mv-zone-group__toggle:hover:not(:disabled) { background:var(--mv-sidebar-active); }
.mv-zone-group__toggle:disabled { cursor:default; }
.mv-zone-group__chevron { border-bottom:1.5px solid currentColor; border-right:1.5px solid currentColor; flex:0 0 auto; height:6px; transform:rotate(-45deg); transition:transform .15s ease; width:6px; }
.mv-zone-group__toggle[aria-expanded="true"] .mv-zone-group__chevron { transform:rotate(45deg); }
.mv-zone-group__name { flex:1 1 auto; min-width:0; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.mv-zone-group__count { color:var(--mv-ink-muted); flex:0 0 auto; font-size:11.5px; font-weight:500; }
.mv-zone-group__areas { list-style:none; margin:0 0 4px; padding:0 0 0 14px; }
.mv-zone-group--country > .mv-zone-group__head .mv-zone-group__toggle { font-size:13.5px; font-weight:700; }
.mv-zone-group--series > .mv-zone-group__head .mv-zone-group__toggle { font-weight:500; }
.mv-zone-group__head { align-items:center; border-radius:var(--mv-radius); display:flex; gap:2px; }
.mv-zone-group__head:hover { background:var(--mv-sidebar-active); }
.mv-zone-group__head .mv-zone-group__toggle { flex:1 1 auto; min-width:0; }
.mv-zone-group__head .mv-zone-group__toggle:hover:not(:disabled) { background:none; }
.mv-zone-group__bulk { display:flex; flex:0 0 auto; gap:0; justify-content:flex-end; padding-right:4px; width:56px; }
.mv-icon-button.mv-zone-bulk { color:var(--mv-ink-muted); }
.mv-icon-button.mv-zone-bulk:hover:not(:disabled), .mv-icon-button.mv-zone-bulk:focus-visible { color:var(--mv-primary-ink); }
.mv-zone-bulk svg { height:16px; width:16px; }
.mv-zone-bulk:disabled { cursor:default; opacity:.4; }
.mv-zone-group__bulk .mv-zone-bulk { height:26px; min-height:26px; width:26px; }
@media (hover:hover) { .mv-zone-group__bulk { opacity:0; transition:opacity .12s ease; } .mv-zone-group__head:hover .mv-zone-group__bulk, .mv-zone-group__head:focus-within .mv-zone-group__bulk { opacity:1; } }
.mv-zone-drawer__search { align-items:center; display:flex; gap:4px; }
.mv-zone-drawer__search .mv-input { flex:1 1 auto; min-width:0; }
.mv-version-row { align-items:end; display:flex; flex-wrap:wrap; gap:12px; margin-top:8px; }
.mv-field--inline { align-items:center; display:flex; gap:8px; }
.mv-field--inline .mv-field-label { margin:0; white-space:nowrap; }
.mv-field--inline .mv-input { min-width:220px; }
.mv-underlay-row { align-items:center; display:flex; flex-wrap:wrap; gap:12px; margin-top:8px; }
.mv-file-button { cursor:pointer; position:relative; overflow:hidden; }
.mv-file-button:focus-within { border-color:var(--mv-primary); box-shadow:0 0 0 3px rgba(37,99,235,.35); outline:2px solid var(--mv-focus); outline-offset:1px; }
.mv-file-button input[type=file] { inset:0; opacity:0; position:absolute; width:100%; cursor:pointer; }
.mv-tag-list { display:grid; gap:4px; list-style:none; margin:0; padding:0; }
.mv-tag-row { align-items:center; border:1px solid var(--mv-border); border-radius:var(--mv-radius); display:flex; gap:8px; padding:5px 10px; }
.mv-tag-row__name { font-weight:600; }
.mv-tag-row__count { color:var(--mv-ink-muted); font-size:12px; margin-right:auto; }
.mv-tag-row .mv-input { max-width:220px; }
.mv-tag-row__confirm { color:var(--mv-danger-ink); font-size:12px; font-weight:600; }
.mv-tag-row .mv-button--danger { background:var(--mv-surface); border-color:var(--mv-danger); color:var(--mv-danger-ink); }
.mv-tag-row .mv-button--danger:hover,.mv-tag-row .mv-button--danger:focus-visible { background:var(--mv-danger-soft); }
/* Segmented, not a tab strip: the area type is a filter on one workspace, not a different page. */
.mv-purpose-switch { display:flex; flex-wrap:wrap; gap:2px; background:var(--mv-neutral-soft); border-radius:8px; margin-bottom:8px; padding:3px; width:fit-content; }
.mv-purpose { background:none; border:0; border-radius:6px; color:var(--mv-ink-muted); cursor:pointer; font-size:12.5px; font-weight:500; min-height:26px; padding:0 12px; }
.mv-purpose:hover { background:var(--mv-surface); color:var(--mv-ink); }
.mv-purpose--active { background:var(--mv-ink); color:#fff; font-weight:600; }
.mv-purpose:focus-visible { box-shadow:0 0 0 3px rgba(37,99,235,.35); outline:2px solid var(--mv-focus); outline-offset:1px; }
.mv-zone-status { background:var(--mv-surface); border:1px solid var(--mv-border); border-radius:var(--mv-radius); margin-bottom:12px; padding:10px 14px; }
.mv-zone-status--idle { border-color:var(--mv-border-strong); }
.mv-zone-status p { margin:0; }
.mv-zone-label { fill:var(--mv-ink); font-size:13px; font-weight:700; pointer-events:none; }
.mv-empty-cell { color:var(--mv-ink-muted); padding:28px; text-align:center; }
.sr-only { clip: rect(0 0 0 0); clip-path: inset(50%); height: 1px; overflow: hidden; position: absolute; white-space: nowrap; width: 1px; }
.mv-allocation-control { align-items: center; display: grid; gap: 6px; grid-template-columns: minmax(120px, 1fr) auto auto; min-width: 220px; }
.mv-allocation-control .mv-input { height: 26px; }
.mv-allocation-control .mv-button { min-height: 26px; padding-inline: 9px; }

.mv-status { align-items: center; border-radius: 999px; display: inline-flex; font-size: 11.5px; font-weight: 500; gap: 5px; line-height: 16px; min-height: 20px; padding: 1px 8px; white-space: nowrap; }
.mv-status::before { background: currentColor; border-radius: 50%; content: ""; flex: 0 0 auto; height: 5px; width: 5px; }
.mv-status--success { background: var(--mv-success-soft); color: var(--mv-success-ink); }
.mv-status--transit { background: var(--mv-warning-soft); color: var(--mv-warning-ink); }
.mv-status--info { background: var(--mv-info-soft); color: var(--mv-info-ink); }
.mv-status--submitted { background: var(--mv-primary-soft); color: var(--mv-primary-ink); }
.mv-status--pending { background: var(--mv-neutral-soft); color: var(--mv-ink-muted); }
.mv-status--muted { background: var(--mv-neutral-soft); color: var(--mv-ink-muted); }
.mv-status--neutral { background: var(--mv-unknown-soft); color: var(--mv-unknown-ink); }
.mv-status--danger { background: var(--mv-danger-soft); color: var(--mv-danger-ink); }
.mv-state { background:var(--mv-surface); border:1px solid var(--mv-border); border-radius:var(--mv-radius-lg); color:var(--mv-ink-muted); padding:32px 20px; text-align:center; }
.mv-state .mv-section-title { margin-bottom:4px; }
.mv-state p { margin:0 0 14px; }
.mv-state--error { background:var(--mv-surface-subtle); border-color:var(--mv-border-strong); color:var(--mv-ink); }
.mv-state--compact { padding: 20px 16px; }
.mv-empty-state { color: var(--mv-ink-muted); padding: 32px 20px; text-align: center; }
.mv-empty-state__mark { align-items: center; background: var(--mv-primary-soft); border-radius: 50%; color: var(--mv-primary-ink); display: flex; font-size: 20px; height: 36px; justify-content: center; margin: 0 auto 10px; width: 36px; }
.mv-empty-state p { margin: 4px 0 14px; }
.mv-alert { border: 1px solid; border-radius: var(--mv-radius); margin-block: 12px; padding: 9px 12px; }
.mv-alert--danger { background: var(--mv-danger-soft); border-color: color-mix(in srgb, var(--mv-danger) 24%, transparent); color: var(--mv-danger-ink); }
.mv-alert--success { background: var(--mv-success-soft); border-color: color-mix(in srgb, var(--mv-success) 24%, transparent); color: var(--mv-success-ink); }
.mv-alert--warning { background: var(--mv-warning-soft); border-color: color-mix(in srgb, var(--mv-warning) 32%, transparent); color: var(--mv-warning-ink); }
.mv-alert--service { background: var(--mv-surface-subtle); border-color: var(--mv-border-strong); color: var(--mv-ink); }
.mv-shipment-actions { position: relative; }
.mv-shipment-actions > summary { list-style: none; cursor: pointer; }
.mv-shipment-actions > summary::-webkit-details-marker { display: none; }
.mv-shipment-actions__menu { position: absolute; z-index: 30; top: calc(100% + 8px); right: 0; width: min(340px, calc(100vw - 32px)); padding: 10px; display: grid; gap: 2px; border: 1px solid var(--mv-border); border-radius: var(--mv-radius-lg); background: var(--mv-surface); box-shadow: var(--mv-shadow-popover); }
.mv-shipment-actions__menu strong { padding: 9px 10px 5px; color: var(--mv-muted); font-size: 0.72rem; letter-spacing: 0.06em; text-transform: uppercase; }
.mv-shipment-actions__menu a, .mv-shipment-actions__menu button { width: 100%; padding: 10px; border: 0; border-radius: var(--mv-radius); background: transparent; color: var(--mv-ink); font: inherit; text-align: left; text-decoration: none; cursor: pointer; }
.mv-shipment-actions__menu a:hover, .mv-shipment-actions__menu a:focus-visible, .mv-shipment-actions__menu button:hover, .mv-shipment-actions__menu button:focus-visible { background: var(--mv-surface-subtle); outline: none; }
.mv-document-preview { display: grid; gap: var(--mv-document-preview-gap); min-height: 0; }
.mv-document-preview__hint { color: var(--mv-ink-muted); margin: 0; }
.mv-document-preview__surface { background: var(--mv-surface-subtle); border: 1px solid var(--mv-border); border-radius: var(--mv-radius); height: var(--mv-document-preview-height); min-height: var(--mv-document-preview-min-height); overflow: hidden; position: relative; }
.mv-document-preview__surface .mv-state { inset: 0; position: absolute; }
.mv-document-preview__surface iframe { background: var(--mv-surface); border: 0; height: 100%; width: 100%; }
.mv-document-preview__surface iframe[hidden] { display: none; }
.mv-document-preview__actions { align-items: center; display: flex; gap: var(--mv-document-preview-gap); justify-content: flex-end; width: 100%; }
.mv-document-preview__actions .mv-button { text-decoration: none; }
.mv-tracking-scope { display: flex; flex-wrap: wrap; gap: 6px; margin-bottom: 14px; }
@media (max-width: 640px) { .mv-shipment-actions__menu { left: 0; right: auto; } }
@media (max-width: 640px) {
  .mv-document-preview__surface { height: var(--mv-document-preview-mobile-height); min-height: 0; }
  .mv-document-preview__actions { align-items: stretch; flex-direction: column-reverse; }
  .mv-document-preview__actions .mv-button { justify-content: center; width: 100%; }
}
.mv-alert__action { background: transparent; border: 0; color: var(--mv-primary-ink); cursor: pointer; font: inherit; font-weight: 600; padding: 0; text-decoration: underline; }

.mv-list-cards { display: none; }
.mv-list-card { background: var(--mv-surface); border: 1px solid var(--mv-border); border-radius: var(--mv-radius-lg); color: var(--mv-ink); display: grid; gap: 8px; padding: 12px; text-decoration: none; }
.mv-list-card:hover { border-color: var(--mv-border-strong); color: var(--mv-ink); }
.mv-list-card:focus-visible { border-color: var(--mv-border-strong); box-shadow: 0 0 0 3px rgba(37,99,235,.35); color: var(--mv-ink); outline: 2px solid transparent; }
.mv-list-card__heading { align-items: flex-start; display: flex; gap: 12px; justify-content: space-between; }
.mv-list-card__heading strong { font-size: 14px; font-weight: 600; line-height: 20px; overflow-wrap: anywhere; }
.mv-list-card__detail { display: grid; gap: 8px; grid-template-columns: 64px minmax(0, 1fr); overflow-wrap: anywhere; }
.mv-list-card__detail small { color: var(--mv-ink-muted); font-size: 12px; }
.mv-mobile-pager { align-items: center; display: flex; gap: 8px; justify-content: space-between; padding-top: 4px; }
.mv-mobile-pager > span { font-variant-numeric: tabular-nums; text-align: center; }
.mv-rate-list { display: grid; gap: 12px; grid-template-columns: repeat(auto-fit, minmax(220px, 1fr)); margin-top: 14px; }
.mv-rate-list > .mv-section-title { grid-column: 1 / -1; }
.mv-rate-card { background: var(--mv-surface); border: 1px solid var(--mv-border); border-radius: var(--mv-radius-lg); box-shadow: var(--mv-shadow-card); padding: 14px; }
.mv-rate-card strong { display: block; font-size: 20px; font-variant-numeric: tabular-nums; line-height: 26px; margin: 4px 0; }
.mv-rate-card p { color: var(--mv-ink-muted); margin: 0 0 12px; }
.mv-button__spinner { animation: mv-spin 720ms linear infinite; border: 2px solid currentColor; border-right-color: transparent; border-radius: 50%; height: 12px; width: 12px; }
.mv-form-progress { color: var(--mv-ink-muted); font-size: 12px; line-height: 16px; margin: 0; }
.mv-address-book-panel { padding: 0; }
.mv-address-book-summary { align-items: center; cursor: pointer; display: flex; justify-content: space-between; list-style: none; padding: 12px 14px; }
.mv-address-book-summary::-webkit-details-marker { display: none; }
.mv-address-book-summary::after { color: var(--mv-ink-muted); content: "+"; font-size: 20px; line-height: 1; }
.mv-address-book-panel[open] > .mv-address-book-summary { border-bottom: 1px solid var(--mv-border); }
.mv-address-book-panel[open] > .mv-address-book-summary::after { content: "−"; }
.mv-address-book-summary span { font-size: 14px; font-weight: 600; }
.mv-address-book-summary small { color: var(--mv-ink-muted); margin-left: auto; padding-right: 16px; }
.mv-address-book-panel > :not(summary) { margin-inline: 14px; }
.mv-address-book-panel > :last-child { margin-bottom: 14px; }
.mv-validation-summary { margin: 0; }
.mv-validation-summary ul { margin: 0; padding-left: 20px; }
.mv-tracking-panel { padding: 12px; }
.mv-shipment-summary { margin-bottom: 14px; }
.mv-detail-grid { display: grid; gap: 12px; grid-template-columns: repeat(2, minmax(0, 1fr)); margin: 0; }
.mv-detail-grid > div { min-width: 0; }
.mv-detail-grid dt { color: var(--mv-ink-muted); font-size: 11px; font-weight: 600; letter-spacing: .04em; line-height: 15px; margin-bottom: 3px; text-transform: uppercase; }
.mv-detail-grid dd { margin: 0; overflow-wrap: anywhere; }
.mv-timeline { margin-top: 14px; }
.mv-timeline-item { display: flex; gap: 12px; padding: 0 0 14px; }
.mv-timeline-dot { background: var(--mv-ink-muted); border-radius: 50%; box-shadow: 0 0 0 4px var(--mv-neutral-soft); flex: 0 0 auto; height: 8px; margin-top: 4px; width: 8px; }
.mv-timeline-dot.mv-status--success { background: var(--mv-success-ink); box-shadow: 0 0 0 4px var(--mv-success-soft); }
.mv-timeline-dot.mv-status--transit { background: var(--mv-warning-ink); box-shadow: 0 0 0 4px var(--mv-warning-soft); }
.mv-timeline-dot.mv-status--info { background: var(--mv-info-ink); box-shadow: 0 0 0 4px var(--mv-info-soft); }
.mv-timeline-dot.mv-status--submitted { background: var(--mv-primary-ink); box-shadow: 0 0 0 4px var(--mv-primary-soft); }
.mv-timeline-item p, .mv-timeline-item small { color: var(--mv-ink-muted); display: block; margin: 4px 0; }
.mv-timeline-dot.mv-status--pending { background: var(--mv-ink-muted); box-shadow: 0 0 0 4px var(--mv-neutral-soft); }
.mv-timeline-dot.mv-status--neutral { background: var(--mv-unknown-ink); box-shadow: 0 0 0 4px var(--mv-unknown-soft); }
.mv-timeline-item small { font-size: 12px; line-height: 16px; }

@keyframes mv-spin { to { transform: rotate(360deg); } }
.admin-actions{align-items:center;background:var(--mv-surface);border-top:1px solid var(--mv-border);display:flex;flex-wrap:wrap;gap:8px;justify-content:flex-end;margin-top:14px;padding-top:12px}
.admin-field-error{color:var(--mv-danger-ink);display:block;font-size:12px;margin-top:4px}.admin-invalid,.admin-contact-group--invalid{border-color:var(--mv-danger)!important;box-shadow:0 0 0 1px var(--mv-danger)}

.movia-button:hover,.movia-button:focus-visible{background:var(--mv-primary-hover);border-color:var(--mv-primary-hover);color:#fff}.movia-button:focus-visible,.admin-secondary-button:focus-visible,.admin-danger-button:focus-visible,.admin-cancel:focus-visible{box-shadow:0 0 0 3px rgba(15,123,58,.28);outline:2px solid var(--mv-focus);outline-offset:1px}
.admin-filter input:focus-visible,.admin-form-grid input:focus-visible,.admin-contact-grid input:focus-visible,.admin-suspend input:focus-visible{border-color:var(--mv-primary);box-shadow:0 0 0 3px rgba(15,123,58,.20);outline:2px solid var(--mv-focus);outline-offset:1px}
.mv-kpi-summary,.mv-kpi-grid{display:grid;gap:10px;grid-template-columns:repeat(3,minmax(0,1fr));margin-bottom:12px}.mv-kpi,.mv-kpi-card{background:var(--mv-surface);border:1px solid var(--mv-border);border-radius:var(--mv-radius-lg);box-shadow:var(--mv-shadow-card);padding:12px 14px}.mv-kpi span,.mv-kpi-card span{color:var(--mv-ink-muted);display:block;font-size:11px;font-weight:500;letter-spacing:.02em;text-transform:uppercase}.mv-kpi strong,.mv-kpi-card strong{display:block;font-size:20px;font-variant-numeric:tabular-nums;line-height:28px}.mv-sticky-actions{background:var(--mv-surface);border-top:1px solid var(--mv-border)}.mv-pager-actions{background:var(--mv-surface);border-top:1px solid var(--mv-border)}
/* A chevron flow, not a bare rail: each step is an arrow-shaped segment pointing into the next, so the
   sequence itself is the affordance and no separate connecting line is needed. The notch on a step's
   leading edge is cut to the exact width of the point behind it (--mv-progress-chevron-notch), and
   z-index falls with position so an earlier step's point always shows through the step after it. */
.mv-progress-steps{display:flex;flex-wrap:wrap;gap:var(--mv-progress-chevron-gap) 0;list-style:none;margin:0 0 16px;padding:0}
.mv-progress-step{align-items:center;background:var(--mv-surface-subtle);border:1px solid var(--mv-border);color:var(--mv-ink-muted);display:flex;flex:1 1 0;font-size:12.5px;font-weight:500;gap:8px;min-width:0;overflow-wrap:normal;padding:8px 16px 8px calc(var(--mv-progress-chevron-notch) + 10px);position:relative;clip-path:polygon(0 0,calc(100% - var(--mv-progress-chevron-notch)) 0,100% 50%,calc(100% - var(--mv-progress-chevron-notch)) 100%,0 100%,var(--mv-progress-chevron-notch) 50%)}
.mv-progress-step:first-child{clip-path:polygon(0 0,calc(100% - var(--mv-progress-chevron-notch)) 0,100% 50%,calc(100% - var(--mv-progress-chevron-notch)) 100%,0 100%);padding-left:14px;border-top-left-radius:var(--mv-radius);border-bottom-left-radius:var(--mv-radius)}
.mv-progress-step:last-child{border-top-right-radius:var(--mv-radius);border-bottom-right-radius:var(--mv-radius)}
.mv-progress-step:not(:first-child){margin-left:calc(var(--mv-progress-chevron-notch) * -1)}
.mv-progress-step:nth-child(1){z-index:5}.mv-progress-step:nth-child(2){z-index:4}.mv-progress-step:nth-child(3){z-index:3}.mv-progress-step:nth-child(4){z-index:2}.mv-progress-step:nth-child(5){z-index:1}
.mv-progress-step::before{align-items:center;background:var(--mv-surface);border:1px solid var(--mv-border-strong);border-radius:50%;content:attr(data-step);display:inline-flex;flex:0 0 20px;font-size:11px;height:20px;justify-content:center}
.mv-progress-step--current{background:var(--mv-primary);border-color:var(--mv-primary);color:#fff;font-weight:600}
.mv-progress-step--current::before{background:#fff;border-color:#fff;color:var(--mv-primary-ink)}
.mv-progress-step--complete{background:var(--mv-primary-soft);border-color:var(--mv-primary);color:var(--mv-primary-ink)}
.mv-progress-step--complete::before{background:var(--mv-primary);border-color:var(--mv-primary);color:#fff;content:"\2713"}
.status-chip{background:var(--mv-primary-soft);border-radius:999px;color:var(--mv-primary-ink);display:inline-flex;font-size:11.5px;font-weight:500;padding:2px 8px}
.status-chip.mv-status--success{background:var(--mv-success-soft);color:var(--mv-success-ink)}.status-chip.mv-status--transit{background:var(--mv-warning-soft);color:var(--mv-warning-ink)}.status-chip.mv-status--neutral{background:var(--mv-unknown-soft);color:var(--mv-unknown-ink)}.status-chip.mv-status--submitted{background:var(--mv-primary-soft);color:var(--mv-primary-ink)}.status-chip.mv-status--pending{background:var(--mv-neutral-soft);color:var(--mv-ink-muted)}

@media (max-width: 1079px) {
  .mv-zone-workspace,.mv-zone-workspace--drawer-open { grid-template-columns:minmax(0,1fr); }
  .mv-zone-drawer { border-left:1px solid var(--mv-border); box-shadow:var(--mv-shadow-popover); grid-column:1; inset:0 0 0 auto; position:absolute; transform:translateX(0); transition:transform .22s ease,visibility 0s linear 0s; width:min(320px,calc(100% - 32px)); }
  .mv-zone-drawer--closed { opacity:1; transform:translateX(100%); transition:transform .22s ease,visibility 0s linear .22s; }
  .mv-zone-workspace--drawer-open .mv-zone-drawer-toggle { opacity:0; pointer-events:none; right:12px; visibility:hidden; }
  .mv-zone-workspace--drawer-open .mv-zone-map-actions { opacity:0; pointer-events:none; right:116px; visibility:hidden; }
  .mv-zone-workspace .mv-zone-disclosure-trigger,.mv-zone-map-actions .mv-button,.mv-zone-map-actions .mv-file-button,.mv-zone-workspace .mv-zone-drawer-toggle,.mv-zone-search .mv-input,.mv-zone-search .mv-button,.mv-zone-tools .mv-button,.mv-zone-actions-disclosure .mv-button,.mv-zone-actions-disclosure .mv-file-button,.mv-zone-drawer .mv-input,.mv-zone-drawer .mv-button { min-height:44px; }
  .mv-zone-map-actions .mv-zone-icon-command { min-width:44px; }
}
@media (max-width: 900px) { .mv-zone-map-actions--admin .mv-zone-map-actions__secondary { display:none; } .mv-zone-actions-trigger { display:inline-flex; } }
@media (max-width: 767px) {
  .mv-zone-disclosure-triggers { top:12px; }
  .mv-zone-search { top:60px; width:calc(100% - 24px); }
  .mv-zone-drawer { border-left:0; border-top:1px solid var(--mv-border); height:min(65dvh,520px); inset:auto 0 0; transform:translateY(0); width:100%; }
  .mv-zone-drawer--closed { transform:translateY(100%); }
  .mv-zone-tools { display:flex; flex-wrap:nowrap; left:12px; overflow-x:auto; top:60px; width:calc(100% - 24px); }
  .mv-zone-tools .mv-button { flex:0 0 auto; justify-content:center; min-height:44px; width:auto; }
  .mv-zone-tool-label--desktop { display:none; }
  .mv-zone-tool-label--mobile { display:inline; }
  .mv-zone-map-actions { left:12px; right:auto; top:116px; }
  .mv-zone-actions-disclosure { left:12px; right:auto; top:160px; width:min(260px,calc(100% - 24px)); }
  .mv-zone-drawer-toggle { right:12px; top:164px; }
  .mv-zone-layers-popover,.mv-zone-draw-guide,.mv-zone-discard-prompt { left:12px; top:116px; width:calc(100% - 24px); }
  .mv-zone-workspace--control-open .mv-zone-map-actions,.mv-zone-workspace--control-open .mv-zone-drawer-toggle { opacity:0; pointer-events:none; visibility:hidden; }
  .mv-zone-workspace--actions-open .mv-zone-drawer-toggle { opacity:0; pointer-events:none; visibility:hidden; }
}
@media (max-width: 390px) {
  .mv-zone-map-actions { gap:4px; }
  .mv-zone-map-actions .mv-button { padding-inline:8px; }
  .mv-zone-actions-disclosure { width:calc(100% - 24px); }
}
@media (max-width: 320px) {
  .mv-zone-disclosure-trigger { min-width:40px; padding-inline:8px; }
  .mv-zone-trigger-label { display:none; }
  .mv-zone-publish-command { padding-inline:7px; }
}
@media (max-width: 360px) {
  .mv-topbar { gap:4px; padding-inline:8px; }
  .mv-topbar__brand .mv-brand__word { display:none; }
  .mv-topbar__actions { gap:4px; min-width:0; }
  .mv-topbar__actions .mv-button { padding-inline:8px; }
}
@media (prefers-reduced-motion: reduce) { .mv-zone-workspace,.mv-zone-drawer { transition:none; } }

@media (max-width: 899px) {
  .mv-login-shell { padding-top: 40px; }
  .mv-shell-container, .mv-page-frame { padding-inline: 16px; }
  .mv-page-frame { min-height: calc(100vh - 108px); }
  .mv-workspace-page { padding-block: 12px 32px; }
  .mv-zone-workspace { height:calc(100dvh - 220px); min-height:480px; }
  .mv-zone-reshape-tools { left:12px; right:12px; top:60px; }
  .mv-page-header { align-items: flex-start; flex-direction: column; gap: 8px; }
  .mv-page-actions, .mv-page-actions .mv-button { width: 100%; }
  .admin-pager .mv-page-actions { align-items: center; flex: 0 0 auto; width: auto; }
  .admin-pager .mv-page-actions .mv-button { width: auto; }
  .mv-form-panel, .mv-tracking-panel { padding: 14px; }
  .mv-detail-grid { grid-template-columns: 1fr; }
  .mv-form-grid { grid-template-columns: minmax(0, 1fr); }
  .mv-field-grid { grid-template-columns: minmax(0, 1fr); }
  .mv-field, .mv-field--address, .mv-field--locality, .mv-field--code, .mv-field--contact, .mv-field--email, .mv-field--dimension { grid-column: 1 / -1; }
  /* Dense management tables remain scrollable; shipments switch to touch-friendly cards. */
  .mv-table-panel { display: block; max-width: 100%; overflow-x: auto; }
  .mv-shipments-table { display: none; }
  .mv-table { min-width: 560px; }
  .mv-shipments-cards { display: grid; gap: 8px; grid-template-columns: 1fr; scroll-margin-top: 121px; }
}

@media (max-width:760px){.mv-kpi-summary,.mv-kpi-grid{grid-template-columns:1fr}.mv-sticky-actions{margin-inline:-16px;padding-inline:16px;position:static}}

@media (max-width: 420px) {
  /* Below 420px an overlapping chevron cannot fit a label beside its notch without clipping it, so the
     rail stacks into full-width rows instead: same fill, border and ::before contract, no clip-path. */
  .mv-progress-steps { flex-direction: column; flex-wrap: nowrap; gap: 6px; }
  /* :first-child and :last-child outrank the bare class, so the stacked rows name them too or the first row keeps its point. */
  .mv-progress-step, .mv-progress-step:first-child, .mv-progress-step:last-child { align-items: flex-start; clip-path: none; font-size: 12px; gap: 8px; line-height: 16px; margin-left: 0 !important; padding: 8px 12px; border-radius: var(--mv-radius) !important; }
  .mv-progress-step::before { flex-basis: 22px; height: 22px; margin-top: -1px; }
  .mv-form-actions { align-items: stretch; flex-direction: column; }
  .mv-form-actions .mv-button { width: 100%; }
  .admin-pager { align-items: flex-start; flex-wrap: wrap; }
  .admin-pager .mv-page-actions { margin-left: auto; }
}

/* Administration uses the same workspace primitives as shipment journeys. */
.page-head,.admin-page-head{align-items:flex-end;display:flex;gap:16px;justify-content:space-between;margin-bottom:12px}.page-head h1{margin:0;font-size:20px;font-weight:650;letter-spacing:-.015em;line-height:28px}.eyebrow,.page-head .eyebrow{color:var(--mv-ink-muted);font-size:10.5px;font-weight:600;letter-spacing:.07em;text-transform:uppercase}.page-subtitle{margin:3px 0 0;color:var(--mv-ink-muted);font-size:13px}.movia-card,.admin-card{background:var(--mv-surface);border:1px solid var(--mv-border);border-radius:var(--mv-radius-lg);box-shadow:var(--mv-shadow-card);padding:16px;font-size:14px}.admin-filter{display:flex;align-items:end;gap:8px;margin-bottom:12px}.admin-filter label,.admin-form-grid label,.admin-contact-grid label,.admin-suspend span{display:block;font-size:12px;font-weight:600;color:var(--mv-ink);margin-bottom:4px}.admin-filter input,.admin-form-grid input,.admin-contact-grid input,.admin-suspend input{height:38px;width:100%;border:1px solid var(--mv-border-strong);border-radius:var(--mv-radius);padding:7px 11px;font-size:13px}.btn,.movia-button,.admin-secondary-button,.admin-danger-button{align-items:center;border-radius:var(--mv-radius);cursor:pointer;display:inline-flex;min-height:36px;padding:0 15px;font-size:13px;font-weight:550}.movia-button{background:var(--mv-primary);border:1px solid var(--mv-primary);color:#fff;font-weight:600}.admin-secondary-button{border:1px solid var(--mv-border-strong);background:#fff;color:var(--mv-ink)}.admin-danger-button{border:1px solid var(--mv-danger);background:#fff;color:var(--mv-danger-ink)}.admin-table-wrap{overflow:auto}.admin-table{width:100%;border-collapse:collapse}.admin-table th{height:32px;text-align:left;border-bottom:1px solid var(--mv-border);color:var(--mv-ink-muted);font-size:11px;font-weight:600;letter-spacing:.04em;text-transform:uppercase}.admin-table td{height:34px;border-bottom:1px solid var(--mv-border);padding:5px 12px 5px 0;vertical-align:middle}.admin-table td a{color:var(--mv-primary-ink);font-weight:600;text-decoration:none}.admin-table td span:not(.status-chip):not(.mv-status){display:block;color:var(--mv-ink-muted);font-size:12px}.admin-pager,.admin-actions,.admin-detail-head{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-top:12px}.admin-pager{font-size:12px;color:var(--mv-ink-muted)}.admin-message{border:1px solid color-mix(in srgb, var(--mv-danger) 24%, transparent);background:var(--mv-danger-soft);color:var(--mv-danger-ink);border-radius:var(--mv-radius);padding:9px 12px;margin:12px 0}.admin-form-grid,.admin-contact-grid,.admin-details{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}.admin-section-title{font-weight:600;margin:0 0 10px}.admin-form-grid small{display:block;color:var(--mv-ink-muted);font-size:12px;margin-top:4px}.admin-contact-grid{margin-top:16px}.admin-contact-grid fieldset{border:1px solid var(--mv-border);border-radius:var(--mv-radius);padding:14px;margin:0}.admin-contact-grid legend{font-size:12px;font-weight:600;padding:0 4px;margin:0}.admin-contact-grid label:not(:first-of-type){margin-top:10px}.admin-cancel{color:var(--mv-primary-ink);text-decoration:none;font-size:13px}.admin-details{margin-top:16px}.admin-details div{border-top:1px solid var(--mv-border);padding:9px 0}.admin-details span{display:block;color:var(--mv-ink-muted);font-size:12px;margin-bottom:3px}.admin-details strong{font-weight:600}.admin-detail-head{margin:0}.admin-suspension{margin:8px 0 0;color:var(--mv-danger-ink)}.admin-suspend{display:grid;grid-template-columns:minmax(220px,1fr) auto;gap:8px;align-items:end}.admin-suspend span{grid-column:1 / -1}.admin-suspend input{grid-column:1}.admin-suspend button{grid-column:2;grid-row:2}@media(max-width:760px){.page-head,.admin-page-head,.admin-filter,.admin-detail-head,.admin-actions{align-items:stretch;flex-direction:column}.admin-form-grid,.admin-contact-grid,.admin-details{grid-template-columns:1fr}.admin-table thead{display:none}.admin-table,.admin-table tbody,.admin-table tr,.admin-table td{display:block;width:100%}.admin-table tr{border-bottom:1px solid var(--mv-border);padding:8px 0}.admin-table td{border:0;height:auto;padding:3px 0}.admin-table td:before{content:attr(data-label);display:inline-block;color:var(--mv-ink-muted);font-size:12px;width:110px}.admin-suspend{grid-template-columns:1fr}.admin-suspend button{grid-column:1;grid-row:auto}}
.admin-table-wrap.mv-table-panel{display:block}
.admin-table td span.mv-status{display:inline-flex;color:inherit}
.admin-table td span.mv-status.mv-status--success{color:var(--mv-success-ink)}.admin-table td span.mv-status.mv-status--transit{color:var(--mv-warning-ink)}.admin-table td span.mv-status.mv-status--neutral{color:var(--mv-unknown-ink)}.admin-table td span.mv-status.mv-status--submitted{color:var(--mv-primary-ink)}.admin-table td span.mv-status.mv-status--pending{color:var(--mv-ink-muted)}

/* Prevent long values and flex children from widening the viewport at 320px. */
.mv-page-frame, .mv-workspace-page, .mv-panel, .mv-table-panel, .mv-empty-state,
.mv-page-header, .mv-page-actions, .mv-form-actions, .mv-field, .mv-rate-card { min-width: 0; }
.mv-table, .mv-data-table { border-collapse: collapse; width: 100%; }
.mv-table th, .mv-table td, .mv-data-table th, .mv-data-table td { border-bottom: 1px solid var(--mv-border); padding: 6px 12px; text-align: left; vertical-align: middle; }
.mv-table th, .mv-data-table th { color: var(--mv-ink-muted); font-size: 11px; font-weight: 600; letter-spacing: .04em; text-transform: uppercase; white-space: nowrap; }
.mv-table td, .mv-data-table td { font-variant-numeric: tabular-nums; overflow-wrap: anywhere; }
.mv-table td small, .mv-data-table td small { color: var(--mv-ink-muted); }
.mv-button--quiet { background: transparent; border-color: transparent; }
.mv-button--quiet:hover, .mv-button--quiet:focus-visible { background: var(--mv-primary-soft); border-color: var(--mv-primary-soft); color: var(--mv-primary-ink); }
.mv-panel { padding: 14px; }
.mv-filter-panel { margin-bottom: 12px; padding: 12px; }
.mv-filter-panel .mv-filter { align-items: end; }
.mv-filter-panel .mv-field { flex: 1 1 180px; }
.mv-checkbox { align-items: center; display: inline-flex; gap: 8px; min-height: 30px; white-space: nowrap; }
.mv-table td strong { display: block; font-weight: 600; }
.mv-table td small { display: block; margin-top: 2px; }
.mv-rate-overview { display: grid; gap: 10px; grid-template-columns: repeat(3, minmax(0, 1fr)); margin-bottom: 16px; }
.mv-rate-overview .mv-kpi { padding: 12px 14px; }
.mv-rate-overview .mv-kpi strong { overflow-wrap: anywhere; }
.mv-table-panel .mv-table tbody tr:last-child td { border-bottom: 0; }
.mv-table-panel .mv-table tbody tr:hover { background: rgba(21, 148, 71, .04); }
.mv-two-column { display: grid; gap: 14px; grid-template-columns: repeat(2, minmax(0, 1fr)); }
.mv-trip-stops { display: grid; gap: 6px; }
@media (max-width: 760px) { .mv-rate-overview { grid-template-columns: 1fr; } .mv-filter-panel .mv-filter { align-items: stretch; flex-direction: column; } .mv-filter-panel .mv-field { width: 100%; } .mv-two-column { grid-template-columns: 1fr; } }

.rates-page { max-width: 1400px; }
.rates-tabs, .mv-tabs { border-bottom: 1px solid var(--mv-border); display: flex; gap: 4px; margin-bottom: 14px; overflow-x: auto; }
.rates-tab, .mv-tab { background: transparent; border: 0; border-bottom: 2px solid transparent; color: var(--mv-ink-muted); cursor: pointer; font: inherit; font-size: 13px; font-weight: 500; min-height: 34px; padding: 0 10px; white-space: nowrap; }
.rates-tab--active, .mv-tab--active { border-bottom-color: var(--mv-primary); color: var(--mv-ink); font-weight: 600; }
.mv-header-code { color: var(--mv-ink-muted); font-weight: 500; }
.mv-audit-change { color: var(--mv-ink-muted); }
.mv-audit-change strong { color: var(--mv-ink); font-weight: 600; }
.rates-revisions-actions { align-items: end; display: flex; flex-wrap: wrap; gap: 10px; }
.rates-revisions-actions .mv-field { margin: 0; }
.rates-revision-row { cursor: pointer; }
.rates-revision-row:hover td, .rates-revision-row:focus-within td { background: var(--mv-primary-soft); }
.rates-revision-link { color: inherit; font-weight: 600; text-decoration: none; }
.rates-revision-link:hover, .rates-revision-link:focus-visible { text-decoration: underline; }
.rates-revisions-table td small { display: block; }
.rates-revisions-table { min-width: 880px; }
.rates-revisions-table th:last-child, .rates-revisions-table td:last-child { text-align: right; white-space: nowrap; width: 1%; }
.rates-revision-delete { align-items: center; display: inline-flex; gap: 6px; }
.rates-revision-delete > span { color: var(--mv-ink-muted); font-size: 12px; }
.rates-filter-row th { font-weight: 400; padding-block: 6px; text-transform: none; }
.rates-filter-row .mv-input { font-size: 13px; min-height: 30px; padding: 4px 8px; }
.rates-no-match { margin: 0; }
.rates-revision-grid { grid-template-columns: repeat(auto-fit, minmax(160px, 1fr)); }
.service-level-table--read-only td { padding-block: 9px; }
.rates-section-head { align-items: flex-start; display: flex; gap: 12px; justify-content: space-between; margin-bottom: 12px; }
.rates-section-head .mv-section-title { margin: 2px 0 0; }
.rates-active, .rates-lanes-card { margin-bottom: 14px; }
.rates-active-grid { display: grid; gap: 14px; grid-template-columns: 1.5fr repeat(2, 1fr); }
.rates-active-grid strong, .rates-active-grid span { display: block; }
.rates-active-grid strong { font-size: 14px; margin-top: 3px; }
.rates-active-grid small, .rates-active-grid span, .rates-read-only { color: var(--mv-ink-muted); font-size: 12px; }
.rates-form-grid { margin-bottom: 12px; }
.rates-services { border-top: 1px solid var(--mv-border); margin-top: 14px; padding-top: 14px; }
/* Eight columns have to fit a desktop panel without a horizontal scroll; the inputs give way, not the
   Remove column, and phones keep the scroll from the compact rule below. */
.service-level-table { min-width: 0; table-layout: fixed; width: 100%; }
.service-level-table th, .service-level-table td { padding-inline: 6px; }
.service-level-table .mv-input { min-width: 0; width: 100%; }
.service-level-table th:nth-child(1) { width: 8%; }
.service-level-table th:nth-child(3) { width: 10%; }
.service-level-table th:nth-child(4), .service-level-table th:nth-child(6), .service-level-table th:nth-child(9) { width: 8%; }
.service-level-table th:nth-child(5) { width: 9%; }
.service-level-table th:nth-child(7) { width: 14%; }
.service-level-table th:nth-child(8) { width: 13%; }
/* The filter row sits under the headings, so the column widths above are set by the first row alone. */
.service-level-table .rates-filter-row th { background: var(--mv-surface); font-size: 12px; font-weight: 400; letter-spacing: 0; padding-block: 6px; text-transform: none; white-space: normal; width: auto; }
.service-level-table .rates-filter-row .mv-input { font-size: 12.5px; height: 30px; min-height: 30px; padding: 4px 8px; }
.rates-filter-count { color: var(--mv-ink-muted); display: block; text-align: right; }
.rates-no-match { color: var(--mv-ink-muted); padding-block: 14px; }
.service-name-cell { align-items: center; display: flex; gap: 6px; justify-content: space-between; min-width: 0; }
.service-name-cell > span { min-width: 0; }
.service-settings-link { flex: 0 0 auto; height: 28px; min-height: 28px; width: 28px; }
.rates-services > .mv-page-summary { margin-bottom: 12px; }
.service-level-table thead tr:first-child th { white-space: normal; }
.service-level-table th:last-child { width: 118px; }
.service-level-actions { align-items: center; display: flex; gap: 2px; justify-content: flex-end; }
.service-level-table--read-only th:last-child { width: auto; }
.service-level-table .mv-input { font-size: 13px; min-height: 28px; padding: 4px 8px; }
.service-level-table .mv-inline-fields { display: grid; gap: 6px; grid-template-columns: minmax(104px, 1fr) 70px; }
/* The unit keeps a fixed width: sharing the space evenly left room for "da". */
.service-estimate { display: grid; gap: 6px; grid-template-columns: minmax(0, 1fr) 92px; }
.mv-scenario-derivation { font-size: 13px; margin-top: 6px; }
.mv-scenario-derivation summary { color: var(--mv-ink-muted); cursor: pointer; }
.mv-scenario-derivation ol { margin: 6px 0 0; padding-left: 20px; }
.mv-scenario-derivation li + li { margin-top: 4px; }
.rates-view-toggle { display: flex; gap: 4px; margin-bottom: 10px; }
.rates-view-toggle--on { background: var(--mv-primary-soft); color: var(--mv-primary-ink); }
.rates-matrix-filter { align-items: end; margin-bottom: 10px; }
/* A row heading is an area's name, so it drops the capitals and small type the table gives its column headings. */
.rates-matrix th[scope="row"] { color: var(--mv-ink); font-size: inherit; font-weight: 600; letter-spacing: normal; text-align: left; text-transform: none; white-space: nowrap; }
.rates-matrix td { vertical-align: top; }
.rates-matrix__price, .rates-matrix__add { display: block; text-align: left; width: 100%; }
.rates-matrix__add { color: var(--mv-ink-muted); }
.rates-charges-head { border-top: 1px solid var(--mv-border); margin-top: 18px; padding-top: 14px; }
.rates-covers-table { margin-top: 10px; }
/* A fieldset for the grouping, without the browser's grooved box: seven days in two rows, its legend reading as a field label. */
.rates-day-picker { border: 0; display: grid; gap: 6px 12px; grid-template-columns: repeat(4, minmax(0, 1fr)); margin: 0; min-width: 0; padding: 0; }
.rates-day-picker legend { color: var(--mv-ink); font-size: 12.5px; font-weight: 600; line-height: 18px; margin-bottom: 4px; padding: 0; }
.rates-publish { align-items: center; border-top: 1px solid var(--mv-border); display: flex; flex-wrap: wrap; gap: 12px; justify-content: space-between; margin-top: 14px; padding-top: 12px; }
.rates-publication-review { margin-top: 14px; }
.rates-publication-summary { display:grid; gap:8px; grid-template-columns:repeat(3,minmax(0,1fr)); margin:12px 0; }
.rates-publication-summary > div { background:var(--mv-surface-subtle); border:1px solid var(--mv-border); border-radius:var(--mv-radius); display:grid; gap:3px; min-width:0; padding:10px 12px; }
.rates-publication-summary span,.rates-publication-summary small { color:var(--mv-ink-muted); font-size:11.5px; }
.rates-publication-summary strong { font-size:13px; overflow-wrap:anywhere; }
.rates-table th, .rates-table td { padding: 6px 12px; }
.rates-table td small { color: var(--mv-ink-muted); display: block; font-size: 12px; margin-top: 2px; }
.mv-table-wrap { overflow-x: auto; }
.rates-calendar { max-width: 900px; }
.service-days-list { border-top: 1px solid var(--mv-border); margin-top: 14px; }
.service-days-header { color: var(--mv-ink-muted); display: grid; font-size: 10px; font-weight: 600; gap: 10px; grid-template-columns: minmax(0, 1fr) 110px 20px 110px; letter-spacing: .04em; padding: 0 0 5px; text-transform: uppercase; }
.service-day-row { align-items: center; border-bottom: 1px solid var(--mv-border); display: grid; gap: 10px; grid-template-columns: minmax(0, 1fr) 110px 20px 110px; padding: 7px 0; }
.service-day-row > *, .override-form > * { min-width: 0; }
.service-override-row { align-items: baseline; border-bottom: 1px solid var(--mv-border); display: flex; flex-wrap: wrap; gap: 10px; padding: 8px 0; }
.service-day-time { padding-block: 5px; }
.service-day-separator { color: var(--mv-ink-muted); font-size: 12px; text-align: center; }
.mv-cutoff-workflow { display: grid; gap: 8px; }
.mv-cutoff-workflow .mv-button { justify-self: start; }
.mv-cutoff-guidance { display: block; margin-top: 8px; }
.mv-cutoff-actions { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 8px; }
.holiday-form { align-items: end; display: grid; gap: 12px; grid-template-columns: 170px minmax(180px, 1fr) auto; margin: 16px 0; }
.holiday-form .mv-button { min-height: 30px; }
@media (max-width: 900px) { .rates-active-grid, .rates-revision-grid { grid-template-columns: 1fr; } }
@media (max-width: 520px) { .rates-tabs { margin-inline: -4px; } .rates-tab { padding-inline: 8px; } .rates-publish { align-items: stretch; flex-direction: column; } .rates-publish .mv-button { width: 100%; } .rates-table th:nth-child(3), .rates-table td:nth-child(3) { display: none; } .service-days-header, .service-day-row { grid-template-columns: minmax(110px, 1fr) 92px 14px 92px; gap: 6px; } .holiday-form { grid-template-columns: 1fr; } }
@media (max-width: 390px) { .service-days-header { gap: 6px; grid-template-columns: minmax(0, 1fr) 92px 14px 92px; } .service-day-row { grid-template-columns: minmax(0, 1fr) 92px 14px 92px; } .service-day-time { font-size: 12px; padding-inline: 3px; } .service-level-table { min-width: 720px; } }
@media (max-width: 700px) { .rates-publication-summary { grid-template-columns:1fr; } }

@media (max-width: 640px), (pointer: coarse) {
  .rates-tabs, .mv-tabs { flex-wrap: wrap; overflow-x: visible; }
  .rates-tab, .mv-tab, .mv-purpose { min-height: 44px; }
  .rates-route-price-table-wrap { max-width: 100%; overflow-x: visible; }
  .rates-route-price-table { box-sizing: border-box; display: block; max-width: 100%; min-width: 0; overflow-x: clip; width: 100%; }
  .rates-route-price-table thead { height: 1px; overflow: hidden; position: absolute; width: 1px; clip: rect(0 0 0 0); }
  .rates-route-price-table tbody, .rates-route-price-table tr, .rates-route-price-table td { display: block; min-width: 0; width: 100%; }
  .rates-route-price-table tr { border-bottom: 1px solid var(--mv-border); padding: 8px 0; }
  .rates-route-price-table tr:last-child { border-bottom: 0; }
  .rates-route-price-table td { align-items: baseline; border: 0; display: grid; gap: 8px; grid-template-columns: minmax(76px, 30%) minmax(0, 1fr); overflow-wrap: anywhere; padding: 4px 0; }
  .rates-route-price-table td:nth-child(3) { display: grid; }
  .rates-route-price-table td::before { color: var(--mv-ink-muted); content: attr(data-label); font-size: 10px; font-weight: 600; letter-spacing: .04em; text-transform: uppercase; }
  .rates-route-price-table td[data-label="Actions"] { display: flex; flex-wrap: wrap; gap: 6px; padding-top: 8px; }
  .rates-route-price-table td[data-label="Actions"]::before { flex: 0 0 30%; }
}

@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after { animation-duration: 0.01ms !important; animation-iteration-count: 1 !important; scroll-behavior: auto !important; transition-duration: 0.01ms !important; }
}

/* Keep sorting controls readable as table affordances rather than primary actions. */
.mv-sort-button { align-items: center; background: transparent; border: 0; border-radius: var(--mv-radius); color: var(--mv-ink-muted); cursor: pointer; display: inline-flex; font: inherit; font-size: 11px; font-weight: 600; gap: 6px; letter-spacing: .04em; padding: 4px 6px; text-align: left; text-transform: uppercase; }
.mv-sort-button:hover, .mv-sort-button:focus-visible { background: var(--mv-primary-soft); color: var(--mv-primary-ink); }
.mv-sort-button span { color: var(--mv-primary-ink); font-size: 12px; }
.mv-sticky-actions { bottom: auto; box-shadow: none; position: static; }
.mv-impersonation-banner { align-items: center; background: var(--mv-warning-soft); border-bottom: 1px solid #f0d9a8; color: var(--mv-warning-ink); display: flex; flex-wrap: wrap; gap: 12px 18px; justify-content: center; padding: 8px 20px; }
.mv-impersonation-banner span { font-size: 13px; }
.mv-impersonation-banner .mv-button { color: var(--mv-warning-ink); }

/* Console density and viewport contract. Kept last so shared table and responsive rules cannot undo it. */
.rz-data-grid.mv-data-grid, .mv-register-pager { --rz-primary-light: #43a967; --rz-grid-hover-background-color: rgba(28,134,76,.06); --rz-grid-selected-background-color: rgba(28,134,76,.12); }
.mv-shell { height: calc(100vh - 48px); height: calc(100dvh - 48px); min-height: 0; }
.mv-shell__main { min-height: 0; overflow: hidden; }
.mv-topbar { min-height: 54px; }
.mv-page-frame { background: var(--mv-canvas); min-height: 0; overflow-y: auto; }
.mv-workspace-page { min-height: 0; padding-block: 16px 24px; }
.mv-panel, .mv-table-panel, .mv-empty-state { border-radius: 10px; }
.mv-panel { padding: 12px; }
.mv-panel--padded { padding: 14px; }
.mv-form-panel { padding: 14px; }
.mv-input { min-height: 32px; padding-block: 4px; }
.mv-button { min-height: 32px; padding-inline: 12px; }
.mv-button--icon { min-height: 32px; padding: 0; width: 32px; }
.mv-button--icon svg { flex: none; }
.mv-filter { gap: 6px; }
.mv-filter__actions { align-items: center; display: flex; gap: 6px; margin-left: auto; }
.mv-filter .mv-input { height: 32px; min-width: 120px; }
.mv-filter > label:first-child { flex: 1 1 280px; }
.mv-filter > label:not(:first-child) { flex: 0 1 150px; }
.mv-table-panel { display: flex; flex-direction: column; min-height: 0; overflow: hidden; }
.mv-table-scroll { flex: 1 1 auto; min-height: 0; overflow: auto; }
.mv-table th, .mv-table td, .mv-data-table th, .mv-data-table td { padding: 5px 10px; }
.mv-table thead, .mv-data-table thead { position: sticky; top: 0; z-index: 2; }
.mv-table th, .mv-data-table th { background: var(--mv-surface-subtle); }
.mv-table tbody tr:hover, .mv-data-table tbody tr:hover { background: rgba(23,133,68,.04); }
.mv-shipments-grid th:nth-child(1) { min-width: 140px; width: 16%; } .mv-shipments-grid th:nth-child(2) { width: 11%; } .mv-shipments-grid th:nth-child(3) { width: 13%; } .mv-shipments-grid th:nth-child(4) { width: 15%; } .mv-shipments-grid th:nth-child(5) { width: 11%; } .mv-shipments-grid th:nth-child(6) { width: 14%; } .mv-shipments-grid th:nth-child(7) { min-width: 220px; width: 20%; }
.mv-shipments-table { flex: 1 1 auto; max-height: none; }
.mv-shipments-table .mv-desktop-pager { flex: 0 0 auto; }
.mv-list-cards { display: grid; }
.mv-shipments-cards { display: none; }
.mv-form-panel__heading { align-items: center; display: flex; justify-content: space-between; margin-bottom: 10px; padding-bottom: 7px; }
.mv-detail-grid dt { color: var(--mv-ink-muted); font-size: 12px; letter-spacing: 0; text-transform: none; }
.mv-detail-grid dd { font-size: 14px; font-weight: 550; }
.mv-automation-card{background:var(--mv-surface);border:1px solid var(--mv-border);border-radius:var(--mv-radius-lg);box-shadow:var(--mv-shadow-card);margin-top:12px;padding:16px;min-width:0}.mv-automation-card__heading{align-items:flex-start;display:flex;gap:12px;justify-content:space-between}.mv-automation-card__heading h2{margin:0}.mv-automation-summary{color:var(--mv-ink);margin:12px 0}.mv-automation-details{border-top:1px solid var(--mv-border);margin-top:12px;padding-top:12px}.mv-automation-actions{border-top:1px solid var(--mv-border);justify-content:flex-start;margin-top:14px;padding-top:14px}.mv-prerequisite-list{display:grid;gap:7px;list-style:none;margin:12px 0 0;padding:0}.mv-prerequisite-list li{align-items:flex-start;display:flex;gap:8px;min-width:0}.mv-prerequisite-list li>span{align-items:center;border-radius:999px;display:inline-flex;flex:0 0 20px;height:20px;justify-content:center}.mv-prerequisite-list .is-met>span{background:var(--mv-success-soft);color:var(--mv-success-ink)}.mv-prerequisite-list .is-missing>span{background:var(--mv-warning-soft);color:var(--mv-warning-ink)}.mv-prerequisite-list strong,.mv-prerequisite-list small{display:block}.mv-prerequisite-list small{color:var(--mv-ink-muted);margin-top:2px}.mv-button--danger{background:var(--mv-surface);border-color:var(--mv-danger);color:var(--mv-danger-ink)}.mv-button--danger:hover,.mv-button--danger:focus-visible{background:var(--mv-danger-soft)}@media(max-width:520px){.mv-automation-card{padding:14px}.mv-automation-card__heading{align-items:flex-start;flex-direction:column}.mv-automation-actions{align-items:stretch;flex-direction:column}.mv-automation-actions .mv-button{justify-content:center;width:100%}}
.mv-shipment-summary ~ .mv-panel { margin-top: 16px; }
.mv-allocation-control { align-items: center; display: flex; gap: 4px; white-space: nowrap; }
.mv-allocation-control .mv-input { height: 30px; min-width: 120px; }
.mv-allocation-error { color: var(--mv-danger-ink); display: block; font-size: 11px; margin-top: 2px; }
.mv-modal__close { align-items: center; display: inline-flex; height: 44px; justify-content: center; min-width: 44px; }
.mv-modal__close:focus-visible { box-shadow: 0 0 0 3px rgba(23,133,68,.28); outline: 2px solid var(--mv-focus); outline-offset: 1px; }
.mv-modal__discard { background: var(--mv-primary-soft); border-top: 1px solid var(--mv-border); padding: 12px 18px; }
.mv-modal__content--suppressed { display: none; }
@media (max-width: 1079px) { .mv-shell { height: 100vh; height: 100dvh; min-height: 0; } }
@media (max-width: 640px), (pointer: coarse) { .mv-button, .mv-input, .mv-filter .mv-input, .mv-topbar__toggle, .mv-checkbox { min-height: 44px; } .mv-filter { display: grid; grid-template-columns: 1fr; } .mv-filter > label, .mv-filter > label:first-child, .mv-filter > label:not(:first-child) { min-width: 0; width: 100%; } .mv-filter__actions { margin-left: 0; } .mv-shipments-table { display: none; } .mv-shipments-cards { display: grid; } }
@media (max-width: 769px) { .mv-shipments-table { display: none; } .mv-shipments-cards { display: grid; } }
@media (max-width: 640px) { .mv-purpose-switch { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); width:100%; } .mv-purpose { justify-content:center; min-width:0; } .mv-zone-table-actions { display:grid; grid-template-columns:1fr 1fr; } .mv-zone-table-actions > * { justify-content:center; min-width:0; width:100%; } }
@media (max-width: 390px) { .mv-purpose-switch { grid-template-columns:repeat(2,minmax(0,1fr)); } .mv-zone-table-actions { grid-template-columns:1fr; } }
.mv-wizard-card { background: var(--mv-surface); border: 1px solid var(--mv-border); border-radius: 12px; padding: 14px; }
.mv-wizard-actions { align-items: center; border-top: 1px solid var(--mv-border); display: flex; justify-content: space-between; margin-top: 14px; padding-top: 12px; }
.mv-zone-inspector { margin-top: 12px; max-height: min(680px, calc(100dvh - 150px)); overflow: auto; }
@media (min-width: 1080px) { .mv-zone-inspector { bottom: 20px; position: fixed; right: 28px; width: min(460px, 38vw); z-index: 20; } }
@media (max-width: 1079px) { .mv-zone-inspector { max-height: 60vh; } }
.mv-input { height: 32px; min-height: 32px; }
textarea.mv-input { height: auto; min-height: 72px; }
.mv-sidebar__link { min-height: 32px; }
.admin-filter input, .admin-form-grid input, .admin-contact-grid input, .admin-suspend input { height: 32px; }
.btn, .movia-button, .admin-secondary-button, .admin-danger-button { min-height: 32px; }
.mv-workspace-page--data { display: flex; flex-direction: column; height: 100%; min-height: 0; }
.mv-workspace-page--data > .mv-table-panel { flex: 1 1 auto; min-height: 0; }
.mv-workspace-page--data .mv-table-scroll { flex: 1 1 auto; min-height: 0; }
.mv-workspace-page--data .mv-table-panel + .mv-list-cards { flex: 0 0 auto; }
.mv-note-actions { align-items: center; display: flex; justify-content: space-between; gap: 10px; margin-top: 8px; }
.mv-note-actions__flags { align-items: center; display: flex; flex-wrap: wrap; gap: 10px; }
@media (max-width: 640px), (pointer: coarse) { .mv-input, .mv-button, .mv-sidebar__link { min-height: 44px; } textarea.mv-input { min-height: 96px; } .mv-note-actions { align-items: stretch; flex-direction: column; } .mv-note-actions__flags { flex-direction: column; align-items: flex-start; } .mv-note-actions .mv-button { width: 100%; } }
:root { --rz-input-size-md: 32px; --rz-button-size-md: 32px; }
.mv-page-frame { flex: 1 1 auto; height: 0; }
.mv-topbar, .mv-impersonation-banner { flex: 0 0 auto; }
.mv-purpose:focus-visible, .mv-list-card:focus-visible { box-shadow: 0 0 0 3px rgba(23,133,68,.28); outline-color: var(--mv-focus); }
#courier-search { height: 32px; min-height: 32px; }
@media (max-width: 640px), (pointer: coarse) { #courier-search { height: 44px; min-height: 44px; } }
@media (min-width: 1080px) {
  .mv-workspace-page--data > form { flex: 0 0 auto; margin-bottom: 12px; }
  .mv-shipments-table { min-height: 0; }
  .mv-shipments-table .mv-table-scroll { overscroll-behavior: contain; scrollbar-gutter: stable; }
  .mv-shipments-table .mv-table { table-layout: fixed; min-width: 1120px; }
  .mv-shipments-table .mv-table th:nth-child(1) { width: 13%; }
  .mv-shipments-table .mv-table th:nth-child(2) { width: 9%; }
  .mv-shipments-table .mv-table th:nth-child(3) { width: 12%; }
  .mv-shipments-table .mv-table th:nth-child(4) { width: 17%; }
  .mv-shipments-table .mv-table th:nth-child(5) { width: 11%; }
  .mv-shipments-table .mv-table th:nth-child(6) { width: 17%; }
  .mv-shipments-table .mv-table th:nth-child(7) { width: 21%; }
  .mv-shipments-table .mv-table tbody td { height: 44px; max-width: 0; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
  .mv-shipments-table .mv-table tbody td:nth-child(4) > small { display: inline; }
  .mv-shipments-table .mv-table tbody td:nth-child(6) { white-space: nowrap; }
  .mv-shipments-table .mv-table thead { box-shadow: 0 2px 0 var(--mv-border-strong); }
  .mv-shipments-table .mv-allocation-control .mv-input { max-width: 200px; width: 100%; }
  .mv-shipments-table .mv-table tbody td:nth-child(7):has(.mv-allocation-error) { height: auto; overflow: visible; text-overflow: clip; white-space: normal; }
  .mv-shipments-table .mv-allocation-error { white-space: normal; }
  .mv-shipments-table .mv-desktop-pager { background: var(--mv-surface); border-top: 1px solid var(--mv-border); box-shadow: 0 -2px 6px rgba(23,27,25,.06); min-height: 42px; position: relative; z-index: 3; }
}

/* Compact register contract. */
.mv-register-filters { flex: 0 0 auto; margin: 0 0 10px; }
.mv-more-filters { background: var(--mv-surface); border: 1px solid var(--mv-border); border-radius: 0 0 10px 10px; margin-top: -1px; padding: 0 10px; }
.mv-more-filters > summary { align-items: center; color: var(--mv-primary-ink); cursor: pointer; display: flex; font-size: 12px; font-weight: 600; gap: 6px; min-height: 32px; width: max-content; }
.mv-filter-count { align-items: center; background: var(--mv-primary-soft); border-radius: 999px; display: inline-flex; font-variant-numeric: tabular-nums; height: 20px; justify-content: center; min-width: 20px; padding: 0 5px; }
.mv-more-filters__fields { display: grid; gap: 8px; grid-template-columns: repeat(5, minmax(0, 1fr)); padding: 4px 0 10px; }
.mv-more-filters__fields label { color: var(--mv-ink-muted); display: grid; font-size: 12px; gap: 3px; min-width: 0; }
.mv-register-panel { display: flex; flex: 1 1 auto; flex-direction: column; min-height: 0; }
.mv-workspace-page--data > .mv-shipments-grid { display: flex; flex: 1 1 auto; flex-direction: column; min-height: 0; }
.mv-compact-grid-panel { background: var(--mv-surface); flex: 1 1 auto; min-height: 0; overflow: hidden; }
.rz-data-grid.mv-compact-grid { display: flex; flex: 1 1 auto; flex-direction: column; font-size: 13px; height: clamp(320px, calc(100dvh - 270px), 720px); min-height: 0; overflow: hidden; }
.rz-data-grid.mv-compact-grid .rz-data-grid-data { flex: 1 1 auto; min-height: 0; overflow: auto; overscroll-behavior: contain; scrollbar-gutter: stable; }
.rz-data-grid.mv-compact-grid .rz-grid-table { font-size: 13px; min-width: 780px; }
.rz-data-grid.mv-compact-grid .rz-grid-table thead { position: sticky; top: 0; z-index: 3; }
.rz-data-grid.mv-compact-grid .rz-grid-table th { background: var(--mv-surface-subtle); }
.rz-data-grid.mv-compact-grid .rz-grid-table td { height: 40px; line-height: 18px; }
.rz-data-grid.mv-compact-grid .rz-pager { background: var(--mv-surface); border-top: 1px solid var(--mv-border); box-shadow: 0 -2px 6px rgba(23,27,25,.05); flex: 0 0 auto; font-size: 12px; min-height: 40px; position: sticky; bottom: 0; z-index: 4; }
.mv-grid-secondary { color: var(--mv-ink-muted); display: block; font-size: 11px; line-height: 15px; margin-top: 1px; }
.mv-grid-inline-status { margin-left: 6px; }
.mv-grid-actions, .mv-allocation-control { align-items: center; display: flex; gap: 4px; }
.mv-icon-button, .mv-icon-link { align-items: center; background: transparent; border: 1px solid transparent; border-radius: var(--mv-radius); color: var(--mv-primary-ink); cursor: pointer; display: inline-flex; font-size: 15px; height: 32px; justify-content: center; min-width: 32px; padding: 0; text-decoration: none; }
.mv-icon-button:hover, .mv-icon-button:focus-visible, .mv-icon-link:hover, .mv-icon-link:focus-visible { background: var(--mv-primary-soft); border-color: var(--mv-border); outline: 2px solid var(--mv-focus); outline-offset: 1px; }
.mv-shipments-grid .rz-grid-table { min-width: 1120px; table-layout: fixed; }
.mv-shipments-grid .mv-allocation-control .mv-input { height: 32px; max-width: 180px; min-width: 120px; }
.rz-data-grid.mv-provider-grid { flex: 0 0 clamp(240px, calc(100dvh - 525px), 600px) !important; height: clamp(240px, calc(100dvh - 525px), 600px) !important; }
.mv-register-pager { background: var(--mv-surface); border: 1px solid var(--mv-border); border-radius: 0 0 10px 10px; flex: 0 0 auto; margin-top: -1px; min-height: 40px; position: sticky; bottom: 0; z-index: 4; }
#provider-pager { bottom: auto !important; position: static !important; }
@media (max-width: 900px) { .mv-more-filters__fields { grid-template-columns: repeat(2, minmax(0, 1fr)); } .rz-data-grid.mv-compact-grid { height: clamp(300px, calc(100dvh - 285px), 620px); } }
@media (max-width: 640px), (pointer: coarse) {
  .mv-more-filters > summary, .mv-icon-button, .mv-icon-link, .mv-register-pager .rz-pager-page, .mv-register-pager .rz-pager-next, .mv-register-pager .rz-pager-prev, .mv-register-pager .rz-pager-first, .mv-register-pager .rz-pager-last { min-height: 44px; min-width: 44px; }
  .mv-more-filters__fields { grid-template-columns: 1fr; }
  .rz-data-grid.mv-compact-grid .rz-pager .rz-pager-page, .rz-data-grid.mv-compact-grid .rz-pager .rz-pager-next, .rz-data-grid.mv-compact-grid .rz-pager .rz-pager-prev, .rz-data-grid.mv-compact-grid .rz-pager .rz-pager-first, .rz-data-grid.mv-compact-grid .rz-pager .rz-pager-last { min-height: 44px; min-width: 44px; }
  .mv-register-pager { bottom: auto; position: static; }
}
/* Shell foot, topbar inbox and the settings surfaces. After the compact contract so its control sizes hold. */
.mv-sidebar__nav { display: flex; flex-direction: column; flex: 1 1 auto; }
.mv-sidebar__foot { border-top: 1px solid var(--mv-border); display: flex; flex-direction: column; gap: 1px; margin-top: auto; padding-top: 8px; }
.mv-sidebar__note { color: var(--mv-ink-muted); font-size: 12px; line-height: 16px; margin: 8px 12px; }
.mv-topbar__inbox { color: var(--mv-ink-muted); position: relative; }
.mv-topbar__inbox:hover { color: var(--mv-ink); outline: 0; }
.mv-topbar__inbox:focus-visible { box-shadow: 0 0 0 3px rgba(21, 148, 71, .28); color: var(--mv-ink); outline: 2px solid var(--mv-focus); outline-offset: 1px; }
.mv-topbar__inbox[aria-current="page"] { background: var(--mv-sidebar-active); color: var(--mv-primary-ink); }
.mv-topbar__inbox svg { height: 18px; width: 18px; }
.mv-topbar__badge { align-items: center; background: var(--mv-primary); border: 2px solid var(--mv-surface); border-radius: 999px; color: #fff; display: inline-flex; font-size: 10.5px; font-variant-numeric: tabular-nums; font-weight: 600; height: 18px; justify-content: center; line-height: 1; min-width: 18px; padding: 0 4px; position: absolute; right: -3px; top: -3px; }
.mv-tab:hover { color: var(--mv-ink); }
.mv-tab:focus-visible { border-radius: var(--mv-radius) var(--mv-radius) 0 0; box-shadow: 0 0 0 3px rgba(21, 148, 71, .28); outline: 2px solid var(--mv-focus); outline-offset: -2px; }
.mv-tab-panel[hidden] { display: none; }
.mv-settings-panel { max-width: 920px; }
.mv-settings-users .rz-data-grid.mv-compact-grid { height: clamp(320px, calc(100dvh - 318px), 720px); }
.mv-facts { display: grid; column-gap: 12px; grid-template-columns: repeat(3, minmax(0, 1fr)); margin: 0; }
.mv-facts--four { grid-template-columns: repeat(4, minmax(0, 1fr)); }
.mv-fact { border-top: 1px solid var(--mv-border); min-width: 0; overflow-wrap: anywhere; padding: 10px 0; }
.mv-fact dt { color: var(--mv-ink-muted); font-size: 12px; line-height: 16px; margin-bottom: 3px; }
.mv-fact dd { font-weight: 600; margin: 0; }
.mv-fact--wide { grid-column: span 2; }
.mv-fact--empty dd { color: var(--mv-ink-muted); font-weight: 400; }
@media (max-width: 899px) { .mv-facts, .mv-facts--four { grid-template-columns: repeat(2, minmax(0, 1fr)); } .mv-fact--wide { grid-column: 1 / -1; } .mv-settings-users .rz-data-grid.mv-compact-grid { height: clamp(300px, calc(100dvh - 333px), 620px); } }
@media (max-width: 640px) { .mv-facts, .mv-facts--four { grid-template-columns: minmax(0, 1fr); } }
.mv-plan-name { font-size: 20px; font-weight: 650; letter-spacing: -.015em; line-height: 28px; margin: 0 0 4px; }
.mv-chip-list { display: flex; flex-wrap: wrap; gap: 6px; list-style: none; margin: 6px 0 0; padding: 0; }
.mv-chip { align-items: center; background: var(--mv-neutral-soft); border-radius: 999px; color: var(--mv-ink); display: inline-flex; font-size: 12px; font-weight: 500; line-height: 16px; min-height: 22px; padding: 2px 10px; }
.mv-fact--numeric dd { font-variant-numeric: tabular-nums; }
@media (max-width: 420px) { .mv-topbar__actions .mv-button { padding-inline: 6px; } .mv-topbar__actions { gap: 4px; } }
/* Operations dashboard */
.mv-dashboard { display: flex; flex-direction: column; gap: 16px; min-width: 0; overflow-wrap: anywhere; }
.mv-dashboard .mv-panel { background: var(--mv-surface, #fff); }
.mv-dashboard > * { margin: 0; min-width: 0; }
.mv-dashboard__context { padding: .75rem 1rem; }
.mv-dashboard__context summary { align-items: center; cursor: pointer; display: flex; gap: .75rem; justify-content: space-between; min-height: 44px; }
.mv-dashboard__context summary::marker { color: var(--mv-ink-muted); }
.mv-dashboard__context summary .mv-section-title { margin: 0; }
.mv-dashboard__context summary small { color: var(--mv-ink-muted); font-weight: 400; }
.mv-dashboard__context details[open] summary { border-bottom: 1px solid var(--mv-border); margin-bottom: .75rem; }
.mv-dashboard__context p { margin: .2rem 0; }
.mv-dashboard__cards { display: grid; grid-template-columns: repeat(6, minmax(0, 1fr)); gap: .75rem; }
.mv-dashboard__action-queue { display: grid; gap: .75rem; grid-template-columns: repeat(3, minmax(0, 1fr)); list-style: none; margin: .5rem 0 0; padding: 0; }
.mv-dashboard__action-queue li { border-top: 1px solid var(--mv-border); display: grid; gap: .2rem; min-width: 0; padding-top: .6rem; }
.mv-dashboard__action-queue span { color: var(--mv-ink-muted); font-size: .82rem; }
.mv-dashboard__overview .mv-dashboard__cards { margin: 0; }
.mv-dashboard-card { min-width: 0; padding: .8rem 1rem; }
.mv-dashboard-card + .mv-dashboard-card { border-left: 1px solid var(--mv-border); }
.mv-dashboard-card dt { color: var(--mv-ink-muted); font-size: 11px; font-weight: 600; letter-spacing: .04em; text-transform: uppercase; }
.mv-dashboard-card dd { margin: 0; }
.mv-dashboard-card__value { display: block; margin-top: .25rem; color: var(--mv-ink, #17312b); font-size: 1.7rem; font-weight: 700; }
.mv-dashboard__secondary { align-items: start; display: grid; grid-template-columns: repeat(12, minmax(0, 1fr)); gap: 16px; min-width: 0; }
.mv-dashboard__performance { grid-column: span 6; }
.mv-dashboard__drivers { grid-column: span 3; }
.mv-dashboard__hub { grid-column: span 3; }
.mv-dashboard__subtitle { color: var(--mv-ink-muted); font-size: .82rem; margin: -.35rem 0 .75rem; }
.mv-dashboard__status-links { display: grid; gap: .45rem; }
.mv-status-link { align-items: center; display: flex; justify-content: space-between; min-height: 44px; }
.mv-dashboard__driver-facts, .mv-dashboard__hub-facts { display: grid; gap: .65rem; grid-template-columns: repeat(2, minmax(0, 1fr)); margin: 0; }
.mv-dashboard__workload-facts { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: .65rem; margin: 0; }
.mv-dashboard__workload-facts > div { border-top: 1px solid var(--mv-border); padding-top: .55rem; }
.mv-dashboard__workload-facts dt { color: var(--mv-ink-muted); font-size: .82rem; }
.mv-dashboard__workload-facts dd { font-size: 1.25rem; font-variant-numeric: tabular-nums; margin: .1rem 0 0; }
.mv-dashboard__section-heading { align-items: start; display: flex; gap: .75rem; justify-content: space-between; }
.mv-dashboard__range { display: flex; flex-shrink: 0; gap: .35rem; }
.mv-dashboard__range .mv-button { min-height: 36px; padding: .35rem .65rem; }
.mv-dashboard__range .mv-button[aria-pressed="true"] { background: #dcebe2; color: #17312b; }
.mv-dashboard__outcome-table { max-height: 190px; overflow: auto; }
.mv-dashboard__outcome-table:focus-visible { outline: 3px solid var(--mv-focus, #178544); outline-offset: 2px; }
.mv-dashboard__outcome-table table { border-collapse: collapse; font-size: .82rem; width: 100%; }
.mv-dashboard__outcome-table th, .mv-dashboard__outcome-table td { border-top: 1px solid var(--mv-border); padding: .35rem .45rem; text-align: right; }
.mv-dashboard__outcome-table th:first-child { text-align: left; }
.mv-dashboard__driver-workloads { margin: .65rem 0 0; padding-left: 1.1rem; }
.mv-dashboard__driver-workloads li { display: flex; justify-content: space-between; gap: .5rem; }
.mv-dashboard__driver-facts > div, .mv-dashboard__hub-facts > div { border-top: 1px solid var(--mv-border); display: grid; gap: .1rem; padding-top: .55rem; }
.mv-dashboard__driver-facts dt, .mv-dashboard__hub-facts dt { color: var(--mv-ink-muted); font-size: .82rem; }
.mv-dashboard__driver-facts dd, .mv-dashboard__hub-facts dd { font-size: 1.35rem; font-variant-numeric: tabular-nums; margin: 0; }
.mv-dashboard__driver-facts dd a, .mv-dashboard__hub-facts dd a { color: var(--mv-ink); }
.mv-dashboard__open-waybills { overflow: hidden; }
.mv-dashboard__grid-scroll { min-width: 0; max-width: 100%; overflow-x: auto; overscroll-behavior: contain; scrollbar-gutter: stable; }
.mv-dashboard__open-waybills .rz-data-grid { min-width: 0; }
.mv-dashboard__open-waybills .rz-grid-table { width: 100%; }
.mv-dashboard__open-waybills .rz-data-grid.mv-data-grid .rz-pager-page, .mv-dashboard__open-waybills .rz-data-grid.mv-data-grid .rz-pager-next, .mv-dashboard__open-waybills .rz-data-grid.mv-data-grid .rz-pager-prev, .mv-dashboard__open-waybills .rz-data-grid.mv-data-grid .rz-pager-first, .mv-dashboard__open-waybills .rz-data-grid.mv-data-grid .rz-pager-last { min-height: 44px; min-width: 44px; }
.mv-dashboard__attention { padding-left: 1.25rem; }
.mv-dashboard__attention li { display: grid; gap: .15rem; margin: .5rem 0; }
.mv-dashboard__attention span { color: var(--mv-muted); font-size: .82rem; }
.mv-dashboard :is(a, button, input, summary):focus-visible { outline: 3px solid var(--mv-focus, #178544); outline-offset: 2px; }
/* auto-fit rather than a fixed four: a driver row carries a name and a supply chip, and below about
   270px the name truncates to "Sipho Dl…". Let the grid drop a column instead of clipping people's names. */
.mv-branch-grid { display: grid; gap: 12px; grid-template-columns: repeat(auto-fit, minmax(240px, 1fr)); margin-top: .75rem; }
.mv-branch-card { background: var(--mv-surface); border: 1px solid var(--mv-border); border-radius: var(--mv-radius-lg); box-shadow: var(--mv-shadow-card); display: flex; flex-direction: column; gap: 11px; min-width: 0; padding: 14px; }
.mv-branch-card__head { align-items: center; display: flex; gap: 8px; justify-content: space-between; }
.mv-branch-card__name { align-items: center; display: flex; font-size: .95rem; font-weight: 600; gap: 6px; margin: 0; min-width: 0; }
.mv-branch-card__dot { background: var(--mv-primary); border-radius: 50%; flex: 0 0 auto; height: 6px; width: 6px; }
.mv-branch-card__dot--off { background: var(--mv-border-strong); }
.mv-branch-card__open { flex: 0 0 auto; min-height: 24px; }
.mv-branch-card__stats { display: grid; gap: 8px; grid-template-columns: repeat(2, minmax(0, 1fr)); margin: 0; }
.mv-branch-card__value { font-size: 1.7rem; font-variant-numeric: tabular-nums; font-weight: 700; line-height: 1; margin: .2rem 0 0; }
.mv-fleet-bar { background: var(--mv-neutral-soft); border-radius: 999px; display: flex; height: 6px; overflow: hidden; }
.mv-fleet-bar__segment { display: block; }
.mv-fleet-bar__segment--motorcycle { background: var(--mv-fleet-1); }
.mv-fleet-bar__segment--van { background: var(--mv-fleet-2); }
.mv-fleet-bar__segment--lighttruck { background: var(--mv-fleet-3); }
.mv-fleet-bar__segment--heavytruck { background: var(--mv-fleet-4); }
.mv-fleet-bar__segment--other, .mv-fleet-bar__segment--unspecified { background: var(--mv-border-strong); }
.mv-fleet-legend { display: grid; gap: 3px; list-style: none; margin: 7px 0 0; padding: 0; }
.mv-fleet-legend li { align-items: center; color: var(--mv-ink-muted); display: flex; font-size: .74rem; gap: 6px; }
.mv-fleet-legend__swatch { border-radius: 2px; flex: 0 0 auto; height: 8px; width: 8px; }
.mv-branch-card__drivers { display: grid; gap: 5px; list-style: none; margin: 0; padding: 0; }
/* Two fixed rows per driver rather than a wrapping line: the supply chip then sits in the same place on
   every card, and no name is ever clipped to "Sipho Dl…". */
.mv-branch-card__drivers li { align-items: center; column-gap: 7px; display: grid; font-size: .78rem; grid-template-columns: 22px minmax(0, 1fr); row-gap: 1px; }
.mv-branch-card__initials { grid-row: span 2; }
.mv-branch-card__driver-name { grid-column: 2; min-width: 0; }
.mv-branch-card__drivers .mv-status { grid-column: 2; justify-self: start; }
.mv-branch-card__initials { align-items: center; background: var(--mv-primary-soft); border: 1px solid var(--mv-border); border-radius: 50%; color: var(--mv-primary-ink); display: inline-flex; flex: 0 0 auto; font-size: .65rem; font-weight: 600; height: 22px; justify-content: center; width: 22px; }
.mv-branch-card__more { color: var(--mv-ink-muted); font-size: .74rem; padding-left: 29px; }
.mv-branch-card__empty { align-items: center; border: 1px dashed var(--mv-border-strong); border-radius: var(--mv-radius); color: var(--mv-ink-muted); display: flex; flex: 1; flex-direction: column; gap: 9px; justify-content: center; padding: 14px; text-align: center; }
.mv-branch-card__empty p { font-size: .78rem; margin: 0; }
.mv-branch-card__foot { border-top: 1px solid var(--mv-border); color: var(--mv-ink-muted); display: flex; font-size: .74rem; gap: 8px; justify-content: space-between; margin-top: auto; padding-top: 9px; }
@media (max-width: 900px) {
    .mv-branch-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
@media (max-width: 640px) {
    .mv-branch-grid { grid-template-columns: 1fr; }
}
@media (max-width: 900px) {
    .mv-dashboard__cards { grid-template-columns: repeat(3, minmax(0, 1fr)); }
    .mv-dashboard__action-queue { grid-template-columns: 1fr; }
    .mv-dashboard__performance { grid-column: 1 / -1; }
    .mv-dashboard__drivers, .mv-dashboard__hub { grid-column: span 6; }
}
@media (max-width: 700px) {
    .mv-dashboard__performance, .mv-dashboard__drivers, .mv-dashboard__hub { grid-column: 1 / -1; }
}
@media (max-width: 640px) {
    .mv-dashboard { gap: 12px; }
    .mv-dashboard__cards, .mv-dashboard__secondary { grid-template-columns: 1fr; gap: .5rem; }
    .mv-dashboard__workload-facts { grid-template-columns: repeat(2, minmax(0, 1fr)); }
    .mv-dashboard__section-heading { align-items: stretch; flex-direction: column; }
    .mv-dashboard-card { padding: .7rem .8rem; }
    .mv-dashboard-card + .mv-dashboard-card { border-left: 0; border-top: 1px solid var(--mv-border); }
    .mv-dashboard__performance, .mv-dashboard__drivers, .mv-dashboard__hub { grid-column: 1 / -1; }
    .mv-dashboard__grid-scroll { margin-inline: -12px; padding-inline: 12px; }
    .mv-dashboard__grid-scroll .rz-data-grid, .mv-dashboard__open-waybills .rz-grid-table { min-width: 620px; }
}
@media (prefers-reduced-motion: reduce) {
    .mv-dashboard, .mv-dashboard * { scroll-behavior: auto; transition-duration: 0.01ms; animation-duration: 0.01ms; }
}
.mv-section-stack { display: grid; gap: 12px; min-width: 0; }
.mv-section-stack--compact { gap: 8px; }
.mv-dialog-actions { align-items: center; display: flex; flex-wrap: wrap; gap: 8px; justify-content: flex-end; padding: 12px 18px; }
@media (min-width: 641px) and (max-width: 899px) {
  .mv-workspace-page--data .mv-shipments-table { display: none; }
  .mv-workspace-page--data .mv-shipments-cards { display: grid; gap: 8px; grid-template-columns: 1fr; max-width: 100%; }
}
@media (max-width: 640px) {
  .rz-data-grid.mv-provider-grid { flex: none !important; height: auto !important; max-height: calc(50dvh - 40px); }
  .rz-data-grid.mv-provider-grid .rz-data-grid-data { flex: none; max-height: calc(50dvh - 42px); }
  #provider-pager { bottom: auto !important; margin-top: 0 !important; position: static !important; }
}

/* Driver surface. Same tokens as the console, different physics: a phone held in one hand, in
   sunlight, by someone wearing gloves. The console's compact density was a deliberate decision for a
   dispatcher at a desk (PR 394) and is not changed here - everything below is scoped to .mv-driver. */
/* The shell is exactly one viewport tall and only the middle band scrolls. This was `min-height` with a
   sticky action bar first, and at 390x844 the bar sat just below the fold on every short screen: sticky
   pins an element while its container scrolls and does nothing when there is nothing to scroll, so the
   primary action was off-screen exactly when the day was quiet. Found by measuring it in a browser. */
.mv-driver { -webkit-text-size-adjust: 100%; background: var(--mv-canvas); color: var(--mv-ink); display: flex; flex-direction: column; font-size: 16px; height: 100dvh; line-height: 24px; overflow: hidden; }
.mv-driver__bar { align-items: center; background: var(--mv-surface); border-bottom: 1px solid var(--mv-border); display: flex; flex: 0 0 auto; gap: 12px; justify-content: space-between; padding: 12px 16px; padding-top: calc(12px + env(safe-area-inset-top)); }
.mv-driver__title { font-size: 19px; font-weight: 650; letter-spacing: -.01em; margin: 0; }
.mv-driver__count { color: var(--mv-ink-muted); display: block; font-size: 14px; font-weight: 500; }
/* Icon-only controls still carry a label for a screen reader; the glyph is decorative. */
.mv-driver__icon { align-items: center; background: var(--mv-surface); border: 1px solid var(--mv-border-strong); border-radius: var(--mv-radius); color: var(--mv-ink); display: inline-flex; flex: 0 0 auto; height: 48px; justify-content: center; width: 48px; }
.mv-driver__icon:disabled { opacity: .5; }
.mv-driver__body { -webkit-overflow-scrolling: touch; display: flex; flex: 1 1 auto; flex-direction: column; gap: 12px; min-height: 0; overflow-y: auto; padding: 16px 16px 24px; }

/* The whole card is the target. A tap zone that is only the waybill is a miss every time the phone
   moves, and a driver taps this while walking. */
.mv-driver-card { background: var(--mv-surface); border: 1px solid var(--mv-border); border-radius: var(--mv-radius-lg); box-shadow: var(--mv-shadow-card); color: inherit; display: grid; gap: 6px; min-height: 96px; padding: 14px 16px; text-align: left; text-decoration: none; width: 100%; }
.mv-driver-card:active { background: var(--mv-surface-subtle); }
.mv-driver-card__top { align-items: center; display: flex; gap: 10px; justify-content: space-between; }
.mv-driver-card__waybill { font-size: 18px; font-variant-numeric: tabular-nums; font-weight: 650; letter-spacing: .01em; }
.mv-driver-card__where { font-size: 16px; font-weight: 500; overflow-wrap: anywhere; }
.mv-driver-card__meta { color: var(--mv-ink-muted); font-size: 14px; }

/* The last band of the shell, so it is on screen whatever the list above it is doing. */
.mv-driver__actions { background: var(--mv-surface); border-top: 1px solid var(--mv-border); display: grid; flex: 0 0 auto; gap: 8px; padding: 12px 16px calc(12px + env(safe-area-inset-bottom)); }
.mv-driver__actions--split { grid-template-columns: 1fr 1fr; }
/* A pair of equal actions, wherever it sits: the second row of the action bar, or a sheet's footer. */
.mv-driver-pair { display: grid; gap: 8px; grid-template-columns: 1fr 1fr; }
.mv-driver-pair--spaced { margin-top: 14px; }
.mv-driver__bar-title { flex: 1 1 auto; min-width: 0; }
.mv-driver-button { align-items: center; background: var(--mv-surface); border: 1px solid var(--mv-border-strong); border-radius: var(--mv-radius); color: var(--mv-ink); cursor: pointer; display: inline-flex; font-size: 16px; font-weight: 600; gap: 8px; justify-content: center; min-height: 52px; padding: 0 18px; text-decoration: none; width: 100%; }
.mv-driver-button--primary { background: var(--mv-primary); border-color: var(--mv-primary); color: #fff; }
.mv-driver-button--danger { background: var(--mv-danger); border-color: var(--mv-danger); color: #fff; }
.mv-driver-button:disabled, .mv-driver-button[aria-disabled="true"] { opacity: .55; }
.mv-driver-button:active { transform: translateY(1px); }

.mv-driver .mv-status { font-size: 13px; line-height: 18px; min-height: 24px; padding: 2px 10px; }
.mv-driver-note { color: var(--mv-ink-muted); font-size: 14px; margin: 0; }
.mv-driver-state { background: var(--mv-surface); border: 1px solid var(--mv-border); border-radius: var(--mv-radius-lg); display: grid; gap: 8px; padding: 24px 18px; text-align: center; }
.mv-driver-state h2 { font-size: 17px; font-weight: 650; margin: 0; }
.mv-driver-state p { color: var(--mv-ink-muted); margin: 0; }
.mv-driver-alert { border-radius: var(--mv-radius); font-size: 15px; padding: 12px 14px; }
.mv-driver-alert--error { background: var(--mv-danger-soft); color: var(--mv-danger-ink); }
.mv-driver-alert--span { grid-column: 1 / -1; margin: 0; }
.mv-driver-alert--ok { background: var(--mv-success-soft); color: var(--mv-success-ink); }
/* Kept is not sent. Green here read as "done" to a glance in sunlight, which is the exact misread the
   queue strip exists to prevent - but it has to differ from green rather than replace it, or nothing
   distinguishes a delivery that reached Movia from one still on the phone. */
.mv-driver-alert--kept { background: var(--mv-info-soft); color: var(--mv-info-ink); }

/* Persistent, never a toast. A driver in sunlight does not see a message that fades, and "will send"
   read as "sent" is how a parcel goes missing from the customer's point of view. */
.mv-driver-queue { align-items: center; background: var(--mv-warning-soft); color: var(--mv-warning-ink); display: flex; flex: 0 0 auto; flex-wrap: wrap; gap: 8px 12px; font-size: 14px; justify-content: space-between; padding: 10px 16px; }
.mv-driver-queue strong { font-weight: 650; }
.mv-driver-queue__sync { background: transparent; border: 1px solid currentColor; border-radius: var(--mv-radius); color: inherit; font-size: 14px; font-weight: 600; min-height: 44px; padding: 0 16px; }
.mv-driver-queue__items { display: grid; flex: 1 0 100%; gap: 4px; list-style: none; margin: 0; padding: 0; }
.mv-driver-queue__items li { align-items: center; display: flex; flex-wrap: wrap; font-size: 14px; gap: 8px; line-height: 20px; overflow-wrap: anywhere; }
.mv-driver-queue__discard { background: transparent; border: 1px solid currentColor; border-radius: var(--mv-radius); color: inherit; font-size: 14px; font-weight: 600; min-height: 44px; padding: 0 14px; }

.mv-driver-stop { display: grid; gap: 14px; }
.mv-driver-panel { background: var(--mv-surface); border: 1px solid var(--mv-border); border-radius: var(--mv-radius-lg); display: grid; gap: 8px; padding: 16px; }
.mv-driver-panel--note { background: var(--mv-warning-soft); border-color: var(--mv-warning); }
.mv-driver-panel--note h2 { color: var(--mv-warning-ink); }
.mv-driver-panel--note p { font-weight: 550; margin: 0; }
.mv-driver-panel h2 { color: var(--mv-ink-muted); font-size: 12px; font-weight: 650; letter-spacing: .06em; margin: 0; text-transform: uppercase; }
.mv-driver-panel address { font-size: 16px; font-style: normal; line-height: 24px; overflow-wrap: anywhere; }
.mv-driver-link { align-items: center; border: 1px solid var(--mv-border-strong); border-radius: var(--mv-radius); color: var(--mv-primary-ink); display: inline-flex; font-weight: 600; gap: 8px; justify-content: center; min-height: 48px; padding: 0 16px; text-decoration: none; }
.mv-driver-field { display: grid; gap: 6px; }
.mv-driver-field > span { color: var(--mv-ink-muted); font-size: 14px; font-weight: 600; }
.mv-driver-input { background: var(--mv-surface); border: 1px solid var(--mv-border-strong); border-radius: var(--mv-radius); color: var(--mv-ink); font-size: 16px; min-height: 48px; padding: 10px 12px; width: 100%; }
.mv-driver-history { display: grid; gap: 10px; list-style: none; margin: 0; padding: 0; }
.mv-driver-history li { border-left: 3px solid var(--mv-border-strong); padding-left: 12px; }
.mv-driver-history time { color: var(--mv-ink-muted); display: block; font-size: 13px; }

/* Sheets, not centred dialogs. The console centres a modal, which on a phone puts its buttons in the
   middle of the screen - the one part of the surface the thumb does not reach without regripping, and the
   opposite of what the rest of this shell does. Anchored to the bottom instead. */
.mv-driver .mv-modal-backdrop { align-items: flex-end; }
.mv-driver .mv-modal { border-radius: var(--mv-radius-lg) var(--mv-radius-lg) 0 0; max-height: 88dvh; padding-bottom: env(safe-area-inset-bottom); }
.mv-driver .mv-modal__body { font-size: 16px; }
/* Placeholder text was the lowest-contrast thing on a surface designed to be read in sunlight. */
.mv-driver-input::placeholder { color: var(--mv-ink-muted); opacity: 1; }

@media (prefers-reduced-motion: reduce) { .mv-driver-button:active { transform: none; } }
@media (max-width: 640px) {
  .mv-branding-summary, .mv-branding-editor { grid-template-columns:1fr; }
  .mv-brand-document-preview { width:100%; }
  .mv-branding-card .mv-form-panel__heading { align-items:flex-start; gap:12px; }
  .mv-branding-card .mv-form-panel__heading .mv-button { min-height:44px; white-space:nowrap; }
}
