:root {
  --navy:#143544; --navy-dark:#0e2430; --teal:#167a7f; --teal-dark:#0f585c;
  --teal-light:#e8f3f3; --slate:#204b69; --bg:#f4f6f8; --card:#ffffff;
  --border:#d1d5db; --text:#1c2b35; --muted:#6b7280;
  --remote-bg:#e3def6; --remote-text:#5b3aa0;
  --cl-bg:#fbdcdd; --cl-text:#b3261e;
  --holiday-bg:#fde8c8; --holiday-text:#9a6b1c;
  --weekend-bg:#f3f4f6; --weekend-text:#6b7280;
  --onsite-bg:#ffffff; --onsite-border:#cfd6dd;
  --ms-bg:#eef0f2; --ms-text:#475467;
  --opt-bg:#fff6e0; --opt-text:#a07d1d;
  --good:#1b8a5a; --warn:#c0392b;
}
*,*::before,*::after{box-sizing:border-box;margin:0;padding:0;}
body{font-family:-apple-system,'Segoe UI',Roboto,Arial,sans-serif;background:var(--bg);color:var(--text);font-size:14px;line-height:1.5;}
.login-wrap{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:24px;background:linear-gradient(145deg,var(--navy-dark) 0%,var(--navy) 55%,var(--slate) 100%);}
.login-card{background:#fff;border-radius:16px;padding:36px 32px;max-width:440px;width:100%;box-shadow:0 24px 64px rgba(0,0,0,.28);}
.login-logo{display:flex;align-items:center;gap:12px;margin-bottom:26px;}
.login-mark{height:36px;flex-shrink:0;}
.login-logo .brand-sub{font-size:11.5px;color:var(--muted);margin-left:4px;}
.login-card h1{font-size:21px;font-weight:700;color:var(--navy);margin-bottom:5px;}
.login-card .sub{font-size:13px;color:var(--muted);margin-bottom:26px;}
.sso-btn{width:100%;background:var(--teal);color:#fff;border:none;padding:13px 16px;border-radius:8px;font-size:14.5px;font-weight:600;cursor:pointer;display:flex;align-items:center;justify-content:center;gap:10px;transition:background .15s;}
.sso-btn:hover{background:var(--teal-dark);}
.login-input{width:100%;padding:11px 13px;border:1px solid var(--border);border-radius:8px;font-size:14px;font-family:inherit;margin-bottom:12px;outline:none;transition:border-color .12s,box-shadow .12s;}
.login-input:focus{border-color:var(--teal);box-shadow:0 0 0 3px rgba(22,122,127,.12);}
.ms-sso-btn{width:100%;background:#fff;color:var(--text);border:1px solid var(--border);padding:12px 16px;border-radius:8px;font-size:14px;font-weight:600;cursor:pointer;display:flex;align-items:center;justify-content:center;gap:10px;font-family:inherit;transition:background .12s,border-color .12s;}
.ms-sso-btn:hover{background:#f6f7f8;border-color:#b9bfc6;}
.login-divider{display:flex;align-items:center;gap:10px;margin:18px 0;color:var(--muted);font-size:11px;}
.login-divider::before,.login-divider::after{content:"";flex:1;height:1px;background:var(--border);}
.topbar{background:var(--navy);color:#fff;padding:0 20px;height:56px;display:flex;align-items:center;justify-content:space-between;position:sticky;top:0;z-index:30;box-shadow:0 2px 10px rgba(0,0,0,.22);}
.topbar-brand{display:flex;align-items:center;gap:12px;min-width:0;}
.topbar-mark-full{height:22px;flex-shrink:0;}
.topbar-mark-icon{width:30px;height:30px;border-radius:7px;flex-shrink:0;object-fit:contain;display:none;}
.topbar-title{font-size:15px;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.topbar-sub{font-size:11px;color:#8fb3c0;margin-top:1px;}
.user-chip{position:relative;display:flex;align-items:center;gap:10px;flex-shrink:0;}
.avatar{width:32px;height:32px;border-radius:50%;background:var(--teal);color:#fff;display:flex;align-items:center;justify-content:center;font-weight:700;font-size:12px;flex-shrink:0;cursor:pointer;user-select:none;transition:box-shadow .12s;}
.avatar:hover{box-shadow:0 0 0 3px rgba(22,122,127,.45);}
.user-meta{font-size:12.5px;line-height:1.3;}
.user-meta .role{color:#8fb3c0;font-size:11px;}
.user-popout{display:none;position:absolute;top:calc(100% + 10px);right:0;background:var(--navy-dark);color:#fff;border-radius:10px;padding:14px 18px;min-width:170px;z-index:50;box-shadow:0 6px 24px rgba(0,0,0,.38);pointer-events:none;}
.user-popout::before{content:'';position:absolute;top:-5px;right:16px;width:10px;height:10px;background:var(--navy-dark);transform:rotate(45deg);border-radius:2px;}
.user-popout.show{display:block;pointer-events:auto;}
.popout-name{font-weight:700;font-size:13.5px;margin-bottom:3px;}
.popout-role{font-size:12px;color:#8fb3c0;}
@media(min-width:521px){.user-popout{display:none!important;}.avatar{cursor:default;}}
.logout-btn{background:transparent;border:1px solid rgba(255,255,255,.22);color:#c5d9e2;width:34px;height:34px;border-radius:7px;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:background .12s,color .12s;flex-shrink:0;position:relative;}
.logout-btn:hover{background:rgba(255,255,255,.12);color:#fff;}
.logout-btn::after{content:'Sign out';position:absolute;top:calc(100% + 8px);right:0;background:#000;color:#fff;font-size:11px;padding:4px 8px;border-radius:5px;white-space:nowrap;pointer-events:none;opacity:0;transition:opacity .12s;}
.logout-btn:hover::after{opacity:1;}
.app-body{display:flex;min-height:calc(100vh - 56px);}
.sidenav{width:210px;flex-shrink:0;padding:18px 10px;border-right:1px solid var(--border);background:var(--card);}
.sidenav .nav-group{padding-top:6px;}
.sidenav .nav-group:not(:first-child){border-top:1px solid var(--border);margin-top:6px;}
.sidenav .grp-label{font-size:10px;text-transform:uppercase;letter-spacing:.06em;color:var(--muted);margin:10px 10px 5px;font-weight:700;}
.sidenav .nav-group:first-child .grp-label{margin-top:4px;}
.sidenav button{display:block;width:100%;text-align:left;background:transparent;border:none;padding:8px 12px;border-radius:7px;font-size:13.5px;color:var(--text);cursor:pointer;margin-bottom:2px;transition:background .1s,color .1s;}
.sidenav button:hover{background:#f0f3f5;}
.sidenav button.active{background:var(--teal-light);color:var(--teal);font-weight:600;}
.content{flex:1;padding:28px 32px;min-width:0;}
h2{font-size:20px;font-weight:700;color:var(--navy);margin-bottom:4px;}
.desc{color:var(--muted);font-size:13px;margin-bottom:20px;}
.card{background:var(--card);border:1px solid var(--border);border-radius:12px;padding:20px 22px;margin-bottom:16px;}
.card h3{font-size:13.5px;font-weight:600;color:var(--navy);margin-bottom:14px;}
.twocol{display:grid;grid-template-columns:1.3fr 1fr;gap:16px;}
.stat-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:12px;margin-bottom:20px;}
.stat-card{background:var(--card);border:1px solid var(--border);border-radius:10px;padding:16px 18px;}
.stat-card .num{font-size:24px;font-weight:700;color:var(--navy);}
.stat-card .lbl{font-size:11.5px;color:var(--muted);margin-top:2px;}
.bar-row{display:flex;align-items:center;gap:10px;margin:7px 0;}
.bar-row .bar-label{width:82px;font-size:12.5px;flex-shrink:0;}
.bar-track{flex:1;height:9px;background:#eef0f2;border-radius:6px;overflow:hidden;}
.bar-fill{height:100%;border-radius:6px;}
.bar-pct{width:40px;text-align:right;font-size:12px;color:var(--muted);flex-shrink:0;}
label{display:block;font-size:12px;color:var(--muted);margin-bottom:4px;margin-top:12px;font-weight:500;}
label:first-child{margin-top:0;}
select,input[type="date"],input[type="time"],input[type="text"],input[type="email"],input[type="number"],textarea{width:100%;padding:9px 11px;border:1px solid var(--border);border-radius:7px;font-size:13.5px;font-family:inherit;color:var(--text);background:#fff;outline:none;transition:border-color .12s,box-shadow .12s;}
select:focus,input:focus,textarea:focus{border-color:var(--teal);box-shadow:0 0 0 3px rgba(22,122,127,.12);}
textarea{resize:vertical;min-height:54px;}
.time-auto-display{display:flex;align-items:center;gap:12px;background:var(--teal-light);border:1px solid #a8d0d2;border-radius:7px;padding:10px 14px;}
.time-auto-display .t-clock{font-size:20px;line-height:1;}
.time-auto-display .t-val{font-size:20px;font-weight:700;color:var(--teal);font-variant-numeric:tabular-nums;letter-spacing:-.5px;}
.time-auto-display .t-lbl{font-size:11px;color:var(--muted);margin-top:1px;}
.btn{display:inline-flex;align-items:center;justify-content:center;padding:9px 18px;border-radius:7px;border:none;font-size:13.5px;font-weight:500;cursor:pointer;margin-top:14px;min-height:38px;font-family:inherit;transition:background .12s,border-color .12s,color .12s;}
.btn-primary{background:var(--teal);color:#fff;}
.btn-primary:hover{background:var(--teal-dark);}
.btn-secondary{background:#fff;color:var(--teal);border:1px solid var(--teal);}
.btn-secondary:hover{background:var(--teal-light);}
.btn-danger{background:#fff;color:var(--warn);border:1px solid var(--warn);}
.btn-danger:hover{background:#fdecea;}
.btn-good{background:#fff;color:var(--good);border:1px solid var(--good);}
.btn-good:hover{background:#eafaf1;}
.btn-sm{padding:5px 11px;font-size:12px;margin-top:0;min-height:0;border-radius:6px;}
.btn-full{width:100%;margin-top:16px;}
.pill{display:inline-block;padding:2px 9px;border-radius:99px;font-size:11px;font-weight:600;}
.pill.pending{background:#fff3cd;color:#8a6500;}
.pill.approved{background:#dff4e6;color:var(--good);}
.pill.rejected{background:#fdecea;color:var(--warn);}
.pill.verified{background:#dff4e6;color:var(--good);}
.pill.flagged{background:#fdecea;color:var(--warn);}
.pill.optional{background:var(--opt-bg);color:var(--opt-text);}
.pill.resigned{background:#fdecea;color:var(--warn);}
.pill.inactive{background:#f3f4f6;color:#374151;}
.pill.cancelled{background:#f3f4f6;color:#374151;}
table{width:100%;border-collapse:collapse;font-size:13px;}
th,td{text-align:left;padding:9px 11px;border-bottom:1px solid var(--border);}
th{color:var(--muted);font-weight:600;font-size:11px;text-transform:uppercase;letter-spacing:.04em;background:#fafbfc;}
tr:last-child td{border-bottom:none;}
tr:hover td{background:#fafcfc;}
.tabbar{display:flex;gap:4px;border-bottom:1px solid var(--border);margin-bottom:18px;}
.tabbar button{background:none;border:none;border-bottom:2.5px solid transparent;margin-bottom:-1px;padding:11px 20px;font-size:13.5px;font-weight:600;color:var(--muted);cursor:pointer;transition:color .12s,border-color .12s;}
.tabbar button:hover{color:var(--navy);}
.tabbar button.active{color:var(--teal);border-bottom-color:var(--teal);}
.grid-scroll{max-height:450px;overflow:auto;}
.grid-table thead th{position:sticky;top:0;z-index:2;background:#fafbfc;}
.grid-table th,.grid-table td{text-align:center;white-space:nowrap;}
.grid-table td.name-col,.grid-table th.name-col{text-align:left;}
.status-cell{display:inline-block;min-width:80px;padding:3px 8px;border-radius:5px;font-size:11.5px;font-weight:600;}
.s-Micron{background:var(--onsite-bg);border:1px solid var(--onsite-border);color:#374151;}
.s-Multiscale{background:var(--ms-bg);color:var(--ms-text);}
.s-Remote{background:var(--remote-bg);color:var(--remote-text);}
.s-RemoteSick{background:var(--remote-bg);color:var(--remote-text);}
.s-CL{background:var(--cl-bg);color:var(--cl-text);}
.s-Holiday{background:var(--holiday-bg);color:var(--holiday-text);}
.s-Weekend{background:var(--weekend-bg);color:var(--weekend-text);}
.s-OptHol{background:var(--opt-bg);color:var(--opt-text);border:1px dashed #d8b25a;}
/* Late-arrival cell states -- color only (no per-state icon shape), reusing the
   same pending/approved/rejected palette already used for Leave Request pills
   so the meaning is learned once and reused, not re-taught per screen. */
.late-pending-cell{border:2px solid #d9a441!important;background:#fff3cd!important;}
.late-approved-cell{border:2px solid var(--good)!important;background:#dff4e6!important;}
.late-flagged-cell{border:2px solid var(--warn)!important;background:#fdecea!important;}
.legend{display:flex;gap:12px;flex-wrap:wrap;margin-bottom:14px;font-size:11.5px;align-items:center;}
.legend span{display:inline-flex;align-items:center;gap:5px;}
.legend .dot{width:10px;height:10px;border-radius:3px;display:inline-block;flex-shrink:0;}
.leave-card{border:1px solid var(--border);border-radius:10px;padding:14px 16px;}
.leave-card .lt-name{font-size:13px;font-weight:600;color:var(--navy);margin-bottom:5px;}
.leave-card .lt-nums{font-size:11.5px;color:var(--muted);margin-bottom:7px;}
.loc-box{border:1px dashed var(--border);border-radius:8px;padding:12px 14px;margin-top:12px;background:#fafbfc;}
.loc-result{margin-top:8px;}
.note{background:#fffbeb;border:1px solid #f1d98a;border-radius:8px;padding:10px 14px;font-size:12.5px;color:#7a5d10;margin-bottom:14px;}
.banner-warn{background:#fff8f7;border:1px solid #f3c6c2;border-radius:10px;padding:16px 20px;margin-bottom:16px;}
.banner-warn h3{color:var(--warn);font-size:13.5px;margin-bottom:12px;}
.flag-list{display:flex;flex-direction:column;gap:10px;}
.flag-card{background:#fff;border:1px solid #f0c4c0;border-radius:9px;padding:14px 16px;}
.flag-card-header{display:flex;align-items:center;gap:10px;margin-bottom:6px;flex-wrap:wrap;}
.flag-card-name{font-weight:700;font-size:13.5px;color:var(--navy);}
.flag-card-date{font-size:12px;color:var(--muted);}
.flag-card-reason{font-size:12.5px;color:var(--text);margin-bottom:12px;line-height:1.45;}
.flag-card-actions{display:flex;gap:8px;flex-wrap:wrap;}
.approval-card{background:var(--card);border:1px solid var(--border);border-radius:10px;padding:14px 16px;margin-bottom:10px;}
.approval-card-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:10px;}
.approval-card-who{font-weight:700;font-size:14px;color:var(--navy);}
.approval-card-meta{font-size:12px;color:var(--muted);margin-bottom:8px;}
.approval-card-reason{font-size:12.5px;margin-bottom:10px;}
.approval-card-actions{display:flex;gap:8px;flex-wrap:wrap;}
.approvals-table-wrap{display:block;}
.approvals-card-list{display:none;}
.small{font-size:11.5px;color:var(--muted);}
.flag{color:var(--warn);font-weight:600;}
.muted{color:var(--muted);}
.toast{position:fixed;bottom:24px;right:24px;background:var(--navy);color:#fff;padding:11px 18px;border-radius:9px;max-width:360px;font-size:13px;box-shadow:0 4px 20px rgba(0,0,0,.22);opacity:0;transform:translateY(8px);transition:opacity .22s,transform .22s;pointer-events:none;z-index:100;}
.toast.show{opacity:1;transform:translateY(0);}
.chart-wrap{position:relative;margin-bottom:16px;}
.section-hdr{display:flex;align-items:center;justify-content:space-between;margin-bottom:12px;}
.section-hdr h3{margin:0;}
.btn-group{display:flex;gap:6px;}
.nav-toggle-btn{display:none;background:transparent;border:1px solid rgba(255,255,255,.22);color:#c5d9e2;width:34px;height:34px;border-radius:7px;cursor:pointer;align-items:center;justify-content:center;transition:background .12s,color .12s;flex-shrink:0;}
.nav-toggle-btn:hover{background:rgba(255,255,255,.12);color:#fff;}
.nav-backdrop{display:none;position:fixed;top:56px;left:0;right:0;bottom:0;background:rgba(0,0,0,.4);z-index:35;}
.nav-backdrop.show{display:block;}
.report-modal-backdrop{display:none;position:fixed;inset:0;background:rgba(0,0,0,.5);z-index:100;align-items:center;justify-content:center;padding:20px;}
.report-modal-backdrop.show{display:flex;}
.report-modal{background:#fff;border-radius:10px;max-width:700px;width:100%;max-height:85vh;overflow-y:auto;padding:24px;box-shadow:0 10px 40px rgba(0,0,0,.25);}
@media(max-width:900px){
  .twocol{grid-template-columns:1fr;}
  .nav-toggle-btn{display:flex;}
  .sidenav{
    position:fixed;top:56px;right:0;bottom:0;width:min(280px,85vw);
    background:var(--card);border-left:1px solid var(--border);border-right:none;border-bottom:none;
    padding:14px 10px;display:block;overflow-y:auto;z-index:40;
    transform:translateX(100%);transition:transform .25s ease;box-shadow:-6px 0 24px rgba(0,0,0,.18);
  }
  .sidenav.open{transform:translateX(0);}
  .sidenav .grp-label{width:auto;margin:10px 10px 5px;font-size:10px;}
  .sidenav .nav-group:first-child .grp-label{margin-top:4px;}
  .sidenav button{width:100%;flex-shrink:0;padding:8px 12px;font-size:13.5px;}
}
@media(max-width:640px){.approvals-table-wrap{display:none;}.approvals-card-list{display:block;}}
@media(max-width:520px){
  .topbar-mark-full{display:none;}.topbar-mark-icon{display:block;}
  .topbar-title{font-size:14px;}.topbar-sub{display:none;}
  .content{padding:16px;}.stat-card .num{font-size:20px;}
  table{font-size:12px;}th,td{padding:7px 7px;}
  .user-meta{display:none;}
}
.ico{width:14px;height:14px;display:inline-block;vertical-align:middle;flex-shrink:0;position:relative;top:-1px;}
.ico-lg{width:20px;height:20px;}
.cell-flag{display:inline-block;width:14px;height:14px;background:var(--warn);color:#fff;border-radius:50%;font-size:9px;font-weight:700;text-align:center;line-height:14px;margin-left:3px;vertical-align:middle;flex-shrink:0;}
.login-error{color:#dc2626;font-size:13px;margin-bottom:8px;}
