:root{color:#172026;background:#edf1f5;font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;font-synthesis:none;text-rendering:optimizeLegibility}*{box-sizing:border-box}body{margin:0;min-width:320px;min-height:100vh}button,input,select,textarea{font:inherit}button{border:0;border-radius:8px;cursor:pointer;font-weight:700}button:disabled{cursor:not-allowed;opacity:.7}.auth-layout,.page-shell{min-height:100vh;padding:32px}.auth-layout{align-items:center;background:linear-gradient(135deg,rgba(15,118,110,.14),transparent 34%),linear-gradient(315deg,rgba(14,116,144,.14),transparent 30%),#edf1f5;display:flex;justify-content:center}.login-panel,.panel,.dashboard-header{background:#fff;border:1px solid #d8e0e7;border-radius:8px;box-shadow:0 18px 45px #17202614}.login-panel{max-width:420px;padding:32px;width:100%}.brand-mark{align-items:center;background:#0f766e;border-radius:8px;color:#fff;display:flex;font-weight:800;height:48px;justify-content:center;margin-bottom:20px;width:48px}h1,h2,p{margin-top:0}h1{font-size:30px;line-height:1.15;margin-bottom:8px}h2{font-size:20px;margin-bottom:22px}.muted{color:#607080;margin-bottom:28px}.login-form{display:grid;gap:18px}label{color:#344250;display:grid;font-size:14px;font-weight:700;gap:8px}input{border:1px solid #bec9d4;border-radius:8px;color:#172026;outline:0;padding:12px 14px;width:100%}textarea{border:1px solid #bec9d4;border-radius:8px;color:#172026;min-height:88px;outline:0;padding:12px 14px;resize:vertical;width:100%}select{background:#fff;border:1px solid #bec9d4;border-radius:8px;color:#172026;outline:0;padding:10px 12px;width:100%}input:focus,select:focus,textarea:focus{border-color:#0f766e;box-shadow:0 0 0 3px #0f766e26}.compact-form h3{font-size:16px;margin:0}.login-form button{background:#0f766e;color:#fff;padding:13px 16px}.error-message{background:#fff1f2;border:1px solid #fecdd3;border-radius:8px;color:#be123c;margin:0;padding:10px 12px}.page-shell{margin:0 auto;max-width:1180px}.dashboard-header{align-items:center;display:flex;gap:24px;justify-content:space-between;margin-bottom:20px;padding:24px}.eyebrow{color:#0f766e;font-size:13px;font-weight:800;letter-spacing:0;margin-bottom:6px;text-transform:uppercase}.secondary-button{background:#172026;color:#fff;min-width:96px;padding:11px 16px}.primary-button{background:#0f766e;color:#fff;padding:11px 16px}.danger-button{background:#be123c;color:#fff;padding:11px 16px}.compact-button{min-width:auto;padding:9px 12px}.app-nav{display:flex;flex-wrap:wrap;gap:10px;margin-bottom:20px}.app-nav a{background:#fff;border:1px solid #d8e0e7;border-radius:8px;color:#344250;font-weight:800;padding:10px 14px;text-decoration:none}.app-nav a.active{background:#0f766e;border-color:#0f766e;color:#fff}.panel{padding:24px}.panel-heading{align-items:flex-start;display:flex;gap:16px;justify-content:space-between;margin-bottom:18px}.panel-heading h2{margin-bottom:0}.management-grid{display:grid;gap:20px;grid-template-columns:minmax(280px,.8fr) minmax(320px,1.2fr)}.compact-form{border-bottom:1px solid #e5ebf0;display:grid;gap:14px;margin-bottom:18px;padding-bottom:18px}.success-message{background:#ecfdf5;border:1px solid #a7f3d0;border-radius:8px;color:#047857;margin:0 0 14px;padding:10px 12px}.list-stack,.permission-list{display:grid;gap:10px}.row-button{background:#f8fafc;border:1px solid #d8e0e7;color:#172026;padding:12px;text-align:left;width:100%}.row-button.active{border-color:#0f766e;box-shadow:0 0 0 3px #0f766e1f}.row-button span,.checkbox-row span{display:grid;gap:3px}small{color:#607080;font-weight:600}.button-row{display:flex;flex-wrap:wrap;gap:10px;justify-content:flex-end}.checkbox-row{align-items:flex-start;background:#f8fafc;border:1px solid #d8e0e7;border-radius:8px;display:flex;gap:12px;padding:12px}.checkbox-row input{margin-top:3px;width:auto}.permission-groups{display:grid;gap:18px;margin-bottom:18px}.permission-group{border-top:1px solid #e5ebf0;padding-top:16px}.permission-group:first-child{border-top:0;padding-top:0}.permission-group h3{font-size:16px;margin:0 0 10px}.checkbox-row code{color:#344250;font-size:12px;font-weight:800}.permission-summary{display:grid;gap:12px}.permission-summary section{display:grid;gap:4px}.permission-summary span{color:#607080;font-size:14px;font-weight:600}.unauthorized-panel{text-align:left}.table-wrap{overflow-x:auto}.table-actions{justify-content:flex-start;min-width:320px}.events-actions{min-width:210px}.remote-controls-actions{min-width:520px}.users-toolbar{align-items:end;display:grid;gap:12px;grid-template-columns:minmax(220px,1.4fr) repeat(3,minmax(150px,1fr));margin-bottom:14px}.buildings-toolbar{grid-template-columns:minmax(220px,1.4fr) minmax(150px,.6fr)}.houses-toolbar{grid-template-columns:minmax(220px,1.4fr) repeat(3,minmax(150px,1fr))}.doors-toolbar,.devices-toolbar,.device-doors-toolbar,.events-toolbar{grid-template-columns:minmax(220px,1.4fr) repeat(4,minmax(130px,1fr))}.remote-controls-toolbar{grid-template-columns:minmax(220px,1.4fr) repeat(5,minmax(130px,1fr))}.results-summary,.pagination-row{align-items:center;display:flex;flex-wrap:wrap;gap:10px;justify-content:space-between}.results-summary{color:#607080;font-size:14px;font-weight:800;margin-bottom:12px}.pagination-row{border-top:1px solid #e5ebf0;justify-content:flex-end;margin-top:16px;padding-top:16px}.empty-state{margin-bottom:12px}.modal-backdrop{align-items:center;background:#1720266b;display:flex;top:0;right:0;bottom:0;left:0;justify-content:center;padding:20px;position:fixed;z-index:20}.modal-panel{background:#fff;border:1px solid #d8e0e7;border-radius:8px;box-shadow:0 24px 70px #17202633;max-height:calc(100vh - 40px);max-width:560px;overflow-y:auto;padding:24px;width:min(560px,100%)}.detail-modal{max-width:760px;width:min(760px,100%)}.detail-sections{display:grid;gap:18px}.detail-section{border-top:1px solid #e5ebf0;padding-top:16px}.detail-section:first-child{border-top:0;padding-top:0}.detail-section h3{font-size:16px;margin:0 0 12px}.detail-grid{display:grid;gap:12px;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));margin:0}.detail-grid div{border:1px solid #e5ebf0;border-radius:8px;display:grid;gap:4px;padding:12px}.payload-block{border:1px solid #e5ebf0;border-radius:8px;display:grid;gap:8px;margin-top:12px;padding:12px}.payload-block pre{background:#f8fafc;border-radius:8px;font-size:13px;margin:0;max-height:280px;overflow:auto;padding:12px;white-space:pre-wrap}.tabs{border-bottom:1px solid #d8e0e7;display:flex;flex-wrap:wrap;gap:8px;margin-bottom:20px;padding-bottom:12px}.tabs button{background:#f8fafc;border:1px solid #d8e0e7;color:#344250;padding:9px 12px}.tabs button.active{background:#0f766e;border-color:#0f766e;color:#fff}.filter-bar{align-items:end;display:grid;gap:12px;grid-template-columns:repeat(auto-fit,minmax(130px,1fr));margin-bottom:18px}.status-pill{border-radius:999px;display:inline-block;font-size:12px;font-weight:800;padding:5px 8px}.status-pill.on_time{background:#ecfdf5;color:#047857}.status-pill.late,.status-pill.missed{background:#fff7ed;color:#c2410c}.status-pill.unknown_point{background:#fff1f2;color:#be123c}.status-pill.active{background:#ecfdf5;color:#047857}.status-pill.inactive{background:#f8fafc;color:#607080}.status-pill.deleted{background:#fff1f2;color:#be123c}.status-pill.blocked{background:#fff7ed;color:#c2410c}.report-summary{display:grid;gap:14px;grid-template-columns:repeat(auto-fit,minmax(160px,1fr))}.report-summary div{border:1px solid #d8e0e7;border-radius:8px;display:grid;gap:4px;padding:16px}.report-summary strong{font-size:26px}.report-summary span,.scope-note{color:#607080;font-weight:700}td small{display:block;margin-top:3px}table{border-collapse:collapse;min-width:760px;width:100%}th,td{border-top:1px solid #e5ebf0;padding:14px 12px;text-align:left;vertical-align:middle}th{color:#607080;font-size:13px;text-transform:uppercase}.profile-grid{display:grid;gap:14px;margin:0}.profile-grid div{border-top:1px solid #e5ebf0;display:grid;gap:4px;padding-top:14px}dt{color:#607080;font-size:13px;font-weight:700}dd{font-size:17px;font-weight:700;margin:0;overflow-wrap:anywhere}@media(max-width:640px){.auth-layout,.page-shell{padding:18px}.dashboard-header{align-items:stretch;flex-direction:column}.management-grid,.users-toolbar{grid-template-columns:1fr}.panel-heading{align-items:stretch;flex-direction:column}.button-row{justify-content:flex-start}}.description-cell{min-width:260px}.inline-edit-trigger{background:none;border:.5px solid transparent;border-radius:6px;cursor:text;font:inherit;padding:4px 6px;text-align:left;width:100%}.inline-edit-trigger:hover{background:#f8fafc;border-color:#cbd5e1}.inline-edit{font:inherit;padding:4px 6px;width:100%}.status-toggle{border:.5px solid transparent;border-radius:999px;cursor:pointer;font-size:12px;font-weight:800;padding:5px 10px;white-space:nowrap}.status-toggle.allowed{background:#ecfdf5;border-color:#a7f3d0;color:#047857}.status-toggle.allowed:hover:not(:disabled){background:#fff1f2;border-color:#fda4af;color:#be123c}.status-toggle.blocked{background:#fff1f2;border-color:#fda4af;color:#be123c}.status-toggle.blocked:hover:not(:disabled){background:#ecfdf5;border-color:#a7f3d0;color:#047857}.status-toggle:disabled{cursor:progress;opacity:.6}.row-menu{position:relative}.row-menu>summary{border:.5px solid #cbd5e1;border-radius:6px;cursor:pointer;font-weight:800;letter-spacing:1px;line-height:1;list-style:none;padding:6px 10px;text-align:center;width:36px}.row-menu>summary::-webkit-details-marker{display:none}.row-menu>summary:hover{background:#f8fafc}.row-menu-items{background:#f8fafc;border:.5px solid #cbd5e1;border-radius:8px;display:flex;flex-direction:column;gap:6px;margin-top:6px;padding:8px;width:160px}.calculated-value{border-bottom:1px dotted #94a3b8;color:#607080;cursor:help;font-family:ui-monospace,SFMono-Regular,Menlo,monospace}.status-toggle.pending{background:#fff7ed;border-color:#fdba74;color:#c2410c}.status-toggle.pending:hover:not(:disabled){background:#ffedd5}.low-battery-notice{align-items:center;background:#fff1f2;border:.5px solid #fda4af;border-radius:8px;color:#be123c;display:flex;gap:12px;font-size:13px;font-weight:800;margin:12px 0 0;padding:10px 14px}.low-battery-notice button{background:none;border:none;color:inherit;cursor:pointer;font:inherit;padding:0;text-decoration:underline}.row-meta{color:#607080;font-size:12px;line-height:1.5;margin-top:2px;padding-left:6px}.row-meta .mono{font-family:ui-monospace,SFMono-Regular,Menlo,monospace}.row-meta-sep{color:#94a3b8}.event-when{color:#607080;font-size:13px;font-variant-numeric:tabular-nums;white-space:nowrap;width:110px}.event-main{min-width:320px}.event-headline{align-items:baseline;display:flex;gap:8px}.result-dot{border-radius:999px;display:inline-block;flex:none;height:9px;position:relative;top:-1px;width:9px}.result-dot.ok{background:#10b981}.result-dot.bad{background:#e11d48}.result-dot.neutral{background:#cbd5e1}tr.event-failed{background:#fff5f6}.payload-row td{background:#f8fafc;padding:0 12px 12px}.payload-row pre{background:#0f172a;border-radius:8px;color:#e2e8f0;font-size:12px;line-height:1.5;margin:0;max-height:320px;overflow:auto;padding:12px 14px;white-space:pre-wrap;word-break:break-word}.filtros-extra-barra{display:flex;gap:8px;margin:10px 0 0}.ranking{display:flex;flex-direction:column;gap:14px;list-style:none;margin:16px 0 0;padding:0}.ranking li{align-items:center;display:flex;gap:14px}.ranking-texto{flex:1;min-width:0}.ranking-titulo{align-items:center;display:flex;font-size:14px;gap:8px}.ranking-barra{background:#eef2f7;border-radius:999px;height:8px;margin:5px 0 3px;overflow:hidden}.ranking-barra span{background:#0f766e;border-radius:999px;display:block;height:100%;min-width:3px}.ranking-numero{flex:none;font-size:18px;font-variant-numeric:tabular-nums;min-width:36px;text-align:right}.ranking-nota{font-size:12px;margin-top:16px}.secondary-button.is-active{background:#0f766e;border-color:#0f766e;color:#fff}.sin-usar{display:flex;flex-direction:column;gap:12px;list-style:none;margin:16px 0 0;padding:0}.sin-usar li{align-items:center;border-bottom:.5px solid #eef2f7;display:flex;gap:14px;padding-bottom:10px}.sin-usar li:last-child{border-bottom:none;padding-bottom:0}.sin-usar-tiempo{color:#607080;flex:none;font-size:13px;white-space:nowrap}.sin-usar-tiempo.nunca{color:#be123c;font-weight:800}.filtro-edificio{font-size:13px;max-width:180px;padding:5px 8px}.panel-heading .button-row{flex-wrap:wrap;justify-content:flex-end}.ver-mas{align-items:center;border-top:.5px solid #eef2f7;color:#607080;display:flex;font-size:13px;gap:12px;margin-top:14px;padding-top:10px}.ver-mas button{background:none;border:none;color:#0f766e;cursor:pointer;font:inherit;padding:0;text-decoration:underline}.checkbox-group{border:.5px solid #e2e8f0;border-radius:8px;display:flex;flex-direction:column;gap:6px;margin:0;padding:10px 12px}.checkbox-group legend{color:#607080;font-size:13px;font-weight:800;padding:0 4px}.checkbox-group .muted{font-size:12px;margin:4px 0 0}
