:root {
  --wt-dark: #182027;
  --wt-mid: #212d37;
  --wt-accent: #3b7ddd;
}
.login-bg {
  background: radial-gradient(circle at top left, #2d4050, var(--wt-dark) 42%, #10161c 100%);
}
.sidebar-brand { font-weight: 800; letter-spacing: .02em; }
.card { box-shadow: 0 0 0.875rem 0 rgba(33,37,41,.05); }
.upload-zone {
  border: 2px dashed #cbd5e1;
  border-radius: 12px;
  padding: 1.25rem;
  background: #f8fafc;
}
.badge-soft {
  border: 1px solid transparent;
  border-radius: 999px;
  padding: .25rem .55rem;
  font-size: .73rem;
  font-weight: 700;
  display: inline-block;
  white-space: nowrap;
}
.badge-draft { background: #eef2ff; color: #3730a3; border-color: #c7d2fe; }
.badge-dispatched_scheduled { background: #e0f2fe; color: #075985; border-color: #bae6fd; }
.badge-delivered, .badge-invoiced { background: #dcfce7; color: #166534; border-color: #bbf7d0; }
.badge-sent { background: #fef9c3; color: #854d0e; border-color: #fde68a; }
.badge-confirmed_payment { background: #d1fae5; color: #065f46; border-color: #a7f3d0; }
.badge-priority { background: #ffedd5; color: #9a3412; border-color: #fed7aa; }
.badge-urgent { background: #fee2e2; color: #991b1b; border-color: #fecaca; }
.badge-cancelled { background: #f3f4f6; color: #4b5563; border-color: #e5e7eb; }
.table td { vertical-align: middle; }
.route-text { max-width: 320px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.unit-dropped { color: #6b7280; background: #f3f4f6; text-decoration: line-through; }
.offcanvas-panel {
  position: fixed; inset: 0; z-index: 1050; display: none; background: rgba(15, 23, 42, .55);
}
.offcanvas-panel.open { display: block; }
.offcanvas-card {
  position: absolute; right: 0; top: 0; bottom: 0; width: min(980px, 96vw); overflow-y: auto; background: #fff; padding: 1.25rem; box-shadow: -10px 0 35px rgba(15, 23, 42, .20);
}
.detail-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: .75rem; }
.detail-grid .wide { grid-column: span 2; }
.action-row { display: flex; flex-wrap: wrap; gap: .35rem; justify-content: flex-end; }
.parser-result { border-left: 4px solid #3b7ddd; background:#f8fafc; padding: .75rem; border-radius: .35rem; margin-bottom: .5rem; }
.parser-result.fail { border-left-color: #dc3545; }
@media (max-width: 768px) { .detail-grid { grid-template-columns: 1fr; } .detail-grid .wide { grid-column: span 1; } .route-text { max-width: 180px; } }
