body{background:var(--surface-page);font-family:var(--font-sans)}.app-frame{background:var(--surface-page)}.app-content{background:0 0}.topbar{background:var(--surface-panel);-webkit-backdrop-filter:none;backdrop-filter:none;border-color:var(--border-default)}.top-breadcrumb i{color:var(--text-tertiary)}.notification-button{background:var(--surface-subtle)}.notification-button:hover,.user-menu-trigger:hover,.user-menu-trigger[aria-expanded=true]{border-color:var(--brand-200)}.user-menu-panel{box-shadow:var(--shadow-floating)}.public-header,.public-footer{background:var(--surface-panel)}.public-header .brand-mark{border-radius:7px}.app-sidebar{color:var(--text-sidebar);background:var(--surface-sidebar);border-right-color:var(--border-sidebar);box-shadow:none}.sidebar-brand{color:var(--text-primary);border-bottom-color:var(--border-sidebar)}.sidebar-brand small{color:var(--text-sidebar-muted)}.sidebar-brand .company-logo{background:var(--brand-600);border-radius:9px;padding:0}.sidebar-role{color:var(--text-sidebar-muted);background:var(--surface-subtle);border-color:var(--border-sidebar)}.sidebar-role .role-dot{background:var(--brand-600)}.sidebar-nav{scrollbar-color:var(--neutral-300) transparent;gap:20px}.sidebar-nav section>p{color:var(--text-sidebar-muted);letter-spacing:.04em;font-size:11px;font-weight:500}.sidebar-nav a{min-height:40px;color:var(--text-sidebar);border-left:2px solid #0000;border-radius:6px;padding:9px 12px;font-size:13px;font-weight:500}.sidebar-nav a:hover{color:var(--text-primary);background:var(--surface-sidebar-hover)}.sidebar-nav a.active{color:var(--brand-800);background:var(--brand-50);border-left-color:var(--brand-600);font-weight:600}.sidebar-nav a:focus-visible{color:var(--text-primary);background:var(--surface-sidebar-hover);outline:2px solid var(--brand-400);outline-offset:-2px;box-shadow:none}.sidebar-footer{color:var(--text-sidebar-muted);border-color:var(--border-sidebar)}.sidebar-footer strong{color:var(--text-sidebar)}.panel,.ui-card,.table-panel,.notice-card,.dashboard-card,.class-card,.status-card{border-color:var(--border-default);border-radius:var(--radius-md);box-shadow:var(--shadow-panel)}.app-content .text-link,.app-content .quiet-link{color:var(--text-link)}.app-content .text-link:hover,.app-content .quiet-link:hover{color:var(--brand-800);text-underline-offset:3px;text-decoration:underline}.page-heading,.workspace-heading{background:0 0}.app-content .page-heading h1,.app-content .workspace-heading h1,.entity-page-heading h1,.workbench-heading h1{color:var(--text-primary);letter-spacing:-.025em;font-weight:650}.eyebrow,.section-kicker{color:var(--text-secondary)}.app-content .eyebrow{color:var(--brand-700)}.button-link,button,.secondary-button{border-radius:var(--button-radius)}.secondary-button{border-color:var(--border-strong)}input,select,textarea{border-color:var(--field-border);border-radius:var(--field-radius)}input:focus,select:focus,textarea:focus{border-color:var(--border-focus);box-shadow:var(--focus-ring);outline:none}input[type=checkbox],input[type=radio]{accent-color:var(--brand-600)}.role-chip,.count-chip{color:var(--brand-800);background:var(--brand-50);border-radius:var(--badge-radius)}.class-row:hover{background:var(--surface-subtle);border-color:var(--brand-200)}.cover-placeholder{color:var(--text-secondary);background:linear-gradient(135deg,var(--brand-100),var(--neutral-50))}.class-cover,.detail-cover{background:var(--brand-50)}.empty-state,.role-option{background:var(--surface-subtle)}.role-option:hover,.role-option.active{color:var(--brand-800);background:var(--brand-50);border-color:var(--brand-200)}.auth-card,.message-panel,.attendance-display{box-shadow:var(--shadow-panel);border-radius:10px}.hero-card{border-radius:10px}.app-content :is(.table-panel,.entity-workspace) th,th{color:var(--text-secondary);background:var(--surface-subtle)}.app-content :is(.table-panel,.entity-workspace) tbody tr:hover{background:var(--surface-subtle)}.class-space-page .role-chip{color:var(--brand-800);background:var(--brand-50);border-color:var(--brand-100)}.workbench-summary{background:0 0;border:0;gap:16px}.workbench-summary>div,.workbench-summary>div.is-focus{border:1px solid var(--border-default);border-radius:var(--radius-md);background:var(--surface-panel);box-shadow:var(--shadow-panel)}.workbench-summary>div+div{border-left:1px solid var(--border-default)}.workbench-summary>div>strong{color:var(--text-primary);font-weight:600}.workbench-summary .workbench-metric-icon{color:var(--brand-700);background:var(--brand-50)}.workbench-grid{border:0;gap:20px}.workbench-grid>.workbench-section{border:1px solid var(--border-default);border-radius:var(--radius-md);background:var(--surface-panel);box-shadow:var(--shadow-panel);padding:22px}.workbench-priority .section-heading>span{white-space:nowrap;flex-shrink:0}.workbench-priority .workbench-task-list{border-color:var(--border-default)}.workbench-priority .workbench-task-list>a:hover{background:var(--surface-subtle);box-shadow:inset 3px 0 0 var(--brand-500)}.workbench-running{border-color:var(--border-default);border-radius:var(--radius-md);box-shadow:var(--shadow-panel)}.workbench-quick{background:var(--surface-panel);padding:20px 22px 22px}.workbench-class-row:hover{background:var(--surface-subtle)}.instructor-feedback-layout>.workbench-section{background:var(--surface-panel);border:1px solid var(--border-default);border-radius:var(--radius-md);box-shadow:var(--shadow-panel);padding:22px}.entity-workspace,.operation-queue,.class-action-rail{background:var(--surface-panel);border-color:var(--border-default);border-radius:var(--radius-md)}.class-space-header{background:var(--surface-panel);border:1px solid var(--border-default);border-radius:var(--radius-md);padding:20px 22px 0}.class-space-page>.panel{background:var(--surface-panel);border:1px solid var(--border-default);border-radius:var(--radius-md);box-shadow:var(--shadow-panel);margin-top:18px;padding:22px}.class-space-page>.two-column{background:var(--surface-panel);border:1px solid var(--border-default);border-radius:var(--radius-md);margin-top:18px}.app-content .wide-card{background:var(--surface-panel);border:1px solid var(--border-default);border-radius:var(--radius-md);box-shadow:var(--shadow-panel);padding:24px}.app-content .wide-card>.form-grid{border:0;padding-block:0}.form-section{border-color:var(--border-default)}.form-page,.entity-page,.class-space-page,.workbench-page{min-width:0}.entity-toolbar,.compact-filter-toolbar{border-color:var(--border-default)}.class-action-row{padding-inline:18px}.question-number{background:var(--brand-600)}.exam-question-card,.exam-option,.mobile-submit-bar{border-color:var(--border-default);border-radius:var(--radius-md)}.exam-option input{accent-color:var(--brand-600)}.exam-option:has(input:checked){color:var(--brand-800);background:var(--brand-50);border-color:var(--brand-400)}.ai-exam-evaluation{border-left-color:var(--status-ai);background:var(--status-ai-surface)}.login-product-shell{border-color:var(--border-default);border-radius:10px;box-shadow:0 10px 36px #172f550f}.login-brand-panel{background:var(--brand-800);background-image:linear-gradient(145deg,var(--brand-900),var(--brand-700));background-size:auto}.login-brand-panel .eyebrow{color:var(--brand-200)}.login-brand-panel h1{color:#fff;font-weight:650}.login-brand-panel p{color:var(--brand-100)}.login-brand-panel li{color:var(--brand-50);background:#ffffff08;border-color:#ffffff26;border-radius:5px}.login-product-card{box-shadow:none}.notification-button b{background:var(--brand-600)}@media (min-width:901px){.app-frame{grid-template-columns:232px minmax(0,1fr)}.app-sidebar{width:232px;padding:20px 12px 14px}.topbar{min-height:64px}.app-content{padding:28px 32px 48px}}@media (max-width:1100px) and (min-width:768px){.workbench-summary{gap:10px}.workbench-summary>div{padding:16px 12px}.workbench-grid>.workbench-section{padding:18px}}@media (max-width:767px){.workbench-summary{gap:10px}.workbench-summary>div{gap:8px;padding:12px 10px}.workbench-grid{gap:14px}.workbench-grid>.workbench-section,.workbench-quick,.instructor-feedback-layout>.workbench-section{padding:16px}.class-space-header{padding:16px 16px 0}.class-space-page>.panel,.app-content .wide-card{padding:16px}.class-space-page>.panel,.class-space-page>.two-column{margin-top:14px}.class-action-row{padding-inline:14px}.public-content{padding-top:20px}}@media (min-width:901px){.app-content{width:100%;max-width:none;margin-inline:0}.app-content>:is(.workspace-stack,.entity-page,.workbench-page,.class-space-page,.class-edit-page,.short-training-workspace),.app-content :is(.form-page,.class-create-form,.attendance-create-form,.compact-assignment-form,.assignment-create-page,.short-exam-builder,.point-operation,.attendance-course-notice),.app-content .wide-card,.app-content .wide-card~.panel{width:100%;max-width:none}.app-content .ppt-task-detail>.panel>.form-grid{width:100%}}@media (min-width:1101px){.workbench-grid{grid-template-columns:minmax(0,1fr) clamp(320px,26%,420px)}.instructor-feedback-layout{grid-template-columns:minmax(0,1fr) clamp(260px,23%,360px)}.short-training-main{grid-template-columns:minmax(0,1fr) clamp(300px,26%,420px)}}@media (min-width:1800px){.workbench-priority .workbench-task-list{background:0 0;border:0;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;overflow:visible}.workbench-priority .workbench-task-list>a,.workbench-priority .workbench-task-list>a:nth-last-child(-n+2){border:1px solid var(--border-default);border-radius:var(--radius-sm)}}.short-training-workspace{gap:22px}.short-training-workspace .short-training-heading{border-top:3px solid var(--brand-600);border-radius:10px;align-items:center;padding:26px 28px}.short-training-heading .section-kicker{color:var(--brand-700)}.short-training-heading h1{margin:8px 0 20px;font-size:28px;font-weight:650}.short-training-meta{gap:16px 36px}.short-training-meta>:is(span,time){color:var(--text-primary);gap:5px;font-size:13px;display:grid}.short-training-meta small{color:var(--text-secondary);font-size:11px}.short-training-lifecycle{align-self:flex-start;padding-top:4px}.short-training-lifecycle .danger-button{color:var(--text-danger);background:var(--surface-panel);border:1px solid var(--border-default);padding-inline:14px}.short-training-lifecycle .danger-button:hover{color:var(--text-danger);background:var(--red-50);border-color:var(--red-200)}.short-training-workspace .short-training-summary{background:0 0;border:0;gap:16px;padding:0;overflow:visible}.short-training-workspace .short-training-summary>div{background:var(--surface-panel);border:1px solid var(--border-default);min-height:132px;box-shadow:var(--shadow-panel);border-radius:8px;grid-template-columns:minmax(0,1fr);gap:8px;padding:20px 22px;position:relative}.short-training-workspace .short-training-summary>div.is-focus{border-color:var(--brand-200);box-shadow:inset 3px 0 0 var(--brand-600)}.short-training-summary>div>strong{color:var(--text-primary);grid-area:auto;justify-self:start;font-size:32px;font-weight:650}.short-training-summary>div.is-focus>strong{color:var(--brand-700)}.short-training-workspace .short-training-main{align-items:stretch;gap:20px}.short-training-workspace .short-training-operations{border-radius:10px;padding:24px}.short-training-operations>.section-heading{margin-bottom:20px}.short-training-operations .section-kicker{margin-bottom:6px}.short-training-operations h2{margin:0;font-size:19px}.short-training-operations .short-operation-list{grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}.short-training-operations .short-operation-list>a{background:var(--surface-panel);border-color:var(--border-default);grid-template-rows:auto 1fr auto;grid-template-columns:minmax(0,1fr) 24px;gap:18px;min-height:230px;padding:24px;transition:border-color .15s,background-color .15s}.short-training-operations .short-operation-list>a:hover{background:var(--brand-50);border-color:var(--brand-300);box-shadow:none}.short-training-operations .short-operation-list>a:focus-visible{outline:2px solid var(--brand-500);outline-offset:3px}.short-training-operations .short-operation-mark{width:46px;height:46px;color:var(--brand-700);background:var(--brand-50);border:1px solid var(--brand-100);border-radius:10px;grid-column:1/-1}.short-operation-mark svg{width:25px;height:25px}.short-training-operations .short-operation-list>a>div{grid-column:1/-1;align-content:start;gap:9px}.short-training-operations .short-operation-list strong{font-size:18px;font-weight:650}.short-training-operations .short-operation-list>a>div>span{max-width:48ch;font-size:13px;line-height:1.7}.short-training-operations .short-operation-list em{color:var(--brand-700);font-size:13px;font-weight:600;display:block}.short-training-operations .short-operation-list i{color:var(--brand-600);grid-area:3/2;font-size:20px}.short-training-workspace .short-training-next{background:var(--surface-panel);border:1px solid var(--border-default);border-radius:10px;flex-direction:column;align-items:flex-start;padding:26px;display:flex}.short-training-next:before{display:none}.short-training-next h2{margin:12px 0;font-size:23px}.short-training-next>p:not(.section-kicker){margin:0 0 24px;line-height:1.85}.short-training-next .ui-button{min-height:42px;color:var(--text-inverse);background:var(--action-primary);border-color:var(--action-primary);margin-top:auto}.short-training-next .ui-button:hover{background:var(--action-primary-hover)}@media (max-width:1100px){.short-training-workspace .short-training-main{grid-template-columns:minmax(0,1fr)}.short-training-workspace .short-training-next{padding:22px}.short-training-next .ui-button{width:auto;min-width:200px}}@media (max-width:600px){.short-training-workspace .short-training-heading{gap:20px;padding:20px}.short-training-heading h1{margin-bottom:16px;font-size:24px}.short-training-meta{gap:14px}.short-training-lifecycle{border-top:1px solid var(--border-default);width:100%;padding-top:14px}.short-training-workspace .short-training-summary{gap:10px}.short-training-workspace .short-training-summary>div{gap:6px;min-height:116px;padding:16px}.short-training-summary>div>strong{font-size:28px}.short-training-workspace .short-training-operations{padding:18px}.short-training-operations .short-operation-list{grid-template-columns:minmax(0,1fr);gap:12px}.short-training-operations .short-operation-list>a{gap:14px;min-height:200px;padding:20px}.short-training-next .ui-button{width:100%;min-width:0}}@media (prefers-reduced-motion:reduce){.short-training-operations .short-operation-list>a{transition:none}}
.role-filters{flex-wrap:wrap;align-items:flex-end;gap:12px;margin-bottom:22px;display:flex}.role-filters label{gap:8px;min-width:180px;font-size:13px;display:grid}.role-filters label:first-child{flex:1}.role-filters input,.role-filters select{width:100%;min-height:42px}.role-pagination{color:#718096;border-top:1px solid #e5eaf1;justify-content:space-between;align-items:center;gap:14px;margin-top:20px;padding-top:20px;font-size:13px;display:flex}.role-pagination>div{gap:16px;display:flex}.role-pagination a{color:#7e1f28}.app-frame[data-role]:not([data-role=ADMIN]) .page-heading{background:#fff;border:1px solid #e1e6ee;border-radius:12px;margin-bottom:0;padding:24px}.app-frame[data-role]:not([data-role=ADMIN]) .panel{background:#fff;border:1px solid #e1e6ee;border-radius:12px}.app-frame[data-role]:not([data-role=ADMIN]) .workspace-stack{gap:22px}.app-frame[data-role]:not([data-role=ADMIN]) .class-row{gap:18px}.app-frame[data-role]:not([data-role=ADMIN]) .class-row>div{min-width:0}.app-frame[data-role]:not([data-role=ADMIN]) .class-row strong,.app-frame[data-role]:not([data-role=ADMIN]) .class-row span{overflow-wrap:anywhere}@media (max-width:640px){.role-filters{flex-direction:column;align-items:stretch}.role-filters label{width:100%;min-width:0}.role-filters button{min-height:44px}.role-pagination{flex-wrap:wrap}.app-frame[data-role]:not([data-role=ADMIN]) .page-heading{padding:18px}.app-frame[data-role]:not([data-role=ADMIN]) .class-row{flex-direction:column;align-items:stretch;padding:18px 0}.app-frame[data-role]:not([data-role=ADMIN]) .class-row>a{align-self:flex-start;min-height:44px}.app-frame[data-role]:not([data-role=ADMIN]) .header-actions{flex-wrap:wrap}.app-frame[data-role]:not([data-role=ADMIN]) .role-responsive-table{border-collapse:separate;width:100%;display:block;min-width:0!important}.app-frame[data-role]:not([data-role=ADMIN]) .role-responsive-table thead{clip-path:inset(50%);width:1px;height:1px;position:absolute;overflow:hidden}.app-frame[data-role]:not([data-role=ADMIN]) .role-responsive-table tbody{gap:14px;display:grid}.app-frame[data-role]:not([data-role=ADMIN]) .role-responsive-table tr{background:#fff;border:1px solid #e1e6ee;border-radius:10px;padding:10px 14px;display:block}.app-frame[data-role]:not([data-role=ADMIN]) .role-responsive-table td{white-space:normal;overflow-wrap:anywhere;border:0;min-width:0;padding:8px 0;display:block}.app-frame[data-role]:not([data-role=ADMIN]) .role-responsive-table td:before{content:attr(data-label);color:#7b8797;margin-bottom:4px;font-size:11px;line-height:1.6;display:block}.app-frame[data-role]:not([data-role=ADMIN]) .role-responsive-table td:empty{display:none}.app-frame[data-role]:not([data-role=ADMIN]) input:not([type=checkbox]):not([type=radio]),.app-frame[data-role]:not([data-role=ADMIN]) select,.app-frame[data-role]:not([data-role=ADMIN]) textarea{min-width:0;max-width:100%}.app-frame[data-role]:not([data-role=ADMIN]) .ui-button{min-height:44px}}
