/* RouteTrack Light Theme — shared across all pages */
*,*::before,*::after{box-sizing:border-box;margin:0;padding:0}

:root{
  /* Light palette */
  --bg:       #f4f6f9;
  --sur:      #ffffff;
  --sur2:     #f8f9fc;
  --bor:      #e2e8f0;
  --bor2:     #cbd5e1;

  /* Brand */
  --acc:      #E8612C;
  --acc2:     #d4501f;
  --acc-light:#fff0eb;
  --acc-mid:  #fde0d4;

  /* Status */
  --grn:      #16a34a;
  --grn-light:#dcfce7;
  --red:      #dc2626;
  --red-light:#fee2e2;
  --blu:      #2563eb;
  --blu-light:#dbeafe;
  --ylw:      #d97706;
  --ylw-light:#fef3c7;

  /* Text */
  --txt:      #1e293b;
  --txt2:     #475569;
  --mut:      #94a3b8;

  /* Fonts */
  --fnt:  'DM Sans', sans-serif;
  --dsp:  'Bebas Neue', sans-serif;

  /* Shadow */
  --shadow-sm: 0 1px 3px rgba(0,0,0,.08), 0 1px 2px rgba(0,0,0,.04);
  --shadow:    0 4px 12px rgba(0,0,0,.08), 0 2px 4px rgba(0,0,0,.04);
  --shadow-lg: 0 10px 30px rgba(0,0,0,.1), 0 4px 8px rgba(0,0,0,.06);
}

html,body{min-height:100%;background:var(--bg);color:var(--txt);
  font-family:var(--fnt);font-size:14px;-webkit-tap-highlight-color:transparent}

/* ── Typography ────────────────────────────────────────── */
h1,h2,h3{font-family:var(--dsp);letter-spacing:.5px}

/* ── Topbar ─────────────────────────────────────────────── */
.topbar{background:var(--sur);border-bottom:1px solid var(--bor);
  padding:0 24px;height:56px;display:flex;align-items:center;gap:14px;
  box-shadow:var(--shadow-sm);position:sticky;top:0;z-index:50}
.topbar-logo{font-family:var(--dsp);font-size:22px;color:var(--acc);letter-spacing:2px}
.topbar-title{font-family:var(--dsp);font-size:18px;letter-spacing:1px;flex:1;color:var(--txt)}

/* ── Buttons ─────────────────────────────────────────────── */
.btn{display:inline-flex;align-items:center;gap:6px;padding:8px 16px;
  border:none;border-radius:8px;cursor:pointer;font-family:var(--fnt);
  font-size:13px;font-weight:600;transition:all .15s;text-decoration:none;
  line-height:1.2}
.btn:active{transform:scale(.97)}
.btn-sm{padding:5px 12px;font-size:12px;border-radius:6px}
.btn-lg{padding:12px 24px;font-size:15px;border-radius:10px}

.btn-acc  {background:var(--acc);color:#fff;box-shadow:0 2px 6px rgba(232,97,44,.3)}
.btn-acc:hover{background:var(--acc2)}
.btn-ghost{background:transparent;color:var(--txt2);border:1px solid var(--bor2)}
.btn-ghost:hover{background:var(--sur2);color:var(--txt)}
.btn-grn  {background:var(--grn);color:#fff}
.btn-grn:hover{background:#15803d}
.btn-grn-soft{background:var(--grn-light);color:var(--grn);border:1px solid #bbf7d0}
.btn-grn-soft:hover{background:var(--grn);color:#fff}
.btn-red  {background:var(--red);color:#fff}
.btn-red:hover{background:#b91c1c}
.btn-red-soft{background:var(--red-light);color:var(--red);border:1px solid #fecaca}
.btn-red-soft:hover{background:var(--red);color:#fff}
.btn-blu  {background:var(--blu);color:#fff}
.btn-blu:hover{background:#1d4ed8}
.btn-blu-soft{background:var(--blu-light);color:var(--blu);border:1px solid #bfdbfe}
.btn-blu-soft:hover{background:var(--blu);color:#fff}
.btn-ylw-soft{background:var(--ylw-light);color:var(--ylw);border:1px solid #fde68a}
.btn-ylw-soft:hover{background:var(--ylw);color:#fff}
.btn:disabled{opacity:.45;cursor:not-allowed;transform:none!important}

/* ── Cards ───────────────────────────────────────────────── */
.card{background:var(--sur);border:1px solid var(--bor);border-radius:12px;
  overflow:hidden;box-shadow:var(--shadow-sm)}
.card-hdr{display:flex;align-items:center;justify-content:space-between;
  padding:14px 20px;border-bottom:1px solid var(--bor);background:var(--sur2)}
.card-title{font-family:var(--dsp);font-size:15px;letter-spacing:.5px;color:var(--txt)}
.card-body{padding:20px}

/* ── Form elements ───────────────────────────────────────── */
.fg{display:flex;flex-direction:column;gap:5px;margin-bottom:14px}
.fg:last-child{margin-bottom:0}
label{font-size:12px;color:var(--txt2);font-weight:600;letter-spacing:.2px}
input[type=text],input[type=password],input[type=number],
input[type=email],input[type=tel],input[type=date],
input[type=time],select,textarea{
  background:var(--sur);border:1px solid var(--bor2);color:var(--txt);
  padding:9px 12px;border-radius:8px;font-family:var(--fnt);
  font-size:13px;width:100%;outline:none;
  transition:border-color .15s,box-shadow .15s}
input:focus,select:focus,textarea:focus{
  border-color:var(--acc);box-shadow:0 0 0 3px rgba(232,97,44,.12)}
.hint{font-size:11px;color:var(--mut);margin-top:3px;line-height:1.5}

/* ── Tables ──────────────────────────────────────────────── */
table{width:100%;border-collapse:collapse}
th{background:var(--sur2);color:var(--txt2);font-size:11px;text-transform:uppercase;
  letter-spacing:.7px;padding:10px 16px;text-align:left;font-weight:700;
  border-bottom:2px solid var(--bor)}
td{padding:12px 16px;border-bottom:1px solid var(--bor);font-size:13px;vertical-align:middle;color:var(--txt)}
tr:last-child td{border-bottom:none}
tr:hover td{background:var(--sur2)}
.empty-row td{text-align:center;color:var(--mut);padding:36px;font-size:13px}

/* ── Badges ──────────────────────────────────────────────── */
.badge{display:inline-flex;align-items:center;padding:3px 10px;
  border-radius:20px;font-size:11px;font-weight:700;letter-spacing:.2px}
.badge-grn  {background:var(--grn-light);color:var(--grn);border:1px solid #bbf7d0}
.badge-red  {background:var(--red-light);color:var(--red);border:1px solid #fecaca}
.badge-blu  {background:var(--blu-light);color:var(--blu);border:1px solid #bfdbfe}
.badge-ylw  {background:var(--ylw-light);color:var(--ylw);border:1px solid #fde68a}
.badge-acc  {background:var(--acc-light);color:var(--acc);border:1px solid var(--acc-mid)}
.badge-gray {background:var(--sur2);color:var(--txt2);border:1px solid var(--bor2)}

/* ── Alerts ──────────────────────────────────────────────── */
.alert{padding:12px 16px;border-radius:8px;font-size:13px;margin-bottom:16px;display:flex;gap:8px;align-items:flex-start}
.alert-ok {background:var(--grn-light);border:1px solid #bbf7d0;color:var(--grn)}
.alert-err{background:var(--red-light);border:1px solid #fecaca;color:var(--red)}
.alert-warn{background:var(--ylw-light);border:1px solid #fde68a;color:var(--ylw)}
.alert-info{background:var(--blu-light);border:1px solid #bfdbfe;color:var(--blu)}

/* ── Modal ───────────────────────────────────────────────── */
.overlay{position:fixed;inset:0;background:rgba(15,23,42,.5);z-index:200;
  display:none;align-items:center;justify-content:center;
  padding:20px;backdrop-filter:blur(3px)}
.overlay.open{display:flex}
.modal{background:var(--sur);border:1px solid var(--bor);border-radius:16px;
  width:100%;max-width:500px;max-height:90vh;overflow-y:auto;
  box-shadow:var(--shadow-lg);animation:pop .18s ease}
@keyframes pop{from{opacity:0;transform:scale(.95) translateY(-8px)}to{opacity:1;transform:none}}
.mhdr{display:flex;align-items:center;justify-content:space-between;
  padding:16px 20px;border-bottom:1px solid var(--bor);
  position:sticky;top:0;background:var(--sur);z-index:2}
.mtitle{font-family:var(--dsp);font-size:17px;letter-spacing:.5px;color:var(--txt)}
.mbody{padding:20px}
.mfoot{padding:14px 20px;border-top:1px solid var(--bor);display:flex;
  justify-content:flex-end;gap:8px;
  position:sticky;bottom:0;background:var(--sur);z-index:2}

/* ── Toast ───────────────────────────────────────────────── */
.toast{position:fixed;bottom:24px;left:50%;transform:translateX(-50%) translateY(8px);
  background:var(--txt);color:#fff;padding:10px 20px;border-radius:10px;
  font-size:13px;z-index:999;opacity:0;pointer-events:none;
  transition:opacity .25s,transform .25s;box-shadow:var(--shadow-lg);white-space:nowrap}
.toast.show{opacity:1;transform:translateX(-50%) translateY(0)}

/* ── Stat boxes ──────────────────────────────────────────── */
.stat-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:14px;margin-bottom:22px}
.stat-card{background:var(--sur);border:1px solid var(--bor);border-radius:12px;
  padding:16px 18px;box-shadow:var(--shadow-sm)}
.stat-lbl{font-size:11px;color:var(--mut);font-weight:600;letter-spacing:.5px;
  text-transform:uppercase;margin-bottom:6px}
.stat-val{font-family:var(--dsp);font-size:28px;letter-spacing:.5px;color:var(--txt);line-height:1}
.stat-sub{font-size:11px;color:var(--mut);margin-top:4px}
.stat-card.acc   .stat-val{color:var(--acc)}
.stat-card.green .stat-val{color:var(--grn)}
.stat-card.blue  .stat-val{color:var(--blu)}

/* ── Loading spinner ─────────────────────────────────────── */
.spin{width:32px;height:32px;border:3px solid var(--bor);
  border-top-color:var(--acc);border-radius:50%;animation:spin .7s linear infinite}
@keyframes spin{to{transform:rotate(360deg)}}
.loading-overlay{position:fixed;inset:0;background:rgba(255,255,255,.8);
  z-index:500;display:none;align-items:center;justify-content:center;flex-direction:column;gap:12px}
.loading-overlay.show{display:flex}
.loading-msg{font-size:13px;color:var(--txt2)}
