:root{
  --ink:#1a1a1a;
  --accent:#1f4e79;
  --line:#c9c9c9;
  --bg:#eef1f4;
  --ok:#1d7a45;
  --warn:#b07708;
}
*{box-sizing:border-box;}
body{
  margin:0;
  font-family:"Helvetica Neue",Arial,sans-serif;
  background:var(--bg);
  color:var(--ink);
}
.hidden{display:none !important;}

/* ---------- Top bar ---------- */
.topbar{
  display:flex;align-items:center;gap:18px;
  background:var(--accent);color:#fff;
  padding:10px 20px;
  position:sticky;top:0;z-index:50;
  flex-wrap:wrap;
}
.brand{font-weight:800;font-size:16px;letter-spacing:.02em;}
.brand span{font-weight:400;opacity:.85;}
.topbar nav{display:flex;gap:6px;flex-wrap:wrap;}
.navbtn{
  background:transparent;border:none;color:#dbe6f1;font-size:13.5px;font-weight:600;
  padding:7px 12px;border-radius:6px;cursor:pointer;
}
.navbtn:hover{background:rgba(255,255,255,.12);color:#fff;}
.navbtn.active{background:#fff;color:var(--accent);}
.userbox{margin-left:auto;display:flex;align-items:center;gap:10px;font-size:12.5px;}
.userbox .who{opacity:.9;}
.userbox .role-chip{
  background:rgba(255,255,255,.18);border-radius:20px;padding:2px 10px;
  font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.05em;
}
.btn-out{
  background:transparent;border:1px solid rgba(255,255,255,.5);color:#fff;
  font-size:12px;padding:5px 12px;border-radius:6px;cursor:pointer;
}
.btn-out:hover{background:rgba(255,255,255,.12);}

/* ---------- Centered cards (auth / pending / setup) ---------- */
.center-wrap{min-height:calc(100vh - 0px);display:flex;align-items:center;justify-content:center;padding:30px 16px;}
.card{
  background:#fff;border-radius:12px;box-shadow:0 3px 18px rgba(0,0,0,.1);
  padding:28px 30px 30px;width:100%;max-width:420px;
}
.card.wide{max-width:640px;}
.card h1{font-size:19px;color:var(--accent);margin:0 0 4px;}
.card .sub{font-size:12.5px;color:#777;margin:0 0 18px;}
.card label{display:block;font-size:12px;font-weight:600;margin:12px 0 4px;}
.card input[type=text],.card input[type=email],.card input[type=password]{
  width:100%;padding:9px 11px;font-size:14px;font-family:inherit;
  border:1px solid var(--line);border-radius:7px;background:#fcfcfc;
}
.card input:focus{outline:2px solid #9cc0e0;border-color:#9cc0e0;}
.err{color:#b3261e;font-size:12.5px;margin:10px 0 0;min-height:16px;line-height:1.4;}
.linkline{font-size:12.5px;color:#555;margin-top:16px;text-align:center;}
.linkline a{color:var(--accent);font-weight:600;cursor:pointer;text-decoration:underline;}
.setup-steps{font-size:13.5px;line-height:1.6;color:#333;}
.setup-steps code{background:#f0f3f6;border-radius:4px;padding:1px 5px;font-size:12.5px;}

/* ---------- Buttons ---------- */
.btn{
  font-size:14px;font-weight:700;padding:11px;border:none;border-radius:8px;
  cursor:pointer;width:100%;
}
.btn-pdf,.btn-primary{background:var(--accent);color:#fff;}
.btn-pdf:hover,.btn-primary:hover{background:#173c5e;}
.btn-ghost{background:#fff;border:1px solid var(--line);color:#444;font-weight:600;}
.btn-ghost:hover{background:#f4f4f4;}
.btn-small{
  font-size:11px;padding:3px 10px;border:1px solid var(--line);
  background:#f5f5f5;border-radius:5px;cursor:pointer;
}
.btn-small:hover{background:#e9e9e9;}
.btn-row{
  font-size:12px;font-weight:600;padding:6px 12px;border-radius:6px;cursor:pointer;
  border:1px solid var(--line);background:#fff;color:#333;white-space:nowrap;
}
.btn-row:hover{background:#f2f5f8;}
.btn-row.solid{background:var(--accent);border-color:var(--accent);color:#fff;}
.btn-row.solid:hover{background:#173c5e;}
.btn-row:disabled{opacity:.5;cursor:default;}

/* ---------- Pages (dashboards) ---------- */
.page{max-width:1280px;margin:0 auto;padding:26px 20px 60px;}
.page h2{font-size:18px;color:var(--accent);margin:16px 0 4px;}
.page .pagesub{font-size:12.5px;color:#777;margin:0 0 14px;}
.tablecard{
  background:#fff;border-radius:10px;box-shadow:0 2px 10px rgba(0,0,0,.07);
  overflow-x:auto;margin-bottom:26px;
}
table.list{border-collapse:collapse;width:100%;min-width:860px;}
table.list th{
  text-align:left;font-size:11px;text-transform:uppercase;letter-spacing:.05em;
  color:#667;padding:11px 14px;border-bottom:2px solid #e4e8ec;white-space:nowrap;
}
table.list td{
  font-size:13px;padding:10px 14px;border-bottom:1px solid #eef1f4;vertical-align:middle;
}
table.list tr:last-child td{border-bottom:none;}
table.list td.actions{white-space:nowrap;}
table.list td.actions .actrow{display:flex;flex-wrap:nowrap;align-items:center;gap:5px;}
table.list td.actions .btn-row{font-size:11.5px;padding:4px 9px;}
.empty{padding:26px 20px;font-size:13px;color:#888;text-align:center;}
.chip{
  display:inline-block;font-size:11px;font-weight:700;border-radius:20px;
  padding:3px 11px;white-space:nowrap;
}
.chip.ok{background:#e2f3e9;color:var(--ok);}
.chip.warn{background:#fbf0d7;color:var(--warn);}
.chip.bad{background:#fbe3e3;color:#a12525;}
.chip.hold{background:#fdeade;color:#b4500f;}
/* pending-queue aging: 4-6 days = yellow, 7+ days = red */
tr.age-warn td{background:#fdf8e1;}
tr.age-late td{background:#fceceb;}
.agebadge{
  display:inline-block;font-size:10.5px;font-weight:700;border-radius:10px;
  padding:1px 8px;margin-top:3px;white-space:nowrap;
}
.agebadge.warn{background:#f5e3ac;color:#7a5c00;}
.agebadge.late{background:#f3c1bd;color:#8f1f16;}
.agebadge.ok{background:#e8ecef;color:#5a6b78;}
/* users tab: pending applications stand out */
tr.pending-row td{background:#fdf8e1;}
.reject-note{font-size:11.5px;color:#a12525;margin-top:3px;max-width:220px;}
.btn-row.danger{border-color:#d9a0a0;color:#a12525;}
.btn-row.danger:hover{background:#fbeeee;}
.chip.pending-role{background:#eee;color:#666;}
.chip.role-supervisor{background:#e3ecf5;color:var(--accent);}
.chip.role-manager{background:#e0f0ec;color:#0f6b58;}
.chip.role-hr{background:#efe4f5;color:#6a2d8f;}
.chip.role-admin{background:#fde3e3;color:#a12525;}
.toolbar{display:flex;gap:10px;align-items:center;margin:0 0 12px;flex-wrap:wrap;}
.toolbar .grow{flex:1;}
select.rolesel{
  font-size:12.5px;padding:5px 8px;border:1px solid var(--line);border-radius:6px;background:#fff;
}

/* ---------- Form + paper layout (from template) ---------- */
.app{
  display:flex;gap:24px;padding:24px;max-width:1500px;margin:0 auto;align-items:flex-start;
}
.panel{
  flex:1 1 660px;min-width:0;background:#fff;border-radius:10px;box-shadow:0 2px 10px rgba(0,0,0,.08);
  padding:20px 22px 26px;
}
.grid2{display:grid;grid-template-columns:1fr 1fr;gap:0 14px;}
.grid2>div{min-width:0;}
.time-row{display:flex;gap:6px;}
.time-row select{
  flex:1;min-width:0;padding:7px 6px;font-size:13px;font-family:inherit;
  border:1px solid var(--line);border-radius:6px;background:#fcfcfc;
}
.editbanner{
  background:#fdf1e2;border:1px solid #eccb96;border-radius:8px;
  font-size:12.5px;line-height:1.55;color:#6b4a12;
  padding:10px 12px;margin:0 0 14px;
}
.editbanner a{
  display:inline-block;margin-top:4px;color:#a4570f;font-weight:700;
  text-decoration:underline;cursor:pointer;
}
.panel h1{font-size:17px;margin:0 0 2px;color:var(--accent);}
.panel .sub{font-size:12px;color:#777;margin:0 0 16px;}
fieldset{border:1px solid var(--line);border-radius:8px;margin:0 0 14px;padding:10px 12px 12px;}
legend{
  font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.06em;
  color:var(--accent);padding:0 6px;
}
.panel label{display:block;font-size:12px;font-weight:600;margin:8px 0 3px;}
.panel input[type=text],.panel input[type=date],.panel input[type=time],.panel input[type=number],.panel textarea,.panel select{
  width:100%;padding:7px 9px;font-size:13px;font-family:inherit;
  border:1px solid var(--line);border-radius:6px;background:#fcfcfc;
}
.panel input:focus,.panel textarea:focus,.panel select:focus{outline:2px solid #9cc0e0;border-color:#9cc0e0;}
.panel textarea{resize:vertical;min-height:90px;}
.row2{display:flex;gap:10px;}
.row2>div{flex:1;}
.checks{display:grid;grid-template-columns:1fr 1fr;gap:2px 10px;margin-top:6px;}
.checks label{
  display:flex;align-items:center;gap:7px;
  font-weight:400;font-size:13px;margin:3px 0;cursor:pointer;
}
.checks input{width:15px;height:15px;accent-color:var(--accent);}
.susp-days{display:flex;align-items:center;gap:6px;font-size:13px;margin:4px 0 0 22px;}
.panel .susp-days input[type=number]{width:70px;flex:0 0 70px;}
.sigpad{
  border:1px dashed #aaa;border-radius:6px;background:#fff;
  display:block;width:100%;height:110px;touch-action:none;cursor:crosshair;
}
.sig-tools{display:flex;justify-content:space-between;align-items:center;margin:4px 0 2px;}
.sig-tools span{font-size:12px;font-weight:600;}
.actions{display:flex;flex-direction:column;gap:8px;margin-top:16px;}
.hint{font-size:11.5px;color:#666;line-height:1.45;margin-top:10px;background:#f4f7fa;border-radius:6px;padding:9px 11px;}

/* ---------- HR analytics (status donut + per-reporter bars) ---------- */
.monthlabel{font-size:12.5px;font-weight:600;color:#555;}
.statgrid{
  display:grid;grid-template-columns:1fr 1fr;gap:16px;margin:0 0 22px;
}
.statcard{
  background:#fff;border-radius:10px;box-shadow:0 2px 10px rgba(0,0,0,.07);
  padding:16px 18px 18px;min-width:0;
}
.statcard h3{
  margin:0 0 12px;font-size:12px;font-weight:700;color:#667;
  text-transform:uppercase;letter-spacing:.05em;
}
.pieflex{display:flex;align-items:center;gap:20px;}
#pieChart{width:132px;height:132px;flex:0 0 132px;}
.pie-center-num{font:700 22px "Helvetica Neue",Arial,sans-serif;fill:#1a1a1a;}
.pie-center-cap{font:600 8.5px "Helvetica Neue",Arial,sans-serif;fill:#898781;letter-spacing:.06em;}
.vizlegend{display:flex;flex-direction:column;gap:7px;min-width:0;}
.vizlegend.small{flex-direction:row;flex-wrap:wrap;gap:5px 16px;margin-top:12px;}
.vizlegend .lrow{display:flex;align-items:center;gap:8px;font-size:12.5px;color:#333;}
.vizlegend .sw{width:10px;height:10px;border-radius:3px;flex-shrink:0;}
.vizlegend .lcount{margin-left:auto;font-weight:700;color:#1a1a1a;font-variant-numeric:tabular-nums;}
.vizlegend .lpct{color:#898781;font-size:11.5px;margin-left:6px;}
.vizlegend.small .lrow{font-size:11.5px;color:#555;}
.viz-empty{font-size:12.5px;color:#999;padding:18px 0;}
.statcard.span2{grid-column:1 / -1;}
.selectable{cursor:pointer;}
.selectable:hover{opacity:.82;}
.dim{opacity:.3;}
.filterchips{
  display:flex;align-items:center;gap:8px;flex-wrap:wrap;
  margin:-8px 0 16px;font-size:12.5px;
}
.fc-cap{color:#667;font-weight:600;}
.fchip{
  background:#fff;border:1px solid var(--accent);color:var(--accent);
  font-size:12px;font-weight:600;padding:4px 11px;border-radius:20px;cursor:pointer;
}
.fchip:hover{background:#eef4fa;}
.fclear{color:#a12525;font-weight:700;cursor:pointer;text-decoration:underline;font-size:12px;}
.bars{display:flex;flex-direction:column;gap:9px;}
.barrow{display:flex;align-items:center;gap:10px;min-width:0;}
.barname{
  flex:0 0 34%;max-width:34%;font-size:12.5px;color:#333;
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis;text-align:right;
}
.bartrack{flex:1;display:flex;align-items:center;height:14px;min-width:0;}
.barseg{height:14px;display:inline-block;}
.barseg + .barseg{margin-left:2px;}
.barseg:last-child{border-radius:0 4px 4px 0;}
.barval{
  flex:0 0 26px;font-size:12px;font-weight:700;color:#1a1a1a;
  font-variant-numeric:tabular-nums;
}
@media (max-width:900px){
  .statgrid{grid-template-columns:1fr;}
}

/* ---------- Employee name autocomplete + roster page ---------- */
.ac-wrap{position:relative;}
.ac-list{
  position:absolute;top:100%;left:0;right:0;z-index:45;
  background:#fff;border:1px solid var(--line);border-top:none;
  border-radius:0 0 8px 8px;box-shadow:0 8px 20px rgba(0,0,0,.16);
  max-height:264px;overflow-y:auto;
}
.ac-item{
  display:flex;justify-content:space-between;align-items:baseline;gap:10px;
  padding:8px 11px;font-size:13px;cursor:pointer;
}
.ac-item:hover,.ac-item.active{background:#eef4fa;}
.ac-item .acpos{color:#888;font-size:11.5px;white-space:nowrap;}
.ac-none{padding:9px 11px;font-size:12px;color:#999;}
.empid-note{font-size:11.5px;line-height:1.4;margin-top:4px;min-height:15px;}
.empid-note.ok{color:var(--ok);}
.empid-note.warn{color:var(--warn);}
.filesel{font-size:12.5px;max-width:320px;}
.searchbox{
  width:100%;max-width:340px;padding:8px 11px;font-size:13px;font-family:inherit;
  border:1px solid var(--line);border-radius:7px;background:#fff;
}
.idnote{color:#777;font-size:11.5px;}

/* ---------- Modal (reject reason) ---------- */
.modal-backdrop{
  position:fixed;inset:0;background:rgba(15,25,35,.45);z-index:80;
  display:flex;align-items:center;justify-content:center;padding:16px;
}
.modal{
  background:#fff;border-radius:12px;box-shadow:0 8px 32px rgba(0,0,0,.3);
  width:100%;max-width:430px;padding:22px 24px 20px;
}
.modal h3{margin:0 0 4px;font-size:16px;color:#a12525;}
.modal .modal-sub{font-size:12.5px;color:#666;margin:0 0 14px;}
.modal label{display:block;font-size:12px;font-weight:600;margin:10px 0 4px;}
.modal select,.modal input[type=text]{
  width:100%;padding:8px 10px;font-size:13.5px;font-family:inherit;
  border:1px solid var(--line);border-radius:7px;background:#fcfcfc;
}
.modal select:focus,.modal input:focus{outline:2px solid #e0b09c;border-color:#e0b09c;}
.modal-actions{display:flex;justify-content:flex-end;gap:8px;margin-top:16px;}
.modal-actions .btn-row{font-size:13px;padding:8px 14px;}
.matchpick{
  margin-top:12px;padding:10px 12px;border-radius:8px;
  background:#e9f3ee;border:1px solid #b9dcc9;font-size:13px;line-height:1.5;
}
.matchpick b{color:#0f6b58;}
.matchpick .mp-was{color:#888;font-size:11.5px;}
/* HR pipeline multi-select */
.cbcol{width:1%;white-space:nowrap;}
table.list td.cbcol input,.cbcol input{width:16px;height:16px;accent-color:var(--accent);cursor:pointer;}
tr.row-selected td{background:#eef4fa;}
.bulkbar{
  display:flex;align-items:center;gap:10px;flex-wrap:wrap;
  background:var(--accent);color:#fff;border-radius:9px;
  padding:9px 14px;margin:0 0 14px;
}
.bulkbar #bulkCount{font-size:13px;font-weight:700;margin-right:4px;}
.bulkbar .btn-row{font-size:12.5px;padding:6px 12px;}

/* ---------- Toast ---------- */
.toast{
  position:fixed;left:50%;bottom:26px;transform:translateX(-50%) translateY(20px);
  background:#1c3d2e;color:#fff;font-size:13.5px;line-height:1.45;
  padding:12px 18px;border-radius:9px;box-shadow:0 4px 18px rgba(0,0,0,.3);
  opacity:0;pointer-events:none;transition:opacity .25s,transform .25s;
  max-width:560px;z-index:99;
}
.toast.show{opacity:1;pointer-events:auto;transform:translateX(-50%) translateY(0);}
.toast b{color:#9fe3bd;}
.toast a{color:#ffd97a;font-weight:700;cursor:pointer;text-decoration:underline;}
.toast.error{background:#5a1f1f;}
.verstamp{
  position:fixed;bottom:5px;right:9px;z-index:5;pointer-events:none;
  font-size:10px;color:#b3b7bb;font-family:"Helvetica Neue",Arial,sans-serif;
  letter-spacing:.02em;
}

/* ---------- The paper (8.5in x 14in, scaled to fit on screen) ---------- */
.paper-wrap{
  flex:0 1 auto;min-width:280px;
  position:sticky;top:66px;
  overflow:hidden;
}
.paper-scale{transform-origin:top left;}
.paper{
  background:#fff;width:8.5in;min-height:14in;padding:0.5in;
  box-shadow:0 3px 16px rgba(0,0,0,.18);
  font-family:"Times New Roman",Times,serif;font-size:12pt;line-height:1.35;flex-shrink:0;
}
.hdr-formno{font-family:Arial,sans-serif;font-size:8pt;font-weight:bold;}
.hdr-co{text-align:center;font-weight:bold;margin-top:2pt;}
.hdr-addr{text-align:center;font-size:11pt;}
.doc-title{
  text-align:center;font-family:Arial,sans-serif;font-weight:bold;
  font-size:15pt;margin:14pt 0 10pt;
}
table.grid{border-collapse:collapse;width:100%;}
table.grid td{border:1px solid #000;padding:4pt 6pt;vertical-align:top;font-size:11.5pt;}
td.lbl{font-weight:bold;white-space:nowrap;width:1%;}
.v{min-height:14pt;}
.desc-cell{min-height:2.2in;}
.explain-cell{min-height:0.9in;}
.checkgrid{display:grid;grid-template-columns:1fr 1fr 1fr;gap:2pt 8pt;padding:2pt 0;}
.ckitem{display:flex;align-items:baseline;gap:5pt;}
.box{
  display:inline-block;width:10pt;height:10pt;border:1.2pt solid #000;
  position:relative;top:1.5pt;flex-shrink:0;text-align:center;
  line-height:9pt;font-size:10pt;font-family:Arial,sans-serif;
}
.ack{font-size:10.5pt;font-style:italic;margin:14pt 0 4pt;text-align:center;}
.digisig{
  font-size:10.5pt;font-style:italic;text-align:center;
  margin:26pt auto 0;max-width:5.6in;line-height:1.5;
}
.digisig b{font-style:normal;}
.digisig-sub{font-size:9pt;color:#555;margin-top:6pt;}
.filerline{
  font-size:12px;color:#555;background:#f4f7fa;border-radius:6px;
  padding:8px 11px;margin:0 0 14px;line-height:1.5;
}
.sigrow{display:flex;gap:0.6in;margin-top:10pt;}
.sigcol{flex:1;text-align:center;}
.sigimg{height:0.75in;display:flex;align-items:flex-end;justify-content:center;}
.sigimg img{max-height:0.75in;max-width:2.8in;}
.sigline{border-top:1px solid #000;margin-top:2pt;padding-top:2pt;font-weight:bold;}
.sigtitle{font-size:11pt;}
.sigdate{margin-top:14pt;}
.sigdate .dline{border-top:1px solid #000;width:1.8in;margin:0 auto;padding-top:2pt;font-size:10.5pt;}

@media (max-width:1100px){
  .app{flex-direction:column;align-items:stretch;}
  .panel{position:static;max-height:none;flex:none;}
  .paper-wrap{position:static;}
  .grid2{grid-template-columns:1fr;}
}
