*{box-sizing:border-box}body{margin:0;background:#1e2229;color:#e6e6e6;font:14px system-ui,sans-serif}a{color:#8cc4ff;text-decoration:none}button{cursor:pointer}
.bar{display:flex;gap:16px;align-items:center;padding:8px 16px;background:#11151b;flex-wrap:wrap}.bar nav{display:flex;gap:10px;flex-wrap:wrap}.bar nav a.active{color:#fff;border-bottom:2px solid #4ea1ff}.spacer{flex:1}
.pill{padding:2px 10px;border-radius:12px;background:#555}.pill.ok{background:#1f7a3a}.pill.err{background:#a12b2b}
.filters{display:flex;gap:10px;align-items:end;padding:8px 16px;background:#161a20;flex-wrap:wrap}.filters label{display:flex;flex-direction:column;font-size:12px;color:#aaa;gap:2px}
.filters select,.filters input,form input,form select{padding:6px;border-radius:6px;border:1px solid #444;background:#11151b;color:#fff}.filters .custom{display:none}.filters.custom .custom{display:flex}
.grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:12px;padding:12px}.card{background:#262b33;border-radius:8px;padding:12px;min-width:0}.card.wide{grid-column:1/-1}.card h2{margin:0 0 8px;font-size:14px;color:#bbb}
.card.kpi b{display:block;font-size:30px;margin:4px 0}.card.kpi small{color:#888}
.kv div{display:flex;justify-content:space-between;padding:2px 0;border-bottom:1px solid #333}
.tbl{width:100%;border-collapse:collapse;font-size:13px}.tbl th,.tbl td{padding:5px 6px;border-bottom:1px solid #333;text-align:left;white-space:nowrap}.tbl th[data-k]{cursor:pointer}.tbl tr.bad td{color:#ffb0b0}.tbl td.num{text-align:right}
.nodata{color:#e6a100}.hidden{display:none}.legend span{margin-right:12px;font-size:12px}.legend i{display:inline-block;width:12px;height:12px;margin-right:4px;vertical-align:middle}
form{display:flex;gap:6px;flex-wrap:wrap;margin-top:8px}
.login{display:flex;min-height:100vh;align-items:center;justify-content:center}.login form{background:#262b33;padding:32px;border-radius:10px;width:320px;display:flex;flex-direction:column;gap:12px}.login input{width:100%}.err{color:#ff7b7b;min-height:1.2em;margin:0}
canvas#timeline{width:100%;background:#11151b;border-radius:6px}
a.btn{display:inline-block;padding:6px 12px;border-radius:6px;background:#2f7fd6;color:#fff}
.pre{white-space:pre-wrap;background:#11151b;padding:8px;border-radius:6px;font:12px/1.4 system-ui}.muted{color:#888;font-size:12px}

#ai-fab{position:fixed;right:18px;bottom:18px;width:52px;height:52px;border-radius:50%;border:0;background:#2f7fd6;color:#fff;font-weight:700;box-shadow:0 4px 12px #0008;z-index:50}
#ai-drawer.hidden{display:none}
#ai-drawer{position:fixed;right:18px;bottom:80px;width:380px;max-width:calc(100vw - 36px);height:520px;max-height:calc(100vh - 100px);background:#262b33;border-radius:10px;box-shadow:0 8px 24px #000a;display:flex;flex-direction:column;z-index:50}
#ai-drawer header{display:flex;gap:8px;align-items:center;padding:8px 10px;border-bottom:1px solid #333}#ai-drawer header span{flex:1;text-align:right}#ai-close{background:none;border:0;color:#aaa;font-size:18px}
#ai-log{flex:1;overflow:auto;padding:10px;display:flex;flex-direction:column;gap:8px;font-size:13px}#ai-log .msg{padding:8px 10px;border-radius:8px;max-width:95%}#ai-log .me{background:#1f3b5c;align-self:flex-end}#ai-log .bot{background:#11151b;align-self:flex-start}
#ai-log ol{margin:0;padding-left:18px}#ai-log li{margin-bottom:6px}.imp{font-size:10px;padding:1px 6px;border-radius:8px;background:#444}.imp.alto{background:#a12b2b}.imp.medio{background:#8a6200}
.ai-actions{padding:6px 10px;border-top:1px solid #333}.ai-actions button{font-size:12px}#ai-form{display:flex;gap:6px;padding:8px 10px;margin:0}#ai-form input{flex:1}

.cards-host{padding:6px}.cards-bar{display:flex;gap:8px;margin:4px 6px 8px}.cards-bar select{padding:4px;border-radius:6px;border:1px solid #444;background:#11151b;color:#fff}
.grid-stack-item-content{background:#262b33;border-radius:8px;padding:8px 10px;display:flex;flex-direction:column;overflow:hidden !important}
.card-head{display:flex;justify-content:space-between;align-items:center;font-size:13px;color:#bbb;margin-bottom:6px}.card-x{display:none;background:none;border:0;color:#aaa;font-size:16px;cursor:pointer}
#cards.editing .card-x{display:inline}#cards.editing .grid-stack-item-content{outline:1px dashed #4ea1ff;cursor:move}
.card-body{flex:1;overflow:auto;min-height:0}.card-body .big{display:block;font-size:30px;margin:2px 0}.card-body small{color:#888}.card-body textarea.note{width:100%;height:100%;background:#11151b;color:#eee;border:1px solid #333;border-radius:6px;padding:6px;resize:none}

.eq-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(96px,1fr));gap:6px;margin-top:6px}.eq{display:block;padding:6px;border-radius:6px;color:#fff;text-align:center;font-size:12px;font-weight:600;text-decoration:none}.eq small{display:block;font-weight:400;opacity:.85}
.st-on{background:#2a7}.st-off{background:#555}.st-fault{background:#c33;animation:blink 1.2s infinite}.st-manual{background:#b89a00}.st-test{background:#a5f}.st-maintenance{background:#e6a100}.st-emergency{background:#f00;animation:blink .6s infinite}
@keyframes blink{50%{opacity:.55}}.grid-filter{width:100%;padding:6px;border-radius:6px;border:1px solid #444;background:#11151b;color:#fff}
.flow-wrap{height:100%}.flow-wrap svg{width:100%;height:100%}.flow-wrap svg g.live{outline:none}.flow-wrap svg g.live.st-on{filter:drop-shadow(0 0 6px #2a7)}.flow-wrap svg g.live.st-fault{filter:drop-shadow(0 0 8px #f33)}.flow-wrap svg g.live.st-manual{filter:drop-shadow(0 0 6px #dc3)}.flow-wrap svg g.live.st-maintenance{filter:drop-shadow(0 0 6px #e6a100)}.flow-wrap svg g.live.st-emergency{filter:drop-shadow(0 0 10px #f00)}
.scene-host{position:relative;padding:0;height:calc(100vh - 150px);min-height:480px;overflow:hidden}#scene3d{position:absolute;inset:0}
#scene-panel{position:absolute;right:12px;top:12px;width:280px;max-height:calc(100% - 24px);overflow:auto;background:#262b33ee;border-radius:8px;padding:10px;font-size:13px}#scene-panel h2{margin:6px 0;font-size:13px;color:#bbb}
.scene-alarms div{padding:3px 0;border-bottom:1px solid #333;font-size:12px}.scene-tip{position:absolute;pointer-events:none;background:#11151bee;color:#fff;padding:6px 8px;border-radius:6px;font-size:12px;z-index:5}
.energy-form{display:grid;grid-template-columns:1fr 1fr;gap:6px}.energy-form label{display:flex;flex-direction:column;font-size:12px;color:#aaa}
.st-atrasada{color:#f55;font-weight:600}.st-proxima{color:#e6a100}.st-ok{color:#2a7}.st-sem_dados{color:#888}
.alert-form{display:flex;flex-wrap:wrap;gap:6px;align-items:center}.alert-form input,.alert-form select{max-width:140px}
