:root{font-family:Inter,ui-sans-serif,system-ui,-apple-system,sans-serif;color:#102a43;background:#f3f7fa;--navy:#082f49;--blue:#0369a1;--teal:#0f766e;--red:#b91c1c;--orange:#c2410c;--line:#d8e2ea;--shadow:0 8px 28px rgba(8,47,73,.09)}
*{box-sizing:border-box}body{margin:0;min-height:100vh}.hidden{display:none!important}button,input,select,textarea{font:inherit}button,a{touch-action:manipulation}.topbar{position:sticky;top:0;z-index:20;display:flex;align-items:center;justify-content:space-between;height:3.7rem;padding:max(.7rem,env(safe-area-inset-top)) 1rem .7rem;background:var(--navy);color:#fff}.brand{color:#fff;text-decoration:none;font-weight:900;letter-spacing:.06em}.sync-state{font-size:.78rem;opacity:.82}.network{position:fixed;z-index:50;top:0;left:0;right:0;padding:.55rem;text-align:center;background:#fbbf24;color:#422006;font-weight:800}main{width:min(70rem,100%);margin:auto;padding:1rem 1rem 6rem}.loading{text-align:center;padding:4rem}.page-title{margin:.25rem 0 1rem;font-size:1.55rem}.card{background:#fff;border:1px solid var(--line);border-radius:1rem;padding:1rem;margin-bottom:1rem;box-shadow:var(--shadow)}.card h2,.card h3{margin:.1rem 0 .65rem}.muted{color:#627d98}.stack{display:grid;gap:.8rem}.grid{display:grid;gap:1rem}.actions{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.65rem;margin:.9rem 0}.button,button{min-height:3rem;border:0;border-radius:.75rem;padding:.75rem 1rem;font-weight:800;text-decoration:none;text-align:center;cursor:pointer;background:var(--blue);color:#fff}.button.secondary,button.secondary{background:#e7f1f6;color:var(--navy)}.button.danger,button.danger{background:var(--red)}button:disabled{opacity:.55;cursor:not-allowed}label{display:grid;gap:.35rem;font-weight:700}input,select,textarea{width:100%;padding:.82rem;border:1px solid #9fb3c8;border-radius:.65rem;background:#fff;color:#102a43}textarea{min-height:7rem;resize:vertical}.login{max-width:28rem;margin:8vh auto}.login h1{font-size:2.2rem;margin:.2rem 0}.appointment-strip{position:sticky;top:3.7rem;z-index:15;padding:.85rem 1rem;border-radius:.85rem;margin-bottom:1rem;color:#fff;box-shadow:var(--shadow)}.appointment-strip.green{background:#047857}.appointment-strip.orange{background:var(--orange)}.appointment-strip.red{background:var(--red)}.appointment-strip strong{display:block;font-size:1.08rem}.address{font-size:clamp(1.6rem,7vw,2.35rem);line-height:1.12;margin:.2rem 0 .7rem}.chips{display:flex;flex-wrap:wrap;gap:.4rem}.chip{display:inline-flex;padding:.28rem .55rem;border-radius:99rem;background:#e7f1f6;font-size:.8rem;font-weight:800}.stop{display:grid;grid-template-columns:2.2rem 1fr auto;gap:.7rem;align-items:center;padding:.8rem 0;border-bottom:1px solid var(--line);text-decoration:none;color:inherit}.stop:last-child{border:0}.stop-order{display:grid;place-items:center;width:2rem;height:2rem;border-radius:50%;background:var(--navy);color:#fff;font-weight:900}.stop time{font-weight:800}.properties{display:grid;gap:.65rem}.property-row{display:block;padding:.9rem;background:#fff;border:1px solid var(--line);border-radius:.8rem;text-decoration:none;color:inherit}.property-row strong{display:block}.result-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.55rem}.result-grid button{font-size:.88rem;min-height:3.5rem}.bottom-nav{position:fixed;z-index:30;left:0;right:0;bottom:0;display:grid;grid-template-columns:repeat(3,1fr);padding:.4rem .5rem max(.4rem,env(safe-area-inset-bottom));background:#fff;border-top:1px solid var(--line);box-shadow:0 -8px 25px rgba(8,47,73,.08)}.bottom-nav a{text-align:center;padding:.75rem .3rem;text-decoration:none;color:var(--navy);font-weight:900}.error{padding:.8rem;background:#fee2e2;color:#7f1d1d;border-radius:.7rem}.success{padding:.8rem;background:#d1fae5;color:#064e3b;border-radius:.7rem}.empty{text-align:center;padding:2rem;color:#627d98}.public-shell{max-width:36rem;margin:auto;padding:1rem}.privacy{font-size:.8rem;color:#627d98}@media(min-width:760px){main{padding:2rem 2rem 7rem}.grid.two{grid-template-columns:1fr 1fr}.actions{grid-template-columns:repeat(4,minmax(0,1fr))}.bottom-nav{left:50%;right:auto;transform:translateX(-50%);width:32rem;border:1px solid var(--line);border-bottom:0;border-radius:1rem 1rem 0 0}.result-grid{grid-template-columns:repeat(4,minmax(0,1fr))}}
.appointment-strip{display:grid;gap:.35rem}.strip-action{justify-self:start;min-height:2.3rem;padding:.35rem .7rem;background:rgba(255,255,255,.2);border:1px solid rgba(255,255,255,.45)}.chip.warning{background:#ffedd5;color:#9a3412}.stop.done{opacity:.56;text-decoration:line-through}.route-map{display:block;width:100%;height:auto;min-height:12rem;margin:.8rem 0;border-radius:.8rem;background:linear-gradient(145deg,#eaf3f8,#d8e8f0);border:1px solid var(--line)}.route-map text{font-size:12px;font-weight:900;fill:#fff;pointer-events:none}.map-stop{fill:#0369a1;stroke:#fff;stroke-width:3}.map-stop.completed{fill:#047857}.map-legend{display:flex;gap:1rem;color:#52606d;font-size:.8rem}.dot{display:inline-block;width:.7rem;height:.7rem;border-radius:50%;margin-right:.3rem}.dot.planned{background:#0369a1}.dot.completed{background:#047857}.edge-candidate,.edge-low_confidence,.edge-verified,.edge-blocked{stroke-width:5;stroke-linecap:round}.edge-candidate{stroke:#d97706}.edge-low_confidence{stroke:#c2410c}.edge-verified{stroke:#047857}.edge-blocked{stroke:#b91c1c;stroke-dasharray:8 6}.field-nav{position:sticky;bottom:4.6rem;z-index:16;display:grid;grid-template-columns:1fr 1fr 1fr;gap:.4rem;padding:.5rem;background:#fff;border:1px solid var(--line);border-radius:.8rem;box-shadow:var(--shadow)}.field-nav a{text-align:center;padding:.7rem .25rem;color:var(--navy);font-weight:900;text-decoration:none}.note-presets{display:flex;gap:.4rem;overflow:auto;margin-bottom:.5rem}.note-presets button{min-height:2.3rem;white-space:nowrap;padding:.4rem .7rem}.dialog{width:min(42rem,calc(100% - 1rem));padding:0;border:0;border-radius:1rem;box-shadow:0 30px 80px rgba(0,0,0,.35)}.dialog::backdrop{background:rgba(8,47,73,.62)}.dialog-card{position:relative;margin:0;padding:1.2rem}.dialog-close{position:absolute;right:.5rem;top:.5rem;width:2.6rem;min-height:2.6rem;padding:0;border-radius:50%;background:#e7f1f6;color:var(--navy);font-size:1.4rem}.compact{min-height:2.2rem;padding:.35rem .65rem;margin-top:.5rem}.session-row{display:grid;grid-template-columns:1fr auto;gap:.7rem;align-items:center;padding:.7rem 0;border-bottom:1px solid var(--line)}.session-row small{display:block}.table-wrap{overflow:auto;margin-bottom:1rem}table{border-collapse:collapse;width:100%;font-size:.85rem}th,td{padding:.55rem;border:1px solid var(--line);text-align:left;white-space:nowrap}
.interactive-map{width:100%;height:clamp(20rem,55vh,36rem);margin:.8rem 0;border:1px solid var(--line);border-radius:.8rem;background:#d8e8f0;overflow:hidden}.route-number{background:transparent;border:0;box-shadow:none;color:#fff;font-size:.75rem;font-weight:900}.route-number::before{display:none}.leaflet-popup-content a{color:var(--blue);font-weight:800}.leaflet-control-attribution{font-size:.7rem}
.candidate-choice{display:grid;gap:.45rem;padding:.8rem;border:1px solid #fdba74;border-radius:.75rem;background:#fff7ed}.candidate-choice small{color:#7c2d12}.candidate-choice button{justify-self:start}
fieldset{border:1px solid var(--line);border-radius:.75rem;padding:.8rem}legend{font-weight:800}.check-grid{display:grid;gap:.65rem}.check{display:flex;align-items:center;gap:.55rem}.check input{width:1.25rem;height:1.25rem;flex:0 0 auto}@media(min-width:760px){.check-grid{grid-template-columns:repeat(3,1fr)}}
.delay-actions{display:flex;flex-wrap:wrap;gap:.4rem}.delay-actions .strip-action{justify-self:auto}
.readiness-summary{padding:1rem;border-radius:.8rem}.readiness-list{display:grid;gap:.55rem;margin:1rem 0}.readiness-check{display:grid;grid-template-columns:2rem 1fr auto;align-items:center;gap:.55rem;padding:.75rem;border:1px solid var(--line);border-radius:.7rem}.readiness-check>span{display:grid;place-items:center;width:1.7rem;height:1.7rem;border-radius:999px;color:#fff;font-weight:800}.readiness-check.ready>span{background:#047857}.readiness-check.warn>span{background:#d97706}.readiness-check.blocked>span{background:#b91c1c}.readiness-check small{color:#627d98}.sector-overlay{pointer-events:none}
