/* ============================================================
   start_theme.css  –  Cachet look for the RFP Pricing page
   (from cachet/v2023point09_alt1.html): mountain backdrop,
   frosted-glass header / panel / dialogs, DM Sans + Manrope type,
   light and dark themes.
   Scoped to body.theme-cachet so the shared mika / style.css
   files stay untouched for other pages.

   Theme: <html data-theme="light|dark">, set before first paint by
   the inline script in start.html and switched by static/theme.js.
     light  slate accent over mountains2.jpg
     dark   lime accent over mountains1.jpg
   Every colour the two themes differ on is a token below; the dark
   section at the end also re-tints the few light-only colours the
   shared CSS hard-codes (row tints, highlights, status text).
   ============================================================ */

body.theme-cachet {
  /* Cachet tokens */
  --note-mark: #b7791f;   /* corner mark on an assumed value (start.css .has-note) */
  --text: #1d2830;
  --muted: rgba(29, 40, 48, .62);
  --line: rgba(29, 40, 48, .13);
  --glass: rgba(249, 250, 250, .58);
  --glass-light: rgba(29, 40, 48, .06);
  --accent: #3f5a6e;
  --accent-hover: #34495a;
  --accent-rgb: 63, 90, 110;
  --on-accent: #f4f7f8;
  --shadow-rgb: 38, 52, 62;
  --button-bg: rgba(255, 255, 255, .45);
  --button-bg-hover: rgba(255, 255, 255, .7);
  --field-bg: rgba(255, 255, 255, .7);
  --field-border: rgba(29, 40, 48, .17);
  --scrollbar: rgba(29, 40, 48, .2);
  --head-font: "Manrope", "DM Sans", sans-serif;

  --header-bg: rgba(249, 250, 250, .42);
  --panel-edge: rgba(255, 255, 255, .7);
  --table-wash: rgba(255, 255, 255, .45);
  --pill-bg: rgba(255, 255, 255, .55);
  --disabled-bg: rgba(29, 40, 48, .08);
  --disabled-text: rgba(29, 40, 48, .4);
  --backdrop: rgba(29, 40, 48, .32);
  --modal-bg: rgba(250, 251, 251, .9);
  --modal-edge: rgba(255, 255, 255, .7);
  --footer-text: rgba(29, 40, 48, .5);
  --logo-filter: brightness(0);
  --logo-opacity: .82;
  --avatar-border: rgba(var(--accent-rgb), .35);
  --avatar-bg: rgba(255, 255, 255, .6);
  --avatar-color: var(--accent);

  --bg-color: #e6e9e9;
  --bg-image:
    linear-gradient(105deg, rgba(244, 246, 246, .74) 0%, rgba(238, 241, 242, .38) 48%, rgba(232, 236, 238, .08) 100%),
    linear-gradient(0deg, rgba(236, 239, 240, .5), transparent 45%),
    url("mountains2.jpg");
  --bg-position: center 62%;

  /* Mika tokens remapped onto the Cachet palette */
  --font-family: "DM Sans", system-ui, sans-serif;
  --color-primary: var(--text);
  --color-secondary: var(--muted);
  --color-dark: var(--accent);
  --color-border: var(--line);
  --bg-card: #fbfcfc;
  --bg-page: rgba(255, 255, 255, .5);
  --bg-table-header: #eef1f2;
  --border-radius-sm: .5rem;
  --border-radius-md: .875rem;
  --border-radius-lg: 1.25rem;

  color: var(--text);
  background-color: var(--bg-color);
  background-image: var(--bg-image);
  background-position: var(--bg-position);
  background-size: cover;
  background-attachment: fixed;
  background-repeat: no-repeat;
}

:root[data-theme="dark"] { color-scheme: dark; }
:root[data-theme="dark"] body.theme-cachet {
  --text: #f7fbfa;
  --note-mark: #f2c94c;
  --muted: rgba(236, 246, 244, .68);
  --line: rgba(255, 255, 255, .16);
  --glass: rgba(14, 37, 46, .58);
  --glass-light: rgba(255, 255, 255, .09);
  --accent: #d8ee9b;
  --accent-hover: #c8e27f;
  --accent-rgb: 216, 238, 155;
  --on-accent: #10272e;
  --shadow-rgb: 3, 17, 22;
  --button-bg: rgba(255, 255, 255, .08);
  --button-bg-hover: rgba(255, 255, 255, .14);
  --field-bg: rgba(255, 255, 255, .07);
  --field-border: rgba(255, 255, 255, .18);
  --scrollbar: rgba(255, 255, 255, .25);

  --header-bg: rgba(10, 30, 38, .45);
  --panel-edge: rgba(255, 255, 255, .14);
  --table-wash: rgba(8, 26, 34, .35);
  --pill-bg: rgba(14, 37, 46, .6);
  --disabled-bg: rgba(255, 255, 255, .08);
  --disabled-text: rgba(236, 246, 244, .38);
  --backdrop: rgba(3, 14, 18, .55);
  --modal-bg: rgba(14, 37, 46, .9);
  --modal-edge: rgba(255, 255, 255, .14);
  --footer-text: rgba(236, 246, 244, .52);
  --logo-filter: brightness(0) invert(1);
  --logo-opacity: 1;
  --avatar-border: rgba(255, 255, 255, .3);
  --avatar-bg: rgba(255, 255, 255, .13);
  --avatar-color: var(--text);

  --bg-color: #10272e;
  --bg-image:
    linear-gradient(105deg, rgba(8, 26, 34, .78) 0%, rgba(9, 31, 40, .42) 48%, rgba(15, 33, 40, .16) 100%),
    linear-gradient(0deg, rgba(8, 27, 32, .46), transparent 58%),
    url("mountains1.jpg");
  --bg-position: center;

  --bg-card: #143039;
  --bg-page: rgba(255, 255, 255, .06);
  --bg-table-header: #183740;
}

/* Theme switch: cross-fade (theme.js uses a view transition where the browser has one) */
::view-transition-old(root),
::view-transition-new(root) {
  animation-duration: .7s;
  animation-timing-function: cubic-bezier(.4, 0, .2, 1);
}
:root.theme-fading *,
:root.theme-fading *::before,
:root.theme-fading *::after {
  transition: background-color .5s ease, color .5s ease, border-color .5s ease, box-shadow .5s ease, fill .5s ease, stroke .5s ease !important;
}

/* ---- Scrollbars: thin and quiet over the glass ---- */
body.theme-cachet * { scrollbar-color: var(--scrollbar) transparent; }
body.theme-cachet *::-webkit-scrollbar-track { background: transparent; }
body.theme-cachet *::-webkit-scrollbar-thumb { background-color: var(--scrollbar); border-color: transparent; background-clip: padding-box; }

/* ------------------------------------------------------------
   Header: frosted bar with a hairline, like the Cachet topbar
   ------------------------------------------------------------ */
body.theme-cachet .header {
  background: var(--header-bg);
  backdrop-filter: blur(18px) saturate(110%);
  -webkit-backdrop-filter: blur(18px) saturate(110%);
  border-bottom: 1px solid var(--line);
}
body.theme-cachet .header::before { display: none; }
body.theme-cachet .header-left { width: auto; padding-left: 1.5rem; }

/* Brand: AVRL + TOMMYRFP wordmark, tinted to ink, then "by AVRL" */
body.theme-cachet .brand {
  display: inline-flex;
  align-items: center;
  gap: .8125rem;
  color: var(--text);
  text-decoration: none;
}
body.theme-cachet .brand-logo {
  display: block;
  height: 20px;
  width: auto;
  filter: var(--logo-filter);
  opacity: var(--logo-opacity);
}
body.theme-cachet .brand-line {
  width: 1px;
  height: 24px;
  background: var(--line);
}
body.theme-cachet .brand-label {
  color: var(--muted);
  font: 500 .6875rem/1.2 var(--head-font);
  letter-spacing: .15em;
  text-transform: uppercase;
}

/* Theme toggle + avatar (right of the header) */
body.theme-cachet .theme-toggle,
body.theme-cachet .avatar {
  width: 34px;
  height: 34px;
  display: grid;
  place-items: center;
  border-radius: 50%;
  flex: 0 0 auto;
}
body.theme-cachet .theme-toggle {
  padding: 0;
  border: 1px solid var(--line);
  background: var(--glass-light);
  color: var(--muted);
  cursor: pointer;
  transition: color .2s ease, background .2s ease;
}
body.theme-cachet .theme-toggle:hover { color: var(--text); }
body.theme-cachet a.theme-toggle { text-decoration: none; }
body.theme-cachet .theme-toggle .material-symbols-outlined { font-size: 1.0625rem; }
body.theme-cachet .theme-toggle:focus-visible { outline: 2px solid var(--accent); outline-offset: 2px; }
body.theme-cachet .theme-toggle svg { width: 16px; height: 16px; }
body.theme-cachet .theme-toggle .icon-sun { display: none; }
:root[data-theme="dark"] body.theme-cachet .theme-toggle .icon-sun { display: block; }
:root[data-theme="dark"] body.theme-cachet .theme-toggle .icon-moon { display: none; }
body.theme-cachet .avatar {
  border: 1px solid var(--avatar-border);
  background: var(--avatar-bg);
  color: var(--avatar-color);
  font: 600 .75rem/1 var(--head-font);
  letter-spacing: .02em;
  user-select: none;
}

@media (max-width: 768px) {
  body.theme-cachet .brand-line,
  body.theme-cachet .brand-label { display: none; }
}

/* Breathing room between the header bar and the Lanes card (and the activity pill above it).
   No page title: the top row only holds the activity pill, so it collapses while idle. */
body.theme-cachet .layout-column > .content-wrapper.page-top--work { padding-top: 2.25rem; padding-bottom: 0; }   /* the activity card floats */

/* ------------------------------------------------------------
   Work panel: glass card with a light edge and soft halo
   ------------------------------------------------------------ */
body.theme-cachet .panel {
  background: var(--glass);
  backdrop-filter: blur(24px) saturate(110%);
  -webkit-backdrop-filter: blur(24px) saturate(110%);
  border: 1px solid var(--panel-edge);
  border-radius: 1.5rem;
  box-shadow: 0 28px 70px rgba(var(--shadow-rgb), .16);
}
body.theme-cachet .panel-header {
  background: transparent;
  border-bottom: 1px solid var(--line);
  padding: .875rem 1.25rem;
}
body.theme-cachet .panel-title-group { align-items: center; }
body.theme-cachet .panel-title {
  font: 600 1.0625rem/1.2 var(--head-font);
  letter-spacing: -.01em;
  text-transform: none;
}
body.theme-cachet .results-icon {
  width: 2rem;
  height: 2rem;
  display: grid;
  place-items: center;
  border-radius: .625rem;
  background: rgba(var(--accent-rgb), .1);
  color: var(--accent);
}

/* Table sits on a wash so dense rows stay readable */
body.theme-cachet .work-scroll { background: var(--table-wash); }
body.theme-cachet .data-table thead th { background: var(--bg-table-header); }
body.theme-cachet .data-table tbody tr:hover { background: rgba(var(--accent-rgb), .05); }
body.theme-cachet .work-table tr[data-row] td.s-check:hover,
body.theme-cachet .formatted-table tr.s-click:hover td { background: rgba(var(--accent-rgb), .08); }
body.theme-cachet .work-table td.s-copy:hover { background: rgba(var(--accent-rgb), .1); color: var(--accent); }
body.theme-cachet .work-panel .results-hint { background: transparent; }

/* Empty state: icon in a tinted tile, like the Cachet tree icons */
body.theme-cachet .empty-state > .material-symbols-outlined {
  width: 4.5rem;
  height: 4.5rem;
  margin: 0 auto 1rem;
  display: grid;
  place-items: center;
  border-radius: 1.125rem;
  background: rgba(var(--accent-rgb), .1);
  color: var(--accent);
  font-size: 2.25rem;
}

/* ------------------------------------------------------------
   Buttons: glass secondary, accent primary, lift on hover
   ------------------------------------------------------------ */
body.theme-cachet .btn {
  border-radius: .75rem;
  transition: transform .2s ease, background .2s ease, color .2s ease, border-color .2s ease;
}
body.theme-cachet .btn-narrow { border-radius: .625rem; }
body.theme-cachet .btn-primary {
  background: var(--accent);
  border-color: var(--accent);
  color: var(--on-accent);
}
body.theme-cachet .btn-primary:hover {
  background: var(--accent-hover);
  border-color: var(--accent-hover);
  transform: translateY(-1px);
}
body.theme-cachet .btn-secondary {
  background: var(--button-bg);
  border-color: var(--line);
  color: var(--text);
  backdrop-filter: blur(10px);
  -webkit-backdrop-filter: blur(10px);
}
body.theme-cachet .btn-secondary:hover {
  background: var(--button-bg-hover);
  border-color: rgba(var(--accent-rgb), .35);
  color: var(--accent);
  transform: translateY(-1px);
}
body.theme-cachet .btn:disabled {
  background: var(--disabled-bg);
  border-color: transparent;
  color: var(--disabled-text);
  transform: none;
}

/* ------------------------------------------------------------
   Fields
   ------------------------------------------------------------ */
body.theme-cachet .paste-box,
body.theme-cachet .fp-input,
body.theme-cachet .edit-field input:not([type=checkbox]),
body.theme-cachet .edit-field select,
body.theme-cachet .missing-pick select,
body.theme-cachet .missing-pick input {
  background: var(--field-bg);
  border-color: var(--field-border);
  color: var(--text);
}
body.theme-cachet .paste-box:focus,
body.theme-cachet .edit-field input:not([type=checkbox]):focus,
body.theme-cachet .edit-field select:focus,
body.theme-cachet .missing-pick select:focus,
body.theme-cachet .missing-pick input:focus {
  outline: none;
  border-color: var(--accent);
  box-shadow: 0 0 0 3px rgba(var(--accent-rgb), .14);
}
body.theme-cachet select option { background: var(--bg-card); color: var(--text); }

/* ------------------------------------------------------------
   Activity pill: frosted, accent-tinted
   ------------------------------------------------------------ */
body.theme-cachet .activity {
  border-color: rgba(var(--accent-rgb), .25);
  background: var(--pill-bg);
  backdrop-filter: blur(10px);
  -webkit-backdrop-filter: blur(10px);
  color: var(--accent);
}
/* Front and centre without blocking: a floating card over the table's last rows in view (start.js placeActivity sets
   top and left), or here, at the top middle under the header, when no rows are in view. It sits over the content
   (moving nothing) and only the card takes clicks; dialogs and the header stay above it. */
body.theme-cachet .activity {
  position: fixed;
  top: calc(var(--shell-header-height, 50px) + 0.75rem);
  left: 50%;
  transform: translateX(-50%);
  z-index: 900;
  gap: 0.5rem 0.875rem;
  padding: 0.625rem 1.125rem 0.625rem 0.875rem;
  font-size: 0.9375rem;
  max-width: min(44rem, calc(100vw - 2rem));
  box-shadow: 0 12px 32px rgba(15, 23, 42, .16), 0 2px 6px rgba(15, 23, 42, .08);
}
body.theme-cachet .activity .activity-spinner { width: 1.375rem; height: 1.375rem; }
body.theme-cachet .activity .activity-bar { width: 14rem; height: 0.4375rem; }
body.theme-cachet .activity-time { color: var(--muted); }
body.theme-cachet .activity-bar { background: rgba(var(--accent-rgb), .18); }
body.theme-cachet .activity-bar-fill { background: var(--accent); }
:root[data-theme="dark"] body.theme-cachet .btn-link--danger { color: #ff8a80; }
body.theme-cachet .cc-list { border-color: var(--line); }
body.theme-cachet .cc-list li.is-active { background: rgba(var(--accent-rgb), .12); }
:root[data-theme="dark"] body.theme-cachet .cc-name mark { background: rgba(242, 201, 76, .3); }
:root[data-theme="dark"] body.theme-cachet .missing-row.is-both { border-color: rgba(239, 83, 80, .5); background: rgba(239, 83, 80, .06); }
:root[data-theme="dark"] body.theme-cachet .missing-both { color: #ff8a80; }
body.theme-cachet .s-sel input { accent-color: var(--accent); }
body.theme-cachet .work-table tr.is-selected td { background: rgba(var(--accent-rgb), .1); }
body.theme-cachet .sm-bar { background: rgba(var(--accent-rgb), .16); }
body.theme-cachet .sm-bar-fill { background: var(--accent); }
body.theme-cachet .sm-step.is-now { background: rgba(var(--accent-rgb), .1); }
body.theme-cachet .sm-icon .activity-spinner { color: var(--accent); }
:root[data-theme="dark"] body.theme-cachet .sm-step.is-done .sm-icon,
:root[data-theme="dark"] body.theme-cachet .format-modal.is-finished #sm-icon { color: #81c995; }
:root[data-theme="dark"] body.theme-cachet .format-modal.is-finished .sm-bar-fill { background: #81c995; }
body.theme-cachet .map-pick .cc-input { background: var(--field-bg); border-color: var(--field-border); color: var(--text); }
body.theme-cachet .map-pick .cc-input:focus { outline: none; border-color: var(--accent); box-shadow: 0 0 0 3px rgba(var(--accent-rgb), .14); }
body.theme-cachet .map-row.is-changed { background: rgba(var(--accent-rgb), .08); }
:root[data-theme="dark"] body.theme-cachet .map-row.is-none .map-state { color: #ff8a80; }
:root[data-theme="dark"] body.theme-cachet .map-row.is-some .map-state { color: #f2c94c; }
body.theme-cachet .rate-retry { border-color: var(--line); background: var(--button-bg); color: var(--accent); }
body.theme-cachet .rate-retry:hover { border-color: rgba(var(--accent-rgb), .45); background: var(--button-bg-hover); }
:root[data-theme="dark"] body.theme-cachet .check-tip-msg { color: var(--text); }
body.theme-cachet .format-overlay { background: var(--glass); }
body.theme-cachet .format-pill {
  border-color: rgba(var(--accent-rgb), .25);
  background: var(--pill-bg);
  backdrop-filter: blur(10px);
  -webkit-backdrop-filter: blur(10px);
  color: var(--accent);
}
body.theme-cachet .format-text { color: var(--text); }
body.theme-cachet .format-meta { border-color: var(--line); }
:root[data-theme="dark"] body.theme-cachet .format-overlay::before {
  background-image: linear-gradient(100deg, transparent 25%, rgba(255, 255, 255, .08) 50%, transparent 75%);
}
body.theme-cachet .switch-track { background: rgba(var(--accent-rgb), .22); }
body.theme-cachet .switch-btn[aria-checked="true"] .switch-track { background: var(--accent); }
/* Margin link text on a dark page: lightened instead of darkened */
:root[data-theme="dark"] body.theme-cachet .rate-margin { --m-text: color-mix(in srgb, var(--m) 70%, #fff); }
:root[data-theme="dark"] body.theme-cachet .rate-margin .vr-link.is-rates:hover { color: color-mix(in srgb, var(--m) 50%, #fff); }
:root[data-theme="dark"] body.theme-cachet .col-dflt { color: #f2c94c; }
:root[data-theme="dark"] body.theme-cachet .work-table thead th:has(.col-dflt) {
  background-image: linear-gradient(rgba(242, 201, 76, .12), rgba(242, 201, 76, .12)); box-shadow: inset 0 -2px 0 #f2c94c;
}
:root[data-theme="dark"] body.theme-cachet .col-dflt:hover, :root[data-theme="dark"] body.theme-cachet .col-dflt:focus-visible { background: rgba(242, 201, 76, .16); color: #f7d978; }
body.theme-cachet .map-row.is-focus { box-shadow: 0 0 0 2px var(--accent); }
body.theme-cachet .work-table td.is-dflt { color: var(--accent); }
body.theme-cachet .icon-group { background: var(--button-bg); border-color: var(--line); backdrop-filter: blur(10px); -webkit-backdrop-filter: blur(10px); }
body.theme-cachet .ig-btn { color: var(--text); }
body.theme-cachet .ig-btn:not(.hidden) ~ .ig-btn:not(.hidden) { border-left-color: var(--line); }
body.theme-cachet .ig-btn:hover:not(:disabled) { background: rgba(var(--accent-rgb), .1); color: var(--accent); }
body.theme-cachet .ig-btn--danger:hover:not(:disabled) { background: rgba(196, 52, 52, .1); color: #c43434; }
body.theme-cachet .ig-btn:disabled { color: var(--disabled-text); }
body.theme-cachet .ig-btn:focus-visible { outline-color: var(--accent); }
body.theme-cachet .table-foot { border-top-color: var(--line); }
:root[data-theme="dark"] body.theme-cachet .ig-btn--danger:hover:not(:disabled) { color: #ff8a80; }
body.theme-cachet .seg-switch { background: var(--button-bg); border-color: var(--line); backdrop-filter: blur(10px); -webkit-backdrop-filter: blur(10px); }
body.theme-cachet .tool-group { background: var(--button-bg); border-color: var(--line); backdrop-filter: blur(10px); -webkit-backdrop-filter: blur(10px); }
body.theme-cachet .tool-group .seg-switch { background: none; backdrop-filter: none; -webkit-backdrop-filter: none; }
body.theme-cachet .tg-btn { color: var(--text); }
body.theme-cachet .stops-option:has(input:checked) { border-color: var(--accent); box-shadow: 0 0 0 1px var(--accent); }
body.theme-cachet .stops-node.is-end { border-color: var(--accent); color: var(--accent); }
body.theme-cachet .tool-group > :not(.hidden) ~ :not(.hidden) { border-left-color: var(--line); }
body.theme-cachet .tg-btn.is-ready, body.theme-cachet .tg-btn.is-ready:hover { background: var(--accent); color: var(--on-accent); }
body.theme-cachet .tg-btn:hover { background: rgba(var(--accent-rgb), .1); color: var(--accent); }
body.theme-cachet .tg-btn:focus-visible { outline-color: var(--accent); }
body.theme-cachet .seg-opt:hover { color: var(--accent); }
body.theme-cachet .seg-opt[aria-checked="true"] { background: var(--accent); color: var(--on-accent); }
body.theme-cachet .seg-opt:focus-visible { outline-color: var(--accent); }
body.theme-cachet .work-table thead th.is-per-mile .money-unit { background: rgba(var(--accent-rgb), .14); color: var(--accent); }
body.theme-cachet .activity-steps { color: var(--muted); }
body.theme-cachet .activity-steps i { background: rgba(var(--accent-rgb), .18); }
body.theme-cachet .activity-steps i.is-done,
body.theme-cachet .activity-steps i.is-now { background: var(--accent); }
body.theme-cachet .activity-queue { background: var(--bg-card); border-color: rgba(var(--accent-rgb), .25); }
body.theme-cachet .last-row { background: rgba(var(--accent-rgb), .08); color: var(--accent); }
body.theme-cachet .last-row strong { color: var(--text); }
body.theme-cachet .last-row-cells { color: var(--muted); }

/* ------------------------------------------------------------
   Dialogs: blurred backdrop, frosted card
   ------------------------------------------------------------ */
body.theme-cachet .modal-backdrop {
  background: var(--backdrop);
  backdrop-filter: blur(6px);
  -webkit-backdrop-filter: blur(6px);
}
body.theme-cachet .modal {
  background: var(--modal-bg);
  backdrop-filter: blur(24px) saturate(110%);
  -webkit-backdrop-filter: blur(24px) saturate(110%);
  border: 1px solid var(--modal-edge);
  border-radius: 1.375rem;
  box-shadow: 0 28px 70px rgba(var(--shadow-rgb), .24);
  color: var(--text);
}
body.theme-cachet .modal-header {
  background: transparent;
  border-bottom: 1px solid var(--line);
  padding: .875rem 1.25rem;
}
body.theme-cachet .modal-title {
  font: 600 1rem/1.2 var(--head-font);
  letter-spacing: -.01em;
}
body.theme-cachet .modal-title .material-symbols-outlined { color: var(--accent); }
body.theme-cachet .modal-close { border-radius: 999px; }
body.theme-cachet .modal-close:hover { background: var(--glass-light); color: var(--text); }

/* Popovers that float over the table */
body.theme-cachet .check-tip {
  border-radius: .75rem;
  box-shadow: 0 18px 45px rgba(var(--shadow-rgb), .16), 0 2px 6px rgba(var(--shadow-rgb), .08);
}

/* ---- Toasts + footer ---- */
body.theme-cachet .toast { border-radius: .75rem; }
body.theme-cachet .footer {
  color: var(--footer-text);
  font-size: .6875rem;
  letter-spacing: .04em;
}

@media (prefers-reduced-motion: reduce) {
  body.theme-cachet .btn:hover { transform: none; }
}

@media (max-width: 520px) {
  body.theme-cachet { background-position: 58% center; }
}

/* ============================================================
   DARK: colours the shared CSS hard-codes for a light page
   ============================================================ */
:root[data-theme="dark"] body.theme-cachet .toast:not(.success):not(.error) {
  background: #0d222a;
  color: var(--text);
  border: 1px solid var(--line);
}

/* Text on the accent: lime needs dark ink */
:root[data-theme="dark"] body.theme-cachet .cd-step-n { color: var(--on-accent); }

/* Row tints (rating, failed, warnings) */
:root[data-theme="dark"] body.theme-cachet .data-table tbody tr.row-rating,
:root[data-theme="dark"] body.theme-cachet .work-table tr.row-rating td { background: rgba(255, 196, 0, .12) !important; }
:root[data-theme="dark"] body.theme-cachet .work-table tr.row-rated-bad td { background: rgba(239, 83, 80, .12); }
:root[data-theme="dark"] body.theme-cachet .formatted-table tr.s-warn td { background: rgba(255, 196, 0, .08); }

/* Status text: the light theme's dark greens, ambers and reds, lifted for a dark page */
:root[data-theme="dark"] body.theme-cachet .s-ok,
:root[data-theme="dark"] body.theme-cachet .s-status .s-flag--ok,
:root[data-theme="dark"] body.theme-cachet .check-tip-ok,
:root[data-theme="dark"] body.theme-cachet .panel-counts .ok strong { color: #7fd48a; }
:root[data-theme="dark"] body.theme-cachet .s-flag,
:root[data-theme="dark"] body.theme-cachet .s-inline--note,
:root[data-theme="dark"] body.theme-cachet .check-tip-group.note .check-tip-title,
:root[data-theme="dark"] body.theme-cachet .edit-field.has-note .field-msg { color: #f2c94c; }
:root[data-theme="dark"] body.theme-cachet .s-flag--err,
:root[data-theme="dark"] body.theme-cachet .s-flag--ratefail,
:root[data-theme="dark"] body.theme-cachet .s-inline--err,
:root[data-theme="dark"] body.theme-cachet .check-tip-group.err,
:root[data-theme="dark"] body.theme-cachet .panel-counts .err strong,
:root[data-theme="dark"] body.theme-cachet .missing-field,
:root[data-theme="dark"] body.theme-cachet .review-status,
:root[data-theme="dark"] body.theme-cachet .field-msg { color: #ff8a80; }
:root[data-theme="dark"] body.theme-cachet .status-tag--pending { background: rgba(255, 255, 255, .1); color: var(--muted); }
/* Busy spinner (whileBusy): the theme's dialog glass and accent */
body.theme-cachet .busy-box { background: var(--modal-bg); backdrop-filter: blur(14px); -webkit-backdrop-filter: blur(14px); }
body.theme-cachet .busy-box .activity-spinner { color: var(--accent); }
:root[data-theme="dark"] body.theme-cachet .busy-backdrop { background: rgba(6, 18, 22, 0.5); }
:root[data-theme="dark"] body.theme-cachet .busy-box { color: #e8eef0; }
/* Quick filters in the title ("N no rate", "N to fix") on a dark page */
:root[data-theme="dark"] body.theme-cachet .count-quick { background: rgba(255, 255, 255, .04); border-color: rgba(255, 255, 255, .16); box-shadow: none; }
:root[data-theme="dark"] body.theme-cachet .count-quick:hover { background: rgba(255, 255, 255, .08); border-color: rgba(255, 255, 255, .28); }
:root[data-theme="dark"] body.theme-cachet .count-quick strong,
:root[data-theme="dark"] body.theme-cachet .count-quick:hover .material-symbols-outlined { color: #ff8a80; }
:root[data-theme="dark"] body.theme-cachet .count-quick.is-on { background: rgba(255, 138, 128, .12); border-color: #ff8a80; color: #ff8a80; }
:root[data-theme="dark"] body.theme-cachet .count-quick.is-on .material-symbols-outlined { color: #ff8a80; }

/* Postal codes dialog */
:root[data-theme="dark"] body.theme-cachet .postal-row.is-ok { border-color: rgba(76, 175, 80, .45); background: rgba(76, 175, 80, .08); }
:root[data-theme="dark"] body.theme-cachet .postal-row.is-ok .postal-state { color: #81c995; }
:root[data-theme="dark"] body.theme-cachet .postal-row.is-bad { border-color: rgba(239, 83, 80, .5); }
:root[data-theme="dark"] body.theme-cachet .postal-row.is-bad input { border-color: #ef5350; }
:root[data-theme="dark"] body.theme-cachet .postal-row.is-bad .postal-msg { color: #ff8a80; }
:root[data-theme="dark"] body.theme-cachet .postal-country { background: rgba(255, 255, 255, .08); }

/* View Rates links in the table */
:root[data-theme="dark"] body.theme-cachet .vr-link { color: #8ab4f8; }
:root[data-theme="dark"] body.theme-cachet .vr-link.is-rates { color: #81c995; }
:root[data-theme="dark"] body.theme-cachet .vr-link.is-error { color: #f28b82; }

/* Light fills that hold inherited (now light) text */
:root[data-theme="dark"] body.theme-cachet .defaults-modal .edit-field.is-set input:not([type=checkbox]),
:root[data-theme="dark"] body.theme-cachet .defaults-modal .edit-field.is-set select,
:root[data-theme="dark"] body.theme-cachet .day-check:has(input:checked) { background: rgba(26, 122, 26, .2); border-color: #4caf50; }
:root[data-theme="dark"] body.theme-cachet .edit-field.has-error input:not([type=checkbox]),
:root[data-theme="dark"] body.theme-cachet .edit-field.has-error select { background: rgba(196, 52, 52, .15); }

/* Check lane dialog: issue cards and the status badge, tinted rather than pastel */
:root[data-theme="dark"] body.theme-cachet .issue--err  { background: rgba(239, 83, 80, .12); border-color: rgba(239, 83, 80, .3); border-left-color: #ef5350; color: #ffcdc8; }
:root[data-theme="dark"] body.theme-cachet .issue--note { background: rgba(255, 196, 0, .10); border-color: rgba(255, 196, 0, .28); border-left-color: #f2c94c; color: #f7e3a6; }
:root[data-theme="dark"] body.theme-cachet .issue--ok   { background: rgba(76, 175, 80, .12); border-color: rgba(76, 175, 80, .3); border-left-color: #7fd48a; color: #c8ecc8; }
:root[data-theme="dark"] body.theme-cachet .issue--err > .material-symbols-outlined:first-child  { color: #ff8a80; }
:root[data-theme="dark"] body.theme-cachet .issue--note > .material-symbols-outlined:first-child { color: #f2c94c; }
:root[data-theme="dark"] body.theme-cachet .rv-badge--err  { background: rgba(239, 83, 80, .16); color: #ffb4ab; }
:root[data-theme="dark"] body.theme-cachet .rv-badge--note { background: rgba(255, 196, 0, .14); color: #f2c94c; }
:root[data-theme="dark"] body.theme-cachet .rv-badge--ok   { background: rgba(76, 175, 80, .16); color: #a5d6a7; }
:root[data-theme="dark"] body.theme-cachet .rv-group.has-error { border-color: rgba(239, 83, 80, .45); }

/* Pasted / result banners: tinted rather than pastel */
:root[data-theme="dark"] body.theme-cachet .paste-review { background: rgba(76, 175, 80, .14); color: #a5d6a7; }
:root[data-theme="dark"] body.theme-cachet .paste-review .btn-link { color: #a5d6a7; }
:root[data-theme="dark"] body.theme-cachet .validate-banner--bad { background: rgba(239, 83, 80, .14); color: #ffb4ab; }
:root[data-theme="dark"] body.theme-cachet .step-warn { background: rgba(255, 196, 0, .12); color: #f2c94c; }
:root[data-theme="dark"] body.theme-cachet { --strategy-aggressive: #f28b82; --strategy-neutral: #fdd663; --strategy-conservative: #81c995; }
:root[data-theme="dark"] body.theme-cachet .step-error,
:root[data-theme="dark"] body.theme-cachet .paste-review.is-bad { background: rgba(239, 83, 80, .14); color: #ffb4ab; }
:root[data-theme="dark"] body.theme-cachet .step-error .btn-link,
:root[data-theme="dark"] body.theme-cachet .paste-review.is-bad .btn-link { color: #ffb4ab; }

/* The how-to's Excel illustration stays a light "screenshot" */
:root[data-theme="dark"] body.theme-cachet .copy-demo-stage {
  --cd-ink: #1d2830;
  --cd-muted: rgba(29, 40, 48, .62);
  --cd-accent: #3f5a6e;
  --color-border: rgba(29, 40, 48, .13);
  background: #fbfcfc;
}

/* Response Details (View Rates) is built from white cards with fixed dark text: keep it light */
:root[data-theme="dark"] body.theme-cachet .vr-modal {
  color-scheme: light;
  --text: #1d2830;
  --muted: rgba(29, 40, 48, .62);
  --line: rgba(29, 40, 48, .13);
  --accent: #3f5a6e;
  --accent-rgb: 63, 90, 110;
  --glass-light: rgba(29, 40, 48, .06);
  --color-primary: var(--text);
  --color-secondary: var(--muted);
  --color-border: var(--line);
  --bg-card: #fbfcfc;
  background: rgba(250, 251, 251, .96);
  border-color: rgba(255, 255, 255, .7);
  color: var(--text);
}
