:root{color-scheme:light;--bg:#f1f2f4;--panel:#ffffff;--ink:#1e1f21;--muted:#62676f;--line:#dbdee3;--line-soft:#e9ebef;--accent:#f6821f;--accent-hover:#d96f12;--accent-ink:#ffffff;--accent-soft:#fdf0df;--accent-ink-soft:#8a4d05;--link:#0b5bd3;--radius:6px;--radius-sm:4px;--shadow:0 1px 2px rgba(16,24,40,0.05);font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Helvetica Neue,Arial,sans-serif}*{box-sizing:border-box}body,html{margin:0;padding:0;min-height:100%;background:var(--bg);color:var(--ink);font-size:15px;line-height:1.45}:focus-visible{outline:2px solid var(--accent);outline-offset:1px}a{color:var(--link);text-decoration:none}a:hover{text-decoration:underline}.shell{min-height:100vh;display:flex;flex-direction:column}.topbar{justify-content:space-between;gap:1rem;padding:.6rem 1.25rem;background:var(--panel);border-bottom:1px solid var(--line)}.brand,.topbar{display:flex;align-items:center}.brand{gap:.55rem;font-weight:700;font-size:.95rem;letter-spacing:.01em}.logo-mark{display:inline-flex;align-items:center;justify-content:center;width:1.5rem;height:1.5rem;border-radius:5px;background:var(--accent)}.logo-mark svg{display:block}.topbar-note{font-size:.82rem}.layout-body{display:grid;grid-template-columns:14.5rem minmax(0,1fr);grid-gap:1.25rem;gap:1.25rem;padding:1.25rem;width:min(93.75rem,100%);margin:0 auto;align-items:start;flex:1 1}.side-nav{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);padding:.6rem;position:-webkit-sticky;position:sticky;top:1.25rem;box-shadow:var(--shadow)}.side-nav ul{list-style:none;margin:0;padding:0;display:grid;grid-gap:.15rem;gap:.15rem}.side-nav a{display:flex;align-items:center;gap:.6rem;padding:.5rem .6rem;border-radius:var(--radius-sm);color:var(--ink);font-size:.9rem}.side-nav a:hover{background:#f3f4f6;text-decoration:none}.side-nav a.active{background:var(--accent-soft);font-weight:600}.nav-icon{flex:none;display:inline-flex;color:var(--muted)}.side-nav a.active .nav-icon{color:var(--accent-hover)}.content{min-width:0}.content h1{margin-top:0;font-size:1.45rem}.content h2{margin-top:1.6rem;font-size:1.1rem}.content h3{margin-top:1.2rem;font-size:1rem}.muted{color:var(--muted)}.page-head{display:flex;flex-wrap:wrap;align-items:flex-end;justify-content:space-between;gap:.75rem;margin:0 0 1rem}.page-head h1{margin:0;font-size:1.25rem;letter-spacing:-.01em}.page-desc{margin:.25rem 0 0;font-size:.88rem}.page-actions{display:flex;flex-wrap:wrap;align-items:center;gap:.5rem}.card{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);padding:1rem 1.25rem;margin:0 0 1.25rem}.card>h2:first-child,.card>h3:first-child{margin-top:0}.tabs{display:flex;gap:.25rem;border-bottom:1px solid var(--line);margin:0 0 1.25rem}.tab{-webkit-appearance:none;-moz-appearance:none;appearance:none;border:0;background:none;font:inherit;font-size:.9rem;color:var(--muted);padding:.6rem .8rem;margin-bottom:-1px;border-bottom:2px solid transparent;cursor:pointer}.tab:hover{color:var(--ink)}.tab[aria-selected=true]{color:var(--ink);font-weight:600;border-bottom-color:var(--accent)}.tab-count{display:inline-block;min-width:1.4rem;text-align:center;margin-left:.4rem;padding:.05rem .35rem;border-radius:999px;background:#eceef1;color:var(--muted);font-size:.75rem;font-weight:600}.tab[aria-selected=true] .tab-count{background:var(--accent-soft);color:var(--accent-ink-soft)}.stat-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(8.5rem,1fr));grid-gap:.75rem;gap:.75rem;margin:0 0 1.25rem}.stat-card{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);padding:.7rem .9rem;display:grid;grid-gap:.15rem;gap:.15rem;text-align:left;font:inherit;color:var(--ink);margin:0}button.stat-card{cursor:pointer}button.stat-card:hover{border-color:var(--accent)}.stat-value{font-size:1.4rem;font-weight:700;letter-spacing:-.01em;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.stat-label{font-size:.76rem;color:var(--muted)}.empty-state{border:1px dashed var(--line);border-radius:var(--radius);background:var(--panel);padding:2rem 1.5rem;text-align:center;color:var(--muted)}.empty-state h3{margin:0 0 .35rem;color:var(--ink);font-size:1rem}.empty-state p{margin:.25rem 0 1rem;font-size:.88rem}.placeholder-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));grid-gap:.75rem;gap:.75rem;margin-top:1rem}.placeholder-card{border:1px dashed var(--line);border-radius:var(--radius);padding:.9rem;background:#fbfcfe}.placeholder-card h2{margin:0 0 .35rem;font-size:1rem}.badge{display:inline-block;padding:.15rem .5rem;border-radius:999px;background:var(--accent-soft);color:var(--accent-ink-soft);font-size:.8rem}.form-row{display:flex;flex-wrap:wrap;align-items:flex-end}.form-grid,.form-row{gap:.75rem;margin:.75rem 0}.form-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));grid-gap:.75rem}.field{display:grid;grid-gap:.3rem;gap:.3rem;font-size:.9rem}.field-wide{grid-column:1/-1}.field>span{font-size:.8rem;font-weight:600}.field input,.field select{padding:.45rem .6rem;border:1px solid var(--line);border-radius:var(--radius-sm);font:inherit;font-size:.88rem;background:#fff;color:var(--ink)}.field input:focus,.field select:focus{border-color:var(--accent);outline:2px solid rgba(246,130,31,.25);outline-offset:0}.field .btn{justify-self:start}.btn{display:inline-block;padding:.45rem .8rem;border-radius:var(--radius-sm);border:1px solid var(--line);font:inherit;font-size:.85rem;font-weight:600;cursor:pointer;background:#fff;color:var(--ink);white-space:nowrap}.btn:disabled{opacity:.55;cursor:default}.btn-primary{background:var(--accent);border-color:var(--accent);color:var(--accent-ink)}.btn-primary:hover:not(:disabled){background:var(--accent-hover);border-color:var(--accent-hover)}.btn-secondary:hover:not(:disabled){text-decoration:none;background:#f3f4f6}.btn-sm{font-size:.78rem;padding:.28rem .6rem;font-weight:600}a.btn:hover{text-decoration:none}.alert{border-radius:var(--radius);padding:.7rem .9rem;margin:.75rem 0;border:1px solid var(--line);background:#fbfcfe;font-size:.86rem}.alert ul{margin:.4rem 0 0;padding-left:1.2rem}.alert-error{border-color:#f0b6b6;background:#fdf1f1}.alert-ok{border-color:#a9d6ab;background:#eef7ee}.alert-warning{border-color:#f0d48a;background:#fef7e0;color:#7a5c00}.summary-counts{display:flex;flex-wrap:wrap;gap:.5rem 1.25rem;margin:.5rem 0}.summary-counts div{display:grid;grid-gap:.1rem;gap:.1rem}.summary-counts dt{font-size:.78rem;color:var(--muted)}.summary-counts dd{margin:0;font-weight:700;font-size:1.15rem;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.table-wrap{overflow-x:auto;margin:.75rem 0}table.data{width:100%;border-collapse:collapse;font-size:.88rem}table.data td,table.data th{text-align:left;padding:.55rem .75rem;vertical-align:top}table.data thead th{color:var(--muted);font-size:.75rem;font-weight:600;white-space:nowrap;border-bottom:1px solid var(--line)}table.data tbody td{border-bottom:1px solid var(--line-soft)}table.data tbody tr:last-child td{border-bottom:0}table.data tbody tr:hover{background:#fafbfc}table.data-table{width:100%;border-collapse:collapse;font-size:.9rem}table.data-table td,table.data-table th{padding:.4rem .2rem;border-bottom:1px solid var(--line-soft);vertical-align:top}table.data-table th{text-align:left;font-weight:500;color:var(--muted);padding-right:1rem}table.data-table td{text-align:right;font-feature-settings:"tnum";font-variant-numeric:tabular-nums;white-space:nowrap}.cell-clamp{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.cell-name,.status{font-weight:600}.status{display:inline-block;padding:.12rem .5rem;border-radius:999px;font-size:.78rem;white-space:nowrap}.status-accepted{background:#e6f4ea;color:#137333}.status-duplicate{background:#fef7e0;color:#7a5c00}.status-failed,.status-invalid{background:#fce8e6;color:#a50e0e}.status-needs_address_review{background:#e8f0fe;color:#174ea6}.status-low{background:#e6f4ea;color:#137333}.status-medium{background:#fef7e0;color:#7a5c00}.status-high{background:#fce8e6;color:#a50e0e}.status-draft{background:#e8f0fe;color:#174ea6}.status-approved,.status-published{background:#e6f4ea;color:#137333}.status-superseded{background:#f1f3f4;color:#5b6775}.route-list{display:grid;grid-gap:.75rem;gap:.75rem;margin:.75rem 0}.route-card{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);padding:.9rem 1rem;box-shadow:var(--shadow)}.route-card h3{margin:0 0 .3rem;font-size:.95rem}.route-card p{margin:.2rem 0;font-size:.86rem}.warning-list{margin:.4rem 0 0;padding-left:1.2rem;font-size:.84rem;color:#7a5c00}.action-cell{display:flex;flex-wrap:wrap;gap:.35rem;align-items:center}.small-input{width:7rem;padding:.4rem .5rem;border:1px solid var(--line);border-radius:var(--radius-sm);font:inherit;font-size:.84rem;background:#fff;color:var(--ink)}.field-check{display:flex;flex-direction:row;align-items:center;gap:.5rem}.more-details{border:1px solid var(--line);border-radius:var(--radius);padding:.7rem .9rem;margin:.75rem 0;background:#fafbfc}.more-details summary{cursor:pointer;font-size:.88rem;font-weight:600}.more-details .form-grid{margin-bottom:0}.doc-preview{white-space:pre-wrap;border:1px solid var(--line);border-radius:var(--radius);background:#fbfcfe;padding:.9rem 1rem;font-size:.88rem;max-height:32rem;overflow:auto}.report-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(16rem,1fr));grid-gap:1.25rem;gap:1.25rem;margin-top:1rem}.report-grid>div{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);padding:1rem 1.25rem}.report-grid h3{margin:0 0 .5rem;font-size:.95rem}.map-picker{display:grid;grid-gap:.75rem;gap:.75rem;margin-bottom:1rem}.map-canvas{height:20rem;border:1px solid var(--line);border-radius:var(--radius);overflow:hidden;background:#eef1f5}.map-canvas-wrap{position:relative}.map-status-overlay{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;pointer-events:none;background:#eef1f5;border:1px solid var(--line);border-radius:var(--radius)}.route-map-canvas{height:30rem}.dispatch-map-canvas{height:34rem}.coords-chip{display:flex;flex-wrap:wrap;align-items:center;gap:.75rem}.place-search{position:relative}.place-results{position:absolute;z-index:20;top:100%;left:0;right:0;margin:.25rem 0 0;padding:.25rem;list-style:none;background:#fff;border:1px solid var(--line);border-radius:var(--radius);box-shadow:0 8px 24px rgba(15,23,42,.12);max-height:16rem;overflow:auto}.place-option{display:grid;grid-gap:.1rem;gap:.1rem;padding:.5rem .6rem;border-radius:var(--radius-sm);cursor:pointer}.place-option-highlight{background:#eef1f5}.place-status{padding:.5rem .6rem}.board-workbench,.map-workbench{display:grid;grid-template-columns:minmax(0,1.4fr) minmax(19rem,.6fr);grid-gap:1.25rem;gap:1.25rem;align-items:start;margin:0 0 1.25rem}.map-panel{position:-webkit-sticky;position:sticky;top:1.25rem;background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);padding:1rem 1.25rem;min-width:0}.map-panel h2{margin-top:0;font-size:1rem}.board-routes,.stop-panel{min-width:0}.board-routes>h2,.stop-panel>h2{margin-top:0;font-size:1rem}.previous-versions{margin-top:.75rem}.previous-versions summary{cursor:pointer;font-size:.9rem}.route-dot{display:inline-block;width:.7rem;height:.7rem;border-radius:999px;margin-right:.45rem;vertical-align:baseline}.map-legend{position:absolute;top:.65rem;left:50%;transform:translateX(-50%);z-index:10;display:flex;flex-wrap:wrap;justify-content:center;gap:.15rem;max-width:calc(100% - 9rem);background:rgba(255,255,255,.95);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);padding:.35rem .5rem}.map-legend button{display:flex;align-items:center;gap:.1rem;-webkit-appearance:none;-moz-appearance:none;appearance:none;border:0;background:none;font:inherit;font-size:.8rem;padding:.25rem .4rem;border-radius:var(--radius-sm);cursor:pointer;color:var(--ink);text-align:left;white-space:nowrap}.map-legend button:hover{background:#f3f4f6}.map-legend button[aria-pressed=true]{background:var(--accent-soft);font-weight:600}.route-card-selected{border-color:var(--accent);box-shadow:0 0 0 2px rgba(246,130,31,.22)}.route-card-actions{margin-top:.5rem}.stop-list{list-style:none;margin:0;padding:0;display:grid;grid-gap:.5rem;gap:.5rem;max-height:34rem;overflow-y:auto}.stop-row{display:flex;align-items:flex-start;gap:.65rem;width:100%;padding:.55rem .65rem;border:1px solid var(--line);border-radius:var(--radius);background:var(--panel);color:var(--ink);font:inherit;text-align:left;cursor:pointer}.stop-row:hover{border-color:#b9c2cd;background:#fafbfc}.stop-row-selected{border-color:var(--accent);background:var(--accent-soft);box-shadow:0 0 0 2px rgba(246,130,31,.18)}.stop-seq{flex:none;display:inline-flex;align-items:center;justify-content:center;width:1.6rem;height:1.6rem;border-radius:999px;background:var(--accent);color:var(--accent-ink);font-size:.82rem;font-weight:700}.stop-body{display:grid;grid-gap:.15rem;gap:.15rem;min-width:0}.stop-name{font-weight:600}.stop-meta{font-size:.84rem}.stop-detail{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);padding:1rem 1.25rem;margin-top:1rem}.stop-detail h3{margin-top:0}.stop-detail-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(12rem,1fr));grid-gap:.75rem 1.25rem;gap:.75rem 1.25rem;margin:.75rem 0 0}.stop-detail-grid dt{font-size:.78rem;color:var(--muted)}.stop-detail-grid dd{margin:.15rem 0 0}.stop-detail-actions{margin-top:.75rem}.task-badges{display:inline-flex;flex-wrap:wrap;gap:.3rem;vertical-align:middle}.task-badge{display:inline-block;padding:.05rem .45rem;border-radius:999px;font-size:.74rem;font-weight:600;white-space:nowrap}.task-badge-delivery{background:#e8f0fe;color:#174ea6}.task-badge-collection{background:#e6f4f1;color:#0f766e}.timing-chip{display:inline-block;margin-top:.2rem;padding:.08rem .5rem;border-radius:999px;font-size:.76rem;font-weight:600;white-space:nowrap}.timing-ok{background:#f1f3f4;color:var(--muted)}.timing-tight{background:#fef7e0;color:#7a5c00}.timing-overrun{background:#fce8e6;color:#a50e0e}.timing-unknown{background:#f1f3f4;color:var(--muted)}.stop-row-tight{border-color:#f0d48a}.stop-row-overrun{border-color:#f0b6b6}.timing-summary{border:1px solid #f0d48a;background:#fef7e0;color:#7a5c00;border-radius:var(--radius);padding:.55rem .7rem;font-size:.86rem;margin:0 0 .75rem}.timing-summary-alert{border-color:#f0b6b6;background:#fdf1f1;color:#a50e0e}.route-estimate{border:1px solid var(--line);border-radius:var(--radius);background:var(--panel);padding:.5rem .75rem;margin:.5rem 0}.route-window{margin-top:.1rem}@media (max-width:1000px){.board-workbench,.map-workbench{grid-template-columns:1fr}.map-panel{position:static}.route-map-canvas{height:22rem}.dispatch-map-canvas{height:24rem}.stop-list{max-height:none}}@media (max-width:800px){.layout-body{grid-template-columns:1fr}.side-nav{position:static}.side-nav ul{display:flex;overflow-x:auto}.side-nav a{white-space:nowrap}}