/* Roster command boards: keep personnel analysis separate from headcount cards. */
.roster-board-tabs{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px;margin:0 0 14px;border-bottom:1px solid #dce6e2}
.roster-board-tabs button{display:flex;align-items:center;gap:9px;min-height:58px;padding:9px 12px;border:1px solid #dfe8e4;border-bottom:3px solid transparent;border-radius:7px 7px 0 0;background:#fff;color:#586860;text-align:left;cursor:pointer}
.roster-board-tabs button:hover,.roster-board-tabs button:focus-visible{border-color:#9fc9ba;outline:0;background:#f7fcf9}
.roster-board-tabs button.active{border-color:#8fc5b2;border-bottom-color:#1c8068;color:#14684f;background:#f3faf7;box-shadow:0 3px 0 rgba(28,128,104,.08)}
.roster-board-tabs svg{width:18px;height:18px;flex:0 0 18px;color:#287c64}.roster-board-tabs span{display:grid;gap:2px;min-width:0}.roster-board-tabs strong{font-size:12px}.roster-board-tabs small{font-size:10px;color:#7a8982}.roster-board-tabs b{margin-left:auto;min-width:20px;padding:2px 6px;border-radius:10px;background:#e7f3ee;color:#287c64;font-size:10px;text-align:center}
.roster-export-month{display:grid;gap:2px;color:#617169;font-size:10px}.roster-export-month input{height:32px;padding:0 7px;border:1px solid #cfdcd6;border-radius:5px;background:#fff;color:#24342c;font:inherit}
.roster-analysis-board{display:grid;gap:14px}.roster-analysis-head{display:flex;align-items:flex-end;justify-content:space-between;gap:16px;padding:16px 18px;border:1px solid #cfe3da;border-top:4px solid #287c64;border-radius:7px;background:#fff}.roster-analysis-head h2{margin:3px 0 0;color:#17352b;font-size:20px}.roster-analysis-head p{margin:4px 0 0;color:#72827b;font-size:11px}.roster-analysis-head label{display:grid;gap:4px;min-width:160px;color:#64756c;font-size:10px}.roster-analysis-head select{height:32px;padding:0 8px;border:1px solid #cfdcd6;border-radius:5px;background:#fff;color:#26382f;font:inherit}
.roster-analysis-stats{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px}.roster-analysis-stats .stat{min-height:96px;padding:13px;border:1px solid #dce8e2;border-radius:7px;background:#fff}.roster-analysis-stats .label{display:flex;align-items:center;gap:7px;color:#52645a;font-size:11px;font-weight:700}.roster-analysis-stats .label i{width:7px;height:7px;border-radius:50%;background:#287c64}.roster-analysis-stats .value{margin-top:8px;color:#1f735c;font-size:24px;font-weight:800}.roster-analysis-stats .value small{font-size:11px;font-weight:600}.roster-analysis-stats .trend{display:block;margin-top:4px;color:#84938c;font-size:9px}.roster-analysis-grid{grid-template-columns:repeat(3,minmax(0,1fr));border:1px solid #e3ebe7;border-left:0}.roster-analysis-grid article{background:#fff}.roster-analysis-grid h3{display:flex;align-items:baseline;justify-content:space-between}.roster-analysis-grid h3 small{color:#91a098;font-size:9px;font-weight:500}.roster-analysis-grid .roster-structure-row strong em{margin-left:3px;color:#819189;font-size:9px;font-style:normal;font-weight:500}
@media(max-width:900px){.roster-board-tabs{grid-template-columns:repeat(2,minmax(0,1fr))}.roster-analysis-stats{grid-template-columns:repeat(2,minmax(0,1fr))}.roster-analysis-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.roster-analysis-head{align-items:stretch;flex-direction:column}.roster-analysis-head label{min-width:0}}
@media(max-width:560px){.roster-page-head .actions{align-items:stretch;flex-wrap:wrap}.roster-export-month{flex:1 1 120px}.roster-board-tabs{grid-template-columns:1fr}.roster-analysis-stats,.roster-analysis-grid{grid-template-columns:1fr}}
.roster-overview-metrics{display:grid;gap:10px;margin-bottom:14px}.roster-metric-row{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px}.roster-metric-row .stat{min-height:94px;padding:13px;border:1px solid #dce8e2;border-radius:7px;background:#fff;text-align:left;cursor:pointer}.roster-metric-row .stat:hover,.roster-special-metrics .stat:hover{border-color:#9fc9ba;box-shadow:0 3px 10px rgba(31,111,91,.08)}.roster-metric-row .label{display:flex;align-items:center;gap:7px;color:#52645a;font-size:11px;font-weight:700}.roster-metric-row .label>i{width:16px;height:16px;color:#287c64}.roster-metric-row .value{margin-top:8px;color:#1f735c;font-size:25px;font-weight:800}.roster-metric-row .value small,.roster-special-metrics small{font-size:10px;font-weight:600}.roster-metric-row .trend{display:block;margin-top:4px;color:#84938c;font-size:9px}.roster-todo-metrics .stat{min-height:78px}.roster-todo-metrics .value{font-size:22px;color:#405d50}.roster-todo-metrics .trend.warn{color:#b87018}.roster-special-board{display:grid;gap:14px}.roster-special-head{display:flex;align-items:flex-end;justify-content:space-between;gap:16px;padding:16px 18px;border:1px solid #d8e5df;border-top:4px solid #287c64;border-radius:7px;background:#fff}.roster-special-head h2{margin:3px 0 0;color:#17352b;font-size:20px}.roster-special-head p{margin:4px 0 0;color:#72827b;font-size:11px}.roster-special-metrics{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:9px}.roster-special-metrics .stat{min-height:80px;padding:12px;border:1px solid #dce8e2;border-radius:7px;background:#fff;text-align:left;cursor:pointer}.roster-special-metrics .stat>span{display:block;color:#596a62;font-size:10px}.roster-special-metrics .stat strong{display:inline-block;margin-top:7px;color:#27745d;font-size:23px}.roster-special-metrics .stat small{margin-left:3px;color:#74857c}.roster-special-metrics .risk-red{border-color:#efd0cf;background:#fff9f8}.roster-special-metrics .risk-red strong{color:#c54b48}.roster-special-metrics .risk-amber{border-color:#efddba;background:#fffaf2}.roster-special-metrics .risk-amber strong{color:#b87018}.roster-special-metrics .risk-yellow{border-color:#eee0a8;background:#fffdf2}.roster-special-metrics .risk-yellow strong{color:#a78618}.roster-special-metrics .risk-blue{border-color:#c9dceb;background:#f6fbff}.roster-special-metrics .risk-blue strong{color:#376f99}.roster-special-toolbar{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:11px 14px;border:1px solid #e0e9e5;border-radius:6px;background:#f8fbf9}.roster-special-toolbar strong{color:#2d5143;font-size:12px}.roster-special-toolbar select,.roster-inline-select,.roster-inline-input{height:30px;padding:0 7px;border:1px solid #cfdcd6;border-radius:5px;background:#fff;color:#354b41;font:inherit;font-size:10px}.roster-special-table{min-width:980px}.roster-special-table th{white-space:nowrap}.roster-special-table td{vertical-align:middle}.roster-special-table td>small{display:block;margin-top:3px;color:#84938c;font-size:9px}.roster-inline-input{width:150px}.roster-inline-select{min-width:120px}.roster-special-table .tag.red{color:#b94b47;background:#fff0ee}.roster-special-table .tag.warn{color:#a56812;background:#fff5df}
@media(max-width:900px){.roster-metric-row{grid-template-columns:repeat(2,minmax(0,1fr))}.roster-special-metrics{grid-template-columns:repeat(3,minmax(0,1fr))}.roster-special-head{align-items:stretch;flex-direction:column}}
@media(max-width:560px){.roster-analysis-stats,.roster-analysis-grid,.roster-metric-row,.roster-special-metrics{grid-template-columns:1fr}.roster-special-toolbar{align-items:stretch;flex-direction:column}}
.roster-board-tabs{display:flex;grid-template-columns:none;gap:4px;margin:0 0 12px;padding:4px;border:1px solid #dce6e2;border-radius:8px;background:#f7faf8}.roster-board-tabs button{flex:1;min-height:42px;padding:7px 12px;border:0;border-radius:6px;background:transparent;box-shadow:none;text-align:center}.roster-board-tabs button.active{border:0;background:#fff;box-shadow:0 1px 4px rgba(31,111,91,.12);color:#14684f}.roster-board-tabs button:hover,.roster-board-tabs button:focus-visible{border:0;background:#fff;outline:0}.roster-board-tabs svg{display:none}.roster-board-tabs span{display:block}.roster-board-tabs strong{font-size:11px}.roster-board-tabs small{display:block;margin-top:2px;font-size:9px}.roster-board-tabs b{display:none}.roster-capture-toggle{height:28px;padding:0 7px;border:1px solid #cfdcd6;border-radius:5px;background:#fff;color:#52645a;font-size:10px;cursor:pointer}.roster-capture-toggle svg{width:13px;height:13px;vertical-align:-2px;margin-right:3px}
@media(max-width:560px){.roster-board-tabs{display:grid;grid-template-columns:repeat(2,minmax(0,1fr))}.roster-board-tabs button{min-height:40px}}

/* Final hierarchy pass: one clear title, compact navigation, and quieter reminders. */
.roster-page-head{align-items:center;margin-bottom:12px;padding-bottom:2px}
.roster-page-head .page-kicker{display:block;margin-bottom:4px;color:#287c64;font-size:10px;font-weight:800;letter-spacing:.08em}
.roster-page-head h1{margin-bottom:4px;font-size:22px}
.roster-page-head p{font-size:11px}
.roster-page-head .actions{align-items:flex-end;gap:8px}
.roster-page-head .actions>.btn{min-height:34px}
.roster-board-tabs{display:flex;gap:2px;margin:0 0 18px;padding:3px;border:1px solid #d7e4de;border-radius:7px;background:#f4f8f6}
.roster-board-tabs button{min-height:38px;padding:6px 14px;border:0;border-radius:5px;color:#65756e;text-align:center}
.roster-board-tabs button.active{background:#fff;color:#14684f;box-shadow:0 1px 3px rgba(31,111,91,.14)}
.roster-board-tabs button:hover,.roster-board-tabs button:focus-visible{background:#fff;color:#14684f}
.roster-board-tabs strong{font-size:11px;font-weight:800}
.roster-board-tabs small{display:none}
.roster-overview-metrics{gap:0;margin-bottom:16px}
.roster-overview-section-head{display:flex;align-items:end;justify-content:space-between;gap:12px;margin:0 0 8px;padding:0 2px}
.roster-overview-section-head h2{margin:0;color:#17352b;font-size:15px}
.roster-overview-section-head p{margin:3px 0 0;color:#7a8982;font-size:10px}
.roster-overview-section-head>.muted{font-size:9px}
.roster-todo-head{margin-top:18px}
.roster-metric-row{gap:10px}
.roster-metric-row .stat{min-height:88px}
.roster-todo-metrics .stat{min-height:66px;padding:10px 12px;border-color:#e3ebe7;background:#fbfdfc}
.roster-todo-metrics .label{font-size:10px}
.roster-todo-metrics .value{margin-top:5px;font-size:20px}
.roster-todo-metrics .trend{display:none}
.roster-special-board{gap:12px}
.roster-special-head{padding:13px 16px;border-top-width:3px}
.roster-special-head h2{font-size:17px}
.roster-special-head p{font-size:10px}
.roster-special-metrics{grid-template-columns:repeat(6,minmax(0,1fr));gap:8px}
.roster-special-metrics .stat{min-height:68px;padding:10px 12px}
.roster-special-metrics .stat{text-align:center}
.roster-special-metrics .stat strong{margin-top:5px;font-size:20px}
.roster-special-toolbar{padding:9px 12px}
.roster-analysis-board{gap:8px}
.roster-analysis-head{padding:13px 16px;border-top-width:3px}
.roster-analysis-head h2{font-size:17px}
.roster-analysis-stats{gap:0;margin-bottom:0;overflow:visible;border:0;border-radius:0;background:transparent;box-shadow:none}
.roster-analysis-stats .stat{min-height:80px;padding:11px 12px;border:1px solid #dce8e2;border-right:0;border-radius:0;text-align:center}
.roster-analysis-stats .stat:first-child{border-radius:7px 0 0 7px}
.roster-analysis-stats .stat:last-child{border-right:1px solid #dce8e2;border-radius:0 7px 7px 0}
.roster-analysis-stats .label{justify-content:center}
.roster-analysis-stats .trend{position:static;width:max-content;margin:7px auto 0}
@media(max-width:1200px){.roster-special-metrics{grid-template-columns:repeat(3,minmax(0,1fr))}}
@media(max-width:900px){.roster-page-head{align-items:stretch;flex-direction:column}.roster-page-head .actions{align-items:stretch}.roster-special-metrics{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:560px){.roster-board-tabs{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));margin-bottom:14px}.roster-board-tabs button{min-height:36px}.roster-overview-section-head{align-items:flex-start;flex-direction:column;gap:3px}.roster-metric-row,.roster-special-metrics{grid-template-columns:1fr}.roster-page-head .actions{flex-direction:row;flex-wrap:wrap}.roster-page-head .actions>.btn{flex:1}.roster-export-month{flex:1 1 120px}}

/* Roster overview layout: make the board navigation prominent and split the
   overview into two clearly bounded dashboard rows. */
.roster-board-tabs{
  width:min(100%,900px);
  margin:0 auto 16px;
  padding:4px;
  gap:4px;
  border:1px solid #c4dbd1;
  border-radius:10px;
  background:#edf5f1;
  box-shadow:0 2px 8px rgba(26,87,68,.07);
}
.roster-board-tabs button{
  min-height:46px;
  padding:8px 18px;
  justify-content:center;
  border:1px solid transparent;
  border-radius:7px;
  color:#486258;
  font-size:12px;
  font-weight:700;
}
.roster-board-tabs button.active{
  border-color:#1b8066;
  background:#1b8066;
  color:#fff;
  box-shadow:0 3px 8px rgba(27,128,102,.22);
}
.roster-board-tabs button.active small{color:rgba(255,255,255,.78)}
.roster-board-tabs button:hover,.roster-board-tabs button:focus-visible{border-color:#72b39d;background:#fff;color:#17684f}
.roster-board-tabs button.active:hover,.roster-board-tabs button.active:focus-visible{border-color:#146b55;background:#146b55;color:#fff}
.roster-board-tabs svg{display:block;width:17px;height:17px;color:currentColor}
.roster-board-tabs span{display:grid;gap:2px;text-align:left}
.roster-board-tabs strong{font-size:12px}
.roster-board-tabs small{display:block;font-size:9px;color:#72857c}

.roster-overview-metrics{display:grid;grid-template-columns:1fr;gap:12px;margin-bottom:16px}
.roster-overview-section-head{
  margin:0;
  padding:12px 14px 9px;
  border:1px solid #cfe1d9;
  border-bottom:0;
  border-radius:10px 10px 0 0;
  background:#f4faf7;
}
.roster-overview-section-head h2{font-size:16px;font-weight:800}
.roster-overview-section-head p{font-size:10px}
.roster-overview-section-head>.muted{font-size:9px}
.roster-metric-row{
  gap:10px;
  padding:0 12px 12px;
  border:1px solid #cfe1d9;
  border-top:0;
  border-radius:0 0 10px 10px;
  background:#f4faf7;
}
.roster-core-metrics .stat,.roster-todo-metrics .stat{min-height:82px}
.roster-core-metrics .stat{border-color:#d3e5dd;box-shadow:0 1px 2px rgba(34,92,73,.04)}
.roster-todo-board{margin-top:0}
.roster-todo-head{margin-top:0;background:#f8faf9;border-color:#d9e3de}
.roster-todo-metrics{background:#f8faf9;border-color:#d9e3de}
.roster-todo-metrics .stat{padding:11px 12px;border-color:#dfe8e3;background:#fff}

@media(max-width:900px){
  .roster-board-tabs{width:100%}
  .roster-board-tabs button{padding:8px 12px}
}
@media(max-width:560px){
  .roster-board-tabs{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));margin-bottom:14px}
  .roster-board-tabs button{min-height:42px;padding:7px 8px}
  .roster-board-tabs svg{display:none}
  .roster-overview-section-head{align-items:flex-start;flex-direction:column;gap:3px}
  .roster-metric-row{grid-template-columns:repeat(2,minmax(0,1fr));padding:0 8px 8px}
}

/* Two-board overview: current personnel and reminders sit side by side. */
.roster-overview-metrics{
  grid-template-columns:minmax(0,1.15fr) minmax(0,1fr);
  grid-template-areas:
    "current-head todo-head"
    "current-body todo-body";
  column-gap:14px;
  row-gap:0;
  align-items:stretch;
}
.roster-overview-section-head:first-child{grid-area:current-head}
.roster-core-metrics{grid-area:current-body}
.roster-todo-head{grid-area:todo-head}
.roster-todo-metrics{grid-area:todo-body}
.roster-overview-section-head:first-child,.roster-todo-head{min-height:58px}

@media(max-width:900px){
  .roster-overview-metrics{
    grid-template-columns:1fr;
    grid-template-areas:
      "current-head"
      "current-body"
      "todo-head"
      "todo-body";
    row-gap:12px;
  }
  .roster-overview-section-head:first-child,.roster-todo-head{min-height:0}
}

/* Give each of the two desktop boards a comfortable 2x2 card grid so labels
   remain readable instead of wrapping inside four narrow columns. */
.roster-core-metrics,.roster-todo-metrics{
  grid-template-columns:repeat(2,minmax(0,1fr));
}
.roster-core-metrics .stat,.roster-todo-metrics .stat{min-height:92px}

/* Visual balance pass: strengthen the primary content and reduce excess card
   whitespace so the overview reads as one deliberate dashboard. */
.roster-page-head{margin-bottom:16px}
.roster-page-head .page-kicker{font-size:12px;letter-spacing:.1em}
.roster-page-head h1{font-size:28px;line-height:1.15}
.roster-page-head p{font-size:13px}
.roster-page-head .actions>.btn{min-height:38px}
.roster-board-tabs{width:min(100%,1080px);margin-bottom:18px;padding:5px;border-radius:12px}
.roster-board-tabs button{min-height:58px;padding:9px 22px;gap:11px}
.roster-board-tabs svg{width:21px;height:21px}
.roster-board-tabs strong{font-size:14px}
.roster-board-tabs small{font-size:10px}
.roster-overview-section-head:first-child{border-top:4px solid #1b8066;background:#eef8f4}
.roster-todo-head{border-top:4px solid #d79a36;background:#fffaf1}
.roster-core-metrics .stat,.roster-todo-metrics .stat{min-height:78px;padding:10px 12px}
.roster-metric-row{padding-bottom:10px}
.roster-metric-row .value{margin-top:5px;font-size:24px}
.roster-todo-metrics .value{font-size:21px}

/* Keep sensitive columns readable. Non-authorized users still receive masked
   values from the API; authorized users see the complete source values. */
.comprehensive-roster tr:not(.roster-groups) > :is(th,td):nth-child(20),
.comprehensive-roster tr:not(.roster-groups) > :is(th,td):nth-child(34),
.comprehensive-roster tr:not(.roster-groups) > :is(th,td):nth-child(35),
.comprehensive-roster tr:not(.roster-groups) > :is(th,td):nth-child(36){
  font-size:11px;
  font-weight:800;
  letter-spacing:.035em;
  color:#142b23;
}
.comprehensive-roster thead tr:not(.roster-groups) th:nth-child(20),
.comprehensive-roster thead tr:not(.roster-groups) th:nth-child(34),
.comprehensive-roster thead tr:not(.roster-groups) th:nth-child(35),
.comprehensive-roster thead tr:not(.roster-groups) th:nth-child(36){font-size:10px}
.comprehensive-roster tr:not(.roster-groups) > :is(th,td).roster-sensitive-value{
  overflow:visible;
  text-overflow:clip;
  white-space:nowrap;
}
.employee-archive-sensitive{border-color:#d9e3de;background:#fbfdfc}
.employee-archive-sensitive header{border-left:3px solid #287c64;padding-left:10px}
.employee-archive-sensitive dd{font-variant-numeric:tabular-nums;letter-spacing:.03em}
