:root{--ink:#17212b;--muted:#66717f;--line:#e7e9ed;--canvas:#f7f8fa;--panel:#fff;--nav:#17212b;--accent:#e67436;--green:#168a68;--amber:#c77b09;--red:#c83b42}*{box-sizing:border-box}body{margin:0;font:14px/1.45 Inter,ui-sans-serif,system-ui,-apple-system,"Segoe UI",sans-serif;color:var(--ink);background:var(--canvas)}.sidebar{position:fixed;inset:0 auto 0 0;width:245px;background:var(--nav);color:#dce3ea;padding:24px 16px;display:flex;flex-direction:column}.brand{display:flex;align-items:center;gap:10px;font-size:16px;line-height:1.05;color:#fff}.brand-mark{display:grid;place-items:center;width:36px;height:36px;border-radius:11px;background:var(--accent);font-weight:800}.sidebar nav{display:grid;gap:5px;margin-top:42px}.sidebar nav button{border:0;background:transparent;color:#b7c2cc;text-align:left;border-radius:8px;padding:12px 14px;font:inherit;cursor:pointer}.sidebar nav button:hover,.sidebar nav button.active{background:#293848;color:#fff}.user-card{margin-top:auto;padding:14px;background:#233240;border-radius:10px;display:grid;gap:3px}.user-card small{color:#9eb0c0}.user-card a{color:#f7b08b;margin-top:6px;text-decoration:none}main{margin-left:245px;padding:32px;max-width:1600px}header,.toolbar{display:flex;align-items:center;justify-content:space-between;gap:16px;margin-bottom:28px}.eyebrow{margin:0;color:var(--accent);font-size:12px;font-weight:700;letter-spacing:.08em;text-transform:uppercase}h1{font-size:28px;margin:3px 0}h2{font-size:20px;margin:0}h3{font-size:16px;margin:0 0 14px}.header-date{color:var(--muted)}.view{display:none}.view.active{display:block}.kpi-grid{display:grid;grid-template-columns:repeat(4,minmax(150px,1fr));gap:16px;margin-bottom:20px}.kpi,.panel{background:var(--panel);border:1px solid var(--line);border-radius:13px;box-shadow:0 3px 12px #17212b08}.kpi{padding:18px}.kpi p{color:var(--muted);margin:0 0 7px}.kpi b{font-size:25px}.two-col{display:grid;grid-template-columns:1.3fr 1fr;gap:20px}.panel{padding:20px}.panel-title{display:flex;justify-content:space-between;align-items:center;margin-bottom:12px}.list{display:grid}.list-row{display:flex;gap:12px;align-items:center;padding:12px 0;border-bottom:1px solid var(--line)}.list-row:last-child{border:0}.avatar{width:34px;height:34px;border-radius:50%;background:#fce8dc;color:var(--accent);display:grid;place-items:center;font-weight:700}.grow{flex:1}.muted{color:var(--muted);font-size:12px}.summary{display:grid;gap:14px}.summary div{display:flex;justify-content:space-between;padding-bottom:12px;border-bottom:1px solid var(--line)}.toolbar p{margin:3px 0 0;color:var(--muted)}button,.primary{font:inherit}.primary{border:0;border-radius:8px;background:var(--accent);color:white;padding:10px 15px;font-weight:700;cursor:pointer}.primary:hover{background:#ce5c22}.link-btn{border:0;background:none;color:var(--accent);font-weight:700;cursor:pointer}.filters{display:flex;gap:10px;margin-bottom:16px}.filters input:first-child{flex:1}input,select,textarea{width:100%;border:1px solid #d9dde3;border-radius:8px;padding:10px;background:#fff;font:inherit;color:inherit}label{display:grid;gap:6px;font-weight:600;margin-bottom:13px}.table-wrap{overflow:auto;padding:0}table{width:100%;border-collapse:collapse;white-space:nowrap}th,td{padding:13px 16px;text-align:left;border-bottom:1px solid var(--line)}th{color:var(--muted);font-size:11px;letter-spacing:.04em;text-transform:uppercase;background:#fbfbfc}.badge{font-size:11px;font-weight:700;text-transform:capitalize;padding:5px 8px;border-radius:99px;background:#edf0f3;color:#4d5865}.status-delivered,.status-approved{background:#dff5ec;color:var(--green)}.status-out_for_delivery,.status-assigned,.status-submitted{background:#fff1dc;color:var(--amber)}.status-failed,.status-cancelled,.status-returned{background:#fbe5e7;color:var(--red)}.recon-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:16px}.recon-card{padding:18px;background:#fff;border:1px solid var(--line);border-radius:12px}.recon-card dl{display:grid;grid-template-columns:1fr auto;gap:8px;margin:16px 0}.recon-card dt{color:var(--muted)}.recon-card dd{margin:0;font-weight:700}.actions{display:flex;gap:7px;flex-wrap:wrap}.secondary{padding:8px 10px;border:1px solid var(--line);border-radius:7px;background:white;cursor:pointer}.danger{color:var(--red)}dialog{border:0;border-radius:15px;padding:0;width:min(520px,calc(100% - 24px));box-shadow:0 20px 70px #0004}dialog::backdrop{background:#17212b88}#modal-form{padding:24px;position:relative}.close{position:absolute;right:14px;top:11px;border:0;background:none;font-size:24px;cursor:pointer}.modal-title{margin:0 0 18px}.modal-grid{display:grid;grid-template-columns:1fr 1fr;gap:0 12px}.full{grid-column:1/-1}.error{background:#fbe5e7;color:#9a2931;border-radius:8px;padding:10px;margin:10px 0}.login-page{min-height:100vh;display:grid;place-items:center;background:linear-gradient(135deg,#17212b,#304d63)}.login-card{width:min(410px,calc(100% - 30px));padding:32px;background:white;border-radius:16px;box-shadow:0 20px 60px #0005}.login-card .brand{color:var(--ink)}.login-card h1{margin-top:28px}.login-card p{color:var(--muted);margin-bottom:24px}.login-card .primary{width:100%;margin-top:5px}@media(max-width:850px){.sidebar{position:sticky;top:0;width:100%;height:auto;z-index:2;padding:12px 16px;display:flex;flex-direction:row;align-items:center}.sidebar nav{display:flex;margin:0 0 0 16px;overflow:auto}.sidebar nav button{white-space:nowrap;padding:8px}.user-card{display:none}main{margin:0;padding:20px}.kpi-grid{grid-template-columns:repeat(2,1fr)}.two-col{grid-template-columns:1fr}.filters{flex-wrap:wrap}.filters>*{min-width:140px}.header-date{display:none}}@media(max-width:480px){main{padding:16px}.kpi-grid{gap:10px}.kpi{padding:13px}.kpi b{font-size:20px}.toolbar{align-items:flex-start}.toolbar .primary{white-space:nowrap}.modal-grid{grid-template-columns:1fr}.full{grid-column:auto}}

/* Mobile navigation hotfix — touch-first, scroll-safe sidebar */
@media (max-width: 850px) {
  body { overflow-x: hidden; }

  .sidebar {
    position: sticky;
    top: 0;
    width: 100%;
    height: auto;
    min-height: 68px;
    z-index: 20;
    padding: 12px 16px 10px;
    display: block;
    box-shadow: 0 2px 10px rgba(0,0,0,.18);
  }

  .brand { min-height: 44px; font-size: 15px; }
  .brand-mark { width: 36px; height: 36px; flex: 0 0 36px; }

  .sidebar nav {
    display: flex;
    gap: 8px;
    margin: 10px -16px -10px;
    padding: 0 16px 10px;
    overflow-x: auto;
    overflow-y: hidden;
    -webkit-overflow-scrolling: touch;
    scrollbar-width: none;
  }
  .sidebar nav::-webkit-scrollbar { display: none; }

  .sidebar nav button {
    min-height: 44px;
    flex: 0 0 auto;
    padding: 10px 14px;
    white-space: nowrap;
    font-size: 14px;
  }

  .sidebar nav button:focus-visible,
  button:focus-visible,
  a:focus-visible {
    outline: 3px solid #f7b08b;
    outline-offset: 2px;
  }

  .user-card { display: none; }
  main { margin-left: 0; width: 100%; max-width: none; padding: 24px 20px; }
  header { margin-bottom: 24px; }
  .header-date { display: none; }
  .toolbar { align-items: flex-start; }
  .toolbar > .actions { justify-content: flex-end; }
  .filters { display: grid; grid-template-columns: 1fr 1fr; }
  .filters input:first-child { grid-column: 1 / -1; }
  .table-wrap { border-radius: 10px; }
  th, td { padding: 12px; }
}

@media (max-width: 480px) {
  .sidebar { padding: 10px 12px 8px; }
  .sidebar nav { margin: 8px -12px -8px; padding: 0 12px 8px; }
  .sidebar nav button { padding: 10px 12px; }
  main { padding: 18px 14px 28px; }
  header { display: block; }
  header .actions { margin-top: 12px; }
  h1 { font-size: 24px; }
  .toolbar { display: block; margin-bottom: 18px; }
  .toolbar > .actions { margin-top: 12px; }
  .toolbar .actions > button { min-height: 44px; }
  .filters { grid-template-columns: 1fr; }
  .filters input:first-child { grid-column: auto; }
  .kpi-grid { grid-template-columns: repeat(2, minmax(0,1fr)); }
  .kpi { min-width: 0; }
  .kpi b { font-size: 19px; overflow-wrap: anywhere; }
  .recon-grid { grid-template-columns: 1fr; }
  .modal-grid { grid-template-columns: 1fr; }
  dialog { width: calc(100% - 20px); max-height: calc(100vh - 20px); overflow-y: auto; }
}


/* Navigation drawer and sidebar scrolling hotfix */
.sidebar { overflow-y: auto; overscroll-behavior: contain; scrollbar-width: thin; scrollbar-color: #425466 #17212b; }
.sidebar::-webkit-scrollbar { width: 7px; }
.sidebar::-webkit-scrollbar-thumb { background: #425466; border-radius: 8px; }
.sidebar nav { flex: 1 1 auto; min-height: 0; overflow-y: auto; padding-bottom: 16px; }
.user-card { flex: 0 0 auto; }
.mobile-nav-toggle, .nav-scrim { display: none; }

@media (max-width: 850px) {
  .mobile-nav-toggle {
    display: grid; place-content: center; gap: 4px; position: fixed; top: 12px; left: 12px; z-index: 40;
    width: 44px; height: 44px; padding: 0; border: 1px solid rgba(255,255,255,.16); border-radius: 10px;
    background: #17212b; box-shadow: 0 2px 10px rgba(0,0,0,.22); cursor: pointer;
  }
  .mobile-nav-toggle span { display: block; width: 19px; height: 2px; border-radius: 4px; background: #fff; transition: transform .2s ease, opacity .2s ease; }
  .mobile-nav-toggle[aria-expanded="true"] span:nth-child(1) { transform: translateY(6px) rotate(45deg); }
  .mobile-nav-toggle[aria-expanded="true"] span:nth-child(2) { opacity: 0; }
  .mobile-nav-toggle[aria-expanded="true"] span:nth-child(3) { transform: translateY(-6px) rotate(-45deg); }
  .nav-scrim { position: fixed; inset: 0; z-index: 29; background: rgba(8,16,24,.48); opacity: 0; pointer-events: none; transition: opacity .2s ease; }
  .nav-scrim.visible { display: block; opacity: 1; pointer-events: auto; }
  .sidebar {
    position: fixed; inset: 0 auto 0 0; width: min(82vw, 300px); height: 100dvh; padding: 20px 16px;
    display: flex; flex-direction: column; transform: translateX(-105%); transition: transform .24s ease; box-shadow: 8px 0 26px rgba(0,0,0,.22);
  }
  .sidebar.mobile-open { transform: translateX(0); }
  .sidebar nav { display: grid; margin: 32px 0 0; padding: 0 0 12px; overflow-y: auto; overflow-x: hidden; }
  .sidebar nav button { min-height: 46px; white-space: normal; }
  .user-card { display: grid; margin-top: 12px; }
  body.nav-open { overflow: hidden; }
  main { margin-left: 0; padding: 76px 20px 24px; }
}
@media (max-width: 480px) {
  main { padding: 72px 14px 24px; }
  .mobile-nav-toggle { top: 10px; left: 10px; }
}
@media (prefers-reduced-motion: reduce) {
  .sidebar, .nav-scrim, .mobile-nav-toggle span { transition: none; }
}


/* ===== Maps module styles ===== */
.map-wrap { height: 60vh; min-height: 360px; border: 1px solid var(--line); border-radius: 13px; overflow: hidden; margin-bottom: 18px; background: #eef0f3; }
#live-map { width: 100%; height: 100%; }
#live-map .muted { padding: 18px; }
@media (max-width: 850px) { .map-wrap { height: 50vh; } }
@media (max-width: 480px) { .map-wrap { height: 45vh; border-radius: 10px; } }
