:root{--brand-primary:#00b578;--brand-primary-dark:#096;--brand-primary-light:#e6f9f1;--brand-primary-lighter:#00c98a;--brand-primary-rgb:0, 181, 120;--brand-secondary:#00a870;--brand-secondary-rgb:0, 168, 112;--brand-primary-lighter-rgb:0, 201, 138;--accent-orange:#ff6b35;--accent-orange-light:#fff0e8;--accent-orange-lighter:#ff8c42;--accent-orange-rgb:255, 107, 53;--accent-purple:#7c3aed;--accent-purple-rgb:124, 58, 237;--accent-blue:#3b82f6;--color-bg:#f7f9fc;--color-surface:#fff;--color-surface-alt:#f0f4f8;--color-border:#e2e8f0;--color-border-light:#eef2f7;--text-primary:#1a202c;--text-secondary:#4a5568;--text-tertiary:#718096;--text-disabled:#a0aec0;--text-on-brand:#fff;--state-success:#10b981;--state-success-bg:#d1fae5;--state-warning:#f59e0b;--state-warning-bg:#fef3c7;--state-error:#ef4444;--state-error-bg:#fee2e2;--state-error-rgb:239, 68, 68;--state-info:#3b82f6;--state-info-bg:#dbeafe;--subject-math:#3b82f6;--subject-chinese:#ef4444;--subject-english:#8b5cf6;--subject-physics:#f59e0b;--subject-science:#10b981;--subject-history:#b45309;--subject-geography:#0ea5e9;--subject-morality:#ec4899;--subject-chemistry:#10b981;--subject-biology:#14b8a6;--grade-primary:#10b981;--grade-junior:#3b82f6;--grade-senior:#8b5cf6;--blue-deep:#1d4ed8;--font-family:"PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "Noto Sans CJK SC", "Source Han Sans SC", sans-serif;--font-size-xs:12px;--font-size-sm:13px;--font-size-base:14px;--font-size-md:16px;--font-size-lg:18px;--font-size-xl:20px;--font-size-2xl:24px;--font-size-3xl:28px;--font-size-4xl:36px;--font-size-5xl:44px;--font-normal:400;--font-medium:500;--font-semibold:600;--font-bold:700;--font-extrabold:800;--space-1:4px;--space-2:8px;--space-3:12px;--space-4:16px;--space-5:20px;--space-6:24px;--space-7:28px;--space-8:32px;--space-10:40px;--space-12:48px;--space-16:64px;--radius-sm:6px;--radius-md:10px;--radius-lg:14px;--radius-xl:20px;--radius-2xl:28px;--radius-full:999px;--shadow-xs:0 1px 2px #0000000a;--shadow-sm:0 2px 8px #0000000f;--shadow-md:0 4px 16px #00000014;--shadow-lg:0 8px 32px #0000001a;--shadow-xl:0 16px 48px #0000001f;--transition-fast:.15s ease;--transition-base:.2s ease;--transition-slow:.3s ease;--header-height:64px;--max-width:1200px;--sidebar-width:240px;--bp-sm:480px;--bp-md:768px;--bp-lg:1024px;--bp-xl:1280px;--bp-2xl:1440px;--teacher-primary:#096;--admin-primary:#1e40af;--sidebar-dark-bg:#1a202c;--sidebar-dark-hover:#2d3748;--sidebar-dark-text:#a0aec0;--sidebar-dark-text-active:#fff;--grid-gap:var(--space-4);--card-padding:var(--space-6)}*,:before,:after{box-sizing:border-box;margin:0;padding:0}html{font-size:var(--font-size-base);-webkit-text-size-adjust:100%;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}body{font-family:var(--font-family);font-size:var(--font-size-base);color:var(--text-primary);background:var(--color-bg);letter-spacing:.01em;min-height:100vh;line-height:1.6}img{max-width:100%;height:auto;display:block}a{color:var(--brand-primary);transition:color var(--transition-fast);text-decoration:none}a:hover{color:var(--brand-primary-dark)}[hidden]{display:none!important}@media (prefers-reduced-motion:reduce){*,:before,:after{transition-duration:.01ms!important;animation-duration:.01ms!important}}.icon{stroke-width:2px;fill:none;stroke:currentColor;stroke-linecap:round;stroke-linejoin:round;width:20px;height:20px}.icon-sm{width:16px;height:16px}.icon-lg{width:24px;height:24px}.icon-xl{width:32px;height:32px}.btn{justify-content:center;align-items:center;gap:var(--space-2);font-family:inherit;font-weight:var(--font-semibold);font-size:var(--font-size-base);border-radius:var(--radius-lg);cursor:pointer;min-height:44px;transition:all var(--transition-base);white-space:nowrap;-webkit-user-select:none;user-select:none;border:none;padding:10px 20px;line-height:1.4;text-decoration:none;display:inline-flex}.btn:disabled{opacity:.5;cursor:not-allowed}.btn-primary{background:linear-gradient(135deg, var(--brand-primary-lighter) 0%, var(--brand-primary) 100%);color:var(--text-on-brand);box-shadow:0 4px 12px rgba(var(--brand-primary-rgb), .3)}.btn-primary:hover:not(:disabled){box-shadow:0 6px 20px rgba(var(--brand-primary-rgb), .4);transform:translateY(-1px)}.btn-primary:active:not(:disabled){box-shadow:0 2px 8px rgba(var(--brand-primary-rgb), .3);transform:translateY(0)}.btn-secondary{background:var(--color-surface);color:var(--text-primary);border:1.5px solid var(--color-border)}.btn-secondary:hover:not(:disabled){background:var(--color-surface-alt);border-color:var(--brand-primary);color:var(--brand-primary)}.btn-accent{background:linear-gradient(135deg, var(--accent-orange-lighter) 0%, var(--accent-orange) 100%);color:#fff;box-shadow:0 4px 12px rgba(var(--accent-orange-rgb), .3)}.btn-accent:hover:not(:disabled){box-shadow:0 6px 20px rgba(var(--accent-orange-rgb), .4);transform:translateY(-1px)}.btn-ghost{color:var(--text-secondary);background:0 0}.btn-ghost:hover:not(:disabled){background:var(--color-surface-alt);color:var(--text-primary)}.btn-danger{background:var(--state-error);color:#fff}.btn-danger:hover:not(:disabled){background:#dc2626}.btn-lg{min-height:52px;font-size:var(--font-size-lg);border-radius:var(--radius-xl);padding:14px 28px}.btn-sm{min-height:36px;font-size:var(--font-size-sm);border-radius:var(--radius-md);padding:6px 14px}.btn-block{width:100%}.input{font-family:inherit;font-size:var(--font-size-md);color:var(--text-primary);background:var(--color-surface);border:1.5px solid var(--color-border);border-radius:var(--radius-lg);width:100%;min-height:48px;transition:all var(--transition-base);padding:12px 16px}.input::placeholder{color:var(--text-tertiary)}.input:hover{border-color:var(--text-disabled)}.input:focus{border-color:var(--brand-primary);box-shadow:0 0 0 4px rgba(var(--brand-primary-rgb), .1);outline:none}.input-error{border-color:var(--state-error)}.input-error:focus{box-shadow:0 0 0 4px rgba(var(--state-error-rgb), .1)}.input-group{gap:var(--space-2);flex-direction:column;display:flex}.input-label{font-size:var(--font-size-sm);font-weight:var(--font-semibold);color:var(--text-secondary)}.input-hint{font-size:var(--font-size-xs);color:var(--text-tertiary)}.card{background:var(--color-surface);border:1px solid var(--color-border-light);border-radius:var(--radius-xl);padding:var(--space-6);box-shadow:var(--shadow-sm);transition:all var(--transition-base)}.card:hover{box-shadow:var(--shadow-md);border-color:var(--brand-primary-light)}.card-flat{box-shadow:none;border:1px solid var(--color-border)}.card-glow{box-shadow:0 8px 24px rgba(var(--brand-primary-rgb), .12);border-color:var(--brand-primary-light)}.card-hoverable:hover{transform:translateY(-2px)}.badge{align-items:center;gap:var(--space-1);font-size:var(--font-size-xs);font-weight:var(--font-semibold);border-radius:var(--radius-full);padding:4px 12px;line-height:1.4;display:inline-flex}.badge-primary{background:var(--brand-primary-light);color:var(--brand-primary-dark)}.badge-success{background:var(--state-success-bg);color:var(--state-success)}.badge-warning{background:var(--state-warning-bg);color:var(--state-warning)}.badge-error{background:var(--state-error-bg);color:var(--state-error)}.badge-info{background:var(--state-info-bg);color:var(--state-info)}.badge-outline{border:1px solid var(--color-border);color:var(--text-secondary);background:0 0}.tag{font-size:var(--font-size-xs);font-weight:var(--font-medium);border-radius:var(--radius-sm);background:var(--color-surface-alt);color:var(--text-secondary);align-items:center;padding:4px 10px;display:inline-flex}.tag-subject{background:var(--brand-primary-light);color:var(--brand-primary-dark)}.divider{background:var(--color-border);height:1px;margin:var(--space-6) 0;border:none}.progress{background:var(--color-surface-alt);border-radius:var(--radius-full);width:100%;height:8px;overflow:hidden}.progress-bar{background:linear-gradient(90deg, var(--brand-primary-lighter), var(--brand-primary));border-radius:var(--radius-full);height:100%;transition:width var(--transition-slow)}.progress-thin{height:4px}.empty-state{padding:var(--space-12) var(--space-6);text-align:center;flex-direction:column;justify-content:center;align-items:center;display:flex}.empty-state-icon{width:80px;height:80px;margin-bottom:var(--space-4);color:var(--text-disabled)}.empty-state-title{font-size:var(--font-size-lg);font-weight:var(--font-semibold);color:var(--text-primary);margin-bottom:var(--space-2)}.empty-state-desc{font-size:var(--font-size-base);color:var(--text-tertiary);max-width:320px}::-webkit-scrollbar{width:8px;height:8px}::-webkit-scrollbar-track{background:0 0}::-webkit-scrollbar-thumb{background:var(--color-border);border-radius:var(--radius-full)}::-webkit-scrollbar-thumb:hover{background:var(--text-disabled)}.app-header{z-index:100;-webkit-backdrop-filter:saturate(180%)blur(12px);border-bottom:1px solid var(--color-border-light);background:#ffffffeb;position:sticky;top:0}.header-inner{max-width:var(--max-width);padding:0 var(--space-6);height:var(--header-height);justify-content:space-between;align-items:center;gap:var(--space-8);margin:0 auto;display:flex}.brand-logo{align-items:center;gap:var(--space-3);color:inherit;white-space:nowrap;flex-shrink:0;text-decoration:none;display:flex}.logo-mark{background:linear-gradient(135deg, var(--brand-primary-lighter) 0%, var(--brand-primary-dark) 100%);border-radius:var(--radius-lg);color:#fff;width:40px;height:40px;box-shadow:0 4px 12px rgba(var(--brand-primary-rgb), .35);justify-content:center;align-items:center;display:flex}.logo-mark svg{width:24px;height:24px}.logo-mark-blue{background:linear-gradient(135deg,#3b82f6,#1d4ed8);box-shadow:0 4px 12px #3b82f666}.logo-mark-orange{background:linear-gradient(135deg, var(--accent-orange), #e55522);box-shadow:0 4px 12px #ff6b3559}.brand-text{flex-direction:column;line-height:1.1;display:flex}.brand-name{font-size:var(--font-size-lg);font-weight:var(--font-extrabold);color:var(--text-primary);letter-spacing:-.02em}.brand-tagline{font-size:var(--font-size-xs);font-weight:var(--font-medium);color:var(--brand-primary)}.nav-links{align-items:center;gap:var(--space-1);flex-shrink:0;display:flex}.nav-link{align-items:center;gap:var(--space-2);font-size:var(--font-size-base);font-weight:var(--font-medium);color:var(--text-secondary);border-radius:var(--radius-md);transition:all var(--transition-fast);white-space:nowrap;padding:8px 16px;display:inline-flex}.nav-link:hover{color:var(--text-primary);background:var(--color-surface-alt)}.nav-link.active{color:var(--brand-primary);background:var(--brand-primary-light);font-weight:var(--font-semibold)}.subject-tabs{background:var(--color-surface-alt);border-radius:var(--radius-full);flex-shrink:0;align-items:center;gap:2px;padding:4px;display:flex}.subject-tab{font-size:var(--font-size-sm);font-weight:var(--font-semibold);color:var(--text-tertiary);border-radius:var(--radius-full);cursor:pointer;transition:all var(--transition-fast);background:0 0;border:none;padding:6px 16px;font-family:inherit}.subject-tab:hover{color:var(--text-primary)}.subject-tab.active{color:var(--brand-primary);box-shadow:var(--shadow-xs);background:#fff}.header-actions{align-items:center;gap:var(--space-3);flex-shrink:0;display:flex}.avatar{border-radius:var(--radius-full);background:linear-gradient(135deg, var(--brand-primary-lighter), var(--brand-primary-dark));color:#fff;width:40px;height:40px;font-weight:var(--font-bold);font-size:var(--font-size-md);justify-content:center;align-items:center;display:flex}.user-menu{position:relative}.user-menu-trigger{align-items:center;gap:var(--space-2);border-radius:var(--radius-lg);cursor:pointer;color:var(--text-primary);transition:background var(--transition-fast);background:0 0;border:none;padding:4px 8px 4px 4px;font-family:inherit;display:flex}.user-menu-trigger:hover{background:var(--color-surface-alt)}.user-menu-trigger .avatar{width:32px;height:32px;font-size:var(--font-size-sm)}.user-menu-trigger-text{text-align:left;flex-direction:column;line-height:1.2;display:flex}.user-menu-name{font-size:var(--font-size-sm);font-weight:var(--font-semibold)}.user-menu-role{font-size:var(--font-size-xs);color:var(--text-tertiary)}.user-menu-caret{color:var(--text-tertiary);transition:transform var(--transition-fast)}.user-menu-caret.open{transform:rotate(180deg)}.user-menu-panel{min-width:200px;padding:var(--space-2);background:var(--color-surface);border:1px solid var(--color-border-light);border-radius:var(--radius-lg);box-shadow:var(--shadow-lg);z-index:50;position:absolute;top:calc(100% + 8px);right:0}.user-menu-title{font-size:var(--font-size-xs);font-weight:var(--font-semibold);color:var(--text-tertiary);padding:6px 10px}.user-menu-item{align-items:center;gap:var(--space-2);border-radius:var(--radius-md);width:100%;font-family:inherit;font-size:var(--font-size-sm);color:var(--text-secondary);text-align:left;cursor:pointer;transition:all var(--transition-fast);background:0 0;border:none;padding:9px 10px;display:flex}.user-menu-item:hover{background:var(--color-surface-alt);color:var(--text-primary)}.user-menu-item.active{color:var(--brand-primary);font-weight:var(--font-semibold)}.user-menu-check{color:var(--brand-primary);margin-left:auto}.user-menu-divider{height:1px;margin:var(--space-2) 0;background:var(--color-border-light)}.user-menu-item.danger{color:var(--state-error)}.user-menu-item.danger:hover{background:var(--state-error-bg);color:var(--state-error)}.header-admin .user-menu-trigger{color:#fff}.header-admin .user-menu-trigger:hover{background:#ffffff1f}.header-admin .user-menu-name{color:#fff}.header-admin .user-menu-role,.header-admin .user-menu-caret{color:#ffffffb3}.page-container{max-width:var(--max-width);min-width:0;padding:var(--space-8) var(--space-6);margin:0 auto}.page-container-narrow{max-width:800px;padding:var(--space-8) var(--space-6);margin:0 auto}.app-layout{grid-template-columns:var(--sidebar-width) 1fr;min-width:0;min-height:calc(100vh - var(--header-height));display:grid}.app-layout>main,.app-layout>.layout-bare{min-width:0}.app-sidebar{background:var(--color-surface);border-right:1px solid var(--color-border-light);padding:var(--space-6) var(--space-4);top:var(--header-height);height:calc(100vh - var(--header-height));position:sticky;overflow-y:auto}.app-main{padding:var(--space-8);min-width:0}.sidebar-dark{background:var(--sidebar-dark-bg);border-right:none}.sidebar-dark .sidebar-section-title{color:var(--sidebar-dark-text);opacity:.6}.sidebar-dark .sidebar-link{color:var(--sidebar-dark-text)}.sidebar-dark .sidebar-link:hover{color:var(--sidebar-dark-text-active);background:var(--sidebar-dark-hover)}.sidebar-dark .sidebar-link.active{color:var(--sidebar-dark-text-active);background:#ffffff14}.sidebar-section{margin-bottom:var(--space-6)}.sidebar-section-title{font-size:var(--font-size-xs);font-weight:var(--font-semibold);color:var(--text-tertiary);text-transform:uppercase;letter-spacing:.08em;margin-bottom:var(--space-3);padding:0 var(--space-2)}.sidebar-link{align-items:center;gap:var(--space-3);padding:10px var(--space-3);font-size:var(--font-size-base);font-weight:var(--font-medium);color:var(--text-secondary);border-radius:var(--radius-md);transition:all var(--transition-fast);margin-bottom:2px;display:flex}.sidebar-link:hover{color:var(--text-primary);background:var(--color-surface-alt)}.sidebar-link.active{color:var(--brand-primary);background:var(--brand-primary-light);font-weight:var(--font-semibold)}.sidebar-link .icon{flex-shrink:0}.sidebar-user-card{background:linear-gradient(135deg, var(--brand-primary-lighter) 0%, var(--brand-primary-dark) 100%);border-radius:var(--radius-xl);padding:var(--space-5);color:#fff;margin-bottom:var(--space-6);position:relative;overflow:hidden}.sidebar-user-card:before{content:"";background:radial-gradient(circle,#fff3 0%,#0000 70%);border-radius:50%;width:160px;height:160px;position:absolute;top:-40%;right:-30%}.sidebar-user-inner{z-index:2;align-items:center;gap:var(--space-3);display:flex;position:relative}.sidebar-user-avatar{border-radius:var(--radius-full);width:48px;height:48px;font-weight:var(--font-bold);font-size:var(--font-size-lg);background:#ffffff40;border:2px solid #fff6;justify-content:center;align-items:center;display:flex}.sidebar-user-info{flex:1;min-width:0}.sidebar-user-name{font-weight:var(--font-bold);font-size:var(--font-size-md);margin-bottom:2px}.sidebar-user-badge{border-radius:var(--radius-full);font-size:var(--font-size-xs);font-weight:var(--font-semibold);background:#ffffff40;align-items:center;gap:2px;padding:2px 8px;display:inline-flex}.header-admin{background:linear-gradient(135deg,#1e40af 0%,#1e3a8a 100%);border-bottom-color:#ffffff1a;box-shadow:0 2px 12px #1e40af40}.header-admin .header-inner,.header-teacher .header-inner{max-width:none;padding:0 var(--space-6)}.header-admin .brand-name,.header-admin .nav-link,.header-admin .header-actions{color:#fff}.header-admin .brand-tagline{color:#ffffffb3}.header-admin .nav-link{color:#ffffffbf}.header-admin .nav-link:hover{color:#fff;background:#ffffff14}.header-admin .nav-link.active{color:#fff;background:#ffffff26}.header-teacher{background:linear-gradient(135deg, var(--brand-primary) 0%, #096 100%);border-bottom-color:#ffffff1a;box-shadow:0 2px 12px #00996640}.header-teacher .brand-name,.header-teacher .nav-link,.header-teacher .header-actions{color:#fff}.header-teacher .nav-link{color:#ffffffc7}.header-teacher .nav-link:hover{color:#fff;background:#ffffff1a}.header-teacher .nav-link.active{color:#fff;background:#ffffff2e}.header-teacher .brand-tagline{color:#ffffffa6}.header-teacher .user-menu-trigger:hover{background:#ffffff1f}.header-teacher .user-menu-name{color:#fff}.header-teacher .user-menu-role,.header-teacher .user-menu-caret{color:#ffffffb3}.sidebar-link-disabled{opacity:.55;cursor:not-allowed}.sidebar-link-disabled.active{opacity:.9}@media (width<=640px){.header-teacher .header-inner,.header-admin .header-inner{padding:0 var(--space-3);gap:var(--space-2)}.header-teacher .brand-tagline,.header-admin .brand-tagline,.header-teacher .admin-version-badge,.header-admin .admin-version-badge{display:none}.header-teacher .brand-text,.header-admin .brand-text{min-width:0}.header-teacher .brand-name,.header-admin .brand-name{white-space:nowrap;text-overflow:ellipsis;max-width:40vw;overflow:hidden}.header-teacher .header-actions,.header-admin .header-actions{gap:2px;margin-left:auto}.header-teacher .header-icon-btn,.header-admin .header-icon-btn,.header-teacher .header-console-avatar,.header-admin .header-console-avatar{width:32px;height:32px}}.sidebar-item-badge{border-radius:var(--radius-full);background:rgba(var(--brand-primary-rgb), .12);color:var(--brand-primary);font-size:var(--font-size-xs);font-weight:var(--font-semibold);white-space:nowrap;margin-left:auto;padding:2px 8px}.sidebar-dark .sidebar-item-badge{color:#a0aec0;background:#ffffff1a}.sidebar-dark .sidebar-link.active .sidebar-item-badge{background:var(--brand-primary-light);color:var(--brand-primary-dark)}.hero{background:linear-gradient(135deg, rgba(var(--brand-primary-rgb), .85) 0%, rgba(var(--brand-secondary-rgb), .8) 50%, rgba(var(--brand-primary-lighter-rgb), .75) 100%), url(/app/assets/home-hero-bg-D-QSgJOo.jpg) center/cover no-repeat;border-radius:var(--radius-2xl);padding:var(--space-12) var(--space-10);color:#fff;margin-bottom:var(--space-10);position:relative;overflow:hidden}.hero:before{content:"";background:radial-gradient(circle,#ffffff26 0%,#0000 70%);border-radius:50%;width:600px;height:600px;position:absolute;top:-50%;right:-20%}.hero:after{content:"";background:radial-gradient(circle, rgba(var(--accent-orange-rgb), .2) 0%, transparent 70%);border-radius:50%;width:400px;height:400px;position:absolute;bottom:-30%;left:-10%}.hero-content{z-index:2;max-width:600px;position:relative}.hero-badge{align-items:center;gap:var(--space-2);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border-radius:var(--radius-full);font-size:var(--font-size-sm);font-weight:var(--font-semibold);margin-bottom:var(--space-4);background:#fff3;padding:6px 16px;display:inline-flex}.hero-title{font-size:var(--font-size-4xl);font-weight:var(--font-extrabold);letter-spacing:-.03em;margin-bottom:var(--space-4);line-height:1.2}.hero-desc{font-size:var(--font-size-lg);opacity:.9;margin-bottom:var(--space-8);line-height:1.6}.hero-actions{gap:var(--space-4);flex-wrap:wrap;display:flex}.hero .btn-secondary{color:#fff;background:#ffffff26;border-color:#ffffff4d}.hero .btn-secondary:hover{background:#ffffff40;border-color:#ffffff80}.hero-visual{z-index:2;position:absolute;top:50%;right:60px;transform:translateY(-50%)}.features-grid{gap:var(--space-6);grid-template-columns:repeat(3,minmax(0,1fr));display:grid}.feature-card{background:var(--color-surface);border:1px solid var(--color-border-light);border-radius:var(--radius-xl);padding:var(--space-6);box-shadow:var(--shadow-sm);transition:all var(--transition-base)}.feature-card:hover{box-shadow:var(--shadow-md);border-color:var(--brand-primary-light);transform:translateY(-2px)}.feature-icon{border-radius:var(--radius-lg);background:var(--brand-primary-light);width:52px;height:52px;color:var(--brand-primary-dark);margin-bottom:var(--space-4);justify-content:center;align-items:center;display:flex}.feature-title{font-size:var(--font-size-lg);font-weight:var(--font-bold);color:var(--text-primary);margin-bottom:var(--space-2)}.feature-desc{font-size:var(--font-size-sm);color:var(--text-secondary);line-height:1.65}.stats-row{gap:var(--space-4);margin-bottom:var(--space-10);grid-template-columns:repeat(4,1fr);display:grid}.stat-card{background:var(--color-surface);border:1px solid var(--color-border-light);border-radius:var(--radius-xl);padding:var(--space-5);text-align:center;transition:all var(--transition-base)}.stat-card:hover{box-shadow:var(--shadow-md);transform:translateY(-2px)}.stat-number{font-size:var(--font-size-3xl);font-weight:var(--font-extrabold);color:var(--brand-primary);letter-spacing:-.02em;margin-bottom:var(--space-1);line-height:1.1}.stat-label{font-size:var(--font-size-sm);color:var(--text-tertiary);font-weight:var(--font-medium)}.stat-trend{font-size:var(--font-size-xs);font-weight:var(--font-semibold);border-radius:var(--radius-full);margin-top:var(--space-1);align-items:center;gap:2px;padding:2px 6px;display:inline-flex}.stat-trend.up{color:var(--state-success);background:var(--state-success-bg)}.stat-trend.down{color:var(--state-error);background:var(--state-error-bg)}.section-header{margin-bottom:var(--space-6);justify-content:space-between;align-items:center;display:flex}.section-title{font-size:var(--font-size-2xl);font-weight:var(--font-bold);color:var(--text-primary);letter-spacing:-.02em}.section-subtitle{font-size:var(--font-size-base);color:var(--text-tertiary);margin-top:var(--space-1)}.subject-grid{gap:var(--space-4);margin-bottom:var(--space-10);grid-template-columns:repeat(4,1fr);display:grid}.subject-card{background:var(--color-surface);border:1px solid var(--color-border-light);border-radius:var(--radius-xl);padding:var(--space-6);cursor:pointer;transition:all var(--transition-base);position:relative;overflow:hidden}.subject-card:before{content:"";background:var(--subject-color,var(--brand-primary));height:4px;position:absolute;top:0;left:0;right:0}.subject-card:hover{box-shadow:var(--shadow-lg);border-color:var(--subject-color,var(--brand-primary));transform:translateY(-4px)}.subject-icon{border-radius:var(--radius-lg);width:48px;height:48px;margin-bottom:var(--space-4);font-size:var(--font-size-xl);color:#fff;background:var(--subject-color,var(--brand-primary));justify-content:center;align-items:center;display:flex}.subject-name{font-size:var(--font-size-lg);font-weight:var(--font-bold);color:var(--text-primary);margin-bottom:var(--space-1)}.subject-info{font-size:var(--font-size-sm);color:var(--text-tertiary)}.subject-count{top:var(--space-4);right:var(--space-4);background:var(--brand-primary-light);color:var(--brand-primary-dark);font-size:var(--font-size-xs);font-weight:var(--font-semibold);border-radius:var(--radius-full);padding:2px 10px;position:absolute}.steps-section{background:var(--color-surface);border-radius:var(--radius-2xl);padding:var(--space-10);margin-bottom:var(--space-10)}.steps-grid{gap:var(--space-8);margin-top:var(--space-8);grid-template-columns:repeat(3,1fr);display:grid}.step-item{text-align:center}.step-number{border-radius:var(--radius-full);background:linear-gradient(135deg, var(--brand-primary-lighter), var(--brand-primary-dark));color:#fff;width:56px;height:56px;font-size:var(--font-size-2xl);font-weight:var(--font-extrabold);margin:0 auto var(--space-4);box-shadow:0 8px 24px rgba(var(--brand-primary-rgb), .3);justify-content:center;align-items:center;display:flex}.step-title{font-size:var(--font-size-lg);font-weight:var(--font-bold);color:var(--text-primary);margin-bottom:var(--space-2)}.step-desc{font-size:var(--font-size-base);color:var(--text-tertiary);line-height:1.6}.grade-grid{gap:var(--space-3);grid-template-columns:repeat(4,1fr);display:grid}.grade-card{background:var(--color-surface);border:1px solid var(--color-border-light);border-radius:var(--radius-lg);padding:var(--space-4);cursor:pointer;transition:all var(--transition-base);text-align:center}.grade-card:hover{border-color:var(--brand-primary);box-shadow:var(--shadow-sm);transform:translateY(-1px)}.grade-name{font-size:var(--font-size-base);font-weight:var(--font-bold);color:var(--text-primary)}.grade-stage{font-size:var(--font-size-xs);color:var(--text-tertiary);margin-top:2px}.grade-card.stage-primary{border-top:3px solid var(--grade-primary)}.grade-card.stage-junior{border-top:3px solid var(--grade-junior)}.grade-card.stage-senior{border-top:3px solid var(--grade-senior)}.diagnose-layout{max-width:720px;padding:var(--space-8) var(--space-6);margin:0 auto}.diagnose-header{margin-bottom:var(--space-8)}.diagnose-progress-info{margin-bottom:var(--space-3);justify-content:space-between;align-items:center;display:flex}.diagnose-step-text{font-size:var(--font-size-sm);color:var(--text-secondary);font-weight:var(--font-medium)}.diagnose-target{align-items:center;gap:var(--space-2);background:var(--brand-primary-light);color:var(--brand-primary-dark);border-radius:var(--radius-full);font-size:var(--font-size-sm);font-weight:var(--font-semibold);padding:6px 14px;display:inline-flex}.question-card{background:var(--color-surface);border-radius:var(--radius-2xl);padding:var(--space-10);box-shadow:var(--shadow-lg);margin-bottom:var(--space-6)}.question-type{align-items:center;gap:var(--space-2);background:var(--color-surface-alt);border-radius:var(--radius-md);font-size:var(--font-size-sm);font-weight:var(--font-medium);color:var(--text-secondary);margin-bottom:var(--space-6);padding:6px 12px;display:inline-flex}.question-text{font-size:var(--font-size-xl);font-weight:var(--font-semibold);color:var(--text-primary);margin-bottom:var(--space-8);line-height:1.7}.question-figure{margin:var(--space-6) 0;text-align:center}.question-figure svg,.question-figure img{max-width:100%;height:auto}.choices-list{gap:var(--space-3);flex-direction:column;display:flex}.choice-btn{align-items:flex-start;gap:var(--space-4);padding:var(--space-5);background:var(--color-surface);border:2px solid var(--color-border);border-radius:var(--radius-lg);font-family:inherit;font-size:var(--font-size-lg);color:var(--text-primary);cursor:pointer;text-align:left;transition:all var(--transition-base);line-height:1.6;display:flex}.choice-btn:hover:not(:disabled),.choice-btn.selected{border-color:var(--brand-primary);background:var(--brand-primary-light)}.choice-btn.correct{border-color:var(--state-success);background:var(--state-success-bg)}.choice-btn.wrong{border-color:var(--state-error);background:var(--state-error-bg)}.choice-btn:disabled{cursor:default}.choice-letter{border-radius:var(--radius-md);background:var(--color-surface-alt);width:36px;height:36px;color:var(--text-secondary);font-weight:var(--font-bold);font-size:var(--font-size-md);transition:all var(--transition-fast);flex-shrink:0;justify-content:center;align-items:center;display:flex}.choice-btn.selected .choice-letter{background:var(--brand-primary);color:#fff}.choice-btn.correct .choice-letter{background:var(--state-success);color:#fff}.choice-btn.wrong .choice-letter{background:var(--state-error);color:#fff}.choice-content{flex:1}.feedback-section{padding:var(--space-6);border-radius:var(--radius-xl);margin-top:var(--space-6);animation:.3s slideUp}.feedback-correct{background:var(--state-success-bg);border:1px solid var(--state-success)}.feedback-wrong{background:var(--state-error-bg);border:1px solid var(--state-error)}.feedback-header{align-items:center;gap:var(--space-3);margin-bottom:var(--space-3);display:flex}.feedback-icon{border-radius:var(--radius-full);color:#fff;justify-content:center;align-items:center;width:32px;height:32px;display:flex}.feedback-correct .feedback-icon{background:var(--state-success)}.feedback-wrong .feedback-icon{background:var(--state-error)}.feedback-title{font-size:var(--font-size-lg);font-weight:var(--font-bold)}.feedback-correct .feedback-title{color:var(--state-success)}.feedback-wrong .feedback-title{color:var(--state-error)}.feedback-content{font-size:var(--font-size-base);color:var(--text-secondary);line-height:1.6}@keyframes slideUp{0%{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}}.result-container{max-width:1100px;padding:var(--space-8) var(--space-6);margin:0 auto}.result-header{text-align:center;padding:var(--space-10);background:linear-gradient(135deg, var(--brand-primary) 0%, var(--brand-primary-lighter) 100%);border-radius:var(--radius-2xl);color:#fff;margin-bottom:var(--space-10);position:relative;overflow:hidden}.result-header:before{content:"";background:radial-gradient(circle,#ffffff26 0%,#0000 70%);border-radius:50%;width:500px;height:500px;position:absolute;top:-50%;left:-20%}.result-badge{align-items:center;gap:var(--space-2);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border-radius:var(--radius-full);font-size:var(--font-size-sm);font-weight:var(--font-semibold);margin-bottom:var(--space-4);z-index:1;background:#fff3;padding:6px 16px;display:inline-flex;position:relative}.result-title{font-size:var(--font-size-3xl);font-weight:var(--font-extrabold);margin-bottom:var(--space-3);z-index:1;position:relative}.result-summary{font-size:var(--font-size-lg);opacity:.9;margin-bottom:var(--space-6);z-index:1;position:relative}.result-stats{justify-content:center;gap:var(--space-10);z-index:1;display:flex;position:relative}.result-stat{text-align:center}.result-stat-num{font-size:var(--font-size-3xl);font-weight:var(--font-extrabold);line-height:1}.result-stat-label{font-size:var(--font-size-sm);opacity:.85;margin-top:var(--space-1)}.result-grid{gap:var(--space-6);margin-bottom:var(--space-8);grid-template-columns:1fr 1fr;display:grid}.result-card{background:var(--color-surface);border:1px solid var(--color-border-light);border-radius:var(--radius-xl);padding:var(--space-6)}.result-card-title{align-items:center;gap:var(--space-2);font-size:var(--font-size-lg);font-weight:var(--font-bold);color:var(--text-primary);margin-bottom:var(--space-4);display:flex}.blindspot-list{gap:var(--space-3);flex-direction:column;display:flex}.blindspot-item{padding:var(--space-4);background:var(--state-error-bg);border-radius:var(--radius-lg);border-left:4px solid var(--state-error);justify-content:space-between;align-items:center;display:flex}.blindspot-item.warning{background:var(--state-warning-bg);border-left-color:var(--state-warning)}.blindspot-info{flex-direction:column;gap:2px;display:flex}.blindspot-name{font-size:var(--font-size-md);font-weight:var(--font-semibold);color:var(--text-primary)}.blindspot-meta{font-size:var(--font-size-sm);color:var(--text-tertiary)}.blindspot-action{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-md);font-size:var(--font-size-sm);font-weight:var(--font-medium);color:var(--text-secondary);cursor:pointer;transition:all var(--transition-fast);padding:6px 14px}.blindspot-action:hover{border-color:var(--brand-primary);color:var(--brand-primary)}.learning-path{flex-direction:column;gap:0;display:flex}.path-item{gap:var(--space-4);padding:var(--space-3) 0;display:flex;position:relative}.path-item:not(:last-child):after{content:"";background:var(--color-border);width:2px;position:absolute;top:44px;bottom:-4px;left:15px}.path-step{border-radius:var(--radius-full);background:var(--brand-primary-light);width:32px;height:32px;color:var(--brand-primary);font-weight:var(--font-bold);font-size:var(--font-size-sm);flex-shrink:0;justify-content:center;align-items:center;display:flex}.path-item.root-cause .path-step{background:var(--state-error);color:#fff}.path-item.current .path-step{background:var(--brand-primary);color:#fff;box-shadow:0 0 0 4px var(--brand-primary-light)}.path-content{flex:1;padding-top:2px}.path-title{font-size:var(--font-size-md);font-weight:var(--font-semibold);color:var(--text-primary)}.path-subject{font-size:var(--font-size-xs);color:var(--text-tertiary);margin-top:2px}.result-actions{justify-content:center;gap:var(--space-4);margin-top:var(--space-8);flex-wrap:wrap;display:flex}.auth-page{background:linear-gradient(135deg, var(--brand-primary-light) 0%, var(--color-bg) 50%, var(--accent-orange-light) 100%);min-height:100vh;display:flex}.auth-visual{padding:var(--space-12);background:linear-gradient(135deg, var(--brand-primary) 0%, var(--brand-secondary) 100%);color:#fff;flex:1;justify-content:center;align-items:center;display:flex;position:relative;overflow:hidden}.auth-visual:before{content:"";background:radial-gradient(circle,#ffffff26 0%,#0000 70%);border-radius:50%;width:600px;height:600px;position:absolute;top:-200px;right:-200px}.auth-visual:after{content:"";background:radial-gradient(circle, rgba(var(--accent-orange-rgb), .2) 0%, transparent 70%);border-radius:50%;width:500px;height:500px;position:absolute;bottom:-150px;left:-150px}.auth-visual-content{z-index:2;max-width:400px;position:relative}.auth-visual h2{font-size:var(--font-size-4xl);font-weight:var(--font-extrabold);margin-bottom:var(--space-4);line-height:1.2}.auth-visual p{font-size:var(--font-size-lg);opacity:.9;line-height:1.6}.auth-form-wrap{padding:var(--space-12);flex:1;justify-content:center;align-items:center;display:flex}.auth-form{width:100%;max-width:420px}.auth-header{margin-bottom:var(--space-10)}.auth-title{font-size:var(--font-size-3xl);font-weight:var(--font-extrabold);color:var(--text-primary);margin-bottom:var(--space-2);letter-spacing:-.02em}.auth-subtitle{font-size:var(--font-size-base);color:var(--text-tertiary)}.auth-tabs{background:var(--color-surface-alt);border-radius:var(--radius-lg);margin-bottom:var(--space-8);padding:4px;display:flex}.auth-tab{font-size:var(--font-size-base);font-weight:var(--font-semibold);color:var(--text-tertiary);border-radius:var(--radius-md);cursor:pointer;transition:all var(--transition-fast);background:0 0;border:none;flex:1;padding:10px;font-family:inherit}.auth-tab.active{background:var(--color-surface);color:var(--brand-primary);box-shadow:var(--shadow-xs)}.form-group{margin-bottom:var(--space-5)}.demo-notice{align-items:center;gap:var(--space-1);margin:var(--space-2) 0 var(--space-4);border-radius:var(--radius-md);color:#92400e;font-size:var(--font-size-sm);background:#fffbeb;border:1px solid #fde68a;flex-wrap:wrap;padding:10px 14px;display:flex}.demo-notice .btn-link{color:#b45309;font-weight:var(--font-semibold)}.auth-role-select{margin-bottom:var(--space-6)}.auth-role-label{margin-bottom:var(--space-2);font-size:var(--font-size-xs);font-weight:var(--font-semibold);color:var(--text-tertiary)}.auth-role-grid{gap:var(--space-2);grid-template-columns:repeat(4,minmax(0,1fr));display:grid}.auth-role-item{background:var(--color-surface);border:1.5px solid var(--color-border);border-radius:var(--radius-lg);color:var(--text-secondary);cursor:pointer;transition:all var(--transition-fast);flex-direction:column;align-items:center;gap:2px;padding:10px 6px;font-family:inherit;display:flex}.auth-role-item:hover{border-color:var(--brand-primary);color:var(--brand-primary)}.auth-role-item.active{border-color:var(--brand-primary);background:var(--brand-primary-light);color:var(--brand-primary-dark);box-shadow:0 0 0 3px rgba(var(--brand-primary-rgb), .08)}.auth-role-name{font-size:var(--font-size-sm);font-weight:var(--font-semibold)}.auth-role-desc{color:var(--text-tertiary);font-size:11px}.auth-role-item.active .auth-role-desc{color:var(--brand-primary-dark)}.onboarding-container{max-width:640px;padding:var(--space-12) var(--space-6);margin:0 auto}.onboarding-progress{justify-content:center;gap:var(--space-2);margin-bottom:var(--space-10);display:flex}.onboarding-dot{border-radius:var(--radius-full);background:var(--color-border);width:32px;height:4px;transition:all var(--transition-base)}.onboarding-dot.active{background:var(--brand-primary);width:48px}.onboarding-dot.completed{background:var(--state-success)}.onboarding-title{font-size:var(--font-size-3xl);font-weight:var(--font-extrabold);text-align:center;color:var(--text-primary);margin-bottom:var(--space-3);letter-spacing:-.02em}.onboarding-desc{font-size:var(--font-size-lg);text-align:center;color:var(--text-tertiary);margin-bottom:var(--space-10)}.role-grid{gap:var(--space-4);grid-template-columns:repeat(3,1fr);display:grid}.role-card{background:var(--color-surface);border:2px solid var(--color-border);border-radius:var(--radius-xl);padding:var(--space-8) var(--space-5);text-align:center;cursor:pointer;transition:all var(--transition-base)}.role-card:hover{border-color:var(--brand-primary);box-shadow:var(--shadow-md);transform:translateY(-2px)}.role-card.selected{border-color:var(--brand-primary);background:var(--brand-primary-light);box-shadow:0 0 0 4px rgba(var(--brand-primary-rgb), .1)}.role-icon{border-radius:var(--radius-xl);background:var(--brand-primary-light);width:72px;height:72px;color:var(--brand-primary);margin:0 auto var(--space-4);font-size:var(--font-size-2xl);justify-content:center;align-items:center;display:flex}.role-card.selected .role-icon{background:var(--brand-primary);color:#fff}.role-name{font-size:var(--font-size-lg);font-weight:var(--font-bold);color:var(--text-primary);margin-bottom:var(--space-2)}.role-desc{font-size:var(--font-size-sm);color:var(--text-tertiary)}.children-grid{gap:var(--space-5);grid-template-columns:repeat(auto-fill,minmax(280px,1fr));display:grid}.child-card{background:var(--color-surface);border:1px solid var(--color-border-light);border-radius:var(--radius-xl);padding:var(--space-6);transition:all var(--transition-base)}.child-card:hover{box-shadow:var(--shadow-lg);transform:translateY(-2px)}.child-header{align-items:center;gap:var(--space-4);margin-bottom:var(--space-5);display:flex}.child-avatar{border-radius:var(--radius-full);background:linear-gradient(135deg, var(--brand-primary-lighter), var(--brand-primary-dark));color:#fff;width:56px;height:56px;font-weight:var(--font-bold);font-size:var(--font-size-xl);justify-content:center;align-items:center;display:flex}.child-info{flex:1}.child-name{font-size:var(--font-size-lg);font-weight:var(--font-bold);color:var(--text-primary)}.child-grade{font-size:var(--font-size-sm);color:var(--text-tertiary)}.child-stats{gap:var(--space-3);padding-top:var(--space-4);border-top:1px solid var(--color-border-light);grid-template-columns:repeat(3,1fr);display:grid}.child-stat{text-align:center}.child-stat-num{font-size:var(--font-size-xl);font-weight:var(--font-extrabold);color:var(--brand-primary)}.child-stat-label{font-size:var(--font-size-xs);color:var(--text-tertiary)}.add-child-card{border:2px dashed var(--color-border);border-radius:var(--radius-xl);padding:var(--space-8);text-align:center;cursor:pointer;transition:all var(--transition-base);color:var(--text-tertiary);background:0 0}.add-child-card:hover{border-color:var(--brand-primary);color:var(--brand-primary);background:var(--brand-primary-light)}.add-child-icon{border-radius:var(--radius-full);background:var(--color-surface-alt);width:48px;height:48px;margin:0 auto var(--space-3);justify-content:center;align-items:center;display:flex}.class-header{margin-bottom:var(--space-8);justify-content:space-between;align-items:center;gap:var(--space-4);flex-wrap:wrap;display:flex}.class-info{align-items:center;gap:var(--space-4);display:flex}.class-avatar{border-radius:var(--radius-xl);background:linear-gradient(135deg, var(--subject-math), var(--blue-deep));color:#fff;width:64px;height:64px;font-weight:var(--font-extrabold);font-size:var(--font-size-xl);justify-content:center;align-items:center;display:flex}.class-name{font-size:var(--font-size-2xl);font-weight:var(--font-extrabold);color:var(--text-primary);letter-spacing:-.02em}.class-meta{gap:var(--space-3);margin-top:var(--space-2);display:flex}.heatmap-grid{grid-template-columns:repeat(8,1fr);gap:4px;display:grid}.heatmap-cell{aspect-ratio:1;border-radius:var(--radius-sm);font-size:var(--font-size-xs);font-weight:var(--font-medium);cursor:pointer;transition:transform var(--transition-fast);justify-content:center;align-items:center;display:flex}.heatmap-cell:hover{transform:scale(1.1)}.heat-level-0{background:var(--state-success-bg);color:var(--state-success)}.heat-level-1{color:#854d0e;background:#fef9c3}.heat-level-2{background:var(--state-warning-bg);color:var(--state-warning)}.heat-level-3{background:var(--state-error-bg);color:var(--state-error)}@media (width<=1024px){.subject-grid{grid-template-columns:repeat(3,1fr)}.grade-grid{grid-template-columns:repeat(4,1fr)}.steps-grid{gap:var(--space-6);grid-template-columns:1fr}.stats-row{grid-template-columns:repeat(2,1fr)}.result-grid{grid-template-columns:1fr}.hero-visual{display:none}.app-layout{grid-template-columns:1fr}.app-sidebar{display:none}}@media (width<=768px){:root{--header-height:56px}.subject-grid,.grade-grid{grid-template-columns:repeat(2,1fr)}.features-grid{grid-template-columns:1fr}.stats-row{grid-template-columns:repeat(2,1fr)}.role-grid{grid-template-columns:1fr}.hero{padding:var(--space-10) var(--space-6)}.hero-title{font-size:var(--font-size-3xl)}.question-card{padding:var(--space-6)}.question-text{font-size:var(--font-size-lg)}.choice-btn{padding:var(--space-4)}.nav-links{display:none}.auth-page{flex-direction:column}.auth-visual{padding:var(--space-8);min-height:240px}.auth-form-wrap{padding:var(--space-8) var(--space-6)}.result-stats{gap:var(--space-6)}.children-grid{grid-template-columns:1fr}.page-container{padding:var(--space-6) var(--space-4)}.steps-section{padding:var(--space-6)}.header-inner{padding:0 var(--space-4)}}@media (width<=480px){.subject-grid{gap:var(--space-3);grid-template-columns:1fr 1fr}.grade-grid{grid-template-columns:repeat(2,1fr)}.stats-row{gap:var(--space-3);grid-template-columns:1fr 1fr}.btn-lg{font-size:var(--font-size-base);padding:12px 20px}.result-header{padding:var(--space-8) var(--space-5)}.result-title{font-size:var(--font-size-2xl)}}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes fadeInUp{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}@keyframes pulse{0%,to{transform:scale(1)}50%{transform:scale(1.05)}}@keyframes shimmer{0%{background-position:-200% 0}to{background-position:200% 0}}.animate-fade-in{animation:.4s forwards fadeIn}.animate-fade-in-up{animation:.5s forwards fadeInUp}.delay-1{opacity:0;animation-delay:.1s}.delay-2{opacity:0;animation-delay:.2s}.delay-3{opacity:0;animation-delay:.3s}.delay-4{opacity:0;animation-delay:.4s}.delay-5{opacity:0;animation-delay:.5s}.delay-6{opacity:0;animation-delay:.6s}.delay-7{opacity:0;animation-delay:.7s}body.page-diagnose{background:linear-gradient(#f7f9fce0 0%,#f7f9fcf2 100%),url(/app/assets/diagnose-bg-BzlXHq4w.jpg) 50%/cover no-repeat fixed;min-height:100vh}body.page-diagnose .question-card{-webkit-backdrop-filter:blur(8px);background:#ffffffeb;border:1px solid #fff9}body.page-diagnose .diagnose-header{-webkit-backdrop-filter:blur(8px);border-radius:var(--radius-xl);padding:var(--space-5) var(--space-6);box-shadow:var(--shadow-sm);background:#ffffffe0;border:1px solid #fff9}.hero.cta-hero{background:linear-gradient(135deg, rgba(var(--accent-purple-rgb), .82) 0%, #5b21b6e0 100%), url(/app/assets/home-hero-bg-D-QSgJOo.jpg) center/cover no-repeat!important}.d-none{display:none}.d-inline{display:inline}.d-block{display:block}.d-flex{display:flex}.d-grid{display:grid}.flex-col{flex-direction:column}.flex-between{justify-content:space-between;display:flex}.flex-center{justify-content:center;align-items:center;display:flex}.flex-start{justify-content:flex-start;display:flex}.flex-wrap{flex-wrap:wrap}.flex-1{flex:1}.items-center{align-items:center}.items-start{align-items:flex-start}.items-end{align-items:flex-end}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.justify-start{justify-content:flex-start}.gap-2{gap:var(--space-2)}.gap-3{gap:var(--space-3)}.gap-4{gap:var(--space-4)}.p-0{padding:0}.p-1{padding:var(--space-1)}.p-2{padding:var(--space-2)}.p-3{padding:var(--space-3)}.p-4{padding:var(--space-4)}.p-5{padding:var(--space-5)}.p-6{padding:var(--space-6)}.px-3{padding-left:var(--space-3);padding-right:var(--space-3)}.px-4{padding-left:var(--space-4);padding-right:var(--space-4)}.px-6{padding-left:var(--space-6);padding-right:var(--space-6)}.py-2{padding-top:var(--space-2);padding-bottom:var(--space-2)}.py-3{padding-top:var(--space-3);padding-bottom:var(--space-3)}.py-4{padding-top:var(--space-4);padding-bottom:var(--space-4)}.m-0{margin:0}.mb-1{margin-bottom:var(--space-1)}.mb-2{margin-bottom:var(--space-2)}.mb-3{margin-bottom:var(--space-3)}.mb-4{margin-bottom:var(--space-4)}.mb-5{margin-bottom:var(--space-5)}.mt-1{margin-top:var(--space-1)}.mt-2{margin-top:var(--space-2)}.mt-3{margin-top:var(--space-3)}.mt-4{margin-top:var(--space-4)}.mt-6{margin-top:var(--space-6)}.ml-2{margin-left:var(--space-2)}.ml-3{margin-left:var(--space-3)}.mr-2{margin-right:var(--space-2)}.mx-auto{margin-left:auto;margin-right:auto}.my-2{margin-top:var(--space-2);margin-bottom:var(--space-2)}.my-3{margin-top:var(--space-3);margin-bottom:var(--space-3)}.w-full{width:100%}.w-auto{width:auto}.h-full{height:100%}.max-w-full{max-width:100%}.min-h-full{min-height:100%}.text-xs{font-size:var(--font-size-xs)}.text-sm{font-size:var(--font-size-sm)}.text-base{font-size:var(--font-size-base)}.text-md{font-size:var(--font-size-md)}.text-lg{font-size:var(--font-size-lg)}.text-xl{font-size:var(--font-size-xl)}.text-2xl{font-size:var(--font-size-2xl)}.font-normal{font-weight:var(--font-normal)}.font-medium{font-weight:var(--font-medium)}.font-semibold{font-weight:var(--font-semibold)}.font-bold{font-weight:var(--font-bold)}.text-left{text-align:left}.text-center{text-align:center}.text-right{text-align:right}.leading-snug{line-height:1.4}.leading-normal{line-height:1.6}.text-primary{color:var(--brand-primary)}.text-primary-dark{color:var(--brand-primary-dark)}.text-on-brand{color:var(--text-on-brand)}.text-secondary{color:var(--text-secondary)}.text-tertiary{color:var(--text-tertiary)}.text-accent{color:var(--accent-orange)}.text-purple{color:var(--accent-purple)}.text-success{color:var(--state-success)}.text-warning{color:var(--state-warning)}.text-error{color:var(--state-error)}.text-info{color:var(--state-info)}.bg-white{background:var(--color-surface)}.bg-page{background:var(--color-bg)}.bg-primary{background:var(--brand-primary)}.bg-primary-light{background:var(--brand-primary-light)}.bg-accent{background:var(--accent-orange)}.bg-success{background:var(--state-success)}.bg-success-light{background:var(--state-success-bg)}.bg-warning{background:var(--state-warning)}.bg-warning-light{background:var(--state-warning-bg)}.bg-error{background:var(--state-error)}.bg-error-light{background:var(--state-error-bg)}.bg-info{background:var(--state-info)}.bg-info-light{background:var(--state-info-bg)}.bg-subject-math{background:var(--subject-math)}.bg-subject-chinese{background:var(--subject-chinese)}.bg-subject-english{background:var(--subject-english)}.bg-subject-physics{background:var(--subject-physics)}.bg-subject-science{background:var(--subject-science)}.bg-subject-history{background:var(--subject-history)}.border{border:1px solid var(--color-border)}.border-light{border:1px solid var(--color-border-light)}.border-primary{border:1px solid var(--brand-primary)}.border-top{border-top:1px solid var(--color-border)}.border-bottom{border-bottom:1px solid var(--color-border)}.border-0{border:0}.rounded-sm{border-radius:var(--radius-sm)}.rounded-md{border-radius:var(--radius-md)}.rounded-lg{border-radius:var(--radius-lg)}.rounded-xl{border-radius:var(--radius-xl)}.rounded-2xl{border-radius:var(--radius-2xl)}.rounded-full{border-radius:var(--radius-full)}.shadow-xs{box-shadow:var(--shadow-xs)}.shadow-sm{box-shadow:var(--shadow-sm)}.shadow-md{box-shadow:var(--shadow-md)}.shadow-lg{box-shadow:var(--shadow-lg)}.shadow-none{box-shadow:none}.relative{position:relative}.absolute{position:absolute}.fixed{position:fixed}.sticky{position:sticky}.top-0{top:0}.left-0{left:0}.right-0{right:0}.bottom-0{bottom:0}.z-10{z-index:10}.z-50{z-index:50}.overflow-hidden{overflow:hidden}.overflow-auto{overflow:auto}.overflow-x-auto{overflow-x:auto}.transition{transition:all var(--transition-base)}.transition-fast{transition:all var(--transition-fast)}.transition-none{transition:none}.card-base{background:var(--color-surface);border-radius:var(--radius-lg);padding:var(--space-6);box-shadow:var(--shadow-sm);border:1px solid var(--color-border-light)}.flex-item{margin-bottom:var(--space-2);justify-content:space-between;align-items:center;display:flex}.text-muted-sm{font-size:var(--font-size-sm);color:var(--text-tertiary);margin-top:2px}.flex-center-gap{align-items:center;gap:var(--space-3);display:flex}.app-footer{margin-top:var(--space-12);padding:var(--space-8) 0 var(--space-6);background:var(--color-surface);border-top:1px solid var(--color-border-light);color:var(--text-secondary);font-size:var(--font-size-sm)}.footer-inner{max-width:var(--max-width);padding:0 var(--space-6);align-items:center;gap:var(--space-4);flex-direction:column;margin:0 auto;display:flex}.footer-brand{align-items:center;gap:var(--space-2);display:flex}.footer-logo{font-size:var(--font-size-lg)}.footer-name{font-weight:var(--font-semibold);color:var(--brand-primary)}.footer-tagline{margin-left:var(--space-2);padding-left:var(--space-2);border-left:1px solid var(--color-border);color:var(--text-tertiary)}.footer-nav{gap:var(--space-5);flex-wrap:wrap;justify-content:center;display:flex}.footer-nav a{color:var(--text-secondary);transition:color var(--transition-fast)}.footer-nav a:hover{color:var(--brand-primary)}.footer-meta{color:var(--text-tertiary)}@media (prefers-color-scheme:dark){:root{--color-bg:#0f1923;--color-surface:#1a2530;--color-surface-alt:#23303d;--color-border:#2d3d4d;--color-border-light:#243240;--text-primary:#e8f0f7;--text-secondary:#b8c4cf;--text-tertiary:#7a8a9a;--text-disabled:#4a5a6a;--sidebar-dark-bg:#0d151d;--sidebar-dark-hover:#1a2530}html,body{background:var(--color-bg);color:var(--text-primary)}.card,.card-base{background:var(--color-surface);border-color:var(--color-border-light)}input,select,textarea{background:var(--color-surface-alt);border-color:var(--color-border);color:var(--text-primary)}input:focus,select:focus,textarea:focus{border-color:var(--brand-primary)}[class*=modal],[class*=dialog],[class*=drawer]{background:var(--color-surface)}.bg-page,body.page-diagnose{background-color:var(--color-bg)}.sidebar-dark,[class*=admin-sidebar],[class*=teacher-sidebar]{background:var(--sidebar-dark-bg)!important}.app-footer{background:var(--color-surface);border-top-color:var(--color-border)}}:focus:not(:focus-visible){outline:none}:focus-visible{outline:3px solid var(--brand-primary);outline-offset:2px;border-radius:var(--radius-sm)}@media (prefers-contrast:high){.btn,button{border:2px solid}.card{border:2px solid var(--text-primary)}.text-muted,.text-tertiary{color:currentColor;opacity:.8}}:root{--admin-primary:#1e40af;--admin-primary-dark:#1e3a8a;--admin-primary-light:#dbeafe;--admin-sidebar-bg:var(--text-primary);--admin-sidebar-hover:#2d3748;--admin-sidebar-active:#3b82f626;--admin-sidebar-border:#ffffff0f;--admin-text-inverse:#fff;--admin-text-muted:#a0aec0}.admin-header{z-index:100;background:linear-gradient(135deg,#1e40af 0%,#1e3a8a 100%);position:sticky;top:0;box-shadow:0 2px 12px #1e40af40}.admin-header .header-inner{max-width:none;padding:0 var(--space-6)}.admin-header .brand-name{color:#fff}.admin-header .brand-tagline{color:#ffffffb3}.admin-header .logo-mark{background:linear-gradient(135deg,#3b82f6,#1d4ed8);box-shadow:0 4px 12px #3b82f666}.admin-version-badge{color:#fff;border-radius:var(--radius-full);font-size:var(--font-size-xs);font-weight:var(--font-semibold);-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);background:#ffffff2e;padding:3px 10px}.admin-search{align-items:center;gap:var(--space-2);border-radius:var(--radius-lg);width:280px;transition:all var(--transition-fast);background:#ffffff26;border:1px solid #ffffff1f;padding:8px 16px;display:flex}.admin-search:focus-within{background:#ffffff38;border-color:#ffffff59}.admin-search svg{color:#ffffffbf;width:18px;height:18px}.admin-search input{color:#fff;font-family:inherit;font-size:var(--font-size-sm);background:0 0;border:none;outline:none;width:100%}.admin-search input::placeholder{color:#ffffff8c}.admin-header-actions{align-items:center;gap:var(--space-3);display:flex}.admin-icon-btn{border-radius:var(--radius-md);color:#ffffffd9;cursor:pointer;width:38px;height:38px;transition:all var(--transition-fast);background:0 0;border:none;justify-content:center;align-items:center;display:flex;position:relative}.admin-icon-btn:hover{color:#fff;background:#ffffff1f}.admin-icon-btn svg{width:20px;height:20px}.admin-icon-btn .badge-dot{background:var(--accent-orange);border:2px solid var(--admin-primary);border-radius:50%;width:8px;height:8px;position:absolute;top:7px;right:7px}.admin-user-dropdown{align-items:center;gap:var(--space-2);border-radius:var(--radius-lg);cursor:pointer;transition:background var(--transition-fast);padding:6px 12px 6px 6px;display:flex}.admin-user-dropdown:hover{background:#ffffff1f}.admin-user-avatar{border-radius:var(--radius-full);color:#fff;width:34px;height:34px;font-weight:var(--font-bold);font-size:var(--font-size-sm);background:linear-gradient(135deg,#f59e0b,#d97706);justify-content:center;align-items:center;display:flex}.admin-user-info{line-height:1.3}.admin-user-name{font-size:var(--font-size-sm);font-weight:var(--font-semibold);color:#fff}.admin-user-role{font-size:var(--font-size-xs);color:#ffffffb3}.admin-layout{grid-template-columns:240px 1fr;min-height:calc(100vh - 64px);display:grid}.admin-sidebar{background:var(--admin-sidebar-bg);padding:var(--space-6) var(--space-3);border-right:1px solid var(--admin-sidebar-border);height:calc(100vh - 64px);position:sticky;top:64px;overflow-y:auto}.admin-role-badge{margin-top:var(--space-1);font-size:var(--font-size-xs);font-weight:var(--font-semibold);color:#60a5fa;border-radius:var(--radius-full);background:#3b82f633;padding:2px 10px;display:inline-block}.admin-sidebar .sidebar-section-title{color:var(--admin-text-muted);padding:var(--space-4) var(--space-3) var(--space-2);letter-spacing:.1em}.admin-sidebar .sidebar-link{color:#cbd5e0;padding:10px var(--space-3);margin-bottom:2px}.admin-sidebar .sidebar-link:hover{color:#fff;background:var(--admin-sidebar-hover)}.admin-sidebar .sidebar-link.active{color:#fff;border-left:3px solid var(--brand-primary);padding-left:calc(var(--space-3) - 3px);background:linear-gradient(90deg,#3b82f640,#3b82f60d)}.admin-sidebar .sidebar-link svg{color:#a0aec0}.admin-main{padding:var(--space-8);min-width:0}.module-content{animation:.3s fadeInUp;display:none}.module-content.active{display:block}.module-header{margin-bottom:var(--space-6);justify-content:space-between;align-items:center;gap:var(--space-4);flex-wrap:wrap;display:flex}.module-title{font-size:var(--font-size-2xl);font-weight:var(--font-bold);color:var(--text-primary);letter-spacing:-.02em}.module-subtitle{font-size:var(--font-size-sm);color:var(--text-tertiary);margin-top:var(--space-1)}.admin-stat-card{background:var(--color-surface);border:1px solid var(--color-border-light);border-radius:var(--radius-xl);padding:var(--space-5);transition:all var(--transition-base);position:relative;overflow:hidden}.admin-stat-card:hover{box-shadow:var(--shadow-lg);transform:translateY(-2px)}.admin-stat-card:before{content:"";background:var(--brand-primary);width:4px;height:100%;position:absolute;top:0;left:0}.admin-stat-card.accent:before{background:var(--accent-orange)}.admin-stat-card.warning:before{background:var(--state-error)}.admin-stat-label{font-size:var(--font-size-sm);color:var(--text-tertiary);font-weight:var(--font-medium);align-items:center;gap:var(--space-2);margin-bottom:var(--space-3);display:flex}.admin-stat-icon{border-radius:var(--radius-lg);background:var(--brand-primary-light);width:36px;height:36px;color:var(--brand-primary);justify-content:center;align-items:center;display:flex}.admin-stat-card.accent .admin-stat-icon{background:var(--accent-orange-light);color:var(--accent-orange)}.admin-stat-card.warning .admin-stat-icon{background:var(--state-error-bg);color:var(--state-error)}.admin-stat-main{justify-content:space-between;align-items:baseline;display:flex}.admin-stat-number{font-size:var(--font-size-3xl);font-weight:var(--font-extrabold);color:var(--text-primary);letter-spacing:-.02em;line-height:1.1}.admin-stat-trend{font-size:var(--font-size-sm);font-weight:var(--font-semibold);border-radius:var(--radius-full);align-items:center;gap:2px;padding:4px 10px;display:flex}.admin-stat-trend.up{background:var(--state-success-bg);color:var(--state-success)}.admin-stat-trend.down{background:var(--state-error-bg);color:var(--state-error)}.admin-stat-trend svg{width:14px;height:14px}.two-col-grid{gap:var(--space-6);margin-bottom:var(--space-8);grid-template-columns:2fr 1fr;display:grid}.three-col-grid{gap:var(--space-4);margin-bottom:var(--space-8);grid-template-columns:repeat(3,1fr);display:grid}.content-quality-card{background:var(--color-surface);border:1px solid var(--color-border-light);border-radius:var(--radius-xl);padding:var(--space-6);box-shadow:var(--shadow-sm)}.content-quality-number{font-size:var(--font-size-3xl);font-weight:var(--font-extrabold);background:linear-gradient(135deg, var(--brand-primary), var(--brand-primary-dark));-webkit-text-fill-color:transparent;-webkit-background-clip:text;background-clip:text;line-height:1.2}.content-quality-label{font-size:var(--font-size-sm);color:var(--text-tertiary);margin-top:var(--space-1);font-weight:var(--font-medium)}.subject-bar-chart{margin-top:var(--space-4)}.subject-bar-item{align-items:center;gap:var(--space-3);margin-bottom:var(--space-3);display:flex}.subject-bar-name{width:56px;font-size:var(--font-size-sm);font-weight:var(--font-medium);color:var(--text-secondary);flex-shrink:0}.subject-bar-track{background:var(--color-surface-alt);border-radius:var(--radius-sm);flex:1;height:22px;position:relative;overflow:hidden}.subject-bar-fill{background:linear-gradient(90deg, var(--brand-primary), #34d399);border-radius:var(--radius-sm);height:100%;font-size:var(--font-size-xs);font-weight:var(--font-semibold);color:#fff;transition:width var(--transition-slow);align-items:center;padding-left:10px;display:flex}.subject-bar-count{text-align:right;width:56px;font-size:var(--font-size-sm);font-weight:var(--font-semibold);color:var(--text-primary);flex-shrink:0}.line-chart-container{height:220px;padding:var(--space-4) 0;position:relative}.line-chart-svg{width:100%;height:100%}.line-chart-axis-label{font-size:var(--font-size-xs);fill:var(--text-tertiary)}.review-list{gap:var(--space-3);flex-direction:column;display:flex}.review-item{align-items:center;gap:var(--space-4);padding:var(--space-4);background:var(--color-surface);border:1px solid var(--color-border-light);border-radius:var(--radius-lg);transition:all var(--transition-fast);display:flex}.review-item:hover{border-color:var(--brand-primary-light);box-shadow:var(--shadow-sm)}.review-type{border-radius:var(--radius-md);font-size:var(--font-size-xs);font-weight:var(--font-semibold);flex-shrink:0;padding:6px 12px}.review-type.node-add{background:var(--brand-primary-light);color:var(--brand-primary-dark)}.review-type.edge-modify{background:var(--state-info-bg);color:var(--state-info)}.review-type.answer-modify{background:var(--accent-orange-light);color:var(--accent-orange)}.review-info{flex:1;min-width:0}.review-title{font-size:var(--font-size-sm);font-weight:var(--font-medium);color:var(--text-primary);text-overflow:ellipsis;white-space:nowrap;margin-bottom:2px;overflow:hidden}.review-meta{font-size:var(--font-size-xs);color:var(--text-tertiary);gap:var(--space-3);display:flex}.review-meta .teacher-name{color:var(--text-secondary);font-weight:var(--font-medium)}.review-actions{gap:var(--space-2);flex-shrink:0;display:flex}.btn-approve,.btn-reject{font-size:var(--font-size-xs);font-weight:var(--font-semibold);border-radius:var(--radius-md);cursor:pointer;transition:all var(--transition-fast);border:none;padding:6px 14px;font-family:inherit}.btn-approve{background:var(--brand-primary);color:#fff}.btn-approve:hover{background:var(--brand-primary-dark)}.btn-reject{color:var(--state-error);border:1px solid var(--state-error);background:0 0}.btn-reject:hover{background:var(--state-error-bg)}.activity-feed{flex-direction:column;display:flex}.activity-item{gap:var(--space-3);padding:var(--space-3) 0;border-bottom:1px solid var(--color-border-light);display:flex}.activity-item:last-child{border-bottom:none}.activity-dot{border-radius:var(--radius-full);background:var(--brand-primary);flex-shrink:0;width:10px;height:10px;margin-top:6px}.activity-dot.orange{background:var(--accent-orange)}.activity-dot.blue{background:var(--state-info)}.activity-dot.red{background:var(--state-error)}.activity-content{flex:1;min-width:0}.activity-text{font-size:var(--font-size-sm);color:var(--text-secondary);line-height:1.5}.activity-text strong{color:var(--text-primary);font-weight:var(--font-semibold)}.activity-time{font-size:var(--font-size-xs);color:var(--text-tertiary);margin-top:2px}.data-table{border-collapse:separate;border-spacing:0;background:var(--color-surface);border-radius:var(--radius-xl);border:1px solid var(--color-border-light);width:100%;overflow:hidden}.data-table th{background:var(--color-surface-alt);padding:14px var(--space-4);text-align:left;font-size:var(--font-size-sm);font-weight:var(--font-semibold);color:var(--text-secondary);border-bottom:1px solid var(--color-border)}.data-table td{padding:14px var(--space-4);font-size:var(--font-size-sm);color:var(--text-primary);border-bottom:1px solid var(--color-border-light)}.data-table tbody tr:hover td{background:var(--brand-primary-light)}.data-table tr:last-child td{border-bottom:none}.filter-bar{gap:var(--space-3);margin-bottom:var(--space-4);flex-wrap:wrap;align-items:center;display:flex}.filter-select{border:1px solid var(--color-border);border-radius:var(--radius-md);font-size:var(--font-size-sm);color:var(--text-primary);background:var(--color-surface) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='14' height='14' viewBox='0 0 24 24' fill='none' stroke='%23718096' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='6 9 12 15 18 9'%3E%3C/polyline%3E%3C/svg%3E") no-repeat right 12px center;appearance:none;cursor:pointer;padding:8px 36px 8px 14px;font-family:inherit}.settings-section{background:var(--color-surface);border:1px solid var(--color-border-light);border-radius:var(--radius-xl);padding:var(--space-6);margin-bottom:var(--space-6)}.settings-item{padding:var(--space-4) 0;border-bottom:1px solid var(--color-border-light);justify-content:space-between;align-items:center;display:flex}.settings-item:last-child{border-bottom:none}.settings-info h4{font-size:var(--font-size-base);font-weight:var(--font-semibold);color:var(--text-primary);margin-bottom:2px}.settings-info p{font-size:var(--font-size-sm);color:var(--text-tertiary)}.toggle{background:var(--color-border);border-radius:var(--radius-full);cursor:pointer;width:44px;height:24px;transition:background var(--transition-fast);border:none;padding:0;position:relative}.toggle.active{background:var(--brand-primary)}.toggle:after{content:"";border-radius:var(--radius-full);width:20px;height:20px;transition:transform var(--transition-fast);box-shadow:var(--shadow-xs);background:#fff;position:absolute;top:2px;left:2px}.toggle.active:after{transform:translate(20px)}管理员审核中心专属样式 .admin-sidebar .sidebar-link.active{color:#fff;border-left:3px solid var(--accent-orange);padding-left:calc(var(--space-3) - 3px);background:linear-gradient(90deg,#3b82f640,#3b82f60d)}.admin-sidebar .sidebar-link.active svg{color:var(--accent-orange)}.admin-stats-row{gap:var(--space-4);margin-bottom:var(--space-6);grid-template-columns:repeat(4,1fr);display:grid}.admin-stat-card.blue:before{background:var(--state-info)}.admin-stat-card.green:before{background:var(--state-success)}.admin-stat-card.blue .admin-stat-icon{background:var(--state-info-bg);color:var(--state-info)}.admin-stat-card.green .admin-stat-icon,.admin-stat-trend.down{background:var(--state-success-bg);color:var(--state-success)}.admin-stat-trend.down.negative{background:var(--state-error-bg);color:var(--state-error)}.two-col{gap:var(--space-6);grid-template-columns:1fr 300px;align-items:start;display:grid}.filter-tabs{gap:var(--space-1);background:var(--color-surface-alt);border-radius:var(--radius-lg);padding:4px;display:flex}.filter-tab{font-size:var(--font-size-sm);font-weight:var(--font-semibold);color:var(--text-tertiary);border-radius:var(--radius-md);cursor:pointer;transition:all var(--transition-fast);background:0 0;border:none;padding:8px 16px;font-family:inherit}.filter-tab:hover{color:var(--text-primary)}.filter-tab.active{color:var(--admin-primary);box-shadow:var(--shadow-xs);background:#fff}.filter-select:focus{border-color:var(--admin-primary);outline:none}.review-card{background:var(--color-surface);border:1px solid var(--color-border-light);border-radius:var(--radius-xl);box-shadow:var(--shadow-sm);overflow:hidden}.review-table{border-collapse:separate;border-spacing:0;width:100%}.review-table thead th{background:var(--color-surface-alt);padding:14px var(--space-4);text-align:left;font-size:var(--font-size-sm);font-weight:var(--font-semibold);color:var(--text-secondary);border-bottom:1px solid var(--color-border);white-space:nowrap}.review-table tbody tr{transition:background var(--transition-fast);position:relative}.review-table tbody tr:hover td{background:#1e40af0a}.review-table tbody td{padding:14px var(--space-4);font-size:var(--font-size-sm);color:var(--text-primary);border-bottom:1px solid var(--color-border-light);vertical-align:middle}.review-table tbody tr:last-child td{border-bottom:none}.risk-row{position:relative}.risk-row td:first-child:before{content:"";width:4px;position:absolute;top:0;bottom:0;left:0}.risk-low td:first-child:before{background:var(--state-success)}.risk-mid td:first-child:before{background:var(--state-warning)}.risk-high td:first-child:before{background:var(--state-error)}.risk-badge{font-size:var(--font-size-xs);font-weight:var(--font-semibold);border-radius:var(--radius-full);align-items:center;gap:4px;padding:3px 10px;display:inline-flex}.risk-badge.low{background:var(--state-success-bg);color:var(--state-success)}.risk-badge.mid{background:var(--state-warning-bg);color:var(--state-warning)}.risk-badge.high{background:var(--state-error-bg);color:var(--state-error)}.risk-badge:before{content:"";background:currentColor;border-radius:50%;width:6px;height:6px}.type-tag{border-radius:var(--radius-md);font-size:var(--font-size-xs);font-weight:var(--font-semibold);white-space:nowrap;padding:4px 10px}.type-node{background:var(--brand-primary-light);color:var(--brand-primary-dark)}.type-edge{background:var(--state-info-bg);color:var(--state-info)}.type-answer{background:var(--accent-orange-light);color:var(--accent-orange)}.teacher-status{font-size:var(--font-size-xs);font-weight:var(--font-semibold);border-radius:var(--radius-full);align-items:center;gap:5px;padding:3px 10px;display:inline-flex}.teacher-status:before{content:"";background:currentColor;border-radius:50%;width:6px;height:6px}.teacher-status.passed{background:var(--state-success-bg);color:var(--state-success)}.teacher-status.pending{background:var(--color-surface-alt);color:var(--text-tertiary)}.teacher-status.reviewing{background:var(--state-info-bg);color:var(--state-info)}.teacher-status.rejected{background:var(--state-error-bg);color:var(--state-error)}.content-summary{white-space:nowrap;text-overflow:ellipsis;max-width:240px;color:var(--text-secondary);overflow:hidden}.row-actions{gap:var(--space-2);flex-wrap:wrap;display:flex}.btn-link{border-radius:var(--radius-md);font-size:var(--font-size-xs);font-weight:var(--font-semibold);cursor:pointer;transition:all var(--transition-fast);background:0 0;border:1px solid #0000;padding:4px 10px;font-family:inherit}.btn-link.view{color:var(--admin-primary)}.btn-link.view:hover{background:var(--admin-primary-light)}.btn-link.approve{color:var(--state-success);background:var(--state-success-bg)}.btn-link.approve:hover{background:var(--state-success);color:#fff}.btn-link.reject{color:var(--state-error);background:var(--state-error-bg)}.btn-link.reject:hover{background:var(--state-error);color:#fff}.side-card{background:var(--color-surface);border:1px solid var(--color-border-light);border-radius:var(--radius-xl);padding:var(--space-5);box-shadow:var(--shadow-sm);margin-bottom:var(--space-5)}.side-card-title{font-size:var(--font-size-sm);font-weight:var(--font-bold);color:var(--text-primary);margin-bottom:var(--space-4);align-items:center;gap:var(--space-2);display:flex}.side-card-title:before{content:"";background:var(--admin-primary);border-radius:2px;width:3px;height:14px}.bar-item{align-items:center;gap:var(--space-2);margin-bottom:var(--space-3);display:flex}.bar-name{width:40px;font-size:var(--font-size-xs);font-weight:var(--font-semibold);color:var(--text-secondary);flex-shrink:0}.bar-track{background:var(--color-surface-alt);border-radius:var(--radius-sm);flex:1;height:18px;overflow:hidden}.bar-fill{border-radius:var(--radius-sm);background:linear-gradient(90deg, var(--state-info), var(--brand-primary));height:100%;transition:width var(--transition-slow)}.bar-count{text-align:right;width:32px;font-size:var(--font-size-xs);font-weight:var(--font-bold);color:var(--text-primary);flex-shrink:0}.top-teacher{align-items:center;gap:var(--space-3);padding:var(--space-2) 0;display:flex}.top-rank{border-radius:var(--radius-md);background:var(--color-surface-alt);width:24px;height:24px;font-size:var(--font-size-xs);font-weight:var(--font-bold);color:var(--text-tertiary);flex-shrink:0;justify-content:center;align-items:center;display:flex}.top-rank.top1{color:#fff;background:linear-gradient(135deg,#f59e0b,#d97706)}.top-rank.top2{color:#fff;background:linear-gradient(135deg,#94a3b8,#64748b)}.top-rank.top3{color:#fff;background:linear-gradient(135deg,#d97706,#b45309)}.top-avatar{border-radius:var(--radius-full);background:linear-gradient(135deg, var(--brand-primary), var(--brand-primary-dark));color:#fff;width:32px;height:32px;font-weight:var(--font-bold);font-size:var(--font-size-xs);flex-shrink:0;justify-content:center;align-items:center;display:flex}.top-info{flex:1;min-width:0}.top-name{font-size:var(--font-size-sm);font-weight:var(--font-semibold);color:var(--text-primary)}.top-subject{font-size:var(--font-size-xs);color:var(--text-tertiary)}.top-count{font-size:var(--font-size-sm);font-weight:var(--font-bold);color:var(--accent-orange);flex-shrink:0}.modal-backdrop{-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);z-index:1000;background:#1a202c8c;justify-content:center;align-items:center;animation:.2s fadeIn;display:flex;position:fixed;inset:0}.modal{background:var(--color-surface);border-radius:var(--radius-2xl);flex-direction:column;width:760px;max-width:calc(100vw - 48px);max-height:calc(100vh - 80px);animation:.3s fadeInUp;display:flex;box-shadow:0 24px 64px #0000002e}.modal-header{padding:var(--space-5) var(--space-6);border-bottom:1px solid var(--color-border-light);justify-content:space-between;align-items:center;display:flex}.modal-title{font-size:var(--font-size-lg);font-weight:var(--font-bold);color:var(--text-primary)}.modal-close{border-radius:var(--radius-md);cursor:pointer;width:32px;height:32px;color:var(--text-tertiary);transition:all var(--transition-fast);background:0 0;border:none;justify-content:center;align-items:center;display:flex}.modal-close:hover{background:var(--color-surface-alt);color:var(--text-primary)}.modal-body{padding:var(--space-6);flex:1;overflow-y:auto}.modal-meta{gap:var(--space-5);padding-bottom:var(--space-4);margin-bottom:var(--space-5);border-bottom:1px solid var(--color-border-light);flex-wrap:wrap;display:flex}.modal-meta-item .label{font-size:var(--font-size-xs);color:var(--text-tertiary);font-weight:var(--font-medium);margin-bottom:2px}.modal-meta-item .value{font-size:var(--font-size-sm);color:var(--text-primary);font-weight:var(--font-semibold)}.modal-section-title{font-size:var(--font-size-sm);font-weight:var(--font-bold);color:var(--text-primary);margin-bottom:var(--space-3);align-items:center;gap:var(--space-2);display:flex}.modal-section-title:before{content:"";background:var(--admin-primary);border-radius:2px;width:3px;height:12px}.diff-block{border:1px solid var(--color-border-light);border-radius:var(--radius-lg);margin-bottom:var(--space-5);background:#fafbfc;overflow:hidden}.diff-row{align-items:flex-start;gap:var(--space-3);padding:var(--space-3) var(--space-4);font-family:SF Mono,Menlo,Monaco,monospace;font-size:var(--font-size-sm);line-height:1.6;display:flex}.diff-row+.diff-row{border-top:1px solid var(--color-border-light)}.diff-row .diff-marker{text-align:center;width:16px;font-weight:var(--font-bold);flex-shrink:0}.diff-row.old{background:#feecec}.diff-row.old .diff-marker{color:var(--state-error)}.diff-row.new{background:#e8f7ee}.diff-row.new .diff-marker{color:var(--state-success)}.diff-row .diff-content{white-space:pre-wrap;word-break:break-word;flex:1}.diff-row.old .diff-content{color:#9ca3af;text-decoration:line-through}.diff-row.new .diff-content{color:#065f46;font-weight:var(--font-medium)}.opinion-box{background:var(--color-surface-alt);border-radius:var(--radius-lg);padding:var(--space-4);margin-bottom:var(--space-4);border-left:3px solid var(--state-info)}.opinion-box.teacher{border-left-color:var(--brand-primary)}.opinion-box.admin{border-left-color:var(--state-warning)}.opinion-head{margin-bottom:var(--space-2);justify-content:space-between;display:flex}.opinion-author{font-size:var(--font-size-sm);font-weight:var(--font-bold);color:var(--text-primary)}.opinion-time{font-size:var(--font-size-xs);color:var(--text-tertiary)}.opinion-text{font-size:var(--font-size-sm);color:var(--text-secondary);line-height:1.7}.admin-note-input{width:100%;min-height:80px;padding:var(--space-3);border:1.5px solid var(--color-border);border-radius:var(--radius-md);font-family:inherit;font-size:var(--font-size-sm);color:var(--text-primary);resize:vertical;transition:all var(--transition-fast);background:var(--color-surface)}.admin-note-input:focus{border-color:var(--admin-primary);outline:none;box-shadow:0 0 0 3px #1e40af1a}.modal-footer{justify-content:space-between;gap:var(--space-3);padding:var(--space-4) var(--space-6);border-top:1px solid var(--color-border-light);background:var(--color-surface);display:flex}.modal-footer .footer-left,.modal-footer .footer-right{gap:var(--space-2);display:flex}.toast{align-items:center;gap:var(--space-3);padding:var(--space-3) var(--space-4);background:var(--color-surface);border-radius:var(--radius-lg);box-shadow:var(--shadow-lg);border-left:4px solid var(--brand-primary);font-size:var(--font-size-sm);font-weight:var(--font-semibold);color:var(--text-primary);min-width:220px;animation:.3s slideInRight;display:flex}.toast.success{border-left-color:var(--state-success)}.toast.error{border-left-color:var(--state-error)}.toast.warning{border-left-color:var(--state-warning)}.toast-icon{flex-shrink:0;width:20px;height:20px}.toast.success .toast-icon{color:var(--state-success)}.toast.error .toast-icon{color:var(--state-error)}.toast.warning .toast-icon{color:var(--state-warning)}.pagination{padding:var(--space-4) var(--space-5);border-top:1px solid var(--color-border-light);justify-content:space-between;align-items:center;display:flex}.pagination-info{font-size:var(--font-size-sm);color:var(--text-tertiary)}.pagination-btns{gap:var(--space-1);display:flex}.page-btn{min-width:32px;height:32px;font-size:var(--font-size-sm);font-weight:var(--font-semibold);border-radius:var(--radius-md);cursor:pointer;border:1px solid var(--color-border);background:var(--color-surface);color:var(--text-secondary);transition:all var(--transition-fast);padding:0 8px;font-family:inherit}.page-btn:hover:not(:disabled){border-color:var(--admin-primary);color:var(--admin-primary)}.page-btn.active{background:var(--admin-primary);color:#fff;border-color:var(--admin-primary)}.page-btn:disabled{opacity:.5;cursor:not-allowed}@media (width<=1024px){.two-col{grid-template-columns:1fr}}@media (width<=640px){.modal{width:calc(100vw - 24px)}}.version-release-card{border-radius:var(--radius-xl);padding:var(--space-8);color:#fff;margin-bottom:var(--space-8);background:linear-gradient(135deg,#1e40af 0%,#1e3a8a 100%);position:relative;overflow:hidden;box-shadow:0 8px 32px #1e40af4d}.version-release-card:before{content:"";background:radial-gradient(circle,#ffffff1a 0%,#0000 70%);border-radius:50%;width:400px;height:400px;position:absolute;top:-100px;right:-100px}.version-release-card:after{content:"";background:radial-gradient(circle,#3b82f633 0%,#0000 70%);border-radius:50%;width:300px;height:300px;position:absolute;bottom:-80px;left:-80px}.version-release-header{z-index:2;margin-bottom:var(--space-8);justify-content:space-between;align-items:flex-start;display:flex;position:relative}.version-release-title{font-size:var(--font-size-sm);font-weight:var(--font-medium);color:#ffffffb3;margin-bottom:var(--space-2)}.version-create-btn{align-items:center;gap:var(--space-2);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border-radius:var(--radius-lg);color:#fff;font-size:var(--font-size-sm);font-weight:var(--font-semibold);cursor:pointer;transition:all var(--transition-fast);background:#ffffff2e;border:1px solid #ffffff4d;padding:10px 20px;font-family:inherit;display:inline-flex}.version-create-btn:hover{background:#ffffff47;transform:translateY(-1px)}.version-release-grid{z-index:2;gap:var(--space-6);grid-template-columns:1fr 1fr;display:grid;position:relative}.version-online,.version-next{-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border-radius:var(--radius-lg);padding:var(--space-5);background:#ffffff14;border:1px solid #ffffff26}.version-label{font-size:var(--font-size-xs);font-weight:var(--font-semibold);color:#fff9;text-transform:uppercase;letter-spacing:.1em;margin-bottom:var(--space-3);align-items:center;gap:var(--space-2);display:flex}.version-label .dot{border-radius:50%;width:8px;height:8px}.version-label .dot.green{background:#34d399;box-shadow:0 0 8px #34d39999}.version-label .dot.blue{background:#60a5fa}.version-number-row{align-items:center;gap:var(--space-3);margin-bottom:var(--space-3);display:flex}.version-number{font-size:var(--font-size-2xl);font-weight:var(--font-extrabold);letter-spacing:-.02em}.version-badge-green{color:#34d399;border-radius:var(--radius-full);font-size:var(--font-size-xs);font-weight:var(--font-semibold);background:#34d39933;border:1px solid #34d3994d;padding:3px 10px}.version-badge-blue{color:#60a5fa;border-radius:var(--radius-full);font-size:var(--font-size-xs);font-weight:var(--font-semibold);background:#60a5fa33;border:1px solid #60a5fa4d;padding:3px 10px}.version-cdn-path{font-size:var(--font-size-xs);color:#fff9;border-radius:var(--radius-sm);margin-bottom:var(--space-3);word-break:break-all;background:#0003;padding:6px 10px;font-family:SF Mono,Consolas,monospace}.version-meta{gap:var(--space-4);font-size:var(--font-size-xs);color:#ffffffb3;display:flex}.version-meta span{align-items:center;gap:4px;display:flex}.version-meta strong{color:#fff;font-weight:var(--font-semibold)}.version-progress-wrap{margin-bottom:var(--space-3)}.version-progress-info{font-size:var(--font-size-xs);color:#ffffffb3;justify-content:space-between;margin-bottom:8px;display:flex}.version-progress-bar{border-radius:var(--radius-full);background:#ffffff1a;height:10px;position:relative;overflow:hidden}.version-progress-fill{border-radius:var(--radius-full);height:100%;transition:width var(--transition-slow);background:linear-gradient(90deg,#34d399,#60a5fa);position:relative}.version-progress-fill:after{content:"";background:linear-gradient(90deg,#0000,#fff6);width:20px;animation:1.5s infinite shimmer;position:absolute;top:0;bottom:0;right:0}.version-changes-count{gap:var(--space-4);font-size:var(--font-size-xs);display:flex}.version-changes-count span{border-radius:var(--radius-full);background:#ffffff1a;padding:4px 10px}.three-col-stats{gap:var(--space-4);margin-bottom:var(--space-8);grid-template-columns:repeat(3,1fr);display:grid}.stat-icon-circle{border-radius:var(--radius-lg);width:44px;height:44px;margin-bottom:var(--space-3);justify-content:center;align-items:center;display:flex}.two-col-layout{gap:var(--space-6);margin-bottom:var(--space-8);grid-template-columns:1fr 1fr;display:grid}.timeline-card{background:var(--color-surface);border:1px solid var(--color-border-light);border-radius:var(--radius-xl);padding:var(--space-6);box-shadow:var(--shadow-sm)}.timeline-header{margin-bottom:var(--space-5);justify-content:space-between;align-items:center;display:flex}.timeline-title{font-size:var(--font-size-lg);font-weight:var(--font-bold);color:var(--text-primary)}.timeline-list{padding-left:var(--space-5);position:relative}.timeline-list:before{content:"";background:var(--color-border);width:2px;position:absolute;top:8px;bottom:8px;left:10px}.timeline-item{margin-bottom:var(--space-4);position:relative}.timeline-item:last-child{margin-bottom:0}.timeline-dot{background:var(--color-surface);border:3px solid var(--color-border);z-index:1;border-radius:50%;width:14px;height:14px;position:absolute;top:6px;left:-22px}.timeline-item.current .timeline-dot{background:var(--state-success);border-color:var(--state-success);box-shadow:0 0 0 4px var(--state-success-bg)}.timeline-item.critical .timeline-dot{background:var(--state-error);border-color:var(--state-error)}.timeline-item.major .timeline-dot{background:var(--accent-orange);border-color:var(--accent-orange)}.timeline-content{background:var(--color-surface-alt);border-radius:var(--radius-lg);padding:var(--space-4);border:1px solid var(--color-border-light);cursor:pointer;transition:all var(--transition-fast)}.timeline-content:hover{border-color:var(--brand-primary-light);box-shadow:var(--shadow-sm)}.timeline-item.current .timeline-content{background:linear-gradient(135deg, var(--state-success-bg), #ecfdf5);border-color:#10b9814d}.timeline-row-top{margin-bottom:var(--space-2);justify-content:space-between;align-items:center;display:flex}.timeline-version{align-items:center;gap:var(--space-2);display:flex}.timeline-version-num{font-size:var(--font-size-base);font-weight:var(--font-bold);color:var(--text-primary)}.timeline-badge-current{background:var(--state-success);color:#fff;border-radius:var(--radius-full);font-size:var(--font-size-xs);font-weight:var(--font-semibold);padding:2px 8px}.timeline-badge-critical{background:var(--state-error);color:#fff;border-radius:var(--radius-full);font-size:var(--font-size-xs);font-weight:var(--font-semibold);padding:2px 8px}.timeline-date{font-size:var(--font-size-xs);color:var(--text-tertiary);font-weight:var(--font-medium)}.timeline-row-meta{gap:var(--space-3);font-size:var(--font-size-xs);color:var(--text-secondary);margin-bottom:var(--space-2);display:flex}.timeline-row-meta span{align-items:center;gap:4px;display:flex}.timeline-summary{font-size:var(--font-size-sm);color:var(--text-secondary);line-height:1.5}.timeline-changelog{margin-top:var(--space-3);padding-top:var(--space-3);border-top:1px dashed var(--color-border);font-family:SF Mono,Consolas,monospace;font-size:var(--font-size-xs);background:var(--text-primary);border-radius:var(--radius-md);padding:var(--space-3);color:#cbd5e0;max-height:200px;display:none;overflow-y:auto}.timeline-item.expanded .timeline-changelog{display:block}.changelog-line{padding:1px 0;line-height:1.7}.changelog-line.add{color:#4ade80}.changelog-line.del{color:#f87171}.changelog-line.mod{color:#fbbf24}.changelog-line.ctx{color:#718096}.timeline-expand-hint{font-size:var(--font-size-xs);color:var(--brand-primary);margin-top:var(--space-2);align-items:center;gap:4px;display:inline-flex}.diff-card{background:var(--color-surface);border:1px solid var(--color-border-light);border-radius:var(--radius-xl);padding:var(--space-6);box-shadow:var(--shadow-sm);flex-direction:column;display:flex}.diff-header{margin-bottom:var(--space-4);justify-content:space-between;align-items:center;display:flex}.diff-title{font-size:var(--font-size-lg);font-weight:var(--font-bold);color:var(--text-primary)}.diff-selector{align-items:center;gap:var(--space-2);margin-bottom:var(--space-4);display:flex}.diff-version-select{border:1px solid var(--color-border);border-radius:var(--radius-md);font-size:var(--font-size-sm);font-weight:var(--font-semibold);color:var(--text-primary);background:var(--color-surface);cursor:pointer;flex:1;padding:8px 12px;font-family:inherit}.diff-version-select:focus{border-color:var(--brand-primary);outline:none}.diff-versus{color:var(--text-tertiary);font-weight:var(--font-bold)}.diff-panels{gap:var(--space-3);flex-direction:column;flex:1;display:flex}.diff-panel-title{font-size:var(--font-size-xs);font-weight:var(--font-semibold);color:var(--text-tertiary);margin-bottom:var(--space-1);justify-content:space-between;display:flex}.diff-panel-title .count{color:var(--state-success)}.diff-panel-title .count.del{color:var(--state-error)}.diff-view{background:var(--text-primary);border-radius:var(--radius-md);padding:var(--space-4);font-family:SF Mono,Consolas,monospace;font-size:var(--font-size-xs);color:#cbd5e0;max-height:300px;line-height:1.7;overflow-y:auto}.diff-line{white-space:pre-wrap;word-break:break-all;padding:2px 0}.diff-line.add{color:#4ade80;background:#34d39926;border-left:3px solid #10b981;padding-left:10px}.diff-line.del{color:#f87171;background:#f8717126;border-left:3px solid #ef4444;padding-left:10px}.diff-line.mod{color:#fbbf24;background:#fbbf241a;border-left:3px solid #f59e0b;padding-left:10px}.diff-risk-section{margin-top:var(--space-4);padding-top:var(--space-4);border-top:1px solid var(--color-border-light)}.diff-risk-title{font-size:var(--font-size-xs);font-weight:var(--font-semibold);color:var(--text-tertiary);text-transform:uppercase;letter-spacing:.08em;margin-bottom:var(--space-3)}.diff-risk-bar{gap:var(--space-2);margin-bottom:var(--space-3);display:flex}.risk-level{text-align:center;border-radius:var(--radius-md);font-size:var(--font-size-xs);font-weight:var(--font-semibold);transition:all var(--transition-fast);border:2px solid #0000;flex:1;padding:8px}.risk-level.low{background:var(--state-success-bg);color:var(--state-success)}.risk-level.low.active{border-color:var(--state-success);box-shadow:0 0 0 3px #10b98133}.risk-level.medium{background:var(--state-warning-bg);color:var(--state-warning)}.risk-level.medium.active{border-color:var(--state-warning);box-shadow:0 0 0 3px #f59e0b33}.risk-level.high{background:var(--state-error-bg);color:var(--state-error)}.diff-risk-details{gap:var(--space-3);grid-template-columns:repeat(2,1fr);display:grid}.risk-detail-item{background:var(--color-surface-alt);border-radius:var(--radius-md);padding:var(--space-3)}.risk-detail-label{font-size:var(--font-size-xs);color:var(--text-tertiary);margin-bottom:4px}.risk-detail-value{font-size:var(--font-size-lg);font-weight:var(--font-bold);color:var(--text-primary)}.risk-detail-value.warning{color:var(--accent-orange)}.publish-card{background:var(--color-surface);border:1px solid var(--color-border-light);border-radius:var(--radius-xl);padding:var(--space-6);box-shadow:var(--shadow-sm)}.publish-header{margin-bottom:var(--space-5);justify-content:space-between;align-items:center;display:flex}.publish-title{font-size:var(--font-size-lg);font-weight:var(--font-bold);color:var(--text-primary)}.publish-subtitle{font-size:var(--font-size-sm);color:var(--text-tertiary);margin-top:4px}.publish-checklist{gap:var(--space-3);margin-bottom:var(--space-6);grid-template-columns:repeat(2,1fr);display:grid}.checklist-item{align-items:center;gap:var(--space-3);padding:var(--space-3);background:var(--color-surface-alt);border-radius:var(--radius-md);cursor:pointer;transition:all var(--transition-fast);-webkit-user-select:none;user-select:none;border:2px solid #0000;display:flex}.checklist-item:hover{border-color:var(--brand-primary-light)}.checklist-item.checked{background:var(--state-success-bg);border-color:#10b9814d}.checklist-checkbox{border-radius:var(--radius-sm);border:2px solid var(--color-border);width:22px;height:22px;transition:all var(--transition-fast);background:#fff;flex-shrink:0;justify-content:center;align-items:center;display:flex}.checklist-item.checked .checklist-checkbox{background:var(--state-success);border-color:var(--state-success)}.checklist-checkbox svg{color:#fff;opacity:0;width:14px;height:14px;transition:opacity var(--transition-fast)}.checklist-item.checked .checklist-checkbox svg{opacity:1}.checklist-text{font-size:var(--font-size-sm);color:var(--text-secondary);font-weight:var(--font-medium)}.checklist-item.checked .checklist-text{color:var(--state-success);font-weight:var(--font-semibold)}.publish-actions{gap:var(--space-3);padding-top:var(--space-5);border-top:1px solid var(--color-border-light);justify-content:flex-end;display:flex}.btn-admin-primary{color:#fff;background:linear-gradient(135deg,#3b82f6 0%,#1d4ed8 100%);box-shadow:0 4px 12px #1d4ed84d}.btn-admin-primary:hover:not(:disabled){transform:translateY(-1px);box-shadow:0 6px 20px #1d4ed866}.btn-publish{color:#fff;background:linear-gradient(135deg,#10b981 0%,#059669 100%);min-height:44px;padding:12px 28px;box-shadow:0 4px 12px #10b9814d}.btn-publish:hover:not(:disabled){transform:translateY(-1px);box-shadow:0 6px 20px #10b98166}.btn-publish:disabled{opacity:.6;cursor:not-allowed}.btn-spinner{border:2px solid #ffffff4d;border-top-color:#fff;border-radius:50%;width:18px;height:18px;animation:.8s linear infinite spin;display:inline-block}.toast-container{top:80px;right:var(--space-6);z-index:9999;gap:var(--space-2);flex-direction:column;display:flex;position:fixed}.toast{align-items:center;gap:var(--space-3);border-radius:var(--radius-lg);font-size:var(--font-size-sm);font-weight:var(--font-semibold);color:#fff;box-shadow:var(--shadow-lg);padding:14px 20px;animation:.3s slideInRight,.3s 2.7s forwards fadeOut;display:flex}.toast.success{background:linear-gradient(135deg,#10b981,#059669)}.toast.error{background:linear-gradient(135deg,#ef4444,#dc2626)}.toast svg{width:20px;height:20px}@media (width<=1024px){.version-release-grid,.three-col-stats,.two-col-layout,.publish-checklist{grid-template-columns:1fr}.admin-user-info{display:none}}.table-scroll{-webkit-overflow-scrolling:touch;width:100%;max-width:100%;overflow-x:auto}@media (width<=900px){.subject-tabs{display:none}}@media (width<=768px){.app-main{padding:var(--space-5) var(--space-4)}.admin-main{padding:0}.admin-stats-row,.three-col-stats,.three-col-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.two-col-grid,.two-col,.two-col-layout,.version-release-grid{grid-template-columns:minmax(0,1fr)}.data-table,.review-table{min-width:760px}.table-scroll>table{min-width:640px}.admin-stat-card{padding:var(--space-4)}.admin-stat-number{font-size:var(--font-size-2xl)}.module-title{font-size:var(--font-size-xl)}.user-menu-trigger-text,.auth-visual{display:none}.auth-form-wrap{padding:var(--space-8) var(--space-5)}.auth-role-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (width<=480px){.app-main{padding:var(--space-4) var(--space-3)}.admin-stats-row,.three-col-stats,.three-col-grid{grid-template-columns:minmax(0,1fr)}.module-header{margin-bottom:var(--space-4)}.admin-main .btn{white-space:normal}}.header-search[data-v-40f1a510]{align-items:center;gap:var(--space-2);border-radius:var(--radius-lg);width:280px;transition:all var(--transition-fast);background:#ffffff26;border:1px solid #ffffff1f;flex-shrink:0;padding:8px 16px;display:flex}.header-search[data-v-40f1a510]:focus-within{background:#ffffff38;border-color:#ffffff59}.header-search svg[data-v-40f1a510]{color:#ffffffbf;flex-shrink:0}.header-search input[data-v-40f1a510]{color:#fff;font-family:inherit;font-size:var(--font-size-sm);background:0 0;border:none;outline:none;width:100%}.header-search input[data-v-40f1a510]::placeholder{color:#ffffff8c}.header-icon-btn[data-v-40f1a510]{border-radius:var(--radius-md);color:#ffffffd9;cursor:pointer;width:38px;height:38px;transition:all var(--transition-fast);background:0 0;border:none;flex-shrink:0;justify-content:center;align-items:center;display:inline-flex;position:relative}.header-icon-btn[data-v-40f1a510]:hover{color:#fff;background:#ffffff1f}.header-icon-btn-light[data-v-40f1a510]{color:var(--text-secondary)}.header-icon-btn-light[data-v-40f1a510]:hover{background:var(--color-surface-alt);color:var(--text-primary)}.badge-dot[data-v-40f1a510]{background:var(--accent-orange);border:2px solid #1e40af99;border-radius:50%;width:8px;height:8px;position:absolute;top:7px;right:7px}.header-console-user[data-v-40f1a510]{align-items:center;gap:var(--space-2);border-radius:var(--radius-lg);padding:4px 8px 4px 4px;display:flex}.header-console-avatar[data-v-40f1a510]{border-radius:var(--radius-full);color:#fff;width:34px;height:34px;font-weight:var(--font-bold);font-size:var(--font-size-sm);background:linear-gradient(135deg,#f59e0b,#d97706);flex-shrink:0;justify-content:center;align-items:center;display:flex}.header-console-info[data-v-40f1a510]{flex-direction:column;line-height:1.3;display:flex}.header-console-name[data-v-40f1a510]{font-size:var(--font-size-sm);font-weight:var(--font-semibold);color:#fff;white-space:nowrap}.header-console-role[data-v-40f1a510]{font-size:var(--font-size-xs);color:#ffffffb3;white-space:nowrap}.header-user[data-v-40f1a510]{align-items:center;gap:var(--space-1);display:flex}@media (width<=1024px){.header-search[data-v-40f1a510],.header-console-info[data-v-40f1a510]{display:none}}@media (width<=640px){.header-console-user[data-v-40f1a510]{padding:0}}.default-layout[data-v-743b41c7]{flex-direction:column;min-height:100vh;display:flex}.content-review-banner[data-v-743b41c7]{color:#8a5a00;text-align:center;background:#fff7e6;border-bottom:1px solid #ffe0a3;justify-content:center;align-items:center;gap:8px;padding:8px 16px;font-size:12px;line-height:1.5;display:flex}.content-review-banner .icon[data-v-743b41c7]{color:#b7791f;flex:none}.default-layout>.app-footer[data-v-743b41c7]{margin-top:auto}.layout-bare[data-v-743b41c7]{flex-direction:column;flex:1;min-width:0;display:flex}.layout-bare[data-v-743b41c7]>*{width:100%;min-width:0}.admin-layout[data-v-7014b654]{background:var(--color-bg);flex-direction:column;min-height:100vh;display:flex}.admin-layout>.app-footer[data-v-7014b654]{margin-top:auto}
