.calendar-controls{display:flex;align-items:center;justify-content:space-between;gap:20px;flex-wrap:wrap;margin-bottom:18px}
.calendar-week-title>strong{display:block;font-size:.98rem}
.calendar-week-title label{display:flex;align-items:center;gap:8px;margin-top:5px;font-size:.7rem;font-weight:400;color:#7b8579}
.calendar-week-title input{min-height:34px;padding:5px 8px;font-size:.75rem;background:#fffdfb}
.calendar-legend{display:flex;align-items:center;gap:17px;flex-wrap:wrap;margin-bottom:18px;font-size:.76rem;color:#657665}
.calendar-legend>span{display:inline-flex;align-items:center;gap:7px}
.calendar-status{display:inline-flex;align-items:center;justify-content:center;gap:5px;border-radius:5px;padding:3px 6px;line-height:1.3;font-size:.8rem;font-weight:650}
.calendar-status.full{background:#e7f3e9;color:#236d3e}.calendar-status.pending{background:#eaf0f9;color:#345f92}.calendar-status.review{background:#fff1d5;color:#956115}.calendar-status.legacy{background:#eeeeec;color:#707a70}
.calendar-status>span{font-size:.63rem;font-weight:500}
.calendar-scroll{overscroll-behavior-x:contain}
.attendance-calendar{min-width:1060px;table-layout:fixed}
.attendance-calendar caption{padding:15px 18px;text-align:left;font-size:.76rem;color:#697b6c;background:#fffdf9;border-bottom:1px solid #e8e2d8}
.attendance-calendar thead th{padding:15px 8px;text-align:center;font-size:.73rem;background:#f8f6ef;color:#677764;line-height:1.7}
.attendance-calendar thead th:first-child{width:230px;text-align:left;padding-left:18px}
.attendance-calendar .calendar-person{position:sticky;left:0;z-index:2;background:#fffdfb;padding:13px 15px;box-shadow:1px 0 #e8e2d8;white-space:normal;min-width:230px}
.attendance-calendar .table-person{min-width:0;gap:8px}
.attendance-calendar .table-person strong{font-size:.78rem;line-height:1.5;color:#354d3d}
.attendance-calendar .table-person small{font-size:.64rem;font-weight:400;white-space:normal}
.attendance-calendar .avatar{width:29px;height:29px;font-size:.64rem}
.attendance-calendar .calendar-department th{padding:10px 18px;background:#eef2e9;color:#486340;font-size:.7rem;letter-spacing:.04em;text-align:left;font-weight:650}
.attendance-calendar td{vertical-align:top;padding:5px;border-right:1px solid #f0ede5}
.attendance-calendar td.is-today,.attendance-calendar th.is-today{background:#f0f5e7}
.calendar-day{display:flex;flex-direction:column;align-items:center;gap:6px;width:100%;min-height:91px;padding:8px 4px;border:1px solid transparent;border-radius:7px;text-align:center}
.calendar-day:hover{background:#f2f6ee;border-color:#d5e1c9}
.attendance-calendar .calendar-day .shift-chip{width:100%;margin:0;font-size:.69rem;line-height:1.5;white-space:normal;padding:5px 3px;pointer-events:none}
.attendance-calendar .calendar-day .shift-chip small{font-size:.62rem;margin-top:2px}
.calendar-no-shift{font-size:.85rem;line-height:1.5;color:#a6afa1;min-height:32px;display:flex;align-items:center}
.calendar-request-note{display:block;color:#8c634f;background:#faf0e6;padding:3px 5px;border-radius:4px;font-size:.59rem;line-height:1.4;max-width:100%}
.attendance-calendar .calendar-total{width:106px;background:#faf8f1;text-align:center}
.calendar-total small{font-size:.64rem;color:#7b836c}
.calendar-month-total{display:flex;flex-direction:column;align-items:center;gap:5px;width:100%;min-height:91px;padding:9px 3px;border:1px solid transparent;border-radius:7px}
.calendar-month-total:hover{background:#edf2e2;border-color:#dce2d1}
.calendar-month-total>strong{font-size:1.45rem;color:#345837;font-variant-numeric:tabular-nums;font-weight:650;line-height:1.2}
.calendar-month-total .calendar-status{font-size:.7rem}
.calendar-footnote{font-size:.75rem;color:#74816b;line-height:1.9;margin-top:16px;max-width:1020px}
.calendar-pairs{display:grid;gap:9px}.calendar-pairs>div{display:flex;justify-content:space-between;gap:15px;flex-wrap:wrap;background:#f1f6ed;padding:12px;border:1px solid #e0ead7;border-radius:8px;font-size:.78rem;color:#6b7c60}.calendar-pairs strong{color:#3b633f}
.calendar-detail-actions{display:flex;flex-wrap:wrap;gap:8px;margin-top:22px;padding-top:17px;border-top:1px solid #e7eadd}
.calendar-request-link{margin:0 7px 7px 0}
.calendar-month-list{display:grid;gap:5px}
.calendar-month-list>button{display:flex;justify-content:space-between;align-items:center;gap:9px;padding:12px 8px;border-bottom:1px solid #eaeede;text-align:left;font-size:.75rem}
.calendar-month-list>button:hover{background:#f5f8ef}
.calendar-month-list .calendar-status{font-size:.67rem;text-align:center}
@media(max-width:700px){.calendar-controls{gap:14px}.calendar-controls>.row{gap:9px}.calendar-week-title>strong{font-size:.85rem}.calendar-controls .icon-btn{width:35px;height:35px}.calendar-legend{gap:10px;font-size:.68rem}.calendar-status{font-size:.74rem}.attendance-calendar{min-width:960px}.attendance-calendar thead th:first-child,.attendance-calendar .calendar-person{width:180px;min-width:180px;padding-left:10px;padding-right:8px}.attendance-calendar .calendar-person .avatar{display:none}.attendance-calendar .calendar-total{width:91px}.calendar-footnote{font-size:.71rem}.calendar-month-list .calendar-status{max-width:180px}.calendar-pairs>div{font-size:.75rem}}

.table-person>div{min-width:0}.table-person strong{white-space:normal;overflow-wrap:anywhere}.roster-name-note{color:#956115!important}.roster-account-note{display:block;margin-top:5px;color:#7b8579}.roster-source-note{font-size:.76rem;line-height:1.7;color:#697b6c;margin:0 0 17px}
