@import url('https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700;800;900&display=swap');
:root{--bg:#07111d;--panel:#0d1b2a;--panel2:#102235;--line:#21354a;--text:#eef4f8;--muted:#93a4b7;--primary:#0f766e;--accent:#22c55e;--danger:#dc2626;--warning:#f59e0b;--blue:#2563eb;--radius:16px;--sidebar:250px}
*{box-sizing:border-box}body{margin:0;font-family:Inter,Segoe UI,Arial,sans-serif;background:#eef2f6;color:#172033}a{text-decoration:none;color:inherit}button,input,select,textarea{font:inherit}.hidden{display:none!important}
.auth-page{min-height:100vh;background:radial-gradient(circle at 20% 10%,#153858 0,#07111d 42%,#030912 100%);display:grid;place-items:center;padding:24px}.auth-card{width:min(440px,100%);background:#fff;border-radius:22px;padding:34px;box-shadow:0 24px 70px #0008}.brand{display:flex;gap:14px;align-items:center}.brand-mark{width:46px;height:46px;border-radius:14px;background:linear-gradient(145deg,#e11d48,#b91c1c);display:grid;place-items:center;color:#fff;font-size:23px}.auth-card h1{margin:22px 0 6px;font-size:26px}.auth-card p{color:#64748b;margin-top:0}.field{margin:16px 0}.field label{display:block;font-size:13px;font-weight:700;margin-bottom:7px}.field input,.field select,.field textarea{width:100%;border:1px solid #d7dee7;border-radius:10px;padding:12px 13px;background:#fff}.btn{border:0;border-radius:10px;padding:11px 16px;font-weight:700;cursor:pointer}.btn-primary{background:#0f766e;color:#fff}.btn-danger{background:#b91c1c;color:#fff}.btn-soft{background:#e8eef5;color:#274056}.btn-block{width:100%}.auth-links{display:flex;justify-content:space-between;margin-top:16px;font-size:13px;color:#0f766e}.msg{padding:10px 12px;border-radius:9px;font-size:13px;margin:12px 0}.msg.err{background:#fee2e2;color:#991b1b}.msg.ok{background:#dcfce7;color:#166534}
.app{display:grid;grid-template-columns:var(--sidebar) 1fr;min-height:100vh}.sidebar{background:linear-gradient(180deg,#07111d,#0a1724);color:#dce8f3;padding:18px 14px;position:fixed;width:var(--sidebar);height:100vh;overflow:auto}.sidebar .brand{padding:6px 8px 20px;border-bottom:1px solid #1c2d3f}.sidebar .brand strong{font-size:14px}.sidebar nav{margin-top:18px}.nav-title{font-size:10px;letter-spacing:.14em;color:#647b91;padding:15px 12px 6px}.nav-item{display:flex;align-items:center;gap:11px;padding:11px 12px;border-radius:10px;margin:3px 0;color:#c9d8e6;font-size:13px}.nav-item:hover,.nav-item.active{background:#16293b;color:#fff}.nav-item.active{box-shadow:inset 3px 0 #22c55e}.sidebar-foot{position:absolute;left:14px;right:14px;bottom:16px;background:#102235;border:1px solid #20364b;padding:12px;border-radius:12px;font-size:12px}.main{grid-column:2;padding:0 24px 30px}.topbar{height:72px;display:flex;align-items:center;justify-content:space-between;background:#fff;margin:0 -24px 22px;padding:0 24px;border-bottom:1px solid #dce4ec;position:sticky;top:0;z-index:20}.building-select{min-width:270px;border:1px solid #d5dee8;border-radius:10px;padding:10px 12px;background:#fff}.userbox{text-align:right;font-size:12px}.userbox strong{display:block}.page-head{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:18px}.page-head h1{font-size:24px;margin:0 0 5px}.page-head p{margin:0;color:#64748b;font-size:13px}.grid{display:grid;gap:16px}.kpis{grid-template-columns:repeat(6,minmax(130px,1fr))}.card{background:#fff;border:1px solid #dfe6ed;border-radius:var(--radius);padding:18px;box-shadow:0 8px 30px #1720330b}.kpi .label{font-size:12px;color:#64748b}.kpi .value{font-size:27px;font-weight:800;margin-top:8px}.kpi .sub{font-size:11px;color:#94a3b8;margin-top:4px}.dashboard-main{grid-template-columns:1.6fr 1fr}.emergency-card{background:linear-gradient(135deg,#7f1d1d,#b91c1c);color:#fff;border:none}.emergency-card.none{background:linear-gradient(135deg,#064e3b,#0f766e)}.emergency-title{display:flex;justify-content:space-between;align-items:center}.status-pill{font-size:11px;padding:5px 9px;border-radius:999px;background:#ffffff22}.floor-list{display:grid;grid-template-columns:repeat(6,1fr);gap:9px}.floor-chip{border:1px solid #dce5ee;border-radius:10px;padding:11px;text-align:center;background:#f8fafc}.floor-chip strong{display:block;font-size:18px}.table-wrap{overflow:auto}.data-table{width:100%;border-collapse:collapse;font-size:12px}.data-table th{background:#f4f7fa;color:#526477;text-align:left;padding:11px;border-bottom:1px solid #dae3eb;white-space:nowrap}.data-table td{padding:11px;border-bottom:1px solid #edf1f5;white-space:nowrap}.badge{padding:4px 8px;border-radius:999px;font-size:10px;font-weight:700}.b-ok{background:#dcfce7;color:#166534}.b-warn{background:#fef3c7;color:#92400e}.b-danger{background:#fee2e2;color:#991b1b}.b-info{background:#dbeafe;color:#1e40af}.toolbar{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.toolbar input,.toolbar select{border:1px solid #d8e1ea;border-radius:9px;padding:9px 10px;background:#fff}.modal{position:fixed;inset:0;background:#07111dbb;display:grid;place-items:center;z-index:50;padding:20px}.modal-box{background:#fff;border-radius:18px;width:min(680px,100%);max-height:90vh;overflow:auto;padding:22px}.modal-head{display:flex;justify-content:space-between;align-items:center}.modal-head h2{margin:0}.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px}.form-grid .full{grid-column:1/-1}.modal-actions{display:flex;justify-content:flex-end;gap:9px;margin-top:18px}.alert-strip{padding:13px 16px;border-radius:12px;background:#fff7ed;border:1px solid #fed7aa;color:#9a3412;font-size:13px}.person-state{display:flex;gap:8px;align-items:center}.dot{width:9px;height:9px;border-radius:50%}.dot.red{background:#ef4444}.dot.green{background:#22c55e}.dot.blue{background:#3b82f6}.dot.gray{background:#94a3b8}.dot.orange{background:#f59e0b}.two-col{grid-template-columns:1fr 1fr}.plan-placeholder{height:280px;border:2px dashed #cbd5e1;border-radius:14px;display:grid;place-items:center;background:#f8fafc;color:#64748b;text-align:center;padding:20px}.section-title{font-size:15px;margin:0 0 14px}.muted{color:#64748b}.small{font-size:12px}
@media(max-width:1180px){.kpis{grid-template-columns:repeat(3,1fr)}.dashboard-main{grid-template-columns:1fr}.floor-list{grid-template-columns:repeat(4,1fr)}}@media(max-width:800px){:root{--sidebar:0px}.sidebar{display:none}.app{display:block}.main{padding:0 14px 24px}.topbar{margin:0 -14px 18px;padding:0 14px}.building-select{min-width:160px;max-width:48vw}.kpis{grid-template-columns:repeat(2,1fr)}.form-grid,.two-col{grid-template-columns:1fr}.floor-list{grid-template-columns:repeat(3,1fr)}}

/* RC2.2 · Portal móvil del residente */
.resident-page{margin:0;min-height:100vh;background:#07111d;color:#172033}.resident-shell{width:min(520px,100%);min-height:100vh;margin:0 auto;background:#f1f5f9;box-shadow:0 0 60px #0008}.resident-center-card{min-height:100vh;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;padding:32px;background:#07111d;color:#fff}.resident-center-card p{color:#a8b6c7}.resident-spinner{width:46px;height:46px;border:4px solid #ffffff24;border-top-color:#fff;border-radius:50%;animation:residentSpin .8s linear infinite}.resident-icon{width:58px;height:58px;border-radius:50%;display:grid;place-items:center;font-weight:900;font-size:28px}.resident-icon-muted{background:#334155;color:#fff}@keyframes residentSpin{to{transform:rotate(360deg)}}
.resident-header{min-height:74px;background:#07111d;color:#fff;padding:14px 18px;display:flex;justify-content:space-between;gap:12px;align-items:center}.resident-brand{display:flex;align-items:center;gap:11px}.resident-brand strong{font-size:12px;display:block}.resident-brand span{font-size:11px;color:#a8b6c7;display:block;margin-top:2px}.resident-shield{width:35px;height:40px;background:#b91c1c;clip-path:polygon(50% 0,92% 15%,86% 72%,50% 100%,14% 72%,8% 15%);display:grid;place-items:center;font-weight:900}.resident-severity{padding:5px 8px;border-radius:999px;background:#7f1d1d;font-size:9px;font-weight:900;letter-spacing:.08em}
.resident-alert{background:linear-gradient(145deg,#991b1b,#dc2626);color:#fff;text-align:center;padding:30px 24px 28px}.resident-alert-icon{width:62px;height:62px;border:3px solid #fff;border-radius:20px;transform:rotate(45deg);display:grid;place-items:center;margin:0 auto 22px;font-size:30px;font-weight:900}.resident-alert-icon::first-letter{transform:rotate(-45deg)}.resident-eyebrow{font-size:11px;font-weight:900;letter-spacing:.14em;opacity:.85}.resident-alert h1{font-size:28px;line-height:1.05;margin:8px 0 13px}.resident-alert p{line-height:1.5;margin:0 auto;max-width:390px;font-size:14px}.resident-event-time{margin-top:15px;font-size:11px;opacity:.8}
.resident-identity{margin:14px;background:#fff;border:1px solid #dfe6ed;border-radius:16px;padding:15px 16px;display:flex;justify-content:space-between;gap:15px;box-shadow:0 6px 24px #1720330b}.resident-identity span{display:block;color:#64748b;font-size:10px;margin-bottom:4px}.resident-identity strong{font-size:14px}.resident-unit{text-align:right}.resident-status-section,.resident-location-card{margin:14px;background:#fff;border:1px solid #dfe6ed;border-radius:16px;padding:16px;box-shadow:0 6px 24px #1720330b}.resident-section-head{display:flex;justify-content:space-between;align-items:center;gap:10px;margin-bottom:13px}.resident-section-head>div{display:flex;align-items:center;gap:8px}.resident-section-head small{color:#64748b;font-size:10px}.resident-step{width:24px;height:24px;border-radius:50%;background:#0f766e;color:#fff;display:grid;place-items:center;font-size:11px;font-weight:900}.resident-status-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px}.resident-status{min-height:112px;border:0;border-radius:14px;color:#fff;padding:13px 10px;cursor:pointer;display:flex;flex-direction:column;align-items:center;justify-content:center;box-shadow:inset 0 -2px #0002;transition:transform .1s,filter .1s}.resident-status:active{transform:scale(.98)}.resident-status:disabled{filter:grayscale(.35);opacity:.65;cursor:wait}.resident-status>span{width:34px;height:34px;border-radius:50%;display:grid;place-items:center;background:#ffffff22;font-size:20px;font-weight:900;margin-bottom:6px}.resident-status strong{font-size:14px}.resident-status small{font-size:10px;margin-top:3px;opacity:.86}.resident-ok{background:#16a34a}.resident-evacuated{background:#2563eb}.resident-outside{background:#0891b2}.resident-help{background:#dc2626}.resident-status.is-current{outline:4px solid #0f172a;outline-offset:2px}
.resident-location-card p{color:#64748b;font-size:12px;line-height:1.45}.resident-location-state{font-size:10px;padding:5px 8px;border-radius:999px;background:#e2e8f0;color:#475569}.resident-location-state.ok{background:#dcfce7;color:#166534}.resident-location-state.warn{background:#fef3c7;color:#92400e}.resident-location-detail{background:#f8fafc;border:1px solid #e2e8f0;border-radius:10px;padding:10px;font-size:11px;color:#475569;margin:10px 0}.resident-location-button{width:100%;border:1px solid #cbd5e1;background:#fff;border-radius:10px;padding:11px;font-weight:800;color:#334155;cursor:pointer}.resident-result{margin:14px;border-radius:14px;padding:15px;text-align:center;font-size:13px;font-weight:700}.resident-result.ok{display:block!important;background:#dcfce7;color:#166534;border:1px solid #bbf7d0}.resident-result.err{display:block!important;background:#fee2e2;color:#991b1b;border:1px solid #fecaca}.resident-footer{text-align:center;padding:14px 20px 28px;color:#64748b}.resident-footer strong,.resident-footer span,.resident-footer small{display:block}.resident-footer strong{font-size:11px}.resident-footer span{font-size:11px;margin:5px 0}.resident-footer small{font-size:10px}
@media(max-width:380px){.resident-status-grid{grid-template-columns:1fr}.resident-status{min-height:85px}.resident-identity{display:block}.resident-unit{text-align:left;margin-top:10px}}
/* RC2.3 - fotos y localización operacional */
.person-avatar{width:38px;height:38px;border-radius:50%;object-fit:cover;border:2px solid #fff;box-shadow:0 0 0 1px #dbe4ed}.person-avatar-empty{display:grid;place-items:center;background:#dbe4ed;color:#64748b;font-weight:800}.photo-field{display:flex;align-items:center;gap:14px;flex-wrap:wrap}.person-photo-preview,.person-photo-placeholder{width:82px;height:82px;border-radius:14px;object-fit:cover;border:1px solid #d8e0e8}.person-photo-placeholder{display:grid;place-items:center;background:#eef2f6;color:#64748b;font-size:12px}
.emergency-layout-grid{display:grid;grid-template-columns:260px 1fr;gap:16px;margin-top:16px}.building-stack{display:flex;flex-direction:column;gap:7px}.building-floor{border:1px solid #dce5ee;border-radius:10px;padding:9px 11px;background:#f8fafc;display:flex;justify-content:space-between;align-items:center;cursor:pointer}.building-floor.active{border-color:#0f766e;background:#ecfdf5}.floor-counts{display:flex;gap:5px;align-items:center}.floor-count-dot{width:9px;height:9px;border-radius:50%}.floor-count-dot.help{background:#dc2626}.floor-count-dot.warn{background:#f59e0b}.floor-count-dot.ok{background:#16a34a}.floor-plan-stage{position:relative;min-height:460px;border:1px solid #dce5ee;border-radius:14px;overflow:hidden;background:#e9eff5 center/contain no-repeat}.floor-plan-grid{position:absolute;inset:0;display:grid;grid-template-columns:repeat(4,1fr);grid-auto-rows:120px;gap:10px;padding:18px}.floor-unit{position:relative;border:1px solid #8294a8;background:#ffffffdc;border-radius:10px;min-width:80px;min-height:70px;padding:7px;box-shadow:0 4px 14px #33415518}.floor-unit.manual{position:absolute}.floor-unit-title{font-weight:800;font-size:12px}.unit-occupants{display:flex;flex-wrap:wrap;gap:4px;margin-top:7px}.occupant-marker{width:34px;height:34px;border-radius:50%;border:3px solid #94a3b8;background:#cbd5e1;object-fit:cover;display:grid;place-items:center;font-size:11px;font-weight:800;color:#0f172a;cursor:pointer}.occupant-marker.NEED_HELP{border-color:#dc2626;box-shadow:0 0 0 3px #fee2e2}.occupant-marker.NO_REPORT{border-color:#f59e0b}.occupant-marker.OK{border-color:#16a34a}.occupant-marker.EVACUATED{border-color:#2563eb}.occupant-marker.OUTSIDE{border-color:#0891b2}.occupant-marker.PRESENT{border-color:#7c3aed}.location-chip{display:inline-flex;gap:5px;align-items:center;font-size:11px;background:#e0f2fe;color:#075985;padding:4px 7px;border-radius:999px}.occupant-popover{position:absolute;z-index:5;width:260px;background:#081827;color:#fff;border-radius:12px;padding:12px;box-shadow:0 14px 40px #0006;display:none}.occupant-popover.open{display:block}.occupant-popover .muted{color:#a8b9c9}.gps-coords{font-family:ui-monospace,SFMono-Regular,Consolas,monospace;font-size:11px}.resident-photo-mobile{width:48px;height:48px;border-radius:50%;object-fit:cover;border:2px solid #fff;box-shadow:0 0 0 1px #cad5df;margin-right:9px}
@media(max-width:1000px){.emergency-layout-grid{grid-template-columns:1fr}.building-stack{display:grid;grid-template-columns:repeat(auto-fit,minmax(120px,1fr))}.floor-plan-stage{min-height:400px}}


/* RC2.3.1 - Dashboard de rescate visual */
.emergency-kpis .kpi{position:relative;overflow:hidden;border:1px solid #dbe4ee}.emergency-kpis .kpi:before{content:"";position:absolute;left:0;right:0;top:0;height:5px}.kpi-total:before{background:#334155}.kpi-no-report:before{background:#f59e0b}.kpi-ok:before{background:#16a34a}.kpi-evacuated:before{background:#2563eb}.kpi-outside:before{background:#0891b2}.kpi-help{background:#fff1f2!important;border-color:#fecdd3!important}.kpi-help:before{background:#dc2626}.kpi-help .value{color:#b91c1c}.kpi-no-report .value{color:#b45309}.kpi-ok .value{color:#15803d}.kpi-evacuated .value{color:#1d4ed8}.kpi-outside .value{color:#0e7490}
.floor-toolbar{display:flex;justify-content:space-between;align-items:center;margin-bottom:12px}.floor-toolbar>div:first-child>span,.rescue-section-head>div>span{font-size:10px;font-weight:800;letter-spacing:.11em;color:#64748b}.floor-toolbar h3,.rescue-section-head h3{margin:2px 0 0}.floor-toolbar-count{display:flex;gap:7px;align-items:baseline;color:#64748b}.floor-toolbar-count b{font-size:22px;color:#0f172a}.floor-toolbar-count span{font-size:11px}
.floor-plan-grid{grid-template-columns:repeat(3,minmax(230px,1fr));grid-auto-rows:minmax(190px,auto);gap:14px}.floor-unit{padding:0;border:2px solid #cbd5e1;overflow:hidden;background:#fff;min-height:180px}.floor-unit-head{display:flex;justify-content:space-between;align-items:center;padding:10px 12px;background:#f8fafc;border-bottom:1px solid #e2e8f0}.floor-unit-head>div{display:flex;gap:6px;align-items:baseline}.floor-unit-head span{font-size:10px;color:#64748b}.floor-unit-head b{font-size:15px}.unit-count{background:#e2e8f0;border-radius:999px;padding:3px 7px}.unit-state-NEED_HELP{border-color:#dc2626;box-shadow:0 0 0 3px #fee2e2}.unit-state-NEED_HELP .floor-unit-head{background:#fee2e2}.unit-state-NO_REPORT{border-color:#f59e0b}.unit-state-NO_REPORT .floor-unit-head{background:#fef3c7}.unit-state-OK{border-color:#16a34a}.unit-state-OK .floor-unit-head{background:#dcfce7}.unit-state-EVACUATED{border-color:#2563eb}.unit-state-EVACUATED .floor-unit-head{background:#dbeafe}.unit-state-OUTSIDE{border-color:#0891b2}.unit-state-OUTSIDE .floor-unit-head{background:#cffafe}.unit-occupants{display:flex;flex-direction:column;gap:8px;padding:10px;margin:0}.unit-empty{padding:20px;text-align:center;color:#94a3b8;font-size:11px}
.occupant-card{width:100%;border:0;border-radius:12px;padding:8px;display:grid;grid-template-columns:58px 1fr auto;gap:9px;align-items:center;text-align:left;cursor:pointer;color:#0f172a}.occupant-card-photo{width:58px;height:58px;border-radius:12px;object-fit:cover;border:2px solid #fff;box-shadow:0 0 0 1px #cbd5e1}.occupant-card-initials{display:grid;place-items:center;background:#e2e8f0;font-weight:900}.occupant-card-data{min-width:0;display:flex;flex-direction:column}.occupant-card-data b{font-size:13px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.occupant-card-data small{font-size:10px;color:#475569;line-height:1.45}.occupant-gps{font-family:ui-monospace,SFMono-Regular,Consolas,monospace}.occupant-card-status{font-size:10px;font-weight:900;border-radius:999px;padding:5px 7px;white-space:nowrap}.occupant-card.state-NEED_HELP{background:#fee2e2}.occupant-card.state-NEED_HELP .occupant-card-status{background:#dc2626;color:#fff}.occupant-card.state-NO_REPORT{background:#fef3c7}.occupant-card.state-NO_REPORT .occupant-card-status{background:#f59e0b;color:#fff}.occupant-card.state-OK{background:#dcfce7}.occupant-card.state-OK .occupant-card-status{background:#16a34a;color:#fff}.occupant-card.state-EVACUATED{background:#dbeafe}.occupant-card.state-EVACUATED .occupant-card-status{background:#2563eb;color:#fff}.occupant-card.state-OUTSIDE{background:#cffafe}.occupant-card.state-OUTSIDE .occupant-card-status{background:#0891b2;color:#fff}.occupant-card.state-PRESENT{background:#ede9fe}.occupant-card.state-PRESENT .occupant-card-status{background:#7c3aed;color:#fff}
.rescue-section{padding:16px}.rescue-section-head{display:flex;justify-content:space-between;align-items:flex-end;margin-bottom:14px}.rescue-person-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(360px,1fr));gap:14px}.rescue-person-card{border:2px solid #cbd5e1;border-radius:16px;overflow:hidden;background:#fff}.rescue-card-top{display:grid;grid-template-columns:84px 1fr auto;gap:14px;padding:15px;align-items:center}.rescue-card-photo{width:84px;height:84px;border-radius:16px;object-fit:cover;border:3px solid #fff;box-shadow:0 0 0 1px #cbd5e1}.rescue-card-initials{display:grid;place-items:center;background:#e2e8f0;font-size:24px;font-weight:900}.rescue-kind{font-size:9px;font-weight:900;letter-spacing:.12em;color:#64748b}.rescue-card-main h3{font-size:16px;margin:4px 0 8px}.rescue-location{display:flex;gap:7px}.rescue-location b{font-size:11px;background:#f1f5f9;padding:4px 7px;border-radius:7px}.rescue-state{min-width:105px;border-radius:12px;padding:10px;text-align:center}.rescue-state span{display:block;font-size:26px;font-weight:900}.rescue-state b{display:block;font-size:10px;margin-top:2px}.rescue-card-bottom{display:grid;grid-template-columns:1.4fr 1fr auto;gap:10px;border-top:1px solid #e2e8f0;padding:10px 14px;background:#f8fafc;align-items:center}.rescue-card-bottom>div{min-width:0}.rescue-card-bottom span{display:block;font-size:9px;text-transform:uppercase;letter-spacing:.06em;color:#64748b}.rescue-card-bottom b{display:block;font-size:11px;margin-top:2px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.rescue-qr{white-space:nowrap}.rescue-person-card.state-NEED_HELP{border-color:#dc2626;box-shadow:0 0 0 3px #fee2e2}.rescue-person-card.state-NEED_HELP .rescue-card-top{background:#fff1f2}.rescue-person-card.state-NEED_HELP .rescue-state{background:#dc2626;color:#fff}.rescue-person-card.state-NO_REPORT{border-color:#f59e0b}.rescue-person-card.state-NO_REPORT .rescue-card-top{background:#fffbeb}.rescue-person-card.state-NO_REPORT .rescue-state{background:#f59e0b;color:#fff}.rescue-person-card.state-OK{border-color:#16a34a}.rescue-person-card.state-OK .rescue-card-top{background:#f0fdf4}.rescue-person-card.state-OK .rescue-state{background:#16a34a;color:#fff}.rescue-person-card.state-EVACUATED{border-color:#2563eb}.rescue-person-card.state-EVACUATED .rescue-card-top{background:#eff6ff}.rescue-person-card.state-EVACUATED .rescue-state{background:#2563eb;color:#fff}.rescue-person-card.state-OUTSIDE{border-color:#0891b2}.rescue-person-card.state-OUTSIDE .rescue-card-top{background:#ecfeff}.rescue-person-card.state-OUTSIDE .rescue-state{background:#0891b2;color:#fff}
.occupant-popover{width:330px}.rescue-pop-head{display:grid;grid-template-columns:72px 1fr;gap:12px;align-items:center}.rescue-pop-photo{width:72px;height:72px;border-radius:14px;object-fit:cover}.rescue-pop-initials{display:grid;place-items:center;background:#334155;font-weight:900}.rescue-pop-head small{font-size:9px;color:#94a3b8;letter-spacing:.1em}.rescue-pop-head h3{margin:3px 0;font-size:17px}.rescue-pop-status{display:inline-flex;margin-top:12px;border-radius:999px;padding:6px 9px;font-size:11px;font-weight:900}.rescue-pop-status.state-NEED_HELP{background:#dc2626}.rescue-pop-status.state-NO_REPORT{background:#f59e0b}.rescue-pop-status.state-OK{background:#16a34a}.rescue-pop-status.state-EVACUATED{background:#2563eb}.rescue-pop-status.state-OUTSIDE{background:#0891b2}.rescue-pop-status.state-PRESENT{background:#7c3aed}.rescue-pop-grid{display:grid;grid-template-columns:1fr;gap:8px;margin-top:10px}.rescue-pop-grid span{display:block;font-size:9px;color:#94a3b8;text-transform:uppercase}.rescue-pop-grid b{display:block;font-size:11px;margin-top:2px}
@media(max-width:1200px){.floor-plan-grid{grid-template-columns:repeat(2,minmax(220px,1fr))}.rescue-person-grid{grid-template-columns:1fr}}@media(max-width:700px){.rescue-card-top{grid-template-columns:72px 1fr}.rescue-card-photo{width:72px;height:72px}.rescue-state{grid-column:1/-1}.rescue-card-bottom{grid-template-columns:1fr}.floor-plan-grid{grid-template-columns:1fr}.occupant-card{grid-template-columns:52px 1fr}.occupant-card-photo{width:52px;height:52px}.occupant-card-status{grid-column:1/-1;text-align:center}}


.rescue-actions{display:flex;gap:7px;align-items:center;justify-content:flex-end;flex-wrap:wrap}.rescue-message{position:relative;white-space:nowrap}
.message-unread{display:inline-grid;place-items:center;min-width:18px;height:18px;padding:0 5px;margin-left:3px;border-radius:999px;background:#dc2626;color:#fff;font-size:9px}
.message-template-row{display:flex;gap:7px;flex-wrap:wrap;margin:14px 0}.message-template{border:1px solid #cbd5e1;background:#f8fafc;border-radius:999px;padding:7px 10px;font-size:11px;font-weight:700;color:#334155;cursor:pointer}.message-template:hover{border-color:#0f766e;background:#ecfdf5;color:#065f46}
.message-channel-note{font-size:11px;color:#64748b;background:#f8fafc;border:1px solid #e2e8f0;border-radius:10px;padding:10px 12px;margin-top:12px}
.message-send-ok,.message-send-error{padding:10px 12px;border-radius:10px;font-size:12px;font-weight:700;margin-top:10px}.message-send-ok{background:#dcfce7;color:#166534;border:1px solid #86efac}.message-send-error{background:#fee2e2;color:#991b1b;border:1px solid #fecaca}
.message-history{margin-top:18px;border-top:1px solid #e2e8f0;padding-top:14px}.message-history h3{font-size:13px;margin:0 0 9px}.message-history-item{display:grid;grid-template-columns:1fr auto;gap:10px;border-left:4px solid #0f766e;background:#f8fafc;padding:9px 10px;border-radius:9px;margin-bottom:7px}.message-history-item.priority-IMPORTANT{border-left-color:#f59e0b;background:#fffbeb}.message-history-item.priority-URGENT{border-left-color:#dc2626;background:#fff1f2}.message-history-item b,.message-history-item span{display:block;font-size:11px}.message-history-item span{color:#475569;margin-top:3px}.message-history-item small,.message-history-item em{display:block;text-align:right;font-size:9px;color:#64748b}.message-history-item em{font-style:normal;font-weight:800;margin-top:4px}
.empty-state.compact{padding:10px;font-size:11px}
@media(max-width:700px){.rescue-actions{justify-content:stretch}.rescue-actions .btn{flex:1}.message-history-item{grid-template-columns:1fr}.message-history-item small,.message-history-item em{text-align:left}}

/* ==========================================================
   RC2.6 - Standby / enrolamiento / editor visual por pisos
   ========================================================== */
.resident-enroll-cell{display:flex;align-items:center;gap:7px;flex-wrap:wrap}
.enrollment-modal-grid{display:grid;grid-template-columns:260px 1fr;gap:20px;align-items:center}
.enrollment-qr img{display:block;width:250px;max-width:100%;height:auto;border:1px solid #dbe3ea;border-radius:16px;padding:8px;background:#fff}

.floor-admin-layout{display:grid;grid-template-columns:250px minmax(0,1fr);gap:16px}
.floor-editor-card{min-width:0}
.floor-editor-head{display:flex;justify-content:space-between;gap:14px;align-items:flex-end;margin-bottom:10px}
.floor-editor-head h2{margin:2px 0 0}
.floor-editor-actions{display:flex;gap:8px;flex-wrap:wrap}
.floor-upload-label{cursor:pointer}
.floor-editor-help{font-size:11px;color:#64748b;background:#f8fafc;border:1px solid #e2e8f0;border-radius:10px;padding:9px 11px;margin-bottom:10px}
.visual-floor-stage{position:relative;min-height:620px;border:2px solid #cbd5e1;border-radius:16px;overflow:hidden;background:#edf2f7 center/contain no-repeat}
.visual-floor-empty{position:absolute;inset:0;display:grid;place-content:center;text-align:center;gap:5px;color:#64748b;padding:30px;background:repeating-linear-gradient(45deg,#f8fafc,#f8fafc 12px,#f1f5f9 12px,#f1f5f9 24px)}
.visual-floor-empty span{font-size:11px}
.unit-editor-box{position:absolute;z-index:2;min-width:90px;min-height:70px;background:rgba(255,255,255,.94);border:2px solid #334155;border-radius:12px;overflow:hidden;box-shadow:0 5px 18px rgba(15,23,42,.16)}
.unit-editor-box.dragging{z-index:20;border-color:#2563eb;box-shadow:0 8px 26px rgba(37,99,235,.28)}
.unit-editor-drag{display:flex;justify-content:space-between;align-items:center;gap:5px;background:#0f172a;color:#fff;padding:7px 9px;cursor:grab;touch-action:none;user-select:none}
.unit-editor-drag:active{cursor:grabbing}
.unit-editor-drag small{display:block;font-size:8px;opacity:.72}
.unit-editor-drag b{font-size:13px}
.unit-editor-drag>span{font-size:10px;background:#334155;padding:3px 6px;border-radius:999px}
.unit-editor-residents{display:flex;align-items:center;gap:4px;padding:7px;min-height:38px}
.unit-editor-residents img,.unit-editor-residents>span{width:28px;height:28px;border-radius:50%;object-fit:cover;border:2px solid #fff;box-shadow:0 0 0 1px #cbd5e1}
.unit-editor-residents>span{display:grid;place-items:center;font-size:8px;font-weight:900;background:#e2e8f0}
.unit-editor-residents small{font-size:9px;color:#94a3b8}
.unit-editor-edit{position:absolute;right:5px;bottom:5px;border:0;border-radius:7px;background:#e2e8f0;width:28px;height:28px;cursor:pointer}
.floor-editor-legend{display:flex;gap:18px;flex-wrap:wrap;margin-top:9px;font-size:11px;color:#64748b}
.floor-editor-legend i{display:inline-block;width:8px;height:8px;border-radius:2px;background:#334155;margin-right:5px}
.emergency-resend-strip{margin-top:12px;border:1px solid #fecaca;background:#fff1f2;border-radius:12px;padding:10px 12px;display:flex;align-items:center;justify-content:space-between;gap:12px}
.emergency-resend-strip div{display:flex;flex-direction:column}.emergency-resend-strip span{font-size:10px;color:#64748b;margin-top:2px}
.ack-ok{color:#15803d!important}.ack-pending{color:#b45309!important}
.occupant-card.state-EVACUATING{background:#e0f2fe}.occupant-card.state-EVACUATING .occupant-card-status{background:#0284c7;color:#fff}
.rescue-person-card.state-EVACUATING{border-color:#0284c7}.rescue-person-card.state-EVACUATING .rescue-card-top{background:#f0f9ff}.rescue-person-card.state-EVACUATING .rescue-state{background:#0284c7;color:#fff}
.unit-state-EVACUATING{border-color:#0284c7}.unit-state-EVACUATING .floor-unit-head{background:#e0f2fe}
@media(max-width:900px){.floor-admin-layout{grid-template-columns:1fr}.visual-floor-stage{min-height:500px}.enrollment-modal-grid{grid-template-columns:1fr}.enrollment-qr{display:grid;place-items:center}}

/* ==========================================================
   RC2.7 - Shell persistente / frame principal
   ========================================================== */
.shell-body{margin:0;overflow:hidden}
.shell-app{height:100vh;min-height:0}
.shell-main{height:100vh;min-height:0;overflow:hidden;display:flex;flex-direction:column}
.shell-topbar{flex:0 0 auto}
.shell-top-left{display:flex;align-items:center;gap:8px}
.shell-menu-toggle{display:none;width:40px;height:40px;border:1px solid #dbe3ea;border-radius:10px;background:#fff;font-size:19px}
.main-frame-wrap{flex:1;min-height:0;overflow:hidden;background:#f4f7fa}
.main-frame{display:block;width:100%;height:100%;border:0;background:#f4f7fa}
.frame-body{margin:0;background:#f4f7fa;overflow:auto}
.frame-page{padding:20px 22px 32px;min-height:100%;box-sizing:border-box}
.frame-page .page-head{margin-top:0}
.clone-floor-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(145px,1fr));gap:8px}
.clone-floor-option{display:flex;gap:9px;align-items:center;border:1px solid #dbe3ea;border-radius:10px;padding:9px;background:#fff;cursor:pointer}
.clone-floor-option input{width:18px;height:18px}
.clone-floor-option span{display:flex;flex-direction:column}.clone-floor-option small{font-size:9px;color:#64748b;margin-top:2px}
.clone-plan-check{display:flex;align-items:center;gap:9px;min-height:44px;border:1px solid #dbe3ea;border-radius:10px;padding:0 12px}
.clone-plan-check input{width:18px;height:18px}
.layout-preview-note{font-size:11px;color:#475569;background:#eff6ff;border:1px solid #bfdbfe;padding:9px 11px;border-radius:10px;margin-top:12px}
@media(max-width:760px){
  .shell-menu-toggle{display:block}
  .shell-sidebar{position:fixed!important;z-index:100;left:-290px;top:0;bottom:0;width:270px!important;transition:left .2s ease}
  .shell-menu-open .shell-sidebar{left:0}
  .shell-main{margin-left:0!important;width:100%!important}
  .shell-topbar{padding-left:10px}
  .frame-page{padding:14px 12px 28px}
}

/* RC2.7.1 - Frame fix / eliminar layout */
.floor-editor-actions .btn-danger{white-space:nowrap}
.frame-body .sidebar,
.frame-body .topbar{display:none!important}
.frame-body .app{display:block!important;min-height:0!important}

/* RC2.7.2 - Residentes sin departamento */
.field small{display:block;margin-top:5px;font-size:10px;color:#64748b;line-height:1.35}
[data-resident-unassign]{white-space:nowrap}

/* ==========================================================
   RC2.8 - Floor Layout Designer
   ========================================================== */
.designer-shell{display:grid;grid-template-columns:230px minmax(0,1fr);gap:14px}
.designer-left{display:flex;flex-direction:column;gap:12px}
.designer-floor-list{padding:12px}.designer-panel-title{display:flex;align-items:center;justify-content:space-between;margin-bottom:8px}
.designer-floors{display:flex;flex-direction:column}.designer-floor-row{display:flex;justify-content:space-between;text-align:left;border:1px solid #dbe3ea;border-bottom:0;background:#fff;padding:11px 12px;cursor:pointer;min-height:58px}.designer-floor-row:first-child{border-radius:10px 10px 0 0}.designer-floor-row:last-child{border-bottom:1px solid #dbe3ea;border-radius:0 0 10px 10px}.designer-floor-row.active{background:#e8faf5;border:1px solid #16a085;border-radius:10px}.designer-floor-row span:first-child{display:flex;flex-direction:column}.designer-floor-row small{font-size:9px;color:#64748b;margin-top:3px}.floor-row-handle{color:#94a3b8}
.floor-actions-card,.designer-tip{padding:13px;display:flex;flex-direction:column;gap:8px}.designer-tip{font-size:11px;color:#475569}.designer-tip b{color:#2563eb}.designer-tip p{margin:0;line-height:1.45}
.btn-danger-soft{background:#fff1f2;color:#b91c1c;border:1px solid #fecaca}.btn-danger-soft:hover{background:#ffe4e6}
.designer-main{padding:14px;min-width:0}.designer-head{display:flex;align-items:flex-end;justify-content:space-between;gap:12px}.designer-head h2{margin:2px 0 0}.designer-head-actions{display:flex;gap:8px}
.designer-toolbar{display:flex;align-items:center;gap:4px;flex-wrap:wrap;margin-top:12px;padding:5px;border:1px solid #dbe3ea;border-radius:9px;background:#fff}.tool-btn{border:0;background:transparent;border-radius:7px;padding:7px 8px;font-size:10px;cursor:pointer;color:#334155}.tool-btn span{margin-right:4px}.tool-btn.active{background:#dff7ef;color:#065f46;font-weight:800}.tool-btn:hover{background:#f1f5f9}
.designer-instruction{font-size:10px;color:#64748b;padding:9px 3px}
.designer-work-area{display:grid;grid-template-columns:minmax(0,1fr) 250px;gap:10px;align-items:stretch}.designer-canvas-column{position:relative;min-width:0}.designer-properties{border:1px solid #dbe3ea;border-radius:10px;background:#fff;min-width:0;overflow:hidden}
.floor-designer-stage{position:relative;min-height:620px;border:1px solid #cbd5e1;border-radius:11px;background:#eef3f7 center/contain no-repeat;overflow:hidden;touch-action:none}.floor-designer-stage.preview .resize-handle{display:none}.designer-grid-bg{position:absolute;inset:0;background-image:linear-gradient(#dbe3ea 1px,transparent 1px),linear-gradient(90deg,#dbe3ea 1px,transparent 1px);background-size:4% 4%;opacity:.45}
.designer-canvas-tools{position:absolute;z-index:80;left:9px;top:9px;display:flex;flex-direction:column}.designer-canvas-tools button{width:30px;height:30px;border:1px solid #cbd5e1;background:#fff;font-weight:900}.designer-canvas-tools button:first-child{border-radius:7px 7px 0 0}.designer-canvas-tools button:last-child{border-radius:0 0 7px 7px}
.layout-unit{position:absolute;box-sizing:border-box;border-style:solid;transform-origin:center;background:rgba(255,255,255,.94);cursor:move;min-width:34px;min-height:30px}.layout-unit.selected{outline:2px solid #3b82f6;outline-offset:2px}.layout-unit-card{position:absolute;left:8%;top:8%;min-width:82px;max-width:86%;background:rgba(255,255,255,.96);border:1px solid #94a3b8;border-radius:10px;padding:7px 8px;box-shadow:0 3px 10px rgba(15,23,42,.08);display:grid;grid-template-columns:1fr auto;gap:3px;transform:rotate(0deg)}.layout-unit-card b{font-size:12px}.layout-unit-card small{display:block;font-size:8px;color:#475569}.resident-live-dot{width:7px;height:7px;border-radius:50%;background:#10b981;margin-top:3px}.layout-faces{grid-column:1/-1;display:flex;gap:3px;margin-top:3px}.layout-faces img,.layout-faces span{width:21px;height:21px;border-radius:50%;object-fit:cover;display:grid;place-items:center;background:#e2e8f0;font-size:7px;font-weight:800}
.resize-handle{position:absolute;width:9px;height:9px;background:#60a5fa;border:1px solid #fff;border-radius:50%;z-index:90}.resize-handle.nw{left:-5px;top:-5px;cursor:nwse-resize}.resize-handle.n{left:50%;top:-5px;cursor:ns-resize}.resize-handle.ne{right:-5px;top:-5px;cursor:nesw-resize}.resize-handle.e{right:-5px;top:50%;cursor:ew-resize}.resize-handle.se{right:-5px;bottom:-5px;cursor:nwse-resize}.resize-handle.s{left:50%;bottom:-5px;cursor:ns-resize}.resize-handle.sw{left:-5px;bottom:-5px;cursor:nesw-resize}.resize-handle.w{left:-5px;top:50%;cursor:ew-resize}
.layout-element{position:absolute;display:grid;place-items:center;cursor:move;transform-origin:center;min-width:14px;min-height:14px}.layout-element.selected{outline:2px solid #3b82f6;outline-offset:2px;border-radius:4px}.layout-element-glyph{font-size:clamp(13px,1.5vw,24px);font-weight:900;line-height:1}.layout-element.type-WINDOW .layout-element-glyph{width:100%;height:4px;background:currentColor;font-size:0}.layout-element.type-DOOR{border:2px solid currentColor;border-left:0;border-bottom:0;border-radius:0 100% 0 0}.layout-element.type-DOOR .layout-element-glyph{display:none}.layout-element.type-EMERGENCY_EXIT{background:#059669;color:#fff!important;border-radius:3px}.layout-element.type-POWER_OUTLET{background:#fff8db;border:1px solid #f59e0b;border-radius:4px}.layout-element.type-ELEVATOR{border:2px solid #64748b;background:#e2e8f0}.layout-element.type-STAIR{border:1px solid #64748b;background:repeating-linear-gradient(0deg,#e2e8f0,#e2e8f0 5px,#64748b 6px,#64748b 7px)}
.designer-bottom-legend{display:flex;gap:10px;flex-wrap:wrap;padding:8px 2px;font-size:8px;color:#64748b}.designer-footer{display:flex;justify-content:space-between;gap:12px;align-items:center;border-top:1px solid #e2e8f0;margin-top:5px;padding-top:9px}.designer-footer>div{display:flex;gap:16px;align-items:center}.designer-footer span{font-size:9px;color:#64748b}
.properties-empty{padding:16px;color:#64748b;font-size:11px}.properties-empty p{line-height:1.45}.properties-head{display:flex;justify-content:space-between;align-items:center;padding:12px;border-bottom:1px solid #e2e8f0}.properties-head>div{display:flex;gap:5px}.icon-btn{border:1px solid #dbe3ea;background:#f8fafc;border-radius:7px;width:30px;height:30px;cursor:pointer}.icon-btn.danger{color:#dc2626}.properties-section{padding:12px;border-bottom:1px solid #e2e8f0}.properties-section>b{font-size:10px;display:block;margin-bottom:8px}.properties-section-title{display:flex;justify-content:space-between;align-items:center;margin-bottom:8px}.prop-field{display:block;margin-bottom:8px}.prop-field span{display:block;font-size:8px;color:#64748b;margin-bottom:3px}.prop-field input{width:100%;height:32px;border:1px solid #dbe3ea;border-radius:6px;padding:5px 7px;font-size:10px;box-sizing:border-box}.prop-field input[type=color]{padding:3px}.prop-two{display:grid;grid-template-columns:1fr 1fr;gap:7px}.prop-residents{display:flex;flex-direction:column;gap:7px}.prop-residents>div{display:flex;align-items:center;gap:7px}.prop-residents img,.prop-residents span{width:24px;height:24px;border-radius:50%;object-fit:cover;display:grid;place-items:center;background:#e2e8f0;font-size:7px}.prop-residents b{font-size:9px}.prop-residents small{font-size:9px;color:#94a3b8}
.more-tools-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:9px}.more-tool{border:1px solid #dbe3ea;border-radius:9px;background:#fff;padding:14px 8px;display:flex;flex-direction:column;gap:5px;align-items:center;cursor:pointer}.more-tool b{font-size:22px}.more-tool span{font-size:10px}
@media(max-width:1150px){.designer-shell{grid-template-columns:190px minmax(0,1fr)}.designer-work-area{grid-template-columns:minmax(0,1fr) 215px}.floor-designer-stage{min-height:520px}}
@media(max-width:900px){.designer-shell{grid-template-columns:1fr}.designer-left{display:grid;grid-template-columns:1fr 1fr}.designer-tip{display:none}.designer-work-area{grid-template-columns:1fr}.designer-properties{order:-1}.floor-designer-stage{min-height:520px}}
@media(max-width:600px){.designer-left{grid-template-columns:1fr}.designer-head{align-items:flex-start;flex-direction:column}.designer-toolbar{overflow-x:auto;flex-wrap:nowrap}.tool-btn{white-space:nowrap}.designer-footer{flex-direction:column;align-items:flex-start}.floor-designer-stage{min-height:430px}.prop-two{grid-template-columns:1fr}}

/* ==========================================================
   RC2.8.2 - Paredes y estructura del piso
   ========================================================== */
.tool-btn[data-tool="WALL"]{font-weight:800}
.layout-element.type-WALL{
  min-width:8px;
  min-height:3px;
  border-radius:1px;
  box-shadow:0 0 0 1px rgba(15,23,42,.06);
}
.layout-element.type-WALL .layout-element-glyph{display:none}
.layout-element.type-WALL.selected{outline-offset:4px}
.wall-draft{
  position:absolute;
  z-index:100;
  min-height:4px;
  background:#ef4444;
  border:1px solid #dc2626;
  transform-origin:center;
  pointer-events:none;
  opacity:.9;
}
.wall-property-help{
  margin-top:7px;
  padding:8px;
  border-radius:7px;
  background:#f8fafc;
  border:1px solid #e2e8f0;
  font-size:9px;
  color:#64748b;
  line-height:1.4;
}

/* RC2.8.3 - Movimiento libre real */
.layout-unit.is-dragging,
.layout-element.is-dragging{
  cursor:grabbing!important;
  box-shadow:0 8px 24px rgba(37,99,235,.20);
}
.layout-unit,
.layout-element{
  user-select:none;
  -webkit-user-select:none;
}
.floor-designer-stage{
  overscroll-behavior:contain;
}

/* RC2.8.4 - Resize estable */
.layout-unit.is-resizing,
.layout-element.is-resizing{
  outline:2px solid #2563eb;
  outline-offset:3px;
}

/* ==========================================================
   RC2.8.5 - Layout operacional idéntico al diseñador
   ========================================================== */

/* Misma proporción geométrica en edición y operación.
   Los objetos usan porcentajes, por lo que compartir aspect-ratio evita
   que un departamento cambie de forma entre vistas. */
.floor-designer-stage,
.emergency-operational-stage{
  aspect-ratio:16 / 10;
  min-height:0!important;
}

.emergency-operational-stage{
  position:relative;
  width:100%;
  overflow:hidden;
  border:1px solid #cbd5e1;
  border-radius:12px;
  background:#eef3f7 center/contain no-repeat;
}

.em-operational-grid-bg{
  position:absolute;
  inset:0;
  background-image:
    linear-gradient(#dbe3ea 1px,transparent 1px),
    linear-gradient(90deg,#dbe3ea 1px,transparent 1px);
  background-size:4% 4%;
  opacity:.45;
  pointer-events:none;
}

.em-operational-unit{
  position:absolute;
  box-sizing:border-box;
  border-style:solid;
  border-color:var(--configured-border,#1e293b);
  transform-origin:center;
  min-width:18px;
  min-height:18px;
  box-shadow:none;
}

.em-unit-summary{
  position:absolute;
  left:7%;
  top:7%;
  min-width:76px;
  max-width:88%;
  padding:6px 7px;
  box-sizing:border-box;
  display:grid;
  grid-template-columns:1fr auto;
  gap:2px 5px;
  background:rgba(255,255,255,.95);
  border:1px solid #94a3b8;
  border-radius:9px;
  box-shadow:0 3px 10px rgba(15,23,42,.08);
  transform:rotate(0deg);
  color:#0f172a;
}

.em-unit-summary b{font-size:11px}
.em-unit-summary small{display:block;font-size:7px;color:#64748b}
.em-unit-summary>i{
  width:7px;height:7px;border-radius:50%;
  background:#10b981;margin-top:3px
}

.operational-occupants{
  grid-column:1/-1;
  display:flex;
  align-items:center;
  gap:3px;
  margin-top:3px;
}
.operational-person{
  width:23px;height:23px;
  padding:0;border:2px solid #94a3b8;border-radius:50%;
  background:#e2e8f0;
  overflow:hidden;
  cursor:pointer;
}
.operational-person img{
  display:block;width:100%;height:100%;object-fit:cover
}
.operational-person>span{
  display:grid;place-items:center;width:100%;height:100%;
  font-size:7px;font-weight:900
}
.operational-person.state-NEED_HELP{border-color:#dc2626;box-shadow:0 0 0 2px #fee2e2}
.operational-person.state-NO_REPORT{border-color:#f59e0b}
.operational-person.state-EVACUATING{border-color:#0284c7}
.operational-person.state-OK{border-color:#16a34a}
.operational-person.state-EVACUATED{border-color:#2563eb}
.operational-person.state-OUTSIDE{border-color:#0891b2}
.operational-person.state-PRESENT{border-color:#7c3aed}
.operational-more{
  display:grid;place-items:center;
  min-width:23px;height:23px;border-radius:50%;
  background:#334155;color:#fff;font-size:7px;font-weight:900
}

/* Estado operacional sin destruir la geometría/estilo configurado. */
.em-operational-unit.unit-state-NEED_HELP{outline:3px solid #dc2626;outline-offset:2px}
.em-operational-unit.unit-state-NO_REPORT{outline:2px solid #f59e0b;outline-offset:1px}
.em-operational-unit.unit-state-EVACUATING{outline:2px solid #0284c7;outline-offset:1px}
.em-operational-unit.unit-state-OK{outline:2px solid #16a34a;outline-offset:1px}
.em-operational-unit.unit-state-EVACUATED{outline:2px solid #2563eb;outline-offset:1px}
.em-operational-unit.unit-state-OUTSIDE{outline:2px solid #0891b2;outline-offset:1px}

/* Elementos estructurales: mismas reglas visuales del diseñador. */
.em-layout-element{
  position:absolute;
  display:grid;
  place-items:center;
  transform-origin:center;
  min-width:8px;
  min-height:8px;
  pointer-events:none;
}
.em-layout-element>span{
  font-size:clamp(11px,1.4vw,22px);
  font-weight:900;
  line-height:1;
}
.em-layout-element.type-WALL{
  min-width:8px;min-height:3px;border-radius:1px
}
.em-layout-element.type-WINDOW>span{
  width:100%;height:4px;background:currentColor;font-size:0
}
.em-layout-element.type-DOOR{
  border:2px solid currentColor;
  border-left:0;border-bottom:0;
  border-radius:0 100% 0 0
}
.em-layout-element.type-DOOR>span{display:none}
.em-layout-element.type-EMERGENCY_EXIT{
  background:#059669;color:#fff!important;border-radius:3px
}
.em-layout-element.type-POWER_OUTLET{
  background:#fff8db;border:1px solid #f59e0b;border-radius:4px
}
.em-layout-element.type-ELEVATOR{
  border:2px solid #64748b;background:#e2e8f0
}
.em-layout-element.type-STAIR{
  border:1px solid #64748b;
  background:repeating-linear-gradient(0deg,#e2e8f0,#e2e8f0 5px,#64748b 6px,#64748b 7px)
}

@media(max-width:900px){
  .emergency-operational-stage{min-height:0!important}
  .em-unit-summary{min-width:60px;padding:4px 5px}
  .em-unit-summary b{font-size:9px}
  .operational-person{width:19px;height:19px}
}

/* RC2.8.7 - Escala 1:1 y ficha GPS */
:root{--floor-layout-canvas-width:1120px;--floor-layout-canvas-height:700px}
.designer-canvas-scroll,.emergency-operational-scroll{width:100%;overflow:auto;overscroll-behavior:contain;border-radius:12px}
.floor-designer-stage,.emergency-operational-stage{
  width:var(--floor-layout-canvas-width)!important;
  height:var(--floor-layout-canvas-height)!important;
  min-width:var(--floor-layout-canvas-width)!important;
  min-height:var(--floor-layout-canvas-height)!important;
  max-width:none!important;
  aspect-ratio:auto!important;
  flex:0 0 auto
}
.em-unit-summary{z-index:300}
.operational-occupants{position:relative;z-index:350}
.em-layout-element.type-WALL{z-index:5!important}
.occupant-popover{
  position:fixed!important;
  z-index:2147483000!important;
  max-width:calc(100vw - 24px);
  max-height:calc(100vh - 24px);
  overflow:auto;
  background:#081827;
  color:#fff;
  border:1px solid #20374a;
  border-radius:14px;
  padding:14px;
  box-sizing:border-box;
  box-shadow:0 24px 80px rgba(0,0,0,.55);
  display:none
}
.occupant-popover.open{display:block!important}
.occupant-pop-close{position:absolute;right:9px;top:9px;width:30px;height:30px;border:1px solid #365166;border-radius:8px;background:#10283b;color:#fff;cursor:pointer;font-size:18px}
.occupant-phone{display:inline-flex;margin-top:3px;color:#7dd3fc;font-size:13px;font-weight:900;text-decoration:none}
.gps-accuracy{display:block;margin-top:3px;color:#a8b9c9;font-size:9px}
.occupant-map-button{display:flex;align-items:center;justify-content:center;width:100%;margin-top:12px;min-height:42px;background:#0f766e;border-color:#0f766e;color:#fff!important;text-decoration:none}
.occupant-no-map{margin-top:12px;padding:9px 10px;border:1px solid #365166;border-radius:8px;color:#a8b9c9;font-size:10px}
.rescue-phone{margin-top:4px;color:#475569;font-size:10px;font-weight:700}

/* ==========================================================
   RC2.8.8 - Geocerca + dashboard compacto
   ========================================================== */
.emergency-kpi-strip{
  display:grid;
  grid-template-columns:repeat(8,minmax(118px,1fr));
  gap:10px;
  overflow-x:auto;
  padding-bottom:4px;
  margin-bottom:12px;
}
.emergency-kpi-strip .kpi{
  min-width:118px;
  min-height:76px;
  padding:12px 14px;
}
.kpi-false-alarm{
  border-top:4px solid #7c3aed!important;
  background:#faf5ff!important;
}
.kpi-false-alarm .value{color:#6d28d9!important}

.compact-emergency-card{padding:16px 18px!important}
.compact-emergency-card .emergency-title{margin-bottom:8px}
.compact-emergency-card h2{margin:3px 0 0}
.compact-emergency-card p{margin:8px 0;max-width:none}
.emergency-context{font-weight:900;letter-spacing:.06em;text-transform:uppercase}
.emergency-card-actions{display:flex;gap:8px;margin-top:10px}

.emergency-operational-scroll{
  min-height:0!important;
}
.emergency-layout-grid>.card:nth-child(2){
  padding-bottom:10px!important;
}

.rescue-person-grid.compact-grid{
  display:grid;
  grid-template-columns:1fr;
  gap:7px;
}
.compact-rescue-section{padding:12px 14px!important}
.compact-rescue-section .rescue-section-head{margin-bottom:8px}
.compact-rescue-section .rescue-section-head h3{margin:2px 0 0}

.rescue-person-card.compact{
  min-height:0!important;
  padding:0!important;
  border-width:1px!important;
}
.rescue-compact-main{
  display:grid;
  grid-template-columns:52px minmax(190px,1.3fr) minmax(250px,1fr) 125px auto;
  align-items:center;
  gap:10px;
  padding:8px 10px;
}
.rescue-person-card.compact .rescue-card-photo{
  width:48px!important;height:48px!important;border-radius:10px!important
}
.rescue-person-card.compact .rescue-card-main h3{
  margin:1px 0 3px;font-size:13px
}
.rescue-person-card.compact .rescue-kind{font-size:8px}
.rescue-person-card.compact .rescue-location{
  display:flex;gap:8px;align-items:center;flex-wrap:wrap;font-size:9px
}
.rescue-person-card.compact .rescue-location a{
  color:#0f766e;text-decoration:none;font-weight:800
}
.rescue-compact-meta{
  display:flex;gap:14px;align-items:center;flex-wrap:wrap;
  font-size:8px;color:#64748b
}
.rescue-compact-meta span{display:flex;flex-direction:column}
.rescue-compact-meta b{color:#0f172a;font-size:9px;margin-top:2px}
.rescue-person-card.compact .rescue-state{
  min-height:42px!important;padding:6px 9px!important
}
.compact-actions{display:flex!important;gap:5px!important}
.compact-actions .btn{min-width:42px!important;padding:7px 8px!important}

.b-false-alarm{background:#f3e8ff!important;color:#6d28d9!important}
.state-POSSIBLE_FALSE_ALARM{border-color:#7c3aed!important}
.operational-person.state-POSSIBLE_FALSE_ALARM{
  border-color:#7c3aed!important;
  box-shadow:0 0 0 3px #ede9fe!important
}
.em-operational-unit.unit-state-POSSIBLE_FALSE_ALARM{
  outline:3px dashed #7c3aed!important;outline-offset:2px
}
.rescue-pop-status.state-POSSIBLE_FALSE_ALARM{
  background:#6d28d9!important;color:#fff!important
}
.false-alarm-warning{
  margin:10px 0;
  padding:10px;
  border:1px solid #c4b5fd;
  background:#f5f3ff;
  color:#4c1d95;
  border-radius:9px;
  display:flex;
  flex-direction:column;
  gap:3px;
}
.false-alarm-warning b{font-size:12px}
.false-alarm-warning span{font-size:10px}
.false-alarm-warning small{font-size:9px;color:#6d28d9}

.occupant-whatsapp,.mini-whatsapp{
  display:inline-flex!important;
  align-items:center;
  gap:5px;
  color:#16a34a!important;
  font-weight:900!important;
  text-decoration:none!important;
}
.occupant-whatsapp{
  margin-top:7px;
  padding:6px 8px;
  border:1px solid #166534;
  background:#052e16;
  border-radius:7px;
}
.occupant-whatsapp i,.mini-whatsapp i{
  display:grid;
  place-items:center;
  width:17px;height:17px;
  border-radius:50%;
  background:#22c55e;
  color:#fff;
  font-style:normal;
  font-size:10px;
}

.alert-context-preview{
  display:flex;
  gap:10px;
  align-items:center;
  padding:9px 11px;
  margin-bottom:12px;
  border:1px solid #bae6fd;
  background:#f0f9ff;
  border-radius:9px;
  font-size:11px;
}
.alert-context-preview b{color:#0369a1}
.alert-context-preview span{color:#334155}

@media(max-width:1100px){
  .rescue-compact-main{
    grid-template-columns:48px minmax(170px,1fr) minmax(210px,1fr) 110px auto
  }
}
@media(max-width:800px){
  .rescue-compact-main{
    grid-template-columns:48px 1fr auto;
  }
  .rescue-compact-meta{
    grid-column:2/-1;
  }
  .compact-actions{grid-column:2/-1}
}

/* ==========================================================
   RC2.8.9 - Dashboard 3 columnas / plano fit / menu colapsable
   ========================================================== */

/* Hamburguesa disponible también en escritorio */
.shell-menu-toggle{
  display:grid!important;
  place-items:center;
  flex:0 0 40px;
}
.shell-sidebar-hidden .shell-sidebar{
  transform:translateX(-105%);
  pointer-events:none;
}
.shell-sidebar{
  transition:transform .2s ease,left .2s ease;
}
.shell-sidebar-hidden .shell-app{
  grid-template-columns:0 1fr!important;
}
.shell-sidebar-hidden .shell-main{
  grid-column:1/-1!important;
  width:100%!important;
}
.shell-sidebar-hidden .main-frame-wrap{
  width:100%;
}

/* Plano operacional: ajusta al espacio. Sin scroll interno. */
.emergency-operational-scroll{
  width:100%!important;
  height:auto!important;
  overflow:hidden!important;
  border-radius:12px;
}
.emergency-operational-scroll .emergency-operational-stage{
  width:100%!important;
  min-width:0!important;
  max-width:100%!important;
  height:auto!important;
  min-height:0!important;
  aspect-ratio:1120 / 700!important;
}
.emergency-layout-grid{
  align-items:start;
}
.emergency-layout-grid>.card{
  overflow:hidden;
}

/* Residentes: 3 tarjetas por fila */
.rescue-person-grid.compact-grid{
  display:grid!important;
  grid-template-columns:repeat(3,minmax(0,1fr))!important;
  gap:10px!important;
}
.resident-tile{
  min-width:0;
  padding:10px!important;
  border-radius:12px!important;
}
.resident-tile-top{
  display:grid;
  grid-template-columns:46px minmax(0,1fr) auto;
  gap:8px;
  align-items:center;
}
.resident-tile .rescue-card-photo{
  width:44px!important;
  height:44px!important;
  border-radius:9px!important;
}
.resident-tile-main{
  min-width:0;
}
.resident-tile-main h3{
  margin:1px 0 4px!important;
  font-size:11px!important;
  white-space:nowrap;
  overflow:hidden;
  text-overflow:ellipsis;
}
.resident-tile-location{
  display:flex;
  gap:5px;
  flex-wrap:wrap;
}
.resident-tile-location span{
  background:#f1f5f9;
  border-radius:6px;
  padding:3px 5px;
  font-size:8px;
  font-weight:800;
}
.resident-tile-state{
  min-width:66px;
  min-height:44px;
  border-radius:8px;
  padding:5px 6px;
  background:#0e7490;
  color:#fff;
  display:flex;
  flex-direction:column;
  align-items:center;
  justify-content:center;
  font-size:11px;
  font-weight:900;
  text-align:center;
}
.resident-tile-state span{
  font-size:7px;
  margin-top:2px;
}
.resident-tile-contact{
  display:flex;
  align-items:center;
  gap:8px;
  margin-top:7px;
  min-height:22px;
}
.resident-tile-contact>a,
.resident-tile-contact>span{
  font-size:8px;
  font-weight:800;
  color:#0f172a;
  text-decoration:none;
}
.mini-whatsapp.icon-only,
.occupant-whatsapp.icon-only{
  display:inline-grid!important;
  place-items:center;
  width:28px!important;
  height:28px!important;
  min-width:28px!important;
  padding:0!important;
  border-radius:50%!important;
  background:#22c55e!important;
  border:0!important;
  color:#fff!important;
  font-size:16px!important;
}
.mini-whatsapp.icon-only i,
.occupant-whatsapp.icon-only i{
  width:auto!important;
  height:auto!important;
  background:transparent!important;
  font-size:16px!important;
}
.resident-tile-meta{
  display:grid;
  grid-template-columns:repeat(3,1fr);
  gap:5px;
  margin-top:7px;
  padding-top:7px;
  border-top:1px solid #e2e8f0;
}
.resident-tile-meta span{
  min-width:0;
  display:flex;
  flex-direction:column;
}
.resident-tile-meta small{
  font-size:7px;
  color:#64748b;
}
.resident-tile-meta b{
  margin-top:2px;
  font-size:8px;
  overflow:hidden;
  text-overflow:ellipsis;
  white-space:nowrap;
}
.resident-tile-actions{
  display:flex;
  justify-content:flex-end;
  gap:5px;
  margin-top:7px;
}
.resident-tile-actions .btn{
  padding:6px 8px!important;
  min-width:34px!important;
}

/* Configuración de edificios */
.building-config-grid{
  display:grid;
  grid-template-columns:repeat(3,minmax(0,1fr));
  gap:14px;
  margin-bottom:16px;
}
.building-config-card{
  background:#fff;
  border:1px solid #dfe6ed;
  border-radius:14px;
  padding:14px;
  box-shadow:0 8px 30px #1720330b;
}
.building-config-card.active{
  border-color:#0f766e;
  box-shadow:0 0 0 2px rgba(15,118,110,.12);
}
.building-config-head{
  display:flex;
  justify-content:space-between;
  gap:10px;
  align-items:flex-start;
}
.building-config-head h3{
  margin:2px 0 0;
  font-size:15px;
}
.building-config-meta{
  display:flex;
  flex-direction:column;
  gap:6px;
  margin:12px 0;
  color:#64748b;
  font-size:10px;
}
.building-config-meta i{
  width:15px;
  color:#0f766e;
}
.building-config-actions{
  display:flex;
  gap:7px;
}
.building-config-actions .btn{
  flex:1;
}
.building-current-card{
  margin-top:10px;
}
.building-current-head{
  display:flex;
  justify-content:space-between;
  align-items:center;
  gap:12px;
}
.building-current-head h2{
  margin:2px 0 0;
}
.building-current-info{
  display:grid;
  grid-template-columns:repeat(4,minmax(0,1fr));
  gap:10px;
  margin-top:14px;
}
.building-current-info>div{
  background:#f8fafc;
  border:1px solid #e2e8f0;
  border-radius:9px;
  padding:10px;
  display:flex;
  flex-direction:column;
}
.building-current-info span{
  font-size:8px;
  color:#64748b;
}
.building-current-info b{
  margin-top:3px;
  font-size:10px;
}

@media(max-width:1150px){
  .rescue-person-grid.compact-grid{grid-template-columns:repeat(2,minmax(0,1fr))!important}
  .building-config-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
}
@media(max-width:760px){
  .rescue-person-grid.compact-grid{grid-template-columns:1fr!important}
  .building-config-grid{grid-template-columns:1fr}
  .building-current-info{grid-template-columns:1fr 1fr}
  .shell-sidebar-hidden .shell-sidebar{transform:none}
}

/* ==========================================================
   RC2.9.0 - Emergency Command UI approved
   ========================================================== */

/* Main emergency banner */
.command-emergency-banner{
  display:grid;
  grid-template-columns:48px minmax(0,1fr) auto;
  align-items:center;
  gap:14px;
  min-height:82px;
  padding:14px 16px;
  margin-bottom:12px;
  border-radius:12px;
  background:linear-gradient(105deg,#b5161c,#d01018);
  color:#fff;
  box-shadow:0 8px 24px rgba(185,28,28,.16);
}
.command-emergency-icon{
  width:44px;height:44px;
  display:grid;place-items:center;
  font-size:29px;
}
.command-emergency-copy>span{
  font-size:9px;font-weight:900;letter-spacing:.1em;
}
.command-emergency-line{
  display:flex;align-items:center;gap:12px;margin-top:2px;
}
.command-emergency-line h2{
  margin:0;font-size:22px;line-height:1.05;
}
.command-emergency-line>i{
  display:block;width:1px;height:24px;background:rgba(255,255,255,.75)
}
.command-emergency-line>b{
  font-size:10px;letter-spacing:.02em
}
.command-emergency-copy p{
  margin:6px 0 0;
  font-size:10px;
  opacity:.9;
}
.command-emergency-actions{
  display:flex;gap:7px;
}
.command-emergency-actions .btn{
  min-height:40px;
  background:#fff!important;
  color:#991b1b!important;
  border-color:#fee2e2!important;
  font-weight:800;
}

/* KPI row matching approved mockup */
.command-kpis{
  display:grid!important;
  grid-template-columns:repeat(8,minmax(118px,1fr))!important;
  gap:8px!important;
  margin-bottom:12px!important;
}
.command-kpi{
  display:grid!important;
  grid-template-columns:34px 1fr;
  align-items:center;
  gap:8px;
  min-height:70px!important;
  padding:10px 11px!important;
  border:1px solid #e2e8f0!important;
  border-top:0!important;
  background:#fff!important;
}
.command-kpi>i{
  font-size:22px;
  text-align:center;
}
.command-kpi>div{
  display:flex;
  flex-direction:column;
}
.command-kpi span{
  font-size:8px;color:#64748b;
}
.command-kpi b{
  margin-top:2px;font-size:21px;color:#0f172a;
}
.command-kpi.kpi-total>i{color:#2563eb}
.command-kpi.kpi-alerted>i{color:#f59e0b}
.command-kpi.kpi-ok>i{color:#16a34a}
.command-kpi.kpi-evacuating>i{color:#2563eb}
.command-kpi.kpi-help>i{color:#dc2626}
.command-kpi.kpi-no-report>i{color:#fb923c}
.command-kpi.kpi-safe>i{color:#22c55e}
.command-kpi.kpi-false-alarm>i{color:#9333ea}

/* Operational plan: crop blank bottom without modifying geometry */
.emergency-operational-scroll{
  position:relative;
  overflow:hidden!important;
  transition:height .15s ease;
}
.emergency-operational-stage{
  transform-origin:top left;
}
.emergency-layout-grid{
  grid-template-columns:205px minmax(0,1fr)!important;
  gap:10px!important;
}
.emergency-layout-grid>.card{
  padding:12px!important;
}
.emergency-layout-grid .section-title{
  margin:0 0 8px!important;
  font-size:13px!important;
}
.floor-toolbar{
  margin-bottom:5px!important;
}
.floor-toolbar h3{
  margin:2px 0 0!important;
  font-size:16px!important;
}

/* Residents section */
.command-residents-section{
  padding:12px!important;
}
.command-residents-head{
  display:flex;
  justify-content:space-between;
  align-items:center;
  margin-bottom:9px;
}
.command-residents-head h3{
  margin:0;
  font-size:15px;
}
.command-residents-head>div:first-child>span{
  display:block;
  margin-top:4px;
  color:#64748b;
  font-size:8px;
}
.command-view-toggle{
  display:flex;
  align-items:center;
  gap:5px;
  color:#64748b;
  font-size:8px;
}
.command-view-toggle button{
  width:30px;height:30px;
  display:grid;place-items:center;
  padding:0;
  border:1px solid #dbe3ea;
  border-radius:7px;
  background:#fff;
  color:#475569;
}
.command-view-toggle button.active{
  background:#10283b;color:#fff;border-color:#10283b;
}

.resident-command-grid{
  display:grid;
  grid-template-columns:repeat(3,minmax(0,1fr));
  gap:12px;
}
.resident-command-card{
  position:relative;
  display:flex;
  flex-direction:column;
  min-width:0;
  border:1.5px solid #22c55e;
  border-radius:11px;
  background:#fff;
  overflow:hidden;
  box-shadow:0 3px 12px rgba(15,23,42,.04);
}
.resident-command-card.state-evacuating{border-color:#3b82f6}
.resident-command-card.state-false-alarm{border-color:#a855f7}
.resident-command-card.state-need-help{border-color:#ef4444}
.resident-command-card.state-no-report{border-color:#f59e0b}

.resident-command-top{
  display:grid;
  grid-template-columns:62px minmax(0,1fr);
  gap:10px;
  padding:12px 12px 7px;
}
.resident-avatar-wrap{
  position:relative;
  width:58px;height:58px;
}
.resident-command-avatar{
  width:58px;height:58px;
  object-fit:cover;
  border-radius:50%;
  border:1px solid #cbd5e1;
  background:#eef2f7;
}
.resident-command-initials{
  display:grid;place-items:center;
  font-size:22px;font-weight:800;color:#64748b;
}
.resident-online-dot{
  position:absolute;
  right:1px;top:1px;
  width:10px;height:10px;
  border-radius:50%;
  background:#10b981;
  border:2px solid #fff;
}
.resident-command-name{
  min-width:0;
}
.resident-command-name h3{
  margin:1px 0 5px;
  font-size:12px;
  white-space:nowrap;
  overflow:hidden;
  text-overflow:ellipsis;
}
.resident-command-tags{
  display:flex;gap:5px;flex-wrap:wrap;
}
.resident-command-tags span{
  padding:3px 6px;
  border-radius:6px;
  background:#f1f5f9;
  font-size:8px;font-weight:800;
}
.resident-command-status{
  display:inline-flex;
  align-items:center;
  gap:4px;
  margin-top:7px;
  padding:4px 8px;
  width:max-content;
  max-width:100%;
  border-radius:999px;
  background:#059669;color:#fff;
  font-size:8px;font-weight:900;
}
.resident-command-status.status-evacuating{background:#2563eb}
.resident-command-status.status-false-alarm{background:#9333ea}
.resident-command-status.status-need-help{background:#dc2626}
.resident-command-status.status-no-report{background:#d97706}

.resident-command-contact{
  display:flex;
  align-items:center;
  gap:10px;
  min-height:32px;
  padding:0 12px 8px;
}
.resident-command-contact>a,
.resident-command-contact>span{
  display:inline-flex;align-items:center;gap:6px;
  color:#0f172a;
  text-decoration:none;
  font-size:9px;
}
.resident-command-contact .resident-wa{
  width:26px;height:26px;
  display:grid;place-items:center;
  border-radius:50%;
  background:#16a34a;
  color:#fff;
  font-size:15px;
}

.resident-command-footer{
  margin-top:auto;
  display:grid;
  grid-template-columns:1fr 1fr 1fr auto;
  gap:7px;
  align-items:center;
  padding:8px 10px;
  border-top:1px solid #e2e8f0;
  background:#fbfdff;
}
.resident-command-footer>div:not(.resident-command-buttons){
  min-width:0;
  display:flex;
  flex-direction:column;
}
.resident-command-footer span{
  font-size:7px;color:#94a3b8;
}
.resident-command-footer b{
  margin-top:2px;
  font-size:9px;
  color:#0f172a;
  white-space:nowrap;
  overflow:hidden;
  text-overflow:ellipsis;
}
.resident-command-footer b.ok{color:#059669}
.resident-command-footer b.danger{color:#dc2626}
.resident-command-buttons{
  display:flex;gap:5px;
}
.resident-icon-btn{
  width:34px;height:34px;
  display:grid;place-items:center;
  border:0;
  border-radius:8px;
  cursor:pointer;
  font-weight:900;
}
.resident-icon-btn.mail{
  background:#0f8b8d;color:#fff;
}
.resident-icon-btn.qr{
  background:#edf2f7;color:#0f172a;
}

/* Hide legacy styles that previously made cards too tall */
.command-residents-section .compact-grid,
.command-residents-section .rescue-person-card{
  all:unset;
}

@media(max-width:1180px){
  .command-kpis{grid-template-columns:repeat(4,minmax(118px,1fr))!important}
  .resident-command-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
}
@media(max-width:760px){
  .command-emergency-banner{grid-template-columns:42px 1fr}
  .command-emergency-actions{grid-column:1/-1}
  .command-kpis{grid-template-columns:repeat(2,minmax(118px,1fr))!important}
  .emergency-layout-grid{grid-template-columns:1fr!important}
  .resident-command-grid{grid-template-columns:1fr}
  .resident-command-footer{grid-template-columns:1fr 1fr 1fr}
  .resident-command-buttons{grid-column:1/-1;justify-content:flex-end}
}

/* RC2.9.1 - Diseño final aprobado */
.emergency-operational-scroll{position:relative;width:100%;min-height:260px;overflow:hidden!important;border-radius:10px}
.emergency-operational-stage{margin:0!important}
.residents-final-section{padding:14px!important}
.residents-final-head{margin-bottom:14px}.residents-final-head h3{margin:0;color:#0f172a;font-size:18px;line-height:1.15}.residents-final-head span{display:block;margin-top:5px;color:#64748b;font-size:9px}
.residents-final-grid{display:grid!important;grid-template-columns:repeat(3,minmax(0,1fr))!important;gap:18px!important}
.resident-final-card{display:flex;flex-direction:column;min-width:0;min-height:232px;overflow:hidden;border:2px solid #22c55e;border-radius:14px;background:#fff}.resident-final-card.state-evacuating{border-color:#3b82f6}.resident-final-card.state-false-alarm{border-color:#a855f7}.resident-final-card.state-need-help{border-color:#ef4444}.resident-final-card.state-no-report{border-color:#f59e0b}
.resident-final-main{flex:1;padding:18px 18px 12px}.resident-final-profile{display:grid;grid-template-columns:82px minmax(0,1fr);gap:18px;align-items:start}.resident-final-avatar-wrap{position:relative;width:82px;height:82px}.resident-final-avatar{display:block;width:82px;height:82px;object-fit:cover;border-radius:50%;border:1px solid #cbd5e1;background:#eef2f7}.resident-final-initials{display:grid;place-items:center;color:#64748b;font-size:28px;font-weight:800}.resident-final-online{position:absolute;top:3px;right:3px;width:12px;height:12px;border-radius:50%;background:#10b981;border:3px solid #fff}
.resident-final-info{min-width:0}.resident-final-info h3{margin:5px 0 9px;color:#0f172a;font-size:16px;font-weight:800;line-height:1.15;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.resident-final-tags{display:flex;gap:7px;flex-wrap:wrap}.resident-final-tags span{padding:5px 9px;border-radius:7px;background:#f1f5f9;color:#0f172a;font-size:10px;font-weight:800}.resident-final-status{display:inline-flex;align-items:center;gap:5px;width:max-content;max-width:100%;margin-top:11px;padding:6px 11px;border-radius:999px;background:#059669;color:#fff;font-size:10px;font-weight:900}.resident-final-status.status-evacuating{background:#2563eb}.resident-final-status.status-false-alarm{background:#9333ea}.resident-final-status.status-need-help{background:#dc2626}.resident-final-status.status-no-report{background:#d97706}
.resident-final-contact{display:flex;align-items:center;gap:10px;margin-top:16px;min-height:40px}.resident-final-phone{display:inline-flex;align-items:center;gap:8px;color:#0f172a;text-decoration:none;font-size:11px}.resident-final-phone b{font-size:11px}.resident-final-action{flex:0 0 38px;width:38px;height:38px;display:grid;place-items:center;padding:0;border:0;border-radius:50%;cursor:pointer;text-decoration:none;font-size:19px}.resident-final-action.whatsapp{background:#16a34a;color:#fff}.resident-final-action.message{background:#0f8b8d;color:#fff}.resident-final-action.qr{background:transparent;color:#111827;font-size:28px}
.resident-final-footer{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;padding:12px 16px 14px;border-top:1px solid #dfe6ed;background:#fbfdff}.resident-final-footer>div{min-width:0;display:flex;flex-direction:column}.resident-final-footer span{color:#94a3b8;font-size:8px}.resident-final-footer b{margin-top:4px;color:#0f172a;font-size:11px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.resident-final-footer b.ok{color:#059669}.resident-final-footer b.danger{color:#dc2626}
@media(max-width:1250px){.residents-final-grid{grid-template-columns:repeat(2,minmax(0,1fr))!important}}@media(max-width:760px){.residents-final-grid{grid-template-columns:1fr!important;gap:10px!important}.resident-final-card{min-height:0}.resident-final-main{padding:13px}.resident-final-profile{grid-template-columns:68px minmax(0,1fr);gap:12px}.resident-final-avatar-wrap,.resident-final-avatar{width:68px;height:68px}.resident-final-info h3{font-size:14px}}

/* ==========================================================
   RC2.9.2 - población consistente + recorte definitivo
   ========================================================== */
.emergency-operational-scroll{
  padding-bottom:0!important;
  margin-bottom:0!important;
}
.emergency-operational-stage{
  margin-bottom:0!important;
}
.emergency-layout-grid>.card{
  padding-bottom:10px!important;
}
.em-unit-summary .operational-occupants{
  max-width:130px;
  flex-wrap:wrap;
}
.residents-final-grid:has(.resident-final-card:nth-child(2):last-child){
  grid-template-columns:repeat(3,minmax(0,1fr))!important;
}

/* ==========================================================
   RC2.9.3 - Canvas auto-fit diseñador
   ========================================================== */
.designer-canvas-scroll{
  width:100%;
  min-height:300px;
  overflow:hidden!important;
  border-radius:12px;
  transition:height .14s ease;
}
.designer-canvas-scroll .floor-designer-stage{
  margin:0!important;
}

/* ==========================================================
   RC2.9.4 - Canvas cropped responsively, no unused area
   ========================================================== */

/* The wrapper defines the visible crop with an inline aspect-ratio.
   The logical stage still represents 1120x700, but scales to available width. */
.designer-canvas-scroll{
  width:100%!important;
  min-height:0!important;
  overflow:hidden!important;
  scrollbar-width:none;
}
.designer-canvas-scroll::-webkit-scrollbar{display:none}
.designer-canvas-scroll .floor-designer-stage{
  width:100%!important;
  min-width:0!important;
  max-width:100%!important;
  height:auto!important;
  min-height:0!important;
  aspect-ratio:1120 / 700!important;
  margin:0!important;
}

.emergency-operational-scroll{
  width:100%!important;
  min-height:0!important;
  overflow:hidden!important;
}
.emergency-operational-scroll .emergency-operational-stage{
  width:100%!important;
  min-width:0!important;
  max-width:100%!important;
  height:auto!important;
  min-height:0!important;
  aspect-ratio:1120 / 700!important;
  margin:0!important;
}

/* Avoid card padding being interpreted visually as unused plan space. */
.emergency-layout-grid>div.card:nth-child(2){
  padding-bottom:8px!important;
}

/* ==========================================================
   RC2.9.6 - Dashboard status visibility
   ========================================================== */
.b-evacuating{background:#2563eb!important;color:#fff!important}
.b-safe{background:#f97316!important;color:#fff!important}
.b-outside{background:#16a34a!important;color:#fff!important}

/* Resident markers on floor plan */
.operational-person{
  width:32px!important;
  height:32px!important;
  border-width:4px!important;
  box-shadow:0 0 0 3px rgba(15,23,42,.06);
}
.operational-person.state-EVACUATING{
  border-color:#2563eb!important;
  box-shadow:0 0 0 4px #dbeafe!important;
}
.operational-person.state-OK,
.operational-person.state-EVACUATED{
  border-color:#f97316!important;
  box-shadow:0 0 0 4px #ffedd5!important;
}
.operational-person.state-OUTSIDE{
  border-color:#16a34a!important;
  box-shadow:0 0 0 4px #dcfce7!important;
}
.operational-person.state-NEED_HELP{
  width:38px!important;
  height:38px!important;
  border-color:#dc2626!important;
  box-shadow:0 0 0 5px #fee2e2!important;
  animation:emergencyHelpPulse 1s infinite;
  position:relative;
  z-index:999!important;
}

/* Colored dots on floor list: larger and clearly visible */
.floor-count-dot{
  width:14px!important;
  height:14px!important;
  border:2px solid #fff;
  box-shadow:0 0 0 1px rgba(15,23,42,.15);
}
.floor-count-dot.help{
  width:18px!important;
  height:18px!important;
  background:#dc2626!important;
  animation:emergencyHelpPulse 1s infinite;
}
.floor-count-dot.warn{background:#f59e0b!important}
.floor-count-dot.ok{background:#16a34a!important}

/* Unit outlines */
.em-operational-unit.unit-state-EVACUATING{
  outline:4px solid #2563eb!important;
  outline-offset:2px!important;
}
.em-operational-unit.unit-state-OK,
.em-operational-unit.unit-state-EVACUATED{
  outline:4px solid #f97316!important;
  outline-offset:2px!important;
}
.em-operational-unit.unit-state-OUTSIDE{
  outline:4px solid #16a34a!important;
  outline-offset:2px!important;
}
.em-operational-unit.unit-state-NEED_HELP{
  outline:5px solid #dc2626!important;
  outline-offset:3px!important;
  animation:emergencyUnitPulse 1s infinite;
}

/* Resident cards */
.resident-final-card.state-evacuating{border-color:#2563eb!important;border-width:3px!important}
.resident-final-card.state-ok,
.resident-final-card.state-evacuated{border-color:#f97316!important;border-width:3px!important}
.resident-final-card.state-outside{border-color:#16a34a!important;border-width:3px!important}
.resident-final-card.state-need-help{
  border-color:#dc2626!important;
  border-width:4px!important;
  animation:emergencyCardPulse 1s infinite;
}
.resident-final-status.status-evacuating{background:#2563eb!important;color:#fff!important}
.resident-final-status.status-ok,
.resident-final-status.status-evacuated{background:#f97316!important;color:#fff!important}
.resident-final-status.status-outside{background:#16a34a!important;color:#fff!important}
.resident-final-status.status-need-help{
  background:#dc2626!important;
  color:#fff!important;
  animation:emergencyHelpPulse 1s infinite;
}

/* Popover */
.rescue-pop-status.state-EVACUATING{background:#2563eb!important;color:#fff!important}
.rescue-pop-status.state-OK,
.rescue-pop-status.state-EVACUATED{background:#f97316!important;color:#fff!important}
.rescue-pop-status.state-OUTSIDE{background:#16a34a!important;color:#fff!important}
.rescue-pop-status.state-NEED_HELP{
  background:#dc2626!important;
  color:#fff!important;
  animation:emergencyHelpPulse 1s infinite;
}

.command-kpi.kpi-evacuating{border-top:5px solid #2563eb!important}
.command-kpi.kpi-evacuating>i{color:#2563eb!important}
.command-kpi.kpi-safe{border-top:5px solid #f97316!important}
.command-kpi.kpi-safe>i{color:#f97316!important}
.command-kpi.kpi-help{
  border-top:5px solid #dc2626!important;
  background:#fff1f2!important;
}
.command-kpi.kpi-help>i{
  color:#dc2626!important;
  animation:emergencyHelpPulse 1s infinite;
}

@keyframes emergencyHelpPulse{
  0%,100%{transform:scale(1);filter:brightness(1);box-shadow:0 0 0 0 rgba(220,38,38,.38)}
  50%{transform:scale(1.12);filter:brightness(1.15);box-shadow:0 0 0 9px rgba(220,38,38,0)}
}
@keyframes emergencyUnitPulse{
  0%,100%{outline-color:#dc2626}
  50%{outline-color:#fecaca}
}
@keyframes emergencyCardPulse{
  0%,100%{box-shadow:0 0 0 0 rgba(220,38,38,.28)}
  50%{box-shadow:0 0 0 8px rgba(220,38,38,0)}
}
@media(prefers-reduced-motion:reduce){
  .operational-person.state-NEED_HELP,
  .floor-count-dot.help,
  .em-operational-unit.unit-state-NEED_HELP,
  .resident-final-card.state-need-help,
  .resident-final-status.status-need-help,
  .rescue-pop-status.state-NEED_HELP,
  .command-kpi.kpi-help>i{
    animation:none!important;
  }
}

/* ==========================================================
   RC2.9.8 - Modal global aislado del plano
   ========================================================== */
body.modal-open-global{
  overflow:hidden!important;
}

.modal-host-global{
  position:fixed!important;
  inset:0!important;
  z-index:2147483600!important;
  display:grid!important;
  place-items:center!important;
  padding:18px!important;
  box-sizing:border-box!important;
  isolation:isolate!important;
  background:transparent!important;
}

.modal-backdrop-global{
  position:absolute!important;
  inset:0!important;
  z-index:0!important;
  background:rgba(15,23,42,.70)!important;
  backdrop-filter:blur(2px);
}

.modal-box-global{
  position:relative!important;
  z-index:2!important;
  width:min(680px,calc(100vw - 32px))!important;
  max-width:680px!important;
  max-height:calc(100dvh - 36px)!important;
  overflow:auto!important;
  margin:0!important;
  transform:none!important;
  background:#fff!important;
  border-radius:16px!important;
  box-shadow:0 28px 90px rgba(0,0,0,.48)!important;
  isolation:isolate!important;
}

.modal-box-global .modal-head{
  position:sticky!important;
  top:0!important;
  z-index:10!important;
  background:#fff!important;
}

/* El canvas nunca puede competir visualmente con un modal abierto. */
body.modal-open-global .emergency-operational-stage,
body.modal-open-global .floor-designer-stage,
body.modal-open-global .em-layout-element,
body.modal-open-global .em-operational-unit,
body.modal-open-global .occupant-popover{
  z-index:auto!important;
}

@media(max-width:700px){
  .modal-host-global{
    padding:8px!important;
    align-items:end!important;
  }
  .modal-box-global{
    width:100%!important;
    max-width:none!important;
    max-height:92dvh!important;
    border-radius:16px 16px 0 0!important;
  }
}

/* ==========================================================
   RC2.10.2 - Elemento Texto editable
   ========================================================== */
.layout-element.type-TEXT{
  display:flex!important;
  align-items:center!important;
  justify-content:center!important;
  overflow:visible!important;
  padding:3px 5px;
  box-sizing:border-box;
}
.layout-text-content{
  width:100%;
  line-height:1.15;
  white-space:pre-wrap;
  overflow-wrap:anywhere;
  pointer-events:none;
}
.prop-field textarea,
.prop-field select{
  width:100%;
  box-sizing:border-box;
  border:1px solid #d7e0e8;
  border-radius:7px;
  background:#fff;
  color:#0f172a;
  padding:8px 9px;
  font:inherit;
}
.prop-field textarea{
  resize:vertical;
  min-height:76px;
}

/* RC2.10.4 - Error visible de carga de emergencia */
.emergency-load-error{
  display:flex;
  align-items:flex-start;
  gap:14px;
  max-width:760px;
  margin:18px auto;
  padding:18px!important;
  border:1px solid #fecaca!important;
  background:#fff7f7!important;
}
.emergency-load-error-icon{
  width:44px;height:44px;
  flex:0 0 44px;
  display:grid;place-items:center;
  border-radius:50%;
  background:#b91c1c;
  color:#fff;
  font-size:20px;
}
.emergency-load-error h3{margin:0 0 6px;color:#7f1d1d}
.emergency-load-error p{margin:0 0 12px;color:#475569}

/* ==========================================================
   RC2.10.9 - Simulacros
   ========================================================== */
.btn-simulation{
  background:#f97316!important;
  border-color:#ea580c!important;
  color:#fff!important;
}
.btn-simulation:hover{background:#ea580c!important}
.page-actions{
  display:flex;
  gap:8px;
  flex-wrap:wrap;
}
.command-emergency-banner.is-simulation{
  background:linear-gradient(135deg,#ea580c,#f59e0b)!important;
  border-color:#c2410c!important;
}
.simulation-chip,
.simulation-table-tag{
  display:inline-flex;
  align-items:center;
  padding:3px 7px;
  border-radius:999px;
  background:#fff7ed;
  color:#c2410c;
  font-weight:900;
  font-size:.72em;
}
.simulation-modal-warning{
  display:flex;
  gap:10px;
  align-items:flex-start;
  margin:8px 0 14px;
  padding:12px;
  border:1px solid #fdba74;
  border-radius:10px;
  background:#fff7ed;
  color:#9a3412;
}
.simulation-modal-warning>i{
  margin-top:2px;
  color:#f97316;
  font-size:20px;
}
.simulation-modal-warning>div{
  display:flex;
  flex-direction:column;
  gap:3px;
}
.emergency-card.simulation{
  background:linear-gradient(135deg,#c2410c,#f97316)!important;
}
.emergency-card.simulation .status-pill{
  background:#fff7ed!important;
  color:#c2410c!important;
}

/* ==========================================================
   RC2.10.12 - Bitácora operacional administrativa
   ========================================================== */
.audit-timeline{
  display:flex;
  flex-direction:column;
  gap:8px;
  padding:4px 2px 10px;
}
.audit-timeline-item{
  display:flex;
  gap:10px;
  padding:10px;
  border:1px solid #dbe4ec;
  border-radius:10px;
  background:#fff;
}
.audit-timeline-item.dir-ADMIN_TO_RESIDENT{border-left:4px solid #0f766e}
.audit-timeline-item.dir-RESIDENT_TO_ADMIN{border-left:4px solid #2563eb}
.audit-timeline-item.dir-SYSTEM{border-left:4px solid #94a3b8}
.audit-timeline-icon{
  width:35px;height:35px;flex:0 0 35px;
  display:grid;place-items:center;
  border-radius:50%;
  background:#eef2f7;color:#334155;
}
.audit-timeline-body{min-width:0;flex:1}
.audit-timeline-head{
  display:flex;justify-content:space-between;gap:10px;
}
.audit-timeline-head>div{display:flex;flex-direction:column}
.audit-timeline-head b{font-size:12px}
.audit-timeline-head span,.audit-timeline-head time{color:#64748b;font-size:9px}
.audit-timeline-body>strong{display:block;margin-top:6px;font-size:11px}
.audit-timeline-body p{margin:5px 0;color:#334155;font-size:10px;line-height:1.4}
.audit-timeline-meta{display:flex;gap:8px;flex-wrap:wrap;margin-top:5px}
.audit-timeline-meta span,.audit-timeline-meta a{
  padding:3px 6px;border-radius:999px;
  background:#f1f5f9;color:#475569;
  font-size:8px;font-weight:700;text-decoration:none
}
.audit-empty{padding:24px;text-align:center;color:#64748b}
.resident-final-action.audit{background:#475569!important;color:#fff!important}

/* ==========================================================
   RC2.10.13 - Dashboard Operacional Profesional
   ========================================================== */
.ops-normal-banner,.ops-alert-banner{border-radius:14px;margin-bottom:12px;overflow:hidden}
.ops-normal-banner{display:flex;align-items:center;gap:14px;padding:16px 18px;background:linear-gradient(100deg,#073c37,#0f766e);color:#fff}
.ops-normal-icon{width:48px;height:48px;border-radius:12px;background:#ffffff18;display:grid;place-items:center;font-size:24px}
.ops-normal-banner>div:nth-child(2){flex:1}.ops-normal-banner span,.ops-panel-head span{font-size:9px;font-weight:800;letter-spacing:.08em;color:#64748b}.ops-normal-banner span{color:#a7f3d0}.ops-normal-banner h2{margin:3px 0;font-size:19px}.ops-normal-banner p{margin:0;font-size:10px;color:#d1fae5}
.ops-kpi-row,.ops-emergency-kpis{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:9px;margin-bottom:12px}
.ops-emergency-kpis{grid-template-columns:repeat(5,minmax(0,1fr))}
.ops-kpi{min-height:78px;border:1px solid #dbe4ec;border-radius:12px;background:#fff;padding:11px;display:flex;align-items:center;gap:10px;box-shadow:0 3px 12px #0f172a08}
.ops-kpi-icon{width:36px;height:36px;display:grid;place-items:center;border-radius:10px;background:#eef2f7;color:#475569;font-size:16px}
.ops-kpi>div:last-child{display:flex;flex-direction:column;min-width:0}.ops-kpi span{font-size:9px;color:#64748b}.ops-kpi strong{font-size:22px;line-height:1.05;color:#0f172a}.ops-kpi small{font-size:8px;color:#94a3b8}
.ops-kpi.safe .ops-kpi-icon{background:#dcfce7;color:#16a34a}.ops-kpi.inside .ops-kpi-icon{background:#ffedd5;color:#ea580c}.ops-kpi.help .ops-kpi-icon{background:#fee2e2;color:#dc2626}.ops-kpi.confirm .ops-kpi-icon{background:#ede9fe;color:#7c3aed}.ops-kpi.pending .ops-kpi-icon{background:#e2e8f0;color:#64748b}
.ops-alert-banner{min-height:82px;display:grid;grid-template-columns:60px 1fr auto auto minmax(210px,270px);align-items:stretch;background:linear-gradient(100deg,#7f1d1d,#b91c1c);color:#fff;box-shadow:0 8px 24px #991b1b22}
.ops-alert-banner.simulation{background:linear-gradient(100deg,#6d28d9,#7c3aed)}
.ops-alert-mark{display:grid;place-items:center;font-size:25px;background:#00000016}.ops-alert-title{padding:11px 14px;display:flex;flex-direction:column;justify-content:center}.ops-alert-title>span{font-size:8px;font-weight:900}.ops-alert-title h2{margin:2px 0;font-size:18px}.ops-alert-title small{font-size:9px;color:#fecaca}
.ops-alert-detected,.ops-alert-clock{padding:10px 18px;border-left:1px solid #ffffff1f;display:flex;flex-direction:column;justify-content:center;align-items:center}.ops-alert-detected span,.ops-alert-clock span{font-size:8px;color:#fecaca}.ops-alert-detected b{font-size:11px}.ops-alert-clock strong{font-size:22px;font-weight:500;letter-spacing:.04em}
.ops-live-button{margin:10px;display:flex;align-items:center;gap:10px;padding:0 14px;border-radius:9px;background:#fff;color:#991b1b;text-decoration:none}.ops-live-button>span{display:flex;flex:1;flex-direction:column;font-size:10px;font-weight:900}.ops-live-button small{font-size:8px;font-weight:500;color:#64748b}
.ops-command-grid,.ops-grid-normal{display:grid;grid-template-columns:1.45fr .9fr .82fr;gap:10px;align-items:stretch}
.ops-grid-normal{grid-template-columns:repeat(2,minmax(0,1fr))}
.ops-panel{border:1px solid #dbe4ec;border-radius:12px;background:#fff;padding:12px;box-shadow:0 3px 12px #0f172a08;min-width:0}
.ops-panel-head{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:10px}.ops-panel-head>div{display:flex;flex-direction:column}.ops-panel-head h3{margin:1px 0;font-size:12px;color:#0f172a}.ops-panel-head>a{font-size:8px;text-decoration:none;color:#0f766e;font-weight:800}
.ops-live-building{grid-column:1;grid-row:1}.ops-critical{grid-column:2;grid-row:1}.ops-actions{grid-column:3;grid-row:1 / span 2}.ops-occupancy{grid-column:1;grid-row:2}.ops-updates{grid-column:2;grid-row:2}.ops-activity-panel{grid-column:1 / span 2;grid-row:3}
.ops-floor-live{display:flex;flex-direction:column;gap:8px;max-height:250px;overflow:auto}.ops-floor-live section{border:1px solid #e2e8f0;border-radius:8px;padding:7px}.ops-floor-title{display:flex;justify-content:space-between;margin-bottom:6px;font-size:8px;color:#64748b}.ops-floor-title b{font-size:10px;color:#0f172a}
.ops-unit-live{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:5px}.ops-unit-live>div{height:38px;border:1px solid #e2e8f0;border-radius:6px;display:flex;align-items:center;justify-content:center;gap:4px;font-size:8px;background:#f8fafc}.ops-unit-live>div i{font-size:8px}.ops-unit-live .safe{border-color:#86efac;background:#f0fdf4;color:#15803d}.ops-unit-live .inside{border-color:#fdba74;background:#fff7ed;color:#c2410c}.ops-unit-live .help{border-color:#fca5a5;background:#fef2f2;color:#b91c1c}.ops-unit-live .confirm{border-color:#c4b5fd;background:#f5f3ff;color:#6d28d9}.ops-unit-live .pending{background:#f1f5f9;color:#64748b}
.ops-status-legend{display:flex;gap:12px;margin-top:8px;font-size:8px}.ops-status-legend span:before{content:"";display:inline-block;width:7px;height:7px;border-radius:2px;margin-right:4px}.ops-status-legend .safe:before{background:#22c55e}.ops-status-legend .inside:before{background:#f97316}.ops-status-legend .help:before{background:#ef4444}.ops-status-legend .confirm:before{background:#8b5cf6}.ops-status-legend .pending:before{background:#94a3b8}
.ops-critical-list,.ops-update-list,.ops-activity{display:flex;flex-direction:column}.ops-critical-list>div,.ops-update-list>div,.ops-activity>div{display:flex;align-items:center;gap:8px;padding:7px 2px;border-bottom:1px solid #eef2f7}.ops-critical-list i,.ops-update-list i{width:26px;height:26px;border-radius:50%;display:grid;place-items:center;background:#f1f5f9}.ops-critical-list i.help,.ops-update-list i.help{background:#fee2e2;color:#dc2626}.ops-critical-list i.safe,.ops-update-list i.safe{background:#dcfce7;color:#16a34a}.ops-critical-list i.confirm,.ops-update-list i.confirm{background:#ede9fe;color:#7c3aed}.ops-critical-list i.inside,.ops-update-list i.inside{background:#ffedd5;color:#ea580c}.ops-critical-list>div>span,.ops-update-list>div>span,.ops-activity>div>span{display:flex;flex:1;min-width:0;flex-direction:column}.ops-critical-list b,.ops-update-list b,.ops-activity b{font-size:9px}.ops-critical-list small,.ops-update-list small,.ops-activity small{font-size:8px;color:#64748b;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.ops-critical-list em{font-size:8px;font-style:normal;font-weight:800}.ops-critical-list time,.ops-update-list time,.ops-activity time{font-size:8px;color:#64748b}
.ops-all-safe{padding:22px!important;flex-direction:column!important;text-align:center;border:0!important}.ops-all-safe i{font-size:22px;color:#16a34a}.ops-all-safe span{font-size:8px;color:#64748b}
.ops-actions>a{display:flex;align-items:center;gap:9px;padding:10px 6px;border-bottom:1px solid #eef2f7;text-decoration:none;color:#0f172a}.ops-actions>a>i:first-child{width:29px;height:29px;display:grid;place-items:center;border-radius:8px;background:#eff6ff;color:#2563eb}.ops-actions>a>span{display:flex;flex:1;flex-direction:column}.ops-actions>a b{font-size:9px}.ops-actions>a small{font-size:8px;color:#64748b}.ops-actions>a>i:last-child{font-size:8px;color:#94a3b8}
.ops-donut{width:130px;height:130px;margin:5px auto 12px;border-radius:50%;background:conic-gradient(#2563eb 0 calc(var(--p1)*1%),#22c55e calc(var(--p1)*1%) calc(var(--p2)*1%),#f59e0b calc(var(--p2)*1%) calc(var(--p3)*1%),#8b5cf6 calc(var(--p3)*1%) 100%);display:grid;place-items:center}.ops-donut:before{content:"";width:82px;height:82px;background:#fff;border-radius:50%;grid-area:1/1}.ops-donut>div{position:relative;grid-area:1/1;display:flex;flex-direction:column;text-align:center}.ops-donut strong{font-size:21px}.ops-donut span{font-size:8px;color:#64748b}.ops-legend{display:grid;grid-template-columns:repeat(2,1fr);gap:6px}.ops-legend span{display:grid;grid-template-columns:8px 1fr auto;align-items:center;gap:5px;font-size:8px;color:#64748b}.ops-legend i{width:7px;height:7px;border-radius:2px}.lg-res{background:#2563eb}.lg-vis{background:#22c55e}.lg-staff{background:#f59e0b}.lg-tech{background:#8b5cf6}
.ops-info-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:8px}.ops-info-grid>div{padding:9px;border:1px solid #eef2f7;border-radius:8px;display:flex;flex-direction:column}.ops-info-grid span{font-size:8px;color:#64748b}.ops-info-grid b{font-size:10px}
.ops-floor-panel{grid-column:1 / span 2}.ops-floor-grid{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:7px}.ops-floor-grid>div{padding:10px;text-align:center;border:1px solid #e2e8f0;border-radius:8px;background:#f8fafc;display:flex;flex-direction:column}.ops-floor-grid span,.ops-floor-grid small{font-size:8px;color:#64748b}.ops-floor-grid strong{font-size:17px}
.ops-activity>div>i{font-size:7px;color:#0f766e}.ops-activity>div>em{font-size:8px;font-style:normal;padding:3px 6px;border-radius:99px}.ops-activity>div>em.ok{background:#dcfce7;color:#15803d}.ops-activity>div>em.danger{background:#fee2e2;color:#b91c1c}
@media(max-width:1100px){.ops-kpi-row,.ops-emergency-kpis{grid-template-columns:repeat(3,1fr)}.ops-command-grid{grid-template-columns:1fr 1fr}.ops-actions{grid-column:1 / span 2;grid-row:auto}.ops-activity-panel{grid-column:1 / span 2}.ops-alert-banner{grid-template-columns:50px 1fr auto}.ops-alert-detected{display:none}.ops-alert-clock{border-left:0}.ops-live-button{grid-column:1 / -1;height:45px}.ops-unit-live{grid-template-columns:repeat(4,1fr)}}
@media(max-width:700px){.ops-kpi-row,.ops-emergency-kpis{grid-template-columns:repeat(2,1fr)}.ops-command-grid,.ops-grid-normal{display:block}.ops-panel{margin-bottom:9px}.ops-alert-banner{display:flex;flex-wrap:wrap}.ops-alert-mark{width:50px}.ops-alert-title{flex:1}.ops-alert-clock{width:100px}.ops-live-button{width:100%}.ops-floor-panel{grid-column:auto}.ops-floor-grid{grid-template-columns:repeat(3,1fr)}}

/* RC2.10.14 - Dashboard data fix + comunicación móvil entrante */
.ops-resident-message-alert{
  display:grid;
  grid-template-columns:42px 1fr auto auto;
  gap:10px;
  align-items:center;
  margin:0 0 10px;
  padding:10px 12px;
  border:1px solid #93c5fd;
  border-left:5px solid #2563eb;
  border-radius:10px;
  background:#eff6ff;
}
.ops-rm-icon{
  width:36px;height:36px;border-radius:50%;
  display:grid;place-items:center;
  background:#2563eb;color:#fff;
}
.ops-resident-message-alert>div:nth-child(2){display:flex;flex-direction:column;min-width:0}
.ops-resident-message-alert span{font-size:8px;font-weight:900;color:#1d4ed8;letter-spacing:.06em}
.ops-resident-message-alert b{font-size:10px;color:#0f172a}
.ops-resident-message-alert p{margin:2px 0 0;font-size:9px;color:#334155;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ops-resident-message-alert time{font-size:8px;color:#64748b}
.ops-resident-message-alert a{display:flex;gap:5px;align-items:center;padding:7px 9px;border-radius:7px;background:#2563eb;color:#fff;text-decoration:none;font-size:8px;font-weight:800}
.incoming-resident-panel{
  margin:10px 0;
  border:1px solid #bfdbfe;
  border-radius:12px;
  background:#f8fbff;
  overflow:hidden;
}
.incoming-resident-head{
  display:flex;justify-content:space-between;align-items:center;
  padding:10px 12px;border-bottom:1px solid #dbeafe
}
.incoming-resident-head>div{display:flex;flex-direction:column}
.incoming-resident-head span{font-size:8px;font-weight:900;color:#2563eb;letter-spacing:.06em}
.incoming-resident-head h3{margin:1px 0;font-size:12px}
.incoming-resident-count{
  min-width:24px;height:24px;border-radius:999px;
  display:grid;place-items:center;background:#2563eb;color:#fff!important;
}
.incoming-resident-list{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;padding:10px}
.incoming-resident-list article{display:flex;gap:8px;padding:9px;border:1px solid #dbeafe;border-radius:9px;background:#fff}
.incoming-resident-avatar{width:28px;height:28px;flex:0 0 28px;border-radius:50%;display:grid;place-items:center;background:#dbeafe;color:#2563eb}
.incoming-resident-list article>div:last-child{min-width:0}
.incoming-resident-list b{font-size:9px}
.incoming-resident-list p{margin:2px 0;font-size:8px;color:#334155;line-height:1.35}
.incoming-resident-list small{font-size:7px;color:#64748b}
@media(max-width:900px){.incoming-resident-list{grid-template-columns:1fr}.ops-resident-message-alert{grid-template-columns:36px 1fr}.ops-resident-message-alert time,.ops-resident-message-alert a{grid-column:2}}

/* RC2.10.15 - Comunicación entrante prioritaria */
.emergency-incoming-resident-host:empty{display:none}
.incoming-resident-panel{
  margin:10px 0 12px!important;
  border:1px solid #60a5fa!important;
  border-left:5px solid #2563eb!important;
  background:linear-gradient(90deg,#eff6ff,#f8fbff)!important;
  box-shadow:0 5px 16px rgba(37,99,235,.10);
}
.incoming-resident-head{
  padding:10px 13px!important;
  background:#eff6ff;
}
.incoming-resident-head>div>span{
  display:flex;
  align-items:center;
  gap:5px;
  color:#1d4ed8!important;
}
.incoming-resident-head>div>small{
  margin-top:2px;
  font-size:8px;
  color:#64748b;
}
.incoming-resident-count{
  width:30px!important;
  height:30px!important;
  font-size:12px!important;
  box-shadow:0 0 0 4px rgba(37,99,235,.10);
}
.incoming-resident-list{
  grid-template-columns:repeat(3,minmax(0,1fr))!important;
}
.incoming-resident-message-card{
  cursor:pointer;
  transition:.15s ease;
  border:1px solid #bfdbfe!important;
}
.incoming-resident-message-card:hover{
  transform:translateY(-1px);
  border-color:#2563eb!important;
  box-shadow:0 5px 12px rgba(37,99,235,.12);
}
.incoming-resident-message-card.is-recent{
  border-color:#2563eb!important;
  background:#eff6ff!important;
  box-shadow:inset 3px 0 0 #2563eb;
}
.incoming-resident-message-card.is-recent .incoming-resident-avatar{
  animation:incomingPulse 1.4s infinite;
}
@keyframes incomingPulse{
  0%,100%{box-shadow:0 0 0 0 rgba(37,99,235,.28)}
  50%{box-shadow:0 0 0 7px rgba(37,99,235,0)}
}
.incoming-resident-content{flex:1;min-width:0}
.incoming-resident-meta{
  display:flex;
  justify-content:space-between;
  gap:8px;
  align-items:center;
}
.incoming-resident-meta b{font-size:9px}
.incoming-resident-meta time{font-size:7px;color:#64748b;white-space:nowrap}
.incoming-resident-content p{
  margin:4px 0!important;
  font-size:9px!important;
  line-height:1.35!important;
  color:#0f172a!important;
}
.incoming-resident-content>span{
  display:inline-flex;
  align-items:center;
  gap:4px;
  font-size:7px;
  color:#2563eb;
  font-weight:800;
}
@media(max-width:1000px){
  .incoming-resident-list{grid-template-columns:repeat(2,minmax(0,1fr))!important}
}
@media(max-width:700px){
  .incoming-resident-list{grid-template-columns:1fr!important}
}

/* ==========================================================
   RC2.10.21 - Shell SPA persistente + hamburguesa móvil
   ========================================================== */
.shell-mobile-backdrop{
  display:none;
  position:fixed;
  inset:0;
  z-index:1490;
  border:0;
  padding:0;
  margin:0;
  background:rgba(2,12,23,.55);
  backdrop-filter:blur(1px);
}
.shell-sidebar{
  z-index:1500!important;
}
.shell-menu-toggle{
  position:relative;
  z-index:1510;
  cursor:pointer;
  touch-action:manipulation;
  -webkit-tap-highlight-color:transparent;
}
.main-frame{
  transition:opacity .08s ease;
}

@media(max-width:760px){
  body.shell-body{
    overflow:hidden!important;
  }

  .shell-app{
    display:block!important;
    width:100%!important;
    height:100dvh!important;
  }

  .shell-main{
    width:100%!important;
    height:100dvh!important;
    margin:0!important;
  }

  .shell-topbar{
    position:relative;
    z-index:1400;
    min-height:58px;
    padding:8px 10px!important;
  }

  .shell-top-left{
    min-width:0;
    width:100%;
  }

  .shell-menu-toggle{
    display:grid!important;
    place-items:center!important;
    width:42px!important;
    height:42px!important;
    flex:0 0 42px!important;
  }

  .building-select{
    min-width:0!important;
    max-width:calc(100vw - 120px)!important;
  }

  .shell-sidebar,
  .shell-sidebar-hidden .shell-sidebar{
    display:flex!important;
    position:fixed!important;
    top:0!important;
    bottom:0!important;
    left:0!important;
    width:min(82vw,290px)!important;
    max-width:290px!important;
    transform:translateX(-105%)!important;
    transition:transform .20s ease!important;
    pointer-events:none!important;
    visibility:hidden;
  }

  .shell-menu-open .shell-sidebar,
  .shell-menu-open.shell-sidebar-hidden .shell-sidebar{
    transform:translateX(0)!important;
    pointer-events:auto!important;
    visibility:visible;
  }

  .shell-menu-open .shell-mobile-backdrop{
    display:block;
  }

  .shell-menu-open{
    overflow:hidden!important;
  }

  .main-frame-wrap{
    width:100%!important;
    min-width:0!important;
  }
}

/* ==========================================================
   RC2.11.0 - Dashboard Operacional según propuesta aprobada
   ========================================================== */
.pro-dashboard{display:flex;flex-direction:column;gap:10px}
.dashboard-sim-btn,.dashboard-alert-btn{color:#fff!important;text-decoration:none;border:0!important;font-weight:800}
.dashboard-sim-btn{background:#f97316!important}.dashboard-alert-btn{background:#c81e1e!important}
.pro-status-bar{display:grid;grid-template-columns:46px 1fr auto auto;gap:12px;align-items:center;padding:12px 14px;border-radius:11px;color:#fff}
.pro-status-bar.normal{background:linear-gradient(90deg,#064e3b,#0f766e)}
.pro-status-bar.active{background:linear-gradient(90deg,#991b1b,#dc2626)}
.pro-status-bar.simulation{background:linear-gradient(90deg,#9a3412,#f97316)}
.pro-status-bar>i{width:38px;height:38px;border-radius:10px;background:#ffffff18;display:grid;place-items:center;font-size:19px}
.pro-status-bar>div:nth-child(2){display:flex;flex-direction:column;min-width:0}
.pro-status-bar span{font-size:8px;font-weight:800;letter-spacing:.06em}.pro-status-bar b{font-size:17px}.pro-status-bar small{font-size:8px;opacity:.8}
.pro-status-bar>a{display:flex;gap:8px;align-items:center;color:#fff;text-decoration:none;padding:9px 12px;border:1px solid #ffffff55;border-radius:8px;font-size:9px;font-weight:800}
.pro-event-time{align-items:flex-end}.pro-event-time>b{font-size:18px!important;font-variant-numeric:tabular-nums}
.pro-system-dot{font-size:9px;color:#d1fae5}
.pro-kpi-grid{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:8px}
.pro-kpi{display:flex;align-items:center;gap:9px;padding:10px 12px;border:1px solid #dfe7ee;border-radius:10px;background:#fff;box-shadow:0 2px 8px #0f172a08}
.pro-kpi>i{width:34px;height:34px;border-radius:50%;display:grid;place-items:center;font-size:16px}
.pro-kpi>div{display:flex;flex-direction:column}.pro-kpi span{font-size:8px;color:#64748b}.pro-kpi b{font-size:20px;line-height:1.05}.pro-kpi small{font-size:7px;color:#94a3b8}
.pro-kpi.res>i{background:#d1fae5;color:#047857}.pro-kpi.alert>i{background:#ffedd5;color:#f97316}.pro-kpi.ok>i{background:#dcfce7;color:#16a34a}.pro-kpi.danger>i{background:#fee2e2;color:#dc2626}.pro-kpi.msg>i{background:#ede9fe;color:#7c3aed}
.pro-dashboard-grid{display:grid;grid-template-columns:1.05fr 1.22fr 1.7fr;gap:10px;align-items:start}
.pro-col-left,.pro-col-right{display:flex;flex-direction:column;gap:10px}
.pro-card{background:#fff;border:1px solid #dfe7ee;border-radius:10px;padding:11px;box-shadow:0 2px 8px #0f172a08;min-width:0}
.pro-card-head{display:flex;justify-content:space-between;align-items:center;gap:8px;margin-bottom:8px}.pro-card-head>div{display:flex;flex-direction:column}.pro-card-head h3{margin:0;font-size:11px;color:#0f172a}.pro-card-head small{font-size:7px;color:#94a3b8}.pro-card-head a{font-size:7px;color:#2563eb;text-decoration:none}
.pro-message-list{display:flex;flex-direction:column;gap:6px}.pro-message-list article{display:flex;gap:8px;padding:7px;border:1px solid #e5e7eb;border-radius:8px}.pro-message-list article>div:last-child{flex:1;min-width:0}.msg-avatar{width:29px;height:29px;flex:0 0 29px;border-radius:50%;display:grid;place-items:center;color:#fff}.msg-avatar.safe{background:#22c55e}.msg-avatar.pending{background:#f59e0b}.msg-avatar.help{background:#dc2626}.msg-avatar.outside{background:#16a34a}.msg-avatar.evacuating{background:#2563eb}.msg-avatar.confirm{background:#7c3aed}
.msg-title{display:flex;align-items:center;gap:5px}.msg-title b{font-size:8px;flex:1}.msg-title time{font-size:7px;color:#64748b}.pro-message-list p{margin:3px 0 0;font-size:7px;color:#475569;line-height:1.3}
.state-pill{padding:2px 4px;border-radius:999px;font-size:6px}.state-pill.safe{background:#dcfce7;color:#15803d}.state-pill.pending{background:#ffedd5;color:#c2410c}.state-pill.help{background:#fee2e2;color:#b91c1c}.state-pill.evacuating{background:#dbeafe;color:#1d4ed8}.state-pill.confirm{background:#ede9fe;color:#6d28d9}
.pro-donut-wrap{display:flex;align-items:center;justify-content:center;gap:18px;padding:6px}
.pro-donut{width:112px;height:112px;border-radius:50%;background:conic-gradient(#22c55e 0 calc(var(--a)*1%),#ef4444 calc(var(--a)*1%) calc(var(--h)*1%),#7c3aed calc(var(--h)*1%) calc(var(--o)*1%),#f59e0b calc(var(--o)*1%) 100%);display:grid;place-items:center;position:relative}
.pro-donut:before{content:"";position:absolute;width:70px;height:70px;background:#fff;border-radius:50%}.pro-donut>div{z-index:1;text-align:center;display:flex;flex-direction:column}.pro-donut b{font-size:18px}.pro-donut span{font-size:7px;color:#64748b}
.pro-donut-stats{display:flex;flex-direction:column;gap:7px}.pro-donut-stats span{font-size:7px;color:#64748b}.pro-donut-stats b{font-size:10px;color:#0f172a;margin-right:4px}.pro-donut-stats .safe:before,.pro-donut-stats .pending:before,.pro-donut-stats .help:before,.pro-donut-stats .outside:before{content:"";display:inline-block;width:7px;height:7px;border-radius:50%;margin-right:5px}.pro-donut-stats .safe:before{background:#22c55e}.pro-donut-stats .pending:before{background:#f59e0b}.pro-donut-stats .help:before{background:#ef4444}.pro-donut-stats .outside:before{background:#7c3aed}
.pro-events-list{display:flex;flex-direction:column}.pro-events-list article{display:flex;gap:7px;align-items:center;padding:6px 0;border-bottom:1px solid #eef2f7}.pro-events-list article>i{width:20px;color:#dc2626}.pro-events-list article>div{display:flex;flex:1;min-width:0;flex-direction:column}.pro-events-list b{font-size:7px}.pro-events-list small{font-size:6px;color:#64748b}.pro-events-list span{font-size:6px;padding:2px 5px;border-radius:999px}.pro-events-list .active{background:#fee2e2;color:#b91c1c}.pro-events-list .closed{background:#dcfce7;color:#15803d}
.pro-building-card{min-height:610px}
.building-state-legend{display:flex;flex-wrap:wrap;gap:9px;margin-bottom:8px;font-size:6px;color:#475569}.building-state-legend i,.dashboard-map-legend i{display:inline-block;width:7px;height:7px;border-radius:50%;margin-right:3px}.building-state-legend i.safe,.dashboard-map-legend i.safe{background:#22c55e}.building-state-legend i.pending,.dashboard-map-legend i.pending{background:#f59e0b}.building-state-legend i.help,.dashboard-map-legend i.help{background:#ef4444}.building-state-legend i.outside{background:#94a3b8}
.building-state-matrix{display:flex;flex-direction:column;gap:3px;overflow:auto;max-height:560px;padding-right:2px}
.building-matrix-head,.building-matrix-row{display:grid;grid-template-columns:50px repeat(7,minmax(24px,1fr));gap:4px;align-items:center}
.building-matrix-head{position:sticky;top:0;background:#fff;z-index:2;padding-bottom:4px;border-bottom:1px solid #e5e7eb}.building-matrix-head span,.building-matrix-head b,.building-matrix-row>b{font-size:7px;text-align:center}
.matrix-unit{height:23px;border:0;border-radius:4px;color:#fff;display:flex;align-items:center;justify-content:center;gap:3px;cursor:pointer}.matrix-unit i{font-size:7px}.matrix-unit small{font-size:6px}.matrix-unit.safe{background:#43b95f}.matrix-unit.pending{background:#f59e0b}.matrix-unit.help{background:#ef3f35}.matrix-unit.outside{background:#94a3b8}.matrix-unit.evacuating{background:#2563eb}.matrix-unit.confirm{background:#7c3aed}.matrix-unit.empty{background:#f1f5f9}
.dashboard-map{height:250px;position:relative;overflow:hidden;border:1px solid #e5e7eb;border-radius:8px;background:#eef2f7}.dashboard-map iframe{position:absolute;inset:0;width:100%;height:100%;border:0;filter:saturate(.75) contrast(.95)}.map-radius-200{position:absolute;left:50%;top:50%;width:72%;aspect-ratio:1;border:1.5px dashed #1e3a5f;border-radius:50%;transform:translate(-50%,-50%);background:#dbeafe20;pointer-events:none}.map-building{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);width:38px;height:38px;background:#0f2742;color:#fff;border-radius:50%;display:grid;place-items:center;box-shadow:0 0 0 5px #ffffffaa}.map-resident{position:absolute;transform:translate(-50%,-50%);width:24px;height:24px;border:3px solid #fff;border-radius:50%;color:#fff;display:grid;place-items:center;box-shadow:0 2px 8px #0f172a44}.map-resident.safe,.map-resident.outside{background:#22c55e}.map-resident.pending{background:#f59e0b}.map-resident.help{background:#dc2626}.map-resident.evacuating{background:#2563eb}.map-resident.confirm{background:#7c3aed}.map-distance-label{position:absolute;right:16%;top:25%;padding:2px 5px;background:#0f2742;color:#fff;border-radius:5px;font-size:7px}.dashboard-map-legend{display:flex;gap:12px;margin-top:6px;font-size:6px}
.pro-floor-select{border:1px solid #dfe7ee;border-radius:6px;padding:4px 7px;font-size:8px}
.dashboard-floor-plan{height:300px;border:1px solid #dfe7ee;border-radius:8px;overflow:hidden;background:#f8fafc}.dashboard-plan-stage{position:relative;width:100%;height:100%;overflow:hidden}.dashboard-plan-stage>img{position:absolute;inset:0;width:100%;height:100%;object-fit:contain;opacity:.35}
.mini-unit{position:absolute;transform:translate(-50%,-50%);border:1.5px solid #334155;display:flex;flex-direction:column;align-items:center;justify-content:center;font-size:8px;color:#0f172a;overflow:hidden}.mini-unit b{font-size:10px}.mini-unit small{font-size:6px}.mini-unit.safe{background:#bbf7d0}.mini-unit.pending{background:#fed7aa}.mini-unit.help{background:#fecaca}.mini-unit.outside{background:#dcfce7}.mini-unit.evacuating{background:#bfdbfe}.mini-unit.confirm{background:#ddd6fe}
.mini-element{position:absolute;display:grid;place-items:center;z-index:20;font-size:11px}.mini-element.polygon{border:2px solid}.mini-element.wall{background:#cbd5e1!important;border-color:#334155!important}.type-DOOR{color:#334155}.type-WINDOW{color:#2563eb}.type-EXTINGUISHER{color:#dc2626}.type-EMERGENCY_EXIT{color:#059669}.type-CAMERA{color:#0f172a}
.dashboard-plan-legend{display:flex;gap:10px;padding-top:6px;font-size:6px;color:#475569}
.pro-editor-tip{display:flex;align-items:center;gap:9px;padding:10px;border:1px solid #a7f3d0;background:#ecfdf5;border-radius:9px}.pro-editor-tip>i{color:#059669}.pro-editor-tip>div{display:flex;flex:1;flex-direction:column}.pro-editor-tip b{font-size:8px}.pro-editor-tip span{font-size:7px;color:#475569}.pro-editor-tip a{font-size:7px;text-decoration:none;padding:5px 8px;border:1px solid #059669;border-radius:5px;color:#065f46}
.pro-empty{padding:15px;text-align:center;color:#94a3b8;font-size:8px}
@media(max-width:1200px){.pro-dashboard-grid{grid-template-columns:1fr 1fr}.pro-building-card{grid-column:1/-1;min-height:auto}.pro-col-right{grid-column:1/-1}.pro-kpi-grid{grid-template-columns:repeat(3,1fr)}}
@media(max-width:760px){.pro-kpi-grid{grid-template-columns:repeat(2,1fr)}.pro-dashboard-grid{display:block}.pro-col-left,.pro-col-right,.pro-building-card{margin-bottom:10px}.pro-status-bar{grid-template-columns:36px 1fr}.pro-event-time,.pro-status-bar>a{grid-column:2}.building-matrix-head,.building-matrix-row{grid-template-columns:38px repeat(7,minmax(28px,1fr));min-width:300px}.dashboard-map{height:220px}}

/* ==========================================================
   RC2.11.0 - Editor de polígonos y murallas
   ========================================================== */
.layout-unit{background:transparent!important;border:0!important;overflow:visible!important}
.layout-unit-shape{
  position:absolute;inset:0;
  border-style:solid;
  box-sizing:border-box;
  pointer-events:none;
}
.layout-unit.polygon-unit .layout-unit-shape{
  filter:drop-shadow(0 1px 1px rgba(15,23,42,.12));
}
.layout-unit-card{position:relative;z-index:3}
.polygon-element{background:transparent!important;overflow:visible!important}
.layout-polygon-shape{
  position:absolute;inset:0;
  border:2px solid;
  box-sizing:border-box;
  filter:drop-shadow(0 1px 1px rgba(15,23,42,.12));
}
.type-WALL_POLYGON .layout-polygon-shape{
  border-width:3px;
  background:#cbd5e1;
}
.polygon-vertex{
  position:absolute;
  width:10px;height:10px;
  margin-left:-5px;margin-top:-5px;
  border-radius:50%;
  border:2px solid #fff;
  background:#3b82f6;
  box-shadow:0 0 0 1px #1d4ed8;
  z-index:90;
  cursor:crosshair;
}
.polygon-property-actions{
  display:flex;
  flex-direction:column;
  gap:6px;
  margin-top:8px;
  padding:8px;
  border:1px solid #dbeafe;
  border-radius:8px;
  background:#eff6ff;
}
.polygon-property-actions small{
  color:#475569;
  font-size:9px;
  line-height:1.35;
}
.polygon-draft-layer{
  position:absolute;
  inset:0;
  z-index:100;
  pointer-events:none;
}
.polygon-draft-layer svg{
  position:absolute;
  inset:0;
  width:100%;
  height:100%;
  overflow:visible;
}
.polygon-draft-layer circle{
  fill:#2563eb;
  stroke:#fff;
  stroke-width:.25;
}
.polygon-draft-layer>span{
  position:absolute;
  left:50%;
  bottom:12px;
  transform:translateX(-50%);
  padding:5px 8px;
  background:#0f172add;
  color:#fff;
  border-radius:6px;
  font-size:9px;
  font-weight:700;
}
.tool-btn[data-tool="POLYGON"],
.tool-btn[data-tool="WALL_POLYGON"]{
  background:#f8fafc;
}
.tool-btn[data-tool="POLYGON"].active,
.tool-btn[data-tool="WALL_POLYGON"].active{
  background:#dbeafe!important;
  color:#1d4ed8!important;
  border-color:#60a5fa!important;
}

/* ==========================================================
   RC2.11.1 - Banner de emergencia compacto en móvil
   ========================================================== */
@media(max-width:760px){
  .command-emergency-banner{
    display:grid!important;
    grid-template-columns:30px minmax(0,1fr)!important;
    gap:7px!important;
    min-height:0!important;
    padding:9px 10px!important;
    margin-bottom:8px!important;
    border-radius:10px!important;
    align-items:start!important;
  }

  .command-emergency-icon{
    width:28px!important;
    height:28px!important;
    font-size:20px!important;
    align-self:center!important;
  }

  .command-emergency-copy{
    min-width:0!important;
  }

  .command-emergency-copy>span{
    display:block!important;
    margin:0 0 1px!important;
    font-size:7px!important;
    line-height:1.1!important;
    letter-spacing:.075em!important;
  }

  .command-emergency-line{
    display:flex!important;
    align-items:center!important;
    flex-wrap:wrap!important;
    gap:4px 6px!important;
    margin:0!important;
    min-width:0!important;
  }

  .command-emergency-line h2{
    margin:0!important;
    font-size:14px!important;
    line-height:1.05!important;
    white-space:nowrap!important;
  }

  .command-emergency-line>i{
    display:none!important;
  }

  .command-emergency-line>b{
    width:100%!important;
    font-size:7px!important;
    line-height:1.15!important;
    white-space:nowrap!important;
    overflow:hidden!important;
    text-overflow:ellipsis!important;
    opacity:.94!important;
  }

  .simulation-chip{
    padding:2px 5px!important;
    font-size:6px!important;
    vertical-align:middle!important;
  }

  .command-emergency-copy p{
    display:-webkit-box!important;
    -webkit-box-orient:vertical!important;
    -webkit-line-clamp:2!important;
    overflow:hidden!important;
    margin:3px 0 0!important;
    font-size:7px!important;
    line-height:1.25!important;
    max-height:18px!important;
  }

  .command-emergency-actions{
    grid-column:1/-1!important;
    display:grid!important;
    grid-template-columns:repeat(3,minmax(0,1fr))!important;
    gap:5px!important;
    margin-top:1px!important;
  }

  .command-emergency-actions .btn{
    min-width:0!important;
    min-height:30px!important;
    height:30px!important;
    padding:4px 5px!important;
    border-radius:7px!important;
    font-size:7px!important;
    line-height:1!important;
    white-space:nowrap!important;
    overflow:hidden!important;
    text-overflow:ellipsis!important;
  }

  .command-emergency-actions .btn i{
    margin-right:3px!important;
    font-size:8px!important;
  }
}

@media(max-width:390px){
  .command-emergency-banner{
    padding:8px!important;
  }

  .command-emergency-line h2{
    font-size:13px!important;
  }

  .command-emergency-actions .btn{
    font-size:6.5px!important;
    padding:3px!important;
  }
}

/* ==========================================================
   RC2.11.2 PORTAL - Tipografía Inter + responsive móvil
   NO aplica a .resident-* / PWA
   ========================================================== */

/* Tipografía de la propuesta aprobada */
html:not(.resident-page),
body:not(.resident-page),
.shell-app,
.frame-body,
.frame-page,
.frame-body button,
.frame-body input,
.frame-body select,
.frame-body textarea,
.shell-app button,
.shell-app input,
.shell-app select{
  font-family:"Inter","Segoe UI",Arial,sans-serif!important;
  -webkit-font-smoothing:antialiased;
  -moz-osx-font-smoothing:grayscale;
  text-rendering:optimizeLegibility;
}
.frame-page .page-head h1{
  font-family:"Inter","Segoe UI",Arial,sans-serif!important;
  font-weight:800!important;
  letter-spacing:-.025em;
}
.frame-page .page-head p{
  font-family:"Inter","Segoe UI",Arial,sans-serif!important;
  font-weight:400;
}

/* El wrapper de acciones debe participar del flujo, nunca superponerse */
.frame-page .page-head #pageActions{
  position:static!important;
  inset:auto!important;
  transform:none!important;
  margin:0!important;
  flex:0 0 auto;
}
.frame-page .page-head #pageActions:empty{display:none!important}

/* Dashboard: botones equivalentes a la propuesta */
.frame-page #pageActions .dashboard-sim-btn,
.frame-page #pageActions .dashboard-alert-btn{
  display:inline-flex!important;
  align-items:center!important;
  justify-content:center!important;
  gap:7px!important;
  min-height:42px;
  padding:0 17px!important;
  border-radius:8px!important;
  font-size:12px!important;
  font-weight:800!important;
  line-height:1.1!important;
  white-space:nowrap!important;
  box-shadow:none!important;
}

/* ----------------------------------------------------------
   MOBILE PORTAL ONLY
   ---------------------------------------------------------- */
@media(max-width:760px){

  /* El shell ocupa exactamente el viewport, sin generar ancho extra */
  html,body{
    max-width:100%;
    overflow-x:hidden;
  }
  .shell-app,
  .shell-main,
  .main-frame-wrap,
  .main-frame,
  .frame-body,
  .frame-page{
    max-width:100%!important;
    min-width:0!important;
  }

  /* Topbar móvil */
  .shell-topbar{
    min-height:58px!important;
    height:auto!important;
    padding:8px 10px!important;
    gap:8px!important;
  }
  .shell-top-left{
    width:min(100%,calc(100vw - 92px))!important;
    min-width:0!important;
    gap:7px!important;
  }
  .shell-menu-toggle{
    display:grid!important;
    place-items:center!important;
    width:40px!important;
    height:40px!important;
    min-width:40px!important;
    flex:0 0 40px!important;
    border-radius:9px!important;
  }
  .building-select{
    width:auto!important;
    min-width:0!important;
    max-width:calc(100vw - 150px)!important;
    height:40px!important;
    padding:0 9px!important;
    font-size:12px!important;
    text-overflow:ellipsis;
  }
  .shell-user{
    min-width:70px!important;
    max-width:76px!important;
    overflow:hidden!important;
    text-align:right!important;
  }
  .shell-user strong{
    display:block;
    max-width:76px;
    overflow:hidden;
    text-overflow:ellipsis;
    white-space:nowrap;
    font-size:9px!important;
  }
  .shell-user span{font-size:7px!important}

  /* Contenido principal */
  .frame-page{
    padding:14px 12px 24px!important;
  }

  /* Título arriba, acciones DEBAJO. Nada absoluto ni superpuesto. */
  .frame-page .page-head{
    display:grid!important;
    grid-template-columns:minmax(0,1fr)!important;
    gap:10px!important;
    align-items:start!important;
    width:100%!important;
    margin:0 0 12px!important;
  }
  .frame-page .page-head>div:first-child{
    min-width:0!important;
    width:100%!important;
  }
  .frame-page .page-head h1{
    margin:0 0 4px!important;
    font-size:22px!important;
    line-height:1.08!important;
    max-width:100%!important;
  }
  .frame-page .page-head p{
    margin:0!important;
    font-size:10px!important;
    line-height:1.35!important;
    max-width:100%!important;
  }

  .frame-page .page-head #pageActions{
    width:100%!important;
    min-width:0!important;
    display:grid!important;
    grid-template-columns:repeat(2,minmax(0,1fr))!important;
    gap:7px!important;
    position:static!important;
  }

  .frame-page #pageActions>a,
  .frame-page #pageActions>button,
  .frame-page #pageActions .btn{
    width:100%!important;
    min-width:0!important;
    max-width:100%!important;
    margin:0!important;
    overflow:hidden!important;
    text-overflow:ellipsis!important;
  }

  .frame-page #pageActions .dashboard-sim-btn,
  .frame-page #pageActions .dashboard-alert-btn{
    min-height:42px!important;
    height:42px!important;
    padding:0 7px!important;
    font-size:10px!important;
    line-height:1.05!important;
    white-space:normal!important;
    text-align:center!important;
  }

  .frame-page #pageActions .dashboard-sim-btn i,
  .frame-page #pageActions .dashboard-alert-btn i{
    flex:0 0 auto;
    font-size:11px!important;
  }

  /* Dashboard profesional: 2 KPI por fila, quinto ocupa ancho natural */
  .pro-kpi-grid{
    grid-template-columns:repeat(2,minmax(0,1fr))!important;
    gap:7px!important;
  }
  .pro-kpi{
    min-width:0!important;
    padding:9px!important;
  }
  .pro-kpi>i{
    width:31px!important;
    height:31px!important;
    flex:0 0 31px!important;
  }
  .pro-kpi b{font-size:18px!important}
  .pro-kpi span{font-size:7px!important}
  .pro-kpi small{font-size:6.5px!important}

  /* Banner dashboard: no invade el ancho */
  .pro-status-bar{
    grid-template-columns:34px minmax(0,1fr)!important;
    gap:8px!important;
    padding:10px!important;
  }
  .pro-status-bar>i{
    width:31px!important;
    height:31px!important;
    font-size:15px!important;
  }
  .pro-status-bar>div:nth-child(2){
    min-width:0!important;
  }
  .pro-status-bar>div:nth-child(2)>b{
    font-size:14px!important;
    line-height:1.08!important;
    white-space:normal!important;
  }
  .pro-status-bar>div:nth-child(2)>small{
    white-space:nowrap!important;
    overflow:hidden!important;
    text-overflow:ellipsis!important;
  }
  .pro-event-time{
    grid-column:1/-1!important;
    display:flex!important;
    flex-direction:row!important;
    align-items:center!important;
    justify-content:space-between!important;
    gap:8px!important;
    padding-top:5px!important;
    border-top:1px solid #ffffff25;
  }
  .pro-event-time>b{font-size:14px!important}
  .pro-status-bar>a{
    grid-column:1/-1!important;
    width:100%!important;
    justify-content:center!important;
    min-height:34px!important;
    padding:6px 8px!important;
    font-size:8px!important;
  }

  /* Centro de emergencias: banner compacto y botones sin solape */
  .command-emergency-banner{
    grid-template-columns:30px minmax(0,1fr)!important;
    gap:7px!important;
    padding:9px 10px!important;
    min-height:0!important;
    height:auto!important;
  }
  .command-emergency-icon{
    width:28px!important;
    height:28px!important;
    font-size:19px!important;
  }
  .command-emergency-line{
    display:flex!important;
    flex-wrap:wrap!important;
    gap:3px 6px!important;
    min-width:0!important;
  }
  .command-emergency-line h2{
    font-size:14px!important;
    line-height:1.05!important;
    white-space:normal!important;
  }
  .command-emergency-line>b{
    width:100%!important;
    min-width:0!important;
    overflow:hidden!important;
    text-overflow:ellipsis!important;
    white-space:nowrap!important;
    font-size:7px!important;
  }
  .command-emergency-copy p{
    margin-top:3px!important;
    font-size:7px!important;
    line-height:1.25!important;
  }
  .command-emergency-actions{
    grid-column:1/-1!important;
    width:100%!important;
    display:grid!important;
    grid-template-columns:repeat(3,minmax(0,1fr))!important;
    gap:5px!important;
    min-width:0!important;
  }
  .command-emergency-actions .btn{
    width:100%!important;
    min-width:0!important;
    max-width:100%!important;
    height:31px!important;
    min-height:31px!important;
    padding:3px 4px!important;
    font-size:7px!important;
    line-height:1!important;
    white-space:nowrap!important;
    overflow:hidden!important;
    text-overflow:ellipsis!important;
  }

  /* Cards / grids no fuerzan ancho desktop */
  .pro-dashboard-grid,
  .pro-col-left,
  .pro-col-right,
  .pro-building-card,
  .pro-card{
    min-width:0!important;
    max-width:100%!important;
  }
  .pro-dashboard-grid{
    display:flex!important;
    flex-direction:column!important;
    width:100%!important;
  }
  .pro-col-left,.pro-col-right,.pro-building-card{
    width:100%!important;
  }
}

@media(max-width:390px){
  .frame-page{
    padding-left:10px!important;
    padding-right:10px!important;
  }
  .frame-page .page-head h1{
    font-size:20px!important;
  }
  .frame-page .page-head #pageActions{
    gap:6px!important;
  }
  .frame-page #pageActions .dashboard-sim-btn,
  .frame-page #pageActions .dashboard-alert-btn{
    font-size:9px!important;
    padding:0 5px!important;
  }
  .command-emergency-actions .btn{
    font-size:6.5px!important;
  }
}

/* ==========================================================
   RC2.11.3 PORTAL - Branding + menú móvil ordenado
   ========================================================== */
:root{--portal-brand-color:#0f766e}

.shell-brand{
  display:flex;
  align-items:center;
  gap:11px;
  padding:6px 8px 18px;
  margin-bottom:4px;
  border-bottom:1px solid #1c2d3f;
  flex:0 0 auto;
}
.shell-brand-logo{
  width:42px;
  height:42px;
  flex:0 0 42px;
  display:grid;
  place-items:center;
  overflow:hidden;
  border-radius:11px;
  background:var(--portal-brand-color,#0f766e);
  color:#fff;
  font-size:19px;
}
.shell-brand-logo img{
  display:block;
  width:100%;
  height:100%;
  object-fit:contain;
  padding:3px;
  background:#fff;
}
.shell-brand-copy{
  min-width:0;
  display:flex;
  flex-direction:column;
}
.shell-brand-copy strong{
  color:#fff;
  font-size:12px;
  font-weight:800;
  line-height:1.18;
}
.shell-brand-copy span{
  margin-top:3px;
  color:#7890a7;
  font-size:9px;
  line-height:1.2;
}
.shell-nav{
  margin-top:6px!important;
}
.shell-nav .nav-item{
  min-height:38px;
  display:flex!important;
  align-items:center!important;
  gap:10px!important;
  width:100%;
  padding:0 10px!important;
  white-space:nowrap!important;
  flex-wrap:nowrap!important;
  overflow:hidden!important;
}
.shell-nav .nav-item>i{
  width:18px;
  min-width:18px;
  text-align:center;
  font-size:12px;
}
.shell-nav .nav-item>span{
  display:block;
  min-width:0;
  overflow:hidden;
  text-overflow:ellipsis;
  white-space:nowrap!important;
}
.shell-nav .nav-item.active{
  border-left-color:var(--portal-brand-color,#0f766e)!important;
}
.shell-nav .nav-title{
  padding-top:12px!important;
  padding-bottom:5px!important;
}

/* Hamburguesa dibujada con CSS: no depende de Font Awesome */
.hamburger-lines{
  display:flex;
  width:20px;
  height:16px;
  flex-direction:column;
  justify-content:space-between;
}
.hamburger-lines i{
  display:block;
  width:20px;
  height:2px;
  border-radius:2px;
  background:#0f172a;
}

.config-brand-separator{
  margin-top:5px;
  padding-top:10px;
  border-top:1px solid #e2e8f0;
}
.config-section-label{
  display:block;
  color:#0f766e;
  font-size:9px;
  font-weight:900;
  letter-spacing:.11em;
}

@media(max-width:760px){
  .shell-sidebar,
  .shell-sidebar-hidden .shell-sidebar{
    width:min(84vw,300px)!important;
    max-width:300px!important;
    padding:14px 12px!important;
    overflow-x:hidden!important;
  }

  .shell-brand{
    order:-10;
    min-height:66px;
    padding:4px 5px 13px!important;
    margin-bottom:2px!important;
  }
  .shell-brand-logo{
    width:45px!important;
    height:45px!important;
    flex-basis:45px!important;
    border-radius:12px!important;
  }
  .shell-brand-copy strong{
    font-size:12px!important;
    white-space:normal!important;
  }
  .shell-brand-copy span{
    font-size:9px!important;
    white-space:nowrap!important;
    overflow:hidden!important;
    text-overflow:ellipsis!important;
  }

  .shell-nav{
    width:100%!important;
    overflow-x:hidden!important;
    margin-top:2px!important;
  }
  .shell-nav .nav-title{
    padding:11px 9px 4px!important;
    font-size:8px!important;
  }
  .shell-nav .nav-item{
    width:100%!important;
    min-height:39px!important;
    height:39px!important;
    padding:0 10px!important;
    gap:9px!important;
    border-radius:8px!important;
    font-size:11px!important;
    line-height:1!important;
  }
  .shell-nav .nav-item>i{
    width:17px!important;
    min-width:17px!important;
    font-size:11px!important;
  }
  .shell-nav .nav-item>span{
    font-size:11px!important;
    line-height:1!important;
    white-space:nowrap!important;
  }

  .sidebar-foot{
    margin-top:auto!important;
    position:static!important;
    width:100%!important;
  }

  .shell-menu-toggle{
    color:#0f172a!important;
    background:#fff!important;
    border:1px solid #cbd5e1!important;
  }
}

@media(max-width:390px){
  .shell-sidebar,
  .shell-sidebar-hidden .shell-sidebar{
    width:86vw!important;
    max-width:290px!important;
  }
}

/* RC2.11.4 */
.shell-top-product-logo{width:34px;height:34px;display:grid;place-items:center;overflow:hidden;border-radius:8px;background:var(--portal-brand-color);color:#fff;flex:0 0 34px}
.shell-top-product-logo img{width:100%;height:100%;object-fit:contain;background:#fff;padding:2px}
.dashboard-community-hero{background-size:cover;background-position:center;border-radius:12px;padding:16px!important;min-height:92px}
.config-image-preview{display:block;max-width:100%;max-height:160px;object-fit:contain;margin-top:8px;border:1px solid #dbe3ea;border-radius:8px;background:#f8fafc}
.brand-logo-preview{max-width:180px}
.product-brand-card{margin-bottom:14px}.product-brand-preview{display:flex;align-items:center;gap:12px;margin-top:10px}.product-brand-preview img{width:54px;height:54px;object-fit:contain;border-radius:10px;border:1px solid #dbe3ea}
@media(max-width:760px){
  .shell-sidebar,.shell-sidebar-hidden .shell-sidebar{
    left:0!important;
    top:0!important;
    bottom:0!important;
    height:100dvh!important;
    display:flex!important;
    flex-direction:column!important;
    align-items:stretch!important;
    justify-content:flex-start!important;
    overflow-y:auto!important;
    overflow-x:hidden!important;
    transform:translateX(-105%)!important;
    visibility:hidden!important;
    pointer-events:none!important;
  }
  .shell-menu-open .shell-sidebar,.shell-menu-open.shell-sidebar-hidden .shell-sidebar{
    transform:translateX(0)!important;
    visibility:visible!important;
    pointer-events:auto!important;
  }
  .shell-brand{flex:0 0 auto!important}
  .shell-nav{display:block!important;flex:0 0 auto!important;width:100%!important}
  .shell-nav .nav-item{display:flex!important}
  .sidebar-foot{flex:0 0 auto!important;margin-top:auto!important}
  .shell-top-product-logo{width:38px;height:38px;flex-basis:38px}
  .shell-top-left{max-width:calc(100vw - 86px)!important}
  .building-select{max-width:calc(100vw - 194px)!important}
  .dashboard-community-hero{min-height:80px;padding:12px!important;background-position:center}
}

/* RC2.11.5 */
.frame-page #pageActions .dashboard-sim-btn,.frame-page #pageActions .dashboard-alert-btn,[data-open-activate]{font-weight:500!important}
.active-event-tabs{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:10px 12px;margin-bottom:10px;background:#fff;border:1px solid #dfe7ee;border-radius:10px}
.active-event-tabs>div:first-child{display:flex;flex-direction:column}.active-event-tabs>div:first-child b{font-size:11px}.active-event-tabs>div:first-child span{font-size:8px;color:#64748b}
.active-event-tabs-list{display:flex;gap:7px;overflow-x:auto}.active-event-tab{display:flex;align-items:center;gap:6px;min-width:max-content;padding:7px 9px;border:1px solid #dbe3ea;border-radius:8px;background:#f8fafc;color:#334155}.active-event-tab.active{border-color:#dc2626;background:#fff1f2;color:#b91c1c}.active-event-tab span{font-size:9px;font-weight:700}.active-event-tab small{font-size:7px;color:#64748b}
.em-operational-unit{cursor:zoom-in}
.plan-view-body{margin:0;background:#09121f;color:#e5edf5;font-family:"Inter","Segoe UI",Arial,sans-serif;overflow:hidden}
.plan-view-shell{height:100dvh;display:grid;grid-template-rows:auto 1fr auto}.plan-view-head{display:flex;justify-content:space-between;align-items:center;padding:10px 14px;background:#07111d;border-bottom:1px solid #20364b}.plan-view-head span{font-size:8px;letter-spacing:.12em;color:#7dd3fc}.plan-view-head h1{margin:2px 0;font-size:20px}.plan-view-head small{color:#94a3b8}.plan-view-head button{border:0;border-radius:8px;padding:9px 13px;background:#ef4444;color:#fff}
.plan-view-canvas{min-height:0;padding:10px}.pv-stage{position:relative;width:100%;height:100%;background-color:#edf3f7;background-size:contain;background-position:center;background-repeat:no-repeat;border-radius:10px;overflow:hidden}.pv-stage:before{content:"";position:absolute;inset:0;background-image:linear-gradient(#dbe4ea55 1px,transparent 1px),linear-gradient(90deg,#dbe4ea55 1px,transparent 1px);background-size:30px 30px}
.pv-unit{position:absolute;box-sizing:border-box;border:2px solid #334155;border-radius:7px;padding:8px;display:flex;flex-direction:column;color:#0f172a;overflow:hidden}.pv-unit b{font-size:13px}.pv-unit small,.pv-unit span{font-size:8px}.pv-unit.safe{background:#bbf7d0}.pv-unit.pending{background:#fed7aa}.pv-unit.help{background:#fecaca;border-color:#dc2626}.pv-unit.evacuating{background:#bfdbfe}.pv-unit.selected{box-shadow:0 0 0 4px #facc15,0 0 0 7px #0f172a}.pv-element{position:absolute;display:grid;place-items:center}.plan-view-shell footer{display:flex;gap:14px;padding:7px 12px;background:#07111d;font-size:8px}.plan-view-shell footer span:before{content:"";display:inline-block;width:8px;height:8px;border-radius:50%;margin-right:4px}.pv-safe:before{background:#22c55e}.pv-pending:before{background:#f59e0b}.pv-help:before{background:#ef4444}.pv-evacuating:before{background:#2563eb}
@media(max-width:760px){.active-event-tabs{display:block}.active-event-tabs-list{margin-top:7px}.plan-view-head{padding:5px 8px}.plan-view-head h1{font-size:14px}.plan-view-head button{padding:6px 8px;font-size:9px}.plan-view-canvas{padding:4px}}

/* RC2.11.6 - Tipografía + Normalidad + SITREP */
.frame-page #pageActions [data-open-simulation],
.frame-page #pageActions [data-open-activate],
[data-open-simulation],
[data-open-activate]{
  font-family:"Inter","Segoe UI",Arial,sans-serif!important;
  font-weight:500!important;
  letter-spacing:0!important;
}

.community-ops-panel{
  display:grid;
  grid-template-columns:minmax(320px,.78fr) minmax(420px,1.5fr);
  gap:10px;
  margin:10px 0;
}
.normality-box,.sitrep-box{
  border-radius:10px;border:1px solid #d8e3ea;background:#fff;padding:11px;
}
.normality-box{
  display:grid;grid-template-columns:38px minmax(0,1fr) auto;align-items:center;gap:10px;
  border-color:#86d3aa;background:linear-gradient(135deg,#ecfdf5,#f8fffb);
}
.normality-icon{
  width:36px;height:36px;border-radius:50%;display:grid;place-items:center;
  background:#16a34a;color:#fff;font-size:18px;
}
.normality-copy{display:flex;flex-direction:column;gap:2px}
.normality-copy span,.sitrep-head span{
  font-size:7px;letter-spacing:.1em;font-weight:800;color:#15803d;
}
.normality-copy b{font-size:12px;color:#166534}
.normality-copy small,.sitrep-box small{font-size:7px;color:#64748b}
.normality-send-btn{
  background:#16a34a!important;color:#fff!important;border-color:#16a34a!important;
  font-weight:500!important;white-space:nowrap;
}
.sitrep-box{display:flex;flex-direction:column;gap:7px}
.sitrep-head{display:flex;align-items:center;justify-content:space-between}
.sitrep-head>div{display:flex;flex-direction:column}
.sitrep-head b{font-size:11px}
.sitrep-head>i{font-size:18px;color:#0f172a}
.sitrep-compose{display:grid;grid-template-columns:1fr auto;gap:7px}
.sitrep-compose input{
  height:36px;border:1px solid #dbe3ea;border-radius:8px;padding:0 10px;
  font-family:"Inter","Segoe UI",Arial,sans-serif;font-size:10px;
}
.sitrep-send-btn{background:#0f8f79!important;color:#fff!important;font-weight:500!important}
@media(max-width:760px){
  .community-ops-panel{grid-template-columns:1fr}
  .normality-box{grid-template-columns:34px 1fr}
  .normality-send-btn{grid-column:1/-1;width:100%}
  .sitrep-compose{grid-template-columns:1fr}
  .sitrep-send-btn{width:100%}
}

/* ==========================================================
   RC2.11.7 - estándar visual + matriz interactiva
   ========================================================== */
:root{
  --state-safe:#22c55e;
  --state-pending:#f59e0b;
  --state-help:#ef4444;
  --state-outside:#64748b;
  --state-evacuating:#2563eb;
  --state-confirm:#7c3aed;
}

/* Acciones principales: mismo font, size, peso, alto y separación */
.frame-page .page-head #pageActions,
.command-emergency-actions{
  gap:8px!important;
}
.frame-page #pageActions .dashboard-sim-btn,
.frame-page #pageActions .dashboard-alert-btn,
.frame-page #pageActions [data-open-simulation],
.frame-page #pageActions [data-open-activate],
.command-emergency-actions .btn,
[data-broadcast-unack]{
  height:42px!important;
  min-height:42px!important;
  padding:0 16px!important;
  display:inline-flex!important;
  align-items:center!important;
  justify-content:center!important;
  gap:7px!important;
  border-radius:9px!important;
  font-family:"Inter","Segoe UI",Arial,sans-serif!important;
  font-size:13px!important;
  line-height:1!important;
  font-weight:500!important;
  letter-spacing:0!important;
  white-space:nowrap!important;
}
.frame-page #pageActions .dashboard-sim-btn i,
.frame-page #pageActions .dashboard-alert-btn i,
.command-emergency-actions .btn i,
[data-broadcast-unack] i{
  font-size:13px!important;
}

/* Estados: mismos colores en matriz, resumen, plano y mapa */
.matrix-unit.safe{background:var(--state-safe)!important}
.matrix-unit.pending{background:var(--state-pending)!important}
.matrix-unit.help{background:var(--state-help)!important}
.matrix-unit.outside{background:var(--state-outside)!important}
.matrix-unit.evacuating{background:var(--state-evacuating)!important}
.matrix-unit.confirm{background:var(--state-confirm)!important}

.building-state-legend i.safe,.dashboard-map-legend i.safe{background:var(--state-safe)!important}
.building-state-legend i.pending,.dashboard-map-legend i.pending{background:var(--state-pending)!important}
.building-state-legend i.help,.dashboard-map-legend i.help{background:var(--state-help)!important}
.building-state-legend i.outside{background:var(--state-outside)!important}

.pro-donut{
  background:conic-gradient(
    var(--state-safe) 0 calc(var(--a)*1%),
    var(--state-help) calc(var(--a)*1%) calc(var(--h)*1%),
    var(--state-outside) calc(var(--h)*1%) calc(var(--o)*1%),
    var(--state-pending) calc(var(--o)*1%) 100%
  )!important;
}
.pro-donut-stats .safe:before{background:var(--state-safe)!important}
.pro-donut-stats .pending:before{background:var(--state-pending)!important}
.pro-donut-stats .help:before{background:var(--state-help)!important}
.pro-donut-stats .outside:before{background:var(--state-outside)!important}

.mini-unit.safe{background:#bbf7d0!important;border-color:var(--state-safe)!important}
.mini-unit.pending{background:#fed7aa!important;border-color:var(--state-pending)!important}
.mini-unit.help{background:#fecaca!important;border-color:var(--state-help)!important}
.mini-unit.outside{background:#e2e8f0!important;border-color:var(--state-outside)!important}
.mini-unit.evacuating{background:#bfdbfe!important;border-color:var(--state-evacuating)!important}
.mini-unit.confirm{background:#ddd6fe!important;border-color:var(--state-confirm)!important}

/* Matriz: piso y departamento son acciones */
.matrix-floor-label{
  height:23px;
  padding:0 3px;
  border:0;
  border-radius:4px;
  background:transparent;
  color:#0f172a;
  font-family:inherit;
  font-size:7px;
  line-height:1;
  font-weight:500;
  text-align:center;
  cursor:pointer;
}
.matrix-floor-label:hover{
  background:#e0f2fe;
  color:#075985;
}
.matrix-floor-label.disabled{
  display:grid;
  place-items:center;
  cursor:default;
}
.matrix-unit{
  font-family:inherit!important;
  font-weight:500!important;
}
.matrix-unit small{
  font-weight:500!important;
}
.mini-unit{
  cursor:pointer!important;
  font-family:inherit!important;
  appearance:none;
}
.mini-unit b,.mini-unit small{
  font-weight:500!important;
}

/* Modal de ocupantes */
.db-occupants-modal{
  position:fixed;
  inset:0;
  z-index:99999;
  display:grid;
  place-items:center;
  padding:22px;
}
.db-occupants-backdrop{
  position:absolute;
  inset:0;
  background:rgba(2,12,24,.68);
  backdrop-filter:blur(2px);
}
.db-occupants-dialog{
  position:relative;
  z-index:1;
  width:min(720px,94vw);
  max-height:min(720px,88vh);
  overflow:hidden;
  display:flex;
  flex-direction:column;
  background:#fff;
  border:1px solid #dce5ee;
  border-radius:14px;
  box-shadow:0 25px 80px rgba(0,0,0,.30);
}
.db-occupants-dialog>header{
  display:flex;
  justify-content:space-between;
  align-items:center;
  gap:14px;
  padding:16px 18px;
  border-bottom:1px solid #e5e7eb;
  background:#f8fafc;
}
.db-occupants-dialog>header>div{
  display:flex;
  flex-direction:column;
  gap:2px;
}
.db-occupants-dialog>header span{
  font-size:8px;
  line-height:1;
  font-weight:500;
  letter-spacing:.08em;
  color:#64748b;
}
.db-occupants-dialog>header h2{
  margin:0;
  font-size:20px;
  line-height:1.15;
  font-weight:600;
  color:#0f172a;
}
.db-occupants-dialog>header small{
  font-size:10px;
  font-weight:400;
  color:#64748b;
}
.db-modal-close{
  width:36px;
  height:36px;
  flex:0 0 36px;
  border:1px solid #dbe3ea;
  border-radius:9px;
  background:#fff;
  color:#334155;
  font-size:15px;
  cursor:pointer;
}
.db-occupants-list{
  overflow:auto;
  padding:10px;
  display:flex;
  flex-direction:column;
  gap:7px;
}
.db-occupant-row{
  display:grid;
  grid-template-columns:46px 1fr;
  align-items:center;
  gap:11px;
  min-height:66px;
  padding:9px 11px;
  border:1px solid #e2e8f0;
  border-left:4px solid #94a3b8;
  border-radius:10px;
  background:#fff;
}
.db-occupant-row.safe{border-left-color:var(--state-safe)}
.db-occupant-row.pending{border-left-color:var(--state-pending)}
.db-occupant-row.help{border-left-color:var(--state-help)}
.db-occupant-row.outside{border-left-color:var(--state-outside)}
.db-occupant-row.evacuating{border-left-color:var(--state-evacuating)}
.db-occupant-row.confirm{border-left-color:var(--state-confirm)}
.db-occupant-avatar{
  width:44px;
  height:44px;
  border-radius:50%;
  overflow:hidden;
  display:grid;
  place-items:center;
  background:#e2e8f0;
  color:#334155;
  font-size:12px;
  font-weight:600;
}
.db-occupant-avatar img{
  width:100%;
  height:100%;
  object-fit:cover;
}
.db-occupant-main{
  min-width:0;
  display:flex;
  flex-direction:column;
  gap:6px;
}
.db-occupant-title{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:10px;
}
.db-occupant-title>b{
  overflow:hidden;
  text-overflow:ellipsis;
  white-space:nowrap;
  font-size:12px;
  font-weight:600;
  color:#0f172a;
}
.db-status-chip{
  flex:0 0 auto;
  display:inline-flex;
  align-items:center;
  gap:5px;
  padding:4px 7px;
  border-radius:999px;
  font-size:8px;
  line-height:1;
  font-weight:500;
  color:#fff;
}
.db-status-chip.safe{background:var(--state-safe)}
.db-status-chip.pending{background:var(--state-pending)}
.db-status-chip.help{background:var(--state-help)}
.db-status-chip.outside{background:var(--state-outside)}
.db-status-chip.evacuating{background:var(--state-evacuating)}
.db-status-chip.confirm{background:var(--state-confirm)}
.db-occupant-meta{
  display:flex;
  flex-wrap:wrap;
  gap:6px 13px;
  color:#64748b;
  font-size:9px;
  font-weight:400;
}
.db-occupant-meta span{
  display:inline-flex;
  align-items:center;
  gap:4px;
}
.db-occupants-empty{
  min-height:190px;
  display:flex;
  flex-direction:column;
  align-items:center;
  justify-content:center;
  gap:6px;
  color:#64748b;
}
.db-occupants-empty i{
  font-size:26px;
  color:#94a3b8;
}
.db-occupants-empty b{
  color:#334155;
  font-size:13px;
  font-weight:600;
}
.db-occupants-empty span{
  font-size:10px;
}

@media(max-width:760px){
  .frame-page #pageActions .dashboard-sim-btn,
  .frame-page #pageActions .dashboard-alert-btn,
  .frame-page #pageActions [data-open-simulation],
  .frame-page #pageActions [data-open-activate],
  .command-emergency-actions .btn,
  [data-broadcast-unack]{
    height:38px!important;
    min-height:38px!important;
    padding:0 10px!important;
    font-size:10px!important;
    gap:5px!important;
  }
  .db-occupants-modal{padding:8px}
  .db-occupants-dialog{
    width:100%;
    max-height:92dvh;
    border-radius:12px;
  }
  .db-occupants-dialog>header{padding:12px}
  .db-occupants-dialog>header h2{font-size:17px}
  .db-occupant-title{
    align-items:flex-start;
    flex-direction:column;
    gap:5px;
  }
}

/* ==========================================================
   RC2.11.9 - Dashboard propuesta aprobada
   Estados:
   Evacuando AZUL
   A salvo VERDE
   Fuera de la zona MORADO
   Necesito ayuda ROJO
   ========================================================== */
:root{
  --state-evacuating:#2f80ed;
  --state-safe:#16a34a;
  --state-outside:#7c3aed;
  --state-help:#ef3d3d;
  --state-pending:#cbd5df;
  --response-yes:#49b65c;
  --response-no:#ef4545;
}

/* Estructura exacta de la propuesta: 3 columnas x 2 filas */
.dashboard-approved-grid{
  display:grid;
  grid-template-columns:1.05fr 1fr 1.28fr;
  grid-template-areas:
    "messages states response"
    "matrix events map";
  gap:12px;
  align-items:stretch;
}
.dashboard-messages-card{grid-area:messages}
.dashboard-state-chart-card{grid-area:states}
.dashboard-response-chart-card{grid-area:response}
.dashboard-matrix-card{grid-area:matrix}
.dashboard-events-card{grid-area:events}
.dashboard-map-card{grid-area:map}

.dashboard-approved-grid>.pro-card{
  min-width:0;
  min-height:250px;
}
.dashboard-matrix-card,
.dashboard-events-card,
.dashboard-map-card{
  min-height:320px!important;
}

/* Tipografía compacta de la propuesta */
.pro-dashboard-v2119 .pro-card-head h3{
  font-size:13px!important;
  font-weight:650!important;
  line-height:1.15!important;
}
.pro-dashboard-v2119 .pro-card-head small{
  font-size:8px!important;
  line-height:1.2!important;
}
.pro-dashboard-v2119 .pro-card-head a{
  font-size:8px!important;
  font-weight:500!important;
}

/* Gráficos */
.dashboard-chart-host{
  min-height:190px;
  height:calc(100% - 38px);
  display:grid;
  place-items:center;
  padding:6px 10px 10px;
}
.dashboard-donut-layout{
  width:100%;
  display:grid;
  grid-template-columns:minmax(130px,46%) minmax(150px,1fr);
  gap:16px;
  align-items:center;
}
.dashboard-donut{
  position:relative;
  width:min(160px,100%);
  aspect-ratio:1;
  margin:auto;
  border-radius:50%;
}
.dashboard-donut:after{
  content:"";
  position:absolute;
  inset:22%;
  border-radius:50%;
  background:#fff;
  box-shadow:inset 0 0 0 1px #eef2f6;
}
.status-donut{
  background:
    conic-gradient(
      var(--state-evacuating) 0 calc(var(--p1)*1%),
      var(--state-safe) calc(var(--p1)*1%) calc(var(--p2)*1%),
      var(--state-outside) calc(var(--p2)*1%) calc(var(--p3)*1%),
      var(--state-help) calc(var(--p3)*1%) 100%
    );
}
.response-donut{
  background:
    conic-gradient(
      var(--response-yes) 0 calc(var(--answered)*1%),
      var(--response-no) calc(var(--answered)*1%) 100%
    );
}
.dashboard-donut-center{
  position:absolute;
  inset:22%;
  z-index:2;
  display:flex;
  flex-direction:column;
  align-items:center;
  justify-content:center;
  text-align:center;
}
.dashboard-donut-center b{
  font-size:24px;
  line-height:1;
  color:#0f172a;
}
.dashboard-donut-center span{
  margin-top:4px;
  font-size:8px;
  color:#64748b;
}
.dashboard-donut-legend{
  display:flex;
  flex-direction:column;
  gap:9px;
}
.dashboard-donut-legend>span{
  display:grid;
  grid-template-columns:9px minmax(0,1fr) auto;
  grid-template-areas:
    "dot label value"
    ". label pct";
  column-gap:7px;
  align-items:center;
}
.dashboard-donut-legend>span>i{
  grid-area:dot;
  width:8px;height:8px;border-radius:50%;
}
.dashboard-donut-legend>span>strong{
  grid-area:label;
  font-size:9px;
  font-weight:500;
  color:#334155;
}
.dashboard-donut-legend>span>b{
  grid-area:value;
  font-size:11px;
  font-weight:650;
  color:#0f172a;
}
.dashboard-donut-legend>span>small{
  grid-area:pct;
  justify-self:end;
  margin-top:-2px;
  font-size:7px;
  color:#64748b;
}
.dashboard-donut-legend .evacuating>i{background:var(--state-evacuating)}
.dashboard-donut-legend .safe>i{background:var(--state-safe)}
.dashboard-donut-legend .outside>i{background:var(--state-outside)}
.dashboard-donut-legend .help>i{background:var(--state-help)}
.dashboard-donut-legend .responded>i{background:var(--response-yes)}
.dashboard-donut-legend .unanswered>i{background:var(--response-no)}

/* Estado unificado en TODAS las vistas del dashboard */
.matrix-unit.evacuating{background:var(--state-evacuating)!important;color:#fff!important}
.matrix-unit.safe{background:var(--state-safe)!important;color:#fff!important}
.matrix-unit.outside{background:var(--state-outside)!important;color:#fff!important}
.matrix-unit.help{background:var(--state-help)!important;color:#fff!important}
.matrix-unit.pending{background:var(--state-pending)!important;color:#526171!important}

.dashboard-state-legend-v2119 i.evacuating{background:var(--state-evacuating)!important}
.dashboard-state-legend-v2119 i.safe{background:var(--state-safe)!important}
.dashboard-state-legend-v2119 i.outside{background:var(--state-outside)!important}
.dashboard-state-legend-v2119 i.help{background:var(--state-help)!important}
.dashboard-state-legend-v2119 i.pending{background:var(--state-pending)!important}

.map-resident.evacuating{background:var(--state-evacuating)!important}
.map-resident.safe{background:var(--state-safe)!important}
.map-resident.outside{background:var(--state-outside)!important}
.map-resident.help{background:var(--state-help)!important}
.map-resident.pending{background:var(--state-pending)!important;color:#526171!important}

.db-status-chip.evacuating{background:var(--state-evacuating)!important}
.db-status-chip.safe{background:var(--state-safe)!important}
.db-status-chip.outside{background:var(--state-outside)!important}
.db-status-chip.help{background:var(--state-help)!important}
.db-status-chip.pending{background:var(--state-pending)!important;color:#475569!important}

.db-occupant-row.evacuating{border-left-color:var(--state-evacuating)!important}
.db-occupant-row.safe{border-left-color:var(--state-safe)!important}
.db-occupant-row.outside{border-left-color:var(--state-outside)!important}
.db-occupant-row.help{border-left-color:var(--state-help)!important}
.db-occupant-row.pending{border-left-color:var(--state-pending)!important}

/* Matriz más parecida a la propuesta */
.dashboard-matrix-card .building-state-matrix{
  margin-top:6px;
}
.dashboard-matrix-card .building-matrix-head{
  grid-template-columns:42px repeat(var(--cols,7),1fr);
}
.dashboard-matrix-card .building-matrix-row{
  min-height:24px;
}
.dashboard-matrix-card .matrix-unit{
  min-height:22px!important;
  border-radius:4px!important;
  font-size:7px!important;
  font-weight:500!important;
}
.dashboard-matrix-card .matrix-unit i{
  font-size:7px!important;
}
.dashboard-matrix-card .matrix-unit small{
  font-size:6px!important;
}
.dashboard-matrix-card .matrix-floor-label{
  font-size:7px!important;
  font-weight:500!important;
}

/* Mensajes y eventos compactos */
.dashboard-messages-card .pro-message-list article{
  min-height:54px;
}
.dashboard-events-card .pro-events-list article{
  min-height:39px;
}

/* Mapa compacto */
.dashboard-map-card .dashboard-map{
  min-height:205px!important;
  height:205px!important;
}
.dashboard-map-card .dashboard-map-legend{
  margin-top:8px;
}

/* Responsive */
@media(max-width:1180px){
  .dashboard-approved-grid{
    grid-template-columns:1fr 1fr;
    grid-template-areas:
      "messages states"
      "response map"
      "matrix matrix"
      "events events";
  }
}
@media(max-width:760px){
  .dashboard-approved-grid{
    grid-template-columns:1fr;
    grid-template-areas:
      "messages"
      "states"
      "response"
      "matrix"
      "events"
      "map";
  }
  .dashboard-approved-grid>.pro-card{
    min-height:auto!important;
  }
  .dashboard-donut-layout{
    grid-template-columns:145px 1fr;
    gap:11px;
  }
  .dashboard-donut{
    width:135px;
  }
  .dashboard-donut-center b{font-size:21px}
  .dashboard-map-card .dashboard-map{
    height:225px!important;
  }
}
@media(max-width:420px){
  .dashboard-donut-layout{
    grid-template-columns:120px 1fr;
    gap:8px;
  }
  .dashboard-donut{
    width:115px;
  }
  .dashboard-donut-legend{
    gap:7px;
  }
  .dashboard-donut-legend>span>strong{font-size:8px}
  .dashboard-donut-legend>span>b{font-size:10px}
}

/* RC3.12.0 - Dashboard comando compacto, HeroUI + ECharts */
.command-view-frame .frame-page{padding:8px!important;background:#041326!important}
.command-view-frame .pro-dashboard-v2119{gap:8px!important}
.command-view-frame .pro-dashboard-v2119 .pro-kpi-grid{gap:8px!important}
.command-view-frame .pro-dashboard-v2119 .pro-kpi{height:84px!important;min-height:84px!important;padding:10px 12px!important;gap:9px!important;background:#071d34!important;border:1px solid #155078!important;border-radius:9px!important}
.command-view-frame .pro-dashboard-v2119 .pro-kpi-icon{width:36px!important;height:36px!important;flex-basis:36px!important;border-radius:10px!important}
.command-view-frame .pro-dashboard-v2119 .pro-kpi-icon i{font-size:15px!important}
.command-view-frame .pro-dashboard-v2119 .pro-kpi-body>b{font-size:22px!important}
.command-view-frame .pro-dashboard-v2119 .pro-kpi-body>span{font-size:10px!important}.command-view-frame .pro-dashboard-v2119 .pro-kpi-body>small{font-size:8px!important}
.command-view-frame .pro-dashboard-v2119 .dashboard-approved-grid{grid-template-columns:minmax(0,1fr) minmax(0,1fr) minmax(390px,1.42fr)!important;grid-template-areas:"states response matrix" "messages map matrix"!important;grid-template-rows:220px 250px!important;gap:8px!important}
.command-view-frame .pro-dashboard-v2119 .dashboard-approved-grid>.pro-card{padding:10px!important;background:#071d34!important;border:1px solid #155078!important;border-radius:9px!important;box-shadow:none!important}
.command-view-frame .pro-dashboard-v2119 .pro-card-head{min-height:38px!important;margin-bottom:5px!important;padding-bottom:6px!important}
.command-view-frame .pro-dashboard-v2119 .pro-card-head h3{font-size:12px!important}.command-view-frame .pro-dashboard-v2119 .pro-card-head small{font-size:8px!important}
.command-view-frame .dashboard-chart-host{height:155px!important;min-height:155px!important;width:100%!important}
.command-view-frame .dashboard-chart-fallback{height:100%;display:grid;place-content:center;text-align:center}.command-view-frame .dashboard-chart-fallback b{font-size:24px}.command-view-frame .dashboard-chart-fallback span{font-size:9px;color:#8fb2cc}
.command-view-frame .pro-dashboard-v2119 .dashboard-messages-card .pro-message-list{max-height:190px!important}.command-view-frame .pro-dashboard-v2119 .pro-message-list article{padding:7px!important}
.command-view-frame .pro-dashboard-v2119 .dashboard-map-card .dashboard-map{height:183px!important;min-height:183px!important}
.command-view-frame .pro-dashboard-v2119 .dashboard-matrix-card .building-state-matrix{max-height:405px!important}
.command-view-frame .building-state-legend{padding:6px!important;gap:8px!important}.command-view-frame .building-state-legend span{font-size:8px!important}
@media(max-width:1280px){.command-view-frame .pro-dashboard-v2119 .dashboard-approved-grid{grid-template-columns:1fr 1fr!important;grid-template-areas:"states response" "messages map" "matrix matrix"!important;grid-template-rows:220px 250px auto!important}}
@media(max-width:760px){.command-view-frame .frame-page{padding:5px!important}.command-view-frame .pro-dashboard-v2119 .pro-kpi{height:76px!important;min-height:76px!important}.command-view-frame .pro-dashboard-v2119 .dashboard-approved-grid{grid-template-columns:1fr!important;grid-template-areas:"states" "response" "messages" "map" "matrix"!important;grid-template-rows:auto!important}}

/* RC3.14.9 · Garantía final de legibilidad sobre revisiones heredadas. */
html body .resident-final-card{grid-template-columns:minmax(0,1fr) 172px!important;min-height:72px!important}
html body .resident-final-main{padding:10px 12px!important}html body .resident-final-profile{grid-template-columns:48px minmax(0,1fr)!important;gap:10px!important}html body .resident-final-avatar-wrap,html body .resident-final-avatar{width:48px!important;height:48px!important}
html body .resident-final-info h3{font-size:14px!important;line-height:1.2!important}html body .resident-final-tags span,html body .resident-final-status{font-size:9px!important}html body .resident-final-phone,html body .resident-final-phone b{font-size:10px!important}html body .resident-final-related span{font-size:9px!important}html body .resident-final-footer span{font-size:8px!important}html body .resident-final-footer b{font-size:10px!important}
@media(max-width:760px){html body .resident-final-card{grid-template-columns:1fr!important}}

/* RC3.14.9 · Vista oscura: misma geometría y componentes que la vista clásica. */
.dark-palette-frame{color-scheme:dark;--app-background:#071525;--card:#0b2035;--border:#1d4d70;--text:#eef8ff;--muted:#91aec5;background:#071525!important;color:#eef8ff!important}
.dark-palette-frame .frame-page,.dark-palette-frame .page,.dark-palette-frame .page-content{background:#071525!important;color:#eef8ff!important}
.dark-palette-frame .card,.dark-palette-frame .pro-card,.dark-palette-frame .pro-kpi,.dark-palette-frame .command-plan-card,.dark-palette-frame .command-side-card,.dark-palette-frame .nearby-map-card,.dark-palette-frame .residents-final-section,.dark-palette-frame .emergency-history-accordion,.dark-palette-frame .maintenance-card,.dark-palette-frame .directory-tabs{background:#0b2035!important;border-color:#1d4d70!important;color:#eef8ff!important;box-shadow:none!important}
.dark-palette-frame h1,.dark-palette-frame h2,.dark-palette-frame h3,.dark-palette-frame h4,.dark-palette-frame b,.dark-palette-frame strong,.dark-palette-frame label,.dark-palette-frame .pro-card-head h3,.dark-palette-frame .directory-head h3{color:#f5fbff!important}
.dark-palette-frame .muted,.dark-palette-frame small,.dark-palette-frame .small,.dark-palette-frame .pro-card-head small,.dark-palette-frame .directory-head span{color:#91aec5!important}
.dark-palette-frame input,.dark-palette-frame select,.dark-palette-frame textarea{background:#07182a!important;border-color:#285675!important;color:#f5fbff!important}
.dark-palette-frame .data-table th,.dark-palette-frame .data-table td{border-color:#1d4d70!important;color:#dcecff!important}.dark-palette-frame .data-table th{background:#0a1b2e!important}.dark-palette-frame .data-table tr:hover td{background:#102b46!important}
.dark-palette-frame .pro-message-list article,.dark-palette-frame .incoming-resident-item,.dark-palette-frame .activity-row,.dark-palette-frame .resident-final-card{background:#0a1b2e!important;border-color:#285675!important;color:#eef8ff!important}
.dark-palette-frame .resident-final-info h3,.dark-palette-frame .resident-final-phone,.dark-palette-frame .resident-final-phone b,.dark-palette-frame .resident-final-footer b{color:#f5fbff!important}.dark-palette-frame .resident-final-tags span{background:#17324b!important;color:#dcecff!important}.dark-palette-frame .resident-final-footer{background:#091a2c!important;border-color:#285675!important}
.dark-palette-frame .building-state-matrix,.dark-palette-frame .command-building-panel,.dark-palette-frame .command-plan-canvas{background:#06182c!important;border-color:#1d4d70!important}.dark-palette-frame .building-matrix-head,.dark-palette-frame .building-matrix-row{color:#dcecff!important}
.dark-palette-frame .modal-box-global,.dark-palette-frame .db-occupants-dialog{background:#0b2035!important;color:#eef8ff!important}.dark-palette-frame .modal-actions{background:#0b2035!important;border-color:#1d4d70!important}
.dark-palette-frame .btn-soft{background:#102b46!important;border-color:#285675!important;color:#eaf6ff!important}.dark-palette-frame .empty{background:#091a2c!important;color:#91aec5!important}

/* Personas: dos columnas, una línea compacta, pero con lectura operativa clara. */
.resident-final-card{grid-template-columns:minmax(0,1fr) 172px!important;min-height:72px!important}
.resident-final-main{padding:10px 12px!important;gap:10px!important}.resident-final-profile{grid-template-columns:48px minmax(0,1fr)!important;gap:10px!important}.resident-final-avatar-wrap,.resident-final-avatar{width:48px!important;height:48px!important}
.resident-final-info h3{font-size:14px!important;line-height:1.2!important}.resident-final-tags span,.resident-final-status{font-size:9px!important}.resident-final-phone,.resident-final-phone b{font-size:10px!important}.resident-final-related span{font-size:9px!important;padding:4px 7px!important}
.resident-final-footer{padding:9px!important;gap:4px!important}.resident-final-footer>div{grid-template-columns:70px minmax(0,1fr)!important}.resident-final-footer span{font-size:8px!important}.resident-final-footer b{font-size:10px!important}
.directory-person-cell{display:flex;align-items:center;gap:9px}.directory-person-cell .person-avatar{flex:0 0 auto}
@media(max-width:1050px){.resident-final-card{grid-template-columns:minmax(0,1fr) 145px!important}.resident-final-info h3{font-size:13px!important}}
@media(max-width:760px){.resident-final-card{grid-template-columns:1fr!important}.resident-final-info h3{font-size:14px!important}}

/* RC3.14.7 - Centro de Emergencias compacto en una pantalla */
@media(min-width:1101px){
  .command-view-frame .command-emergency-banner{
    min-height:58px!important;height:58px;padding:7px 12px!important;margin-bottom:7px!important;gap:10px!important
  }
  .command-view-frame .command-emergency-icon{width:34px;height:34px;flex-basis:34px;font-size:21px}
  .command-view-frame .command-emergency-copy{min-width:170px}.command-view-frame .command-emergency-copy>span{font-size:7px}
  .command-view-frame .command-emergency-copy h2{font-size:15px!important}.command-view-frame .command-emergency-line>b{font-size:10px}
  .command-view-frame .command-elapsed{padding:0 8px;gap:6px}.command-view-frame .command-elapsed>i{font-size:16px}.command-view-frame .command-elapsed b{font-size:15px}.command-view-frame .command-elapsed span{font-size:7px}
  .command-view-frame .command-emergency-actions{gap:5px}.command-view-frame .command-emergency-actions .btn{height:32px!important;padding:0 8px!important;font-size:8px!important}
  .command-view-frame .command-kpis{height:68px;gap:6px!important;margin-bottom:7px!important}
  .command-view-frame .command-kpi{min-height:68px!important;height:68px!important;padding:7px 9px!important;gap:7px!important}
  .command-view-frame .command-kpi>i{width:31px;height:31px;flex-basis:31px;font-size:17px!important}.command-view-frame .command-kpi span{font-size:8px!important}.command-view-frame .command-kpi b{font-size:20px!important}.command-view-frame .command-kpi small{font-size:7px;margin-top:2px}
  .command-view-frame .command-main-grid{
    height:590px;grid-template-columns:minmax(0,3.35fr) minmax(315px,1fr)!important;
    grid-template-rows:minmax(0,1fr) 180px;gap:7px!important;align-items:stretch!important
  }
  .command-view-frame .command-plan-column{grid-column:1;grid-row:1 / span 2;min-height:0}
  .command-view-frame .command-plan-card{height:100%;display:flex;flex-direction:column}
  .command-view-frame .command-plan-head{min-height:45px;height:45px;padding:6px 10px;gap:8px}.command-view-frame .command-plan-head h3{font-size:13px}.command-view-frame .command-plan-head>div>span{font-size:8px}
  .command-view-frame .command-plan-tools{gap:7px}.command-view-frame .command-plan-tools label{padding:4px 6px;font-size:9px}.command-view-frame .command-plan-legend{gap:7px;font-size:7px}
  .command-view-frame .command-plan-canvas{flex:1;min-height:0;padding:5px;display:flex;flex-direction:column}
  .command-view-frame .command-plan-canvas .em-fp3-shell{flex:1!important;height:auto!important;min-height:0!important;aspect-ratio:auto!important}
  .command-view-frame .command-plan-canvas .em-fp3-svg{width:100%!important;height:100%!important}
  .command-view-frame .em-fp3-legend{min-height:20px;padding-top:3px!important;font-size:7px!important}
  .command-view-frame .command-main-grid>.command-side-panel{grid-column:2;grid-row:1!important;display:grid;grid-template-columns:1fr 1fr;grid-template-rows:auto minmax(0,1fr);gap:7px;min-height:0}
  .command-view-frame .command-side-card{padding:8px}.command-view-frame .command-side-title{gap:6px}.command-view-frame .command-side-title>i{font-size:15px}.command-view-frame .command-side-title h3{font-size:10px}.command-view-frame .command-side-title span{font-size:7px}
  .command-view-frame .command-pending-card>strong{display:inline-block;font-size:29px;margin:3px 5px 0}.command-view-frame .command-pending-card>small{display:inline}.command-view-frame .command-pending-card>.btn{height:27px;margin-top:4px;font-size:7px;padding:0 4px}
  .command-view-frame .command-actions-card{grid-column:2;grid-row:1}.command-view-frame .command-action-grid{gap:4px;margin-top:6px}.command-view-frame .command-action-grid .btn{height:48px;font-size:7px}.command-view-frame .command-action-grid .btn i{font-size:12px}.command-view-frame .command-action-grid .btn span{font-size:6px}
  .command-view-frame .command-incoming-card{grid-column:1 / span 2;grid-row:2}.command-view-frame .command-incoming-card .incoming-resident-list{max-height:180px}.command-view-frame .command-empty-message{padding:16px 5px;font-size:8px}
  .command-view-frame .command-main-grid>.nearby-map-card{grid-column:2;grid-row:2!important;margin:0!important;padding:7px!important;min-height:0}
  .command-view-frame .nearby-map-card .residents-final-head h3{font-size:10px;margin:0}.command-view-frame .nearby-map-card .residents-final-head span{font-size:6px}
  .command-view-frame .nearby-filter-bar{gap:3px;padding:4px 0;overflow-x:auto}.command-view-frame .nearby-filter{min-height:23px;padding:2px 5px;font-size:6px}.command-view-frame .nearby-filter i{width:13px;height:13px}.command-view-frame .nearby-filter b{min-width:12px;padding:2px;font-size:6px}
  .command-view-frame .nearby-map{height:105px!important;border-radius:6px}.command-view-frame #nearbyEmergencyHost>.small{display:none}
  .command-view-frame .residents-final-section,.command-view-frame .emergency-history-accordion{display:none!important}
}

/* RC3.14.8 - Personas en dos columnas, una línea por residente */
.residents-final-grid{
  grid-template-columns:repeat(2,minmax(0,1fr))!important;
  gap:8px!important
}
.residents-final-grid:has(.resident-final-card:nth-child(2):last-child){grid-template-columns:repeat(2,minmax(0,1fr))!important}
.resident-final-card{
  min-height:0!important;display:grid!important;
  grid-template-columns:minmax(0,1fr) 155px;align-items:center;border-width:1.5px!important;border-radius:9px!important
}
.resident-final-main{min-width:0;padding:8px 9px!important;display:flex;align-items:center;gap:8px}
.resident-final-profile{min-width:180px;flex:1;display:grid;grid-template-columns:42px minmax(0,1fr);gap:8px;align-items:center}
.resident-final-avatar-wrap,.resident-final-avatar{width:42px!important;height:42px!important}
.resident-final-initials{font-size:14px!important}.resident-final-online{width:9px;height:9px;border-width:2px}
.resident-final-info{display:grid;grid-template-columns:minmax(80px,1fr) auto;grid-template-areas:"name status" "tags status";column-gap:6px;align-items:center}
.resident-final-info h3{grid-area:name;margin:0 0 3px!important;font-size:11px!important}
.resident-final-tags{grid-area:tags;gap:3px!important;flex-wrap:nowrap}.resident-final-tags span{padding:2px 4px!important;border-radius:4px!important;font-size:7px!important;white-space:nowrap}
.resident-final-status{grid-area:status;margin:0!important;padding:4px 6px!important;font-size:7px!important;white-space:nowrap}
.resident-final-contact{flex:0 0 auto;margin:0!important;min-height:0!important;gap:4px!important}
.resident-final-phone{max-width:105px;gap:3px!important;font-size:7px!important}.resident-final-phone b{font-size:7px!important;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.resident-final-action{width:26px!important;height:26px!important;flex-basis:26px!important;font-size:11px!important}.resident-final-action.qr{font-size:17px!important}
.resident-final-related{display:flex;flex:0 1 150px;min-width:0;gap:3px;justify-content:flex-end;flex-wrap:wrap}
.resident-final-related span{display:inline-flex;align-items:center;gap:3px;max-width:145px;padding:3px 5px;border-radius:999px;background:#eff6ff;color:#1d4ed8;font-size:7px}
.resident-final-related span.pet{background:#f0fdf4;color:#15803d}.resident-final-related b{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.resident-final-footer{height:100%;padding:7px!important;grid-template-columns:1fr!important;gap:2px!important;border-top:0!important;border-left:1px solid #dfe6ed}
.resident-final-footer>div{display:grid!important;grid-template-columns:62px minmax(0,1fr);align-items:center}.resident-final-footer span{font-size:6px!important}.resident-final-footer b{margin:0!important;font-size:8px!important}
@media(max-width:1050px){
  .resident-final-card{grid-template-columns:minmax(0,1fr) 125px}.resident-final-related{display:none}.resident-final-phone{display:none}
}
@media(max-width:760px){
  .residents-final-grid{grid-template-columns:1fr!important}.resident-final-card{grid-template-columns:1fr}.resident-final-footer{grid-template-columns:repeat(3,1fr)!important;border-left:0!important;border-top:1px solid #dfe6ed!important}.resident-final-footer>div{display:flex!important}.resident-final-related{display:flex}.resident-final-phone{display:inline-flex}
}

/* RC3.13.1 - plano publicado, leyenda limpia y acciones sin duplicados */
.dashboard-command-real .command-plan-legend span:before{display:none!important;content:none!important}
.dashboard-command-real .command-operations-card .command-operation-grid{grid-template-columns:repeat(2,minmax(0,1fr))!important}
.dashboard-command-real .dashboard-operational-plan{width:100%;height:100%;display:grid;place-items:center;overflow:hidden;background:#06182c}
.dashboard-command-real .dashboard-operational-plan svg{display:block;width:100%;height:100%;max-width:100%;max-height:100%}
.dashboard-command-real .dashboard-operational-plan polygon[data-db-unit-summary]{cursor:pointer}
.dashboard-command-real .db-plan-unit-label text{fill:#fff;font-size:20px;font-weight:800}.dashboard-command-real .db-plan-unit-label text.state{fill:#b9d4e8;font-size:11px;font-weight:600}
.dashboard-command-real .db-plan-marker{width:44px;height:44px;display:flex;align-items:center;justify-content:center;gap:2px;border:2px solid #fff;border-radius:10px;background:#1268d5;color:#fff;box-sizing:border-box;box-shadow:0 3px 8px #0008;font-size:19px}.dashboard-command-real .db-plan-marker.type-stair,.dashboard-command-real .db-plan-marker.type-emergency-exit{background:#0aa568}.dashboard-command-real .db-plan-marker.type-extinguisher,.dashboard-command-real .db-plan-marker.type-alarm{background:#e52335}.dashboard-command-real .db-plan-marker b{font-size:13px}.dashboard-command-real .db-plan-text{display:grid;place-items:center;width:100%;height:100%;color:#fff;font-weight:800;text-align:center;text-shadow:0 1px 3px #000}
.dashboard-command-real .command-plan-empty{height:100%;min-height:230px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px;padding:24px;text-align:center;background:#06182c;color:#8fb2cc}.dashboard-command-real .command-plan-empty i{font-size:30px;color:#1680ff}.dashboard-command-real .command-plan-empty b{font-size:14px;color:#f8fbff}.dashboard-command-real .command-plan-empty span{max-width:330px;font-size:10px;line-height:1.45}

/* RC3.13.2 - plano y representación completa del edificio */
.dashboard-command-real .command-floor-body{grid-template-columns:minmax(0,1.45fr) minmax(360px,1fr)!important;gap:10px!important}
.dashboard-command-real .command-building-panel{min-width:0;min-height:0;display:flex;flex-direction:column;overflow:hidden;border:1px solid #155078;border-radius:8px;background:#06182c}
.dashboard-command-real .command-building-head{display:flex;align-items:center;justify-content:space-between;gap:8px;min-height:42px;padding:7px 9px;border-bottom:1px solid #155078;color:#f8fbff}.dashboard-command-real .command-building-head>div{display:grid;min-width:0}.dashboard-command-real .command-building-head b{font-size:12px}.dashboard-command-real .command-building-head small{color:#8fb2cc;font-size:8px}.dashboard-command-real .command-building-head>span{display:flex;align-items:center;gap:5px;color:#8fb2cc;font-size:8px;white-space:nowrap}
.dashboard-command-real .command-building-panel .building-state-matrix{flex:1;display:flex;flex-direction:column;gap:2px;max-height:none!important;padding:5px 6px;overflow:hidden}
.dashboard-command-real .command-building-panel .building-matrix-head,.dashboard-command-real .command-building-panel .building-matrix-row{display:grid;grid-template-columns:34px repeat(7,minmax(0,1fr));gap:3px;min-width:0}
.dashboard-command-real .command-building-panel .building-matrix-head{position:static;padding:0 0 3px;border-color:#155078;background:#06182c}.dashboard-command-real .command-building-panel .building-matrix-head span,.dashboard-command-real .command-building-panel .building-matrix-head b{color:#8fb2cc!important;font-size:7px!important}
.dashboard-command-real .command-building-panel .building-matrix-row{flex:1;min-height:0}
.dashboard-command-real .command-building-panel .matrix-floor-label{min-width:0;min-height:0;padding:0;border:1px solid #155078;border-radius:4px;background:#092d4c;color:#ccecff;font-size:7px;font-weight:800;cursor:pointer}
.dashboard-command-real .command-building-panel .matrix-unit{min-width:0;height:auto;min-height:0;padding:0 1px;border:1px solid transparent;border-radius:4px;color:#111827!important;gap:2px}.dashboard-command-real .command-building-panel .matrix-unit i{color:#111827!important;font-size:7px}.dashboard-command-real .command-building-panel .matrix-unit small{color:#111827!important;font-size:6px;font-weight:800}.dashboard-command-real .command-building-panel .matrix-unit.pending{background:#f6b913!important;border-color:#ffd95a!important}.dashboard-command-real .command-building-panel .matrix-unit.safe{background:#16a34a!important;color:#fff!important}.dashboard-command-real .command-building-panel .matrix-unit.safe i,.dashboard-command-real .command-building-panel .matrix-unit.safe small,.dashboard-command-real .command-building-panel .matrix-unit.help i,.dashboard-command-real .command-building-panel .matrix-unit.help small,.dashboard-command-real .command-building-panel .matrix-unit.evacuating i,.dashboard-command-real .command-building-panel .matrix-unit.evacuating small,.dashboard-command-real .command-building-panel .matrix-unit.outside i,.dashboard-command-real .command-building-panel .matrix-unit.outside small{color:#fff!important}.dashboard-command-real .command-building-panel .matrix-unit.help{background:#f43f5e!important}.dashboard-command-real .command-building-panel .matrix-unit.evacuating{background:#1680ff!important}.dashboard-command-real .command-building-panel .matrix-unit.outside{background:#22c55e!important}.dashboard-command-real .command-building-panel .matrix-unit.confirm{background:#8b5cf6!important;color:#fff!important}.dashboard-command-real .command-building-panel .matrix-unit.empty{background:#10263c!important;border-color:#173b59!important}
.dashboard-command-real .command-building-panel .matrix-unit.neutral{background:#64748b!important;border-color:#94a3b8!important;color:#fff!important}.dashboard-command-real .command-building-panel .matrix-unit.neutral i,.dashboard-command-real .command-building-panel .matrix-unit.neutral small{color:#fff!important}
.dashboard-command-real .command-building-panel .building-matrix-row.selected-floor{padding:1px;border-radius:5px;background:#1680ff26;box-shadow:inset 0 0 0 1px #1680ff}
@media(max-width:1150px){.dashboard-command-real .command-floor-body{grid-template-columns:minmax(0,1.3fr) minmax(330px,1fr)!important}}
@media(max-width:760px){.dashboard-command-real .command-floor-body{height:auto!important;display:flex!important;flex-direction:column}.dashboard-command-real .command-floor-plan{height:300px}.dashboard-command-real .command-building-panel{height:360px}.dashboard-command-real .command-building-head>span{display:none}}

/* RC3.13.3 - leyenda dentro del plano y estados con desplazamiento */
.dashboard-command-real .command-floor-card{display:grid!important;grid-template-rows:44px minmax(0,1fr)!important;align-content:stretch!important}
.dashboard-command-real .command-floor-head{height:44px!important;min-height:44px!important;box-sizing:border-box!important;padding:7px 12px!important}
.dashboard-command-real .command-floor-body{height:auto!important;min-height:0!important;padding-top:0!important}
.dashboard-command-real .command-plan-panel{min-width:0;min-height:0;display:grid;grid-template-rows:34px minmax(0,1fr);overflow:hidden;border:1px solid #155078;border-radius:8px;background:#06182c}
.dashboard-command-real .command-plan-panel .command-plan-legend{display:flex!important;align-items:center;justify-content:flex-start;gap:12px;width:100%;min-width:0;padding:5px 9px;box-sizing:border-box;overflow-x:auto;overflow-y:hidden;border-bottom:1px solid #155078;background:#071d34;scrollbar-width:thin;white-space:nowrap}
.dashboard-command-real .command-plan-panel .command-plan-legend span{display:inline-flex!important;flex:0 0 auto;align-items:center;gap:4px;color:#cce4f4;font-size:8px}.dashboard-command-real .command-plan-panel .command-plan-legend span:nth-last-child(-n+4){display:inline-flex!important}.dashboard-command-real .command-plan-panel .command-plan-legend b{display:inline-grid;place-items:center;min-width:14px;color:#f8fbff;font-size:11px}.dashboard-command-real .command-plan-panel .command-plan-legend b i{width:auto;height:auto;border-radius:0;background:none!important}
.dashboard-command-real .command-plan-panel .command-floor-plan{width:100%;height:100%;min-height:0;border:0!important;border-radius:0!important}
.dashboard-command-real .command-building-panel .building-state-matrix{overflow-y:auto!important;overflow-x:hidden!important;overscroll-behavior:contain;scrollbar-width:thin;scrollbar-color:#1680ff #071d34}
.dashboard-command-real .command-building-panel .building-matrix-head{position:sticky!important;top:0;z-index:3}
.dashboard-command-real .command-building-panel .building-matrix-row{flex:0 0 18px!important;min-height:18px!important}
.dashboard-command-real .command-alert-list article.assault{border-color:#fb7185!important;background:#3b1020!important;box-shadow:inset 3px 0 0 #f43f5e}.dashboard-command-real .command-alert-list article.assault>i{background:#f43f5e!important;color:#fff!important}
@media(max-width:760px){.dashboard-command-real .command-floor-card{display:block!important}.dashboard-command-real .command-floor-head{height:42px!important;min-height:42px!important}.dashboard-command-real .command-plan-panel{height:330px;grid-template-rows:36px minmax(0,1fr)}.dashboard-command-real .command-plan-panel .command-plan-legend{display:flex!important}.dashboard-command-real .command-building-panel{height:360px}}

/* RC3.13.0 - Composición realizable aprobada para el Centro de Comando */
.dashboard-command-real{display:grid;gap:10px;min-width:0}
.dashboard-command-real .pro-kpi-grid{display:grid!important;grid-template-columns:repeat(5,minmax(0,1fr))!important;gap:10px!important;margin:0!important}
.dashboard-command-real .command-kpi-card{position:relative;display:flex!important;align-items:center!important;height:96px!important;min-height:96px!important;padding:12px!important;overflow:hidden}
.dashboard-command-real .command-kpi-card .pro-kpi-body{position:relative;z-index:2;flex:1;min-width:0}.dashboard-command-real .command-kpi-card .pro-kpi-icon{position:relative;z-index:2}
.dashboard-command-real .command-kpi-chart{position:absolute;z-index:1;right:7px;bottom:7px;width:38%;height:48px;pointer-events:none}
.dashboard-command-real .command-kpi-card.ok .command-kpi-chart,.dashboard-command-real .command-kpi-card.danger .command-kpi-chart{right:4px;bottom:7px;width:62px;height:62px}
.dashboard-command-real .command-dashboard-grid{display:grid;grid-template-columns:minmax(0,1.55fr) minmax(300px,1fr) minmax(365px,.95fr);grid-template-areas:"plan plan side" "map activity side";grid-template-rows:430px 235px;gap:10px;min-width:0}
.dashboard-command-real .command-floor-card{grid-area:plan;padding:0!important;overflow:hidden}.dashboard-command-real .command-map-card{grid-area:map;padding:9px!important;overflow:hidden}.dashboard-command-real .command-activity-card{grid-area:activity;padding:9px!important;overflow:hidden}.dashboard-command-real .command-dashboard-side{grid-area:side;display:grid;grid-template-rows:minmax(190px,1.15fr) minmax(175px,1fr) auto;gap:10px;min-width:0}
.dashboard-command-real .command-dashboard-side>.pro-card{padding:10px!important;min-width:0;overflow:hidden}.dashboard-command-real .pro-card-head{display:flex;align-items:center;justify-content:space-between;gap:10px;min-height:36px;margin-bottom:6px;padding-bottom:6px}.dashboard-command-real .pro-card-head h3{margin:0;font-size:14px}.dashboard-command-real .pro-card-head h3>i{margin-right:6px}.dashboard-command-real .pro-card-head h3 small{font-size:9px;font-weight:500}.dashboard-command-real .pro-card-head>a{font-size:9px;white-space:nowrap}
.dashboard-command-real .command-floor-head{padding:10px 12px;margin:0!important}.dashboard-command-real .command-plan-legend{display:flex;align-items:center;justify-content:flex-end;gap:10px;min-width:0;white-space:nowrap;font-size:8px}.dashboard-command-real .command-plan-legend span{display:inline-flex;align-items:center;gap:4px}.dashboard-command-real .command-plan-legend span>i{width:9px;height:9px;border-radius:50%;background:#64748b}.dashboard-command-real .command-plan-legend .safe>i{background:#10c878}.dashboard-command-real .command-plan-legend .pending>i{background:#f59e0b}.dashboard-command-real .command-plan-legend .help>i{background:#f43f5e}
.dashboard-command-real .command-floor-body{height:378px;display:grid;grid-template-columns:86px minmax(0,1fr);gap:8px;padding:0 10px 10px}.dashboard-command-real .command-floor-rail{display:flex;flex-direction:column;min-height:0;overflow-y:auto;border:1px solid #dbe4ee;border-radius:8px}.dashboard-command-real .command-floor-rail button{flex:0 0 38px;border:0;border-bottom:1px solid #dbe4ee;background:transparent;color:#64748b;font-size:10px;cursor:pointer}.dashboard-command-real .command-floor-rail button.active{background:#1680ff;color:#fff;font-weight:800}.dashboard-command-real .command-floor-rail .rail-step{flex-basis:28px}.dashboard-command-real .command-floor-plan{min-width:0;min-height:0;overflow:hidden;border:1px solid #dbe4ee;border-radius:8px;background:#f8fafc}.dashboard-command-real .command-floor-plan .dashboard-plan-stage{width:100%;height:100%;min-height:0!important;position:relative;overflow:hidden}.dashboard-command-real .command-floor-plan .dashboard-plan-stage>img{width:100%;height:100%;object-fit:contain;opacity:.72}
.dashboard-command-real .command-incoming-card .pro-message-list{max-height:180px!important;overflow:auto}.dashboard-command-real .command-incoming-card .pro-message-list article{padding:8px!important}.dashboard-command-real .command-incoming-card .pro-message-list article:not(:first-child){display:none}
.dashboard-command-real .command-alert-list,.dashboard-command-real .command-activity-list{display:grid;gap:4px;min-height:0}.dashboard-command-real .command-alert-list article,.dashboard-command-real .command-activity-list article{display:grid;grid-template-columns:30px minmax(0,1fr) auto;align-items:center;gap:8px;min-width:0;padding:7px 8px;border:1px solid #dbe4ee;border-radius:7px}.dashboard-command-real .command-alert-list article>i,.dashboard-command-real .command-activity-list article>i{width:28px;height:28px;display:grid;place-items:center;border-radius:50%;background:#fff0df;color:#f59e0b}.dashboard-command-real .command-alert-list article.help>i,.dashboard-command-real .command-activity-list article.help>i{background:#ffe5eb;color:#f43f5e}.dashboard-command-real .command-alert-list article>div,.dashboard-command-real .command-activity-list article>div{display:grid;min-width:0}.dashboard-command-real .command-alert-list b,.dashboard-command-real .command-activity-list b{font-size:10px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.dashboard-command-real .command-alert-list small,.dashboard-command-real .command-activity-list small{font-size:8px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;color:#64748b}.dashboard-command-real .command-alert-list time,.dashboard-command-real .command-activity-list time{font-size:8px;color:#64748b}.dashboard-command-real .command-activity-list article{grid-template-columns:38px 28px minmax(0,1fr);padding:5px 7px}.dashboard-command-real .command-activity-list article>time{grid-column:1}.dashboard-command-real .command-activity-list article>i{grid-column:2}.dashboard-command-real .command-activity-list article>div{grid-column:3}
.dashboard-command-real .command-operations-card .pro-card-head{margin-bottom:6px}.dashboard-command-real .command-operation-grid{display:grid;grid-template-columns:1fr 1fr;gap:7px}.dashboard-command-real .command-operation-grid button{min-height:48px;display:flex;align-items:center;justify-content:center;gap:8px;padding:7px;border:1px solid #94a3b8;border-radius:7px;background:#fff;color:#334155;cursor:pointer}.dashboard-command-real .command-operation-grid button i{font-size:15px}.dashboard-command-real .command-operation-grid button span{display:grid;text-align:left}.dashboard-command-real .command-operation-grid button b{font-size:10px}.dashboard-command-real .command-operation-grid button small{font-size:7px;font-weight:500}.dashboard-command-real .command-operation-grid .normality{border-color:#10c878;background:#ecfdf5;color:#047857}.dashboard-command-real .command-operation-grid .update{border-color:#1680ff;background:#eff6ff;color:#075cca}.dashboard-command-real .command-operation-grid .emergency{border-color:#f43f5e;background:#fff1f2;color:#be123c}
.dashboard-command-real .command-map-card .dashboard-map{height:168px!important;min-height:168px!important}.dashboard-command-real .dashboard-map-legend{padding-top:4px}.dashboard-command-real .command-hidden-chart{position:absolute!important;width:1px!important;height:1px!important;overflow:hidden!important;opacity:0!important;pointer-events:none!important}

.command-view-frame .dashboard-command-real .pro-card,.command-view-frame .dashboard-command-real .command-floor-plan{background:#071d34!important;border-color:#155078!important;box-shadow:none!important}.command-view-frame .dashboard-command-real .command-floor-rail{border-color:#155078}.command-view-frame .dashboard-command-real .command-floor-rail button{border-color:#155078;color:#9dbbd1}.command-view-frame .dashboard-command-real .command-floor-rail button.active{color:#fff}.command-view-frame .dashboard-command-real .command-floor-plan .dashboard-plan-stage{background:#06182c!important}.command-view-frame .dashboard-command-real .command-alert-list article,.command-view-frame .dashboard-command-real .command-activity-list article{border-color:#164568;background:#06182c}.command-view-frame .dashboard-command-real .command-alert-list b,.command-view-frame .dashboard-command-real .command-activity-list b{color:#f8fbff}.command-view-frame .dashboard-command-real .command-alert-list small,.command-view-frame .dashboard-command-real .command-activity-list small,.command-view-frame .dashboard-command-real time{color:#8fb2cc}.command-view-frame .dashboard-command-real .command-operation-grid button{background:#09213a;border-color:#245576;color:#c9e4f6}.command-view-frame .dashboard-command-real .command-operation-grid .normality{background:#064d3d;border-color:#10c878;color:#d1fae5}.command-view-frame .dashboard-command-real .command-operation-grid .update{background:#073766;border-color:#1680ff;color:#dbeafe}.command-view-frame .dashboard-command-real .command-operation-grid .emergency{background:#55172c;border-color:#f43f5e;color:#ffe4e6}
@media(max-width:1450px){.dashboard-command-real .command-dashboard-grid{grid-template-columns:minmax(0,1.4fr) minmax(270px,.9fr) 340px}.dashboard-command-real .command-plan-legend span:nth-last-child(-n+4){display:none}}
@media(max-width:1150px){.dashboard-command-real .command-dashboard-grid{grid-template-columns:1fr 1fr;grid-template-areas:"plan plan" "map activity" "side side";grid-template-rows:410px 230px auto}.dashboard-command-real .command-dashboard-side{grid-template-columns:1fr 1fr;grid-template-rows:auto}.dashboard-command-real .command-operations-card{grid-column:1 / -1}.dashboard-command-real .command-floor-body{height:358px}}
@media(max-width:760px){.dashboard-command-real .pro-kpi-grid{grid-template-columns:repeat(5,minmax(0,1fr))!important;gap:4px!important;overflow:hidden}.dashboard-command-real .command-kpi-card{height:84px!important;min-height:84px!important;padding:6px 2px!important}.dashboard-command-real .command-kpi-chart{display:none}.dashboard-command-real .command-dashboard-grid{display:flex;flex-direction:column}.dashboard-command-real .command-floor-card{min-height:365px}.dashboard-command-real .command-floor-body{height:315px;grid-template-columns:60px minmax(0,1fr)}.dashboard-command-real .command-floor-rail button{flex-basis:34px;font-size:8px}.dashboard-command-real .command-plan-legend{display:none}.dashboard-command-real .command-dashboard-side{display:flex;flex-direction:column}.dashboard-command-real .command-map-card .dashboard-map{height:210px!important}.dashboard-command-real .command-operation-grid button small{display:none}}

/* ==========================================================
   RC3.11.0 - Vista comando TIC2TIIA
   ========================================================== */
.portal-view-switch{display:inline-flex;align-items:center;padding:3px;border:1px solid #cbd5e1;border-radius:10px;background:#f1f5f9;box-shadow:inset 0 1px 2px #0f172a0d}
.portal-view-switch button{height:30px;padding:0 11px;border:0;border-radius:7px;background:transparent;color:#64748b;font:700 10px/1 Inter,"Segoe UI",sans-serif;cursor:pointer;white-space:nowrap}
.portal-view-switch button.active{background:#fff;color:#0f172a;box-shadow:0 2px 7px #0f172a1f}

html.command-view,body.command-view{background:#041326;color:#dbeafe}
.command-view .shell-horizontal-app{grid-template-columns:210px minmax(0,1fr);grid-template-rows:68px minmax(0,1fr);background:radial-gradient(circle at 78% 4%,#0a3153 0,transparent 34%),#041326}
.command-view .shell-horizontal-header{grid-column:2;grid-row:1;background:rgba(4,19,38,.96);border-color:#164568;color:#e2f3ff}
.command-view .shell-horizontal-brand strong{color:#f8fbff}.command-view .shell-horizontal-brand span{color:#7fa6c4}
.command-view .shell-brand-logo{background:#0b2945!important;border-color:#1d5278!important}.command-view .shell-horizontal-tools .userbox strong{color:#f8fbff}.command-view .shell-horizontal-tools .userbox span{color:#79a4c4}
.command-view .building-select{background:#071d34;color:#e2f3ff;border-color:#1c4b6e}
.command-view .portal-view-switch{background:#071d34;border-color:#245576}.command-view .portal-view-switch button{color:#8fb2cc}.command-view .portal-view-switch button.active{background:#087ef5;color:#fff;box-shadow:0 0 18px #0787ff66}
.command-view .shell-horizontal-nav-wrap{grid-column:1;grid-row:1 / span 2;overflow-y:auto;overflow-x:hidden;background:linear-gradient(180deg,#06182c,#041326);border-right:1px solid #124263}
.command-view .shell-horizontal-nav{height:auto;min-width:0;display:flex;flex-direction:column;gap:6px;padding:86px 12px 18px}
.command-view .shell-horizontal-item{min-height:44px;padding:0 13px;border:1px solid transparent;border-radius:10px;font-size:11px;color:#8fb2cc}
.command-view .shell-horizontal-item i{width:22px;color:#63b3ed;text-align:center}.command-view .shell-horizontal-item:hover{background:#0a2b49;color:#fff}.command-view .shell-horizontal-item.active{background:linear-gradient(90deg,#087ef533,#0d4d7c55);border-color:#1169a5;border-bottom-color:#1169a5;box-shadow:inset 3px 0 #00a8ff,0 0 20px #087ef526;color:#fff}
.command-view .shell-horizontal-main{grid-column:2;grid-row:2;background:#041326}

html.command-view-frame,body.command-view-frame{background:#041326!important;color:#dbeafe}
.command-view-frame .frame-page{background:transparent!important;color:#dbeafe;padding:14px!important}
.command-view-frame .page-head{color:#f8fbff}.command-view-frame .page-head p,.command-view-frame .muted{color:#7fa6c4!important}
.command-view-frame .card,.command-view-frame .pro-card,.command-view-frame .fp3-sidebar,.command-view-frame .fp3-workspace,.command-view-frame .fp3-editor{background:linear-gradient(145deg,rgba(8,35,59,.96),rgba(4,23,43,.96))!important;border-color:#155078!important;color:#dbeafe!important;box-shadow:0 8px 26px #0005,inset 0 1px #ffffff0a!important}
.command-view-frame .btn-soft,.command-view-frame input,.command-view-frame select,.command-view-frame textarea{background:#071d34!important;border-color:#245576!important;color:#e2f3ff!important}
.command-view-frame .pro-dashboard-v2119 .pro-kpi{background:linear-gradient(145deg,#0a2c4b,#071c33)!important;border-color:#17618e!important;box-shadow:0 7px 22px #0005!important}
.command-view-frame .pro-dashboard-v2119 .pro-kpi-body>span,.command-view-frame .pro-dashboard-v2119 .pro-kpi-body>small{color:#8fb2cc!important}.command-view-frame .pro-dashboard-v2119 .pro-kpi-body>b{color:#fff!important}
.command-view-frame .pro-dashboard-v2119 .pro-kpi-icon{box-shadow:0 0 22px currentColor;background:#0b3455!important}.command-view-frame .pro-dashboard-v2119 .pro-kpi-track{background:#16344d!important}
.command-view-frame .pro-dashboard-v2119 .dashboard-approved-grid>.pro-card{background:linear-gradient(145deg,rgba(8,35,59,.98),rgba(4,23,43,.98))!important;border-color:#155078!important}
.command-view-frame .pro-dashboard-v2119 .pro-card-head{border-color:#164568!important}.command-view-frame .pro-dashboard-v2119 .pro-card-head h3{color:#f8fbff!important}.command-view-frame .pro-dashboard-v2119 .pro-card-head h3 i{color:#29a9ff!important}.command-view-frame .pro-dashboard-v2119 .pro-card-head small{color:#7fa6c4!important}
.command-view-frame .dashboard-donut-legend>span,.command-view-frame .building-state-legend,.command-view-frame .pro-empty{background:#071d34!important;border-color:#164568!important;color:#b9d4e8!important}.command-view-frame .dashboard-donut-center{background:#071d34!important;color:#fff!important}.command-view-frame .dashboard-donut-center span{color:#8fb2cc!important}
.command-view-frame .building-state-matrix{scrollbar-color:#1769aa #071d34}.command-view-frame .building-matrix-head b,.command-view-frame .building-matrix-head span{color:#8fb2cc!important}.command-view-frame .matrix-floor-label{background:#092d4c!important;border-color:#155a87!important;color:#ccecff!important}
.command-view-frame .dashboard-map{border-color:#17618e!important;filter:saturate(.9) brightness(.82) contrast(1.08)}
.command-view-frame .pro-message-list article{border-color:#164568!important}.command-view-frame .pro-message-list p,.command-view-frame .pro-message-list time{color:#9dbbd1!important}.command-view-frame .pro-message-list b{color:#f8fbff!important}
.command-view-frame .fp3-title h1,.command-view-frame .fp3-template-head h2,.command-view-frame .fp3-inspector h3{color:#fff!important}.command-view-frame .fp3-title p,.command-view-frame .fp3-meta,.command-view-frame .fp3-side-help{color:#8fb2cc!important}.command-view-frame .fp3-toolbar{background:#071d34!important;border-color:#164568!important}.command-view-frame .fp3-toolbar button{color:#a8c8df}.command-view-frame .fp3-map-wrap{background:#06182c!important}.command-view-frame .fp3-inspector{background:#06182c!important;border-color:#164568!important}

@media(max-width:1050px){.command-view .shell-horizontal-app{grid-template-columns:74px minmax(0,1fr)}.command-view .shell-horizontal-item{justify-content:center;padding:0}.command-view .shell-horizontal-item span{display:none}.command-view .shell-horizontal-item i{font-size:17px}.command-view .shell-horizontal-nav{padding-left:8px;padding-right:8px}.command-view .shell-horizontal-brand>div:last-child{display:none}.command-view .portal-view-switch button{padding:0 8px}}
@media(max-width:760px){.command-view .shell-horizontal-app{display:grid;grid-template-columns:1fr;grid-template-rows:max(62px,var(--brand-header-height)) 50px minmax(0,1fr)}.command-view .shell-horizontal-header{grid-column:1;grid-row:1}.command-view .shell-horizontal-nav-wrap{grid-column:1;grid-row:2;overflow-x:auto;overflow-y:hidden}.command-view .shell-horizontal-nav{height:50px;min-width:max-content;flex-direction:row;padding:0 4px}.command-view .shell-horizontal-item{padding:0 11px}.command-view .shell-horizontal-item span{display:inline}.command-view .shell-horizontal-main{grid-column:1;grid-row:3}.command-view .portal-view-switch button{font-size:0;width:32px;padding:0}.command-view .portal-view-switch button:before{font-size:13px;font-family:"Font Awesome 6 Free";font-weight:900}.command-view .portal-view-switch button[data-portal-view="classic"]:before{content:"\f185"}.command-view .portal-view-switch button[data-portal-view="command"]:before{content:"\f186"}}

/* RC3.8.0 - Centro de comando de emergencias */
.command-legacy-ops{display:none!important}
.command-emergency-banner{display:flex!important;align-items:center;gap:16px;min-height:82px;padding:14px 16px!important;margin-bottom:12px!important;border-radius:12px!important;overflow:hidden}
.command-emergency-icon{flex:0 0 44px;width:44px;height:44px;display:grid;place-items:center;font-size:28px}
.command-emergency-copy{min-width:250px;flex:1}.command-emergency-copy>span{font-size:10px;font-weight:900}.command-emergency-copy h2{font-size:21px!important;white-space:nowrap}.command-emergency-copy p{display:none}
.command-emergency-line{display:flex;align-items:center;gap:14px}.command-emergency-line>i{height:34px;width:1px;background:rgba(255,255,255,.6)}.command-emergency-line>b{font-size:15px;white-space:nowrap}
.command-elapsed{display:flex;align-items:center;gap:10px;padding:0 18px;border-left:1px solid rgba(255,255,255,.55);color:#fff}.command-elapsed>i{font-size:22px}.command-elapsed div{display:grid}.command-elapsed b{font-size:20px}.command-elapsed span{font-size:10px}
.command-emergency-actions{display:flex!important;align-items:center;justify-content:flex-end;gap:8px;flex-wrap:nowrap}.command-emergency-actions .btn{height:42px!important;padding:0 15px!important;white-space:nowrap;border:0!important}.command-emergency-actions .command-finish{background:#dc1822!important;color:#fff!important}
.command-kpis{display:grid!important;grid-template-columns:repeat(6,minmax(0,1fr))!important;gap:10px!important;margin-bottom:12px!important}.command-kpi{min-width:0!important;min-height:108px!important;padding:15px!important;gap:12px!important;border-radius:10px!important;align-items:center!important}.command-kpi>i{font-size:27px!important;flex:0 0 43px;width:43px;height:43px;display:grid;place-items:center;border-radius:50%}.command-kpi>div{display:grid;min-width:0}.command-kpi span{font-size:12px!important;font-weight:800}.command-kpi b{font-size:28px!important;line-height:1}.command-kpi small{font-size:10px;color:#64748b;margin-top:5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.command-main-grid{display:grid;grid-template-columns:minmax(0,3fr) minmax(280px,1fr);gap:12px;align-items:stretch;min-width:0}.command-plan-column,.command-side-panel{min-width:0}.command-side-panel{display:grid;grid-template-rows:auto minmax(180px,1fr) auto;gap:12px}
.command-plan-card{padding:0!important;overflow:hidden;min-width:0}.command-plan-head{min-height:65px;padding:12px 15px;display:flex;align-items:center;justify-content:space-between;gap:16px;border-bottom:1px solid #dbe4ee}.command-plan-head h3{margin:0;font-size:19px}.command-plan-head>div>span{font-size:12px;color:#64748b}.command-plan-tools{display:flex;align-items:center;gap:12px;min-width:0}.command-plan-legend{display:flex;gap:12px;font-size:9px;white-space:nowrap}.command-plan-legend span:before{content:"";display:inline-block;width:9px;height:9px;margin-right:4px;border-radius:50%;background:#94a3b8}.command-plan-legend .alerted:before{background:#f59e0b}.command-plan-legend .ok:before{background:#10a66a}.command-plan-legend .evacuating:before{background:#1676df}.command-plan-legend .help:before{background:#e4252e}.command-plan-tools label{display:flex;align-items:center;gap:7px;padding:7px 9px;border:1px solid #d6e0eb;border-radius:8px;background:#fff}.command-plan-tools select{border:0;background:transparent;font-weight:700;outline:0}.command-plan-canvas{min-width:0;overflow:hidden;padding:10px}.command-plan-canvas .floor-toolbar{display:none!important}
.command-side-card{padding:14px;border:1px solid #d7e0e9;border-radius:10px;background:#fff;min-width:0}.command-side-title{display:flex;align-items:flex-start;gap:10px}.command-side-title>i{font-size:22px;color:#dc1822}.command-side-title.blue>i{color:#1676df}.command-side-title.green>i{color:#10a66a}.command-side-title h3{font-size:16px;margin:0}.command-side-title span{font-size:10px;color:#64748b}.command-pending-card{border-color:#ff3d45;background:#fff8f8;text-align:center}.command-pending-card .command-side-title{text-align:left}.command-pending-card>strong{display:block;font-size:52px;line-height:1;color:#dc1822;margin-top:8px}.command-pending-card>small{display:block}.command-pending-card>.btn{width:100%;margin-top:8px;background:#e51622!important;color:#fff!important}.command-incoming-card{border-color:#1680ff;overflow:hidden}.command-incoming-card .incoming-resident-head{display:none}.command-incoming-card .incoming-resident-list{max-height:260px;overflow:auto;padding-right:3px}.command-incoming-card .incoming-resident-message-card{padding:10px!important;margin-top:9px!important}.command-empty-message{padding:24px 8px;text-align:center;color:#94a3b8;font-size:11px}.command-actions-card{border-color:#0eb878;background:#f6fffb}.command-action-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-top:12px}.command-action-grid .btn{height:82px;display:flex;flex-direction:column;justify-content:center;gap:3px}.command-action-grid .btn i{font-size:18px}.command-action-grid .btn span{font-size:9px}.command-normality{background:#08a667!important;color:#fff!important}.command-update{background:#fff!important;color:#075cca!important;border:1px solid #1680ff!important}.command-sitrep-editor{display:grid;gap:7px;margin-top:10px}.command-sitrep-editor textarea{min-height:64px}.command-sitrep-editor.hidden{display:none!important}
@media(max-width:1300px){.command-emergency-copy{min-width:190px}.command-emergency-copy h2{font-size:17px!important}.command-emergency-line>b{font-size:12px}.command-elapsed{padding:0 10px}.command-emergency-actions .btn{padding:0 10px!important;font-size:11px}.command-plan-legend{display:none}}
@media(max-width:1000px){.command-emergency-banner{flex-wrap:wrap}.command-emergency-actions{width:100%;justify-content:flex-start;overflow-x:auto}.command-kpis{grid-template-columns:repeat(3,minmax(0,1fr))!important}.command-main-grid{grid-template-columns:1fr}.command-side-panel{grid-template-columns:repeat(3,minmax(0,1fr));grid-template-rows:auto}.command-incoming-card .incoming-resident-list{max-height:180px}}
@media(max-width:680px){.command-emergency-banner{gap:9px}.command-emergency-copy{min-width:calc(100% - 62px)}.command-emergency-line{flex-wrap:wrap;gap:7px}.command-emergency-line>i{display:none}.command-elapsed{border-left:0;padding:0}.command-emergency-actions{display:grid!important;grid-template-columns:repeat(3,minmax(0,1fr));overflow:visible}.command-emergency-actions .btn{padding:0 4px!important;font-size:9px}.command-kpis{grid-template-columns:repeat(2,minmax(0,1fr))!important}.command-kpi{min-height:90px!important;padding:10px!important}.command-kpi>i{width:34px;height:34px;flex-basis:34px;font-size:18px!important}.command-kpi b{font-size:23px!important}.command-side-panel{grid-template-columns:1fr}.command-plan-head{align-items:flex-start;flex-direction:column}.command-plan-tools{width:100%;justify-content:flex-end}.command-plan-canvas{padding:4px}.nearby-map-card,.residents-final-section{margin-top:10px!important}}

/* RC3.7.0 - Bitácora de acuses de Android/Google TV. */
.tv-receipts{margin-top:16px;padding:16px;overflow:hidden}
.tv-receipts-head{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:14px}
.tv-receipts-head h3{margin:0 0 3px}.tv-receipts-head p{margin:0;color:#64748b}
.tv-receipts table{width:100%;border-collapse:collapse;min-width:760px}
.tv-receipts th,.tv-receipts td{padding:11px 12px;border-bottom:1px solid #e2e8f0;text-align:left;vertical-align:middle}
.tv-receipts th{background:#f8fafc;color:#475569;font-size:12px;text-transform:uppercase}
.tv-receipts td small{display:block;color:#64748b;margin-top:3px}.tv-empty-row{text-align:center!important;color:#64748b;padding:28px!important}
.table-scroll{overflow-x:auto}

/* RC3.7.1 - respuesta a solicitudes de asistencia desde dashboard. */
.dashboard-assistance-request{cursor:pointer;border-radius:10px;outline:none}.dashboard-assistance-request:hover,.dashboard-assistance-request:focus{background:#fff1f2;box-shadow:inset 0 0 0 1px #fecaca}.dashboard-assistance-hint{display:block;margin-top:5px;color:#b91c1c;font-weight:700}
.dashboard-support-modal{position:fixed;inset:0;z-index:50000;display:grid;place-items:center;padding:16px}.dashboard-support-backdrop{position:absolute;inset:0;background:rgba(2,12,24,.72);backdrop-filter:blur(3px)}.dashboard-support-dialog{position:relative;width:min(620px,100%);max-height:calc(100dvh - 32px);overflow:auto;background:#fff;border-radius:18px;border-top:6px solid #dc2626;box-shadow:0 28px 90px #0006}.dashboard-support-dialog header{display:flex;justify-content:space-between;gap:12px;padding:18px;border-bottom:1px solid #e2e8f0}.dashboard-support-dialog header small{font-size:10px;letter-spacing:.08em;color:#b91c1c;font-weight:800}.dashboard-support-dialog h2{margin:3px 0;font-size:22px}.dashboard-support-dialog header p{margin:0;color:#64748b}.dashboard-support-dialog header button{width:38px;height:38px;border:1px solid #dbe3ea;border-radius:10px;background:#fff;font-size:22px}.dashboard-support-request-copy,.dashboard-support-previous{margin:14px 18px;padding:13px;border-radius:12px;background:#fff7f7;border:1px solid #fecaca}.dashboard-support-previous{background:#ecfdf5;border-color:#a7f3d0}.dashboard-support-request-copy p,.dashboard-support-previous p{margin:6px 0;color:#334155}.dashboard-support-request-copy time,.dashboard-support-previous time{font-size:11px;color:#64748b}.dashboard-support-dialog>label{display:grid;gap:6px;padding:2px 18px 14px}.dashboard-support-dialog>label>span{font-weight:800}.dashboard-support-dialog textarea{width:100%;box-sizing:border-box;min-height:105px;padding:12px;border:1px solid #cbd5e1;border-radius:11px;font:500 15px/1.4 inherit;resize:vertical}.dashboard-support-dialog label small{text-align:right;color:#94a3b8}.dashboard-support-dialog footer{position:sticky;bottom:0;display:flex;justify-content:flex-end;gap:9px;padding:13px 18px 18px;background:#fff}
@media(max-width:520px){.dashboard-support-modal{padding:8px}.dashboard-support-dialog{max-height:calc(100dvh - 16px);border-radius:15px}.dashboard-support-dialog header{padding:14px}.dashboard-support-dialog h2{font-size:18px}.dashboard-support-request-copy,.dashboard-support-previous{margin:10px 13px}.dashboard-support-dialog>label{padding:2px 13px 10px}.dashboard-support-dialog footer{padding:10px 13px 13px}.dashboard-support-dialog footer .btn{flex:1}}

/* RC3.8.1 - comunicaciones, filtros de apoyo y acciones operativas */
.command-incoming-card{display:flex;flex-direction:column;min-height:260px!important;padding:14px!important;background:linear-gradient(180deg,#f8fbff 0,#fff 35%)!important}
.command-incoming-card .emergency-incoming-resident-host{flex:1;min-height:0;margin-top:10px}
.command-incoming-card .incoming-resident-panel{height:100%;border:0!important;background:transparent!important;padding:0!important;box-shadow:none!important}
.command-incoming-card .incoming-resident-list{display:flex!important;flex-direction:column!important;gap:9px!important;max-height:330px!important;padding:0 3px 0 0!important;overflow-y:auto!important;overflow-x:hidden!important}
.command-incoming-card .incoming-resident-message-card{display:grid!important;grid-template-columns:38px minmax(0,1fr)!important;gap:10px!important;margin:0!important;padding:11px!important;border:1px solid #bfd7ff!important;border-left:4px solid #2678ed!important;border-radius:11px!important;background:#fff!important;box-shadow:0 3px 10px rgba(37,99,235,.08)!important}
.command-incoming-card .incoming-resident-message-card.is-recent{border-left-color:#ef4444!important;background:#fffafa!important}
.command-incoming-card .incoming-resident-avatar{width:38px!important;height:38px!important;flex-basis:38px!important;background:#e8f1ff!important;color:#1769d2!important;font-size:14px!important}
.command-incoming-card .incoming-resident-meta{display:flex!important;align-items:flex-start!important;justify-content:space-between!important;gap:8px!important}.command-incoming-card .incoming-resident-meta>div{display:flex;min-width:0;flex-direction:column}.command-incoming-card .incoming-resident-meta b{font-size:11px!important;color:#10233f!important}.command-incoming-card .incoming-resident-meta span{font-size:8px;color:#46709f;font-weight:750}.command-incoming-card .incoming-resident-meta time{font-size:7px!important;color:#64748b!important}
.command-incoming-card .incoming-message-copy{display:grid;grid-template-columns:12px 1fr;gap:4px;margin:7px 0 9px;padding:8px;border-radius:8px;background:#f4f8ff;color:#244464}.command-incoming-card .incoming-message-copy>i{font-size:8px;color:#6a9be4}.command-incoming-card .incoming-message-copy p{margin:0!important;font-size:10px!important;line-height:1.4!important;color:#253b59!important;overflow-wrap:anywhere}
.command-incoming-card .incoming-resident-actions{display:grid!important;grid-template-columns:1fr 1fr!important;gap:6px!important}.command-incoming-card .incoming-resident-actions button{display:inline-flex!important;align-items:center!important;justify-content:center!important;min-height:30px!important;padding:5px 7px!important;border-radius:7px!important;font-size:8px!important;font-weight:800!important}.command-incoming-card .incoming-resident-actions button:first-child{background:#1769d2!important;border-color:#1769d2!important;color:#fff!important}.command-incoming-card .incoming-resident-actions button:last-child{background:#fff!important;border:1px solid #bfd7ff!important;color:#1769d2!important}
.command-actions-card .command-action-grid .btn{border:0!important;box-shadow:0 5px 13px rgba(15,23,42,.14)!important;transition:transform .16s ease,filter .16s ease!important}.command-actions-card .command-action-grid .btn:hover{transform:translateY(-2px);filter:brightness(1.04)}
.command-actions-card .command-normality{background:linear-gradient(135deg,#08a667,#0cc27a)!important;color:#fff!important}.command-actions-card .command-update{background:linear-gradient(135deg,#1268d5,#2692f3)!important;color:#fff!important}.command-actions-card .command-action-grid .btn i,.command-actions-card .command-action-grid .btn b,.command-actions-card .command-action-grid .btn span{color:#fff!important}
.nearby-filter-bar{display:flex;align-items:center;gap:7px;padding:7px 0 10px;max-width:100%;overflow-x:auto;scrollbar-width:thin}.nearby-filter{display:inline-flex;align-items:center;gap:6px;min-height:34px;padding:6px 10px;border:1px solid #d6e0eb;border-radius:999px;background:#fff;color:#334155;font:700 10px/1 inherit;white-space:nowrap;cursor:pointer;transition:.16s ease}.nearby-filter i{width:20px;height:20px;display:grid;place-items:center;border-radius:50%;background:#eef4fa;color:#315779}.nearby-filter b{min-width:18px;padding:3px 5px;border-radius:999px;background:#edf2f7;color:#64748b;font-size:8px}.nearby-filter:hover{border-color:#74a9df;background:#f4f9ff}.nearby-filter.active{border-color:#1769d2;background:#1769d2;color:#fff;box-shadow:0 3px 10px rgba(23,105,210,.25)}.nearby-filter.active i{background:#fff;color:#1769d2}.nearby-filter.active b{background:#0f56ae;color:#fff}.nearby-map-card{overflow:hidden!important}
@media(max-width:680px){.command-incoming-card{min-height:230px!important}.command-incoming-card .incoming-resident-list{max-height:280px!important}.nearby-filter-bar{margin-right:-4px}.nearby-filter{padding:5px 8px}.command-actions-card .command-action-grid .btn{height:70px!important}}

/* RC3.8.2 - actualización estable, controles compactos y bitácora plegable */
.command-emergency-actions .btn{font-size:10px!important;padding-inline:11px!important;gap:5px!important}.command-pending-card>.btn{font-size:10px!important}.command-actions-card .command-action-grid .btn{height:68px!important;padding:7px!important;line-height:1.05!important}.command-actions-card .command-action-grid .btn b{font-size:12px!important;line-height:1.12!important}.command-actions-card .command-action-grid .btn span{font-size:8px!important;font-weight:650!important}.command-actions-card .command-action-grid .btn i{font-size:15px!important}
.emergency-history-accordion{padding:0!important;overflow:hidden}.emergency-history-accordion>summary{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:13px 16px;cursor:pointer;list-style:none;background:#fff;color:#1e293b}.emergency-history-accordion>summary::-webkit-details-marker{display:none}.emergency-history-accordion>summary>span{display:flex;align-items:center;gap:9px}.emergency-history-accordion>summary>span>i{color:#64748b}.emergency-history-accordion>summary b{font-size:13px}.emergency-history-accordion>summary small{padding:3px 7px;border-radius:999px;background:#edf2f7;color:#64748b;font-size:9px}.emergency-history-accordion>summary>i{font-size:11px;color:#64748b;transition:transform .18s ease}.emergency-history-accordion[open]>summary{border-bottom:1px solid #e2e8f0;background:#f8fafc}.emergency-history-accordion[open]>summary>i{transform:rotate(180deg)}.emergency-history-accordion>.table-wrap{max-height:300px;overflow:auto}
.command-empty-message{height:100%;min-height:130px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:5px;border:1px dashed #c9d9ee;border-radius:10px;background:#f8fbff}.command-empty-message>i{font-size:22px;color:#8aa9cc}.command-empty-message>b{font-size:11px;color:#35516f}.command-empty-message>span{max-width:220px;font-size:8px;text-align:center;color:#7b91a9}
@media(max-width:680px){.command-emergency-actions .btn{font-size:8px!important;padding-inline:4px!important}.command-actions-card .command-action-grid .btn b{font-size:11px!important}.emergency-history-accordion>summary{padding:11px}.emergency-history-accordion>summary b{font-size:11px}}

/* RC3.8.3 - mensajes propios, KPI móviles e identidad global */
body.frame-body,.frame-body .frame-page{background:var(--app-background,#f4f7fb)!important}
.portal-toast-stack{position:fixed;z-index:70000;top:14px;right:14px;display:grid;gap:9px;width:min(390px,calc(100vw - 28px));pointer-events:none}.portal-toast{display:grid;grid-template-columns:34px minmax(0,1fr) 24px;align-items:center;gap:9px;padding:11px 12px;border:1px solid #bbf7d0;border-left:4px solid #16a34a;border-radius:11px;background:#fff;box-shadow:0 16px 40px rgba(15,23,42,.2);animation:portalToastIn .2s ease;pointer-events:auto}.portal-toast>i{font-size:21px;color:#16a34a}.portal-toast>div{display:grid}.portal-toast b{font-size:12px}.portal-toast span{font-size:10px;color:#64748b;line-height:1.35}.portal-toast button{border:0;background:transparent;color:#94a3b8;font-size:20px}.portal-toast-error{border-color:#fecaca;border-left-color:#dc2626}.portal-toast-error>i{color:#dc2626}.portal-toast-warning{border-color:#fde68a;border-left-color:#f59e0b}.portal-toast-warning>i{color:#d97706}.portal-toast.leaving{opacity:0;transform:translateX(12px);transition:.18s ease}@keyframes portalToastIn{from{opacity:0;transform:translateY(-8px)}to{opacity:1;transform:none}}
.portal-confirm-dialog{display:grid;grid-template-columns:54px 1fr;gap:14px;align-items:start}.portal-confirm-icon{width:52px;height:52px;display:grid;place-items:center;border-radius:50%;background:#e8f8f1;color:#07945b;font-size:22px}.portal-confirm-icon.danger{background:#feecec;color:#dc2626}.portal-confirm-dialog h2{margin:3px 0 6px;font-size:20px}.portal-confirm-dialog p{margin:0;color:#64748b;font-size:13px;line-height:1.5}.portal-confirm-actions{margin-top:18px!important}.portal-confirm-actions .btn{min-width:130px}
@media(max-width:760px){.pro-dashboard-v2119 .pro-kpi-grid{align-items:stretch!important}.pro-dashboard-v2119 .pro-kpi{display:flex!important;flex-direction:column!important;align-items:center!important;justify-content:center!important;text-align:center!important;overflow:hidden!important}.pro-dashboard-v2119 .pro-kpi-icon{display:grid!important;place-items:center!important;margin:0 auto!important;padding:0!important}.pro-dashboard-v2119 .pro-kpi-icon i{display:block!important;width:auto!important;height:auto!important;line-height:1!important}.pro-dashboard-v2119 .pro-kpi-body{align-items:center!important;justify-content:center!important;overflow:visible!important}.portal-toast-stack{top:8px;right:8px;width:calc(100vw - 16px)}.portal-confirm-dialog{grid-template-columns:42px 1fr;gap:10px}.portal-confirm-icon{width:42px;height:42px;font-size:18px}.portal-confirm-dialog h2{font-size:17px}.portal-confirm-actions .btn{min-width:0;flex:1}}
.command-kpi>i{border-radius:12px!important}.command-kpi.kpi-total>i{background:#e8f1ff!important;color:#1769d2!important}.command-kpi.kpi-alerted>i{background:#fff3df!important;color:#ed8b00!important}.command-kpi.kpi-ok>i{background:#e5f8ec!important;color:#13a655!important}.command-kpi.kpi-evacuating>i{background:#e7f4ff!important;color:#1680d8!important}.command-kpi.kpi-help>i{background:#ffe8e9!important;color:#db202b!important}.command-kpi.kpi-no-report>i{background:#fff0e4!important;color:#e97018!important}
.brand-mobile-preview{width:min(360px,100%);min-height:140px;display:flex;flex-direction:column;justify-content:space-between;overflow:hidden;border:1px solid #d8e1ea;border-radius:13px;background:#fff}.brand-mobile-preview>div:first-child{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;padding:12px}.brand-mobile-preview>div:first-child>i{font-size:25px;color:#0f766e}.brand-mobile-preview>div:first-child>b{font-weight:800}.brand-mobile-preview>div:first-child>span{font-size:10px}.brand-mobile-preview>div:last-child{min-height:48px;display:flex;align-items:center;justify-content:space-around;padding:7px 12px;border-top:1px solid #d8e1ea}.brand-mobile-preview>div:last-child i{width:30px;height:30px;display:grid;place-items:center;border:1px solid #d8e1ea;border-radius:8px;background:#fff;color:#0f172a}

/* RC3.6.0 - Mantenedor de pantallas Android/Google TV. */
.tv-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,360px),1fr));gap:14px}.tv-card{display:grid;grid-template-columns:auto minmax(0,1fr);gap:14px;align-items:start}.tv-icon{width:52px;height:52px;display:grid;place-items:center;border-radius:14px;background:#fff1f2;color:#dc2626;font-size:22px}.tv-icon.online{background:#ecfdf3;color:#16a34a}.tv-card-copy h3{margin:2px 0 4px}.tv-card-copy p{margin:0;color:#64748b}.tv-status{display:flex;align-items:center;gap:8px;margin-top:10px;font-size:12px;color:#64748b}.tv-card-actions{grid-column:1/-1;display:flex;justify-content:flex-end;gap:7px}.tv-enrollment-code{margin:22px auto;font-size:clamp(42px,10vw,72px);font-weight:900;letter-spacing:.18em;text-align:center;color:#0f766e;font-variant-numeric:tabular-nums}

/* RC3.5.2 - Plano completo en móvil y pisos diferenciados de departamentos */
.building-floor{
  border-color:#274c77!important;
  background:#eaf2fb!important;
  color:#17324d!important;
}
.building-floor>span:first-child>b{
  display:inline-flex;align-items:center;justify-content:center;
  min-width:58px;padding:4px 8px;border-radius:7px;
  background:#274c77;color:#fff!important;
}
.building-floor.active{border-color:#d97706!important;background:#fff7e6!important;box-shadow:0 0 0 2px rgba(217,119,6,.14)}
.building-floor.active>span:first-child>b{background:#d97706!important}
.dashboard-matrix-card .matrix-floor-label:not(.disabled){
  min-height:25px!important;border:1px solid #274c77!important;border-radius:6px!important;
  background:#274c77!important;color:#fff!important;cursor:pointer!important;
}
.dashboard-matrix-card .matrix-floor-label.disabled{color:#64748b!important}
@media(max-width:700px){
  .em-fp3-shell{width:100%!important;max-width:100%!important;max-height:none!important;overflow:hidden!important}
  .em-fp3-svg{display:block!important;width:100%!important;max-width:100%!important;min-width:0!important;min-height:0!important;height:auto!important}
  #floorPlanContainer{width:100%!important;min-width:0!important;max-width:100%!important;overflow:hidden!important}
  .emergency-layout-grid>.card{min-width:0!important;max-width:100%!important}
}

/* ==========================================================
   RC2.12.0 - SITREP dirigido + respuesta selectiva
   ========================================================== */
.sitrep-target-row{
  display:grid;
  grid-template-columns:185px minmax(220px,1fr);
  gap:7px;
}
.sitrep-target-row select{
  height:34px;
  min-width:0;
  border:1px solid #dbe3ea;
  border-radius:8px;
  padding:0 9px;
  background:#fff;
  color:#334155;
  font-family:"Inter","Segoe UI",Arial,sans-serif;
  font-size:9px;
  font-weight:500;
}
.sitrep-target-row select.hidden{display:none!important}

.incoming-resident-actions{
  display:flex;
  align-items:center;
  gap:6px;
  margin-top:7px;
}
.incoming-resident-actions button{
  height:29px;
  display:inline-flex;
  align-items:center;
  justify-content:center;
  gap:5px;
  padding:0 9px;
  border:1px solid #bfdbfe;
  border-radius:7px;
  background:#fff;
  color:#1d4ed8;
  font-family:inherit;
  font-size:8px;
  font-weight:500;
  cursor:pointer;
}
.incoming-resident-actions button:first-child{
  background:#2563eb;
  border-color:#2563eb;
  color:#fff;
}
.incoming-resident-message-card{cursor:default!important}

.reply-original-message{
  margin:10px 0 12px;
  padding:10px 12px;
  border-left:4px solid #2563eb;
  border-radius:8px;
  background:#eff6ff;
}
.reply-original-message span{
  display:block;
  margin-bottom:4px;
  color:#1d4ed8;
  font-size:7px;
  letter-spacing:.09em;
  font-weight:700;
}
.reply-original-message p{
  margin:0;
  color:#1e293b;
  font-size:10px;
  line-height:1.45;
}

@media(max-width:760px){
  .sitrep-target-row{grid-template-columns:1fr}
  .sitrep-target-row select{
    width:100%;
    height:38px;
    font-size:10px;
  }
  .incoming-resident-actions{flex-wrap:wrap}
  .incoming-resident-actions button{
    flex:1 1 auto;
    height:34px;
    font-size:9px;
  }
}

/* ==========================================================
   RC2.12.2 - Pendientes + Comunicación entrante en una fila
   ========================================================== */
.emergency-communications-row{
  display:grid;
  grid-template-columns:minmax(300px,40%) minmax(0,60%);
  gap:10px;
  align-items:stretch;
  margin:10px 0 12px;
}

.emergency-unack-column,
.emergency-incoming-column{
  min-width:0;
  min-height:0;
}

.emergency-communications-row .emergency-resend-strip{
  margin:0!important;
  height:100%;
  min-height:146px;
}

.emergency-resend-strip-column{
  display:flex!important;
  flex-direction:column;
  align-items:stretch!important;
  justify-content:space-between!important;
  gap:12px!important;
  padding:13px 14px!important;
}

.emergency-resend-strip-column .emergency-resend-copy{
  display:flex;
  flex-direction:column;
  align-items:flex-start;
  gap:2px;
}

.emergency-resend-strip-column .emergency-resend-copy>b{
  font-size:13px;
  line-height:1.25;
  color:#0f172a;
  font-weight:650;
}

.emergency-resend-strip-column .emergency-resend-copy>span:not(.emergency-section-kicker){
  margin-top:3px;
  font-size:9px;
  line-height:1.35;
  color:#64748b;
}

.emergency-section-kicker{
  display:inline-flex!important;
  flex-direction:row!important;
  align-items:center;
  gap:5px;
  margin:0 0 4px!important;
  font-size:7px!important;
  line-height:1!important;
  font-weight:700!important;
  letter-spacing:.08em;
  color:#b91c1c!important;
}

.emergency-resend-strip-column .btn{
  align-self:flex-end;
  min-height:35px;
  padding:0 13px;
  font-size:9px;
  font-weight:500;
  white-space:nowrap;
}

.emergency-resend-strip-column.all-acknowledged{
  border-color:#bbf7d0!important;
  background:#f0fdf4!important;
}
.emergency-resend-strip-column.all-acknowledged .emergency-section-kicker{
  color:#15803d!important;
}

.emergency-communications-row .emergency-incoming-resident-host{
  display:block!important;
  height:146px;
  min-height:146px;
}

.emergency-communications-row .incoming-resident-panel{
  height:100%;
  min-height:0;
  margin:0!important;
  display:flex;
  flex-direction:column;
}

.emergency-communications-row .incoming-resident-head{
  flex:0 0 auto;
  min-height:49px;
  padding:8px 11px!important;
}

.emergency-communications-row .incoming-resident-head h3{
  font-size:11px!important;
}

.emergency-communications-row .incoming-resident-head>div>small{
  font-size:7px!important;
}

.emergency-communications-row .incoming-resident-count{
  width:25px!important;
  height:25px!important;
  font-size:10px!important;
}

.emergency-communications-row .incoming-resident-list{
  flex:1 1 auto;
  min-height:0;
  overflow-y:auto;
  overflow-x:hidden;
  grid-template-columns:repeat(2,minmax(0,1fr))!important;
  align-content:start;
  gap:6px!important;
  padding:7px!important;
  scrollbar-width:thin;
  scrollbar-color:#93c5fd transparent;
}

.emergency-communications-row .incoming-resident-list::-webkit-scrollbar{
  width:6px;
}
.emergency-communications-row .incoming-resident-list::-webkit-scrollbar-thumb{
  background:#93c5fd;
  border-radius:999px;
}
.emergency-communications-row .incoming-resident-list::-webkit-scrollbar-track{
  background:transparent;
}

.emergency-communications-row .incoming-resident-message-card{
  min-height:74px;
  padding:7px!important;
}

.emergency-communications-row .incoming-resident-actions{
  gap:4px;
  margin-top:5px;
}

.emergency-communications-row .incoming-resident-actions button{
  height:25px;
  padding:0 7px;
  font-size:7px;
}

/* Si aún no han llegado mensajes, la columna se mantiene en su posición
   para que la fila no cambie de tamaño al primer mensaje. */
.emergency-communications-row .emergency-incoming-resident-host:empty{
  display:block!important;
  border:1px dashed #bfdbfe;
  border-radius:12px;
  background:#f8fbff;
  position:relative;
}
.emergency-communications-row .emergency-incoming-resident-host:empty:after{
  content:"Sin mensajes nuevos desde los celulares";
  position:absolute;
  inset:0;
  display:grid;
  place-items:center;
  padding:20px;
  color:#64748b;
  font-size:9px;
  text-align:center;
}

@media(max-width:900px){
  .emergency-communications-row{
    grid-template-columns:1fr;
  }

  .emergency-communications-row .emergency-resend-strip{
    min-height:auto;
  }

  .emergency-resend-strip-column{
    flex-direction:row!important;
    align-items:center!important;
  }

  .emergency-communications-row .emergency-incoming-resident-host{
    height:190px;
    min-height:190px;
  }

  .emergency-communications-row .incoming-resident-list{
    grid-template-columns:1fr!important;
  }
}

@media(max-width:560px){
  .emergency-resend-strip-column{
    flex-direction:column!important;
    align-items:stretch!important;
  }

  .emergency-resend-strip-column .btn{
    align-self:stretch;
    width:100%;
  }
}

/* ==========================================================
   RC2.12.3 - Una sola fila operacional / 4 columnas
   Normalidad | SITREP | Pendientes | Comunicación entrante
   ========================================================== */
.emergency-ops-four-grid{
  display:grid;
  grid-template-columns:minmax(0,1.05fr) minmax(0,1.45fr) minmax(0,1.1fr) minmax(0,1.9fr);
  gap:8px;
  align-items:stretch;
  margin:10px 0 10px;
}

.ops-four-card{
  min-width:0;
  height:142px;
  border:1px solid #dbe3ea;
  border-radius:10px;
  background:#fff;
  padding:10px 11px;
  display:flex;
  flex-direction:column;
  overflow:hidden;
  box-sizing:border-box;
}

.ops-four-card-head{
  min-height:0;
  display:flex;
  flex-direction:column;
  align-items:flex-start;
}

.ops-four-kicker{
  display:inline-flex;
  align-items:center;
  gap:5px;
  margin:0 0 3px;
  font-family:"Inter","Segoe UI",Arial,sans-serif;
  font-size:7px;
  line-height:1;
  font-weight:700;
  letter-spacing:.07em;
  text-transform:uppercase;
}

.ops-four-card-head>b{
  display:block;
  margin:0;
  font-family:"Inter","Segoe UI",Arial,sans-serif;
  font-size:11px;
  line-height:1.22;
  font-weight:600;
  color:#0f172a;
}

.ops-four-card-head>small{
  display:block;
  margin-top:3px;
  font-family:"Inter","Segoe UI",Arial,sans-serif;
  font-size:7px;
  line-height:1.25;
  font-weight:400;
  color:#64748b;
}

.ops-four-card-action{
  margin-top:auto;
  min-height:34px;
  display:flex;
  align-items:flex-end;
}

.ops-unified-action{
  height:34px!important;
  min-height:34px!important;
  border-radius:7px!important;
  padding:0 11px!important;
  display:inline-flex!important;
  align-items:center!important;
  justify-content:center!important;
  gap:5px!important;
  font-family:"Inter","Segoe UI",Arial,sans-serif!important;
  font-size:9px!important;
  line-height:1!important;
  font-weight:500!important;
  white-space:nowrap;
  box-sizing:border-box;
}

/* Normalidad */
.ops-normality-card{
  border-color:#86efac;
  background:#f0fdf4;
}
.ops-normality-card .ops-four-kicker{color:#15803d}
.ops-normality-card .ops-unified-action{
  margin-left:auto;
  background:#16a34a!important;
  border-color:#16a34a!important;
  color:#fff!important;
}

/* SITREP */
.ops-sitrep-card{
  border-color:#cbd5e1;
  background:#fff;
}
.ops-sitrep-card .ops-four-kicker{color:#15803d}
.ops-sitrep-controls{
  display:grid;
  grid-template-columns:145px minmax(0,1fr);
  gap:5px;
  margin-top:7px;
  min-height:0;
}
.ops-sitrep-controls .sitrep-target-row{
  display:block!important;
}
.ops-sitrep-controls .sitrep-target-row select{
  width:100%!important;
  height:30px!important;
  min-width:0!important;
  font-size:8px!important;
  font-weight:400!important;
  border-radius:6px!important;
}
.ops-sitrep-controls #sitrepTarget:not(.hidden){
  margin-top:4px;
}
.ops-sitrep-controls #sitrepMessage{
  width:100%;
  min-width:0;
  height:30px;
  border:1px solid #dbe3ea;
  border-radius:6px;
  padding:0 8px;
  font-family:"Inter","Segoe UI",Arial,sans-serif;
  font-size:8px;
  font-weight:400;
  box-sizing:border-box;
}
.ops-sitrep-card .ops-four-card-action{
  justify-content:flex-end;
}
.ops-sitrep-card .ops-unified-action{
  background:#0f9488!important;
  border-color:#0f9488!important;
  color:#fff!important;
}

/* Pendientes de acuse */
.ops-pending-card.has-pending{
  border-color:#fecaca;
  background:#fff7f7;
}
.ops-pending-card.has-pending .ops-four-kicker{color:#b91c1c}
.ops-pending-card.all-acknowledged{
  border-color:#bbf7d0;
  background:#f0fdf4;
}
.ops-pending-card.all-acknowledged .ops-four-kicker{color:#15803d}
.ops-pending-card .ops-unified-action{
  margin-left:auto;
  background:#c81e1e!important;
  border-color:#c81e1e!important;
  color:#fff!important;
}
.ops-action-placeholder{
  display:block;
  height:34px;
}

/* Comunicación entrante */
.ops-incoming-card{
  padding:0!important;
  border-color:#60a5fa;
  border-left:4px solid #2563eb;
  background:#f8fbff;
}
.ops-incoming-card .emergency-incoming-resident-host{
  display:block!important;
  width:100%;
  height:100%;
  min-height:0;
}
.ops-incoming-card .emergency-incoming-resident-host:empty{
  display:block!important;
  position:relative;
  border:0!important;
  border-radius:0!important;
  height:100%!important;
  background:#f8fbff!important;
}
.ops-incoming-card .emergency-incoming-resident-host:empty:before{
  content:"COMUNICACIÓN ENTRANTE";
  position:absolute;
  top:10px;
  left:11px;
  color:#1d4ed8;
  font-size:7px;
  font-weight:700;
  letter-spacing:.07em;
}
.ops-incoming-card .emergency-incoming-resident-host:empty:after{
  content:"Sin mensajes nuevos desde los celulares";
  position:absolute;
  inset:28px 10px 10px;
  display:grid;
  place-items:center;
  color:#64748b;
  font-size:8px;
  text-align:center;
}
.ops-incoming-card .incoming-resident-panel{
  height:100%!important;
  margin:0!important;
  border:0!important;
  border-radius:0!important;
  box-shadow:none!important;
  display:flex!important;
  flex-direction:column!important;
  background:#f8fbff!important;
}
.ops-incoming-card .incoming-resident-head{
  flex:0 0 auto;
  min-height:42px!important;
  padding:7px 9px!important;
}
.ops-incoming-card .incoming-resident-head>div>span{
  font-family:"Inter","Segoe UI",Arial,sans-serif;
  font-size:7px!important;
  font-weight:700!important;
}
.ops-incoming-card .incoming-resident-head h3{
  margin:1px 0!important;
  font-family:"Inter","Segoe UI",Arial,sans-serif;
  font-size:10px!important;
  line-height:1.1!important;
  font-weight:600!important;
}
.ops-incoming-card .incoming-resident-head>div>small{
  font-size:6.5px!important;
  line-height:1.1!important;
}
.ops-incoming-card .incoming-resident-count{
  width:24px!important;
  height:24px!important;
  font-size:9px!important;
}
.ops-incoming-card .incoming-resident-list{
  flex:1 1 auto!important;
  min-height:0!important;
  overflow-y:auto!important;
  overflow-x:hidden!important;
  grid-template-columns:repeat(2,minmax(0,1fr))!important;
  align-content:start!important;
  gap:5px!important;
  padding:6px!important;
  scrollbar-width:thin;
  scrollbar-color:#93c5fd transparent;
}
.ops-incoming-card .incoming-resident-list::-webkit-scrollbar{width:5px}
.ops-incoming-card .incoming-resident-list::-webkit-scrollbar-thumb{
  background:#93c5fd;
  border-radius:999px;
}
.ops-incoming-card .incoming-resident-message-card{
  min-height:68px!important;
  padding:6px!important;
}
.ops-incoming-card .incoming-resident-avatar{
  width:24px!important;
  height:24px!important;
  flex:0 0 24px!important;
}
.ops-incoming-card .incoming-resident-meta b{font-size:8px!important}
.ops-incoming-card .incoming-resident-meta time{font-size:6px!important}
.ops-incoming-card .incoming-resident-content p{
  margin:2px 0!important;
  font-size:7px!important;
  line-height:1.25!important;
}
.ops-incoming-card .incoming-resident-actions{
  margin-top:4px!important;
  gap:4px!important;
}
.ops-incoming-card .incoming-resident-actions button{
  height:24px!important;
  min-height:24px!important;
  padding:0 6px!important;
  border-radius:6px!important;
  font-family:"Inter","Segoe UI",Arial,sans-serif!important;
  font-size:6.5px!important;
  line-height:1!important;
  font-weight:500!important;
}

/* Elimina márgenes heredados de las estructuras anteriores */
.emergency-ops-four-grid .normality-box,
.emergency-ops-four-grid .sitrep-box,
.emergency-communications-row{
  margin:0!important;
}

/* Responsive: escritorio conserva las 4 columnas.
   Tablet: 2x2. Móvil: una columna. */
@media(max-width:1180px){
  .emergency-ops-four-grid{
    grid-template-columns:repeat(2,minmax(0,1fr));
  }
  .ops-four-card{height:142px}
}
@media(max-width:700px){
  .emergency-ops-four-grid{
    grid-template-columns:1fr;
  }
  .ops-four-card{
    height:auto;
    min-height:130px;
  }
  .ops-sitrep-controls{
    grid-template-columns:1fr;
  }
  .ops-incoming-card{
    height:190px!important;
  }
  .ops-incoming-card .incoming-resident-list{
    grid-template-columns:1fr!important;
  }
}

/* ==========================================================
   RC2.12.4 - Compactación KPI + 1 mensaje visible + botones iguales
   ========================================================== */

/* Sube visualmente los KPI un espacio y reduce separación con la franja operativa */
.emergency-ops-four-grid{
  margin-bottom:4px!important;
}

.emergency-kpi-strip.command-kpis{
  margin-top:0!important;
  transform:translateY(-4px);
  margin-bottom:2px!important;
}

/* Todos los botones principales de la franja operativa:
   mismo alto, tipografía, tamaño y ancho visual mínimo */
.emergency-ops-four-grid .ops-unified-action{
  height:34px!important;
  min-height:34px!important;
  min-width:138px!important;
  padding:0 12px!important;
  border-radius:7px!important;
  font-family:"Inter","Segoe UI",Arial,sans-serif!important;
  font-size:9px!important;
  line-height:1!important;
  font-weight:500!important;
  letter-spacing:0!important;
  display:inline-flex!important;
  align-items:center!important;
  justify-content:center!important;
  gap:5px!important;
  box-sizing:border-box!important;
  white-space:nowrap!important;
}

.ops-normality-card .ops-four-card-action,
.ops-sitrep-card .ops-four-card-action,
.ops-pending-card .ops-four-card-action{
  min-height:34px!important;
  align-items:flex-end!important;
}

/* Comunicación entrante:
   sólo una tarjeta visible a la vez y scroll vertical para las siguientes */
.ops-incoming-card .incoming-resident-list{
  display:block!important;
  overflow-y:auto!important;
  overflow-x:hidden!important;
  padding:6px!important;
  scroll-snap-type:y proximity;
}

.ops-incoming-card .incoming-resident-message-card{
  width:100%!important;
  min-height:72px!important;
  height:72px!important;
  margin:0 0 6px 0!important;
  box-sizing:border-box!important;
  scroll-snap-align:start;
}

.ops-incoming-card .incoming-resident-message-card:last-child{
  margin-bottom:0!important;
}

/* Ajusta el alto útil para que se vea exactamente una tarjeta y el inicio del scroll */
.ops-incoming-card{
  height:142px!important;
}

.ops-incoming-card .incoming-resident-head{
  min-height:42px!important;
  height:42px!important;
}

.ops-incoming-card .incoming-resident-list{
  height:94px!important;
  max-height:94px!important;
  min-height:94px!important;
}

/* Scroll más visible */
.ops-incoming-card .incoming-resident-list{
  scrollbar-width:thin;
  scrollbar-color:#60a5fa #eff6ff;
}

.ops-incoming-card .incoming-resident-list::-webkit-scrollbar{
  width:7px;
}
.ops-incoming-card .incoming-resident-list::-webkit-scrollbar-track{
  background:#eff6ff;
  border-radius:999px;
}
.ops-incoming-card .incoming-resident-list::-webkit-scrollbar-thumb{
  background:#60a5fa;
  border-radius:999px;
  border:1px solid #dbeafe;
}

/* Mantiene uniformidad de botones internos de cada mensaje */
.ops-incoming-card .incoming-resident-actions button{
  height:24px!important;
  min-height:24px!important;
  min-width:74px!important;
  padding:0 7px!important;
  border-radius:6px!important;
  font-family:"Inter","Segoe UI",Arial,sans-serif!important;
  font-size:6.5px!important;
  line-height:1!important;
  font-weight:500!important;
  display:inline-flex!important;
  align-items:center!important;
  justify-content:center!important;
  gap:4px!important;
}

/* En tablet y móvil no aplicar desplazamiento negativo de KPI */
@media(max-width:900px){
  .emergency-kpi-strip.command-kpis{
    transform:none!important;
    margin-top:4px!important;
  }
}

@media(max-width:700px){
  .emergency-ops-four-grid .ops-unified-action{
    width:100%!important;
    min-width:0!important;
  }

  .ops-incoming-card{
    height:190px!important;
  }

  .ops-incoming-card .incoming-resident-list{
    height:140px!important;
    max-height:140px!important;
    min-height:140px!important;
  }

  .ops-incoming-card .incoming-resident-message-card{
    height:78px!important;
    min-height:78px!important;
  }
}

/* ==========================================================
   RC2.12.5 - KPI como segundo bloque + botones comunicación
   ========================================================== */

/* Orden visual correcto:
   1. Banner emergencia
   2. KPI
   3. Franja operacional de 4 columnas
*/
.emergency-kpi-strip.command-kpis{
  transform:none!important;
  margin-top:8px!important;
  margin-bottom:8px!important;
}

/* Recupera separación compacta antes de la franja operacional */
.emergency-ops-four-grid{
  margin-top:0!important;
}

/* Comunicación entrante:
   Responder y Ver bitácora usan exactamente la misma geometría,
   tipografía, peso, fondo y borde. */
.ops-incoming-card .incoming-resident-actions{
  display:flex!important;
  align-items:center!important;
  gap:5px!important;
  margin-top:5px!important;
}

.ops-incoming-card .incoming-resident-actions button{
  flex:0 0 auto!important;
  width:auto!important;
  min-width:86px!important;
  height:28px!important;
  min-height:28px!important;
  padding:0 9px!important;
  border:1px solid #2563eb!important;
  border-radius:7px!important;
  background:#2563eb!important;
  color:#fff!important;
  font-family:"Inter","Segoe UI",Arial,sans-serif!important;
  font-size:8px!important;
  line-height:1!important;
  font-weight:500!important;
  letter-spacing:0!important;
  display:inline-flex!important;
  align-items:center!important;
  justify-content:center!important;
  gap:5px!important;
  box-shadow:none!important;
}

.ops-incoming-card .incoming-resident-actions button:hover{
  background:#1d4ed8!important;
  border-color:#1d4ed8!important;
}

/* Evita que reglas previas vuelvan a pintar el segundo botón blanco */
.ops-incoming-card .incoming-resident-actions button:first-child,
.ops-incoming-card .incoming-resident-actions button:last-child{
  background:#2563eb!important;
  border-color:#2563eb!important;
  color:#fff!important;
}

/* Una tarjeta visible con scroll vertical */
.ops-incoming-card .incoming-resident-list{
  display:block!important;
  overflow-y:auto!important;
  overflow-x:hidden!important;
}
.ops-incoming-card .incoming-resident-message-card{
  width:100%!important;
  height:72px!important;
  min-height:72px!important;
  margin:0 0 6px!important;
}

@media(max-width:700px){
  .emergency-kpi-strip.command-kpis{
    margin-top:7px!important;
    margin-bottom:7px!important;
  }

  .ops-incoming-card .incoming-resident-actions button{
    min-width:92px!important;
    height:30px!important;
    min-height:30px!important;
    font-size:8px!important;
  }
}

/* ==========================================================
   RC2.13.0 - Editor arquitectónico vectorial
   ========================================================== */

/* Scroll real del lienzo. Nunca recorta el plano. */
.designer-canvas-column{min-width:0}
.designer-canvas-scroll{
  position:relative!important;
  width:100%!important;
  height:min(620px,68vh)!important;
  min-height:430px!important;
  overflow:auto!important;
  overscroll-behavior:contain;
  border:1px solid #cbd5e1;
  border-radius:10px;
  background:#eaf0f5;
  scrollbar-width:auto!important;
  scrollbar-color:#94a3b8 #e2e8f0!important;
}
.designer-canvas-scroll::-webkit-scrollbar{width:12px;height:12px}
.designer-canvas-scroll::-webkit-scrollbar-track{background:#e2e8f0}
.designer-canvas-scroll::-webkit-scrollbar-thumb{
  background:#94a3b8;
  border:2px solid #e2e8f0;
  border-radius:999px;
}
.designer-canvas-scroll .floor-designer-stage{
  position:relative!important;
  max-width:none!important;
  margin:0!important;
  aspect-ratio:auto!important;
  flex:0 0 auto!important;
  overflow:hidden!important;
  background:#eef3f7!important;
  transform:none!important;
}

/* Scroll independiente del panel de propiedades. */
.designer-properties{
  max-height:min(620px,68vh)!important;
  overflow-y:auto!important;
  overflow-x:hidden!important;
  overscroll-behavior:contain;
  scrollbar-width:thin;
  scrollbar-color:#94a3b8 #f1f5f9;
}
.designer-properties::-webkit-scrollbar{width:8px}
.designer-properties::-webkit-scrollbar-track{background:#f1f5f9}
.designer-properties::-webkit-scrollbar-thumb{background:#94a3b8;border-radius:999px}

/* Plano de referencia para calcar. */
.designer-reference-plan{
  position:absolute;
  inset:0;
  z-index:0;
  pointer-events:none;
  background-position:center;
  background-repeat:no-repeat;
  background-size:contain;
  transition:opacity .15s ease;
}
.designer-grid-over-reference{
  z-index:1!important;
  opacity:.22!important;
}
.floor-designer-stage>.layout-unit,
.floor-designer-stage>.layout-element,
.floor-designer-stage>.polygon-draft-layer,
.floor-designer-stage>.wall-draft{
  position:absolute;
}

/* Barra arquitectónica */
.designer-toolbar-primary{
  padding-bottom:5px!important;
}
.architect-toolbar{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:10px;
  flex-wrap:wrap;
  padding:7px 9px;
  border:1px solid #dbe3ea;
  border-top:0;
  border-radius:0 0 9px 9px;
  background:#f8fafc;
}
.architect-tool-group{
  display:flex;
  align-items:center;
  gap:7px;
  min-width:0;
}
.architect-tool-group>b{
  display:inline-flex;
  align-items:center;
  gap:5px;
  color:#334155;
  font-size:8px;
  white-space:nowrap;
}
.architect-toggle{
  min-height:27px;
  border:1px solid #cbd5e1;
  border-radius:6px;
  background:#fff;
  color:#475569;
  padding:0 8px;
  font:500 8px "Inter","Segoe UI",Arial,sans-serif;
  cursor:pointer;
}
.architect-toggle.active{
  border-color:#0f9488;
  background:#ecfdf5;
  color:#047857;
}
.architect-hint{
  color:#64748b;
  font-size:7px;
  white-space:nowrap;
}
.reference-controls label{
  display:flex;
  align-items:center;
  gap:5px;
  font-size:8px;
  color:#475569;
}
.reference-controls input[type="range"]{width:90px}
.reference-controls.disabled{opacity:.55}

/* Controles de zoom visibles por encima del lienzo */
.designer-canvas-tools{
  position:absolute!important;
  z-index:150!important;
  top:10px!important;
  left:10px!important;
  display:flex!important;
  align-items:center!important;
  gap:0!important;
  padding:2px!important;
  border:1px solid #cbd5e1;
  border-radius:8px;
  background:rgba(255,255,255,.96);
  box-shadow:0 4px 12px rgba(15,23,42,.08);
}
.designer-canvas-tools button{
  width:30px!important;
  height:30px!important;
  border:0!important;
  background:#fff!important;
  color:#0f172a!important;
}
.designer-zoom-label{
  min-width:48px;
  text-align:center;
  color:#475569;
  font:600 8px "Inter","Segoe UI",Arial,sans-serif;
}

/* Muros rectos */
.layout-element.type-WALL{
  display:block!important;
  min-width:4px!important;
  min-height:4px!important;
  padding:0!important;
  overflow:visible!important;
  background:transparent!important;
  border:0!important;
  box-shadow:none!important;
}
.layout-wall-body{
  position:absolute;
  inset:0;
  border-radius:1px;
  box-shadow:0 0 0 1px rgba(15,23,42,.08);
}
.layout-element.type-WALL.selected .layout-wall-body{
  box-shadow:0 0 0 2px #60a5fa;
}
.wall-draft{
  position:absolute;
  z-index:190!important;
  display:none;
  transform-origin:center center;
  background:#2563eb!important;
  border:0!important;
  border-radius:999px;
  pointer-events:none;
  box-shadow:0 0 0 2px rgba(37,99,235,.16);
}

/* Recintos / muros libres */
.layout-element.type-POLYGON .layout-polygon-shape{
  background:rgba(226,232,240,.35)!important;
}
.layout-element.type-WALL_POLYGON .layout-polygon-shape{
  background:#94a3b8!important;
}
.polygon-vertex{
  width:9px!important;
  height:9px!important;
  margin:-4.5px 0 0 -4.5px!important;
}

/* Mejor jerarquía del modo arquitectónico */
.architectural-instruction{
  display:flex!important;
  align-items:flex-start!important;
  gap:8px!important;
  margin:7px 0!important;
  padding:8px 10px!important;
  border-radius:8px;
  background:#eff6ff!important;
  border:1px solid #bfdbfe!important;
  color:#334155!important;
}
.architectural-instruction>i{color:#2563eb;margin-top:1px}
.architectural-footer{
  margin-top:8px!important;
}
.architectural-footer>div{
  display:flex;
  gap:10px;
  align-items:center;
}

/* Asegura que el grid del editor no comprima el canvas */
.designer-work-area.with-properties{
  grid-template-columns:minmax(0,1fr) 250px!important;
}
.designer-work-area:not(.with-properties){
  grid-template-columns:minmax(0,1fr)!important;
}

/* El toolbar puede desplazarse horizontalmente en pantallas estrechas. */
.designer-toolbar{
  overflow-x:auto!important;
  overflow-y:hidden!important;
  flex-wrap:nowrap!important;
  scrollbar-width:thin;
}
.tool-btn{flex:0 0 auto!important;white-space:nowrap!important}

@media(max-width:900px){
  .designer-work-area.with-properties{
    grid-template-columns:1fr!important;
  }
  .designer-properties{
    order:2!important;
    max-height:360px!important;
  }
  .designer-canvas-scroll{
    height:500px!important;
    min-height:360px!important;
  }
  .architect-toolbar{
    align-items:flex-start;
    flex-direction:column;
  }
  .architect-tool-group{
    width:100%;
    flex-wrap:wrap;
  }
  .architect-hint{white-space:normal}
}

@media(max-width:600px){
  .designer-canvas-scroll{
    height:440px!important;
    min-height:330px!important;
  }
  .reference-controls input[type="range"]{width:110px}
}

/* ==========================================================
   RC2.13.1 - Editor arquitectónico funcional
   ========================================================== */
.floor-plan-file-input{
  position:absolute!important;
  width:1px!important;
  height:1px!important;
  opacity:0!important;
  pointer-events:none!important;
}
.floor-upload-label{
  cursor:pointer!important;
}
.floor-upload-label.is-uploading{
  opacity:.75;
  pointer-events:none;
}
.floor-designer-stage.tool-drawing,
.floor-designer-stage{
  touch-action:none;
}
.tool-btn.active{
  box-shadow:inset 0 0 0 2px rgba(15,148,136,.18);
}
.polygon-draft-layer{
  position:absolute!important;
  inset:0!important;
  z-index:220!important;
  pointer-events:none!important;
}
.polygon-draft-layer svg{
  width:100%!important;
  height:100%!important;
  overflow:visible!important;
}
.polygon-draft-layer span{
  position:absolute;
  left:12px;
  bottom:12px;
  padding:6px 9px;
  border-radius:7px;
  background:#0f172a;
  color:#fff;
  font:500 8px "Inter","Segoe UI",Arial,sans-serif;
}
.designer-reference-plan{
  pointer-events:none!important;
}
.designer-grid-bg{
  pointer-events:none!important;
}

/* ==========================================================
   RC2.13.2 - Calco visible + dibujo sobre unidades
   ========================================================== */

/* El calco debe quedar visible aunque los departamentos tengan relleno.
   Se coloca por encima del layout, pero nunca captura mouse/touch. */
.designer-reference-plan{
  z-index:75!important;
  pointer-events:none!important;
  background-size:contain!important;
  background-position:center!important;
  background-repeat:no-repeat!important;
  mix-blend-mode:multiply;
  filter:contrast(1.05) saturate(.9);
}

/* Grilla por debajo del calco para que la imagen sea legible. */
.designer-grid-over-reference{
  z-index:2!important;
  opacity:.16!important;
  pointer-events:none!important;
}

/* Objetos siguen siendo editables aunque el calco esté al frente
   porque la capa de referencia no captura eventos. */
.floor-designer-stage>.layout-unit{
  z-index:auto;
}
.floor-designer-stage>.layout-element{
  position:absolute;
}

/* El borrador de dibujo siempre debe verse por encima del calco. */
.wall-draft,
.polygon-draft-layer{
  z-index:230!important;
  pointer-events:none!important;
}

/* Feedback visual inequívoco del modo dibujo. */
.floor-designer-stage.drawing-active,
.floor-designer-stage:has(.wall-draft[style*="display: block"]){
  cursor:crosshair!important;
}

.tool-btn.active[data-tool="WALL"],
.tool-btn.active[data-tool="POLYGON"],
.tool-btn.active[data-tool="WALL_POLYGON"],
.tool-btn.active[data-tool="DOOR"],
.tool-btn.active[data-tool="WINDOW"],
.tool-btn.active[data-tool="TEXT"]{
  background:#dcfce7!important;
  border-color:#16a34a!important;
  color:#166534!important;
}

/* Hace visible el calco incluso sobre rellenos sólidos. */
.designer-reference-plan + .designer-grid-bg{
  pointer-events:none!important;
}

/* ==========================================================
   RC2.13.3 - Superficie de dibujo dedicada
   ========================================================== */

.designer-reference-plan{
  position:absolute!important;
  inset:0!important;
  z-index:80!important;
  display:flex!important;
  align-items:center!important;
  justify-content:center!important;
  pointer-events:none!important;
  overflow:hidden!important;
  background:transparent!important;
}

.designer-reference-plan img{
  display:block!important;
  width:100%!important;
  height:100%!important;
  object-fit:contain!important;
  object-position:center!important;
  pointer-events:none!important;
  user-select:none!important;
  -webkit-user-drag:none!important;
}

.floor-designer-stage.reference-error:after{
  content:"No fue posible mostrar el plano de referencia";
  position:absolute;
  top:12px;
  right:12px;
  z-index:240;
  padding:6px 9px;
  border-radius:7px;
  background:#fee2e2;
  color:#b91c1c;
  font:600 8px "Inter","Segoe UI",Arial,sans-serif;
}

.designer-drawing-surface{
  position:absolute!important;
  inset:0!important;
  z-index:300!important;
  display:none;
  pointer-events:none;
  cursor:crosshair!important;
  background:transparent!important;
  touch-action:none!important;
}

.designer-drawing-surface.active{
  display:block!important;
  pointer-events:auto!important;
}

/* Los borradores deben verse aun por encima de la superficie capturadora. */
.wall-draft,
.polygon-draft-layer{
  z-index:320!important;
  pointer-events:none!important;
}

/* Los objetos quedan debajo del calco y de la superficie de dibujo,
   pero siguen editables cuando SELECT desactiva la superficie. */
.floor-designer-stage>.layout-unit,
.floor-designer-stage>.layout-element{
  z-index:auto;
}

/* Indicador explícito para comprobar que la herramienta se activó. */
.drawing-mode-indicator{
  display:inline-flex;
  align-items:center;
  gap:5px;
  margin-left:8px;
  padding:3px 7px;
  border-radius:999px;
  background:#e2e8f0;
  color:#475569;
  font:600 7px "Inter","Segoe UI",Arial,sans-serif;
}
.drawing-mode-indicator.is-active{
  background:#dcfce7;
  color:#166534;
  box-shadow:0 0 0 1px #86efac inset;
}

/* Mientras se dibuja, departamentos y elementos no capturan interacción. */
.floor-designer-stage.drawing-active>.layout-unit,
.floor-designer-stage.drawing-active>.layout-element{
  pointer-events:none!important;
}

/* El calco conserva visibilidad configurable sin bloquear el dibujo. */
.reference-loaded .designer-reference-plan{
  visibility:visible!important;
}

@media(max-width:700px){
  .drawing-mode-indicator{
    display:flex;
    margin:5px 0 0;
    width:max-content;
  }
}

/* RC2.13.4 - captura directa del canvas */
.floor-designer-stage.architect-drawing{cursor:crosshair!important;outline:2px solid #22c55e;outline-offset:-2px}
.floor-designer-stage.architect-drawing .layout-unit,
.floor-designer-stage.architect-drawing .layout-element,
.floor-designer-stage.architect-drawing .resize-handle,
.floor-designer-stage.architect-drawing .polygon-vertex,
.floor-designer-stage.architect-drawing .layout-unit-card{pointer-events:none!important}

.designer-drawing-guide{position:absolute;inset:0;pointer-events:none!important;background:transparent}

.designer-reference-plan{
  position:absolute!important;inset:0!important;z-index:180!important;
  display:flex!important;align-items:center!important;justify-content:center!important;
  pointer-events:none!important;overflow:hidden!important;background:transparent!important
}
.designer-reference-plan img{
  display:block!important;width:100%!important;height:100%!important;
  max-width:none!important;max-height:none!important;object-fit:contain!important;
  object-position:center!important;pointer-events:none!important;user-select:none!important
}
.floor-designer-stage.reference-editing .layout-unit{opacity:.28!important}
.floor-designer-stage.reference-editing .layout-unit-card{opacity:.7!important}
.floor-designer-stage.reference-editing .layout-element:not(.type-WALL){opacity:.45!important}
.wall-draft,.polygon-draft-layer{z-index:400!important;pointer-events:none!important}

.floor-designer-stage.architect-drawing:before{
  content:"MODO DIBUJO";position:absolute;right:10px;top:10px;z-index:410;
  padding:5px 8px;border-radius:999px;background:#166534;color:#fff;
  pointer-events:none;font:600 7px "Inter","Segoe UI",Arial,sans-serif
}
.floor-designer-stage.reference-error:after{
  content:"No fue posible mostrar el archivo del calco.";
  position:absolute;left:50%;top:50%;z-index:420;transform:translate(-50%,-50%);
  padding:10px 14px;border-radius:8px;background:#fee2e2;color:#991b1b;
  font:600 10px "Inter","Segoe UI",Arial,sans-serif;pointer-events:none
}

/* ==========================================================
   RC2.13.5 - FIX RAÍZ: geometría real del canvas
   Reglas RC2.9.x antiguas imponían width:100%, height:auto,
   min-height:0 y aspect-ratio, dejando el stage sin altura útil.
   ========================================================== */

.designer-canvas-scroll{
  position:relative!important;
  display:block!important;
  width:100%!important;
  height:min(620px,68vh)!important;
  min-height:430px!important;
  overflow:auto!important;
  scrollbar-width:auto!important;
}

/* Esta regla debe ser la última autoridad geométrica del diseñador. */
.designer-canvas-scroll > .floor-designer-stage,
.designer-canvas-scroll .floor-designer-stage{
  position:relative!important;

  width:var(--designer-stage-width,1120px)!important;
  min-width:var(--designer-stage-width,1120px)!important;
  max-width:none!important;

  height:var(--designer-stage-height,700px)!important;
  min-height:var(--designer-stage-height,700px)!important;
  max-height:none!important;

  aspect-ratio:auto!important;
  flex:none!important;
  display:block!important;

  margin:0!important;
  padding:0!important;
  overflow:hidden!important;
  transform:none!important;
  box-sizing:border-box!important;

  background-color:#eef3f7!important;
}

/* Confirma visualmente el área REAL del stage al dibujar. */
.floor-designer-stage.architect-drawing{
  cursor:crosshair!important;
  outline:2px solid #22c55e!important;
  outline-offset:-2px!important;
}

/* La grilla debe ocupar exactamente la geometría del stage. */
.floor-designer-stage > .designer-grid-bg{
  position:absolute!important;
  inset:0!important;
  width:100%!important;
  height:100%!important;
  pointer-events:none!important;
}

/* El calco usa exactamente el área real, no la del wrapper. */
.floor-designer-stage > .designer-reference-plan{
  position:absolute!important;
  inset:0!important;
  width:100%!important;
  height:100%!important;
  z-index:180!important;
  pointer-events:none!important;
}
.floor-designer-stage > .designer-reference-plan > img{
  width:100%!important;
  height:100%!important;
  object-fit:contain!important;
  object-position:center!important;
}

/* Borradores en toda el área. */
.floor-designer-stage > .wall-draft,
.floor-designer-stage > .polygon-draft-layer{
  z-index:400!important;
}

/* Cuando está listo, el wrapper muestra barras de desplazamiento reales
   si el zoom supera el área disponible. */
.designer-canvas-scroll.designer-canvas-ready{
  overflow:auto!important;
}

/* Evita que reglas históricas de auto-fit vuelvan a colapsarlo. */
@media(max-width:1150px){
  .designer-canvas-scroll .floor-designer-stage{
    width:var(--designer-stage-width,1120px)!important;
    min-width:var(--designer-stage-width,1120px)!important;
    height:var(--designer-stage-height,700px)!important;
    min-height:var(--designer-stage-height,700px)!important;
    aspect-ratio:auto!important;
  }
}
@media(max-width:900px){
  .designer-canvas-scroll{
    height:520px!important;
    min-height:360px!important;
  }
  .designer-canvas-scroll .floor-designer-stage{
    width:var(--designer-stage-width,1120px)!important;
    min-width:var(--designer-stage-width,1120px)!important;
    height:var(--designer-stage-height,700px)!important;
    min-height:var(--designer-stage-height,700px)!important;
  }
}
@media(max-width:600px){
  .designer-canvas-scroll{
    height:440px!important;
    min-height:330px!important;
  }
}

/* Scrollbars visibles */
.designer-canvas-scroll::-webkit-scrollbar{
  display:block!important;
  width:11px!important;
  height:11px!important;
}
.designer-canvas-scroll::-webkit-scrollbar-track{
  background:#e2e8f0!important;
}
.designer-canvas-scroll::-webkit-scrollbar-thumb{
  background:#94a3b8!important;
  border-radius:999px!important;
  border:2px solid #e2e8f0!important;
}

/* ==========================================================
   RC2.13.6 - Eliminar elementos/calco + área dinámica
   ========================================================== */

/* El viewport adopta el alto calculado por contenido.
   Sólo aparece scroll cuando el contenido/zoom supera el máximo. */
.designer-canvas-scroll{
  height:var(--designer-scroll-height,auto)!important;
  min-height:320px!important;
  max-height:620px!important;
  overflow:auto!important;
}

/* Área sin contenido: compacta. Área ocupada: crece hasta 620px. */
.designer-canvas-scroll.designer-canvas-ready{
  height:var(--designer-scroll-height,auto)!important;
}

/* Botón de auto-ajuste del lienzo */
.designer-canvas-tools button.active,
.designer-canvas-tools [data-auto-canvas].active{
  background:#dcfce7!important;
  color:#166534!important;
}

/* Acciones de eliminación claramente separadas */
.properties-sticky-actions{
  position:sticky;
  bottom:0;
  z-index:50;
  margin-top:10px;
  padding:10px;
  border-top:1px solid #e2e8f0;
  background:linear-gradient(to top,#fff 78%,rgba(255,255,255,.92));
}
.properties-delete-selected{
  width:100%!important;
  min-height:36px!important;
  display:inline-flex!important;
  align-items:center!important;
  justify-content:center!important;
  gap:6px!important;
  background:#dc2626!important;
  border-color:#dc2626!important;
  color:#fff!important;
  font-family:"Inter","Segoe UI",Arial,sans-serif!important;
  font-size:10px!important;
  font-weight:500!important;
  border-radius:7px!important;
}
.properties-delete-selected:hover{
  background:#b91c1c!important;
  border-color:#b91c1c!important;
}
.architect-toggle.danger{
  color:#b91c1c!important;
  border-color:#fecaca!important;
  background:#fff7f7!important;
}
.architect-toggle.danger:not(:disabled):hover{
  background:#fee2e2!important;
}
.architect-toggle.danger:disabled{
  opacity:.45!important;
}

/* El área del editor no reserva alto sobrante fuera del contenido real */
.designer-canvas-column{
  align-self:start!important;
}
.designer-work-area{
  align-items:start!important;
}

/* móvil/tablet */
@media(max-width:900px){
  .designer-canvas-scroll{
    max-height:520px!important;
    min-height:300px!important;
  }
}
@media(max-width:600px){
  .designer-canvas-scroll{
    max-height:440px!important;
    min-height:280px!important;
  }
}

/* ==============================================================
   RC3.0 - FloorPlan Operational Engine
   ============================================================== */
.fp3-page{padding:24px;font-family:"Inter","Segoe UI",Arial,sans-serif;color:#0f172a}
.fp3-title{display:flex;justify-content:space-between;align-items:center;margin-bottom:16px}
.fp3-title h1{margin:0;font-size:25px}.fp3-title p{margin:4px 0 0;color:#64748b}
.fp3-title-actions,.fp3-template-actions{display:flex;gap:8px}
.fp-notice{position:fixed;right:22px;top:90px;z-index:9999;padding:10px 14px;border-radius:8px;background:#dcfce7;color:#166534;box-shadow:0 8px 24px #0002}
.fp-notice.error{background:#fee2e2;color:#991b1b}
.fp3-layout{display:grid;grid-template-columns:250px minmax(0,1fr);gap:14px}
.fp3-sidebar,.fp3-workspace{background:#fff;border:1px solid #dbe3ea;border-radius:14px;box-shadow:0 8px 24px rgba(15,23,42,.04)}
.fp3-sidebar{padding:12px;align-self:start;position:sticky;top:14px}
.fp3-side-head{display:flex;justify-content:space-between;padding:4px 4px 10px}.fp3-side-head small{background:#e2e8f0;border-radius:999px;padding:2px 7px}
.fp3-template-list{display:grid;gap:7px}.fp3-template{border:1px solid #dbe3ea;background:#fff;border-radius:10px;padding:10px;text-align:left;display:flex;justify-content:space-between;gap:8px;cursor:pointer}
.fp3-template.active{border-color:#0f9488;background:#ecfdf5}.fp3-template span:first-child{display:grid}.fp3-template small{color:#64748b;margin-top:3px}
.badge{display:inline-flex;align-items:center;height:20px;padding:0 7px;border-radius:999px;font-size:9px}.badge.ok{background:#dcfce7;color:#166534}.badge.warn{background:#fef3c7;color:#92400e}
.fp3-side-help{margin-top:14px;border-top:1px solid #e2e8f0;padding:12px 4px;color:#64748b;font-size:11px}.fp3-side-help p{margin:6px 0}
.fp3-floor-side-head{margin-top:4px;padding-top:11px;border-top:1px solid #e2e8f0}.fp3-assigned-floor-list{display:grid;gap:6px;max-height:min(48vh,430px);overflow-y:auto;padding-right:3px;scrollbar-width:thin}.fp3-assigned-floor{width:100%;display:grid;grid-template-columns:minmax(0,1fr) auto;gap:3px 8px;align-items:center;padding:9px;border:1px solid #dbe3ea;border-radius:9px;background:#fff;color:#0f172a;text-align:left;cursor:pointer}.fp3-assigned-floor>span{display:flex;align-items:center;gap:7px}.fp3-assigned-floor>span i{color:#0f9488}.fp3-assigned-floor>small{grid-column:1;color:#64748b;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.fp3-assigned-floor>i{grid-column:2;grid-row:1 / span 2;color:#94a3b8}.fp3-assigned-floor:hover,.fp3-assigned-floor.uses-current{border-color:#5eead4;background:#f0fdfa}
.fp3-workspace{min-height:620px;padding:14px;min-width:0}
.fp3-welcome{height:560px;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;color:#475569}.fp3-welcome>i{font-size:52px;color:#0f9488}.fp3-welcome h2{color:#0f172a}
.fp3-steps{display:flex;gap:10px;margin-top:20px}.fp3-steps span{display:flex;align-items:center;gap:6px;border:1px solid #dbe3ea;padding:8px 10px;border-radius:9px}.fp3-steps b{display:grid;place-items:center;width:22px;height:22px;border-radius:50%;background:#0f9488;color:#fff}
.fp3-template-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:12px}.fp3-template-head h2{margin:2px 0;font-size:22px}.eyebrow{font-size:9px;letter-spacing:.08em;color:#64748b}
.fp3-meta{display:flex;gap:8px;align-items:center;color:#64748b;font-size:10px}
.fp3-editor{border:1px solid #dbe3ea;border-radius:12px;overflow:hidden}
.fp3-toolbar{display:flex;gap:2px;padding:7px;background:#f8fafc;border-bottom:1px solid #dbe3ea;overflow-x:auto}.fp3-toolbar button{border:1px solid transparent;background:transparent;border-radius:6px;padding:7px 9px;white-space:nowrap;color:#334155;font-size:10px;cursor:pointer}.fp3-toolbar button:hover,.fp3-toolbar button.active{background:#dcfce7;border-color:#86efac;color:#166534}.fp3-toolbar .sep{width:1px;background:#cbd5e1;margin:3px 5px}
.fp3-editor-main{display:grid;grid-template-columns:minmax(0,1fr) 290px;min-height:600px}
.fp3-map-wrap{min-width:0;background:#eef2f6;padding:10px}.fp3-map{height:600px;border-radius:8px;background:#e5e7eb;overflow:hidden}
.fp3-map.fp3-map-clean{background:#fff}
.fp3-no-source{height:580px;border:2px dashed #cbd5e1;border-radius:10px;display:flex;flex-direction:column;align-items:center;justify-content:center;color:#64748b}.fp3-no-source i{font-size:48px;color:#94a3b8}.fp3-no-source h3{color:#0f172a;margin:10px 0 3px}
.fp3-inspector{border-left:1px solid #dbe3ea;background:#fff;max-height:620px;overflow:auto}.fp3-inspector-empty{height:100%;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;padding:24px;color:#64748b}.fp3-inspector-empty i{font-size:30px;margin-bottom:10px}.fp3-inspector-empty b{color:#0f172a}
.fp3-inspector-head{display:flex;justify-content:space-between;padding:14px;border-bottom:1px solid #e2e8f0}.fp3-inspector-head h3{margin:2px 0}
.fp3-form{padding:14px;display:grid;gap:10px}.fp3-form label,.fp3-modal label{display:grid;gap:4px;color:#475569;font-size:10px}.fp3-form input,.fp3-form select,.fp3-modal input,.fp3-modal textarea,.fp3-modal select{border:1px solid #cbd5e1;border-radius:7px;padding:8px;font:inherit;background:#fff}
.fp3-residents{padding:14px;border-top:1px solid #e2e8f0}.fp3-section-head{display:flex;justify-content:space-between;align-items:center}.fp3-person{display:flex;align-items:center;gap:8px;padding:8px 0;border-bottom:1px solid #f1f5f9}.fp3-person>span{width:34px;height:34px;border-radius:50%;background:#e2e8f0;display:grid;place-items:center;overflow:hidden}.fp3-person img{width:100%;height:100%;object-fit:cover}.fp3-person div{display:grid}.fp3-person small{color:#64748b}
.fp3-marker{background:#0f172a;border:3px solid #fff;border-radius:10px;width:46px!important;height:46px!important;display:grid!important;place-items:center;color:#fff;box-shadow:0 4px 12px #0006;font-size:22px}
.fp3-marker-symbol{width:100%;height:100%;display:flex;align-items:center;justify-content:center;gap:2px;position:relative}
.fp3-marker-arrows{font-size:19px;font-weight:900;line-height:1}
.fp3-marker-elevator{background:#1565a8}.fp3-marker-elevator i{font-size:24px}
.fp3-marker-stair,.fp3-marker-emergency-exit,.fp3-marker-assembly-point{background:#16a34a}
.fp3-marker-extinguisher,.fp3-marker-fire-hose,.fp3-marker-alarm,.fp3-marker-fire-hydrant{background:#dc2626}
.fp3-marker-camera{background:#30343b;border-radius:50%}.fp3-marker-camera i{font-size:25px}
.fp3-marker-door,.fp3-marker-window{background:#475569}
.fp3-marker-power-outlet,.fp3-marker-aed{background:#2563eb}
.fp3-marker:hover{transform:scale(1.1);z-index:1000!important}
.fp3-marker-text{width:180px!important;height:42px!important;background:transparent!important;border:0!important;border-radius:0!important;box-shadow:none!important;color:#0f172a;font-size:18px;font-weight:800;text-shadow:0 1px 2px #fff,0 0 5px #fff}
.fp3-plan-text{display:block;width:100%;padding:5px 9px;border:1px dashed transparent;border-radius:6px;text-align:center;white-space:normal;line-height:1.15;background:rgba(255,255,255,.76)}
.fp3-marker-text:hover .fp3-plan-text{border-color:#2563eb;background:#fff}
html.fp3-modal-open,body.fp3-modal-open{overflow:hidden!important;overscroll-behavior:none}
.fp3-modal-backdrop{position:fixed!important;inset:0!important;width:100vw!important;height:100dvh!important;background:#0f172a99;z-index:20000;display:grid!important;place-items:center!important;padding:16px;overflow:hidden!important}
.fp3-modal{position:relative!important;inset:auto!important;margin:0!important;width:min(520px,calc(100vw - 32px));max-height:calc(100dvh - 32px)!important;overflow-y:auto!important;overscroll-behavior:contain;background:#fff;border-radius:14px;padding:20px;box-shadow:0 30px 80px #0005}.fp3-modal.wide{width:min(840px,calc(100vw - 32px))}.fp3-modal h2{margin-top:0}.fp3-modal textarea{min-height:90px;resize:vertical}.modal-actions{display:flex;justify-content:flex-end;gap:8px;margin-top:16px;position:sticky;bottom:-20px;background:#fff;padding:12px 0 2px}.fp3-modal-head{display:flex;justify-content:space-between;align-items:flex-start;gap:12px}.fp3-modal-head h2{margin:3px 0 14px}.fp3-form-help{display:block;color:#64748b;line-height:1.4;margin-top:8px}.fp3-template-readonly{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin:12px 0}.fp3-template-readonly>div{display:grid;gap:3px;background:#f8fafc;border:1px solid #e2e8f0;border-radius:8px;padding:10px}.fp3-template-readonly span{font-size:10px;color:#64748b}
.fp3-upload{border:2px dashed #94a3b8;border-radius:12px;padding:30px!important;text-align:center;display:flex!important;align-items:center;cursor:pointer}.fp3-upload i{font-size:30px;color:#0f9488}.fp3-upload input{display:none}.fp3-source-preview{display:block;max-width:100%;max-height:300px;margin:12px auto;border-radius:8px}
.fp3-floor-checks{display:grid;grid-template-columns:repeat(2,1fr);gap:7px;margin:10px 0}.fp3-floor-checks label{display:grid;grid-template-columns:auto 1fr;column-gap:8px;border:1px solid #dbe3ea;padding:9px;border-radius:8px}.fp3-floor-checks label span{grid-column:2;color:#64748b}
.fp3-floor-table{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:7px;max-height:min(62dvh,520px);overflow:auto}.fp3-floor-table>div{display:grid;grid-template-columns:70px minmax(0,1fr) 30px auto;gap:7px;align-items:center;padding:9px;border:1px solid #e2e8f0;border-radius:8px;background:#f8fafc}.fp3-floor-table>div.has-template{border-color:#99f6e4;background:#f0fdfa}.fp3-floor-table>div>small{grid-column:4;color:#94a3b8}.fp3-floor-table .btn{white-space:nowrap}
.fp3-unit-summary{display:flex;justify-content:space-between;background:#f1f5f9;border-radius:8px;padding:9px;margin:12px 0}.fp3-resident-manager{max-height:340px;overflow:auto;border:1px solid #dbe3ea;border-radius:8px}.fp3-resident-manager label{display:flex!important;align-items:center;padding:9px!important;border-bottom:1px solid #f1f5f9}
.empty{padding:20px;text-align:center;color:#94a3b8}.empty.compact{padding:12px}.muted{color:#64748b}.loading{padding:30px;text-align:center;color:#64748b}
.btn-danger{background:#dc2626!important;color:#fff!important;border-color:#dc2626!important}.btn-soft.danger{color:#b91c1c}.btn-sm{padding:5px 7px!important;font-size:9px!important}
.leaflet-container{font-family:"Inter","Segoe UI",Arial,sans-serif}.leaflet-pm-toolbar .button-container a{background-color:#fff}

/* RC3.10.0 - cuadrícula métrica, reglas y ajuste de vértices */
.fp3-ruler-label{background:transparent!important;border:0!important;color:#1d4ed8;font-size:9px;font-weight:800;pointer-events:none!important;text-shadow:0 1px 2px #fff,0 0 4px #fff}
.fp3-ruler-label span{display:block;width:max-content;padding:1px 3px;border-radius:3px;background:rgba(255,255,255,.82)}
.fp3-ruler-y span{transform:translate(4px,-1px)}
.fp3-check{display:flex!important;grid-template-columns:auto 1fr;align-items:center;gap:8px!important;padding:9px 10px;border:1px solid #dbe3ea;border-radius:8px;background:#f8fafc}
.fp3-check input{width:16px;height:16px;margin:0}
.fp3-scale-note{display:flex;gap:8px;align-items:flex-start;margin-top:10px;padding:10px;border-radius:8px;background:#eff6ff;color:#1e40af;font-size:11px;line-height:1.4}

/* RC3.10.3 - modal centrado dentro del área realmente visible del iframe */
.fp3-modal-backdrop[style]{place-items:start center!important}
.fp3-modal-backdrop[style]>.fp3-modal{margin-left:auto!important;margin-right:auto!important}

/* RC3.10.1 - plano completo e iconografía idéntica al editor */
.command-plan-canvas .em-fp3-shell{width:100%!important;max-width:100%!important;max-height:none!important;aspect-ratio:var(--fp3-plan-ratio);overflow:hidden!important;display:block}
.command-plan-canvas .em-fp3-svg{display:block!important;width:100%!important;height:100%!important;min-width:0!important;min-height:0!important;max-width:100%!important;object-fit:contain}
.em-fp3-svg .fp3-marker{box-sizing:border-box;margin:0!important}
@media(max-width:700px){
  .command-plan-canvas .em-fp3-shell{max-height:none!important;overflow:hidden!important}
  .command-plan-canvas .em-fp3-svg{width:100%!important;height:100%!important;min-width:0!important;min-height:0!important}
}

/* RC3.10.2 - el mapa de apoyo continúa bajo el plano, sin espacio muerto */
@media(min-width:1001px){
  .command-main-grid{align-items:start!important}
  .command-plan-column{grid-column:1;grid-row:1}
  .command-main-grid>.command-side-panel{grid-column:2;grid-row:1 / span 2}
  .command-main-grid>.nearby-map-card{grid-column:1;grid-row:2;margin-top:0!important}
}
@media(max-width:1000px){
  .command-main-grid>.command-side-panel,.command-main-grid>.nearby-map-card{grid-column:1;grid-row:auto}
}

@media(max-width:900px){
 .fp3-page{padding:12px}.fp3-layout{grid-template-columns:1fr}.fp3-sidebar{position:static}.fp3-template-list{grid-template-columns:repeat(2,1fr)}
 .fp3-assigned-floor-list{grid-template-columns:repeat(2,minmax(0,1fr));max-height:260px}
 .fp3-editor-main{grid-template-columns:1fr}.fp3-inspector{border-left:0;border-top:1px solid #dbe3ea;max-height:none}.fp3-map{height:520px}
}
@media(max-width:600px){
 .fp3-title,.fp3-template-head{align-items:flex-start;gap:10px}.fp3-title{flex-direction:column}.fp3-title-actions,.fp3-template-actions{width:100%;display:grid;grid-template-columns:1fr 1fr}
 .fp3-template-head{display:block}.fp3-template-actions{margin-top:10px}.fp3-template-list{grid-template-columns:1fr}.fp3-map{height:62vh;min-height:420px}
 .fp3-toolbar button{font-size:9px;padding:8px}.fp3-floor-checks,.fp3-floor-table{grid-template-columns:1fr}.fp3-steps{display:grid;grid-template-columns:1fr 1fr}.fp3-template-readonly{grid-template-columns:1fr}
 .fp3-assigned-floor-list{grid-template-columns:1fr;max-height:220px}
}

/* RC3.7.0 - plano centrado y ajustado al viewport móvil. */
@media(max-width:600px){
  .fp3-page{padding:8px}.fp3-workspace{padding:9px;min-height:0}.fp3-editor-main{min-height:0}
  .fp3-map-wrap{padding:6px;display:grid;place-items:center;overflow:hidden}
  .fp3-map{width:100%;height:clamp(300px,48dvh,460px);min-height:300px;margin:auto}
  .fp3-inspector{max-height:min(360px,42dvh);overflow:auto}
}

/* RC3.0.3 - resolución explícita código -> slot -> unidad */
.fp3-form label small{color:#64748b;font-size:9px;line-height:1.35}
.fp3-unit-resolution{border:1px solid #dbe3ea;background:#f8fafc;border-radius:8px;padding:9px;display:grid;gap:5px}
.fp3-unit-resolution>div{display:flex;justify-content:space-between;align-items:center;padding:4px 0;border-top:1px solid #edf2f7}
.fp3-unit-resolution>div:first-of-type{border-top:0}
.fp3-unit-resolution span:last-child{color:#0f9488;font-weight:600}

/* RC3.0.4 - nombre de departamento editable */
.fp3-inline-check{
  grid-template-columns:auto 1fr!important;
  align-items:center!important;
  gap:7px!important;
  padding:7px 8px;
  border:1px solid #dbe3ea;
  border-radius:7px;
  background:#f8fafc;
}
.fp3-inline-check input{
  width:auto!important;
  margin:0!important;
}
.fp3-inline-check span{
  color:#475569;
  font-size:9px;
  line-height:1.3;
}

/* RC3.0.5 - unidad real como fuente única para residentes */
.fp3-linked-unit{
  display:flex;justify-content:space-between;align-items:center;
  padding:8px 9px;margin:8px 0;border-radius:8px;
  background:#ecfdf5;border:1px solid #a7f3d0;color:#065f46
}
.fp3-linked-unit span{font-size:9px}.fp3-linked-unit b{font-size:11px}

.dashboard-unit-detail-backdrop{
  position:fixed;inset:0;z-index:30000;background:rgba(15,23,42,.68);
  display:flex;align-items:center;justify-content:center;padding:18px
}
.dashboard-unit-detail-modal{
  width:min(720px,96vw);max-height:82vh;overflow:hidden;
  background:#fff;border-radius:14px;box-shadow:0 28px 80px rgba(0,0,0,.35)
}
.dashboard-unit-detail-head{
  display:flex;justify-content:space-between;align-items:flex-start;
  padding:16px 18px;border-bottom:1px solid #e2e8f0
}
.dashboard-unit-detail-head span{font-size:9px;letter-spacing:.08em;color:#64748b}
.dashboard-unit-detail-head h3{margin:2px 0;font-size:20px}
.dashboard-unit-detail-head small{color:#64748b}
.dashboard-unit-detail-head button{
  width:36px;height:36px;border:1px solid #dbe3ea;border-radius:9px;background:#fff;
  font-size:23px;color:#475569;cursor:pointer
}
.dashboard-unit-detail-body{padding:14px 18px;max-height:62vh;overflow:auto}
.dashboard-unit-person{
  display:flex;align-items:center;gap:10px;padding:10px 0;border-bottom:1px solid #eef2f7
}
.dashboard-unit-avatar{
  width:42px;height:42px;border-radius:50%;background:#e2e8f0;
  display:grid;place-items:center;overflow:hidden;color:#475569
}
.dashboard-unit-avatar img{width:100%;height:100%;object-fit:cover}
.dashboard-unit-person>div{display:grid}.dashboard-unit-person small{color:#64748b}
.dashboard-unit-empty{
  min-height:160px;display:flex;flex-direction:column;align-items:center;justify-content:center;
  text-align:center;color:#94a3b8
}
.dashboard-unit-empty i{font-size:34px;margin-bottom:9px}.dashboard-unit-empty b{color:#334155}

/* RC3.1.0 - departamentos primero, geometría después */
.fp3-unit-preview{
  margin:10px 0;padding:10px;border:1px solid #dbe3ea;border-radius:9px;background:#f8fafc;
  color:#475569;font-size:10px
}
.fp3-unit-preview>b{display:block;margin-bottom:7px;color:#0f172a}
.fp3-unit-preview>div{display:flex;flex-wrap:wrap;gap:5px}
.fp3-unit-preview>div span{
  min-width:42px;text-align:center;padding:5px 7px;border-radius:6px;
  background:#ecfdf5;border:1px solid #a7f3d0;color:#065f46;font-weight:600
}
.fp3-unit-chooser{
  display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin:14px 0
}
.fp3-unit-chooser button{
  display:grid;gap:3px;padding:12px;border:1px solid #dbe3ea;border-radius:9px;background:#fff;
  cursor:pointer;text-align:left
}
.fp3-unit-chooser button:hover{border-color:#0f9488;background:#ecfdf5}
.fp3-unit-chooser b{font-size:16px;color:#0f172a}
.fp3-unit-chooser span{font-size:9px;color:#64748b}
@media(max-width:600px){.fp3-unit-chooser{grid-template-columns:repeat(2,1fr)}}

/* RC3.1.1 - departamentos definidos = unidades operacionales reales */
.fp3-real-units-ready{
  display:inline-flex!important;align-items:center;gap:4px;
  color:#047857!important;background:#ecfdf5;border:1px solid #a7f3d0;
  border-radius:999px;padding:2px 7px
}

/* RC3.1.2 - sincronización de pisos y copia de planta */
.fp3-copy-toolbar{display:flex;gap:7px;margin:10px 0}
.fp3-copy-note{display:flex;gap:7px;align-items:flex-start;margin-top:10px;padding:9px;border:1px solid #bae6fd;background:#f0f9ff;border-radius:8px;color:#075985;font-size:10px}

/* ==========================================================
   RC3.1.7 - Centro de Emergencias usa FloorPlan V3 real
   ========================================================== */
.em-fp3-shell{
  width:100%;
  max-height:68vh;
  overflow:auto;
  border:1px solid #cbd5e1;
  border-radius:12px;
  background:#eef2f6;
}
.em-fp3-svg{
  display:block;
  width:100%;
  height:auto;
  min-height:360px;
  background:#fff;
}
.em-fp3-zone.is-unit polygon{
  cursor:zoom-in;
  transition:fill-opacity .15s ease,stroke-width .15s ease;
}
.em-fp3-zone.is-unit polygon:hover{
  fill-opacity:.30!important;
  stroke-width:4;
}
.em-fp3-unit-number{
  font-size:15px;
  font-weight:700;
  fill:#0f172a;
  font-family:Inter,Arial,sans-serif;
}
.em-fp3-unit-state{
  font-size:8px;
  fill:#475569;
  font-family:Inter,Arial,sans-serif;
}
.em-fp3-element text{
  font-size:14px;
  fill:#0f172a;
  font-family:Arial,sans-serif;
}
.em-fp3-legend{
  display:flex;
  align-items:center;
  gap:14px;
  flex-wrap:wrap;
  padding:8px 3px 0;
  color:#64748b;
  font-size:10px;
}
.em-fp3-legend span{display:inline-flex;align-items:center;gap:5px}
.em-fp3-legend i{
  width:9px;height:9px;border-radius:50%;display:inline-block
}
.em-fp3-loading{
  min-height:360px;
  display:flex;
  flex-direction:column;
  align-items:center;
  justify-content:center;
  gap:7px;
  color:#64748b;
  border:1px solid #cbd5e1;
  border-radius:12px;
  background:#f8fafc;
}
.em-fp3-loading i{font-size:28px;color:#0f9488}
.em-fp3-loading b{color:#0f172a}
@media(max-width:700px){
  .em-fp3-shell{
    max-height:62vh;
    overflow:auto;
    -webkit-overflow-scrolling:touch;
  }
  .em-fp3-svg{
    width:auto;
    min-width:900px;
    height:auto;
  }
  .em-fp3-unit-number{font-size:18px}
  .em-fp3-unit-state{font-size:10px}
}

/* ==========================================================
   RC3.1.8 - Plan View FloorPlan V3 + ocupantes por unidad
   ========================================================== */
.plan-view-body{
  margin:0;
  background:#07111d;
  color:#e5edf5;
  font-family:"Inter","Segoe UI",Arial,sans-serif;
  overflow:hidden
}
.plan-view-shell{
  height:100dvh;
  display:grid;
  grid-template-rows:auto 1fr;
  min-height:0
}
.pv3-layout{
  min-height:0;
  display:grid;
  grid-template-columns:minmax(0,1fr) 360px;
  background:#09121f
}
.pv3-plan-pane{
  min-width:0;
  min-height:0;
  padding:10px;
  display:grid;
  grid-template-rows:minmax(0,1fr) auto;
  gap:8px
}
.pv3-plan-scroll{
  min-width:0;
  min-height:0;
  overflow:auto;
  border-radius:10px;
  background:#edf3f7;
  border:1px solid #20364b
}
.pv3-svg{
  display:block;
  width:100%;
  height:100%;
  min-height:520px;
  background:#f8fafc
}
.pv3-zone.is-unit polygon{
  cursor:pointer;
  transition:fill-opacity .15s ease,stroke-width .15s ease
}
.pv3-zone.is-unit polygon:hover{fill-opacity:.30!important}
.pv3-zone.selected polygon{filter:drop-shadow(0 0 3px rgba(250,204,21,.8))}
.pv3-number{
  font-family:"Inter","Segoe UI",Arial,sans-serif;
  font-size:17px;
  font-weight:700;
  fill:#0f172a
}
.pv3-state{
  font-family:"Inter","Segoe UI",Arial,sans-serif;
  font-size:9px;
  fill:#475569
}
.pv3-element text{
  font-family:Arial,sans-serif;
  font-size:15px;
  fill:#0f172a
}
.pv3-legend{
  display:flex;
  flex-wrap:wrap;
  align-items:center;
  gap:14px;
  padding:3px 3px 0;
  font-size:9px;
  color:#cbd5e1
}
.pv3-legend span{display:inline-flex;align-items:center;gap:5px}
.pv3-legend i{width:8px;height:8px;border-radius:50%;display:inline-block}

.pv3-detail{
  min-width:0;
  overflow:auto;
  background:#fff;
  color:#0f172a;
  border-left:1px solid #cbd5e1;
  padding:16px
}
.pv-detail-head{
  display:flex;
  gap:10px;
  justify-content:space-between;
  align-items:flex-start;
  padding-bottom:13px;
  border-bottom:1px solid #e2e8f0
}
.pv-detail-head>div{min-width:0}
.pv-detail-head span:first-child{
  display:block;
  font-size:8px;
  letter-spacing:.12em;
  color:#64748b
}
.pv-detail-head h2{margin:3px 0 1px;font-size:21px}
.pv-detail-head small{color:#64748b}
.pv-status-pill{
  flex:0 0 auto;
  border:1px solid var(--status);
  color:var(--status);
  background:#fff;
  border-radius:999px;
  padding:5px 8px;
  font-size:9px
}
.pv-detail-kpis{
  display:grid;
  grid-template-columns:repeat(3,1fr);
  gap:7px;
  margin:12px 0
}
.pv-detail-kpis div{
  background:#f8fafc;
  border:1px solid #e2e8f0;
  border-radius:9px;
  padding:9px;
  text-align:center
}
.pv-detail-kpis b{display:block;font-size:18px}
.pv-detail-kpis span{font-size:8px;color:#64748b}
.pv-people-list{display:grid;gap:8px}
.pv-person{
  display:flex;
  gap:9px;
  border:1px solid #e2e8f0;
  border-radius:10px;
  padding:9px;
  background:#fff
}
.pv-person-photo{
  width:45px;height:45px;flex:0 0 45px;
  border-radius:50%;
  overflow:hidden;
  background:#e2e8f0;
  display:grid;
  place-items:center;
  color:#475569
}
.pv-person-photo img{width:100%;height:100%;object-fit:cover}
.pv-person-main{min-width:0;flex:1}
.pv-person-title{
  display:flex;gap:6px;align-items:center;justify-content:space-between
}
.pv-person-title b{
  min-width:0;
  overflow:hidden;
  text-overflow:ellipsis;
  white-space:nowrap;
  font-size:11px
}
.pv-person-title span{
  flex:0 0 auto;
  background:#f1f5f9;
  color:#475569;
  border-radius:999px;
  padding:2px 6px;
  font-size:7px
}
.pv-person-main>small{display:block;color:#64748b;margin-top:2px}
.pv-person-status{
  display:flex;align-items:center;gap:5px;flex-wrap:wrap;
  margin-top:6px;font-size:8px;color:#475569
}
.pv-person-status i{width:8px;height:8px;border-radius:50%}
.pv-person-status em{font-style:normal;color:#94a3b8;margin-left:auto}
.pv-assistance{
  margin-top:6px;
  padding:6px 7px;
  border-radius:7px;
  background:#fef2f2;
  color:#b91c1c;
  font-size:8px
}
.pv-note{margin-top:5px;font-size:8px;color:#64748b}
.pv-no-people,.pv-detail-empty{
  min-height:220px;
  display:flex;
  flex-direction:column;
  align-items:center;
  justify-content:center;
  text-align:center;
  color:#94a3b8;
  gap:5px
}
.pv-no-people i,.pv-detail-empty i{font-size:30px}
.pv-no-people b,.pv-detail-empty b{color:#334155}
.pv-no-people span,.pv-detail-empty span{font-size:9px;max-width:250px}

@media(max-width:900px){
  .pv3-layout{grid-template-columns:minmax(0,1fr) 300px}
}
@media(max-width:760px){
  .plan-view-head h1{font-size:14px}
  .pv3-layout{
    grid-template-columns:minmax(720px,1fr) 310px;
    overflow:auto
  }
  .pv3-plan-pane{padding:5px}
  .pv3-svg{
    width:auto;
    height:100%;
    min-width:720px;
    min-height:430px
  }
  .pv3-detail{
    position:sticky;
    right:0;
    z-index:4
  }
}

/* RC3.1.9 - estados por ocupante desde vista operacional */
.pv-status-actions{
  display:grid;
  grid-template-columns:repeat(4,minmax(0,1fr));
  gap:4px;
  margin-top:7px
}
.pv-status-actions button{
  min-width:0;
  min-height:31px;
  padding:4px 3px;
  border:1px solid #dbe3ea;
  border-radius:7px;
  background:#f8fafc;
  color:#334155;
  font:500 8px/1 "Inter","Segoe UI",Arial,sans-serif;
  cursor:pointer;
  display:flex;
  flex-direction:column;
  align-items:center;
  justify-content:center;
  gap:3px
}
.pv-status-actions button i{font-size:11px}
.pv-status-actions button:hover{background:#eef6ff;border-color:#93c5fd}
.pv-status-actions button:disabled{opacity:.55;cursor:wait}
@media(max-width:760px){
  .pv-status-actions button{min-height:38px;font-size:9px}
}

/* ==========================================================
   RC3.0 - Navegación horizontal configurable
   ========================================================== */
:root{--shell-menu-bg:#0f172a;--shell-menu-icon:#38bdf8}
.shell-body{margin:0;overflow:hidden;background:#f5f7fb}
.shell-horizontal-app{height:100vh;display:grid;grid-template-rows:68px 54px minmax(0,1fr);min-width:0}
.shell-horizontal-header{display:flex;align-items:center;justify-content:space-between;gap:18px;padding:0 22px;background:#fff;border-bottom:1px solid #e2e8f0;min-width:0}
.shell-horizontal-brand{display:flex;align-items:center;gap:11px;min-width:0}.shell-horizontal-brand>div:last-child{display:flex;flex-direction:column;min-width:0}.shell-horizontal-brand strong{font-size:13px;color:#0f172a;white-space:nowrap}.shell-horizontal-brand span{font-size:10px;color:#64748b;margin-top:2px}.shell-horizontal-tools{display:flex;align-items:center;gap:12px;min-width:0}.shell-horizontal-tools .userbox{min-width:0}.shell-horizontal-tools .userbox strong,.shell-horizontal-tools .userbox span{max-width:220px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.shell-horizontal-nav-wrap{background:var(--shell-menu-bg);overflow-x:auto;overflow-y:hidden;scrollbar-width:thin}.shell-horizontal-nav{height:54px;display:flex;align-items:stretch;padding:0 14px;min-width:max-content}.shell-horizontal-item{position:relative;display:flex;align-items:center;gap:8px;padding:0 16px;color:#e2e8f0;text-decoration:none;font-size:12px;font-weight:700;border-bottom:3px solid transparent;transition:.15s}.shell-horizontal-item i{color:var(--shell-menu-icon);font-size:15px}.shell-horizontal-item:hover{background:rgba(255,255,255,.08);color:#fff}.shell-horizontal-item.active{background:rgba(255,255,255,.11);border-bottom-color:var(--shell-menu-icon);color:#fff}.shell-horizontal-main{min-height:0;overflow:hidden}.shell-horizontal-main .main-frame{display:block;width:100%;height:100%;border:0;background:#f5f7fb}
.directory-tabs{display:grid;grid-template-columns:repeat(7,minmax(118px,1fr));gap:8px;margin-bottom:14px;overflow-x:auto}.directory-tab{border:1px solid #dbe3ec;background:#fff;border-radius:12px;padding:12px 8px;display:flex;flex-direction:column;gap:7px;align-items:center;justify-content:center;font:inherit;font-size:10px;font-weight:800;color:#475569;cursor:pointer}.directory-tab i{font-size:18px;color:var(--portal-brand-color)}.directory-tab.active{border-color:var(--portal-brand-color);box-shadow:0 0 0 2px color-mix(in srgb,var(--portal-brand-color) 14%,transparent);color:#0f172a}.directory-head{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:12px}.directory-head h3{margin:0}.directory-head span{font-size:10px;color:#64748b}.directory-head input{max-width:380px}.role-checks{display:flex;flex-wrap:wrap;gap:10px}.maintenance-kpis{grid-template-columns:repeat(5,1fr)!important}
.nearby-map-card{margin-top:14px}.nearby-map{height:360px;border-radius:14px;overflow:hidden;border:1px solid #dbe3ec}.nearby-legend{display:flex;flex-wrap:wrap;gap:8px;margin:10px 0}.nearby-legend span{font-size:10px;background:#f8fafc;border:1px solid #e2e8f0;border-radius:999px;padding:5px 8px}.fire-report-table td,.fire-report-table th{font-size:10px;padding:5px 7px}
@media(max-width:760px){.shell-horizontal-app{grid-template-rows:62px 50px minmax(0,1fr)}.shell-horizontal-header{padding:0 10px}.shell-horizontal-brand strong{font-size:10px}.shell-horizontal-brand span{display:none}.shell-horizontal-tools .userbox{display:none}.building-select{max-width:150px}.shell-horizontal-nav{height:50px;padding:0 4px}.shell-horizontal-item{padding:0 12px;font-size:10px}.shell-horizontal-item span{white-space:nowrap}.directory-tabs{grid-template-columns:repeat(7,112px)}.maintenance-kpis{grid-template-columns:repeat(2,1fr)!important}.directory-head{align-items:stretch;flex-direction:column}.directory-head input{max-width:none;width:100%}}
.nearby-marker{display:grid!important;place-items:center!important;width:28px!important;height:28px!important;border-radius:50%;background:#fff;border:2px solid #0f172a;box-shadow:0 2px 7px rgba(15,23,42,.28);font-size:13px}.nearby-marker.building{background:#0f172a;color:#fff;border-color:#fff}.nearby-marker.cat-bomberos{color:#b91c1c}.nearby-marker.cat-carabineros{color:#1d4ed8}.nearby-marker.cat-pdi{color:#3730a3}.nearby-marker.cat-hospital,.nearby-marker.cat-cesfam,.nearby-marker.cat-centro_salud{color:#15803d}.nearby-marker.cat-constructora{color:#b45309}

/* RC3.0.1 - Auditoría transversal */
.audit-kpis{grid-template-columns:repeat(4,minmax(0,1fr));margin-bottom:14px}.audit-filter-card{margin-bottom:14px}.audit-filter-grid{display:grid;grid-template-columns:2fr 1.1fr 1fr 1fr auto;gap:12px;align-items:end}.audit-filter-actions{display:flex;gap:8px;padding-bottom:1px}.audit-table-card{padding:0;overflow:hidden}.audit-table-head{display:flex;justify-content:space-between;align-items:center;padding:18px 20px;border-bottom:1px solid #e2e8f0}.audit-table-head h3{margin:0 0 4px}.audit-table-head span{font-size:12px}.audit-table{font-size:12px}.audit-table td{vertical-align:top}.audit-date{white-space:nowrap}.audit-action{font-weight:800;color:#0f172a}.audit-detail-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.audit-detail-grid>div{border:1px solid #e2e8f0;border-radius:10px;padding:12px;display:flex;flex-direction:column;gap:4px}.audit-detail-grid .full{grid-column:1/-1}.audit-detail-grid span{font-size:11px;text-transform:uppercase;color:#64748b;font-weight:800}.audit-json{white-space:pre-wrap;word-break:break-word;background:#0f172a;color:#e2e8f0;padding:12px;border-radius:8px;max-height:260px;overflow:auto;font-size:11px}@media(max-width:1100px){.audit-filter-grid{grid-template-columns:1fr 1fr}.audit-filter-actions{grid-column:1/-1}.audit-kpis{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(max-width:640px){.audit-filter-grid,.audit-kpis,.audit-detail-grid{grid-template-columns:1fr}.audit-detail-grid .full{grid-column:auto}}


/* ==========================================================
   RC3.0.2 - Branding avanzado de cabeceras
   ========================================================== */
:root{--brand-header-bg:#fff;--brand-header-text:#0f172a;--brand-header-muted:#64748b;--brand-header-font:Inter,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;--brand-title-size:13px;--brand-slogan-size:10px;--brand-header-height:68px;--brand-logo-size:40px;--brand-logo-bg:#fff;--brand-logo-radius:8px;--product-primary-color:#0f766e}
.shell-horizontal-app{grid-template-rows:var(--brand-header-height) 54px minmax(0,1fr)}
.shell-horizontal-header{background:var(--brand-header-bg);font-family:var(--brand-header-font);transition:background .18s,min-height .18s}
.shell-horizontal-brand strong{font-size:var(--brand-title-size);color:var(--brand-header-text)}
.shell-horizontal-brand span{font-size:var(--brand-slogan-size);color:var(--brand-header-muted)}
.shell-brand-logo{width:var(--brand-logo-size);height:var(--brand-logo-size);flex:0 0 var(--brand-logo-size);display:grid;place-items:center;overflow:hidden;border-radius:var(--brand-logo-radius);background:var(--brand-logo-bg);color:var(--product-primary-color)}
.shell-brand-logo img{width:100%;height:100%;object-fit:contain;background:var(--brand-logo-bg);padding:2px}
.brand-header-preview{border:1px solid #dbe3ec;border-radius:12px;padding:10px 14px;display:flex;align-items:center;gap:12px;overflow:hidden;transition:.15s}
.brand-header-preview>div:last-child{display:flex;flex-direction:column;min-width:0}.brand-header-preview strong,.brand-header-preview span{display:block;line-height:1.15}.brand-header-preview span{margin-top:3px}
.brand-preview-logo{width:40px;height:40px;flex:0 0 40px;display:grid;place-items:center;overflow:hidden;border:1px solid rgba(15,23,42,.08)}.brand-preview-logo img{width:100%;height:100%;object-fit:contain;padding:2px}
@media(max-width:760px){.shell-horizontal-app{grid-template-rows:max(62px,var(--brand-header-height)) 50px minmax(0,1fr)}.shell-horizontal-brand strong{font-size:min(var(--brand-title-size),14px)}.shell-brand-logo{width:min(var(--brand-logo-size),58px);height:min(var(--brand-logo-size),58px);flex-basis:min(var(--brand-logo-size),58px)}}

/* ==========================================================
   RC3.0.5 - Dashboard ejecutivo / despliegue profesional
   ========================================================== */
.pro-dashboard-v2119{gap:14px!important}
.pro-dashboard-v2119 .pro-status-bar{min-height:64px;border-radius:14px;padding:13px 16px;box-shadow:0 7px 22px rgba(15,23,42,.08)}
.pro-dashboard-v2119 .pro-status-bar>i{width:42px;height:42px;border-radius:12px;font-size:18px}
.pro-dashboard-v2119 .pro-status-bar span{font-size:9px!important;letter-spacing:.09em}
.pro-dashboard-v2119 .pro-status-bar b{font-size:16px!important;font-weight:750}
.pro-dashboard-v2119 .pro-status-bar small{font-size:10px!important;margin-top:2px}
.pro-dashboard-v2119 .pro-system-dot{font-size:9px;font-weight:700;padding:5px 9px;border-radius:999px;background:rgba(255,255,255,.12)}

.pro-dashboard-v2119 .pro-kpi-grid{grid-template-columns:repeat(5,minmax(150px,1fr));gap:12px}
.pro-dashboard-v2119 .pro-kpi{position:relative;min-height:96px;padding:14px 15px;border:1px solid #e2e8f0;border-radius:14px;box-shadow:0 5px 18px rgba(15,23,42,.045);overflow:hidden}
.pro-dashboard-v2119 .pro-kpi:before{content:"";position:absolute;left:0;right:0;top:0;height:3px;background:#94a3b8}
.pro-dashboard-v2119 .pro-kpi.res:before{background:#0f766e}.pro-dashboard-v2119 .pro-kpi.alert:before{background:#f97316}.pro-dashboard-v2119 .pro-kpi.ok:before{background:#22c55e}.pro-dashboard-v2119 .pro-kpi.danger:before{background:#ef4444}.pro-dashboard-v2119 .pro-kpi.msg:before{background:#8b5cf6}
.pro-dashboard-v2119 .pro-kpi-icon{width:42px;height:42px;flex:0 0 42px;border-radius:12px;display:grid;place-items:center;background:#f1f5f9}
.pro-dashboard-v2119 .pro-kpi-icon i{font-size:17px}
.pro-dashboard-v2119 .pro-kpi.res .pro-kpi-icon{background:#dff7ef;color:#0f766e}.pro-dashboard-v2119 .pro-kpi.alert .pro-kpi-icon{background:#fff0df;color:#ea580c}.pro-dashboard-v2119 .pro-kpi.ok .pro-kpi-icon{background:#e4f8e8;color:#16a34a}.pro-dashboard-v2119 .pro-kpi.danger .pro-kpi-icon{background:#fee8e8;color:#dc2626}.pro-dashboard-v2119 .pro-kpi.msg .pro-kpi-icon{background:#f0eaff;color:#7c3aed}
.pro-dashboard-v2119 .pro-kpi-body{display:flex;flex-direction:column;flex:1;min-width:0}
.pro-dashboard-v2119 .pro-kpi-body>span{font-size:10px;color:#64748b;font-weight:650}
.pro-dashboard-v2119 .pro-kpi-body>b{font-size:25px;line-height:1.05;color:#0f172a;font-weight:760;margin-top:1px}
.pro-dashboard-v2119 .pro-kpi-body>small{font-size:9px;color:#94a3b8;margin-top:3px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.pro-kpi-track{height:3px;background:#eef2f7;border-radius:99px;margin-top:8px;overflow:hidden}.pro-kpi-track i{display:block;height:100%;border-radius:99px;background:#94a3b8}.pro-kpi.res .pro-kpi-track i{background:#0f766e}.pro-kpi.alert .pro-kpi-track i{background:#f97316}.pro-kpi.ok .pro-kpi-track i{background:#22c55e}.pro-kpi.danger .pro-kpi-track i{background:#ef4444}.pro-kpi.msg .pro-kpi-track i{background:#8b5cf6}

/* Jerarquía: métricas arriba, edificio como foco principal, mapa visible */
.pro-dashboard-v2119 .dashboard-approved-grid{grid-template-columns:minmax(0,1.25fr) minmax(0,1fr) minmax(340px,.95fr);grid-template-areas:"states response messages" "matrix matrix map" "events events map";gap:14px;align-items:stretch}
.pro-dashboard-v2119 .dashboard-approved-grid>.pro-card{border:1px solid #e1e8ef;border-radius:14px;padding:15px;box-shadow:0 5px 18px rgba(15,23,42,.04);min-height:0;background:linear-gradient(180deg,#fff,#fefefe)}
.dashboard-panel-accent{position:relative;overflow:hidden}.dashboard-panel-accent:before{content:"";position:absolute;left:0;top:0;bottom:0;width:3px;background:#cbd5e1}.dashboard-panel-accent.accent-status:before{background:#2f80ed}.dashboard-panel-accent.accent-response:before{background:#16a34a}.dashboard-panel-accent.accent-message:before{background:#8b5cf6}.dashboard-panel-accent.accent-building:before{background:#0f766e}.dashboard-panel-accent.accent-events:before{background:#f97316}.dashboard-panel-accent.accent-map:before{background:#0ea5e9}
.pro-dashboard-v2119 .pro-card-head{margin-bottom:13px;padding-bottom:10px;border-bottom:1px solid #eef2f6}
.pro-dashboard-v2119 .pro-card-head h3{font-size:13px!important;font-weight:750!important;display:flex;align-items:center;gap:7px;color:#172033}
.pro-dashboard-v2119 .pro-card-head h3 i{font-size:12px;color:#64748b}
.pro-dashboard-v2119 .pro-card-head small{font-size:9px!important;color:#8492a6!important;margin-top:3px}
.pro-dashboard-v2119 .pro-card-head a{display:inline-flex;align-items:center;gap:5px;font-size:9px!important;font-weight:650!important;color:#0f766e!important;padding:5px 7px;border-radius:7px;background:#f0fdfa}

.dashboard-state-chart-card,.dashboard-response-chart-card{min-height:275px!important}
.pro-dashboard-v2119 .dashboard-chart-host{min-height:205px;padding:4px 6px 6px}
.pro-dashboard-v2119 .dashboard-donut-layout{grid-template-columns:145px minmax(170px,1fr);gap:18px}
.pro-dashboard-v2119 .dashboard-donut{width:145px;box-shadow:0 0 0 1px #edf2f7}
.pro-dashboard-v2119 .dashboard-donut-center b{font-size:27px;font-weight:760}.pro-dashboard-v2119 .dashboard-donut-center span{font-size:9px}
.pro-dashboard-v2119 .dashboard-donut-legend{gap:8px}
.pro-dashboard-v2119 .dashboard-donut-legend>span{grid-template-columns:10px minmax(0,1fr) auto auto;grid-template-areas:"dot label value pct";padding:7px 8px;border:1px solid #eef2f6;border-radius:8px;background:#fafcfd}
.pro-dashboard-v2119 .dashboard-donut-legend>span>strong{font-size:9px;font-weight:650}.pro-dashboard-v2119 .dashboard-donut-legend>span>b{font-size:11px}.pro-dashboard-v2119 .dashboard-donut-legend>span>small{grid-area:pct;font-size:8px;margin:0 0 0 4px;min-width:38px;text-align:right}

.dashboard-messages-card{min-height:275px!important}.dashboard-messages-card .pro-message-list{max-height:205px;overflow:auto;padding-right:3px}.dashboard-messages-card .pro-message-list article{min-height:62px!important;padding:8px 2px!important}.dashboard-messages-card .msg-avatar{width:34px;height:34px;flex:0 0 34px}.dashboard-messages-card .msg-title b{font-size:10px!important}.dashboard-messages-card .msg-title time,.dashboard-messages-card .state-pill{font-size:8px!important}.dashboard-messages-card .pro-message-list p{font-size:9px!important;line-height:1.35!important}

.dashboard-matrix-card{min-height:390px!important}.dashboard-matrix-card .building-state-legend{font-size:9px;gap:14px;margin-bottom:12px;padding:7px 9px;border-radius:9px;background:#f8fafc}.dashboard-matrix-card .building-state-legend i{width:8px;height:8px}.dashboard-matrix-card .building-state-matrix{max-height:325px;padding:0 5px 0 0;gap:5px}.dashboard-matrix-card .building-matrix-head,.dashboard-matrix-card .building-matrix-row{gap:6px}.dashboard-matrix-card .building-matrix-head{padding:6px 0 8px}.dashboard-matrix-card .building-matrix-head span,.dashboard-matrix-card .building-matrix-head b{font-size:9px!important;color:#64748b}.dashboard-matrix-card .building-matrix-row{min-height:31px!important}.dashboard-matrix-card .matrix-floor-label{font-size:9px!important;font-weight:700!important;color:#334155}.dashboard-matrix-card .matrix-unit{min-height:28px!important;border-radius:6px!important;box-shadow:inset 0 -1px 0 rgba(0,0,0,.08);transition:transform .12s ease,filter .12s ease}.dashboard-matrix-card .matrix-unit:hover{transform:translateY(-1px);filter:brightness(.98)}.dashboard-matrix-card .matrix-unit i{font-size:8px!important}.dashboard-matrix-card .matrix-unit small{font-size:8px!important;font-weight:650!important}

.dashboard-map-card{min-height:100%!important}.dashboard-map-card .dashboard-map{min-height:485px!important;height:calc(100% - 82px)!important;border-radius:10px;border-color:#dde5ed}.dashboard-map-card .dashboard-map-legend{font-size:8px!important;gap:10px;flex-wrap:wrap}.dashboard-map-card .dashboard-map-legend i{width:8px;height:8px}
.dashboard-events-card{min-height:185px!important}.dashboard-events-card .pro-events-list{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));column-gap:18px}.dashboard-events-card .pro-events-list article{min-height:48px!important;padding:8px 2px!important}.dashboard-events-card .pro-events-list article>i{width:28px;height:28px;display:grid;place-items:center;border-radius:8px;background:#fff1f2}.dashboard-events-card .pro-events-list b{font-size:9px!important}.dashboard-events-card .pro-events-list small{font-size:8px!important}.dashboard-events-card .pro-events-list span{font-size:8px!important;padding:3px 7px!important}
.pro-dashboard-v2119 .pro-empty{min-height:145px;display:grid;place-items:center;text-align:center;color:#94a3b8;font-size:10px;background:#fbfcfd;border:1px dashed #e2e8f0;border-radius:10px}

@media(max-width:1280px){.pro-dashboard-v2119 .pro-kpi-grid{grid-template-columns:repeat(5,minmax(130px,1fr))}.pro-dashboard-v2119 .dashboard-approved-grid{grid-template-columns:1fr 1fr;grid-template-areas:"states response" "messages messages" "matrix map" "events events"}.dashboard-map-card .dashboard-map{min-height:360px!important;height:360px!important}.dashboard-matrix-card{min-height:440px!important}}
@media(max-width:900px){.pro-dashboard-v2119 .pro-kpi-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.pro-dashboard-v2119 .dashboard-approved-grid{grid-template-columns:1fr;grid-template-areas:"states" "response" "messages" "matrix" "map" "events"}.pro-dashboard-v2119 .dashboard-donut-layout{grid-template-columns:135px 1fr}.dashboard-events-card .pro-events-list{grid-template-columns:1fr}.dashboard-map-card .dashboard-map{min-height:320px!important;height:320px!important}}
@media(max-width:560px){.pro-dashboard-v2119 .pro-kpi-grid{grid-template-columns:1fr}.pro-dashboard-v2119 .dashboard-donut-layout{grid-template-columns:1fr}.pro-dashboard-v2119 .dashboard-donut{width:135px}.dashboard-matrix-card{overflow:auto}.dashboard-matrix-card .building-state-matrix{min-width:620px}}

/* ==========================================================
   RC3.0.6 - Cabecera operacional compacta del Dashboard
   ========================================================== */
.frame-page .page-head.dashboard-command-head{
  display:grid!important;
  grid-template-columns:minmax(250px,.8fr) minmax(420px,1.35fr) auto!important;
  align-items:center!important;
  gap:14px!important;
  min-height:68px!important;
  margin:0 0 12px!important;
  padding:9px 12px!important;
  border:1px solid #dbe4ec!important;
  border-radius:12px!important;
  background-color:#fff;
  background-size:cover!important;
  background-position:center!important;
  box-shadow:0 4px 14px rgba(15,23,42,.045)!important;
}
.frame-page .page-head.dashboard-command-head>div:first-child{
  min-width:0;
  padding:0 3px!important;
}
.frame-page .page-head.dashboard-command-head h1{
  margin:0 0 2px!important;
  font-size:18px!important;
  line-height:1.15!important;
  font-weight:760!important;
  color:#0f172a!important;
}
.frame-page .page-head.dashboard-command-head p{
  margin:0!important;
  font-size:9px!important;
  line-height:1.2!important;
  color:#64748b!important;
  white-space:nowrap;
  overflow:hidden;
  text-overflow:ellipsis;
}
.frame-page .page-head.dashboard-command-head #pageActions{
  display:flex!important;
  flex-wrap:nowrap!important;
  justify-content:flex-end!important;
  align-items:center!important;
  gap:7px!important;
  margin:0!important;
}
.frame-page .page-head.dashboard-command-head #pageActions .btn{
  height:36px!important;
  min-height:36px!important;
  padding:0 12px!important;
  border-radius:8px!important;
  font-size:10px!important;
  font-weight:700!important;
  white-space:nowrap!important;
  box-shadow:0 3px 8px rgba(15,23,42,.10)!important;
}
.dashboard-header-status{min-width:0}
.dashboard-head-state{
  min-width:0;
  height:48px;
  display:grid;
  grid-template-columns:34px minmax(150px,1fr) auto auto;
  align-items:center;
  gap:9px;
  padding:6px 8px;
  border-radius:10px;
  border:1px solid #b9e2d8;
  background:linear-gradient(90deg,#ecfdf8,#f7fffc);
  color:#0f5f54;
}
.dashboard-head-state.active{
  border-color:#fecaca;
  background:linear-gradient(90deg,#fff1f2,#fff7f7);
  color:#b91c1c;
}
.dashboard-head-state.simulation{
  border-color:#fed7aa;
  background:linear-gradient(90deg,#fff7ed,#fffaf4);
  color:#c2410c;
}
.dashboard-head-state-icon{
  width:32px;height:32px;border-radius:8px;display:grid;place-items:center;
  background:#d9f4eb;color:#0f766e;font-size:13px;
}
.dashboard-head-state.active .dashboard-head-state-icon{background:#fee2e2;color:#dc2626}
.dashboard-head-state.simulation .dashboard-head-state-icon{background:#ffedd5;color:#ea580c}
.dashboard-head-state-copy{min-width:0;display:flex;flex-direction:column;line-height:1.05}
.dashboard-head-state-copy small{font-size:7px!important;letter-spacing:.08em;font-weight:800;color:currentColor;opacity:.78}
.dashboard-head-state-copy b{margin-top:2px;font-size:11px!important;font-weight:800!important;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;color:currentColor!important}
.dashboard-head-state-dot{display:inline-flex;align-items:center;gap:5px;font-size:8px;font-weight:750;white-space:nowrap;padding:5px 7px;border-radius:999px;background:#fff8}
.dashboard-head-state-dot i{width:6px;height:6px;border-radius:50%;background:#16a34a;box-shadow:0 0 0 3px #dcfce7}
.dashboard-head-event-time{display:flex;align-items:baseline;gap:5px;white-space:nowrap;color:currentColor}
.dashboard-head-event-time span{font-size:7px!important;font-weight:650;opacity:.72}
.dashboard-head-event-time b{font-size:14px!important;font-variant-numeric:tabular-nums;font-weight:800!important;color:currentColor!important}
.dashboard-head-center-link{height:28px;display:inline-flex;align-items:center;gap:5px;padding:0 8px;border:1px solid currentColor;border-radius:7px;color:currentColor!important;background:#fff8;font-size:8px;font-weight:750;white-space:nowrap}
.dashboard-compact-v306{gap:10px!important}
.dashboard-compact-v306 .pro-kpi-grid{margin-top:0!important}
/* La cabecera ya contiene el estado, por lo que no reservamos una segunda franja. */
.pro-dashboard-v2119 .pro-status-bar{display:none!important}

@media(max-width:1180px){
  .frame-page .page-head.dashboard-command-head{grid-template-columns:minmax(220px,.8fr) 1fr auto!important;gap:9px!important}
  .dashboard-head-state{grid-template-columns:30px minmax(130px,1fr) auto;padding:5px 7px}
  .dashboard-head-event-time{display:none}
  .dashboard-head-center-link{font-size:0;width:30px;justify-content:center;padding:0}
  .dashboard-head-center-link i{font-size:9px}
  .frame-page .page-head.dashboard-command-head #pageActions .btn span{display:none}
  .frame-page .page-head.dashboard-command-head #pageActions .btn{width:38px;padding:0!important}
}
@media(max-width:820px){
  .frame-page .page-head.dashboard-command-head{grid-template-columns:1fr auto!important;grid-template-areas:"title actions" "status status";min-height:0!important;padding:8px!important}
  .frame-page .page-head.dashboard-command-head>div:first-child{grid-area:title}
  .dashboard-header-status{grid-area:status}
  .frame-page .page-head.dashboard-command-head #pageActions{grid-area:actions}
  .dashboard-head-state{height:42px}
}
@media(max-width:520px){
  .frame-page .page-head.dashboard-command-head h1{font-size:15px!important}
  .frame-page .page-head.dashboard-command-head p{display:none}
  .dashboard-head-state{grid-template-columns:30px minmax(0,1fr) auto}
  .dashboard-head-state-copy b{font-size:9px!important}
  .dashboard-head-state-dot{display:none}
}

/* ==========================================================
   RC3.3.0 - Dashboard aprobado TIC2TIIA
   ========================================================== */
.frame-page .page-head.dashboard-head-hidden{display:none!important}
.dashboard-compact-v306{gap:12px!important}
.pro-dashboard-v2119 .dashboard-approved-grid{
  grid-template-columns:minmax(0,1fr) minmax(0,1fr) minmax(420px,1.35fr)!important;
  grid-template-areas:
    "states response matrix"
    "messages map matrix"!important;
  grid-template-rows:275px 310px;
  gap:14px!important;
  align-items:stretch!important;
}
.pro-dashboard-v2119 .dashboard-state-chart-card,
.pro-dashboard-v2119 .dashboard-response-chart-card,
.pro-dashboard-v2119 .dashboard-messages-card,
.pro-dashboard-v2119 .dashboard-map-card,
.pro-dashboard-v2119 .dashboard-matrix-card{min-height:0!important;height:100%!important}
.pro-dashboard-v2119 .dashboard-messages-card .pro-message-list{max-height:235px!important}
.pro-dashboard-v2119 .dashboard-map-card .dashboard-map{min-height:215px!important;height:215px!important}
.pro-dashboard-v2119 .dashboard-matrix-card .building-state-matrix{max-height:510px!important}
.pro-dashboard-v2119 .dashboard-matrix-card .matrix-unit:not(.empty){background:#1769aa!important;border-color:#125990!important;color:#fff!important}
.pro-dashboard-v2119 .dashboard-matrix-card .matrix-unit:not(.empty):hover{background:#0f5d9e!important;filter:none!important}
.pro-dashboard-v2119 .dashboard-matrix-card .matrix-unit:not(.empty) i,
.pro-dashboard-v2119 .dashboard-matrix-card .matrix-unit:not(.empty) small{color:#fff!important}
.pro-dashboard-v2119 .dashboard-events-card{display:none!important}

.frame-body .modal-host-global{place-items:start center!important}
.frame-body .modal-box-global{margin-top:var(--modal-visible-top,18px)!important}

@media(max-width:1280px){
  .pro-dashboard-v2119 .dashboard-approved-grid{
    grid-template-columns:1fr 1fr!important;
    grid-template-areas:"states response" "messages map" "matrix matrix"!important;
    grid-template-rows:auto!important;
  }
  .pro-dashboard-v2119 .dashboard-matrix-card{height:auto!important;min-height:440px!important}
}
@media(max-width:900px){
  .pro-dashboard-v2119 .dashboard-approved-grid{
    grid-template-columns:1fr!important;
    grid-template-areas:"states" "response" "messages" "map" "matrix"!important;
  }
  .frame-body .modal-host-global{align-items:center!important}
  .frame-body .modal-box-global{margin-top:0!important}
}

/* RC3.4.0 - Mantenimiento operacional */
html:has(body.maintenance-page),body.maintenance-page{max-width:100%;overflow-x:hidden!important}
.maintenance-page .frame-page,.maintenance-page #pageContent,.maintenance-module{width:100%;max-width:100%;min-width:0;box-sizing:border-box;overflow-x:hidden}.maintenance-module{display:grid;gap:14px}
.maintenance-toolbar{display:flex;align-items:center;justify-content:space-between;gap:18px;padding:2px 1px}.maintenance-toolbar h2{margin:0;color:#172033;font-size:20px}.maintenance-toolbar p{margin:4px 0 0;color:#667085;font-size:12px}.maintenance-toolbar .btn{flex:0 0 auto}
.maintenance-kpi-grid{display:grid!important;grid-template-columns:repeat(5,minmax(0,1fr))!important;gap:12px!important}.maintenance-kpi{display:flex!important;align-items:center!important;gap:12px!important;min-width:0!important;min-height:96px!important;padding:14px 15px!important;position:relative;overflow:hidden}.maintenance-kpi:before{content:"";position:absolute;left:0;right:0;top:0;height:3px;background:#94a3b8}.maintenance-kpi.res:before{background:#0f766e}.maintenance-kpi.ok:before{background:#22c55e}.maintenance-kpi.alert:before{background:#f97316}.maintenance-kpi.danger:before{background:#ef4444}.maintenance-kpi.msg:before{background:#8b5cf6}
.maintenance-kpi .pro-kpi-icon{width:42px;height:42px;flex:0 0 42px;border-radius:12px;display:grid;place-items:center;background:#f1f5f9}.maintenance-kpi .pro-kpi-icon i{font-size:17px}.maintenance-kpi.res .pro-kpi-icon{background:#dff7ef;color:#0f766e}.maintenance-kpi.ok .pro-kpi-icon{background:#e4f8e8;color:#16a34a}.maintenance-kpi.alert .pro-kpi-icon{background:#fff0df;color:#ea580c}.maintenance-kpi.danger .pro-kpi-icon{background:#fee8e8;color:#dc2626}.maintenance-kpi.msg .pro-kpi-icon{background:#f0eaff;color:#7c3aed}
.maintenance-kpi .pro-kpi-body{display:flex;flex:1;min-width:0;flex-direction:column}.maintenance-kpi .pro-kpi-body>span{font-size:11px;color:#64748b;font-weight:700}.maintenance-kpi .pro-kpi-body>b{font-size:25px;line-height:1.05;color:#0f172a}.maintenance-kpi .pro-kpi-body>small{margin-top:3px;color:#94a3b8;font-size:9px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.maintenance-kpi .pro-kpi-track{height:3px;margin-top:8px;border-radius:99px;background:#eef2f7;overflow:hidden}.maintenance-kpi .pro-kpi-track i{display:block;height:100%;background:currentColor}
.maintenance-table-card{min-width:0!important;padding:16px!important}.maintenance-table-head{display:flex;align-items:center;justify-content:space-between;gap:15px;margin-bottom:12px}.maintenance-table-head h3{margin:0;font-size:15px}.maintenance-table-head span{display:block;margin-top:3px;color:#667085;font-size:11px}.maintenance-search{display:flex;align-items:center;gap:8px;min-width:min(360px,40vw);margin:0!important;padding:0 10px;border:1px solid #d0d5dd;border-radius:8px;background:#fff;color:#667085}.maintenance-search input{width:100%;min-width:0;border:0!important;box-shadow:none!important}
.maintenance-table-wrap{width:100%;max-width:100%;overflow:auto!important}.maintenance-table{min-width:1120px;table-layout:fixed}.maintenance-table th:nth-child(1){width:145px}.maintenance-table th:nth-child(2){width:165px}.maintenance-table th:nth-child(3){width:155px}.maintenance-table th:nth-child(4){width:185px}.maintenance-table th:nth-child(n+5):nth-child(-n+7){width:112px}.maintenance-table th:nth-child(8){width:125px}.maintenance-table th:nth-child(9){width:96px}.maintenance-table td{vertical-align:middle;white-space:normal!important}.maintenance-table td>b,.maintenance-table td>small{display:block}.maintenance-table td>small{margin-top:3px;color:#98a2b3;font-size:10px}.maintenance-type{display:flex;align-items:center;gap:8px}.maintenance-type>i{width:28px;height:28px;display:grid;place-items:center;border-radius:8px;background:#eff6ff;color:#1769aa}.maintenance-actions{display:flex;gap:5px;white-space:nowrap!important}.maintenance-actions .btn{min-width:36px;padding:7px!important}
.maintenance-empty{min-height:180px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:6px;color:#667085}.maintenance-empty i{font-size:30px;color:#98a2b3}.maintenance-empty b{color:#344054}.maintenance-modal-head p{margin:4px 0 0;color:#667085;font-size:12px}.maintenance-form{padding-top:8px}.maintenance-supplier-summary{display:flex;align-items:center;gap:10px;margin-top:8px;padding:10px 12px;border:1px solid #dbeafe;border-radius:9px;background:#f5f9ff;color:#344054}.maintenance-supplier-summary>i{color:#1769aa;font-size:18px}.maintenance-supplier-summary>div{display:flex;min-width:0;flex-direction:column}.maintenance-supplier-summary b{font-size:12px}.maintenance-supplier-summary span{color:#667085;font-size:10px;line-height:1.4}.maintenance-supplier-summary.empty{color:#667085;border-style:dashed;background:#fafcff}.maintenance-page .modal-box-global{width:min(780px,calc(100vw - 32px))!important;max-width:780px!important}
@media(max-width:1100px){.maintenance-kpi-grid{grid-template-columns:repeat(3,minmax(0,1fr))!important}}@media(max-width:720px){.maintenance-toolbar,.maintenance-table-head{align-items:stretch;flex-direction:column}.maintenance-toolbar .btn{width:100%}.maintenance-search{min-width:0;width:100%}.maintenance-kpi-grid{grid-template-columns:repeat(2,minmax(0,1fr))!important}.maintenance-page .modal-box-global{width:calc(100% - 16px)!important}.maintenance-form .form-grid{grid-template-columns:1fr!important}}@media(max-width:440px){.maintenance-kpi-grid{grid-template-columns:1fr!important}}

/* RC3.4.1 - Acciones completas, KPI uniformes y modales compactos */
.pro-dashboard-v2119 .pro-kpi-grid,.maintenance-kpi-grid{width:100%!important;max-width:100%!important;grid-template-columns:repeat(5,minmax(0,1fr))!important}.pro-dashboard-v2119 .pro-kpi,.maintenance-kpi{width:100%!important;min-width:0!important;height:118px!important;min-height:118px!important;box-sizing:border-box!important}
.directory-head-actions{display:flex;align-items:center;gap:8px;min-width:min(520px,55vw)}.directory-head-actions input{flex:1;min-width:0}.directory-head-actions .btn{flex:0 0 auto}.directory-row-actions{display:flex;align-items:center;justify-content:flex-end;gap:6px}.directory-delete,.maintenance-delete{color:#b42318!important}.directory-delete:hover,.maintenance-delete:hover{border-color:#fda29b!important;background:#fef3f2!important}
.directory-enrollment-status{margin-top:6px}.directory-enrollment-status .badge{gap:5px}.directory-enroll{color:#075985!important;border-color:#bae6fd!important;background:#f0f9ff!important}.directory-enroll:hover{background:#e0f2fe!important}.enrollment-qr img{display:block;width:min(260px,100%);height:auto;padding:10px;border:1px solid #dbe4ee;border-radius:16px;background:#fff}.enrollment-link-row{display:flex;gap:8px;align-items:center}.enrollment-link-row input{min-width:0;flex:1}
@media(max-width:560px){.enrollment-link-row{align-items:stretch;flex-direction:column}.enrollment-modal-grid{gap:12px}.enrollment-qr img{width:min(220px,70vw)}.directory-row-actions{flex-wrap:wrap}.directory-enroll{order:-1}}
.public-directory-access{min-height:100dvh;margin:0;display:grid;place-items:center;padding:18px;background:#f4f7fa;color:#0f172a}.public-access-card{width:min(520px,100%);padding:28px;border:1px solid #dce3eb;border-top:4px solid #0f8f79;border-radius:20px;background:#fff;box-shadow:0 18px 45px rgba(15,23,42,.12)}.public-access-brand{font-size:1.35rem;font-weight:900;color:#0f8f79;letter-spacing:.04em;margin-bottom:18px}.public-access-card h1{margin:12px 0 4px;font-size:1.65rem}.public-access-card>p{margin:0 0 20px;color:#64748b}.public-access-data{display:grid;gap:10px}.public-access-data>div{display:flex;justify-content:space-between;gap:16px;padding:12px;border-radius:10px;background:#f8fafc}.public-access-data span{text-align:right}.public-access-loading,.public-access-error{text-align:center;padding:24px}.public-access-error i{font-size:2rem;color:#dc2626}
.modal-box-global{max-height:calc(100dvh - 36px)!important;overflow-y:scroll!important;overflow-x:hidden!important;scrollbar-gutter:stable!important}.modal-box-global .modal-head{padding-bottom:8px!important}.modal-box-global .form-grid{gap:8px 12px!important}.modal-box-global .field{margin-bottom:7px!important}.modal-box-global .field label{font-size:12px!important}.modal-box-global input:not([type="checkbox"]):not([type="radio"]),.modal-box-global select{min-height:36px!important;height:36px!important;padding:6px 9px!important;font-size:12px!important}.modal-box-global textarea{min-height:68px!important;padding:7px 9px!important;font-size:12px!important}.modal-box-global .modal-actions{position:sticky!important;bottom:0!important;z-index:9!important;margin:10px -1px -1px!important;padding:10px 1px 1px!important;background:#fff!important;border-top:1px solid #eef2f6!important}.modal-box-global .modal-head h2{font-size:19px!important}.modal-box-global .small{font-size:10px!important}
@media(max-width:1280px){.pro-dashboard-v2119 .pro-kpi-grid,.maintenance-kpi-grid{grid-template-columns:repeat(3,minmax(0,1fr))!important}}@media(max-width:900px){.pro-dashboard-v2119 .pro-kpi-grid,.maintenance-kpi-grid{grid-template-columns:repeat(2,minmax(0,1fr))!important}.directory-head-actions{min-width:0;width:100%}}@media(max-width:560px){.pro-dashboard-v2119 .pro-kpi-grid,.maintenance-kpi-grid{grid-template-columns:1fr!important}.directory-row-actions{justify-content:flex-start}}

/* RC3.4.3 - KPI alineados y de dimensiones uniformes en todos los módulos */
.pro-kpi-grid,.maintenance-kpi-grid,.command-kpis,.ops-kpi-row,
.ops-emergency-kpis,.audit-kpis,.kpis{
  align-items:stretch!important;
  grid-auto-rows:1fr;
}
.pro-kpi-grid>.pro-kpi,.maintenance-kpi-grid>.maintenance-kpi,
.command-kpis>.command-kpi,.ops-kpi-row>.ops-kpi,
.ops-emergency-kpis>.ops-kpi,.audit-kpis>.kpi,.kpis>.kpi{
  align-self:stretch!important;
  box-sizing:border-box!important;
  height:100%!important;
  margin-top:0!important;
  margin-bottom:0!important;
}
/* Evita la colisión entre el KPI Mensajes (.msg) y los avisos globales (.msg). */
.pro-kpi-grid>.pro-kpi.msg,.maintenance-kpi-grid>.maintenance-kpi.msg{
  margin:0!important;
}

/* RC3.5.0 - Modal visible, KPI móviles en una fila y estados reales por unidad */
.frame-body .modal-host-global{align-items:start!important;place-items:start center!important}
.frame-body .modal-box-global{
  margin-top:var(--modal-visible-top,8px)!important;
  max-height:var(--modal-visible-height,calc(100dvh - 16px))!important;
  overflow-y:auto!important;
  overscroll-behavior:contain;
}
.pro-dashboard-v2119 .dashboard-matrix-card .matrix-unit.evacuating{background:var(--state-evacuating)!important;border-color:var(--state-evacuating)!important;color:#fff!important}
.pro-dashboard-v2119 .dashboard-matrix-card .matrix-unit.safe{background:var(--state-safe)!important;border-color:var(--state-safe)!important;color:#fff!important}
.pro-dashboard-v2119 .dashboard-matrix-card .matrix-unit.outside{background:var(--state-outside)!important;border-color:var(--state-outside)!important;color:#fff!important}
.pro-dashboard-v2119 .dashboard-matrix-card .matrix-unit.help{background:var(--state-help)!important;border-color:var(--state-help)!important;color:#fff!important}
.pro-dashboard-v2119 .dashboard-matrix-card .matrix-unit.confirm{background:var(--state-confirm)!important;border-color:var(--state-confirm)!important;color:#fff!important}
.pro-dashboard-v2119 .dashboard-matrix-card .matrix-unit.pending{background:var(--state-pending)!important;border-color:var(--state-pending)!important;color:#475569!important}
@media(max-width:760px){
  .pro-dashboard-v2119 .pro-kpi-grid{
    grid-template-columns:repeat(5,minmax(0,1fr))!important;
    gap:4px!important;
  }
  .pro-dashboard-v2119 .pro-kpi{
    height:92px!important;min-height:92px!important;
    padding:8px 3px 6px!important;gap:4px!important;
    flex-direction:column!important;justify-content:center!important;text-align:center!important;
  }
  .pro-dashboard-v2119 .pro-kpi-icon{width:30px!important;height:30px!important;flex-basis:30px!important;border-radius:9px!important}
  .pro-dashboard-v2119 .pro-kpi-icon i{font-size:13px!important}
  .pro-dashboard-v2119 .pro-kpi-body{width:100%;align-items:center!important}
  .pro-dashboard-v2119 .pro-kpi-body>span{width:100%;font-size:7px!important;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
  .pro-dashboard-v2119 .pro-kpi-body>b{font-size:18px!important}
  .pro-dashboard-v2119 .pro-kpi-body>small{display:none}
  .pro-dashboard-v2119 .pro-kpi-track{width:calc(100% - 8px);margin-top:3px!important}
  .dashboard-matrix-card{overflow:hidden!important;padding-left:8px!important;padding-right:8px!important}
  .dashboard-matrix-card .building-state-matrix{width:100%!important;min-width:0!important;max-width:100%!important;overflow-x:hidden!important;padding-right:0!important}
  .dashboard-matrix-card .building-matrix-head,.dashboard-matrix-card .building-matrix-row{
    min-width:0!important;grid-template-columns:34px repeat(var(--cols,7),minmax(0,1fr))!important;gap:3px!important;
  }
  .dashboard-matrix-card .matrix-unit{min-width:0!important;padding:0 1px!important;gap:2px!important}
  .dashboard-matrix-card .matrix-unit i{font-size:6px!important}.dashboard-matrix-card .matrix-unit small{font-size:6px!important}
}

/* RC3.5.1 - Modales centrados sobre el área visible real del shell. */
.frame-body .db-occupants-modal{align-items:start!important;justify-items:center!important}
.frame-body .db-occupants-dialog{
  overflow-y:auto!important;
  overflow-x:hidden!important;
  overscroll-behavior:contain;
}
@media(max-width:420px){
  .dashboard-matrix-card .building-matrix-head,.dashboard-matrix-card .building-matrix-row{
    grid-template-columns:30px repeat(var(--cols,7),minmax(0,1fr))!important;
    gap:2px!important;
  }
  .dashboard-matrix-card .matrix-unit{min-height:25px!important;border-radius:5px!important}
  .dashboard-matrix-card .matrix-unit i{display:none!important}
  .dashboard-matrix-card .matrix-unit small{font-size:6px!important}
}

/* RC3.12.0 overrides finales: densidad de la Vista comando */
.command-view-frame .frame-page{padding:8px!important;background:#041326!important}
.command-view-frame .pro-dashboard-v2119{gap:8px!important}
.command-view-frame .pro-dashboard-v2119 .pro-kpi-grid{gap:8px!important}
.command-view-frame .pro-dashboard-v2119 .pro-kpi{height:84px!important;min-height:84px!important;padding:10px 12px!important;gap:9px!important;background:#071d34!important;border:1px solid #155078!important;border-radius:9px!important}
.command-view-frame .pro-dashboard-v2119 .pro-kpi-icon{width:36px!important;height:36px!important;flex-basis:36px!important;border-radius:10px!important}
.command-view-frame .pro-dashboard-v2119 .pro-kpi-icon i{font-size:15px!important}.command-view-frame .pro-dashboard-v2119 .pro-kpi-body>b{font-size:22px!important}.command-view-frame .pro-dashboard-v2119 .pro-kpi-body>span{font-size:10px!important}.command-view-frame .pro-dashboard-v2119 .pro-kpi-body>small{font-size:8px!important}
.command-view-frame .pro-dashboard-v2119 .dashboard-approved-grid{grid-template-columns:minmax(0,1fr) minmax(0,1fr) minmax(390px,1.42fr)!important;grid-template-areas:"states response matrix" "messages map matrix"!important;grid-template-rows:220px 250px!important;gap:8px!important}
.command-view-frame .pro-dashboard-v2119 .dashboard-approved-grid>.pro-card{padding:10px!important;background:#071d34!important;border:1px solid #155078!important;border-radius:9px!important;box-shadow:none!important}
.command-view-frame .pro-dashboard-v2119 .pro-card-head{min-height:38px!important;margin-bottom:5px!important;padding-bottom:6px!important}.command-view-frame .pro-dashboard-v2119 .pro-card-head h3{font-size:12px!important}.command-view-frame .pro-dashboard-v2119 .pro-card-head small{font-size:8px!important}
.command-view-frame .dashboard-chart-host{height:155px!important;min-height:155px!important;width:100%!important}
.command-view-frame .dashboard-chart-fallback{height:100%;display:grid;place-content:center;text-align:center}.command-view-frame .dashboard-chart-fallback b{font-size:24px}.command-view-frame .dashboard-chart-fallback span{font-size:9px;color:#8fb2cc}
.command-view-frame .pro-dashboard-v2119 .dashboard-messages-card .pro-message-list{max-height:190px!important}.command-view-frame .pro-dashboard-v2119 .pro-message-list article{padding:7px!important}
.command-view-frame .pro-dashboard-v2119 .dashboard-map-card .dashboard-map{height:183px!important;min-height:183px!important}.command-view-frame .pro-dashboard-v2119 .dashboard-matrix-card .building-state-matrix{max-height:405px!important}
.command-view-frame .building-state-legend{padding:6px!important;gap:8px!important}.command-view-frame .building-state-legend span{font-size:8px!important}
@media(max-width:1280px){.command-view-frame .pro-dashboard-v2119 .dashboard-approved-grid{grid-template-columns:1fr 1fr!important;grid-template-areas:"states response" "messages map" "matrix matrix"!important;grid-template-rows:220px 250px auto!important}}
@media(max-width:760px){.command-view-frame .frame-page{padding:5px!important}.command-view-frame .pro-dashboard-v2119 .pro-kpi{height:76px!important;min-height:76px!important}.command-view-frame .pro-dashboard-v2119 .dashboard-approved-grid{grid-template-columns:1fr!important;grid-template-areas:"states" "response" "messages" "map" "matrix"!important;grid-template-rows:auto!important}}

/* ==========================================================
   RC3.15.0 - Dashboard Centro de Comando Azul
   Diseño de referencia azul + funcionalidad RC3.14.9 intacta
   ========================================================== */
.dark-palette-frame .dashboard-command-real{
  --cmd-bg:#041326;
  --cmd-card:#071d34;
  --cmd-card-2:#082741;
  --cmd-border:#155078;
  --cmd-border-soft:#123d5d;
  --cmd-text:#f4faff;
  --cmd-muted:#8fb2cc;
  --cmd-blue:#1680ff;
  --cmd-cyan:#20b8ff;
  --cmd-green:#10c878;
  --cmd-amber:#f59e0b;
  --cmd-red:#f43f5e;
  --cmd-purple:#7c3aed;
  color:var(--cmd-text)!important;
  gap:10px!important;
}
.dark-palette-frame .dashboard-command-real .pro-card,
.dark-palette-frame .dashboard-command-real .command-floor-plan{
  background:linear-gradient(180deg,#08213a 0%,#061a2f 100%)!important;
  border:1px solid var(--cmd-border)!important;
  box-shadow:inset 0 1px 0 rgba(255,255,255,.025),0 8px 22px rgba(0,0,0,.10)!important;
}
.dark-palette-frame .dashboard-command-real .pro-card-head{
  border-bottom:1px solid rgba(37,96,136,.45)!important;
}
.dark-palette-frame .dashboard-command-real .pro-card-head h3,
.dark-palette-frame .dashboard-command-real .pro-card-head b{
  color:var(--cmd-text)!important;
}
.dark-palette-frame .dashboard-command-real .pro-card-head h3>i,
.dark-palette-frame .dashboard-command-real .pro-card-head>a{
  color:#37a8ff!important;
}
.dark-palette-frame .dashboard-command-real .pro-card-head>a:hover{color:#79c7ff!important}

/* KPIs: apariencia de tarjetas del mockup azul */
.dark-palette-frame .dashboard-command-real .command-kpi-card{
  height:104px!important;
  min-height:104px!important;
  border-radius:10px!important;
  padding:12px 13px!important;
  background:linear-gradient(135deg,#092640 0%,#071b31 68%,#06182c 100%)!important;
  border-color:#155078!important;
  box-shadow:inset 0 1px 0 rgba(255,255,255,.035)!important;
}
.dark-palette-frame .dashboard-command-real .command-kpi-card.res{border-color:#1477bd!important}
.dark-palette-frame .dashboard-command-real .command-kpi-card.alert{border-color:#9b6415!important}
.dark-palette-frame .dashboard-command-real .command-kpi-card.ok{border-color:#0d9369!important;background:linear-gradient(135deg,#07362f,#062338 72%)!important}
.dark-palette-frame .dashboard-command-real .command-kpi-card.danger{border-color:#9d2d49!important;background:linear-gradient(135deg,#351529,#0a2038 72%)!important}
.dark-palette-frame .dashboard-command-real .command-kpi-card.msg{border-color:#5144a9!important;background:linear-gradient(135deg,#16194a,#09203a 72%)!important}
.dark-palette-frame .dashboard-command-real .pro-kpi-icon{
  width:44px!important;height:44px!important;min-width:44px!important;
  border-radius:50%!important;display:grid!important;place-items:center!important;
  font-size:19px!important;box-shadow:0 0 0 5px rgba(255,255,255,.025),0 0 22px rgba(0,0,0,.15)
}
.dark-palette-frame .dashboard-command-real .res .pro-kpi-icon{background:#137df2!important;color:#fff!important}
.dark-palette-frame .dashboard-command-real .alert .pro-kpi-icon{background:#ff970f!important;color:#fff!important}
.dark-palette-frame .dashboard-command-real .ok .pro-kpi-icon{background:#0acb88!important;color:#fff!important}
.dark-palette-frame .dashboard-command-real .danger .pro-kpi-icon{background:#ff274e!important;color:#fff!important}
.dark-palette-frame .dashboard-command-real .msg .pro-kpi-icon{background:#6f48f6!important;color:#fff!important}
.dark-palette-frame .dashboard-command-real .pro-kpi-body span{color:#d4e7f5!important;font-size:10px!important;font-weight:650!important}
.dark-palette-frame .dashboard-command-real .pro-kpi-body b{color:#fff!important;font-size:27px!important;letter-spacing:-.03em}
.dark-palette-frame .dashboard-command-real .pro-kpi-body small{color:#8fb2cc!important;font-size:8px!important;margin-top:2px}

/* Plano operacional */
.dark-palette-frame .dashboard-command-real .command-floor-card{border-radius:10px!important}
.dark-palette-frame .dashboard-command-real .command-floor-head{background:#071d34!important}
.dark-palette-frame .dashboard-command-real .command-plan-panel,
.dark-palette-frame .dashboard-command-real .command-building-panel{
  background:#06182c!important;border-color:#155078!important;
}
.dark-palette-frame .dashboard-command-real .command-plan-panel .command-plan-legend{
  background:#071d34!important;border-color:#155078!important;
}
.dark-palette-frame .dashboard-command-real .command-plan-panel .command-plan-legend span{color:#cce4f4!important;font-size:8.5px!important}
.dark-palette-frame .dashboard-command-real .command-building-head{background:#071d34!important;border-color:#155078!important}
.dark-palette-frame .dashboard-command-real .command-building-head b{color:#f8fbff!important}
.dark-palette-frame .dashboard-command-real .command-building-head small,
.dark-palette-frame .dashboard-command-real .command-building-head>span{color:#8fb2cc!important}
.dark-palette-frame .dashboard-command-real .dashboard-operational-plan{background:#041426!important}
.dark-palette-frame .dashboard-command-real .dashboard-operational-plan svg{filter:drop-shadow(0 8px 18px rgba(0,0,0,.18))}

/* Panel derecho: comunicaciones, alertas y acciones */
.dark-palette-frame .dashboard-command-real .command-incoming-card .pro-message-list article,
.dark-palette-frame .dashboard-command-real .command-alert-list article,
.dark-palette-frame .dashboard-command-real .command-activity-list article{
  background:#06182c!important;border-color:#164568!important;
}
.dark-palette-frame .dashboard-command-real .command-incoming-card .pro-message-list article.dashboard-assistance-request{
  background:linear-gradient(90deg,#351326,#071a30)!important;border-color:#a52d4d!important;
}
.dark-palette-frame .dashboard-command-real .pro-message-list b,
.dark-palette-frame .dashboard-command-real .pro-message-list p,
.dark-palette-frame .dashboard-command-real .command-alert-list b,
.dark-palette-frame .dashboard-command-real .command-activity-list b{color:#f8fbff!important}
.dark-palette-frame .dashboard-command-real .pro-message-list p{font-size:9px!important;line-height:1.4!important}
.dark-palette-frame .dashboard-command-real .command-alert-list small,
.dark-palette-frame .dashboard-command-real .command-activity-list small,
.dark-palette-frame .dashboard-command-real .pro-message-list time{color:#8fb2cc!important}
.dark-palette-frame .dashboard-command-real .command-operation-grid button{
  background:#09213a!important;border-color:#245576!important;color:#d9edfb!important;
  min-height:52px!important;border-radius:8px!important;
}
.dark-palette-frame .dashboard-command-real .command-operation-grid .normality{background:#075846!important;border-color:#10c878!important;color:#e1fff5!important}
.dark-palette-frame .dashboard-command-real .command-operation-grid .update{background:#073766!important;border-color:#1680ff!important;color:#e7f2ff!important}
.dark-palette-frame .dashboard-command-real .command-operation-grid button:hover{filter:brightness(1.13)}

/* Mapa y actividad */
.dark-palette-frame .dashboard-command-real .dashboard-map{
  background:#06182c!important;border-color:#155078!important;
}
.dark-palette-frame .dashboard-command-real .dashboard-map iframe{filter:saturate(.78) brightness(.72) contrast(1.15) hue-rotate(172deg)!important}
.dark-palette-frame .dashboard-command-real .map-building{background:#0b65ce!important;box-shadow:0 0 0 4px rgba(255,255,255,.72),0 0 24px #1680ff99!important}
.dark-palette-frame .dashboard-command-real .map-distance-label{background:#06233d!important;border:1px solid #27638d;color:#dff3ff!important}
.dark-palette-frame .dashboard-command-real .dashboard-map-legend{color:#b9d4e8!important}
.dark-palette-frame .dashboard-command-real .command-activity-card,
.dark-palette-frame .dashboard-command-real .command-map-card{border-radius:10px!important}

/* Vacíos y scrollbars coherentes */
.dark-palette-frame .dashboard-command-real .pro-empty{
  background:#06182c!important;border:1px dashed #205376!important;color:#8fb2cc!important;
}
.dark-palette-frame .dashboard-command-real *{scrollbar-color:#1b75b7 #07182a}

/* Aprovecha mejor 1080p sin eliminar funcionalidad */
@media(min-width:1200px) and (min-height:760px){
  .dark-palette-frame .dashboard-command-real .command-dashboard-grid{grid-template-rows:440px 225px!important}
  .dark-palette-frame .dashboard-command-real .command-floor-body{height:388px!important}
  .dark-palette-frame .dashboard-command-real .command-map-card .dashboard-map{height:158px!important;min-height:158px!important}
}

/* ==========================================================
   RC3.16.0 - Centro de Comando final
   Réplica funcional del layout azul de referencia.
   ========================================================== */
.dark-palette-frame .dashboard-command-v316{
  --v316-bg:#031426;
  --v316-panel:#061d34;
  --v316-panel2:#08243d;
  --v316-line:#0e5e91;
  --v316-line-soft:#12496f;
  --v316-text:#f5fbff;
  --v316-muted:#8eb2cc;
  --v316-blue:#0d80ff;
  --v316-green:#06d28c;
  --v316-amber:#ff9f0a;
  --v316-red:#ff244d;
  --v316-purple:#7447ff;
  width:100%!important;
  max-width:none!important;
  gap:10px!important;
  padding:0!important;
  color:var(--v316-text)!important;
}
.dark-palette-frame .frame-page{padding:8px 10px 10px!important;background:#031426!important}
.dark-palette-frame .dashboard-command-v316 .pro-kpi-grid{
  display:grid!important;
  grid-template-columns:repeat(5,minmax(0,1fr))!important;
  gap:8px!important;
  margin:0!important;
}
.dark-palette-frame .dashboard-command-v316 .command-kpi-card{
  position:relative!important;
  display:grid!important;
  grid-template-columns:54px minmax(0,1fr) 64px!important;
  align-items:center!important;
  height:112px!important;
  min-height:112px!important;
  padding:10px 11px!important;
  gap:10px!important;
  overflow:hidden!important;
  border-radius:8px!important;
  background:linear-gradient(135deg,#08233c 0%,#061a2f 78%)!important;
  border:1px solid #0d5f93!important;
  box-shadow:inset 0 1px 0 rgba(255,255,255,.035)!important;
}
.dark-palette-frame .dashboard-command-v316 .command-kpi-card.ok{background:linear-gradient(135deg,#06382f 0%,#061d34 75%)!important;border-color:#0d9e70!important}
.dark-palette-frame .dashboard-command-v316 .command-kpi-card.danger{background:linear-gradient(135deg,#351328 0%,#071d34 75%)!important;border-color:#9c2946!important}
.dark-palette-frame .dashboard-command-v316 .command-kpi-card.msg{background:linear-gradient(135deg,#161943 0%,#071d34 76%)!important;border-color:#5746bd!important}
.dark-palette-frame .dashboard-command-v316 .pro-kpi-icon{
  width:54px!important;height:54px!important;min-width:54px!important;
  border-radius:50%!important;margin:0!important;padding:0!important;
  display:grid!important;place-items:center!important;color:#fff!important;
  font-size:23px!important;
  box-shadow:0 0 20px rgba(0,0,0,.18)!important;
}
.dark-palette-frame .dashboard-command-v316 .res .pro-kpi-icon{background:#0d80ff!important}.dark-palette-frame .dashboard-command-v316 .alert .pro-kpi-icon{background:#ff9800!important}.dark-palette-frame .dashboard-command-v316 .ok .pro-kpi-icon{background:#08c985!important}.dark-palette-frame .dashboard-command-v316 .danger .pro-kpi-icon{background:#ff234b!important}.dark-palette-frame .dashboard-command-v316 .msg .pro-kpi-icon{background:#6f42f5!important}
.dark-palette-frame .dashboard-command-v316 .pro-kpi-body{display:flex!important;flex-direction:column!important;align-items:flex-start!important;justify-content:center!important;min-width:0!important;text-align:left!important}
.dark-palette-frame .dashboard-command-v316 .pro-kpi-body span{font-size:11px!important;line-height:1.05!important;color:#d7e9f5!important;font-weight:650!important}
.dark-palette-frame .dashboard-command-v316 .pro-kpi-body b{font-size:28px!important;line-height:1!important;color:#fff!important;margin:4px 0 2px!important}
.dark-palette-frame .dashboard-command-v316 .pro-kpi-body small{font-size:8px!important;color:#9bb9ce!important;white-space:nowrap!important}
.dark-palette-frame .dashboard-command-v316 .command-kpi-chart{width:64px!important;height:54px!important;min-width:64px!important;align-self:end!important}

.dark-palette-frame .dashboard-command-v316 .command-dashboard-grid{
  display:grid!important;
  grid-template-columns:minmax(0,1.48fr) minmax(0,.78fr) minmax(330px,.92fr)!important;
  grid-template-areas:"plan plan side" "map activity side"!important;
  grid-template-rows:minmax(365px,1fr) 205px!important;
  gap:8px!important;
  min-height:0!important;
}
.dark-palette-frame .dashboard-command-v316 .pro-card{
  background:linear-gradient(180deg,#071f37 0%,#061a2f 100%)!important;
  border:1px solid #0d5a88!important;
  border-radius:8px!important;
  box-shadow:none!important;
}
.dark-palette-frame .dashboard-command-v316 .pro-card-head{min-height:36px!important;margin:0!important;padding:7px 9px!important;border-bottom:1px solid rgba(30,106,153,.35)!important}
.dark-palette-frame .dashboard-command-v316 .pro-card-head h3{font-size:14px!important;line-height:1.1!important;color:#f7fbff!important}.dark-palette-frame .dashboard-command-v316 .pro-card-head h3>i{color:#1ea7ff!important}.dark-palette-frame .dashboard-command-v316 .pro-card-head>a{font-size:9px!important;color:#21a9ff!important}

.dark-palette-frame .dashboard-command-v316 .command-floor-card{grid-area:plan!important;padding:0!important;overflow:hidden!important;min-height:0!important}
.dark-palette-frame .dashboard-command-v316 .command-floor-body{
  height:calc(100% - 36px)!important;
  min-height:0!important;
  display:grid!important;
  grid-template-columns:76px minmax(0,1fr)!important;
  gap:7px!important;
  padding:6px 8px 8px!important;
}
.dark-palette-frame .dashboard-command-v316 .command-floor-rail{
  min-width:0!important;min-height:0!important;display:flex!important;flex-direction:column!important;
  overflow:auto!important;border:1px solid #0f527d!important;border-radius:7px!important;background:#051a2f!important;
}
.dark-palette-frame .dashboard-command-v316 .command-floor-rail button{
  flex:1 0 31px!important;min-height:31px!important;border:0!important;border-bottom:1px solid #103e5d!important;
  background:#061c32!important;color:#b7d0e3!important;font-size:9px!important;cursor:pointer!important
}
.dark-palette-frame .dashboard-command-v316 .command-floor-rail button:last-child{border-bottom:0!important}.dark-palette-frame .dashboard-command-v316 .command-floor-rail button.active{background:#0d80ff!important;color:#fff!important;font-weight:800!important}.dark-palette-frame .dashboard-command-v316 .command-floor-rail button:hover{background:#0a3559!important}.dark-palette-frame .dashboard-command-v316 .command-floor-rail button.active:hover{background:#0d80ff!important}.dark-palette-frame .dashboard-command-v316 .command-floor-rail .rail-step{flex:0 0 27px!important;min-height:27px!important}
.dark-palette-frame .dashboard-command-v316 .command-plan-panel{
  min-width:0!important;min-height:0!important;display:grid!important;grid-template-rows:34px minmax(0,1fr) 29px!important;
  border:1px solid #0f527d!important;border-radius:7px!important;overflow:hidden!important;background:#041426!important
}
.dark-palette-frame .dashboard-command-v316 .command-plan-legend{display:flex!important;align-items:center!important;justify-content:center!important;gap:14px!important;overflow:auto!important;padding:4px 8px!important;background:#061d34!important;border-bottom:1px solid #10466b!important;white-space:nowrap!important}
.dark-palette-frame .dashboard-command-v316 .command-plan-legend span{font-size:8px!important;color:#d2e4f0!important;display:inline-flex!important;align-items:center!important;gap:4px!important}.dark-palette-frame .dashboard-command-v316 .command-plan-legend span>i{width:10px!important;height:10px!important;border-radius:50%!important;background:#657f98!important}.dark-palette-frame .dashboard-command-v316 .command-plan-legend .safe>i{background:#06d28c!important}.dark-palette-frame .dashboard-command-v316 .command-plan-legend .pending>i{background:#ff9f0a!important}.dark-palette-frame .dashboard-command-v316 .command-plan-legend .help>i{background:#ff244d!important}.dark-palette-frame .dashboard-command-v316 .command-plan-legend .neutral>i{background:#6d85a0!important}.dark-palette-frame .dashboard-command-v316 .command-plan-legend b{font-size:11px!important;color:#eaf6ff!important}
.dark-palette-frame .dashboard-command-v316 .command-floor-plan{width:100%!important;height:100%!important;min-height:0!important;border:0!important;border-radius:0!important;background:#041426!important;overflow:hidden!important}
.dark-palette-frame .dashboard-command-v316 .dashboard-operational-plan{background:#041426!important}.dark-palette-frame .dashboard-command-v316 .dashboard-operational-plan svg{width:100%!important;height:100%!important;padding:2px!important;box-sizing:border-box!important}
.dark-palette-frame .dashboard-command-v316 .db-plan-unit-label rect{fill:#08223b!important;fill-opacity:.94!important}.dark-palette-frame .dashboard-command-v316 .db-plan-unit-label text{font-size:22px!important}.dark-palette-frame .dashboard-command-v316 .db-plan-unit-label text.state{font-size:10px!important}
.dark-palette-frame .dashboard-command-v316 .command-plan-foot{display:grid!important;grid-template-columns:1fr auto auto!important;align-items:center!important;gap:8px!important;padding:3px 8px!important;background:#061d34!important;border-top:1px solid #10466b!important;color:#8fb2cc!important;font-size:8px!important}.dark-palette-frame .dashboard-command-v316 .command-plan-foot span:first-child{justify-self:end!important;color:#dcebf5!important}.dark-palette-frame .dashboard-command-v316 .command-plan-foot button{height:22px!important;padding:0 8px!important;border:1px solid #1d6b9e!important;border-radius:5px!important;background:#092946!important;color:#dcecf8!important;font-size:8px!important;cursor:pointer!important}
.dark-palette-frame .dashboard-command-v316 .command-floor-plan:fullscreen{background:#031426!important;padding:18px!important}.dark-palette-frame .dashboard-command-v316 .command-floor-plan:fullscreen .dashboard-operational-plan{border:1px solid #0d5a88!important;border-radius:10px!important}

.dark-palette-frame .dashboard-command-v316 .command-dashboard-side{grid-area:side!important;display:grid!important;grid-template-rows:minmax(175px,1.15fr) minmax(155px,1fr) auto!important;gap:8px!important;min-height:0!important}.dark-palette-frame .dashboard-command-v316 .command-dashboard-side>.pro-card{padding:0!important;min-height:0!important;overflow:hidden!important}
.dark-palette-frame .dashboard-command-v316 .command-incoming-card .pro-message-list{padding:7px!important;display:block!important;max-height:none!important;overflow:auto!important}.dark-palette-frame .dashboard-command-v316 .command-incoming-card .pro-message-list article{display:grid!important;grid-template-columns:42px minmax(0,1fr)!important;gap:8px!important;padding:8px!important;border:1px solid #14537e!important;border-radius:7px!important;background:#071a2f!important}.dark-palette-frame .dashboard-command-v316 .command-incoming-card .pro-message-list article:not(:first-child){display:none!important}.dark-palette-frame .dashboard-command-v316 .command-incoming-card .msg-avatar{width:42px!important;height:42px!important;display:grid!important;place-items:center!important;border-radius:50%!important;font-size:16px!important}.dark-palette-frame .dashboard-command-v316 .command-incoming-card .msg-title{display:grid!important;grid-template-columns:1fr auto!important;gap:4px!important;align-items:center!important}.dark-palette-frame .dashboard-command-v316 .command-incoming-card .msg-title b{font-size:11px!important}.dark-palette-frame .dashboard-command-v316 .command-incoming-card .msg-title time{grid-column:1!important;font-size:8px!important}.dark-palette-frame .dashboard-command-v316 .command-incoming-card .state-pill{grid-column:2!important;grid-row:1 / span 2!important;font-size:7px!important;padding:4px 6px!important}.dark-palette-frame .dashboard-command-v316 .command-incoming-card .pro-message-list p{margin:5px 0 0!important;padding:7px!important;border:1px solid #164f78!important;border-radius:6px!important;background:#082642!important;font-size:9px!important;line-height:1.35!important}.dark-palette-frame .dashboard-command-v316 .dashboard-assistance-hint{display:inline-flex!important;margin-top:5px!important;font-size:8px!important;color:#39b6ff!important}
.dark-palette-frame .dashboard-command-v316 .command-alert-list{padding:6px!important;overflow:auto!important}.dark-palette-frame .dashboard-command-v316 .command-alert-list article{display:grid!important;grid-template-columns:32px minmax(0,1fr) auto!important;align-items:center!important;gap:7px!important;min-height:42px!important;padding:6px 7px!important;border:0!important;border-bottom:1px solid #123f60!important;border-radius:0!important;background:transparent!important}.dark-palette-frame .dashboard-command-v316 .command-alert-list article>i{width:30px!important;height:30px!important;border-radius:50%!important;display:grid!important;place-items:center!important;background:#ff9f0a!important;color:#fff!important}.dark-palette-frame .dashboard-command-v316 .command-alert-list article.help>i{background:#ff244d!important}.dark-palette-frame .dashboard-command-v316 .command-alert-list b{font-size:9px!important}.dark-palette-frame .dashboard-command-v316 .command-alert-list small,.dark-palette-frame .dashboard-command-v316 .command-alert-list time{font-size:7.5px!important;color:#8fb2cc!important}
.dark-palette-frame .dashboard-command-v316 .command-operations-card{padding-bottom:7px!important}.dark-palette-frame .dashboard-command-v316 .command-operation-grid{display:grid!important;grid-template-columns:repeat(2,minmax(0,1fr))!important;gap:6px!important;padding:6px 7px 0!important}.dark-palette-frame .dashboard-command-v316 .command-operation-grid button{min-height:48px!important;padding:7px 8px!important;border-radius:7px!important;display:flex!important;align-items:center!important;justify-content:center!important;gap:8px!important}.dark-palette-frame .dashboard-command-v316 .command-operation-grid button>i{font-size:18px!important}.dark-palette-frame .dashboard-command-v316 .command-operation-grid button b{font-size:9px!important}.dark-palette-frame .dashboard-command-v316 .command-operation-grid button small{display:none!important}.dark-palette-frame .dashboard-command-v316 .command-operation-grid .normality{background:#075c47!important;border-color:#08d291!important}.dark-palette-frame .dashboard-command-v316 .command-operation-grid .update{background:#073d74!important;border-color:#0d80ff!important}.dark-palette-frame .dashboard-command-v316 .command-operation-grid .drill{background:#0b2d4d!important;border-color:#35698e!important;color:#ddecf6!important}.dark-palette-frame .dashboard-command-v316 .command-operation-grid .emergency{background:#4a1022!important;border-color:#ff244d!important;color:#ffe8ee!important}

.dark-palette-frame .dashboard-command-v316 .command-map-card{grid-area:map!important;padding:0!important;overflow:hidden!important}.dark-palette-frame .dashboard-command-v316 .command-map-card .dashboard-map{height:146px!important;min-height:146px!important;margin:5px 7px 0!important;width:calc(100% - 14px)!important;border:1px solid #155a88!important;border-radius:7px!important;overflow:hidden!important}.dark-palette-frame .dashboard-command-v316 .dashboard-map iframe{filter:saturate(.72) brightness(.72) contrast(1.16) hue-rotate(172deg)!important}.dark-palette-frame .dashboard-command-v316 .dashboard-map-legend{position:absolute!important;right:13px!important;bottom:28px!important;display:grid!important;gap:3px!important;padding:6px 7px!important;border:1px solid #194d70!important;border-radius:6px!important;background:rgba(4,20,38,.92)!important;font-size:7px!important}.dark-palette-frame .dashboard-command-v316 .command-map-card{position:relative!important}.dark-palette-frame .dashboard-command-v316 .dashboard-map-legend span{display:flex!important;align-items:center!important;gap:4px!important;color:#d9e9f3!important}.dark-palette-frame .dashboard-command-v316 .dashboard-map-legend i{width:8px!important;height:8px!important;border-radius:50%!important}.dark-palette-frame .dashboard-command-v316 .dashboard-map-legend i.safe{background:#06d28c!important}.dark-palette-frame .dashboard-command-v316 .dashboard-map-legend i.pending{background:#ff9f0a!important}.dark-palette-frame .dashboard-command-v316 .dashboard-map-legend i.help{background:#ff244d!important}.dark-palette-frame .dashboard-command-v316 .dashboard-map-legend i.evacuating{background:#0d80ff!important}
.dark-palette-frame .dashboard-command-v316 .command-activity-card{grid-area:activity!important;padding:0!important;overflow:hidden!important}.dark-palette-frame .dashboard-command-v316 .command-activity-list{padding:4px 7px!important;overflow:auto!important}.dark-palette-frame .dashboard-command-v316 .command-activity-list article{display:grid!important;grid-template-columns:35px 28px minmax(0,1fr)!important;align-items:center!important;gap:5px!important;min-height:30px!important;padding:3px 0!important;border:0!important;border-bottom:1px solid #123f60!important;border-radius:0!important;background:transparent!important}.dark-palette-frame .dashboard-command-v316 .command-activity-list time{font-size:8px!important;color:#9dbbd1!important}.dark-palette-frame .dashboard-command-v316 .command-activity-list article>i{width:24px!important;height:24px!important;border-radius:50%!important;display:grid!important;place-items:center!important;background:#08c985!important;color:#fff!important;font-size:10px!important}.dark-palette-frame .dashboard-command-v316 .command-activity-list article.help>i{background:#ff244d!important}.dark-palette-frame .dashboard-command-v316 .command-activity-list b{font-size:8.5px!important}.dark-palette-frame .dashboard-command-v316 .command-activity-list small{font-size:7.5px!important}

.dark-palette-frame .dashboard-command-v316 .pro-empty{margin:7px!important;padding:14px!important;background:#06182c!important;border:1px dashed #225678!important;color:#8fb2cc!important}

@media(min-width:1280px) and (min-height:740px){
  .dark-palette-frame .dashboard-command-v316 .command-dashboard-grid{grid-template-rows:calc(100vh - 365px) 205px!important}
  .dark-palette-frame .dashboard-command-v316 .command-floor-card{min-height:365px!important}
}
@media(max-width:1180px){
  .dark-palette-frame .dashboard-command-v316 .command-dashboard-grid{grid-template-columns:1fr 1fr!important;grid-template-areas:"plan plan" "map activity" "side side"!important;grid-template-rows:430px 220px auto!important}
  .dark-palette-frame .dashboard-command-v316 .command-dashboard-side{grid-template-columns:1fr 1fr!important;grid-template-rows:auto!important}.dark-palette-frame .dashboard-command-v316 .command-operations-card{grid-column:1/-1!important}
}
@media(max-width:760px){
  .dark-palette-frame .frame-page{padding:5px!important}.dark-palette-frame .dashboard-command-v316 .pro-kpi-grid{grid-template-columns:repeat(2,minmax(0,1fr))!important}.dark-palette-frame .dashboard-command-v316 .command-kpi-card{grid-template-columns:42px 1fr!important;height:82px!important;min-height:82px!important}.dark-palette-frame .dashboard-command-v316 .command-kpi-chart{display:none!important}.dark-palette-frame .dashboard-command-v316 .pro-kpi-icon{width:42px!important;height:42px!important;min-width:42px!important;font-size:18px!important}.dark-palette-frame .dashboard-command-v316 .pro-kpi-body b{font-size:22px!important}.dark-palette-frame .dashboard-command-v316 .command-dashboard-grid{display:flex!important;flex-direction:column!important}.dark-palette-frame .dashboard-command-v316 .command-floor-card{height:420px!important}.dark-palette-frame .dashboard-command-v316 .command-floor-body{grid-template-columns:58px minmax(0,1fr)!important}.dark-palette-frame .dashboard-command-v316 .command-plan-legend{justify-content:flex-start!important}.dark-palette-frame .dashboard-command-v316 .command-dashboard-side{display:flex!important;flex-direction:column!important}.dark-palette-frame .dashboard-command-v316 .command-map-card .dashboard-map{height:220px!important;min-height:220px!important}
}

/* RC3.18.0 · Configurador de branding legible + logos independientes */
.brand-editor-head p{margin:5px 0 0;color:#6b7f92;font-size:12px}.brand-editor-form{display:flex;flex-direction:column;gap:16px}.brand-config-section{border:1px solid #d5e2ec;border-radius:12px;background:#f8fbfd;padding:14px}.dark-palette-frame .brand-config-section{border-color:#25506f;background:#0b2339}.brand-config-title{display:flex;align-items:center;gap:10px;margin-bottom:12px}.brand-config-title>i{width:38px;height:38px;border-radius:10px;display:grid;place-items:center;background:#e8f3ff;color:#0879e5;font-size:18px}.dark-palette-frame .brand-config-title>i{background:#103b5d;color:#45b8ff}.brand-config-title b{display:block;font-size:14px;color:#153148}.brand-config-title span{display:block;margin-top:2px;font-size:11px;color:#6d8191}.dark-palette-frame .brand-config-title b{color:#f2f8fd}.dark-palette-frame .brand-config-title span{color:#9bb6c9}
.brand-editor-form .field label{color:#243d50!important;font-weight:700!important}.brand-editor-form .field small{color:#6c8293!important}.dark-palette-frame .brand-editor-form .field label{color:#d8eaf6!important}.dark-palette-frame .brand-editor-form .field small{color:#91afc4!important}.brand-editor-form input:not([type=color]):not([type=file]),.brand-editor-form select{background:#fff!important;color:#173247!important;border:1px solid #bfd0de!important}.dark-palette-frame .brand-editor-form input:not([type=color]):not([type=file]),.dark-palette-frame .brand-editor-form select{background:#f8fbfd!important;color:#173247!important;border-color:#9cb4c6!important}
.color-field{display:grid;grid-template-columns:64px 1fr;align-items:center;gap:9px}.color-field input[type=color]{width:64px!important;height:42px!important;padding:4px!important;border:1px solid #b9cbd8!important;border-radius:8px!important;background:#fff!important;cursor:pointer!important}.color-field output{display:flex;align-items:center;height:40px;padding:0 11px;border:1px solid #ccd9e3;border-radius:8px;background:#fff;color:#2b4559;font:700 12px/1 ui-monospace,SFMono-Regular,Menlo,monospace}.dark-palette-frame .color-field output{background:#f7fafc;color:#173247}
.brand-logo-upload{display:grid;grid-template-columns:120px minmax(0,1fr);gap:12px;align-items:center}.brand-logo-file-preview{width:120px;height:72px;border:1px dashed #9cb7ca;border-radius:10px;background:#fff;display:grid;place-items:center;overflow:hidden}.brand-logo-file-preview.mobile{height:90px}.brand-logo-file-preview img{max-width:100%;max-height:100%;object-fit:contain}.brand-logo-upload input[type=file]{width:100%;color:#425f75}.dark-palette-frame .brand-logo-upload input[type=file]{color:#d4e5f1}
.brand-preview-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px}.brand-preview-grid>div>label{display:block;margin-bottom:6px;font-size:12px;font-weight:800;color:#324e62}.dark-palette-frame .brand-preview-grid>div>label{color:#dcebf5}.brand-header-preview{min-height:76px;border:1px solid #b9cfde;border-radius:11px;padding:10px;display:flex;align-items:center;gap:10px;overflow:hidden}.brand-preview-logo{display:grid;place-items:center;overflow:hidden;min-width:30px}.brand-preview-logo img,#brandMobileLogo img{max-width:100%;max-height:100%;object-fit:contain}.brand-header-preview strong,.brand-header-preview span{display:block}.brand-mobile-preview{border:1px solid #b9cfde;border-radius:11px;overflow:hidden;display:flex;flex-direction:column;justify-content:space-between;min-height:140px}.mobile-preview-brand{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;padding:8px}.mobile-preview-brand #brandMobileLogo{display:grid;place-items:center;overflow:hidden}.brand-mobile-preview #brandMobileControls{display:flex;justify-content:center;gap:14px;padding:9px;border-top:1px solid rgba(80,110,130,.18);color:#18364c}.brand-editor-actions{position:sticky;bottom:-1px;z-index:4;background:inherit;padding-top:10px}
@media(max-width:700px){.brand-preview-grid{grid-template-columns:1fr}.brand-logo-upload{grid-template-columns:1fr}.brand-logo-file-preview{width:100%;height:84px}}


/* RC3.20.0 - Login branding independiente */
:root{--login-bg:#07111d;--login-overlay:#020617;--login-card-bg:#fff;--login-text:#0f172a;--login-muted:#64748b;--login-btn:#0f766e;--login-btn-text:#fff;--login-radius:22px;--login-logo-size:74px;--login-bg-image:none}
.auth-page{position:relative;isolation:isolate;min-height:100vh;background:var(--login-bg);background-image:linear-gradient(135deg,color-mix(in srgb,var(--login-overlay) 82%,transparent),color-mix(in srgb,var(--login-bg) 42%,transparent)),var(--login-bg-image);background-size:cover;background-position:center;display:grid;place-items:center;padding:24px;overflow:hidden}
.auth-page::before,.auth-page::after{content:"";position:fixed;z-index:-1;border-radius:999px;filter:blur(90px);pointer-events:none}.auth-page::before{width:38vw;height:38vw;left:-12vw;top:-10vw;background:color-mix(in srgb,var(--login-btn) 35%,transparent)}.auth-page::after{width:34vw;height:34vw;right:-10vw;bottom:-12vw;background:rgba(37,99,235,.18)}
.auth-backdrop{position:fixed;inset:0;z-index:-2;background:linear-gradient(90deg,rgba(2,6,23,.18),rgba(2,6,23,.52));backdrop-filter:saturate(1.08)}
.auth-card{width:min(470px,100%);color:var(--login-text);background:color-mix(in srgb,var(--login-card-bg) 94%,transparent);border:1px solid color-mix(in srgb,#fff 52%,var(--login-btn));border-radius:var(--login-radius);padding:34px;box-shadow:0 34px 100px rgba(0,0,0,.42),inset 0 1px rgba(255,255,255,.72);backdrop-filter:blur(18px) saturate(1.18)}
.auth-brand{display:flex;align-items:center;gap:16px;padding-bottom:20px;border-bottom:1px solid color-mix(in srgb,var(--login-text) 10%,transparent)}
.auth-logo-wrap{width:var(--login-logo-size);height:var(--login-logo-size);flex:0 0 var(--login-logo-size);border-radius:18px;display:grid;place-items:center;background:rgba(255,255,255,.9);box-shadow:0 10px 28px rgba(0,0,0,.12),inset 0 0 0 1px rgba(15,23,42,.08);overflow:hidden}.auth-logo-wrap img{width:100%;height:100%;object-fit:contain;padding:7px;box-sizing:border-box}.auth-brand-copy{min-width:0}.auth-brand-copy b{display:block;font-size:16px;line-height:1.2}.auth-brand-copy .muted{color:var(--login-muted);margin-top:4px}
.auth-welcome{padding:22px 0 6px}.auth-eyebrow{display:inline-block;color:var(--login-btn);font-size:10px;font-weight:900;letter-spacing:.14em}.auth-card h1{color:var(--login-text);margin:8px 0 6px;font-size:30px;line-height:1.05}.auth-card p{color:var(--login-muted);margin:0;line-height:1.45}
.auth-page .field{margin:15px 0}.auth-page .field label{color:var(--login-text);font-size:12px}.auth-page .field input{height:46px;border:1px solid color-mix(in srgb,var(--login-text) 18%,transparent);background:color-mix(in srgb,var(--login-card-bg) 88%,#eef6ff);color:var(--login-text);box-shadow:inset 0 1px 2px rgba(15,23,42,.05);outline:none}.auth-page .field input:focus{border-color:var(--login-btn);box-shadow:0 0 0 4px color-mix(in srgb,var(--login-btn) 16%,transparent)}
.auth-submit{min-height:48px;margin-top:8px;background:linear-gradient(135deg,color-mix(in srgb,var(--login-btn) 84%,white),var(--login-btn));color:var(--login-btn-text);display:flex;align-items:center;justify-content:center;gap:10px;box-shadow:0 10px 24px color-mix(in srgb,var(--login-btn) 28%,transparent);transition:transform .15s ease,filter .15s ease}.auth-submit:hover{transform:translateY(-1px);filter:brightness(1.05)}.auth-submit:disabled{opacity:.65;cursor:wait;transform:none}.auth-links{margin-top:18px}.auth-links a{color:var(--login-btn);font-weight:700;text-decoration:none}.auth-links a:hover{text-decoration:underline}
@media(max-width:600px){.auth-page{padding:16px}.auth-card{padding:24px 20px}.auth-logo-wrap{border-radius:14px}.auth-card h1{font-size:26px}}

/* RC3.20.0 branding editor login preview */
.brand-preview-grid-3{grid-template-columns:repeat(3,minmax(0,1fr))}.brand-login-preview{position:relative;min-height:220px;border:1px solid #dbe3ea;border-radius:16px;display:grid;place-items:center;padding:16px;background-size:cover!important;background-position:center!important;overflow:hidden}.brand-login-preview::before{content:"";position:absolute;inset:0;background:color-mix(in srgb,var(--login-preview-overlay,#020617) 54%,transparent)}.brand-login-preview-card{position:relative;width:min(250px,90%);padding:18px;background:#fff;border:1px solid rgba(255,255,255,.55);box-shadow:0 18px 42px rgba(0,0,0,.25);display:flex;flex-direction:column;align-items:flex-start;gap:7px}.brand-login-preview-card img{width:64px;height:64px;object-fit:contain;background:#fff;border-radius:12px;padding:4px}.brand-login-preview-card b{font-size:15px}.brand-login-preview-card span{font-size:9px;line-height:1.3}.brand-login-preview-card>div{width:100%;padding:8px;border-radius:8px;text-align:center;font-size:10px;font-weight:800}.brand-login-bg-upload{display:grid;gap:9px}.login-bg-preview,.login-bg-placeholder{width:100%;height:130px;object-fit:cover;border-radius:12px;border:1px solid #dbe3ea}.login-bg-placeholder{display:grid;place-items:center;align-content:center;gap:6px;color:#64748b;background:#f8fafc}.login-bg-placeholder i{font-size:24px}.login-bg-placeholder span{font-size:10px}@media(max-width:1100px){.brand-preview-grid-3{grid-template-columns:1fr}}

/* ============================================================================
   RC3.22.0 · BLOQUEO DE GEOMETRÍA DEL DASHBOARD
   Elimina definitivamente reglas antiguas dependientes de 100vh que empujaban
   Mapa de residentes / Actividad reciente hacia abajo durante los refrescos.
   ============================================================================ */
@media (min-width:1181px){
  .dashboard-command-real.dashboard-command-v316 .command-dashboard-grid,
  .dark-palette-frame .dashboard-command-real.dashboard-command-v316 .command-dashboard-grid{
    display:grid!important;
    grid-template-columns:minmax(0,1.2fr) minmax(0,.88fr) minmax(310px,.72fr)!important;
    grid-template-areas:"plan plan side" "map activity side"!important;
    grid-template-rows:455px 222px!important;
    height:687px!important;
    min-height:687px!important;
    max-height:687px!important;
    align-content:start!important;
    align-items:stretch!important;
    overflow:hidden!important;
  }
  .dashboard-command-real.dashboard-command-v316 .command-floor-card,
  .dark-palette-frame .dashboard-command-real.dashboard-command-v316 .command-floor-card{
    grid-area:plan!important;height:455px!important;min-height:455px!important;max-height:455px!important;align-self:start!important;overflow:hidden!important;
  }
  .dashboard-command-real.dashboard-command-v316 .command-map-card,
  .dark-palette-frame .dashboard-command-real.dashboard-command-v316 .command-map-card{
    grid-area:map!important;height:222px!important;min-height:222px!important;max-height:222px!important;align-self:stretch!important;overflow:hidden!important;margin:0!important;
  }
  .dashboard-command-real.dashboard-command-v316 .command-activity-card,
  .dark-palette-frame .dashboard-command-real.dashboard-command-v316 .command-activity-card{
    grid-area:activity!important;height:222px!important;min-height:222px!important;max-height:222px!important;align-self:stretch!important;overflow:hidden!important;margin:0!important;
  }
  .dashboard-command-real.dashboard-command-v316 .command-dashboard-side,
  .dark-palette-frame .dashboard-command-real.dashboard-command-v316 .command-dashboard-side{
    grid-area:side!important;height:687px!important;min-height:687px!important;max-height:687px!important;align-self:start!important;overflow:hidden!important;
  }
  .dashboard-command-real.dashboard-command-v316 .command-map-card .dashboard-map,
  .dark-palette-frame .dashboard-command-real.dashboard-command-v316 .command-map-card .dashboard-map{
    height:168px!important;min-height:168px!important;max-height:168px!important;
  }
  .dashboard-command-real.dashboard-command-v316 .command-activity-list,
  .dark-palette-frame .dashboard-command-real.dashboard-command-v316 .command-activity-list{
    height:180px!important;min-height:0!important;max-height:180px!important;overflow:auto!important;
  }
}
/* El SVG jamás altera el alto del grid. */
.dashboard-command-real.dashboard-command-v316 .command-floor-plan{overflow:hidden!important;contain:size layout paint!important}
.dashboard-command-real.dashboard-command-v316 .dashboard-operational-plan,
.dashboard-command-real.dashboard-command-v316 .dashboard-operational-plan svg{position:absolute!important;inset:0!important;width:100%!important;height:100%!important;max-width:100%!important;max-height:100%!important;display:block!important}


/* ==============================================================
   RC3.23.0 - Emergencia activa: mismo ritmo visual del Dashboard
   + mapa estable + logos por dispositivo/vista
   ============================================================== */
@media (min-width:1001px){
  body:has(.command-emergency-banner) .command-main-grid{
    display:grid!important;
    grid-template-columns:minmax(0,1fr) minmax(330px,.32fr)!important;
    grid-template-rows:455px 222px!important;
    gap:10px!important;
    align-items:stretch!important;
  }
  body:has(.command-emergency-banner) .command-plan-column{grid-column:1!important;grid-row:1!important;min-height:0!important}
  body:has(.command-emergency-banner) .command-plan-card{height:455px!important;min-height:455px!important;max-height:455px!important;display:flex!important;flex-direction:column!important}
  body:has(.command-emergency-banner) .command-plan-head{flex:0 0 65px!important;min-height:65px!important;box-sizing:border-box!important}
  body:has(.command-emergency-banner) .command-plan-canvas{flex:1 1 auto!important;height:390px!important;min-height:0!important;max-height:390px!important;padding:8px!important;overflow:hidden!important;display:grid!important;place-items:center!important}
  body:has(.command-emergency-banner) .command-plan-canvas .em-fp3-shell{width:100%!important;height:100%!important;max-height:100%!important;aspect-ratio:auto!important;overflow:hidden!important;background:transparent!important;display:grid!important;place-items:center!important}
  body:has(.command-emergency-banner) .command-plan-canvas .em-fp3-svg{width:100%!important;height:100%!important;max-width:100%!important;max-height:100%!important;display:block!important}
  body:has(.command-emergency-banner) .command-main-grid>.command-side-panel{grid-column:2!important;grid-row:1 / span 2!important;min-height:0!important;overflow:hidden!important}
  body:has(.command-emergency-banner) .command-main-grid>.nearby-map-card{grid-column:1!important;grid-row:2!important;height:222px!important;min-height:222px!important;max-height:222px!important;margin:0!important;padding:8px!important;overflow:hidden!important}
  body:has(.command-emergency-banner) .nearby-map-card .residents-final-head{height:34px!important;min-height:34px!important;margin:0!important}
  body:has(.command-emergency-banner) .nearby-filter-bar{height:36px!important;min-height:36px!important;padding:3px 0 5px!important;overflow-x:auto!important}
  body:has(.command-emergency-banner) .nearby-filter{min-height:28px!important;height:28px!important;padding:3px 8px!important}
  body:has(.command-emergency-banner) .nearby-map{height:132px!important;min-height:132px!important;max-height:132px!important;border-radius:8px!important;overflow:hidden!important;background:#e9eef4!important}
  body:has(.command-emergency-banner) #nearbyEmergencyHost>.small{display:none!important}
}
@media (max-width:1000px){
  body:has(.command-emergency-banner) .command-plan-card{height:auto!important;max-height:none!important}
  body:has(.command-emergency-banner) .command-plan-canvas{height:clamp(300px,48dvh,430px)!important;max-height:430px!important;display:grid!important;place-items:center!important}
  body:has(.command-emergency-banner) .command-plan-canvas .em-fp3-shell{height:100%!important;max-height:100%!important;aspect-ratio:auto!important;display:grid!important;place-items:center!important;overflow:hidden!important}
  body:has(.command-emergency-banner) .command-plan-canvas .em-fp3-svg{width:100%!important;height:100%!important;max-height:100%!important}
  body:has(.command-emergency-banner) .nearby-map{height:240px!important;min-height:240px!important}
}
/* Leaflet no debe heredar alturas calculadas de otros módulos. */
#nearbyEmergencyMap.leaflet-container{width:100%!important;position:relative!important;z-index:0!important}

.brand-logo-dual{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;width:100%}
.brand-logo-dual .brand-logo-upload{height:100%}
@media(max-width:700px){.brand-logo-dual{grid-template-columns:1fr}}
.shell-brand-logo{background:var(--brand-logo-bg)!important;transition:background .18s ease,border-color .18s ease}
.shell-brand-logo img{width:100%!important;height:100%!important;object-fit:contain!important;display:block!important}


/* RC3.24.0 - Configuración: modales siempre claros y legibles */
.config-modal-light .modal-backdrop-global{background:rgba(15,23,42,.58)!important;backdrop-filter:blur(3px)!important}
.config-modal-light .modal-box-global{background:#ffffff!important;color:#0f172a!important;border:1px solid #d9e3ec!important;box-shadow:0 28px 90px rgba(2,12,27,.28)!important}
.config-modal-light .modal-head,.config-modal-light .brand-editor-head{background:#ffffff!important;color:#0f172a!important}
.config-modal-light .modal-head h2,.config-modal-light .brand-editor-head h2{color:#102a43!important}
.config-modal-light .modal-head p,.config-modal-light .brand-editor-head p,.config-modal-light .small,.config-modal-light .muted{color:#64748b!important}
.config-modal-light .brand-config-section{background:#f7fafc!important;border-color:#d7e2ea!important;color:#173247!important}
.config-modal-light .brand-config-title>i{background:#e8f3ff!important;color:#0879e5!important}
.config-modal-light .brand-config-title b{color:#153148!important}.config-modal-light .brand-config-title span{color:#6d8191!important}
.config-modal-light .field label,.config-modal-light label{color:#243d50!important}.config-modal-light .field small{color:#6c8293!important}
.config-modal-light input:not([type=checkbox]):not([type=radio]):not([type=color]),.config-modal-light select,.config-modal-light textarea{background:#fff!important;color:#173247!important;border-color:#bfd0de!important;box-shadow:none!important}
.config-modal-light input[type=color]{background:#fff!important;border-color:#b9cbd8!important}
.config-modal-light .color-field output{background:#fff!important;color:#173247!important;border-color:#ccd9e3!important}
.config-modal-light .brand-logo-file-preview,.config-modal-light .brand-login-bg-upload,.config-modal-light .brand-header-preview,.config-modal-light .brand-mobile-preview{background:#fff!important;border-color:#b9cfde!important}
.config-modal-light .brand-logo-upload input[type=file]{color:#425f75!important}
.config-modal-light .modal-actions,.config-modal-light .brand-editor-actions{background:#fff!important;border-top:1px solid #e7eef4!important}
.config-modal-light .btn.btn-soft{background:#f4f7fb!important;color:#173247!important;border-color:#cbd8e2!important}
.config-modal-light .btn.btn-primary{color:#fff!important}
/* El logo móvil respeta su fondo configurado también en Comando. */
@media(max-width:760px){.shell-brand-logo{background:var(--brand-logo-bg,#fff)!important}.shell-brand-logo img{background:transparent!important;padding:2px!important}}


/* ==========================================================
   RC3.25.4 - Paleta operacional canónica, única en todo el portal
   Evacuando = Azul | A salvo = Verde | Fuera de la zona = Morado | Necesito ayuda = Rojo
   ========================================================== */
:root{
  --state-evacuating:#2563eb!important;
  --state-safe:#16a34a!important;
  --state-outside:#7c3aed!important;
  --state-help:#dc2626!important;
}
.matrix-unit.evacuating,.floor-unit.evacuating,.db-status-chip.evacuating{background-color:#2563eb!important;border-color:#2563eb!important}
.matrix-unit.safe,.floor-unit.safe,.db-status-chip.safe{background-color:#16a34a!important;border-color:#16a34a!important}
.matrix-unit.outside,.floor-unit.outside,.db-status-chip.outside{background-color:#7c3aed!important;border-color:#7c3aed!important}
.matrix-unit.help,.floor-unit.help,.db-status-chip.help{background-color:#dc2626!important;border-color:#dc2626!important}
.occupant-marker.EVACUATING{border-color:#2563eb!important}
.occupant-marker.OK,.occupant-marker.EVACUATED{border-color:#16a34a!important}
.occupant-marker.OUTSIDE{border-color:#7c3aed!important}
.occupant-marker.NEED_HELP{border-color:#dc2626!important}
.dashboard-state-legend-v2119 i.evacuating,.dashboard-map-legend i.evacuating{background:#2563eb!important}
.dashboard-state-legend-v2119 i.safe,.dashboard-map-legend i.safe{background:#16a34a!important}
.dashboard-state-legend-v2119 i.outside,.dashboard-map-legend i.outside{background:#7c3aed!important}
.dashboard-state-legend-v2119 i.help,.dashboard-map-legend i.help{background:#dc2626!important}
.map-resident.evacuating{background:#2563eb!important}.map-resident.safe{background:#16a34a!important}.map-resident.outside{background:#7c3aed!important}.map-resident.help{background:#dc2626!important}
.db-occupant-row.evacuating{border-left-color:#2563eb!important}.db-occupant-row.safe{border-left-color:#16a34a!important}.db-occupant-row.outside{border-left-color:#7c3aed!important}.db-occupant-row.help{border-left-color:#dc2626!important}

/* RC3.25.5 resident unenrolled screen is styled in residente.css; keep app.css neutral. */

/* ==========================================================
   RC3.25.6 - consultas de emergencia en modal
   ========================================================== */
@media(min-width:1001px){
 body:has(.command-emergency-banner) .command-main-grid{grid-template-rows:455px!important;height:455px!important;min-height:455px!important;max-height:455px!important}
 body:has(.command-emergency-banner) .command-main-grid>.command-side-panel{grid-row:1!important;height:455px!important;max-height:455px!important}
}
.command-actions-card .command-action-grid{grid-template-columns:repeat(2,minmax(0,1fr))!important}
.command-nearby{background:linear-gradient(135deg,#1367a8,#084876)!important;border-color:#2a8bd1!important;color:#fff!important}.command-people{background:linear-gradient(135deg,#6d43c4,#45217f)!important;border-color:#8f69df!important;color:#fff!important}
.emergency-lookup-modal{position:fixed;inset:0;z-index:99998;display:grid;place-items:center;padding:18px}.emergency-lookup-backdrop{position:absolute;inset:0;background:rgba(0,12,25,.72);backdrop-filter:blur(5px)}
.emergency-lookup-dialog{position:relative;z-index:1;width:min(1120px,96vw);max-height:92vh;display:flex;flex-direction:column;background:#f7fafc;color:#102a43;border:1px solid #b7cad9;border-radius:16px;overflow:hidden;box-shadow:0 30px 100px rgba(0,0,0,.4)}
.emergency-lookup-dialog>header{display:flex;align-items:flex-start;justify-content:space-between;gap:20px;padding:16px 18px;background:#fff;border-bottom:1px solid #dce6ee}.emergency-lookup-dialog>header small{font-size:9px;font-weight:800;color:#1680d8;letter-spacing:.08em}.emergency-lookup-dialog>header h2{margin:3px 0 2px;font-size:21px;color:#102a43}.emergency-lookup-dialog>header p{margin:0;font-size:11px;color:#718395}.emergency-lookup-dialog>header>button{width:38px;height:38px;border:0;border-radius:9px;background:#0b3555;color:#fff;font-size:24px;cursor:pointer}.emergency-lookup-body{padding:14px;overflow:auto;min-height:0}
.emergency-nearby-dialog #nearbyEmergencyHost{min-height:540px}.emergency-nearby-dialog .nearby-filter-bar{padding-top:0}.emergency-nearby-dialog .nearby-map{height:470px!important;min-height:470px!important;max-height:470px!important;background:#e9eef4!important}
.emergency-people-consult-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.emergency-person-consult{display:grid;grid-template-columns:52px minmax(0,1fr) auto;align-items:center;gap:12px;padding:11px;border:1px solid #d6e2eb;border-left:5px solid #94a3b8;border-radius:11px;background:#fff}.emergency-person-consult.state-evacuating{border-left-color:#2563eb}.emergency-person-consult.state-ok,.emergency-person-consult.state-evacuated{border-left-color:#16a34a}.emergency-person-consult.state-outside{border-left-color:#7c3aed}.emergency-person-consult.state-need-help{border-left-color:#dc2626}.emergency-person-avatar{width:48px;height:48px;border-radius:50%;overflow:hidden;background:#e8eff5;display:grid;place-items:center;font-weight:800}.emergency-person-avatar img{width:100%;height:100%;object-fit:cover}.emergency-person-info h3{margin:0;font-size:13px;color:#102a43}.emergency-person-info p{margin:2px 0 5px;font-size:10px;color:#718395}.emergency-person-info b{font-size:10px;color:#29485f}.emergency-person-actions{display:flex;gap:6px}.emergency-person-actions a,.emergency-person-actions button{width:34px;height:34px;border:1px solid #bcd0df;border-radius:8px;background:#f7fbfe;color:#0a669f;display:grid;place-items:center;cursor:pointer;text-decoration:none}
@media(max-width:760px){.emergency-lookup-modal{padding:6px}.emergency-lookup-dialog{width:100%;max-height:96vh;border-radius:12px}.emergency-nearby-dialog #nearbyEmergencyHost{min-height:430px}.emergency-nearby-dialog .nearby-map{height:350px!important;min-height:350px!important;max-height:350px!important}.emergency-people-consult-grid{grid-template-columns:1fr}.emergency-person-consult{grid-template-columns:46px minmax(0,1fr)}.emergency-person-actions{grid-column:2}.command-actions-card .command-action-grid{grid-template-columns:1fr 1fr!important}}

/* ==========================================================
   RC3.26.4 - DASHBOARD DESKTOP FIX EN APP.CSS (SOURCE OF TRUTH)
   Corrige la regla legacy de Comando que dejaba 5 KPI y omitía
   Edificio · Pisos x deptos del grid de escritorio.
   ========================================================== */
@media (min-width:761px){
  .dark-palette-frame .dashboard-command-v316 .pro-kpi-grid,
  .dashboard-command-v316 .pro-kpi-grid{
    display:grid!important;
    grid-template-columns:repeat(6,minmax(0,1fr))!important;
    grid-auto-flow:row!important;
    gap:8px!important;
    width:100%!important;
    height:112px!important;
    min-height:112px!important;
    max-height:112px!important;
    overflow:hidden!important;
  }
  .dark-palette-frame .dashboard-command-v316 .command-dashboard-grid,
  .dashboard-command-v316 .command-dashboard-grid{
    display:grid!important;
    grid-template-columns:minmax(0,1.48fr) minmax(270px,.56fr) minmax(300px,.68fr)!important;
    grid-template-areas:"plan building side" "map activity side"!important;
    grid-template-rows:455px 222px!important;
    gap:10px!important;
    height:687px!important;
    min-height:687px!important;
    max-height:687px!important;
    overflow:hidden!important;
    align-content:start!important;
  }
  .dark-palette-frame .dashboard-command-v316 .command-floor-card,
  .dashboard-command-v316 .command-floor-card{grid-area:plan!important;min-width:0!important;height:455px!important}
  .dark-palette-frame .dashboard-command-v316 .command-building-card,
  .dashboard-command-v316 .command-building-card{
    grid-area:building!important;display:flex!important;flex-direction:column!important;
    visibility:visible!important;opacity:1!important;min-width:0!important;width:auto!important;
    height:455px!important;min-height:455px!important;max-height:455px!important;overflow:hidden!important
  }
  .dark-palette-frame .dashboard-command-v316 .command-building-panel,
  .dashboard-command-v316 .command-building-panel{
    display:flex!important;flex-direction:column!important;flex:1 1 auto!important;
    min-height:0!important;height:auto!important;max-height:none!important;overflow:hidden!important
  }
  .dark-palette-frame .dashboard-command-v316 .building-state-matrix,
  .dashboard-command-v316 .building-state-matrix{display:block!important;flex:1 1 auto!important;min-height:0!important;overflow:auto!important}
  .dark-palette-frame .dashboard-command-v316 .command-dashboard-side,
  .dashboard-command-v316 .command-dashboard-side{grid-area:side!important;height:687px!important;min-height:687px!important;max-height:687px!important;overflow:hidden!important}
  .dark-palette-frame .dashboard-command-v316 .command-map-card,
  .dashboard-command-v316 .command-map-card{grid-area:map!important;height:222px!important}
  .dark-palette-frame .dashboard-command-v316 .command-activity-card,
  .dashboard-command-v316 .command-activity-card{grid-area:activity!important;height:222px!important}
}

/* RC3.26.8 defensive desktop class. Final authority remains dashboard-command-RC3268.css */
.dashboard-command-v316.layout-desktop-real .pro-kpi-grid{grid-template-columns:repeat(6,minmax(0,1fr))!important}
.dashboard-command-v316.layout-desktop-real .command-building-card{display:flex!important;visibility:visible!important;opacity:1!important}

/* ==========================================================
   RC3.27.0 - Modal claro para despacho de alertas
   ========================================================== */
.emergency-dispatch-modal-light .modal-backdrop-global{background:rgba(2,12,27,.72)!important;backdrop-filter:blur(4px)!important}
.emergency-dispatch-modal-light .modal-box-global{background:#ffffff!important;color:#0f172a!important;border:1px solid #d7e2ec!important;box-shadow:0 28px 90px rgba(2,12,27,.38)!important}
.emergency-dispatch-modal-light .modal-head{background:#ffffff!important;color:#0f172a!important;border-bottom:1px solid #e7eef5!important;padding-bottom:12px!important}
.emergency-dispatch-modal-light .modal-head h2{color:#0f172a!important}.emergency-dispatch-modal-light .modal-head .small,.emergency-dispatch-modal-light .modal-head .muted{color:#64748b!important}
.emergency-dispatch-modal-light .modal-head .btn-soft{background:#0b3554!important;color:#fff!important;border-color:#0b3554!important}
.emergency-dispatch-modal-light .field label{color:#334155!important;font-weight:700!important}
.emergency-dispatch-modal-light input,.emergency-dispatch-modal-light select,.emergency-dispatch-modal-light textarea{background:#fff!important;color:#0f172a!important;border:1px solid #cbd5e1!important;box-shadow:none!important}
.emergency-dispatch-modal-light input:focus,.emergency-dispatch-modal-light select:focus,.emergency-dispatch-modal-light textarea:focus{border-color:#0ea5e9!important;box-shadow:0 0 0 3px rgba(14,165,233,.12)!important;outline:0!important}
.emergency-dispatch-modal-light .alert-context-preview{background:#f0f9ff!important;border-color:#bae6fd!important;color:#334155!important}.emergency-dispatch-modal-light .alert-context-preview b{color:#0369a1!important}.emergency-dispatch-modal-light .alert-context-preview span{color:#334155!important}
.emergency-dispatch-modal-light .simulation-modal-warning{background:#fff7ed!important;border-color:#fdba74!important;color:#9a3412!important}
.emergency-dispatch-modal-light .modal-actions{background:#fff!important;border-top:1px solid #e7eef5!important}
.emergency-dispatch-modal-light .modal-actions .btn-soft{background:#0b3554!important;color:#fff!important;border-color:#0b3554!important}
\n\n/* RC3.27.6 - Lectura NFC en alta/edición de residentes y visitas */\n.nfc-reader-box{display:grid;grid-template-columns:minmax(180px,1fr) auto auto;gap:8px;align-items:center}.nfc-reader-box input{min-width:0}.nfc-read-btn{background:#ecfeff!important;color:#0e7490!important;border-color:#67e8f9!important}.nfc-field small{display:block;margin-top:7px;line-height:1.35}.nfc-read-btn i{transform:rotate(45deg)}\n@media(max-width:760px){.nfc-reader-box{grid-template-columns:1fr}.nfc-reader-box .btn{width:100%;justify-content:center;min-height:42px}.nfc-field small{font-size:11px}}\n

/* ==========================================================
   RC3.27.8 - Editor de residentes/visitas claro + NFC visible
   ========================================================== */
.people-modal-light .modal-backdrop-global{
  background:rgba(2,12,27,.68)!important;
  backdrop-filter:blur(5px)!important;
}
.people-modal-light .modal-box-global{
  width:min(820px,calc(100vw - 32px))!important;
  max-width:820px!important;
  background:#fff!important;
  color:#102a43!important;
  border:1px solid #d7e2ec!important;
  border-radius:18px!important;
  box-shadow:0 30px 90px rgba(2,12,27,.38)!important;
  padding:0!important;
}
.people-modal-light .modal-head.people-modal-head{
  position:sticky!important;top:0!important;z-index:12!important;
  display:flex!important;align-items:flex-start!important;justify-content:space-between!important;
  gap:16px!important;padding:18px 20px 14px!important;
  background:#fff!important;border-bottom:1px solid #e6edf3!important;
}
.people-modal-kicker{display:block;color:#1687c9;font-size:10px;font-weight:800;letter-spacing:.1em;margin-bottom:3px}
.people-modal-light .people-modal-head h2{margin:0!important;color:#0b2439!important;font-size:22px!important;line-height:1.15!important}
.people-modal-light .people-modal-head p{margin:5px 0 0!important;color:#6b7f90!important;font-size:12px!important;line-height:1.4!important}
.people-modal-close{width:38px!important;height:38px!important;min-width:38px!important;padding:0!important;display:grid!important;place-items:center!important;background:#eff5fa!important;color:#24465f!important;border:1px solid #d2e0ea!important}
.people-editor-form{padding:16px 20px 0!important;background:#fff!important}
.people-form-grid{display:grid!important;grid-template-columns:repeat(2,minmax(0,1fr))!important;gap:12px 14px!important}
.people-form-grid .field{margin:0!important;min-width:0!important}
.people-form-grid .field.full{grid-column:1/-1!important}
.people-modal-light .field label{display:block!important;margin:0 0 6px!important;color:#334b5f!important;font-size:12px!important;font-weight:800!important;line-height:1.25!important}
.people-modal-light .field input:not([type=file]):not([type=hidden]),
.people-modal-light .field select,
.people-modal-light .field textarea{
  width:100%!important;box-sizing:border-box!important;background:#fff!important;color:#102a43!important;
  border:1px solid #b9cad8!important;border-radius:9px!important;box-shadow:none!important;font-size:13px!important;
}
.people-modal-light .field input:not([type=file]):not([type=hidden]),.people-modal-light .field select{height:40px!important;padding:8px 10px!important}
.people-modal-light .field textarea{min-height:76px!important;padding:9px 10px!important;resize:vertical!important}
.people-modal-light .field input:focus,.people-modal-light .field select:focus,.people-modal-light .field textarea:focus{outline:0!important;border-color:#0ea5e9!important;box-shadow:0 0 0 3px rgba(14,165,233,.12)!important}
.people-modal-light .field small{color:#6e8190!important;font-size:10.5px!important;line-height:1.35!important}
.people-modal-light .photo-field{display:grid!important;grid-template-columns:86px minmax(0,1fr)!important;gap:12px!important;align-items:center!important;padding:10px!important;background:#f7fafc!important;border:1px solid #dce6ee!important;border-radius:12px!important}
.people-modal-light .person-photo-preview,.people-modal-light .person-photo-placeholder{width:78px!important;height:78px!important;border-radius:12px!important}
.people-modal-light input[type=file]{width:100%!important;min-width:0!important;color:#415d70!important;background:#fff!important;border:1px solid #c8d6e1!important;border-radius:8px!important;padding:7px!important}
.people-nfc-card{padding:12px 14px!important;background:linear-gradient(135deg,#effcff,#f7fbff)!important;border:1px solid #a7e5ef!important;border-radius:13px!important}
.people-nfc-head{display:flex!important;align-items:flex-start!important;justify-content:space-between!important;gap:12px!important;margin-bottom:8px!important}
.people-nfc-head label{margin:1px 0 0!important;font-size:13px!important;color:#0d5266!important}
.people-nfc-kicker{display:block;color:#0891b2;font-size:9px;font-weight:900;letter-spacing:.09em;margin-bottom:2px}
.people-nfc-status-pill{display:inline-flex;align-items:center;min-height:24px;padding:0 8px;border-radius:999px;background:#e2e8f0;color:#526477;font-size:9px;font-weight:800;white-space:nowrap}
.people-nfc-status-pill.is-linked{background:#dcfce7;color:#166534}
.nfc-reader-box{display:grid!important;grid-template-columns:minmax(0,1fr) auto auto!important;gap:8px!important;align-items:center!important}
.nfc-reader-box #nfcUid{background:#fff!important;color:#173247!important}
.nfc-read-btn{min-height:40px!important;display:inline-flex!important;align-items:center!important;justify-content:center!important;gap:7px!important;background:#0891b2!important;color:#fff!important;border:1px solid #0891b2!important;white-space:nowrap!important}
.nfc-read-btn:hover{background:#0e7490!important}
.nfc-clear-btn{min-height:40px!important;display:inline-flex!important;align-items:center!important;justify-content:center!important;gap:6px!important;white-space:nowrap!important}
.nfc-field #nfcStatus{display:flex!important;align-items:flex-start!important;gap:6px!important;margin-top:8px!important;color:#517184!important}
.people-modal-actions{position:sticky!important;bottom:0!important;z-index:11!important;margin:16px -20px 0!important;padding:12px 20px!important;background:#fff!important;border-top:1px solid #e6edf3!important}
.people-modal-actions .btn{min-height:38px!important;font-size:12px!important;display:inline-flex!important;align-items:center!important;gap:7px!important}
.dark-palette-frame .people-modal-light .modal-box-global,
.dark-palette-frame .people-modal-light .modal-head,
.dark-palette-frame .people-modal-light .modal-actions{background:#fff!important;color:#102a43!important}
@media(max-width:700px){
  .people-modal-light .modal-box-global{width:100%!important;max-width:none!important;border-radius:16px 16px 0 0!important}
  .people-editor-form{padding:12px 12px 0!important}
  .people-modal-light .modal-head.people-modal-head{padding:14px 14px 12px!important}
  .people-form-grid{grid-template-columns:1fr!important;gap:10px!important}
  .people-form-grid .field.full{grid-column:1!important}
  .nfc-reader-box{grid-template-columns:1fr!important}
  .nfc-reader-box .btn{width:100%!important}
  .people-modal-light .photo-field{grid-template-columns:72px minmax(0,1fr)!important}
  .people-modal-light .person-photo-preview,.people-modal-light .person-photo-placeholder{width:68px!important;height:68px!important}
  .people-modal-actions{margin:12px -12px 0!important;padding:10px 12px!important}
}
\n/* ==========================================================
   RC3.27.9 - Directorio: formulario claro + NFC visible
   ========================================================== */
.directory-person-modal-light .modal-backdrop-global{background:rgba(2,12,27,.72)!important;backdrop-filter:blur(5px)!important}
.directory-person-modal-light .modal-box-global{width:min(860px,calc(100vw - 32px))!important;max-width:860px!important;max-height:min(88vh,850px)!important;overflow:auto!important;background:#fff!important;color:#0f172a!important;border:1px solid #d8e2ec!important;border-radius:18px!important;padding:0!important;box-shadow:0 28px 85px rgba(2,12,27,.42)!important}
.directory-person-modal-head{position:sticky!important;top:0!important;z-index:12!important;display:flex!important;justify-content:space-between!important;align-items:flex-start!important;gap:16px!important;padding:18px 20px 14px!important;background:#fff!important;border-bottom:1px solid #e5edf4!important}
.directory-modal-kicker{display:block!important;color:#1687c9!important;font-size:10px!important;font-weight:900!important;letter-spacing:.09em!important;margin-bottom:3px!important}
.directory-person-modal-head h2{margin:0!important;color:#0b2439!important;font-size:22px!important;line-height:1.15!important}.directory-person-modal-head p{margin:5px 0 0!important;color:#64748b!important;font-size:12px!important}
.directory-modal-close{width:40px!important;height:40px!important;min-width:40px!important;padding:0!important;display:grid!important;place-items:center!important;background:#eef5fa!important;color:#173a52!important;border:1px solid #cfdee8!important}
.directory-person-form{padding:16px 20px 0!important;background:#fff!important}.directory-person-grid{display:grid!important;grid-template-columns:repeat(2,minmax(0,1fr))!important;gap:13px 14px!important}.directory-person-grid .field{margin:0!important;min-width:0!important}.directory-person-grid .field.full{grid-column:1/-1!important}
.directory-person-modal-light .field label{display:block!important;color:#334155!important;font-size:12px!important;font-weight:800!important;margin:0 0 6px!important}.directory-person-modal-light input:not([type=file]):not([type=hidden]),.directory-person-modal-light select,.directory-person-modal-light textarea{width:100%!important;box-sizing:border-box!important;background:#fff!important;color:#0f172a!important;border:1px solid #b9cad8!important;border-radius:9px!important;box-shadow:none!important;font-size:13px!important}.directory-person-modal-light input:not([type=file]):not([type=hidden]),.directory-person-modal-light select{height:42px!important;padding:8px 10px!important}.directory-person-modal-light textarea{min-height:82px!important;padding:9px 10px!important;resize:vertical!important}.directory-person-modal-light input:focus,.directory-person-modal-light select:focus,.directory-person-modal-light textarea:focus{outline:0!important;border-color:#0ea5e9!important;box-shadow:0 0 0 3px rgba(14,165,233,.12)!important}
.directory-person-modal-light .photo-field{display:grid!important;grid-template-columns:90px minmax(0,1fr)!important;gap:12px!important;align-items:center!important;padding:11px!important;background:#f7fafc!important;border:1px solid #dce6ee!important;border-radius:12px!important}.directory-person-modal-light .person-photo-preview,.directory-person-modal-light .person-photo-placeholder{width:80px!important;height:80px!important;border-radius:12px!important}.directory-person-modal-light input[type=file]{width:100%!important;min-width:0!important;background:#fff!important;color:#334155!important;border:1px solid #c8d6e1!important;border-radius:8px!important;padding:7px!important}.directory-person-modal-light .field small{color:#64748b!important;font-size:10.5px!important;line-height:1.35!important}
.directory-nfc-card{padding:13px 14px!important;background:linear-gradient(135deg,#ecfeff,#f8fbff)!important;border:1px solid #9bdfea!important;border-radius:13px!important}.directory-nfc-head{display:flex!important;align-items:flex-start!important;justify-content:space-between!important;gap:12px!important;margin-bottom:9px!important}.directory-nfc-kicker{display:block!important;color:#0891b2!important;font-size:9px!important;font-weight:900!important;letter-spacing:.09em!important;margin-bottom:2px!important}.directory-nfc-head label{margin:0!important;color:#0f5669!important;font-size:13px!important}.directory-nfc-pill{display:inline-flex!important;align-items:center!important;min-height:24px!important;padding:0 8px!important;border-radius:999px!important;background:#e2e8f0!important;color:#526477!important;font-size:9px!important;font-weight:900!important}.directory-nfc-pill.is-linked{background:#dcfce7!important;color:#166534!important}.directory-nfc-reader{display:grid!important;grid-template-columns:minmax(0,1fr) auto auto!important;gap:8px!important;align-items:center!important}.directory-nfc-reader .btn{min-height:40px!important;white-space:nowrap!important}.directory-nfc-card small{display:flex!important;gap:6px!important;align-items:flex-start!important;margin-top:8px!important;color:#4f7184!important}
.directory-person-actions{position:sticky!important;bottom:0!important;z-index:11!important;margin:16px -20px 0!important;padding:12px 20px!important;background:#fff!important;border-top:1px solid #e5edf4!important}.directory-person-actions .btn{min-height:38px!important;font-size:12px!important;display:inline-flex!important;align-items:center!important;gap:7px!important}
.dark-palette-frame .directory-person-modal-light .modal-box-global,.dark-palette-frame .directory-person-modal-light .directory-person-modal-head,.dark-palette-frame .directory-person-modal-light .directory-person-actions{background:#fff!important;color:#0f172a!important}
@media(max-width:700px){.directory-person-modal-light .modal-box-global{width:100%!important;max-width:none!important;border-radius:16px 16px 0 0!important}.directory-person-form{padding:12px 12px 0!important}.directory-person-modal-head{padding:14px 14px 12px!important}.directory-person-grid{grid-template-columns:1fr!important;gap:10px!important}.directory-person-grid .field.full{grid-column:1!important}.directory-nfc-reader{grid-template-columns:1fr!important}.directory-nfc-reader .btn{width:100%!important}.directory-person-actions{margin:12px -12px 0!important;padding:10px 12px!important}.directory-person-modal-light .photo-field{grid-template-columns:72px minmax(0,1fr)!important}.directory-person-modal-light .person-photo-preview,.directory-person-modal-light .person-photo-placeholder{width:68px!important;height:68px!important}}

/* RC3.28.0 - Cédula electrónica chilena / Android companion */
.directory-id-card{background:#f5fbff!important;border:1px solid #b8dff4!important;border-radius:14px!important;padding:16px!important;color:#13263a!important}
.directory-id-card-head{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;margin-bottom:12px}
.directory-id-card-head label{display:block;color:#13263a!important;font-weight:800;font-size:14px;margin-top:3px}
.directory-id-card-summary{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:10px;margin:10px 0 12px}
.directory-id-card-summary>div{min-width:0}.directory-id-card-summary span{display:block;font-size:11px;font-weight:700;color:#61758a;margin-bottom:5px}
.directory-id-card-summary input{width:100%;height:38px;background:#fff!important;color:#13263a!important;border:1px solid #cad8e5!important;border-radius:9px!important;padding:0 10px!important}
.directory-id-card-actions{display:flex;gap:10px;align-items:center;flex-wrap:wrap;margin:8px 0}
.directory-id-card #dirIdCardStatus{display:block;color:#5a6f84!important;line-height:1.45;margin-top:8px}
.directory-person-modal-light .directory-id-card .btn-primary{background:#0f7ad8!important;color:white!important}
@media(max-width:760px){.directory-id-card-summary{grid-template-columns:1fr 1fr}.directory-id-card-summary>div:first-child{grid-column:1/-1}.directory-id-card-actions{display:grid;grid-template-columns:1fr}.directory-id-card-actions .btn{width:100%}}

/* RC3.28.6 - login fotográfico y logo web centrado */
body.auth-page{background-color:var(--login-bg)!important;background-image:linear-gradient(rgba(2,6,23,.22),rgba(2,6,23,.42)),var(--login-bg-image)!important;background-size:cover!important;background-position:center!important;background-repeat:no-repeat!important}
.auth-backdrop{background:linear-gradient(90deg,rgba(2,6,23,.10),rgba(2,6,23,.28))!important;backdrop-filter:saturate(1.06)!important}
.auth-card{width:min(460px,calc(100% - 32px))!important;padding:30px 32px 32px!important;background:color-mix(in srgb,var(--login-card-bg) 96%,transparent)!important}
.auth-brand{display:flex!important;justify-content:center!important;align-items:center!important;border-bottom:0!important;padding:0 0 12px!important}
.auth-logo-wrap{width:min(330px,82vw)!important;height:104px!important;flex:0 0 auto!important;background:transparent!important;box-shadow:none!important;border-radius:0!important;overflow:visible!important}
.auth-logo-wrap img{width:100%!important;height:100%!important;object-fit:contain!important;padding:0!important}
.auth-brand-copy{display:none!important}
.auth-welcome{text-align:center!important;padding:10px 0 8px!important}
.auth-welcome .auth-eyebrow{display:none!important}
.auth-card h1{font-size:30px!important;margin-top:0!important}
.auth-links{justify-content:center!important}
@media(max-width:600px){.auth-card{padding:24px 20px 26px!important}.auth-logo-wrap{width:min(285px,78vw)!important;height:86px!important}.auth-card h1{font-size:26px!important}}


/* ============================================================================
   RC3.28.9 · Login según propuesta aprobada
   Logo independiente encima de la tarjeta, halo luminoso, formulario limpio.
   ============================================================================ */
body.auth-page{
  background-color:var(--login-bg)!important;
  background-image:linear-gradient(rgba(2,10,20,.22),rgba(2,10,20,.36)),var(--login-bg-image)!important;
  background-size:cover!important;
  background-position:center!important;
  background-repeat:no-repeat!important;
  min-height:100svh!important;
  display:grid!important;
  place-items:center!important;
  padding:28px 18px!important;
}
.auth-page .auth-backdrop{
  background:radial-gradient(circle at 50% 18%,rgba(255,255,255,.08),transparent 38%),linear-gradient(180deg,rgba(3,12,24,.04),rgba(3,12,24,.16))!important;
  backdrop-filter:none!important;
}
.auth-shell{
  width:min(620px,calc(100vw - 28px));
  display:flex;
  flex-direction:column;
  align-items:center;
  gap:20px;
  position:relative;
  z-index:1;
}
.auth-brand-hero{
  position:relative;
  width:min(520px,88vw);
  min-height:132px;
  display:flex;
  align-items:center;
  justify-content:center;
  isolation:isolate;
}
.auth-brand-hero .auth-logo-glow{
  position:absolute;
  inset:8% 4%;
  z-index:-1;
  border-radius:50%;
  background:radial-gradient(ellipse at center,rgba(255,255,255,.96) 0%,rgba(255,255,255,.70) 36%,rgba(255,255,255,.26) 60%,transparent 78%);
  filter:blur(18px);
  transform:scale(1.08,.88);
  pointer-events:none;
}
.auth-brand-hero img{
  display:block;
  width:min(500px,86vw);
  max-height:132px;
  object-fit:contain;
  filter:drop-shadow(0 3px 3px rgba(255,255,255,.95)) drop-shadow(0 0 16px rgba(255,255,255,.72)) drop-shadow(0 8px 18px rgba(0,0,0,.20));
}
.auth-page .auth-card{
  width:min(500px,100%)!important;
  padding:34px 36px 30px!important;
  border-radius:24px!important;
  background:rgba(255,255,255,.965)!important;
  border:1px solid rgba(255,255,255,.86)!important;
  box-shadow:0 24px 70px rgba(2,12,27,.28),0 2px 10px rgba(2,12,27,.12)!important;
  backdrop-filter:blur(9px) saturate(1.08)!important;
  color:#10233e!important;
}
.auth-page .auth-welcome{padding:0 0 20px!important;text-align:center!important}
.auth-page .auth-welcome h1,
.auth-page #loginTitle{
  margin:0 0 8px!important;
  font-size:34px!important;
  line-height:1.08!important;
  font-weight:900!important;
  letter-spacing:-.02em!important;
  color:#0d2443!important;
}
.auth-page #loginSubtitle{
  margin:0 auto!important;
  max-width:420px!important;
  font-size:14px!important;
  line-height:1.45!important;
  color:#64748b!important;
}
.auth-page #loginForm{display:grid;gap:12px}
.auth-input-row{
  height:54px;
  border:1px solid #cbd7e4;
  border-radius:10px;
  background:#fff;
  display:grid;
  grid-template-columns:48px minmax(0,1fr) auto;
  align-items:center;
  overflow:hidden;
  transition:border-color .16s ease,box-shadow .16s ease,transform .16s ease;
}
.auth-input-row:focus-within{border-color:var(--login-btn);box-shadow:0 0 0 4px color-mix(in srgb,var(--login-btn) 14%,transparent)}
.auth-input-icon{width:48px;height:54px;display:grid;place-items:center;color:#536b83}
.auth-input-icon svg,.auth-password-toggle svg{width:22px;height:22px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}
.auth-input-row input{
  width:100%;height:100%!important;padding:0 12px 0 0!important;margin:0!important;border:0!important;border-radius:0!important;background:transparent!important;color:#1e334b!important;font-size:14px!important;box-shadow:none!important;outline:none!important;
}
.auth-input-row input::placeholder{color:#66788b;opacity:1}
.auth-password-toggle{width:48px;height:54px;border:0;background:transparent;color:#536b83;display:grid;place-items:center;cursor:pointer;padding:0}
.auth-password-toggle:hover,.auth-password-toggle.is-visible{color:var(--login-btn);background:color-mix(in srgb,var(--login-btn) 7%,transparent)}
.auth-page .auth-submit{
  min-height:54px!important;
  margin-top:2px!important;
  border:0!important;
  border-radius:9px!important;
  background:linear-gradient(90deg,color-mix(in srgb,var(--login-btn) 94%,#00866d),var(--login-btn))!important;
  color:#fff!important;
  font-size:15px!important;
  font-weight:900!important;
  box-shadow:0 10px 24px color-mix(in srgb,var(--login-btn) 22%,transparent)!important;
}
.auth-page .auth-links{margin-top:18px!important;text-align:center!important;display:block!important}
.auth-page .auth-links a{color:var(--login-btn)!important;font-size:13px!important;font-weight:800!important;text-decoration:underline!important;text-underline-offset:2px}

/* Preview del branding: replica la composición real del login */
.brand-login-preview{
  min-height:300px!important;
  display:flex!important;
  flex-direction:column!important;
  align-items:center!important;
  justify-content:center!important;
  gap:10px!important;
  padding:16px!important;
  background-size:cover!important;
  background-position:center!important;
}
.brand-login-preview::before{background:rgba(2,10,20,.28)!important}
.brand-login-preview-logo{position:relative;z-index:1;width:82%;height:74px;display:grid;place-items:center}
.brand-login-preview-logo::before{content:"";position:absolute;inset:4px 6%;background:radial-gradient(ellipse,rgba(255,255,255,.95),rgba(255,255,255,.55) 45%,transparent 74%);filter:blur(11px);z-index:-1}
.brand-login-preview-logo img{max-width:100%;max-height:72px;object-fit:contain;filter:drop-shadow(0 0 9px rgba(255,255,255,.85))}
.brand-login-preview-card{position:relative!important;z-index:1!important;width:min(230px,88%)!important;padding:16px!important;border-radius:14px!important;background:rgba(255,255,255,.97)!important;display:flex!important;align-items:stretch!important;gap:7px!important;text-align:center!important}
.brand-login-preview-card b{font-size:18px!important;font-weight:900!important;color:#0d2443!important}
.brand-login-preview-card span{font-size:8px!important;color:#64748b!important}
.brand-login-preview-input{height:28px!important;border:1px solid #d7e0e9;border-radius:5px;display:flex!important;align-items:center!important;gap:7px!important;padding:0 8px!important;text-align:left!important;background:#fff!important;color:#54697e!important}
.brand-login-preview-input i{font-size:10px}.brand-login-preview-input span{font-size:8px!important}
.brand-login-preview-card>a{font-size:8px;color:#0f766e;text-decoration:underline;font-weight:800}
.login-logo-file-preview{height:88px!important}

@media(max-width:600px){
  body.auth-page{padding:20px 14px!important;place-items:center!important}
  .auth-shell{gap:14px;width:min(100%,430px)}
  .auth-brand-hero{width:min(360px,92vw);min-height:92px}
  .auth-brand-hero img{width:min(350px,90vw);max-height:92px}
  .auth-brand-hero .auth-logo-glow{filter:blur(13px)}
  .auth-page .auth-card{padding:26px 20px 24px!important;border-radius:20px!important}
  .auth-page .auth-welcome h1,.auth-page #loginTitle{font-size:28px!important}
  .auth-input-row{height:52px}.auth-input-icon,.auth-password-toggle{height:52px}
}

/* RC3.29.4 - mensaje de error al guardar personas */
.directory-save-error{margin:12px 0 0;padding:10px 12px;border:1px solid #ef4444;border-radius:10px;background:#fff1f2;color:#991b1b;font-weight:700;font-size:13px;line-height:1.35}

.resident-identity-three .resident-identity-person{display:flex;align-items:center;gap:8px}.resident-identity-photo{width:38px;height:38px;flex:0 0 38px;border-radius:50%;object-fit:cover;border:2px solid #fff;box-shadow:0 0 0 1px var(--line)}#residentLocationCompact{font-size:16px;font-weight:900;letter-spacing:.2px;white-space:nowrap}

/* RC3.31.5 · versión visible para soporte */
.portal-version-badge{position:fixed;right:10px;bottom:7px;z-index:9999;padding:3px 7px;border:1px solid rgba(148,163,184,.28);border-radius:7px;background:rgba(2,6,23,.72);color:#94a3b8;font:700 9px/1.2 Inter,system-ui,sans-serif;letter-spacing:.35px;pointer-events:none;backdrop-filter:blur(5px)}
/* RC3.32.0 · Setup multi-entorno */
.environment-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;margin-top:6px}.environment-card{position:relative;min-height:132px;border:1px solid #d9e2ec;background:#fff;border-radius:14px;padding:16px 12px;text-align:left;display:flex;flex-direction:column;gap:7px;color:#0f172a;cursor:pointer;transition:.18s ease}.environment-card>i{font-size:25px;color:#0f4c5c}.environment-card b{font-size:13px}.environment-card small{font-size:11px;line-height:1.35;color:#64748b}.environment-card:hover{border-color:#5eead4;box-shadow:0 6px 18px rgba(15,76,92,.10);transform:translateY(-1px)}.environment-card.selected{border:2px solid #10b981;background:#f0fdf9;box-shadow:0 0 0 3px rgba(16,185,129,.08)}.environment-check{display:none;position:absolute;right:8px;top:8px;width:24px;height:24px;border-radius:50%;background:#059669;color:#fff;align-items:center;justify-content:center}.environment-card.selected .environment-check{display:flex}@media(max-width:1000px){.environment-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(max-width:560px){.environment-grid{grid-template-columns:1fr}.environment-card{min-height:96px}}
/* RC3.32.2 - Entorno Faena Minera */
.fp3-mining-modal{width:min(1420px,96vw);max-width:1420px}.fp3-mining-grid{display:grid;grid-template-columns:1.05fr 1.35fr .85fr;gap:14px}.fp3-mining-panel{border:1px solid #d9e4ea;border-radius:14px;padding:16px;background:#fff}.fp3-mining-panel h3{margin:0 0 12px;color:#123047}.fp3-mining-features{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-top:12px;padding-top:12px;border-top:1px solid #e6eef2}.fp3-mining-features>b{grid-column:1/-1}.fp3-mining-features label{font-size:12px}.fp3-mining-map-placeholder{min-height:300px;border:2px dashed #9fc8c1;border-radius:12px;background:linear-gradient(135deg,#eef7f3,#e3ece8);display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;padding:30px;color:#315d58}.fp3-mining-map-placeholder i{font-size:48px;margin-bottom:12px}.fp3-mining-map-placeholder span{max-width:390px;margin-top:8px}.fp3-mining-legend{display:grid;grid-template-columns:repeat(2,1fr);gap:8px;margin-top:12px;font-size:12px}.fp3-mining-legend>b{grid-column:1/-1}.fp3-sector-list{display:grid;gap:6px;max-height:270px;overflow:auto;margin-bottom:18px}.fp3-sector-list>div{display:grid;grid-template-columns:28px 1fr;align-items:center;border:1px solid #dce8ec;border-radius:8px;padding:7px 9px}.fp3-sector-list span{color:#718895}.fp3-mining-panel .fp3-check{margin:8px 0}@media(max-width:1050px){.fp3-mining-grid{grid-template-columns:1fr}.fp3-mining-modal{width:min(760px,96vw)}}

/* RC3.32.8 - iconografia contextual Zona Forestal */
.fp3-marker-forest-guard-post,.fp3-marker-forest-nursery,.fp3-marker-forest-base,.fp3-marker-assembly-point{background:#15803d}
.fp3-marker-water-point,.fp3-marker-helipad{background:#2563eb}
.fp3-marker-sawmill,.fp3-marker-access-route{background:#eab308;color:#111827}
.fp3-marker-fire-station,.fp3-marker-firebreak{background:#dc2626}
.fp3-marker-forest-guard-post i,.fp3-marker-sawmill i,.fp3-marker-fire-station i,.fp3-marker-firebreak i,.fp3-marker-water-point i,.fp3-marker-forest-nursery i,.fp3-marker-forest-base i,.fp3-marker-helipad i{font-size:22px}

/* RC3.33.2 - iconografia operacional forestal en dashboard */
.dashboard-command-real .db-plan-marker.type-forest-guard-post,.dashboard-command-real .db-plan-marker.type-forest-nursery,.dashboard-command-real .db-plan-marker.type-forest-base,.dashboard-command-real .db-plan-marker.type-assembly-point{background:#15803d}
.dashboard-command-real .db-plan-marker.type-water-point,.dashboard-command-real .db-plan-marker.type-helipad{background:#2563eb}
.dashboard-command-real .db-plan-marker.type-sawmill,.dashboard-command-real .db-plan-marker.type-access-route{background:#eab308;color:#111827}
.dashboard-command-real .db-plan-marker.type-fire-station,.dashboard-command-real .db-plan-marker.type-firebreak{background:#dc2626}

/* RC3.33.3 - colores contextuales forestales en Dashboard.
   !important requerido porque dashboard-command-v316 define el marcador base con !important. */
.dashboard-command-real .db-plan-marker.type-forest-guard-post,
.dashboard-command-real .db-plan-marker.type-forest-nursery,
.dashboard-command-real .db-plan-marker.type-forest-base,
.dashboard-command-real .db-plan-marker.type-assembly-point{
  background:#15803d!important;color:#fff!important;border-color:#86efac!important;box-shadow:0 2px 8px rgba(21,128,61,.35)!important
}
.dashboard-command-real .db-plan-marker.type-water-point,
.dashboard-command-real .db-plan-marker.type-helipad{
  background:#2563eb!important;color:#fff!important;border-color:#93c5fd!important;box-shadow:0 2px 8px rgba(37,99,235,.35)!important
}
.dashboard-command-real .db-plan-marker.type-sawmill,
.dashboard-command-real .db-plan-marker.type-access-route{
  background:#eab308!important;color:#111827!important;border-color:#fde047!important;box-shadow:0 2px 8px rgba(234,179,8,.35)!important
}
.dashboard-command-real .db-plan-marker.type-fire-station,
.dashboard-command-real .db-plan-marker.type-firebreak{
  background:#dc2626!important;color:#fff!important;border-color:#fca5a5!important;box-shadow:0 2px 8px rgba(220,38,38,.35)!important
}
.dashboard-command-real .db-plan-marker.type-forest-guard-post i,
.dashboard-command-real .db-plan-marker.type-forest-nursery i,
.dashboard-command-real .db-plan-marker.type-forest-base i,
.dashboard-command-real .db-plan-marker.type-assembly-point i,
.dashboard-command-real .db-plan-marker.type-water-point i,
.dashboard-command-real .db-plan-marker.type-helipad i,
.dashboard-command-real .db-plan-marker.type-sawmill i,
.dashboard-command-real .db-plan-marker.type-access-route i,
.dashboard-command-real .db-plan-marker.type-fire-station i,
.dashboard-command-real .db-plan-marker.type-firebreak i{color:inherit!important}

/* RC3.33.4 - semantica visual por tipo de servicio */
.dashboard-command-real .db-plan-marker.type-drill-point{background:#2563eb!important;color:#fff!important;border-color:#93c5fd!important}
.dashboard-command-real .db-plan-marker.type-blast-point,.dashboard-command-real .db-plan-marker.type-explosives{background:#dc2626!important;color:#fff!important;border-color:#fca5a5!important}
.dashboard-command-real .db-plan-marker.type-haul-truck,.dashboard-command-real .db-plan-marker.type-access-route{background:#eab308!important;color:#111827!important;border-color:#fde047!important}
.dashboard-command-real .db-plan-marker.type-process-plant,.dashboard-command-real .db-plan-marker.type-workshop{background:#2563eb!important;color:#fff!important;border-color:#93c5fd!important}
.dashboard-command-real .db-plan-marker.type-camp,.dashboard-command-real .db-plan-marker.type-assembly-point{background:#15803d!important;color:#fff!important;border-color:#86efac!important}
.dashboard-command-real .db-plan-marker.type-dump{background:#64748b!important;color:#fff!important;border-color:#cbd5e1!important}
.command-plan-legend .legend-mining b{background:#f8fafc;border-color:#cbd5e1}.command-plan-legend .legend-forest b{background:#f8fafc;border-color:#cbd5e1}
.command-floor-rail .free-map-rail-icon{width:42px;height:42px;border-radius:10px;display:grid;place-items:center;background:#0f766e;color:#fff;font-size:20px;margin:8px auto 4px}.command-floor-rail .free-map-rail-label{writing-mode:vertical-rl;transform:rotate(180deg);font-size:10px;font-weight:800;letter-spacing:.12em;color:#64748b;margin:8px auto}

/* RC3.33.5 - leyenda operacional contextual y colores semánticos */
.command-plan-legend .legend-service b{display:inline-flex;align-items:center;justify-content:center;width:22px;height:22px;border-radius:6px;color:#fff;margin-right:4px}
.command-plan-legend .legend-tone-blue b{background:#1677d2}
.command-plan-legend .legend-tone-green b{background:#159447}
.command-plan-legend .legend-tone-yellow b{background:#e5a800;color:#172033}
.command-plan-legend .legend-tone-red b{background:#e53935}
.command-plan-legend .legend-tone-gray b{background:#64748b}
/* RC3.34.1 - zonas operacionales y personal */
.operational-zone-row{width:100%;border:0;background:transparent;text-align:left;cursor:pointer;font:inherit;color:inherit}.operational-zone-row:hover{background:#eef8ff}.matrix-zone-people{margin-left:auto;display:inline-flex;align-items:center;gap:6px;font-weight:800;color:#0f766e;padding:4px 8px;border-radius:999px;background:#ecfdf5}.db-zone-people-list{padding:14px 18px 20px}.db-zone-person{display:flex;align-items:center;justify-content:space-between;gap:14px;padding:12px 4px;border-bottom:1px solid #e2e8f0}.db-zone-person>div{min-width:0}.db-zone-person b,.db-zone-person small{display:block}.db-zone-person small{margin-top:3px;color:#64748b}.db-zone-person .badge{white-space:nowrap}

/* ==============================================================
   RC3.34.25 - Dashboard responsive + comando consistente
   1) selector de instalación visible en móvil
   2) modo comando completamente oscuro con texto claro
   3) mapa inferior sin recorte en vista clásica
   ============================================================== */
@media (max-width:760px){
  .shell-horizontal-app{grid-template-rows:132px 50px minmax(0,1fr)!important}
  .shell-horizontal-header{height:132px!important;min-height:132px!important;padding:7px 12px!important;display:flex!important;flex-wrap:wrap!important;align-content:center!important;gap:6px 10px!important}
  .shell-horizontal-brand{width:100%!important;flex:0 0 100%!important;justify-content:center!important;height:64px!important}
  .shell-horizontal-tools{width:100%!important;flex:0 0 100%!important;display:flex!important;align-items:center!important;gap:7px!important;overflow:visible!important}
  .shell-horizontal-tools .building-select,#buildingSelect.building-select{display:block!important;visibility:visible!important;opacity:1!important;flex:1 1 auto!important;width:auto!important;min-width:0!important;max-width:none!important;height:38px!important;padding:0 7px!important;font-size:11px!important}
  .shell-horizontal-tools .portal-view-switch{flex:0 0 auto!important}
  .shell-horizontal-tools .userbox{display:none!important}
  .shell-horizontal-tools [data-shell-logout]{flex:0 0 38px!important;width:38px!important;height:38px!important;padding:0!important}
  [data-portal-view="command"] .shell-horizontal-app{grid-template-rows:132px 50px minmax(0,1fr)!important}
  [data-portal-view="command"] .shell-horizontal-header{height:132px!important;min-height:132px!important}
}

/* Comando: ningún panel funcional vuelve a blanco. */
html[data-portal-view="command"] .shell-horizontal-main{background:#031426!important}
.dark-palette-frame .dashboard-command-real.dashboard-command-v316,
.dark-palette-frame .dashboard-command-real.dashboard-command-v316 .command-dashboard-grid{background:#031426!important;color:#eef8ff!important}
.dark-palette-frame .dashboard-command-real.dashboard-command-v316 .pro-card,
.dark-palette-frame .dashboard-command-real.dashboard-command-v316 .command-floor-card,
.dark-palette-frame .dashboard-command-real.dashboard-command-v316 .command-map-card,
.dark-palette-frame .dashboard-command-real.dashboard-command-v316 .command-activity-card,
.dark-palette-frame .dashboard-command-real.dashboard-command-v316 .command-incoming-card,
.dark-palette-frame .dashboard-command-real.dashboard-command-v316 .command-building-card,
.dark-palette-frame .dashboard-command-real.dashboard-command-v316 .command-alerts-card,
.dark-palette-frame .dashboard-command-real.dashboard-command-v316 .command-floor-plan,
.dark-palette-frame .dashboard-command-real.dashboard-command-v316 .pro-empty{
  background:#06182c!important;border-color:#155078!important;color:#eef8ff!important
}
.dark-palette-frame .dashboard-command-real.dashboard-command-v316 .pro-card-head,
.dark-palette-frame .dashboard-command-real.dashboard-command-v316 .command-plan-legend,
.dark-palette-frame .dashboard-command-real.dashboard-command-v316 .command-plan-foot{background:#08243d!important;border-color:#155078!important;color:#eef8ff!important}
.dark-palette-frame .dashboard-command-real.dashboard-command-v316 h1,
.dark-palette-frame .dashboard-command-real.dashboard-command-v316 h2,
.dark-palette-frame .dashboard-command-real.dashboard-command-v316 h3,
.dark-palette-frame .dashboard-command-real.dashboard-command-v316 h4,
.dark-palette-frame .dashboard-command-real.dashboard-command-v316 b,
.dark-palette-frame .dashboard-command-real.dashboard-command-v316 strong,
.dark-palette-frame .dashboard-command-real.dashboard-command-v316 label,
.dark-palette-frame .dashboard-command-real.dashboard-command-v316 .pro-card-head h3,
.dark-palette-frame .dashboard-command-real.dashboard-command-v316 .command-plan-legend span,
.dark-palette-frame .dashboard-command-real.dashboard-command-v316 .command-plan-foot span{color:#f5fbff!important}
.dark-palette-frame .dashboard-command-real.dashboard-command-v316 small,
.dark-palette-frame .dashboard-command-real.dashboard-command-v316 .small,
.dark-palette-frame .dashboard-command-real.dashboard-command-v316 .muted,
.dark-palette-frame .dashboard-command-real.dashboard-command-v316 .pro-empty{color:#9fc0d7!important}
.dark-palette-frame .dashboard-command-real.dashboard-command-v316 .operational-zone-row,
.dark-palette-frame .dashboard-command-real.dashboard-command-v316 .building-matrix-row{background:#08243d!important;border-color:#1a5b85!important;color:#f5fbff!important}
.dark-palette-frame .dashboard-command-real.dashboard-command-v316 .operational-zone-row:hover,
.dark-palette-frame .dashboard-command-real.dashboard-command-v316 .building-matrix-row:hover{background:#0b3153!important}
.dark-palette-frame .dashboard-command-real.dashboard-command-v316 .matrix-zone-people{background:#073d38!important;color:#6ee7b7!important}

/* Clásica desktop: reserva el alto completo del mapa inferior y permite scroll de página. */
@media (min-width:761px){
  body:not(.dark-palette-frame) .dashboard-command-real.dashboard-command-v316 .command-dashboard-grid{grid-template-rows:455px 250px!important;overflow:visible!important}
  body:not(.dark-palette-frame) .dashboard-command-real.dashboard-command-v316 .command-map-card,
  body:not(.dark-palette-frame) .dashboard-command-real.dashboard-command-v316 .command-activity-card{height:250px!important;min-height:250px!important;max-height:250px!important}
  body:not(.dark-palette-frame) .dashboard-command-real.dashboard-command-v316 .command-map-card .dashboard-map{height:196px!important;min-height:196px!important;max-height:196px!important}
}

/* RC3.34.26 - autoridad final de modo comando dentro del iframe */
.dark-palette-frame .dashboard-command-real.dashboard-command-v316 .command-building-card,
.dark-palette-frame .dashboard-command-real.dashboard-command-v316 .command-building-panel,
.dark-palette-frame .dashboard-command-real.dashboard-command-v316 .building-state-matrix,
.dark-palette-frame .dashboard-command-real.dashboard-command-v316 .command-incoming-card,
.dark-palette-frame .dashboard-command-real.dashboard-command-v316 .command-incoming-card .db-incoming-tabs,
.dark-palette-frame .dashboard-command-real.dashboard-command-v316 .command-incoming-card .pro-message-list,
.dark-palette-frame .dashboard-command-real.dashboard-command-v316 .command-activity-card,
.dark-palette-frame .dashboard-command-real.dashboard-command-v316 .command-activity-list,
.dark-palette-frame .dashboard-command-real.dashboard-command-v316 .command-alerts-card,
.dark-palette-frame .dashboard-command-real.dashboard-command-v316 .command-alert-list{
  background:#06182c!important;color:#f5fbff!important;border-color:#155078!important;
}
.dark-palette-frame .dashboard-command-real.dashboard-command-v316 .db-incoming-tabs,
.dark-palette-frame .dashboard-command-real.dashboard-command-v316 .db-incoming-tabs button{
  background:#06182c!important;color:#d9edfb!important;border-color:#155078!important;
}
.dark-palette-frame .dashboard-command-real.dashboard-command-v316 .db-incoming-tabs button.active{color:#fff!important;border-bottom-color:#20a4ff!important}
.dark-palette-frame .dashboard-command-real.dashboard-command-v316 .command-building-help,
.dark-palette-frame .dashboard-command-real.dashboard-command-v316 .command-building-caption{
  background:#08243d!important;color:#cfe8f8!important;border-color:#155078!important;
}
.dark-palette-frame .dashboard-command-real.dashboard-command-v316 .building-matrix-head,
.dark-palette-frame .dashboard-command-real.dashboard-command-v316 .building-matrix-head span,
.dark-palette-frame .dashboard-command-real.dashboard-command-v316 .building-matrix-head b,
.dark-palette-frame .dashboard-command-real.dashboard-command-v316 .operational-zone-row,
.dark-palette-frame .dashboard-command-real.dashboard-command-v316 .operational-zone-row *{color:#f5fbff!important}

/* RC3.34.27 - comando: autoridad visual final, sin superficies blancas */
html[data-portal-view="command"],html[data-portal-view="command"] body,.dark-palette-frame{background:#031426!important;color:#f5fbff!important}
.dark-palette-frame .dashboard-command-real.dashboard-command-v316 .pro-card-body,
.dark-palette-frame .dashboard-command-real.dashboard-command-v316 .command-floor-body,
.dark-palette-frame .dashboard-command-real.dashboard-command-v316 .command-building-body,
.dark-palette-frame .dashboard-command-real.dashboard-command-v316 .command-incoming-body,
.dark-palette-frame .dashboard-command-real.dashboard-command-v316 .command-activity-body,
.dark-palette-frame .dashboard-command-real.dashboard-command-v316 .command-alerts-body,
.dark-palette-frame .dashboard-command-real.dashboard-command-v316 .db-incoming-tabs,
.dark-palette-frame .dashboard-command-real.dashboard-command-v316 .pro-message-list,
.dark-palette-frame .dashboard-command-real.dashboard-command-v316 .building-state-matrix,
.dark-palette-frame .dashboard-command-real.dashboard-command-v316 .command-building-panel,
.dark-palette-frame .dashboard-command-real.dashboard-command-v316 .command-zone-list,
.dark-palette-frame .dashboard-command-real.dashboard-command-v316 .command-zone-summary,
.dark-palette-frame .dashboard-command-real.dashboard-command-v316 .command-zone-help,
.dark-palette-frame .dashboard-command-real.dashboard-command-v316 .dashboard-info-strip,
.dark-palette-frame .dashboard-command-real.dashboard-command-v316 .pro-empty{
 background:#06182c!important;color:#f5fbff!important;border-color:#155078!important
}
.dark-palette-frame .dashboard-command-real.dashboard-command-v316 input,
.dark-palette-frame .dashboard-command-real.dashboard-command-v316 select,
.dark-palette-frame .dashboard-command-real.dashboard-command-v316 textarea{background:#08243d!important;color:#f5fbff!important;border-color:#1a5b85!important}
.dark-palette-frame .dashboard-command-real.dashboard-command-v316 .db-incoming-tabs button,
.dark-palette-frame .dashboard-command-real.dashboard-command-v316 .db-incoming-tabs span,
.dark-palette-frame .dashboard-command-real.dashboard-command-v316 .command-zone-help,
.dark-palette-frame .dashboard-command-real.dashboard-command-v316 .command-zone-summary,
.dark-palette-frame .dashboard-command-real.dashboard-command-v316 p{color:#d9edf9!important}
.dark-palette-frame .dashboard-command-real.dashboard-command-v316 .db-incoming-tabs button.active{color:#fff!important;border-color:#27a7ff!important}
@media(max-width:760px){
 .dashboard-header-status,.shell-command-status{display:none!important}
}


/* RC3.34.29 — Modo Comando: eliminar superficies claras residuales y forzar texto legible. */
.dark-palette-frame .dashboard-command-real.dashboard-command-v316 .command-building-card .pro-card-body,
.dark-palette-frame .dashboard-command-real.dashboard-command-v316 .command-building-panel,
.dark-palette-frame .dashboard-command-real.dashboard-command-v316 .command-zone-list,
.dark-palette-frame .dashboard-command-real.dashboard-command-v316 .command-zone-list > *,
.dark-palette-frame .dashboard-command-real.dashboard-command-v316 .command-incoming-card .pro-card-body,
.dark-palette-frame .dashboard-command-real.dashboard-command-v316 .command-incoming-card .db-incoming-tabs,
.dark-palette-frame .dashboard-command-real.dashboard-command-v316 .command-incoming-card .pro-message-list,
.dark-palette-frame .dashboard-command-real.dashboard-command-v316 .command-activity-card .pro-card-body,
.dark-palette-frame .dashboard-command-real.dashboard-command-v316 .command-alerts-card .pro-card-body {
  background:#06182c !important;
  color:#f5fbff !important;
  border-color:#155078 !important;
}
.dark-palette-frame .dashboard-command-real.dashboard-command-v316 .command-building-card :is(p,span,b,strong,small,label),
.dark-palette-frame .dashboard-command-real.dashboard-command-v316 .command-incoming-card :is(p,span,b,strong,small,label,button),
.dark-palette-frame .dashboard-command-real.dashboard-command-v316 .command-activity-card :is(p,span,b,strong,small,label),
.dark-palette-frame .dashboard-command-real.dashboard-command-v316 .command-alerts-card :is(p,span,b,strong,small,label){
  color:#f5fbff !important;
}
.dark-palette-frame .dashboard-command-real.dashboard-command-v316 .command-building-help,
.dark-palette-frame .dashboard-command-real.dashboard-command-v316 .dashboard-info-strip{
  background:#08243d !important; color:#d9edf9 !important; border-color:#155078 !important;
}
/* RC3.34.34 - estado operacional visual en zonas */
.db-zone-person{padding:12px 10px;border-radius:10px;margin:6px 0;border:1px solid #e2e8f0;background:#fff}
.db-zone-person-main{display:flex;align-items:center;gap:10px;min-width:0}.db-zone-person-icon{width:38px;height:38px;border-radius:50%;display:grid;place-items:center;color:#fff;flex:0 0 38px}.db-zone-status{display:inline-flex;align-items:center;gap:7px;font-weight:800;padding:7px 11px;border-radius:999px;white-space:nowrap}.db-zone-person-icon.safe,.db-zone-status.safe{background:#16a34a;color:#fff}.db-zone-person-icon.evacuating,.db-zone-status.evacuating{background:#2563eb;color:#fff}.db-zone-person-icon.outside,.db-zone-status.outside{background:#7c3aed;color:#fff}.db-zone-person-icon.help,.db-zone-status.help{background:#dc2626;color:#fff}.db-zone-person-icon.pending,.db-zone-status.pending,.db-zone-person-icon.neutral,.db-zone-status.neutral{background:#f59e0b;color:#fff}
html[data-portal-view="command"] .db-zone-person{background:#071d33;border-color:#15517a;color:#fff}html[data-portal-view="command"] .db-zone-person small{color:#b9d4e8}

/* ============================================================
   RC3.34.50 - Modales Planos/Layout en modo Comando
   Mantiene modo Clasica intacto. En Comando: superficie oscura
   y tipografia/controles de alto contraste.
   ============================================================ */
html.dark-palette-frame .fp3-modal,
body.dark-palette-frame .fp3-modal{
  background:#071d31!important;
  color:#f8fbff!important;
  border:1px solid #1d5278!important;
  box-shadow:0 30px 90px rgba(0,0,0,.62)!important;
}
html.dark-palette-frame .fp3-modal h1,
html.dark-palette-frame .fp3-modal h2,
html.dark-palette-frame .fp3-modal h3,
html.dark-palette-frame .fp3-modal p,
html.dark-palette-frame .fp3-modal label,
html.dark-palette-frame .fp3-modal .eyebrow,
html.dark-palette-frame .fp3-modal .fp3-form-help,
body.dark-palette-frame .fp3-modal h1,
body.dark-palette-frame .fp3-modal h2,
body.dark-palette-frame .fp3-modal h3,
body.dark-palette-frame .fp3-modal p,
body.dark-palette-frame .fp3-modal label,
body.dark-palette-frame .fp3-modal .eyebrow,
body.dark-palette-frame .fp3-modal .fp3-form-help{
  color:#fff!important;
  opacity:1!important;
}
html.dark-palette-frame .fp3-modal input,
html.dark-palette-frame .fp3-modal textarea,
html.dark-palette-frame .fp3-modal select,
body.dark-palette-frame .fp3-modal input,
body.dark-palette-frame .fp3-modal textarea,
body.dark-palette-frame .fp3-modal select{
  background:#0a2944!important;
  color:#fff!important;
  border-color:#2c6289!important;
  caret-color:#fff!important;
}
html.dark-palette-frame .fp3-modal input::placeholder,
html.dark-palette-frame .fp3-modal textarea::placeholder,
body.dark-palette-frame .fp3-modal input::placeholder,
body.dark-palette-frame .fp3-modal textarea::placeholder{color:#a9c3d7!important;opacity:1!important}
html.dark-palette-frame .fp3-modal .fp3-template-readonly>div,
body.dark-palette-frame .fp3-modal .fp3-template-readonly>div{
  background:#0a2944!important;border-color:#2c6289!important;color:#fff!important
}
html.dark-palette-frame .fp3-modal .fp3-template-readonly span,
body.dark-palette-frame .fp3-modal .fp3-template-readonly span{color:#bcd3e4!important}
html.dark-palette-frame .fp3-modal .modal-actions,
body.dark-palette-frame .fp3-modal .modal-actions{
  background:#071d31!important;
  border-top:1px solid #1d5278!important;
}
html.dark-palette-frame .fp3-modal .icon-btn,
body.dark-palette-frame .fp3-modal .icon-btn{
  background:#0a2944!important;color:#fff!important;border-color:#2c6289!important
}
html.dark-palette-frame .fp3-modal [data-upload-drop],
body.dark-palette-frame .fp3-modal [data-upload-drop]{
  background:#0a2944!important;color:#fff!important;border-color:#4d7898!important
}
html.dark-palette-frame .fp3-modal [data-upload-drop] *,
body.dark-palette-frame .fp3-modal [data-upload-drop] *{color:#fff!important}

/* RC3.34.52 - editor de zonas libres: estilo de línea */
.fp3-zone-style{display:grid;grid-template-columns:1fr 1fr;gap:10px;padding:12px;border:1px solid #d9e2ec;border-radius:12px;background:#f8fafc}.fp3-zone-style>b{grid-column:1/-1}.fp3-zone-style label{margin:0}.fp3-zone-style input[type=color]{height:38px;padding:3px;width:100%}.fp3-zone-style input[type=range]{width:100%}
body.command-mode .fp3-zone-style{background:#071c31;border-color:#1e5b7d}body.command-mode .fp3-zone-style b,body.command-mode .fp3-zone-style label,body.command-mode .fp3-zone-style span{color:#fff}

/* RC3.34.52 - Planos/Layout: inspector consistente en Vista Comando */
body.command-mode .fp3-inspector,
html.command-view-frame .fp3-inspector,
body.command-view-frame .fp3-inspector{
  background:#06182c!important;
  border-color:#164568!important;
  color:#eaf4fb!important;
}
body.command-mode .fp3-inspector-head,
html.command-view-frame .fp3-inspector-head,
body.command-view-frame .fp3-inspector-head{border-color:#164568!important}
body.command-mode .fp3-inspector h3,
body.command-mode .fp3-inspector .eyebrow,
body.command-mode .fp3-inspector .fp3-form>label,
body.command-mode .fp3-inspector .fp3-form>label>span,
body.command-mode .fp3-inspector .fp3-zone-style>b,
body.command-mode .fp3-inspector .fp3-zone-style label,
body.command-mode .fp3-inspector .fp3-zone-style span{color:#fff!important}
body.command-mode .fp3-inspector .fp3-zone-style{
  background:#071c31!important;
  border-color:#1e5b7d!important;
}
body.command-mode .fp3-inspector input:not([type="color"]):not([type="range"]),
body.command-mode .fp3-inspector select,
body.command-mode .fp3-inspector textarea{
  background:#08233b!important;
  border-color:#2a6388!important;
  color:#fff!important;
}
body.command-mode .fp3-inspector select option{background:#08233b;color:#fff}
body.command-mode .fp3-inspector input::placeholder,
body.command-mode .fp3-inspector textarea::placeholder{color:#91aec3!important}
body.command-mode .fp3-inspector .btn-primary,
body.command-mode .fp3-inspector .btn-danger{background:#fff!important;color:#071c31!important;border-color:#d8e4ec!important}
body.command-mode .fp3-inspector .btn-soft{background:#0b3a5b!important;color:#fff!important;border-color:#2a6388!important}
/* RC3.34.54 - paneo del plano operacional con mouse/mano */
.dashboard-command-real .command-floor-plan .dashboard-operational-plan svg{touch-action:none;cursor:grab;user-select:none;will-change:transform}
.dashboard-command-real .command-floor-plan .dashboard-operational-plan svg:active{cursor:grabbing}

/* RC3.34.54 - Planos/Layout: inspector de zonas en Vista Comando real (dark-palette-frame) */
html.dark-palette-frame .fp3-inspector,
body.dark-palette-frame .fp3-inspector{
  background:#06182c!important;
  border-color:#164568!important;
  color:#eaf4fb!important;
}
html.dark-palette-frame .fp3-inspector-head,
body.dark-palette-frame .fp3-inspector-head{border-color:#164568!important}
html.dark-palette-frame .fp3-inspector h3,
body.dark-palette-frame .fp3-inspector h3,
html.dark-palette-frame .fp3-inspector .eyebrow,
body.dark-palette-frame .fp3-inspector .eyebrow,
html.dark-palette-frame .fp3-inspector .fp3-form>label,
body.dark-palette-frame .fp3-inspector .fp3-form>label,
html.dark-palette-frame .fp3-inspector .fp3-form>label>span,
body.dark-palette-frame .fp3-inspector .fp3-form>label>span,
html.dark-palette-frame .fp3-inspector .fp3-zone-style>b,
body.dark-palette-frame .fp3-inspector .fp3-zone-style>b,
html.dark-palette-frame .fp3-inspector .fp3-zone-style label,
body.dark-palette-frame .fp3-inspector .fp3-zone-style label,
html.dark-palette-frame .fp3-inspector .fp3-zone-style span,
body.dark-palette-frame .fp3-inspector .fp3-zone-style span{color:#fff!important;opacity:1!important}
html.dark-palette-frame .fp3-inspector .fp3-zone-style,
body.dark-palette-frame .fp3-inspector .fp3-zone-style{background:#071c31!important;border-color:#1e5b7d!important}
html.dark-palette-frame .fp3-inspector input:not([type="color"]):not([type="range"]),
body.dark-palette-frame .fp3-inspector input:not([type="color"]):not([type="range"]),
html.dark-palette-frame .fp3-inspector select,
body.dark-palette-frame .fp3-inspector select,
html.dark-palette-frame .fp3-inspector textarea,
body.dark-palette-frame .fp3-inspector textarea{background:#08233b!important;border-color:#2a6388!important;color:#fff!important}
html.dark-palette-frame .fp3-inspector select option,
body.dark-palette-frame .fp3-inspector select option{background:#08233b!important;color:#fff!important}
