:root{color:#1e2528;background:#f5f7f8;font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif}*{box-sizing:border-box}body{margin:0}button,input,select{font:inherit}a{text-decoration:none}.app-shell{display:grid;grid-template-columns:224px 1fr;min-height:100vh}.sidebar{background:#182123;color:#f7fbfc;padding:20px 14px}.brand{font-size:18px;font-weight:700;margin:0 0 24px 6px}.nav-item{align-items:center;background:transparent;border:0;border-radius:6px;color:#dce7e9;cursor:pointer;display:flex;gap:10px;height:40px;padding:0 10px;width:100%}a.nav-item{text-decoration:none}.nav-item.active,.nav-item:hover{background:#2d3a3d;color:#fff}.workspace{min-width:0;padding:24px}.sidebar-footer{border-top:1px solid #2d3a3d;color:#b8c8cb;display:grid;gap:10px;font-size:13px;margin-top:24px;padding:16px 6px 0}.login-page{align-items:center;display:grid;min-height:100vh;padding:24px}.login-form{background:#fff;border:1px solid #dce3e5;border-radius:8px;display:grid;gap:14px;margin:0 auto;max-width:420px;padding:24px;width:100%}.login-form h1{font-size:24px;margin:0 0 4px}.workspace-header h1{font-size:24px;line-height:1.2;margin:0 0 18px}.toolbar{align-items:center;display:flex;gap:12px;margin-bottom:14px}.search{border:1px solid #cfd8dc;border-radius:6px;height:38px;max-width:420px;padding:0 10px;width:100%}.button{align-items:center;background:#23615f;border:0;border-radius:6px;color:#fff;cursor:pointer;display:inline-flex;gap:8px;height:38px;padding:0 12px}.table-wrap{overflow-x:auto;border:1px solid #dce3e5;border-radius:8px;background:#fff}table{border-collapse:collapse;min-width:840px;width:100%}th,td{border-bottom:1px solid #edf1f2;font-size:14px;padding:10px 12px;text-align:left;white-space:nowrap}.row-actions{display:flex;gap:8px}.row-actions .button{height:32px;padding:0 10px}.icon-button{align-items:center;background:#fff;border:1px solid #bdc8cb;border-radius:6px;color:#23615f;cursor:pointer;display:inline-flex;height:34px;justify-content:center;width:34px}.icon-button:hover{background:#e7f7ef}.muted{color:#6b797c}th{background:#eef3f4;color:#435154;font-weight:650}.form-grid{align-items:end;display:grid;gap:10px;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));margin-bottom:14px}.field{display:grid;gap:6px}.field span{color:#435154;font-size:13px;font-weight:650}.form-grid input,.form-grid select{border:1px solid #cfd8dc;border-radius:6px;height:38px;padding:0 10px}.checkbox-field{align-items:center;grid-template-columns:auto 1fr;min-height:60px}.checkbox-field input{height:18px;width:18px}.notice{background:#fff7df;border:1px solid #efd48c;border-radius:6px;margin-bottom:12px;padding:10px}.error{background:#fdeceb;border:1px solid #f2b8b5;border-radius:6px;margin-bottom:12px;padding:10px}.success{background:#e4f7ed;border:1px solid #9bd9b6;border-radius:6px;color:#145c35;margin-bottom:12px;padding:10px}.spin{animation:spin .9s linear infinite}.integrations-page{display:grid;gap:16px}.integration-tabs{border-bottom:1px solid #cfd8dc;display:flex;gap:4px}.integration-tab{align-items:center;background:transparent;border:0;border-bottom:3px solid transparent;color:#435154;cursor:pointer;display:inline-flex;gap:8px;min-height:42px;padding:0 14px}.integration-tab.active{border-bottom-color:#23615f;color:#184b49;font-weight:700}.integration-panel{background:#fff;border:1px solid #d4dcde;border-radius:8px;display:grid;gap:14px;padding:18px}.integration-panel-header{align-items:center;display:flex;justify-content:space-between}.integration-panel-header h2{font-size:18px;margin:0}.integration-panel-header p{color:#6b797c;margin:4px 0 0}.integration-form{margin-bottom:0}.gitea-form{grid-template-columns:repeat(3,minmax(180px,1fr))}.field-wide{grid-column:span 2}.integration-actions{align-items:center;display:flex;flex-wrap:wrap;gap:10px}.server-update-section{border-top:1px solid #d4dcde;display:grid;gap:14px;padding-top:18px}.server-update-section h3,.server-update-section h4{margin:0}.git-status-grid{display:grid;gap:12px;grid-template-columns:repeat(4,minmax(150px,1fr));margin:0}.git-status-grid div{border-left:3px solid #9fb5b8;min-width:0;padding-left:10px}.git-status-grid dt{color:#6b797c;font-size:12px;font-weight:700;margin-bottom:4px}.git-status-grid dd{font-size:14px;font-weight:700;margin:0;overflow-wrap:anywhere}.commit-value{font-family:ui-monospace,SFMono-Regular,Consolas,monospace}.update-warning{align-items:center;background:#fff1d6;border:1px solid #e5b85d;border-radius:6px;color:#6b4600;display:flex;gap:9px;padding:10px 12px}.git-update-check{align-items:center;background:#f4f7f7;border:1px solid #c9d4d6;border-left:4px solid #7b8b8e;border-radius:6px;display:flex;gap:20px;justify-content:space-between;padding:12px 14px}.git-update-check-up_to_date{background:#edf8f2;border-color:#91c5a8;border-left-color:#147044;color:#105b38}.git-update-check-update_available{background:#eaf6f6;border-color:#84b9b7;border-left-color:#23615f;color:#184b49}.git-update-check-local_ahead,.git-update-check-diverged{background:#fff1d6;border-color:#e5b85d;border-left-color:#a66b00;color:#6b4600}.git-update-check-check_failed{background:#fff0ef;border-color:#dba29e;border-left-color:#a52b25;color:#84221e}.git-update-check-summary{align-items:center;display:flex;gap:10px;min-width:0}.git-update-check-summary>div{display:grid;gap:3px}.git-update-check-summary span{color:#526164;font-size:13px}.git-update-check-commits{display:flex;flex:0 0 auto;gap:18px;margin:0}.git-update-check-commits dt{color:#6b797c;font-size:11px;font-weight:700}.git-update-check-commits dd{font:12px/1.4 ui-monospace,SFMono-Regular,Consolas,monospace;margin:2px 0 0}.update-status{align-items:center;display:inline-flex;font-weight:700}.update-status-success{color:#147044}.update-status-success_with_warnings,.update-status-running,.update-status-queued{color:#8a5b00}.update-status-failed,.update-status-canceled{color:#a52b25}.smoke-checks{display:grid;gap:8px}.smoke-check{align-items:center;display:flex;gap:8px;font-size:14px}.success-row{color:#147044}.error-row{color:#a52b25}.update-log{display:grid;gap:10px}.update-log-header{align-items:center;display:flex;justify-content:space-between}.update-log pre{background:#182123;border-radius:6px;color:#e7eff0;font:12px/1.5 ui-monospace,SFMono-Regular,Consolas,monospace;margin:0;max-height:300px;overflow:auto;padding:12px;white-space:pre-wrap}.combobox{position:relative}.combobox-control{align-items:center;display:flex;position:relative}.combobox-control input{padding-right:64px;width:100%}.combobox-icon{align-items:center;background:transparent;border:0;color:#435154;cursor:pointer;display:inline-flex;height:30px;justify-content:center;position:absolute;right:30px;width:28px}.combobox-icon:last-child{right:2px}.combobox-menu{background:#fff;border:1px solid #bdc8cb;border-radius:6px;box-shadow:0 12px 30px #1821231f;display:grid;left:0;max-height:220px;overflow:auto;position:absolute;right:0;top:calc(100% + 4px);z-index:20}.combobox-option{background:#fff;border:0;color:#1e2528;cursor:pointer;min-height:36px;padding:8px 10px;text-align:left}.combobox-option.active,.combobox-option:hover{background:#e7f7ef}.combobox-empty,.combobox-error{color:#6b797c;font-size:13px;padding:8px 10px}.combobox-error{color:#9b2520;padding-left:0}.dispatcher-dashboard{display:grid;gap:16px;grid-template-columns:minmax(0,1fr) minmax(0,1fr)}.dispatcher-panel{border:1px solid #d4dcde;border-radius:8px;min-width:0;padding:18px}.dispatcher-panel h2{font-size:18px;letter-spacing:0;margin:0 0 16px}.dispatcher-panel-entry{background:#e7f7ef}.dispatcher-panel-exit{background:#fff0df}.dispatcher-approaching-panel{background:#fff;grid-column:1 / -1}.approaching-list{display:grid;gap:10px;grid-template-columns:repeat(auto-fit,minmax(220px,1fr))}.approaching-card{background:#f0f7ff;border:1px solid #bfd6ef;border-radius:8px;color:#173653;cursor:pointer;display:grid;gap:4px;min-height:72px;padding:12px;text-align:left}.approaching-card:hover{background:#e4f1ff}.approaching-card strong{font-size:18px;line-height:1.15}.approaching-card span{color:#34546f;font-size:13px}.ws-status{border-radius:999px;font-size:12px;font-weight:700;padding:6px 8px}.ws-status-connected{background:#d9f4e5;color:#17653a}.ws-status-idle,.ws-status-connecting,.ws-status-disconnected,.ws-status-error{background:#fdeceb;color:#9b2520}.telematics-status{align-items:center;display:inline-flex;gap:.4rem;font-size:.88rem;font-weight:700;line-height:1.2;white-space:nowrap}.telematics-status-dot{border-radius:999px;display:inline-block;height:.65rem;width:.65rem}.telematics-status-online{color:#047857}.telematics-status-online .telematics-status-dot{background:#10b981}.telematics-status-offline{color:#b91c1c}.telematics-status-offline .telematics-status-dot{background:#ef4444}.telematics-status-unknown{color:#92400e}.telematics-status-unknown .telematics-status-dot{background:#f59e0b}.telematics-status-nodata{color:#6b7280}.telematics-status-nodata .telematics-status-dot{background:#d1d5db}.telematics-status-compact{gap:0}.sr-only{clip:rect(0,0,0,0);border:0;height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;white-space:nowrap;width:1px}.dispatcher-analytics{display:grid;gap:16px;grid-column:1 / -1;grid-template-columns:minmax(0,1.25fr) minmax(0,1fr) minmax(0,1.2fr)}.dashboard-widget{background:#fff;display:flex;flex-direction:column;gap:14px}.widget-header{align-items:center;display:flex;gap:10px;justify-content:space-between}.widget-header h2{margin:0}.compact-table-wrap{overflow-x:auto}.compact-table{min-width:560px}.compact-table th,.compact-table td{font-size:13px;padding:8px 10px}.status-badge{border-radius:999px;display:inline-flex;font-size:12px;font-weight:700;line-height:1;padding:6px 8px}.status-completed{background:#d9f4e5;color:#17653a}.status-loading{background:#fff0c2;color:#8a5a00}.status-unloading{background:#ffe1bf;color:#8f4300}.summary-metrics{display:grid;gap:10px;grid-template-columns:1fr 1fr}.summary-metrics div{border:1px solid #dce3e5;border-radius:8px;display:grid;gap:4px;padding:12px}.summary-metrics span{color:#526164;font-size:13px;font-weight:650}.summary-metrics strong{color:#182123;font-size:24px;line-height:1.1}.fraction-bars{display:grid;gap:10px}.fraction-bar-row{display:grid;gap:6px}.fraction-bar-label{align-items:center;display:flex;gap:10px;justify-content:space-between}.fraction-bar-label span,.fraction-bar-label strong{font-size:13px}.fraction-bar-track{background:#edf1f2;border-radius:999px;height:8px;overflow:hidden}.fraction-bar-fill{background:#23615f;height:100%}.dispatcher-form{display:grid;gap:12px}.dispatcher-form input,.dispatcher-form select{background:#fff;border:1px solid #bdc8cb;border-radius:6px;height:40px;padding:0 10px;width:100%}.weight-capture-row{align-items:center;display:grid;gap:8px;grid-template-columns:minmax(0,1fr) auto}.weight-capture-row .button{height:40px;white-space:nowrap}.segmented{background:#ffffffb3;border:1px solid #bdc8cb;border-radius:8px;display:grid;grid-template-columns:1fr 1fr;overflow:hidden}.segment{background:transparent;border:0;color:#304145;cursor:pointer;min-height:42px;padding:8px 10px}.segment.active{background:#23615f;color:#fff}.trip-summary{background:#ffffffb3;border:1px solid #e5caa9;border-radius:8px;display:grid;gap:4px;padding:12px}.weighbridge-live{align-items:center;background:#ffffffb8;border:1px solid #bdc8cb;border-radius:8px;display:flex;flex-wrap:wrap;gap:10px;justify-content:space-between;min-height:42px;padding:9px 10px}.weighbridge-live span:first-child{color:#304145;font-size:13px;font-weight:700}.weighbridge-stability{border-radius:999px;font-size:12px;font-weight:700;padding:5px 8px}.weighbridge-stability-stable{background:#d9f4e5;color:#17653a}.weighbridge-stability-unstable{animation:weighbridgeBlink 1s ease-in-out infinite;background:#fff0c2;color:#8a5a00}.net-weight{align-items:center;background:#fff;border:1px solid #d4dcde;border-radius:8px;display:flex;justify-content:space-between;padding:14px}.net-weight span{color:#435154;font-weight:650}.net-weight strong{font-size:28px;line-height:1}.overload-warning{background:#ffdd74;border:1px solid #d89b00;border-radius:8px;color:#4d3500;font-weight:650;padding:12px}.quick-modal{align-items:center;background:#18212380;display:grid;top:0;right:0;bottom:0;left:0;padding:24px;position:fixed;z-index:5}.quick-modal-body{background:#fff;border-radius:8px;box-shadow:0 20px 60px #00000040;display:grid;gap:12px;margin:0 auto;max-width:420px;padding:18px;width:100%}.quick-modal-body h3,.quick-modal-body p{margin:0}.yield-modal-body{max-width:520px}.yield-settings-list{display:grid;gap:10px;max-height:50vh;overflow:auto}.yield-field{align-items:center;grid-template-columns:minmax(0,1fr) 120px}.yield-field input{border:1px solid #bdc8cb;border-radius:6px;height:38px;padding:0 10px;width:100%}.yield-total{background:#eef3f4;border:1px solid #d4dcde;border-radius:8px;font-weight:700;padding:10px 12px}.yield-total-error{background:#fdeceb;border-color:#f2b8b5;color:#9b2f2a}.quick-modal-actions{display:flex;gap:10px;justify-content:flex-end}.reports-view{display:grid;gap:12px}.report-controls{align-items:end;background:#fff;border:1px solid #d4dcde;border-radius:8px;display:grid;gap:12px;grid-template-columns:minmax(180px,1fr) minmax(260px,1.4fr) minmax(220px,1.6fr) minmax(180px,1fr) auto;padding:14px}.report-controls .field input,.report-controls .field select{background:#fff;border:1px solid #bdc8cb;border-radius:6px;height:38px;padding:0 10px;width:100%}.date-range-picker{display:grid;gap:10px;grid-template-columns:1fr 1fr}.preset-buttons{display:flex;flex-wrap:wrap;gap:8px}.preset-buttons button{background:#eef3f4;border:1px solid #bdc8cb;border-radius:6px;color:#304145;cursor:pointer;min-height:34px;padding:6px 10px}.preset-buttons button:hover{background:#dfe9eb}.report-actions{display:flex;flex-wrap:wrap;gap:8px}.report-actions .button{white-space:nowrap}.report-title{font-size:18px;margin:4px 0 0}.report-table-wrap{width:100%}.report-table{min-width:980px}.outbound-report-table{min-width:1420px}.signature-cell{min-width:120px;position:relative}.signature-cell:after{border-bottom:1px solid #435154;content:"";display:block;height:18px;width:100%}.security-alert-backdrop{align-items:center;background:#430a0abd;display:flex;top:0;right:0;bottom:0;left:0;justify-content:center;padding:24px;position:fixed;z-index:1000}.security-alert-modal{background:#fff8f7;border:2px solid #b3261e;border-radius:8px;box-shadow:0 24px 80px #220b0a73;color:#3f1411;display:grid;gap:18px;max-width:680px;overflow:hidden;padding:22px;position:relative;width:min(680px,100%)}.security-alert-pulse{animation:securityPulse 1.1s ease-in-out infinite;background:#b3261e2e;top:0;right:0;bottom:0;left:0;pointer-events:none;position:absolute}.security-alert-header{align-items:center;display:flex;gap:14px;position:relative}.security-alert-header h2{font-size:24px;margin:0}.security-alert-header p{font-weight:700;margin:4px 0 0}.security-alert-details{display:grid;gap:10px;margin:0;position:relative}.security-alert-details div{display:grid;gap:2px}.security-alert-details dt{color:#7a312b;font-size:12px;font-weight:700;text-transform:uppercase}.security-alert-details dd{font-size:16px;font-weight:700;margin:0}.security-alert-actions{display:flex;flex-wrap:wrap;gap:10px;justify-content:flex-end;position:relative}.button.danger{background:#b3261e;border-color:#b3261e;color:#fff}.button.secondary{align-items:center;background:#eef3f4;border:1px solid #bdc8cb;color:#304145;display:inline-flex;gap:8px;text-decoration:none}.security-journal{display:grid;gap:12px}.security-filters{align-items:end;background:#fff;border:1px solid #d4dcde;border-radius:8px;display:grid;gap:12px;grid-template-columns:minmax(180px,260px) minmax(180px,280px) auto;padding:14px}.security-filters .field select{background:#fff;border:1px solid #bdc8cb;border-radius:6px;height:38px;padding:0 10px;width:100%}.security-table{min-width:980px}.security-type{align-items:center;display:inline-flex;gap:6px;font-weight:700}.waybills-page{display:grid;gap:16px}.waybills-toolbar{align-items:end}.inline-field{max-width:240px}.waybills-table-wrap td:last-child{min-width:280px}.waybill-modal-body{max-width:560px}@keyframes securityPulse{0%,to{opacity:.4}50%{opacity:1}}@keyframes spin{to{transform:rotate(360deg)}}@keyframes weighbridgeBlink{0%,to{opacity:.52}50%{opacity:1}}@media (max-width: 760px){.app-shell{grid-template-columns:1fr}.sidebar{position:sticky;top:0;z-index:1}.sidebar nav{display:flex;overflow-x:auto}.nav-item{min-width:128px}.dispatcher-dashboard,.dispatcher-analytics,.summary-metrics,.weight-capture-row,.report-controls,.security-filters,.date-range-picker,.gitea-form{grid-template-columns:1fr}.field-wide{grid-column:auto}.git-status-grid{grid-template-columns:1fr}.git-update-check{align-items:flex-start;flex-direction:column}.git-update-check-commits{flex-wrap:wrap}}
