:root{--bg: #e8eef2;--bg-elevated: #ffffff;--bg-muted: #f1f5f8;--bg-header: rgba(255, 255, 255, .86);--text: #0f1c24;--text-muted: #5a6d7a;--border: #cfd8df;--accent: #0f766e;--accent-soft: rgba(15, 118, 110, .12);--danger: #c0352b;--danger-soft: rgba(192, 53, 43, .12);--warning: #c47a00;--warning-soft: rgba(196, 122, 0, .14);--ok: #1f7a45;--ok-soft: rgba(31, 122, 69, .12);--muted-status: #6b7c8a;--chart-temp: #c0352b;--chart-umid: #0e7490;--chart-grid: rgba(15, 28, 36, .08);--chart-axis: #5a6d7a;--shadow: 0 10px 30px rgba(15, 28, 36, .08);--header-height: 72px;--radius: 12px;--font-display: "Sora", sans-serif;--font-body: "IBM Plex Sans", sans-serif;--grid-line: rgba(15, 118, 110, .06);--gradient-a: #d7ebe8;--gradient-b: #e8eef2;--gradient-c: #dce6ef;color-scheme:light}[data-theme=escuro]{--bg: #0b1218;--bg-elevated: #121c26;--bg-muted: #182430;--bg-header: rgba(11, 18, 24, .9);--text: #e7eef4;--text-muted: #9aafbf;--border: #2a3b4a;--accent: #2dd4bf;--accent-soft: rgba(45, 212, 191, .14);--danger: #f07167;--danger-soft: rgba(240, 113, 103, .16);--warning: #f0b429;--warning-soft: rgba(240, 180, 41, .16);--ok: #3dd68c;--ok-soft: rgba(61, 214, 140, .14);--muted-status: #7d93a5;--chart-temp: #f07167;--chart-umid: #38bdf8;--chart-grid: rgba(231, 238, 244, .08);--chart-axis: #9aafbf;--shadow: 0 12px 36px rgba(0, 0, 0, .35);--grid-line: rgba(45, 212, 191, .05);--gradient-a: #0d1a22;--gradient-b: #0b1218;--gradient-c: #102028;color-scheme:dark}*{box-sizing:border-box}html,body,#root{min-height:100%}body{margin:0;color:var(--text);background:linear-gradient(145deg,var(--gradient-a) 0%,var(--gradient-b) 48%,var(--gradient-c) 100%),repeating-linear-gradient(0deg,transparent,transparent 23px,var(--grid-line) 24px),repeating-linear-gradient(90deg,transparent,transparent 23px,var(--grid-line) 24px);background-attachment:fixed;font-family:var(--font-body);transition:background .2s ease,color .2s ease}button,input,select,textarea{font:inherit;color:inherit}h1,h2,h3{font-family:var(--font-display);font-weight:650;letter-spacing:-.02em;margin:0}p{margin:0}.appShell{min-height:100vh}.appHeader{position:sticky;top:0;z-index:50;-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);background:var(--bg-header);border-bottom:1px solid var(--border);min-height:var(--header-height);transition:background .2s ease,border-color .2s ease}.headerInner{align-items:center;display:grid;gap:16px;grid-template-columns:minmax(200px,300px) 1fr auto;padding:12px 28px;width:100%}.brandBlock{display:grid;gap:2px;animation:fadeSlide .42s ease both}.brandMark{color:var(--accent);font-family:var(--font-display);font-size:1.35rem;font-weight:700;letter-spacing:-.03em;line-height:1.15}.brandSub{color:var(--text-muted);font-size:.82rem}.mainNav{align-items:center;display:flex;gap:6px;overflow-x:auto;scrollbar-width:none}.mainNav::-webkit-scrollbar{display:none}.navItem{background:transparent;border:0;border-radius:999px;color:var(--text-muted);cursor:pointer;font-weight:600;padding:10px 14px;position:relative;white-space:nowrap;transition:color .18s ease,background .18s ease}.navItem:hover{background:var(--accent-soft);color:var(--text)}.navItem.active{background:var(--accent-soft);color:var(--accent)}.navItem.active:after{background:var(--accent);border-radius:99px;bottom:4px;content:"";height:3px;left:18px;position:absolute;right:18px;transform-origin:center;animation:underlineIn .22s ease both}.headerActions{align-items:center;display:flex;gap:10px}.alertBadge{align-items:center;background:var(--danger-soft);border:1px solid transparent;border-radius:999px;color:var(--danger);display:inline-flex;font-size:.82rem;font-weight:700;gap:6px;padding:8px 12px}.alertBadge.idle{background:var(--ok-soft);color:var(--ok)}.themeToggle{align-items:center;background:var(--bg-elevated);border:1px solid var(--border);border-radius:999px;cursor:pointer;display:inline-flex;gap:8px;font-weight:600;min-height:40px;padding:0 14px;transition:border-color .18s ease,transform .16s ease}.themeToggle:hover{border-color:var(--accent);transform:translateY(-1px)}.appContent{width:100%;padding:20px 28px 32px}.banner,.bannerSuccess{border-radius:var(--radius);margin-bottom:16px;padding:12px 16px}.banner{background:var(--danger-soft);border:1px solid color-mix(in srgb,var(--danger) 35%,transparent);color:var(--danger)}.bannerSuccess{background:var(--ok-soft);border:1px solid color-mix(in srgb,var(--ok) 35%,transparent);color:var(--ok)}@keyframes fadeSlide{0%{opacity:0;transform:translateY(-6px)}to{opacity:1;transform:translateY(0)}}@keyframes underlineIn{0%{transform:scaleX(.4);opacity:0}to{transform:scaleX(1);opacity:1}}@keyframes railIn{0%{opacity:0;transform:translate(-8px)}to{opacity:1;transform:translate(0)}}@media(max-width:960px){.headerInner{grid-template-columns:1fr;gap:10px}.headerActions{justify-content:space-between}}@media(max-width:640px){.appContent{padding:16px}.brandMark{font-size:1.15rem}}.monitorLayout{display:grid;gap:20px;grid-template-columns:minmax(280px,340px) minmax(0,1fr);width:100%}.sensorRail{display:grid;gap:10px;align-content:start;animation:railIn .38s ease both}.legend{display:flex;flex-wrap:wrap;gap:8px}.leg{border-radius:999px;font-size:.75rem;font-weight:700;padding:5px 10px}.leg.ok{background:var(--ok-soft);color:var(--ok)}.leg.warning{background:var(--warning-soft);color:var(--warning)}.leg.danger{background:var(--danger-soft);color:var(--danger)}.leg.muted{background:var(--bg-muted);color:var(--muted-status)}.sensorCard{background:var(--bg-elevated);border:1px solid var(--border);border-left:4px solid var(--muted-status);border-radius:var(--radius);box-shadow:var(--shadow);cursor:pointer;display:grid;gap:8px;padding:14px;text-align:left;transition:transform .16s ease,border-color .16s ease,box-shadow .16s ease}.sensorCard:hover{transform:translateY(-2px)}.sensorCard.selected{border-color:var(--accent);box-shadow:0 0 0 2px var(--accent-soft),var(--shadow)}.sensorCard.ok{border-left-color:var(--ok)}.sensorCard.warning{border-left-color:var(--warning)}.sensorCard.danger{border-left-color:var(--danger)}.sensorCard.muted{border-left-color:var(--muted-status)}.sensorCard strong{font-family:var(--font-display);font-size:1rem}.sensorCard small{color:var(--text-muted)}.metrics{display:grid;gap:8px;grid-template-columns:1fr 1fr}.metrics span{background:var(--bg-muted);border-radius:8px;font-weight:700;padding:8px}.detailColumn{display:grid;gap:20px;min-width:0}.panel{background:var(--bg-elevated);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);padding:18px}.panelHeader{align-items:flex-start;display:flex;gap:16px;justify-content:space-between;margin-bottom:16px}.panelHeader h2{font-size:1.15rem;margin-bottom:4px}.panelHeader p,.panelHeader small{color:var(--text-muted)}.panelActions{align-items:end;display:flex;flex-wrap:wrap;gap:10px}.chartFilter{color:var(--text-muted);display:grid;font-size:.75rem;font-weight:700;gap:4px}.chip{background:var(--bg-muted);border-radius:8px;font-weight:700;padding:8px 10px}.chartPanel{min-height:0}.chartWrap{cursor:grab;height:min(62vh,560px);min-height:420px;min-width:0;width:100%;-webkit-user-select:none;user-select:none}.chartWrap:active{cursor:grabbing}.chartEmpty{align-items:center;border:1px dashed var(--border);border-radius:var(--radius);color:var(--text-muted);display:grid;gap:6px;height:100%;justify-items:center;place-content:center;text-align:center}.chartEmpty strong{color:var(--text);font-family:var(--font-display)}.pageStack{display:grid;gap:20px}.alertList{display:grid;gap:8px}.alertRow{align-items:center;background:var(--bg-muted);border:1px solid transparent;border-radius:10px;display:grid;gap:12px;grid-template-columns:1.3fr 1fr .7fr 1fr .8fr;padding:12px 14px}.alertRow.wide{grid-template-columns:1.1fr 1.2fr .6fr 1fr 1.1fr auto}.alertRow.active{background:var(--warning-soft);border-color:color-mix(in srgb,var(--warning) 30%,transparent)}.alertRow strong{text-transform:capitalize}.alertRow small,.alertRow span{color:var(--text-muted)}.inlineField{color:var(--text-muted);display:grid;font-size:.8rem;font-weight:700;gap:6px}.configForm{align-items:end;display:grid;gap:12px;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));margin-bottom:16px}.configForm label,.inlineField{display:grid;gap:6px}.configForm label{color:var(--text-muted);font-size:.8rem;font-weight:700}input,select,textarea{background:var(--bg);border:1px solid var(--border);border-radius:8px;min-height:40px;padding:8px 12px;transition:border-color .16s ease}input:focus,select:focus,textarea:focus{border-color:var(--accent);outline:none}.btn,button.btn,.configForm button,.alertRow button{background:var(--accent);border:1px solid var(--accent);border-radius:8px;color:#fff;cursor:pointer;font-weight:700;min-height:40px;padding:8px 14px;transition:filter .16s ease,transform .16s ease}[data-theme=escuro] .btn,[data-theme=escuro] .configForm button,[data-theme=escuro] .alertRow button{color:#06201c}.btn:hover,.configForm button:hover,.alertRow button:hover{filter:brightness(1.05);transform:translateY(-1px)}.btnSecondary{background:transparent;border:1px solid var(--border);border-radius:8px;color:var(--text);cursor:pointer;font-weight:700;min-height:40px;padding:8px 14px}.dangerBtn{background:var(--danger-soft);border:1px solid color-mix(in srgb,var(--danger) 35%,transparent);border-radius:8px;color:var(--danger);cursor:pointer;font-weight:700;min-height:36px;padding:8px 12px}button:disabled{cursor:wait;opacity:.65;transform:none}.tableList{display:grid;gap:8px}.tableRow{align-items:center;border-top:1px solid var(--border);display:grid;gap:12px;grid-template-columns:1.2fr 2fr auto;padding:12px 0}.tableRow.actions{grid-template-columns:1.2fr 2fr auto}.rowActions{display:flex;flex-wrap:wrap;gap:8px;justify-content:flex-end}.tableRow span{color:var(--text-muted)}.empty{background:var(--bg-muted);border:1px dashed var(--border);border-radius:var(--radius);color:var(--text-muted);padding:18px}.reportPreview{background:#0b1220;border-radius:var(--radius);color:#d7e3f4;font-size:.78rem;max-height:480px;overflow:auto;padding:16px;white-space:pre-wrap}[data-theme=claro] .reportPreview{background:#102028}@media(max-width:960px){.monitorLayout{grid-template-columns:1fr}.alertRow,.alertRow.wide,.tableRow{grid-template-columns:1fr 1fr}.chartWrap{height:380px;min-height:320px}}@media(max-width:640px){.configForm{grid-template-columns:1fr}.panelHeader{flex-direction:column}}
