:root{
  --pp-accent:#4f46e5; --pp-accent-2:#6366f1; --pp-accent-soft:#eef2ff;
  --pp-bg:#f5f6fa; --pp-surface:#ffffff; --pp-border:#e7e9f0; --pp-text:#1e2433; --pp-muted:#6b7385;
  --pp-sidebar:#0f1222; --pp-sidebar-text:#a9b0c6; --pp-sidebar-active:#ffffff;
  --pp-radius:14px; --pp-shadow:0 1px 2px rgba(16,24,40,.04),0 1px 3px rgba(16,24,40,.06);
  --bs-primary:#4f46e5; --bs-primary-rgb:79,70,229; --bs-link-color:#4f46e5; --bs-link-hover-color:#3730a3;
  --bs-body-font-family:'Inter','Hind Siliguri',system-ui,-apple-system,'Segoe UI',sans-serif;
  --bs-body-bg:var(--pp-bg); --bs-body-color:var(--pp-text); --bs-border-color:var(--pp-border);
}
[data-bs-theme=dark]{
  --pp-accent-soft:#232650; --pp-bg:#0b0d17; --pp-surface:#141727; --pp-border:#262a3d; --pp-text:#e6e8f0; --pp-muted:#9aa1b5;
  --pp-sidebar:#090b14; --bs-body-bg:var(--pp-bg); --bs-body-color:var(--pp-text); --bs-border-color:var(--pp-border);
  --bs-secondary-bg:#1b1f33; --bs-tertiary-bg:#171a2c;
}
body{background:var(--pp-bg);font-size:.925rem;-webkit-font-smoothing:antialiased}
.app{display:flex;min-height:100vh}
.sidebar{width:252px;flex:0 0 252px;background:var(--pp-sidebar);color:var(--pp-sidebar-text);display:flex;flex-direction:column;position:sticky;top:0;height:100vh;z-index:1040}
.brand{display:flex;align-items:center;gap:.7rem;padding:1.1rem 1.1rem 1rem;border-bottom:1px solid rgba(255,255,255,.06)}
.brand img{width:38px;height:38px;object-fit:contain;border-radius:10px;background:#fff;padding:3px}
.brand-mark{width:38px;height:38px;border-radius:11px;display:grid;place-items:center;background:linear-gradient(135deg,#6366f1,#8b5cf6);color:#fff;font-size:1.15rem}
.brand-text strong{display:block;color:#fff;font-size:.92rem;line-height:1.2;max-width:160px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.brand-text small{font-size:.72rem;opacity:.7}
.nav-scroll{flex:1;overflow-y:auto;padding:.5rem .65rem 1rem}
.nav-section{font-size:.68rem;text-transform:uppercase;letter-spacing:.08em;opacity:.5;padding:1rem .7rem .35rem}
.sidebar .nav-link{display:flex;align-items:center;gap:.7rem;color:var(--pp-sidebar-text);padding:.52rem .75rem;border-radius:10px;font-size:.88rem;transition:background .15s,color .15s}
.sidebar .nav-link i{font-size:1.05rem;width:1.2rem;text-align:center}
.sidebar .nav-link:hover{background:rgba(255,255,255,.06);color:#fff}
.sidebar .nav-link.active{background:linear-gradient(135deg,rgba(99,102,241,.95),rgba(139,92,246,.9));color:#fff;box-shadow:0 6px 16px -6px rgba(99,102,241,.7)}
.sidebar-foot{padding:.75rem 1.2rem;font-size:.72rem;opacity:.45}
.main{flex:1;min-width:0;display:flex;flex-direction:column}
.topbar{position:sticky;top:0;z-index:1020;display:flex;align-items:center;gap:.75rem;padding:.65rem 1.5rem;background:color-mix(in srgb,var(--pp-bg) 85%,transparent);backdrop-filter:blur(10px);border-bottom:1px solid var(--pp-border)}
.top-search{align-items:center;gap:.5rem;background:var(--pp-surface);border:1px solid var(--pp-border);border-radius:10px;padding:.35rem .75rem;width:min(420px,40vw)}
.top-search input{border:0;outline:0;background:transparent;width:100%;color:inherit}
.top-search i{color:var(--pp-muted)}
.btn-icon{width:38px;height:38px;border-radius:10px;display:inline-grid;place-items:center;border:1px solid var(--pp-border);background:var(--pp-surface);color:inherit}
.user-chip{display:flex;align-items:center;gap:.55rem;border:1px solid var(--pp-border);background:var(--pp-surface);border-radius:12px;padding:.25rem .6rem .25rem .3rem}
.content{padding:1.5rem;max-width:1600px;width:100%}
.page-head{display:flex;flex-wrap:wrap;align-items:flex-end;justify-content:space-between;gap:1rem;margin-bottom:1.25rem}
.page-head h1{font-size:1.45rem;font-weight:700;margin:0;letter-spacing:-.01em}
.page-actions{display:flex;flex-wrap:wrap;gap:.5rem}
.card{border:1px solid var(--pp-border);border-radius:var(--pp-radius);box-shadow:var(--pp-shadow);background:var(--pp-surface)}
.card-header{background:transparent;border-bottom:1px solid var(--pp-border);padding:.9rem 1.15rem;font-weight:600}
.card-body{padding:1.15rem}
.btn{border-radius:10px;font-weight:500}
.btn-primary{background:var(--pp-accent);border-color:var(--pp-accent)}
.btn-primary:hover,.btn-primary:focus{background:#4338ca;border-color:#4338ca}
.btn-outline-primary{color:var(--pp-accent);border-color:var(--pp-accent)}
.btn-outline-primary:hover{background:var(--pp-accent);border-color:var(--pp-accent)}
.form-control,.form-select{border-radius:10px;border-color:var(--pp-border);background-color:var(--pp-surface)}
.form-control:focus,.form-select:focus{border-color:#a5b4fc;box-shadow:0 0 0 .2rem rgba(99,102,241,.15)}
.form-label{font-weight:500;font-size:.83rem;margin-bottom:.3rem;color:var(--pp-muted)}
.table{--bs-table-bg:transparent;margin-bottom:0}
.table>thead th{font-size:.74rem;text-transform:uppercase;letter-spacing:.04em;color:var(--pp-muted);font-weight:600;background:var(--bs-tertiary-bg);border-bottom:1px solid var(--pp-border);white-space:nowrap}
.table td{vertical-align:middle;border-color:var(--pp-border)}
.table-hover>tbody>tr:hover>*{--bs-table-bg-state:color-mix(in srgb,var(--pp-accent) 5%,transparent)}
.badge{font-weight:600;border-radius:7px;padding:.36em .62em}
.badge-soft-success{background:#dcfce7;color:#15803d}.badge-soft-warning{background:#fef3c7;color:#b45309}
.badge-soft-danger{background:#fee2e2;color:#b91c1c}.badge-soft-info{background:#e0f2fe;color:#0369a1}
.badge-soft-primary{background:#e0e7ff;color:#4338ca}.badge-soft-secondary{background:#eef0f4;color:#4b5563}
.badge-soft-dark{background:#e2e8f0;color:#1e293b}
[data-bs-theme=dark] .badge-soft-success{background:#12301f;color:#6ee7a0}[data-bs-theme=dark] .badge-soft-warning{background:#3a2a0c;color:#fcd34d}
[data-bs-theme=dark] .badge-soft-danger{background:#3b1414;color:#fca5a5}[data-bs-theme=dark] .badge-soft-info{background:#0c2a3d;color:#7dd3fc}
[data-bs-theme=dark] .badge-soft-primary{background:#24285a;color:#a5b4fc}[data-bs-theme=dark] .badge-soft-secondary,[data-bs-theme=dark] .badge-soft-dark{background:#23273a;color:#cbd2e1}
.stat{display:flex;gap:.9rem;align-items:center}
.stat-icon{width:46px;height:46px;border-radius:13px;display:grid;place-items:center;font-size:1.3rem;flex:0 0 46px}
.stat-value{font-size:1.45rem;font-weight:700;line-height:1.1;letter-spacing:-.02em}
.stat-label{font-size:.78rem;color:var(--pp-muted)}
.bg-soft-primary{background:#eef2ff;color:#4f46e5}.bg-soft-success{background:#dcfce7;color:#16a34a}
.bg-soft-warning{background:#fef3c7;color:#d97706}.bg-soft-danger{background:#fee2e2;color:#dc2626}
.bg-soft-info{background:#e0f2fe;color:#0284c7}.bg-soft-purple{background:#f3e8ff;color:#9333ea}
[data-bs-theme=dark] .bg-soft-primary{background:#24285a}[data-bs-theme=dark] .bg-soft-success{background:#12301f}
[data-bs-theme=dark] .bg-soft-warning{background:#3a2a0c}[data-bs-theme=dark] .bg-soft-danger{background:#3b1414}
[data-bs-theme=dark] .bg-soft-info{background:#0c2a3d}[data-bs-theme=dark] .bg-soft-purple{background:#2e1a45}
.avatar{border-radius:50%;object-fit:cover;flex:0 0 auto}
.avatar-txt{display:inline-grid;place-items:center;font-weight:700;font-size:.78rem;background:var(--pp-accent-soft);color:var(--pp-accent)}
.emp-cell{display:flex;align-items:center;gap:.6rem}
.emp-cell .meta{line-height:1.2}.emp-cell .meta small{color:var(--pp-muted)}
.filter-bar{display:flex;flex-wrap:wrap;gap:.5rem;align-items:end}
.filter-bar .form-control,.filter-bar .form-select{min-width:140px}
.empty{padding:3rem 1rem;text-align:center;color:var(--pp-muted)}
.empty i{font-size:2.2rem;display:block;margin-bottom:.5rem;opacity:.5}
.dot{display:inline-block;width:9px;height:9px;border-radius:50%;margin-right:.35rem}
.dot-on{background:#22c55e;box-shadow:0 0 0 3px rgba(34,197,94,.18)}.dot-off{background:#ef4444;box-shadow:0 0 0 3px rgba(239,68,68,.15)}
.kv{display:grid;grid-template-columns:150px 1fr;gap:.35rem .75rem;font-size:.88rem}.kv dt{color:var(--pp-muted);font-weight:500}.kv dd{margin:0}
.code-box{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;background:var(--bs-tertiary-bg);border:1px dashed var(--pp-border);border-radius:10px;padding:.55rem .75rem;font-size:.82rem;word-break:break-all;position:relative}
.copy-btn{position:absolute;top:.35rem;right:.35rem}
.att-grid{font-size:.74rem}.att-grid th,.att-grid td{text-align:center;padding:.3rem .2rem!important;min-width:30px}
.att-grid .sticky-col{position:sticky;left:0;background:var(--pp-surface);z-index:2;text-align:left;min-width:180px}
.att-cell{display:block;border-radius:6px;padding:.18rem 0;font-weight:700}
.c-present{background:#dcfce7;color:#166534}.c-late{background:#fef3c7;color:#92400e}.c-half_day{background:#e0f2fe;color:#075985}
.c-absent{background:#fee2e2;color:#991b1b}.c-leave{background:#e0e7ff;color:#3730a3}.c-holiday,.c-weekend{background:#f1f5f9;color:#64748b}.c-off_duty{background:#ede9fe;color:#5b21b6}
[data-bs-theme=dark] .c-holiday,[data-bs-theme=dark] .c-weekend{background:#1e2235;color:#94a3b8}
.nav-pills .nav-link{border-radius:10px;color:var(--pp-muted);font-weight:500}.nav-pills .nav-link.active{background:var(--pp-accent)}
.nav-tabs .nav-link{font-weight:500;color:var(--pp-muted)}.nav-tabs .nav-link.active{color:var(--pp-accent);font-weight:600}
.step-num{width:26px;height:26px;border-radius:50%;background:var(--pp-accent);color:#fff;display:inline-grid;place-items:center;font-size:.8rem;font-weight:700;margin-right:.5rem}
.device-card .type-icon{width:44px;height:44px;border-radius:12px;display:grid;place-items:center;font-size:1.3rem}
.money{font-variant-numeric:tabular-nums;white-space:nowrap}
.text-muted-2{color:var(--pp-muted)!important}
.help{font-size:.8rem;color:var(--pp-muted);font-family:'Hind Siliguri','Inter',sans-serif}
.login-wrap{min-height:100vh;display:grid;place-items:center;background:radial-gradient(1200px 600px at 10% -10%,#e0e7ff 0,transparent 60%),radial-gradient(900px 500px at 110% 110%,#f3e8ff 0,transparent 60%),var(--pp-bg);padding:1rem}
[data-bs-theme=dark] .login-wrap{background:radial-gradient(1200px 600px at 10% -10%,#1d2050 0,transparent 60%),var(--pp-bg)}
.login-card{width:100%;max-width:410px}
.sidebar-backdrop{display:none}
@media (max-width:991.98px){
  .sidebar{position:fixed;left:0;top:0;transform:translateX(-100%);transition:transform .2s}
  body.nav-open .sidebar{transform:none}
  body.nav-open .sidebar-backdrop{display:block;position:fixed;inset:0;background:rgba(0,0,0,.4);z-index:1030}
  .content{padding:1rem}
  .topbar{padding:.6rem 1rem}
}
@media print{.sidebar,.topbar,.page-actions,.no-print{display:none!important}.content{padding:0}.card{box-shadow:none}}
[data-bs-theme=dark] .btn-light{--bs-btn-bg:#1b1f33;--bs-btn-border-color:#262a3d;--bs-btn-color:#e6e8f0;--bs-btn-hover-bg:#23283f;--bs-btn-hover-border-color:#2f3550;--bs-btn-hover-color:#fff}
[data-bs-theme=dark] .alert-warning,[data-bs-theme=dark] .alert-info,[data-bs-theme=dark] .alert-danger,[data-bs-theme=dark] .alert-success{border-color:transparent}
