:root{
  --navy:#1f3864; --navy-d:#152649; --blue:#2e5395; --lblue:#e8eefb;
  --gold:#bf9000; --lgold:#fff2cc; --green:#375623; --lgreen:#e2efda;
  --red:#a32d2d; --ink:#1c1f24; --sub:#5b6472; --line:#dde3ee; --band:#f6f8fc;
  --bg:#f1f4f9; --card:#ffffff;
  --mono: "SF Mono", Consolas, monospace;
}
*{box-sizing:border-box;}
body{
  margin:0; background:var(--bg); color:var(--ink);
  font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Arial,sans-serif;
  line-height:1.5;
}
header{
  background:linear-gradient(135deg,var(--navy),var(--navy-d));
  color:#fff; padding:28px 32px;
}
header h1{margin:0 0 4px; font-size:22px; font-weight:600; letter-spacing:.2px;}
header p{margin:0; color:#c7d3ea; font-size:13.5px;}
main{max-width:1180px; margin:0 auto; padding:24px 20px 60px;}
.card{
  background:var(--card); border:1px solid var(--line); border-radius:10px;
  padding:22px 24px; margin-bottom:20px; box-shadow:0 1px 2px rgba(20,30,60,.04);
}
.card h2{
  margin:0 0 4px; font-size:16px; font-weight:600; color:var(--navy);
  display:flex; align-items:center; gap:8px;
}
.card .step{
  display:inline-flex; align-items:center; justify-content:center;
  width:22px; height:22px; border-radius:50%; background:var(--navy);
  color:#fff; font-size:12px; font-weight:700; flex:none;
}
.card .desc{margin:2px 0 16px; font-size:13px; color:var(--sub);}
.grid3{display:grid; grid-template-columns:repeat(auto-fit,minmax(280px,1fr)); gap:14px;}
.drop{
  border:2px dashed var(--line); border-radius:8px; padding:18px 14px;
  text-align:center; cursor:pointer; transition:.15s; background:#fbfcfe;
  position:relative;
}
.drop:hover, .drop.drag{border-color:var(--blue); background:var(--lblue);}
.drop input{display:none;}
.drop .lbl{font-weight:600; font-size:13.5px; color:var(--navy); margin-bottom:2px;}
.drop .sub{font-size:12px; color:var(--sub);}
.drop .file{margin-top:8px; font-size:12px; color:var(--green); font-weight:600; word-break:break-all;}
.drop .status{margin-top:6px; font-size:11.5px; color:var(--sub);}
table{width:100%; border-collapse:collapse; font-size:12.8px;}
th{
  background:var(--navy); color:#fff; font-weight:600; text-align:left;
  padding:8px 9px; position:sticky; top:0; white-space:nowrap;
}
td{padding:6px 9px; border-bottom:1px solid var(--line); white-space:nowrap;}
tr:nth-child(even) td{background:var(--band);}
.tbl-wrap{max-height:340px; overflow:auto; border:1px solid var(--line); border-radius:8px; margin-top:10px;}
.num{text-align:right; font-variant-numeric:tabular-nums;}
input.cell{
  width:100%; border:1px solid transparent; background:transparent; font:inherit;
  padding:2px 4px; border-radius:4px; text-align:right; font-variant-numeric:tabular-nums;
}
input.cell:hover, input.cell:focus{border-color:var(--line); background:#fff; outline:none;}
input.cell.txt{text-align:left;}
select.cell{border:1px solid transparent; background:transparent; font:inherit; padding:2px 4px; border-radius:4px;}
select.cell:hover{border-color:var(--line); background:#fff;}
.chk{transform:scale(1.05);}
.btnrow{display:flex; gap:10px; flex-wrap:wrap; margin-top:14px;}
button{
  font:inherit; font-weight:600; font-size:13px; border-radius:7px; cursor:pointer;
  padding:9px 16px; border:1px solid var(--line); background:#fff; color:var(--navy);
  transition:.12s;
}
button:hover{background:var(--lblue); border-color:var(--blue);}
button.primary{background:var(--navy); color:#fff; border-color:var(--navy);}
button.primary:hover{background:var(--navy-d);}
button.gold{background:var(--gold); color:#fff; border-color:var(--gold);}
button.gold:hover{background:#a67b00;}
button.ghost{background:transparent; border-color:transparent; color:var(--sub); padding:4px 8px; font-size:12px;}
button.ghost:hover{background:var(--band); color:var(--navy);}
button:disabled{opacity:.45; cursor:not-allowed;}
.kpis{display:grid; grid-template-columns:repeat(auto-fit,minmax(170px,1fr)); gap:12px; margin-bottom:6px;}
.kpi{background:var(--band); border-radius:8px; padding:14px 16px;}
.kpi .l{font-size:11.5px; color:var(--sub); text-transform:uppercase; letter-spacing:.4px; margin-bottom:4px;}
.kpi .v{font-size:20px; font-weight:700; color:var(--navy); font-variant-numeric:tabular-nums;}
.kpi.accent{background:var(--navy); }
.kpi.accent .l{color:#c7d3ea;}
.kpi.accent .v{color:#fff;}
.section-title{font-size:14px; font-weight:700; color:var(--navy); margin:22px 0 8px; display:flex; align-items:center; gap:8px;}
.pill{
  display:inline-block; font-size:11px; font-weight:700; padding:2px 8px; border-radius:99px;
}
.pill.self{background:var(--lgold); color:#7a5900;}
.pill.absorbed{background:var(--lgreen); color:var(--green);}
.pill.staff{background:var(--lblue); color:var(--blue);}
.note{
  font-size:12.5px; color:var(--sub); background:var(--band); border-left:3px solid var(--blue);
  padding:9px 12px; border-radius:0 6px 6px 0; margin-top:10px;
}
.pr-letter{
  border:1px solid var(--line); border-radius:8px; padding:22px 26px; background:#fff;
  font-size:13.5px;
}
.pr-letter h3{margin:0 0 2px; color:var(--navy); font-size:17px;}
.pr-letter .addr{color:var(--sub); font-size:12.5px; margin-bottom:14px;}
.pr-letter .badge{
  display:inline-block; background:var(--navy); color:#fff; font-weight:700;
  padding:4px 14px; border-radius:5px; font-size:13px; margin-bottom:16px;
}
.pr-letter table{margin:10px 0;}
.pr-letter th{background:var(--lblue); color:var(--navy);}
.pr-row-total td{font-weight:700; background:var(--lgold)!important;}
.field-row{display:flex; gap:14px; flex-wrap:wrap; margin-bottom:14px;}
.field{display:flex; flex-direction:column; gap:3px; font-size:12px; color:var(--sub);}
.field input{font:inherit; font-size:13px; padding:6px 8px; border:1px solid var(--line); border-radius:6px; color:var(--ink);}
.hidden{display:none!important;}
.toolbar{display:flex; justify-content:space-between; align-items:center; flex-wrap:wrap; gap:10px; margin-bottom:2px;}
.small{font-size:12px; color:var(--sub);}
.check-td{text-align:center;}
.footer-note{font-size:12px; color:var(--sub); text-align:center; margin-top:10px;}
@media print{
  header, .card:not(.print-only){display:none!important;}
  .print-only{display:block!important;}
}