:root{--bg:#f4f5f7;--surface:#fff;--surface-2:#fafbfc;--border:#e2e5ea;--text:#1c2430;--text-muted:#66707d;--brand:#0f766e;--brand-soft:#e2f4f1;--brand-strong:#0b5c56;--danger:#b4232a;--danger-soft:#fdeaea;--warn:#9a6700;--warn-soft:#fdf3d8;--ok:#17714a;--ok-soft:#e3f5eb;--info-soft:#e8eefc;--info:#2f4fa8;--radius-sm:8px;--radius:10px;--radius-lg:14px;--shadow-sm:0 1px 2px #1018280d;--shadow:0 1px 2px #1018280f, 0 8px 24px #1018280f;--font:"Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;--series-1:#2a78d6;--series-2:#eb6834;--chart-track:#e8ebef}:root[data-theme=dark]{--series-1:#3987e5;--series-2:#d95926;--chart-track:#2a313b;--bg:#12161c;--surface:#1a1f27;--surface-2:#20262f;--border:#2c333d;--text:#e7eaef;--text-muted:#98a2b0;--brand:#2dd4bf;--brand-soft:#12332f;--brand-strong:#5eead4;--danger:#f87171;--danger-soft:#38201f;--warn:#fbbf24;--warn-soft:#33290f;--ok:#4ade80;--ok-soft:#12301f;--info-soft:#1b2540;--info:#93b0f5;--shadow-sm:0 1px 2px #0003;--shadow:0 1px 2px #0000004d, 0 8px 24px #00000040}*{box-sizing:border-box}body{background:var(--bg);color:var(--text);font-family:var(--font);-webkit-font-smoothing:antialiased;margin:0;font-size:14px;line-height:1.5}a{color:var(--brand);text-decoration:none}a:hover{text-decoration:underline}h1,h2,h3,h4{margin:0;font-weight:700;line-height:1.25}h1{letter-spacing:-.4px;font-size:22px}h2{letter-spacing:-.2px;font-size:18px}h3{font-size:15px}h4{font-size:13px}:focus-visible{outline:2px solid var(--brand);outline-offset:2px}.app-logo{align-items:center;gap:10px;display:inline-flex}.app-logo-mark{box-shadow:var(--shadow-sm);border-radius:9px;flex:none}.app-logo-text{letter-spacing:-.3px;color:var(--text);white-space:nowrap;font-size:17px;font-weight:700}.app-logo-accent{color:var(--brand-strong)}.shell{min-height:100vh;display:flex}.sidebar{background:var(--surface);border-right:1px solid var(--border);flex-direction:column;flex-shrink:0;gap:4px;width:244px;height:100vh;padding:18px 12px;transition:width .18s;display:flex;position:sticky;top:0;overflow:hidden auto}.sidebar.collapsed{width:72px}.sidebar-logo{justify-content:space-between;align-items:center;gap:8px;padding:4px 10px 20px;display:flex}.sidebar.collapsed .sidebar-logo{flex-direction:column;padding:4px 4px 16px}.sidebar-toggle{flex-shrink:0}.sidebar-home{color:inherit;display:inline-flex}.sidebar-home:hover{opacity:.85;text-decoration:none}.btn-icon.sidebar-close,.btn-icon.topbar-menu,.sidebar-backdrop{display:none}.sidebar-backdrop{z-index:30;background:#0f172a66;position:fixed;inset:0}.topbar-left{align-items:center;gap:10px;min-width:0;display:flex}.app-icon{flex-shrink:0}.nav-group{letter-spacing:.08em;text-transform:uppercase;color:var(--text-muted);white-space:nowrap;margin-top:12px;padding:0 10px 4px;font-size:11px;font-weight:600}.sidebar.collapsed .nav-group{display:none}.nav-link{border-radius:var(--radius-sm);color:var(--text);align-items:center;gap:10px;padding:7px 10px;font-weight:500;transition:background-color .12s,color .12s;display:flex}.sidebar.collapsed .nav-link{justify-content:center;padding:9px}.nav-link-icon{color:var(--text-muted);flex-shrink:0;display:inline-flex}.nav-link.router-link-active .nav-link-icon,.nav-link.router-link-exact-active .nav-link-icon{color:var(--brand-strong)}.nav-link-label{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.sidebar.collapsed .nav-link-label{display:none}.nav-link:hover{background:var(--surface-2);text-decoration:none}.nav-link.router-link-active,.nav-link.router-link-exact-active{background:var(--brand-soft);color:var(--brand-strong);font-weight:600}.main{flex-direction:column;flex:1;min-width:0;display:flex}.topbar{background:var(--surface);border-bottom:1px solid var(--border);z-index:5;justify-content:space-between;align-items:center;gap:16px;padding:14px 26px;display:flex;position:sticky;top:0}.topbar-title{text-overflow:ellipsis;white-space:nowrap;letter-spacing:-.1px;color:var(--text);font-size:15px;font-weight:700;overflow:hidden}.topbar-actions{align-items:center;gap:14px;display:flex}.topbar-user{text-align:right;line-height:1.3;font:inherit;color:inherit;cursor:pointer;background:0 0;border:none;border-radius:6px;padding:0}.topbar-user:hover{opacity:.8}.topbar-user-name{font-weight:600}.content{flex-direction:column;gap:18px;min-width:0;padding:26px;display:flex}.page-head{flex-wrap:wrap;justify-content:space-between;align-items:flex-end;gap:16px;display:flex}.page-head p{color:var(--text-muted);margin:4px 0 0}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow-sm);padding:18px}.card>header{justify-content:space-between;align-items:center;gap:12px;margin:-4px 0 14px;display:flex}.card>header h3{font-size:15px}.grid{grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:14px;display:grid}.grid-2{grid-template-columns:repeat(auto-fit,minmax(320px,1fr));align-items:start;gap:18px;display:grid}.stat{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow-sm);padding:16px}.stat-link{color:inherit;transition:border-color .12s,transform .12s;display:block}.stat-link:hover{border-color:var(--brand);text-decoration:none;transform:translateY(-1px)}.stat .label{color:var(--text-muted);font-size:12.5px;font-weight:600}.stat .value{letter-spacing:-.5px;font-variant-numeric:tabular-nums;margin-top:4px;font-size:26px;font-weight:700}.stat .value small{color:var(--text-muted);letter-spacing:0;font-size:14px;font-weight:600}.stat .hint{color:var(--text-muted);margin-top:2px;font-size:12px}.stat .hint.warn{color:var(--warn);font-weight:600}.stat-icon{border-radius:var(--radius-sm);background:var(--brand-soft);width:34px;height:34px;color:var(--brand-strong);justify-content:center;align-items:center;margin-bottom:10px;font-size:16px;display:flex}.stat-icon.warn{background:var(--warn-soft);color:var(--warn)}.stat-icon.danger{background:var(--danger-soft);color:var(--danger)}.stat-icon.info{background:var(--info-soft);color:var(--info)}.stat .hint.danger{color:var(--danger);font-weight:600}.stat-bar{background:var(--chart-track);border-radius:999px;height:6px;margin-top:10px;overflow:hidden}.stat-bar>span{background:var(--series-1);border-radius:999px;height:100%;display:block}.stat.stat-hero{background:linear-gradient(135deg, var(--brand-strong), var(--brand));color:#fff;border-color:#0000;grid-column:span 2}.stat.stat-hero .label,.stat.stat-hero .hint,.stat.stat-hero .value small{color:#ffffffd1}.stat.stat-hero .value{font-size:34px}.stat.stat-hero .stat-bar{background:#ffffff40}.stat.stat-hero .stat-bar>span{background:#fff}@media (width<=560px){.stat.stat-hero{grid-column:auto}}.section-title{text-transform:uppercase;letter-spacing:.06em;color:var(--text-muted);margin:28px 0 12px;font-size:12.5px;font-weight:600}.section-title:first-child{margin-top:0}.table-wrap{border:1px solid var(--border);border-radius:var(--radius);background:var(--surface);box-shadow:var(--shadow-sm);overflow-x:auto}table{border-collapse:collapse;width:100%;font-size:13.5px}th{text-align:left;background:var(--surface-2);border-bottom:1px solid var(--border);text-transform:uppercase;letter-spacing:.05em;color:var(--text-muted);white-space:nowrap;padding:11px 14px;font-size:11.5px}td{border-bottom:1px solid var(--border);vertical-align:middle;padding:11px 14px}tbody tr:last-child td{border-bottom:0}tbody tr:hover{background:var(--surface-2)}td .row-actions{justify-content:flex-end;gap:6px;display:flex}.empty{text-align:center;color:var(--text-muted);padding:34px}.empty .spinner{vertical-align:-3px;margin-right:8px}.field{flex-direction:column;gap:5px;min-width:0;display:flex}.field>label,.field>span:first-child{color:var(--text-muted);font-size:12.5px;font-weight:600}.field .required-mark{color:var(--danger)}.field .help{color:var(--text-muted);font-size:12px}.field .error{color:var(--danger);font-size:12px}td.danger{color:var(--danger);font-weight:600}input,select,textarea{font:inherit;color:var(--text);background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-sm);width:100%;padding:8px 10px;transition:border-color .12s,box-shadow .12s}input:hover,select:hover,textarea:hover{border-color:var(--text-muted)}input:focus,select:focus,textarea:focus{border-color:var(--brand);box-shadow:0 0 0 3px var(--brand-soft);outline:none}input:disabled,select:disabled,textarea:disabled{opacity:.6;cursor:not-allowed}input[type=checkbox]{width:auto}textarea{resize:vertical;min-height:78px}.searchable-select{position:relative}.searchable-select-list{z-index:20;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-sm);max-height:220px;box-shadow:var(--shadow);margin:0;padding:4px;list-style:none;position:absolute;top:calc(100% + 4px);left:0;right:0;overflow-y:auto}.searchable-select-list li{border-radius:var(--radius-sm);cursor:pointer;padding:8px 10px}.searchable-select-list li:hover{background:var(--brand-soft)}.searchable-select-list li.muted{cursor:default;color:var(--text-muted)}.searchable-select-list li.muted:hover{background:0 0}fieldset{border:1px solid var(--border);border-radius:var(--radius);margin:0;padding:14px}legend{color:var(--text-muted);text-transform:uppercase;letter-spacing:.05em;padding:0 6px;font-size:12px;font-weight:600}.form-grid{grid-template-columns:repeat(auto-fit,minmax(210px,1fr));gap:14px;display:grid}.form-grid-full{grid-column:1/-1}.map-picker{flex-direction:column;gap:8px;display:flex}.map-picker-search{gap:8px;display:flex}.map-picker-search input{flex:1}.map-picker-map{border:1px solid var(--border);border-radius:var(--radius-sm);height:280px;overflow:hidden}.filters{flex-wrap:wrap;align-items:flex-end;gap:10px;display:flex}.filters .field{min-width:150px}button,.btn{font:inherit;cursor:pointer;border-radius:var(--radius-sm);border:1px solid var(--border);background:var(--surface);color:var(--text);white-space:nowrap;align-items:center;gap:6px;padding:8px 14px;font-weight:600;transition:background-color .12s,border-color .12s,transform 50ms;display:inline-flex}button:hover:not(:disabled),.btn:hover{background:var(--surface-2);text-decoration:none}button:active:not(:disabled),.btn:active{transform:translateY(1px)}button:disabled{opacity:.55;cursor:not-allowed}.btn-primary{background:var(--brand);border-color:var(--brand);color:#fff}.btn-primary:hover:not(:disabled){background:var(--brand-strong);border-color:var(--brand-strong)}.btn-danger{background:var(--danger-soft);color:var(--danger);border-color:#0000}.btn-sm{padding:5px 10px;font-size:12.5px}.btn-icon{border-radius:999px;place-items:center;width:32px;height:32px;padding:0;font-size:15px;line-height:1;display:inline-grid}.btn-link{color:var(--brand);background:0 0;border:0;padding:0}.btn-link:hover{background:0 0}.actions{flex-wrap:wrap;justify-content:flex-end;gap:10px;display:flex}.badge{letter-spacing:.02em;background:var(--surface-2);color:var(--text-muted);white-space:nowrap;border-radius:999px;padding:2px 9px;font-size:11.5px;font-weight:600;display:inline-block}.badge.ok{background:var(--ok-soft);color:var(--ok)}.badge.warn{background:var(--warn-soft);color:var(--warn)}.badge.danger{background:var(--danger-soft);color:var(--danger)}.badge.info{background:var(--info-soft);color:var(--info)}@keyframes spin{to{transform:rotate(360deg)}}.spinner{border:2px solid var(--border);border-top-color:var(--brand);vertical-align:-3px;border-radius:50%;flex:none;width:15px;height:15px;margin-right:8px;animation:.7s linear infinite spin;display:inline-block}.loading-text{color:var(--text-muted);align-items:center;padding:6px 0;display:flex}.muted{color:var(--text-muted)}.small{font-size:12.5px}.mono{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:12px}.pending-note{border-left:3px solid var(--warn);background:var(--warn-soft);color:var(--warn);border-radius:0 var(--radius-sm) var(--radius-sm) 0;padding:10px 14px;font-size:13px}.pagination{justify-content:space-between;align-items:center;gap:12px;padding-top:4px;display:flex}.pagination-actions{flex-wrap:wrap;gap:6px;display:flex}.pagination-actions .current{background:var(--brand);border-color:var(--brand);color:#fff}.pagination-actions .gap{color:var(--text-muted);align-self:center;padding:0 2px}.toolbar{flex-wrap:wrap;justify-content:space-between;align-items:flex-end;gap:12px;display:flex}.segmented{border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--surface);display:inline-flex;overflow:hidden}.segmented button{background:0 0;border:0;border-radius:0;padding:7px 12px;font-size:13px}.segmented button+button{border-left:1px solid var(--border)}.segmented button.active{background:var(--brand-soft);color:var(--brand-strong);font-weight:600}.modal-backdrop{z-index:40;background:#0c121a8c;place-items:center;padding:20px;animation:.15s fade-in;display:grid;position:fixed;inset:0}@keyframes fade-in{0%{opacity:0}}@keyframes modal-in{0%{opacity:0;transform:translateY(6px)scale(.98)}}.modal{background:var(--surface);border-radius:var(--radius-lg);box-shadow:var(--shadow);flex-direction:column;gap:16px;width:min(680px,100%);max-height:88vh;padding:20px;animation:.15s modal-in;display:flex;overflow-y:auto}.modal.modal-wide{width:min(960px,100%)}.modal>header{justify-content:space-between;align-items:center;display:flex}.toasts{z-index:60;flex-direction:column;gap:8px;max-width:360px;display:flex;position:fixed;bottom:18px;right:18px}.toast{background:var(--surface);border:1px solid var(--border);border-left:3px solid var(--brand);border-radius:var(--radius-sm);box-shadow:var(--shadow);cursor:pointer;padding:10px 14px}.toast.error{border-left-color:var(--danger)}.login{background:var(--bg);place-items:center;min-height:100vh;padding:24px;display:grid}.login-logo{margin-bottom:2px}.login form{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);width:min(380px,100%);box-shadow:var(--shadow);flex-direction:column;gap:14px;padding:28px;display:flex}.photo-grid{grid-template-columns:repeat(auto-fill,minmax(170px,1fr));gap:12px;display:grid}.photo-grid figure{border:1px solid var(--border);border-radius:var(--radius);background:var(--surface);margin:0;overflow:hidden}.photo-grid img{aspect-ratio:4/3;object-fit:cover;background:var(--surface-2);width:100%;display:block}.photo-grid figcaption{color:var(--text-muted);padding:8px 10px;font-size:12px}.stops{flex-direction:column;gap:8px;display:flex}.stop{border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--surface-2);align-items:center;gap:10px;padding:8px 12px;display:flex}.stop .order{background:var(--brand);color:#fff;border-radius:50%;flex:none;place-items:center;width:24px;height:24px;font-size:12px;font-weight:700;display:grid}.stop .grow{flex:1;min-width:0}dl.kv{grid-template-columns:minmax(120px,auto) 1fr;gap:6px 16px;margin:0;display:grid}dl.kv dt{color:var(--text-muted);font-size:12.5px}dl.kv dd{margin:0}@media (width<=900px){.sidebar,.sidebar.collapsed{z-index:40;width:272px;box-shadow:var(--shadow);transition:transform .2s;position:fixed;inset:0 auto 0 0;transform:translate(-100%)}.sidebar.open{transform:translate(0)}.sidebar-toggle{display:none}.btn-icon.sidebar-close,.btn-icon.topbar-menu{display:inline-grid}.sidebar-backdrop{display:block}.sidebar.collapsed .sidebar-logo{flex-direction:row;padding:4px 10px 20px}.sidebar.collapsed .nav-group{display:block}.sidebar.collapsed .nav-link{justify-content:flex-start;padding:7px 10px}.sidebar.collapsed .nav-link-label{display:inline}}@media (width<=640px){.content{gap:14px;padding:16px}.topbar{padding:12px 16px}.topbar-user{display:none}.card,.stat{padding:14px}}
