.attendance-board{--ab-line:#e3e8f0;--ab-muted:#64748b;--ab-ok:#16744d;--ab-ok-bg:#eaf7f0;--ab-warn:#945a09;--ab-warn-bg:#fff5e0;--ab-bad:#b42318;--ab-bad-bg:#fdecea;--ab-rest:#475569;--ab-rest-bg:#f1f4f8;--ab-wait:#255dbe;--ab-wait-bg:#e8f0ff;display:grid;grid-template-columns:minmax(0,1fr);gap:12px;font-size:14px;color:#17253d;min-width:0}
.attendance-board .ab-body{min-width:0;display:grid;grid-template-columns:minmax(0,1fr);gap:12px}
.attendance-board *{box-sizing:border-box}
.attendance-board small{display:block;color:var(--ab-muted);font-size:12px;line-height:1.45}
.attendance-board .ab-top{display:flex;align-items:center;justify-content:space-between;gap:12px}
.attendance-board .ab-top p{margin:0;color:var(--ab-muted)}
.attendance-board .ab-button{width:auto;flex:none;min-height:40px;padding:0 14px;border:1px solid #cdd6e3;border-radius:8px;background:#fff;color:#17253d;font:inherit;cursor:pointer}
.attendance-board .ab-button:disabled{opacity:.5;cursor:default}
.attendance-board .ab-tabs{display:flex;gap:4px;border-bottom:1px solid var(--ab-line);overflow-x:auto}
.attendance-board .ab-tabs button{width:auto;flex:none;border-radius:0;min-height:44px;padding:0 16px;border:0;border-bottom:3px solid transparent;background:none;color:var(--ab-muted);font:inherit;font-weight:600;cursor:pointer}
.attendance-board .ab-tabs button[aria-selected=true]{color:#17253d;border-bottom-color:#255dbe}
.attendance-board .ab-error{margin:0;padding:10px 12px;border-radius:8px;background:var(--ab-bad-bg);color:var(--ab-bad)}
.attendance-board .ab-note{margin:0;color:var(--ab-muted);font-size:12px}
.attendance-board .ab-empty{margin:0;padding:14px;color:var(--ab-muted)}
.attendance-board .ab-places{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(300px,100%),1fr));gap:12px}
.attendance-board .ab-place{border:1px solid var(--ab-line);border-radius:10px;background:#fff;overflow:hidden}
.attendance-board .ab-place header{display:flex;justify-content:space-between;align-items:flex-start;gap:8px;padding:12px 14px 6px}
.attendance-board .ab-place header strong{font-size:16px}
.attendance-board .ab-place.is-idle{background:#fafbfd}
.attendance-board .ab-count{font-weight:700;font-size:16px;white-space:nowrap}
.attendance-board .ab-chips{display:flex;flex-wrap:wrap;gap:6px;padding:0 14px 10px}
.attendance-board .ab-chip{padding:2px 8px;border-radius:999px;font-size:12px}
.attendance-board .ab-people,.attendance-board .ab-days,.attendance-board .ab-exceptions{list-style:none;margin:0;padding:0}
.attendance-board .ab-people li{display:flex;flex-wrap:wrap;justify-content:space-between;gap:10px;padding:9px 14px;border-top:1px solid #eef1f6}
.attendance-board .ab-people li>div{min-width:0}
.attendance-board .ab-people li>div:first-child{flex:1 1 auto}
.attendance-board .ab-people li strong{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.attendance-board .ab-right{flex:0 1 auto;margin-left:auto;text-align:right}
.attendance-board .ab-right .ab-pill{white-space:normal}
.attendance-board .ab-pill{display:inline-block;padding:2px 8px;border-radius:6px;font-size:12px;font-weight:600;white-space:nowrap}
.attendance-board .t-ok{background:var(--ab-ok-bg);color:var(--ab-ok)}
.attendance-board .t-done{background:var(--ab-rest-bg);color:var(--ab-ok)}
.attendance-board .t-warn{background:var(--ab-warn-bg);color:var(--ab-warn)}
.attendance-board .t-bad{background:var(--ab-bad-bg);color:var(--ab-bad)}
.attendance-board .t-rest{background:var(--ab-rest-bg);color:var(--ab-rest)}
.attendance-board .t-wait{background:var(--ab-wait-bg);color:var(--ab-wait)}
.attendance-board .ab-controls{display:flex;flex-wrap:wrap;align-items:flex-end;gap:10px}
.attendance-board .ab-field{display:grid;gap:4px;font-size:12px;color:var(--ab-muted)}
.attendance-board .ab-field input,.attendance-board .ab-field select{min-height:40px;padding:0 10px;border:1px solid #cdd6e3;border-radius:8px;background:#fff;font:inherit;color:#17253d}
.attendance-board .ab-table-wrap{overflow-x:auto;border:1px solid var(--ab-line);border-radius:10px;-webkit-overflow-scrolling:touch}
.attendance-board .ab-table{width:100%;border-collapse:collapse;font-size:13px}
.attendance-board .ab-table th,.attendance-board .ab-table td{padding:10px 12px;border-bottom:1px solid #eef1f6;text-align:left;white-space:nowrap;vertical-align:top}
.attendance-board .ab-table thead th{background:#f5f7fb;color:#536174;font-size:12px;font-weight:600}
.attendance-board .ab-table tbody th{position:sticky;left:0;background:#fff;font-weight:400;z-index:1}
.attendance-board .ab-row{cursor:pointer}
.attendance-board .ab-row:hover td,.attendance-board .ab-row.is-open td{background:#f7faff}
.attendance-board .ab-bad{color:var(--ab-bad)}
.attendance-board .ab-detail td{white-space:normal;background:#fafbfd}
.attendance-board .ab-detail .ab-days{position:sticky;left:12px;max-width:min(560px,calc(100vw - 72px))}
.attendance-board .ab-days li{display:grid;grid-template-columns:92px auto 1fr;align-items:center;gap:8px;padding:5px 0;border-bottom:1px dashed #e8ecf2}
.attendance-board .ab-days li:last-child{border-bottom:0}
.attendance-board .ab-days .ab-pill{justify-self:start}
.attendance-board .ab-exceptions{display:grid;gap:8px}
.attendance-board .ab-exception{padding:10px 12px;border:1px solid var(--ab-line);border-left:4px solid var(--ab-bad);border-radius:8px;background:#fff}
.attendance-board .ab-exception.very_late{border-left-color:#e2a23b}
.attendance-board .ab-exception div{display:flex;flex-wrap:wrap;align-items:baseline;gap:4px 8px}
.attendance-board .ab-exception small{flex-basis:100%}
.attendance-board .ab-exception p{margin:6px 0 0;font-size:13px}
@media (max-width:640px){
  .attendance-board .ab-places{grid-template-columns:1fr}
  .attendance-board .ab-controls{display:grid;grid-template-columns:1fr 1fr}
  .attendance-board .ab-controls .ab-button{grid-column:1/-1}
  .attendance-board .ab-days li{grid-template-columns:80px auto;}
  .attendance-board .ab-days li small{grid-column:1/-1}
}
