:root{--bg:#eef2f7;--suelo:#fbfcfe;--borde:#5fd3e8;--cris:rgba(150,205,235,.22);--txt:#1f2937;--card:#fff;--sub:#6b7280;--lab:#5b8a93;--mesa:#ffffff;--mesaL:#e3e8ef;--mesaR:#cfd6e0}
.noche{--bg:#060a16;--suelo:#0d1426;--borde:#22d3ee;--cris:rgba(34,211,238,.08);--txt:#e5e7eb;--card:#111827;--sub:#9ca3af;--lab:#22d3ee;--mesa:#1e293b;--mesaL:#172033;--mesaR:#111a2b}
*{box-sizing:border-box}html,body{margin:0;height:100%;overflow:hidden;font-family:Inter,system-ui,-apple-system,Segoe UI,sans-serif;background:var(--bg);color:var(--txt)}
#escena,#svg{position:fixed;inset:0;width:100%;height:100%;touch-action:none;cursor:grab}#svg.drag{cursor:grabbing}
.fl{fill:var(--suelo);stroke:var(--borde);stroke-width:1.2}.tint{opacity:.07}
.wall{fill:var(--cris);stroke:none}.wedge{stroke:var(--borde);stroke-width:2;fill:none}
.lab{font-weight:700;letter-spacing:3px;fill:var(--lab);opacity:.75;font-size:13px;text-transform:uppercase}
.tp{fill:var(--mesa)}.lf{fill:var(--mesaL)}.rt{fill:var(--mesaR)}
.mon .tp,.mon .lf,.mon .rt{fill:#1f2533}.mon .rt{fill:#121722}
.srv .tp{fill:#2b3240}.srv .lf{fill:#1a1f29}.srv .rt{fill:#11151c}
.silla .tp{fill:#6c7cf0}.silla .lf{fill:#5263d6}.silla .rt{fill:#4252bd}
.sofa .tp{fill:#b8a6f5}.sofa .lf{fill:#9f8be8}.sofa .rt{fill:#8a75da}
.mat .tp{fill:#5fbf8a}.mat .lf,.mat .rt{fill:#3e9a69}
.planta .h{fill:#3fbf62}.planta .h2{fill:#2e9d4d}.maceta{fill:#e5e7eb}
.screen{fill:#0b1220;stroke:var(--borde);stroke-width:1.5}.scrt{fill:#22d3ee;font-family:ui-monospace,monospace}
.sala.dim{opacity:.18;transition:opacity .3s}.sala{transition:opacity .3s}
.off{filter:url(#gris)}.off .fl{fill:#cfd4dc}.noche .off .fl{fill:#0a0f1b}.oscuro{fill:#0f172a;opacity:.28;pointer-events:none}
.parado-lab{fill:#dc2626;font-weight:800;letter-spacing:4px;font-size:15px}
.bot{cursor:pointer}.bot .cuerpo{animation:bob 2.6s ease-in-out infinite;transform-box:fill-box}
.bot .brazo{animation:tecla .35s ease-in-out infinite alternate;transform-box:fill-box;transform-origin:top}
.bot.off .cuerpo,.bot.off .brazo{animation:none}.bot.off .cuerpo{transform:translateY(2px) rotate(-4deg)}
@keyframes bob{50%{transform:translateY(-1.6px)}}@keyframes tecla{to{transform:rotate(-14deg)}}
.bot .anillo{fill:none;stroke:var(--borde);stroke-width:2.5;opacity:0}.bot:hover .anillo,.bot.sel .anillo,.bot:focus .anillo{opacity:1}
.bot:hover .cuerpo-w,.bot.sel .cuerpo-w{transform:scale(1.18);transform-box:fill-box;transform-origin:bottom}
.pill rect{fill:#fff;filter:url(#sombra)}.pill text{font-size:10.5px;font-weight:600;fill:#1f2937}.noche .pill rect{fill:#1f2937}.noche .pill text{fill:#e5e7eb}
.bot:hover .pill rect,.bot.sel .pill rect{stroke:var(--borde);stroke-width:1.5}
.bub{opacity:0;transition:opacity .35s;pointer-events:none}.bub.on,.bot:hover .bub{opacity:1}.bub rect{fill:#fff;stroke:#d1d5db;filter:url(#sombra)}.bub text{font-size:10px;fill:#374151}
.noche .bub rect{fill:#0b1220;stroke:#22d3ee}.noche .bub text{fill:#a5f3fc}
.zz{font-size:11px;fill:#64748b;animation:zz 2.5s infinite}@keyframes zz{0%{opacity:0;transform:translateY(0)}50%{opacity:1}100%{opacity:0;transform:translateY(-10px)}}
.hud{position:fixed;z-index:3}.tl{top:12px;left:12px;display:flex;flex-direction:column;gap:6px}
.marca{display:flex;align-items:center;gap:10px;background:var(--card);padding:8px 12px;border-radius:12px;box-shadow:0 4px 18px rgba(0,0,0,.1)}
.marca b{display:block;font-size:13px;letter-spacing:1px}.marca small{color:var(--sub);font-size:11px}.hex{font-size:24px;color:#8b5cf6}
.proto{background:#fde047;color:#000;font-size:10px;font-weight:800;padding:3px 7px;border-radius:6px;letter-spacing:1px}
.vivo{align-self:flex-start;background:var(--card);border-radius:999px;padding:5px 11px;font-size:11px;font-weight:600;box-shadow:0 4px 18px rgba(0,0,0,.08)}
.vivo .pt{display:inline-block;width:8px;height:8px;border-radius:50%;background:#22c55e;margin-right:4px;animation:lat 1.6s infinite}#hace{color:var(--sub);font-weight:500;margin-left:6px}
@keyframes lat{50%{opacity:.3}}
.tr{top:12px;right:12px;display:flex;gap:6px}.tr button,.zoom button{border:0;background:var(--card);color:var(--txt);border-radius:999px;padding:8px 12px;font:600 12px inherit;font-family:inherit;box-shadow:0 4px 18px rgba(0,0,0,.1);cursor:pointer}
.tr button span{margin-left:5px}.filtros{left:12px;right:12px;bottom:44px;display:flex;gap:6px;overflow-x:auto;padding-bottom:2px;scrollbar-width:none}
.filtros button{flex:none;border:0;border-radius:999px;padding:6px 12px;font:600 12px inherit;font-family:inherit;background:var(--card);color:var(--txt);box-shadow:0 2px 10px rgba(0,0,0,.08);cursor:pointer}
.filtros button i{display:inline-block;width:8px;height:8px;border-radius:50%;margin-right:5px}.filtros button.act{background:#8b5cf6;color:#fff}
.zoom{right:12px;bottom:90px;display:flex;flex-direction:column;gap:6px}.zoom button{width:38px;height:38px;padding:0;font-size:18px}
.ticker{left:0;right:0;bottom:0;background:var(--card);border-top:1px solid rgba(0,0,0,.06);padding:9px 14px;font-size:12px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}#tk-h{color:var(--sub);font-family:ui-monospace,monospace}
.panel{position:fixed;z-index:5;top:70px;right:12px;width:380px;max-height:calc(100% - 140px);overflow:auto;background:var(--card);border-radius:16px;box-shadow:0 12px 40px rgba(0,0,0,.18);padding:18px}
.panel .x{position:absolute;right:12px;top:12px;border:0;background:none;font-size:16px;cursor:pointer;color:var(--sub)}
.fh{display:flex;gap:12px;align-items:center}.fh img{width:56px;height:56px;border-radius:50%;border:3px solid #fde68a;object-fit:cover}
.fh h3{margin:0;font-size:18px}.rol{color:#d97706;font-size:12px;font-weight:600}.est{font-size:12px;color:var(--sub)}.est i{display:inline-block;width:8px;height:8px;border-radius:50%;margin-right:5px;vertical-align:middle}
.tabs{display:flex;gap:18px;border-bottom:1px solid rgba(0,0,0,.08);margin:14px 0 8px}.tabs button{border:0;background:none;padding:8px 0;font:500 13px inherit;font-family:inherit;color:var(--sub);cursor:pointer;border-bottom:2px solid transparent}.tabs button.act{color:var(--txt);border-color:#f59e0b}
.panel h5{font-size:10.5px;letter-spacing:1.5px;color:var(--sub);margin:14px 0 6px;text-transform:uppercase}.panel p,.panel li{font-size:13px;line-height:1.45}.panel ul{padding-left:18px;margin:4px 0}
.chip{display:inline-block;font-family:ui-monospace,monospace;font-size:11.5px;border:1px solid rgba(0,0,0,.15);border-radius:8px;padding:3px 8px;margin:2px 4px 2px 0}
.sd{color:var(--sub);font-style:italic}.ej{background:#fb923c;color:#000;font-size:10px;font-weight:800;padding:2px 7px;border-radius:6px;margin-left:6px;vertical-align:middle}
.item{border:1px solid rgba(0,0,0,.08);border-radius:10px;padding:9px 11px;margin:7px 0;font-size:13px}.item small{color:var(--sub)}.badge{font-size:10.5px;border-radius:6px;padding:1px 6px;background:#e0e7ff;color:#3730a3;margin-right:4px}
.item button{margin:6px 6px 0 0;border:1px solid rgba(0,0,0,.15);background:none;border-radius:8px;padding:4px 10px;font-size:12px;color:var(--txt)}
.nota{font-size:11px;color:var(--sub);margin-top:10px}
@media(max-width:700px){.tr{top:112px;flex-direction:column}.tr button{width:40px;height:40px;padding:0}.zoom{bottom:100px}.tr button span{display:none}.panel{left:0;right:0;top:auto;bottom:0;width:auto;max-height:72%;border-radius:18px 18px 0 0}.marca small{display:none}.zoom{bottom:100px}}
.fila{display:flex;gap:6px;flex-wrap:wrap}.cont{border:0;border-radius:999px;padding:5px 11px;font:700 11px inherit;font-family:inherit;background:#f59e0b;color:#fff;cursor:pointer;box-shadow:0 4px 18px rgba(0,0,0,.08)}
.cnt circle{fill:#ef4444;stroke:#fff;stroke-width:1.5}.cnt text{fill:#fff;font-size:9.5px;font-weight:800}
.tr button[data-n]:not([data-n=""])::after{content:attr(data-n);background:#ef4444;color:#fff;border-radius:999px;font-size:10px;padding:1px 6px;margin-left:5px}
.selrow{display:flex;gap:6px;margin:8px 0}.selrow select{flex:1;padding:6px;border-radius:8px;border:1px solid rgba(0,0,0,.15);background:var(--card);color:var(--txt);font-family:inherit}
button.item{display:block;width:100%;text-align:left;background:none;color:var(--txt);font-family:inherit;cursor:pointer}button.item:hover{border-color:#8b5cf6}
.orden{background:rgba(139,92,246,.08);border-radius:10px;padding:10px;margin-top:6px}.orden code{display:block;font-size:12px;white-space:pre-wrap;margin-bottom:8px}
.orden .copiar{border:0;background:#8b5cf6;color:#fff;border-radius:8px;padding:6px 12px;font:600 12px inherit;font-family:inherit;cursor:pointer;margin-right:8px}.orden small{color:var(--sub)}
.volver{border:0;background:none;color:#8b5cf6;font:600 13px inherit;font-family:inherit;cursor:pointer;padding:0;margin-bottom:6px}
.armario .tp{fill:#e5e7eb}.armario .lf{fill:#cbd5e1}.armario .rt{fill:#94a3b8}.noche .armario .tp{fill:#334155}.noche .armario .lf{fill:#1e293b}.noche .armario .rt{fill:#0f172a}
.avatar{display:inline-flex;align-items:center;justify-content:center;width:56px;height:56px;border-radius:50%;border:3px solid #fde68a;color:#fff;font-weight:800;font-size:24px;flex:none}
