/* Route planner. Text colors meet WCAG 2.2 AA contrast on their backgrounds. */
.planner{display:grid;grid-template-columns:minmax(0,1fr) minmax(320px,390px);gap:18px;align-items:start}
.pr-side{display:grid;gap:18px;min-width:0}
.pr-routes{min-width:0}
.planner .btn.small,.pr-dialog .btn.small{min-height:36px;padding:7px 12px;font-size:13px}
@media (pointer:coarse){.planner .btn,.planner .btn.small,.pr-status .btn{min-height:44px}}
.planner input:focus-visible,.planner select:focus-visible,.planner a:focus-visible,.pr-status a:focus-visible,.pr-dialog input:focus-visible,#needs-driver:focus-visible{outline:3px solid #0058B5;outline-offset:2px}
.pr-empty p{margin:0 0 16px}

/* Status strip */
.pr-status{display:flex;flex-wrap:wrap;align-items:center;gap:12px 28px;background:#fff;border:1px solid var(--line);border-radius:13px;padding:14px 18px;margin-bottom:18px}
.pr-status.is-sent{background:#f2fbf8;border-color:#bfe8dc}
.pr-counts{display:flex;flex-wrap:wrap;gap:8px 26px;margin:0}
.pr-counts dt{font-size:12px;font-weight:700;color:#55647a}
.pr-counts dd{margin:2px 0 0;font:700 22px/1.1 Outfit,-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif;color:var(--ink)}
.pr-counts .is-waiting dd{color:#8a4b00}
.pr-ready{display:flex;align-items:flex-start;gap:8px;font-size:13px;line-height:1.5;flex:1 1 280px}
.pr-ready svg{width:20px;height:20px;flex:none;margin-top:1px}
.pr-ready.ok{color:#0f6b56}
.pr-ready.todo{color:#6b4a00}
.pr-ready a{color:#0058B5;font-weight:700;white-space:nowrap}
.pr-ready strong{color:var(--ink)}
.pr-estimate{flex-basis:100%;margin:0;font-size:12px;color:#3f4e63}
.pr-estimate .text-btn{color:#0058B5;min-height:32px}

/* Driver route cards */
.pr-card{background:#fff;border:1px solid var(--line);border-left:5px solid var(--driver);border-radius:13px;padding:16px 18px;margin-bottom:14px;box-shadow:0 3px 16px #182a4206}
.pr-card.is-over{border-color:#f1b8bd;border-left-color:var(--driver)}
.pr-card.is-drop{outline:3px dashed #0058B5;outline-offset:2px}
.pr-card-head{display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.pr-driver{flex:1 1 200px;min-width:0}
.pr-driver h3{font-size:17px;letter-spacing:-.2px}
.pr-meta{margin-top:3px;font-size:13px;color:#3f4e63}
.pr-label{font-size:12px;font-weight:700;color:#55647a;min-width:44px}
.pr-load{display:flex;align-items:center;gap:10px;margin-top:12px}
.pr-bar{flex:1;max-width:260px;height:8px;border-radius:99px;background:#e8edf3;overflow:hidden}
.pr-bar i{display:block;height:100%;background:var(--driver);border-radius:99px}
.is-over .pr-bar i{background:#b42318}
.pr-load-text{font-size:12px;font-weight:700;color:var(--ink)}
.pr-load-text.is-over{color:#a3222c}
.pr-areas{display:flex;flex-wrap:wrap;align-items:center;gap:8px 10px;margin-top:10px}
.pr-chips{display:flex;flex-wrap:wrap;gap:6px;list-style:none;margin:0;padding:0}
.pr-chip{display:inline-flex;align-items:center;gap:6px;border:1px solid #d5dde7;border-radius:99px;padding:4px 10px;font-size:12px;font-weight:700;color:var(--ink);background:#fafbfe}
.pr-chip i{width:9px;height:9px;border-radius:50%;flex:none;box-shadow:inset 0 0 0 1px #0002}
.pr-auto{font-size:12px;color:#3f4e63;flex:1 1 220px}
.pr-areas.is-empty{padding:10px 12px;border:1px dashed #cfd8e3;border-radius:10px;background:#fafbfe}
.pr-problems{display:flex;gap:10px;margin-top:12px;padding:12px 14px;border:1px solid #f1b8bd;border-left:4px solid #b42318;border-radius:10px;background:#fff5f5;color:#5c1a14;font-size:13px;line-height:1.5}
.pr-problems svg{width:20px;height:20px;flex:none;color:#b42318;margin-top:1px}
.pr-problems strong{color:#8f1a27}
.pr-problems ul{margin:4px 0 6px;padding-left:18px}
.pr-problems p{font-size:12px}
.pr-sorted{margin:12px 0 0;padding:9px 12px;border-radius:9px;background:#eef6ff;border:1px solid #cfe3fb;color:#0b3d75;font-size:13px}
.pr-sorted .text-btn{color:#0058B5;text-decoration:underline;min-height:32px}

/* Stop rows */
.pr-stops{list-style:none;margin:14px 0 0;padding:0;border-top:1px solid var(--line)}
.pr-stop{display:grid;grid-template-columns:14px 26px minmax(0,1fr) auto;gap:10px;align-items:start;padding:11px 4px;border-bottom:1px solid #eef1f5;background:#fff}
.pr-stop.is-dragging{opacity:.45}
.pr-stop.drop-before{box-shadow:inset 0 3px 0 #0058B5}
.pr-stop.drop-after{box-shadow:inset 0 -3px 0 #0058B5}
.pr-grip{display:flex;justify-content:center;padding-top:5px;cursor:grab;color:#6b7889}
.pr-grip svg{width:10px;height:18px;fill:currentColor}
.pr-num{width:26px;height:26px;border-radius:50%;display:grid;place-items:center;font-size:12px;font-weight:800;color:#26364d;background:#eef1f7;box-shadow:inset 0 0 0 2px var(--driver)}
.pr-stop-line{display:flex;justify-content:space-between;align-items:baseline;gap:10px}
.pr-stop-line strong{font-size:14px;color:var(--ink);overflow-wrap:anywhere}
.pr-eta{font-size:13px;font-weight:700;color:var(--ink);font-variant-numeric:tabular-nums;white-space:nowrap}
.pr-stop.is-late .pr-eta{color:#a3222c}
.pr-stop-sub{display:block;font-size:12px;color:#55647a;margin-top:2px;line-height:1.45;overflow-wrap:anywhere}
.pr-flag{display:inline-flex;align-items:center;gap:6px;margin:6px 6px 0 0;padding:3px 8px;border-radius:6px;background:#fff4e0;color:#7a4300;font-size:12px;font-weight:700}
.pr-flag svg{width:14px;height:14px;flex:none}
.pr-flag.info{background:#eef6ff;color:#0b3d75}
.pr-stop-actions{display:flex;gap:6px;flex-wrap:wrap;justify-content:flex-end}
.pr-drop-empty{margin-top:14px;padding:18px;border:2px dashed #cfd8e3;border-radius:10px;text-align:center;font-size:13px;color:#55647a}
.pr-card.is-drop .pr-drop-empty{border-color:#0058B5;color:#0b3d75}
.pr-card-actions{display:flex;flex-wrap:wrap;gap:8px;margin-top:12px}

/* Needs a driver */
.pr-waiting .panel-header,.pr-outside .panel-header{margin-bottom:8px}
.pr-waiting.is-drop{outline:3px dashed #0058B5;outline-offset:2px}
.pr-waiting .hint,.pr-outside .hint{font-size:12px;color:#55647a;margin:0}
.pr-pick-all{display:flex;margin-top:12px}
.pr-wait-list{list-style:none;margin:10px 0 0;padding:0}
.pr-wait{display:grid;grid-template-columns:auto minmax(0,1fr) auto;gap:10px;align-items:start;padding:10px 0;border-top:1px solid #eef1f5}
.pr-outside .pr-wait{grid-template-columns:minmax(0,1fr) auto}
.pr-wait input[type=checkbox]{width:20px;height:20px;margin:2px 0 0;padding:0;accent-color:var(--blue);box-shadow:none}
.pr-wait-main{display:flex;flex-direction:column;min-width:0}
.pr-wait-main label,.pr-wait-main>strong{font-size:13px;color:var(--ink);font-weight:800;cursor:pointer}
.pr-reason{display:block;margin-top:3px;font-size:12px;font-weight:600;color:#7a4300}
.pr-bulk{display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin-top:12px;padding:12px;border-radius:10px;background:#f4f7fb}
.pr-bulk span{font-size:13px;font-weight:700;color:var(--ink);flex:1 1 100%}
.pr-bulk select{flex:1 1 150px;width:auto;min-height:40px}
.pr-fill{margin-top:14px;padding-top:14px;border-top:1px solid var(--line)}
.pr-fill .hint{margin-top:6px}
.pr-clear{display:flex;align-items:center;gap:8px;margin:4px 0 0;font-size:13px;font-weight:700;color:#0f6b56}
.pr-clear svg{width:20px;height:20px;flex:none}
.pr-drop-hint{display:none;margin:12px 0 0;padding:12px;border:2px dashed #0058B5;border-radius:10px;text-align:center;font-size:13px;font-weight:700;color:#0b3d75}
.planner.is-dragging .pr-drop-hint{display:block}
.pr-map{min-height:0}
.pr-map .map{height:360px;min-height:360px}
.pr-map .map-legend{flex-wrap:wrap;max-width:calc(100% - 80px)}

/* Dialogs */
.pr-dialog fieldset{border:0;padding:0;margin:0 0 14px;min-width:0}
.pr-dialog legend{font-size:13px;font-weight:800;color:var(--ink);margin-bottom:8px;padding:0}
.pr-dialog .check-row{display:flex;margin:6px 0}
.pr-dialog .check-row input{accent-color:var(--blue);box-shadow:none}
.pr-dialog p{font-size:13px;line-height:1.55;color:#3f4e63}
.pr-dialog .hint{font-size:12px;color:#55647a}
.pr-lead{margin:0}
.pr-position{display:flex;align-items:center;gap:10px;margin:6px 0 4px 30px}
.pr-position label{font-size:13px;color:var(--ink);font-weight:700}
.pr-position input{width:96px}
.pr-area-option label{display:flex;gap:10px;align-items:flex-start;cursor:pointer}
.pr-area-option i{width:12px;height:12px;border-radius:3px;flex:none;margin-top:5px;box-shadow:inset 0 0 0 1px #0003}
.pr-area-option small,.pr-add-row small{display:block;font-size:12px;font-weight:500;color:#55647a}
.pr-area-options{display:grid;gap:4px;margin-top:12px;padding-top:12px;border-top:1px solid var(--line)}
.pr-add-group ul{list-style:none;margin:0;padding:0;max-height:260px;overflow:auto;border-top:1px solid #eef1f5}
.pr-add-row{padding:8px 0;border-bottom:1px solid #eef1f5;margin:0!important}
.pr-add-row[hidden]{display:none!important}
.pr-dialog .field{margin-bottom:14px}
#add-error{color:#a3222c;font-weight:700;margin:0}
#add-error:empty{display:none}

/* Dashboard summary */
.pr-summary{list-style:none;margin:0;padding:0}
.pr-summary li{display:flex;flex-wrap:wrap;align-items:center;gap:6px 10px;padding:12px 0;border-top:1px solid #eef1f5;font-size:13px}
.pr-summary li:first-child{border-top:0}
.pr-summary span:not(.dot):not(.pill){color:#55647a;font-size:12px;flex-basis:100%;padding-left:20px}

@media(max-width:1100px){.planner{grid-template-columns:1fr}.pr-map .map{height:320px;min-height:320px}}
@media(max-width:690px){
  .pr-status{padding:12px 14px;gap:10px 18px}
  .pr-card{padding:14px}
  .pr-stop{grid-template-columns:26px minmax(0,1fr)}
  .pr-grip{display:none}
  .pr-stop-actions{grid-column:1/-1;justify-content:flex-start}
  .pr-wait{grid-template-columns:auto minmax(0,1fr)}
  .pr-wait .btn{grid-column:2;justify-self:start}
  .pr-position{margin-left:0}
}
@media (prefers-reduced-motion:reduce){.planner *{transition:none!important;animation:none!important}}
