:root{--bg: #f4f6fa;--bg-soft: #eef2f8;--surface: #ffffff;--ink: #0f172a;--ink-2: #1e293b;--muted: #64748b;--muted-2: #94a3b8;--line: #e3e8f0;--line-strong: #cbd5e1;--brand: #0b7a53;--brand-dark: #075e40;--brand-soft: #e6f5ee;--brand-ink: #065f46;--danger: #dc2626;--danger-soft: #fee2e2;--warn: #b45309;--warn-soft: #fef3c7;--info: #2563eb;--info-soft: #dbeafe;--violet: #7c3aed;--radius: 16px;--radius-sm: 10px;--shadow-sm: 0 1px 2px rgba(15, 23, 42, .05);--shadow: 0 10px 30px -18px rgba(15, 23, 42, .35);--sidebar: #0b1220;--sidebar-2: #111d33;--font: "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif}:root[data-theme=dark],:root[data-theme=system]{--bg: #0f172a;--bg-soft: #172033;--surface: #162033;--ink: #e5edf8;--ink-2: #d2ddec;--muted: #9aabc2;--muted-2: #71829a;--line: #2b3a52;--line-strong: #41516b}:root[data-theme=system]{color-scheme:dark}@media (prefers-color-scheme: light){:root[data-theme=system]{--bg: #f4f6fa;--bg-soft: #eef2f8;--surface: #fff;--ink: #0f172a;--ink-2: #1e293b;--muted: #64748b;--muted-2: #94a3b8;--line: #e3e8f0;--line-strong: #cbd5e1}}:root[data-theme=dark] .topbar,:root[data-theme=dark] .card,:root[data-theme=dark] .stat,:root[data-theme=dark] .input,:root[data-theme=dark] .select,:root[data-theme=dark] .textarea,:root[data-theme=dark] .user-chip,:root[data-theme=dark] .app-footer,:root[data-theme=system] .topbar,:root[data-theme=system] .card,:root[data-theme=system] .stat,:root[data-theme=system] .input,:root[data-theme=system] .select,:root[data-theme=system] .textarea,:root[data-theme=system] .user-chip,:root[data-theme=system] .app-footer{background:var(--surface);color:var(--ink)}:root[data-theme=dark] .topbar,:root[data-theme=system] .topbar{background:#162033eb}:root[data-theme=dark] .schedule-table thead th,:root[data-theme=dark] .schedule-table tbody th,:root[data-theme=dark] .table th,:root[data-theme=dark] .avail-grid th,:root[data-theme=system] .schedule-table thead th,:root[data-theme=system] .schedule-table tbody th,:root[data-theme=system] .table th,:root[data-theme=system] .avail-grid th{background:#1d2a40;color:var(--muted)}:root[data-theme=dark] .schedule-cell.empty,:root[data-theme=dark] .schedule-table td,:root[data-theme=system] .schedule-cell.empty,:root[data-theme=system] .schedule-table td{background:var(--surface)}:root[data-theme=dark] .welcome,:root[data-theme=system] .welcome{background-color:#0b1220}:root[data-theme=glassbox]{--bg: #e9eef7;--bg-soft: #dfe7f3;--surface: rgba(255, 255, 255, .68);--ink: #16233b;--ink-2: #293b5a;--muted: #60708a;--muted-2: #8b9ab0;--line: rgba(255, 255, 255, .72);--line-strong: rgba(139, 156, 184, .55);--shadow-sm: 0 12px 30px rgba(73, 91, 124, .12)}:root[data-theme=glassbox] body{background:radial-gradient(circle at 12% 12%,#ffffff 0,transparent 34%),linear-gradient(135deg,#e6edf8,#f8fbff 45%,#dce6f4)}:root[data-theme=glassbox] .card,:root[data-theme=glassbox] .stat,:root[data-theme=glassbox] .topbar,:root[data-theme=glassbox] .app-footer,:root[data-theme=glassbox] .input,:root[data-theme=glassbox] .select,:root[data-theme=glassbox] .textarea{background:#ffffffa3;border-color:#fffc;box-shadow:0 12px 30px #495b7c1f;-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px)}:root[data-theme=glassbox] .topbar{background:#ffffff94}:root[data-theme=glassbox] .login-form-side{background:#ffffff47}:root[data-theme=glassbox] .login-card{padding:28px;border-radius:24px;background:#ffffff94;box-shadow:0 24px 60px #495b7c29;-webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px)}:root[data-accent=violet]{--brand: #7c3aed;--brand-dark: #6d28d9;--brand-soft: #ede9fe;--brand-ink: #5b21b6}:root[data-accent=rose]{--brand: #e11d48;--brand-dark: #be123c;--brand-soft: #ffe4e6;--brand-ink: #9f1239}:root[data-accent=amber]{--brand: #d97706;--brand-dark: #b45309;--brand-soft: #fef3c7;--brand-ink: #92400e}.login-card .field>div{width:100%}.login-card .field>div>svg{top:50%!important;transform:translateY(-50%)}.login-card .input{box-sizing:border-box;width:100%;min-height:40px}.password-toggle{position:absolute;right:4px;top:50%;transform:translateY(-50%);width:34px;height:34px;display:grid;place-items:center;border:0;border-radius:7px;background:transparent;color:var(--muted-2);cursor:pointer}.password-toggle:hover{background:var(--bg-soft);color:var(--brand)}*,*:before,*:after{box-sizing:border-box}html{-webkit-text-size-adjust:100%}body{margin:0;font-family:var(--font);color:var(--ink);background:var(--bg);font-size:14.5px;line-height:1.55;-webkit-font-smoothing:antialiased}h1,h2,h3,h4,h5{margin:0;font-weight:700;letter-spacing:-.02em;color:var(--ink)}p{margin:0}a{color:var(--brand);text-decoration:none}a:hover{text-decoration:underline}button{font-family:inherit}::selection{background:#bbf7d0}.app-shell{display:flex;min-height:100vh}.sidebar{width:264px;flex:0 0 264px;background:linear-gradient(180deg,var(--sidebar) 0%,var(--sidebar-2) 100%);color:#cbd5e1;display:flex;flex-direction:column;position:fixed;inset:0 auto 0 0;z-index:40;padding:20px 14px 16px;transition:transform .25s ease}.sidebar-brand{display:flex;gap:12px;align-items:center;padding:4px 8px 22px}.brand-mark{width:42px;height:42px;flex:0 0 42px;border-radius:12px;background:linear-gradient(140deg,#10b981,#0b7a53 70%);display:grid;place-items:center;color:#fff;font-weight:800;font-size:15px;box-shadow:0 8px 18px -8px #10b981}.brand-text strong{color:#fff;font-size:15px;display:block;line-height:1.25}.brand-mark{display:grid;place-items:center;overflow:hidden}.brand-mark img{width:100%;height:100%;object-fit:contain}.brand-text span{font-size:11px;color:#8fa3bf;letter-spacing:.04em;text-transform:uppercase}.sidebar-scroll{overflow-y:auto;flex:1;padding-right:2px}.sidebar-scroll::-webkit-scrollbar{width:6px}.sidebar-scroll::-webkit-scrollbar-thumb{background:#23324a;border-radius:99px}.nav-group{margin-bottom:18px}.nav-group-title{font-size:10.5px;letter-spacing:.12em;text-transform:uppercase;color:#64748b;font-weight:700;padding:0 12px 7px}.nav-item{display:flex;align-items:center;gap:10px;padding:9px 12px;margin-bottom:2px;border-radius:10px;color:#b6c4d8;font-size:13.5px;border:1px solid transparent}.nav-item:hover{background:#16233b;color:#fff;text-decoration:none}.nav-item.active{background:linear-gradient(90deg,#10b9812e,#10b9810a);color:#eafff6;border-color:#10b98147;font-weight:600}.nav-item.active svg{color:#34d399}.nav-item svg{color:#7b8ca5;flex:0 0 auto}.nav-badge{margin-left:auto;background:#ef4444;color:#fff;font-size:10.5px;border-radius:99px;padding:1px 6px;font-weight:700}.sidebar-foot{border-top:1px solid #1e2c42;padding-top:12px;margin-top:8px;font-size:11px;color:#7b8ca5;padding-left:10px}.main-area{flex:1;min-width:0;margin-left:264px;display:flex;flex-direction:column;transition:margin-left .25s ease}.app-shell.sidebar-collapsed .sidebar{width:0;padding-left:0;padding-right:0;overflow:hidden}.app-shell.sidebar-collapsed .main-area{margin-left:0}.topbar{height:66px;display:flex;align-items:center;gap:14px;padding:0 26px;background:#ffffffeb;border-bottom:1px solid var(--line);position:sticky;top:0;z-index:30;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}.topbar-title{font-size:15px;font-weight:700}.topbar-sub{font-size:11.5px;color:var(--muted)}.topbar-spacer{flex:1}.topbar-meta{display:flex;align-items:center;gap:8px}.period-picker{display:flex;align-items:center;gap:6px;border:1px solid var(--line);background:#fff;border-radius:10px;padding:0 8px;color:var(--ink-2)}.period-picker select{border:none;background:transparent;font-size:12.5px;font-weight:600;color:inherit;padding:7px 2px;outline:none;cursor:pointer;max-width:190px}.hamburger{display:none}.user-chip{display:flex;align-items:center;gap:10px;padding:6px 10px;border:1px solid var(--line);border-radius:999px;background:#fff;cursor:pointer}.user-chip:hover{border-color:var(--line-strong)}.avatar{width:32px;height:32px;border-radius:50%;background:var(--brand-soft);color:var(--brand-dark);display:grid;place-items:center;font-weight:700;font-size:12.5px;overflow:hidden}.avatar img{width:100%;height:100%;object-fit:cover;border-radius:50%}.login-footer{margin-top:18px;padding-top:14px;border-top:1px solid var(--line);text-align:center;color:var(--muted);font-size:12px}.login-footer strong{display:block;color:var(--brand-dark);margin-top:2px}.settings-media-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;margin-top:14px}.settings-media-grid .field:last-child{grid-column:1 / -1}.settings-upload{display:flex;flex-wrap:wrap;align-items:center;gap:8px}.school-logo-preview{width:64px;height:64px;object-fit:contain;border-radius:10px;border:1px solid var(--line);background:#fff;padding:4px}.background-preview{width:150px;height:54px;object-fit:cover;border-radius:8px;border:1px solid var(--line)}.signature-preview{width:160px;height:64px;object-fit:contain;border-radius:8px;border:1px dashed var(--line);background:#fff;padding:4px}.user-meta{line-height:1.2;text-align:left}.user-meta strong{display:block;font-size:12.5px}.user-meta span{font-size:10.5px;color:var(--muted);text-transform:capitalize}.content{padding:24px 26px;max-width:1500px;width:100%;margin:0 auto;flex:1}.app-footer{margin-top:auto;display:flex;flex-direction:column;flex-wrap:wrap;gap:2px;align-items:center;justify-content:center;padding:14px 26px;border-top:1px solid var(--line);background:var(--surface);color:var(--muted);font-size:12px;text-align:center}.app-footer-credit{font-weight:600}@media print{.app-footer{display:none}}.page-head{display:flex;flex-wrap:wrap;gap:14px;align-items:flex-end;margin-bottom:20px}.page-head h1{font-size:23px}.page-head p{color:var(--muted);font-size:13px;margin-top:3px;max-width:720px}.page-head-actions{margin-left:auto;display:flex;flex-wrap:wrap;gap:8px}.btn{display:inline-flex;align-items:center;justify-content:center;gap:7px;border-radius:10px;border:1px solid transparent;cursor:pointer;font-size:13px;font-weight:600;padding:9px 14px;line-height:1.2;background:#fff;color:var(--ink-2);transition:all .15s ease;white-space:nowrap;text-decoration:none}.btn:hover{text-decoration:none}.btn:disabled{opacity:.55;cursor:not-allowed}.btn-primary{background:var(--brand);color:#fff;box-shadow:0 6px 14px -8px #0b7a53e6}.btn-primary:hover:not(:disabled){background:var(--brand-dark)}.btn-dark{background:var(--ink);color:#fff}.btn-dark:hover:not(:disabled){background:#1e293b}.btn-outline{border-color:var(--line-strong);background:#fff;color:var(--ink-2)}.btn-outline:hover:not(:disabled){background:#f8fafc;border-color:#94a3b8}.btn-ghost{background:transparent;color:var(--muted)}.btn-ghost:hover:not(:disabled){background:var(--bg-soft);color:var(--ink)}.btn-danger{background:var(--danger);color:#fff}.btn-danger:hover:not(:disabled){background:#b91c1c}.btn-danger-soft{background:var(--danger-soft);color:#991b1b}.btn-soft{background:var(--brand-soft);color:var(--brand-ink)}.btn-sm{padding:6px 10px;font-size:12px;border-radius:8px}.btn-xs{padding:4px 8px;font-size:11.5px;border-radius:7px}.btn-icon{padding:7px;border-radius:9px}.btn-block{width:100%}.card{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow-sm)}.card-pad{padding:18px 20px}.card-head{display:flex;flex-wrap:wrap;align-items:center;gap:10px;padding:15px 20px;border-bottom:1px solid var(--line)}.card-head h3{font-size:14.5px}.card-head .sub{font-size:12px;color:var(--muted)}.card-head .spacer{flex:1}.card-body{padding:18px 20px}.grid{display:grid;gap:14px}.grid-split{grid-template-columns:var(--split, repeat(2, minmax(0, 1fr)));align-items:start}.grid-2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-3{grid-template-columns:repeat(3,minmax(0,1fr))}.grid-5{grid-template-columns:repeat(5,minmax(0,1fr))}.grid-4{grid-template-columns:repeat(4,minmax(0,1fr))}.grid-stats{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:12px}.stat{background:#fff;border:1px solid var(--line);border-radius:var(--radius);padding:15px 16px;display:flex;flex-direction:column;gap:8px;position:relative;overflow:hidden}.stat:hover{border-color:var(--line-strong)}.stat-icon{width:34px;height:34px;border-radius:10px;display:grid;place-items:center;background:var(--brand-soft);color:var(--brand-dark)}.stat-label{font-size:11.5px;color:var(--muted);font-weight:600;letter-spacing:.02em}.stat-value{font-size:24px;font-weight:800;letter-spacing:-.03em;line-height:1}.stat-foot{font-size:11px;color:var(--muted-2)}.stat.danger .stat-icon{background:var(--danger-soft);color:#b91c1c}.stat.danger .stat-value{color:var(--danger)}.stat.info .stat-icon{background:var(--info-soft);color:#1d4ed8}.stat.warn .stat-icon{background:var(--warn-soft);color:var(--warn)}.field{display:flex;flex-direction:column;gap:6px}.field>label{font-size:12.5px;font-weight:600;color:var(--ink-2)}.field>label .req{color:var(--danger)}.field .hint{font-size:11.5px;color:var(--muted-2)}.input,.select,.textarea{width:100%;border:1px solid var(--line-strong);border-radius:9px;padding:9px 11px;font-size:13.5px;font-family:inherit;background:var(--surface);color:var(--ink);outline:none;transition:border .15s,box-shadow .15s}.input:focus,.select:focus,.textarea:focus{border-color:var(--brand);box-shadow:0 0 0 3px #0b7a5324}.input:disabled,.select:disabled{background:#f8fafc;color:var(--muted)}.textarea{min-height:74px;resize:vertical}.auto-excluded-panel{border:1px solid var(--line);border-radius:var(--radius);background:var(--bg-soft);padding:14px;display:grid;gap:12px}.auto-excluded-head{display:flex;align-items:flex-start;justify-content:space-between;gap:12px}.auto-teacher-checks{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px 18px;max-height:230px;overflow-y:auto;padding:4px 2px}.auto-teacher-check{min-width:0;padding:7px 8px;border:1px solid var(--line);border-radius:7px;background:var(--surface)}.auto-teacher-check span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}@media (max-width: 700px){.auto-teacher-checks{grid-template-columns:1fr}}.form-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}.form-grid .full{grid-column:1 / -1}.form-actions{display:flex;gap:8px;justify-content:flex-end;margin-top:6px}.checkbox{display:flex;align-items:center;gap:8px;font-size:13px}.checkbox input{width:16px;height:16px;accent-color:var(--brand)}.switch{position:relative;width:38px;height:22px;border-radius:99px;background:#cbd5e1;border:none;cursor:pointer;flex:0 0 auto}.switch:after{content:"";position:absolute;top:3px;left:3px;width:16px;height:16px;border-radius:50%;background:#fff;transition:.2s}.switch.on{background:var(--brand)}.switch.on:after{left:19px}.search-box{position:relative;min-width:200px}.search-box svg{position:absolute;left:10px;top:50%;transform:translateY(-50%);color:var(--muted-2)}.search-box .input{padding-left:33px}.toolbar{display:flex;flex-wrap:wrap;gap:10px;align-items:center;padding:12px 16px;border-bottom:1px solid var(--line)}.toolbar .spacer{flex:1}.toolbar .select,.toolbar .input{width:auto;min-width:150px}.table-wrap{width:100%;max-width:100%;overflow-x:auto;overscroll-behavior-x:contain;-webkit-overflow-scrolling:touch;scrollbar-width:thin}.table-wrap::-webkit-scrollbar,.schedule-scroll::-webkit-scrollbar{height:8px}.table-wrap::-webkit-scrollbar-thumb,.schedule-scroll::-webkit-scrollbar-thumb{background:#cbd5e1;border-radius:999px}.table-wrap::-webkit-scrollbar-track,.schedule-scroll::-webkit-scrollbar-track{background:#f1f5f9}table.table{width:100%;border-collapse:collapse;font-size:13px}.table th{text-align:left;font-size:11.5px;text-transform:uppercase;letter-spacing:.05em;color:var(--muted);font-weight:700;padding:10px 14px;background:#f8fafc;border-bottom:1px solid var(--line);white-space:nowrap}.table td{padding:11px 14px;border-bottom:1px solid #eef2f7;vertical-align:middle}.table tbody tr:hover{background:#fafcff}.table tbody tr:last-child td{border-bottom:none}.table .num{text-align:right;font-variant-numeric:tabular-nums}.table .center{text-align:center}.table .cell-title{font-weight:600;color:var(--ink)}.table .cell-sub{font-size:11.5px;color:var(--muted)}.row-actions{display:flex;gap:4px;justify-content:flex-end}.table-empty{padding:44px 20px;text-align:center;color:var(--muted)}.table-empty svg{color:var(--muted-2);margin-bottom:8px}.badge{display:inline-flex;align-items:center;gap:5px;font-size:11px;font-weight:700;padding:3px 8px;border-radius:999px;background:var(--bg-soft);color:var(--muted);white-space:nowrap}.badge-green{background:var(--brand-soft);color:var(--brand-ink)}.badge-red{background:var(--danger-soft);color:#991b1b}.badge-amber{background:var(--warn-soft);color:#92400e}.badge-blue{background:var(--info-soft);color:#1e40af}.badge-violet{background:#ede9fe;color:#5b21b6}.badge-gray{background:#f1f5f9;color:#475569}.badge-dot{width:6px;height:6px;border-radius:50%;background:currentColor}.chip{display:inline-flex;align-items:center;gap:6px;font-size:12px;border:1px solid var(--line);background:#fff;border-radius:8px;padding:4px 9px;color:var(--ink-2)}.alert{display:flex;gap:10px;padding:12px 14px;border-radius:12px;font-size:13px;border:1px solid transparent;align-items:flex-start}.alert svg{flex:0 0 auto;margin-top:2px}.alert strong{display:block;margin-bottom:2px}.alert-error{background:#fff1f2;border-color:#fecdd3;color:#9f1239}.alert-warn{background:#fffbeb;border-color:#fde68a;color:#92400e}.alert-success{background:#ecfdf5;border-color:#a7f3d0;color:#065f46}.alert-info{background:#eff6ff;border-color:#bfdbfe;color:#1e40af}.alert ul{margin:4px 0 0;padding-left:18px}.modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#080f1c8c;z-index:100;display:flex;align-items:flex-start;justify-content:center;padding:40px 16px;overflow-y:auto;animation:fade .15s ease}.modal{width:100%;max-width:620px;background:#fff;border-radius:16px;box-shadow:0 40px 80px -30px #0206178c;animation:pop .18s ease;margin-bottom:30px}.modal.wide{max-width:880px}.modal-head{display:flex;align-items:flex-start;gap:12px;padding:18px 20px 12px;border-bottom:1px solid var(--line)}.modal-head h3{font-size:16px}.modal-head p{font-size:12px;color:var(--muted);margin-top:2px}.modal-head .close{margin-left:auto}.modal-body{padding:18px 20px}.modal-foot{padding:14px 20px;border-top:1px solid var(--line);display:flex;gap:8px;justify-content:flex-end;background:#fafbfd;border-radius:0 0 16px 16px}.toast-stack{position:fixed;right:18px;bottom:18px;z-index:200;display:flex;flex-direction:column;gap:8px;max-width:min(380px,calc(100vw - 36px))}.toast{display:flex;gap:9px;align-items:flex-start;padding:12px 14px;background:#0f172a;color:#e2e8f0;border-radius:12px;font-size:13px;box-shadow:0 20px 40px -20px #020617b3;animation:slideIn .2s ease}.toast.success{background:#064e3b;color:#ecfdf5}.toast.error{background:#7f1d1d;color:#fef2f2}.toast.info{background:#1e3a8a;color:#eff6ff}.tabs{display:flex;gap:4px;padding:4px;background:var(--bg-soft);border-radius:11px;width:fit-content;max-width:100%;overflow-x:auto}.tab{border:none;background:transparent;padding:7px 13px;border-radius:8px;font-size:12.5px;font-weight:600;color:var(--muted);cursor:pointer;white-space:nowrap}.tab.active{background:#fff;color:var(--ink);box-shadow:var(--shadow-sm)}.tab:hover:not(.active){color:var(--ink-2)}.seg{display:flex;gap:6px;flex-wrap:wrap}.schedule-scroll{overflow-x:auto;max-width:100%;overscroll-behavior-x:contain;-webkit-overflow-scrolling:touch;scrollbar-width:thin;border-radius:0 0 var(--radius) var(--radius)}.schedule-table{border-collapse:separate;border-spacing:0;width:100%;min-width:900px}.schedule-table th,.schedule-table td{border-right:1px solid var(--line);border-bottom:1px solid var(--line);padding:0}.schedule-table thead th{background:#f8fafc;font-size:10.5px;text-transform:uppercase;letter-spacing:.04em;color:var(--muted);font-weight:700;padding:7px 5px;text-align:center;white-space:nowrap}.schedule-table thead th .time{display:block;font-size:9.5px;color:var(--muted-2);font-weight:600;text-transform:none;letter-spacing:0}.schedule-table tbody th{background:#f8fafc;font-size:12px;font-weight:700;text-align:left;padding:8px 12px;white-space:nowrap;color:var(--ink-2);position:sticky;left:0;z-index:2}.schedule-table td{height:56px;vertical-align:top}.schedule-cell{min-height:54px;padding:5px 6px;display:flex;flex-direction:column;gap:2px;border-left:3px solid var(--brand);background:#f8fbff;font-size:10.5px;line-height:1.3;height:100%}.schedule-cell .subject{font-weight:700;font-size:11px;color:var(--ink)}.schedule-cell .teacher{color:#334155}.schedule-cell .room{color:var(--muted-2);font-size:9.5px}.schedule-cell.conflict{outline:2px solid #ef4444;outline-offset:-2px;background:#fff1f2}.schedule-cell.empty{background:#fff}.schedule-cell.empty-slot{background:#ef4444;border-left-color:#b91c1c}.schedule-cell.empty-slot:after{content:""}.schedule-cell.slot-unused{background:#000;border-left-color:#000}.schedule-cell.slot-unused:after{content:""}.schedule-cell.empty:after{content:"—";color:#cbd5e1;margin:auto}.matrix-table td.is-break{background:#fef08a!important;color:#854d0e}.matrix-teacher{display:block;line-height:1.1;white-space:normal;overflow-wrap:anywhere}.matrix-teacher small{font-size:.85em;font-weight:700}.legend-name+.legend-subject{margin-left:4px}.matrix-break-cell{width:18px;min-width:18px;padding:2px 1px!important}.matrix-break-cell span{writing-mode:vertical-rl;transform:rotate(180deg);display:inline-block;font-size:8px;font-weight:800;letter-spacing:.08em}.matrix-table{width:100%;border-collapse:collapse;font-size:9.5px;min-width:1000px}.matrix-table th{background:#0f172a;color:#fff;padding:3px 2px;font-size:9px;text-align:center;border:1px solid #334155}.matrix-table th.day{background:#1e293b;font-size:10px;letter-spacing:.05em}.matrix-table td{border:1px solid #cbd5e1;padding:2px 3px;text-align:center;vertical-align:middle;height:26px}.matrix-table td.class-name{font-weight:700;background:#f1f5f9;white-space:nowrap;text-align:left;padding-left:6px}.matrix-table td.slot-unused-matrix{background:#000!important}.matrix-table td.empty-slot-matrix{background:#ef4444!important}.matrix-table .legend-num{display:block;color:#475569;font-size:8.5px}.matrix-table th.day-start,.matrix-table td.day-start{border-left:3px solid #0f172a}.matrix-table tr.level-row td{background:#1e293b;color:#fff;font-weight:800;font-size:8.5px;letter-spacing:.12em;text-align:left;padding:3px 6px;border-top:2px solid #0f172a}.matrix-table tr.level-row:first-child td{border-top:none}.matrix-table.matrix-print{font-size:7.4px;min-width:0}.matrix-table.matrix-print th{font-size:6.6px;padding:1px}.matrix-table.matrix-print td{height:17px;padding:0 2px}.matrix-table.matrix-print .matrix-teacher-code{display:inline-block;font-size:12px;line-height:1;font-weight:800!important;color:#0f172a!important}.matrix-table.matrix-print td.class-name{padding-left:4px}.matrix-table.matrix-print .legend-num{font-size:6.4px}.matrix-table.matrix-print td.is-break{background:#fef08a!important}.matrix-table.matrix-print .matrix-break-cell{width:11px;min-width:11px}.matrix-table.matrix-print .matrix-break-cell span{font-size:6.5px}.matrix-table.matrix-print tr.level-row td{font-size:7px;padding:2px 4px}.welcome{background:linear-gradient(120deg,#0b1220,#10281f 55%,#0b7a53 140%);color:#e2e8f0;border-radius:18px;padding:22px 24px;display:flex;flex-wrap:wrap;gap:18px;align-items:center;margin-bottom:16px;position:relative;overflow:hidden}.welcome:after{content:"";position:absolute;right:-60px;top:-80px;width:260px;height:260px;background:radial-gradient(circle,rgba(52,211,153,.22),transparent 65%)}.welcome h2{color:#fff;font-size:20px}.welcome p{color:#a9bdd2;font-size:12.5px;margin-top:4px;max-width:560px}.welcome .spacer{flex:1}.welcome-actions{display:flex;gap:8px;flex-wrap:wrap;position:relative;z-index:1}.welcome .badge{background:#10b98129;color:#6ee7b7}.welcome .btn-outline{background:#ffffff14;border-color:#ffffff38;color:#e2e8f0}.welcome .btn-outline:hover{background:#ffffff29}.welcome .btn-primary{background:#10b981}.welcome .btn-primary:hover{background:#059669}.bar-row{display:flex;align-items:center;gap:10px;margin-bottom:9px;font-size:12px}.bar-row .label{width:62px;flex:0 0 62px;color:var(--muted)}.bar-track{flex:1;height:8px;border-radius:99px;background:var(--bg-soft);overflow:hidden}.bar-fill{height:100%;border-radius:99px;background:linear-gradient(90deg,#10b981,#0b7a53)}.bar-row .value{width:34px;text-align:right;font-weight:700;font-variant-numeric:tabular-nums}.list-row{display:flex;align-items:center;gap:10px;padding:9px 0;border-bottom:1px dashed var(--line);font-size:12.5px}.list-row:last-child{border-bottom:none}.list-row .grow{flex:1;min-width:0}.list-row .title{font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.list-row .sub{font-size:11px;color:var(--muted)}.progress{height:6px;border-radius:99px;background:var(--bg-soft);overflow:hidden}.progress>span{display:block;height:100%;border-radius:99px;background:var(--brand)}.kv{display:grid;grid-template-columns:150px 1fr;gap:6px 14px;font-size:13px}.kv dt{color:var(--muted)}.kv dd{margin:0;font-weight:500}.login-page{min-height:100vh;display:grid;grid-template-columns:1.05fr 1fr;background:var(--bg);position:relative;overflow:hidden}.login-page.has-login-background:before{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background-image:linear-gradient(120deg,#06121fc7,#0641347a),var(--login-background);background-size:cover;background-position:center;background-repeat:no-repeat;z-index:0}.login-page.has-login-background>*{position:relative;z-index:1}.login-art{background:radial-gradient(1200px 600px at -10% 10%,#0f3d2e,#0b1220 55%),linear-gradient(160deg,#0b1220,#0f2b22);color:#e2e8f0;padding:46px;display:flex;flex-direction:column;gap:28px;position:relative;overflow:hidden}.login-art:before{content:"";position:absolute;inset:auto -120px -160px auto;width:420px;height:420px;border-radius:50%;background:radial-gradient(circle,rgba(16,185,129,.25),transparent 65%)}.login-brand{display:flex;align-items:center;gap:12px}.login-art h1{color:#fff;font-size:30px;line-height:1.2;letter-spacing:-.03em;max-width:460px;margin-top:24px}.login-art .lead{color:#a9bdd2;max-width:440px;font-size:14px}.login-features{display:grid;gap:12px;margin-top:auto;position:relative;z-index:1}.login-feature{display:flex;gap:10px;align-items:flex-start;font-size:13px;color:#cbd5e1}.login-feature svg{color:#34d399;flex:0 0 auto;margin-top:2px}.login-feature strong{color:#fff;display:block;font-size:13px}.login-form-side{display:flex;align-items:center;justify-content:center;padding:32px 22px}.login-card{width:100%;max-width:400px}.login-card h2{font-size:22px}.login-card>p{color:var(--muted);font-size:13px;margin:4px 0 22px}.login-hint{margin-top:16px;background:#f8fafc;border:1px dashed var(--line-strong);border-radius:10px;padding:10px 12px;font-size:11.5px;color:var(--muted)}.print-page{background:#e9edf3;min-height:100vh;padding:26px 16px 50px}.notification-recipients{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;max-height:300px;overflow-y:auto;padding:12px;border:1px solid var(--line);border-radius:10px}.notification-recipients .checkbox{align-items:flex-start;min-width:0;overflow-wrap:anywhere}.notification-recipients input{flex-shrink:0}.notification-preview{padding:16px;border:1px solid var(--line);border-radius:12px;background:var(--bg-soft);overflow-wrap:anywhere}@media (max-width: 640px){.notification-recipients{grid-template-columns:minmax(0,1fr)}}.public-schedule-page{min-height:100vh;padding:30px 18px;background:radial-gradient(circle at 8% 8%,rgba(52,211,153,.28),transparent 27%),radial-gradient(circle at 92% 18%,rgba(59,130,246,.2),transparent 25%),linear-gradient(135deg,#effcf6,#f4f7ff 48%,#eaf3ff);color:var(--ink);position:relative;isolation:isolate;display:flex;flex-direction:column}.public-schedule-page:before,.public-schedule-page:after{content:"";position:absolute;border-radius:50%;pointer-events:none;z-index:-1}.public-schedule-page:before{width:300px;height:300px;right:-120px;top:42%;background:#10b9811a;filter:blur(3px)}.public-schedule-page:after{width:220px;height:220px;left:-100px;bottom:8%;background:#3b82f61a}.public-schedule-page.has-public-background{background-image:linear-gradient(120deg,#06121fc7,#06413480),var(--public-background);background-size:cover;background-position:center;background-repeat:no-repeat;background-attachment:fixed}@media (max-width: 768px){.public-schedule-page.has-public-background{background-attachment:scroll;background-size:cover;background-position:center top}}.public-schedule-page.has-public-background:before,.public-schedule-page.has-public-background:after{display:none}.public-schedule-page.has-public-background .public-brand strong{color:#fff}.public-schedule-page.has-public-background .public-brand span{color:#ffffffc7}.public-schedule-page.has-public-background .public-brand-mark{box-shadow:0 12px 24px -12px #000000bf}.public-schedule-page.has-public-background .public-today,.public-schedule-page.has-public-background .public-clock{background:#ffffffe6}.public-schedule-page.has-public-background .public-schedule-card{background:#fffffff7}.public-schedule-page.has-public-background .public-schedule-footer{color:var(--ink)}.public-schedule-page.has-public-background .public-schedule-footer span+span{border-left-color:#64748b4d}.public-schedule-header,.public-schedule-card{max-width:100%;margin-left:auto;margin-right:auto}.public-schedule-header{display:flex;align-items:center;justify-content:space-between;gap:16px;margin-bottom:22px}.public-brand{display:flex;align-items:center;gap:11px}.public-brand-mark{width:46px;height:46px;border-radius:14px;display:grid;place-items:center;color:#fff;background:linear-gradient(140deg,#10b981,#0b7a53 70%);overflow:hidden;box-shadow:0 12px 24px -12px #047857}.public-brand-mark img{width:100%;height:100%;object-fit:contain}.public-brand strong,.public-brand span{display:block}.public-brand strong{font-size:15px}.public-brand span{color:var(--muted);font-size:12px}.public-today{display:flex;align-items:center;gap:6px;color:#31526d;font-size:13px;background:#ffffff9e;border:1px solid rgba(255,255,255,.9);border-radius:999px;padding:8px 12px;box-shadow:0 8px 22px -18px #0f172a}.public-header-meta{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.public-clock{display:inline-flex;align-items:center;gap:6px;color:#31526d;font-size:13px;font-weight:700;font-variant-numeric:tabular-nums;background:#ffffff9e;border:1px solid rgba(255,255,255,.9);border-radius:999px;padding:8px 12px;box-shadow:0 8px 22px -18px #0f172a;white-space:nowrap}.public-schedule-card{background:#ffffffe0;border:1px solid rgba(255,255,255,.95);border-radius:22px;box-shadow:0 22px 45px -28px #0f172a73;overflow:hidden;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);flex:1;display:flex;flex-direction:column}.public-schedule-title{padding:25px 27px 19px;display:flex;justify-content:space-between;gap:18px;align-items:flex-end;border-bottom:1px solid var(--line)}.public-schedule-title h1{font-size:25px}.public-schedule-title p{color:var(--muted);font-size:13px;margin-top:4px}.public-filters{display:flex;gap:10px}.public-filters label{display:grid;gap:5px;font-size:11px;color:var(--muted);font-weight:700}.public-filters .select{min-width:150px;background:#fff}.public-schedule-sub{padding:13px 27px;display:flex;align-items:center;gap:7px;color:var(--brand-ink);background:linear-gradient(90deg,#e6f8ef,#eefbf5);font-size:13px;font-weight:700}.public-teacher-search{position:relative;padding:14px 27px 0}.public-search-box{display:flex;align-items:center;gap:8px;padding:9px 12px;background:#fff;border:1px solid var(--line);border-radius:12px;color:var(--muted)}.public-search-box:focus-within{border-color:#10b9818c;box-shadow:0 0 0 3px #10b98124}.public-search-box input{flex:1;min-width:0;border:0;outline:0;background:transparent;font:inherit;font-size:13px;color:var(--ink)}.public-search-box input::placeholder{color:var(--muted-2)}.public-search-clear{flex:0 0 auto;display:grid;place-items:center;width:22px;height:22px;border:0;border-radius:999px;background:var(--bg-soft);color:var(--ink-2);cursor:pointer}.public-search-results{position:absolute;left:27px;right:27px;top:calc(100% - 2px);z-index:30;padding:6px;background:#fff;border:1px solid var(--line);border-radius:14px;box-shadow:0 24px 50px -24px #0f172a8c;max-height:264px;overflow-y:auto}.public-search-item{display:flex;align-items:center;justify-content:space-between;gap:10px;width:100%;padding:9px 10px;border:0;border-radius:9px;background:transparent;font:inherit;text-align:left;cursor:pointer}.public-search-item:hover,.public-search-item:focus-visible{background:var(--brand-soft)}.public-search-name{font-size:13px;font-weight:600;color:var(--ink)}.public-search-meta{flex:0 0 auto;font-size:11px;font-weight:700;color:var(--muted);white-space:nowrap}.public-search-meta.has-lessons{color:var(--brand-ink)}.public-search-empty{padding:10px;font-size:12.5px;color:var(--muted)}.public-empty-teacher{display:grid;justify-items:center;gap:6px;color:var(--ink-2)}.public-empty-teacher strong{color:var(--ink)}.public-schedule-list{padding:0 27px 80px}.public-row{display:grid;grid-template-columns:100px 1fr 120px;gap:16px;align-items:center;min-height:62px;border-bottom:1px solid var(--line);font-size:13px;transition:background .15s ease}.public-row:hover:not(.public-break){background:#ecfdf58c}.public-row>div{display:flex;flex-direction:column;gap:2px}.public-row strong{font-size:14px}.public-row span,.public-row small,.public-row time{color:var(--muted)}.public-row small{font-size:11px}.public-row time{text-align:right;font-variant-numeric:tabular-nums;font-size:12px}.public-number{font-weight:700;color:var(--ink-2)!important}.public-break{min-height:42px;background:var(--warn-soft);color:var(--warn);padding:0 10px;border-radius:8px;margin:5px 0}.public-break strong{color:var(--warn)}.public-empty-row{opacity:.72}.public-empty{padding:34px 10px;text-align:center;color:var(--muted)}.public-schedule-footer{display:flex;justify-content:center;flex-wrap:wrap;gap:8px 16px;text-align:center;color:var(--ink);font-size:11px;position:fixed;bottom:0;left:0;right:0;background:#ffffffed;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);padding:12px 18px;border-top:1px solid rgba(100,116,139,.1);z-index:100;max-width:100%}.public-schedule-footer span+span{padding-left:16px;border-left:1px solid rgba(100,116,139,.35)}@keyframes public-current-pulse{0%,to{box-shadow:0 0 0 2px #10b98161,0 14px 32px -16px #10b981b3}50%{box-shadow:0 0 0 5px #10b98133,0 20px 42px -12px #10b981e6}}.public-row.public-row-current{position:relative;z-index:1;padding-left:14px;border-radius:12px;border-bottom-color:transparent;background:linear-gradient(90deg,#10b98129,#10b98105 72%);animation:public-current-pulse 2.8s ease-in-out infinite}.public-row.public-row-current:before{content:"";position:absolute;left:0;top:8px;bottom:8px;width:4px;border-radius:999px;background:linear-gradient(180deg,#34d399,#0b7a53)}.public-row.public-row-current strong{font-size:16px}.public-row.public-row-current time{color:var(--brand-ink);font-weight:800}.public-row.public-break.public-row-current{background:linear-gradient(90deg,#f59e0b3d,#f59e0b0f 72%);animation:none;box-shadow:0 0 0 2px #f59e0b59,0 12px 26px -16px #b4530999}.public-row.public-break.public-row-current:before{background:linear-gradient(180deg,#fbbf24,#b45309)}.public-now-badge{display:inline-flex;align-items:center;gap:5px;margin-left:8px;padding:2px 8px;border-radius:999px;background:var(--brand);color:#fff!important;font-size:10px;font-weight:800;letter-spacing:.04em;text-transform:uppercase;line-height:1.7;vertical-align:middle;white-space:nowrap;box-shadow:0 4px 12px -6px #0b7a53e6}.public-now-badge:before{content:"";width:5px;height:5px;border-radius:50%;background:#d1fae5;animation:public-now-dot 1.6s ease-in-out infinite}@keyframes public-now-dot{0%,to{opacity:1;transform:scale(1)}50%{opacity:.45;transform:scale(.75)}}.public-break .public-now-badge{background:var(--warn);box-shadow:none}.public-break .public-now-badge:before{background:#fef3c7}@media (prefers-reduced-motion: reduce){.public-row.public-row-current{animation:none}}@media (max-width: 640px){.public-schedule-page{padding:10px 10px 56px}.public-schedule-page:before,.public-schedule-page:after{display:none}.public-schedule-header,.public-schedule-title{align-items:stretch;flex-direction:column}.public-schedule-header{margin-bottom:14px;gap:12px}.public-header-meta{align-self:flex-start;gap:8px}.public-today,.public-clock{padding:7px 11px;font-size:12.5px}.public-schedule-card{border-radius:16px;width:100%}.public-schedule-title{padding:16px 12px 12px}.public-schedule-title h1{font-size:22px}.public-schedule-title p{font-size:13px}.public-filters{width:100%;gap:8px}.public-filters label{flex:1;min-width:0;font-size:12px}.public-filters .select{min-width:0;padding:10px 8px;font-size:13px}.public-teacher-search{padding:12px 12px 0}.public-search-box{padding:8px 10px}.public-search-results{left:12px;right:12px;max-height:240px}.public-schedule-sub{padding:10px 12px;font-size:13px}.public-schedule-list{padding:0 8px 74px;display:flex;flex-direction:column;gap:8px}.public-row{display:grid;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:10px;padding:10px 12px;min-height:0;background:#fff;border:1px solid var(--line);border-radius:12px;box-shadow:0 6px 14px -14px #0f172a80}.public-row:hover:not(.public-break){background:#fff}.public-number{display:inline-flex;align-items:center;padding:4px 9px;border-radius:999px;background:var(--brand-soft);color:var(--brand-ink)!important;font-size:11.5px;font-weight:700;white-space:nowrap}.public-row>div{gap:1px;min-width:0}.public-row strong{font-size:14.5px;line-height:1.25}.public-row span{font-size:12px}.public-row small{font-size:11px}.public-row time{grid-column:3;justify-self:end;margin:0;padding:4px 8px;border-radius:8px;background:#f1f5f9;color:var(--brand-ink);text-align:right;font-size:12px;font-weight:700;white-space:nowrap}.public-break{grid-template-columns:auto minmax(0,1fr) auto;gap:10px;margin:0;padding:9px 12px;border:0;border-radius:12px;background:var(--warn-soft)}.public-break strong{font-size:13px}.public-break>span:last-child{grid-column:3;justify-self:end;font-size:12px;font-weight:700;white-space:nowrap}.public-row.public-row-current{padding:14px 12px 14px 14px;border-radius:14px;border-color:#10b9818c;background:#fff;transform:scale(1.012)}.public-row.public-row-current strong{font-size:17px}.public-row.public-row-current time{background:var(--brand);color:#fff}.public-row.public-row-current .public-number{background:var(--brand);color:#fff!important}.public-row.public-break.public-row-current{border:0}.public-schedule-footer{line-height:1.5}.public-schedule-footer span+span{padding-left:0;border-left:0}}.print-sheet{background:#fff;max-width:1300px;margin:0 auto;padding:26px 28px;box-shadow:0 20px 50px -30px #02061780;border-radius:4px}.print-head{text-align:center;margin-bottom:12px}.print-head h1{font-size:15px;letter-spacing:.02em;text-transform:uppercase}.print-head h2{font-size:21px;margin-top:2px}.print-head h3{font-size:14px;font-weight:600;margin-top:2px}.print-toolbar{display:flex;gap:8px;max-width:1300px;margin:0 auto 14px;flex-wrap:wrap;align-items:center}.print-table{width:100%;border-collapse:collapse;font-size:8.5px;table-layout:fixed}.print-table th,.print-table td{border:1px solid #64748b;padding:2px 3px;vertical-align:middle;text-align:center}.print-table th{background:#e2e8f0;font-size:8.5px;height:28px}.print-table td.day{font-weight:700;background:#f1f5f9;width:52px}.print-table td{height:46px}.print-table .p-subject{font-weight:700;display:block}.print-table .p-teacher{display:block}.print-table .p-room{color:#475569;display:block;font-size:7.5px}.print-sign{display:flex;justify-content:space-between;align-items:flex-start;margin-top:6px;font-size:10px;break-inside:avoid;page-break-inside:avoid}.print-sign>div{width:42%;text-align:center}.print-sign .space{height:34px;display:flex;align-items:flex-end;justify-content:center}.print-sign .sign-image{max-height:34px;max-width:150px;object-fit:contain;display:block}.print-legend{margin-top:14px;font-size:9px;columns:4;column-gap:18px}.legend-teacher .legend-line{display:block;font-size:9px;line-height:1.2;margin-bottom:1px;break-inside:avoid}.legend-teacher .legend-name{min-width:0}.legend-teacher .legend-subject{color:#475569;font-size:inherit;font-weight:400}.print-sheet .legend-teacher .legend-line{font-size:7.4px;margin-bottom:0}.print-sheet .legend-teacher .legend-subject{font-size:inherit}.print-legend div{break-inside:avoid;margin-bottom:1px}.spinner{width:18px;height:18px;border:2px solid rgba(255,255,255,.35);border-top-color:#fff;border-radius:50%;animation:spin .7s linear infinite}.spinner.dark{border-color:var(--line-strong);border-top-color:var(--brand)}.loading-block{display:flex;align-items:center;justify-content:center;gap:10px;padding:50px;color:var(--muted);font-size:13px}.skeleton{background:linear-gradient(90deg,#eef2f7 25%,#f8fafc,#eef2f7 75%);background-size:200% 100%;animation:shimmer 1.2s infinite;border-radius:8px;height:14px}.empty{padding:48px 20px;text-align:center;color:var(--muted)}.empty .icon{width:52px;height:52px;border-radius:14px;background:var(--bg-soft);display:grid;place-items:center;margin:0 auto 12px;color:var(--muted-2)}.empty h3{font-size:14px;margin-bottom:4px}.empty p{font-size:12.5px;max-width:380px;margin:0 auto 14px}.error-box{padding:14px 16px;background:#fff1f2;border:1px solid #fecdd3;color:#9f1239;border-radius:12px;font-size:13px}.muted{color:var(--muted)}.small{font-size:12px}.tiny{font-size:11px}.bold{font-weight:700}.center{text-align:center}.right{text-align:right}.mt-0{margin-top:0}.mt-1{margin-top:6px}.mt-2{margin-top:12px}.mt-3{margin-top:18px}.mb-1{margin-bottom:6px}.mb-2{margin-bottom:12px}.mb-3{margin-bottom:18px}.flex{display:flex}.flex-wrap{flex-wrap:wrap}.items-center{align-items:center}.gap-1{gap:6px}.gap-2{gap:12px}.grow{flex:1}.nowrap{white-space:nowrap}.stack{display:flex;flex-direction:column;gap:12px}.hr{height:1px;background:var(--line);margin:14px 0;border:none}.scroll-y{overflow-y:auto}.mono{font-variant-numeric:tabular-nums}.help-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px}.help-step{background:#fff;border:1px solid var(--line);border-radius:14px;padding:16px}.help-step .no{width:26px;height:26px;border-radius:8px;background:var(--brand-soft);color:var(--brand-dark);display:grid;place-items:center;font-weight:800;font-size:12px;margin-bottom:8px}.help-step h4{font-size:13px;margin-bottom:4px}.help-step p{font-size:12px;color:var(--muted)}.avail-grid{display:grid;gap:2px;overflow-x:auto}.avail-grid table{border-collapse:collapse;font-size:10.5px}.avail-grid th,.avail-grid td{border:1px solid var(--line);padding:0;text-align:center}.avail-grid th{padding:5px 4px;background:#f8fafc;color:var(--muted);font-size:10px;white-space:nowrap}.avail-grid td button{width:100%;height:26px;min-width:34px;border:none;cursor:pointer;background:#ecfdf5;font-size:9.5px;color:#065f46}.avail-grid td button.off{background:#fee2e2;color:#991b1b;text-decoration:line-through}.avail-grid td button.libur{background:#fef3c7;color:#92400e;text-decoration:line-through;font-weight:700}.avail-grid td button.break{background:#f1f5f9;color:#94a3b8;cursor:not-allowed}.avail-grid td button:hover:not(.break){filter:brightness(.94)}.danger-zone{border:1px solid #fecdd3;background:#fff7f8;border-radius:14px;padding:16px 18px}.danger-zone h4{color:#9f1239;font-size:13px;margin-bottom:4px}.danger-zone p{font-size:12px;color:#9f1239;opacity:.8}@keyframes spin{to{transform:rotate(360deg)}}@keyframes shimmer{to{background-position:-200% 0}}@keyframes fade{0%{opacity:0}to{opacity:1}}@keyframes pop{0%{opacity:0;transform:translateY(8px) scale(.99)}to{opacity:1;transform:none}}@keyframes slideIn{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:none}}@media (max-width: 1280px){.grid-stats{grid-template-columns:repeat(3,minmax(0,1fr))}.grid-5,.grid-4,.help-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (max-width: 1024px){.sidebar{transform:translate(-100%);box-shadow:0 0 60px #00000059}.sidebar.open{transform:none}.app-shell.sidebar-collapsed .sidebar{width:264px;padding:20px 14px 16px;overflow:visible}.app-shell.sidebar-collapsed .main-area,.main-area{margin-left:0}.hamburger{display:inline-flex}.scrim{position:fixed;top:0;right:0;bottom:0;left:0;background:#080f1c73;z-index:35}.login-page{grid-template-columns:1fr}.login-art{display:none}.content{padding:18px 16px 40px}.topbar{padding:0 16px}.topbar-meta .hide-sm{display:none}.grid-split,.grid-2,.grid-3{grid-template-columns:minmax(0,1fr)}}@media (max-width: 720px){.grid-stats{grid-template-columns:repeat(2,minmax(0,1fr))}.stat-value{font-size:21px}.page-head h1{font-size:19px}.page-head-actions{width:100%;margin-left:0}.page-head-actions .btn{flex:1}.form-grid,.kv{grid-template-columns:1fr}.user-meta,.topbar-sub{display:none}.help-grid{grid-template-columns:1fr}.print-sheet{padding:14px}.welcome{padding:18px}.welcome h2{font-size:17px}.toolbar{padding:10px 12px}.toolbar .select,.toolbar .input,.search-box{width:100%;min-width:0}.card-head .select{width:100%!important;min-width:0}.tabs{flex-wrap:wrap;width:100%;overflow-x:visible}.tab{flex:1 1 auto;text-align:center;padding:7px 10px}.table th,.table td{padding:9px 11px}.table thead th:first-child,.table tbody td:first-child{position:sticky;left:0;z-index:1}.table thead th:first-child{background:#f8fafc}.table tbody td:first-child{background:var(--surface);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);box-shadow:1px 0 0 var(--line)}.schedule-table{min-width:680px}.schedule-table thead th{font-size:9.5px;padding:6px 4px}.schedule-table tbody th{padding:7px 9px;font-size:11px}.schedule-cell{font-size:10px;padding:4px 5px}.schedule-cell .subject{font-size:10.5px}.matrix-table{min-width:820px}.matrix-table td.class-name{position:sticky;left:0;z-index:1}.modal-overlay{padding:14px 10px}.modal{border-radius:14px}.modal-foot{flex-wrap:wrap}.modal-foot .btn{flex:1}.print-legend{columns:2}}@media print{@page{size:330mm 216mm;margin:7mm}body{background:#fff}.sidebar,.topbar,.no-print,.toast-stack{display:none!important}.main-area{margin:0}.content{padding:0}.print-page{background:#fff;padding:0}.print-sheet{box-shadow:none;padding:0;margin:0;max-width:none}.print-sign{margin-top:2px;break-inside:avoid;page-break-inside:avoid}.print-sign .space{height:34px}.schedule-table{min-width:0!important}.print-legend{columns:4;column-gap:10mm;margin-top:5px}.print-sheet .legend-teacher .legend-line{font-size:7pt;line-height:1.1}.print-sheet .legend-teacher .legend-subject{font-size:inherit}}
