/* uPlot 1.6.31 base styles (MIT) — merged here to save one blocking request */
.uplot, .uplot *, .uplot *::before, .uplot *::after {box-sizing: border-box;}.uplot {font-family: system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";line-height: 1.5;width: min-content;}.u-title {text-align: center;font-size: 18px;font-weight: bold;}.u-wrap {position: relative;user-select: none;}.u-over, .u-under {position: absolute;}.u-under {overflow: hidden;}.uplot canvas {display: block;position: relative;width: 100%;height: 100%;}.u-axis {position: absolute;}.u-legend {font-size: 14px;margin: auto;text-align: center;}.u-inline {display: block;}.u-inline * {display: inline-block;}.u-inline tr {margin-right: 16px;}.u-legend th {font-weight: 600;}.u-legend th > * {vertical-align: middle;display: inline-block;}.u-legend .u-marker {width: 1em;height: 1em;margin-right: 4px;background-clip: padding-box !important;}.u-inline.u-live th::after {content: ":";vertical-align: middle;}.u-inline:not(.u-live) .u-value {display: none;}.u-series > * {padding: 4px;}.u-series th {cursor: pointer;}.u-legend .u-off > * {opacity: 0.3;}.u-select {background: rgba(0,0,0,0.07);position: absolute;pointer-events: none;}.u-cursor-x, .u-cursor-y {position: absolute;left: 0;top: 0;pointer-events: none;will-change: transform;}.u-hz .u-cursor-x, .u-vt .u-cursor-y {height: 100%;border-right: 1px dashed #607D8B;}.u-hz .u-cursor-y, .u-vt .u-cursor-x {width: 100%;border-bottom: 1px dashed #607D8B;}.u-cursor-pt {position: absolute;top: 0;left: 0;border-radius: 50%;border: 0 solid;pointer-events: none;will-change: transform;/*this has to be !important since we set inline "background" shorthand */background-clip: padding-box !important;}.u-axis.u-off, .u-select.u-off, .u-cursor-x.u-off, .u-cursor-y.u-off, .u-cursor-pt.u-off {display: none;}
/* ---- EcoVeraZ Evidence Console ---- */
/* EcoVeraZ Evidence Console — Grafana-style panel system (dark canvas inside the light site)
   Fonts inherit the site system (Roboto / Roboto Mono) so every page reads the same. */
.gcanvas{--g-bg:#0A1628;--g-panel:#0F1F39;--g-panel2:#152C52;--g-border:#22365A;--g-text:#DCE6EC;--g-text2:#C3D4DE;--g-text3:#8FA3B4;
  --g-green:#73BF69;--g-yellow:#F2CC0C;--g-orange:#FF9830;--g-red:#F2495C;--g-blue:#5794F2;--g-purple:#B877D9;--g-teal:#5FD3CD;
  background:var(--g-bg);color:var(--g-text);font-family:var(--sans);font-size:14px;line-height:1.4;border:1px solid var(--g-border);border-radius:3px;overflow:hidden}
.gcanvas *{box-sizing:border-box}
.gcanvas h1,.gcanvas h2,.gcanvas h3,.gcanvas h4{color:var(--g-text);letter-spacing:0}
/* top bar */
.gtop{display:flex;align-items:center;gap:14px;padding:10px 14px;border-bottom:1px solid var(--g-border);background:var(--g-bg);flex-wrap:wrap}
.gtop .gcrumb{font-size:12.5px;color:var(--g-text2);font-family:var(--mono)}
.gtop .gcrumb b{color:var(--g-text);font-weight:500;font-family:var(--sans);font-size:15px}
.gtop .gspacer{flex:1}
.gbadge{font-family:var(--mono);font-size:12px;letter-spacing:.06em;padding:3px 8px;border:1px solid var(--g-border);border-radius:2px;color:var(--g-text2)}
.gbadge.syn{border-color:var(--g-orange);color:var(--g-orange)}
.gbadge.link{color:var(--g-teal);border-color:var(--g-teal)}
.gbadge.link:hover{background:var(--g-teal);color:#0F1F39}
.gvars{display:flex;align-items:center;gap:12px;padding:8px 14px;border-bottom:1px solid var(--g-border);flex-wrap:wrap}
.gvar{display:flex;align-items:center;gap:6px;font-size:13px;color:var(--g-text2)}
.gvar select,.gvar .gbtn{font-family:var(--sans);font-size:13px;color:var(--g-text);background:var(--g-panel2);border:1px solid var(--g-border);border-radius:2px;padding:5px 9px}
.gvar select{padding-right:22px}
.gvar .gbtn{cursor:pointer}
.gvar .gbtn:hover,.gvar .gbtn.on{background:#1B3A6B;border-color:#3A5A8C}
.gvar .gbtn.on{color:#fff}
.gtime{margin-left:auto;display:flex;align-items:center;gap:6px}
.gtime .gbtn{display:inline-flex;align-items:center;gap:6px}
/* grid: Grafana's 24 columns, 30px row units */
.ggrid{display:grid;grid-template-columns:repeat(24,1fr);grid-auto-rows:30px;gap:8px;padding:10px}
.gmini .ggrid{grid-template-columns:repeat(2,1fr);grid-auto-rows:24px;padding:8px}
.gp{background:var(--g-panel);border:1px solid var(--g-border);border-radius:3px;display:flex;flex-direction:column;min-width:0;position:relative;grid-column:span var(--w,12);grid-row:span var(--h,8)}
.gp .ph{display:flex;align-items:center;gap:8px;padding:6px 10px 2px;font-size:13px;font-weight:500;color:var(--g-text);min-height:26px}
.gp .ph .pi{margin-left:auto;font-family:var(--mono);font-size:12px;color:var(--g-text3);letter-spacing:.04em}
.gp .pb{flex:1;min-height:0;padding:4px 10px 8px;position:relative;display:flex;flex-direction:column}
.gp .pd{font-size:12.5px;color:var(--g-text3);padding:0 10px 6px;margin-top:-2px}
/* stat */
.gstat{position:relative;flex:1;display:flex;flex-direction:column;justify-content:flex-start;padding-top:4px}
.gstat .sv{font-family:var(--mono);font-variant-numeric:tabular-nums;font-size:30px;font-weight:500;line-height:1;color:var(--g-green);position:relative;z-index:1}
.gstat .sv small{font-size:14px;color:var(--g-text2);font-weight:400;margin-left:4px}
.gstat .sd{font-family:var(--mono);font-size:12.5px;color:var(--g-text2);margin-top:6px;position:relative;z-index:1}
.gstat .sd b{font-weight:500}
.gstat .sd .up{color:var(--g-red)}.gstat .sd .down{color:var(--g-green)}.gstat .sd .flat{color:var(--g-text2)}
.gstat .sd.good .up{color:var(--g-green)}.gstat .sd.good .down{color:var(--g-red)}
.gstat svg.spark{position:absolute;left:0;right:0;bottom:0;width:100%;height:42%;opacity:.85}
/* gauge */
.ggauge{flex:1;display:flex;align-items:center;justify-content:center}
.ggauge svg{width:100%;height:100%;max-height:100%}
.ggauge .gv{font-family:var(--mono);font-size:34px;font-weight:500;fill:var(--g-text)}
.ggauge .gl{font-size:12px;fill:var(--g-text2)}
/* bar gauge (LCD) */
.gbars{flex:1;display:flex;flex-direction:column;justify-content:flex-start;padding-top:8px;gap:10px}
.gbar{display:grid;grid-template-columns:130px 1fr 44px;align-items:center;gap:10px;font-size:13px}
.gbar .bl{color:var(--g-text2);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.gbar .cells{display:grid;grid-template-columns:repeat(30,1fr);gap:2px;height:16px}
.gbar .cells i{display:block;background:var(--g-panel2);border-radius:1px}
.gbar .bv{font-family:var(--mono);font-variant-numeric:tabular-nums;text-align:right;color:var(--g-text)}
/* state timeline */
.gstate{flex:1;display:flex;flex-direction:column;justify-content:center;gap:8px}
.grow{display:grid;grid-template-columns:130px 1fr;align-items:center;gap:10px;font-size:13px}
.grow .rl{color:var(--g-text2);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.grow .seg{display:flex;height:22px;border-radius:2px;overflow:hidden;gap:1px}
.grow .seg i{display:block;height:100%;flex:var(--f,1) 0 0;font-style:normal}
.grow .seg .pass{background:var(--g-green)}.grow .seg .review{background:var(--g-yellow)}.grow .seg .flag{background:var(--g-red)}
.gaxis{display:flex;justify-content:space-between;font-family:var(--mono);font-size:12px;color:var(--g-text3);padding-left:140px}
.glegend{display:flex;gap:14px;flex-wrap:wrap;font-size:12.5px;color:var(--g-text2);margin-top:6px}
.glegend i{display:inline-block;width:10px;height:10px;border-radius:2px;margin-right:6px;vertical-align:-1px}
/* table */
.gtable{flex:1;overflow:auto}
.gtable table{width:100%;border-collapse:collapse;font-size:13px}
.gtable th{font-family:var(--mono);font-size:12px;letter-spacing:.08em;text-transform:uppercase;color:var(--g-text2);font-weight:500;text-align:left;padding:6px 8px;border-bottom:1px solid var(--g-border);position:sticky;top:0;background:var(--g-panel)}
.gtable td{padding:7px 8px;border-bottom:1px solid var(--g-border);vertical-align:middle;color:var(--g-text)}
.gtable td.n{font-family:var(--mono);font-variant-numeric:tabular-nums;text-align:right;white-space:nowrap}
.gtable td.src{color:var(--g-text2)}
.gtable .tbar{display:flex;align-items:center;gap:8px;font-family:var(--mono);font-variant-numeric:tabular-nums}
.gtable .tbar span{display:block;height:8px;width:90px;background:var(--g-panel2);border-radius:1px;overflow:hidden}
.gtable .tbar span b{display:block;height:100%;background:var(--g-green)}
.gtable svg.mini{width:70px;height:20px;vertical-align:middle}
.gpill{font-family:var(--mono);font-size:12px;letter-spacing:.06em;padding:2px 7px;border-radius:2px;color:#111}
.gpill.pass{background:var(--g-green)}.gpill.review{background:var(--g-yellow)}.gpill.flag{background:var(--g-red);color:#fff}
/* donut */
.gdonut{flex:1;display:flex;align-items:center;gap:16px}
.gdonut svg{height:100%;max-height:150px;width:auto;flex:0 0 auto}
.gdonut .dl{display:flex;flex-direction:column;gap:6px;font-size:13px}
.gdonut .dl i{display:inline-block;width:10px;height:10px;border-radius:2px;margin-right:8px;vertical-align:-1px}
.gdonut .dl b{font-family:var(--mono);font-weight:500;margin-left:6px;color:var(--g-text)}
/* logs */
.glogs{flex:1;overflow:auto;font-family:var(--mono);font-size:12.5px;line-height:1.55}
.glogs div{display:grid;grid-template-columns:118px 62px 1fr;gap:10px;padding:3px 0;border-bottom:1px solid var(--g-border);color:var(--g-text2)}
.glogs div b{font-weight:500;color:var(--g-text)}
.glogs .lv{font-weight:500}
.glogs .lv.info{color:var(--g-blue)}.glogs .lv.warn{color:var(--g-yellow)}.glogs .lv.crit{color:var(--g-red)}
/* uPlot theming */
.gp .uplot{font-family:var(--sans)!important}
.gp .u-legend{font-size:12px!important;color:var(--g-text2)!important;padding:4px 0 0!important;text-align:left!important}
.gp .u-legend .u-marker{border-radius:2px}
.gp .u-legend .u-series{padding:0 10px 0 0!important}
.gp .u-legend .u-value{font-family:var(--mono);color:var(--g-text)}
.gp .u-legend th{font-weight:400!important}
.gp .u-cursor-pt{border-radius:50%}
.gp .u-select{background:rgba(87,148,242,.18)}
.gchart{flex:1;min-height:0}
/* light-site wrappers */
.console-intro{display:flex;align-items:flex-end;justify-content:space-between;gap:24px;flex-wrap:wrap;margin-bottom:22px}
.gnote{font-family:var(--mono);font-size:12.5px;color:var(--slate);margin-top:12px}
@media(max-width:980px){.ggrid{grid-template-columns:repeat(12,1fr)}.gp{grid-column:span min(var(--w,12),12)}.gbar,.grow{grid-template-columns:96px 1fr 44px}.grow{grid-template-columns:96px 1fr}.gaxis{padding-left:106px}}
@media(max-width:600px){.ggrid{grid-template-columns:1fr;grid-auto-rows:auto;gap:8px}.gp{grid-column:1;grid-row:auto;min-height:calc(var(--h,8) * 26px)}.gp[data-panel=stat],.gp[data-panel=gauge],.gp[data-panel=bargauge],.gp[data-panel=donut],.gp[data-panel=table],.gp[data-panel=logs]{min-height:0}.gp[data-panel=timeseries]{height:calc(var(--h,8) * 26px);min-height:0}.gp[data-panel=statetimeline]{min-height:0}.gp[data-panel=stat]{height:138px}.gmini .gp[data-panel=stat]{height:124px}.gtime{margin-left:0}
  .gvar select,.gvar .gbtn{font-size:16px;min-height:38px;padding:6px 12px}.gtime .gbtn{min-height:36px}
  .gtable{overflow-x:auto;-webkit-overflow-scrolling:touch}.gtable table{min-width:600px}
  .gtop .gcrumb{flex:1 1 100%}.gtop .gspacer{display:none}
  .glogs div{grid-template-columns:118px 1fr;gap:4px 10px;padding:6px 0}.glogs div span:last-child{grid-column:1/-1}
  .gmini .ggrid{grid-template-columns:1fr 1fr;grid-auto-rows:auto;gap:6px}.gmini .gp .pi{display:none}.gmini .sd{font-size:10px;white-space:nowrap}.gmini .gp{grid-column:auto;grid-row:auto;min-height:0}.gmini .gp[data-panel=timeseries]{grid-column:1/-1;height:190px}}
/* compact stat grid (hero) */
.gmini .sv{font-size:24px}.gmini .sv small{font-size:12px}.gmini .sd{font-size:12px;margin-top:4px}.gmini .gp .ph{font-size:12.5px}
.gchart{overflow:hidden}
