/* === NotifyDriver Accessible Theme (light mode) === */
:root{
  --nd-bg: #ffffff;
  --nd-text: #0b1220;
  --nd-muted: #5c6370;
  --nd-border: #dee2e6;

  /* Accessible ramps */
  --nd-primary: #0b5ed7;
  --nd-primary-ink: #ffffff;

  --nd-success: #146c43;
  --nd-success-bg: #e7f6ee;

  --nd-warning: #a15c00;
  --nd-warning-bg: #fff3cd;

  --nd-danger: #842029;
  --nd-danger-bg: #fde6e9;

  --nd-info: #055160;
  --nd-info-bg: #e6f6fb;

  --nd-secondary: #495057;
  --nd-secondary-bg: #f4f5f7;

  --nd-card-bg: #ffffff;
  --nd-card-border: #e9ecef;
  --nd-shadow: 0 1px 2px rgba(16,24,40,.06), 0 1px 3px rgba(16,24,40,.10);
}

/* Base text & cards */
body{ background: var(--nd-bg); color: var(--nd-text); }
.card{ background: var(--nd-card-bg); border-color: var(--nd-card-border); box-shadow: var(--nd-shadow); }

/* Buttons */
.btn-primary{ background: var(--nd-primary)!important; border-color: var(--nd-primary)!important; color: var(--nd-primary-ink)!important; }
.btn-outline-primary{ color: var(--nd-primary)!important; border-color: var(--nd-primary)!important; }
.btn-outline-primary:hover{ background: var(--nd-primary)!important; color: var(--nd-primary-ink)!important; }

/* Badges & text-bg utilities (Bootstrap 5) */
.badge.bg-success, .text-bg-success{ background: var(--nd-success-bg)!important; color: var(--nd-success)!important; border: 1px solid rgba(20,108,67,.25); }
.badge.bg-warning, .text-bg-warning{ background: var(--nd-warning-bg)!important; color: var(--nd-warning)!important; border: 1px solid rgba(161,92,0,.25); }
.badge.bg-danger,  .text-bg-danger{  background: var(--nd-danger-bg)!important;  color: var(--nd-danger)!important;  border: 1px solid rgba(132,32,41,.25); }
.badge.bg-info,    .text-bg-info{    background: var(--nd-info-bg)!important;    color: var(--nd-info)!important;    border: 1px solid rgba(5,81,96,.25); }
.badge.bg-secondary, .text-bg-secondary{ background: var(--nd-secondary-bg)!important; color: var(--nd-secondary)!important; border: 1px solid rgba(73,80,87,.22); }

/* Muted/secondary text contrast bump */
.text-muted{ color: var(--nd-muted)!important; }

/* Switches / form labels */
.form-check-label{ color: var(--nd-text); }

/* Small links in cards */
.card a{ text-underline-offset:.2em; }

/* Top navbar brand stays strong */
.navbar .navbar-brand{ color: var(--nd-text)!important; }

/* Prevent ultra-low contrast in tiny badges */
.badge{ font-weight:600; }

/* Optional: make subtle separators slightly darker for contrast */
hr{ color: var(--nd-border); opacity:.9; }


/* === Readability & spacing tweaks === */
html{ font-size: 16.5px; } /* slight bump */
h1,h2,h3{ color: var(--nd-text); letter-spacing:.2px; }
.lead, .text-muted{ letter-spacing:.1px; }
.card{ border-radius: 14px; }
.card .btn{ margin-right:.35rem; margin-bottom:.35rem; }
.card .btn:last-child{ margin-right:0; }
.card .badge{ transform: translateY(-.5px); }

/* Inputs & switches */
.form-control{ border-color: var(--nd-border); }
.form-check-input:focus{ box-shadow:0 0 0 .2rem rgba(11,94,215,.15); }

/* Section headings */
.nd-section-title{ font-weight:700; font-size:1.15rem; margin-bottom:.5rem; }

/* Dark mode mirrors palette and keeps strong contrast */
@media (prefers-color-scheme: dark){
  :root{
    --nd-bg: #0b1220;
    --nd-text: #f6f7fb;
    --nd-muted: #b6bdd0;
    --nd-border: #2b3551;

    --nd-primary: #66a7ff;
    --nd-primary-ink: #0b1220;

    --nd-success: #89d4b0;
    --nd-success-bg: #143024;
    --nd-warning: #ffc069;
    --nd-warning-bg: #2d220b;
    --nd-danger: #ff8fa3;
    --nd-danger-bg: #3b141a;
    --nd-info: #7ed3ea;
    --nd-info-bg: #0f2a31;

    --nd-card-bg: #111a2e;
    --nd-card-border: #1c2540;
    --nd-shadow: 0 1px 2px rgba(0,0,0,.45), 0 1px 6px rgba(0,0,0,.35);
  }
  body{ background: var(--nd-bg); color: var(--nd-text); }
  .navbar, .dropdown-menu{ background: var(--nd-card-bg); }
  .form-control{ background:#0c1324; color:var(--nd-text); border-color:var(--nd-border); }
  .btn-outline-primary:hover{ color: var(--nd-primary-ink)!important; }
}

/* =======================
   Light mode contrast pass
   ======================= */
:root {
  --nd-bg: #f6f8fb;
  --nd-surface: #ffffff;
  --nd-text: #0b1220;           /* base text */
  --nd-muted: #475569;          /* secondary text */
  --nd-border: #cbd5e1;         /* control/card borders */
  --nd-primary: #0b5ed7;        /* brand blue */
  --nd-primary-600: #0a4db3;    /* hover/active */
  --nd-success-deep: #147d3f;   /* badges */
  --nd-danger: #dc3545;
}

@media (prefers-color-scheme: light) {
  body { color: var(--nd-text); background: var(--nd-bg); }

  a { color: var(--nd-primary); text-decoration-thickness: .08em; }
  a:hover { color: var(--nd-primary-600); }

  .text-muted, .text-body-secondary, small,
  .form-text { color: var(--nd-muted) !important; }

  /* Cards / surfaces */
  .card, .dropdown-menu, .modal-content, .offcanvas, .list-group-item {
    background: var(--nd-surface);
    border-color: var(--nd-border) !important;
    box-shadow: 0 1px 0 rgba(15,23,42,.02), 0 8px 24px rgba(15,23,42,.06);
  }

  /* Buttons */
  .btn-outline-primary {
    color: var(--nd-primary-600);
    border-color: var(--nd-primary-600);
  }
  .btn-outline-primary:hover, .btn-outline-primary:focus {
    color: #fff; background: var(--nd-primary-600); border-color: var(--nd-primary-600);
  }
  .btn-outline-secondary {
    color: var(--nd-muted); border-color: var(--nd-border);
  }
  .btn-outline-secondary:hover { color:#111827; border-color:#94a3b8; background:#eef2f7; }

  .btn-primary { background: var(--nd-primary); border-color: var(--nd-primary); }
  .btn-primary:hover { background: var(--nd-primary-600); border-color: var(--nd-primary-600); }

  .btn-danger { background: var(--nd-danger); border-color: var(--nd-danger); }

  /* Pills / badges (MOT/Tax/Active) */
  .badge.bg-success, .badge.text-bg-success { background:#0f7a3a !important; }
  .badge.bg-secondary, .badge.text-bg-secondary { background:#64748b !important; color:#fff !important; }
  .badge.bg-info, .badge.text-bg-info { background:#0b5ed7 !important; }

  /* Form controls */
  input, select, textarea {
    color: var(--nd-text) !important;
    border-color: var(--nd-border) !important;
  }
  input::placeholder, textarea::placeholder { color:#667085; }
  input:focus, select:focus, textarea:focus {
    border-color: var(--nd-primary);
    box-shadow: 0 0 0 .2rem rgba(11,94,215,.25);
  }
  input[type="checkbox"], input[type="radio"] { accent-color: var(--nd-primary); }

  /* Navbar */
  .navbar, .navbar .container { background: var(--nd-surface); }
  .navbar .nav-link { color:#1f2937; }
  .navbar .nav-link.active, .navbar .nav-link:hover { color: var(--nd-primary-600); }
  .navbar-brand { color:#0f172a; font-weight: 700; }

  /* Tables / lists */
  .table thead th { color:#0f172a; border-bottom-color:#d7dde5; }
  .list-group-item { color: var(--nd-text); }

  /* Toggles like "Show plate publicly" line */
  .form-check-label { color: var(--nd-text); }
  .form-check-input { border-color: var(--nd-border); }
}

/* Focus visibility for keyboard users (both themes) */
:focus-visible {
  outline: 3px solid rgba(11,94,215,.45);
  outline-offset: 2px;
}

/* === High-contrast make badge (Light & Dark) === */
.badge-make{
  /* Light mode */
  background:#0b5ed7 !important;
  color:#fff !important;
  font-weight:700;
  font-size:0.80rem;
  letter-spacing:.25px;
  padding:.22rem .55rem;
  border-radius:999px;
  box-shadow:inset 0 -1px 0 rgba(0,0,0,.12), 0 0 0 1px rgba(11,94,215,.12);
  text-transform:uppercase;
}
@media (prefers-color-scheme: dark){
  .badge-make{
    background:#4c8ef7 !important;
    color:#071220 !important;
    box-shadow:inset 0 -1px 0 rgba(0,0,0,.25), 0 0 0 1px rgba(255,255,255,.08);
  }
}
/* Improve default grey badges for readability */
.badge, .badge.bg-light, .badge.text-bg-light{
  color:#374151 !important;
}

/* === High-contrast make badge (dashboard) === */
.badge-make{
  background:#0b5ed7 !important;
  color:#fff !important;
  font-weight:700;
  font-size:.80rem;
  letter-spacing:.25px;
  padding:.22rem .55rem;
  border-radius:999px;
  text-transform:uppercase;
  box-shadow:inset 0 -1px 0 rgba(0,0,0,.12), 0 0 0 1px rgba(11,94,215,.12);
}
@media (prefers-color-scheme: dark){
  .badge-make{ background:#4c8ef7 !important; color:#071220 !important; }
}
/* Make default light badges more legible */
.badge, .badge.bg-light, .badge.text-bg-light{ color:#374151 !important; }

/* === High-contrast make badge === */
.badge-make{
  background:#0b5ed7 !important;
  color:#fff !important;
  font-weight:700;
  font-size:.80rem;
  letter-spacing:.25px;
  padding:.22rem .55rem;
  border-radius:999px;
  text-transform:uppercase;
  box-shadow:inset 0 -1px 0 rgba(0,0,0,.12), 0 0 0 1px rgba(11,94,215,.12);
}
@media (prefers-color-scheme: dark){
  .badge-make{ background:#4c8ef7 !important; color:#071220 !important; }
}
/* Slight bump for default light badges */
.badge, .badge.bg-light, .badge.text-bg-light{ color:#374151 !important; }

/* === Stronger contrast for light badges (make, colour, etc.) === */
.badge.text-bg-light,
.badge.bg-light,
.badge-light {
  background:#dfe7f7 !important;   /* lighter blue background for contrast */
  color:#102a56 !important;         /* deep navy text */
  font-weight:700 !important;
  border:1px solid #b8c8f0 !important;
  letter-spacing:.25px;
}

/* Slight size bump in card headers for readability */
.card .badge.text-bg-light,
.card .badge.bg-light {
  font-size:.82rem !important;
  padding:.22rem .55rem !important;
  border-radius:999px !important;
  text-transform:uppercase;
}

/* Dark mode tune so they don’t glow */
@media (prefers-color-scheme: dark){
  .badge.text-bg-light,
  .badge.bg-light,
  .badge-light {
    background:#2d3952 !important;
    color:#e8eefc !important;
    border-color:#3a4a6f !important;
  }
}


/* === Make badge: high-contrast Light vs Dark === */
:root {
  --nd-make-bg: #0b5ed7;
  --nd-make-text: #ffffff;
  --nd-make-border: #0a58ca;
}

.badge-make {
  background: var(--nd-make-bg) !important;
  color: var(--nd-make-text) !important;
  border: 1px solid var(--nd-make-border) !important;
  font-weight: 700;
  letter-spacing: .2px;
  text-transform: uppercase;
  padding: .28rem .56rem;
  border-radius: 999px;
  box-shadow: 0 0 0 1px rgba(255,255,255,.6) inset;
}

.card .badge-make {
  box-shadow:
    0 0 0 1px rgba(255,255,255,.8) inset,
    0 0 0 1px rgba(10,88,202,.15);
}

@media (prefers-color-scheme: dark) {
  .badge-make {
    background: #1f6feb !important;
    border-color: #1b4fd6 !important;
    color: #fff !important;
    box-shadow: none;
  }
}

/* === NotifyDriver: make badge (high-contrast) === */
.badge-make{--nd-make-bg:#0b5ed7;--nd-make-fg:#fff;--nd-make-ring:rgba(11,94,215,.22);
  background:var(--nd-make-bg)!important;color:var(--nd-make-fg)!important;
  font-weight:700; letter-spacing:.2px;
  padding:.28rem .5rem; border-radius:999px;
  box-shadow:inset 0 0 0 1px var(--nd-make-ring),0 1px 0 rgba(0,0,0,.04);} 
.badge.badge-make{font-size:.78rem; line-height:1;}
.card .badge-make{box-shadow:inset 0 0 0 1px rgba(11,94,215,.30),0 1px 0 rgba(0,0,0,.06);} 

/* Dark mode tweak */
@media (prefers-color-scheme: dark){
  .badge-make{--nd-make-bg:#1e63e6; --nd-make-fg:#eaf2ff;
    box-shadow:inset 0 0 0 1px rgba(255,255,255,.08);} 
}

/* === NotifyDriver Theme Tokens (contrast hotfix) === */
/* Base (light) */
:root,
:root[data-bs-theme="light"] {
  /* Text & bg */
  --nd-bg: #ffffff;
  --nd-surface: #f8f9fa;   /* light card */
  --nd-text: #111111;      /* strong body text */
  --nd-muted: #6c757d;     /* muted text */
  --nd-border: #dee2e6;

  /* Accents (keep Bootstrap defaults compatible) */
  --nd-primary: #0d6efd;
  --nd-link: #0d6efd;

  /* Badges/pills (light) */
  --nd-pill-bg: #e9ecef;
  --nd-pill-text: #0f172a; /* slate-900-ish */
  --nd-pill-ring: rgba(0, 0, 0, 0.08);
}

/* Dark */
:root[data-bs-theme="dark"] {
  --nd-bg: #0b0f14;        /* very dark blue-gray */
  --nd-surface: #11161c;   /* card */
  --nd-text: #e9eef3;      /* bright text */
  --nd-muted: #a3b1c2;     /* muted but readable */
  --nd-border: #26323f;

  --nd-primary: #66b0ff;
  --nd-link: #66b0ff;

  --nd-pill-bg: #1a222b;
  --nd-pill-text: #e6edf3;
  --nd-pill-ring: rgba(255, 255, 255, 0.12);
}

/* Apply tokens */
html, body {
  background-color: var(--nd-bg);
  color: var(--nd-text);
}

/* Cards and containers */
.card, .modal-content, .dropdown-menu, .list-group-item {
  background-color: var(--nd-surface);
  color: var(--nd-text);
  border-color: var(--nd-border);
}

/* Text utilities override for readability */
.text-muted { color: var(--nd-muted) !important; }
a { color: var(--nd-link); }
a:hover, a:focus { color: var(--nd-link); opacity: 0.9; }

/* Inputs */
.form-control, .form-select, .form-check-input {
  background-color: var(--nd-bg);
  color: var(--nd-text);
  border-color: var(--nd-border);
}
.form-control::placeholder { color: var(--nd-muted); opacity: 1; }

/* Buttons: ensure outline variants remain readable */
.btn-outline-secondary, .btn-outline-light, .btn-outline-dark {
  color: var(--nd-text);
  border-color: var(--nd-border);
}
.btn-outline-secondary:hover,
.btn-outline-light:hover,
.btn-outline-dark:hover {
  background-color: var(--nd-surface);
  color: var(--nd-text);
}

/* Pills/badges often used for car make/model */
.badge-make, .badge-pill, .badge {
  background: var(--nd-pill-bg) !important;
  color: var(--nd-pill-text) !important;
  border: 1px solid var(--nd-border);
  box-shadow: inset 0 0 0 1px var(--nd-pill-ring);
}

/* Tables */
.table {
  color: var(--nd-text);
}
.table thead th {
  border-bottom-color: var(--nd-border);
}
.table td, .table th {
  border-top-color: var(--nd-border);
}

/* Navbar */
.navbar, .dropdown-menu {
  background-color: var(--nd-surface);
  border-bottom: 1px solid var(--nd-border);
}
.nav-link, .dropdown-item { color: var(--nd-text); }
.nav-link.active, .dropdown-item.active { color: var(--nd-text); background: var(--nd-pill-bg); }

/* Alerts */
.alert {
  color: var(--nd-text);
  border-color: var(--nd-border);
}

/* === Navbar dark mode contrast fix === */
:root[data-bs-theme="dark"] .navbar .nav-link,
:root[data-bs-theme="dark"] .navbar .dropdown-item {
  color: #f0f4f9 !important;  /* brighter text for contrast */
}

:root[data-bs-theme="dark"] .navbar .nav-link:hover,
:root[data-bs-theme="dark"] .navbar .nav-link:focus,
:root[data-bs-theme="dark"] .navbar .dropdown-item:hover,
:root[data-bs-theme="dark"] .navbar .dropdown-item:focus {
  color: #ffffff !important;
  background-color: rgba(255,255,255,0.05);
}

:root[data-bs-theme="dark"] .navbar .nav-link.active,
:root[data-bs-theme="dark"] .navbar .dropdown-item.active {
  color: #ffffff !important;
  background-color: rgba(255,255,255,0.1);
}

/* === Navbar full contrast (dark mode) === */
:root[data-bs-theme="dark"] .navbar {
  background-color: var(--nd-surface) !important;
  box-shadow: inset 0 -1px 0 var(--nd-border);
}

/* Brand */
:root[data-bs-theme="dark"] .navbar .navbar-brand {
  color: #ffffff !important;
  font-weight: 700;
}

/* Default links */
:root[data-bs-theme="dark"] .navbar .nav-link,
:root[data-bs-theme="dark"] .navbar .dropdown-toggle,
:root[data-bs-theme="dark"] .navbar .dropdown-item {
  color: #e9eef3 !important;          /* bright by default */
}

/* Hover/focus */
:root[data-bs-theme="dark"] .navbar .nav-link:hover,
:root[data-bs-theme="dark"] .navbar .nav-link:focus,
:root[data-bs-theme="dark"] .navbar .dropdown-item:hover,
:root[data-bs-theme="dark"] .navbar .dropdown-item:focus {
  color: #ffffff !important;
  background-color: rgba(255,255,255,0.06);
}

/* Active item (make blue lighter & readable) */
:root[data-bs-theme="dark"] .navbar .nav-link.active,
:root[data-bs-theme="dark"] .navbar .dropdown-item.active {
  color: #8fc2ff !important;          /* lighter blue for contrast */
  background-color: rgba(104,160,255,0.12);
}

/* Disabled items */
:root[data-bs-theme="dark"] .navbar .nav-link.disabled,
:root[data-bs-theme="dark"] .navbar .dropdown-item.disabled {
  color: #94a3b8 !important;          /* muted but readable */
  opacity: 1;                          /* avoid extra dim */
}

/* Search input in navbar */
:root[data-bs-theme="dark"] .navbar .form-control {
  background-color: #0f141a;
  color: #f1f5f9;
  border-color: var(--nd-border);
}
:root[data-bs-theme="dark"] .navbar .form-control::placeholder {
  color: #b6c2cf;
  opacity: 1;
}

/* Theme toggle pill text (if inside navbar) */
:root[data-bs-theme="dark"] .navbar .btn,
:root[data-bs-theme="dark"] .navbar .badge,
:root[data-bs-theme="dark"] .navbar .btn-outline-secondary {
  color: #f0f4f9 !important;
}

/* --- Dashboard tokens --- */
.nd-card { border-radius: 1rem; }

/* High-contrast make badge (light & dark) */
.nd-badge-make {
  display: inline-block;
  font-weight: 600;
  letter-spacing: .02em;
  padding: .35rem .5rem;
  border-radius: 999px;
  background: var(--nd-make-bg, #f1f3f5);
  color: var(--nd-make-fg, #1f2937);
  box-shadow: inset 0 0 0 1px rgba(0,0,0,.05);
}

.nd-badge-plate {
  display: inline-block;
  font-weight: 700;
  padding: .35rem .5rem;
  border-radius: .5rem;
  background: #fff200; /* UK-style plate hint */
  color: #111827;
  box-shadow: inset 0 0 0 2px rgba(0,0,0,.2);
}

/* Dark mode adjustments (respects prefers-color-scheme) */
@media (prefers-color-scheme: dark) {
  .nd-badge-make {
    background: rgba(255,255,255,.08);
    color: #e5e7eb;
    box-shadow: inset 0 0 0 1px rgba(255,255,255,.15);
  }
  .nd-badge-plate {
    background: #fbbf24;
    color: #111827;
    box-shadow: inset 0 0 0 2px rgba(0,0,0,.45);
  }
}

/* Buttons */
.nd-btn-copy { white-space: nowrap; }
