/* Staff pages design, stage 1: foundation (v14.38, user 2026-10-05: "go ahead with stage 1 - they look much cleaner and
   more professional"; mockup https://claude.ai/artifact/L6ofYWyEgAJw6HvC4fVQ6s). The customer website's look (portal.css)
   in a COMPACT version for staff: same colours, type, badges, buttons and icons; tighter rows and 34px boxes. Everything
   is scoped to body.st, which flow-staff-ui.js sets while the staff shell (.shell) is on screen, so the website, customer
   pages and the driver app are never touched. Look only: no layout logic, saving, pricing or booking changes.
   Later stages (lists, record screens, popups) build on these tokens and remove the old app.css layers they replace. */
body.st{
  --st-blue:#003C55;--st-yellow:#EDCC47;--st-yellow-hover:#E3C035;--st-page:#F5F7F8;--st-card:#fff;--st-border:#D7E1E6;--st-divider:#E7EEF1;
  --st-text:#334B59;--st-muted:#667985;--st-soft:#EDF4F7;--st-hover:#F7FAFB;--st-head:#F2F6F8;--st-focus:0 0 0 3px rgba(0,60,85,.14);
  --st-ok-bg:#E8F5EE;--st-ok:#1D6B43;--st-warn-bg:#FFF6DA;--st-warn:#7A5A06;--st-bad-bg:#FDECEC;--st-bad:#A12F2F;--st-info-bg:#E6F0F6;--st-info:#0B4A66;--st-neutral-bg:#EEF2F4;--st-neutral:#4C6170;
  --st-r-card:12px;--st-r-btn:8px;--st-r-input:7px;--st-shadow:0 2px 8px rgba(0,0,0,.04);
  --bg:var(--st-page);--text:var(--st-text);--muted:var(--st-muted);--line:var(--st-border);--shadow:var(--st-shadow);
  background:var(--st-page);color:var(--st-text);font-family:Inter,ui-sans-serif,system-ui,-apple-system,"Segoe UI",sans-serif}

/* ---- top bar ---- */
body.st .topbar{box-shadow:none;border-bottom:1px solid rgba(255,255,255,.06)}
body.st .topbar .btn.secondary,body.st .topbar .btn.small{background:rgba(255,255,255,.1)!important;color:#fff!important;border:1px solid rgba(255,255,255,.2)!important}
body.st .topbar .btn.secondary:hover,body.st .topbar .btn.small:hover{background:rgba(255,255,255,.2)!important}
body.st .topbar .user-pill{background:transparent;border:1px solid rgba(255,255,255,.18);font-size:13px}
body.st .global-job-search{border-radius:var(--st-r-btn)}

/* ---- side menu ---- */
body.st .sidebar{background:var(--st-card);border-right:1px solid var(--st-border)}
body.st .sidebar .nav{min-height:34px;padding:7px 10px;margin-bottom:1px;border-radius:var(--st-r-btn);font-size:13.5px;font-weight:500;color:var(--st-text);background:transparent;border:0;box-shadow:none;align-items:center}
body.st .sidebar .nav:hover{background:var(--st-hover)}
body.st .sidebar .nav.active{background:var(--st-soft);color:var(--st-blue);font-weight:700}
body.st .sidebar .nav .nav-label{display:inline-flex;align-items:center;gap:10px;min-width:0}
body.st .sidebar .nav .st-ico{flex:none;display:inline-flex;color:var(--st-muted)}
body.st .sidebar .nav.active .st-ico{color:var(--st-blue)}
body.st .sidebar .nav-count{font-size:11.5px;font-weight:700;border-radius:999px;padding:1px 7px;background:var(--st-info-bg);color:var(--st-info)}
body.st .sidebar .nav-count.amber{background:var(--st-warn-bg);color:var(--st-warn)}
/* Dashboard, favourites, Calendar, Resources: plain rows like the rest of the menu (they were big yellow blocks) */
body.st .sidebar-quick>.nav,body.st .sidebar-quick .favourite-shortcut,body.st .sidebar-bottom .nav{background:transparent;color:var(--st-text);border:0;box-shadow:none;font-weight:500;padding:7px 10px;min-height:34px}
body.st .sidebar-quick>.nav.active,body.st .sidebar-quick .favourite-shortcut.active,body.st .sidebar-bottom .nav.active{background:var(--st-soft);color:var(--st-blue);font-weight:700}
body.st .sidebar .favourite-shortcut>span:first-child{display:inline-flex;align-items:center;gap:10px}
body.st .sidebar-website-link{justify-content:flex-start!important;gap:0}
body.st .sidebar-website-link>span:last-child{margin-left:auto}
body.st .sidebar-quick>.nav:hover,body.st .sidebar-quick .favourite-shortcut:hover,body.st .sidebar-bottom .nav:hover{background:var(--st-hover)}
/* Create Quote / Create Shipment: two small yellow buttons side by side */
body.st .sidebar-create{display:flex;gap:6px;margin:8px 0 6px}
body.st .sidebar-create .sidebar-new-quote{flex:1;height:34px;min-height:34px;margin:0;padding:0 8px;display:inline-flex;align-items:center;justify-content:center;gap:5px;border-radius:var(--st-r-btn);background:var(--st-yellow);color:var(--st-blue);border:0;box-shadow:none;font:600 13px Inter,sans-serif;white-space:nowrap}
body.st .sidebar-create .sidebar-new-quote:hover{background:var(--st-yellow-hover)}
body.st .side-title,body.st .sidebar-group-head,body.st .sidebar-group>button{font-size:11px;font-weight:700;letter-spacing:.08em;color:var(--st-muted)}
body.st .sidebar-separator{background:var(--st-divider)}

/* ---- page head ---- */
body.st .page-head{margin-bottom:16px;align-items:flex-end}
body.st .page-head h1,body.st .main[data-screen] .page-head h1,body.st #main>h1{font-size:24px;font-weight:800;letter-spacing:-.01em;text-transform:none;color:var(--st-blue);margin:2px 0}
body.st .page-head .sub,body.st .page-head p{font-size:13.5px;color:var(--st-muted)}

/* ---- buttons ---- */
body.st .btn{min-height:34px;padding:0 14px;border-radius:var(--st-r-btn);font-size:13.5px;font-weight:600;line-height:1.2}
body.st .btn.small{min-height:28px;padding:0 10px;font-size:12.5px}
body.st .btn.primary,body.st .btn.yellow{background:var(--st-yellow);color:var(--st-blue);border:0}
body.st .btn.primary:hover,body.st .btn.yellow:hover{background:var(--st-yellow-hover)}
body.st .btn.blue,body.st .btn.navy{background:var(--st-blue);color:#fff;border:0}
body.st .btn.secondary{background:var(--st-info-bg);color:var(--st-blue);border:1px solid #CFE0EA}
body.st .btn.secondary:hover{background:#DCEAF2}
body.st .btn.danger{background:var(--st-bad-bg);color:var(--st-bad);border:1px solid #F2C4C4}
body.st .btn.ghost,body.st .btn.linkish{background:transparent;color:var(--st-blue);border:0}
body.st .btn:disabled,body.st .btn[disabled]{background:var(--st-neutral-bg)!important;color:#93A3AD!important;border-color:transparent!important;cursor:not-allowed}
body.st .btn:focus-visible{outline:none;box-shadow:var(--st-focus)}

/* ---- boxes ---- */
body.st .field label{font-size:11.5px;font-weight:700;letter-spacing:.04em;color:var(--st-muted);margin-bottom:5px}
body.st .field input:not([type=checkbox]):not([type=radio]),body.st .field select,body.st .field textarea,body.st .cell-input{border:1px solid var(--st-border);border-radius:var(--st-r-input);padding:7px 10px;min-height:34px;font-size:14px;color:var(--st-text)}
body.st .field textarea{min-height:68px}
body.st .field input:focus,body.st .field select:focus,body.st .field textarea:focus,body.st .cell-input:focus{border-color:#5C8FA4;box-shadow:var(--st-focus);outline:none}

/* ---- cards ---- */
body.st .panel,body.st .metric{border:1px solid var(--st-border);border-radius:var(--st-r-card);box-shadow:var(--st-shadow)}
body.st .panel-head{padding:12px 16px;border-bottom:1px solid var(--st-divider)}
body.st .panel-title{font-size:15px;font-weight:700;color:var(--st-blue)}
body.st .panel-body{padding:14px 16px}
body.st .metric .k{font-size:11.5px;font-weight:700;letter-spacing:.05em;color:var(--st-muted)}
body.st .metric .v{font-weight:800;color:var(--st-blue)}

/* ---- tables (compact) ---- */
body.st .data-table{font-size:13.5px}
body.st .data-table th{background:var(--st-head);font-size:11.5px;font-weight:700;letter-spacing:.06em;color:var(--st-muted);padding:9px 10px;border-bottom:1px solid var(--st-border)}
body.st .data-table td{padding:8px 10px;border-bottom:1px solid var(--st-divider);color:var(--st-text)}
body.st .data-table tbody tr:hover td{background:var(--st-hover)}
body.st .data-table tr.flow-row-selected td,body.st .data-table tr.shipment-row-selected td,body.st .data-table tr.selected-row td{background:var(--st-soft)!important}
body.st .data-table tr.flow-row-selected,body.st .data-table tr.shipment-row-selected,body.st .data-table tr.selected-row{box-shadow:inset 3px 0 0 var(--st-blue)}

/* ---- badges ---- */
body.st .badge{height:22px;padding:0 9px;align-items:center;font-size:12px;font-weight:600;background:var(--st-neutral-bg);color:var(--st-neutral)}
body.st .badge.green{background:var(--st-ok-bg);color:var(--st-ok)}
body.st .badge.amber{background:var(--st-warn-bg);color:var(--st-warn)}
body.st .badge.red{background:var(--st-bad-bg);color:var(--st-bad)}
body.st .badge.blue{background:var(--st-info-bg);color:var(--st-info)}

/* ---- tabs and chips: pills ---- */
body.st .shipment-queue-tabs{display:flex;flex-wrap:wrap;gap:8px;background:transparent;border:0;padding:0;box-shadow:none}
body.st .shipment-queue-tabs>button{flex:0 0 auto;min-height:32px;height:32px;padding:0 13px;border-radius:999px;border:1px solid var(--st-border);background:#fff;color:var(--st-text);font:600 13px Inter,sans-serif;display:inline-flex;align-items:center;gap:6px;box-shadow:none}
body.st .shipment-queue-tabs>button>span{background:transparent;color:var(--st-muted);font-size:11.5px;font-weight:700;padding:0;min-width:0}
body.st .shipment-queue-tabs>button.active{background:var(--st-blue);border-color:var(--st-blue);color:#fff}
body.st .shipment-queue-tabs>button.active>span{color:#C9DCE6}
body.st .shipment-date-filters button,body.st .sq2-chip{min-height:30px;height:30px;padding:0 12px;border-radius:999px;border:1px solid var(--st-border);background:#fff;color:var(--st-text);font:600 13px Inter,sans-serif;box-shadow:none}
body.st .shipment-date-filters button.active,body.st .sq2-chip.active{background:var(--st-blue);border-color:var(--st-blue);color:#fff}

/* ---- notices ---- */
body.st .callout{background:var(--st-warn-bg);border:1px solid #EDD48A;color:var(--st-warn);border-radius:10px;font-size:13px}
body.st .success{background:var(--st-ok-bg);border-color:#BFE3CE;color:var(--st-ok);border-radius:10px}
body.st .err,body.st .error-box{background:var(--st-bad-bg);border-color:#F2C4C4;color:var(--st-bad);border-radius:10px}

/* ---- popups ---- */
body.st .modal{border-radius:14px}
body.st .modal-head h2{color:var(--st-blue);font-weight:800;letter-spacing:-.01em}

/* ===== Stage 2: lists (v14.39). Same compact look on every list page: header buttons on one line, one style of filter box,
   one style of tab and chip, toolbars that keep their buttons in a row. Look only. ===== */
/* page header: actions in one row, button words never squashed onto several lines */
body.st .page-head .actions{display:flex;flex-wrap:wrap;align-items:center;justify-content:flex-end;gap:8px}
body.st .page-head .actions .btn{white-space:nowrap;min-height:34px;font-size:13.5px}
body.st .page-head .actions .btn svg{flex:none}
/* every free-standing box on a list page (filters, find boxes) looks like the form boxes */
body.st #main input:not([type=checkbox]):not([type=radio]):not([type=range]):not([type=color]):not([type=file]),body.st #main select{border:1px solid var(--st-border);border-radius:var(--st-r-input);background:#fff;color:var(--st-text);font:400 13.5px Inter,ui-sans-serif,system-ui,sans-serif;min-height:34px;padding:6px 10px;box-shadow:none}
body.st #main input:not([type=checkbox]):not([type=radio]):focus,body.st #main select:focus{border-color:#5C8FA4;box-shadow:var(--st-focus);outline:none}
body.st #main input::placeholder{color:#93A3AD}
/* boxes inside table rows stay a little shorter */
body.st #main .data-table input:not([type=checkbox]):not([type=radio]),body.st #main .data-table select{min-height:30px;padding:4px 8px;font-size:13px}
/* the Find filter grids (Batch Invoicing, Cancelled & Bypassed, Reports) */
body.st .rl-filter-grid{gap:10px 12px}
body.st .rl-filter-grid label{font-size:11px;font-weight:700;letter-spacing:.05em;color:var(--st-muted);gap:5px}
body.st .rl-filter-grid .rl-check{font-size:13px;letter-spacing:0;font-weight:600;color:var(--st-text);text-transform:none}
/* search boxes with an icon (Invoice queries, Claims) */
body.st .iq-searchbox{border:1px solid var(--st-border);border-radius:var(--st-r-input);background:#fff;min-height:34px;padding:0 10px}
body.st .iq-searchbox input{border:0!important;box-shadow:none!important;min-height:32px!important;padding:0 4px!important}
/* tabs above a list (Reports sources): the same pills as Shipments */
body.st .ir-tabs{display:flex;flex-wrap:wrap;gap:8px;background:transparent;padding:0;border-radius:0}
body.st .ir-tabs button{height:32px;padding:0 13px;border-radius:999px;border:1px solid var(--st-border);background:#fff;color:var(--st-text);font:600 13px Inter,sans-serif;box-shadow:none}
body.st .ir-tabs button.active{background:var(--st-blue);border-color:var(--st-blue);color:#fff;box-shadow:none}
/* filter chips everywhere (Quotes, Problem jobs, Web Quotes, Cancelled, case lists) */
body.st .sq2-chip,body.st .ir-chips button,body.st .sq2-filters .sq2-chip{height:30px;min-height:30px;display:inline-flex;align-items:center;gap:6px;padding:0 12px;border-radius:999px;border:1px solid var(--st-border);background:#fff;color:var(--st-text);font:600 13px Inter,sans-serif;box-shadow:none}
body.st .sq2-chip.active,body.st .ir-chips button.active,body.st .sq2-filters .sq2-chip.active{background:var(--st-blue);border-color:var(--st-blue);color:#fff}
body.st .sq2-filters,body.st .ir-chips{display:flex;flex-wrap:wrap;align-items:center;gap:8px}
/* list toolbars (Shipments queue card and the like): title left, buttons in one row on the right */
body.st .shipment-operations-toolbar{align-items:flex-start;gap:16px}
body.st .shipment-operations-toolbar>div:first-child{flex:1;min-width:0}
body.st .shipment-operations-toolbar>div:last-child{display:flex;flex-wrap:wrap;gap:8px;justify-content:flex-end;align-items:center}
body.st .shipment-operations-toolbar .btn{white-space:nowrap}
body.st .shipment-grid-help{font-size:12px;font-weight:500;color:var(--st-muted);margin-top:4px}
/* one line per record (the list standard): long cell text is cut with … rather than wrapping the row */
body.st .shipment-operations-table td{white-space:nowrap}
/* group bands inside lists (Awaiting booking, Booked …): flat soft colour strips */
body.st .data-table .shipment-group-row td,body.st .data-table tr.group-row td{font-size:11.5px;letter-spacing:.06em}
/* tiles above lists (Web Quotes, Invoice queries): compact */
body.st .metric{padding:12px 14px}
body.st .metric .v{font-size:22px}
/* empty states */
body.st .empty,body.st .ir-empty{color:var(--st-muted);font-size:14px}
/* card headers: title left, buttons in one row on the right */
body.st .panel-head{gap:14px}
body.st .panel-head>.actions,body.st .panel-head .toolbar{display:flex;flex-wrap:wrap;align-items:center;justify-content:flex-end;gap:8px;flex:none;max-width:60%}
body.st .panel-head .btn{white-space:nowrap}
/* Flow's own typed-answer popup (flowForm / flowPrompt) */
body.st .modal .flow-form label.field{display:block;margin:0 0 14px}
body.st .flow-form .field span{display:block;font-size:11.5px;font-weight:700;letter-spacing:.04em;color:var(--st-muted);margin-bottom:5px}
body.st .flow-form .field small{display:block;margin-top:5px;font-size:12px;color:var(--st-muted)}
body.st .flow-form input,body.st .flow-form select,body.st .flow-form textarea{width:100%;box-sizing:border-box}

/* ===== Stage 3: record screens (v14.40; shipment, quote and customer records share these). Mockup
   https://claude.ai/artifact/L6ofYWyEgAJw6HvC4fVQ6s (shipment record). Look only. ===== */
/* Sections list: plain rows in one card, numbered circles, the one in use pale blue with a navy number (was solid navy buttons) */
body.st .shv2-navlist,body.st .cr2-nav{display:flex;flex-direction:column;gap:2px;padding:8px;background:#fff;border:1px solid var(--st-border);border-radius:var(--st-r-card);box-shadow:var(--st-shadow)}
body.st .shv2-navlist .shv2-nav-title{display:flex;align-items:baseline;justify-content:space-between;padding:4px 8px 8px;font-size:11.5px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--st-muted)}
body.st .shv2-navlist .shv2-nav-title small{font-size:11.5px;font-weight:600;letter-spacing:0;text-transform:none;color:var(--st-muted)}
body.st .shv2-navlist .shv2-navrow{display:flex;align-items:center;gap:10px;width:100%;padding:9px 10px;border:0;border-radius:9px;background:transparent;box-shadow:none;cursor:pointer;text-align:left}
body.st .shv2-navlist .shv2-navrow:hover{background:var(--st-hover)}
body.st .shv2-navlist .shv2-navrow.active{background:var(--st-soft)}
body.st .shv2-navlist .qp-tabno,body.st .cr2-pane-title .qp-tabno{flex:none;width:22px;height:22px;border-radius:50%;display:inline-grid;place-items:center;background:var(--st-neutral-bg);color:var(--st-neutral);font:700 11.5px Inter,sans-serif}
body.st .shv2-navlist .shv2-navrow.active .qp-tabno,body.st .cr2-pane-title .qp-tabno{background:var(--st-blue);color:#fff}
body.st .shv2-navlist .shv2-nav-text b{font-size:13.5px;font-weight:700;color:var(--st-text)}
body.st .shv2-navlist .shv2-navrow.active .shv2-nav-text b{color:var(--st-blue)}
body.st .shv2-navlist .shv2-nav-text small{font-size:12.5px;font-weight:500;color:var(--st-muted)}
body.st .shv2-navlist .shv2-nav-text small.bad{color:var(--st-bad);font-weight:600}
body.st .shv2-navlist .shv2-navrow i{color:#B5C3CB}
body.st .shv2-navlist .shv2-navrow.active i,body.st .shv2-navlist .shv2-navrow:hover i{color:var(--st-blue)}
body.st .shv2-navlist .shp-cnt{font-size:11.5px;font-weight:700;border-radius:999px;padding:1px 8px;background:var(--st-bad-bg);color:var(--st-bad)}
/* one label style on every record: small grey capitals above the box */
body.st :is(.shv2-main,.cr2-main) label>span:first-child,body.st :is(.shv2-main,.cr2-main) .field>label,body.st .shv2-field>span{font-size:11px!important;font-weight:700;letter-spacing:.05em;text-transform:uppercase;color:var(--st-muted)}
body.st :is(.shv2-main,.cr2-main) :is(input,select,textarea):not([type=checkbox]):not([type=radio]){border:1px solid var(--st-border);border-radius:var(--st-r-input);min-height:34px;font-size:14px;color:var(--st-text);background:#fff}
body.st :is(.shv2-main,.cr2-main) :is(input,select,textarea):focus{border-color:#5C8FA4;box-shadow:var(--st-focus);outline:none}
body.st :is(.shv2-main,.cr2-main) :is(input,textarea)::placeholder{color:#9AAAB3;font-weight:400}
/* record cards and their headings */
body.st :is(.shv2-main,.shv2-aside,.cr2-main) .shv2-card,body.st .cr2-main .panel{border:1px solid var(--st-border);border-radius:var(--st-r-card);box-shadow:var(--st-shadow);background:#fff}
body.st :is(.shv2-main,.cr2-main) :is(.shv2-card-title,.panel-title,h3){color:var(--st-blue);font-size:15px;font-weight:700}
body.st .cr2-main .panel-head{background:#fff}
body.st .cr2-pane-title{font-size:17px;font-weight:800;color:var(--st-blue)}
/* buttons inside records: the same 30px secondary style, never squashed */
body.st :is(.shv2-main,.shv2-aside,.cr2-main) .btn{white-space:nowrap}
body.st :is(.shv2-main,.cr2-main) .btn.small{min-height:30px}
/* record headers: title 22px navy, sub line muted */
body.st .shv2-head h1,body.st .shv2-h1 h1{font-size:22px;font-weight:800;letter-spacing:-.01em;color:var(--st-blue)}
/* What needs doing (shipment): the next step pale blue, warnings pale yellow, problems pale red, coming up light, done plain */
body.st .shp-todo li{border:0;border-radius:10px;padding:10px 12px;background:var(--st-hover)}
body.st .shp-todo li.now{background:var(--st-soft);box-shadow:inset 3px 0 0 var(--st-blue)}
body.st .shp-todo li.now b{color:var(--st-blue)}
body.st .shp-todo li.warn{background:var(--st-warn-bg)}
body.st .shp-todo li.warn b,body.st .shp-todo li.warn small{color:var(--st-warn)}
body.st .shp-todo li.bad{background:var(--st-bad-bg)}
body.st .shp-todo li.bad b,body.st .shp-todo li.bad small{color:var(--st-bad)}
body.st .shp-todo li.later{opacity:1;background:transparent;border:1px solid var(--st-divider)}
body.st .shp-todo li.later b{color:var(--st-muted);font-weight:600}
body.st .shp-todo li.done{background:transparent;border:1px solid var(--st-divider)}
body.st .shp-todo li.warn .ic{background:#fff;color:var(--st-warn)}
body.st .shp-todo li.bad .ic{background:#fff;color:var(--st-bad)}
/* shipment Costs & Revenue table: fits the card (the GP % column was cut off), scrolls sideways if ever too wide */
body.st .shv2-main .shp-cost-table{width:100%;min-width:0;font-size:13px}
body.st .shp-cost-table th,body.st .shp-cost-table td{padding:8px 9px}
body.st :has(>.shp-cost-table){overflow-x:auto;max-width:100%}
/* v15.88: supplier credit notes on a shipment's costs, and the quoted cost compared with the invoices */
body.st .shp-cost-table tr.shp-credit td{color:var(--st-ok)}
body.st .shp-quoted-note{margin-top:8px;font-size:12.5px;color:var(--muted)}
body.st .shp-quoted-note.warn{color:var(--st-bad);font-weight:600}
/* shipment Collection & delivery card (user: messy): both columns start level, heading and its buttons on one line,
   the repeated "Collection" / "Delivery" word hidden from each label (kept for screen readers and history lines) */
body.st .shv2-address-grid{align-items:start;gap:18px}
body.st .shv2-address .shv2-sub{display:flex;align-items:center;justify-content:space-between;gap:6px 8px;flex-wrap:wrap;min-height:30px;margin:0 0 6px}
body.st .shv2-address .shv2-sub>span:first-child{font-size:13.5px;font-weight:700;letter-spacing:0;text-transform:none;color:var(--st-blue);white-space:nowrap}
body.st .shv2-address .shv2-addr-tools{display:flex;gap:6px;flex-wrap:nowrap}
body.st .shv2-address .shv2-addr-tools .btn{min-height:28px;height:28px;padding:0 9px;font-size:12.5px}
body.st .shv2-pfx{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
body.st .shv2-address .shv2-addr-tools{margin-left:auto}
body.st .shv2-card-head .shv2-swap{margin-left:12px;min-height:28px;height:28px;padding:0 10px;font-size:12.5px}
body.st :is(.shv2-head,.shv2-h1) .btn{white-space:nowrap}

/* ===== Stage 4: popups and settings pages (v14.44). One popup look: header with title on the left and its buttons in one
   row on the right (Close last), a divider, roomy body; one label style everywhere (small grey capitals). Look only. ===== */
body.st .modal{border-radius:14px;border:1px solid var(--st-border);box-shadow:0 18px 48px rgba(0,30,45,.22)}
body.st .modal-head{align-items:flex-start;gap:16px;padding:16px 20px 14px;border-bottom:1px solid var(--st-divider)}
body.st .modal-head>div:first-child{min-width:0;flex:1}
body.st .modal-head .eyebrow{font-size:11px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--st-muted);margin:0 0 3px}
body.st .modal-head h2{font-size:19px;font-weight:800;line-height:1.25;margin:0;color:var(--st-blue)}
body.st .modal-head .sub{font-size:13px;line-height:1.4;color:var(--st-muted);margin-top:4px}
body.st .modal-head-actions{flex:none!important;flex-wrap:nowrap!important;width:auto!important;max-width:none!important;gap:8px}
body.st .modal-head-actions .btn,body.st .modal-head-actions .modal-x{min-height:34px;height:34px;padding:0 14px;font-size:13.5px;border-radius:var(--st-r-btn)}
body.st .modal-body{padding:16px 20px}
body.st .modal-foot{padding:12px 20px;border-top:1px solid var(--st-divider)}
/* one label style in popups and settings pages */
body.st :is(.modal,#main) .field>label,body.st :is(.modal,#main) .field>span:first-child,body.st .modal label>span:first-child:not(.flow-switch):not(.sr-only),body.st .modal .lbl{font-size:11px;font-weight:700;letter-spacing:.05em;text-transform:uppercase;color:var(--st-muted);line-height:1.3}
body.st .modal :is(input,select,textarea):not([type=checkbox]):not([type=radio]):not([type=range]):not([type=file]){border:1px solid var(--st-border);border-radius:var(--st-r-input);min-height:34px;font-size:14px;color:var(--st-text);background:#fff;box-shadow:none}
body.st .modal :is(input,select,textarea):focus{border-color:#5C8FA4;box-shadow:var(--st-focus);outline:none}
body.st .modal :is(input,textarea)::placeholder{color:#9AAAB3}
body.st .modal .data-table th{background:var(--st-head)}
/* settings pages: cards with a little more air, toggle rows tidy */
body.st #main .panel+.panel{margin-top:14px}
body.st #main .panel-body>label:has(.flow-switch),body.st #main .panel-body .switch-row{display:flex;align-items:center;gap:10px;font-size:13.5px;font-weight:600;color:var(--st-text);padding:4px 0}

/* Today's board (v14.46): one column per driver / Carrier / CX, cards selectable and draggable */
body.st .ob-panel{padding:12px}
body.st .ob-bar,body.st .ob-bar2{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:10px;margin-bottom:10px}
body.st .ob-days{display:flex;flex-wrap:wrap;align-items:center;gap:6px}
body.st .ob-date{width:150px}
body.st .ob-dayname{margin-left:6px;color:#003C55;font-size:15px}
body.st .ob-sum{display:flex;gap:14px;font-size:13px;color:var(--muted,#526575)}
body.st .ob-sum b{color:#003C55;font-size:15px}
body.st .ob-sum .warn,body.st .ob-sum .warn b{color:#b64242}
body.st .ob-bar2 .sq2-filters{margin:0}
body.st .ob-find{max-width:280px;flex:1}
body.st .ob-selbar{position:sticky;top:0;z-index:5;display:flex;flex-wrap:wrap;align-items:center;gap:10px;padding:8px 12px;margin-bottom:10px;border-radius:10px;background:var(--soft,#EDF4F7);border:1px solid #c9dbe4}
body.st .ob-selbar.is-off{background:#F5F8FA;border-color:#dde6eb}
body.st .ob-hint{font-size:13px;color:var(--muted,#526575)}
body.st .ob-selbar select{width:auto;min-width:200px}
body.st .ob-movedate{display:flex;align-items:center;gap:6px;font-size:13px;color:var(--muted,#526575)}
body.st .ob-movedate input{width:150px}
body.st .ob-cols{display:flex;gap:10px;overflow-x:auto;padding-bottom:10px;align-items:flex-start;scrollbar-width:auto}
body.st .ob-col{flex:0 0 232px;width:232px;min-width:0;background:#F5F8FA;border:1px solid #dde6eb;border-radius:12px;display:flex;flex-direction:column;max-height:calc(100vh - 290px)}
body.st .ob-col.ob-none{background:#fff8e6;border-color:#f0dc9c}
body.st .ob-col.over{outline:2px dashed var(--navy,#003C55);outline-offset:-2px;background:var(--soft,#EDF4F7)}
body.st .ob-colhead{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:4px 8px;padding:10px 12px;border-bottom:1px solid #dde6eb}
body.st .ob-colhead b{color:#003C55;font-size:14px}
body.st .ob-colhead small{display:block;color:var(--muted,#526575);font-size:11.5px}
body.st .ob-count{font-weight:800;color:#003C55;font-size:14px}
body.st .ob-count small{font-weight:600;color:var(--muted,#526575);font-size:11.5px}
body.st .ob-count.warn{color:#b64242}
body.st .ob-moveall{flex-basis:100%;text-align:left;background:none;border:0;padding:0;color:#003C55;font-size:12px;text-decoration:underline;cursor:pointer}
body.st .ob-list{padding:8px;display:flex;flex-direction:column;gap:7px;overflow-y:auto;min-height:60px}
body.st .ob-empty{color:var(--muted,#526575);font-size:12.5px;text-align:center;padding:14px 4px;border:1px dashed #cfdbe2;border-radius:8px}
body.st .ob-card{background:#fff;border:1px solid #dbe4e9;border-radius:9px;padding:8px 10px;cursor:pointer;user-select:none;font-size:12.5px;line-height:1.35}
body.st .ob-card:hover{border-color:#9fb8c6}
body.st .ob-card.is-sel{background:var(--soft,#EDF4F7);border-color:#003C55;box-shadow:inset 3px 0 0 var(--navy,#003C55)}
body.st .ob-card.is-done{opacity:.6;cursor:default}
body.st .ob-top{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:2px 6px}
body.st .ob-top b{color:#003C55;font-size:13px}
body.st .ob-name{font-weight:700;color:#1d3340;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
body.st .ob-line{color:var(--muted,#526575);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
body.st .ob-done{color:#15825b;font-weight:700;font-size:11.5px;white-space:nowrap}
body.st .ob-prog{color:#9a6a00;font-weight:700;font-size:11.5px;white-space:nowrap}
body.st .ob-tags{display:flex;flex-wrap:wrap;gap:4px;margin-top:5px}
body.st .ob-tag{font-size:11px;font-weight:700;padding:1px 7px;border-radius:999px;background:#eef2f5;color:#3b5363}
body.st .ob-tag.sd{background:#fdecea;color:#b64242}
body.st .ob-tag.int{background:#e7f0fb;color:#1f5aa6}
body.st .ob-tag.pal{background:#f3ece4;color:#7a5530}
body.st .ob-tag.roll{background:#fff3cd;color:#8a6200}

/* Carrier label tile: friendly ready-date check (v14.48) */
body.st .cl-tile .cl-ready{display:block;white-space:normal!important;overflow:visible!important;text-overflow:clip!important;margin-top:4px;padding:5px 8px;border-radius:7px;background:var(--soft,#EDF4F7);color:#1d3340;font-size:12px;line-height:1.4}
body.st .cl-tile .cl-ready a{color:#003C55;font-weight:700}

/* Today's board list view (v14.49): driver strip, one row per collection address */
body.st .ob-viewsw{display:flex;gap:4px}
body.st .ob-strip{display:flex;flex-wrap:wrap;gap:6px;align-items:center;margin-bottom:8px}
body.st .ob-chip{display:inline-flex;align-items:baseline;gap:6px;padding:6px 11px;border-radius:9px;border:1px solid #d3dfe6;background:#fff;cursor:pointer;font-size:13px;color:#1d3340}
body.st .ob-chip b{font-weight:700}
body.st .ob-chip span{font-weight:800;color:#003C55}
body.st .ob-chip span.warn{color:#b64242}
body.st .ob-chip small{color:#15825b;font-weight:700;font-size:11.5px}
body.st .ob-chip.ob-none{background:#fff8e6;border-color:#f0dc9c}
body.st .ob-chip.on{background:var(--navy,#003C55);border-color:#003C55;color:#fff}
body.st .ob-chip.on span,body.st .ob-chip.on small{color:#fff}
body.st .ob-dragging .ob-chip[data-ob-col]{border-style:dashed;border-color:#003C55}
body.st .ob-chip.over{outline:2px solid var(--navy,#003C55);background:var(--soft,#EDF4F7)}
body.st .ob-listbar{display:flex;justify-content:space-between;align-items:center;gap:10px;margin:2px 0 6px;font-size:12.5px;color:var(--muted,#526575)}
body.st .ob-listbar label{display:flex;align-items:center;gap:6px}
body.st .ob-listbar select{width:auto;min-width:150px}
body.st .ob-tablewrap{max-height:calc(100vh - 330px);overflow:auto}
body.st .ob-table{font-size:12.5px}
body.st .ob-table thead th{position:sticky;top:0;z-index:1}
body.st .ob-table td{padding:5px 8px;white-space:nowrap;cursor:pointer;user-select:none}
body.st .ob-table .ob-ell{max-width:240px;overflow:hidden;text-overflow:ellipsis}
body.st .ob-table .ob-tick{width:26px}
body.st .ob-table .ob-tick input{pointer-events:none}
body.st .ob-row.grp td{background:#fbfcfd}
body.st .ob-row.child td{background:#fff;font-size:12px}
body.st .ob-row.child td:nth-child(2){padding-left:30px}
body.st .ob-row.is-sel td{background:var(--soft,#EDF4F7)!important}
body.st .ob-row.is-sel td:first-child{box-shadow:inset 3px 0 0 var(--navy,#003C55)}
body.st .ob-row.is-done td{opacity:.55;cursor:default}
body.st .ob-row:hover td{background:#f3f7f9}
body.st .ob-exp{border:0;background:none;color:#003C55;font-size:13px;cursor:pointer;padding:0 6px 0 0;width:18px}
body.st .ob-warn{color:#b64242;font-weight:700}
body.st .ob-emptyrow{text-align:center;color:var(--muted,#526575);padding:20px!important}
body.st .ob-table .ob-tag{font-size:12px;padding:0 3px;background:none}
body.st .ob-table .ob-ell{max-width:200px}
body.st .ob-find{max-width:240px}

/* Today's board: carrier pickups per carrier (v14.50) */
body.st .ob-pk{border:1px solid;border-radius:999px;padding:1px 9px;font-size:11.5px;font-weight:700;cursor:pointer;margin-right:6px;white-space:nowrap}
body.st .ob-pk.due{background:#fff3cd;border-color:#f0dc9c;color:#8a6200}
body.st .ob-pk.late{background:#fdecea;border-color:#f3c2bc;color:#b64242}
body.st .ob-pk.ok{background:#e3f5ec;border-color:#b8e2cc;color:#15825b}
body.st .ob-chip.ob-carrier{background:#f4f7fb}
body.st .ob-strip .ob-chip.on{background:var(--navy,#003C55);border-color:#003C55;color:#fff}

/* Carrier invoices: invoices by email (v14.51) */
body.st .ir-inbox .ir-inbox-act{white-space:nowrap;text-align:right}
body.st .ir-inbox .ir-inbox-act .btn{margin-left:4px}
body.st .ir-inbox-list summary{cursor:pointer;font-size:13px;color:#003C55;font-weight:700;margin:4px 0 8px}
body.st .ir-inbox td{white-space:normal;vertical-align:top}
body.st .ir-inbox td small{display:block;min-width:180px;max-width:320px}
body.st .ir-inbox .badge,body.st .ir-inbox td:first-child{white-space:nowrap}
body.st .ir-inbox-addrs{display:flex;flex-wrap:wrap;gap:8px 20px;margin-top:8px}
body.st .ir-inbox-addrs>div{display:flex;align-items:center;gap:8px;font-size:13px}
body.st .ir-inbox-addrs span{color:var(--st-muted,#526575);font-weight:600;min-width:58px}
body.st .ir-dir{margin:0 0 10px}
body.st .ij-figs{margin:12px 0 8px}
body.st .ij-figs td:last-child{text-align:right;white-space:nowrap}
body.st .ij-figs .ij-total td{border-top:2px solid var(--st-border,#D7E1E6)}
body.st .ij-ap{display:inline-flex;align-items:center;gap:4px;margin-left:8px;font-size:12px;color:var(--st-muted,#526575)}
body.st .ij-ap input{width:64px;height:28px;padding:0 6px}
body.st [data-ci-setdir]{width:auto;min-width:110px}
/* v14.57 admin review: carrier invoice lines fit the page: buttons stacked in a narrow last column, text wraps */
body.st .ci-lines td{vertical-align:top;white-space:normal}
body.st .ci-lines td:nth-child(2){min-width:150px;max-width:260px}
body.st .ci-lines td.ci-money{white-space:nowrap}
body.st .ci-lines td .sub,body.st .ci-lines td.ci-money>div{display:block;white-space:normal}
body.st .ci-lines td.ci-actions{white-space:normal;width:150px;min-width:150px}
body.st .ci-lines td.ci-actions .btn{display:block;width:100%;margin:0 0 4px}
body.st .ci-lines .badge{white-space:nowrap}
/* v14.57: folded filter grids (Find + More filters) */
body.st .rl-filter-grid.rl-quick{display:flex;flex-wrap:wrap;align-items:flex-end;gap:10px 14px}
body.st .rl-quick .rl-wide{flex:1 1 320px;max-width:560px}
body.st .rl-quick .rl-check{padding-bottom:8px}
body.st .rl-more-grid{margin-top:12px;padding-top:12px;border-top:1px dashed var(--st-border,#D7E1E6)}
body.st .rl-more-btn{white-space:nowrap}
body.st .rl-more-grid[hidden]{display:none!important}
/* v14.57 admin review: Invoice Queries / Claims filter chips and the customer / carrier switch on one line */
body.st .iq-panel-head{flex-wrap:nowrap;gap:10px;padding:10px 14px}
body.st .iq-chips{gap:6px;flex-wrap:wrap;min-width:0}
body.st .iq-chips button{height:30px;min-height:30px;padding:0 10px;gap:6px;font-size:12.5px}
body.st .iq-chips button span{padding:0 6px;font-size:11.5px}
body.st .iq-chips button i{display:none}
body.st .iq-kindtabs{flex:0 0 auto;white-space:nowrap}
body.st .iq-kindtabs button{height:30px;min-height:30px;padding:0 12px;font-size:12.5px}
body.st .iq-panel-head .iq-chips{flex:1 1 auto}
body.st .iq-panel-head .iq-chips{gap:5px}
body.st .iq-panel-head .iq-chips button{padding:0 8px;gap:5px}
body.st .iq-kindtabs{gap:4px;padding:0}
body.st .iq-kindtabs button{padding:0 10px}
body.st .inv-tabs{margin:0 0 12px}
body.st section.panel[hidden]{display:none!important}
/* v14.58 top menu (user: "menu to top pls"): the side menu becomes a bar under the top bar with dropdown groups, so
   every page gets the full width. Same elements and click handlers (flow-staff-ui.js topMenu). */
body.st .layout{grid-template-columns:minmax(0,1fr)!important;grid-template-rows:auto minmax(0,1fr)}
body.st .layout>.sidebar{display:flex;flex-direction:row;flex-wrap:wrap;align-items:center;gap:2px 2px;height:auto!important;max-height:none;overflow:visible!important;padding:6px 16px;border-right:0;border-bottom:1px solid var(--st-border);position:relative;z-index:60;background:var(--st-card)}
body.st .layout>.sidebar .sidebar-quick{display:flex;align-items:center;gap:2px;margin:0 6px 0 0;padding:0;border:0}
body.st .layout>.sidebar .sidebar-separator{display:none}
body.st .layout>.sidebar .nav{margin:0;white-space:nowrap}
body.st .layout>.sidebar .sidebar-quick .nav-star{display:none}
body.st .layout>.sidebar .sidebar-create{display:flex;gap:6px;margin:0 6px;padding:0}
body.st .layout>.sidebar details.sidebar-group{position:relative;margin:0;border:0;padding:0}
body.st .layout>.sidebar details.sidebar-group>summary{display:flex;align-items:center;gap:4px;height:34px;padding:0 10px;margin:0;border-radius:var(--st-r-btn);font-size:13.5px;font-weight:600;letter-spacing:0;text-transform:none;color:var(--st-text);cursor:pointer;list-style:none;white-space:nowrap}
body.st .layout>.sidebar details.sidebar-group>summary::-webkit-details-marker{display:none}
body.st .layout>.sidebar details.sidebar-group>summary .sidebar-chevron{transform:rotate(90deg);font-size:12px;color:var(--st-muted);margin-left:2px}
body.st .layout>.sidebar details.sidebar-group[open]>summary,body.st .layout>.sidebar details.sidebar-group>summary:hover{background:var(--st-hover)}
body.st .layout>.sidebar details.sidebar-group.has-active>summary{color:var(--st-blue);background:var(--st-soft)}
body.st .layout>.sidebar .sidebar-group-items{position:absolute;top:calc(100% + 6px);left:0;min-width:250px;max-height:calc(100vh - 150px);overflow-y:auto;background:#fff;border:1px solid var(--st-border);border-radius:10px;box-shadow:0 10px 28px rgba(0,42,59,.14);padding:6px;z-index:70}
body.st .layout>.sidebar details.sidebar-group:last-of-type .sidebar-group-items{left:auto;right:0}
body.st .topbar .top-links{display:flex;align-items:center;gap:4px;margin:0 4px 0 0;padding:0;border:0;position:static}
body.st .topbar .top-links .nav,body.st .topbar .top-links a{display:inline-flex;align-items:center;height:32px;padding:0 10px;margin:0;border-radius:8px;color:#fff;background:transparent;font-size:13px;font-weight:600;white-space:nowrap;text-decoration:none}
body.st .topbar .top-links .nav:hover,body.st .topbar .top-links a:hover{background:rgba(255,255,255,.1)}
body.st .topbar .top-links .st-ico,body.st .topbar .top-links .st-ico svg{color:#fff!important}
body.st .topbar .top-links .nav .nav-label{gap:6px}
body.st .topbar .top-links .nav.active{background:rgba(255,255,255,.16)}
body.st .shell{grid-template-columns:minmax(0,1fr)!important}
body.st .topbar{min-width:0}
body.st .topbar .global-job-search{min-width:180px;flex:1 1 320px;max-width:520px}
/* Calendar, Resources, Open website as icon buttons (names on hover) */
body.st .topbar .top-links .nav-label,body.st .topbar .top-links a{font-size:0;gap:0}
body.st .topbar .top-links .st-ico{margin:0!important}
body.st .topbar .top-links a span:not(.st-ico){display:none}
@media(min-width:801px){body.st .layout>.sidebar{height:auto!important}}
body.st .topbar .global-job-search input{width:100%;min-width:0}
/* v17.51: was overflow:hidden (v14.58), which clipped the results list so the top search showed nothing */
body.st .topbar .global-job-search{overflow:visible}
body.st .layout>.sidebar{padding:6px 12px;gap:0}
body.st .layout>.sidebar details.sidebar-group>summary{padding:0 8px;font-size:13px}
body.st .layout>.sidebar .sidebar-quick .nav{padding:7px 8px}
body.st .layout>.sidebar .sidebar-create{margin:0 4px}
/* the shipment and quote panels open below the menu bar (its height is measured: it can wrap onto two rows) */
body.st .staff-quote-popout-backdrop{top:var(--st-menu-bottom,131px)!important}
/* v21.28 (user): the shipment popup sits in front of the Flow header and menu. */
body.st .shipment-full-popout-backdrop{top:0!important;z-index:95!important}
body.st .layout>.sidebar .sidebar-quick{flex-wrap:wrap}
/* v14.59: subheadings inside a menu dropdown */
body.st .sidebar-group-items .nav-subhead{margin:8px 8px 2px;padding-top:8px;border-top:1px solid var(--st-border);font-size:11px;font-weight:700;letter-spacing:.05em;text-transform:uppercase;color:var(--st-muted)}
/* v14.90 receiver list with an Importer of Record set (green badge-button; app.css has the base rule) */
body.st .btn.rl-ior-set{background:#1f7a3f;color:#fff;border:1px solid #1f7a3f;font-weight:700;box-shadow:0 0 0 3px rgba(31,122,63,.15)}body.st .btn.rl-ior-set:hover{background:#18632f;color:#fff}
/* v14.98 (user: "make grid font much smaller ideally to see all columns"): Distribution reconciliation Match jobs grid */
body.st table.dr-match th,body.st table.dr-match td{font-size:10px;padding:3px 4px;line-height:1.25;white-space:nowrap}
body.st table.dr-match th{letter-spacing:0;font-size:9px}
body.st table.dr-match .dr-s{font-size:9px;padding:0 3px;line-height:1.4}
body.st table.dr-match .badge{font-size:9px;padding:1px 5px}
body.st table.dr-match small{font-size:9px}
body.st table.dr-match.dr-mu th,body.st table.dr-match.dr-mu td{font-size:12px;padding:4px 8px}
body.st table.dr-match.dr-mu th{font-size:11px}
body.st table.dr-match .dr-mu-sub td{background:var(--soft);border-bottom:2px solid #c6d3d9}
body.st table.dr-match input[type=checkbox]{width:12px;height:12px}
/* v14.99 Match jobs: distribution (Ref 1) filter with its totals and Invoice */
body.st .dr-mdist{display:flex;flex-wrap:wrap;gap:10px 16px;align-items:center;padding:10px 14px;border-bottom:1px solid var(--line,#D7E1E6)}
body.st .dr-mdist label{display:flex;gap:8px;align-items:center;font-size:12px;font-weight:600;color:#003C55}
body.st .dr-mdist select{min-width:260px}
body.st .dr-msum{display:flex;flex-wrap:wrap;gap:8px 14px;align-items:center;flex:1 1 600px}
body.st .dr-msum-act{display:flex;gap:8px;align-items:center}
/* v15.00 Match jobs distribution tiles in one row; Pre-invoice table compact */
body.st .dr-msum .ir-tiles{display:flex;flex-wrap:wrap;gap:6px;flex:1;margin:0;padding:0}
body.st .dr-msum .ir-tiles>div{flex:1 1 120px;min-width:110px;padding:6px 10px}
body.st .dr-msum .ir-tiles b{font-size:15px}
body.st table.dr-pre th,body.st table.dr-pre td{font-size:11.5px;padding:4px 6px;white-space:nowrap}
/* v15.01 Match jobs editable revenue */
body.st table.dr-match input.dr-rev{width:68px;height:20px;font-size:10px;padding:1px 4px;text-align:right;border:1px solid var(--line,#D7E1E6);border-radius:4px;background:#fff}
body.st table.dr-match input.dr-rev.typed{background:#FFF6D6;border-color:#EDCC47;font-weight:600}
body.st .dr-typed{background:#FFF6D6;padding:0 3px;border-radius:3px}
/* v15.03 Match jobs: one short line per job so a whole distribution fits on screen */
body.st table.dr-match td{height:20px}
body.st table.dr-match input.dr-rev{height:18px!important;min-height:0!important;width:62px!important;padding:0 3px!important;font-size:10px!important;line-height:16px!important;box-shadow:none!important;-moz-appearance:textfield;appearance:textfield}
body.st table.dr-match input.dr-rev::-webkit-outer-spin-button,body.st table.dr-match input.dr-rev::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}
body.st table.dr-match .badge{white-space:nowrap}
body.st .dr-mdist{padding:6px 14px}
body.st .dr-msum .ir-tiles>div{padding:4px 8px;gap:2px}
body.st .dr-msum .ir-tiles b{font-size:13px}
body.st .dr-msum .ir-tiles span{font-size:9px}
/* v15.05 Match jobs as Batch Invoicing (AIMS layout): filter bar, highlighted rows, yellow revenue, right-click menu */
body.st .dr-bf{display:flex;flex-wrap:wrap;gap:8px 14px;align-items:flex-end;padding:10px 14px;border-bottom:1px solid var(--line,#D7E1E6);background:var(--soft,#EDF4F7)}
body.st .dr-bf label{display:flex;flex-direction:column;gap:3px;font-size:10.5px;font-weight:600;color:var(--muted,#526575);text-transform:uppercase;letter-spacing:.02em}
body.st .dr-bf input,body.st .dr-bf select{height:30px;min-height:0;font-size:12px;width:150px}
body.st .dr-bf input[type=date]{width:140px}body.st .dr-bf .dr-find{width:240px;margin:0}
body.st table.dr-match td:nth-child(3){max-width:110px;overflow:hidden;text-overflow:ellipsis}
body.st table.dr-match td:nth-child(4){max-width:95px;overflow:hidden;text-overflow:ellipsis}
body.st table.dr-match td:nth-child(6){max-width:120px;overflow:hidden;text-overflow:ellipsis}
body.st table.dr-match td:nth-child(12),body.st table.dr-match td:nth-child(21){max-width:85px;overflow:hidden;text-overflow:ellipsis}
body.st table.dr-match td:nth-child(22){max-width:95px;overflow:hidden;text-overflow:ellipsis}
body.st table.dr-match td:nth-child(19),body.st table.dr-match th:nth-child(19){background:#FBF3CF}
body.st table.dr-match tbody tr{cursor:default;user-select:none}
body.st table.dr-match tbody tr.dr-on td{background:#CFE3F0!important}
body.st table.dr-match tbody tr.dr-on td:first-child{box-shadow:inset 3px 0 0 var(--navy,#003C55)}
body.st table.dr-match tbody tr.dr-done td{color:var(--muted,#526575)}
body.st .dr-tot{margin:8px 14px}
body.st .dr-tot>div{padding:6px 10px}body.st .dr-tot b{font-size:14px}
body.st .dr-ctx{position:fixed;z-index:500;background:#fff;border:1px solid #D7E1E6;border-radius:8px;box-shadow:0 8px 24px rgba(0,40,60,.18);padding:4px;min-width:250px;font-size:12.5px}
body.st .dr-ctx button{display:block;width:100%;text-align:left;background:none;border:0;padding:6px 12px;border-radius:5px;color:#003C55;cursor:pointer;font:inherit}
body.st .dr-ctx button:hover{background:#EDF4F7}body.st .dr-ctx hr{border:0;border-top:1px solid #E3EAEE;margin:3px 6px}
/* v15.06 Distribution reconciliation: project chips and step bar compact, all six steps on one row */
body.st .dr-projects{gap:6px;margin:0 0 6px}
body.st .dr-projects .sq2-chip,body.st .dr-projects .btn{height:26px;min-height:0;padding:0 10px;font-size:12px}
body.st .dr-proj-label{font-size:10.5px}
body.st .drs-steps{grid-template-columns:repeat(3,minmax(0,1fr));gap:6px;margin:0 0 8px}
body.st .drs-step{gap:7px;padding:4px 8px;border-radius:8px}
body.st .drs-step.on{box-shadow:0 0 0 1px var(--navy,#003C55) inset}
body.st .drs-num{flex:0 0 20px;height:20px;font-size:11px}
body.st .drs-txt{flex-direction:row;align-items:baseline;gap:6px}
body.st .drs-txt b{font-size:12.5px;white-space:nowrap}
body.st .drs-txt small{font-size:10.5px}
@media (max-width:1100px){body.st .drs-steps{grid-template-columns:repeat(3,minmax(0,1fr))}}
body.st table.dr-match th.dr-sortable{cursor:pointer;user-select:none}body.st table.dr-match th.dr-sortable:hover{color:#003C55}
/* v15.26: selected rows in the invoice lists (Batch Invoicing › Manual invoices, Job Reconciliation › Invoices being built) */
body.st table.mi-table tbody tr.dr-on td,body.st table.dr-unsent tbody tr.dr-on td{background:#CFE3F0!important}
body.st table.mi-table tbody tr.dr-on td:first-child,body.st table.dr-unsent tbody tr.dr-on td:first-child{box-shadow:inset 3px 0 0 var(--navy,#003C55)}

/* v15.35 Quote vs Actual */
body.st .wu-bar{display:flex;gap:8px;align-items:center;flex-wrap:wrap;margin-bottom:10px}
body.st .wu-bar input[data-wu-find]{width:240px}
body.st table.wu-table td,body.st table.wu-table th{white-space:nowrap}
body.st table.wu-table td{user-select:text;cursor:text}
body.st .wu-lost{margin:8px 0;padding:9px 12px;border-radius:8px;background:var(--st-bad-bg);color:var(--st-bad);border:1px solid var(--st-bad);font-size:13px}body.st .wu-lost b{color:var(--st-bad)}body.st .wu-lostcell{color:var(--st-bad);background:var(--st-bad-bg);padding:1px 5px;border-radius:5px;font-size:11.5px}
body.st table.wu-table input.wu-pct{width:62px;text-align:right}
body.st table.wu-table tr.wu-jobs>td{background:var(--soft)}
body.st table.wu-table td.amber{color:#9a6a00;font-weight:600}
body.st .wu-drop{border:2px dashed var(--line,#C6D3D9);border-radius:10px;padding:14px 16px;margin:0 0 12px;background:var(--bg);color:var(--muted);cursor:pointer;text-align:center}
body.st .wu-drop b{color:#003C55}
body.st .wu-drop:hover,body.st .wu-drop.over{border-color:#003C55;background:var(--soft)}
body.st table.wu-table tr.wu-sub td{border-top:2px solid var(--line,#C6D3D9)}
body.st table.wu-table tr[data-wu-job] td:nth-child(1){padding-left:14px}
/* v15.41 Quote vs Actual: cost breakdown under a job */
body.st table.wu-table .wu-exp{border:1px solid var(--line,#D7E1E6);background:var(--soft,#EDF4F7);color:#003C55;cursor:pointer;padding:0;margin-right:6px;font-size:15px;line-height:20px;width:24px;height:22px;border-radius:5px;vertical-align:middle}
body.st table.wu-table .wu-exp:hover{background:var(--navy,#003C55);color:#fff}
body.st table.wu-table tr.wu-viewing td{background:var(--st-warn-bg) !important;box-shadow:inset 0 2px 0 var(--st-yellow),inset 0 -2px 0 var(--st-yellow)}
body.st table.wu-table .wu-pdf-mini{margin-left:6px;padding:1px 6px;font-size:10.5px;line-height:16px;border:1px solid var(--line,#D7E1E6);border-radius:5px;background:var(--soft,#EDF4F7);color:#003C55;cursor:pointer;vertical-align:middle}
body.st table.wu-table .wu-pdf-mini:hover{background:var(--navy,#003C55);color:#fff}
body.st .wu-bd-h .wu-pdf{min-height:24px;padding:2px 10px;font-size:12px;margin-left:8px}
body.st table.wu-table td.wu-inv,body.st table.wu-table th.wu-inv{background:var(--st-ok-bg);color:var(--st-ok);font-weight:600}
body.st table.wu-table td.wu-q,body.st table.wu-table th.wu-q,body.st table.wu-table td.wu-a,body.st table.wu-table th.wu-a{background:var(--st-ok-bg);color:var(--st-ok);font-weight:600}
body.st table.wu-table tr.wu-tot td{background:var(--soft,#EDF4F7);border-top:2px solid var(--navy,#003C55);position:sticky;bottom:0}
body.st .wu-notes{width:100%;min-height:44px;margin:0 0 8px;font:inherit;font-size:13px;padding:6px 8px;border:1px solid var(--line,#D7E1E6);border-radius:7px;resize:vertical}
body.st .wu-grid-line{margin:0 0 8px;font-size:13px}
body.st table.wu-table th.wu-sortable{cursor:pointer;user-select:none}
body.st table.wu-table th.wu-sortable:hover{color:#003C55}
body.st table.wu-table .wu-edit{border:0;background:none;color:var(--muted,#526575);cursor:pointer;padding:0 4px;margin-left:4px;font-size:13px;opacity:.35;vertical-align:middle}
body.st table.wu-table tr:hover .wu-edit,body.st table.wu-table .wu-edit:focus{opacity:1}
body.st table.wu-table .wu-edit:hover{color:#003C55}
body.st table.wu-table tr.wu-bd td{background:var(--soft,#EDF4F7);padding:6px 10px;white-space:normal}
body.st .wu-bd-l{margin:2px 0 6px}
body.st .wu-bd-h{font-size:12px;margin-bottom:4px}
body.st .wu-bd-row{display:flex;flex-wrap:wrap;gap:6px}
body.st .wu-bd-i{background:#fff;border:1px solid var(--line,#D7E1E6);border-radius:6px;padding:4px 8px;font-size:12px;display:flex;gap:6px;align-items:baseline}
body.st .wu-bd-i span{color:var(--muted,#526575)}
body.st .wu-bd-i.tot{border-color:#003C55}
/* v15.69 Dashboard Dismiss buttons */
body.st td.dash-dismiss-td{width:1%;white-space:nowrap;text-align:right}body.st .dash-dismiss{padding:2px 9px;min-height:24px;font-size:11.5px}
/* Quote vs Actual: jobs not allocated to a Ref 1, and the all-grids totals in Saved grids (v15.75) */
body.st .wu-un-tag{display:inline-block;padding:1px 7px;border-radius:999px;background:var(--st-warn-bg);color:var(--st-warn);border:1px solid currentColor;font-size:11px;font-weight:700;white-space:nowrap}
body.st table.wu-table tr.wu-tot-un td{background:var(--card,#fff);border-top:1px dashed var(--line,#C6D3D9);bottom:auto;position:static}
body.st .wu-gt{margin-top:14px;padding:12px 14px;border:1px solid var(--line,#C6D3D9);border-radius:10px;background:var(--soft,#EDF4F7)}
body.st .wu-gt-h{font-weight:700;color:#003C55;margin-bottom:8px}
body.st .wu-gt-row{display:flex;gap:24px;flex-wrap:wrap}body.st .wu-gt-row>div{display:flex;flex-direction:column}body.st .wu-gt-row span{font-size:11px;text-transform:uppercase;color:var(--muted,#526575)}body.st .wu-gt-row b{font-size:18px;color:#003C55}body.st .wu-gt-row .amber b{color:var(--st-warn)}
body.st .wu-un-box{margin-top:12px;padding:10px 12px;border-radius:8px;background:var(--st-warn-bg);border:1px solid var(--st-warn);font-size:13px}body.st .wu-un-box table{margin-top:8px;background:var(--card,#fff)}
/* Quote vs Actual fits the screen without sideways scrolling (v15.78, user: "page now needs scrolling left to right, cant have that"):
   smaller text, tight cells, the Ref 1 group / totals labels wrap instead of stretching the first columns. */
body.st table.wu-table{width:100%}
body.st table.wu-table th,body.st table.wu-table td{font-size:11px;padding:3px 4px;line-height:1.3}
body.st table.wu-table th{font-size:10px;letter-spacing:0}
body.st table.wu-table tr.wu-sub td[colspan],body.st table.wu-table tr.wu-tot td[colspan]{white-space:normal}
body.st table.wu-table tr.wu-sub td[colspan] .sub{font-size:10px}
body.st table.wu-table .badge,body.st table.wu-table .wu-un-tag{font-size:9.5px;padding:0 5px}
body.st table.wu-table input.wu-pct{width:44px;height:22px;min-height:22px;padding:1px 4px;font-size:11px}
body.st table.wu-table .wu-exp{width:18px;height:18px;line-height:16px;font-size:11px;margin-right:3px}
body.st table.wu-table .wu-pdf-mini{margin-left:3px;padding:0 4px;font-size:9.5px;line-height:14px}
body.st table.wu-table .wu-edit{padding:0 2px;margin-left:2px;font-size:11px}
body.st table.wu-table tr[data-wu-job] td:nth-child(1){padding-left:6px}
body.st table.wu-table td.wu-to{max-width:150px;overflow:hidden;text-overflow:ellipsis}
body.st table.wu-table td.wu-ref{max-width:150px;overflow:hidden;text-overflow:ellipsis}
body.st .wu-bar .btn{min-height:28px;padding:3px 9px;font-size:12px}
body.st table.wu-table td input.wu-pct{width:40px;height:20px;min-height:20px;padding:0 3px;font-size:11px;border-radius:4px}
@media (max-width:1500px){body.st table.wu-table th,body.st table.wu-table td{font-size:10.5px;padding:2px 3px}body.st table.wu-table th{font-size:9.5px}body.st table.wu-table td.wu-to{max-width:110px}body.st table.wu-table td.wu-ref{max-width:105px}}
/* v15.79 (user: "column widths not logically spaced"): fixed column widths (colgroup in renderWu) so every column gets the room
   its contents need; headings may wrap, cells that are too long end in … (full text on hover). */
body.st table.wu-table{table-layout:fixed}
body.st table.wu-table th{white-space:normal;vertical-align:bottom}
body.st table.wu-table td{overflow:hidden;text-overflow:ellipsis}
body.st table.wu-table td.wu-to,body.st table.wu-table td.wu-ref{max-width:none}
body.st table.wu-table th.num,body.st table.wu-table td.num{text-align:right}
body.st table.wu-table td input.wu-pct{width:46px !important;min-width:0 !important;padding:0 4px !important;font-size:11px !important;text-align:right}
body.st table.wu-table col.wu-c-ref{width:180px}
@media (max-width:1500px){body.st table.wu-table col.wu-c-ref{width:auto}}
/* v15.80 (user: "evenly spaced ?"): every column's width is a share of the table (colgroup %), so spare room is spread evenly
   instead of all going to To; "no quote" / "no invoice" notes in the grid at the grid's own size. */
body.st table.wu-table col.wu-c-ref{width:auto}
body.st table.wu-table td .sub{font-size:10px}
/* v15.81 (user: Saved grids "make pop up wider if needed no scrolling"): wide enough for every column, one line per grid. */
body.st .modal.wu-grids-modal{width:min(97vw,1560px) !important;max-width:97vw !important}
body.st .wu-grids-modal table.wu-grids{width:100%}
body.st .wu-grids-modal table.wu-grids th,body.st .wu-grids-modal table.wu-grids td{font-size:12px;padding:5px 6px;white-space:nowrap}
body.st .wu-grids-modal table.wu-grids td:nth-child(2){max-width:220px;overflow:hidden;text-overflow:ellipsis}
body.st .wu-grids-modal .table-wrap{overflow-x:visible}
body.st .wu-grids-modal .wu-gdel{min-height:24px;padding:2px 10px;font-size:11.5px}
body.st .wu-grids-modal .modal-body{max-height:84vh}
body.st .wu-grids-modal table.wu-grids th,body.st .wu-grids-modal table.wu-grids td{font-size:11.5px;padding:4px 5px}
body.st .wu-grids-modal table.wu-grids td:nth-child(1){max-width:190px;overflow:hidden;text-overflow:ellipsis}
body.st .wu-grids-modal table.wu-grids td:nth-child(2){max-width:170px}
body.st .wu-grids-modal table.wu-grids .badge{font-size:10.5px;padding:1px 6px}
body.st .wu-grids-modal table.wu-grids td:nth-child(5),body.st .wu-grids-modal table.wu-grids td:nth-child(6),body.st .wu-grids-modal table.wu-grids td:nth-child(7),body.st .wu-grids-modal table.wu-grids td:nth-child(3){text-align:right}
@media (max-width:1500px){body.st .modal.wu-grids-modal{width:99vw !important;max-width:99vw !important}body.st .wu-grids-modal table.wu-grids td:nth-child(1){max-width:150px}body.st .wu-grids-modal table.wu-grids td:nth-child(2){max-width:130px}body.st .wu-grids-modal table.wu-grids th,body.st .wu-grids-modal table.wu-grids td{font-size:11px;padding:4px}}
/* v15.82: Quote vs Actual: supplier invoices Flow holds no PDF for (DHL CSV reports) */
body.st .wu-pdf-none{margin-left:3px;padding:0 4px;font-size:9.5px;line-height:14px;border:1px dashed var(--line,#D7E1E6);border-radius:5px;color:var(--muted,#526575);background:var(--bg,#F5F8FA);cursor:help;vertical-align:middle;white-space:nowrap}
/* v15.83: CSV invoices shown as an invoice page */
body.st table.wu-table .wu-pdf-mini.wu-pdf-csv{border-style:dashed}
body.st .civ h3{font-size:13px;color:#003C55;margin:14px 0 6px}
body.st .civ-head{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:8px;padding:10px 12px;background:var(--soft,#EDF4F7);border-radius:8px;font-size:13px}
body.st .civ-head span,body.st .civ-grid span{display:block;font-size:10.5px;text-transform:uppercase;color:var(--muted,#526575);letter-spacing:.03em}
body.st .civ-note{margin:8px 0;padding:7px 10px;background:var(--bg,#F5F8FA);color:var(--muted,#526575);border-radius:6px;font-size:12px}
body.st .civ-card{border:1px solid var(--line,#D7E1E6);border-left:3px solid var(--navy,#003C55);border-radius:8px;padding:10px 12px;margin-bottom:8px;font-size:12.5px}
body.st .civ-card-h{margin-bottom:6px}
body.st .civ-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;margin-bottom:8px}
body.st .civ-sum{border-collapse:collapse;min-width:280px}
body.st .civ-sum td{padding:2px 10px 2px 0}body.st .civ-sum td+td{text-align:right}
body.st .civ-sum .civ-b td{font-weight:700;border-top:1px solid var(--line,#D7E1E6)}
body.st .civ-wrap{max-height:42vh;overflow:auto;border:1px solid var(--line,#D7E1E6);border-radius:8px}
body.st table.civ-all{width:100%;border-collapse:collapse;font-size:11.5px}
body.st table.civ-all th{position:sticky;top:0;background:var(--bg,#F5F8FA);text-align:left;padding:4px 6px;font-size:10.5px;color:var(--muted,#526575)}
body.st table.civ-all td{padding:3px 6px;border-top:1px solid var(--line,#D7E1E6);white-space:nowrap}
body.st table.civ-all .num{text-align:right}
body.st table.civ-all tr.civ-hit td{background:var(--st-warn-bg);font-weight:600}
/* v15.84: Quote vs Actual Bulk: the saved grid a job is in */
body.st table.wu-table .wu-gtag{display:inline-block;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;vertical-align:middle;margin-right:2px}
/* v15.85: Quote vs Actual: live count of jobs without a quote */
body.st .wu-grid-line .wu-nqbtn{height:26px;padding:0 10px;font-size:12px;margin-right:8px;background:var(--st-warn-bg);border-color:var(--st-yellow)}
/* v15.86 Quote vs Actual: jobs matching more than one quote */
body.st .wu-grid-line .wu-mqbtn{height:26px;padding:0 10px;font-size:12px;margin-right:8px}
body.st .wu-mqtag{display:inline-block;margin-left:4px;padding:0 5px;border-radius:8px;background:var(--st-bad-bg);color:var(--st-bad);font-size:10px;white-space:nowrap}
/* v15.87 Job Reconciliation: recon@ address under the heading */
body.st .dr-recon-strip{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin:0 0 10px;padding:8px 12px;border:1px solid var(--st-border);border-radius:8px;background:var(--st-soft);font-size:13px}
body.st .dr-recon-strip b{color:var(--st-blue);user-select:all}
body.st .dr-recon-strip .btn{height:26px;padding:0 10px;font-size:12px}

/* v15.88 Accounts › Cost Differences */
body.st .cd-find{min-width:240px}
body.st .cd-table td.cd-over{color:var(--st-bad)}
body.st .cd-table td.cd-under{color:var(--st-ok)}
body.st .cd-auto{display:inline-flex;gap:6px;align-items:center;font-size:13px;margin-right:6px}body.st .cd-table td.cd-why{max-width:340px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
body.st .cd-mail{border:1px solid var(--st-border);border-radius:8px;padding:8px 10px;margin-bottom:8px}
body.st .cd-mail pre{white-space:pre-wrap;font:inherit;font-size:12.5px;margin:8px 0 0}
/* v16.64 Operations > Tracking: filter bar across the top, grid full width */
body.st .trk-filterbar{display:flex;flex-wrap:wrap;gap:8px 18px;align-items:center;background:#fff;border:1px solid var(--line,#D7E1E6);border-radius:10px;padding:8px 12px;margin-bottom:10px}
body.st .trk-grp{display:flex;gap:10px;align-items:center;padding-right:18px;border-right:1px solid var(--line,#D7E1E6)}
body.st .trk-grp:last-child{border-right:0;padding-right:0}
body.st .trk-gl{font-weight:700;color:#003C55;font-size:12px;text-transform:uppercase}
body.st .trk-radio{display:flex;gap:5px;align-items:center;font-weight:500;cursor:pointer;font-size:13px;white-space:nowrap}
body.st .trk-filterbar select,body.st .trk-filterbar input[type=date]{height:32px}
body.st .trk-multi-dd{position:relative}
body.st .trk-multi-dd summary{cursor:pointer;list-style:none;border:1px solid var(--line,#D7E1E6);border-radius:7px;padding:6px 26px 6px 10px;font-size:13px;background:#fff;min-width:150px}
body.st .trk-multi-dd[open] .trk-multi{position:absolute;z-index:50;top:36px;left:0;background:#fff;box-shadow:0 6px 18px rgba(0,0,0,.12);min-width:260px}
body.st .trk-multi{max-height:300px;overflow:auto;border:1px solid var(--line,#D7E1E6);border-radius:6px;padding:6px;display:flex;flex-direction:column;gap:3px;font-size:12px}
body.st .trk-multi label{display:flex;gap:6px;align-items:center}
body.st .trk-main{min-width:0;background:#fff;border:1px solid var(--line,#D7E1E6);border-radius:10px;padding:10px}
body.st .trk-tools{display:flex;gap:8px;align-items:center;flex-wrap:wrap;margin-bottom:8px}
body.st .trk-tools b{color:#003C55;margin-right:auto}
body.st .trk-tools input{width:280px;height:34px}
body.st .trk-scroll{overflow:auto;max-height:calc(100vh - 290px)}
body.st table.trk-table{font-size:12px}
body.st table.trk-table td{white-space:nowrap;max-width:260px;overflow:hidden;text-overflow:ellipsis}
body.st table.trk-table tr.trk-stale td{background:#FFF8E1}
/* v16.65 Tracking grid: clear columns, carrier status pills */
body.st table.trk-table{table-layout:fixed;width:100%;min-width:1650px;border-collapse:separate;border-spacing:0}
body.st table.trk-table th{background:#EDF4F7;color:#003C55;font-size:11px;text-transform:uppercase;letter-spacing:.02em;padding:7px 8px;border-bottom:2px solid #C6D3D9;border-right:1px solid #D7E1E6;position:sticky;top:0;z-index:2;text-align:left}
body.st table.trk-table td{padding:6px 8px;border-bottom:1px solid #E3EBEF;border-right:1px solid #EEF2F5;vertical-align:middle}
body.st table.trk-table tbody tr:nth-child(even) td{background:#FAFCFD}
body.st table.trk-table tbody tr:hover td{background:#EDF4F7}
body.st table.trk-table tr.trk-stale td{background:#FFF8E1}
body.st .trk-st{display:inline-block;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;padding:2px 8px;border-radius:10px;font-size:11.5px;font-weight:600;background:#EEF2F5;color:#334B59;vertical-align:middle}
body.st .trk-st.move{background:#E3EEF9;color:#1F5A96}
body.st .trk-st.ofd{background:#FFF3C4;color:#7A5A00}
body.st .trk-st.ok{background:#E3F4E8;color:#1D6B3A}
body.st .trk-st.bad{background:#FCE4E4;color:#A12626}
/* v16.66 Operations › Driver messages */
body.st .dm-wrap{display:grid;grid-template-columns:280px 1fr;gap:14px;align-items:start}
body.st .dm-list{display:grid;gap:0;padding:6px;max-height:calc(100vh - 220px);overflow:auto}
body.st .dm-row{display:grid;gap:2px;text-align:left;border:0;background:none;padding:9px 10px;border-radius:8px;cursor:pointer;font:inherit;color:#003C55}
body.st .dm-row small{color:#526575;font-size:12px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
body.st .dm-row:hover{background:#F5F8FA}body.st .dm-row.on{background:#EDF4F7;box-shadow:inset 3px 0 0 #003C55}body.st .dm-row.new b{color:#b64242}
body.st .dm-chat{display:grid;grid-template-rows:auto 1fr auto;min-height:420px}
body.st .dm-thread{display:grid;gap:8px;align-content:start;padding:12px 14px;max-height:calc(100vh - 340px);overflow:auto}
body.st .dm-b{max-width:70%;padding:8px 11px;border-radius:12px;border:1px solid #d7e1e6;background:#fff;font-size:13.5px}
body.st .dm-b.out{justify-self:end;background:#EDF4F7;border-color:#c6d3d9}body.st .dm-b.in{justify-self:start}
body.st .dm-meta{font-size:11.5px;color:#526575;margin-bottom:3px}body.st .dm-b img{max-width:260px;border-radius:8px;margin-top:6px;display:block}
body.st .dm-compose{display:flex;gap:8px;padding:10px 14px;border-top:1px solid #e3eaee}body.st .dm-compose textarea{flex:1;resize:vertical}
@media(max-width:800px){body.st .dm-wrap{grid-template-columns:1fr}}
/* v16.67 Quoting › Smart upload */
body.st .su-top{display:grid;grid-template-columns:minmax(220px,300px) 1fr minmax(240px,340px);gap:14px;align-items:stretch}
body.st .su-drop{display:flex;flex-direction:column;justify-content:center;align-items:center;gap:4px;border:2px dashed #c6d3d9;border-radius:10px;background:#F5F8FA;padding:16px;cursor:pointer;text-align:center;color:#003C55}
body.st .su-drop.over{border-color:#003C55;background:#EDF4F7}body.st .su-drop small{color:#526575}
body.st .su-paste textarea{width:100%;resize:vertical}body.st .su-paste .btn{margin-top:6px}
body.st .su-help{margin:0;padding-left:20px;display:grid;gap:6px;color:#334B59;font-size:13px}
body.st .su-howto summary{cursor:pointer;padding:10px 14px;color:#003C55}
body.st .su-plan{display:grid;grid-template-columns:repeat(auto-fill,minmax(170px,1fr));gap:10px}
body.st .su-cols summary{cursor:pointer;margin:10px 0 6px;color:#003C55;font-weight:600}
body.st .su-colgrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(190px,1fr));gap:8px}
body.st .su-acts{display:flex;gap:8px;flex-wrap:wrap;align-items:center}
body.st .su-chips{display:flex;gap:6px;margin-bottom:8px;flex-wrap:wrap}
body.st .su-wrap{max-height:calc(100vh - 300px);overflow:auto}
body.st table.su-grid{font-size:12px}body.st table.su-grid th{position:sticky;top:0;background:#F5F8FA;z-index:1;white-space:nowrap}
body.st table.su-grid td{padding:3px 4px;white-space:nowrap;vertical-align:top}
body.st table.su-grid input{height:26px;font-size:12px;padding:2px 5px;border:1px solid #d7e1e6;border-radius:5px}
body.st table.su-grid tr.su-bad td{background:#fdf1f0}body.st table.su-grid tr.su-changed td{background:#fffaeb}
body.st .su-dot{display:inline-block;width:11px;height:11px;border-radius:50%;background:#2e9e6b;vertical-align:middle}
body.st .su-dot.changed{background:#e2b23a}body.st .su-dot.bad{background:#c84a3f}
body.st .su-notes{white-space:normal!important;min-width:220px;font-size:11.5px}body.st .su-err{color:#b64242;font-weight:600}body.st .su-warn{color:#8a6a10}body.st .su-chg{color:#526575;cursor:help;text-decoration:underline dotted}
@media(max-width:1000px){body.st .su-top{grid-template-columns:1fr}}
/* EU VAT check / find (v16.68, flow-vat-check.js) */
body.st .vat-check{display:flex;flex-wrap:wrap;gap:6px;align-items:flex-start;margin-top:4px}
body.st .vat-check .btn.small{height:24px;padding:0 9px;font-size:11.5px}
body.st .vat-out{flex-basis:100%;font-size:12px;line-height:1.4;color:var(--muted)}
body.st .vat-out:empty{display:none}
body.st .vat-out.ok,body.st .vat-cand.ok b{color:#1d7a3e}
body.st .vat-out.bad,body.st .vat-cand.bad b{color:#b42318}
body.st .vat-out.warn{color:#8a5a00}
body.st .vat-out span{color:var(--muted)}
body.st .vat-cand{display:flex;justify-content:space-between;gap:8px;align-items:center;border:1px solid #D7E1E6;border-radius:8px;padding:6px 8px;margin:4px 0;background:#fff}

/* v16.76: alert buttons at the right of the white menu bar */
body.st .layout>.sidebar>.st-alerts{display:flex;align-items:center;gap:6px;margin-left:auto;flex-wrap:wrap;justify-content:flex-end}
body.st .layout>.sidebar>.st-alerts:empty{display:none}
body.st .layout>.sidebar>.st-alerts .flow-alert-btn{margin:0;height:30px;padding:0 12px;font-size:12.5px;white-space:nowrap}
/* v16.78 tracking customer / agent picker */
body.st .trk-multi .trk-dd-find{height:30px;border:1px solid var(--line,#D7E1E6);border-radius:6px;padding:0 8px;font-size:12.5px;margin-bottom:4px;position:sticky;top:0}
body.st .trk-multi-dd[open] .trk-multi{min-width:300px;max-height:380px}
body.st .trk-multi-dd summary{max-width:260px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
/* v16.92 invoice popup: layout for this invoice only */
body.st .inv-layout-row{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin:0 0 12px}
body.st .inv-layout-row label{display:flex;align-items:center;gap:8px;font-size:13px;font-weight:600;color:#003C55}
body.st .inv-layout-row select{min-width:230px}
/* v16.93 invoice preview inside the invoice popup */
body.st .inv-preview,body.st .mi-edit .inv-preview{margin-top:16px;border-top:1px solid var(--line,#D7E1E6);padding-top:12px}
body.st .inv-preview iframe{display:block;width:100%;max-width:820px;margin:0 auto;min-height:500px;border:1px solid var(--line,#D7E1E6);border-radius:8px;background:#fff;box-shadow:0 2px 8px rgba(0,0,0,.06)}
/* v17.12 Supplier Invoice Queries / Supplier Claims: carrier counts above the filter chips */
body.st .iq-chips.iq-carriers{padding:10px 14px;border-bottom:1px solid var(--line,#D7E1E6);flex-wrap:wrap;gap:6px}

/* Team inbox (v17.21, flow-team-inbox.js) */
body.st .ti-bar{display:flex;gap:12px;align-items:center;flex-wrap:wrap;margin-bottom:8px}
body.st .ti-bar .table-search{flex:1;min-width:220px;max-width:420px}
body.st .ti-status{font-size:12px;color:var(--muted,#526575);margin-left:auto}
body.st .ti-status.bad{color:#C0392B;font-weight:600}
body.st .ti-cats{margin-bottom:8px}
body.st .ti-selbar{display:flex;gap:8px;align-items:center;margin:6px 0 8px}
body.st .ti-table td{white-space:nowrap}
body.st .ti-table td.ti-sum{white-space:normal;min-width:260px;max-width:520px}
body.st .ti-table tr.ti-urgent td:first-child{box-shadow:inset 3px 0 0 #C0392B}
body.st .ti-pill{display:inline-block;font-size:11.5px;font-weight:700;padding:2px 9px;border-radius:999px;white-space:nowrap;background:#EDF4F7;color:#003C55}
body.st .ti-pill.p-quote{background:#FDF4DE;color:#7A5A0B}
body.st .ti-pill.p-book{background:#E6F4EC;color:#1E6B40}
body.st .ti-pill.p-bad{background:#FBE9E7;color:#B03024}
body.st .ti-pill.p-inv{background:#EEE9FB;color:#4B3A8C}
body.st .ti-pill.p-junk,body.st .ti-pill.p-oth{background:#F1F4F6;color:#526575}
body.st .ti-setup{border-left:4px solid #EDCC47}
body.st .ti-read .ti-facts{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:12px;margin-bottom:12px}
body.st .ti-read .ti-facts .k{display:block;font-size:11px;text-transform:uppercase;letter-spacing:.06em;color:#526575;font-weight:700;margin-bottom:3px}
body.st .ti-summary{background:#EDF4F7;border-radius:8px;padding:9px 12px;margin-bottom:10px}
body.st .ti-atts{font-size:13px;margin-bottom:10px}
body.st .ti-body{white-space:pre-wrap;word-break:break-word;font:13.5px/1.55 Inter,ui-sans-serif,system-ui,sans-serif;background:#FBFDFE;border:1px solid #DCE6EC;border-radius:8px;padding:14px;max-height:55vh;overflow:auto;margin:0}

/* Carrier exceptions (v17.23, flow-carrier-exceptions.js) */
body.st .ce-table td{white-space:nowrap}
body.st .ce-table td.ce-txt,body.st .ce-table .ce-txt{white-space:normal;max-width:320px}
body.st .ce-table tr.ce-urgent td:first-child{box-shadow:inset 3px 0 0 #C0392B}
body.st .ce-late{color:#B03024;font-weight:700}
body.st .ce-soon{color:#8A5A0F;font-weight:700}
body.st .ce-pill{display:inline-block;font-size:11.5px;font-weight:700;padding:2px 9px;border-radius:999px;white-space:nowrap;background:#EDF4F7;color:#003C55}
body.st .ce-pill.ce-open{background:#FBE9E7;color:#B03024}
body.st .ce-pill.ce-waiting_customer,body.st .ce-pill.ce-chase{background:#FDF4DE;color:#7A5A0B}
body.st .ce-pill.ce-resolved{background:#E6F4EC;color:#1E6B40}
body.st .ce-pill.ce-returned,body.st .ce-pill.ce-closed{background:#F1F4F6;color:#526575}
body.st .ce-case .ce-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:12px}
body.st .ce-case .ce-box{background:#F8FBFC;border:1px solid #DCE6EC;border-radius:8px;padding:10px 12px}
body.st .ce-case .k{font-size:11px;text-transform:uppercase;letter-spacing:.06em;color:#526575;font-weight:700;margin-bottom:3px}
body.st .ce-case textarea,body.st .ce-case input{width:100%}
body.st .ce-note{background:#FDF4DE;border-radius:8px;padding:8px 12px;margin-top:10px}
body.st .ce-compose,body.st .ce-note-add{display:flex;flex-direction:column;gap:8px;margin-top:12px;background:#EDF4F7;border-radius:8px;padding:12px}
body.st .ce-compose[hidden],body.st .ce-note-add[hidden]{display:none}
body.st .ce-reply{display:flex;flex-direction:column;gap:8px;margin-top:12px;background:#EDF4F7;border-radius:8px;padding:12px;border-left:3px solid var(--navy,#003C55)}
body.st .ce-reply[hidden]{display:none}
body.st .ce-reply .ce-note{margin-top:0}
body.st .ce-ok{background:#E6F4EA;color:#1E6B34;border-radius:8px;padding:8px 12px}
body.st .ce-ev-carrier_reply{border-left-color:#003C55}
body.st .ce-actions{display:flex;gap:8px;justify-content:flex-end}
body.st .ce-events{display:flex;flex-direction:column;gap:8px;max-height:45vh;overflow:auto}
body.st .ce-ev{border:1px solid #DCE6EC;border-left:3px solid #7FB3C8;border-radius:6px;padding:8px 10px;background:#fff}
body.st .ce-ev-carrier_email{border-left-color:#C0392B}
body.st .ce-ev-customer_email{border-left-color:#003C55}
body.st .ce-ev-status{border-left-color:#1E8A4C}
body.st .ce-ev-h{font-size:12px;color:#526575;margin-bottom:4px}
body.st .ce-ev-t{white-space:pre-wrap;word-break:break-word;font-size:13px;max-height:220px;overflow:auto}
body.st .ce-full{margin-top:6px;font-size:12.5px}
body.st .ce-full summary{cursor:pointer;color:#003C55;font-weight:600}
body.st .modal.ce-modal{height:94vh;max-height:94vh;display:flex;flex-direction:column}
body.st .modal.ce-modal .modal-body{flex:1;overflow:auto}
body.st .modal.ce-modal .ce-events{max-height:none}
body.st .ce-rep{color:#526575;font-style:italic}
body.st .ti-live{background:#FDF4DE;color:#7A5A0B;border-radius:8px;padding:8px 12px;margin-bottom:10px;font-weight:600}
body.st .cc-mk{font-size:11.5px;font-weight:700;padding:2px 9px;border-radius:999px;white-space:nowrap;background:#F1F4F6;color:#526575}
body.st .cc-mk.cc-ok_opt_out,body.st .cc-mk.cc-subscribed{background:#E6F4EC;color:#1E6B40}
body.st .cc-mk.cc-ask_first{background:#FDF4DE;color:#7A5A0B}
body.st .cc-mk.cc-unsubscribed,body.st .cc-mk.cc-do_not_contact{background:#FBE9E7;color:#B03024}
body.st .cc-emails{display:flex;flex-direction:column;gap:6px;max-height:50vh;overflow:auto;margin-top:6px}
body.st .cc-email{border:1px solid #DCE6EC;border-radius:6px;padding:6px 10px;background:#fff}
body.st .cc-email summary{cursor:pointer;font-size:13px}
body.st .cc-email-sub{color:#526575;font-size:12.5px;margin:6px 0 4px}
/* v17.34 (user: "quote pop up should be in front of top nav"): the quote window covers the whole screen, in front of the
   top bar and the menu bar (popups opened from it, z-index 180, stay on top of it). */
body.st .staff-quote-popout-backdrop{top:0!important;inset:0!important;z-index:170!important}
body.st .er-table td.er-text{white-space:normal;max-width:720px}
/* v17.38 booking requests: Ask the customer + Book on What needs doing; Link a quote beside Quote number */
body.st .br-acts{display:flex;gap:6px;flex-wrap:nowrap}
body.st .lq-btn{margin-top:6px}
body.st .lq-table tbody tr{cursor:pointer}
body.st .lq-table tbody tr.selected{background:var(--soft)}

/* v17.47 Shipments tabs in two groups: new jobs (Waiting for details, Awaiting, Bulk bookings) then the queues they move to */
body.st .shipment-queue-tabs.ops-tab-groups{display:flex;flex-wrap:wrap;align-items:stretch;gap:10px}
body.st .ops-tab-group{display:flex;flex-direction:column;gap:5px;padding:8px 10px;border-radius:10px;border:1px solid var(--st-border);background:#fff}
body.st .ops-tab-group>small{font:700 10.5px Inter,sans-serif;letter-spacing:.06em;text-transform:uppercase;color:var(--st-muted)}
body.st .ops-tab-group>div{display:flex;flex-wrap:wrap;gap:6px}
body.st .ops-tab-intray{background:var(--soft,#EDF4F7);border-color:#C9DCE6}
body.st .ops-tab-arrow{align-self:center;font-size:20px;color:var(--st-muted)}
body.st .ops-tab-group>div>button{flex:0 0 auto;min-height:32px;height:32px;padding:0 13px;border-radius:999px;border:1px solid var(--st-border);background:#fff;color:var(--st-text);font:600 13px Inter,sans-serif;display:inline-flex;align-items:center;gap:7px;cursor:pointer}
body.st .ops-tab-group>div>button>span{background:transparent;color:var(--st-muted);font-size:11.5px;font-weight:700;padding:0;min-width:0}
body.st .ops-tab-group>div>button.active{background:var(--st-blue);border-color:var(--st-blue);color:#fff}
body.st .ops-tab-group>div>button.active>span{color:#C9DCE6}
@media (max-width:700px){body.st .ops-tab-arrow{display:none}}

/* v17.50 ready / close times under the date on Shipments lists */
body.st .shipment-operations-table small.ship-times{display:block;color:var(--st-text);font-weight:600;white-space:nowrap}
body.st .shipment-operations-table small.ship-times.missing{color:#B42318}

/* v17.52: skipped stores must be impossible to miss (Create shipments, Book & labels, Bulk pricing bookings labels panel) */
body.st .skip-alert{background:#FDECEC;border:3px solid #B42318;border-radius:10px;padding:14px 16px;margin:0 0 14px;color:#7A1A12}
body.st .skip-alert-h{font-size:18px;font-weight:800;letter-spacing:.02em;color:#B42318;margin-bottom:6px}
body.st .skip-alert-sub{font-size:13.5px;margin-bottom:10px;color:#7A1A12}
body.st .skip-alert-t{width:100%;border-collapse:collapse;background:#fff;font-size:13px}
body.st .skip-alert-t th{background:#B42318;color:#fff;text-align:left;padding:6px 8px;font-weight:700}
body.st .skip-alert-t td{padding:6px 8px;border-top:1px solid #F3C4C0}
/* v17.65 labels ready to print? popup (bookAimsLabels mode print) */
body.st .prc-head{font-size:20px;font-weight:800;padding:12px 16px;border-radius:10px;margin:0 0 10px}
body.st .prc-head.is-ok{background:#E8F5EC;color:#1E6B3A;border:2px solid #2E8B57}
body.st .prc-head.is-bad{background:#FDECEC;color:#9F2017;border:2px solid #B42318}
body.st .prc-list{list-style:none;padding:0;margin:0 0 12px;display:grid;gap:6px;font-size:14px}
body.st .prc-list .prc-ok{color:#1E6B3A}body.st .prc-list .prc-bad{color:#9F2017}body.st .prc-list .prc-warn{color:var(--muted)}
body.st .prc-t td{vertical-align:middle}body.st .prc-t .num{text-align:right}
body.st .prc-t .prc-tot td{border-top:2px solid var(--line,#C6D3D9);font-weight:800;background:var(--soft,#EDF4F7)}
/* v17.68 Book & labels: fix missing stores, goods for every shipment */
body.st .aqs-addstore,body.st .aqs-goods{margin:10px 0 14px;padding:12px 14px;border:2px solid #003C55;border-radius:10px;background:#EDF4F7;display:grid;gap:8px}
body.st .aqs-addrow{display:grid;grid-template-columns:60px repeat(auto-fit,minmax(130px,1fr));gap:8px;align-items:end}
body.st .aqs-addno{font-weight:800;font-size:16px;color:#003C55;align-self:center}
body.st .aqs-addrow label,body.st .aqs-goods-row label{display:grid;gap:3px;font-size:11px;text-transform:uppercase;letter-spacing:.04em;color:var(--muted)}
body.st .aqs-goods-row{display:grid;grid-template-columns:2fr 1fr 80px 120px auto;gap:8px;align-items:end}
@media (max-width:900px){body.st .aqs-goods-row{grid-template-columns:1fr 1fr}}

/* v17.85 Tracking good news first */
body.st .trk-news{display:flex;flex-wrap:wrap;align-items:center;gap:10px 22px;margin:0 0 10px;padding:12px 16px;background:#E3F4E8;border:1px solid #B9DFC5;border-radius:10px;color:#1D6B3A}
body.st .trk-news-big{font-size:15px}
body.st .trk-news-big b{font-size:24px;font-weight:800;margin-right:4px}
body.st .trk-news-big span{display:inline-block;margin-left:6px;padding:2px 8px;border-radius:999px;background:#1D6B3A;color:#fff;font-weight:700;font-size:13px}
body.st .trk-news-big small{display:block;font-size:12px;color:#2E7D4A}
body.st .trk-news-rest{display:flex;gap:8px;flex-wrap:wrap;margin-left:auto}
body.st .trk-news-rest span{padding:3px 10px;border-radius:999px;background:#fff;color:var(--muted);font-size:12.5px;border:1px solid #D7E1E6}
body.st .trk-news-rest span.att{color:#A12626;border-color:#F2C4C4}
/* v19.35: a hidden popup button stays hidden after flow-modal-actions moves it to the header (the Email labels popup showed
   unused Print / Book buttons, one reading "Getting labels 7 / 164…") */
body.st .modal [hidden].btn{display:none!important}
/* v20.77 Email search: shown with its words in the top bar (the other top-bar links are icons only) so staff can find it */
body.st .topbar .top-links .nav[data-nav="ask-flow"] .nav-label,body.st .topbar .top-links .nav[data-nav="email-search"] .nav-label{font-size:13px;gap:6px}
body.st .topbar .top-links .nav[data-nav="ask-flow"],body.st .topbar .top-links .nav[data-nav="email-search"]{background:rgba(255,255,255,.12)}
body.st .topbar .top-links .nav[data-nav="ask-flow"] .st-ico,body.st .topbar .top-links .nav[data-nav="email-search"] .st-ico{margin-right:6px!important}
/* v22.25 Quote vs Actual "Priced on": price list green, uplift amber, so a job sold the wrong way shows at a glance */
body.st .wu-table td.wu-pon{font-size:11.5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
body.st .wu-table td.wu-pon-list{color:#0f6b3a;font-weight:600}
body.st .wu-table td.wu-pon-uplift{color:#8a5a00}
body.st .wu-table td.wu-pon-quote,body.st .wu-table td.wu-pon-manual,body.st .wu-table td.wu-pon-aims{color:var(--muted,#526575)}
body.st a.trk-go{color:#003C55;text-decoration:none;cursor:pointer}body.st a.trk-go:hover{text-decoration:underline}

/* v23.66 (user: "put all filters etc on one bar to save space"): Shipments title, type chips, Today / All, Pallets only, Needs label and the action buttons on one bar */
body.st .shipment-operations-toolbar{flex-wrap:wrap;align-items:center;gap:8px 14px}
body.st .shipment-operations-toolbar>div:first-child{flex:none}
body.st .shipment-operations-toolbar>.shipment-date-filters{padding:0;border:0;background:none;margin:0;flex-wrap:wrap;gap:6px;align-items:center}
body.st .shipment-operations-toolbar>.shipment-date-filters .handling-filter{margin-left:0}
body.st .shipment-operations-toolbar>.shipment-date-filters+.shipment-date-filters{padding-left:14px;border-left:1px solid var(--st-divider,#dde5ea)}
body.st .shipment-operations-toolbar>div.actions{margin-left:auto}
body.st .shipment-date-filters button small{font-weight:600;opacity:.8;margin-left:3px}
/* v23.67 (user: Ready for Accounts "narrow columns so no scrolling needed widthways"): the Shipments list fits the window:
   no fixed minimum width, text columns (customer, route, carrier / service) wrap, badges and buttons stay on one line */
body.st .shipment-operations-table{min-width:0!important;width:100%}
body.st .shipment-operations-table th,body.st .shipment-operations-table td{padding-left:8px;padding-right:8px}
body.st .shipment-operations-table td{white-space:normal}
body.st .shipment-operations-table :is(th,td):is(:nth-child(2),:nth-child(3),:nth-child(4),:nth-child(5),:nth-child(6)){min-width:0}
body.st .shipment-operations-table td:nth-child(2),body.st .shipment-operations-table td:nth-child(3)>b{white-space:nowrap}
body.st .shipment-operations-table td:nth-child(n+7){white-space:nowrap;width:1%}
body.st .shipment-operations-table td :is(.btn,button,.badge){white-space:nowrap}
body.st .shipment-operations-table td:nth-child(6){min-width:150px}
body.st .shipment-operations-table .ship-acc-state{font-size:12px;font-weight:600;color:var(--st-muted,#526575);white-space:nowrap}

/* v23.79 booking log on staff Tracking */
body.st table.trk-table td.trk-coll{white-space:nowrap}body.st .trk-moved{display:inline-block;margin-left:4px;padding:0 7px;border-radius:9px;background:#ffe8c2;color:#7a4b00;font-size:11.5px;font-weight:700;cursor:help}

/* EORI & VAT finder (v24.27, flow-company-ids.js) */
body.st .ids-tiles{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;margin-bottom:12px}
body.st .ids-tiles>div{background:var(--soft);border-radius:10px;padding:10px 12px}
body.st .ids-tiles b{display:block;font-size:22px;color:#003C55}
body.st .ids-tiles span{font-size:12px;color:var(--muted)}
body.st .ids-bar{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin-bottom:10px}
body.st .ids-find{margin-left:auto;height:30px;min-width:220px}
body.st .ids-table td.ok{color:#1d7a3e}
body.st .ids-table td.bad{color:#b42318}
@media (max-width:700px){body.st .ids-tiles{grid-template-columns:repeat(2,minmax(0,1fr))}}
/* v24.51 the carrier's expected delivery under the status, and the today / tomorrow counts */
body.st .trk-news-rest span.soon{color:#1E6B3A;border-color:#BFE3CB;background:#F1FAF4;font-weight:600}
body.st .trk-eta{font-size:11.5px;color:#1E6B3A;margin-top:2px;white-space:nowrap}
body.st .trk-eta.late{color:#A15C00}

/* v25.38 Quote vs Actual: the selection line and Export button keep one width, so ticking a job never re-wraps the bar and moves the grid */
body.st .wu-bar .wu-seltxt{display:inline-block;width:330px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;vertical-align:middle}
body.st .wu-bar [data-wu-xls]{min-width:190px}
/* v25.39: duties & taxes group on Quote vs Actual (Bulk) */
body.st .wu-dt-tag{display:inline-block;padding:0 5px;border-radius:999px;background:var(--soft);color:var(--navy,#003C55);border:1px solid currentColor;font-size:9.5px;font-weight:700;white-space:nowrap}
/* v25.58 Quote vs Actual Flow rate column */
body.st .wu-table td.wu-fr{white-space:nowrap}
body.st .wu-table .wu-fr-ok{margin-left:4px;padding:1px 7px;font-size:11px;font-weight:700;border-radius:6px;border:1px solid #003C55;background:#EDCC47;color:#003C55;cursor:pointer}
body.st .wu-table .wu-fr-ok:disabled{opacity:.5;cursor:default}
body.st .wu-table .wu-fr-why{white-space:normal;font-size:10.5px;line-height:1.25;color:#b42318;text-align:left;margin-top:2px}
body.st .wu-table .wu-fr-how{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%;font-size:10px;line-height:1.25;color:var(--muted,#526575);text-align:left;margin-top:2px;cursor:help}
body.st .wu-table .wu-fr-no{cursor:help}
/* v25.79 Awaiting tab: Receiver, Items, Chargeable kg, Item sizes columns (columns 6-9) */
body.st .ship-aw-table td.ship-aw-rcv{white-space:normal;min-width:110px;width:auto;font-weight:600}
body.st .ship-aw-table td.ship-aw-num{text-align:right;width:1%;white-space:nowrap}
body.st .ship-aw-table td.ship-aw-sizes{width:1%;white-space:nowrap;font-size:12px;line-height:1.35}
body.st .ship-aw-table td.ship-aw-sizes span{display:block}
body.st .ship-aw-table td:nth-child(10){white-space:normal;width:auto;min-width:140px}
body.st .ship-aw-table td:nth-child(6){min-width:110px}
/* v25.82 Collected by chips on Shipments */
body.st .ship-coll-chips{display:inline-flex;flex-wrap:wrap;gap:4px;align-items:center;margin-left:6px;padding-left:10px;border-left:1px solid var(--st-border,#dfe6eb)}
body.st .ship-coll-chips>small{font:700 11px Inter,sans-serif;color:var(--muted,#526575);text-transform:uppercase;letter-spacing:.04em;margin-right:2px}
body.st .ship-coll-chips button small{opacity:.75;margin-left:2px}
/* v25.85 carrier exceptions automatic reply switch and tag */
body.st .ce-auto{margin-right:4px}
body.st .ce-autotag{display:inline-block;font-size:10.5px;font-weight:700;padding:1px 7px;border-radius:999px;background:#e8f5ee;color:#1d6b43;margin-left:4px}
/* v25.87 Flow rate cell: price and Accept may sit on two lines, the working on one short line (full text on hover) */
body.st .wu-table td.wu-fr{white-space:normal;overflow:hidden;text-overflow:clip}
/* v25.94 Carrier exceptions: ✨ Suggest the next move */
body.st .ce-table .ce-ai{white-space:nowrap}
body.st .ce-suggest{background:var(--soft,#EDF4F7);border-left:4px solid #003C55;border-radius:8px;padding:10px 14px;margin-bottom:12px}
body.st .ce-suggest .ce-sg-h{font-weight:600;color:#003C55;display:flex;gap:8px;align-items:center;flex-wrap:wrap}
body.st .ce-suggest .ce-sg-move{background:#003C55;color:#fff;border-radius:12px;padding:2px 10px;font-size:12px}
body.st .ce-suggest .ce-sg-head{font-size:15px;font-weight:600;margin-top:6px}
body.st .ce-suggest .ce-sg-why{margin-top:4px;color:var(--muted,#526575)}
body.st .ce-suggest .ce-sg-act{margin-top:8px;display:flex;gap:8px;align-items:center}
body.st .ce-suggest .ce-sg-act input{flex:1;min-width:200px}
/* v26.11 automatic replies to carriers: one switch per kind */
body.st .ce-autorow{display:block;padding:10px 0;border-bottom:1px solid #e3eaef;cursor:pointer}
body.st .ce-autorow:last-child{border-bottom:0}
body.st .ce-autorow .dim{margin:3px 0 0 24px;font-size:12px}
body.st .ce-autoleft{margin:8px 0;padding:8px 10px;border-radius:8px;background:var(--bg,#F5F8FA);color:var(--muted,#526575);font-size:12.5px}
