:root{
  --app-bg:#f5f7fb;
  --sidebar:#111827;
  --sidebar-2:#1f2937;
  --muted:#64748b;
  --accent:#2563eb;
  --success:#16a34a;
  --warning:#d97706;
  --danger:#dc2626;
}
body{background:var(--app-bg);color:#172033;font-family:Inter,system-ui,-apple-system,"Segoe UI",sans-serif}
.login-page{background:linear-gradient(135deg,#f5f7fb 0%,#e8f0ff 100%)}
.login-shell{min-height:100vh;display:grid;place-items:center;padding:1.5rem}
.login-panel{width:min(420px,100%);background:#fff;border:1px solid #e6eaf0;border-radius:1rem;box-shadow:0 18px 60px rgba(15,23,42,.12);padding:2rem}
.login-panel .brand-badge{background:#111827;color:#fff}
.app-shell{min-height:100vh}
.sidebar{width:260px;background:linear-gradient(180deg,var(--sidebar),var(--sidebar-2));position:fixed;inset:0 auto 0 0;z-index:1030;overflow-y:auto}
.brand{padding:1.35rem 1.2rem;border-bottom:1px solid rgba(255,255,255,.08)}
.brand-badge{width:38px;height:38px;border-radius:10px;background:#fff;color:#111827;display:grid;place-items:center;font-weight:800}
.sidebar .nav-link{color:#cbd5e1;border-radius:.75rem;margin:.15rem .75rem;padding:.7rem .85rem;font-size:.94rem}
.sidebar .nav-link:hover,.sidebar .nav-link.active{background:rgba(255,255,255,.1);color:#fff}
.sidebar .nav-link i{width:22px}
.main{margin-left:260px;min-height:100vh}
.topbar{height:70px;background:#fff;border-bottom:1px solid #e5e7eb;display:flex;align-items:center;justify-content:space-between;padding:0 1.5rem;position:sticky;top:0;z-index:1020}
.page-content{padding:1.5rem}
.card{border:1px solid #e6eaf0;border-radius:1rem;box-shadow:0 4px 18px rgba(15,23,42,.035)}
.card-header{background:#fff;border-bottom:1px solid #edf0f4;border-radius:1rem 1rem 0 0!important}
.metric-icon{width:46px;height:46px;border-radius:14px;display:grid;place-items:center;font-size:1.25rem}
.icon-blue{background:#e8f0ff;color:#2563eb}.icon-green{background:#eaf8ef;color:#15803d}.icon-orange{background:#fff3df;color:#c66a00}.icon-purple{background:#f2eafd;color:#7e22ce}
.text-muted2{color:var(--muted)}
.badge-soft-success{background:#eaf8ef;color:#15803d}.badge-soft-warning{background:#fff3df;color:#b45309}.badge-soft-danger{background:#feecec;color:#b91c1c}.badge-soft-info{background:#e9f4ff;color:#0369a1}
.table>thead>tr>th{font-size:.78rem;text-transform:uppercase;letter-spacing:.03em;color:#64748b;background:#f8fafc;white-space:nowrap}
.table>tbody>tr>td{vertical-align:middle}
.dropzone{border:2px dashed #cbd5e1;border-radius:1rem;background:#fbfdff;padding:2.5rem;text-align:center;transition:.2s}
.dropzone:hover{border-color:#2563eb;background:#f4f8ff}
.stepper{display:flex;gap:.5rem;align-items:center;flex-wrap:wrap}.step{display:flex;align-items:center;gap:.5rem}.step-dot{width:28px;height:28px;border-radius:50%;display:grid;place-items:center;background:#e5e7eb;color:#6b7280;font-size:.8rem;font-weight:700}.step.active .step-dot,.step.done .step-dot{background:#2563eb;color:#fff}.step-line{width:42px;height:2px;background:#dbe1e8}
.status-cell{min-width:42px;text-align:center;font-weight:700;font-size:.8rem}
.status-p{background:#eaf8ef!important;color:#15803d!important}.status-a{background:#feecec!important;color:#b91c1c!important}.status-h{background:#fff3df!important;color:#b45309!important}.status-wo{background:#e9f4ff!important;color:#0369a1!important}.status-review{background:#f5ecff!important;color:#7e22ce!important}
.calendar-grid{min-width:1400px}
.filter-strip{background:#fff;border:1px solid #e5e7eb;border-radius:1rem;padding:1rem}
.info-box{border-left:4px solid #2563eb;background:#f8fbff;border-radius:.75rem;padding:1rem}
.shift-duration-box{background:#f8fafc;border:1px solid #e5e7eb;border-radius:.75rem;padding:.75rem 1rem;color:#334155}
.empty-state{padding:3rem 1rem;text-align:center;color:#64748b}
.empty-state i{display:block;font-size:2rem;margin-bottom:.75rem;color:#94a3b8}
.empty-state h6{color:#334155;margin-bottom:.35rem}
.empty-state p{margin-bottom:0;font-size:.9rem}
.editable-preview{min-width:1320px}
.file-b-preview{min-width:2650px}
.editable-preview th:last-child,.editable-preview td:last-child{width:52px;text-align:center}
.preview-input{min-width:70px}
.preview-input.calculated-field{font-weight:700;cursor:not-allowed}
.file-b-preview [data-field="srNo"]{min-width:64px}
.file-b-preview [data-field="empCode"]{min-width:90px}
.file-b-preview [data-field="name"]{min-width:190px}
.file-b-preview [data-field="designation"]{min-width:170px}
.file-b-preview [data-field^="d"]:not([data-field="designation"]){min-width:58px;text-align:center}
.file-b-preview [data-field="pendingWo"]{min-width:110px}
.form-label{font-weight:600;font-size:.86rem;color:#334155}
.small-note{font-size:.78rem;color:#64748b}
@media(max-width:991.98px){.sidebar{transform:translateX(-100%);transition:.2s}.sidebar.show{transform:translateX(0)}.main{margin-left:0}.topbar{padding:0 1rem}.page-content{padding:1rem}}
