.configuration-page{padding:var(--spacing-lg);animation:.35s ease-out configFadeIn}@keyframes configFadeIn{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:translateY(0)}}.configuration-page__header{margin-bottom:var(--spacing-lg)}.configuration-page__title{color:var(--color-header-bg);letter-spacing:-.02em;margin:0 0 4px;font-size:22px;font-weight:700}.configuration-page__subtitle{color:var(--color-muted);margin:0;font-size:13px}.configuration-page__layout{gap:var(--spacing-lg);grid-template-columns:220px 1fr;align-items:start;display:grid}.configuration-nav{background:var(--color-white);border:1px solid var(--color-border);box-shadow:var(--shadow-sm);top:calc(var(--header-height) + var(--spacing-lg));border-radius:10px;position:sticky;overflow:hidden}.configuration-nav__item{color:#4a5568;cursor:pointer;-webkit-user-select:none;user-select:none;border-left:3px solid #0000;align-items:center;gap:10px;padding:13px 18px;font-size:13px;font-weight:500;transition:all .2s cubic-bezier(.4,0,.2,1);display:flex}.configuration-nav__item:not(:last-child){border-bottom:1px solid #f0f2f5}.configuration-nav__item:hover{color:var(--color-primary);background:#f7fafc}.configuration-nav__item--active{color:var(--color-primary);border-left-color:var(--color-primary);background:linear-gradient(90deg,#e8f7f9 0%,#f0fcfd 100%);font-weight:600}.configuration-nav__item--active:hover{background:linear-gradient(90deg,#e8f7f9 0%,#f0fcfd 100%)}.configuration-nav__icon{color:#6b7280;background:#f0f2f5;border-radius:6px;flex-shrink:0;justify-content:center;align-items:center;width:28px;height:28px;font-size:14px;transition:all .2s;display:flex}.configuration-nav__item--active .configuration-nav__icon{color:var(--color-primary);background:#018da21f}.configuration-nav__item:hover .configuration-nav__icon{color:var(--color-primary)}.configuration-content{min-width:0;animation:.3s ease-out configContentIn}@keyframes configContentIn{0%{opacity:0;transform:translate(8px)}to{opacity:1;transform:translate(0)}}@media (width<=900px){.configuration-page__layout{grid-template-columns:1fr}.configuration-nav{grid-template-columns:repeat(auto-fit,minmax(140px,1fr));display:grid;position:static}.configuration-nav__item{text-align:center;border-left:none;justify-content:center;padding:12px 10px;border-bottom:none!important}.configuration-nav__item--active{border-left:none;border-bottom:2px solid var(--color-primary)!important}}:root{--color-primary:#018da2;--color-primary-hover:#017a8c;--color-header-bg:#062c50;--color-sidebar-bg:#001529;--color-success:#3f8600;--color-warning:#e69120;--color-error:#ff4d4f;--color-muted:#8c8c8c;--color-border:#e4e4e4;--color-bg:#f0f2f5;--color-white:#fff;--color-ink:#10293f;--color-ink-2:#587086;--color-line:#d9e2e9;--color-amber:#d97b06;--color-plate-blue:#2a50a1;--font-sans:"Archivo", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;--font-mono:"IBM Plex Mono", ui-monospace, SFMono-Regular, Menlo, monospace;--header-height:64px;--sidebar-width:220px;--sidebar-collapsed-width:80px;--content-padding:24px;--spacing-xs:4px;--spacing-sm:8px;--spacing-md:16px;--spacing-lg:24px;--spacing-xl:32px;--border-radius:6px;--shadow-sm:0 1px 2px 0 #00000008, 0 1px 6px -1px #00000005, 0 2px 4px 0 #00000005;--shadow-md:0 6px 16px 0 #00000014, 0 3px 6px -4px #0000001f, 0 9px 28px 8px #0000000d}.app-layout{min-height:100vh}.app-body{margin-top:var(--header-height)}.app-header{z-index:100;padding:0 var(--spacing-lg);background-color:var(--color-header-bg);height:var(--header-height);justify-content:space-between;align-items:center;display:flex;position:fixed;top:0;left:0;right:0}.header-left,.logo-link{align-items:center;display:flex}.logo-link .logo{width:auto;height:32px}.header-right{align-items:center;display:flex}.notification-badge{margin-right:12px}.notification-bell{width:34px;height:34px;color:var(--color-white);cursor:pointer;background:0 0;border:none;border-radius:999px;justify-content:center;align-items:center;padding:0;font-size:17px;transition:background-color .15s;display:flex}.notification-bell:hover,.notification-bell:focus-visible{background-color:#ffffff17}.event-feed-loading{justify-content:center;padding:32px 0;display:flex}.event-feed-list{margin:0;padding:0;list-style:none}.event-row{border-bottom:1px solid #0000000f;gap:12px;padding:12px 4px;display:flex}.event-row:last-child{border-bottom:none}.event-row-clickable{cursor:pointer}.event-row-clickable:hover,.event-row-clickable:focus-visible{background:#00000008}.event-icon{border-radius:999px;flex:none;justify-content:center;align-items:center;width:34px;height:34px;margin-top:2px;font-size:16px;display:flex}.event-icon-geofence{color:#018da2;background-color:#018da21f}.event-icon-battery{color:#b26a00;background-color:#faad1429}.event-icon-speed{color:#c4453c;background-color:#d9534a1f}.event-icon-event{color:#531dab;background-color:#722ed11f}.event-what{font-weight:500}.event-meta{color:#0009;margin-top:2px;font-size:13px}.event-when{color:#00000073;margin-top:2px;font-size:12px}.event-feed-more{padding:12px 0 4px}.notifications-filters{flex-wrap:wrap;align-items:center;gap:12px;margin-bottom:16px;display:flex}.notifications-kinds{background:var(--color-white);border:1px solid var(--color-line);border-radius:8px;align-items:center;gap:2px;padding:4px 6px;display:flex}.notifications-filter{min-width:210px}.notifications-card{max-width:720px;padding:4px 20px 12px}.admin-link,.legacy-link{color:var(--color-white);font-family:var(--font-sans);letter-spacing:.01em;white-space:nowrap;border-radius:999px;align-items:center;gap:6px;margin-right:12px;padding:5px 12px;font-size:13.5px;font-weight:500;transition:background-color .15s;display:flex}.admin-link:hover,.admin-link:focus-visible,.legacy-link:hover,.legacy-link:focus-visible{color:var(--color-white);background-color:#ffffff17}.user-menu-trigger{cursor:pointer;background:0 0;border:none;border-radius:999px;align-items:center;gap:10px;padding:5px 12px 5px 6px;transition:background-color .15s;display:flex}.user-menu-trigger:hover{background-color:#ffffff17}.user-menu-trigger:focus-visible{outline-offset:2px;outline:2px solid #ffffffbf}.user-menu-trigger .ant-avatar{background-color:var(--color-primary);font-family:var(--font-sans);flex-shrink:0;font-weight:600}.user-name{color:var(--color-white);font-family:var(--font-sans);letter-spacing:.01em;white-space:nowrap;font-size:13.5px;font-weight:500}.user-caret{color:#fff9;font-size:10px}.app-sidebar{left:0;top:var(--header-height);z-index:99;border-right:1px solid var(--color-line);position:fixed;bottom:0;overflow:auto}.app-sidebar .ant-layout-sider-children{flex-direction:column;display:flex}.side-nav{flex:1;padding:20px 12px}.side-route{flex-direction:column;gap:6px;list-style:none;display:flex;position:relative}.side-route:before{content:"";border-left:2px dashed #018da259;position:absolute;top:22px;bottom:22px;left:25px}.side-route a{color:var(--color-ink-2);font-family:var(--font-sans);border-radius:8px;align-items:center;gap:12px;padding:6px 10px;font-size:14px;font-weight:500;transition:color .15s;display:flex;position:relative}.side-route a:hover{color:var(--color-ink)}.side-route a:focus-visible{outline:2px solid var(--color-primary);outline-offset:2px}.side-station{background:var(--color-white);border:1.5px solid var(--color-line);width:32px;height:32px;color:var(--color-ink-2);border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;font-size:14px;transition:border-color .15s,color .15s;display:inline-flex}.side-route a:hover .side-station{color:var(--color-primary);border-color:#018da28c}.side-route a.is-active{color:var(--color-ink);font-weight:600}.side-route a.is-active .side-station{background:var(--color-primary);border-color:var(--color-primary);color:var(--color-white);box-shadow:0 0 0 3px #018da22e}.side-label{white-space:nowrap}.app-sidebar.ant-layout-sider-collapsed .side-label{display:none}.app-sidebar.ant-layout-sider-collapsed .side-route a{justify-content:center;padding:6px 0}.app-sidebar.ant-layout-sider-collapsed .side-route:before{margin-left:-1px;left:50%}.app-sidebar .ant-layout-sider-trigger{background:var(--color-white);color:var(--color-ink-2);border-top:1px solid var(--color-line);border-right:1px solid var(--color-line);transition:color .15s}.app-sidebar .ant-layout-sider-trigger:hover{color:var(--color-primary)}.app-content{margin-left:var(--sidebar-width);padding:var(--spacing-lg);min-height:calc(100vh - var(--header-height));background-color:var(--color-bg);transition:margin-left .2s}.app-body .ant-layout-sider-collapsed+.app-content{margin-left:var(--sidebar-collapsed-width)}.page-eyebrow{font-family:var(--font-mono);letter-spacing:.14em;text-transform:uppercase;color:var(--color-primary);margin-bottom:4px;font-size:11px;font-weight:500}.page-title{font-family:var(--font-sans);letter-spacing:-.01em;color:var(--color-ink);margin:0;font-size:26px;font-weight:700;line-height:1.15}.trip-masthead{justify-content:space-between;align-items:flex-end;gap:var(--spacing-md);margin-bottom:var(--spacing-lg);flex-wrap:wrap;display:flex}.trip-masthead-side{align-items:center;gap:var(--spacing-md);padding-bottom:2px;display:flex}.trip-live{font-family:var(--font-mono);letter-spacing:.08em;text-transform:uppercase;color:var(--color-primary);align-items:center;gap:6px;font-size:12px;font-weight:600;display:inline-flex}.trip-live-dot{background:var(--color-primary);border-radius:50%;width:8px;height:8px}@media (prefers-reduced-motion:no-preference){.trip-live-dot{animation:1.6s ease-in-out infinite trip-pulse}}@keyframes trip-pulse{0%,to{opacity:1}50%{opacity:.3}}.trip-track-btn{font-family:var(--font-mono);letter-spacing:.08em;text-transform:uppercase;border:1.5px solid var(--color-primary);background:var(--color-white);color:var(--color-primary);cursor:pointer;border-radius:999px;padding:6px 14px;font-size:11px;font-weight:600;transition:background-color .15s,color .15s}.trip-track-btn:hover:not(:disabled){background:var(--color-primary);color:var(--color-white)}.trip-track-btn:focus-visible{outline:2px solid var(--color-primary);outline-offset:2px}.trip-track-btn:disabled{cursor:default}.trip-track-btn.is-sent{border-color:var(--color-success);color:var(--color-success)}.trip-track-btn.is-error{border-color:var(--color-error);color:var(--color-error)}.plate-chip{background:var(--color-white);border:1px solid #8fa3b6;border-radius:5px;flex-direction:column;align-items:stretch;line-height:1;display:inline-flex;overflow:hidden;box-shadow:0 1px 2px #062c501f}.plate-chip-band{background:var(--color-plate-blue);color:var(--color-white);font-family:var(--font-sans);letter-spacing:.32em;text-transform:uppercase;text-align:center;padding:2px 6px 1px;font-size:6px;font-weight:600}.plate-chip-number{font-family:var(--font-sans);letter-spacing:.12em;color:#1a2733;text-align:center;white-space:nowrap;padding:3px 8px 4px;font-size:14px;font-weight:700}.trip-manifest{align-items:flex-start;gap:var(--spacing-lg);margin-bottom:var(--spacing-lg);display:flex}.manifest-node{flex-direction:column;gap:2px;max-width:300px;display:flex}.manifest-node-end{text-align:right;align-items:flex-end}.manifest-time{font-family:var(--font-mono);color:var(--color-ink);font-size:20px;font-weight:600}.manifest-date{font-family:var(--font-mono);letter-spacing:.06em;text-transform:uppercase;color:var(--color-ink-2);font-size:11px}.manifest-address{color:var(--color-ink-2);margin-top:2px;font-size:13px}.manifest-route{flex:1;justify-content:center;align-items:center;min-width:140px;min-height:48px;display:flex;position:relative}.manifest-route:before{content:"";border-top:2px dashed #018da273;position:absolute;top:50%;left:2px;right:10px}.manifest-route:after{content:"";border:5px solid #0000;border-left:8px solid var(--color-primary);position:absolute;top:50%;right:0;transform:translateY(-50%)}.manifest-route-label{background:var(--color-white);border:1px solid var(--color-line);font-family:var(--font-mono);color:var(--color-ink);white-space:nowrap;border-radius:999px;padding:5px 14px;font-size:12.5px;font-weight:500;position:relative}.trip-instrument{background:var(--color-white);border:1px solid var(--color-line);box-shadow:var(--shadow-sm);margin-bottom:var(--spacing-lg);border-radius:12px;overflow:hidden}.trip-map-frame{height:460px;position:relative}.trip-map-frame .map-pending{height:100%}.trip-map-blank{color:var(--color-ink-2);border-bottom:1px solid var(--color-line);padding:26px 20px;font-size:13.5px}.trip-events{border-bottom:1px solid var(--color-line);flex-wrap:wrap;align-items:center;gap:8px;padding:10px 18px;display:flex}.trip-events-title{font-family:var(--font-mono);letter-spacing:.14em;text-transform:uppercase;color:var(--color-ink-2);margin-right:4px;font-size:11px;font-weight:600}.trip-event-chip{border:1px solid var(--color-line);background:var(--color-white);color:var(--color-ink);cursor:pointer;border-radius:999px;align-items:center;gap:7px;padding:3px 12px 3px 4px;font-size:12.5px;transition:border-color .15s,background-color .15s,box-shadow .15s;display:inline-flex}.trip-event-chip:hover{border-color:var(--color-amber)}.trip-event-chip:focus-visible{outline:2px solid var(--color-primary);outline-offset:2px}.trip-event-chip.is-active{border-color:var(--color-amber);background:color-mix(in srgb, var(--color-amber) 10%, var(--color-white));box-shadow:0 0 0 1px var(--color-amber)}.trip-event-chip .event-icon{width:22px;height:22px;margin-top:0;font-size:12px}.trip-event-time{font-family:var(--font-mono);color:var(--color-ink);font-size:12px;font-weight:600}.trip-event-what{color:var(--color-ink-2)}.trip-event-pin.event-icon{background:var(--color-white);cursor:pointer;border:2px solid;width:26px;height:26px;margin-top:0;padding:0;font-size:13px;box-shadow:0 1px 4px #00000059}.trip-instrument.is-expanded{z-index:200;border:none;border-radius:0;flex-direction:column;margin:0;display:flex;position:fixed;inset:0}.trip-instrument.is-expanded .trip-map-frame{flex:1;height:auto;min-height:0}.map-expand{z-index:1;border:1px solid var(--color-line);background:var(--color-white);color:var(--color-ink);font-family:var(--font-mono);letter-spacing:.08em;text-transform:uppercase;cursor:pointer;box-shadow:var(--shadow-sm);border-radius:999px;align-items:center;gap:6px;padding:6px 12px;font-size:11px;font-weight:600;transition:color .15s,border-color .15s;display:inline-flex;position:absolute;top:10px;right:10px}.map-expand:hover{color:var(--color-primary);border-color:var(--color-primary)}.map-expand:focus-visible{outline:2px solid var(--color-primary);outline-offset:2px}.replay-transport{border-top:1px solid var(--color-line);align-items:center;gap:12px;padding:10px 18px;display:flex}.replay-btn{border:1.5px solid var(--color-primary);background:var(--color-white);width:34px;height:34px;color:var(--color-primary);cursor:pointer;border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;font-size:15px;transition:background-color .15s,color .15s;display:inline-flex}.replay-btn:hover,.replay-btn.is-playing{background:var(--color-primary);color:var(--color-white)}.replay-btn:focus-visible{outline:2px solid var(--color-primary);outline-offset:2px}.replay-label{font-family:var(--font-mono);letter-spacing:.14em;text-transform:uppercase;color:var(--color-ink-2);font-size:11px;font-weight:600}.replay-speeds{gap:4px;display:flex}.replay-speed{font-family:var(--font-mono);border:1px solid var(--color-line);background:var(--color-white);color:var(--color-ink-2);cursor:pointer;border-radius:999px;padding:3px 9px;font-size:11px;font-weight:500;transition:border-color .15s,color .15s}.replay-speed:hover{color:var(--color-primary)}.replay-speed[aria-pressed=true]{border-color:var(--color-primary);color:var(--color-primary);font-weight:600}.replay-speed:focus-visible{outline:2px solid var(--color-primary);outline-offset:2px}.replay-clock{font-family:var(--font-mono);color:var(--color-ink);font-variant-numeric:tabular-nums;margin-left:auto;font-size:12.5px;font-weight:600}.replay-clock-total{color:var(--color-ink-2);font-weight:400}.speed-ribbon{border-top:1px solid var(--color-line);padding:14px 18px 10px}.speed-ribbon:focus-visible{outline:2px solid var(--color-primary);outline-offset:-2px}.ribbon-head{justify-content:space-between;align-items:baseline;gap:var(--spacing-md);margin-bottom:6px;display:flex}.ribbon-title{font-family:var(--font-mono);letter-spacing:.14em;text-transform:uppercase;color:var(--color-ink-2);font-size:11px;font-weight:600}.ribbon-readout{font-family:var(--font-mono);color:var(--color-ink);font-size:12.5px;font-weight:600}.ribbon-readout.is-max{color:var(--color-amber)}.ribbon-plot{width:100%}.ribbon-svg{cursor:crosshair;width:100%;display:block}.ribbon-axis{font-family:var(--font-mono);color:var(--color-ink-2);justify-content:space-between;margin-top:4px;font-size:11px;display:flex}.trip-metrics{background:var(--color-white);border:1px solid var(--color-line);box-shadow:var(--shadow-sm);margin:0 0 var(--spacing-lg);border-radius:12px;flex-wrap:wrap;display:flex;overflow:hidden}.metric{border-left:1px solid var(--color-line);flex:150px;min-width:140px;padding:14px 20px}.metric:first-child{border-left:none}.metric dt{letter-spacing:.1em;text-transform:uppercase;color:var(--color-ink-2);margin-bottom:4px;font-size:11px;font-weight:600}.metric dd{font-family:var(--font-mono);color:var(--color-ink);margin:0;font-size:19px;font-weight:600}.metric-unit{color:var(--color-ink-2);margin-left:3px;font-size:12px;font-weight:500}.trip-back{font-family:var(--font-mono);font-size:13px}.trip-loading{justify-content:center;padding:64px 0;display:flex}.trip-error{background:var(--color-white);border:1px solid var(--color-line);border-left:3px solid var(--color-error);max-width:520px;margin-bottom:var(--spacing-md);border-radius:8px;padding:16px 20px}.trip-error h2{font-family:var(--font-sans);color:var(--color-ink);margin-bottom:4px;font-size:15px;font-weight:600}.trip-error p{color:var(--color-ink-2);font-size:13px}.empty-card{background:var(--color-white);border:1px dashed var(--color-line);max-width:520px;color:var(--color-ink-2);border-radius:12px;padding:28px 24px;font-size:13.5px}.table-card{background:var(--color-white);border:1px solid var(--color-line);box-shadow:var(--shadow-sm);border-radius:12px;padding:8px 8px 4px}.cell-mono{font-family:var(--font-mono);font-size:13px}.cell-muted{color:var(--color-muted);font-style:italic}.table-card--rows-link .ant-table-tbody>tr{cursor:pointer}.cell-plate{color:var(--color-ink-2);margin-left:8px}.cell-address{text-overflow:ellipsis;white-space:nowrap;vertical-align:bottom;max-width:260px;display:inline-block;overflow:hidden}.cell-right{text-align:right;display:block}.trips-head{margin-bottom:var(--spacing-lg)}.trips-toolbar{flex-wrap:wrap;justify-content:space-between;align-items:flex-end;gap:16px;display:flex}.trips-filter{min-width:260px}@media (width<=720px){.trip-manifest{flex-direction:column;gap:10px}.manifest-node-end{text-align:left;align-items:flex-start}.manifest-route{width:100%;min-height:36px}.metric{flex-basis:45%}.replay-transport{flex-wrap:wrap}}.fleet-page{height:calc(100vh - var(--header-height) - var(--spacing-lg) * 2);flex-direction:column;display:flex}.fleet-summary{font-family:var(--font-mono);letter-spacing:.04em;color:var(--color-ink-2);margin-top:6px;font-size:11.5px}.fleet-shell{flex:1;grid-template-columns:320px 1fr;gap:16px;min-height:0;display:grid}.fleet-aside{background:var(--color-white);border:1px solid var(--color-line);min-height:0;box-shadow:var(--shadow-sm);border-radius:12px;flex-direction:column;gap:10px;padding:12px;display:flex}.fleet-list{min-height:0;margin:0;padding:0;list-style:none;overflow-y:auto}.fleet-list-empty{color:var(--color-ink-2);justify-content:center;align-items:center;padding:32px 0;font-size:13px;display:flex}.fleet-row{text-align:left;cursor:pointer;background:0 0;border:0;border-radius:8px;align-items:center;gap:10px;width:100%;padding:9px 8px;transition:background-color .15s;display:flex}.fleet-row:hover{background:var(--color-bg)}.fleet-row.is-active{background:color-mix(in srgb, var(--color-primary) 10%, transparent)}.fleet-dot{width:9px;height:9px;box-shadow:0 0 0 2px var(--color-white);border-radius:50%;flex:none}.fleet-row-body{flex-direction:column;flex:1;gap:1px;min-width:0;display:flex}.fleet-row-name{color:var(--color-ink);white-space:nowrap;text-overflow:ellipsis;font-size:13px;font-weight:600;overflow:hidden}.fleet-row-where{min-width:0;color:var(--color-ink-2);align-items:center;gap:4px;font-size:11.5px;line-height:1.3;display:flex}.fleet-row-where.is-place{color:var(--color-primary);font-weight:600}.fleet-row-where-text{white-space:nowrap;text-overflow:ellipsis;min-width:0;overflow:hidden}.fleet-row-meta{font-family:var(--font-mono);letter-spacing:.03em;color:var(--color-ink-2);font-size:10.5px}.fleet-map{border:1px solid var(--color-line);min-height:0;box-shadow:var(--shadow-sm);background:var(--color-white);border-radius:12px;overflow:hidden}.fleet-map-loading{justify-content:center;align-items:center;height:100%;display:flex}.fleet-popup .mapboxgl-popup-content{font-family:var(--font-sans);border-radius:10px;padding:12px 14px}.fleet-popup-name{color:var(--color-ink);margin-bottom:6px;font-size:13.5px;font-weight:700}.fleet-popup-where{color:var(--color-ink-2);overflow-wrap:anywhere;align-items:flex-start;gap:5px;margin:4px 0 0;font-size:12px;line-height:1.35;display:flex}.fleet-popup-where.is-place{color:var(--color-primary);font-weight:600}.fleet-pin{flex:none;width:.75em;height:1em}.fleet-popup-where .fleet-pin{margin-top:.15em}.fleet-popup-grid{grid-template-columns:auto auto;gap:3px 14px;margin-top:10px;font-size:12px;display:grid}.fleet-popup-grid dt{color:var(--color-ink-2)}.fleet-popup-grid dd{color:var(--color-ink);text-align:right}@media (width<=900px){.fleet-page{height:auto}.fleet-shell{grid-template-columns:1fr}.fleet-map{height:60vh}}.section-title{font-family:var(--font-mono);letter-spacing:.14em;text-transform:uppercase;color:var(--color-ink-2);margin:0 0 10px;font-size:11px;font-weight:600}.section-title+*{margin-bottom:var(--spacing-lg)}.fix-card{background:var(--color-white);border:1px solid var(--color-line);box-shadow:var(--shadow-sm);border-radius:12px;overflow:hidden}.fix-head{flex-direction:column;gap:3px;padding:12px 18px;display:flex}.fix-status{color:var(--color-ink-2);align-items:center;gap:8px;font-size:12.5px;font-weight:600;display:inline-flex}.fix-address{color:var(--color-ink);margin:0;font-size:16px;font-weight:600;line-height:1.3}.fix-ago{font-family:var(--font-mono);letter-spacing:.04em;color:var(--color-ink-2);font-size:11.5px;font-weight:500}.fix-map{border-top:1px solid var(--color-line);border-bottom:1px solid var(--color-line);height:400px}.fix-blank{border-left:0;border-right:0;border-radius:0;max-width:none}.fix-pin{display:inline-flex}.fix-pin--unsure{opacity:.5}.fix-note{border-bottom:1px solid var(--color-line);background:color-mix(in srgb, var(--color-amber) 8%, transparent);color:var(--color-ink);padding:9px 18px;font-size:12.5px}.fix-note--alert{background:color-mix(in srgb, var(--color-error) 8%, transparent)}.fix-rail{box-shadow:none;border:0;border-bottom:1px solid var(--color-line);border-radius:0;margin:0}.fix-rail .metric{border-top:1px solid var(--color-line)}.readings{flex-wrap:wrap;gap:8px 10px;padding:14px 18px;display:flex}.readings:empty{display:none}.reading{border:1px solid var(--color-line);border-radius:999px;align-items:baseline;gap:6px;padding:4px 10px;display:flex}.reading dt{letter-spacing:.06em;text-transform:uppercase;color:var(--color-ink-2);font-size:11px}.reading dd{font-family:var(--font-mono);color:var(--color-ink);margin:0;font-size:12.5px;font-weight:600}.fix-ident{border-top:1px solid var(--color-line);background:var(--color-bg);flex-wrap:wrap;gap:4px 32px;padding:12px 18px;display:flex}.fix-ident dt{letter-spacing:.1em;text-transform:uppercase;color:var(--color-ink-2);font-size:10.5px;font-weight:600}.fix-ident dd{font-family:var(--font-mono);color:var(--color-ink);margin:0;font-size:12.5px}.engine-card{background:var(--color-white);border:1px solid var(--color-line);box-shadow:var(--shadow-sm);border-radius:12px;overflow:hidden}.engine-head{justify-content:space-between;align-items:baseline;gap:var(--spacing-md);border-bottom:1px solid var(--color-line);flex-wrap:wrap;padding:12px 18px;display:flex}.engine-when{color:var(--color-ink-2);font-size:12.5px}.engine-when strong{color:var(--color-ink)}.engine-stamp{font-family:var(--font-mono);letter-spacing:.04em;color:var(--color-ink-2);font-size:11.5px}.engine-note{border-bottom:1px solid var(--color-line);background:color-mix(in srgb, var(--color-amber) 8%, transparent);color:var(--color-ink);margin:0;padding:9px 18px;font-size:12.5px}.triplog-card{background:var(--color-white);border:1px solid var(--color-line);box-shadow:var(--shadow-sm);border-radius:12px;overflow:hidden}.triplog-loading{justify-content:center;padding:28px 0;display:flex}.triplog-row{justify-content:space-between;align-items:center;gap:var(--spacing-md);color:var(--color-ink);padding:11px 18px;transition:background .15s;display:flex}.triplog-row+.triplog-row{border-top:1px solid var(--color-line)}.triplog-row:hover{background:var(--color-bg);color:var(--color-ink)}.triplog-when{flex-direction:column;gap:2px;min-width:0;display:flex}.triplog-date{text-transform:capitalize;font-size:13.5px;font-weight:600}.triplog-hours{font-family:var(--font-mono);letter-spacing:.04em;color:var(--color-ink-2);font-size:11.5px}.triplog-figures{align-items:baseline;gap:var(--spacing-lg);text-align:right;display:flex}.triplog-distance{font-family:var(--font-mono);font-size:15px;font-weight:600}.triplog-duration{color:var(--color-ink-2);min-width:86px;font-size:12.5px}@media (width<=720px){.fix-map{height:240px}.triplog-figures{gap:var(--spacing-md)}.triplog-duration{min-width:0}}.vehicle-connection{align-items:center;gap:6px;font-size:13px;display:inline-flex}.vehicle-connection__dot{border-radius:50%;flex-shrink:0;width:7px;height:7px}.vehicle-connection--recent{color:#389e0d}.vehicle-connection--recent .vehicle-connection__dot{background-color:#52c41a;box-shadow:0 0 0 3px #52c41a26}.vehicle-connection--warning{color:#d48806}.vehicle-connection--warning .vehicle-connection__dot{background-color:#faad14}.vehicle-connection--stale{color:#8c8c8c}.vehicle-connection--stale .vehicle-connection__dot{background-color:#bfbfbf}.vhead{background:var(--color-white);border:1px solid var(--color-line);box-shadow:var(--shadow-sm);margin-bottom:var(--spacing-lg);border-radius:12px;overflow:hidden}.vhead-archived{color:#8a5c17;font-family:var(--font-mono);letter-spacing:.06em;background:#f9f1e2;border-bottom:1px solid #ecdcc0;align-items:center;gap:10px;padding:9px 18px;font-size:11.5px;display:flex}.vhead-archived-text{text-transform:uppercase}.vhead-archived-text strong{letter-spacing:.12em;font-weight:700}.vhead-archived .ant-btn{flex:none;margin-left:auto}.vhead--archived .vhead-id,.vhead--archived .vhead-rail{filter:grayscale();opacity:.92}.vhead-id{align-items:center;gap:var(--spacing-md);padding:14px 18px;display:flex}.brand-mark{flex:none;justify-content:center;align-items:center;width:40px;height:40px;display:inline-flex}.brand-mark img{object-fit:contain;width:100%;height:100%}.brand-mark--text{background:var(--color-bg);font-family:var(--font-mono);letter-spacing:.06em;color:var(--color-ink-2);border-radius:9px;font-size:12px;font-weight:600}.vhead-id .plate-chip-band{padding:3px 8px 2px;font-size:6.5px}.vhead-id .plate-chip-number{padding:4px 10px 5px;font-size:17px}.vhead-names{flex:1;min-width:0}.vhead-name{font-family:var(--font-sans);letter-spacing:-.01em;color:var(--color-ink);font-size:26px;font-weight:700;line-height:1.15}.vhead-record{font-family:var(--font-mono);letter-spacing:.08em;text-transform:uppercase;color:var(--color-ink-2);flex-wrap:wrap;align-items:baseline;gap:3px 12px;margin-top:5px;font-size:11.5px;display:flex}.vhead-vin{align-items:baseline;gap:6px;min-width:0;display:inline-flex}.vhead-spec+.vhead-vin{border-left:1px solid var(--color-line);padding-left:12px}.vhead-vin-label{letter-spacing:.12em;font-weight:600}.vhead-vin-value{color:var(--color-ink);letter-spacing:.14em;word-break:break-all;font-weight:500}.vhead-blank{color:var(--color-muted);letter-spacing:0;text-transform:none;font-style:italic}.vhead-rail{border-top:1px solid var(--color-line);background:var(--color-bg);flex-wrap:wrap;display:flex}.vhead-reading{flex-direction:column;gap:7px;min-width:220px;padding:12px 18px;display:flex}.vhead-reading+.vhead-reading{border-left:1px solid var(--color-line)}.vhead-reading dt{font-family:var(--font-mono);letter-spacing:.12em;text-transform:uppercase;color:var(--color-ink-2);font-size:10.5px;font-weight:600}.vhead-reading dd{flex-wrap:wrap;align-items:center;gap:4px 12px;min-height:28px;margin:0;display:flex}.vhead-reading--odometer dd{flex-direction:column;align-items:flex-start;gap:6px}.vhead-note{font-family:var(--font-mono);letter-spacing:.04em;color:var(--color-ink-2);font-size:11px}.odo-drum{align-items:stretch;gap:2px;display:inline-flex}.odo-cell{font-family:var(--font-mono);text-align:center;min-width:18px;color:var(--color-white);background:var(--color-ink);border-radius:2px;padding:6px 5px 7px;font-size:17px;font-weight:600;line-height:1;box-shadow:inset 0 3px 4px -3px #ffffff8c,inset 0 -4px 5px -3px #000000d9}.odo-cell--lead{color:#46617c}.odo-cell--tenth{background:var(--color-amber);margin-left:4px}.odo-unit{font-family:var(--font-mono);letter-spacing:.04em;color:var(--color-ink-2);align-self:flex-end;margin-left:6px;padding-bottom:1px;font-size:11px}.driver-slot{background:var(--color-white);color:var(--color-ink-2);border:1px dashed #b7c6d3;border-radius:999px;align-items:center;padding:6px 14px;font-size:13px;display:inline-flex}@media (width<=720px){.vhead-id{flex-wrap:wrap}.vhead-names{flex-basis:100%;order:3}.vhead-name{font-size:22px}.vhead-spec+.vhead-vin{border-left:0;padding-left:0}.vhead-rail{display:block}.vhead-reading+.vhead-reading{border-left:0;border-top:1px solid var(--color-line)}}.vehicle-form-page{max-width:720px;margin:0 auto}.vehicle-form-page .ant-breadcrumb{margin-bottom:var(--spacing-md)}.vehicle-form-card{background:var(--color-white);border:1px solid var(--color-border);box-shadow:var(--shadow-sm);border-radius:10px;overflow:hidden}.vehicle-form-head{padding:var(--spacing-lg) var(--spacing-xl) var(--spacing-md);border-bottom:1px solid var(--color-border)}.vehicle-form-sub{color:var(--color-ink-2);margin-top:6px;font-size:13px}.vehicle-form-body{gap:var(--spacing-lg);padding:var(--spacing-xl);flex-direction:column;display:flex}.vehicle-form-grid{gap:var(--spacing-lg);grid-template-columns:repeat(2,minmax(0,1fr));display:grid}@media (width<=640px){.vehicle-form-grid{grid-template-columns:minmax(0,1fr)}}.vehicle-field{flex-direction:column;gap:6px;display:flex}.vehicle-label{color:var(--color-ink);font-size:13px;font-weight:600}.vehicle-label-hint{color:var(--color-muted);margin-left:8px;font-weight:400}.vehicle-error{color:var(--color-error);font-size:12px}.vehicle-form-foot{justify-content:flex-end;align-items:center;gap:var(--spacing-sm);padding:var(--spacing-md) var(--spacing-xl);border-top:1px solid var(--color-border);background:#fafbfc;display:flex}.vin-row{gap:var(--spacing-sm);display:flex}.vin-input.ant-input,.vin-inline .ant-input{font-family:var(--font-mono);letter-spacing:1.5px}.vin-row .ant-btn{flex-shrink:0}.vin-count{color:var(--color-muted);font-size:12px}.vin-count b{font-weight:600}.vin-count .is-complete{color:var(--color-success)}.vin-alert{border-radius:var(--border-radius)}.vin-skip.ant-btn-link{color:var(--color-ink-2);margin-right:auto;padding-left:0}.vin-skip.ant-btn-link:hover{color:var(--color-primary)}.vin-result{border:1px solid var(--color-line);border-radius:var(--border-radius);overflow:hidden}.vin-result-head{align-items:center;gap:var(--spacing-sm);padding:10px var(--spacing-md);border-bottom:1px solid var(--color-line);color:var(--color-primary);background:#018da20f;font-size:13px;font-weight:600;display:flex}.vin-source{letter-spacing:.4px;text-transform:uppercase;color:var(--color-muted);margin-left:auto;font-size:11px;font-weight:500}.vin-result-grid{gap:var(--spacing-md);padding:var(--spacing-md);grid-template-columns:repeat(auto-fill,minmax(140px,1fr));display:grid}.vin-result-item dt{text-transform:uppercase;letter-spacing:.6px;color:var(--color-muted);font-size:11px}.vin-result-item dd{color:var(--color-ink);margin-top:2px;font-size:14px;font-weight:600}.place-tools{gap:8px;display:flex}.place-row{border-radius:8px;align-items:center;gap:4px;transition:background-color .15s;display:flex}.place-row:hover{background:var(--color-bg)}.place-row.is-active{background:color-mix(in srgb, var(--color-primary) 10%, transparent)}.place-row-main{text-align:left;cursor:pointer;background:0 0;border:0;flex:1;align-items:center;gap:10px;min-width:0;padding:9px 8px;display:flex}.place-row-actions{opacity:0;flex:none;padding-right:4px;transition:opacity .15s;display:flex}.place-row:hover .place-row-actions,.place-row.is-active .place-row-actions,.place-row-actions:focus-within{opacity:1}.place-swatch{border-radius:3px;flex:none;width:10px;height:10px;box-shadow:0 0 0 1px #0000001f}.place-inside{padding:4px 8px 12px 30px}.place-inside-address{color:var(--color-ink-2);margin-bottom:8px;font-size:12px}.place-inside-title{font-family:var(--font-mono);letter-spacing:.08em;text-transform:uppercase;color:var(--color-ink-2);margin-bottom:6px;font-size:10.5px}.place-inside-empty{color:var(--color-ink-2);padding:4px 0;font-size:12px}.place-inside-list{margin:0;padding:0;list-style:none}.place-inside-row{align-items:center;gap:8px;padding:5px 0;display:flex}.place-inside-body{flex-direction:column;flex:1;min-width:0;display:flex}.place-inside-name{text-overflow:ellipsis;white-space:nowrap;font-size:13px;font-weight:500;overflow:hidden}.place-inside-meta{font-family:var(--font-mono);color:var(--color-ink-2);font-size:10.5px}.place-form{flex-direction:column;gap:12px;min-height:0;display:flex;overflow-y:auto}.place-form-title{color:var(--color-ink);font-size:15px;font-weight:600}.place-form-hint{color:var(--color-ink-2);font-size:12px;line-height:1.45}.place-field{flex-direction:column;gap:5px;display:flex}.place-label{font-family:var(--font-mono);letter-spacing:.08em;text-transform:uppercase;color:var(--color-ink-2);font-size:10.5px}.place-error{color:var(--color-error);font-size:11.5px}.place-type-option{align-items:center;gap:8px;display:inline-flex}.place-form-actions{gap:8px;margin-top:4px;display:flex}.place-form-actions>*{flex:1}.mapboxgl-ctrl-group .mapbox-gl-draw_ctrl-draw-btn{display:none}.alert-toolbar-actions{gap:8px;display:flex}.ant-table-tbody>tr.is-disabled>td{opacity:.55}.alert-name-cell{text-align:left;cursor:pointer;background:0 0;border:0;flex-direction:column;align-items:flex-start;gap:4px;padding:0;display:flex}.alert-name{color:var(--color-ink);font-size:13.5px;font-weight:600}.alert-name-cell:hover .alert-name{color:var(--color-primary)}.alert-name-cell:focus-visible{outline:2px solid var(--color-primary);outline-offset:2px;border-radius:4px}.alert-kind-chip{font-family:var(--font-mono);letter-spacing:.06em;text-transform:uppercase;border-radius:999px;align-items:center;gap:5px;padding:2px 8px;font-size:10.5px;font-weight:600;display:inline-flex}.alert-kind-chip.is-geofence{background:color-mix(in srgb, var(--color-primary) 12%, transparent);color:var(--color-primary)}.alert-kind-chip.is-battery{background:color-mix(in srgb, var(--color-amber) 14%, transparent);color:var(--color-amber)}.alert-kind-chip.is-speed{background:color-mix(in srgb, var(--color-error) 13%, transparent);color:#c0272d}.alert-condition{color:var(--color-ink);font-size:13px}.alert-scope{flex-direction:column;gap:1px;display:flex}.alert-scope-name{color:var(--color-ink);font-size:13px}.alert-scope-count{font-family:var(--font-mono);letter-spacing:.03em;color:var(--color-ink-2);font-size:10.5px}.alert-scope-count.is-none{color:var(--color-error)}.alert-channel-chips{gap:6px;display:flex}.alert-channel-chip{border:1px solid var(--color-line);font-family:var(--font-mono);color:var(--color-ink-2);border-radius:999px;align-items:center;gap:5px;padding:2px 9px;font-size:11.5px;font-weight:600;display:inline-flex}.alert-channel-chip.is-whatsapp{border-color:color-mix(in srgb, #25d366 55%, var(--color-line));color:#128c4a}.alert-channel-chip.is-email{border-color:color-mix(in srgb, var(--color-primary) 45%, var(--color-line));color:var(--color-primary)}.place-row-actions.is-always{opacity:1}.alert-empty{flex-direction:column;align-items:flex-start;gap:12px;line-height:1.5;display:flex}.alert-empty-title{color:var(--color-ink);font-size:15px;font-weight:600}.alert-form{flex-direction:column;gap:24px;display:flex}.alert-section{flex-direction:column;gap:12px;display:flex}.alert-section-title{font-family:var(--font-mono);letter-spacing:.12em;text-transform:uppercase;color:var(--color-primary);border-bottom:1px solid var(--color-line);padding-bottom:8px;font-size:10.5px;font-weight:600}.alert-enable{align-items:center;gap:8px;display:inline-flex}.alert-enable-label{font-family:var(--font-mono);letter-spacing:.08em;text-transform:uppercase;color:var(--color-ink-2);font-size:10.5px}.alert-field{flex-direction:column;gap:5px;display:flex}.alert-field-row{grid-template-columns:1fr 1fr;gap:12px;display:grid}.alert-label{font-family:var(--font-mono);letter-spacing:.08em;text-transform:uppercase;color:var(--color-ink-2);font-size:10.5px}.alert-field-hint{color:var(--color-ink-2);font-size:11.5px;line-height:1.45}.alert-field-error{color:var(--color-error);font-size:11.5px;line-height:1.45}.alert-field-loading{padding:8px 0}.alert-kinds{grid-template-columns:repeat(3,1fr);gap:8px;display:grid}.alert-kind{border:1px solid var(--color-line);background:var(--color-white);cursor:pointer;border-radius:10px;flex-direction:column;align-items:center;gap:3px;padding:12px 6px 10px;transition:border-color .15s,background-color .15s;display:flex}.alert-kind:hover{border-color:var(--color-primary)}.alert-kind.is-active{border-color:var(--color-primary);background:color-mix(in srgb, var(--color-primary) 8%, transparent)}.alert-kind:focus-visible{outline:2px solid var(--color-primary);outline-offset:2px}.alert-kind-icon{color:var(--color-ink-2);font-size:19px}.alert-kind.is-active .alert-kind-icon{color:var(--color-primary)}.alert-kind-label{color:var(--color-ink);font-size:13px;font-weight:600}.alert-kind-hint{text-align:center;color:var(--color-ink-2);font-size:10.5px;line-height:1.3}.alert-preview{border-left:3px solid var(--color-primary);background:color-mix(in srgb, var(--color-primary) 7%, transparent);color:var(--color-ink);border-radius:0 6px 6px 0;padding:9px 12px;font-size:13px;font-weight:500}.alert-group-option{justify-content:space-between;align-items:center;gap:12px;display:flex}.alert-group-count{font-family:var(--font-mono);color:var(--color-ink-2);font-size:10.5px}.alert-groups-empty{flex-direction:column;align-items:flex-start;gap:8px;display:flex}.alert-manage-link{align-self:flex-start;padding-left:0}.alert-reach{font-family:var(--font-mono);letter-spacing:.03em;color:var(--color-ink-2);font-size:11.5px}.alert-reach-note{font-family:var(--font-sans);letter-spacing:0}.alert-channels{flex-direction:column;gap:10px;display:flex}.alert-channel{border:1px solid var(--color-line);border-radius:10px;flex-direction:column;gap:6px;padding:10px 12px 12px;display:flex}.alert-channel-head{justify-content:space-between;align-items:center;display:flex}.alert-channel-name{color:var(--color-ink);align-items:center;gap:7px;font-size:13px;font-weight:600;display:inline-flex}.alert-channel-name.is-whatsapp .anticon{color:#25d366}.alert-channel-name.is-email .anticon{color:var(--color-primary)}.alert-recipients{flex-direction:column;gap:4px;display:flex}.alert-channel-add{gap:8px;display:flex}.alert-channel-add>*{flex:1}.alert-problems{margin:0;padding-left:18px;font-size:12.5px}.alert-form-actions{justify-content:flex-end;gap:8px;display:flex}.group-editor{flex-direction:column;gap:16px;display:flex}.group-list{flex-direction:column;gap:12px;display:flex}.group-vehicle{align-items:baseline;gap:8px;display:inline-flex}.group-vehicle-name{font-size:13px}.group-vehicle-plate{font-family:var(--font-mono);color:var(--color-ink-2);font-size:10.5px}@media (width<=720px){.alert-field-row{grid-template-columns:1fr}}*{box-sizing:border-box;margin:0;padding:0}body{font-family:var(--font-sans);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;background-color:var(--color-bg)}.app-loading{justify-content:center;align-items:center;min-height:100vh;display:flex}.route-loading{justify-content:center;padding:64px 0;display:flex}.map-pending{background:var(--color-bg)}.muted{color:var(--color-muted)}a{color:var(--color-primary);text-decoration:none}a:hover{color:var(--color-primary-hover)}
