/* Access Control & Attendance */
.acx{display:flex;flex-direction:column;gap:14px;color:#10253b}
#acBody{display:flex;flex-direction:column;gap:14px}
.acx h3{margin:0;font-size:15px;font-weight:800;color:#082945;display:flex;align-items:center;gap:8px}
.acx p{margin:0}
.ac-tabs{display:flex;gap:4px;border-bottom:1px solid #d9e6ec;overflow-x:auto}
.ac-tabs button{height:42px;padding:0 16px;border:0;border-bottom:3px solid transparent;background:transparent;color:#4d6478;font:inherit;font-size:14px;font-weight:700;cursor:pointer;white-space:nowrap}
.ac-tabs button[aria-current=page]{color:#082945;border-bottom-color:#00b5bb}
.ac-head{display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.ac-head .primary,.ac-head .ghost,.ac-btn{height:40px;font-weight:700;display:inline-flex;align-items:center;text-decoration:none}
.ac-gw{flex:1;display:flex;align-items:center;gap:8px;font-size:13px;color:#4d6478}.ac-gw i{width:8px;height:8px;border-radius:50%;background:#1f9d6b}.ac-gw i.warn{background:#e08a1e}
.ac-muted{font-size:12.5px;color:#5d7387}.bad{color:#a12639}.warn{color:#8a5200;font-weight:700}.ok-t{color:#0d6b4a;font-weight:700}
.ac-kpis{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:12px}.ac-kpis.six{grid-template-columns:repeat(6,minmax(0,1fr))}
.ac-kpi{background:#fff;border:1px solid #d9e6ec;border-radius:14px;padding:12px 16px;display:flex;flex-direction:column;gap:4px;min-width:0;font:inherit;color:inherit;text-align:left}
button.ac-kpi{cursor:pointer}button.ac-kpi[aria-pressed=true]{border:2px solid #00b5bb;background:#f0fbfb}
.ac-kpi span{font-size:12.5px;font-weight:700;color:#4d6478}.ac-kpi b{font-size:26px;font-weight:800;color:#082945;font-variant-numeric:tabular-nums}
.ac-kpi small{font-size:12px;font-weight:600;color:#4d6478;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.ac-kpi small.bad{color:#a12639}
.ac-kpi.late b,.ac-kpi.early b{color:#8a5200}.ac-kpi.absent b{color:#a12639}.ac-kpi.ontime b{color:#0d6b4a}.ac-kpi.missing b{color:#5b3fb0}
.ac-pill{display:inline-block;font-size:11px;font-weight:800;padding:3px 9px;border-radius:20px;white-space:nowrap;background:#eef3f6;color:#4d6478}
.ac-pill.ok{background:#e3f6ed;color:#0d6b4a}.ac-pill.bad{background:#fdecee;color:#a12639}.ac-pill.warn{background:#fff3e0;color:#8a5200}
.ac-pill.info{background:#e6f0fb;color:#1d4f91}.ac-pill.purple{background:#efeafb;color:#5b3fb0}
.ac-av{border-radius:50%;display:inline-grid;place-items:center;font-size:12px;font-weight:800;color:#fff;flex-shrink:0;object-fit:cover}
.ac-av.door{width:36px;height:36px;background:#e6f0fb;color:#1d4f91;font-size:16px}
.ac-box{background:#fff;border:1px solid #d9e6ec;border-radius:14px;padding:14px 16px;min-width:0}
.ac-bh{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:6px}
.ac-chips{display:flex;gap:6px;flex-wrap:wrap}
.ac-chips button{height:34px;padding:0 14px;border-radius:20px;border:1px solid #c9dbe3;background:#fff;color:#33495c;font:inherit;font-size:13px;font-weight:700;cursor:pointer}
.ac-chips.sm button{height:28px;padding:0 10px;font-size:12px}
.ac-chips button[aria-pressed=true]{background:#193966;border-color:#193966;color:#fff}
.ac-empty{background:#fff;border:1px dashed #b9cfd9;border-radius:16px;padding:40px;display:flex;flex-direction:column;align-items:center;gap:10px;text-align:center}.ac-empty b{font-size:17px;color:#082945}
/* live */
.ac-live{display:grid;grid-template-columns:minmax(0,1fr) 420px;gap:14px;align-items:start}
.ac-doors{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:12px}
.ac-door{background:#fff;border:1px solid #d9e6ec;border-radius:14px;padding:14px;display:flex;flex-direction:column;gap:8px}
.ac-door.alert{border:2px solid #e8a3ae}
.ac-dh{display:flex;align-items:center;gap:8px}.ac-dh b{flex:1;font-size:14.5px}
.ac-last{display:flex;align-items:center;gap:8px;padding:8px;border-radius:10px;background:#f6fafb;min-height:46px}
.ac-last span{display:flex;flex-direction:column;min-width:0}.ac-last b{font-size:12.5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.ac-last small{font-size:11.5px;color:#5d7387}
.ac-da{display:flex;gap:6px;margin-top:auto}.ac-da .primary{flex:1;height:38px;font-weight:800}.ac-da select{height:38px;width:110px;padding:0 8px}
.ac-feed{max-height:calc(100vh - 290px);overflow:auto}
.ac-rec{width:8px;height:8px;border-radius:50%;background:#c2364b;display:inline-block}
.ac-ev{display:flex;align-items:center;gap:10px;padding:8px 0;border-top:1px solid #eef3f6}
.ac-evx{display:flex;flex-direction:column;flex:1;min-width:0}.ac-evx b{font-size:13px}.ac-evx small{font-size:11.5px;color:#5d7387}
.ac-evr{display:flex;flex-direction:column;align-items:flex-end;gap:3px}.ac-evr small{font-size:11px;color:#5d7387;font-variant-numeric:tabular-nums}
/* tables */
.ac-table{padding:0;overflow:auto}
.ac-tr{display:grid;gap:10px;align-items:center;padding:9px 16px;border:0;border-top:1px solid #eef3f6;background:#fff;font:inherit;font-size:13.5px;color:inherit;text-align:left;width:100%;box-sizing:border-box}
button.ac-tr{cursor:pointer}button.ac-tr:hover{background:#f8fbfc}.ac-tr.sel{background:#f0fbfb;box-shadow:inset 3px 0 0 #00b5bb}
.ac-th{background:#f6fafb;border-top:0;font-size:11.5px;font-weight:800;letter-spacing:.05em;color:#6a8094}
.ac-pgrid .ac-tr{grid-template-columns:40px minmax(0,1.4fr) 110px minmax(0,1fr) minmax(0,1.2fr) 150px;min-width:720px}
.ac-table.att .ac-tr{grid-template-columns:minmax(0,1.5fr) minmax(0,1fr) 80px 80px 70px 80px 90px 120px minmax(0,1fr);min-width:900px}
.ac-table.dev .ac-tr{grid-template-columns:minmax(0,1.4fr) 110px minmax(0,1fr) 80px 90px 110px 70px;min-width:720px}
.ac-table.doors .ac-tr{grid-template-columns:minmax(0,1.2fr) 120px minmax(0,1fr) 110px minmax(0,1fr) 60px;min-width:620px}
.ac-table .ac-bh{padding:12px 16px 4px;margin:0}
.ac-nm{display:flex;flex-direction:column;min-width:0}.ac-nm b{font-weight:700}.ac-nm small{font-size:12px;color:#5d7387;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.ac-num{font-variant-numeric:tabular-nums}
.ac-creds{display:flex;gap:4px;flex-wrap:wrap;align-items:center}.ac-creds i{font-style:normal;font-size:11px;font-weight:700;padding:2px 8px;border-radius:20px;background:#e6f5f6;color:#00586b}
.ac-st{font-size:12px;font-weight:700;color:#5d7387}.ac-st.ok{color:#0d6b4a}.ac-st.info{color:#1d4f91}.ac-st.warn{color:#8a5200}.ac-st.bad{color:#a12639}
/* people editor */
.ac-search{display:flex;align-items:center;gap:8px;height:40px;padding:0 12px;border:1px solid #c9dbe3;border-radius:10px;background:#fff;width:300px}.ac-search span{font-size:13px;color:#5d7387}
.ac-search input{border:0;padding:0;height:100%;flex:1;min-width:0;box-shadow:none!important}
.ac-pgrid{display:grid;grid-template-columns:minmax(0,1fr) 420px;gap:14px;align-items:start}
.ac-editor{position:sticky;top:12px}
.ac-form{display:flex;flex-direction:column;gap:12px}
.ac-form label,.ac-sf label{display:flex;flex-direction:column;gap:5px;font-size:12.5px;font-weight:700;color:#4d6478}
.ac-form label small{font-weight:500}.ac-form input,.ac-form select{height:40px;padding:0 10px;font-size:14px;width:100%;min-width:0;box-sizing:border-box}.ac-form .ac-chk input{width:18px}
.ac-ph{display:flex;gap:14px;align-items:flex-start}.ac-phx{display:flex;flex-direction:column;gap:10px;flex:1}
.ac-photo{width:96px!important;height:120px;flex-shrink:0;border-radius:12px;background:#e6f5f6;border:2px dashed #9fd9db;display:grid!important;place-items:center;text-align:center;font-size:11.5px;font-weight:700;color:#00586b;cursor:pointer;overflow:hidden;padding:0!important}
.ac-photo img{width:100%;height:100%;object-fit:cover}
.ac-g2{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.ac-groups{border:0;margin:0;padding:0;display:flex;flex-wrap:wrap;gap:8px 14px}.ac-groups legend{font-size:12.5px;font-weight:700;color:#4d6478;margin-bottom:6px;padding:0}
.ac-chk{flex-direction:row!important;align-items:center;gap:8px!important;font-weight:600!important;color:#10253b!important;font-size:13.5px!important}.ac-chk input{width:18px;height:18px}
.ac-devs{display:flex;flex-direction:column;gap:0;font-size:13px}.ac-devs b{font-size:12.5px;color:#4d6478;margin-bottom:4px}
.ac-devs div{display:flex;justify-content:space-between;gap:10px;padding:6px 0;border-top:1px solid #eef3f6}
.ac-fa{display:flex;gap:8px;flex-wrap:wrap}.ac-fa .primary{flex:1;height:42px;font-weight:800}
/* attendance */
.ac-day{display:flex;gap:4px;align-items:center}.ac-day input{height:40px}.ac-day .ghost{width:40px;height:40px;padding:0;font-size:18px}
.ac-dayname{font-size:15px;color:#082945}
/* devices */
.ac-dgrid{display:grid;grid-template-columns:420px minmax(0,1fr);gap:14px;align-items:start}
.ac-dcol{display:flex;flex-direction:column;gap:14px;min-width:0}
.ac-connect{display:flex;flex-direction:column;gap:12px}
.ac-keybox{display:flex;flex-direction:column;gap:8px;padding:14px;border-radius:12px;background:#f6fafb;border:1px solid #e3edf1}
.ac-kv{display:grid;grid-template-columns:130px minmax(0,1fr) 44px;gap:8px;align-items:center;font-size:12.5px}.ac-kv span{font-weight:700;color:#4d6478}
.ac-kv code{padding:7px 9px;border-radius:8px;background:#fff;border:1px solid #d9e6ec;font-size:13px;overflow:hidden;text-overflow:ellipsis}
.ac-wait{display:flex;align-items:center;gap:10px;padding:10px 12px;border-radius:10px;background:#fff8ec;border:1px solid #f1d8ad;font-size:13px;color:#6b4a14}
.ac-wait i{width:10px;height:10px;border-radius:50%;background:#e08a1e;flex-shrink:0;animation:acPulse 1.2s infinite}
.ac-wait.ok{background:#e3f6ed;border-color:#9fd8bd;color:#0d6b4a}.ac-wait.ok i{background:#1f9d6b;animation:none}
@keyframes acPulse{50%{opacity:.3}}@media (prefers-reduced-motion:reduce){.ac-wait i{animation:none}}
.ac-link{border:0;background:none;color:#00718a;font:inherit;font-size:12.5px;font-weight:700;cursor:pointer;padding:0}
.ac-na{display:flex;flex-direction:column;gap:6px;font-size:13px}.ac-na div{display:flex;gap:10px}
.ac-tr select{height:32px;padding:0 6px;font-size:12.5px}
/* rules */
.ac-matrix{padding:0;overflow:auto}
.ac-mr{display:grid;grid-template-columns:minmax(180px,1.4fr) repeat(var(--n),110px) minmax(120px,1fr);gap:8px;align-items:center;padding:10px 16px;border-top:1px solid #eef3f6}
.ac-mr.ac-th{border-top:0}.ac-mr.ac-th span{text-align:center}.ac-mr.ac-th span:first-child,.ac-mr.ac-th span:last-child{text-align:left}
.ac-mr>span{display:flex;justify-content:center}.ac-mr>span:last-child,.ac-mr.ac-th>span:first-child{justify-content:flex-start}
.ac-gn{display:flex;flex-direction:column;align-items:flex-start;border:0;background:none;font:inherit;cursor:pointer;padding:0;text-align:left;color:inherit}.ac-gn small{font-size:12px;color:#5d7387}
.ac-cell{width:40px;height:40px;border-radius:10px;border:1px dashed #b9cfd9;background:#fff;color:#b9cfd9;font:inherit;font-size:16px;font-weight:800;cursor:pointer}
.ac-cell[aria-pressed=true]{border:0;background:#193966;color:#fff}
.ac-scheds{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:12px}
.ac-sched{display:flex;flex-direction:column;gap:8px;align-items:flex-start;font:inherit;text-align:left;cursor:pointer}
.ac-days{display:flex;gap:4px}.ac-days i{font-style:normal;width:28px;height:28px;border-radius:8px;display:grid;place-items:center;font-size:12px;font-weight:800;background:#f3f6f8;color:#9aabba}.ac-days i.on{background:#e6f5f6;color:#00586b}
.ac-members{border:0;padding:0;margin:0}.ac-members legend{font-size:12px;color:var(--muted);margin-bottom:6px}
.ac-mlist{max-height:280px;overflow:auto;display:grid;grid-template-columns:1fr 1fr;gap:6px 14px;padding:8px;border:1px solid #d9e6ec;border-radius:10px}
@media (max-width:1180px){.ac-live,.ac-pgrid,.ac-dgrid{grid-template-columns:minmax(0,1fr)}.ac-kpis,.ac-kpis.six{grid-template-columns:repeat(3,minmax(0,1fr))}.ac-editor{position:static}.ac-feed{max-height:none}}
@media (max-width:640px){.ac-kpis,.ac-kpis.six{grid-template-columns:repeat(2,minmax(0,1fr))}.ac-g2{grid-template-columns:1fr}.ac-search{width:100%}.ac-mlist{grid-template-columns:1fr}}
.ac-impst{display:flex;flex-direction:column;gap:12px;margin-top:12px;padding:16px;border-radius:12px;background:#f6fafb;border:1px solid #e3edf1}
.ac-impst.done{background:#f1faf5;border-color:#bfe5d1}.ac-impst.error{background:#fff7f8;border-color:#f1ccd3}
.ac-impg{display:grid;grid-template-columns:1fr auto;gap:6px 20px;font-size:13.5px}.ac-impg b{font-variant-numeric:tabular-nums;text-align:right}
