:root {
  --bg-primary: #0b0e14;
  --bg-secondary: #12161d;
  --bg-tertiary: #1a1f28;
  --bg-hover: #212734;
  --border: #252b36;
  --border-light: #313845;
  --text-primary: #c9d1d9;
  --text-secondary: #8b949e;
  --text-muted: #545d6b;
  --accent: #58a6ff;
  --accent-green: #3fb950;
  --accent-orange: #d2991d;
  --accent-red: #f85149;
  --header-h: 44px;
  --sidebar-w: 280px;
  --rightbar-w: 320px;
  --bottombar-h: 172px;
  --bottombar-collapsed: 32px;
  --transition: 0.25s cubic-bezier(0.4, 0, 0.2, 1);
  --font: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif;
}

/* Light theme overrides */
body.light {
  --bg-primary: #e8eaed;
  --bg-secondary: #f1f3f4;
  --bg-tertiary: #e1e3e6;
  --bg-hover: #d7dbdf;
  --border: #c4c9d0;
  --border-light: #dadde2;
  --text-primary: #1f2937;
  --text-secondary: #4b5563;
  --text-muted: #8590a0;
}

*,*::before,*::after{box-sizing:border-box;margin:0;padding:0}

html,body{height:100%;overflow:hidden;background:var(--bg-primary);font-family:var(--font);font-size:13px;color:var(--text-primary)}

a{color:var(--accent)}

#app{
  display:grid;
  grid-template-areas:
    "header  header  header"
    "sidebar map     rightbar"
    "bottombar bottombar bottombar";
  grid-template-columns:0 1fr 0;
  grid-template-rows:var(--header-h) 1fr var(--bottombar-collapsed);
  height:100vh;
  transition:grid-template-columns var(--transition),grid-template-rows var(--transition);
}

#app.sidebar-open{grid-template-columns:var(--sidebar-w) 1fr 0}
#app.rightbar-open{grid-template-columns:0 1fr var(--rightbar-w)}
#app.sidebar-open.rightbar-open{grid-template-columns:var(--sidebar-w) 1fr var(--rightbar-w)}
#app.bottombar-open{grid-template-rows:var(--header-h) 1fr var(--bottombar-h)}

#app.sidebar-open #sidebar{overflow-y:auto}
#app.rightbar-open #rightbar{overflow-y:auto}
#app.bottombar-open .bottom-content{display:flex}

#header{grid-area:header}
#sidebar{grid-area:sidebar}
#map{grid-area:map}
#rightbar{grid-area:rightbar}
#bottombar{grid-area:bottombar}

#header{
  display:flex;align-items:center;justify-content:space-between;
  background:var(--bg-secondary);border-bottom:1px solid var(--border);
  padding:0 12px;z-index:100;position:relative;
}

.header-left{display:flex;align-items:center;gap:10px}
.header-center{flex:1;display:flex;align-items:center;justify-content:center;overflow:hidden}
.header-right{display:flex;align-items:center;gap:6px}

.brand{font-size:16px;font-weight:700;color:var(--text-primary);letter-spacing:.5px;white-space:nowrap;text-shadow:0 0 1px var(--accent), 0 0 1px var(--accent)}
.brand-sub{font-size:10px;color:var(--text-muted);font-style:italic;white-space:nowrap}

.header-clock{font-size:12px;color:var(--text-secondary);font-variant-numeric:tabular-nums;margin-right:8px}

.btn-icon{
  background:none;border:none;color:var(--text-secondary);font-size:16px;
  cursor:pointer;padding:4px 8px;border-radius:4px;line-height:1;
  transition:color .15s,background .15s;
}
.btn-icon:hover{color:var(--text-primary);background:var(--bg-hover)}
.btn-icon.active{color:var(--accent);background:var(--bg-hover)}

#sidebar,#rightbar{
  background:var(--bg-secondary);border-right:1px solid var(--border);
  overflow:hidden;
}
#rightbar{border-right:none;border-left:1px solid var(--border)}

.panel-inner{padding:12px;height:100%;overflow-y:auto}
.panel-section{margin-bottom:12px}
.panel-section:last-child{margin-bottom:0}

.panel-title{
  font-size:10px;font-weight:600;text-transform:uppercase;letter-spacing:1.2px;
  color:var(--text-muted);margin-bottom:8px;
}

/* Equipment list */
.equip-item{
  display:flex;align-items:center;gap:6px;padding:4px 6px;border-radius:4px;
  cursor:pointer;transition:background .15s;font-size:11px;
}
.equip-item:hover{background:var(--bg-hover)}
.equip-item input[type=checkbox]{accent-color:var(--accent);width:13px;height:13px;cursor:pointer;margin:0}
.equip-item .equip-name{flex:1;color:var(--text-primary)}
.equip-item .equip-count{color:var(--text-muted);font-size:10px;font-weight:600}

/* Layer list */
.layer-item{
  display:flex;align-items:center;gap:6px;padding:4px 6px;border-radius:4px;
  cursor:pointer;transition:background .15s;font-size:11px;
}
.layer-item:hover{background:var(--bg-hover)}
.layer-item input[type=radio]{accent-color:var(--accent);width:13px;height:13px;cursor:pointer;margin:0}

/* Leyenda buttons */
.leyenda-btns-panel{display:flex;gap:3px;flex-wrap:wrap}
.leyenda-btn-panel{
  padding:3px 8px;font-size:10px;font-weight:600;border:1px solid var(--border);
  border-radius:4px;cursor:pointer;background:var(--bg-tertiary);color:var(--text-secondary);
  transition:all .15s;
}
.leyenda-btn-panel.active{background:var(--accent);color:#fff;border-color:var(--accent)}
.leyenda-btn-panel:hover:not(.active){background:var(--bg-hover);color:var(--text-primary)}

/* Filter checks */
.filter-item{
  display:flex;align-items:center;gap:5px;padding:3px 6px;font-size:10px;
}
.filter-item input[type=checkbox]{accent-color:var(--accent);width:12px;height:12px;margin:0}

#map{background:var(--bg-primary);position:relative;z-index:1}

/* Faena label truly centered in header (absolute, ignores brand/subtitle) */
#current-faena{
  position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);
  font-size:15px;font-weight:700;color:var(--text-primary);
  white-space:nowrap;pointer-events:none;
  transition:transform var(--transition);
  text-shadow:0 0 1px var(--accent), 0 0 1px var(--accent);
  padding:2px 12px;border-radius:3px;
}
#app.sidebar-open #current-faena{transform:translate(calc(-50% + var(--sidebar-w) / 2), -50%)}
#app.rightbar-open #current-faena{transform:translate(calc(-50% - var(--rightbar-w) / 2), -50%)}
#app.sidebar-open.rightbar-open #current-faena{transform:translate(calc(-50% + (var(--sidebar-w) - var(--rightbar-w)) / 2), -50%)}

#map .leaflet-control-zoom a{
  background:var(--bg-tertiary) !important;color:var(--text-primary) !important;
  border-color:var(--border) !important;
}
#map .leaflet-control-zoom a:hover{background:var(--bg-hover) !important}

#rightbar .info-empty{
  display:flex;align-items:center;justify-content:center;height:200px;
  color:var(--text-muted);font-size:12px;text-align:center;
}
#rightbar .info-title{
  font-size:12px;font-weight:700;color:var(--text-primary);margin-bottom:8px;padding-top:8px;
}
#rightbar .info-subtitle{
  font-size:10px;color:var(--text-muted);margin-bottom:12px;
}
#rightbar .info-tabs{
  display:flex;gap:3px;margin-bottom:8px;flex-wrap:wrap;
}
#rightbar .info-tab{
  padding:3px 8px;font-size:10px;font-weight:600;border:1px solid var(--border);
  border-radius:4px;cursor:pointer;background:var(--bg-tertiary);color:var(--text-secondary);
  transition:all .15s;
}
#rightbar .info-tab.active{background:var(--accent);color:#fff;border-color:var(--accent)}
#rightbar .info-tab-content {
  flex: 1;
  overflow-y: auto;
  min-height: 0;
}

#bottombar{
  background:var(--bg-secondary);border-top:1px solid var(--border);
  display:flex;flex-direction:column;overflow:hidden;
}
#bottombar.editing{overflow:visible}
#bottombar.editing .bottom-content{overflow:visible}

.bottom-handle{
  display:flex;align-items:center;gap:6px;padding:5px 16px;
  cursor:pointer;user-select:none;flex-shrink:0;
  color:var(--text-muted);font-size:10px;text-transform:uppercase;letter-spacing:1px;
  transition:color .15s;
}
.bottom-handle:hover{color:var(--text-secondary)}
#bottombar .handle-dot{font-size:6px;color:var(--accent-green)}
#app.bottombar-open #bottom-chevron { transform: rotate(180deg); }

.bottom-content{
  display:none;padding:4px 6px 6px;flex:1;overflow:hidden;
}

/* GridStack column classes for 2 and 3 columns (picker gallery) */
.gs-2 > .grid-stack-item{width:50%}
.gs-2 > .grid-stack-item[gs-x="1"]{left:50%}
.gs-3 > .grid-stack-item{width:33.333%}
.gs-3 > .grid-stack-item[gs-x="1"]{left:33.333%}
.gs-3 > .grid-stack-item[gs-x="2"]{left:66.667%}
.gs-3 > .grid-stack-item[gs-w="2"]{width:66.667%}
.gs-3 > .grid-stack-item[gs-w="3"]{width:100%}

/* GridStack widget content theme */
.grid-stack-item-content{
  background:var(--bg-tertiary) !important;border:1px solid var(--border);
  border-radius:6px;padding:4px 6px;display:flex;flex-direction:column;justify-content:flex-start;
  gap:0;overflow:hidden;color:var(--text-primary) !important;
}
.grid-stack-item-content::-webkit-scrollbar{display:none}

/* Hide scrollbars in widgets */
#bottom-content .widget-mini-table,
#bottom-content .widget-text-content{
  overflow-y:auto;scrollbar-width:none;-ms-overflow-style:none;
}
#bottom-content .widget-mini-table::-webkit-scrollbar,
#bottom-content .widget-text-content::-webkit-scrollbar{display:none}
.grid-stack-item-content .widget-label{font-size:9px;font-weight:600;color:var(--text-primary) !important;text-transform:uppercase;letter-spacing:.4px;flex-shrink:0;margin-bottom:2px}
.grid-stack-item-content .widget-value{font-size:22px;font-weight:700;color:var(--text-primary) !important;text-align:center;flex:1;display:flex;align-items:center;justify-content:center}
.grid-stack-item-content .widget-gauge{flex:1;min-height:0;width:100%}
.grid-stack-item-content .widget-chart{flex:1;min-height:0;width:100%}

/* GridStack resize handle theme */
.grid-stack-item .ui-resizable-se{opacity:.5;filter:drop-shadow(0 0 1px #000)}
.grid-stack-item .ui-resizable-se:hover{opacity:1}

/* Widget edit buttons */
#btn-widget-edit{font-size:10px;opacity:.6;transition:opacity .15s;display:none}
#app.bottombar-open #btn-widget-edit{display:inline}
#btn-widget-edit:hover{opacity:1}
#btn-widget-edit.active{color:var(--accent);opacity:1}

#btn-widget-delete{font-size:10px;opacity:.6;transition:opacity .15s;display:none}
#btn-widget-delete.visible{display:inline}
#btn-widget-delete:hover{opacity:1}
#btn-widget-delete.active{color:var(--accent-red);opacity:1}

#btn-widget-add{font-size:10px;opacity:.6;transition:opacity .15s;display:none}
#btn-widget-add.visible{display:inline}
#btn-widget-add:hover{opacity:1}

/* Widget picker floating window */
#picker-overlay{position:fixed;inset:0;z-index:1999;background:rgba(0,0,0,0.45)}
#widget-picker{
  position:fixed;top:50%;left:50%;transform:translate(-50%,-50%);
  width:50%;max-height:70vh;z-index:2000;
  background:rgba(18,22,29,0.94);
  background:color-mix(in srgb, var(--bg-secondary) 94%, transparent);
  backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);
  border:1px solid var(--border);border-radius:10px;
  box-shadow:0 8px 40px rgba(0,0,0,.5);
  display:flex;flex-direction:column;overflow:hidden;
}
body.light #widget-picker{
  background:rgba(241,243,244,0.94);
  background:color-mix(in srgb, var(--bg-secondary) 94%, transparent);
}
.picker-header{
  display:flex;align-items:center;justify-content:space-between;
  padding:10px 14px;user-select:none;
  font-size:13px;font-weight:700;color:var(--text-primary);
  border-bottom:1px solid var(--border);
}
.picker-header .btn-icon{font-size:16px;padding:2px 6px}
.picker-toolbar{
  display:flex;gap:8px;padding:8px 14px;border-bottom:1px solid var(--border);
  flex-shrink:0;
}
.picker-toolbar select{
  background:var(--bg-tertiary);color:var(--text-primary);
  border:1px solid var(--border);border-radius:4px;
  padding:4px 8px;font-size:11px;
}
.picker-toolbar input{
  flex:1;background:var(--bg-tertiary);color:var(--text-primary);
  border:1px solid var(--border);border-radius:4px;
  padding:4px 8px;font-size:11px;outline:none;
}
.picker-toolbar input:focus{border-color:var(--accent)}
.picker-body{
  flex:1;overflow-y:auto;overflow-x:hidden;padding:10px 14px;min-height:200px;
}
.picker-grid{min-height:500px;width:100%}
.picker-grid .grid-stack-item{transition:none}
.picker-grid .grid-stack-item > .grid-stack-item-content{inset:2px !important}
.picker-grid .grid-stack-item-content{
  cursor:pointer;transition:border-color .15s,box-shadow .15s;
  position:relative;display:flex;align-items:center;justify-content:center;
}
.picker-grid .grid-stack-item-content:hover{
  border-color:var(--accent) !important;box-shadow:0 0 8px rgba(88,166,255,0.3);
}
.picker-grid .widget-gallery-label{font-size:10px;font-weight:600;color:var(--text-primary);text-transform:none;text-align:center;margin-top:4px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%}
.picker-grid .widget-gallery-icon{font-size:26px;color:var(--accent);text-align:center}

.leaflet-popup-content-wrapper{
  background:var(--bg-tertiary) !important;color:var(--text-primary) !important;
  border-radius:6px !important;box-shadow:0 4px 16px rgba(0,0,0,.4) !important;
}
.leaflet-popup-tip{background:var(--bg-tertiary) !important}
.leaflet-popup-close-button{color:var(--text-muted) !important}

.resize-handle{position:absolute;z-index:50;background:transparent}
.resize-handle-v{width:5px;top:0;bottom:0;cursor:col-resize}
.resize-handle-h{height:5px;left:0;right:0;cursor:row-resize}

::-webkit-scrollbar{width:4px;height:4px}
::-webkit-scrollbar-track{background:transparent}
::-webkit-scrollbar-thumb{background:var(--border-light);border-radius:2px}
::-webkit-scrollbar-thumb:hover{background:var(--text-muted)}

#rightbar .popup-groups {
  display:flex;flex-direction:column;gap:6px;
}
#rightbar .popup-group {
  background:var(--bg-tertiary) !important;border:1px solid var(--border) !important;border-radius:5px;overflow:hidden;
}
#rightbar .popup-group-header {
  background:var(--bg-hover) !important;color:var(--accent) !important;font-size:10px;font-weight:700;
  text-transform:uppercase;letter-spacing:0.5px;padding:3px 6px;
  display:flex;align-items:center;gap:5px;
}
#rightbar .popup-group-body{padding:1px 0}
#rightbar .popup-row{
  display:flex;align-items:center;padding:2px 6px;border-bottom:1px solid var(--border-light);
}
#rightbar .popup-row:last-child{border-bottom:none}
#rightbar .popup-label{
  flex:0 0 95px;font-size:10px;font-weight:600;color:var(--text-primary) !important;
  display:flex;align-items:center;justify-content:flex-start;gap:4px;white-space:nowrap;
  text-align:left;
}
#rightbar .popup-label i { font-size:10px; width:14px; text-align:center; color:var(--text-muted) !important; opacity:0.7; }
#rightbar .popup-value{
  flex:1;font-size:11px;font-weight:400;color:var(--text-primary) !important;
  text-align:left;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:0;
}

/* Overlay icons in right panel — float above equipment icon */
#info-overlay-icon .contrato-icon {
  display: inline-flex; align-items: center; justify-content: center;
  width: 12px; height: 12px; border-radius: 2px;
  font-size: 7px; font-weight: 800; line-height: 1;
}
#info-overlay-icon .fracttal-icon {
  display: inline-flex; align-items: center; justify-content: center;
  width: 14px; height: 14px; border-radius: 50%;
  font-size: 9px; line-height: 1;
}
#info-overlay-icon .tele-icon {
  display: inline-block;
  font-size: 12px; line-height: 1;
  filter: drop-shadow(0 0 1px rgba(255,255,255,0.9));
}
#info-overlay-icon .status-dot {
  display: inline-block;
  width: 8px; height: 8px; border-radius: 50%;
  border: 1.5px solid #fff;
}

#sidebar .accordion-button {
  background: var(--bg-secondary) !important;
  color: var(--text-primary) !important;
  font-size: 12px;
  font-weight: 600;
  padding: 8px 12px;
  border: none;
  box-shadow: none;
}
#sidebar .accordion-button:not(.collapsed) {
  background: var(--bg-hover) !important;
  color: var(--accent) !important;
}
#sidebar .accordion-button::after {
  filter: invert(0.7);
}
#sidebar .accordion-item {
  background: transparent;
  border: none;
  border-bottom: 1px solid var(--border);
}
#sidebar .accordion-body {
  background: var(--bg-primary);
  padding: 6px 10px !important;
}

#sidebar .filter-item {
  display: flex;
  align-items: center;
  gap: 5px;
  padding: 3px 4px;
  font-size: 11px;
  color: var(--text-secondary);
  cursor: pointer;
}
#sidebar .filter-item:hover { color: var(--text-primary); }
#sidebar .filter-item input[type=radio],
#sidebar .filter-item input[type=checkbox] {
  accent-color: var(--accent);
  width: 13px; height: 13px;
  cursor: pointer;
  margin: 0;
}

/* Group items inside sidebar */
#sidebar .group-item {
  padding: 2px 0;
  line-height: 1.1;
  margin-bottom: 1px;
  font-size: 11px;
}
#sidebar .group-item .group-name {
  font-size: 11px;
  color: var(--text-primary);
  cursor: pointer;
}
#sidebar .group-item .group-name:hover { color: var(--accent); }
#sidebar .group-item .form-check-input {
  accent-color: var(--accent);
  width: 12px; height: 12px;
  margin: 0;
}

/* Options panel text color in dark mode */
#sidebar .form-check-label,
#sidebar .form-label,
#sidebar .form-check,
#sidebar select.form-select,
#sidebar .accordion-body label {
  color: var(--text-primary) !important;
}
#sidebar select.form-select {
  background: var(--bg-tertiary);
  border: 1px solid var(--border);
}

/* Tipos table in sidebar */
#sidebar .tipos-table {
  width: 100%;
  font-size: 12px;
  border-collapse: collapse;
  color: var(--text-primary);
}
#sidebar .tipos-table th { font-weight: 700; color: var(--accent); padding: 3px 4px; font-size: 10px; }
#sidebar .tipos-table td { padding: 3px 4px; border-bottom: 1px solid var(--border); text-align: center; font-size: 12px; }
#sidebar .tipos-table .tipo-chk { width: 13px; height: 13px; accent-color: var(--accent); margin: 0; }
#sidebar .tipos-table .tipo-label { text-align: left; font-weight: 600; white-space: nowrap; }

/* Search input */
#sidebar .form-control {
  background: var(--bg-tertiary);
  color: var(--text-primary);
  border: 1px solid var(--border);
  font-size: 11px;
  padding: 4px 8px;
}
#sidebar .list-group-item {
  background: var(--bg-tertiary);
  color: var(--text-primary);
  border-color: var(--border);
  font-size: 11px;
  padding: 4px 8px;
  cursor: pointer;
}
#sidebar .list-group-item:hover { background: var(--bg-hover); }

/* Leyenda buttons in sidebar */
.leyenda-btns-panel { display: flex; gap: 3px; flex-wrap: wrap; }
.leyenda-btn-panel {
  padding: 3px 8px; font-size: 10px; font-weight: 600; border: 1px solid var(--border);
  border-radius: 4px; cursor: pointer; background: var(--bg-tertiary); color: var(--text-secondary);
  transition: all .15s;
}
.leyenda-btn-panel.active { background: var(--accent); color: #fff; border-color: var(--accent); }
.leyenda-btn-panel:hover:not(.active) { background: var(--bg-hover); color: var(--text-primary); }

/* Gauge widgets in bottom bar — Highcharts overrides */
.widget-gauge .highcharts-background { fill: transparent !important; }
.widget-gauge .highcharts-plot-band { fill-opacity: 0.8; }

/* Widget config prompt (dashcam params) */
#widget-prompt{position:fixed;inset:0;z-index:2100;display:none;align-items:center;justify-content:center}
#widget-prompt.visible{display:flex}
.prompt-overlay{position:absolute;inset:0;background:rgba(0,0,0,0.5)}
.prompt-box{position:relative;background:var(--bg-secondary);border:1px solid var(--border);border-radius:10px;padding:16px;min-width:280px;box-shadow:0 8px 40px rgba(0,0,0,.5);z-index:1}
.prompt-title{font-size:13px;font-weight:700;color:var(--text-primary);margin-bottom:12px}
.prompt-fields{display:flex;flex-direction:column;gap:8px;margin-bottom:14px}
.prompt-fields label{font-size:10px;color:var(--text-muted);margin-bottom:2px;display:block}
.prompt-fields input{background:var(--bg-tertiary);color:var(--text-primary);border:1px solid var(--border);border-radius:4px;padding:6px 8px;font-size:12px;width:100%;box-sizing:border-box}
.prompt-fields input:focus{border-color:var(--accent);outline:none}
.prompt-actions{display:flex;justify-content:flex-end;gap:8px}
.prompt-fields select{background:var(--bg-tertiary);color:var(--text-primary);border:1px solid var(--border);border-radius:4px;padding:5px 8px;font-size:12px;width:100%;min-height:32px;cursor:pointer}
.prompt-fields select option{background:var(--bg-secondary);color:var(--text-primary)}
.prompt-select-filter{background:var(--bg-tertiary);color:var(--text-primary);border:1px solid var(--border);border-radius:4px;padding:5px 8px;font-size:11px;width:100%;box-sizing:border-box}
.prompt-select-filter:focus{border-color:var(--accent);outline:none}
.prompt-fields .ql-editor-container{height:180px;margin-top:4px}

/* Widget costos rows */
.widget-costos-body{flex:1;overflow-y:auto;font-size:10px}
.widget-costos-body::-webkit-scrollbar{display:none}
.widget-costos-row{display:flex;align-items:center;padding:2px 4px;border-bottom:1px solid var(--border-light)}
.widget-costos-row:last-child{border-bottom:none}
.wcr-label{flex:0 0 auto;font-size:10px;color:var(--text-primary);display:flex;align-items:center;gap:5px;white-space:nowrap}
.wcr-label i{font-size:10px;width:14px;text-align:center;color:var(--text-muted);opacity:.7}
.wcr-value{flex:1;font-size:10px;font-weight:600;color:var(--text-primary);text-align:right;white-space:nowrap}
.widget-costos-total{border-top:1px solid var(--accent);margin-top:2px;padding-top:3px}
.widget-costos-total .wcr-label,.widget-costos-total .wcr-value{font-size:11px;font-weight:700;color:var(--accent) !important}

/* Geocerca label tooltip */
.geo-label{
  background:transparent !important;border:none !important;box-shadow:none !important;
  font-size:9px;font-weight:700;color:var(--accent) !important;
  text-shadow:-1px -1px 0 rgba(0,0,0,.6),1px -1px 0 rgba(0,0,0,.6),-1px 1px 0 rgba(0,0,0,.6),1px 1px 0 rgba(0,0,0,.6);
  padding:0 !important;
}
.geo-label::before{display:none}

/* Progress bar in rightbar (Básicos tab) */
#rightbar .popup-bar{background:var(--bg-hover);border:1px solid #6b7280}
#rightbar .popup-bar-fill{background:var(--accent);opacity:.5}
#rightbar .popup-bar-text{color:var(--text-primary);text-shadow:none}

/* Quill dark theme overrides */
.ql-toolbar.ql-snow{background:var(--bg-tertiary);border-color:var(--border);border-radius:4px 4px 0 0}
.ql-container.ql-snow{background:var(--bg-primary);border-color:var(--border);border-radius:0 0 4px 4px;color:var(--text-primary)}
.ql-editor{color:var(--text-primary);min-height:100px}
.ql-stroke{stroke:var(--text-secondary)}
.ql-fill{fill:var(--text-secondary)}
.ql-picker{color:var(--text-secondary)}
.ql-picker-options{background:var(--bg-tertiary);border-color:var(--border)}
.ql-picker-item{color:var(--text-primary)}
.ql-selected{color:var(--accent) !important}

/* Widget text content */
.widget-text-content{padding:8px;flex:1;font-size:12px;line-height:1.5;color:var(--text-primary)}
.widget-text-content h1,.widget-text-content h2,.widget-text-content h3{color:var(--accent)}
.widget-text-content a{color:var(--accent)}
.widget-text-content ul,.widget-text-content ol{padding-left:18px}
.widget-text-content blockquote{border-left:3px solid var(--accent);padding-left:10px;color:var(--text-secondary);margin:4px 0}

/* Mobile responsiveness */
@media (max-width: 768px) {
  .brand-sub{display:none}
  #app{
    grid-template-columns:1fr;
    grid-template-areas:
      "header"
      "map"
      "bottombar";
    height: 100dvh; /* dynamic viewport height - prevents address bar issues */
  }
  html, body {
    height: 100dvh;
    overflow: hidden !important;
    position: fixed;
    width: 100%;
  }
  #app.sidebar-open{grid-template-columns:1fr}
  #app.rightbar-open{grid-template-columns:1fr}
  #sidebar{position:fixed;top:var(--header-h);left:0;bottom:0;width:260px;z-index:200;display:none}
  #app.sidebar-open #sidebar{display:block}
  #rightbar{position:fixed;top:var(--header-h);right:0;bottom:0;width:280px;z-index:200;display:none}
  #app.rightbar-open #rightbar{display:block}
  #map { touch-action: manipulation; }
}

/* Keep leyenda control inside map bounds */
.leyenda-control {
  position: absolute !important;
  bottom: 10px !important;
  right: 10px !important;
  z-index: 999 !important;
  background: rgba(26, 31, 40, 0.88) !important;
}
body.light .leyenda-control {
  background: rgba(241, 243, 244, 0.88) !important;
}

/* Rightbar flex layout — fill available space */
#rightbar .panel-inner {
  display: flex;
  flex-direction: column;
  height: 100%;
  overflow-y: auto;
  padding: 8px;
}
#rightbar .panel-section {
  flex: 1;
  display: flex;
  flex-direction: column;
  min-height: 0;
  margin-bottom: 0;
}
#rightbar #rightbar-content {
  flex: 1;
  display: flex;
  flex-direction: column;
  min-height: 0;
  overflow-y: auto;
}
#rightbar .info-tabs {
  flex-shrink: 0;
}

/* === Estilos para equipos inactivos (PGO) === */
.pgo-inactive-grayscale img { filter:grayscale(1); }

.pgo-inactive-red-border img {
    outline:2px solid #f85149; outline-offset:-1px; border-radius:2px;
}

.pgo-inactive-red-label div[class^="device-label"] {
    color:#f85149 !important;
    text-shadow:-1px -1px 0 #000, 1px -1px 0 #000, -1px 1px 0 #000, 1px 1px 0 #000;
}

.pgo-inactive-red-all img {
    outline:2px solid #f85149; outline-offset:-1px; border-radius:2px;
}
.pgo-inactive-red-all div[class^="device-label"] {
    color:#f85149 !important;
    text-shadow:-1px -1px 0 #000, 1px -1px 0 #000, -1px 1px 0 #000, 1px 1px 0 #000;
}

/* ===== Login Page ===== */
.login-page {
    background: #eef0f2;
    display: flex;
    align-items: center;
    justify-content: center;
    min-height: 100vh;
    margin: 0;
    padding: 20px;
    font-family: "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
}

.login-container {
    width: 100%;
    max-width: 420px;
}

.login-card {
    background: #fff;
    border: 1px solid #dde0e4;
    border-radius: 8px;
    padding: 44px 36px 36px;
    box-shadow: 0 1px 3px rgba(0,0,0,.06), 0 6px 16px rgba(0,0,0,.08);
}

.login-logo {
    text-align: center;
    margin-bottom: 10px;
}

.login-logo-img {
    width: 200px;
    height: auto;
    max-width: 100%;
}

.login-divider {
    height: 1px;
    background: #e8eaed;
    margin: 18px 0 24px;
}

.login-title {
    text-align: center;
    font-size: 13px;
    font-weight: 400;
    color: #707883;
    margin-bottom: 28px;
    letter-spacing: .5px;
}

.login-form .form-label {
    color: #525860;
    font-size: 13px;
    font-weight: 500;
    margin-bottom: 4px;
}

.login-form .form-control {
    background: #f8f9fb;
    border: 1px solid #dde0e4;
    color: #1a1d23;
    padding: 10px 12px;
    border-radius: 6px;
    font-size: 14px;
    transition: border-color .15s, box-shadow .15s;
}

.login-form .form-control:focus {
    background: #fff;
    border-color: #006784;
    color: #1a1d23;
    box-shadow: 0 0 0 3px rgba(0,103,132,.12);
}

.login-form .form-control::placeholder {
    color: #a0a7b0;
}

.login-btn {
    padding: 11px 0;
    font-size: 14px;
    font-weight: 600;
    border-radius: 6px;
    background: #006784;
    border: 1px solid #006784;
    color: #fff;
    letter-spacing: .3px;
    transition: background .15s, border-color .15s;
}

.login-btn:hover {
    background: #005472;
    border-color: #005472;
    color: #fff;
}

.login-btn:active {
    background: #00455c;
    border-color: #00455c;
}

.login-error {
    background: #fef2f2;
    border: 1px solid #fecaca;
    color: #b91c1c;
    padding: 10px 14px;
    border-radius: 6px;
    font-size: 13px;
    margin-bottom: 20px;
    text-align: center;
}

.login-footer {
    text-align: center;
    margin-top: 20px;
    font-size: 11px;
    color: #9ca3af;
}

/* ===== Header User ===== */
.user-name {
    font-size: 13px;
    color: var(--text-secondary);
    font-weight: 500;
    margin-right: 4px;
    white-space: nowrap;
    max-width: 180px;
    overflow: hidden;
    text-overflow: ellipsis;
}

.btn-logout {
    text-decoration: none;
    font-size: 15px;
}

.btn-logout:hover {
    color: var(--accent-red);
    background: var(--bg-hover);
}
