.notification-item{transition:background-color .2s}.notification-item.unread{background-color:#e6f7ff}.notification-item:hover{background-color:#f5f5f5}.notification-item.unread:hover{background-color:#d9f0ff}.availability-grid{border:1px solid #d9d9d9;border-radius:4px;overflow:hidden}.availability-grid-header{display:grid;grid-template-columns:100px repeat(7,1fr);background-color:#fafafa;border-bottom:1px solid #d9d9d9}.availability-grid-row{display:grid;grid-template-columns:100px repeat(7,1fr);border-bottom:1px solid #f0f0f0}.availability-grid-row:last-child{border-bottom:none}.header-cell{padding:12px 8px;text-align:center;font-weight:600;border-right:1px solid #f0f0f0}.header-cell:last-child{border-right:none}.row-header{padding:12px 8px;text-align:center;font-weight:500;background-color:#fafafa;border-right:1px solid #d9d9d9;display:flex;align-items:center;justify-content:center}.grid-cell{padding:4px;border-right:1px solid #f0f0f0;display:flex;align-items:center;justify-content:center}.grid-cell:last-child{border-right:none}.availability-cell{width:100%;height:40px;display:flex;align-items:center;justify-content:center;cursor:pointer;border-radius:4px;transition:all .3s;font-size:18px}.availability-cell.read-only{cursor:default}.availability-cell.available{background-color:#f6ffed;border:2px solid #b7eb8f;color:#52c41a}.availability-cell.available:hover{background-color:#d9f7be;border-color:#52c41a}.availability-cell.read-only.available:hover{background-color:#f6ffed;border-color:#b7eb8f}.availability-cell.unavailable{background-color:#fff2f0;border:2px solid #ffccc7;color:#ff4d4f}.availability-cell.fixed-schedule,.availability-cell.self-study{background-color:#fff7e6;border:2px solid #ffd591;color:#fa8c16}.availability-cell.physical-training{background-color:#fff1f0;border:2px solid #ff9c6e;color:#d46b08}.availability-cell.conflict{background:linear-gradient(135deg,#fff2f0,#fff2f0 45%,#fff7e6 55%,#fff7e6);border:2px solid #9254de;color:#722ed1}.availability-cell.unavailable:hover{background-color:#ffccc7;border-color:#ff4d4f}.availability-cell.fixed-schedule:hover,.availability-cell.self-study:hover{background-color:#ffe7ba;border-color:#fa8c16}.availability-cell.physical-training:hover{background-color:#ffd8bf;border-color:#d46b08}.availability-cell.conflict:hover{border-color:#722ed1;background:linear-gradient(135deg,#ffd8d2,#ffd8d2 45%,#ffe7ba 55%,#ffe7ba)}.availability-cell.read-only.unavailable:hover{background-color:#fff2f0;border-color:#ffccc7}.availability-cell.selected{box-shadow:0 0 0 3px #1890ff47}.teacher-availability-layout{display:grid;grid-template-columns:minmax(0,1fr) 320px;gap:16px;align-items:start}.teacher-availability-sidepanel{border:1px solid #f0f0f0;border-radius:8px;padding:16px;background:#fafafa;min-height:420px}.teacher-availability-panel-title{font-size:16px;font-weight:600;margin-bottom:12px}.teacher-availability-records{display:flex;flex-direction:column;gap:12px}.teacher-availability-record-item{display:flex;justify-content:space-between;gap:12px;padding:12px;border-radius:8px;background:#fff;border:1px solid #f0f0f0}.teacher-availability-record-item>div:first-child{min-width:0;flex:1}.teacher-availability-record-title{font-weight:600;margin-bottom:4px}.teacher-availability-record-meta{color:#666;font-size:12px;line-height:1.6;word-break:break-word}.teacher-availability-blocked-tag{max-width:160px;white-space:normal;line-height:1.5;padding:6px 8px;display:inline-flex;align-items:center}.teacher-availability-empty{color:#666;line-height:1.7}@media (max-width: 960px){.teacher-availability-layout{grid-template-columns:1fr}.teacher-availability-sidepanel{min-height:auto}}.timetable-container{background:#fff;border-radius:8px;overflow:hidden}.timetable-header{padding:16px;border-bottom:1px solid #f0f0f0;display:flex;justify-content:space-between;align-items:center}.timetable-header .entity-name{font-size:18px;font-weight:600;color:#1f1f1f}.timetable-header .view-type{font-size:14px;color:#8c8c8c}.timetable-grid{width:100%;border-collapse:collapse;table-layout:fixed}.timetable-grid th,.timetable-grid td{border:1px solid #f0f0f0;text-align:center;vertical-align:top}.timetable-grid th{background:#fafafa;padding:12px 8px;font-weight:500;color:#595959}.time-header{width:100px}.day-header{width:calc((100% - 100px)/5)}.time-cell{background:#fafafa;padding:8px;vertical-align:middle!important}.period-label{font-weight:500;color:#262626;font-size:14px}.period-time{font-size:12px;color:#8c8c8c;margin-top:2px}.timetable-cell{padding:4px;min-height:80px;position:relative;cursor:pointer;transition:background-color .2s}.timetable-cell:hover{background-color:#f5f5f5}.timetable-cell.conflict{background-color:#fff2f0!important;border-color:#ffccc7!important}.timetable-cell.multiple{background-color:#fffbe6}.empty-cell{min-height:60px}.course-card{padding:8px;border-radius:4px;margin-bottom:4px;cursor:pointer;transition:all .2s;position:relative}.course-card:hover{transform:translateY(-1px);box-shadow:0 2px 8px #0000001a}.course-card:last-child{margin-bottom:0}.course-subject{font-weight:600;font-size:13px;margin-bottom:2px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.course-teacher,.course-classroom{font-size:11px;color:#8c8c8c;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.locked-tag{position:absolute;top:2px;right:2px;font-size:10px;padding:0 4px;line-height:16px}.multiple-indicator{position:absolute;bottom:2px;right:2px;background:#ff4d4f;color:#fff;font-size:10px;padding:0 4px;border-radius:2px;line-height:16px}.timetable-cell.drag-over{background-color:#e6f7ff!important;border-color:#91d5ff!important}.course-card.dragging{opacity:.5}@media (max-width: 768px){.timetable-grid th,.timetable-grid td{padding:4px 2px}.course-card{padding:4px}.course-subject{font-size:11px}.course-teacher,.course-classroom{display:none}.time-header{width:60px}.period-time{display:none}}.grade-period-overview-table .empty-classroom-row{background-color:#fafafa}.grade-period-overview-table .empty-classroom-row:hover>td{background-color:#f0f0f0!important}.grade-period-overview-table .ant-table-tbody>tr>td{padding:8px 12px}.grade-period-overview-table .ant-table-thead>tr>th{background-color:#fafafa;font-weight:600;padding:10px 12px}.empty-classroom-row .ant-tag{opacity:.8}*{margin:0;padding:0;box-sizing:border-box}body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}#root{min-height:100vh}.ant-modal-header{border-bottom:1px solid #f0f0f0!important;padding-bottom:12px!important;margin-bottom:0!important}.ant-modal-body{padding-top:16px!important;padding-bottom:16px!important}.ant-modal-footer{border-top:1px solid #f0f0f0!important;padding-top:12px!important;margin-top:0!important}
