.calendar-layout{display:grid;grid-template-columns:340px 1fr;gap:16px}.calendar-form{position:sticky;top:12px;align-self:start}.calendar-toolbar{display:flex;gap:8px;flex-wrap:wrap;align-items:end}.calendar-toolbar>div{min-width:180px}.training-list{display:flex;flex-direction:column;gap:10px}.training-event{border:1px solid #dfe5ee;border-radius:14px;background:#fff;overflow:hidden}.training-event-head{display:grid;grid-template-columns:110px 1fr auto;gap:12px;align-items:center;padding:12px}.training-date{background:#eff6ff;border-radius:12px;padding:10px;text-align:center}.training-date strong{display:block;font-size:22px}.training-date span{font-size:12px;color:#475569}.training-meta h3{margin:0 0 5px}.training-meta p{margin:2px 0;color:#64748b;font-size:13px}.training-actions{display:flex;gap:6px;flex-wrap:wrap;justify-content:flex-end}.attendance-panel{border-top:1px solid #e5e7eb;padding:12px;background:#f8fafc}.attendance-summary{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;margin-bottom:10px}.attendance-summary div{background:#fff;border:1px solid #e2e8f0;border-radius:10px;padding:8px}.attendance-summary strong{display:block;font-size:20px}.attendance-wrap{overflow:auto;border:1px solid #dfe5ee;border-radius:12px}.attendance-table{width:100%;border-collapse:collapse;min-width:850px;background:#fff}.attendance-table th,.attendance-table td{padding:8px;border-bottom:1px solid #e8edf4;text-align:left;vertical-align:middle}.attendance-table th{background:#eef2f7;font-size:13px}.attendance-table select,.attendance-table input{padding:7px;font-size:13px}.status-present{background:#f0fdf4}.status-justified{background:#fffbeb}.status-absent{background:#fff1f2}.status-notcalled{background:#f1f5f9}.calendar-empty{text-align:center;padding:35px;color:#64748b}.month-strip{display:flex;gap:7px;overflow:auto;padding:4px 0 10px}.month-chip{white-space:nowrap;background:#e2e8f0;color:#1e293b}.month-chip.active{background:#1b8f3a;color:white}.quick-mark{display:flex;gap:6px;flex-wrap:wrap;margin:8px 0}.quick-mark button{padding:7px 10px;font-size:12px}@media(max-width:950px){.calendar-layout{grid-template-columns:1fr}.calendar-form{position:static}.attendance-summary{grid-template-columns:1fr 1fr}.training-event-head{grid-template-columns:90px 1fr}.training-actions{grid-column:1/-1;justify-content:flex-start}}

.training-type-icon{display:inline-block;min-width:1.4em;text-align:center;margin-right:.15em}
.attendance-state-btn{min-width:190px;text-align:left;border:1px solid #cbd5e1;background:#fff;color:#1e293b;padding:9px 11px;border-radius:9px;font-weight:700;white-space:nowrap}.attendance-state-btn.status-present{background:#dcfce7;border-color:#86efac;color:#166534}.attendance-state-btn.status-justified{background:#fef3c7;border-color:#fcd34d;color:#92400e}.attendance-state-btn.status-absent{background:#fee2e2;border-color:#fca5a5;color:#991b1b}.attendance-state-btn:hover{filter:brightness(.98)}
