:root{--blue:#0b5ed7;--blue2:#073b8c;--bg:#f4f7fb;--card:#fff;--text:#1b2638;--muted:#6b778c;--line:#e2e8f0;--danger:#dc3545;--success:#198754;--warn:#f59f00}
*{box-sizing:border-box}body{margin:0;font-family:Inter,Segoe UI,Arial,sans-serif;background:var(--bg);color:var(--text)}a{text-decoration:none;color:inherit}.app-shell{display:flex;min-height:100vh}.sidebar{width:250px;background:linear-gradient(180deg,#082c70,#0a4aa3);color:#fff;position:fixed;left:0;top:0;bottom:0;padding:18px 14px;z-index:10}.brand{display:flex;align-items:center;gap:10px;font-size:22px}.brand-logo{width:42px;height:42px;border-radius:12px;background:#fff;color:#0a4aa3;display:grid;place-items:center;font-weight:900}.brand span{display:block;font-size:12px;opacity:.75;letter-spacing:3px}.school-name{font-size:12px;line-height:1.45;margin:16px 8px 18px;opacity:.82}nav a{display:flex;gap:10px;align-items:center;padding:12px 11px;border-radius:10px;margin:4px 0;font-size:14px}nav a:hover,nav a.active{background:rgba(255,255,255,.15)}.side-bottom{position:absolute;left:14px;right:14px;bottom:18px}.side-bottom a{display:block;padding:12px;border-top:1px solid rgba(255,255,255,.16);font-size:14px}.content{margin-left:250px;width:calc(100% - 250px)}.topbar{height:72px;background:#fff;border-bottom:1px solid var(--line);display:flex;align-items:center;gap:12px;padding:0 25px;position:sticky;top:0;z-index:5}.topbar h1{margin:0;font-size:20px}.topbar small{color:var(--muted)}.menu-btn{display:none;border:0;background:none;font-size:24px}.page{padding:22px}.cards{display:grid;grid-template-columns:repeat(5,1fr);gap:14px}.card{background:var(--card);border:1px solid var(--line);border-radius:15px;padding:18px;box-shadow:0 3px 12px rgba(20,40,80,.04)}.metric{font-size:28px;font-weight:800;margin-top:6px}.muted{color:var(--muted)}.grid-2{display:grid;grid-template-columns:1fr 1fr;gap:16px}.panel{background:#fff;border:1px solid var(--line);border-radius:15px;padding:18px;margin-top:18px}.panel h3{margin:0 0 14px}.toolbar{display:flex;gap:10px;align-items:end;flex-wrap:wrap;margin-bottom:14px}.field{display:flex;flex-direction:column;gap:6px;min-width:180px}.field label{font-size:12px;color:var(--muted);font-weight:600}.input,select,input,textarea{font:inherit;border:1px solid #ccd6e2;border-radius:9px;padding:10px 11px;background:#fff;outline:0}.input:focus,select:focus,input:focus,textarea:focus{border-color:var(--blue);box-shadow:0 0 0 3px rgba(11,94,215,.1)}button,.btn{border:0;border-radius:9px;padding:10px 14px;font-weight:700;cursor:pointer;display:inline-block}.btn-primary{background:var(--blue);color:#fff}.btn-secondary{background:#eef3f9;color:#20334d}.btn-danger{background:var(--danger);color:#fff}.btn-success{background:var(--success);color:#fff}.btn-warning{background:#f59f00;color:#fff}.table-wrap{overflow:auto}.table{width:100%;border-collapse:collapse}.table th,.table td{border-bottom:1px solid var(--line);padding:10px 9px;text-align:left;vertical-align:top;font-size:13px}.table th{background:#f8fafc}.badge{display:inline-flex;align-items:center;padding:4px 8px;border-radius:999px;background:#edf4ff;color:#0b5ed7;font-size:11px;font-weight:700}.alert{padding:12px 14px;border-radius:10px;margin-bottom:14px;font-size:14px}.alert.success{background:#eaf8ef;color:#126b3d}.alert.error{background:#fff0f1;color:#a51e2b}.alert.warning{background:#fff6df;color:#815800}.timetable{width:100%;border-collapse:separate;border-spacing:0;overflow:hidden;border:1px solid var(--line);border-radius:13px;background:#fff}.timetable th,.timetable td{border-right:1px solid var(--line);border-bottom:1px solid var(--line);padding:7px;font-size:11px;vertical-align:top}.timetable th{background:#eff5ff;color:#214d8f;position:sticky;top:0;z-index:2}.timetable th:last-child,.timetable td:last-child{border-right:0}.slot-time{width:86px;white-space:nowrap;color:var(--muted)}.lesson{background:#eef5ff;border:1px solid #bed5ff;border-radius:8px;padding:7px;min-height:58px}.lesson b{display:block;font-size:12px}.lesson .sub{font-size:10px;color:#28558e;margin-top:2px}.lesson .teacher{font-size:10px;color:#5d6877;margin-top:3px}.lesson .room{font-size:10px;color:#6b4d00;margin-top:2px}.login-wrap{min-height:100vh;display:grid;place-items:center;background:linear-gradient(145deg,#07295e,#0b5ed7)}.login-card{width:min(430px,92vw);background:#fff;border-radius:18px;padding:28px;box-shadow:0 20px 55px rgba(0,0,0,.2)}.login-card h1{margin:0 0 5px}.login-card .logo{width:56px;height:56px;border-radius:15px;background:#0b5ed7;color:#fff;display:grid;place-items:center;font-size:28px;font-weight:900;margin-bottom:14px}.two-col-form{display:grid;grid-template-columns:1fr 1fr;gap:12px}.span2{grid-column:1/-1}.empty{padding:35px;text-align:center;color:var(--muted)}.actions{display:flex;gap:6px;flex-wrap:wrap}.small{font-size:11px}.print-only{display:none}
@media(max-width:1000px){.cards{grid-template-columns:repeat(2,1fr)}.grid-2{grid-template-columns:1fr}}
@media(max-width:760px){.sidebar{transform:translateX(-105%);transition:.2s}.sidebar.open{transform:translateX(0)}.content{margin-left:0;width:100%}.menu-btn{display:block}.cards{grid-template-columns:1fr 1fr}.page{padding:12px}.two-col-form{grid-template-columns:1fr}.span2{grid-column:auto}.timetable th,.timetable td{font-size:9px;padding:5px}.slot-time{width:64px}.lesson{padding:5px}.topbar{padding:0 12px}}
@media print{.sidebar,.topbar,.no-print{display:none!important}.content{margin:0;width:100%}.page{padding:0}.print-only{display:block}.panel{border:0;box-shadow:none;margin:0}.timetable th{position:static}.timetable{font-size:10px}}
.timetable .lesson-cell{vertical-align:middle;background:#fff}.timetable .lesson-span{height:100%;min-height:100px;display:flex;flex-direction:column;justify-content:center}.timetable .lesson-span .time-range{font-size:9px;color:#667085;margin-top:4px}.timetable .break-cell{background:#fafbfd;text-align:center;vertical-align:middle}@media print{.timetable .lesson-span{min-height:76px}.timetable .lesson-span .time-range{font-size:8px}}
.global-table-wrap{overflow:auto;border:1px solid #111;background:#fff}.global-timetable{border-collapse:collapse;min-width:max-content;width:100%;background:#fff;font-family:"Times New Roman",Georgia,serif}.global-timetable th,.global-timetable td{border:1px solid #333;text-align:center;vertical-align:middle;padding:3px 4px}.global-timetable th{background:#fff;color:#111;position:sticky;top:0;z-index:3}.global-day-head{font-size:15px;letter-spacing:.3px}.global-level-head{font-size:12px}.global-class-head{font-size:11px;min-width:58px;white-space:nowrap}.global-no{min-width:34px;width:34px}.global-time{min-width:72px;width:72px;white-space:nowrap}.global-timetable td{height:28px;font-size:11px}.global-lesson{background:#fff;padding:2px}.global-teacher-code{font-size:15px;font-weight:800;line-height:1}.global-subject{font-size:8px;line-height:1.05;margin-top:3px;color:#444}.global-empty{background:#fff}.global-break{font-weight:800;background:#fff;letter-spacing:.6px;height:27px}.global-legend{padding-top:9px}.global-panel{overflow:hidden}
@media print{.global-panel{padding:0}.global-table-wrap{overflow:visible;border:0}.global-timetable{width:100%;min-width:0}.global-timetable th,.global-timetable td{position:static}.global-day-head{font-size:11px}.global-level-head{font-size:9px}.global-class-head{font-size:7px;min-width:0}.global-timetable td{font-size:7px;height:20px;padding:1px}.global-teacher-code{font-size:9px}.global-subject{font-size:5px}.global-no{width:20px;min-width:20px}.global-time{width:48px;min-width:48px;font-size:7px}.global-break{height:20px;font-size:7px}}
