.shipment-v2-head{display:flex;justify-content:space-between;gap:18px;align-items:flex-start;margin-bottom:18px}.shipment-v2-id{display:flex;align-items:center;gap:12px;flex-wrap:wrap}.shipment-v2-id h1{font-size:24px;margin:0;font-weight:850;color:var(--ind-text)}.shipment-v2-ref{font-size:12px;color:var(--ind-muted);margin-top:3px}.shipment-v2-actions{display:flex;gap:8px}.shipment-v2-status{display:inline-flex;align-items:center;padding:6px 10px;border-radius:999px;font-size:11px;font-weight:800;letter-spacing:.02em}.shipment-v2-status.delivered{background:#EAF8EF;color:#15803D}.shipment-v2-status.failed{background:#FEF0F0;color:#B91C1C}.shipment-v2-status.return{background:#F3E8FF;color:#6D28D9}.shipment-v2-status.active{background:var(--brand-primary-soft);color:var(--brand-primary)}
.journey-progress{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));margin:0 0 18px;background:#fff;border:1px solid var(--ind-border);border-radius:14px;padding:16px}.journey-stage{position:relative;text-align:center;color:#94a3b8;font-size:11px;font-weight:750}.journey-stage:not(:last-child):after{content:"";position:absolute;left:60%;right:-40%;top:9px;height:2px;background:#e2e8f0}.journey-stage-dot{width:20px;height:20px;margin:0 auto 7px;border-radius:50%;background:#e2e8f0;border:4px solid #fff;box-shadow:0 0 0 1px #cbd5e1;position:relative;z-index:2}.journey-stage.done{color:var(--ind-text)}.journey-stage.done .journey-stage-dot{background:var(--brand-primary);box-shadow:0 0 0 1px var(--brand-primary)}.journey-stage.done:not(:last-child):after{background:var(--brand-primary)}.journey-stage.final.done .journey-stage-dot{background:var(--status-success);box-shadow:0 0 0 1px var(--status-success)}
.shipment-v2-tabs{border-bottom:1px solid var(--ind-border);gap:2px;margin-bottom:16px}.shipment-v2-tabs .nav-link{border:0;border-bottom:2px solid transparent;color:#475569;font-size:13px;font-weight:700;padding:11px 15px}.shipment-v2-tabs .nav-link.active{color:var(--brand-primary);border-bottom-color:var(--brand-primary);background:transparent}
.shipment-summary-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px}.shipment-info-card{background:#fff;border:1px solid var(--ind-border);border-radius:14px;overflow:hidden;box-shadow:0 3px 12px rgba(15,23,42,.035)}.shipment-info-card h3{font-size:13px;font-weight:850;margin:0;padding:13px 15px;border-bottom:1px solid var(--ind-border)}.shipment-info-body{padding:14px 15px;display:grid;gap:11px}.info-row label{display:block;color:#64748b;font-size:10px;font-weight:800;text-transform:uppercase;letter-spacing:.04em;margin-bottom:2px}.info-row strong,.info-row span{font-size:12.5px;color:#172033;line-height:1.35;word-break:break-word}.info-grid-2{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:11px}
.journey-map-card{margin-top:14px;background:#fff;border:1px solid var(--ind-border);border-radius:14px;overflow:hidden}.journey-map-head{display:flex;align-items:center;justify-content:space-between;padding:12px 15px;border-bottom:1px solid var(--ind-border)}.journey-map-head h3{font-size:13px;font-weight:850;margin:0}.journey-map-meta{font-size:11px;color:var(--ind-muted)}#shipmentJourneyMap{height:440px;width:100%;background:#eef2f7}.journey-map-controls{position:absolute;z-index:500;right:12px;top:12px;display:flex;gap:6px;flex-wrap:wrap;justify-content:flex-end}.journey-map-wrap{position:relative}.journey-map-controls button{background:#fff;border:1px solid #dbe3ec;border-radius:8px;padding:6px 9px;font-size:10.5px;font-weight:750;box-shadow:0 2px 8px rgba(15,23,42,.08)}.journey-tag{background:white!important;border:1px solid #dbe3ec!important;border-radius:9px!important;box-shadow:0 4px 12px rgba(15,23,42,.12)!important;color:#172033!important;font-weight:800!important;padding:5px 8px!important}.journey-tag:before{display:none!important}.rider-tag{border-color:var(--brand-primary)!important;color:var(--brand-primary)!important}.pickup-tag{border-color:var(--status-info)!important}.delivery-tag{border-color:var(--status-success)!important}
.timeline-card-v2{background:#fff;border:1px solid var(--ind-border);border-radius:14px;overflow:hidden}.timeline-head-v2{padding:13px 16px;border-bottom:1px solid var(--ind-border);display:flex;align-items:center;justify-content:space-between}.timeline-head-v2 h3{font-size:14px;font-weight:850;margin:0}.shipment-timeline{position:relative;padding:18px 18px 20px 24px;max-height:720px;overflow-y:auto}.shipment-timeline:before{content:"";position:absolute;left:31px;top:27px;bottom:28px;width:2px;background:#dbe3ec}.shipment-timeline-item{position:relative;padding-left:34px;padding-bottom:24px}.shipment-timeline-item:last-child{padding-bottom:2px}.shipment-timeline-dot{position:absolute;left:0;top:3px;width:16px;height:16px;border-radius:50%;background:var(--brand-primary);border:4px solid white;box-shadow:0 0 0 2px var(--brand-primary);z-index:2}.shipment-timeline-item.delivered .shipment-timeline-dot{background:var(--status-success);box-shadow:0 0 0 2px var(--status-success)}.shipment-timeline-item.failed .shipment-timeline-dot{background:var(--status-danger);box-shadow:0 0 0 2px var(--status-danger)}.shipment-timeline-item.warning .shipment-timeline-dot{background:var(--status-warning);box-shadow:0 0 0 2px var(--status-warning)}.shipment-timeline-item.return .shipment-timeline-dot{background:var(--status-return);box-shadow:0 0 0 2px var(--status-return)}.shipment-timeline-item.pickup .shipment-timeline-dot{background:var(--status-info);box-shadow:0 0 0 2px var(--status-info)}.shipment-timeline-item.latest .shipment-timeline-dot:after{content:"";position:absolute;inset:-8px;border:2px solid currentColor;border-radius:50%;animation:journeyPulse 1.8s infinite;opacity:.25}@keyframes journeyPulse{70%{transform:scale(1.45);opacity:0}100%{transform:scale(1.45);opacity:0}}.timeline-top{display:flex;justify-content:space-between;gap:12px}.timeline-status{font-size:13px;font-weight:850;color:#172033}.timeline-time{font-size:10.5px;font-weight:650;color:#7b8798;white-space:nowrap}.timeline-actor{margin-top:4px;font-size:11.5px;font-weight:700;color:#334155}.timeline-actor span{color:#7b8798;font-weight:550}.timeline-location{margin-top:5px;font-size:11.5px;color:#475569;cursor:pointer}.timeline-place{font-weight:700}.timeline-coords{display:block;font-size:10px;color:#94a3b8;margin-top:1px}.timeline-note{font-size:11.5px;color:#475569;margin-top:5px}.timeline-error{color:#b91c1c}.timeline-proof{display:inline-flex;margin-top:7px;font-size:10.5px;font-weight:750;color:var(--brand-primary);text-decoration:none;border:1px solid var(--brand-primary-border);border-radius:7px;padding:4px 7px}.timeline-empty{padding:44px;text-align:center;color:#64748b}
.detail-layout-2{display:grid;grid-template-columns:minmax(0,1fr) 360px;gap:14px}.action-stack{display:grid;gap:14px}.change-table th{font-size:10px;text-transform:uppercase;letter-spacing:.04em;color:#64748b}.change-table td{font-size:12px;vertical-align:middle}
@media(max-width:1050px){.shipment-summary-grid{grid-template-columns:1fr 1fr}.shipment-info-card:first-child{grid-column:1/-1}.detail-layout-2{grid-template-columns:1fr}}
@media(max-width:700px){.shipment-v2-head{flex-direction:column}.shipment-summary-grid{grid-template-columns:1fr}.shipment-info-card:first-child{grid-column:auto}.journey-progress{overflow-x:auto;grid-template-columns:repeat(5,120px)}#shipmentJourneyMap{height:360px}.timeline-top{flex-direction:column;gap:2px}.timeline-time{white-space:normal}}

/* ============================================================
   V2.1 HARDENING: shipment workspace/list/details consistency
   Loaded globally after the shared white-label theme.
   ============================================================ */
.ind-page-shell .page-body { padding-top: 18px; }
.ind-page-shell .ind-page-head,
.ind-page-shell .shipment-v2-head { margin-bottom: 18px; }
.ind-page-shell .ind-eyebrow { color: var(--brand-primary); font-weight: 800; letter-spacing: .08em; text-transform: uppercase; font-size: 10px; }
.ind-page-shell h1 { color: var(--ind-text); letter-spacing: -.02em; }
.ind-status-tabs { display:flex; flex-wrap:wrap; gap:8px; margin: 0 0 16px; }
.ind-status-tabs a { display:inline-flex; align-items:center; gap:8px; min-height:36px; padding:7px 11px; border:1px solid var(--ind-border); border-radius:10px; background:#fff; color:#475569!important; font-size:12px; font-weight:700; text-decoration:none!important; }
.ind-status-tabs a strong { display:grid; place-items:center; min-width:20px; height:20px; padding:0 5px; border-radius:999px; background:#f1f5f9; color:#64748b; font-size:10px; }
.ind-status-tabs a:hover { border-color:var(--brand-primary-border); background:var(--brand-primary-soft); }
.ind-status-tabs a.active { color:var(--brand-primary)!important; }
.ind-shipment-filterbar { display:grid; grid-template-columns:minmax(240px,1.3fr) minmax(180px,.8fr) minmax(180px,.8fr) 145px 145px auto 1fr auto; gap:9px; align-items:center; }
.ind-search-field { min-width:0; }
.ind-table-wrap { margin-top:14px; border:1px solid var(--ind-border); border-radius:12px; overflow:auto; background:#fff; }
.ind-table { width:100%; border-collapse:separate; border-spacing:0; }
.ind-table thead th { position:sticky; top:0; z-index:2; background:#f8fafc; color:#64748b; font-size:10px; font-weight:800; text-transform:uppercase; letter-spacing:.05em; padding:12px 13px; border-bottom:1px solid var(--ind-border); white-space:nowrap; }
.ind-table tbody td { padding:13px; border-bottom:1px solid #edf1f5; vertical-align:middle; font-size:12px; color:#334155; }
.ind-table tbody tr:last-child td { border-bottom:0; }
.ind-table tbody tr:hover td { background:#fbfdff; }
.ind-tracking-link { color:var(--brand-primary)!important; font-weight:800; text-decoration:none!important; }
.ind-cell-sub { display:block; margin-top:2px; color:#94a3b8; font-size:10px; font-weight:500; }
.ind-status { display:inline-flex; align-items:center; min-height:25px; padding:4px 9px; border-radius:999px; font-size:10px; font-weight:800; white-space:nowrap; }
.ind-row-actions { display:flex; justify-content:flex-end; align-items:center; gap:6px; white-space:nowrap; }

/* Timeline is the visual source of truth; no raw stacked database-style rows. */
#shipmentTimeline.shipment-timeline { background:#fff; }
.shipment-timeline-item { min-height:54px; }
.shipment-timeline-dot { z-index:2; }
.timeline-status { letter-spacing:-.01em; }
.timeline-location { display:flex; flex-direction:column; width:max-content; max-width:100%; padding:5px 8px; border-radius:8px; background:#f8fafc; border:1px solid #eef2f7; }
.timeline-location:hover { border-color:var(--brand-primary-border); background:var(--brand-primary-soft); }
.timeline-proof { background:#fff; }
.timeline-proof:hover { background:var(--brand-primary); color:var(--brand-primary-contrast); }

/* Keep Leaflet labels readable over all tenant brand colors. */
#shipmentJourneyMap .leaflet-tooltip.journey-tag { max-width:220px; white-space:normal; text-align:center; line-height:1.25; }

@media (max-width: 1180px) {
  .ind-shipment-filterbar { grid-template-columns:1fr 1fr 1fr; }
  .ind-shipment-filterbar .ind-search-field { grid-column:1/-1; }
  .ind-shipment-filterbar .ind-export-link { justify-self:end; }
}
@media (max-width: 760px) {
  .ind-shipment-filterbar { grid-template-columns:1fr; }
  .ind-shipment-filterbar .ind-search-field { grid-column:auto; }
  .ind-shipment-filterbar .ind-export-link { justify-self:start; }
  .ind-status-tabs { overflow-x:auto; flex-wrap:nowrap; padding-bottom:3px; }
  .ind-status-tabs a { flex:0 0 auto; }
  .ind-table { min-width:920px; }
}

/* ============================================================
   V2.3 FINAL SHIPMENT LOCK
   Final = Delivered / Returned / Cancelled / Closed.
   Operational mutation controls disappear, read-only history stays visible.
   ============================================================ */
.shipment-final-banner {
    display:flex;
    align-items:flex-start;
    gap:12px;
    margin:0 0 16px;
    padding:12px 14px;
    border:1px solid color-mix(in srgb,var(--status-success) 30%,#fff);
    border-radius:12px;
    background:color-mix(in srgb,var(--status-success) 8%,#fff);
    color:#245337;
}
.shipment-final-banner-icon {
    width:30px;
    height:30px;
    flex:0 0 30px;
    display:grid;
    place-items:center;
    border-radius:50%;
    background:#fff;
    border:1px solid color-mix(in srgb,var(--status-success) 25%,#fff);
}
.shipment-final-banner strong { display:block; font-size:12.5px; font-weight:850; }
.shipment-final-banner span { display:block; margin-top:2px; font-size:11.5px; color:#53705f; }
.shipment-final-inline-lock,
.shipment-final-readonly-card { display:none; }
.shipment-final-locked [data-final-mutable] { display:none !important; }
.shipment-final-locked [data-final-readonly] { display:block !important; }
.shipment-final-inline-lock {
    padding:10px 12px;
    border:1px dashed var(--ind-border);
    border-radius:10px;
    color:var(--ind-muted);
    background:#f8fafc;
    font-size:11.5px;
    font-weight:650;
}
.shipment-final-locked .ind-live-badge {
    background:var(--status-success-soft)!important;
    color:var(--status-success)!important;
    border-color:color-mix(in srgb,var(--status-success) 28%,#fff)!important;
}
