:root{--bg: #f4f8f9;--panel: #ffffff;--panel-soft: #f8fafc;--border: #d4dee2;--border-strong: #b6c7ce;--text: #101416;--muted: #5f7077;--muted-2: #84979f;--primary: #005f7f;--primary-dark: #003f55;--teal: #006b78;--green: #15803d;--amber: #b45309;--red: #b91c1c;--sidebar: #050708;--sidebar-soft: #0b2f3a;--shadow: 0 18px 44px rgba(30, 41, 59, .08)}*{box-sizing:border-box}body{margin:0;min-width:1120px;background:var(--bg);color:var(--text);font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif}button,input,select{font:inherit}button{cursor:pointer}.login-page{min-height:100vh;display:grid;place-items:center;padding:40px;background:repeating-linear-gradient(90deg,rgba(255,255,255,.035) 0 1px,transparent 1px 78px),repeating-linear-gradient(0deg,rgba(255,255,255,.028) 0 1px,transparent 1px 78px),#050708}.login-panel{width:min(1080px,100%);min-height:580px;display:grid;grid-template-columns:1.2fr .8fr;gap:32px;align-items:stretch}.login-copy{padding:54px;border:1px solid rgba(255,255,255,.2);border-radius:8px;background:#fff;color:var(--text);display:flex;flex-direction:column;justify-content:center;box-shadow:0 24px 70px #00000047}.login-copy h1{max-width:680px;margin:18px 0;color:var(--primary);font-size:44px;line-height:1.04;letter-spacing:0}.login-copy p{max-width:620px;color:#101416;font-size:17px;line-height:1.6}.login-brand-logo{width:min(290px,100%);padding:0;border:0;background:transparent;box-shadow:none}.login-brand-logo img{display:block;width:100%;height:auto}.login-card{align-self:center;padding:30px;border:1px solid rgba(255,255,255,.16);border-radius:8px;background:#050708;color:#fff;box-shadow:0 24px 70px #00000047}.login-card-header,.brand,.topbar,.system-card,.logout-button,.ghost-button,.report-actions,.table-toolbar,.alert-row,.report-actions button,td svg{display:flex;align-items:center}.login-card-header{gap:12px;margin-bottom:24px}.login-card-header div,.brand div,.system-card div,.topbar div,.kpi-card div,.vehicle-card>div,.farm-list div,.reading-list div,.event-list div{display:flex;flex-direction:column}.login-card-header span,.brand span,.system-card span,.topbar span,.kpi-card span,.section-header p,.panel-header span,.vehicle-card span,.farm-list span,.farm-list small,.detail-list span,.device-grid span,.reading-list span,.reading-list small,.event-list span,.empty-state{color:var(--muted)}.login-card label,.report-filters label,.form-panel label{display:grid;gap:8px;color:var(--muted);font-size:13px;font-weight:700}.login-card label{color:#d7e2e5}.login-card-header svg{color:#7fb6c4}.login-card-header span{color:#9fb3ba}.login-card input,.login-card select,.report-filters input,.report-filters select,.search-box input,.form-panel input,.form-panel select,.form-panel textarea{width:100%;border:1px solid var(--border);border-radius:8px;background:#fff;color:var(--text);outline:none}.login-card input,.login-card select,.report-filters input,.report-filters select,.form-panel input,.form-panel select{height:44px;padding:0 12px}.form-panel textarea{resize:vertical;min-height:160px;padding:12px;line-height:1.5}.login-card label+label{margin-top:16px}.login-account-preview{margin:12px 0 16px;padding:12px;border:1px solid rgba(127,182,196,.38);border-radius:8px;background:#005f7f29;display:grid;gap:4px}.login-account-preview strong{color:#fff;font-size:13px}.login-account-preview span{color:#d7e2e5;font-size:12px;font-weight:700;line-height:1.45}.login-card button,.report-actions button,.ghost-button{height:42px;border-radius:8px;border:1px solid transparent;padding:0 16px;font-weight:800}.login-card button{width:100%;margin:22px 0 12px;background:var(--primary);color:#fff}.login-card small{color:#9fb3ba;line-height:1.5}.login-error{margin:14px 0 0;padding:10px 12px;border:1px solid #fecaca;border-radius:8px;background:#fef2f2;color:#991b1b;font-size:13px;font-weight:800;line-height:1.45}.app-shell{min-height:100vh;display:grid;grid-template-columns:280px minmax(840px,1fr)}.sidebar{position:sticky;top:0;height:100vh;padding:22px;background:var(--sidebar);color:#fff;display:flex;flex-direction:column;justify-content:space-between}.brand{gap:12px;padding-bottom:24px}.brand-mark{width:42px;height:42px;border-radius:8px;display:grid;place-items:center;background:#fff;color:#fff;overflow:hidden}.brand-logo-mark img{width:38px;height:38px;object-fit:contain}.brand-mark.large{width:54px;height:54px}.brand strong{font-size:16px}.brand span{color:#98a2b3;font-size:12px}.sidebar-nav{display:grid;gap:8px}.sidebar-nav button,.logout-button{width:100%;min-height:44px;border:1px solid transparent;border-radius:8px;padding:0 12px;background:transparent;color:#d0d5dd;gap:10px;font-weight:700;text-align:left}.sidebar-nav button{display:grid;grid-template-columns:22px 1fr;align-items:center}.sidebar-nav button.active,.sidebar-nav button:hover,.logout-button:hover{background:var(--sidebar-soft);color:#fff}.sidebar-footer{display:grid;gap:14px}.system-card,.tenant-card{gap:12px;padding:14px;border:1px solid rgba(255,255,255,.12);border-radius:8px;background:#ffffff0a}.system-card strong{font-size:13px}.system-card span,.tenant-card span,.tenant-card small{color:#98a2b3;font-size:12px}.tenant-card{display:grid;gap:4px}.tenant-card strong{color:#fff;font-size:13px;line-height:1.35}.main-area{min-width:0}.topbar{position:sticky;top:0;z-index:5;height:72px;justify-content:space-between;padding:0 30px;border-bottom:1px solid var(--border);background:#f4f7fbeb;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px)}.topbar strong{font-size:16px;white-space:nowrap}.topbar span{font-size:12px}.topbar-actions{flex-direction:row!important;gap:9px;color:var(--muted);font-weight:700}.client-switcher{height:42px;padding:5px 8px 5px 11px;border:1px solid var(--border);border-radius:8px;background:#fff;display:grid;grid-template-columns:auto minmax(180px,240px);gap:9px;align-items:center}.client-switcher span{color:var(--muted);font-size:11px;font-weight:900;text-transform:uppercase}.client-switcher select{height:30px;border:0;background:transparent;color:var(--text);outline:none;font-size:13px;font-weight:900}.client-session-chip{min-height:42px;padding:6px 12px;border:1px solid var(--border);border-radius:8px;background:#fff;display:grid;align-content:center;gap:2px}.client-session-chip span{color:var(--muted);font-size:10px;font-weight:900;text-transform:uppercase}.client-session-chip strong{color:var(--text);font-size:13px}.refresh-button{height:34px;border:1px solid var(--border);border-radius:8px;padding:0 12px;background:#fff;color:var(--text);display:inline-flex;align-items:center;gap:7px;font-size:12px;font-weight:900}.install-app-button{height:34px;border:1px solid #a9cbd3;border-radius:8px;padding:0 12px;background:#e9f4f6;color:var(--teal);display:inline-flex;align-items:center;gap:7px;font-size:12px;font-weight:900}.mobile-install-hint,.mobile-bottom-nav{display:none}.install-guide-overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1200;padding:22px;background:#05070894;display:grid;place-items:center}.install-guide-modal{width:min(680px,100%);max-height:min(720px,calc(100vh - 44px));overflow:auto;padding:20px;border:1px solid var(--border);border-radius:8px;background:#fff;box-shadow:0 28px 80px #0000003d;display:grid;gap:16px}.install-guide-head{display:flex;justify-content:space-between;gap:14px;align-items:flex-start}.install-guide-head h2{margin:4px 0 0;font-size:22px}.install-guide-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.install-guide-grid article{padding:16px;border:1px solid var(--border);border-radius:8px;background:var(--panel-soft);display:grid;gap:10px}.install-guide-grid svg{color:var(--primary)}.install-guide-grid h3{margin:0;font-size:16px}.install-guide-grid ol{margin:0;padding-left:20px;color:var(--muted);font-size:13px;font-weight:800;line-height:1.5}.connection-dot{width:9px;height:9px;border-radius:999px;background:#22c55e;box-shadow:0 0 0 5px #22c55e24}.mode-offline{background:#f59e0b;box-shadow:0 0 0 5px #f59e0b29}.mode-loading{background:#005f7f;box-shadow:0 0 0 5px #005f7f29}.api-warning-banner{margin:16px 30px 0;padding:12px 14px;border:1px solid #f2c27d;border-radius:8px;background:#fff7ed;color:#7c2d12;display:flex;align-items:flex-start;gap:10px}.api-warning-banner div{display:grid;gap:3px}.api-warning-banner strong{font-size:13px}.api-warning-banner span{color:#9a3412;font-size:12px;line-height:1.45}main{padding:30px}.view-stack{display:grid;gap:22px}.section-header{display:flex;justify-content:space-between;gap:24px;align-items:flex-end}.section-header h1{margin:4px 0 8px;font-size:30px;line-height:1.18;letter-spacing:0}.section-header p{margin:0;max-width:760px;line-height:1.55}.eyebrow{color:var(--primary);font-size:12px;font-weight:900;letter-spacing:0;text-transform:uppercase}.section-actions{flex-shrink:0}.ghost-button{gap:8px;background:#fff;color:var(--text);border-color:var(--border)}.module-tabs{min-height:54px;padding:7px;border:1px solid var(--border);border-radius:8px;background:var(--panel);display:flex;align-items:center;gap:7px;overflow-x:auto;box-shadow:0 10px 28px #1e293b0a}.module-tabs button{min-width:128px;min-height:38px;border:1px solid transparent;border-radius:8px;padding:0 12px;background:transparent;color:var(--muted);display:inline-flex;align-items:center;justify-content:center;gap:8px;font-size:13px;font-weight:900;white-space:nowrap}.module-tabs button:hover{background:var(--panel-soft);color:var(--text)}.module-tabs button.active{border-color:#a9cbd3;background:#e9f4f6;color:var(--primary)}.module-tab-panel{animation:tab-panel-in .14s ease-out}@keyframes tab-panel-in{0%{opacity:.75;transform:translateY(4px)}to{opacity:1;transform:translateY(0)}}.kpi-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:16px}.kpi-grid.compact{grid-template-columns:repeat(4,minmax(0,1fr))}.kpi-card{min-height:126px;padding:18px;border:1px solid var(--border);border-radius:8px;background:var(--panel);box-shadow:0 10px 28px #1e293b0a;display:grid;grid-template-columns:44px 1fr;gap:14px;align-items:start}.kpi-icon{width:42px;height:42px;border-radius:8px;display:grid!important;place-items:center;color:var(--primary);background:#005f7f17}.kpi-card p{margin:0;color:var(--muted);font-size:12px;font-weight:800;text-transform:uppercase}.kpi-card strong{margin-top:8px;font-size:24px;line-height:1.1}.kpi-card span{margin-top:7px;font-size:13px;line-height:1.35}.kpi-success .kpi-icon{color:var(--green);background:#15803d1a}.kpi-warning .kpi-icon{color:var(--amber);background:#b453091a}.kpi-danger .kpi-icon{color:var(--red);background:#b91c1c1a}.dashboard-grid,.detail-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px}.domain-overview-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}.domain-overview-grid.single-domain{grid-template-columns:1fr}.detail-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.panel{padding:18px;border:1px solid var(--border);border-radius:8px;background:var(--panel);box-shadow:0 10px 28px #1e293b0a;min-width:0}.view-loading-panel{min-height:220px;display:grid;place-content:center;text-align:center;gap:6px}.view-loading-panel h2{margin:0;font-size:20px}.span-2{grid-column:span 2}.span-3{grid-column:span 3}.panel-header{display:flex;justify-content:space-between;align-items:flex-start;gap:16px;margin-bottom:16px}.panel-header h2{margin:4px 0 0;font-size:18px;line-height:1.25;letter-spacing:0}.metric-pills{display:flex;flex-wrap:wrap;gap:8px;justify-content:flex-end}.metric-pills span{padding:6px 9px;border:1px solid var(--border);border-radius:999px;background:var(--panel-soft);color:var(--muted);font-size:12px;font-weight:800}.chart-wrap{width:100%;min-width:0}.alert-list,.farm-list,.reading-list,.event-list,.vehicle-list,.sector-grid,.detail-list,.summary-list,.status-summary{display:grid;gap:12px}.alert-row{gap:10px;padding:12px;border:1px solid var(--border);border-radius:8px;background:var(--panel-soft)}.alert-row>div{flex:1}.alert-row strong{display:block;font-size:13px}.alert-row span:not(.status-badge){color:var(--muted);font-size:12px}.status-badge{display:inline-flex;align-items:center;width:fit-content;min-height:24px;padding:4px 9px;border-radius:999px;border:1px solid transparent;font-size:12px;font-weight:900;line-height:1;white-space:nowrap}.status-activo,.status-vigente,.status-cerrada,.status-cerrado{color:#166534;background:#dcfce7;border-color:#bbf7d0}.status-inactivo{color:#475569;background:#e2e8f0;border-color:#cbd5e1}.status-alerta,.status-alta,.status-media,.status-por-vencer,.status-revisada,.status-en-curso{color:#92400e;background:#fef3c7;border-color:#fde68a}.status-mantenimiento,.status-programado,.status-baja{color:#003f55;background:#dff1f5;border-color:#a9cbd3}.status-critica,.status-vencido,.status-abierta{color:#991b1b;background:#fee2e2;border-color:#fecaca}.map-panel{min-height:340px;position:relative;overflow:hidden;border:1px solid var(--border);border-radius:8px;background:#e8eef6}.map-grid{position:absolute;top:0;right:0;bottom:0;left:0;background:linear-gradient(90deg,rgba(96,112,134,.18) 1px,transparent 1px),linear-gradient(rgba(96,112,134,.18) 1px,transparent 1px),linear-gradient(135deg,#005f7f29,#0f766e14);background-size:56px 56px,56px 56px,auto}.map-marker{position:absolute;width:34px;height:34px;border-radius:999px;display:grid;place-items:center;color:#fff;background:var(--primary);box-shadow:0 12px 26px #10182838}.marker-alerta{background:var(--amber)}.marker-mantenimiento{background:var(--primary-dark)}.marker-inactivo{background:#64748b}.marker-1{top:26%;left:17%}.marker-2{top:40%;left:29%}.marker-3{top:21%;left:44%}.marker-4{top:52%;left:58%}.marker-5{top:32%;left:70%}.marker-6{top:63%;left:82%}.map-card{position:absolute;right:18px;bottom:18px;width:360px;padding:16px;border:1px solid var(--border);border-radius:8px;background:#ffffffeb;box-shadow:var(--shadow);display:grid;gap:10px}.map-card>span{color:var(--muted);font-size:13px}.map-list{display:grid;gap:8px}.map-list div{display:grid;grid-template-columns:1fr auto;gap:2px 8px;align-items:center}.map-list small{color:var(--muted)}.table-toolbar{justify-content:space-between;gap:16px;margin-bottom:16px}.table-toolbar>span{color:var(--muted);font-weight:800}.search-box{min-width:360px;height:42px;border:1px solid var(--border);border-radius:8px;padding:0 12px;background:#fff;display:flex;align-items:center;gap:8px}.search-box input{border:0;height:100%;padding:0}.table-wrap{overflow-x:auto}table{width:100%;border-collapse:collapse;min-width:860px}th,td{padding:13px 12px;border-bottom:1px solid var(--border);text-align:left;vertical-align:middle}th{color:var(--muted);font-size:12px;text-transform:uppercase;letter-spacing:.04em;background:var(--panel-soft)}td{color:#344054;font-size:14px}td svg{display:inline-flex;margin-right:6px;vertical-align:middle}tr:last-child td{border-bottom:0}.clickable-row:hover{background:#e9f4f6;cursor:pointer}.detail-list{grid-template-columns:repeat(2,minmax(0,1fr))}.detail-list div,.reading-list div,.event-list div,.farm-list div,.sector,.device-grid div,.vehicle-card{padding:13px;border:1px solid var(--border);border-radius:8px;background:var(--panel-soft)}.detail-list span,.device-grid span,.reading-list span{font-size:12px;font-weight:800}.detail-list strong,.device-grid strong,.reading-list strong{margin-top:4px}.device-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.device-grid div{display:grid;gap:4px}.device-grid svg{color:var(--primary)}.event-list div{display:grid;gap:7px}.empty-state{margin:0;line-height:1.5}.summary-list div,.status-summary div{min-height:50px;padding:12px;border:1px solid var(--border);border-radius:8px;background:var(--panel-soft);display:flex;justify-content:space-between;gap:12px;align-items:center}.summary-list span{color:var(--muted);font-size:13px;font-weight:800}.summary-list strong,.status-summary strong{font-size:20px}.domain-summary-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:12px}.domain-metric{min-height:122px;padding:14px;border:1px solid var(--border);border-radius:8px;background:var(--panel-soft);display:grid;align-content:start;gap:6px}.domain-metric svg{color:var(--primary)}.domain-metric span,.domain-metric small{color:var(--muted);font-size:12px;font-weight:800}.domain-metric strong{font-size:22px;line-height:1.12}.dashboard-subsection{margin-top:16px;padding-top:16px;border-top:1px solid var(--border);display:grid;gap:12px}.subsection-heading,.priority-alert-head{display:flex;justify-content:space-between;gap:12px;align-items:center}.subsection-heading h3{margin:0;font-size:15px;letter-spacing:0}.subsection-heading span,.priority-alert-card small{color:var(--muted);font-size:12px;font-weight:800}.priority-alert-list{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:10px}.priority-alert-card{padding:12px;border:1px solid var(--border);border-left-width:4px;border-radius:8px;background:var(--panel-soft);display:grid;gap:8px}.priority-alert-card strong{font-size:14px}.priority-alert-card p{margin:0;color:var(--muted);font-size:13px;line-height:1.45}.priority-alert-head span:not(.status-badge){color:var(--muted);font-size:11px;font-weight:900;text-transform:uppercase;letter-spacing:.06em}.priority-media{border-left-color:#f59e0b}.priority-alta{border-left-color:var(--amber)}.priority-critica{border-left-color:var(--red)}.dashboard-reading-strip{grid-template-columns:repeat(5,minmax(0,1fr))}.farm-list div{gap:4px}.field-map-shell{padding:18px;border:1px solid var(--border);border-radius:8px;background:var(--panel);box-shadow:0 10px 28px #1e293b0a}.agro-flagship-map{padding:0;overflow:hidden;border-color:#b7cbb2;background:linear-gradient(135deg,rgba(15,118,110,.1),transparent 34%),linear-gradient(315deg,rgba(0,95,127,.08),transparent 30%),#fff}body.map-fullscreen-active{overflow:hidden}.agro-flagship-map.map-fullscreen{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1000;border:0;border-radius:0;display:grid;grid-template-rows:auto auto minmax(0,1fr);background:#f7fbf5}.agro-flagship-map:fullscreen{width:100vw;height:100vh}.agro-flagship-map.map-fullscreen .field-map-toolbar{padding:14px 18px 0;margin-bottom:10px}.agro-flagship-map.map-fullscreen .map-command-strip{margin-bottom:10px}.agro-flagship-map.map-fullscreen .field-map-layout{min-height:0;grid-template-columns:minmax(0,1fr) 340px}.agro-flagship-map.map-fullscreen .field-map-canvas,.agro-flagship-map.map-fullscreen .leaflet-field-map .leaflet-container,.agro-flagship-map.map-fullscreen .field-map-canvas svg{min-height:0;height:100%}.agro-flagship-map.map-fullscreen .field-map-panel{min-height:0;overflow:auto;padding-right:4px}.field-map-toolbar{display:flex;justify-content:space-between;align-items:flex-start;gap:16px;padding:18px 18px 0;margin-bottom:14px}.field-map-toolbar h2{margin:4px 0 0;font-size:24px;letter-spacing:0}.field-map-toolbar p{margin:7px 0 0;max-width:620px;color:var(--muted);line-height:1.45}.map-command-strip{margin:0 18px 16px;display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px}.map-command-strip div{min-height:72px;padding:12px;border:1px solid rgba(34,85,64,.18);border-radius:8px;background:#ffffffbd;display:grid;align-content:center;gap:4px}.map-command-strip span{color:var(--muted);font-size:11px;font-weight:900;text-transform:uppercase}.map-command-strip strong{font-size:20px}.field-map-controls{display:flex;align-items:center;gap:8px;flex-wrap:wrap;justify-content:flex-end}.field-map-controls button{min-height:36px;border:1px solid var(--border);border-radius:8px;padding:0 12px;background:#fff;color:var(--text);display:inline-flex;align-items:center;gap:7px;font-size:12px;font-weight:900}.field-map-controls button.active{color:#fff;border-color:var(--primary);background:var(--primary)}.field-map-controls .locate-button{color:var(--text);border-color:#a9cbd3;background:#e9f4f6}.field-map-controls .fullscreen-button{color:#fff;border-color:var(--teal);background:var(--teal)}.map-mode-chip{min-height:36px;border:1px solid #a9cbd3;border-radius:999px;padding:0 12px;background:#e9f4f6;color:var(--primary);display:inline-flex;align-items:center;font-size:12px;font-weight:900}.field-map-controls .layer-menu-button{border-color:#a9cbd3;background:#fff}.field-map-layout{padding:0 18px 18px;display:grid;grid-template-columns:minmax(0,1fr) 320px;gap:16px}.field-map-canvas{min-height:660px;position:relative;border:1px solid var(--border);border-radius:8px;overflow:hidden;background:#eef6ea;cursor:grab;touch-action:none;-webkit-user-select:none;user-select:none}.leaflet-field-map{cursor:default;touch-action:pan-x pan-y}.field-map-canvas.dragging{cursor:grabbing}.leaflet-map-root{position:absolute;top:0;right:0;bottom:0;left:0;z-index:1;background:#eef6ea}.leaflet-field-map .leaflet-container{width:100%;height:100%;min-height:660px;background:#eef6ea;font-family:inherit}.leaflet-field-map .leaflet-control-zoom{margin:14px 0 0 14px;border:0;box-shadow:0 8px 18px #1018281a}.leaflet-field-map .leaflet-control-zoom a{width:34px;height:34px;border:1px solid var(--border);background:#fffffff0;color:var(--text);display:grid;place-items:center;font-weight:900}.leaflet-field-map .leaflet-control-zoom-in{border-radius:8px 8px 0 0}.leaflet-field-map .leaflet-control-zoom-out{border-radius:0 0 8px 8px}.map-leaflet-actions{position:absolute;z-index:440;top:92px;left:14px;display:grid;gap:7px}.map-leaflet-actions button{width:34px;height:34px;border:1px solid var(--border);border-radius:8px;display:grid;place-items:center;background:#fffffff0;color:var(--text);box-shadow:0 8px 18px #1018281a}.map-layer-control-panel{position:absolute;z-index:460;top:14px;left:60px;width:min(320px,calc(100% - 132px));max-height:calc(100% - 28px);overflow:auto;padding:12px;border:1px solid rgba(15,23,42,.12);border-radius:8px;background:#fffffff5;box-shadow:0 18px 42px #10182824;display:grid;gap:12px}.map-layer-control-header{display:flex;align-items:center;justify-content:space-between;gap:10px}.map-layer-control-header strong{color:var(--text);font-size:14px}.map-layer-control-header span,.map-layer-control-group>span,.map-layer-note{color:var(--muted);font-size:12px;font-weight:800}.map-layer-control-group{display:grid;gap:7px}.map-layer-control-group button{width:100%;min-height:42px;border:1px solid var(--border);border-radius:8px;padding:8px 10px;background:#fff;color:var(--muted);display:grid;grid-template-columns:18px minmax(0,1fr);gap:8px;align-items:center;text-align:left}.map-layer-control-group button.active{border-color:#a9cbd3;background:#e9f4f6;color:var(--primary)}.map-layer-control-group button span{min-width:0;display:grid;gap:2px}.map-layer-control-group button strong,.map-layer-control-group button small{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.map-layer-control-group button strong{color:var(--text);font-size:12px}.map-layer-control-group button small{color:var(--muted);font-size:11px;font-weight:800}.map-layer-note{margin:0;padding:10px;border:1px solid #f2c27d;border-radius:8px;background:#fff7ed;color:#9a3412;line-height:1.45}.field-map-canvas svg{display:block;width:100%;height:100%;min-height:660px}.map-zoom-controls{position:absolute;z-index:2;top:14px;left:14px;display:grid;gap:7px}.map-zoom-controls button{width:34px;height:34px;border:1px solid var(--border);border-radius:8px;display:grid;place-items:center;background:#fffffff0;color:var(--text);box-shadow:0 8px 18px #1018281a}.map-scale-indicator{position:absolute;z-index:440;right:14px;top:14px;min-width:58px;padding:8px 10px;border:1px solid var(--border);border-radius:8px;background:#fffffff0;color:var(--text);font-size:12px;font-weight:900;text-align:center;box-shadow:0 8px 18px #1018281a}.map-mobile-hint{position:absolute;z-index:440;display:none;left:50%;bottom:14px;transform:translate(-50%);padding:8px 11px;border:1px solid rgba(15,118,110,.18);border-radius:999px;background:#ffffffeb;color:var(--muted);font-size:12px;font-weight:900;box-shadow:0 8px 18px #1018281a;white-space:nowrap}.mobile-map-sensor-pill{position:absolute;z-index:440;left:12px;right:12px;bottom:58px;min-height:56px;padding:10px 12px;border:1px solid rgba(15,118,110,.18);border-radius:8px;background:#fffffff0;box-shadow:0 10px 24px #1018281f;display:none;align-items:center;gap:10px}.mobile-map-sensor-pill svg{color:var(--teal);flex-shrink:0}.mobile-map-sensor-pill span{min-width:0;display:grid;gap:2px}.mobile-map-sensor-pill strong,.mobile-map-sensor-pill small{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.mobile-map-sensor-pill strong{color:var(--text);font-size:13px;font-weight:900}.mobile-map-sensor-pill small{color:var(--muted);font-size:12px;font-weight:800}.sector-labels text{fill:#37533a;font-size:16px;font-weight:900}.bed-layer path{fill:none;stroke:#45693c8f;stroke-width:2.3;stroke-linecap:round;stroke-dasharray:10 6}.qgis-feature{vector-effect:non-scaling-stroke}.qgis-predio,.qgis-sector{fill:#22c55e29;stroke:#15803d;stroke-width:3}.qgis-camellon{fill:none;stroke:#365314;stroke-width:2.5;stroke-dasharray:12 6}.qgis-curva_nivel{fill:none;stroke:#8b6f47;stroke-width:2;stroke-dasharray:5 7}.qgis-red_agua{fill:none;stroke:#0284c7;stroke-width:3}.qgis-nodo_hidraulico,.qgis-sensor,.qgis-referencia{stroke:#ffffffe6;stroke-width:2.5}.qgis-nodo_hidraulico{fill:#0284c7}.qgis-sensor{fill:#16a34a}.qgis-referencia{fill:#64748b}.qgis-camino{fill:none;stroke:#78716c;stroke-width:4}.qgis-otro{fill:#005f7f1f;stroke:#005f7f;stroke-width:3}.contour-layer path{opacity:.78}.contour-layer text{fill:#82775f;font-size:12px;font-weight:800}.pipe{stroke-width:5;stroke-linecap:round;fill:none}.pipe-activo{stroke:#0891b2}.pipe-pausado{stroke:#64748b;stroke-dasharray:10 8}.pipe-alerta{stroke:#d97706;stroke-dasharray:6 7}.water-network-layer text{fill:#164e63;font-size:9px;font-weight:900;paint-order:stroke;stroke:#ffffffd1;stroke-width:3px}.pid-node circle{stroke-width:2;fill:#e0f2fe}.pid-estanque circle{stroke:#0891b2;fill:#bae6fd}.pid-bomba circle{stroke:#003f55;fill:#dff1f5}.pid-valvula circle{stroke:var(--teal);fill:#dff1f5}.pid-hidrante circle{stroke:#0e7490;fill:#cffafe}.gps-layer circle:first-child{fill:#005f7f1f;stroke:#005f7f73;stroke-width:2}.gps-layer circle:nth-child(2){fill:#005f7f;stroke:#fff;stroke-width:3}.gps-layer text{fill:#003f55;font-size:12px;font-weight:900}.gps-bloqueado circle:nth-child(2){fill:#f59e0b}.sensor-point{cursor:pointer}.sensor-point circle{fill:#fff;stroke-width:2.5;filter:drop-shadow(0 5px 8px rgba(16,24,40,.16))}.sensor-activo circle{stroke:#16a34a}.sensor-alerta circle{stroke:#d97706}.sensor-mantenimiento circle{stroke:#005f7f}.sensor-inactivo circle{stroke:#64748b}.sensor-point.selected circle{fill:#e9f4f6;stroke-width:3.5}.sensor-point text{fill:#172033;font-size:11px;font-weight:900;paint-order:stroke;stroke:#ffffffe6;stroke-width:5px}.sensor-point .sensor-reading{fill:#475569;font-size:10px;font-weight:800}.leaflet-sensor-marker{width:170px;min-height:32px;display:flex;align-items:flex-start;gap:7px;pointer-events:auto;transform:translate(-8px,-8px)}.leaflet-sensor-marker .sensor-dot{width:12px;height:12px;min-width:12px;border:2px solid rgba(255,255,255,.95);border-radius:999px;background:#16a34a;box-shadow:0 5px 10px #10182833}.leaflet-sensor-marker.sensor-alerta .sensor-dot{background:#d97706}.leaflet-sensor-marker.sensor-mantenimiento .sensor-dot{background:#005f7f}.leaflet-sensor-marker.sensor-inactivo .sensor-dot{background:#64748b}.leaflet-sensor-marker.selected .sensor-dot{width:15px;height:15px;min-width:15px;border-width:3px;box-shadow:0 0 0 5px #005f7f2e,0 8px 16px #10182833}.leaflet-sensor-marker .sensor-label{padding:4px 7px;border:1px solid rgba(15,23,42,.08);border-radius:8px;background:#ffffffe0;display:grid;gap:1px;box-shadow:0 8px 18px #10182814}.leaflet-sensor-marker .sensor-label strong{color:#172033;font-size:11px;font-weight:900;white-space:nowrap}.leaflet-sensor-marker .sensor-label small{max-width:136px;color:#475569;font-size:10px;font-weight:800;line-height:1.2;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.leaflet-gps-marker{width:32px;height:32px;transform:translate(-12px,-12px)}.leaflet-gps-marker span,.leaflet-gps-marker i{position:absolute;border-radius:999px}.leaflet-gps-marker span{top:0;right:0;bottom:0;left:0;border:2px solid rgba(0,95,127,.45);background:#005f7f1f}.leaflet-gps-marker i{top:10px;right:10px;bottom:10px;left:10px;border:3px solid #ffffff;background:#005f7f}.leaflet-gps-marker.gps-bloqueado i{background:#f59e0b}.field-map-panel{display:grid;gap:14px;align-content:start}.selected-sensor-card,.field-map-metrics div,.sensor-index-card,.pid-legend,.qgis-legend,.gps-status{padding:14px;border:1px solid var(--border);border-radius:8px;background:var(--panel-soft)}.selected-sensor-card{display:flex;align-items:flex-start;justify-content:space-between;gap:12px}.sensor-card-title{display:flex;gap:10px;align-items:flex-start}.sensor-card-title svg{color:var(--primary);margin-top:2px}.sensor-card-title div,.gps-status div{display:flex;flex-direction:column;gap:4px}.sensor-card-title span,.gps-status span,.field-map-metrics span,.pid-legend span{color:var(--muted);font-size:12px}.field-map-metrics{display:grid;gap:10px}.field-map-metrics div{display:grid;grid-template-columns:18px 1fr;gap:5px 9px;align-items:center}.field-map-metrics svg{color:var(--teal)}.field-map-metrics strong{grid-column:2;line-height:1.35;font-size:13px}.sensor-index-card{display:grid;gap:12px}.sensor-index-header{display:flex;align-items:flex-start;justify-content:space-between;gap:12px}.sensor-index-header div:first-child{display:grid;gap:3px}.sensor-index-header strong{color:var(--text)}.sensor-index-header span{color:var(--muted);font-size:12px;font-weight:800}.sensor-group-toggle{display:inline-flex;padding:3px;border:1px solid var(--border);border-radius:8px;background:#fff}.sensor-group-toggle button{min-height:30px;border:0;border-radius:6px;padding:0 9px;background:transparent;color:var(--muted);font-size:11px;font-weight:900}.sensor-group-toggle button.active{background:var(--primary);color:#fff}.sensor-index-list{max-height:354px;overflow-y:auto;display:grid;gap:12px;padding-right:4px}.sensor-index-group{display:grid;gap:7px}.sensor-index-group-title{display:flex;align-items:center;justify-content:space-between;gap:8px}.sensor-index-group-title strong{color:#334155;font-size:12px;font-weight:900}.sensor-index-group-title span{min-width:24px;height:22px;border-radius:999px;background:#e2e8f0;color:#475569;display:grid;place-items:center;font-size:11px;font-weight:900}.sensor-index-row{width:100%;min-height:54px;padding:9px 10px;border:1px solid var(--border);border-radius:8px;background:#fff;display:grid;grid-template-columns:12px minmax(0,1fr) auto;align-items:center;gap:9px;text-align:left}.sensor-index-row.active{border-color:#93c5fd;background:#e9f4f6}.sensor-index-row span{display:grid;gap:2px;min-width:0}.sensor-index-row strong,.sensor-index-row small{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.sensor-index-row strong{color:var(--text);font-size:13px;font-weight:900}.sensor-index-row small{color:var(--muted);font-size:11px;font-weight:800}.sensor-index-row em{color:var(--teal);font-style:normal;font-size:12px;font-weight:900;white-space:nowrap}.sensor-index-dot{width:11px;height:11px;border-radius:999px;border:2px solid #16a34a;background:#fff}.sensor-index-dot.sensor-alerta{border-color:#d97706}.sensor-index-dot.sensor-mantenimiento{border-color:#005f7f}.sensor-index-dot.sensor-inactivo{border-color:#64748b}.agro-sensor-summary{display:grid;gap:10px}.agro-sensor-summary div{min-height:66px;padding:12px;border:1px solid var(--border);border-radius:8px;background:#fff;display:grid;gap:4px}.agro-sensor-summary span{color:var(--muted);font-size:12px;font-weight:900;text-transform:uppercase}.agro-sensor-summary strong{font-size:24px}.agro-sensor-toolbar{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:12px;margin-bottom:16px}.agro-sensor-groups{display:grid;gap:16px}.agro-sensor-group{display:grid;gap:9px}.agro-sensor-group-header{display:flex;align-items:center;justify-content:space-between;gap:10px}.agro-sensor-group-header strong{color:var(--text);font-size:15px}.agro-sensor-group-header span,.table-subtext{color:var(--muted);font-size:12px;font-weight:800}.table-subtext{display:block;margin-top:4px}.pid-legend{display:grid;gap:9px}.pid-legend span,.qgis-legend span{display:flex;align-items:center;gap:8px;font-weight:800}.qgis-legend{display:grid;gap:9px}.qgis-dot{width:12px;height:12px;border-radius:999px;border:2px solid #005f7f;background:#fff;flex-shrink:0}.qgis-dot-predio,.qgis-dot-sector{border-color:#15803d;background:#22c55e2e}.qgis-dot-camellon{border-color:#365314;background:#ecfccb}.qgis-dot-curva_nivel{border-color:#8b6f47;background:#fef3c7}.qgis-dot-red_agua{border-color:#0284c7;background:#e0f2fe}.qgis-dot-camino{border-color:#78716c;background:#f5f5f4}.legend-line{width:34px;height:5px;border-radius:999px;display:inline-block}.legend-line.active{background:#0891b2}.legend-line.paused{background:repeating-linear-gradient(90deg,#64748b 0 8px,transparent 8px 13px)}.legend-line.alert{background:repeating-linear-gradient(90deg,#d97706 0 6px,transparent 6px 11px)}.gps-status{display:flex;gap:10px;align-items:flex-start}.gps-status svg{color:var(--primary)}.sector-grid{grid-template-columns:repeat(3,minmax(0,1fr))}.sector{min-height:88px;display:grid;align-content:center;gap:6px}.sector.active{border-color:#93c5fd;background:#e9f4f6}.sector.warning{border-color:#fcd34d;background:#fffbeb}.sector span{color:var(--muted);font-size:13px}.vehicle-list{gap:14px}.vehicle-card{display:grid;grid-template-columns:210px 1fr;gap:16px}.vehicle-card-clickable{width:100%;color:inherit;text-align:left;cursor:pointer}.vehicle-card-clickable:hover{border-color:#93c5fd;background:#e9f4f6}.vehicle-card>div{gap:6px}.vehicle-card dl{margin:0;display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px}.vehicle-card dt{color:var(--muted);font-size:12px;font-weight:800}.vehicle-card dd{margin:4px 0 0;font-weight:900}.vehicle-number{width:fit-content;padding:4px 8px;border:1px solid var(--border);border-radius:999px;background:#fff;color:var(--muted);font-size:12px;font-weight:900}.fleet-search-panel{display:grid;grid-template-columns:1fr minmax(360px,520px);gap:18px;align-items:center}.fleet-overview-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px}.fleet-overview-card{min-height:106px;padding:14px;border:1px solid var(--border);border-radius:8px;background:var(--panel-soft);display:grid;align-content:center;gap:5px}.fleet-overview-card span,.fleet-overview-card small{color:var(--muted);font-size:12px;font-weight:800}.fleet-overview-card strong{font-size:24px;line-height:1.1}.fleet-search-copy h2{margin:4px 0 6px;font-size:20px}.fleet-search-copy p{margin:0;color:var(--muted);line-height:1.45}.fleet-search-controls{display:grid;gap:10px}.fleet-mode-actions{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}.fleet-mode-actions button{min-height:38px;border:1px solid var(--border);border-radius:8px;background:#fff;color:var(--muted);font-size:12px;font-weight:900}.fleet-mode-actions button.active{border-color:var(--primary);background:#e9f4f6;color:var(--primary)}.fleet-search-box{height:46px;border:1px solid var(--border);border-radius:8px;padding:0 14px;background:#fff;display:flex;align-items:center;gap:10px}.fleet-search-box input{width:100%;height:100%;border:0;outline:none;color:var(--text)}.table-count{color:var(--muted);font-size:13px;font-weight:900}.list-footer-action{display:flex;justify-content:center;padding-top:14px}.fleet-doc-list{display:grid;gap:10px}.fleet-doc-list button{width:100%;min-height:58px;padding:12px;border:1px solid var(--border);border-radius:8px;background:var(--panel-soft);color:var(--text);display:flex;justify-content:space-between;gap:12px;align-items:center;text-align:left}.fleet-doc-list button:hover{border-color:#93c5fd;background:#e9f4f6}.fleet-doc-list div{display:grid;gap:4px}.fleet-doc-list span{color:var(--muted);font-size:12px}.client-km-list{display:grid;gap:12px}.client-km-row{padding:12px;border:1px solid var(--border);border-radius:8px;background:var(--panel-soft);display:grid;gap:8px}.client-km-head{display:flex;justify-content:space-between;gap:12px;align-items:center}.client-km-head span{color:var(--muted);font-size:12px;font-weight:800}.client-km-track{height:8px;border-radius:999px;background:#e2e8f0;overflow:hidden}.client-km-track span{display:block;height:100%;border-radius:inherit;background:linear-gradient(90deg,var(--primary),var(--teal))}.table-link-button{border:0;background:transparent;color:var(--primary);padding:0;font-weight:900}.sheet-actions{display:flex;gap:10px;justify-content:flex-end;flex-wrap:wrap}.bus-hero-card{min-height:152px;padding:24px;border:1px solid var(--border);border-radius:8px;background:linear-gradient(135deg,rgba(0,95,127,.12),transparent 38%),linear-gradient(315deg,rgba(15,118,110,.1),transparent 32%),#fff;box-shadow:0 10px 28px #1e293b0a;display:flex;justify-content:space-between;gap:20px;align-items:center}.bus-hero-card h2{margin:5px 0 8px;font-size:30px}.bus-hero-card p,.bus-hero-status span{margin:0;color:var(--muted);line-height:1.45}.bus-hero-status{display:grid;gap:9px;justify-items:end}.bus-mini-kpis{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px}.bus-mini-kpis article{min-height:96px;padding:15px;border:1px solid var(--border);border-radius:8px;background:var(--panel);display:grid;gap:6px;align-content:center}.bus-mini-kpis svg{color:var(--primary)}.bus-mini-kpis span,.bus-info-rows span{color:var(--muted);font-size:12px;font-weight:900}.bus-mini-kpis strong{font-size:18px}.bus-sheet-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}.bus-info-block{padding:18px;border:1px solid var(--border);border-radius:8px;background:var(--panel);box-shadow:0 10px 28px #1e293b0a}.bus-info-block h3{margin:0 0 14px;font-size:17px}.bus-info-rows{display:grid;gap:10px}.bus-info-rows div{display:grid;grid-template-columns:170px 1fr;gap:12px;padding-bottom:10px;border-bottom:1px solid var(--border)}.bus-info-rows div:last-child{border-bottom:0;padding-bottom:0}.observation-box{margin:0;padding:14px;border:1px solid var(--border);border-radius:8px;background:var(--panel-soft);color:var(--muted);line-height:1.55}.sensor-insight-toolbar{margin-bottom:12px;display:grid;grid-template-columns:minmax(360px,1fr) minmax(240px,360px) auto;gap:10px;align-items:center}.sensor-filter-tabs{display:flex;flex-wrap:wrap;gap:7px}.sensor-filter-tabs button,.sensor-alert-toggle{min-height:34px;border:1px solid var(--border);border-radius:8px;background:#fff;color:var(--muted);padding:0 10px;font-size:12px;font-weight:900}.sensor-filter-tabs button.active,.sensor-alert-toggle.active{border-color:var(--primary);background:#e9f4f6;color:var(--primary)}.sensor-search-box{height:38px;border:1px solid var(--border);border-radius:8px;background:#fff;padding:0 11px;display:flex;align-items:center;gap:8px}.sensor-search-box input{width:100%;height:100%;border:0;outline:none;color:var(--text)}.sensor-alert-toggle{display:inline-flex;align-items:center;gap:7px;justify-content:center;white-space:nowrap}.sensor-alert-toggle strong{min-width:22px;min-height:22px;border-radius:999px;display:inline-grid;place-items:center;background:#fee2e2;color:#991b1b;font-size:11px}.sensor-result-summary{margin-bottom:12px;display:flex;justify-content:space-between;gap:12px;color:var(--muted);font-size:12px;font-weight:900}.sensor-metric-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px}.sensor-metric-card{min-height:116px;padding:14px;border:1px solid var(--border);border-radius:8px;background:var(--panel-soft);display:grid;gap:9px;align-content:start}.sensor-metric-card div{display:grid;gap:5px}.sensor-metric-card span:first-child,.sensor-metric-card small{color:var(--muted);font-size:12px;font-weight:800}.sensor-metric-card strong{font-size:22px}.sensor-card-meta{display:flex!important;flex-wrap:wrap;gap:6px!important}.sensor-card-meta span{width:fit-content;padding:3px 7px;border:1px solid var(--border);border-radius:999px;background:#fff;color:var(--muted);font-size:11px!important;font-weight:900!important}.sensor-status{width:fit-content;min-height:24px;padding:4px 9px;border-radius:999px;border:1px solid transparent;font-size:12px;font-weight:900}.sensor-status-normal{color:#166534;background:#dcfce7;border-color:#bbf7d0}.sensor-status-alerta{color:#92400e;background:#fef3c7;border-color:#fde68a}.sensor-status-critico{color:#991b1b;background:#fee2e2;border-color:#fecaca}.fmc650-empty-panel{min-height:220px;align-content:start}.fmc650-hero{min-height:130px;padding:20px;border:1px solid #b9d2d8;border-radius:8px;background:linear-gradient(135deg,rgba(0,95,127,.14),transparent 36%),linear-gradient(315deg,rgba(5,12,18,.08),transparent 36%),#fff;box-shadow:0 10px 28px #1e293b0a;display:flex;justify-content:space-between;gap:18px;align-items:center}.fmc650-hero h2{margin:5px 0 6px;font-size:26px}.fmc650-hero p,.fmc650-hero small{margin:0;color:var(--muted);line-height:1.45}.fmc650-hero-state{display:grid;gap:9px;justify-items:end;text-align:right}.telemetry-state{width:fit-content;min-height:28px;padding:5px 10px;border:1px solid var(--border);border-radius:999px;background:#fff;color:var(--muted);font-size:12px;font-weight:900;text-transform:uppercase}.telemetry-state-online{color:#166534;background:#dcfce7;border-color:#bbf7d0}.telemetry-state-warning{color:#92400e;background:#fef3c7;border-color:#fde68a}.telemetry-state-offline{color:#475569;background:#f1f5f9;border-color:#cbd5e1}.fmc650-card-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px}.telemetry-metric{min-height:126px;padding:14px;border:1px solid var(--border);border-radius:8px;background:var(--panel);display:grid;align-content:start;gap:7px;box-shadow:0 10px 28px #1e293b0a}.telemetry-metric svg{color:var(--primary)}.telemetry-metric span,.telemetry-metric small{color:var(--muted);font-size:12px;font-weight:900}.telemetry-metric strong{font-size:20px;line-height:1.15}.telemetry-metric-success{border-color:#bbf7d0;background:#f0fdf4}.telemetry-metric-warning{border-color:#fde68a;background:#fffbeb}.telemetry-metric-danger{border-color:#fecaca;background:#fff1f2}.fmc650-section-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}.telemetry-group{padding:16px;border:1px solid var(--border);border-radius:8px;background:var(--panel);box-shadow:0 10px 28px #1e293b0a;display:grid;gap:14px}.telemetry-group-title{display:flex;align-items:center;gap:9px}.telemetry-group-title svg{color:var(--primary)}.telemetry-group-title h3,.telemetry-io-grid h3{margin:0;font-size:16px}.telemetry-row-list{display:grid;gap:9px}.telemetry-row-list div,.telemetry-io-grid div{min-height:38px;display:grid;grid-template-columns:minmax(130px,.7fr) minmax(0,1fr);gap:10px;align-items:center;padding-bottom:9px;border-bottom:1px solid var(--border)}.telemetry-row-list div:last-child,.telemetry-io-grid div:last-child{border-bottom:0;padding-bottom:0}.telemetry-row-list span,.telemetry-io-grid span{color:var(--muted);font-size:12px;font-weight:900}.telemetry-row-list strong,.telemetry-io-grid strong{font-size:14px}.dtc-box{min-height:170px;padding:14px;border:1px solid var(--border);border-radius:8px;background:var(--panel-soft);display:grid;align-content:start;gap:10px}.dtc-box strong{font-size:24px}.dtc-box p{margin:0;color:var(--muted);line-height:1.45}.telemetry-io-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}.telemetry-io-grid article{padding:14px;border:1px solid var(--border);border-radius:8px;background:var(--panel-soft);display:grid;align-content:start;gap:12px}.vehicle-gps-panel{overflow:hidden}.gps-map-actions{margin-bottom:14px;display:flex;gap:8px;align-items:center;flex-wrap:wrap}.gps-map-actions a{min-height:34px;padding:0 11px;border:1px solid #a9cbd3;border-radius:8px;background:#e9f4f6;color:var(--primary);text-decoration:none;display:inline-flex;align-items:center;gap:7px;font-size:12px;font-weight:900}.gps-map-actions small{color:var(--muted);font-size:12px;font-weight:800}.gps-history-layout{display:grid;grid-template-columns:minmax(0,1.4fr) minmax(320px,.8fr);gap:16px}.vehicle-route-map{min-height:320px;border:1px solid var(--border);border-radius:8px;overflow:hidden;background:#eef6fb}.vehicle-route-map svg{width:100%;height:100%;min-height:320px;display:block}.vehicle-route-map text{fill:#172033;font-size:12px;font-weight:900;paint-order:stroke;stroke:#ffffffe6;stroke-width:4px}.gps-timeline{display:grid;gap:10px;max-height:320px;overflow:auto;padding-right:4px}.gps-timeline article{padding:12px;border:1px solid var(--border);border-radius:8px;background:var(--panel-soft);display:grid;gap:5px}.gps-timeline span,.gps-timeline small,.gps-timeline dt{color:var(--muted);font-size:12px;font-weight:800}.gps-timeline dl{margin:6px 0 0;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}.gps-timeline dd{margin:3px 0 0;font-weight:900}.doc-download-link,.doc-unavailable{min-height:30px;width:fit-content;padding:0 10px;border-radius:8px;display:inline-flex;align-items:center;gap:7px;font-size:12px;font-weight:900}.doc-download-link{border:1px solid #a9cbd3;background:#e9f4f6;color:var(--primary);text-decoration:none}.doc-unavailable{border:1px solid var(--border);background:var(--panel-soft);color:var(--muted)}.document-download-grid,.driver-card-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;margin-bottom:16px}.document-download-card,.driver-card{padding:14px;border:1px solid var(--border);border-radius:8px;background:var(--panel-soft);display:grid;gap:11px}.document-download-card div{display:grid;gap:4px}.document-download-card span:not(.status-badge),.driver-card span,.driver-card small,.driver-card dt{color:var(--muted);font-size:12px;font-weight:800}.driver-card-head{display:flex;justify-content:space-between;gap:12px;align-items:flex-start}.driver-card-head div{display:grid;gap:4px}.driver-card-head strong{font-size:16px}.driver-contact{display:grid;gap:7px}.driver-contact span{display:inline-flex;align-items:center;gap:7px;min-width:0}.driver-contact svg{flex-shrink:0;color:var(--primary)}.driver-detail-grid{margin:0;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.driver-detail-grid dd{margin:4px 0 0;font-weight:900}.driver-detail-grid dd .status-badge{margin-left:6px}.driver-assignment{padding-top:10px;border-top:1px solid var(--border);display:flex;justify-content:space-between;gap:12px;align-items:center}.driver-card p{margin:0;color:var(--muted);font-size:13px;line-height:1.45}.alert-summary{display:flex;gap:14px;margin-bottom:18px}.alert-summary div{min-width:150px;padding:13px;border:1px solid var(--border);border-radius:8px;background:var(--panel-soft);display:flex;align-items:center;gap:8px}.alert-summary strong{font-size:20px}.alert-summary span{color:var(--muted);font-weight:800}.report-filters{display:grid;grid-template-columns:1.2fr 1.2fr .9fr .8fr .8fr;gap:14px}.report-actions{justify-content:flex-end;gap:10px;margin-bottom:18px}.report-actions button{gap:8px;color:var(--text);background:#fff;border:1px solid var(--border)}.admin-summary{display:grid;grid-template-columns:1.4fr repeat(4,1fr);gap:14px}.admin-summary div{min-height:86px;padding:16px;border:1px solid var(--border);border-radius:8px;background:var(--panel);display:flex;align-items:center;gap:10px;box-shadow:0 10px 28px #1e293b0a}.admin-summary strong{font-size:24px}.admin-summary span{color:var(--muted);font-weight:800}.admin-client-context{padding:16px;border:1px solid var(--border);border-radius:8px;background:#fff;display:grid;grid-template-columns:330px 1fr;gap:18px;align-items:center;box-shadow:0 10px 28px #1e293b0a}.admin-client-copy{display:grid;gap:8px}.admin-client-copy label{display:block}.admin-client-copy select{width:100%;min-height:42px;border:1px solid var(--border);border-radius:8px;padding:0 12px;background:#f8fafc;color:var(--text);font-weight:900}.admin-context-metrics,.admin-mini-summary{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:10px}.admin-context-metrics span,.admin-mini-summary span{min-height:70px;padding:12px;border:1px solid var(--border);border-radius:8px;background:#f8fafc;color:var(--muted);display:grid;align-content:center;gap:4px;font-size:12px;font-weight:900;line-height:1.35}.admin-context-metrics strong,.admin-mini-summary strong{color:var(--text);font-size:17px;line-height:1.2}.admin-mini-summary{grid-template-columns:repeat(4,minmax(0,1fr))}.admin-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px}.admin-data-toolbar{display:grid;grid-template-columns:minmax(0,1.6fr) minmax(220px,.7fr);gap:14px}.admin-data-count{width:fit-content;padding:10px 12px;border:1px solid var(--border);border-radius:8px;background:#f8fafc;display:inline-flex;align-items:center;gap:8px}.admin-data-count strong{color:var(--primary);font-size:18px}.admin-data-count span{color:var(--muted);font-size:13px;font-weight:800}.data-kind-pill{display:inline-flex;min-width:74px;justify-content:center;padding:5px 8px;border:1px solid var(--border);border-radius:999px;background:#f8fafc;color:var(--muted);font-size:11px;font-weight:900}td small{display:block;margin-top:3px;color:var(--muted);font-size:12px;font-weight:700}td code{color:var(--primary-dark);font-size:12px;font-weight:900}.admin-onboarding{padding:18px;border:1px solid var(--border);border-radius:8px;background:#fff;box-shadow:0 10px 28px #1e293b0a;display:grid;gap:16px}.admin-onboarding-header{display:grid;grid-template-columns:minmax(0,1fr) 220px;gap:18px;align-items:start}.admin-onboarding-header h2{margin:6px 0}.admin-onboarding-header p{margin:0;color:var(--muted);line-height:1.45}.admin-progress-card{padding:14px;border:1px solid var(--border);border-radius:8px;background:#f8fafc;display:grid;gap:8px}.admin-progress-card strong{color:var(--primary);font-size:28px}.admin-progress-card span{color:var(--muted);font-size:12px;font-weight:900}.admin-progress-track{height:8px;border-radius:999px;background:#d4dee2;overflow:hidden}.admin-progress-track span{display:block;height:100%;border-radius:inherit;background:linear-gradient(90deg,var(--primary),var(--teal))}.admin-onboarding-steps{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}.admin-onboarding-steps button{min-height:86px;border:1px solid var(--border);border-radius:8px;padding:12px;background:#f8fafc;color:var(--text);display:grid;grid-template-columns:20px minmax(0,1fr) 16px;gap:10px;align-items:center;text-align:left}.admin-onboarding-steps button.completed{border-color:#a9cbd3;background:#e9f4f6}.admin-onboarding-steps button svg:first-child{color:var(--muted)}.admin-onboarding-steps button.completed svg:first-child{color:var(--teal)}.admin-onboarding-steps button>span{min-width:0;display:grid;gap:4px}.admin-onboarding-steps strong{font-size:13px}.admin-onboarding-steps small{color:var(--muted);font-size:12px;font-weight:800;line-height:1.35}.selected-row{background:#f8fafc}.module-chip-list{display:flex;gap:6px;flex-wrap:wrap}.module-chip-list span{padding:4px 8px;border:1px solid var(--border);border-radius:999px;background:#f8fafc;color:var(--muted);font-size:11px;font-weight:900}.data-source-banner,.form-message{padding:13px 16px;border:1px solid var(--border);border-radius:8px;background:var(--panel);display:flex;align-items:center;gap:10px}.data-source-banner strong{flex-shrink:0}.data-source-banner span,.form-message{color:var(--muted);line-height:1.45}.source-api{border-color:#86efac;background:#f0fdf4}.source-offline{border-color:#fcd34d;background:#fffbeb}.source-loading{border-color:#a9cbd3;background:#e9f4f6}.admin-helper-text{margin:0;color:var(--muted);font-size:13px;font-weight:700;line-height:1.45}.csv-template-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.csv-template-button{min-height:76px;border:1px solid var(--border);border-radius:8px;padding:12px;background:#f8fafc;color:var(--text);display:grid;grid-template-columns:18px minmax(0,1fr);gap:10px;align-items:start;text-align:left}.csv-template-button svg{margin-top:2px;color:var(--primary)}.csv-template-button span{display:grid;gap:4px}.csv-template-button small{color:var(--muted);font-size:12px;font-weight:800;line-height:1.35}.admin-extra-fields{border:1px solid var(--border);border-radius:8px;padding:12px;background:#f8fafc}.admin-extra-fields summary{cursor:pointer;color:var(--text);font-size:13px;font-weight:900}.admin-extra-fields .form-grid{margin-top:12px}.admin-record-list{display:grid;gap:10px}.admin-record-list div{min-height:74px;padding:12px;border:1px solid var(--border);border-radius:8px;background:#f8fafc;display:grid;align-content:center;gap:4px}.admin-record-list div.selected-list-item{border-color:#0f6683;background:#e9f4f6}.admin-record-list strong{color:var(--text)}.admin-record-list span,.admin-record-list small{color:var(--muted);font-weight:800}.form-panel{display:grid;gap:14px;align-content:start}.form-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}.form-grid.two-cols{grid-template-columns:1fr .8fr}.module-selector{margin:0;padding:0;border:0;display:grid;gap:10px}.module-selector legend{padding:0;color:var(--muted);font-size:13px;font-weight:800}.module-checkbox-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.form-panel .module-checkbox{min-height:68px;padding:12px;border:1px solid var(--border);border-radius:8px;background:#fff;display:flex;align-items:flex-start;gap:10px}.form-panel .module-checkbox.selected{border-color:#93c5fd;background:#e9f4f6}.form-panel .module-checkbox input{width:16px;height:16px;min-width:16px;margin-top:2px;padding:0;accent-color:var(--primary)}.module-checkbox span{display:grid;gap:3px}.module-checkbox strong{color:var(--text);font-size:13px}.module-checkbox small{color:var(--muted);font-size:12px;line-height:1.35}.form-panel button,.form-actions button{width:fit-content;min-height:42px;border:1px solid transparent;border-radius:8px;padding:0 16px;background:var(--primary);color:#fff;display:inline-flex;align-items:center;gap:8px;font-weight:900}.form-panel button:disabled{cursor:not-allowed;background:#cbd5e1}.form-panel button.danger-button,.form-actions button.danger-button{border-color:#fecaca;background:#fef2f2;color:#b91c1c}.form-panel button.danger-button:disabled,.form-actions button.danger-button:disabled{border-color:transparent;background:#e2e8f0;color:#94a3b8}.form-actions button.secondary-button{border-color:var(--border);background:#fff;color:var(--text)}.form-actions{display:flex;align-items:center;gap:12px;flex-wrap:wrap}.split-actions{justify-content:space-between}.form-actions span{color:var(--muted);font-size:13px;line-height:1.45}.map-admin-panel{display:grid;gap:14px}.map-layer-editor{padding:14px;border:1px solid var(--border);border-radius:8px;background:#f8fafc;display:grid;gap:12px}.map-layer-editor label{display:grid;gap:7px;color:var(--muted);font-size:13px;font-weight:800}.map-layer-editor input,.map-layer-editor select{width:100%;min-height:40px;border:1px solid var(--border);border-radius:8px;padding:0 11px;background:#fff;color:var(--text)}.map-visibility-toggle{min-height:44px;padding:10px 12px;border:1px solid var(--border);border-radius:8px;background:#fff;display:flex!important;align-items:center;gap:10px!important}.map-visibility-toggle input{width:16px;min-height:16px;accent-color:var(--primary)}.table-action-button{min-height:32px;border:1px solid var(--border);border-radius:8px;padding:0 10px;background:#fff;color:var(--text);display:inline-flex;align-items:center;gap:6px;font-size:12px;font-weight:900}.file-input input{padding-top:10px}.import-preview{display:grid;gap:12px}.import-preview-summary{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:8px}.import-preview-summary span{min-height:58px;padding:10px;border:1px solid var(--border);border-radius:8px;background:#f8fafc;display:grid;gap:2px;color:var(--muted);font-size:12px;font-weight:800}.import-preview-summary strong{color:var(--text);font-size:18px}.compact-table table{font-size:12px}.preview-row-valida td:first-child{border-left:4px solid #16a34a}.preview-row-advertencia td:first-child{border-left:4px solid #d97706}.preview-row-error td:first-child{border-left:4px solid #dc2626}.historical-explorer{gap:16px}.historical-explorer .panel-header p{margin:6px 0 0;max-width:760px;color:var(--muted);font-size:13px;font-weight:700;line-height:1.45}.history-mode-toggle,.history-controls{display:flex;align-items:end;gap:12px;flex-wrap:wrap}.history-mode-toggle button{min-height:38px;border:1px solid var(--border);border-radius:8px;padding:0 14px;background:#fff;color:var(--text);font-weight:900}.history-mode-toggle button.active{border-color:#0f6683;background:#e9f4f6;color:#0f6683}.history-controls label{min-width:180px;flex:1 1 180px}.history-stat-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px}.history-stat-grid div{min-height:64px;padding:12px;border:1px solid var(--border);border-radius:8px;background:#f8fafc;display:grid;gap:2px}.history-stat-grid span{color:var(--muted);font-size:12px;font-weight:800}.history-stat-grid strong{color:var(--text);font-size:20px}.history-chart-wrap{min-height:280px}.empty-history{min-height:260px;border:1px dashed var(--border);border-radius:8px;background:#f8fafc;display:grid;place-items:center;color:var(--muted);font-weight:900}@media (max-width: 1280px){body{min-width:980px}.app-shell{grid-template-columns:240px minmax(740px,1fr)}.kpi-grid,.kpi-grid.compact{grid-template-columns:repeat(3,minmax(0,1fr))}.vehicle-card,.fleet-search-panel,.bus-sheet-grid{grid-template-columns:1fr}.fleet-overview-grid,.dashboard-reading-strip,.sensor-metric-grid,.fmc650-card-grid,.fmc650-section-grid,.telemetry-io-grid,.sensor-insight-toolbar{grid-template-columns:repeat(2,minmax(0,1fr))}.gps-history-layout,.document-download-grid,.driver-card-grid{grid-template-columns:1fr}.bus-mini-kpis,.admin-grid,.admin-summary,.admin-client-context,.admin-context-metrics,.admin-mini-summary,.admin-data-toolbar,.admin-onboarding-steps,.csv-template-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.field-map-layout{grid-template-columns:1fr}.field-map-panel{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (max-width: 760px){body{min-width:0}.login-page{align-items:start;padding:18px 12px}.login-panel{min-height:auto;grid-template-columns:1fr;gap:14px}.login-copy,.login-card{padding:24px}.login-copy h1{font-size:32px}.login-copy p{font-size:15px}.app-shell{display:block}.sidebar{display:none}.topbar{position:sticky;top:0;z-index:30;height:auto;display:grid;gap:12px;padding:calc(10px + env(safe-area-inset-top)) 12px 10px}.topbar strong{max-width:92vw;overflow:hidden;text-overflow:ellipsis}.topbar-actions{display:grid!important;grid-template-columns:1fr auto auto;gap:8px;align-items:center}.topbar-actions>.connection-dot,.connection-label{display:none}.api-warning-banner{margin:10px 12px 0}.client-switcher{width:100%;grid-template-columns:auto minmax(0,1fr)}.refresh-button,.install-app-button{height:42px;min-width:42px;justify-content:center;padding:0 12px}.refresh-button span,.install-app-button span{display:none}.mobile-install-hint{margin:10px 12px 0;padding:10px 12px;border:1px solid #a9cbd3;border-radius:8px;background:#e9f4f6;color:var(--teal);display:flex;align-items:center;gap:9px;font-size:12px;font-weight:800;line-height:1.35;width:calc(100% - 24px);text-align:left}.install-guide-overlay{padding:calc(14px + env(safe-area-inset-top)) 12px calc(14px + env(safe-area-inset-bottom));align-items:end}.install-guide-modal{max-height:calc(100vh - 28px - env(safe-area-inset-top) - env(safe-area-inset-bottom))}.install-guide-head{display:grid}.install-guide-head .ghost-button{justify-self:start}.install-guide-grid{grid-template-columns:1fr}.mobile-bottom-nav{position:fixed;left:0;right:0;bottom:0;z-index:900;min-height:calc(66px + env(safe-area-inset-bottom));padding:8px 8px calc(8px + env(safe-area-inset-bottom));border-top:1px solid var(--border);background:#fffffff5;-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);display:grid;grid-auto-flow:column;grid-auto-columns:minmax(64px,1fr);gap:4px;overflow-x:auto;box-shadow:0 -12px 28px #10182814}.mobile-bottom-nav button{min-width:64px;min-height:50px;border:1px solid transparent;border-radius:8px;background:transparent;color:var(--muted);display:grid;place-items:center;align-content:center;gap:3px;font-size:10px;font-weight:900}.mobile-bottom-nav button.active{border-color:#a9cbd3;background:#e9f4f6;color:var(--primary)}.mobile-bottom-nav span{max-width:58px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}main{padding:14px 12px calc(92px + env(safe-area-inset-bottom))}.view-stack{gap:16px}.section-header{display:grid;gap:12px;align-items:start}.section-header h1{font-size:24px}.section-header p{max-width:none;font-size:14px}.kpi-grid,.kpi-grid.compact,.dashboard-grid,.domain-overview-grid,.detail-grid,.admin-onboarding-header,.admin-data-toolbar,.admin-onboarding-steps,.csv-template-grid,.admin-grid,.admin-summary,.admin-client-context,.admin-context-metrics,.admin-mini-summary,.fleet-overview-grid,.sensor-metric-grid,.bus-mini-kpis,.form-grid,.form-grid.two-cols,.module-checkbox-grid{grid-template-columns:1fr}.span-2,.span-3{grid-column:auto}.module-tabs{overflow-x:auto;justify-content:flex-start}.module-tabs button{min-width:116px;flex:0 0 auto}.agro-flagship-map{margin-left:-12px;margin-right:-12px;border-left:0;border-right:0;border-radius:0}.agro-flagship-map.map-fullscreen{margin:0;grid-template-rows:auto minmax(0,1fr);height:100dvh;background:#eef6ea}.agro-flagship-map.map-fullscreen .field-map-toolbar{padding:calc(8px + env(safe-area-inset-top)) 10px 8px;margin-bottom:0;background:#fffffff5;border-bottom:1px solid var(--border)}.agro-flagship-map.map-fullscreen .field-map-toolbar h2{margin:2px 0 0;font-size:16px}.agro-flagship-map.map-fullscreen .field-map-toolbar p,.agro-flagship-map.map-fullscreen .field-map-toolbar .eyebrow{display:none}.agro-flagship-map.map-fullscreen .field-map-controls{gap:6px;padding-bottom:0}.agro-flagship-map.map-fullscreen .field-map-controls button{min-height:34px;padding:0 10px;font-size:11px}.agro-flagship-map.map-fullscreen .map-command-strip{display:none}.agro-flagship-map.map-fullscreen .field-map-layout{min-height:0;height:100%;padding:0;grid-template-columns:1fr;gap:0}.agro-flagship-map.map-fullscreen .field-map-panel{display:none}.agro-flagship-map.map-fullscreen .field-map-canvas{height:100%;min-height:0;border:0;border-radius:0}.agro-flagship-map.map-fullscreen .field-map-canvas svg,.agro-flagship-map.map-fullscreen .leaflet-field-map .leaflet-container{height:100%;min-height:0}.agro-flagship-map.map-fullscreen .map-leaflet-actions{top:12px;left:12px}.agro-flagship-map.map-fullscreen .map-layer-control-panel{top:12px;left:58px;width:min(320px,calc(100% - 124px));max-height:46vh}.agro-flagship-map.map-fullscreen .map-scale-indicator{top:12px;right:12px}.agro-flagship-map.map-fullscreen .mobile-map-sensor-pill{display:flex;bottom:calc(58px + env(safe-area-inset-bottom))}.agro-flagship-map.map-fullscreen .map-mobile-hint{bottom:calc(12px + env(safe-area-inset-bottom))}.field-map-toolbar{display:grid;gap:14px;padding:16px 12px 0}.field-map-toolbar h2{font-size:22px}.field-map-toolbar p{font-size:13px}.field-map-controls{flex-wrap:nowrap;justify-content:flex-start;overflow-x:auto;padding-bottom:2px}.field-map-controls button{flex:0 0 auto}.map-command-strip{margin:0 12px 12px;grid-template-columns:repeat(2,minmax(0,1fr))}.map-command-strip div{min-height:66px}.field-map-layout{padding:0 12px 12px;grid-template-columns:1fr}.field-map-canvas{min-height:66vh}.field-map-canvas svg,.leaflet-field-map .leaflet-container{min-height:66vh}.map-zoom-controls,.map-leaflet-actions{top:10px;left:10px}.map-leaflet-actions{top:88px}.map-layer-control-panel{top:auto;left:10px;right:10px;bottom:62px;width:auto;max-height:44vh}.map-scale-indicator{top:10px;right:10px}.map-mobile-hint{display:block;max-width:calc(100% - 24px);overflow:hidden;text-overflow:ellipsis}.field-map-panel,.field-map-metrics,.agro-sensor-toolbar{grid-template-columns:1fr}.agro-sensor-toolbar .sensor-group-toggle{width:fit-content}.dashboard-reading-strip,.detail-list,.device-grid,.sector-grid,.sensor-insight-toolbar,.fmc650-card-grid,.fmc650-section-grid,.telemetry-io-grid,.document-download-grid,.driver-card-grid{grid-template-columns:1fr}.bus-hero-card,.fleet-search-panel,.fmc650-hero{display:grid;grid-template-columns:1fr;align-items:start}.bus-hero-status,.fmc650-hero-state{justify-items:start;text-align:left}.vehicle-card dl{grid-template-columns:repeat(2,minmax(0,1fr))}.report-filters{grid-template-columns:1fr}.sensor-result-summary,.gps-map-actions{display:grid;grid-template-columns:1fr}}
