body{min-height:100vh}.login-wrap{min-height:100vh;display:grid;place-items:center;background:radial-gradient(circle at 50% -20%,#dce5ff,transparent 45%)}.login-card{width:min(92%,420px);padding:38px}.login-card h1{margin-bottom:5px}.login-card>p{margin:0 0 28px}.login-card .btn{width:100%}.login-card small{display:block;text-align:center;color:var(--muted);margin-top:16px}.admin-logo{width:48px;height:48px;display:grid;place-items:center;background:var(--primary);color:#fff;border-radius:14px;font-weight:900}
.app{display:grid;grid-template-columns:230px 1fr;min-height:100vh}aside{background:#17213b;color:#fff;padding:28px 18px;display:flex;flex-direction:column}.logo{display:flex;align-items:center;gap:10px;font-weight:800;font-size:18px;padding:0 10px 30px}.logo div{width:35px;height:35px;display:grid;place-items:center;background:#5574eb;border-radius:10px;font-size:12px}nav{display:grid;gap:7px}nav button{padding:13px 16px;text-align:left;border:0;border-radius:9px;background:none;color:#aeb8d1}nav button:hover,nav button.active{background:#293657;color:#fff}aside>a{margin-top:auto;color:#aeb8d1;text-decoration:none;padding:10px}main{padding:34px;overflow:auto}main header{display:flex;align-items:center;justify-content:space-between;margin-bottom:30px}h1{margin:0}header p{margin:6px 0 0;color:var(--muted)}
.stats{display:grid;grid-template-columns:repeat(4,1fr);gap:18px}.stat{padding:22px}.stat b{display:block;font-size:32px;margin-top:12px}.stat span{color:var(--muted)}.section{margin-top:22px;padding:24px}.section-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:20px}.section-head h2{margin:0;font-size:18px}.table-wrap{overflow:auto}table{width:100%;border-collapse:collapse}th,td{text-align:left;padding:14px 12px;border-bottom:1px solid var(--line);font-size:14px;vertical-align:middle}th{color:var(--muted);font-weight:600;background:#fafbfe}td.content{max-width:360px;white-space:normal;line-height:1.5}.empty{text-align:center;padding:45px;color:var(--muted)}.toolbar{display:flex;gap:10px;flex-wrap:wrap}.toolbar select,.toolbar input{width:auto;min-width:180px}.section-head .actions{display:flex;gap:8px}td.actions{display:table-cell;white-space:nowrap;vertical-align:middle}td.actions button{border:0;background:none;color:var(--primary);padding:3px}td.actions button+button{margin-left:8px}td.actions .red{color:var(--danger)}
.status{display:inline-flex;align-items:center;gap:6px;font-size:13px;font-weight:700}.status::before{content:"";width:8px;height:8px;border-radius:50%;background:currentColor}.status.ok{color:var(--success)}.status.warn{color:#e58a20}.status.muted-status{color:#8b94a7}.progress-summary{display:flex;gap:14px;flex-wrap:wrap}.progress-summary span{padding:9px 13px;border-radius:10px;background:#f5f7fc;color:var(--muted);font-size:13px}.progress-summary b{color:var(--ink)}
.legend{display:flex;gap:18px;align-items:center;flex-wrap:wrap;margin:-2px 0 18px;color:var(--muted);font-size:13px}.legend span{display:flex;align-items:center;gap:7px}.legend i{width:12px;height:12px;border-radius:4px}.progress-table table{min-width:1420px}.progress-table th,.progress-table td{white-space:nowrap}.progress-table th:nth-child(4){min-width:705px;padding-right:4px}.progress-table td:nth-child(4){padding-right:4px}.progress-table th:nth-child(5),.progress-table td:nth-child(5){padding-left:4px}.track-wrap{display:flex;align-items:center;gap:7px}.track-count{width:34px;color:var(--muted);font-size:11px;text-align:right}.lesson-track{display:flex;gap:1px;min-width:max-content}.lesson-cell{width:36px;height:30px;flex:0 0 36px;display:grid;place-items:center;border:0;border-radius:4px;background:#b6bdca;font-size:11px;font-weight:800;color:#fff;padding:0;transition:transform .15s,filter .15s}.lesson-cell:first-child{border-radius:15px 4px 4px 15px}.lesson-cell:last-child{border-radius:4px 15px 15px 4px}.lesson-cell:only-child{border-radius:15px}.lesson-cell:hover{transform:translateY(-2px);filter:brightness(.94)}.status-unstarted{background:#b6bdca}.status-unarranged{background:#ed8b48}.status-arranged{background:#4775e6}.status-feedback{background:#25a874}
.lesson-detail-head{display:flex;align-items:center;gap:10px;margin-bottom:22px}.lesson-detail-head b{font-size:15px}.lesson-detail{display:grid;grid-template-columns:80px 1fr;gap:15px 12px;margin:0}.lesson-detail dt{color:var(--muted)}.lesson-detail dd{margin:0;line-height:1.65}.detail-status{display:inline-block;color:#fff;padding:4px 10px;border-radius:999px;font-size:12px;font-weight:800}.detail-feedback{white-space:pre-wrap;background:#f7f8fc;padding:12px;border-radius:10px}
.schedule-date{display:block;margin-top:5px;color:var(--muted);font-size:11px}
.calendar-card{padding:0;overflow:hidden}.calendar-toolbar{display:flex;align-items:center;justify-content:space-between;gap:20px;padding:24px 24px 14px}.calendar-toolbar h2{margin:0;font-size:22px}.calendar-toolbar p{margin:6px 0 0;color:var(--muted);font-size:13px}.calendar-actions{display:flex;gap:8px}.calendar-legend{display:flex;align-items:center;gap:16px;flex-wrap:wrap;padding:0 24px 16px;color:var(--muted);font-size:12px}.calendar-legend span{display:flex;align-items:center;gap:6px}.calendar-legend i{width:12px;height:12px;border-radius:4px}.calendar-legend .projected-note{margin-left:auto}.calendar-grid{display:grid;grid-template-columns:repeat(7,minmax(130px,1fr))}.calendar-weekdays{background:#f6f8fc;border-top:1px solid var(--line);border-bottom:1px solid var(--line);color:var(--muted);font-size:12px;font-weight:700;text-align:center}.calendar-weekdays div{padding:11px}.calendar-days{min-width:910px}.calendar-day{min-height:176px;padding:10px;border-right:1px solid var(--line);border-bottom:1px solid var(--line);background:#fff}.calendar-day:nth-child(7n){border-right:0}.calendar-day.outside{background:#fafbfe}.calendar-day.outside .calendar-date{opacity:.38}.calendar-day.today{background:#f4f7ff;box-shadow:inset 0 0 0 2px #5574eb}.calendar-date{display:flex;align-items:center;justify-content:space-between;color:var(--ink);font-size:13px;font-weight:800}.calendar-date em{font-style:normal;color:var(--primary);font-size:10px}.calendar-events{display:grid;gap:5px;margin-top:8px}.calendar-event{display:block;width:100%;border:0;border-radius:7px;padding:8px 9px;text-align:left;color:#fff;overflow:hidden}.calendar-event.is-projected{opacity:.58;outline:1px dashed #fff9;outline-offset:-3px}.calendar-event b,.calendar-event span{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.calendar-event b{font-size:11px}.calendar-event span{margin-top:2px;font-size:10px;opacity:.9}.calendar-event:hover{filter:brightness(.94);opacity:1}
.school-groups{display:grid;gap:18px}.school-group{border:1px solid var(--line);border-radius:14px;overflow:hidden;background:#fff}.school-group-head{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:12px 20px;background:#f7f9fd}.school-group-head h3{margin:0;font-size:17px}.school-group-head small{color:var(--muted)}.school-label{color:var(--primary);font-size:11px;font-weight:800;letter-spacing:.08em}.school-group-head .actions{display:flex;gap:10px;flex-shrink:0}.school-group-head button{border:0;background:none;color:var(--primary);padding:4px}.school-group-head button.red{color:var(--danger)}.class-group-title{padding:13px 20px 7px;color:var(--muted);font-size:12px;font-weight:800}.school-group table{table-layout:fixed;min-width:800px}.school-group table th:nth-child(1),.school-group table td:nth-child(1){width:210px;padding-left:20px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.school-group table th:nth-child(2),.school-group table td:nth-child(2){width:90px}.school-group table th:nth-child(3),.school-group table td:nth-child(3){width:80px}.school-group table th:nth-child(4),.school-group table td:nth-child(4){width:120px}.school-group table th:nth-child(5),.school-group table td:nth-child(5){width:80px}.school-group table th:nth-child(6),.school-group table td:nth-child(6){width:220px}.empty.compact{padding:22px}
dialog{border:0;border-radius:18px;padding:0;width:min(92%,460px);box-shadow:0 30px 80px #0003}dialog::backdrop{background:#14203b80}dialog form{padding:25px}.modal-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:22px}.modal-head h3{margin:0}.modal-head button{border:0;background:none;font-size:25px}.modal-actions{display:flex;justify-content:flex-end;gap:10px;margin-top:25px}
@media(max-width:800px){.app{grid-template-columns:1fr;grid-template-rows:auto 1fr}aside{padding:14px;position:static;height:auto}.logo{padding-bottom:12px}nav{grid-template-columns:repeat(6,1fr)}nav button{text-align:center;padding:9px 2px;font-size:11px}aside>a{display:none}main{padding:20px}.stats{grid-template-columns:1fr 1fr}.table-wrap:not(.progress-table) table{min-width:720px}.calendar-toolbar{align-items:flex-start;flex-direction:column}.school-group-head{flex-wrap:wrap}.calendar-legend .projected-note{margin-left:0}.calendar-card{overflow:auto}}
.school-group td.actions{white-space:normal;overflow-wrap:anywhere;line-height:1.5}
.preparation-checks{display:grid;gap:12px;margin-top:18px}.preparation-checks label{display:flex;align-items:center;gap:9px;font-size:14px;cursor:pointer}.preparation-checks input[type=checkbox]{width:18px;height:18px;margin:0;flex:0 0 18px;accent-color:var(--primary)}
.overview-summary{margin-top:18px}.overview-summary span{background:#fff}td.content{white-space:pre-wrap}.feedback-lock-note{font-size:13px;line-height:1.7;margin:20px 0}.feedback-history{margin-top:22px;padding-top:16px;border-top:1px solid var(--line)}.feedback-history h4{margin:0 0 14px}.feedback-versions{list-style:none;margin:0;padding:0;display:grid;gap:14px}.feedback-versions li{border:1px solid var(--line);border-radius:10px;padding:14px}.feedback-version-head{display:grid;gap:5px;font-size:13px}.feedback-version-head span{color:var(--muted);font-size:12px}.feedback-versions li>p{white-space:pre-wrap;overflow-wrap:anywhere;line-height:1.7;margin:12px 0 0}.history-error{color:var(--danger);line-height:1.6;overflow-wrap:anywhere}.legacy-feedback+.legacy-feedback{border-top:1px solid var(--line);padding-top:12px}.legacy-pending{outline:2px dashed #9a6b20;outline-offset:-3px}.detail-feedback{overflow-wrap:anywhere}dialog{max-height:90vh;overflow-y:auto}#feedbackHistory{min-height:40px}
