/* Schedule Planner Route Lines — Phase 1 */
#calendarPage .planner-real-map-shell{position:relative;overflow:hidden;}
#calendarPage .planner-route-live-status{
  position:absolute;left:12px;bottom:12px;z-index:500;
  max-width:calc(100% - 24px);padding:6px 9px;border:1px solid rgba(15,45,88,.14);
  border-radius:8px;background:rgba(255,255,255,.94);box-shadow:0 2px 8px rgba(15,45,88,.16);
  color:#18324f;font-size:10px;font-weight:800;line-height:1.2;pointer-events:none;
}
#calendarPage .planner-route-live-status.is-empty{color:#66788a;font-weight:700;}
#calendarPage .planner-route-number{
  width:28px!important;height:28px!important;background:#0e2c55!important;border:3px solid #fff!important;
  box-shadow:0 3px 9px rgba(15,45,88,.38)!important;font-size:11px!important;
}
#calendarPage .planner-route-line-casing,
#calendarPage .planner-route-line-active{stroke-linecap:round;stroke-linejoin:round;}
#calendarPage .planner-route-popup{display:grid;gap:3px;min-width:170px;}
#calendarPage .planner-route-popup strong{font-size:10px;text-transform:uppercase;letter-spacing:.04em;color:#2d7be5;}
#calendarPage .planner-route-popup b{font-size:12px;color:#14233a;}
#calendarPage .planner-route-popup span{font-size:10px;color:#607086;}
body.dark #calendarPage .planner-route-live-status{
  background:rgba(21,31,46,.94);border-color:rgba(255,255,255,.14);color:#eef4fb;
}
body.dark #calendarPage .planner-route-live-status.is-empty{color:#aab7c7;}


/* Phase 2.1 route experience polish */
#calendarPage .planner-route-arrow-host{background:transparent!important;border:0!important;pointer-events:none!important;}
#calendarPage .planner-route-arrow{display:flex;width:22px;height:22px;align-items:center;justify-content:center;color:#1769cf;font-size:15px;font-weight:900;line-height:1;text-shadow:-1px -1px 0 #fff,1px -1px 0 #fff,-1px 1px 0 #fff,1px 1px 0 #fff,0 2px 4px rgba(15,45,88,.28);transform-origin:center;}
#calendarPage .leaflet-marker-icon.is-route-selected .planner-route-number{background:#f59e0b!important;box-shadow:0 0 0 6px rgba(245,158,11,.24),0 5px 14px rgba(15,45,88,.45)!important;transform:scale(1.12);}
#calendarPage .planner-live-job.is-route-selected{outline:3px solid rgba(23,105,207,.36)!important;outline-offset:2px;box-shadow:0 0 0 2px #fff,0 10px 24px rgba(15,45,88,.18)!important;}
#calendarPage .planner-route-stop-card{transition:border-color .16s ease,box-shadow .16s ease,transform .16s ease;}
body.dark #calendarPage .planner-route-arrow{color:#69a8ff;text-shadow:-1px -1px 0 #132033,1px -1px 0 #132033,-1px 1px 0 #132033,1px 1px 0 #132033,0 2px 4px rgba(0,0,0,.5);}


/* Phase 2.2 route information and visual polish */
#calendarPage .planner-route-arrow{font-size:16px;filter:drop-shadow(0 1px 2px rgba(15,45,88,.22));}
#calendarPage .planner-route-stop-card.is-route-selected{border-color:#1468d4!important;box-shadow:0 0 0 3px rgba(20,104,212,.2),0 10px 24px rgba(15,45,88,.16)!important;}
#calendarPage .planner-route-leg-time{color:#1468d4;font-weight:850;}
#calendarPage .planner-route-leg-distance{color:#5f7085;}
#calendarPage .planner-route-final-stop{color:#1468d4;text-transform:uppercase;letter-spacing:.035em;}
#calendarPage .planner-route-status{display:inline-flex;align-items:center;justify-content:center;min-width:88px;padding:3px 8px;border-radius:999px;font-size:10px;font-weight:850;line-height:1.2;}
#calendarPage .planner-route-status.is-efficient{background:#eaf8ef;color:#16713a;border:1px solid #bce8ca;}
#calendarPage .planner-route-status.is-acceptable{background:#fff6df;color:#8b5b00;border:1px solid #f4d58a;}
#calendarPage .planner-route-status.is-review{background:#fff0ef;color:#b42318;border:1px solid #f4b8b4;}
body.dark #calendarPage .planner-route-status.is-efficient{background:rgba(38,155,83,.18);color:#8fe2ad;border-color:rgba(78,194,119,.34);}
body.dark #calendarPage .planner-route-status.is-acceptable{background:rgba(226,157,25,.18);color:#ffd179;border-color:rgba(240,178,55,.34);}
body.dark #calendarPage .planner-route-status.is-review{background:rgba(218,74,67,.2);color:#ff9f99;border-color:rgba(235,103,96,.36);}


/* Phase 2.3 final route visual polish */
#calendarPage .planner-route-arrow{font-size:15px;opacity:.96;filter:drop-shadow(0 1px 2px rgba(15,45,88,.2));}
#calendarPage .leaflet-marker-icon .planner-route-number{transition:transform .16s ease,box-shadow .16s ease,background-color .16s ease;}
#calendarPage .leaflet-marker-icon.is-route-selected{z-index:1000!important;}
#calendarPage .leaflet-marker-icon.is-route-selected .planner-route-number{
  background:#0e2c55!important;border-color:#fff!important;
  box-shadow:0 0 0 4px rgba(255,255,255,.96),0 0 0 8px rgba(20,104,212,.3),0 8px 20px rgba(15,45,88,.42)!important;
  transform:scale(1.14);
}
#calendarPage .planner-live-job.is-route-selected{
  outline:3px solid rgba(20,104,212,.46)!important;outline-offset:2px;
  box-shadow:0 0 0 2px #fff,0 12px 28px rgba(15,45,88,.2)!important;transform:translateY(-1px);
}
#calendarPage .planner-route-stop-card.is-route-selected{
  border-color:#1468d4!important;box-shadow:0 0 0 3px rgba(20,104,212,.22),0 12px 28px rgba(15,45,88,.18)!important;transform:translateY(-1px);
}
#calendarPage .planner-route-stop-meta{min-width:92px;}
#calendarPage .planner-route-leg-heading{font-size:9px;font-weight:850;letter-spacing:.045em;text-transform:uppercase;color:#7b8998;}
#calendarPage .planner-route-leg-time{font-size:13px;line-height:1.05;}
#calendarPage .planner-route-leg-distance{font-size:10px;line-height:1.05;}
#calendarPage .planner-route-final-stop{font-size:10px;line-height:1.15;text-transform:none;letter-spacing:0;color:#5f7085;}
body.dark #calendarPage .leaflet-marker-icon.is-route-selected .planner-route-number{
  background:#16457f!important;box-shadow:0 0 0 4px rgba(20,32,51,.96),0 0 0 8px rgba(105,168,255,.36),0 8px 20px rgba(0,0,0,.55)!important;
}
body.dark #calendarPage .planner-route-leg-heading{color:#9cacbd;}
body.dark #calendarPage .planner-route-final-stop{color:#aab8c8;}


/* Phase 3.0 route optimization recommendation mode */
#calendarPage #plannerOptimizeRouteBtn{
  border-color:#1769cf;background:#1769cf;color:#fff;
}
#calendarPage #plannerOptimizeRouteBtn:hover{background:#0f58b5;border-color:#0f58b5;}
#calendarPage #plannerOptimizeRouteBtn[disabled]{opacity:.58;cursor:wait;}
#calendarPage .planner-route-optimizer-panel{
  margin-top:10px;padding:12px;border:1px solid #cdd9e8;border-radius:10px;
  background:#f8fbff;box-shadow:0 6px 18px rgba(15,45,88,.09);
}
#calendarPage .planner-route-optimizer-panel[hidden]{display:none!important;}
#calendarPage .planner-route-optimizer-head{display:flex;justify-content:space-between;gap:10px;align-items:flex-start;}
#calendarPage .planner-route-optimizer-head b{font-size:12px;color:#14233a;}
#calendarPage .planner-route-optimizer-head small{display:block;margin-top:2px;font-size:9px;color:#66788a;}
#calendarPage .planner-route-optimizer-close{border:0!important;background:transparent!important;color:#68788a!important;padding:0 3px!important;height:24px!important;font-size:18px;}
#calendarPage .planner-route-optimizer-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-top:10px;}
#calendarPage .planner-route-optimizer-card{padding:9px;border:1px solid #dde5ef;border-radius:8px;background:#fff;}
#calendarPage .planner-route-optimizer-card span{display:block;font-size:9px;font-weight:850;text-transform:uppercase;letter-spacing:.04em;color:#718094;}
#calendarPage .planner-route-optimizer-order{margin-top:5px;font-size:11px;font-weight:800;color:#18324f;line-height:1.45;word-break:break-word;}
#calendarPage .planner-route-optimizer-savings{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-top:8px;}
#calendarPage .planner-route-optimizer-saving{padding:8px;border-radius:8px;background:#eaf8ef;border:1px solid #bce8ca;color:#16713a;}
#calendarPage .planner-route-optimizer-saving span{display:block;font-size:9px;font-weight:800;text-transform:uppercase;}
#calendarPage .planner-route-optimizer-saving strong{display:block;margin-top:2px;font-size:14px;}
#calendarPage .planner-route-optimizer-note{margin-top:8px;font-size:9px;line-height:1.35;color:#66788a;}
#calendarPage .planner-route-optimizer-actions{display:flex;gap:7px;margin-top:10px;}
#calendarPage .planner-route-optimizer-actions button{flex:1;min-height:32px;border:1px solid #cdd9e8;border-radius:7px;background:#fff;font-weight:800;}
#calendarPage .planner-route-optimizer-actions .is-primary{background:#1769cf;border-color:#1769cf;color:#fff;}
#calendarPage .planner-route-optimizer-state{margin-top:8px;padding:8px;border-radius:8px;background:#fff;border:1px dashed #cdd9e8;color:#66788a;font-size:10px;}
#calendarPage .planner-route-optimizer-state.is-good{background:#eaf8ef;border-style:solid;border-color:#bce8ca;color:#16713a;}
#calendarPage .planner-route-optimizer-state.is-error{background:#fff0ef;border-style:solid;border-color:#f4b8b4;color:#b42318;}
body.dark #calendarPage .planner-route-optimizer-panel{background:#172335;border-color:#32445c;box-shadow:0 8px 22px rgba(0,0,0,.28);}
body.dark #calendarPage .planner-route-optimizer-card{background:#111c2c;border-color:#32445c;}
body.dark #calendarPage .planner-route-optimizer-head b,
body.dark #calendarPage .planner-route-optimizer-order{color:#eef4fb;}
body.dark #calendarPage .planner-route-optimizer-head small,
body.dark #calendarPage .planner-route-optimizer-note{color:#aab8c8;}
body.dark #calendarPage .planner-route-optimizer-state{background:#111c2c;border-color:#40516a;color:#aab8c8;}
@media(max-width:900px){#calendarPage .planner-route-optimizer-grid,#calendarPage .planner-route-optimizer-savings{grid-template-columns:1fr;}}

/* Phase 3.0 route analysis — analysis first, recommendation second */
#calendarPage #plannerOptimizeRouteBtn{background:#1769cf;border-color:#1769cf;color:#fff;}
#calendarPage .planner-route-analysis-status{display:flex;align-items:center;justify-content:space-between;margin-top:10px;padding:10px 12px;border:1px solid #d8e1ec;border-radius:9px;background:#fff;}
#calendarPage .planner-route-analysis-status span{font-size:9px;font-weight:850;letter-spacing:.05em;text-transform:uppercase;color:#718094;}
#calendarPage .planner-route-analysis-status strong{font-size:15px;}
#calendarPage .planner-route-analysis-status.is-good{background:#eaf8ef;border-color:#bce8ca;color:#16713a;}
#calendarPage .planner-route-analysis-status.is-warning{background:#fff6df;border-color:#f4d58a;color:#8b5b00;}
#calendarPage .planner-route-analysis-status.is-neutral{background:#eef5ff;border-color:#c8dcf8;color:#185a9d;}
#calendarPage .planner-route-analysis-metrics{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px;margin-top:8px;}
#calendarPage .planner-route-analysis-metrics.is-unified{grid-template-columns:repeat(4,minmax(0,1fr));}
#calendarPage .planner-route-analysis-metrics>div{padding:9px;border:1px solid #dde5ef;border-radius:8px;background:#fff;}
#calendarPage .planner-route-analysis-metrics span{display:block;font-size:9px;font-weight:850;text-transform:uppercase;letter-spacing:.04em;color:#718094;}
#calendarPage .planner-route-analysis-metrics strong{display:block;margin-top:3px;font-size:13px;color:#18324f;}
#calendarPage .planner-route-analysis-recommendation{margin-top:10px;padding-top:10px;border-top:1px solid #dbe4ee;}
#calendarPage .planner-route-analysis-section-title{font-size:10px;font-weight:900;text-transform:uppercase;letter-spacing:.05em;color:#18324f;}
#calendarPage .planner-route-analysis-recommendation p{margin:6px 0 0;font-size:10px;line-height:1.45;color:#566a80;}
#calendarPage .planner-route-analysis-impact{display:grid;grid-template-columns:1fr 1fr;gap:6px;margin-top:8px;}
#calendarPage .planner-route-analysis-impact span{padding:7px 8px;border:1px solid #d8e7db;border-radius:7px;background:#f4fbf6;color:#16713a;font-size:9px;font-weight:800;}
body.dark #calendarPage .planner-route-analysis-status,
body.dark #calendarPage .planner-route-analysis-metrics>div{background:#111c2c;border-color:#32445c;}
body.dark #calendarPage .planner-route-analysis-status span,
body.dark #calendarPage .planner-route-analysis-metrics span{color:#9cacbd;}
body.dark #calendarPage .planner-route-analysis-metrics strong,
body.dark #calendarPage .planner-route-analysis-section-title{color:#eef4fb;}
body.dark #calendarPage .planner-route-analysis-recommendation{border-color:#32445c;}
body.dark #calendarPage .planner-route-analysis-recommendation p{color:#aab8c8;}
body.dark #calendarPage .planner-route-analysis-impact span{background:rgba(38,155,83,.14);border-color:rgba(78,194,119,.28);color:#8fe2ad;}
@media(max-width:1100px){#calendarPage .planner-route-analysis-metrics{grid-template-columns:1fr 1fr;}}
@media(max-width:700px){#calendarPage .planner-route-analysis-metrics,#calendarPage .planner-route-analysis-impact{grid-template-columns:1fr;}}

/* Phase 3.2B — technician starting context */
#calendarPage .planner-route-workspace .route-tech-head{align-items:center;gap:12px;flex-wrap:wrap}
#calendarPage .planner-route-workspace .route-tech-main{flex:1 1 320px}
.planner-starting-context-badge{margin-left:auto;display:flex;align-items:center;gap:8px;min-width:190px;padding:7px 10px;border:1px solid #d7e0ea;border-radius:10px;background:#f8fafc;color:#334155;line-height:1.15}
.planner-starting-context-badge span:last-child{display:grid;gap:2px}
.planner-starting-context-badge b{font-size:11px;font-weight:800}
.planner-starting-context-badge small{font-size:10px;color:#64748b;white-space:nowrap}
.planner-starting-context-dot{font-size:13px;line-height:1}
.planner-starting-context-badge.is-live{border-color:#9dd8af;background:#f0fbf4;color:#18763a}.planner-starting-context-badge.is-live .planner-starting-context-dot{color:#22a653}
.planner-starting-context-badge.is-last-known{border-color:#f1d08a;background:#fff9e9;color:#8b5c00}.planner-starting-context-badge.is-last-known .planner-starting-context-dot{color:#e3a008}
.planner-starting-context-badge.is-end-of-day{border-color:#a9c8ef;background:#f2f7fd;color:#245b9e}.planner-starting-context-badge.is-end-of-day .planner-starting-context-dot{color:#4386d1}
.planner-starting-context-badge.is-home-base,.planner-starting-context-badge.is-unavailable{border-color:#d6dde5;background:#f8fafc;color:#59697a}
@media(max-width:760px){.planner-starting-context-badge{margin-left:0;width:100%}}

/* Phase 4.0 — read-only Assignment Health */
.planner-assignment-health{margin-top:12px;padding-top:12px;border-top:1px solid #dbe4ee}
.planner-assignment-health-head{display:flex;align-items:flex-start;justify-content:space-between;gap:10px;margin-bottom:9px}
.planner-assignment-health-head b{display:block;font-size:13px;color:#172033}
.planner-assignment-health-head small{display:block;margin-top:2px;font-size:10px;color:#6a7889}
.planner-assignment-health-badge{flex:0 0 auto;border-radius:999px;padding:4px 9px;font-size:10px;font-weight:800;border:1px solid #cbd5e1;background:#f8fafc;color:#475569}
.planner-assignment-health-badge.is-good{border-color:#a9dec0;background:#edf9f1;color:#15733b}
.planner-assignment-health-badge.is-warning{border-color:#f1cf83;background:#fff8e6;color:#9a6500}
.planner-assignment-health-state{padding:10px;border:1px solid #dbe4ee;border-radius:8px;background:#f8fafc;color:#526173;font-size:11px}
.planner-assignment-health-state.is-good{border-color:#bee5cb;background:#effaf3;color:#267242}
.planner-assignment-health-summary{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:9px 10px;border:1px solid #f0cf83;border-radius:8px;background:#fff9e9;color:#6f4c00;font-size:11px}
.planner-assignment-health-summary strong{font-size:12px;color:#3d2b00}
.planner-assignment-health-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:7px;margin-top:8px}
.planner-assignment-health-grid>div{padding:8px;border:1px solid #dbe4ee;border-radius:8px;background:#fff}
.planner-assignment-health-grid span{display:block;font-size:9px;text-transform:uppercase;letter-spacing:.04em;color:#718096}
.planner-assignment-health-grid strong{display:block;margin-top:3px;font-size:12px;color:#172033}
.planner-assignment-health-reason{margin-top:8px;padding:8px 9px;border-radius:8px;background:#eef5ff;color:#244a7c;font-size:11px;line-height:1.35}
.planner-assignment-health-note{margin-top:7px;font-size:9px;line-height:1.35;color:#718096}
@media(max-width:900px){.planner-assignment-health-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
