.brand-header{background:#fff;border-bottom:1px solid var(--border);position:sticky;top:0;z-index:50}.brand-header-inner{display:flex;align-items:center;justify-content:space-between;gap:clamp(16px,4vw,48px);padding:14px clamp(16px,3vw,36px);max-width:1400px;margin:0 auto;width:100%}.brand-header-logo{height:clamp(42px,6vw,56px);width:auto;object-fit:contain;display:block;flex-shrink:0}.brand-header-title{margin:0;color:var(--brand);font-size:clamp(.95rem,2.4vw,1.55rem);font-weight:800;letter-spacing:.04em;text-transform:uppercase;text-align:right;line-height:1.15}.sidebar{background:var(--sidebar);border-right:1px solid var(--border);padding:18px 12px;display:flex;flex-direction:column;gap:14px;min-height:100%}.sidebar-top{display:flex;align-items:flex-start;justify-content:space-between;gap:8px;padding:4px 6px 8px;border-bottom:1px solid var(--border)}.sidebar-caption{margin:0 0 4px;font-size:.68rem;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--brand)}.sidebar-user{display:block;font-size:.92rem;color:var(--text)}.sidebar-email{display:block;font-size:.75rem;color:var(--text-soft);margin-top:2px;word-break:break-all}.sidebar-close{display:none;border:none;background:transparent;color:var(--text-soft);padding:4px}.sidebar-close svg{width:20px;height:20px}.sidebar-nav{display:grid;gap:2px;flex:1;align-content:start}.nav-item{display:flex;align-items:center;gap:8px;padding:9px 10px;border-radius:8px;color:var(--text-soft);font-size:.88rem;min-height:38px}.nav-item svg{width:18px;height:18px;flex-shrink:0}.nav-item:hover{background:var(--sidebar-soft);color:var(--text)}.nav-item.is-active{background:var(--brand-soft);color:var(--brand);font-weight:650}.logout-btn{display:flex;align-items:center;gap:8px;width:100%;border:1px solid var(--border);background:transparent;color:var(--text-soft);border-radius:8px;padding:9px 10px;font-size:.86rem;margin-top:auto}.logout-btn svg{width:18px;height:18px}.logout-btn:hover{color:var(--brand);border-color:#a0001c59;background:var(--brand-soft)}.mobile-menu-btn{display:none;align-items:center;gap:8px;border:1px solid var(--border);background:#fff;color:var(--brand);border-radius:10px;padding:8px 12px;font-weight:600;font-size:.85rem;margin:12px 16px 0;width:fit-content;align-self:flex-start}.mobile-menu-btn svg{width:18px;height:18px}.sidebar-backdrop{display:none}@media(max-width:900px){.brand-header-inner{flex-direction:column;align-items:flex-start;gap:8px;padding:12px 16px}.brand-header-title{text-align:left;font-size:1rem}.mobile-menu-btn{display:inline-flex}.sidebar{position:fixed;inset:0 auto 0 0;width:min(280px,86vw);z-index:40;transform:translate(-105%);transition:transform .25s ease;box-shadow:8px 0 30px #1a1a1e1a}.sidebar.is-open{transform:translate(0)}.sidebar-backdrop.is-open{display:block;position:fixed;top:0;right:0;bottom:0;left:0;background:#1a1a1e47;z-index:35}.sidebar-close{display:grid;place-items:center}}.ui-field{display:grid;gap:6px}.ui-label{font-size:.82rem;font-weight:600;color:var(--text)}.ui-input{width:100%;border:1px solid var(--border);background:#fff;border-radius:12px;padding:12px 14px;color:var(--text);outline:none;transition:border-color .15s ease,box-shadow .15s ease}.ui-input:focus{border-color:#a0001c73;box-shadow:0 0 0 3px var(--brand-soft)}.ui-input.is-error{border-color:var(--brand)}.ui-field-error{font-size:.75rem;color:var(--brand)}.ui-btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;border:none;border-radius:12px;font-weight:650;transition:background .15s ease,transform .1s ease}.ui-btn:disabled{opacity:.65;cursor:not-allowed}.ui-btn-md{padding:11px 16px;font-size:.92rem}.ui-btn-sm{padding:8px 12px;font-size:.82rem}.ui-btn-primary{background:var(--brand);color:#fff}.ui-btn-primary:hover:not(:disabled){background:var(--brand-dark)}.ui-btn-ghost{background:transparent;color:var(--text-soft);border:1px solid var(--border)}.ui-btn-ghost:hover:not(:disabled){color:var(--brand);border-color:#a0001c4d;background:var(--brand-soft)}.ui-select{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-image:linear-gradient(45deg,transparent 50%,#666 50%),linear-gradient(135deg,#666 50%,transparent 50%);background-position:calc(100% - 18px) 55%,calc(100% - 12px) 55%;background-size:6px 6px,6px 6px;background-repeat:no-repeat;padding-right:34px}.ghost-icon{border:none;background:transparent;color:inherit;opacity:.55;padding:4px;display:grid;place-items:center}.ghost-icon svg{width:18px;height:18px}.ui-pagination{display:flex;justify-content:space-between;align-items:center;gap:12px;flex-wrap:wrap;padding-top:14px;color:var(--text-soft);font-size:.85rem}.ui-pagination-actions{display:flex;gap:8px}.ui-modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#0a0a0c8c;display:grid;place-items:center;padding:16px;z-index:50}.ui-modal{width:min(520px,100%);background:#fff;border-radius:22px;padding:18px;box-shadow:0 30px 80px #0000004d;max-height:min(90vh,720px);overflow:auto}.ui-modal-wide{width:min(640px,100%)}.ui-modal-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:12px}.ui-modal-head h3{margin:0;font-size:1.05rem}.ui-modal-body{display:grid;gap:12px}.ui-modal-footer{display:flex;justify-content:flex-end;gap:8px;margin-top:16px}.pwd-hint{margin:0;color:var(--text-soft);font-size:.86rem;line-height:1.45}.form-ok{background:#2f9e441f;color:var(--success);border:1px solid rgba(47,158,68,.25);border-radius:10px;padding:10px 12px;font-size:.86rem}.person-avatar{width:40px;height:40px;border-radius:50%;object-fit:cover;background:var(--brand-soft);color:var(--brand);display:grid;place-items:center;font-weight:700;font-size:.78rem;flex-shrink:0}.person-avatar img{width:100%;height:100%;border-radius:50%;object-fit:cover}.page-toolbar{display:flex;flex-wrap:wrap;gap:10px;align-items:flex-end;margin-bottom:14px}.page-toolbar .ui-field{min-width:min(200px,100%);flex:1}.page-actions{display:flex;gap:8px;flex-wrap:wrap;margin-left:auto}.row-person{display:flex;align-items:center;gap:10px}.row-person strong{display:block;font-size:.88rem}.row-person span{display:block;font-size:.74rem;color:var(--text-soft)}.photo-preview{width:72px;height:72px;border-radius:14px;object-fit:cover;background:var(--sidebar-soft);border:1px solid var(--border)}.login-stage{height:100vh;max-height:100dvh;overflow:hidden;display:grid;place-items:center;padding:clamp(12px,2.2vh,24px);background:radial-gradient(circle at 12% 18%,rgba(160,0,28,.1),transparent 42%),radial-gradient(circle at 88% 80%,rgba(241,210,135,.35),transparent 40%),linear-gradient(160deg,#f8f6f2,#eee8e0)}.login-card{width:min(980px,100%);height:min(620px,calc(100vh - 28px));max-height:calc(100dvh - 28px);display:grid;grid-template-columns:1fr 1fr;background:#fff;border-radius:28px;overflow:hidden;box-shadow:0 24px 70px #1a1a1e1f;animation:login-in .55s ease both}.login-form-side{display:flex;flex-direction:column;justify-content:center;padding:clamp(22px,3.5vh,42px) clamp(22px,3vw,44px);min-height:0}.login-brand{display:flex;align-items:center;gap:12px;margin-bottom:clamp(16px,3vh,28px)}.login-brand img{height:42px;width:auto;object-fit:contain}.login-brand span{font-size:.7rem;font-weight:750;letter-spacing:.05em;text-transform:uppercase;color:var(--brand);line-height:1.25;max-width:11rem}.login-head{margin-bottom:clamp(14px,2.4vh,22px)}.login-head h1{margin:0;font-size:clamp(1.55rem,3.2vh,2rem);letter-spacing:-.04em;font-weight:750;color:#17171b}.login-head p{margin:8px 0 0;color:var(--text-soft);font-size:.9rem}.login-form-side .form-stack{gap:12px}.login-submit{width:100%;margin-top:6px}.login-remember{display:flex;align-items:center;justify-content:space-between;gap:12px;font-size:.86rem;color:var(--text);font-weight:550;-webkit-user-select:none;user-select:none}.login-switch{-webkit-appearance:none;-moz-appearance:none;appearance:none;width:46px;height:26px;border-radius:999px;background:#d7d8df;position:relative;cursor:pointer;transition:background .2s ease;flex-shrink:0}.login-switch:after{content:"";position:absolute;top:3px;left:3px;width:20px;height:20px;border-radius:50%;background:#fff;box-shadow:0 2px 6px #0000002e;transition:transform .2s ease}.login-switch:checked{background:var(--brand)}.login-switch:checked:after{transform:translate(20px)}.login-foot{margin:clamp(14px,2.5vh,22px) 0 0;color:var(--text-soft);font-size:.76rem}.login-visual{position:relative;min-height:0;background:var(--brand)}.login-visual:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none;background:linear-gradient(180deg,#14141800,#1414181a 45%,#a0001c8c)}.login-visual img{width:100%;height:100%;object-fit:cover;object-position:center 28%;display:block;animation:login-ken 14s ease-out forwards}.login-visual-copy{position:absolute;left:24px;right:24px;bottom:28px;z-index:1;color:#fff;text-shadow:0 10px 28px rgba(0,0,0,.35);animation:login-rise .7s ease .15s both}.login-visual-copy h2{margin:0 0 8px;font-size:clamp(1.15rem,2.4vh,1.55rem);line-height:1.2;letter-spacing:-.03em}.login-visual-copy p{margin:0;font-size:.86rem;opacity:.92}@keyframes login-in{0%{opacity:0;transform:translateY(14px) scale(.985)}to{opacity:1;transform:translateY(0) scale(1)}}@keyframes login-ken{0%{transform:scale(1.05)}to{transform:scale(1)}}@keyframes login-rise{0%{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}}@media(max-width:860px){.login-card{grid-template-columns:1fr;height:auto;max-height:calc(100dvh - 24px);overflow:auto}.login-visual{min-height:180px;max-height:34vh;order:-1}.login-form-side{padding:20px 18px 22px}}.dash-kpis{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px;margin-bottom:18px}.dash-kpi{display:flex;gap:12px;align-items:flex-start;background:#fff;border:1px solid var(--border);border-radius:var(--radius-sm);padding:16px;box-shadow:var(--shadow)}.dash-kpi-icon{width:40px;height:40px;border-radius:10px;display:grid;place-items:center;flex-shrink:0}.dash-kpi-icon svg{width:20px;height:20px}.tone-brand .dash-kpi-icon{background:var(--brand-soft);color:var(--brand)}.tone-gold .dash-kpi-icon{background:var(--gold-soft);color:#8a6a1f}.tone-ok .dash-kpi-icon{background:#2f9e441f;color:var(--success)}.tone-warn .dash-kpi-icon{background:#c4921a24;color:var(--warning)}.dash-kpi-label{display:block;font-size:.78rem;color:var(--text-soft);font-weight:550}.dash-kpi-value{display:block;font-size:1.45rem;letter-spacing:-.03em;margin:2px 0;color:var(--text)}.dash-kpi-hint{display:block;font-size:.74rem;color:var(--text-soft)}.dash-grid{display:grid;grid-template-columns:1.4fr 1fr;gap:14px}.dash-panel{background:#fff;border:1px solid var(--border);border-radius:var(--radius-sm);box-shadow:var(--shadow);overflow:hidden}.dash-panel-head{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:14px 16px;border-bottom:1px solid var(--border)}.dash-panel-head h2{margin:0;font-size:.98rem;font-weight:700}.dash-panel-head>span{font-size:.78rem;color:var(--text-soft)}.dash-pill{background:#2f9e441f;color:var(--success);font-weight:650;padding:4px 8px;border-radius:999px}.dash-list{list-style:none;margin:0;padding:6px 0}.dash-list li{display:grid;grid-template-columns:32px 1fr auto;gap:10px;align-items:center;padding:10px 16px}.dash-list li:hover{background:var(--sidebar-soft)}.dash-list strong{display:block;font-size:.9rem}.dash-list div>span{display:block;font-size:.76rem;color:var(--text-soft)}.dash-list time{font-size:.78rem;color:var(--text-soft);font-variant-numeric:tabular-nums}.dash-status{width:28px;height:28px;border-radius:50%;display:grid;place-items:center}.dash-status svg{width:14px;height:14px}.dash-status.is-ok{background:#2f9e441f;color:var(--success)}.dash-status.is-bad{background:var(--brand-soft);color:var(--brand)}.dash-doors{display:grid;gap:2px;padding:8px}.dash-door{display:grid;grid-template-columns:28px 1fr auto;gap:10px;align-items:center;padding:12px 10px;border-radius:10px}.dash-door:hover{background:var(--sidebar-soft)}.dash-door>svg{width:20px;height:20px;color:var(--brand)}.dash-door strong{display:block;font-size:.88rem}.dash-door span{display:block;font-size:.74rem;color:var(--text-soft)}.dash-dot{width:8px;height:8px;border-radius:50%;background:var(--success);box-shadow:0 0 0 4px #2f9e4426}.simple-page th,.simple-page td{text-align:left;padding:10px 8px;border-bottom:1px solid var(--border)}@media(max-width:1100px){.dash-kpis{grid-template-columns:repeat(2,minmax(0,1fr))}.dash-grid{grid-template-columns:1fr}}@media(max-width:560px){.dash-kpis{grid-template-columns:1fr}}.live-banner{background:var(--gold-soft);color:#6a5214;border:1px solid rgba(241,210,135,.7);border-radius:12px;padding:10px 14px;font-size:.86rem;font-weight:600;margin-bottom:12px}.accesos-layout{display:grid;grid-template-columns:minmax(260px,320px) 1fr;gap:14px;align-items:start}@media(max-width:960px){.accesos-layout{grid-template-columns:1fr}}.cal{background:#fff;border:1px solid var(--border);border-radius:var(--radius-sm);box-shadow:var(--shadow);padding:14px}.cal-head{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:10px}.cal-head strong{font-size:.95rem}.cal-nav{display:flex;gap:6px}.cal-quick{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:12px}.cal-weekdays{display:grid;grid-template-columns:repeat(7,1fr);gap:4px;margin-bottom:4px}.cal-weekdays span{text-align:center;font-size:.7rem;color:var(--text-soft);font-weight:650;text-transform:uppercase}.cal-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:4px}.cal-day{aspect-ratio:1;border:1px solid transparent;border-radius:10px;background:transparent;color:var(--text);font-size:.82rem;font-weight:600;position:relative;padding:0}.cal-day:hover:not(:disabled){background:var(--sidebar-soft)}.cal-day.is-muted{color:#b0b0b8;font-weight:500}.cal-day.is-today{border-color:var(--gold)}.cal-day.is-selected{background:var(--brand);color:#fff}.cal-day .cal-dot{position:absolute;bottom:4px;left:50%;transform:translate(-50%);width:5px;height:5px;border-radius:50%;background:var(--brand)}.cal-day.is-selected .cal-dot{background:var(--gold)}.cal-day.has-many .cal-dot{width:7px;height:7px}.filters-inline{display:flex;flex-wrap:wrap;gap:10px;margin-bottom:12px}.filters-inline .ui-field{min-width:140px;flex:1}:root{--brand: #a0001c;--brand-dark: #7a0015;--brand-soft: rgba(160, 0, 28, .1);--gold: #f1d287;--gold-soft: rgba(241, 210, 135, .28);--sidebar: #ffffff;--sidebar-soft: #f7f7f9;--bg: #f5f6f8;--surface: #ffffff;--text: #1a1a1e;--text-soft: #6b6b75;--border: #e6e7ec;--success: #2f9e44;--warning: #c4921a;--danger: #a0001c;--radius: 16px;--radius-sm: 12px;--shadow: 0 8px 22px rgba(26, 26, 30, .05);--font: "Poppins", system-ui, sans-serif;--sidebar-width: 248px}*{box-sizing:border-box}html,body,#root{margin:0;min-height:100%}body{font-family:var(--font);background:var(--bg);color:var(--text);-webkit-font-smoothing:antialiased}button,input,select,textarea{font:inherit}a{color:inherit;text-decoration:none}button{cursor:pointer}.app-shell{min-height:100vh;display:flex;flex-direction:column;background:var(--bg)}.app-frame{display:grid;grid-template-columns:var(--sidebar-width) 1fr;flex:1;min-height:0;overflow:hidden}.main-area{display:flex;flex-direction:column;min-width:0;min-height:100%}.main-scroll{flex:1;padding:24px 28px 20px;overflow:auto}.page-head{margin-bottom:22px}.page-head h1{margin:0;font-size:clamp(1.35rem,2.4vw,1.7rem);letter-spacing:-.03em;color:var(--text)}.page-head p{margin:6px 0 0;color:var(--text-soft);font-size:.9rem}.form-error{background:#a0001c14;color:var(--brand);border:1px solid rgba(160,0,28,.2);border-radius:10px;padding:10px 12px;font-size:.86rem}.badge{display:inline-flex;align-items:center;padding:3px 8px;border-radius:999px;font-size:.74rem;font-weight:650}.badge-ok{background:#2f9e441f;color:var(--success)}.badge-bad{background:var(--brand-soft);color:var(--brand)}.badge-gold{background:var(--gold-soft);color:#8a6a1f}.badge-muted{background:#efeff3;color:#555}.table-wrap{overflow-x:auto}.simple-page{background:#fff;border:1px solid var(--border);border-radius:var(--radius-sm);box-shadow:var(--shadow);padding:20px}.simple-page table{width:100%;border-collapse:collapse;font-size:.88rem}.simple-page th,.simple-page td{text-align:left;padding:10px 8px;border-bottom:1px solid var(--border);vertical-align:middle}.simple-page th{color:var(--text-soft);font-weight:600;font-size:.78rem;text-transform:uppercase;letter-spacing:.04em}.page-head-row{display:flex;flex-wrap:wrap;align-items:flex-start;justify-content:space-between;gap:12px;margin-bottom:22px}.page-head-row .page-head{margin-bottom:0}.form-stack{display:grid;gap:14px}@media(max-width:900px){.app-frame{grid-template-columns:1fr}.main-scroll{padding:18px 16px 16px}}
