.notification-dropdown{width:360px;max-height:420px;overflow:auto;background:#fff;border-radius:14px;box-shadow:0 4px 6px #0f172a0a,0 12px 24px #0f172a14;padding:8px 0}.notification-dropdown__header{display:flex;align-items:center;justify-content:space-between;padding:0 16px 8px;border-bottom:1px solid #f1f5f9}.notification-dropdown__empty{padding:24px;text-align:center}.notification-list__item{cursor:pointer;padding:8px 16px!important}.notification-list__item:hover{background:#eef2ff}.notification-list__item--unread{background:#f0f9ff}.notification-list__time{font-size:11px;margin-top:4px;display:block}.branch-switcher{display:flex;align-items:center;gap:8px;margin-right:16px}.branch-switcher__icon{color:#64748b;font-size:16px}.branch-switcher__select{min-width:180px}.sider-nav-scroll{flex:1;min-height:0;position:relative;display:flex;flex-direction:column}.sider-nav-scroll:before,.sider-nav-scroll:after{content:"";position:absolute;left:0;right:0;height:28px;pointer-events:none;z-index:2;opacity:0;transition:opacity .2s ease}.sider-nav-scroll:before{top:0;background:linear-gradient(to bottom,#0f172a 15%,transparent)}.sider-nav-scroll:after{bottom:0;background:linear-gradient(to top,#0f172a 15%,transparent)}.sider-nav-scroll--can-up:before{opacity:1}.sider-nav-scroll--can-down:after{opacity:1}.sider-nav-scroll__inner{flex:1;min-height:0;overflow-x:hidden;overflow-y:auto;overscroll-behavior:contain;scrollbar-width:thin;scrollbar-color:rgba(255,255,255,.28) transparent;padding-bottom:8px}.sider-nav-scroll__inner::-webkit-scrollbar{width:6px}.sider-nav-scroll__inner::-webkit-scrollbar-track{background:transparent}.sider-nav-scroll__inner::-webkit-scrollbar-thumb{background:#ffffff38;border-radius:999px}.sider-nav-scroll__inner::-webkit-scrollbar-thumb:hover{background:#ffffff61}.admin-layout{min-height:100vh}.admin-sider.ant-layout-sider-collapsed .sider-brand{justify-content:center;padding:0}.teacher-layout{min-height:100vh}.parent-child-selector{margin-right:16px}.parent-layout{min-height:100vh}.parent-header .header-actions{flex:1;display:flex;align-items:center}.student-layout{min-height:100vh}.student-brand-mark{background:linear-gradient(135deg,#f59e0b,#d97706)}.student-header{display:flex;align-items:center;justify-content:space-between;gap:16px}.student-header-intro{min-width:0}.student-avatar{background:linear-gradient(135deg,#f59e0b,#d97706)!important}.login-page{min-height:100vh;display:grid;grid-template-columns:1fr 1fr}@media (max-width: 960px){.login-page{grid-template-columns:1fr}}.login-hero{background:linear-gradient(145deg,#0f172a,#1e1b4b 45%,#312e81);background-image:radial-gradient(ellipse 80% 60% at 10% 20%,rgba(99,102,241,.45) 0%,transparent 55%),radial-gradient(ellipse 70% 50% at 90% 80%,rgba(139,92,246,.35) 0%,transparent 50%),radial-gradient(ellipse 50% 40% at 50% 50%,rgba(6,182,212,.15) 0%,transparent 60%),linear-gradient(145deg,#0f172a,#1e1b4b 45%,#312e81);padding:48px;display:flex;align-items:center;position:relative;overflow:hidden}@media (max-width: 960px){.login-hero{display:none}}.login-hero-content{max-width:480px;position:relative;z-index:1}.login-hero-brand{display:flex;align-items:center;gap:24px;margin-bottom:32px}.login-hero-logo{width:56px;height:56px;border-radius:14px;background:linear-gradient(135deg,#6366f1,#8b5cf6,#a855f7);display:flex;align-items:center;justify-content:center;font-size:26px;color:#fff;box-shadow:0 0 0 1px #6366f11f,0 8px 32px #6366f12e;flex-shrink:0}.login-hero-title{color:#fff!important;margin:0!important;font-weight:800!important;letter-spacing:-.03em}.login-hero-tagline{color:#ffffffa6;font-size:13px;font-weight:500}.login-hero-desc{color:#ffffffc7!important;font-size:16px;line-height:1.6;margin-bottom:48px!important}.login-feature-list{display:flex;flex-direction:column;gap:16px}.login-feature-item{display:flex;align-items:flex-start;gap:16px;padding:16px 24px;background:#ffffff0f;border:1px solid rgba(255,255,255,.1);border-radius:14px;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}.login-feature-item strong{display:block;color:#fff;font-size:14px;margin-bottom:2px}.login-feature-item span{color:#fff9;font-size:13px}.login-feature-icon{width:40px;height:40px;border-radius:10px;background:#6366f140;color:#c7d2fe;display:flex;align-items:center;justify-content:center;font-size:18px;flex-shrink:0}.login-panel{display:flex;align-items:center;justify-content:center;padding:32px;background:#f1f5f9;background-image:radial-gradient(ellipse 60% 50% at 80% 20%,rgba(99,102,241,.08) 0%,transparent 60%)}.login-card{background:#fff;border-radius:20px;padding:48px;width:100%;max-width:440px;border:1px solid #f1f5f9;box-shadow:0 8px 16px #0f172a0f,0 24px 48px #0f172a1f}.login-card-header{margin-bottom:32px}.login-card-header .login-title{margin:0 0 4px!important;font-weight:800!important;letter-spacing:-.03em}.login-alert{margin-bottom:24px}.login-form .ant-form-item-label>label{font-weight:600;color:#0f172a}.login-btn{height:48px;font-weight:700;font-size:14px;margin-top:8px}.login-demo-hint{margin-top:32px;padding:24px;background:#f8fafc;border-radius:14px;border:1px solid #f1f5f9}.login-demo-hint .demo-label{display:block;margin-bottom:16px;font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.08em;color:#64748b}.login-demo-hint .demo-accounts{display:flex;flex-direction:column;gap:8px}.login-demo-hint .demo-row{display:flex;flex-direction:column;gap:2px;font-size:13px}.app-sider{position:fixed!important;left:0;top:0;bottom:0;z-index:100;background:#0f172a!important;border-right:1px solid rgba(255,255,255,.06);box-shadow:4px 0 24px #0f172a1f;height:100vh;overflow:hidden}.app-sider .ant-layout-sider-children{display:flex;flex-direction:column;height:100%;min-height:0;overflow:hidden}.app-sider .sider-brand{flex-shrink:0}.app-sider .ant-layout-sider-trigger{background:#1e293b;color:#ffffffa6;border-top:1px solid rgba(255,255,255,.06)}.app-sider .ant-menu-dark{background:transparent}.app-sider .ant-menu-dark .ant-menu-item,.app-sider .ant-menu-dark .ant-menu-submenu-title{margin:4px 10px;width:calc(100% - 20px);border-radius:10px;transition:all .2s ease}.app-sider .ant-menu-dark .ant-menu-item-selected{background:linear-gradient(135deg,#6366f1,#8b5cf6,#a855f7)!important;box-shadow:0 4px 14px #6366f159}.app-sider .ant-menu-dark .ant-menu-item:hover:not(.ant-menu-item-selected),.app-sider .ant-menu-dark .ant-menu-submenu-title:hover{background:#ffffff0f!important}.app-sider .ant-menu-dark .ant-menu-submenu-selected>.ant-menu-submenu-title{color:#fff}.sider-brand{height:68px;display:flex;align-items:center;gap:16px;padding:0 24px;border-bottom:1px solid rgba(255,255,255,.08)}.sider-brand .brand-mark{width:40px;height:40px;border-radius:10px;background:linear-gradient(135deg,#6366f1,#8b5cf6,#a855f7);display:flex;align-items:center;justify-content:center;font-size:20px;color:#fff;flex-shrink:0;box-shadow:0 0 0 1px #6366f11f,0 8px 32px #6366f12e}.sider-brand .brand-text{color:#fff;font-size:16px;font-weight:700;letter-spacing:-.02em;white-space:nowrap}.sider-brand .brand-tag{display:block;font-size:10px;font-weight:600;text-transform:uppercase;letter-spacing:.08em;color:#ffffff73;margin-top:1px}.app-header{position:fixed;top:0;right:0;z-index:99;height:68px;padding:0 32px;display:flex;align-items:center;justify-content:space-between;gap:16px;background:#ffffffd1!important;backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);border-bottom:1px solid rgba(226,232,240,.8);box-shadow:0 1px 2px #0f172a0a,0 2px 8px #0f172a0a;transition:left .2s ease}.app-header.app-header--tall{height:88px}.app-header .header-left,.app-header .header-right,.app-header .header-actions{display:flex;align-items:center;gap:16px;flex-shrink:0;min-height:0}.app-header .header-right{margin-left:auto}.app-header .header-actions{flex:1;min-width:0;margin-right:16px}.app-header .header-title{font-size:16px;font-weight:700;letter-spacing:-.02em;color:#0f172a;line-height:1.25}.app-header .header-subtitle{font-size:13px;color:#64748b;margin-top:2px;line-height:1.3}.collapse-btn{background:#fff;border:1px solid #e2e8f0;cursor:pointer;font-size:16px;color:#64748b;padding:8px 16px;border-radius:10px;transition:all .2s ease;line-height:1}.collapse-btn:hover{color:#6366f1;border-color:#c7d2fe;background:#eef2ff}.header-icon-btn{width:40px;height:40px;flex-shrink:0;display:inline-flex;align-items:center;justify-content:center;border-radius:10px;border:1px solid #e2e8f0;background:#fff;color:#64748b;cursor:pointer;transition:all .2s ease;line-height:1}.header-icon-btn .anticon{font-size:18px}.header-icon-btn:hover{color:#6366f1;border-color:#c7d2fe;background:#eef2ff}.user-chip{display:inline-flex;align-items:center;gap:8px;cursor:pointer;padding:5px 14px 5px 5px;border-radius:999px;border:1px solid #e2e8f0;background:#fff;transition:all .2s ease;max-height:48px;flex-shrink:0}.user-chip:hover{border-color:#c7d2fe;box-shadow:0 1px 2px #0f172a0a,0 2px 8px #0f172a0a}.user-chip .user-avatar{font-weight:700;border:2px solid #fff;box-shadow:0 1px 2px #0f172a0a,0 2px 8px #0f172a0a;flex-shrink:0}.user-chip .user-details{display:flex;flex-direction:column;align-items:flex-start;justify-content:center;gap:1px;min-width:0;line-height:1.25}.user-chip .user-name{display:block;font-size:13px;font-weight:600;color:#0f172a;white-space:nowrap}.user-chip .user-role{display:block;font-size:11px;color:#64748b;white-space:nowrap;line-height:1.2}.app-content{margin-top:68px;padding:32px;min-height:calc(100vh - 68px);background-color:#f1f5f9;background-image:radial-gradient(ellipse 90% 60% at 0% 0%,rgba(99,102,241,.07) 0%,transparent 55%),radial-gradient(ellipse 70% 50% at 100% 100%,rgba(139,92,246,.06) 0%,transparent 50%);transition:margin-left .2s ease,margin-top .2s ease}.app-content.app-content--tall-header{margin-top:88px;min-height:calc(100vh - 88px)}.page-hero{background:linear-gradient(135deg,#6366f1,#8b5cf6,#a855f7);border-radius:20px;padding:32px 48px;margin-bottom:32px;color:#fff;position:relative;overflow:hidden;box-shadow:0 0 0 1px #6366f11f,0 8px 32px #6366f12e}.page-hero:before{content:"";position:absolute;top:-40%;right:-10%;width:320px;height:320px;border-radius:50%;background:#ffffff14;pointer-events:none}.page-hero:after{content:"";position:absolute;bottom:-30%;left:20%;width:200px;height:200px;border-radius:50%;background:#ffffff0d;pointer-events:none}.page-hero .page-hero-inner{position:relative;z-index:1;display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:24px}.page-hero .page-hero-title{margin:0!important;color:#fff!important;font-weight:800!important;letter-spacing:-.03em}.page-hero .page-hero-sub{color:#ffffffd1;font-size:14px;margin-top:4px}.page-hero .page-hero-badge{background:#ffffff2e;border:1px solid rgba(255,255,255,.25);border-radius:999px;padding:8px 24px;font-size:13px;font-weight:600;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}.page-header{display:flex;align-items:flex-end;justify-content:space-between;margin-bottom:32px;flex-wrap:wrap;gap:16px}.page-header h1,.page-header h2,.page-header h3.ant-typography{margin:0;font-size:26px;font-weight:800;letter-spacing:-.03em;color:#0f172a}.page-header .page-header-sub{color:#64748b;font-size:13px;margin-top:4px}.data-table{background:#fff;border-radius:14px!important;border:1px solid #f1f5f9;box-shadow:0 1px 2px #0f172a0a,0 2px 8px #0f172a0a;overflow:hidden}.data-table .ant-table-thead>tr>th{background:#f8fafc!important;font-weight:700;font-size:11px;text-transform:uppercase;letter-spacing:.06em;color:#64748b;border-bottom:1px solid #e2e8f0}.data-table .ant-table-tbody>tr:hover>td{background:#eef2ff!important}.data-table .ant-table-expanded-row>.ant-table-cell{padding:0!important;background:transparent!important}.data-table .ant-table-expanded-row>.ant-table-cell:hover{background:transparent!important}.data-table .ant-table-thead>tr>th{white-space:nowrap}.tab-actions{display:flex;align-items:center;justify-content:flex-end;gap:8px;margin-bottom:16px;flex-wrap:wrap}.tab-actions--split{justify-content:space-between}.tab-actions__title{margin:0;font-size:14px;font-weight:700;color:#0f172a;letter-spacing:-.01em}.tab-actions-group{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.table-expand-panel{margin:8px 24px 16px;padding:16px 24px;background:#f8fafc;border:1px solid #f1f5f9;border-radius:10px}.table-expand-panel__title{font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.06em;color:#64748b;margin-bottom:8px}.table-expand-panel .ant-empty{margin:16px 0}.nested-data-table{background:transparent!important;border:none!important;box-shadow:none!important;overflow:visible!important}.nested-data-table .ant-table{background:transparent}.nested-data-table .ant-table-container{border:none!important}.nested-data-table .ant-table-thead>tr>th{background:#fff!important;padding:10px 16px!important;font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.06em;color:#64748b;border-bottom:1px solid #f1f5f9;white-space:nowrap}.nested-data-table .ant-table-tbody>tr>td{padding:10px 16px!important;background:#fff;border-bottom:1px solid #f1f5f9;vertical-align:middle}.nested-data-table .ant-table-tbody>tr:last-child>td{border-bottom:none}.nested-data-table .ant-table-tbody>tr:hover>td{background:#eef2ff!important}.modern-tabs .ant-tabs-nav{margin-bottom:24px!important}.modern-tabs .ant-tabs-nav:before{display:none}.modern-tabs .ant-tabs-nav-wrap{overflow:visible!important}.modern-tabs .ant-tabs-nav-list{flex-wrap:wrap;gap:8px}.modern-tabs .ant-tabs-tab{margin:0!important;padding:0!important;border:none!important;background:transparent!important;border-radius:999px!important;transition:all .2s ease}.modern-tabs .ant-tabs-tab:hover .subject-tab-pill{border-color:#c7d2fe;background:#fff}.modern-tabs .ant-tabs-tab.ant-tabs-tab-active .subject-tab-pill{background:linear-gradient(135deg,#6366f1,#8b5cf6,#a855f7);border-color:transparent;box-shadow:0 4px 14px #6366f159;color:#fff}.modern-tabs .ant-tabs-tab.ant-tabs-tab-active .subject-tab-pill .subject-tab-grade{background:#ffffff38;color:#fff;border-color:#ffffff40}.modern-tabs .ant-tabs-tab.ant-tabs-tab-active .subject-tab-pill .subject-tab-icon{color:#fff}.modern-tabs .ant-tabs-ink-bar{display:none}.modern-tabs .ant-tabs-content-holder{padding-top:4px}.modern-tabs .ant-tabs-tab .ant-tabs-tab-btn{padding:0!important;line-height:1.2}.tab-pill-label{display:inline-flex;align-items:center;padding:10px 18px;border-radius:999px;background:#f8fafc;border:1px solid #e2e8f0;font-weight:600;font-size:13px;color:#0f172a;transition:all .2s ease;white-space:nowrap}.modern-tabs .ant-tabs-tab-active .tab-pill-label{background:linear-gradient(135deg,#6366f1,#8b5cf6,#a855f7);border-color:transparent;color:#fff;box-shadow:0 4px 14px #6366f159}.modern-tabs .ant-tabs-tab:hover:not(.ant-tabs-tab-active) .tab-pill-label{border-color:#c7d2fe;background:#fff}.app-page{max-width:1440px}.subject-tab-pill{display:inline-flex;align-items:center;gap:8px;padding:10px 16px;border-radius:999px;background:#f8fafc;border:1px solid #e2e8f0;font-weight:600;font-size:13px;color:#0f172a;transition:all .2s ease;white-space:nowrap}.subject-tab-icon{font-size:15px;color:#6366f1}.subject-tab-name{letter-spacing:-.01em}.subject-tab-grade{font-size:11px;font-weight:700;padding:2px 8px;border-radius:999px;background:#eef2ff;color:#4f46e5;border:1px solid #c7d2fe;text-transform:uppercase;letter-spacing:.04em}.tone-badge{display:inline-flex;align-items:center;justify-content:center;padding:4px 10px;border-radius:999px;font-size:11px;font-weight:700;letter-spacing:.03em;line-height:1.2;white-space:nowrap;border:1px solid transparent}.tone-badge--violet{background:#f5f3ff;color:#6d28d9;border-color:#ddd6fe}.tone-badge--indigo{background:#eef2ff;color:#4338ca;border-color:#c7d2fe}.tone-badge--sky{background:#f0f9ff;color:#0369a1;border-color:#bae6fd}.tone-badge--amber{background:#fffbeb;color:#b45309;border-color:#fde68a}.tone-badge--rose{background:#fff1f2;color:#be123c;border-color:#fecdd3}.tone-badge--emerald{background:#ecfdf5;color:#047857;border-color:#a7f3d0}.tone-badge--blue{background:#eff6ff;color:#1d4ed8;border-color:#bfdbfe}.tone-badge--orange{background:#fff7ed;color:#c2410c;border-color:#fed7aa}.tone-badge--slate{background:#f8fafc;color:#475569;border-color:#e2e8f0}.letter-badge{display:inline-flex;align-items:center;justify-content:center;min-width:32px;height:32px;padding:0 8px;border-radius:10px;font-size:14px;font-weight:800;letter-spacing:-.02em;border:1px solid transparent}.letter-badge--a,.letter-badge--emerald{background:#ecfdf5;color:#059669;border-color:#a7f3d0}.letter-badge--b,.letter-badge--blue{background:#eff6ff;color:#2563eb;border-color:#bfdbfe}.letter-badge--c,.letter-badge--amber{background:#fffbeb;color:#d97706;border-color:#fde68a}.letter-badge--d,.letter-badge--orange{background:#fff7ed;color:#ea580c;border-color:#fed7aa}.letter-badge--f,.letter-badge--rose{background:#fef2f2;color:#dc2626;border-color:#fecaca}.student-id-cell{font-family:ui-monospace,SF Mono,Menlo,monospace;font-size:11px;color:#64748b;white-space:nowrap}*,*:before,*:after{box-sizing:border-box}html,body{margin:0;padding:0;font-family:Plus Jakarta Sans,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;font-size:14px;color:#0f172a;background-color:#f1f5f9;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}#root{min-height:100vh}.app-loading-spinner{display:flex;justify-content:center;align-items:center;height:100vh}.loading-center{display:flex;justify-content:center;align-items:center;min-height:240px}.ant-layout{min-height:100vh;background:transparent}.ant-btn-primary{background:linear-gradient(135deg,#6366f1,#8b5cf6,#a855f7);border:none;font-weight:600;box-shadow:0 4px 14px #6366f159;transition:transform .15s ease,box-shadow .15s ease}.ant-btn-primary:not(:disabled):hover{background:linear-gradient(135deg,#6366f1,#8b5cf6,#a855f7);transform:translateY(-1px);box-shadow:0 6px 20px #6366f173}.ant-card{border-radius:14px!important;border:1px solid #f1f5f9;box-shadow:0 1px 2px #0f172a0a,0 2px 8px #0f172a0a}.ant-card .ant-card-head{border-bottom:1px solid #f1f5f9;font-weight:700;letter-spacing:-.01em}.ant-modal-content{border-radius:20px!important;box-shadow:0 8px 16px #0f172a0f,0 24px 48px #0f172a1f!important;overflow:hidden}.ant-modal-header{border-bottom:1px solid #f1f5f9}.ant-input,.ant-input-affix-wrapper,.ant-select-selector,.ant-picker{border-radius:10px!important}.ant-tag{border-radius:6px;font-weight:600;font-size:11px}.ant-table-wrapper .ant-table-pagination{margin:16px 24px}.modal-footer{display:flex;justify-content:flex-end;gap:8px;margin-top:24px;padding-top:16px;border-top:1px solid #e2e8f0}.full-width{width:100%}.row-selected td{background:#eef2ff!important}
