:root{--night:#0b1324;--navy:#14284f;--ink:#1b3266;--gold:#e8c468;--gold-deep:#b07d1a;--felt:#b9c4d6;--cream:#f4ecdc;--paper:#f6f3ee;--line:#e5e0d6;--muted:#6b7487;--danger:#c8423b;--success:#2e8b57;--radius:14px;color:var(--night);background:var(--paper);font-family:Manrope,system-ui,sans-serif;font-size:14px}*{box-sizing:border-box}body{margin:0}h1,h2,h3{margin:0;font-weight:800}h1{font-size:24px}h2{margin-bottom:12px;font-size:16px}h3{font-size:18px}p{margin:0}a{color:var(--ink);text-decoration:none}a:hover{text-decoration:underline}button,input,select,textarea{font:inherit;color:inherit}.layout{min-height:100vh;display:flex}.sidebar{background:var(--navy);color:#fff;flex-direction:column;flex-shrink:0;gap:2px;width:232px;height:100vh;padding:20px 12px;display:flex;position:sticky;top:0}.sidebar a{color:var(--felt);border-radius:10px;justify-content:space-between;align-items:center;padding:10px 12px;font-weight:600;display:flex}.sidebar a:hover{background:#ffffff0f;text-decoration:none}.sidebar a.active{color:var(--gold);background:#e8c46824}.sidebar-footer{color:var(--felt);border-top:1px solid #ffffff1a;margin-top:auto;padding:12px}.sidebar-footer div:first-child{color:#fff;font-weight:700}.brand{letter-spacing:.04em;align-items:center;gap:10px;padding:0 12px 20px;font-size:22px;font-weight:800;display:flex}.brand small{color:var(--felt);letter-spacing:0;font-size:12px;font-weight:600}.brand-dark{color:var(--navy);padding:0 0 8px}.brand-dark small{color:var(--muted)}.brand-mark{background:var(--gold);border-radius:2px;width:14px;height:14px;transform:rotate(45deg)}.content{flex-direction:column;flex:1;gap:16px;min-width:0;padding:28px 32px;display:flex}.page-header{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:16px;display:flex}.back{color:var(--muted);font-weight:700}.card{border:1px solid var(--line);border-radius:var(--radius);background:#fff;padding:18px 20px;overflow-x:auto}.stack{flex-direction:column;gap:12px;display:flex}.row{align-items:center;gap:8px;display:flex}.row.between{justify-content:space-between}.row.end{justify-content:flex-end}.row.wrap{flex-wrap:wrap}.grid-2{grid-template-columns:minmax(0,1fr) minmax(0,1fr);align-items:start;gap:16px;display:grid}.form-grid{grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:12px;display:grid}.muted{color:var(--muted)}.small{font-size:12px}.strong{font-weight:700}.right{text-align:right}.center{align-self:center}.ellipsis{text-overflow:ellipsis;white-space:nowrap;text-align:left;max-width:220px;overflow:hidden}.empty{color:var(--muted);text-align:center;padding:24px 0}.error{color:var(--danger);font-weight:600}.success{color:var(--success);font-weight:600}.note{background:var(--cream);border-radius:10px;padding:10px 12px}.plate{letter-spacing:.04em;font-family:ui-monospace,monospace;font-weight:700}.contents{display:contents}.minus{color:var(--danger);font-weight:700}.plus{color:var(--success);font-weight:700}.stats{flex-wrap:wrap;gap:12px;display:flex}.stats div{border:1px solid var(--line);background:#fff;border-radius:12px;flex-direction:column;padding:8px 14px;display:flex}.stats b{font-size:20px}.stats span{color:var(--muted);font-size:12px}.facts{grid-template-columns:max-content 1fr;gap:8px 20px;margin:0;display:grid}.facts dt{color:var(--muted)}.facts dd{margin:0;font-weight:600}.stops{gap:6px;margin:0;padding-left:20px;display:grid}.balance{flex-direction:column;align-items:flex-end;gap:6px;display:flex}.balance b{font-size:26px}table{border-collapse:collapse;width:100%}th{text-align:left;color:var(--muted);border-bottom:1px solid var(--line);white-space:nowrap;padding:8px 10px;font-size:12px;font-weight:700}td{border-bottom:1px solid var(--line);vertical-align:top;padding:10px}tr:last-child td{border-bottom:none}tr.clickable{cursor:pointer}tr.clickable:hover td{background:var(--paper)}td.route{max-width:320px}.badge{white-space:nowrap;border-radius:999px;padding:3px 10px;font-size:12px;font-weight:700;display:inline-block}.badge-good{color:var(--success);background:#e3f3ea}.badge-warn{color:var(--gold-deep);background:#fbf0d5}.badge-bad{color:var(--danger);background:#f8e1df}.badge-info{color:var(--ink);background:#e3e9f5}.badge-neutral{color:var(--muted);background:#eeece8}.counter{background:var(--gold);color:var(--night);text-align:center;border-radius:999px;min-width:20px;padding:1px 7px;font-size:12px;font-weight:800}.btn{cursor:pointer;white-space:nowrap;border:none;border-radius:12px;padding:10px 16px;font-weight:700;display:inline-block}.btn:disabled{opacity:.5;cursor:default}.btn:hover{text-decoration:none}.btn-primary{background:var(--ink);color:#fff}.btn-primary:hover:not(:disabled){background:var(--navy)}.btn-ghost{color:var(--ink);border:1.5px solid var(--line);background:0 0}.btn-ghost:hover:not(:disabled){border-color:var(--felt)}.btn-danger{background:var(--danger);color:#fff}.btn-danger-ghost{color:var(--danger);background:0 0;border:1.5px solid #f0c9c6}.link{color:var(--gold);cursor:pointer;background:0 0;border:none;margin-top:8px;padding:0;font-weight:700}.field{flex-direction:column;gap:6px;display:flex}.field>span{color:var(--muted);font-size:12px;font-weight:700}input,select,textarea{border:1px solid var(--line);background:#fff;border-radius:12px;outline:none;padding:10px 12px}input:focus,select:focus,textarea:focus{border-color:var(--ink)}textarea{resize:vertical}.check{border:1px solid var(--line);cursor:pointer;border-radius:10px;align-items:center;gap:6px;padding:6px 10px;font-weight:600;display:flex}.search{gap:8px;display:flex}.search input{flex:1;max-width:480px}.tabs{flex-wrap:wrap;gap:4px;display:flex}.tab{color:var(--muted);cursor:pointer;background:0 0;border:none;border-radius:10px;padding:8px 14px;font-weight:700}.tab.active{background:var(--navy);color:#fff}.chip{border:1px solid var(--line);background:var(--paper);cursor:pointer;border-radius:999px;padding:6px 12px;font-weight:600}.chip:hover{border-color:var(--ink)}.chips{flex-wrap:wrap;gap:6px;display:flex}.chip-static{cursor:default;align-items:center;gap:6px;display:inline-flex}.chip-static:hover{border-color:var(--line)}.chip-remove{color:var(--muted);cursor:pointer;background:0 0;border:none;padding:0 2px;font-size:16px;line-height:1}.chip-remove:hover{color:var(--ink)}.recipient-results{border:1px solid var(--line);border-radius:12px;margin:0;padding:0;list-style:none}.recipient-results li{justify-content:space-between;align-items:center;gap:12px;padding:8px 12px;display:flex}.recipient-results li+li{border-top:1px solid var(--line)}.pagination{justify-content:space-between;align-items:center;gap:12px;padding-top:12px;display:flex}.overlay{z-index:10;background:#0b132473;place-items:center;padding:16px;display:grid;position:fixed;inset:0}.dialog{background:#fff;border-radius:18px;width:100%;max-width:440px;padding:22px}.login{background:var(--navy);place-items:center;min-height:100vh;padding:16px;display:grid}.login-card{background:#fff;border-radius:20px;flex-direction:column;gap:16px;width:100%;max-width:360px;padding:28px;display:flex}.login-qr{border:1.5px solid var(--line);border-radius:12px;align-self:center}a.btn{text-align:center;text-decoration:none}.photos{grid-template-columns:repeat(auto-fill,minmax(160px,1fr));gap:12px;display:grid}.photos figure{flex-direction:column;gap:6px;margin:0;display:flex}.photos figcaption{color:var(--muted);font-size:12px;font-weight:600}.photo{aspect-ratio:4/3;object-fit:cover;border:1px solid var(--line);border-radius:10px;width:100%;display:block}.photo-empty{color:var(--muted);background:var(--paper);place-items:center;font-size:12px;display:grid}.support{grid-template-columns:320px minmax(0,1fr);gap:16px;height:calc(100vh - 120px);min-height:480px;display:grid}.threads{flex-direction:column;gap:4px;padding:12px;display:flex;overflow-y:auto}.thread{text-align:left;cursor:pointer;background:0 0;border:none;border-radius:10px;flex-direction:column;gap:4px;padding:10px;display:flex}.thread:hover{background:var(--paper)}.thread.active{background:var(--cream)}.chat{flex-direction:column;padding:0;display:flex;overflow:hidden}.chat-empty{place-items:center;display:grid}.chat-header{border-bottom:1px solid var(--line);padding:14px 18px}.messages{background:var(--paper);flex-direction:column;flex:1;gap:8px;padding:16px 18px;display:flex;overflow-y:auto}.message{border:1px solid var(--line);background:#fff;border-radius:14px 14px 14px 4px;align-self:flex-start;max-width:70%;padding:8px 12px}.message.mine{background:var(--navy);color:#fff;border-color:var(--navy);border-radius:14px 14px 4px;align-self:flex-end}.message-text{white-space:pre-wrap;overflow-wrap:anywhere}.message-time{opacity:.6;text-align:right;margin-top:2px;font-size:11px}.message-ride{color:var(--gold-deep);margin-bottom:4px;font-size:12px;font-weight:700;display:inline-block}.composer{border-top:1px solid var(--line);align-items:flex-end;gap:8px;padding:12px;display:flex}.composer textarea{flex:1}@media (width<=900px){.layout{flex-direction:column}.sidebar{flex-flow:wrap;width:auto;height:auto;padding:12px;position:static}.brand{padding:0 12px 0 4px}.sidebar-footer{border:none;margin:0 0 0 auto;padding:0 8px}.content{padding:16px}.grid-2,.support{grid-template-columns:1fr;height:auto}.chat{min-height:520px}}.refresh-options{flex-wrap:wrap;gap:12px;display:flex}.refresh-options .btn{text-align:left;flex-direction:column;align-items:flex-start;gap:2px;display:flex}.refresh-hint{opacity:.8;font-size:12px;font-weight:500}.cameras{grid-template-columns:minmax(0,1fr) 360px;gap:16px;height:calc(100vh - 120px);min-height:520px;display:grid}.cameras aside{overflow-y:auto}.camera-map-wrap{border-radius:var(--radius);border:1px solid var(--line);position:relative;overflow:hidden}.camera-map{width:100%;height:100%}.map-hint{background:var(--navy);color:#fff;border-radius:999px;padding:8px 14px;font-size:13px;font-weight:700;position:absolute;top:12px;left:50%;transform:translate(-50%)}@media (width<=900px){.cameras{grid-template-columns:1fr;height:auto}.camera-map-wrap{height:60vh}}.tiles{grid-template-columns:repeat(auto-fill,minmax(190px,1fr));gap:12px;display:grid}.tile{border:1px solid var(--line);border-radius:var(--radius);color:var(--night);background:#fff;flex-direction:column;gap:4px;padding:14px 16px;display:flex}.tile-link:hover{border-color:var(--felt);text-decoration:none}.tile-label{color:var(--muted);font-size:13px;font-weight:600}.tile-value{font-size:26px;font-weight:800}.tile-alert{color:var(--gold-deep)}.tile-note{color:var(--muted);font-size:12px}.num{font-variant-numeric:tabular-nums;white-space:nowrap}.chart{position:relative}.chart-svg{width:100%;height:auto;display:block}.chart-grid{stroke:var(--line);stroke-width:1px}.chart-tick{fill:var(--muted);font-variant-numeric:tabular-nums;font-size:11px}.chart-legend{color:var(--muted);flex-wrap:wrap;gap:16px;margin-top:6px;font-size:12px;font-weight:600;display:flex}.chart-legend i{vertical-align:-1px;border-radius:2px;width:10px;height:10px;margin-right:6px;display:inline-block}.chart-tooltip{border:1px solid var(--line);pointer-events:none;white-space:nowrap;z-index:1;background:#fff;border-radius:10px;gap:3px;padding:8px 10px;display:grid;position:absolute;top:0;box-shadow:0 4px 14px #0b13241f}.chart-tooltip-row{align-items:center;gap:6px;display:flex}.chart-tooltip-row i{background:currentColor;width:10px;height:2px}details summary{cursor:pointer}details[open] summary{margin-bottom:12px}.cell-input{border:1px solid var(--line);text-align:right;border-radius:8px;width:72px;padding:6px 8px}.cell-input.wide{text-align:left;width:140px}.settings-group{color:var(--muted);margin-top:6px;font-size:14px}.setting-row{border-bottom:1px solid var(--line);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:16px;padding:10px 0;display:flex}.setting-title{flex-direction:column;gap:2px;max-width:560px;font-weight:600;display:flex}.live-map{border:1px solid var(--line);border-radius:12px;width:100%;height:420px;overflow:hidden}.chart-legend i.dot{border-radius:50%}.filters{flex-wrap:wrap;align-items:center;gap:10px;display:flex}.filters select,.filters input{border:1px solid var(--line);background:#fff;border-radius:10px;padding:8px 10px}.ride-chat{flex-direction:column;gap:8px;display:flex}.ride-chat-msg{background:var(--paper);border-radius:12px;flex-direction:column;align-self:flex-start;gap:2px;max-width:80%;padding:8px 12px;display:flex}.ride-chat-msg.driver{background:var(--cream);align-self:flex-end}.push-form{grid-template-columns:minmax(0,1fr) minmax(0,340px);align-items:start;gap:24px;display:grid}@media (width<=900px){.push-form{grid-template-columns:1fr}}.push-preview{background:var(--paper);border:1px solid var(--line);border-radius:16px;flex-direction:column;gap:2px;padding:10px 14px;display:flex}.push-preview-app{color:var(--muted);text-transform:uppercase;letter-spacing:.04em;font-size:11px;font-weight:700}.push-preview-body{-webkit-line-clamp:2;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.counter-danger{background:var(--danger);color:#fff}.sos-banner{background:var(--danger);color:#fff;border-radius:var(--radius);margin-bottom:16px;padding:12px 16px;font-weight:800;text-decoration:none;display:block}.sos-banner:hover{filter:brightness(1.05)}.sos-card{margin-bottom:12px}.sos-card.open{box-shadow:inset 4px 0 0 var(--danger);border-color:#f0c9c6}.sos-title{margin:0;font-size:17px}.sos-grid{grid-template-columns:160px 1fr;gap:6px 12px;display:grid}@media (width<=700px){.sos-grid{grid-template-columns:1fr}}.spacer{flex:1}.filter-bar{flex-wrap:wrap;align-items:flex-end;gap:12px;display:flex;overflow:visible}.filter-bar .field{min-width:150px}.filter-bar select:disabled{background:var(--paper);color:var(--muted);cursor:not-allowed}.filter-reset{align-self:flex-end}.filter-summary{flex-basis:100%;margin:0}.kpi-change{font-size:12px;font-weight:700}.kpi-change .muted{font-weight:500}.kpi-good{color:var(--success)}.kpi-bad{color:var(--danger)}.kpi-neutral{color:var(--muted)}.bar-list{gap:10px;margin:0;padding:0;list-style:none;display:grid}.bar-list-head{justify-content:space-between;gap:12px;font-size:14px;display:flex}.bar-list-label{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.bar-list-value{white-space:nowrap;font-variant-numeric:tabular-nums}.bar-list-track{background:var(--paper);border-radius:4px;height:8px;margin-top:4px}.bar-list-fill{background:#2a78d6;border-radius:4px;min-width:2px;height:100%}.heatmap-wrap{overflow-x:auto}.heatmap{grid-template-columns:28px repeat(24,minmax(18px,1fr));gap:2px;min-width:560px;display:grid}.heatmap-hour{color:var(--muted);text-align:left;font-variant-numeric:tabular-nums;font-size:11px}.heatmap-day{color:var(--muted);align-self:center;font-size:12px;font-weight:700}.heatmap-cell{cursor:default;outline-offset:-2px;border-radius:3px;height:22px}.heatmap-cell:focus-visible{outline:2px solid var(--night)}.heatmap-foot{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;margin-top:10px;display:flex}.heatmap-legend{align-items:center;gap:2px;display:flex}.heatmap-legend i{border-radius:2px;width:16px;height:10px;display:inline-block}.heatmap-legend .muted{margin:0 6px}
