.allcontrol-root{background-color:var(--color-bg);min-height:100dvh;color:var(--color-text);flex-direction:column;display:flex;overflow-x:hidden}.splash-screen{background-color:var(--color-bg);flex-direction:column;justify-content:center;align-items:center;gap:1.5rem;min-height:100dvh;display:flex}.brand-title-splash{letter-spacing:-.03em;color:var(--color-primary);font-size:2.25rem;font-weight:800}.spinner{animation:1s linear infinite spin}.spinner-large{border:3px solid var(--color-surface);border-top-color:var(--color-primary);border-radius:50%;width:36px;height:36px;animation:.8s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}.login-wrapper{background:radial-gradient(circle at 50% 15%,#f0f8fd 0%,#fff 70%);justify-content:center;align-items:center;width:100%;height:100dvh;padding:1.25rem;display:flex;overflow:hidden}.login-card{background-color:var(--color-bg);border:1px solid var(--color-border);border-radius:var(--radius-lg);width:100%;max-width:400px;box-shadow:var(--shadow-md);flex-direction:column;align-items:stretch;padding:2.25rem 1.75rem;display:flex}.login-header{text-align:center;margin-bottom:1.5rem}.brand-title{letter-spacing:.04em;color:var(--color-primary);text-transform:uppercase;margin-bottom:.35rem;font-size:2rem;font-weight:800}.login-subtitle{color:var(--color-text-secondary);font-size:.875rem;font-weight:500}.demo-badge-banner{background-color:var(--color-surface);border:1px solid var(--color-primary-light);border-radius:var(--radius-sm);color:var(--color-text);justify-content:space-between;align-items:center;margin-bottom:1rem;padding:.5rem .75rem;font-size:.8125rem;display:flex}.demo-autofill-btn{color:var(--color-primary);font-size:.8125rem;font-weight:600;text-decoration:underline}.login-error-alert{background-color:var(--color-error-bg);color:var(--color-error);border-radius:var(--radius-sm);text-align:center;border:1px solid #fecaca;margin-bottom:1.25rem;padding:.75rem 1rem;font-size:.875rem;font-weight:500}.login-form{flex-direction:column;gap:1.25rem;display:flex}.form-group{flex-direction:column;gap:.4rem;display:flex}.form-label{color:var(--color-text);font-size:.875rem;font-weight:600}.form-input{width:100%;color:var(--color-text);border:1.5px solid var(--color-border);border-radius:var(--radius-md);background-color:#fff;padding:.75rem 1rem;font-size:.95rem;transition:border-color .15s,box-shadow .15s}.form-input:focus{border-color:var(--color-primary);box-shadow:0 0 0 3px #3aa6e826}.password-input-wrapper{align-items:center;display:flex;position:relative}.password-input{padding-right:2.75rem}.toggle-password-btn{color:var(--color-text-secondary);border-radius:var(--radius-sm);justify-content:center;align-items:center;padding:.25rem;display:flex;position:absolute;right:.75rem}.toggle-password-btn:hover{color:var(--color-primary)}.btn-primary{background-color:var(--color-primary);color:#fff;border-radius:var(--radius-md);justify-content:center;align-items:center;padding:.85rem 1.25rem;font-size:1rem;font-weight:600;transition:background-color .15s,transform 50ms,box-shadow .15s;display:flex;box-shadow:0 4px 10px #3aa6e840}.btn-primary:hover:not(:disabled){background-color:var(--color-primary-hover);box-shadow:0 6px 14px #3aa6e84d}.btn-primary:active:not(:disabled){transform:translateY(1px)}.btn-primary:disabled{opacity:.65;cursor:not-allowed;box-shadow:none}.btn-loading-content{align-items:center;gap:.5rem;display:flex}.login-support{text-align:center;color:var(--color-text-secondary);margin-top:1.25rem;font-size:.8125rem;line-height:1.4}.login-footer{text-align:center;color:var(--color-text-muted);border-top:1px solid var(--color-border);margin-top:1.5rem;padding-top:1rem;font-size:.75rem}.app-container{background-color:#fafcfe;flex-direction:column;width:100%;height:100dvh;display:flex}.topbar{border-bottom:1px solid var(--color-border);z-index:20;background-color:#fff;position:sticky;top:0}.topbar-inner{justify-content:space-between;align-items:center;gap:.75rem;max-width:960px;margin:0 auto;padding:.75rem 1rem;display:flex}.brand-logo-text{letter-spacing:.04em;color:var(--color-primary);text-transform:uppercase;font-size:1.25rem;font-weight:800}.btn-text-signout{color:var(--color-text-secondary);border-radius:var(--radius-sm);align-items:center;gap:.35rem;padding:.45rem .75rem;font-size:.875rem;font-weight:600;transition:color .15s,background-color .15s;display:flex}.btn-text-signout:hover{color:var(--color-text);background-color:var(--color-surface)}.content-scrollable{-webkit-overflow-scrolling:touch;flex:1;padding:1.25rem 1rem 2rem;overflow-y:auto}.content-inner{flex-direction:column;gap:1.5rem;max-width:960px;margin:0 auto;display:flex}.section-header{justify-content:space-between;align-items:center;display:flex}.section-title{color:var(--color-text);letter-spacing:-.02em;font-size:1.4rem;font-weight:700}.section-subtitle{color:var(--color-text-secondary);margin-top:.15rem;font-size:.875rem}.btn-icon-refresh{color:var(--color-text-secondary);border-radius:var(--radius-full);border:1px solid var(--color-border);background:#fff;justify-content:center;align-items:center;padding:.5rem;transition:color .15s,border-color .15s;display:flex}.btn-icon-refresh:hover:not(:disabled){color:var(--color-primary);border-color:var(--color-primary)}.status-badge{border-radius:var(--radius-full);align-items:center;gap:.4rem;padding:.25rem .65rem;font-size:.75rem;font-weight:600;display:inline-flex}.status-badge-compact{border-radius:var(--radius-full);align-items:center;gap:.35rem;padding:.2rem .55rem;font-size:.75rem;font-weight:600;display:inline-flex}.status-dot{border-radius:50%;width:7px;height:7px}.status-online{background-color:var(--color-online-bg);color:#065f46}.status-online .status-dot{background-color:var(--color-online)}.status-offline{background-color:var(--color-offline-bg);color:#475569}.status-offline .status-dot{background-color:var(--color-offline)}.placas-list{flex-direction:column;gap:.85rem;display:flex}.placa-card{border:1.5px solid var(--color-border);border-radius:var(--radius-lg);box-shadow:var(--shadow-sm);text-align:left;background-color:#fff;justify-content:space-between;align-items:center;padding:1.15rem 1.25rem;transition:transform .1s,border-color .15s,box-shadow .15s;display:flex}.placa-card:hover{border-color:var(--color-primary-light);box-shadow:var(--shadow-md);transform:translateY(-1px)}.placa-card:active{transform:translateY(0)}.placa-card-info{flex-direction:column;flex:1;gap:.35rem;display:flex}.placa-card-title-row{flex-wrap:wrap;align-items:center;gap:.75rem;display:flex}.placa-card-nombre{color:var(--color-text);font-size:1.1rem;font-weight:600}.placa-card-lugar{color:var(--color-text-secondary);font-size:.85rem}.placa-card-arrow{color:var(--color-text-muted);margin-left:.5rem}.loading-state{color:var(--color-text-secondary);flex-direction:column;justify-content:center;align-items:center;gap:1rem;padding:3rem 1rem;font-size:.95rem;display:flex}.empty-state-card{border:1px dashed var(--color-border);border-radius:var(--radius-lg);text-align:center;background-color:#fff;flex-direction:column;align-items:center;gap:.75rem;padding:3rem 1.5rem;display:flex}.empty-state-icon{color:var(--color-text-muted)}.empty-state-text{color:var(--color-text);font-size:1.05rem;font-weight:600}.empty-state-subtext{color:var(--color-text-secondary);max-width:320px;font-size:.875rem}.error-card{background-color:var(--color-error-bg);border-radius:var(--radius-md);text-align:center;border:1px solid #fecaca;flex-direction:column;align-items:center;gap:.75rem;padding:1.5rem;display:flex}.error-card-text{color:var(--color-error);font-size:.95rem;font-weight:500}.btn-secondary{color:var(--color-text);border:1px solid var(--color-border);border-radius:var(--radius-md);background-color:#fff;padding:.6rem 1.15rem;font-size:.875rem;font-weight:600;transition:border-color .15s,background-color .15s}.btn-secondary:hover{border-color:var(--color-primary);background-color:var(--color-surface)}.header-left{align-items:center;gap:.75rem;min-width:0;display:flex}.btn-back{border-radius:var(--radius-full);color:var(--color-text);background-color:var(--color-surface);flex-shrink:0;justify-content:center;align-items:center;padding:.5rem;transition:background-color .15s,color .15s;display:flex}.btn-back:hover{background-color:var(--color-surface-hover);color:var(--color-primary)}.header-titles{flex-direction:column;min-width:0;display:flex}.header-placa-name{color:var(--color-text);white-space:nowrap;text-overflow:ellipsis;font-size:1.1rem;font-weight:700;overflow:hidden}.header-actions{flex-shrink:0;align-items:center;gap:.5rem;display:flex}.btn-apagar-todo{background-color:var(--color-surface);color:var(--color-text);border:1.5px solid var(--color-border);border-radius:var(--radius-md);align-items:center;gap:.4rem;padding:.5rem .85rem;font-size:.85rem;font-weight:600;transition:background-color .15s,border-color .15s,color .15s;display:inline-flex}.btn-apagar-todo:hover:not(:disabled){color:#dc2626;background-color:#fef2f2;border-color:#f87171}.btn-apagar-todo:disabled{opacity:.45;cursor:not-allowed}.demo-placa-banner{background-color:var(--color-surface);border:1px solid var(--color-primary-light);border-radius:var(--radius-md);color:var(--color-text);justify-content:space-between;align-items:center;padding:.6rem .85rem;font-size:.8125rem;display:flex}.demo-toggle-online-btn{color:var(--color-primary);border-radius:var(--radius-sm);border:1px solid var(--color-border);background:#fff;align-items:center;gap:.35rem;padding:.3rem .65rem;font-size:.78rem;font-weight:600;display:inline-flex}.demo-toggle-online-btn:hover{background:var(--color-surface)}.offline-banner{border-radius:var(--radius-md);background-color:#fffbeb;border:1.5px solid #fde68a;align-items:center;gap:.85rem;padding:.85rem 1rem;display:flex}.offline-banner-icon{color:#d97706;flex-shrink:0}.offline-banner-title{color:#92400e;font-size:.95rem;font-weight:700}.offline-banner-desc{color:#b45309;margin-top:.1rem;font-size:.8125rem}.habitaciones-container{flex-direction:column;gap:1.5rem;display:flex}.habitacion-section{flex-direction:column;gap:.75rem;display:flex}.habitacion-title{color:var(--color-text);letter-spacing:-.01em;padding-left:.2rem;font-size:1.05rem;font-weight:700}.reles-grid{grid-template-columns:1fr;gap:.85rem;display:grid}@media (width>=540px){.reles-grid{grid-template-columns:repeat(2,1fr)}}@media (width>=860px){.reles-grid{grid-template-columns:repeat(3,1fr)}}.rele-card{border-radius:var(--radius-lg);text-align:left;width:100%;min-height:110px;box-shadow:var(--shadow-sm);-webkit-user-select:none;user-select:none;flex-direction:column;justify-content:space-between;padding:1.15rem;transition:all .2s cubic-bezier(.16,1,.3,1);display:flex}.rele-card:active:not(:disabled){transform:scale(.985)}.rele-card-on{background-color:var(--color-surface);border:2px solid var(--color-primary);box-shadow:0 4px 14px #3aa6e829}.rele-card-on:hover:not(:disabled){background-color:var(--color-surface-hover);box-shadow:0 6px 18px #3aa6e838}.rele-card-off{border:1.5px solid var(--color-border);background-color:#fff}.rele-card-off:hover:not(:disabled){border-color:var(--color-border-hover);background-color:#f8fbfe}.rele-card-unknown{opacity:.6}.rele-card-disabled{opacity:.55;cursor:not-allowed;pointer-events:none}.rele-top-row{justify-content:space-between;align-items:center;width:100%;margin-bottom:.75rem;display:flex}.rele-icon-circle{border-radius:var(--radius-full);justify-content:center;align-items:center;width:44px;height:44px;transition:background-color .2s,color .2s;display:flex}.icon-on{color:var(--color-primary);background-color:#fff;box-shadow:0 2px 8px #3aa6e833}.icon-off{background-color:var(--color-surface);color:var(--color-text-secondary)}.lightbulb-icon{transition:transform .2s}.fill-icon{fill:var(--color-primary);transform:scale(1.05)}.switch-track{border-radius:var(--radius-full);align-items:center;width:46px;height:26px;padding:3px;transition:background-color .2s;display:flex}.switch-track-on{background-color:var(--color-primary)}.switch-track-off{background-color:#cbd5e1}.switch-thumb{background-color:#fff;border-radius:50%;width:20px;height:20px;transition:transform .2s cubic-bezier(.16,1,.3,1);box-shadow:0 1px 3px #0003}.switch-thumb-on{transform:translate(20px)}.switch-thumb-off{transform:translate(0)}.rele-info{flex-direction:column;gap:.2rem;display:flex}.rele-name{color:var(--color-text);font-size:.95rem;font-weight:600;line-height:1.3}.rele-state-label{color:var(--color-text-secondary);font-size:.8rem;font-weight:500}.toast-container{z-index:100;border-radius:var(--radius-md);align-items:center;gap:.65rem;max-width:90vw;padding:.75rem 1rem;font-size:.875rem;font-weight:500;animation:.25s cubic-bezier(.16,1,.3,1) toast-slide-up;display:flex;position:fixed;bottom:1.5rem;left:50%;transform:translate(-50%);box-shadow:0 8px 24px #12324a26}@keyframes toast-slide-up{0%{opacity:0;transform:translate(-50%,15px)}to{opacity:1;transform:translate(-50%)}}.toast-error{color:#991b1b;background-color:#fef2f2;border:1px solid #fecaca}.toast-success{color:#065f46;background-color:#ecfdf5;border:1px solid #a7f3d0}.toast-info{background-color:var(--color-surface);color:var(--color-text);border:1px solid var(--color-border)}.toast-icon{flex-shrink:0}.toast-text{flex:1}.toast-close{color:inherit;opacity:.65;padding:0 .25rem;font-size:1.25rem;line-height:1}.toast-close:hover{opacity:1}:root{--color-bg:#fff;--color-surface:#eaf6fd;--color-surface-hover:#ddf0fb;--color-primary:#3aa6e8;--color-primary-hover:#2993d4;--color-primary-light:#7cc8f2;--color-text:#12324a;--color-text-secondary:#5b7a90;--color-text-muted:#8aa4b6;--color-border:#d3e8f5;--color-border-hover:#b4dbf2;--color-online:#10b981;--color-online-bg:#ecfdf5;--color-offline:#94a3b8;--color-offline-bg:#f1f5f9;--color-error:#ef4444;--color-error-bg:#fef2f2;--radius-sm:10px;--radius-md:14px;--radius-lg:18px;--radius-full:9999px;--shadow-sm:0 2px 6px #12324a0a;--shadow-md:0 4px 14px #3aa6e814;--shadow-lg:0 8px 24px #3aa6e81f;--shadow-active:0 6px 18px #3aa6e833;--font-family:"Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif}*{box-sizing:border-box;-webkit-tap-highlight-color:transparent;margin:0;padding:0}html,body{background-color:var(--color-bg);width:100%;height:100%;color:var(--color-text);font-family:var(--font-family);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-size:16px;line-height:1.5;overflow-x:hidden}#root{flex-direction:column;min-height:100%;display:flex}button{cursor:pointer;background:0 0;border:none;outline:none;font-family:inherit}input{outline:none;font-family:inherit;font-size:1rem}::-webkit-scrollbar{width:6px;height:6px}::-webkit-scrollbar-track{background:0 0}::-webkit-scrollbar-thumb{background:var(--color-border);border-radius:var(--radius-full)}::-webkit-scrollbar-thumb:hover{background:var(--color-primary-light)}
