:root{--color-primary: #083049;--color-primary-hover: #06263a;--color-secondary: #be4651;--color-secondary-hover: #ab3f49;--color-neutral-0: #ffffff;--color-neutral-50: #f8f9fa;--color-neutral-100: #f3f4f6;--color-neutral-200: #e5e7eb;--color-neutral-300: #d1d5db;--color-neutral-400: #9ca3af;--color-neutral-500: #6b7280;--color-neutral-700: #374151;--color-neutral-900: #111827;--color-success: #2f765f;--color-success-soft: #eef7f3;--color-warning: #8a6100;--color-warning-soft: #fff8e8;--color-error: #a73535;--color-error-soft: #fff1f1;--text-xs: 12px;--text-sm: 14px;--text-base: 16px;--text-lg: 20px;--text-xl: 24px;--text-2xl: 32px;--space-1: 4px;--space-2: 8px;--space-3: 12px;--space-4: 16px;--space-6: 24px;--space-8: 32px;--space-12: 48px;--space-16: 64px;--radius-control: 6px;--radius-panel: 8px;--border-default: 1px solid var(--color-neutral-200);--border-input: 1px solid var(--color-neutral-300);--focus-outline: 2px solid var(--color-secondary);--shadow-level-1: 0 1px 3px rgba(8, 48, 73, .08);--shadow-level-2: 0 4px 12px rgba(8, 48, 73, .1);--sidebar-width: 256px;--header-height: 64px;--control-height: 40px;--button-large-height: 48px;--content-max-width: 1600px;--table-min-width: 1040px;--master-table-min-width: 1280px;--brand-logo-size: 48px;--brand-logo-compact-size: 32px;--user-mark-size: 40px;--login-brand-width: 440px;--login-box-width: 440px;--lesson-cell-min-height: 88px;--page-min-width: 320px;--login-title-width: 320px;--brand-mark-size: 96px;--period-column-width: 112px;--master-column-width: 132px;--empty-panel-height: 160px;--skeleton-height: 560px;--sidebar-compact-width: 224px;--mobile-brand-height: 240px;--mobile-period-width: 96px;--student-list-mobile-width: 720px;--motion-fast: .16s;--motion-spin: .8s;--motion-pulse: 1.2s;--motion-instant: 1ms;--opacity-muted: .45;--login-image-overlay: rgba(8, 48, 73, .2);--login-background-position: center;--login-background-position-mobile: 72% center}*{box-sizing:border-box}html{color:var(--color-neutral-900);background:var(--color-neutral-50);font-family:Microsoft YaHei,PingFang SC,Noto Sans CJK SC,system-ui,sans-serif;font-size:var(--text-base)}body{margin:0;min-width:var(--page-min-width);min-height:100dvh;background:var(--color-neutral-50);font-weight:400;line-height:1.5}button,input,select{font:inherit}button,a{-webkit-tap-highlight-color:transparent}button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible{outline:var(--focus-outline);outline-offset:var(--space-1)}button:active,.button:active,.nav-item:active{transform:scale(.98)}h1,h2,h3,p{margin:0}h1,h2,h3{font-weight:600;line-height:1.25}a{color:inherit;text-decoration:none}.visually-hidden{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.centered-state{display:grid;min-height:100dvh;place-content:center;justify-items:center;gap:var(--space-4);color:var(--color-neutral-500);font-size:var(--text-sm)}.brand-loader{width:var(--space-8);height:var(--space-8);border:var(--space-1) solid var(--color-neutral-200);border-top-color:var(--color-secondary);border-radius:50%;animation:spin var(--motion-spin) linear infinite}.login-page{display:grid;grid-template-columns:var(--login-brand-width) minmax(0,1fr);min-height:100dvh;background-color:var(--login-image-overlay);background-image:url(/login-background-knowledge-network.webp);background-position:var(--login-background-position);background-size:cover;background-blend-mode:multiply}.login-brand-panel{position:relative;display:flex;flex-direction:column;justify-content:space-between;overflow:hidden;padding:var(--space-16) var(--space-12);color:var(--color-neutral-0);background:transparent}.login-brand-panel h1{max-width:var(--login-title-width);font-size:var(--text-xl)}.login-brand-mark{display:grid;width:var(--brand-mark-size);height:var(--brand-mark-size);place-items:center;border-radius:var(--radius-panel);background:var(--color-neutral-0)}.login-brand-mark img{width:var(--brand-logo-size);height:auto}.login-grid-motif{display:grid;grid-template-columns:repeat(3,var(--space-12));gap:var(--space-3);align-self:flex-end}.login-grid-motif span{display:block;height:var(--space-2);background:var(--color-secondary)}.login-action-panel{display:grid;place-items:center;padding:var(--space-8);background:transparent}.login-box{display:grid;width:min(100%,var(--login-box-width));gap:var(--space-6);padding:var(--space-8);border:var(--border-default);border-radius:var(--radius-panel);background:var(--color-neutral-0)}.login-heading{display:grid;gap:var(--space-2)}.login-heading span{color:var(--color-secondary);font-size:var(--text-sm);font-weight:600}.login-heading h2{color:var(--color-primary);font-size:var(--text-2xl)}.button{display:inline-flex;min-height:var(--control-height);align-items:center;justify-content:center;gap:var(--space-2);padding:0 var(--space-4);border-radius:var(--radius-control);font-size:var(--text-sm);font-weight:600;line-height:1;cursor:pointer;transition:background-color var(--motion-fast) ease,border-color var(--motion-fast) ease,transform var(--motion-fast) ease}.button.is-large{min-height:var(--button-large-height);justify-content:flex-start}.button.is-large svg:last-child{margin-left:auto}.button.is-primary{border:1px solid var(--color-primary);color:var(--color-neutral-0);background:var(--color-primary)}.button.is-primary:hover{border-color:var(--color-primary-hover);background:var(--color-primary-hover)}.button.is-secondary{border:1px solid var(--color-primary);color:var(--color-primary);background:var(--color-neutral-0)}.button.is-secondary:hover{background:var(--color-neutral-100)}.button:disabled,.button.is-disabled{border-color:var(--color-neutral-300);color:var(--color-neutral-400);background:var(--color-neutral-100);cursor:not-allowed;pointer-events:none}.demo-login{display:grid;gap:var(--space-3);padding-top:var(--space-6);border-top:var(--border-default)}.demo-login>span{color:var(--color-neutral-500);font-size:var(--text-sm)}.demo-role-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:var(--space-2)}.role-button{display:flex;min-height:var(--button-large-height);align-items:center;justify-content:center;gap:var(--space-2);padding:0 var(--space-3);border:var(--border-input);border-radius:var(--radius-control);color:var(--color-primary);background:var(--color-neutral-0);font-size:var(--text-sm);cursor:pointer}.role-button:hover{border-color:var(--color-primary);background:var(--color-neutral-50)}.role-button:disabled{color:var(--color-neutral-400);cursor:wait}.app-shell{display:grid;grid-template-columns:var(--sidebar-width) minmax(0,1fr);min-height:100dvh}.sidebar{position:sticky;top:0;display:flex;height:100dvh;flex-direction:column;gap:var(--space-8);padding:var(--space-6) var(--space-4);border-right:var(--border-default);background:var(--color-neutral-0)}.brand-lockup{display:flex;align-items:center;gap:var(--space-3);color:var(--color-primary);font-size:var(--text-sm);font-weight:600;line-height:1.25}.brand-logo{width:var(--brand-logo-size);height:var(--brand-logo-size);object-fit:contain;flex:0 0 auto}.brand-lockup.is-compact .brand-logo{width:var(--brand-logo-compact-size);height:var(--brand-logo-compact-size)}.primary-nav{display:grid;gap:var(--space-2)}.nav-item{display:flex;min-height:var(--button-large-height);align-items:center;gap:var(--space-3);padding:0 var(--space-3);border-radius:var(--radius-control);color:var(--color-neutral-500);font-size:var(--text-sm);font-weight:500;transition:color var(--motion-fast) ease,background-color var(--motion-fast) ease,transform var(--motion-fast) ease}.nav-item:hover{color:var(--color-primary);background:var(--color-neutral-50)}.nav-item.is-active{color:var(--color-neutral-0);background:var(--color-primary)}.sidebar-user{display:grid;grid-template-columns:var(--user-mark-size) minmax(0,1fr) var(--control-height);align-items:center;gap:var(--space-3);margin-top:auto;padding-top:var(--space-4);border-top:var(--border-default)}.user-mark{display:grid;width:var(--user-mark-size);height:var(--user-mark-size);place-items:center;border-radius:var(--radius-control);color:var(--color-secondary);background:var(--color-neutral-100)}.user-copy{display:grid;min-width:0}.user-copy strong,.user-copy span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.user-copy strong{color:var(--color-neutral-900);font-size:var(--text-sm);font-weight:600}.user-copy span{color:var(--color-neutral-500);font-size:var(--text-xs)}.icon-button{display:grid;width:var(--control-height);height:var(--control-height);place-items:center;padding:0;border:0;border-radius:var(--radius-control);color:var(--color-neutral-500);background:transparent;cursor:pointer}.icon-button:hover{color:var(--color-secondary);background:var(--color-neutral-100)}.app-main{min-width:0;background:var(--color-neutral-50)}.mobile-header,.mobile-nav{display:none}.page{display:grid;width:min(100%,var(--content-max-width));gap:var(--space-6);margin:0 auto;padding:var(--space-8)}.page-header{display:flex;min-height:var(--header-height);align-items:center;justify-content:space-between;gap:var(--space-4)}.page-header>div:first-child{display:grid;gap:var(--space-1)}.page-header h1{color:var(--color-primary);font-size:var(--text-xl)}.page-header p{color:var(--color-neutral-500);font-size:var(--text-sm)}.page-actions{display:flex;align-items:center;gap:var(--space-2)}.search-control,.select-control{display:flex;min-height:var(--control-height);align-items:center;gap:var(--space-2);border:var(--border-input);border-radius:var(--radius-control);color:var(--color-neutral-500);background:var(--color-neutral-0)}.search-control{padding:0 var(--space-3)}.search-control input,.select-control select{min-width:0;height:calc(var(--control-height) - var(--space-1));border:0;outline:0;color:var(--color-neutral-900);background:transparent;font-size:var(--text-sm)}.search-control input::placeholder{color:var(--color-neutral-500)}.select-control select{padding:0 var(--space-8) 0 var(--space-3);cursor:pointer}.table-frame{overflow:auto;border:var(--border-default);border-radius:var(--radius-panel);background:var(--color-neutral-0);scrollbar-color:var(--color-neutral-300) var(--color-neutral-100)}.schedule-views{min-width:0}.schedule-mobile{display:none}.schedule-table,.master-table{width:100%;border-collapse:separate;border-spacing:0;table-layout:fixed}.schedule-table{min-width:var(--table-min-width)}.master-table{min-width:var(--master-table-min-width)}.schedule-table th,.schedule-table td,.master-table th,.master-table td{border-right:var(--border-default);border-bottom:var(--border-default)}.schedule-table tr>*:last-child,.master-table tr>*:last-child{border-right:0}.schedule-table tbody tr:last-child>*,.master-table tbody tr:last-child>*{border-bottom:0}.schedule-table thead th,.master-table thead th{position:sticky;top:0;z-index:2;height:var(--button-large-height);padding:var(--space-3);color:var(--color-primary);background:var(--color-neutral-100);font-size:var(--text-sm);font-weight:600;text-align:left}.schedule-table th:first-child,.master-table th:first-child{position:sticky;left:0;z-index:3;width:var(--period-column-width);background:var(--color-neutral-100)}.schedule-table tbody th{padding:var(--space-3);color:var(--color-primary);font-size:var(--text-sm);text-align:left;vertical-align:top}.schedule-table tbody th span,.schedule-table tbody th small{display:block}.schedule-table tbody th small{margin-top:var(--space-1);color:var(--color-neutral-500);font-size:var(--text-xs);font-weight:400}.schedule-table td{min-height:var(--lesson-cell-min-height);padding:var(--space-2);vertical-align:top}.lesson-stack{display:grid;gap:var(--space-2)}.lesson{display:grid;gap:var(--space-1);padding:var(--space-3);border-left:var(--space-1) solid var(--color-secondary);border-radius:var(--radius-control);background:var(--color-neutral-50)}.lesson strong,.master-lesson strong{color:var(--color-primary);font-size:var(--text-sm);font-weight:600}.lesson span,.master-lesson span{color:var(--color-neutral-500);font-size:var(--text-xs)}.empty-cell{color:var(--color-neutral-400);font-size:var(--text-xs)}.master-table th,.master-table td{width:var(--master-column-width)}.master-table tbody th{padding:var(--space-3);color:var(--color-primary);background:var(--color-neutral-100);font-size:var(--text-sm);text-align:left}.master-table td{padding:var(--space-2);vertical-align:top}.master-lesson{display:grid;gap:var(--space-1);padding:var(--space-2);border-radius:var(--radius-control);background:var(--color-neutral-50)}.master-lesson+.master-lesson{margin-top:var(--space-2)}.weekday-tabs{display:flex;gap:var(--space-2);overflow-x:auto;padding-bottom:var(--space-1)}.weekday-tabs button{min-height:var(--control-height);flex:0 0 auto;padding:0 var(--space-4);border:var(--border-input);border-radius:var(--radius-control);color:var(--color-neutral-500);background:var(--color-neutral-0);font-size:var(--text-sm);cursor:pointer}.weekday-tabs button:hover{border-color:var(--color-primary);color:var(--color-primary)}.weekday-tabs button.is-active{border-color:var(--color-primary);color:var(--color-neutral-0);background:var(--color-primary)}.status-banner{display:flex;align-items:center;gap:var(--space-2);min-height:var(--control-height);padding:var(--space-2) var(--space-3);border-radius:var(--radius-control);font-size:var(--text-sm)}.status-banner.is-success{color:var(--color-success);background:var(--color-success-soft)}.status-banner.is-error{color:var(--color-error);background:var(--color-error-soft)}.status-banner.is-info{color:var(--color-primary);background:var(--color-neutral-100)}.empty-panel{display:grid;min-height:var(--empty-panel-height);place-items:center;color:var(--color-neutral-500);font-size:var(--text-sm)}.schedule-skeleton{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:var(--space-2);min-height:var(--skeleton-height);padding:var(--space-4);border:var(--border-default);border-radius:var(--radius-panel);background:var(--color-neutral-0)}.schedule-skeleton span{display:block;border-radius:var(--radius-control);background:var(--color-neutral-100);animation:pulse var(--motion-pulse) ease-in-out infinite alternate}.import-panel{display:grid;gap:var(--space-6);padding:var(--space-6);border:var(--border-default);border-radius:var(--radius-panel);background:var(--color-neutral-0)}.import-title{display:flex;align-items:center;gap:var(--space-3);color:var(--color-secondary)}.import-title>div{display:grid;gap:var(--space-1)}.import-title h2{color:var(--color-primary);font-size:var(--text-lg)}.import-title span{color:var(--color-neutral-500);font-size:var(--text-sm)}.file-row{display:grid;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:var(--space-3)}.file-name{overflow:hidden;color:var(--color-neutral-500);font-size:var(--text-sm);text-overflow:ellipsis;white-space:nowrap}.metric-row{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:var(--space-4)}.metric{display:grid;gap:var(--space-3);padding:var(--space-6);border:var(--border-default);border-radius:var(--radius-panel);background:var(--color-neutral-0)}.metric span{color:var(--color-neutral-500);font-size:var(--text-sm)}.metric strong{color:var(--color-primary);font-size:var(--text-2xl)}.student-list{overflow:hidden;border:var(--border-default);border-radius:var(--radius-panel);background:var(--color-neutral-0)}.student-list-header,.student-list-row{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:var(--space-4);align-items:center;min-height:var(--button-large-height);padding:0 var(--space-4);border-bottom:var(--border-default)}.student-list-header{color:var(--color-primary);background:var(--color-neutral-100);font-size:var(--text-sm);font-weight:600}.student-list-row{color:var(--color-neutral-500);font-size:var(--text-sm)}.student-list-row:last-child{border-bottom:0}.student-list-row strong{color:var(--color-neutral-900);font-weight:600}.spin{animation:spin var(--motion-spin) linear infinite}@keyframes spin{to{transform:rotate(360deg)}}@keyframes pulse{to{opacity:var(--opacity-muted)}}@media(max-width:1024px){:root{--sidebar-width: var(--sidebar-compact-width)}.page{padding:var(--space-6)}.page-header{align-items:flex-start;flex-direction:column}.page-actions{width:100%}.search-control,.select-control{flex:1 1 auto}}@media(max-width:768px){.login-page{grid-template-columns:1fr;background-position:var(--login-background-position-mobile)}.login-brand-panel{min-height:var(--mobile-brand-height);padding:var(--space-8) var(--space-6)}.login-brand-panel h1{max-width:none;font-size:var(--text-xl)}.login-brand-mark{width:var(--space-16);height:var(--space-16)}.login-grid-motif{display:none}.login-action-panel{padding:var(--space-6) var(--space-4)}.login-box{padding:var(--space-6)}.demo-role-grid{grid-template-columns:1fr}.app-shell{display:block}.sidebar{display:none}.mobile-header{display:flex;height:var(--header-height);align-items:center;justify-content:space-between;padding:0 var(--space-4);border-bottom:var(--border-default);background:var(--color-neutral-0)}.mobile-nav{display:flex;gap:var(--space-1);overflow-x:auto;padding:var(--space-2) var(--space-4);border-bottom:var(--border-default);background:var(--color-neutral-0)}.mobile-nav-item{display:flex;min-height:var(--control-height);flex:0 0 auto;align-items:center;gap:var(--space-2);padding:0 var(--space-3);border-radius:var(--radius-control);color:var(--color-neutral-500);font-size:var(--text-sm)}.mobile-nav-item.is-active{color:var(--color-neutral-0);background:var(--color-primary)}.page{gap:var(--space-4);padding:var(--space-4)}.page-actions{align-items:stretch;flex-direction:column}.file-row{grid-template-columns:1fr}.file-row .button{width:100%}.metric-row{grid-template-columns:1fr}.schedule-skeleton{grid-template-columns:repeat(2,minmax(0,1fr))}.schedule-desktop{display:none}.schedule-mobile{display:grid;gap:var(--space-3)}.schedule-mobile .weekday-tabs button{padding:0 var(--space-3)}.mobile-day-list{overflow:hidden;border:var(--border-default);border-radius:var(--radius-panel);background:var(--color-neutral-0)}.mobile-day-row{display:grid;grid-template-columns:var(--mobile-period-width) minmax(0,1fr);min-height:var(--lesson-cell-min-height);border-bottom:var(--border-default)}.mobile-day-row:last-child{border-bottom:0}.mobile-day-row>div{padding:var(--space-3)}.mobile-day-row>div:last-child{border-left:var(--border-default)}.mobile-period{display:grid;align-content:start;gap:var(--space-1);color:var(--color-primary)}.mobile-period strong{font-size:var(--text-sm)}.mobile-period span{color:var(--color-neutral-500);font-size:var(--text-xs)}.student-list{overflow-x:auto}.student-list-header,.student-list-row{min-width:var(--student-list-mobile-width)}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{scroll-behavior:auto;animation-duration:var(--motion-instant);animation-iteration-count:1;transition-duration:var(--motion-instant)}}
