:root{--brand-teal:#0c3235;--brand-mist:#d3ddde;--brand-orange:#ff5b04;--brand-cyan:#13c9d8;--mist:oklch(97.2% .006 200);--panel:oklch(99.5% .003 200);--panel-2:oklch(96% .008 200);--line:oklch(90.5% .012 200);--line-strong:oklch(82% .018 200);--chrome:oklch(29% .04 200);--chrome-2:oklch(34% .045 200);--chrome-line:oklch(40% .045 200);--chrome-ink:oklch(90% .012 200);--chrome-ink-muted:oklch(72% .02 200);--ink:oklch(24% .03 200);--ink-2:oklch(42% .03 200);--ink-muted:oklch(56% .025 200);--ink-faint:oklch(70% .02 200);--on-accent:oklch(98% .005 200);--accent:oklch(58% .11 205);--accent-strong:oklch(48% .1 205);--accent-soft:oklch(93% .04 205);--accent-ring:oklch(70% .12 205/.45);--ok:oklch(58% .12 165);--ok-soft:oklch(93% .05 165);--warn:oklch(72% .15 70);--warn-soft:oklch(95% .06 75);--bad:oklch(60% .19 38);--bad-soft:oklch(94% .06 40);--pend:oklch(62% .02 220);--pend-soft:oklch(94% .01 220);--font-ui:"Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", system-ui, sans-serif;--font-mono:"IBM Plex Mono", ui-monospace, SFMono-Regular, Menlo, monospace;--fs-xs:.75rem;--fs-sm:.8125rem;--fs-md:.875rem;--fs-lg:1.0625rem;--fs-xl:1.25rem;--fs-2xl:1.5rem;--fs-3xl:1.8125rem;--r-sm:6px;--r-md:10px;--r-lg:14px;--shadow-1:0 1px 2px oklch(30% .03 200/.08), 0 1px 1px oklch(30% .03 200/.04);--shadow-2:0 8px 24px oklch(30% .03 200/.14), 0 2px 6px oklch(30% .03 200/.08);--ease:cubic-bezier(.22, 1, .36, 1);--sidebar-w:76px}*,:before,:after{box-sizing:border-box}html,body,#root{height:100%}body{background:var(--mist);color:var(--ink);font-family:var(--font-ui);font-size:var(--fs-md);-webkit-font-smoothing:antialiased;text-rendering:optimizelegibility;margin:0;line-height:1.45}a{color:var(--accent-strong);text-decoration:none}button,input,select,textarea{font:inherit;color:inherit}button{cursor:pointer}.mono{font-family:var(--font-mono);font-variant-numeric:tabular-nums}.num{font-variant-numeric:tabular-nums}.muted{color:var(--ink-muted)}.caps{letter-spacing:.06em;text-transform:uppercase;color:var(--ink-muted);font-size:11px;font-weight:600}.sr-only{clip:rect(0 0 0 0);width:1px;height:1px;position:absolute;overflow:hidden}.shell{grid-template-columns:var(--sidebar-w) 1fr;min-height:100vh;display:grid}.rail{background:var(--chrome);color:var(--chrome-ink);border-right:1px solid var(--chrome-line);z-index:30;flex-direction:column;align-items:center;height:100vh;padding:14px 0 12px;display:flex;position:sticky;top:0}.rail-brand{justify-content:center;align-items:center;margin-bottom:14px;display:flex}.rail-brand img{width:54px;height:54px;transition:transform .2s var(--ease);display:block}.rail-brand:hover img{transform:rotate(-6deg)scale(1.04)}.rail nav{flex-direction:column;align-items:center;gap:4px;width:100%;padding:0 8px;display:flex}.rail-item{border-radius:var(--r-md);width:100%;color:var(--chrome-ink-muted);transition:background .15s var(--ease), color .15s var(--ease);flex-direction:column;align-items:center;gap:3px;padding:8px 0 7px;text-decoration:none;display:flex}.rail-item:hover{background:var(--chrome-2);color:var(--chrome-ink)}.rail-item.active{color:var(--on-accent);background:oklch(42% .07 205/.55)}.rail-item.active .rail-ico{color:var(--brand-cyan)}.rail-ico{width:22px;height:22px;display:flex}.rail-label{letter-spacing:.02em;font-size:10.5px;font-weight:600;line-height:1}.rail-sep{background:var(--chrome-line);width:28px;height:1px;margin:8px 0;display:block}.rail-spacer{flex:1}.rail-user{position:relative}.avatar{border:1px solid var(--chrome-line);background:var(--chrome-2);width:38px;height:38px;color:var(--chrome-ink);font-weight:700;font-size:var(--fs-sm);letter-spacing:.02em;transition:background .15s var(--ease);border-radius:50%;place-items:center;display:grid}.avatar:hover{background:oklch(40% .05 205)}.rail-menu{background:var(--panel);min-width:240px;color:var(--ink);border:1px solid var(--line);border-radius:var(--r-md);box-shadow:var(--shadow-2);z-index:50;animation:fade .15s var(--ease);padding:6px;position:absolute;bottom:0;left:50px}.rm-head{border-bottom:1px solid var(--line);font-size:var(--fs-xs);color:var(--ink-muted);flex-direction:column;margin-bottom:4px;padding:8px 10px 10px;display:flex}.rm-head b{color:var(--ink);font-size:var(--fs-sm);font-weight:600}.rm-head .badge{align-self:flex-start}.rm-item{border-radius:var(--r-sm);width:100%;color:var(--ink);font-size:var(--fs-sm);text-align:left;background:0 0;border:0;align-items:center;gap:8px;padding:8px 10px;text-decoration:none;display:flex}.rm-item:hover{background:var(--panel-2)}.main{flex-direction:column;min-width:0;display:flex}.topbar{background:var(--panel);border-bottom:1px solid var(--line);z-index:20;align-items:center;gap:14px;min-height:58px;padding:12px 24px;display:flex;position:sticky;top:0}.topbar h1{font-size:var(--fs-xl);letter-spacing:-.01em;margin:0;font-weight:600}.topbar .grow{flex:1}.page{flex-direction:column;gap:14px;padding:18px 24px 40px;display:flex}.btn{border-radius:var(--r-sm);border:1px solid var(--line-strong);background:var(--panel);color:var(--ink);font-weight:500;font-size:var(--fs-sm);transition:background .15s var(--ease), border-color .15s var(--ease), box-shadow .15s var(--ease);align-items:center;gap:6px;padding:7px 12px;display:inline-flex}.btn:hover{background:var(--panel-2)}.btn:focus-visible{box-shadow:0 0 0 3px var(--accent-ring);border-color:var(--accent);outline:none}.btn:disabled{opacity:.55;cursor:not-allowed}.btn.primary{background:var(--accent);border-color:var(--accent);color:var(--on-accent)}.btn.primary:hover{background:var(--accent-strong);border-color:var(--accent-strong)}.btn.ghost{background:0 0;border-color:#0000}.btn.ghost:hover{background:var(--panel-2)}.btn.sm{font-size:var(--fs-xs);padding:4px 8px}.btn.icon{padding:6px}.btn svg{width:16px;height:16px}.input,.select{border-radius:var(--r-sm);border:1px solid var(--line-strong);background:var(--panel);font-size:var(--fs-sm);min-width:0;transition:border-color .15s var(--ease), box-shadow .15s var(--ease);padding:7px 10px}.input:focus,.select:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-ring);outline:none}.input::placeholder{color:var(--ink-faint)}.field{flex-direction:column;gap:4px;display:flex}.field label{font-size:var(--fs-xs);color:var(--ink-2);font-weight:600}.segmented{background:var(--panel-2);border:1px solid var(--line);border-radius:var(--r-sm);padding:2px;display:inline-flex}.segmented button{font-size:var(--fs-sm);color:var(--ink-2);transition:background .15s var(--ease), color .15s var(--ease);background:0 0;border:0;border-radius:4px;padding:5px 11px;font-weight:500}.segmented button:hover{color:var(--ink)}.segmented button.on{background:var(--panel);color:var(--ink);box-shadow:var(--shadow-1)}.segmented button:focus-visible{box-shadow:0 0 0 3px var(--accent-ring);outline:none}.chips{flex-wrap:wrap;gap:6px;display:inline-flex}.chip{border:1px solid var(--line-strong);background:var(--panel);font-size:var(--fs-xs);color:var(--ink-2);transition:background .15s var(--ease), border-color .15s var(--ease);border-radius:999px;align-items:center;gap:6px;padding:4px 10px;font-weight:500;display:inline-flex}.chip:hover{background:var(--panel-2)}.chip.on{background:var(--accent-soft);border-color:var(--accent);color:var(--accent-strong)}.chip .dot{border-radius:50%;width:8px;height:8px}.chip .n{font-variant-numeric:tabular-nums;color:var(--ink-muted)}.chip.on .n{color:var(--accent-strong)}.datestep{border:1px solid var(--line-strong);border-radius:var(--r-sm);background:var(--panel);align-items:center;display:inline-flex}.datestep button{color:var(--ink-2);background:0 0;border:0;padding:6px 8px}.datestep button:hover{color:var(--ink);background:var(--panel-2)}.datestep input{font-family:var(--font-mono);font-size:var(--fs-sm);text-align:center;background:0 0;border:0;width:128px;padding:6px 4px}.datestep input:focus{outline:none}.toolbar{flex-wrap:wrap;align-items:center;gap:10px;display:flex}.toolbar .sep{background:var(--line);width:1px;height:24px;margin:0 2px}.panel{background:var(--panel);border:1px solid var(--line);border-radius:var(--r-md)}.panel .panel-h{border-bottom:1px solid var(--line);align-items:center;gap:10px;padding:12px 14px;display:flex}.panel .panel-h h2{font-size:var(--fs-md);margin:0;font-weight:600}.panel .panel-b{padding:14px}.stats{border:1px solid var(--line);border-radius:var(--r-md);background:var(--panel);flex-wrap:wrap;align-items:stretch;gap:0;display:flex;overflow:hidden}.stat{border-right:1px solid var(--line);flex-direction:column;gap:2px;min-width:128px;padding:10px 16px;display:flex}.stat:last-child{border-right:0}.stat .k{letter-spacing:.05em;text-transform:uppercase;color:var(--ink-muted);font-size:11px;font-weight:600}.stat .v{font-size:var(--fs-xl);letter-spacing:-.01em;font-variant-numeric:tabular-nums;align-items:baseline;gap:6px;font-weight:600;display:flex}.stat .v small{font-size:var(--fs-xs);color:var(--ink-muted);font-weight:500}.stat.bad .v{color:var(--bad)}.stat.ok .v{color:var(--ok)}.stat.pend .v{color:var(--pend)}table.data{border-collapse:separate;border-spacing:0;width:100%;font-size:var(--fs-sm)}table.data th{text-align:left;letter-spacing:.06em;text-transform:uppercase;color:var(--ink-muted);border-bottom:1px solid var(--line);background:var(--panel);z-index:5;white-space:nowrap;padding:8px 10px;font-size:11px;font-weight:600;position:sticky;top:0}table.data td{border-bottom:1px solid var(--line);vertical-align:middle;white-space:nowrap;padding:7px 10px}.panel.scroll{max-height:calc(100vh - 250px);overflow:auto}table.data tr:hover td{background:var(--panel-2)}table.data td.r,table.data th.r{text-align:right}.badge{border:1px solid #0000;border-radius:999px;align-items:center;gap:4px;padding:2px 7px;font-size:11px;font-weight:600;display:inline-flex}.badge.ok{background:var(--ok-soft);color:oklch(38% .1 165)}.badge.bad{background:var(--bad-soft);color:oklch(42% .16 38)}.badge.warn{background:var(--warn-soft);color:oklch(45% .12 70)}.badge.pend{background:var(--pend-soft);color:oklch(42% .02 220)}.badge.neutral{background:var(--panel-2);color:var(--ink-2);border-color:var(--line)}.badge.accent{background:var(--accent-soft);color:var(--accent-strong)}.badge.jae{color:oklch(40% .13 245);background:oklch(93% .05 245)}.badge.zirix{color:oklch(42% .15 25);background:oklch(93% .05 25)}.badge.conecta{color:oklch(38% .11 150);background:oklch(93% .05 150)}.badge.off{opacity:.3;filter:saturate(0)}.badge.slot{justify-content:center;min-width:58px}.sig{font-variant-numeric:tabular-nums;text-align:right;min-width:66px;display:inline-block}.slotw{font-variant-numeric:tabular-nums;min-width:72px}.f-jae{color:oklch(45% .13 245);font-weight:600}.f-zirix{color:oklch(48% .15 25);font-weight:600}.f-conecta{color:oklch(42% .11 150);font-weight:600}.skeleton{background:linear-gradient(90deg, var(--panel-2) 25%, oklch(98.5% .004 200) 50%, var(--panel-2) 75%);color:#0000;background-size:200% 100%;border-radius:4px;animation:1.2s linear infinite shimmer}@keyframes shimmer{0%{background-position:200% 0}to{background-position:-200% 0}}.empty-state{text-align:center;color:var(--ink-muted);padding:48px 20px}.empty-state h3{color:var(--ink-2);font-size:var(--fs-md);margin:0 0 6px;font-weight:600}.erro{background:var(--bad-soft);color:oklch(40% .15 38);border-radius:var(--r-sm);font-size:var(--fs-sm);padding:10px 12px}.grade-wrap{border:1px solid var(--line);border-radius:var(--r-md);background:var(--panel);min-height:360px;max-height:calc(100vh - 286px);overflow:auto}table.grade{border-collapse:separate;border-spacing:0;font-size:var(--fs-sm);table-layout:fixed;width:100%;min-width:1600px}table.grade th{z-index:6;background:var(--panel);letter-spacing:.05em;text-transform:uppercase;color:var(--ink-muted);border-bottom:1px solid var(--line);text-align:center;white-space:nowrap;padding:8px 6px;font-size:11px;font-weight:600;position:sticky;top:0}table.grade th.l,table.grade td.l{text-align:left}table.grade th.sticky,table.grade td.sticky{z-index:4;background:var(--panel);position:sticky;left:0}table.grade th.sticky{z-index:7}table.grade td{border-bottom:1px solid var(--line);height:36px;padding:0}table.grade td.l{white-space:nowrap;text-overflow:ellipsis;padding:0 10px;overflow:hidden}table.grade tr.car{cursor:pointer}table.grade tr.car:hover td.sticky,table.grade tr.car:hover td.l{background:var(--panel-2)}table.grade tr.sel td.sticky,table.grade tr.sel td.l{background:var(--accent-soft)}table.grade tr.sub td{height:26px;font-size:var(--fs-xs);color:var(--ink-muted);border-bottom-style:dashed}table.grade tr.rua td{background:var(--panel-2);height:30px;font-size:var(--fs-xs);color:var(--ink-2)}table.grade td.cell{text-align:center;font-family:var(--font-mono);font-variant-numeric:tabular-nums;font-size:11.5px;position:relative;overflow:hidden}.cell .v{border-radius:4px;justify-content:center;align-items:center;height:28px;margin:2px 1px;display:flex}.cell .v.hatch{color:var(--ink-muted);background-image:repeating-linear-gradient(135deg,oklch(86% .01 220) 0 3px,#0000 3px 7px)}.cell .v.dash{border:1px dashed var(--line-strong);color:var(--ink-faint)}.cell .v.empty{color:var(--ink-faint)}.ordem{font-family:var(--font-mono);font-weight:600;font-size:var(--fs-md);letter-spacing:.01em}.valid{font-family:var(--font-mono);font-size:var(--fs-xs);color:oklch(45% .13 245)}.sensor-tag{letter-spacing:.05em;color:oklch(40% .13 245);background:oklch(93% .05 245);border-radius:4px;align-items:center;gap:4px;padding:1px 5px;font-size:10px;font-weight:700;display:inline-flex}.linhas{font-size:var(--fs-xs);color:var(--ink-muted);white-space:nowrap;text-overflow:ellipsis;max-width:170px;overflow:hidden}.resumo-cell{font-family:var(--font-mono);font-variant-numeric:tabular-nums;font-size:var(--fs-xs);white-space:nowrap;padding:0 10px!important}.legend{font-size:var(--fs-xs);color:var(--ink-muted);flex-wrap:wrap;align-items:center;gap:10px;display:flex}.legend .ramp{border:1px solid var(--line);border-radius:3px;height:10px;display:inline-flex;overflow:hidden}.legend .ramp i{width:14px;height:100%;display:block}.legend .sw{vertical-align:-2px;border-radius:3px;width:12px;height:12px;margin-right:4px;display:inline-block}.tip{z-index:100;pointer-events:none;background:var(--chrome);color:var(--chrome-ink);border-radius:var(--r-sm);font-size:var(--fs-xs);box-shadow:var(--shadow-2);max-width:260px;padding:8px 10px;line-height:1.4;position:fixed}.tip b{color:oklch(98% .005 200);font-weight:600}.tip .row{justify-content:space-between;gap:14px;display:flex}.drawer-bg{z-index:40;animation:fade .15s var(--ease);background:oklch(20% .03 200/.28);position:fixed;inset:0}.drawer{background:var(--mist);z-index:41;width:min(980px,96vw);box-shadow:var(--shadow-2);animation:slide .2s var(--ease);flex-direction:column;display:flex;position:fixed;top:0;bottom:0;right:0}@keyframes fade{0%{opacity:0}}@keyframes slide{0%{opacity:0;transform:translate(24px)}}.drawer .dh{background:var(--panel);border-bottom:1px solid var(--line);align-items:center;gap:12px;padding:14px 18px;display:flex}.drawer .dh h2{font-size:var(--fs-lg);margin:0;font-weight:600}.drawer .db{flex-direction:column;gap:14px;padding:16px 18px 30px;display:flex;overflow:auto}.kpis{grid-template-columns:repeat(auto-fit,minmax(120px,1fr));gap:8px;display:grid}.kpi{background:var(--panel);border:1px solid var(--line);border-radius:var(--r-sm);padding:8px 12px}.kpi .k{letter-spacing:.05em;text-transform:uppercase;color:var(--ink-muted);font-size:11px;font-weight:600}.kpi .v{font-size:var(--fs-lg);font-variant-numeric:tabular-nums;font-weight:600}.chart{width:100%;height:240px;display:block}.chart .grid line{stroke:var(--line);stroke-width:1px}.chart .axis text{fill:var(--ink-muted);font-size:10px;font-family:var(--font-mono)}.chart .s-temp{fill:none;stroke:oklch(72% .06 245);stroke-width:1.6px;stroke-linejoin:round}.chart .s-viagem{fill:none;stroke:oklch(42% .15 245);stroke-width:2.8px;stroke-linejoin:round;stroke-linecap:round}.chart .s-ext{fill:none;stroke:var(--brand-orange);stroke-width:2px;stroke-dasharray:4 3}.chart .faixa-linha rect{fill:oklch(93% .05 245/.55)}.chart .faixa-linha text{fill:oklch(45% .13 245);font-size:9px;font-family:var(--font-mono);font-weight:600}.chart .s-ref{stroke:var(--ink-faint);stroke-width:1px;stroke-dasharray:2 3}.chart .band{fill:var(--ok-soft);opacity:.55}.chart .cross{stroke:var(--ink-2);stroke-width:1px}.chart .pt{fill:var(--panel);stroke:oklch(50% .14 245);stroke-width:2px}table.leituras{border-collapse:collapse;width:100%;font-size:var(--fs-sm);font-family:var(--font-mono);font-variant-numeric:tabular-nums}table.leituras th{background:var(--panel);text-align:left;font-family:var(--font-ui);letter-spacing:.06em;text-transform:uppercase;color:var(--ink-muted);border-bottom:1px solid var(--line);z-index:2;padding:9px 12px;font-size:11px;position:sticky;top:0}table.leituras td{border-bottom:1px solid var(--line);padding:7px 12px;line-height:1.35}table.leituras tr.h td{background:var(--panel-2);font-family:var(--font-ui);color:var(--ink-2);cursor:pointer;padding:9px 12px;font-weight:600}table.leituras tr.h:hover td{background:var(--accent-soft)}table.leituras td.irr{color:var(--bad);font-weight:600}.login{background:var(--chrome);min-height:100vh;color:var(--chrome-ink);place-items:center;display:grid;position:relative;overflow:hidden}.login:before{content:"";pointer-events:none;background:radial-gradient(60% 60% at 30% 40%,oklch(45% .09 205/.45),#0000 70%);height:70%;position:absolute;inset:-30% -10% auto}.login .card{background:var(--panel);width:min(400px,92vw);color:var(--ink);border-radius:var(--r-lg);box-shadow:var(--shadow-2);flex-direction:column;gap:14px;padding:28px 28px 24px;display:flex;position:relative}.login .card img{align-self:flex-start;height:72px}.login .card h1{font-size:var(--fs-xl);margin:4px 0 0;font-weight:600}.login .card p{color:var(--ink-muted);font-size:var(--fs-sm);margin:0}.login .foot{font-size:var(--fs-xs);color:var(--chrome-ink-muted);position:absolute;bottom:18px}.form-grid{grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:10px 14px;display:grid}.row{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.split{grid-template-columns:340px 1fr;align-items:start;gap:14px;display:grid}.list{flex-direction:column;display:flex}.list .item{border-bottom:1px solid var(--line);cursor:pointer;font-size:var(--fs-sm);align-items:center;gap:10px;padding:9px 12px;display:flex}.list .item:hover{background:var(--panel-2)}.list .item.on{background:var(--accent-soft)}.list .item .grow{flex:1;min-width:0}.list .item .sub{font-size:var(--fs-xs);color:var(--ink-muted)}.toggle{font-size:var(--fs-sm);color:var(--ink-2);cursor:pointer;align-items:center;gap:6px;display:inline-flex}.toggle input{accent-color:var(--accent)}@media (width<=900px){.split{grid-template-columns:1fr}}.chart .ax{fill:var(--ink-muted);font-size:10px;font-family:var(--font-mono)}.barra{background:var(--panel-2);vertical-align:middle;border-radius:4px;width:56px;height:8px;margin-right:6px;display:inline-block;overflow:hidden}.barra i{height:100%;display:block}.rail-item .rail-label{white-space:nowrap}.chart-readout{min-height:22px;font-size:var(--fs-xs);color:var(--ink-2);font-variant-numeric:tabular-nums;flex-wrap:wrap;align-items:baseline;gap:14px;margin:0 0 6px 34px;display:flex}.chart-readout b{color:var(--ink);font-weight:600}
