:root{--brand: #1a3a6b;--brand-dk: #142e58;--brand-lt: rgba(26,58,107,.07);--teal: #0d9488;--teal-dk: #0a7a70;--color-primary: #1a3a6b;--color-primary-dark: #142e58;--color-primary-faint: rgba(26,58,107,.06);--color-teal: #0d9488;--color-teal-dark: #0a7a70;--color-teal-faint: rgba(13,148,136,.07);--color-bg: #f0f2f5;--color-white: #ffffff;--color-surface: #ffffff;--color-surface-2: #f4f6f9;--color-surface-light: #eaecf2;--color-border: #dde1eb;--color-border-light: #e8eaf0;--color-border-hover: #b4bdd0;--color-divider: #cdd2e0;--color-text: #0d1117;--color-text-secondary:#374151;--color-text-muted: #6b7280;--color-text-light: #9ca3af;--color-text-inverse: #ffffff;--color-success: #0a8f52;--color-success-light: #edfaf3;--color-success-border:#6dd6a8;--color-warning: #d97706;--color-warning-light: #fffbeb;--color-warning-border:#fde68a;--color-warning-text: #92400e;--color-error: #c41c1c;--color-error-light: #fef2f2;--color-error-border: #f8a0a0;--color-error-text: #7f1d1d;--color-info: #1a3a6b;--color-info-light: #eef3ff;--color-info-border: #c0d0f0;--font-family: Inter, system-ui, -apple-system, sans-serif;--text-xs: 11px;--text-sm: 12px;--text-base: 13.5px;--text-lg: 15px;--text-xl: 17px;--text-2xl: 20px;--text-3xl: 24px;--text-4xl: 30px;--font-normal: 400;--font-medium: 500;--font-semibold: 600;--font-bold: 700;--space-1:4px;--space-2:8px;--space-3:12px;--space-4:16px;--space-5:20px;--space-6:24px;--space-8:32px;--space-10:40px;--radius-sm:3px;--radius-md:4px;--radius-lg:5px;--radius-xl:7px;--radius-2xl:10px;--radius-full:9999px;--shadow-none: none;--shadow-xs: none;--shadow-sm: none;--shadow-base: none;--shadow-md: none;--shadow-lg: none;--sidebar-width: 242px;--sidebar-rail-width: 58px;--header-height: 54px;--transition-fast: .14s ease;--transition-base: .2s ease;--z-dropdown: 100;--z-sticky: 200;--z-fixed: 300;--z-overlay: 350;--z-modal-overlay: 500;--z-modal: 510;--z-notification: 700;--z-tooltip: 9999}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}html{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;-webkit-tap-highlight-color:transparent}body{font-family:var(--font-family);font-size:var(--text-base);color:var(--color-text);background:var(--color-bg);line-height:1.5}h1,h2,h3,h4{font-weight:var(--font-semibold);line-height:1.25;color:var(--color-text)}a{color:var(--color-teal);text-decoration:none}a:hover{text-decoration:none}input[type=text],input[type=email],input[type=password],input[type=number],input[type=date],input[type=time],input[type=color],textarea,select{width:100%;height:38px;padding:0 11px;border:1px solid var(--color-border);border-radius:var(--radius-md);background:var(--color-white);font-family:var(--font-family);font-size:var(--text-base);color:var(--color-text);outline:none;line-height:38px;transition:border-color var(--transition-fast),box-shadow var(--transition-fast);-webkit-appearance:none;appearance:none}textarea{height:auto;min-height:80px;padding:8px 11px;line-height:1.5;resize:vertical}input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{-webkit-appearance:none;appearance:none;margin:0}input[type=number]{-moz-appearance:textfield}input[type=time]::-webkit-calendar-picker-indicator,input[type=date]::-webkit-calendar-picker-indicator{display:none;-webkit-appearance:none}input[type=time],input[type=date]{cursor:text;letter-spacing:.03em}select{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 24 24' fill='none' stroke='%236b7280' stroke-width='2.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='6 9 12 15 18 9'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 10px center;padding-right:32px;cursor:pointer}select::-ms-expand{display:none}input::placeholder,textarea::placeholder{color:var(--color-text-light);font-size:var(--text-sm)}input:hover,textarea:hover,select:hover{border-color:var(--color-border-hover)}input:focus,textarea:focus,select:focus{border-color:var(--color-primary);box-shadow:none;outline:none}input:disabled,select:disabled,textarea:disabled{background:var(--color-surface-2);color:var(--color-text-muted);cursor:not-allowed}button,.btn{font-family:var(--font-family);font-size:var(--text-base);font-weight:var(--font-medium);padding:7px 15px;border:none;background:none;border-radius:var(--radius-md);cursor:pointer;transition:background var(--transition-fast),opacity var(--transition-fast);display:inline-flex;align-items:center;justify-content:center;gap:6px;white-space:nowrap;user-select:none;text-decoration:none;line-height:1.4}.btn-primary{background:var(--color-primary);color:#fff}.btn-primary:hover{background:var(--color-primary-dark)}.btn-teal{background:var(--color-teal);color:#fff;border-radius:var(--radius-full);padding-left:14px;padding-right:14px}.btn-teal:hover{background:var(--color-teal-dark)}.btn-secondary{background:var(--color-white);color:var(--color-text-secondary);border:1px solid var(--color-border)}.btn-secondary:hover{background:var(--color-surface-2);border-color:var(--color-border-hover)}.btn-ghost{background:transparent;color:var(--color-text-muted);border:1px solid transparent}.btn-ghost:hover{background:var(--color-surface-2);color:var(--color-text)}.btn-danger{background:var(--color-error);color:#fff}.btn-danger:hover{background:#b01c1c}.btn-success{background:var(--color-success);color:#fff}.btn-success:hover{background:#077a44}.btn-sm{padding:4px 10px;font-size:var(--text-sm)}.btn-lg{padding:10px 20px;font-size:var(--text-lg)}.btn-block{width:100%}button:disabled,.btn:disabled{opacity:.38;cursor:not-allowed;pointer-events:none}.card{background:var(--color-white);border:1px solid var(--color-border);border-radius:var(--radius-lg);overflow:hidden;transition:border-color var(--transition-fast)}.card:hover{border-color:var(--color-border-hover)}.card-header{padding:12px 18px;border-bottom:1px solid var(--color-border-light);display:flex;align-items:center;justify-content:space-between}.card-title{font-size:var(--text-base);font-weight:var(--font-semibold);margin:0}.card-body{padding:18px}.card-footer{padding:12px 18px;border-top:1px solid var(--color-border-light)}.badge{display:inline-flex;align-items:center;gap:4px;padding:2px 8px;border-radius:var(--radius-full);font-size:var(--text-xs);font-weight:600;letter-spacing:.02em;border:1px solid transparent}.badge-success{background:var(--color-success-light);color:var(--color-success);border-color:var(--color-success-border)}.badge-warning{background:var(--color-warning-light);color:var(--color-warning);border-color:var(--color-warning-border)}.badge-error{background:var(--color-error-light);color:var(--color-error);border-color:var(--color-error-border)}.badge-info{background:var(--color-info-light);color:var(--color-info);border-color:var(--color-info-border)}.badge-primary{background:var(--color-primary-faint);color:var(--color-primary)}.badge-teal{background:var(--color-teal-faint);color:var(--color-teal)}.form-group{display:flex;flex-direction:column;gap:4px;margin-bottom:14px}.form-group:last-child{margin-bottom:0}.form-label{display:block;font-size:11px;font-weight:600;color:var(--color-text-secondary);margin-bottom:3px;letter-spacing:.03em;text-transform:uppercase}.form-helper{font-size:var(--text-xs);color:var(--color-text-muted)}.form-error{font-size:var(--text-xs);color:var(--color-error)}.form-row{display:grid;grid-template-columns:1fr 1fr;gap:16px}.modal-overlay{position:fixed;inset:0;background:#0000009e;display:flex;align-items:center;justify-content:center;z-index:var(--z-modal-overlay);padding:24px;animation:fadeIn var(--transition-fast);pointer-events:all}.modal{background:var(--color-white);border:1px solid var(--color-border);border-radius:var(--radius-xl);width:100%;max-width:520px;max-height:90vh;overflow-y:auto;z-index:var(--z-modal);animation:slideUp .18s ease;box-shadow:none}.modal-header{padding:20px 22px 16px;border-bottom:1px solid var(--color-border-light);display:flex;align-items:center;justify-content:space-between}.modal-title{font-size:16px;font-weight:700;margin:0}.modal-close{width:28px;height:28px;border-radius:var(--radius-md);background:transparent;border:none;cursor:pointer;color:var(--color-text-muted);display:flex;align-items:center;justify-content:center;transition:background var(--transition-fast),color var(--transition-fast)}.modal-close:hover{background:var(--color-surface-2);color:var(--color-text)}.modal-close svg{width:14px;height:14px}.modal-body{padding:22px 22px 18px}.modal-footer{padding:14px 22px 18px;border-top:1px solid var(--color-border-light);display:flex;gap:8px;justify-content:flex-end}.notification{display:flex;align-items:flex-start;gap:10px;padding:12px 14px;border-radius:var(--radius-lg);border:1px solid transparent;font-size:var(--text-sm);font-weight:500;pointer-events:all;animation:slideInRight .18s ease;min-width:260px;max-width:380px;box-shadow:none}.notification-success{background:#edfaf3;border-color:#6dd6a8;color:#065f46}.notification-error{background:#fef2f2;border-color:#f8a0a0;color:#991b1b}.notification-warning{background:#fffbeb;border-color:#fde68a;color:#92400e}.notification-info{background:#eef3ff;border-color:#c0d0f0;color:#1a3a6b}.table-wrap{overflow-x:auto;border:1px solid var(--color-border);border-radius:var(--radius-lg)}.data-table{width:100%;border-collapse:collapse;font-size:var(--text-sm)}.data-table th{padding:10px 16px;font-size:11px;text-align:left;font-weight:700;text-transform:uppercase;letter-spacing:.05em;color:var(--color-text-muted);background:var(--color-surface-2);border-bottom:1px solid var(--color-border);white-space:nowrap}.data-table td{padding:11px 16px;border-bottom:1px solid var(--color-border-light);color:var(--color-text);vertical-align:middle}.data-table tr:last-child td{border-bottom:none}.data-table tr:hover td{background:var(--color-surface-2)}.stats-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:12px}.stat-card{background:var(--color-white);border:1px solid var(--color-border);border-radius:var(--radius-lg);padding:16px;display:flex;align-items:center;gap:12px;transition:border-color var(--transition-fast)}.stat-card:hover{border-color:var(--color-border-hover)}.stat-icon{width:38px;height:38px;border-radius:var(--radius-md);display:flex;align-items:center;justify-content:center;flex-shrink:0}.stat-icon svg{width:17px;height:17px}.stat-icon.stat-blue{background:#eef3ff;color:#1a3a6b}.stat-icon.stat-green{background:#edfaf3;color:#0a8f52}.stat-icon.stat-amber{background:#fdf6ec;color:#92400e}.stat-icon.stat-purple{background:#f5f3ff;color:#6d28d9}.stat-icon.stat-teal{background:#f0fdfc;color:#0d9488}.stat-value{font-size:22px;font-weight:700;color:var(--color-text);letter-spacing:-.04em;line-height:1}.stat-label{font-size:11px;font-weight:600;color:var(--color-text-muted);margin-top:3px;text-transform:uppercase;letter-spacing:.04em}.empty-state{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:48px 24px;text-align:center}.empty-state svg{width:40px;height:40px;color:var(--color-text-light);margin-bottom:14px}.empty-state h3{font-size:15px;font-weight:600;color:var(--color-text);margin-bottom:6px}.empty-state p{font-size:13px;color:var(--color-text-muted);max-width:300px;line-height:1.55}.kpi-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(130px,1fr));gap:.75rem;margin-bottom:20px;align-items:stretch}.kpi-card{padding:0;min-height:100px;border-radius:5px;border:1px solid var(--color-border);background:var(--color-white);position:relative;display:flex;flex-direction:column;align-items:stretch;overflow:hidden;cursor:pointer;box-shadow:none;text-decoration:none!important;-webkit-tap-highlight-color:transparent;touch-action:manipulation;transition:border-color .15s ease,opacity .1s,transform .1s cubic-bezier(.34,1.56,.64,1)}.kpi-card:hover{border-color:var(--color-border-hover);background:var(--color-white);box-shadow:none;transform:none;text-decoration:none!important}.kpi-card:hover .kpi-icon{filter:none}.kpi-card:hover .kpi-label{color:var(--color-text)}.kpi-card:hover *{text-decoration:none!important}.kpi-card:active{transform:scale(.98)!important;opacity:.92!important;transition:transform .06s cubic-bezier(.4,0,1,1),opacity .06s!important}.kpi-card-hd{display:flex;align-items:center;gap:.5rem;margin-bottom:0;width:100%;background:var(--color-surface-2);border-bottom:1px solid var(--color-border);padding:.35rem .75rem;flex-shrink:0}.kpi-icon{width:13px;height:13px;display:flex;align-items:center;justify-content:center;flex-shrink:0;background:none;border:none;border-radius:0;color:#111827;transition:none;box-shadow:none}.kpi-icon svg{width:13px;height:13px;display:block;flex-shrink:0}.kpi-icon.blue{color:#3b82f6}.kpi-icon.teal{color:#0d9488}.kpi-icon.green{color:#16a34a}.kpi-icon.amber{color:#d97706}.kpi-icon.red{color:#dc2626}.kpi-label{font-size:.72rem;font-weight:600;color:var(--color-text-muted);letter-spacing:0;line-height:1.2;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;flex:1;min-width:0;transition:color .16s ease;text-transform:none;text-decoration:none!important}.kpi-val{font-size:clamp(1.2rem,2.5vw,1.65rem);font-weight:700;color:var(--color-text);letter-spacing:-.04em;line-height:1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%;padding:1rem .75rem 0;text-decoration:none!important}.kpi-sub-line{font-size:.65rem;color:var(--color-text-light);font-weight:400;line-height:1.4;padding:.2rem .75rem 1rem}.kpi-change{font-size:.72rem;display:flex;align-items:center;gap:.25rem;padding:.25rem .75rem 0}.kpi-change.up{color:var(--color-success)}.kpi-change.down{color:var(--color-error)}.kpi-change.neutral{color:var(--color-text-muted)}.kpi-sub-warn{color:var(--color-error)!important;font-weight:600!important}.page-header{display:flex;align-items:flex-start;justify-content:space-between;margin-bottom:24px;gap:14px;flex-wrap:wrap}.page-title{font-size:22px;font-weight:700;margin:0;color:var(--color-text);letter-spacing:-.02em}.page-subtitle{font-size:13px;color:var(--color-text-muted);margin-top:3px}.app-sidebar-section-label{font-size:10px;font-weight:700;letter-spacing:1.4px;text-transform:uppercase;color:var(--color-text-light);padding:14px 10px 4px;pointer-events:none;user-select:none}.dropdown-menu{position:absolute;top:100%;left:0;min-width:200px;background:var(--color-white);border:1px solid var(--color-border);border-radius:var(--radius-lg);z-index:var(--z-dropdown);margin-top:4px;box-shadow:none}.dropdown-item{display:block;padding:7px 14px;font-size:var(--text-sm);color:var(--color-text);cursor:pointer;transition:background var(--transition-fast)}.dropdown-item:hover{background:var(--color-surface-2)}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes slideUp{0%{transform:translateY(8px);opacity:0}to{transform:none;opacity:1}}@keyframes slideInRight{0%{transform:translate(14px);opacity:0}to{transform:none;opacity:1}}@keyframes shimmer{to{background-position:-200% 0}}::-webkit-scrollbar{width:4px;height:4px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:var(--color-divider);border-radius:99px}::-webkit-scrollbar-thumb:hover{background:var(--color-border-hover)}::selection{background:#0d94882e;color:var(--color-text)}[data-theme=dark]{--color-bg: #1c1c1e;--color-white: #2c2c2e;--color-surface: #2c2c2e;--color-surface-2: #3a3a3c;--color-surface-light: #444446;--color-border: rgba(255,255,255,.09);--color-border-light: rgba(255,255,255,.06);--color-border-hover: rgba(139,174,224,.45);--color-divider: rgba(255,255,255,.1);--color-text: #f5f5f7;--color-text-secondary:#d1d1d6;--color-text-muted: #aeaeb2;--color-text-light: #636366;--color-text-inverse: #1c1c1e;--color-primary: #8baee0;--color-primary-dark: #6b90c8;--color-primary-faint: rgba(139,174,224,.14);--color-teal: #16ad93;--color-teal-dark: #128a74;--color-teal-faint: rgba(22,173,147,.12);--color-success: #32d74b;--color-success-light: rgba(50,215,75,.13);--color-success-border:rgba(50,215,75,.3);--color-warning: #ff9f0a;--color-warning-light: rgba(255,159,10,.12);--color-warning-border:rgba(255,159,10,.3);--color-warning-text: #ffb454;--color-error: #ff453a;--color-error-light: rgba(255,69,58,.11);--color-error-border: rgba(255,69,58,.3);--color-error-text: #ff8a80;--color-info: #0a84ff;--color-info-light: rgba(10,132,255,.12);--color-info-border: rgba(10,132,255,.28);--shadow-xs: none;--shadow-sm: none;--shadow-base: none;--shadow-md: none;--shadow-lg: none}[data-theme=dark] input,[data-theme=dark] textarea,[data-theme=dark] select{background:#2c2c2e;color:#f5f5f7;border-color:#ffffff17}[data-theme=dark] input::placeholder,[data-theme=dark] textarea::placeholder{color:#636366}[data-theme=dark] select{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 24 24' fill='none' stroke='%23aeaeb2' stroke-width='2.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='6 9 12 15 18 9'/%3E%3C/svg%3E")}[data-theme=dark] input:hover,[data-theme=dark] textarea:hover,[data-theme=dark] select:hover{border-color:#ffffff2e}[data-theme=dark] input:focus,[data-theme=dark] textarea:focus,[data-theme=dark] select:focus{border-color:#16ad93;box-shadow:none}[data-theme=dark] input:disabled,[data-theme=dark] select:disabled,[data-theme=dark] textarea:disabled{background:#1c1c1e;color:#636366}[data-theme=dark] .badge-success{background:#32d74b21;color:#6fe08a;border-color:#32d74b4d}[data-theme=dark] .badge-warning{background:#ff9f0a1f;color:#ffb454;border-color:#ff9f0a4d}[data-theme=dark] .badge-error{background:#ff453a1c;color:#ff8a80;border-color:#ff453a4d}[data-theme=dark] .badge-info{background:#0a84ff1f;color:#6cb4ff;border-color:#0a84ff47}[data-theme=dark] .badge-primary{background:#8baee024;color:#b7ccef}[data-theme=dark] .badge-teal{background:#16ad931f;color:#5eead0}[data-theme=dark] .stat-icon.stat-blue{background:#0a84ff24;color:#6cb4ff}[data-theme=dark] .stat-icon.stat-green{background:#32d74b21;color:#6fe08a}[data-theme=dark] .stat-icon.stat-amber{background:#ff9f0a21;color:#ffb454}[data-theme=dark] .stat-icon.stat-purple{background:#bf5af21f;color:#d9a8f5}[data-theme=dark] .stat-icon.stat-teal{background:#16ad931f;color:#5eead0}[data-theme=dark] .notification-success{background:#32d74b1a;border-color:#32d74b4d;color:#6fe08a}[data-theme=dark] .notification-error{background:#ff453a1a;border-color:#ff453a4d;color:#ff8a80}[data-theme=dark] .notification-warning{background:#ff9f0a1a;border-color:#ff9f0a4d;color:#ffb454}[data-theme=dark] .notification-info{background:#0a84ff1a;border-color:#0a84ff47;color:#6cb4ff}[data-theme=dark] ::-webkit-scrollbar-thumb{background:#3ecbb340}[data-theme=dark] ::-webkit-scrollbar-thumb:hover{background:#3ecbb366}[data-theme=dark] ::selection{background:#3ecbb340;color:#eaf8f4}[data-theme=dark] .app-header{background:#1c1c1e!important;border-bottom-color:#ffffff17!important}[data-theme=dark] .app-sidebar{background:#161618!important;border-right-color:#ffffff17!important}@media print{body{background:#fff;font-size:11px}.app-header,.app-sidebar,.btn,nav,.no-print{display:none!important}.app-main{margin:0!important;padding:8px!important}td,th{border:1px solid #ccc!important}}@media(max-width:768px){.form-row{grid-template-columns:1fr}.page-header{flex-direction:column;align-items:flex-start}.modal{width:100%;max-width:100%;border-radius:var(--radius-xl) var(--radius-xl) 0 0}.modal-overlay{align-items:flex-end;padding:0}.modal-header{padding:16px 18px 14px}.modal-body{padding:18px 18px 14px}.modal-footer{padding:12px 18px 24px}}:root{--surface: var(--color-white);--surface-2: var(--color-surface-2);--surface-3: var(--color-surface-light);--border-2: var(--color-border-hover);--t1: var(--color-text);--t2: var(--color-text-secondary);--t3: var(--color-text-muted);--t4: var(--color-text-light);--brand: var(--color-primary);--brand-dk: var(--color-primary-dark);--brand-teal: var(--color-teal);--brand-teal-dk: var(--color-teal-dark);--brand-teal-lt: var(--color-teal-faint);--radius: var(--radius-lg);--danger: var(--color-error);--danger-bg: var(--color-error-light);--danger-border: var(--color-error-border)}[data-theme=dark]{--surface: var(--color-white);--surface-2: var(--color-surface-2);--surface-3: var(--color-surface-light)}.app-header{position:fixed;top:0;left:0;right:0;height:var(--header-height);z-index:var(--z-sticky);background:var(--color-white);border-bottom:1px solid var(--color-border);display:flex;align-items:center;padding:0 16px 0 0;overflow:visible}#hamburger-zone{width:var(--sidebar-rail-width);flex-shrink:0;display:none;align-items:center;justify-content:center;height:var(--header-height)}.app-header-logo-zone{width:var(--sidebar-width);min-width:var(--sidebar-width);flex-shrink:0;display:flex;align-items:center;padding-left:18px;height:var(--header-height)}.app-header-logo-zone .app-logo-text{white-space:nowrap}.app-header-content{display:flex;align-items:center;justify-content:space-between;flex:1;max-width:1600px;padding-left:20px}@media(max-width:768px){.app-header-logo-zone{width:auto;min-width:0;padding-left:0}.app-header-content{padding-left:4px}}.app-logo{display:flex;align-items:center;text-decoration:none!important;flex-shrink:0}.app-logo-text{display:flex;flex-direction:column;line-height:1.15}.brand-name{font-size:14px;font-weight:700;letter-spacing:-.03em;font-family:var(--font-family)}.brand-name .n1{color:var(--color-primary)}.brand-name .n2{color:var(--color-teal)}.ecm-n1{color:var(--color-primary)}.ecm-n2{color:var(--color-teal)}.brand-sub{font-size:8.5px;font-weight:500;letter-spacing:.03em;color:var(--color-text-light);opacity:.8}.app-header-actions{display:flex;align-items:center;gap:5px}.app-header-actions button svg{width:14px;height:14px}#theme-toggle{width:32px;height:32px;display:flex;align-items:center;justify-content:center;border-radius:8px;border:1px solid transparent;background:transparent;cursor:pointer;color:var(--color-text-muted);padding:0;transition:color .15s}#theme-toggle:hover{background:none;border-color:transparent;color:var(--color-text)}#theme-toggle:focus,#theme-toggle:focus-visible,#theme-toggle:active{background:none!important;outline:none;box-shadow:none;border-color:transparent}#theme-toggle svg{width:15px;height:15px;display:block}#theme-toggle.tt-pop{animation:none}[data-theme=dark] #theme-toggle:hover{background:none;border-color:transparent;color:#f5f5f7}#hamburger{display:flex;flex-direction:column;justify-content:center;align-items:center;width:34px;height:34px;background:none;border:none;cursor:pointer;gap:6px;padding:6px;border-radius:var(--radius-lg);transition:background var(--transition-fast);flex-shrink:0}#hamburger:hover{background:var(--color-surface-2)}#hamburger span{display:block;width:18px;height:2px;background:var(--color-text);border-radius:99px;transition:transform .28s cubic-bezier(.4,0,.2,1),opacity .2s ease,width .2s ease;transform-origin:center}#hamburger.open span:nth-child(1){transform:translateY(8px) rotate(45deg)}#hamburger.open span:nth-child(2){opacity:0;width:0}#hamburger.open span:nth-child(3){transform:translateY(-8px) rotate(-45deg)}#sidebar-desktop-toggle{display:none;align-items:center;justify-content:center;width:30px;height:30px;border-radius:7px;border:1px solid var(--color-border);background:var(--color-surface-2);cursor:pointer;color:var(--color-text-secondary);transition:color .14s ease,background .14s ease,border-color .14s ease;flex-shrink:0;-webkit-tap-highlight-color:transparent}#sidebar-desktop-toggle:hover,#sidebar-desktop-toggle:focus-visible{color:var(--color-text);background:var(--color-surface-light);border-color:var(--color-border-hover)}#sidebar-desktop-toggle:focus-visible{outline:2px solid var(--color-primary);outline-offset:2px}#sidebar-desktop-toggle svg{display:block;width:16px;height:16px}#sidebar-desktop-toggle .toggle-bar-left{opacity:1;transition:opacity .18s ease}body.sidebar-collapsed #sidebar-desktop-toggle .toggle-bar-left{opacity:.32}[data-theme=dark] #sidebar-desktop-toggle{color:#aeaeb2;background:#3a3a3c;border-color:#444446}[data-theme=dark] #sidebar-desktop-toggle:hover,[data-theme=dark] #sidebar-desktop-toggle:focus-visible{background:#444446;color:#f5f5f7;border-color:#8baee073}.app-sidebar-footer{display:flex;align-items:center;justify-content:space-between;padding:10px 14px;border-top:1px solid var(--color-border);margin-top:auto;flex-shrink:0;transition:padding .28s cubic-bezier(.4,0,.2,1)}.sidebar-footer-ai{overflow:hidden;transition:opacity .22s ease,max-width .28s cubic-bezier(.4,0,.2,1),margin .28s cubic-bezier(.4,0,.2,1);max-width:160px}body.sidebar-collapsed .sidebar-footer-ai{opacity:0;max-width:0;margin:0;pointer-events:none}body.sidebar-collapsed .app-sidebar-item{justify-content:center;padding:0;margin-bottom:4px;gap:0;width:100%;position:relative}body.sidebar-collapsed .app-sidebar-item svg{width:18px;height:18px;opacity:.7}#conflicts-badge{transition:width .2s cubic-bezier(.4,0,.2,1),height .2s cubic-bezier(.4,0,.2,1),padding .2s cubic-bezier(.4,0,.2,1),font-size .15s ease}body.sidebar-collapsed #conflicts-badge{position:absolute;top:8px;right:12px;margin-left:0;min-width:8px;width:8px;height:8px;padding:0;font-size:0;line-height:0;border-radius:50%}@media(max-width:768px){#hamburger-zone{display:flex!important}#sidebar-desktop-toggle{display:none!important}}.app-sidebar.sidebar-hover-open{width:var(--sidebar-width)!important;box-shadow:4px 0 24px #0f172a1a;z-index:calc(var(--z-fixed) + 1)}[data-theme=dark] .app-sidebar.sidebar-hover-open{box-shadow:4px 0 24px #00000059}#sidebar-overlay{display:none!important}.app-sidebar{position:fixed;left:0;top:var(--header-height);width:var(--sidebar-width);height:calc(100vh - var(--header-height));background:var(--color-white);border-right:1px solid var(--color-border);overflow-y:auto;overflow-x:hidden;z-index:var(--z-fixed);display:flex;flex-direction:column;transition:width .28s cubic-bezier(.4,0,.2,1),box-shadow .28s cubic-bezier(.4,0,.2,1);will-change:width;contain:layout style}.app-sidebar-nav{display:flex;flex-direction:column;padding:16px 8px 24px;flex:1}.app-sidebar-item{display:flex;align-items:center;justify-content:flex-start;gap:12px;height:48px;padding:0 14px;border-radius:8px;cursor:pointer;text-decoration:none;font-size:13.5px;font-weight:500;color:var(--color-text-secondary);background:transparent;margin-bottom:4px;white-space:nowrap;overflow:hidden;width:100%;box-sizing:border-box}.app-sidebar-item span{max-width:160px;transition:opacity .16s cubic-bezier(.4,0,.2,1) .14s}body.sidebar-collapsed .app-sidebar-item span{transition:opacity .1s ease}.app-sidebar-item svg{width:18px;height:18px;flex-shrink:0;opacity:.62;transition:opacity .12s,width .28s cubic-bezier(.4,0,.2,1),height .28s cubic-bezier(.4,0,.2,1)}.app-sidebar-item:hover{background:var(--color-surface-2);color:var(--color-text);text-decoration:none}.app-sidebar-item:hover svg{opacity:.9}.app-sidebar-item.active{background:var(--color-primary-faint);color:var(--color-primary);font-weight:600}.app-sidebar-item.active svg{opacity:1;color:var(--color-primary)}.app-main{margin-left:var(--sidebar-width);margin-top:var(--header-height);padding:28px 30px;min-height:calc(100vh - var(--header-height));background:var(--color-bg)}#notification-container{position:fixed;top:14px;right:14px;z-index:var(--z-notification);display:flex;flex-direction:column;gap:7px;pointer-events:none}[data-theme=dark] .app-header{background:#1c1c1e;border-color:#ffffff17}[data-theme=dark] .app-main{background:#1c1c1e}[data-theme=dark] .app-sidebar{background:#161618;border-color:#ffffff17}[data-theme=dark] .app-sidebar-item{color:#f5f5f7}[data-theme=dark] .app-sidebar-item svg{opacity:.65}[data-theme=dark] .app-sidebar-item:hover{background:#3a3a3c;color:#f5f5f7}[data-theme=dark] .app-sidebar-item:hover svg{opacity:1}[data-theme=dark] .app-sidebar-item.active{background:#8baee029;color:#f5f5f7;font-weight:600}[data-theme=dark] .app-sidebar-item.active svg{opacity:1;color:#8baee0}[data-theme=dark] .card{background:#2c2c2e;border-color:#ffffff17}[data-theme=dark] .card:hover{border-color:#8baee073}[data-theme=dark] .card-header,[data-theme=dark] .card-footer{border-color:#ffffff14}[data-theme=dark] .stat-card{background:#2c2c2e;border-color:#ffffff17}[data-theme=dark] .stat-card:hover{border-color:#8baee073}[data-theme=dark] .kpi-card{background:var(--color-surface);border-color:var(--color-border)}[data-theme=dark] .kpi-card:hover{border-color:var(--color-border-hover);background:var(--color-surface)}[data-theme=dark] .kpi-card-hd{background:#ffffff08;border-bottom-color:var(--color-border)}[data-theme=dark] .kpi-val{color:#f5f5f7}[data-theme=dark] .kpi-label{color:var(--color-text-muted)}[data-theme=dark] .kpi-icon{background:none!important;color:#aeaeb2;border:none}[data-theme=dark] .kpi-card:hover .kpi-icon{filter:none}[data-theme=dark] .kpi-card:hover .kpi-label{color:var(--color-text)}[data-theme=dark] .stat-value{color:#f5f5f7}[data-theme=dark] .stat-label{color:#d1d1d6}[data-theme=dark] .modal{background:#2c2c2e;border-color:#ffffff17}[data-theme=dark] .modal-header,[data-theme=dark] .modal-footer{border-color:#ffffff14}[data-theme=dark] .modal-overlay{background:#000000b3}[data-theme=dark] .modal-close:hover{background:#ff453a1a;color:#ff453a}[data-theme=dark] .modal-title{color:#f5f5f7}[data-theme=dark] .btn-secondary{background:#3a3a3c;border-color:#ffffff17;color:#f5f5f7}[data-theme=dark] .btn-secondary:hover{background:#444446;border-color:#8baee073;color:#f5f5f7}[data-theme=dark] .btn-ghost{color:#d1d1d6}[data-theme=dark] .btn-ghost:hover{background:#3a3a3c;color:#f5f5f7}[data-theme=dark] .btn-primary{background:#254c88;color:#fff}[data-theme=dark] .btn-primary:hover{background:#1c3b6b}[data-theme=dark] .btn-teal{background:#0f6b5c;color:#fff;border-radius:var(--radius-full)}[data-theme=dark] .btn-teal:hover{background:#0d5247}[data-theme=dark] .btn-danger{background:#d70015;color:#fff}[data-theme=dark] .btn-danger:hover{background:#a30010}[data-theme=dark] .dropdown-menu{background:#2c2c2e;border-color:#ffffff17;box-shadow:none}[data-theme=dark] .dropdown-item{color:#f5f5f7}[data-theme=dark] .dropdown-item:hover{background:#3a3a3c;color:#f5f5f7}[data-theme=dark] #hamburger span{background:#f5f5f7}[data-theme=dark] .brand-name .n1{color:#fff}[data-theme=dark] .brand-name .n2{color:#16ad93}[data-theme=dark] .ecm-n1{color:#fff}[data-theme=dark] .ecm-n2{color:#16ad93}[data-theme=dark] .app-logo-img{border:none}[data-theme=dark] .brand-sub{color:#636366}[data-theme=dark] .app-header-actions button{color:#aeaeb2}[data-theme=dark] .app-header-actions button:hover,[data-theme=dark] .empty-state h3{color:#f5f5f7}[data-theme=dark] .empty-state p{color:#d1d1d6}[data-theme=dark] .empty-state svg{color:#ffffff17}[data-theme=dark] .form-label{color:#d1d1d6}[data-theme=dark] .form-helper{color:#aeaeb2}[data-theme=dark] .form-error{color:#ff8a80}[data-theme=dark] .page-title{color:#f5f5f7}[data-theme=dark] .page-subtitle{color:#d1d1d6}[data-theme=dark] h1,[data-theme=dark] h2,[data-theme=dark] h3,[data-theme=dark] h4{color:#f5f5f7}[data-theme=dark] .notification{background:#2c2c2e;border-color:#ffffff17;color:#f5f5f7}[data-theme=dark] .tt-cell,[data-theme=dark] .tt-cell-empty{border-left-color:#ffffff12;border-top-color:#ffffff12}[data-theme=dark] .tt-cell:hover .tt-cell-inner{background:#8baee017!important}[data-theme=dark] .tt-cell:hover:after{border-color:#8baee040}[data-theme=dark] .tt-cell-subject{color:inherit}[data-theme=dark] .tt-cell-teacher{color:#aeaeb2;opacity:1;font-size:9px}[data-theme=dark] .tt-cell-room{background:#ffffff0d;border-color:#ffffff1a;color:#aeaeb2}[data-theme=dark] .tt-hdr-period{color:#d1d1d6}[data-theme=dark] .tt-hdr-time{color:#ffffff73}[data-theme=dark] .tt-cell-special .tt-cell-inner{opacity:1}[data-theme=dark] .tt-cell-special-name{opacity:1;font-weight:700;letter-spacing:.01em}[data-theme=dark] .tt-cell-special-sub{color:#aeaeb2;opacity:1}[data-theme=dark] .tt-wrap{border-color:#ffffff12;box-shadow:0 0 0 1px #ffffff12}.tt-legend{display:flex;flex-wrap:wrap;gap:6px;margin-top:14px;padding-top:14px;border-top:1px solid var(--color-border)}.tt-legend-item{display:inline-flex;align-items:center;gap:5px;font-size:10px;font-weight:600;color:var(--color-text-secondary);padding:3px 8px;border-radius:99px;border:1px solid var(--color-border);background:var(--color-surface-2)}.tt-legend-dot{width:8px;height:8px;border-radius:50%;flex-shrink:0}[data-theme=dark] .tt-legend{border-top-color:#ffffff1a}[data-theme=dark] .tt-legend-item{color:#d1d1d6;border-color:#ffffff1a;background:#3a3a3c}@media(max-width:768px){#hamburger{display:flex}.app-sidebar{top:0;width:min(300px,85vw);transition:transform .26s cubic-bezier(.25,.46,.45,.94);will-change:transform}.app-sidebar.open{transform:translate(0)}.app-main{margin-left:0;padding:16px 14px}.stats-grid{grid-template-columns:1fr 1fr}.table-wrap{overflow-x:auto;-webkit-overflow-scrolling:touch}.timetable th,.timetable td{min-width:90px;padding:6px 4px;font-size:10px}.page-header{flex-direction:column;align-items:flex-start;gap:10px}.page-header .btn{width:100%;justify-content:center}}@media(max-width:480px){.stats-grid{grid-template-columns:1fr 1fr}.app-main{padding:12px 10px}.modal{border-radius:var(--radius-xl) var(--radius-xl) 0 0}}.tt-wrap{border:1px solid var(--color-border);border-radius:10px;overflow:hidden}.tt-table{width:100%;border-collapse:collapse;min-width:700px;table-layout:fixed;font-family:var(--font-family)}.tt-hdr-row th{background:var(--tt-primary, #1a3a6b);color:#fff;padding:10px 6px;font-size:10px;font-weight:700;text-align:center;letter-spacing:.04em;text-transform:uppercase;border-left:1px solid rgba(255,255,255,.1);white-space:normal;word-break:break-word;position:sticky;top:0;z-index:8;vertical-align:middle}.tt-hdr-row th:first-child{border-left:none;position:sticky;left:0;z-index:12;min-width:52px;width:52px;border-right:1px solid rgba(255,255,255,.15)}.tt-hdr-period{font-size:11px;font-weight:700;line-height:1.3}.tt-hdr-time{font-size:9px;font-weight:400;opacity:.7;margin-top:2px;white-space:nowrap}.tt-day-cell{position:sticky;left:0;z-index:5;background:var(--tt-primary, #1a3a6b);color:#fff;font-size:11px;font-weight:800;text-transform:uppercase;letter-spacing:.08em;text-align:center;padding:0;width:52px;min-width:52px;border-right:1px solid rgba(255,255,255,.15);border-top:1px solid rgba(255,255,255,.08);vertical-align:middle}.tt-day-inner{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;padding:6px 4px;min-height:80px}.tt-day-abbr{font-size:10px;font-weight:800;letter-spacing:.06em;text-transform:uppercase}.tt-day-full{display:none}.tt-cell{padding:0;border-left:1px solid var(--color-border-light);border-top:1px solid var(--color-border-light);min-width:100px;vertical-align:middle;cursor:pointer;transition:background .12s;position:relative}.tt-cell:hover .tt-cell-inner{background:var(--color-primary-faint)!important}.tt-cell:after{content:"";position:absolute;inset:0;border:1.5px solid transparent;pointer-events:none;transition:border-color .12s}.tt-cell:hover:after{border-color:var(--color-primary-faint)}tr[data-row=even] .tt-cell{background:var(--color-white)}tr[data-row=odd] .tt-cell{background:var(--color-surface-2)}.tt-cell-inner{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;padding:8px 5px;min-height:80px;height:100%;box-sizing:border-box;transition:background .12s}.tt-cell-subject{font-size:11px;font-weight:700;color:var(--color-primary);line-height:1.35;text-align:center;word-break:break-word;overflow-wrap:break-word;white-space:normal;width:100%}.tt-cell-teacher{font-size:9px;font-weight:400;color:var(--color-text-muted);line-height:1.2;white-space:normal;word-break:break-word;text-align:center;width:100%}.tt-cell-room{display:inline-flex;align-items:center;font-size:9px;font-weight:600;color:var(--color-text-muted);background:var(--color-surface-2);border:1px solid var(--color-border);border-radius:99px;padding:1px 7px;margin-top:2px;line-height:1.4;letter-spacing:.01em}.tt-cell-special{border-left:2px solid;background:transparent!important;cursor:default}.tt-cell-special .tt-cell-inner{min-height:80px}.tt-cell-special-name{font-size:11px;font-weight:700;text-align:center;line-height:1.3}.tt-cell-special-sub{font-size:9px;opacity:.7;text-align:center}.tt-cell-empty{border-left:1px solid var(--color-border-light);border-top:1px solid var(--color-border-light);min-width:110px}.tt-theme-bar{margin-bottom:14px;padding:10px 14px;background:var(--color-surface-2);border:1px solid var(--color-border);border-radius:9px}.tt-theme-bar-top{display:flex;align-items:center;justify-content:space-between}.tt-theme-bar-toggle{cursor:pointer;user-select:none}.tt-theme-bar-toggle:hover .tt-theme-label{color:var(--color-text-secondary)}.tt-theme-bar-toggle:hover .tt-theme-hint{opacity:1}.tt-theme-bar-toggle:focus-visible{outline:2px solid var(--color-primary);outline-offset:2px;border-radius:6px}.tt-theme-label{font-size:10px;font-weight:700;letter-spacing:.07em;text-transform:uppercase;color:var(--color-text-muted);display:flex;align-items:center}.tt-theme-hint{font-size:10px;font-weight:600;color:var(--color-text-muted);opacity:0;letter-spacing:.03em}.tt-theme-active-name{font-size:11px;font-weight:600;border-radius:99px;padding:2px 10px;border:1px solid}.tt-theme-chevron{display:flex;align-items:center;color:var(--color-text-muted)}.tt-theme-chevron--open{transform:rotate(180deg)}.tt-theme-swatches{display:flex;flex-wrap:wrap;gap:6px;margin-top:10px}.tt-theme-swatches--hidden{visibility:hidden;height:0;margin-top:0;overflow:hidden}.tt-theme-swatch{display:flex;align-items:center;gap:6px;padding:5px 12px 5px 8px;border-radius:7px;border:1px solid var(--color-border);background:var(--color-white);cursor:pointer;font-family:var(--font-family);white-space:nowrap;flex-shrink:0;box-shadow:none;outline:none}.tt-theme-swatch:hover{border-color:var(--color-border-hover);background:var(--color-surface-2)}.tt-theme-swatch.active{border-width:2px}.tt-swatch-lbl{font-size:11px;font-weight:500;color:var(--color-text-secondary)}.tt-theme-swatch.active .tt-swatch-lbl{font-weight:600}.tt-swatch-check{font-size:10px;font-weight:700;margin-left:2px}.tt-theme-dot{width:14px;height:14px;border-radius:50%;flex-shrink:0;box-shadow:none;border:1px solid rgba(0,0,0,.08)}.plain-swatch{border-style:dashed}.plain-swatch.active{border-style:solid}.tt-swatch-plain-preview{display:flex;flex-direction:column;gap:2px;width:14px;flex-shrink:0}.tt-swatch-line{display:block;height:3px;border-radius:1px;width:100%}.tt-swatch-edit{display:flex;align-items:center;justify-content:center;margin-left:2px;color:var(--color-text-muted);flex-shrink:0}.tt-swatch-edit:hover{color:var(--color-primary)}[data-theme=dark] .tt-theme-bar{background:#2c2c2e;border-color:#ffffff1a}[data-theme=dark] .tt-theme-label,[data-theme=dark] .tt-theme-hint,[data-theme=dark] .tt-theme-chevron{color:#aeaeb2}[data-theme=dark] .tt-theme-active-name{border-color:#8baee073!important}[data-theme=dark] .tt-theme-swatch{background:#3a3a3c;border-color:#ffffff1a}[data-theme=dark] .tt-theme-swatch:hover{border-color:#8baee073;background:#444446}[data-theme=dark] .tt-theme-swatch.active{border-width:2px}[data-theme=dark] .tt-theme-dot{border-color:#ffffff1a}[data-theme=dark] .tt-swatch-lbl{color:#d1d1d6}[data-theme=dark] .tt-theme-swatch.active .tt-swatch-lbl{color:#f5f5f7;font-weight:600}[data-theme=dark] .plain-swatch{border-color:#8baee073}table tr:hover td{background:var(--color-surface-2)}[data-theme=dark] table tr:hover td{background:#3a3a3c}.conflict-item:hover{border-color:var(--color-primary)!important;background:var(--color-surface-2)!important}[data-theme=dark] .conflict-item:hover{border-color:var(--color-primary)!important;background:#3a3a3c!important}.form-input{border-radius:10px;height:clamp(42px,6.5vh,52px);font-size:.875rem;background:#fff;border:1.5px solid #d4e8e6;color:#071830;transition:border-color .18s;font-family:Inter,system-ui,sans-serif;box-shadow:none;padding:0 .75rem;-webkit-appearance:none;appearance:none}.form-input:focus{border-color:#0d9488;border-radius:10px;outline:none;box-shadow:none;-webkit-appearance:none}.l-panel-inner .form-input:focus{border-color:#0d9488;background:#fff;box-shadow:none;outline:none}.l-panel-inner .form-input::placeholder{color:#b0bec5;font-size:.78rem;font-weight:400;opacity:1;transition:opacity .15s ease}.l-panel-inner .form-input:focus::placeholder{opacity:0}.l-panel-inner .form-input:-webkit-autofill,.l-panel-inner .form-input:-webkit-autofill:hover,.l-panel-inner .form-input:-webkit-autofill:focus{-webkit-box-shadow:0 0 0 1000px rgba(13,148,136,.06) inset!important;box-shadow:0 0 0 1000px #0d94880f inset!important;-webkit-text-fill-color:#071830!important;border-color:#0d9488!important;transition:background-color 5000s ease-in-out 0s}.dg-input:-webkit-autofill,.dg-input:-webkit-autofill:hover,.dg-input:-webkit-autofill:focus{-webkit-box-shadow:0 0 0 1000px rgba(13,148,136,.06) inset!important;box-shadow:0 0 0 1000px #0d94880f inset!important;-webkit-text-fill-color:#071830!important;border-color:#0d9488!important;transition:background-color 5000s ease-in-out 0s}.l-panel-inner .form-err.form-shake{animation:formShake .45s cubic-bezier(.36,.07,.19,.97)}#auth-mfa .mfa-otp-box{flex:1;min-width:0;height:54px;text-align:center;font-size:1.5rem;font-weight:700;border:2px solid var(--border-2);border-radius:10px;background:var(--surface-2);color:var(--t1);transition:border-color .15s,background .15s;caret-color:transparent}#auth-mfa .mfa-otp-box:focus{outline:none;border-color:var(--brand);background:var(--surface)}#auth-mfa .mfa-otp-box.filled{border-color:var(--brand-teal);background:var(--brand-teal-lt)}.l-panel-inner .fi-wrap:focus-within .fi-icon{color:#0d9488}.l-panel-inner .form-label{font-size:.7rem;font-weight:600;color:var(--t2);margin-bottom:.4rem;letter-spacing:.02em;font-family:Inter,sans-serif;text-transform:uppercase}.pw-toggle{position:absolute;right:.5rem;top:50%;transform:translateY(-50%);width:36px;height:36px;padding:0;flex-shrink:0;background:none;border:none;border-radius:8px;color:#9ca3af;cursor:pointer;z-index:10;display:flex;align-items:center;justify-content:center;touch-action:manipulation;-webkit-tap-highlight-color:transparent;user-select:none;transition:background .15s,color .15s,opacity .1s}.pw-toggle:hover{background:#0d948814;color:#0d9488}.pw-toggle:active{opacity:.55}.pw-toggle .eye-on,.pw-toggle .eye-off{position:absolute;width:16px;height:16px;pointer-events:none;flex-shrink:0;transition:opacity .18s ease;display:block!important}.pw-toggle .eye-on{opacity:1}.pw-toggle .eye-off,.pw-toggle.pw-shown .eye-on{opacity:0}.pw-toggle.pw-shown .eye-off{opacity:1}.l-btn-primary{width:100%;height:clamp(44px,6.5vh,54px);display:flex;align-items:center;justify-content:center;gap:.6rem;margin-top:.5rem;background:linear-gradient(135deg,#0d9488,#0a7a70);color:#fff;border:none;border-radius:10px;font-size:.9rem;font-weight:600;letter-spacing:.01em;cursor:pointer;transition:background .15s,transform .08s cubic-bezier(.2,0,.4,1);touch-action:manipulation;-webkit-tap-highlight-color:transparent;font-family:Inter,system-ui,sans-serif;position:relative;overflow:hidden}.l-btn-primary:after{content:"";position:absolute;inset:0;background:linear-gradient(135deg,rgba(255,255,255,.08) 0%,transparent 55%);pointer-events:none}.l-btn-primary:hover:not(:disabled){background:linear-gradient(135deg,#0f9e91,#0a7a70)}.l-btn-primary:active:not(:disabled){transform:scale(.98)}.l-btn-primary:disabled{opacity:.5;cursor:not-allowed}.l-btn-primary svg{flex-shrink:0;transition:transform .22s}.l-btn-primary:hover:not(:disabled) svg{transform:translate(4px)}.l-btn-outline{width:100%;height:clamp(40px,6vh,48px);display:flex;align-items:center;justify-content:center;gap:.55rem;background:transparent;border:1.5px solid #b0ccc9;border-radius:10px;font-size:.86rem;font-weight:500;color:#0a2040;cursor:pointer;transition:border-color .18s,background .18s,color .18s;touch-action:manipulation;font-family:Inter,system-ui,sans-serif}.l-btn-outline svg{width:14px;height:14px;flex-shrink:0}.l-btn-outline:hover{border-color:#0d9488;background:#0d94880d;color:#0d9488}.l-btn-demo{width:100%;height:clamp(38px,5.5vh,46px);display:flex;align-items:center;justify-content:center;gap:.55rem;background:#0d948817;border:1.5px solid rgba(13,148,136,.32);border-radius:10px;font-size:.84rem;font-weight:500;color:#0d9488;cursor:pointer;transition:background .18s,border-color .18s;touch-action:manipulation;font-family:Inter,sans-serif;margin-top:.75rem}.l-btn-demo svg{flex-shrink:0;color:#0d9488}.l-demo{display:flex;align-items:center;gap:.52rem;background:#0d94880d;border:1px solid rgba(13,148,136,.15);border-radius:10px;padding:.65rem .9rem;font-size:.72rem;color:#4a7a76;margin-top:1rem;font-family:Inter,sans-serif}.l-demo svg{flex-shrink:0;color:#0d9488}.l-demo strong{color:#071830}.l-divider{display:flex;align-items:center;gap:.75rem;margin:clamp(.6rem,2vh,1.4rem) 0}.l-divider:before{content:"";flex:1;height:1px;background:linear-gradient(to right,transparent 0%,#d4e8e6 100%)}.l-divider:after{content:"";flex:1;height:1px;background:linear-gradient(to left,transparent 0%,#d4e8e6 100%)}.l-divider span{font-size:.68rem;color:#6b7280;white-space:nowrap;font-weight:500;font-family:Inter,sans-serif}select.form-input,select.filter-select{position:absolute!important;width:1px!important;height:1px!important;padding:0!important;margin:-1px!important;overflow:hidden!important;clip:rect(0,0,0,0)!important;white-space:nowrap!important;border:0!important;pointer-events:none!important}.edu-sel-wrap{position:relative;display:inline-flex;width:auto}.form-field .edu-sel-wrap,.form-group .edu-sel-wrap{width:100%;display:flex}.filter-row .edu-sel-wrap{flex:1 1 140px;min-width:120px;max-width:220px;display:flex}.edu-sel-trigger{flex:1;width:100%;display:flex;align-items:center;gap:.55rem;padding:0 .875rem;background:var(--surface);border:1.5px solid var(--border-2);border-radius:var(--radius);cursor:pointer;user-select:none;font-family:inherit;font-size:.85rem;color:var(--t1);text-align:left;transition:border-color .16s,background .16s,box-shadow .16s;box-sizing:border-box;outline:none;-webkit-tap-highlight-color:transparent;touch-action:manipulation;min-height:42px}.filter-row .edu-sel-trigger,.edu-sel-wrap.edu-sel--filter .edu-sel-trigger{min-height:38px;font-size:.82rem}.edu-sel-trigger:hover:not(:disabled):not(.edu-sel--open){border-color:var(--brand)}.edu-sel-trigger.edu-sel--open{border-color:var(--brand-teal);background:var(--surface);outline:none;box-shadow:none}.edu-sel-trigger:focus-visible{border-color:var(--brand-teal);outline:none;box-shadow:none}.edu-sel-trigger:disabled{opacity:.55;cursor:not-allowed}.edu-sel-wrap.edu-sel--error .edu-sel-trigger{border-color:var(--danger)}.edu-sel-icon{color:var(--t4);flex-shrink:0;pointer-events:none;transition:color .16s;width:14px;height:14px;display:flex;align-items:center;justify-content:center}.edu-sel-trigger.edu-sel--open .edu-sel-icon{color:var(--brand-teal)}.edu-sel-label{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--t1)}.edu-sel-label.edu-sel--placeholder{color:var(--t4);font-weight:400}.edu-sel-chevron{flex-shrink:0;color:var(--t4);transition:transform .2s cubic-bezier(.22,1,.36,1),color .16s;pointer-events:none;width:14px;height:14px}.edu-sel-trigger.edu-sel--open .edu-sel-chevron{transform:rotate(180deg);color:var(--brand-teal)}.edu-sel-panel{position:fixed;background:var(--surface);border:1px solid var(--border);border-radius:12px;box-shadow:0 0 0 1px #0718300a,0 4px 10px #07183012,0 14px 36px #07183021;z-index:9200;overflow:hidden;display:none;min-width:180px}.edu-sel-panel.edu-sel--visible{display:block;animation:eduSelIn .14s cubic-bezier(.22,1,.36,1) both}.edu-sel-panel.edu-sel--up{animation:eduSelInUp .14s cubic-bezier(.22,1,.36,1) both}@keyframes eduSelIn{0%{opacity:0;transform:translateY(-5px) scale(.98)}to{opacity:1;transform:translateY(0) scale(1)}}@keyframes eduSelInUp{0%{opacity:0;transform:translateY(5px) scale(.98)}to{opacity:1;transform:translateY(0) scale(1)}}.edu-sel-search-row{display:flex;align-items:center;gap:.45rem;padding:.6rem .85rem;border-bottom:1px solid var(--border);background:var(--surface-2)}.edu-sel-search-ic{color:var(--t4);flex-shrink:0;pointer-events:none}.edu-sel-search-input{flex:1;border:none;outline:none;background:none;font-size:.82rem;color:var(--t1);font-family:inherit;letter-spacing:.01em}.edu-sel-search-input::placeholder{color:var(--t4)}.edu-sel-list{max-height:220px;overflow-y:auto;padding:.3rem 0;overscroll-behavior:contain}.edu-sel-list::-webkit-scrollbar{width:4px}.edu-sel-list::-webkit-scrollbar-track{background:transparent}.edu-sel-list::-webkit-scrollbar-thumb{background:var(--border-2);border-radius:4px}.edu-sel-option{display:flex;align-items:center;gap:.55rem;padding:.56rem .85rem;font-size:.825rem;font-weight:400;color:var(--t2);cursor:pointer;transition:background .08s;border-left:2.5px solid transparent;user-select:none;-webkit-tap-highlight-color:transparent}.edu-sel-option:hover{background:var(--brand-teal-lt);color:var(--brand-teal);border-left-color:var(--brand-teal)}.edu-sel-option.edu-sel--selected{background:var(--brand-teal-lt);color:var(--brand-teal);font-weight:600;border-left-color:var(--brand-teal)}.edu-sel-option.edu-sel--focused{background:var(--brand-teal-lt);color:var(--brand-teal);border-left-color:var(--brand-teal)}.edu-sel-option[aria-disabled=true]{opacity:.45;cursor:default;pointer-events:none}.edu-sel-empty{padding:1.2rem;text-align:center;font-size:.75rem;color:var(--t4);line-height:1.6}.l-panel-inner .edu-sel-trigger{border-radius:10px;min-height:clamp(42px,6.5vh,52px);font-size:.875rem;background:#fff;border:1.5px solid #d4e8e6;color:#071830}.l-panel-inner .edu-sel-trigger.edu-sel--open,.l-panel-inner .edu-sel-trigger:focus-visible{border-color:#0d9488;box-shadow:none}@media(max-width:768px){.ge-selectors .edu-sel-wrap{width:100%}.ge-selectors .edu-sel-trigger{min-height:44px}}@media(max-width:520px){.filter-row .edu-sel-wrap{flex:1 1 calc(50% - .2rem);min-width:0}}[data-theme=dark] .edu-sel-option{color:var(--t2)!important}[data-theme=dark] .form-input:focus{border-color:var(--brand-teal)!important}[data-theme=dark] .form-input:hover:not(:focus):not(:disabled){border-color:#16ad9366!important}[data-theme=dark] .edu-sel-panel{background:var(--color-white);border-color:var(--color-border)}[data-theme=dark] .edu-sel-trigger{background:var(--color-white);border-color:var(--color-border);color:var(--color-text)}[data-theme=dark] .edu-sel-search-row{background:var(--color-surface-2);border-color:var(--color-border)}[data-theme=dark] .edu-sel-search-input{color:var(--color-text)}@media(max-width:600px){.page-header{flex-direction:column;align-items:stretch;gap:10px;margin-bottom:16px}.page-header>div{flex:1}.page-header>button,.page-header>a.btn{width:100%;justify-content:center;min-height:44px;font-size:14px}.card-body>div[style*="display:flex"][style*=flex-wrap]{flex-direction:column!important;align-items:stretch!important}.card-body>div[style*="display:flex"][style*=flex-wrap]>div,.card-body>div[style*="display:flex"][style*=flex-wrap]>button{width:100%!important;min-width:0!important;flex:unset!important}.card-body>div[style*="display:flex"][style*=flex-wrap]>button{min-height:44px;font-size:14px}.card>div[style*=overflow-x]{overflow-x:unset!important}.card table{border-collapse:collapse;width:100%}.card table thead{display:none}.card table tbody{display:flex;flex-direction:column;gap:0}.card table tbody tr{display:flex;flex-direction:column;padding:12px 14px;border-bottom:1px solid var(--color-border)!important;gap:4px;position:relative}.card table tbody tr:last-child{border-bottom:none!important}.card table tbody td{display:block!important;width:100%!important;padding:1px 0!important;border:none!important;font-size:13px;max-width:unset!important;text-align:left!important}.card table tbody td:first-child{font-size:14px!important;font-weight:700!important;color:var(--color-text)!important;margin-bottom:4px;padding-right:70px!important}.card table tbody td:not(:first-child):not(:last-child){color:var(--color-text-muted);font-size:12px!important;line-height:1.5}.card table tbody td:last-child{position:absolute!important;top:10px;right:10px;width:auto!important;padding:0!important}.card table tbody td:last-child>div{flex-direction:row!important;gap:2px!important;justify-content:flex-end!important}.card table tbody td:last-child button{width:34px!important;height:34px!important;padding:0!important;border-radius:8px!important;display:flex!important;align-items:center!important;justify-content:center!important;background:var(--color-surface-2)!important;border:1px solid var(--color-border)!important}.card table tbody td:last-child button:active{opacity:.6}.card table tbody td .badge{display:inline-flex}div[style*="padding:10px 0;border-bottom"]{padding:11px 0!important;gap:10px}div[style*="justify-content:space-between"][style*="flex-wrap:wrap"]{flex-wrap:wrap!important;gap:8px!important}.card-header{display:flex!important;align-items:center!important;justify-content:space-between!important;gap:8px!important;padding:12px 14px!important;flex-wrap:wrap}.card-header .card-title{font-size:13px!important}.card table tbody td>div[style*="justify-content:center"]{justify-content:flex-start!important;gap:8px}.empty-state{padding:36px 20px}.empty-state h3{font-size:15px}.empty-state p{font-size:13px}.empty-state br{display:none}.page-title{font-size:18px!important}.card-body>div[style*="display:flex"][style*="align-items:flex-end"]{flex-direction:column!important;align-items:stretch!important;gap:12px!important}.card-body>div[style*="display:flex"][style*="align-items:flex-end"]>div{width:100%!important;min-width:0!important;flex:unset!important}#btn-load-classes,#btn-load-level{width:100%!important;min-height:44px;margin-top:4px}}@media(max-width:768px){button[style*="background:none"]{min-width:36px;min-height:36px}}@media(max-width:600px){[data-theme=dark] .card table tbody td:last-child button{background:var(--color-surface-light)!important;border-color:var(--color-border)!important}}.slot-edit-modal{max-width:460px;width:100%;border-radius:12px;overflow:hidden;display:flex;flex-direction:column}.sem-header{display:flex;align-items:center;justify-content:space-between;padding:14px 18px 12px;border-bottom:1px solid var(--color-border);gap:10px;flex-shrink:0}.sem-header-left{display:flex;align-items:center;gap:10px;min-width:0;flex:1}.sem-day-badge{background:var(--color-primary);color:#fff;border-radius:6px;padding:5px 10px;font-size:11px;font-weight:700;letter-spacing:.07em;white-space:nowrap;flex-shrink:0}.sem-header-text{min-width:0}.sem-time{font-size:14px;font-weight:700;color:var(--color-text);line-height:1.25;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.sem-sep{color:var(--color-text-muted);font-weight:400}.sem-status{font-size:11px;color:var(--color-text-muted);margin-top:2px;line-height:1.3;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.sem-close{width:28px;height:28px;border-radius:6px;background:transparent;border:none;cursor:pointer;color:var(--color-text-muted);display:flex;align-items:center;justify-content:center;transition:background var(--transition-fast),color var(--transition-fast);flex-shrink:0}.sem-close:hover{background:var(--color-surface-2);color:var(--color-text)}.sem-body{padding:14px 18px 10px}.sem-section{margin-bottom:12px}.sem-section:last-child{margin-bottom:0}.sem-section--dimmed{opacity:.4;pointer-events:none;transition:opacity .2s ease}.sem-section-label{font-size:9.5px;font-weight:700;text-transform:uppercase;letter-spacing:.1em;color:var(--color-text-light);margin-bottom:7px;user-select:none}.sem-divider{height:1px;background:var(--color-border-light);margin:10px 0}.slot-subj-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:5px}.slot-subj-btn{display:flex;align-items:center;justify-content:center;padding:8px 10px;min-height:34px;border:1.5px solid var(--color-border);border-radius:7px;background:var(--color-white);color:var(--color-text-secondary);font-size:12px;font-weight:500;font-family:var(--font-family);line-height:1.3;text-align:center;cursor:pointer;transition:border-color .13s ease,background .13s ease,color .13s ease,transform 80ms ease;-webkit-tap-highlight-color:transparent;touch-action:manipulation;word-break:break-word}.slot-subj-btn:hover{border-color:var(--color-primary);color:var(--color-primary);background:var(--color-primary-faint)}.slot-subj-btn:active{transform:scale(.96)}.slot-subj-btn--active{background:var(--color-primary)!important;border-color:var(--color-primary)!important;color:#fff!important;font-weight:600}.slot-pills{display:flex;flex-wrap:wrap;gap:5px;line-height:1}.slot-pill{border:1.5px solid var(--color-border);border-radius:9999px;padding:5px 12px;font-size:12px;font-weight:500;font-family:var(--font-family);cursor:pointer;transition:border-color .15s ease,background .15s ease,color .15s ease,transform 80ms ease;background:var(--color-white);color:var(--color-text-secondary);line-height:1.4;user-select:none;-webkit-tap-highlight-color:transparent;touch-action:manipulation;white-space:nowrap}.slot-pill:hover{border-color:var(--color-primary);color:var(--color-primary);background:var(--color-primary-faint)}.slot-pill:active{transform:scale(.95)}.slot-pill--active{background:var(--color-primary)!important;border-color:var(--color-primary)!important;color:#fff!important;font-weight:600}.slot-pill--conflict{border-color:var(--color-warning-border)!important;color:var(--color-warning)!important;background:var(--color-warning-light)!important;position:relative}.slot-pill--conflict:after{content:"!";font-size:9px;font-weight:800;background:var(--color-warning);color:#fff;border-radius:99px;width:13px;height:13px;display:inline-flex;align-items:center;justify-content:center;margin-left:5px;vertical-align:middle;line-height:1}.slot-pills-empty,.slot-pills-noresult{font-size:12px;color:var(--color-text-light);font-style:italic;padding:2px 0}.slot-conflict-banner{display:flex;align-items:flex-start;gap:8px;padding:10px 12px;background:var(--color-warning-light);border:1px solid var(--color-warning-border);border-radius:7px;margin-bottom:14px;font-size:12px;color:var(--color-warning-text);line-height:1.45}.slot-conflict-banner svg{flex-shrink:0;margin-top:1px}.slot-conflict-banner.is-error{background:var(--color-error-light);border-color:var(--color-error-border);color:var(--color-error-text)}.sem-footer{display:flex;align-items:center;justify-content:space-between;padding:10px 18px;border-top:1px solid var(--color-border);gap:8px;flex-shrink:0}.sem-footer-actions{display:flex;gap:8px;margin-left:auto}.sem-remove-btn{display:inline-flex;align-items:center;gap:5px;padding:0 10px;height:34px;border-radius:6px;border:1px solid transparent;background:transparent;color:var(--color-error);font-size:13px;font-weight:500;font-family:var(--font-family);cursor:pointer;transition:background .15s ease,border-color .15s ease}.sem-remove-btn:hover{background:var(--color-error-light);border-color:var(--color-error-border)}[data-theme=dark] .sem-day-badge{background:#254c88}[data-theme=dark] .sem-time{color:#fff}[data-theme=dark] .sem-status{color:var(--color-text-muted)}[data-theme=dark] .slot-subj-btn{background:var(--color-surface-2);border-color:var(--color-border);color:var(--color-text-muted)}[data-theme=dark] .slot-subj-btn:hover{border-color:var(--color-primary);color:var(--color-primary);background:var(--color-primary-faint)}[data-theme=dark] .slot-subj-btn--active{background:#254c88!important;border-color:#254c88!important;color:#fff!important}[data-theme=dark] .slot-pill{background:var(--color-surface-2);border-color:var(--color-border);color:var(--color-text-muted)}[data-theme=dark] .slot-pill:hover{border-color:var(--color-primary);color:var(--color-primary);background:var(--color-primary-faint)}[data-theme=dark] .slot-pill--active{background:#254c88!important;border-color:#254c88!important;color:#fff!important}[data-theme=dark] .slot-pill--conflict{border-color:#ff9f0a66!important;color:var(--color-warning)!important;background:#ff9f0a1f!important}[data-theme=dark] .slot-conflict-banner{background:#ff9f0a1a;border-color:#ff9f0a4d;color:var(--color-warning-text)}[data-theme=dark] .slot-conflict-banner.is-error{background:#ff453a1a;border-color:#ff453a4d;color:var(--color-error-text)}[data-theme=dark] .sem-remove-btn:hover{background:#ff453a1a;border-color:#ff453a47}@media(max-width:480px){.slot-edit-modal{max-width:100%;border-radius:14px 14px 0 0}.sem-header{padding:12px 14px 10px}.sem-body{padding:12px 14px 8px}.sem-footer{padding:9px 14px}.sem-time{font-size:13px}.slot-subj-grid{grid-template-columns:repeat(2,1fr);gap:4px}.slot-subj-btn{font-size:11.5px;padding:7px 8px;min-height:32px}.slot-pill{font-size:11.5px;padding:5px 10px}}@media(max-width:360px){.slot-subj-btn{font-size:11px;padding:6px;min-height:30px}}html{-webkit-text-size-adjust:100%;text-size-adjust:100%;scroll-behavior:smooth;scrollbar-gutter:stable}*,*:before,*:after{-webkit-tap-highlight-color:transparent;box-sizing:border-box}.app-main,.app-sidebar,.modal-body,.table-wrap,.cmd-results-inner{-webkit-overflow-scrolling:touch}.app-main{overscroll-behavior-y:auto}.app-sidebar,.modal-body{overscroll-behavior:contain}body.sidebar-open{overflow:hidden}:focus-visible{outline:2.5px solid var(--color-teal);outline-offset:2px;border-radius:inherit}:focus:not(:focus-visible){outline:none}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation:none!important;transition:none!important}}.btn{position:relative;transition:background var(--transition-fast),transform .14s cubic-bezier(.34,1.56,.64,1),box-shadow .14s ease,opacity .1s ease;will-change:transform;user-select:none}@media(hover:hover)and (pointer:fine){.btn:hover{transform:none;box-shadow:none}.btn-primary:hover,.btn-teal:hover,.btn-danger:hover{box-shadow:none}}.btn:active{transform:translateY(1px) scale(.97);box-shadow:none;opacity:.88;transition:transform .06s ease,box-shadow .06s ease,opacity .06s ease}.card,.kpi-card,.stat-card{transition:border-color var(--transition-fast);will-change:auto}@media(hover:hover)and (pointer:fine){.card:hover,.kpi-card:hover,.stat-card:hover{transform:none;box-shadow:none;border-color:#b0b0b0}}.card:active,.kpi-card:active,.stat-card:active{transform:none;box-shadow:none;opacity:1}.app-sidebar-item{transition:background .1s ease,color .1s ease,padding .28s cubic-bezier(.4,0,.2,1),margin .28s cubic-bezier(.4,0,.2,1),gap .28s cubic-bezier(.4,0,.2,1);will-change:auto}@media(hover:hover)and (pointer:fine){.app-sidebar-item:hover{transform:none}}.app-sidebar-item:active{opacity:.75;transition:opacity .06s ease}.app-header-actions button{transition:background var(--transition-fast),color var(--transition-fast),transform .12s cubic-bezier(.34,1.56,.64,1);will-change:transform}@media(hover:hover)and (pointer:fine){.app-header-actions button:hover{transform:none}}.app-header-actions button:active{transform:scale(.88);opacity:.7;transition:transform .05s ease}#theme-toggle{perspective:none;transform-style:flat}#theme-toggle:hover,#theme-toggle:active,#theme-toggle:focus,#theme-toggle:focus-visible{background:none!important;transform:none!important;transition:none!important;outline:none!important;box-shadow:none!important;border-color:transparent!important}.app-header-actions button:focus,.app-header-actions button:focus-visible{outline:none;box-shadow:none;background:transparent}@media(max-width:768px){#hamburger{position:relative;width:36px;height:36px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:0;background:transparent;border:none;cursor:pointer;padding:0;border-radius:8px;transition:background .14s ease;-webkit-tap-highlight-color:transparent}#hamburger:hover{background:var(--color-surface-2)}#hamburger span{display:block;width:20px;height:2px;background:var(--color-text);border-radius:99px;position:absolute;left:50%;transform-origin:center;transition:transform .15s cubic-bezier(.4,0,.2,1),opacity .12s ease,top .15s cubic-bezier(.4,0,.2,1);margin-left:-10px}#hamburger span:nth-child(1){top:10px}#hamburger span:nth-child(2){top:17px;opacity:1}#hamburger span:nth-child(3){top:24px}#hamburger.open span:nth-child(1){top:17px;transform:rotate(45deg)}#hamburger.open span:nth-child(2){opacity:0;transform:scaleX(0)}#hamburger.open span:nth-child(3){top:17px;transform:rotate(-45deg)}#hamburger:active{transform:scale(.88);transition:transform .06s ease}}.tt-cell{transition:background .12s ease,transform .08s cubic-bezier(.34,1.56,.64,1);will-change:transform}.tt-cell:active{transform:scale(.96)}[data-tip]{position:relative}[data-tip]:after{content:attr(data-tip);position:absolute;top:calc(100% + 8px);left:50%;transform:translate(-50%) translateY(-4px);background:var(--color-white);color:var(--color-text);border:1px solid var(--color-border);box-shadow:0 4px 16px #0f172a1f;font-size:11px;font-weight:500;padding:5px 10px;border-radius:7px;white-space:nowrap;pointer-events:none;opacity:0;transition:opacity .14s ease,transform .14s cubic-bezier(.34,1.56,.64,1);z-index:var(--z-tooltip);letter-spacing:.01em}[data-tip]:before{content:"";position:absolute;top:calc(100% + 3px);left:50%;transform:translate(-50%) translateY(-4px);border:5px solid transparent;border-bottom-color:var(--color-white);filter:drop-shadow(0 -1px 0 var(--color-border));opacity:0;transition:opacity .14s ease,transform .14s ease;pointer-events:none;z-index:var(--z-tooltip)}@media(hover:hover)and (pointer:fine){[data-tip]:hover:after,[data-tip]:hover:before{opacity:1;transform:translate(-50%) translateY(0)}}[data-tip]:focus-visible:after,[data-tip]:focus-visible:before{opacity:1;transform:translate(-50%) translateY(0)}#page-container{contain:layout;isolation:isolate}@keyframes pageEnterForward{0%{opacity:0;transform:translate(16px)}to{opacity:1;transform:translate(0)}}@keyframes pageEnterBack{0%{opacity:0;transform:translate(-16px)}to{opacity:1;transform:translate(0)}}@keyframes pageExitForward{0%{opacity:1;transform:translate(0)}to{opacity:0;transform:translate(-16px)}}@keyframes pageExitBack{0%{opacity:1;transform:translate(0)}to{opacity:0;transform:translate(16px)}}#page-container[data-direction=forward]{animation:pageEnterForward .26s cubic-bezier(.25,.46,.45,.94) both}#page-container[data-direction=back]{animation:pageEnterBack .26s cubic-bezier(.25,.46,.45,.94) both}#page-container.page-exit[data-direction=forward]{animation:pageExitForward .18s cubic-bezier(.25,.46,.45,.94) both}#page-container.page-exit[data-direction=back]{animation:pageExitBack .18s cubic-bezier(.25,.46,.45,.94) both}@media(max-width:768px){#page-container[data-direction=forward],#page-container[data-direction=back],#page-container.page-exit[data-direction=forward],#page-container.page-exit[data-direction=back]{animation:none!important;opacity:1!important;transform:none!important}}body.sidebar-collapsed .app-sidebar{width:var(--sidebar-rail-width)}body.sidebar-collapsed .app-main{margin-left:var(--sidebar-rail-width)}body.sidebar-collapsed .app-sidebar-nav{padding-left:0;padding-right:0}body.sidebar-collapsed .app-sidebar-item{padding:0 13px;margin:0 7px 4px;width:auto;gap:0;border-radius:8px}body.sidebar-collapsed .app-sidebar-item span{opacity:0;max-width:0;overflow:hidden;pointer-events:none}body.sidebar-collapsed #conflicts-badge{display:none!important}body.sidebar-collapsed .app-sidebar-item:hover svg{opacity:1}body.sidebar-collapsed .app-sidebar-item.active svg{opacity:1}body.sidebar-collapsed .app-sidebar-item.active:before{left:50%;top:85%;width:4px;height:4px;border-radius:99px;transform:translate(-50%) translateY(0)}.app-sidebar.sidebar-hover-open .app-sidebar-item{justify-content:flex-start;padding:0 14px;margin-left:0;margin-right:0;gap:12px}.app-sidebar.sidebar-hover-open .app-sidebar-nav{padding-left:8px;padding-right:8px}.app-sidebar.sidebar-hover-open .app-sidebar-item span{opacity:1;max-width:160px;pointer-events:auto}.app-sidebar.sidebar-hover-open #conflicts-badge{position:static;margin-left:auto;min-width:18px;width:auto;height:auto;padding:1px 6px;font-size:10px;line-height:16px;border-radius:99px}.app-sidebar.sidebar-hover-open .app-sidebar-item.active:before{left:0;top:50%;width:3px;height:18px;border-radius:0 3px 3px 0;transform:translate(0) translateY(-50%)}.app-sidebar.sidebar-hover-open .app-sidebar-footer{padding:10px 14px}.app-sidebar.sidebar-hover-open .sidebar-footer-ai{opacity:1;max-width:160px;pointer-events:auto}.app-sidebar.sidebar-hover-open~#sidebar-rail-tip,.app-sidebar.sidebar-hover-open #sidebar-rail-tip{opacity:0!important;visibility:hidden!important}#sidebar-rail-tip{position:fixed;left:0;top:0;z-index:var(--z-tooltip);background:var(--color-white);color:var(--color-text);border:1px solid var(--color-border);box-shadow:0 4px 16px #0f172a1f;font-size:12px;font-weight:500;font-family:var(--font-family);padding:5px 11px;border-radius:7px;white-space:nowrap;pointer-events:none;letter-spacing:.01em;opacity:0;transform:translate(-4px);transition:opacity .13s ease,transform .13s cubic-bezier(.34,1.56,.64,1);line-height:1.4}#sidebar-rail-tip.visible{opacity:1;transform:translate(0)}[data-theme=dark] #sidebar-rail-tip{background:#444446;color:#f5f5f7;border-color:#8baee073;box-shadow:0 4px 16px #0006}[data-tip]:after,[data-tip]:before{display:none!important}#sidebar-rail-tip{display:none!important}#cmd-overlay{position:fixed;inset:0;z-index:9998;display:flex;align-items:flex-start;justify-content:center;padding-top:14vh;opacity:0;visibility:hidden;transition:opacity .18s ease,visibility .18s ease;background:#00000080}#cmd-overlay.open{opacity:1;visibility:visible}#cmd-overlay.closing{opacity:0;visibility:visible;pointer-events:none}#cmd-overlay.closing #cmd-palette{transform:scale(.94) translateY(-10px)}#cmd-palette{width:min(560px,92vw);background:var(--color-white);border:1px solid var(--color-border);border-radius:16px;box-shadow:none;overflow:hidden;transform:scale(.94) translateY(-10px);transition:transform .22s cubic-bezier(.34,1.56,.64,1)}#cmd-overlay.open #cmd-palette{transform:scale(1) translateY(0)}[data-theme=dark] #cmd-palette{background:#2c2c2e;border-color:#ffffff17;box-shadow:none}#cmd-search-wrap{display:flex;align-items:center;gap:10px;padding:14px 16px;border-bottom:1px solid var(--color-border)}[data-theme=dark] #cmd-search-wrap{border-color:#ffffff17}#cmd-search-icon{color:var(--color-text-muted);flex-shrink:0}#cmd-search-icon svg{width:17px;height:17px}#cmd-input{flex:1;border:none;background:transparent;font-size:15px;font-weight:400;color:var(--color-text);outline:none;height:auto;padding:0;border-radius:0;box-shadow:none}#cmd-input::placeholder{color:var(--color-text-light);font-size:15px}#cmd-shortcut-hint{font-size:11px;color:var(--color-text-light);border:1px solid var(--color-border);border-radius:5px;padding:2px 7px;flex-shrink:0}[data-theme=dark] #cmd-shortcut-hint{border-color:#ffffff17}.cmd-recent-dot{width:5px;height:5px;border-radius:50%;background:var(--color-teal);flex-shrink:0;margin-left:auto;opacity:.6}#cmd-results{max-height:360px;overflow-y:auto;padding:6px}.cmd-section-label{font-size:10px;font-weight:700;letter-spacing:.1em;text-transform:uppercase;color:var(--color-text-light);padding:10px 10px 4px}.cmd-item{display:flex;align-items:center;gap:10px;padding:9px 10px;border-radius:9px;cursor:pointer;transition:background .09s ease;color:var(--color-text);font-size:13.5px}.cmd-item:hover,.cmd-item.cmd-active{background:var(--color-surface-2)}[data-theme=dark] .cmd-item:hover,[data-theme=dark] .cmd-item.cmd-active{background:#3a3a3c}.cmd-item svg{width:15px;height:15px;color:var(--color-text-muted);flex-shrink:0}.cmd-item-label{flex:1}.cmd-item-shortcut{font-size:10px;color:var(--color-text-light);border:1px solid var(--color-border);border-radius:4px;padding:1px 6px}[data-theme=dark] .cmd-item-shortcut{border-color:#ffffff17}.cmd-item.cmd-active .cmd-item-shortcut{border-color:var(--color-border-hover)}#cmd-footer{display:flex;align-items:center;gap:16px;padding:8px 16px;border-top:1px solid var(--color-border);font-size:11px;color:var(--color-text-light)}[data-theme=dark] #cmd-footer{border-color:#ffffff17}.cmd-key{display:inline-flex;align-items:center;gap:4px;border:1px solid var(--color-border);border-radius:4px;padding:1px 6px;font-size:10px;color:var(--color-text-muted)}[data-theme=dark] .cmd-key{border-color:#ffffff17}[data-theme=dark] .btn:hover,[data-theme=dark] .card:hover,[data-theme=dark] .kpi-card:hover,[data-theme=dark] .stat-card:hover,[data-theme=dark] .btn-primary:hover,[data-theme=dark] .btn-teal:hover{box-shadow:none}[data-theme=dark] .app-sidebar-item.active:before{box-shadow:none}@media(max-width:768px){.app-header{height:56px;background:#fffffffa;border-bottom:.5px solid rgba(0,0,0,.12);padding-left:max(16px,env(safe-area-inset-left));padding-right:max(16px,env(safe-area-inset-right));padding-top:env(safe-area-inset-top)}#hamburger-zone{width:auto;margin-right:4px}[data-theme=dark] .app-header{background:#1c1c1efa;border-bottom-color:#ffffff12}.app-logo-img{width:28px;height:28px;border-radius:8px}.app-header-logo-zone{padding-left:2px}.app-header-logo-zone .app-logo-text{white-space:nowrap}.app-header-logo-zone .brand-name{font-size:13px}.app-header-logo-zone .brand-sub{font-size:8px}#hamburger{display:flex;order:-1}.app-sidebar{top:0;height:100dvh;width:min(300px,85vw);transform:translate(-110%);border-radius:0;border-right:1px solid var(--color-border);transition:transform .26s cubic-bezier(.25,.46,.45,.94);padding-top:env(safe-area-inset-top);padding-bottom:env(safe-area-inset-bottom);z-index:500;background:var(--color-white);will-change:transform}.app-sidebar.sidebar-dragging{transition:none}[data-theme=dark] .app-sidebar{background:#161618;border-right-color:#ffffff14}.app-sidebar.open{transform:translate(0)}#sidebar-overlay{display:block!important;position:fixed;inset:0;z-index:499;background:#00000073;opacity:0;transition:opacity .26s cubic-bezier(.25,.46,.45,.94);pointer-events:none}#sidebar-overlay.visible{opacity:1;pointer-events:all}#sidebar-overlay.sidebar-dragging{transition:none}.app-sidebar-item{min-height:44px;padding:10px 14px;border-radius:10px;margin-bottom:2px;font-size:15px}.app-sidebar-item svg{width:18px;height:18px}.app-main{margin-left:0;margin-top:56px;padding:20px 16px;min-height:calc(100dvh - 56px);padding-bottom:max(24px,calc(env(safe-area-inset-bottom) + 16px))}.card{border-radius:10px}.card-header,.card-footer{padding:14px 16px}.card-body{padding:16px}.page-title{font-size:20px}.page-header{margin-bottom:18px}.page-header .btn{width:100%;height:44px;font-size:15px;border-radius:8px;justify-content:center}.stats-grid{grid-template-columns:1fr 1fr;gap:10px}.stat-card{border-radius:10px}.btn{height:44px;border-radius:8px;font-size:15px;padding:0 18px}.btn-sm{height:34px;font-size:13px;padding:0 13px;border-radius:6px}input[type=text],input[type=email],input[type=password],input[type=number],input[type=date],input[type=time],input[type=color],textarea,select{height:44px;font-size:16px;border-radius:8px;padding:0 14px}textarea{height:auto;padding:12px 14px}.form-group{margin-bottom:14px}.form-label{font-size:13px;margin-bottom:6px}.modal-overlay{align-items:flex-end;padding:0}.modal{width:100%;max-width:100%;border-radius:10px 10px 0 0;padding-bottom:max(20px,env(safe-area-inset-bottom));max-height:92dvh;overflow-y:auto;animation:iosSheetUp .38s cubic-bezier(.32,.72,0,1);will-change:transform;transition:transform .3s cubic-bezier(.32,.72,0,1)}.modal.modal-dragging{transition:none}.modal:before{content:"";display:block;width:36px;height:4px;border-radius:99px;background:#0000002e;margin:10px auto 0}[data-theme=dark] .modal:before{background:#fff3}.modal-header{padding:16px 20px 12px}.modal-body{padding:16px 20px 20px}.modal-footer{padding:14px 20px;gap:10px;flex-direction:column-reverse}.modal-footer .btn{width:100%}.slot-edit-modal .modal-footer{flex-direction:column-reverse;align-items:stretch}.slot-edit-modal .modal-footer>div{display:contents}.slot-edit-modal .modal-footer .slot-clear-btn{margin-left:0;width:100%;justify-content:center}.slot-search-input{height:30px;font-size:12px}.slot-pill{padding:7px 14px;font-size:12.5px}.table-wrap{border-radius:10px}#notification-container{top:auto;bottom:max(24px,calc(env(safe-area-inset-bottom) + 16px));right:14px;left:14px;align-items:stretch}.notification{width:100%;border-radius:10px;font-size:14px}#theme-toggle{width:30px;height:30px;border-radius:6px}#cmd-trigger-btn{display:none}}@media(max-width:430px){#hamburger,#app-sidebar{display:none!important}#sidebar-overlay{display:none!important;pointer-events:none!important}.app-header{height:52px;padding-top:env(safe-area-inset-top)}.app-main{margin-top:52px;padding:14px 12px;padding-bottom:max(82px,calc(env(safe-area-inset-bottom) + 74px))}#bottom-tab-bar{position:fixed;bottom:0;left:0;right:0;height:calc(60px + env(safe-area-inset-bottom));padding-bottom:env(safe-area-inset-bottom);background:#fafafcfa;border-top:.5px solid rgba(0,0,0,.11);display:flex;align-items:center;justify-content:space-around;z-index:400;contain:style;box-sizing:border-box;overflow:visible}[data-theme=dark] #bottom-tab-bar{background:#1c1c1efa;border-top-color:#ffffff12}.tab-item{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;min-width:44px;padding:4px 8px 0;cursor:pointer;color:var(--color-text-light);transition:color .16s ease;user-select:none;text-decoration:none;position:relative}.tab-icon-wrap{width:28px;height:28px;display:flex;align-items:center;justify-content:center;border-radius:8px;transition:background .12s ease,transform .2s cubic-bezier(.34,1.56,.64,1);position:relative}.tab-icon-outline{display:block}.tab-icon-filled{display:none;position:absolute;inset:0;display:flex;align-items:center;justify-content:center}.tab-item:not(.active) .tab-icon-filled{display:none}.tab-item.active .tab-icon-outline{display:none}.tab-item.active .tab-icon-filled{display:flex}.tab-item svg{width:22px;height:22px;stroke-width:1.8}.tab-item span.tab-label{font-size:10px;font-weight:500;letter-spacing:.01em;display:block;position:relative}.tab-item span.tab-label:after{content:attr(data-label);display:block;font-weight:600;height:0;overflow:hidden;visibility:hidden;pointer-events:none}.tab-item.active{color:var(--color-primary)}[data-theme=dark] .tab-item.active{color:var(--color-teal)}.tab-item.active .tab-icon-wrap{background:var(--color-primary-faint);transform:translateY(-4px) scale(1.15)}[data-theme=dark] .tab-item.active .tab-icon-wrap{background:var(--color-teal-faint)}.tab-item.active span.tab-label{font-weight:600}.tab-badge{position:absolute;top:-4px;right:-4px;min-width:16px;height:16px;background:var(--color-error);color:#fff;font-size:9px;font-weight:700;border-radius:99px;display:flex;align-items:center;justify-content:center;padding:0 4px;border:1.5px solid rgba(250,250,252,.9);line-height:1}[data-theme=dark] .tab-badge{border-color:#1c1c1ee6}#tab-more-sheet{position:fixed;inset:0;z-index:600;display:flex;flex-direction:column;justify-content:flex-end;pointer-events:none;opacity:0;transition:opacity .22s ease;touch-action:none}#tab-more-sheet.open{pointer-events:all;opacity:1}#tab-more-backdrop{position:absolute;inset:0;background:#00000073;touch-action:none;overscroll-behavior:none}#tab-more-panel{position:relative;background:var(--color-white);border-radius:10px 10px 0 0;padding:0 0 max(20px,env(safe-area-inset-bottom)) 0;transform:translateY(100%);transition:transform .38s cubic-bezier(.32,.72,0,1);max-height:60dvh;overflow-y:auto;overscroll-behavior:contain;touch-action:pan-y}[data-theme=dark] #tab-more-panel{background:#1c1c1e}#tab-more-sheet.open #tab-more-panel{transform:translateY(0)}#tab-more-panel:before{content:"";display:block;width:36px;height:4px;border-radius:99px;background:#0000002e;margin:10px auto 0}[data-theme=dark] #tab-more-panel:before{background:#fff3}#tab-more-title{font-size:13px;font-weight:600;color:var(--color-text);padding:14px 20px 12px;border-bottom:.5px solid var(--color-border);margin-bottom:4px;letter-spacing:-.01em}[data-theme=dark] #tab-more-title{border-bottom-color:#ffffff12}.tab-more-item{display:flex;align-items:center;gap:14px;padding:13px 20px;font-size:16px;color:var(--color-text);text-decoration:none;border-bottom:.5px solid var(--color-border);cursor:pointer;transition:background .1s ease;-webkit-tap-highlight-color:transparent}.tab-more-item:last-child{border-bottom:none}.tab-more-item:active{background:var(--color-surface-2)}[data-theme=dark] .tab-more-item:active{background:#2c2c2e}.tab-more-item svg{width:20px;height:20px;color:var(--color-text-muted)}.page-title{font-size:18px}.card-body{padding:14px}.stats-grid{grid-template-columns:1fr 1fr}.modal-header{padding:14px 16px 10px}.modal-body{padding:14px 16px 16px}#notification-container{bottom:calc(max(82px,calc(env(safe-area-inset-bottom) + 74px)) + 10px)}}@media(max-width:430px){.tt-wrap{border-radius:10px;overflow-x:auto;-webkit-overflow-scrolling:touch;position:relative}.tt-wrap:not(.tt-scrolled):after{content:"";position:absolute;top:0;right:0;bottom:0;width:44px;background:linear-gradient(to right,transparent,var(--color-bg) 90%);pointer-events:none;border-radius:0 10px 10px 0;transition:opacity .3s ease}.tt-wrap.tt-scrolled:after{opacity:0;pointer-events:none}.tt-wrap:not(.tt-scrolled):before{content:"";position:absolute;top:50%;right:10px;transform:translateY(-50%);width:16px;height:16px;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%238aaec4' stroke-width='2.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='9 18 15 12 9 6'/%3E%3C/svg%3E");background-size:contain;background-repeat:no-repeat;background-position:center;pointer-events:none;opacity:.7;z-index:2;animation:swipeHintPulse 1.4s ease-in-out infinite}.tt-wrap.tt-scrolled:before{display:none}@keyframes swipeHintPulse{0%,to{opacity:.7;transform:translateY(-50%) translate(0)}50%{opacity:.35;transform:translateY(-50%) translate(3px)}}.tt-table{min-width:560px}.tt-cell{min-width:80px}.tt-cell-inner{min-height:66px;padding:6px 4px}.tt-cell-subject{font-size:10px}.tt-cell-teacher{font-size:8px}.tt-day-cell{width:40px;min-width:40px}.tt-day-abbr{font-size:9px}.tt-hdr-row th{font-size:9px;padding:8px 4px}.tt-hdr-period{font-size:10px}.tt-hdr-time{font-size:8px}}#ptr-indicator,#ptr-arc{display:none!important}@keyframes iosSheetUp{0%{transform:translateY(100%);opacity:.6}to{transform:translateY(0);opacity:1}}@keyframes spin{to{transform:rotate(360deg)}}.lp-ripple{position:absolute;border-radius:50%;background:#00000012;transform:scale(0);animation:lpRippleExpand .4s cubic-bezier(0,0,.2,1) forwards;pointer-events:none;z-index:0}[data-theme=dark] .lp-ripple{background:#ffffff14}@keyframes lpRippleExpand{to{transform:scale(4);opacity:0}}@media(max-width:430px){#loading-overlay{padding-top:env(safe-area-inset-top);padding-bottom:env(safe-area-inset-bottom)}.lo-brand h1{font-size:20px}.lo-circle,.lo-ring{width:88px;height:88px}}@media(hover:hover)and (pointer:fine){::-webkit-scrollbar{width:4px;height:4px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:var(--color-divider);border-radius:99px}::-webkit-scrollbar-thumb:hover{background:var(--color-border-hover)}}.app-sidebar{scrollbar-width:none}.app-sidebar::-webkit-scrollbar{width:0;height:0;display:none}@media(max-width:768px){::-webkit-scrollbar{width:0;height:0}}#bottom-tab-bar,#cmd-overlay,#tab-more-panel{transform:translateZ(0)}@media(max-width:430px){#edu-coin-modal{align-items:flex-end!important;padding:0!important}#edu-coin-modal>div{margin:0!important;max-width:100%!important;width:100%!important;border-radius:18px 18px 0 0!important;max-height:88vh;overflow-y:auto;-webkit-overflow-scrolling:touch}#edu-coin-modal>div>div:first-child{padding:18px 18px 0!important}#edu-coin-modal>div>div:has(.coin-pkg-btn){padding:14px!important}.coin-pkg-btn{padding:11px 14px!important;margin-bottom:8px!important;border-radius:10px!important}.coin-pkg-btn>div:first-child{gap:10px!important}.coin-pkg-btn>div:first-child>div:last-child>div:first-child{font-size:13px!important}.coin-pkg-btn>div:first-child>div:last-child>div:last-child{font-size:10px!important}.coin-pkg-btn>div:last-child>div:first-child{font-size:15px!important;white-space:nowrap}.coin-pkg-btn>div:last-child>div:last-child{font-size:10px!important}#edu-coin-modal>div>div:last-child{padding:0 14px 14px!important;padding-bottom:max(14px,env(safe-area-inset-bottom))!important;gap:8px!important}#ecm-buy{height:46px!important;font-size:13px!important}#ecm-restore{height:38px!important;font-size:12px!important}}@media(max-width:768px){.form-input{font-size:16px}}.gen-btn-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px}@media(max-width:768px){.gen-btn-grid{grid-template-columns:1fr}}