:root{font-family:Microsoft YaHei,PingFang SC,Segoe UI,sans-serif;color:#1f2329;background:#f5f7fa;font-synthesis:none;text-rendering:optimizeLegibility;--primary: #4c9bff;--primary-dark: #2f78c9;--primary-soft: #edf5ff;--surface: #ffffff;--page: #f5f7fa;--text: #1f2329;--muted: #646a73;--border: #e5e6eb;--success: #1fad66;--success-soft: #eaf8f1;--warning: #d8870a;--warning-soft: #fff6e5;--danger: #d92d20;--danger-soft: #fff0ef;--cyan: #0e8ca8;--cyan-soft: #e7f8fb;--sidebar-width: 260px}@font-face{font-family:FangZhengCuHuoYiJian;src:url(/fangzheng-cu-huo-yi-jian.ttf) format("truetype");font-display:swap}*{box-sizing:border-box}html,body,#root{min-width:320px;min-height:100%;margin:0}body{min-height:100vh;overflow-x:hidden}button,input,select{font:inherit;letter-spacing:0}button,a{-webkit-tap-highlight-color:transparent}button{cursor:pointer}button:disabled{cursor:not-allowed;opacity:.55}a{color:inherit;text-decoration:none}h1,h2,h3,p{margin:0}.button{min-height:36px;padding:0 15px;border:1px solid transparent;border-radius:6px;display:inline-flex;align-items:center;justify-content:center;gap:7px;font-size:14px;font-weight:600;transition:background-color .16s ease,border-color .16s ease}.button.primary{background:var(--primary);color:#fff}.button.primary:hover:not(:disabled){background:#3c89e8}.button.secondary{background:#fff;border-color:#d6d9df;color:#30343b}.button.secondary:hover:not(:disabled){border-color:#9ec8ff;color:var(--primary);background:#f7fbff}.button.danger{background:#fff;border-color:#f0b9b4;color:var(--danger)}.button.danger:hover:not(:disabled){background:var(--danger-soft);border-color:#f09a92}.button.ghost{background:transparent;border-color:transparent;color:#4e5969}.button.ghost:hover:not(:disabled){background:#f0f2f5}.button.full{width:100%}.icon-button{width:36px;height:36px;padding:0;border:0;border-radius:6px;display:inline-grid;place-items:center;color:#4e5969;background:transparent}.icon-button:hover{background:#edf2f7;color:var(--primary)}.icon-button.danger:hover{color:var(--danger);background:var(--danger-soft)}.boot-screen{min-height:100vh;display:grid;place-content:center;justify-items:center;gap:14px;color:var(--muted);background:var(--page)}.boot-screen img{width:54px;height:54px;animation:pulse 1.3s ease-in-out infinite}@keyframes pulse{50%{opacity:.45}}.spin{animation:spin .9s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.login-page{min-height:100vh;display:grid;grid-template-columns:minmax(460px,1.25fr) minmax(420px,.75fr);background:#fff}.login-brand{position:relative;overflow:hidden;min-height:620px;color:#fff;background:var(--primary-dark)}.login-brand-inner{position:relative;z-index:1;min-height:100%;padding:68px 72px;display:flex;flex-direction:column}.login-brand-inner>img{position:absolute;top:115px;left:50%;width:min(1024px,calc(100% - 144px));height:min(500px,calc((100vw - 144px) * .48828125));transform:translate(-50%);object-fit:contain;background:transparent}.login-brand-copy{position:absolute;top:91%;left:50%;width:min(720px,calc(100% - 144px));transform:translate(-50%,-50%);text-align:center}.login-brand-copy h1{font-family:FangZhengCuHuoYiJian,Microsoft YaHei,PingFang SC,sans-serif;font-size:40px;line-height:1.3;font-weight:700}.login-panel{min-height:620px;display:grid;place-items:center;padding:48px;background:#fff}.login-form{width:min(100%,390px)}.login-heading{margin-bottom:34px}.eyebrow{display:block;margin-bottom:9px;color:var(--primary);font-size:11px;font-weight:800}.login-heading h2{font-size:28px;line-height:1.35}.login-heading p{margin-top:8px;color:var(--muted);font-size:14px}.field{display:block;margin-top:20px}.field>span{display:block;margin-bottom:8px;font-size:14px;font-weight:600}.input-with-icon{height:46px;padding:0 13px;border:1px solid #d6d9df;border-radius:6px;display:flex;align-items:center;gap:10px;color:#8d939d;transition:border-color .16s,box-shadow .16s}.input-with-icon:focus-within{border-color:var(--primary);box-shadow:0 0 0 3px #1677ff1a}.input-with-icon input{min-width:0;flex:1;border:0;outline:0;color:var(--text);background:transparent;font-size:14px}.input-with-icon input::placeholder{color:#a8adb5}.input-action{width:32px;height:32px;margin-right:-7px;border:0;background:transparent;color:#8d939d;display:grid;place-items:center}.login-error{min-height:36px;padding-top:12px;visibility:hidden;color:var(--danger);font-size:13px}.login-error.visible{visibility:visible}.login-submit{width:100%;height:44px;margin-top:2px}.login-footnote{margin-top:18px;color:#8d939d;text-align:center;font-size:12px}.app-layout{min-height:100vh;background:var(--page)}.sidebar{position:fixed;z-index:30;inset:0 auto 0 0;width:var(--sidebar-width);display:flex;flex-direction:column;color:#fff;background:#245b91}.brand-lockup{height:74px;padding:0 18px;display:flex;align-items:center;gap:11px;border-bottom:1px solid rgba(255,255,255,.11)}.brand-lockup img{width:38px;height:38px;object-fit:contain;flex:0 0 auto;background:transparent}.brand-lockup>div{min-width:0}.brand-lockup strong{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:14px}.brand-lockup span{display:block;margin-top:4px;color:#83b4e7;font-size:8px;font-weight:700}.sidebar-close{display:none;margin-left:auto;color:#fff}.main-nav{flex:1;padding:17px 12px;overflow-y:auto}.nav-label{padding:5px 12px 8px;color:#7ca8d4;font-size:11px;font-weight:700}.nav-label.spaced,.nav-primary-groups{margin-top:16px}.nav-item-group{margin:3px 0}.main-nav a{min-height:42px;margin:3px 0;padding:0 11px;border-radius:6px;display:flex;align-items:center;gap:11px;color:#fff;font-size:14px}.main-nav a span,.nav-parent-button span{min-width:0;white-space:nowrap}.main-nav a:hover{color:#fff;background:#ffffff12}.main-nav a.active{color:#fff;background:var(--primary);box-shadow:0 6px 16px #00000024}.nav-basic-data{margin-top:16px}.nav-parent-button{width:100%;min-height:42px;margin:3px 0;padding:0 11px;border:0;border-radius:6px;display:flex;align-items:center;gap:11px;color:#fff;background:transparent;font:inherit;font-size:14px;text-align:left;cursor:pointer}.nav-parent-button:hover{color:#fff;background:#ffffff12}.nav-parent-button.branch-active{color:#fff;background:#ffffff17}.nav-subitems{margin:0 0 5px 12px;padding-left:8px;border-left:1px solid rgba(191,213,234,.24)}.nav-subitems a{min-height:35px;margin:2px 0;padding-left:13px;color:#fff;font-size:13px}.nav-subitems a.active{color:#fff;background:#4c9bffeb;box-shadow:none}.nav-chevron{margin-left:auto;opacity:.55}.nav-item-chevron{transition:transform .16s ease}.nav-item-chevron.open{transform:rotate(180deg)}.sidebar-user{width:100%;min-height:70px;padding:13px 17px;border:0;border-top:1px solid rgba(255,255,255,.11);display:flex;align-items:center;gap:10px;color:#fff;background:transparent;text-align:left}.sidebar-user:hover{background:#ffffff0f}.sidebar-user strong{display:block;font-size:13px}.sidebar-user span{display:block;margin-top:3px;color:#8fb6dc;font-size:11px}.avatar{width:36px;height:36px;border-radius:50%;display:inline-grid;place-items:center;flex:0 0 auto;color:#fff;background:#3086df;font-size:14px;font-weight:700}.avatar.small{width:30px;height:30px;font-size:12px}.avatar.student{width:34px;height:34px;color:#1261b5;background:#e3f0ff}.app-main{min-height:100vh;margin-left:var(--sidebar-width)}.topbar{position:sticky;z-index:20;top:0;height:58px;padding:0 22px;border-bottom:1px solid var(--border);display:flex;align-items:center;background:#fffffff5}.menu-button{display:none}.topbar-context{display:flex;align-items:center;gap:10px;color:var(--muted);font-size:13px}.topbar-context i{width:1px;height:13px;background:var(--border)}.topbar-actions{margin-left:auto;display:flex;align-items:center;gap:4px}.notification-button{position:relative}.notification-button>span{position:absolute;top:2px;right:1px;min-width:17px;height:17px;padding:0 4px;border:2px solid #fff;border-radius:9px;display:grid;place-items:center;color:#fff;background:var(--danger);font-size:9px;font-weight:700}.user-button{height:38px;margin:0 3px 0 6px;padding:0 9px 0 4px;border:0;border-radius:6px;display:flex;align-items:center;gap:8px;color:var(--text);background:transparent;font-size:13px}.user-button:hover{background:#f1f4f7}.message-popover{position:absolute;top:52px;right:74px;width:280px;padding:17px;border:1px solid var(--border);border-radius:7px;background:#fff;box-shadow:0 14px 38px #1f232929}.popover-title{display:flex;align-items:center;gap:9px}.message-popover p{margin:11px 0 16px;color:var(--muted);font-size:13px}.content{width:100%;max-width:1640px;margin:0 auto;padding:24px 26px 38px}.archive-filter{display:flex;align-items:end;gap:14px;margin-bottom:16px}.archive-filter .compact-field{min-width:180px}.archive-filter input,.archive-filter select{height:36px;padding:0 10px;border:1px solid #d6d9df;border-radius:6px;background:#fff}.archive-printed-badge{display:inline-flex;align-items:center;min-height:28px;padding:0 10px;border-radius:5px;color:#16845b;background:#eaf8f1;font-size:12px;font-weight:600}.archive-unavailable{color:#8d939d;font-size:12px}.archive-print-overlay{position:fixed;z-index:100;inset:0;overflow:auto;padding:24px;background:#1f23299e}.archive-print-document{max-width:1000px;margin:0 auto;padding:28px 34px 36px;background:#fff;color:#1f2329}.archive-print-toolbar{display:flex;justify-content:flex-end}.archive-print-document>h1{margin:0 0 22px;text-align:center;font-size:26px}.archive-section{margin-top:18px;break-inside:avoid}.archive-section>h2{padding-bottom:7px;border-bottom:2px solid #245b91;font-size:16px}.archive-subtitle{margin:14px 0 7px;color:#4e5969;font-size:13px}.archive-basic{display:flex;gap:24px}.archive-fields{flex:1;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));border-top:1px solid #dfe3e8}.archive-fields>div{min-height:34px;padding:7px 9px;border-right:1px solid #dfe3e8;border-bottom:1px solid #dfe3e8;display:flex;gap:8px;font-size:12px}.archive-fields b{width:62px;color:#646a73;flex:0 0 auto}.archive-photo{width:110px;height:140px;object-fit:cover;border:1px solid #dfe3e8}.archive-photo.empty{display:grid;place-items:center;color:#8d939d;font-size:12px}.archive-section table{width:100%;border-collapse:collapse;font-size:12px}.archive-section th,.archive-section td{padding:7px 8px;border:1px solid #dfe3e8;text-align:left}.archive-section th{color:#4e5969;background:#f5f7fa}.archive-print-hint{margin-top:20px;color:#8d939d;font-size:12px;text-align:right}@media print{@page{margin:12mm}body *{visibility:hidden!important}.archive-print-overlay,.archive-print-overlay *{visibility:visible!important}.archive-print-overlay{position:absolute;inset:0;padding:0;background:#fff;overflow:visible}.archive-print-document{max-width:none;padding:0}.archive-print-toolbar,.archive-print-hint{display:none}.archive-section{break-inside:avoid}}.sidebar-backdrop{display:none}.page-header{min-height:54px;margin-bottom:19px;display:flex;align-items:flex-start;justify-content:space-between;gap:20px}.page-header h1{font-size:22px;line-height:1.35}.page-header p{margin-top:5px;color:var(--muted);font-size:13px}.page-actions{display:flex;align-items:center;gap:10px}.panel{border:1px solid var(--border);border-radius:7px;background:#fff}.panel-heading{min-height:64px;padding:0 18px;border-bottom:1px solid #edf0f3;display:flex;align-items:center;justify-content:space-between;gap:16px}.panel-heading h2{font-size:15px}.panel-heading p{margin-top:4px;color:var(--muted);font-size:12px}.unit{color:#8d939d;font-size:11px}.summary-chip{min-height:26px;padding:0 10px;border-radius:5px;display:inline-flex;align-items:center;color:#1261b5;background:#edf5ff;font-size:12px;font-weight:600}.state-panel{min-height:320px;border:1px solid var(--border);border-radius:7px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:12px;color:var(--primary);background:#fff;font-size:14px}.state-panel.muted{min-height:220px;border:0;color:#8d939d}.state-panel.error{color:var(--danger)}.state-panel.error .button{margin-top:4px}.full-state{min-height:65vh;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:12px;color:var(--muted)}.full-state h1{color:var(--text);font-size:22px}.full-state .button{margin-top:6px}.metric-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px;margin-bottom:14px}.metric-card{min-height:116px;padding:20px;border:1px solid var(--border);border-radius:7px;display:flex;align-items:center;gap:15px;background:#fff}.metric-icon{width:44px;height:44px;border-radius:7px;display:grid;place-items:center;flex:0 0 auto}.metric-card>div:last-child{min-width:0}.metric-card span{display:block;color:var(--muted);font-size:13px}.metric-card strong{display:block;margin-top:6px;font-size:28px;line-height:1}.metric-card small{display:block;margin-top:8px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:#8d939d;font-size:11px}.accent-blue .metric-icon{color:var(--primary);background:var(--primary-soft)}.accent-cyan .metric-icon{color:var(--cyan);background:var(--cyan-soft)}.accent-amber .metric-icon{color:var(--warning);background:var(--warning-soft)}.accent-green .metric-icon{color:var(--success);background:var(--success-soft)}.dashboard-grid{display:grid;grid-template-columns:minmax(380px,.85fr) minmax(440px,1.15fr);gap:14px;margin-bottom:14px}.reminder-list{padding:8px 12px}.reminder-list button{width:100%;min-height:58px;padding:8px 7px;border:0;border-bottom:1px solid #f0f1f3;display:flex;align-items:center;gap:11px;text-align:left;color:var(--text);background:transparent}.reminder-list button:last-child{border-bottom:0}.reminder-list button:hover{background:#f8fafc}.reminder-list button>span:nth-child(2){min-width:0;flex:1}.reminder-list strong{display:block;font-size:13px}.reminder-list small{display:block;margin-top:4px;color:var(--muted);font-size:11px}.reminder-list b{color:var(--text);font-size:18px}.reminder-list>button>svg{color:#a0a5ad}.reminder-icon{width:32px;height:32px;border-radius:6px;display:grid;place-items:center}.reminder-icon.warning{color:var(--warning);background:var(--warning-soft)}.reminder-icon.danger{color:var(--danger);background:var(--danger-soft)}.reminder-icon.blue{color:var(--primary);background:var(--primary-soft)}.reminder-icon.green{color:var(--success);background:var(--success-soft)}.trend-panel{min-height:346px}.bar-chart{height:268px;padding:32px 28px 26px;display:flex;align-items:end;justify-content:space-around;gap:16px}.bar-column{position:relative;width:48px;height:185px;display:flex;flex-direction:column;justify-content:end;align-items:center}.bar{width:28px;min-height:8px;border-radius:4px 4px 0 0;background:#4c9bff;transition:height .3s ease}.bar-value{position:absolute;top:-23px;color:#3d4752;font-size:12px;font-weight:700}.bar-label{position:absolute;top:calc(100% + 10px);width:62px;color:var(--muted);text-align:center;font-size:11px}.schedule-panel{overflow:hidden}.weekly-course-charts{min-height:340px;display:grid;grid-template-columns:repeat(2,minmax(0,1fr))}.weekly-course-chart-half{min-width:0;padding:18px 22px 22px}.weekly-course-chart-half+.weekly-course-chart-half{border-left:1px solid var(--border)}.course-chart-title{margin-bottom:18px;display:flex;align-items:center;justify-content:space-between;gap:12px}.course-chart-title strong{font-size:13px}.course-chart-title span{color:var(--muted);font-size:11px}.course-bar-list{max-height:260px;padding-right:5px;display:grid;gap:13px;overflow-y:auto}.course-bar-row{min-width:0;display:grid;grid-template-columns:minmax(90px,160px) minmax(100px,1fr) 28px;align-items:center;gap:10px}.course-bar-name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:#4b5563;font-size:11px}.course-bar-track{height:14px;border-radius:3px;overflow:hidden;background:#edf1f6}.course-bar-track i{height:100%;border-radius:3px;display:block}.course-bar-row b{font-size:12px;text-align:right}.course-pie-layout{min-height:245px;display:grid;grid-template-columns:minmax(150px,220px) minmax(150px,1fr);align-items:center;gap:24px}.course-pie{position:relative;width:min(100%,210px);aspect-ratio:1;margin:auto;display:grid;place-items:center}.course-pie-svg{width:100%;height:100%;overflow:visible;filter:drop-shadow(0 7px 4px rgba(48,65,88,.2))}.course-pie>div{position:absolute;z-index:1;width:54%;aspect-ratio:1;border-radius:50%;display:grid;place-content:center;gap:3px;text-align:center;background:#fff;box-shadow:0 2px #cbd4df,inset 0 0 0 1px #dee4ecb3}.course-pie strong{font-size:22px}.course-pie span{color:var(--muted);font-size:10px}.course-pie-legend{max-height:235px;display:grid;gap:10px;overflow-x:hidden;overflow-y:auto}.course-pie-legend>div{min-width:0;display:flex;align-items:center;gap:8px}.course-pie-legend i{width:9px;height:9px;border-radius:2px}.course-pie-legend span{min-width:0;max-width:190px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:#4b5563;font-size:11px}.course-pie-legend b{flex:0 0 auto;margin-left:2px;font-size:11px}.table-scroll{width:100%;overflow-x:auto}.table-panel>.table-scroll{max-height:calc(100vh - 330px);overflow:auto}.table-panel>.table-scroll thead th{position:sticky;top:0;z-index:2;background:var(--surface-muted, #f7f9fc);box-shadow:0 1px 0 var(--border)}.pagination-bar{min-height:52px;padding:10px 16px;display:flex;align-items:center;justify-content:flex-end;gap:8px;border-top:1px solid var(--border);background:#fff;color:var(--muted);font-size:13px}.pagination-total{margin-right:8px}.pagination-size select,.pagination-jump{height:30px;border:1px solid var(--border);border-radius:4px;background:#fff;color:var(--text);padding:0 9px}.pagination-size select{min-width:92px}.pagination-jump{width:46px;text-align:center;padding:0 4px}.pagination-button{width:30px;height:30px;display:inline-flex;align-items:center;justify-content:center;border:1px solid var(--border);border-radius:4px;background:#fff;color:var(--text);cursor:pointer}.pagination-button:disabled{color:#b4bdc9;background:#f5f7fa;cursor:not-allowed}.pagination-current{min-width:30px;height:30px;display:inline-flex;align-items:center;justify-content:center;border-radius:4px;background:var(--primary);color:#fff;font-weight:600}.pagination-jump-label,.pagination-range{white-space:nowrap}.pagination-range{margin-left:4px;color:var(--muted)}@media(max-width:720px){.pagination-bar{justify-content:flex-start;flex-wrap:wrap}.pagination-total{width:100%;margin-right:0}}table{width:100%;border-collapse:collapse;font-size:12px}th{height:43px;padding:0 14px;border-bottom:1px solid var(--border);color:#59616d;background:#f8fafc;text-align:left;font-weight:600;white-space:nowrap}td{min-height:52px;padding:13px 14px;border-bottom:1px solid #edf0f3;color:#3e4650;vertical-align:middle}tbody tr:last-child td{border-bottom:0}tbody tr:hover{background:#fafcff}.strong-cell{color:var(--text);font-weight:600}.status{min-height:24px;padding:0 8px;border-radius:4px;display:inline-flex;align-items:center;color:#4e5969;background:#f0f2f5;font-size:11px;font-weight:600;white-space:nowrap}.status.success,.status.student-completed{color:#157c4b;background:var(--success-soft)}.status.warning,.status.student-pending_certificate,.status.schedule-pending_entry{color:#a86400;background:var(--warning-soft)}.status.danger,.status.student-terminated{color:#b42318;background:var(--danger-soft)}.status.student-training,.status.schedule-not_started{color:#1261b5;background:var(--primary-soft)}.status.schedule-expired{color:#a86400;background:var(--warning-soft)}.status.student-suspended{color:#875f00;background:#fff2cc}.status.schedule-in_progress{color:#086e84;background:var(--cyan-soft)}.status.schedule-completed{color:#157c4b;background:var(--success-soft)}.filter-bar{min-height:84px;margin-bottom:14px;padding:14px 17px;border:1px solid var(--border);border-radius:7px;display:flex;align-items:end;gap:14px;background:#fff}.student-filter-bar{align-items:end;flex-wrap:wrap}.student-filter-bar .filter-title{align-self:stretch}.filter-bar.compact{min-height:76px;margin-bottom:14px}.filter-title{height:36px;padding-right:16px;border-right:1px solid var(--border);display:flex;align-items:center;gap:7px;color:#4e5969;font-size:13px;font-weight:600}.compact-field{min-width:190px;display:block}.student-filter-bar .compact-field{min-width:176px}.student-filter-bar .compact-field:nth-of-type(2){min-width:230px}.student-filter-bar .compact-field:nth-of-type(5){min-width:280px}.compact-field>span{display:block;margin-bottom:6px;color:var(--muted);font-size:11px}.compact-input,.compact-field select{height:36px;border:1px solid #d6d9df;border-radius:5px;background:#fff}.compact-input{min-width:220px;padding:0 10px;display:flex;align-items:center;gap:8px;color:#8d939d}.compact-input input{min-width:0;flex:1;border:0;outline:0;color:var(--text)}.compact-field select{min-width:190px;padding:0 29px 0 10px;color:#3e4650;outline:0}.compact-input:focus-within,.compact-field select:focus{border-color:var(--primary);box-shadow:0 0 0 3px #1677ff14}.filter-actions{display:flex;gap:8px}.table-panel{overflow:hidden}.students-table{min-width:1120px}.row-actions{display:flex;align-items:center;gap:6px}.person-cell{display:flex;align-items:center;gap:9px}.avatar.photo{width:42px;height:58px;border:1px solid #d6d9df;border-radius:4px;object-fit:cover;background:#f1f5f9}.person-cell strong,.person-cell small{display:block;white-space:nowrap}.student-name-link{display:block;padding:0;border:0;color:var(--text);background:transparent;font:inherit;font-weight:700;text-align:left;cursor:pointer}.student-name-link:hover{color:var(--primary);text-decoration:underline}.person-cell small{margin-top:4px;color:#8d939d;font-size:10px}.nowrap-cell{white-space:nowrap}.address-cell{min-width:210px;max-width:300px;line-height:1.55}.address-cell small{display:block;margin-top:3px;color:#8d939d}.license-cell{min-width:190px;max-width:230px}.hours-cell{min-width:130px}.hours-cell>small{display:block;margin-top:4px;color:#8d939d;font-size:10px}.inline-notice{min-height:38px;margin-bottom:12px;padding:9px 12px;border:1px solid var(--border);border-radius:6px;display:flex;align-items:center;font-size:13px}.inline-notice.success{color:#157c4b;border-color:#bfe7d2;background:var(--success-soft)}.inline-notice.danger{color:#b42318;border-color:#ffd1cd;background:var(--danger-soft)}.modal-backdrop{position:fixed;z-index:60;inset:0;padding:32px 20px;display:grid;place-items:center;background:#141f2d6b}.modal-backdrop.nested{z-index:80;background:#0f172a94}.modal{width:min(980px,100%);max-height:calc(100vh - 64px);border:1px solid var(--border);border-radius:8px;overflow:auto;background:#fff;box-shadow:0 24px 70px #141f2d3d}.modal-header{min-height:68px;padding:16px 18px;border-bottom:1px solid var(--border);display:flex;align-items:center;justify-content:space-between;gap:16px}.modal-header h2{font-size:17px}.modal-header p{margin-top:4px;color:var(--muted);font-size:12px}.modal-footer{position:sticky;z-index:2;bottom:0;padding:14px 18px;border-top:1px solid var(--border);display:flex;justify-content:flex-end;gap:10px;background:#fafbfc}.form-grid{max-height:none;padding:18px;overflow:visible;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px 16px}.student-basic-panel{border-bottom:1px solid var(--border);background:#fff}.student-basic-title{margin:14px 18px 0;padding-left:9px;border-left:4px solid var(--primary);color:var(--text);font-size:15px;font-weight:700}.student-basic-body{display:grid;grid-template-columns:minmax(0,1fr) 150px;gap:12px;align-items:start}.student-basic-body .form-grid{max-height:none;padding-right:6px}.student-photo-card{padding:18px 18px 18px 0;display:grid;justify-items:center;gap:10px}.student-photo-card input[type=file]{display:none}.field.compact{margin-top:0}.field.compact.wide,.field.compact.photo-field{grid-column:1 / -1}.field.compact input,.field.compact select{width:100%;height:38px;padding:0 10px;border:1px solid #d6d9df;border-radius:5px;color:var(--text);background:#fff;outline:0}.field.compact input:focus,.field.compact select:focus{border-color:var(--primary);box-shadow:0 0 0 3px #1677ff14}.field.compact input[readonly]{color:#59616d;background:#f7f8fa;cursor:default}.field.compact textarea{width:100%;min-height:92px;padding:9px 10px;border:1px solid #d6d9df;border-radius:5px;resize:vertical;color:var(--text);background:#fff;outline:0;line-height:1.55}.field.compact textarea:focus{border-color:var(--primary);box-shadow:0 0 0 3px #1677ff14}.question-bank-layout{display:grid;grid-template-columns:280px minmax(0,1fr);gap:14px;align-items:start}.question-bank-sidebar{min-height:520px;overflow:hidden}.question-bank-tree{padding:10px}.question-bank-group{margin-bottom:5px}.question-bank-root,.question-chapter-list button{width:100%;min-height:40px;padding:0 10px;border:0;border-radius:5px;display:flex;align-items:center;justify-content:space-between;gap:10px;text-align:left;color:#3e4650;background:transparent}.question-bank-root{font-weight:700}.question-bank-root:hover,.question-chapter-list button:hover{background:#f2f6fb}.question-bank-root.selected,.question-chapter-list button.selected{color:var(--primary);background:var(--primary-soft)}.question-bank-root small,.question-chapter-list small{color:#8d939d;font-size:11px}.question-chapter-list{margin:3px 0 7px 14px;padding-left:8px;border-left:1px solid #dce7f3}.question-chapter-row{min-height:35px;display:flex;align-items:center;gap:4px;border-radius:5px}.question-chapter-row>button{min-width:0;min-height:35px;flex:1;padding:0 9px;border:0;border-radius:5px;display:flex;align-items:center;justify-content:space-between;gap:8px;color:#59616d;background:transparent;font-size:12px;font-weight:500;text-align:left}.question-chapter-row>button:hover,.question-chapter-row.selected>button{color:var(--primary);background:var(--primary-soft)}.question-chapter-row .row-actions{padding-right:4px;opacity:0}.question-chapter-row:hover .row-actions,.question-chapter-row.selected .row-actions{opacity:1}.question-bank-main{min-width:0;display:grid;gap:14px}.question-table{min-width:980px}.question-stem-cell{min-width:240px;max-width:330px;line-height:1.55;color:var(--text);font-weight:600}.question-stem-cell small{display:block;margin-top:5px;color:#8d939d;font-weight:400;font-size:10px}.question-options-cell{min-width:220px;display:grid;gap:4px;line-height:1.4}.question-options-cell span{color:#59616d}.question-options-cell span.correct{color:#157c4b;font-weight:700}.question-explanation-cell{min-width:180px;max-width:280px;line-height:1.5}.question-template-panel{margin-bottom:2px}.compact-modal{width:min(620px,100%)}.question-modal{width:min(920px,100%)}.import-modal{width:min(820px,100%)}.template-modal{width:min(920px,100%)}.checklist-modal{width:min(1080px,96vw);max-height:92vh;overflow:auto}.checklist-meta{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:12px;padding:16px 20px;border-bottom:1px solid var(--border)}.checklist-meta label,.signature-field{display:grid;gap:6px;color:var(--muted);font-size:12px}.checklist-meta input,.signature-field input{min-width:0}.checklist-body{padding:4px 20px 20px}.checklist-section{padding:16px 0;border-bottom:1px solid #edf0f3}.checklist-section h3{margin-bottom:10px;font-size:14px}.checklist-item{display:grid;grid-template-columns:minmax(0,1fr) 180px;align-items:center;gap:16px;padding:8px 0;font-size:13px}.radio-group{display:flex;gap:18px}.radio-group label{display:inline-flex;align-items:center;gap:6px;color:var(--text);white-space:nowrap}.signature-field{max-width:300px;margin-top:10px}.checklist-table{padding:0 18px}.checklist-row{display:grid;grid-template-columns:1.5fr 1.2fr 100px 120px;align-items:center;gap:14px;min-height:68px;border-bottom:1px solid #edf0f3;font-size:13px}.checklist-row>div{display:flex;flex-direction:column;gap:4px}.checklist-row>div span{color:var(--muted);font-size:12px}.checklist-actions{display:flex;align-items:center;justify-content:flex-end;gap:8px}.icon-button.danger{color:var(--danger)}.status-badge{display:inline-flex;align-items:center;justify-content:center;padding:4px 8px;border-radius:4px;font-size:12px}.status-badge.success{color:#087443;background:#e9f8ef}.status-badge.warning{color:#8a5a00;background:#fff5d8}@media(max-width:900px){.checklist-meta{grid-template-columns:repeat(2,minmax(0,1fr))}.checklist-row{grid-template-columns:1fr 1fr;padding:10px 0}.checklist-item{grid-template-columns:1fr;gap:8px}}.graduation-panel{overflow:hidden}.graduation-tabs{display:flex;gap:5px;margin-bottom:14px;border-bottom:1px solid var(--border)}.graduation-tabs button{min-height:38px;padding:0 14px;border:0;border-bottom:2px solid transparent;display:inline-flex;align-items:center;gap:8px;color:var(--muted);background:transparent;font-size:13px;cursor:pointer}.graduation-tabs button b{min-width:22px;height:22px;padding:0 5px;border-radius:4px;display:inline-grid;place-items:center;color:var(--muted);background:#f1f3f5;font-size:11px}.graduation-tabs button.active{border-bottom-color:var(--primary);color:var(--primary);font-weight:700}.graduation-tabs button.active b{color:var(--primary);background:var(--primary-soft)}.graduation-table{min-width:1120px}.graduation-student{display:flex;align-items:center;gap:10px}.graduation-photo,.graduation-review-avatar{display:grid;place-items:center;overflow:hidden;flex:0 0 auto;color:#1261b5;background:#e3f0ff;font-weight:700}.graduation-photo{width:38px;height:38px;border-radius:50%}.graduation-photo img,.graduation-review-avatar img{width:100%;height:100%;object-fit:cover}.graduation-metric{display:flex;align-items:center;gap:7px;white-space:nowrap}.graduation-metric .icon-button{width:30px;height:30px}.graduation-metric .qualified{color:#0a8f52}.graduation-table td small{display:block;margin-top:4px;color:var(--muted);white-space:nowrap}.graduation-review-modal{width:min(680px,96vw)}.graduation-review-body{padding:24px;display:grid;grid-template-columns:78px minmax(0,1fr);gap:20px}.graduation-edit-body{display:block}.graduation-review-avatar{width:78px;height:96px;border-radius:6px;font-size:22px}.graduation-review-body h3{margin:0 0 14px;font-size:16px}.graduation-review-values{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}.graduation-review-values>div{min-height:74px;padding:12px;border:1px solid var(--border);border-radius:6px;background:#f8fafc}.graduation-review-values span{display:block;margin-bottom:8px;color:var(--muted);font-size:11px}.graduation-review-values strong{font-size:16px}.qualified-text{color:#087443}.pending-text{color:#9a6300}.graduation-review-note{margin-top:14px;color:var(--muted);font-size:12px}.graduation-assessment-records{display:grid;gap:12px}.graduation-assessment-record{padding:12px;border:1px solid var(--border);border-radius:6px;display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:10px 18px;background:#f8fafc}.graduation-assessment-record>strong{grid-column:1 / -1;font-size:13px}.graduation-assessment-images,.graduation-assessment-results{display:grid;align-content:start;gap:12px}.graduation-result-row{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;align-items:end}.graduation-result-row .field{margin:0;min-width:0}.graduation-result-row .field input,.graduation-result-row .field select{width:100%}.graduation-image-field{display:grid;gap:7px}.graduation-image-field>span{color:var(--text);font-size:13px;font-weight:600}.graduation-upload-button{width:100%;min-height:44px;justify-content:center}.graduation-image-preview{width:100%;min-height:126px;padding:0;border:1px dashed #cbd5e1;border-radius:6px;display:grid;place-items:center;overflow:hidden;background:#fff;cursor:zoom-in}.graduation-image-preview:hover{border-color:#4c9bff;box-shadow:0 0 0 2px #4c9bff1f}.graduation-image-preview img{width:100%;height:156px;object-fit:contain}@media(max-width:700px){.graduation-review-body,.graduation-review-values,.graduation-assessment-record,.graduation-result-row{grid-template-columns:1fr}}.import-toolbar{display:flex;align-items:center;gap:8px;margin:0 18px 14px;flex-wrap:wrap}.file-button{position:relative;overflow:hidden}.file-button input[type=file]{position:absolute;inset:0;width:100%;height:100%;cursor:pointer;opacity:0}.file-name{max-width:260px;overflow:hidden;color:var(--muted);font-size:12px;text-overflow:ellipsis;white-space:nowrap}.import-textarea{min-height:290px!important;font-family:Consolas,Courier New,monospace;line-height:1.5}.import-format-note{margin:0 18px 14px;padding:11px 12px;border:1px solid #d8eaff;border-radius:6px;display:grid;gap:5px;color:#49627a;background:#f3f9ff;font-size:12px;line-height:1.5}.import-format-note strong{color:var(--primary);font-size:13px}.import-format-note code{padding:1px 4px;border-radius:3px;color:#275a8b;background:#e7f2ff;font-family:Consolas,Courier New,monospace}.template-rules-heading{margin:4px 18px 10px;display:flex;align-items:center;justify-content:space-between;gap:10px}.template-rules{margin:0 18px;display:grid;gap:8px}.template-rule-head{margin:0 18px 6px;display:grid;grid-template-columns:minmax(190px,1fr) 100px 110px 34px;gap:7px;color:var(--muted);font-size:11px}.template-rule{display:grid;grid-template-columns:minmax(190px,1fr) 100px 110px 34px;gap:7px;align-items:center}.template-rule input,.template-rule select{min-width:0}.learning-preview-layout{min-width:0;display:grid;grid-template-columns:minmax(250px,.32fr) minmax(0,1fr);gap:14px}.learning-assignment-panel,.learning-content-panel{min-width:0}.learning-assignment-list{padding:8px;display:grid;gap:5px}.learning-assignment-row{min-width:0;display:flex;align-items:center;gap:4px}.learning-assignment-row .learning-assignment{min-width:0;flex:1}.history-action{flex:0 0 auto;color:var(--primary)}.learning-assignment{min-height:58px;padding:9px 10px;border:1px solid transparent;border-radius:6px;display:flex;align-items:center;gap:9px;color:var(--text);background:transparent;text-align:left}.learning-assignment:hover{background:#f5f9fd}.learning-assignment.selected{border-color:#b9d8ff;color:var(--primary);background:var(--primary-soft)}.learning-assignment-icon{width:29px;height:29px;border-radius:5px;display:grid;place-items:center;color:var(--primary);background:#e8f3ff}.learning-assignment>span:last-child{min-width:0;display:grid;gap:4px}.learning-assignment strong{overflow:hidden;font-size:13px;text-overflow:ellipsis;white-space:nowrap}.learning-assignment small{color:var(--muted);font-size:11px}.learning-question-list{padding:0 18px 18px;display:grid;gap:12px}.learning-question{padding:15px;border:1px solid var(--border);border-radius:7px;background:#fff}.learning-question-title{display:grid;grid-template-columns:28px minmax(0,1fr) auto;align-items:start;gap:9px}.learning-question-title>span{width:25px;height:25px;border-radius:50%;display:grid;place-items:center;color:var(--primary);background:var(--primary-soft);font-size:11px;font-weight:700}.learning-question-title h3{margin-top:3px;font-size:14px;line-height:1.5}.learning-question-title b{color:#9a6900;font-size:12px;font-weight:600}.learning-options{margin:13px 0 0 37px;display:grid;gap:6px}.learning-options>div{min-height:32px;padding:5px 9px;border:1px solid #e4e8ed;border-radius:5px;display:grid;grid-template-columns:22px minmax(0,1fr) 18px;align-items:center;gap:6px;color:#59616d}.learning-options>div.correct{border-color:#a9dfc4;color:#147647;background:#f0fbf5}.learning-options>label{min-height:32px;padding:5px 9px;border:1px solid #e4e8ed;border-radius:5px;display:grid;grid-template-columns:16px 22px minmax(0,1fr) 18px;align-items:center;gap:6px;color:#59616d;cursor:pointer}.learning-options>label:hover,.learning-options>label.selected{border-color:#9bc8f3;background:#f4f9ff}.learning-options>label.correct{border-color:#a9dfc4;color:#147647;background:#f0fbf5}.learning-options>label input{accent-color:var(--primary)}.learning-mode-tabs{margin-bottom:14px;display:flex;gap:5px;border-bottom:1px solid var(--border)}.learning-mode-tabs button{padding:9px 14px;border:0;border-bottom:2px solid transparent;display:inline-flex;align-items:center;gap:6px;color:var(--muted);background:transparent;font-size:12px;cursor:pointer}.learning-mode-tabs button.active{border-bottom-color:var(--primary);color:var(--primary);font-weight:700}.learning-test-launch{min-height:250px;padding:36px 20px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:12px;text-align:center}.learning-test-launch>svg{color:var(--primary)}.learning-test-launch h2{font-size:18px}.learning-test-launch p{max-width:440px;color:var(--muted);font-size:12px}.learning-test-launch select{width:min(420px,100%)}.learning-attempt-panel{min-width:0}.learning-welcome-band{margin-bottom:14px;padding:18px 20px;border:1px solid #cfe2f7;border-radius:7px;display:flex;align-items:center;gap:13px;background:linear-gradient(100deg,#f2f8ff,#fff)}.learning-welcome-icon{width:43px;height:43px;border-radius:8px;display:grid;place-items:center;color:var(--primary);background:#deedff}.learning-welcome-band>div:nth-child(2){min-width:0;flex:1}.learning-welcome-band strong{color:var(--text);font-size:16px}.learning-welcome-band p{margin-top:4px;color:var(--muted);font-size:12px}.learning-summary-grid{margin-bottom:14px;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px}.learning-summary-card{min-width:0;padding:16px;border:1px solid var(--border);border-radius:7px;display:flex;align-items:flex-start;gap:11px;background:#fff}.learning-summary-card>span{width:35px;height:35px;border-radius:6px;display:grid;place-items:center}.learning-summary-card.blue>span{color:#2169ae;background:#e8f3ff}.learning-summary-card.green>span{color:#16754a;background:#e8f8ef}.learning-summary-card.gold>span{color:#9a6900;background:#fff5dc}.learning-summary-card>div{min-width:0;display:grid;gap:3px}.learning-summary-card small{color:var(--muted);font-size:11px}.learning-summary-card strong{color:var(--text);font-size:21px;line-height:1.15}.learning-summary-card p{overflow:hidden;color:var(--muted);font-size:11px;text-overflow:ellipsis;white-space:nowrap}.learning-home-grid{min-width:0;display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:14px}.learning-home-actions,.learning-home-courses{min-width:0}.learning-action-list{padding:7px 10px 10px;display:grid;gap:4px}.learning-action{min-height:57px;padding:9px 8px;border:1px solid transparent;border-radius:6px;display:flex;align-items:center;gap:10px;color:var(--text)}.learning-action:hover{border-color:#cfe2f7;background:#f5f9fd}.learning-action>span{width:31px;height:31px;border-radius:5px;display:grid;place-items:center;color:var(--primary);background:var(--primary-soft)}.learning-action>div{min-width:0;flex:1;display:grid;gap:3px}.learning-action strong{font-size:13px}.learning-action small{overflow:hidden;color:var(--muted);font-size:11px;text-overflow:ellipsis;white-space:nowrap}.learning-action>svg{color:#9aa4af}.learning-home-courses .panel-heading{justify-content:space-between}.learning-home-course-list{padding:4px 18px 12px;display:grid}.learning-home-course{min-width:0;padding:10px 0;border-bottom:1px solid var(--border);display:flex;align-items:center;gap:9px}.learning-home-course:last-child{border-bottom:0}.learning-home-course>div{min-width:0;flex:1;display:grid;gap:3px}.learning-home-course strong{overflow:hidden;font-size:12px;text-overflow:ellipsis;white-space:nowrap}.learning-home-course small{color:var(--muted);font-size:10px}.learning-home-empty{min-height:150px;display:grid;place-items:center;color:var(--muted);font-size:12px}.text-link{display:inline-flex;align-items:center;gap:3px;color:var(--primary);font-size:11px}.learning-options>div>span{font-weight:700}.learning-options p{margin:0;line-height:1.45}.learning-answer{margin:13px 0 0 37px;padding:9px 11px;border-left:3px solid #8bc7a6;color:#216b47;background:#f5fbf7;font-size:12px;line-height:1.5}.learning-answer p{margin:4px 0 0;color:#4f6e5b;white-space:pre-wrap}.learning-loading{min-height:160px;display:flex;align-items:center;justify-content:center;gap:8px;color:var(--muted);font-size:13px}.learning-courseware-grid{display:grid;gap:14px}.learning-courseware-card{padding:18px}.learning-courseware-heading{display:flex;align-items:center;gap:11px}.learning-courseware-heading h2{color:var(--text);font-size:16px}.learning-courseware-heading p{margin-top:4px;color:var(--muted);font-size:11px}.learning-courseware-icon{width:34px;height:34px;border-radius:6px;display:grid;place-items:center;color:var(--primary);background:var(--primary-soft)}.learning-courseware-content{margin-top:16px;padding-top:13px;border-top:1px solid var(--border);display:flex;align-items:center;justify-content:space-between;gap:12px}.courseware-actions{display:inline-flex;align-items:center;justify-content:flex-end;gap:8px;flex-wrap:wrap}.courseware-actions .button{min-height:32px;padding:0 10px;font-size:12px}.courseware-password-modal{width:min(560px,100%)}.courseware-password-body{min-height:150px;padding:22px 18px;display:grid;grid-template-columns:28px minmax(0,1fr);align-items:start;gap:12px;color:var(--primary)}.courseware-password-body .field{margin-top:0}.courseware-password-body .inline-notice{grid-column:1 / -1;margin:0}.learning-courseware-file,.courseware-link,.courseware-selected{min-width:0;display:inline-flex;align-items:center;gap:6px;color:var(--primary);font-size:12px}.learning-courseware-file{color:#59616d;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.learning-courseware-file.unavailable,.courseware-unavailable{color:var(--muted)}.courseware-unavailable{flex:0 0 auto;font-size:11px}.courseware-selected-list{display:flex;flex-direction:column;gap:10px;min-width:0}.courseware-list{display:flex;flex-direction:column;gap:6px;min-width:0}.courseware-list .courseware-link{width:fit-content}.courseware-count{display:inline-flex;width:fit-content;padding:2px 7px;border-radius:999px;background:#eff6ff;color:#1d4ed8;font-size:11px;line-height:1.4}.learning-courseware-content{margin-top:16px;padding-top:13px;border-top:1px solid var(--border);display:flex;flex-direction:column;align-items:flex-start;gap:12px}.learning-courseware-files{display:flex;flex-direction:column;gap:10px;width:100%}.learning-courseware-file-row{display:flex;align-items:center;justify-content:space-between;gap:12px;width:100%}.learning-courseware-topics{margin-top:13px;display:flex;flex-wrap:wrap;gap:6px}.learning-courseware-topics span{padding:4px 8px;border-radius:4px;color:#59616d;background:#f3f5f7;font-size:11px}.learning-course-description{margin-top:13px;padding-top:12px;border-top:1px solid var(--border);color:#59616d;font-size:12px;line-height:1.55}.learning-course-description strong{color:var(--text);font-size:12px}.learning-course-description p{margin-top:5px}.learning-courseware-tip{margin-top:12px;display:flex;align-items:center;gap:6px;color:var(--muted);font-size:11px}.learning-attendance-list{display:grid;gap:14px}.learning-attendance-card{padding:18px}.learning-attendance-heading{display:flex;align-items:center;gap:10px;color:var(--primary)}.learning-attendance-heading h2{color:var(--text);font-size:16px}.learning-attendance-heading p{margin-top:4px;color:var(--muted);font-size:11px}.learning-attendance-actions{margin-top:16px;display:flex;gap:8px;flex-wrap:wrap}.learning-attendance-record{margin-top:14px;padding-top:12px;border-top:1px solid var(--border);display:flex;align-items:center;gap:16px;flex-wrap:wrap;color:#59616d;font-size:12px}.attendance-invalid-icon{margin-left:5px;color:#b42318;vertical-align:middle}.student-location-bar{margin-bottom:8px;padding:10px 12px;border:1px solid #cfe3fb;border-radius:6px;display:flex;align-items:center;gap:7px;color:#38688d;background:#f4f9ff;font-size:12px}.student-location-bar>span{min-width:0;flex:1}.student-location-bar.has-error{border-color:#ffd1cd;color:#b42318;background:#fff7f6}.location-permission-help{margin:0 0 14px;padding:0 2px}.attendance-legend{margin-top:12px;display:flex;align-items:center;gap:6px;color:var(--muted);font-size:11px}.attendance-settings-table{min-width:980px}.student-attendance-table{min-width:1050px}.attendance-invalid-note{display:block;margin-top:3px;color:#b42318;font-size:10px}.attendance-setting-modal{width:min(930px,100%)}.time-range-row{display:grid;grid-template-columns:minmax(0,1fr) 20px minmax(0,1fr);align-items:center;gap:6px}.time-range-row span{color:var(--muted);text-align:center;font-size:12px}.attendance-map-wrap{position:relative;overflow:visible;border:1px solid var(--border);border-radius:6px}.attendance-map-search{display:flex;gap:8px;padding:9px;border-bottom:1px solid var(--border);background:#fbfcfe}.attendance-map-search input{min-width:0;flex:1;height:32px;padding:0 10px;border:1px solid var(--border);border-radius:5px;color:var(--text);background:#fff;font-size:12px}.attendance-map-search input:focus{outline:2px solid rgba(29,120,232,.18);border-color:#6aa5ed}.attendance-map-search .map-style-switch{flex:0 0 auto}.map-style-switch button{display:inline-flex;align-items:center;justify-content:center;gap:5px;padding:0 9px}.attendance-search-results{position:absolute;z-index:1200;top:51px;left:9px;right:103px;overflow:hidden;border:1px solid var(--border);border-radius:5px;background:#fff;box-shadow:0 8px 18px #1e375029}.attendance-search-results button{display:block;width:100%;padding:9px 10px;border:0;border-bottom:1px solid #edf0f3;color:var(--text);background:#fff;text-align:left;font-size:11px;cursor:pointer}.attendance-search-results button:last-child{border-bottom:0}.attendance-search-results button:hover{background:#f3f8ff}.attendance-map{position:relative;z-index:0;height:380px;overflow:hidden;cursor:grab;background:#e6e9ec}.attendance-map:active{cursor:grabbing}.attendance-map .leaflet-container{width:100%;height:100%;font-family:inherit}.attendance-map .leaflet-control-zoom a{color:#25384a}.attendance-map-state{position:absolute;z-index:1000;inset:0;display:flex;align-items:center;justify-content:center;gap:8px;color:#52606d;background:#f4f7f9e6;font-size:12px}.attendance-map-state.error{flex-direction:column;color:#b42318}.attendance-leaflet-icon{border:0;background:transparent}.attendance-leaflet-pin{position:relative;display:block;width:25px;height:25px;border:3px solid #fff;border-radius:50% 50% 50% 0;background:#e33d45;box-shadow:0 1px 4px #0000006b;transform:rotate(-45deg)}.attendance-leaflet-pin:after{content:"";position:absolute;left:6px;top:6px;width:7px;height:7px;border-radius:50%;background:#fff}.attendance-map-toolbar{min-height:40px;padding:7px 10px;display:flex;align-items:center;gap:10px;flex-wrap:wrap;color:var(--muted);font-size:11px}.map-interaction-hint{color:#66806a}.map-network-status{padding:3px 6px;border-radius:4px;font-size:10px}.map-network-status.online{color:#157c4b;background:var(--success-soft)}.map-network-status.offline{color:#a86400;background:var(--warning-soft)}.map-external-link{margin-left:auto;display:inline-flex;align-items:center;gap:4px;color:var(--primary)}.map-search-error{padding:0 10px 8px;color:#b42318;font-size:11px}.student-theory-panel{min-width:0}.student-theory-table{min-width:1060px}.student-theory-clickable{cursor:pointer}.student-theory-clickable:hover{background:#f7fbff}.theory-progress-cell{min-width:150px;display:flex;align-items:center;gap:8px}.theory-progress-track{width:105px;height:7px;overflow:hidden;border-radius:4px;background:#e9edf2}.theory-progress-track span{display:block;height:100%;border-radius:inherit;background:var(--primary)}.theory-progress-track.exam span{background:var(--success)}.theory-progress-cell b{min-width:34px;color:var(--primary);font-size:12px}.compact-action{min-height:30px;padding:0 9px;font-size:11px}.student-theory-modal{width:min(1100px,100%)}.student-theory-detail-body{padding:0 18px 18px;display:grid;gap:18px}.student-theory-section{min-width:0}.student-theory-section-heading{margin-bottom:9px;display:flex;align-items:center;justify-content:space-between;gap:10px}.student-theory-section-heading h3{color:var(--text);font-size:14px}.student-theory-detail-table{border:1px solid var(--border);border-radius:6px;overflow-x:auto}.student-theory-detail-head,.student-theory-detail-row{min-width:920px;padding:0 12px;display:grid;grid-template-columns:minmax(200px,1fr) 100px 150px 180px 85px 52px;align-items:center;gap:12px}.student-theory-detail-head{min-height:34px;color:var(--muted);background:#f7f9fb;font-size:11px}.student-theory-detail-row{min-height:46px;border-top:1px solid var(--border);color:#59616d;font-size:12px}.score-positive{color:#157c4b}.student-history-action{width:30px;height:30px;color:var(--primary)}.student-history-backdrop{z-index:60}.assessment-history-panel{grid-column:1 / -1}.assessment-history-modal{width:min(980px,100%);max-height:min(86vh,900px);overflow:auto}.assessment-history-list{padding:0 18px 18px;display:grid;gap:8px}.assessment-history-empty{padding:24px 12px;color:var(--muted);text-align:center;font-size:12px}.assessment-history-item{border:1px solid var(--border);border-radius:6px;background:#fff}.assessment-history-item[open]{border-color:#b7d5f5}.assessment-history-item summary{min-height:54px;padding:0 12px;display:flex;align-items:center;gap:9px;cursor:pointer;list-style:none}.assessment-history-item summary::-webkit-details-marker{display:none}.assessment-history-summary-icon{color:var(--muted);display:inline-flex;transition:transform .16s ease}.assessment-history-item[open] .assessment-history-summary-icon{transform:rotate(180deg)}.assessment-history-summary-main{min-width:0;flex:1}.assessment-history-summary-main strong,.assessment-history-summary-main small{display:block}.assessment-history-summary-main strong{overflow:hidden;color:var(--text);text-overflow:ellipsis;white-space:nowrap;font-size:13px}.assessment-history-summary-main small{margin-top:4px;color:var(--muted);font-size:11px}.assessment-history-score{color:var(--primary);font-size:13px;font-weight:700}.assessment-history-body{padding:0 12px 12px;border-top:1px solid var(--border)}.assessment-history-question{padding:13px 0;border-bottom:1px solid #edf0f3}.assessment-history-question:last-child{border-bottom:0}.assessment-history-question-heading{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;color:var(--text);font-size:12px}.assessment-history-question-heading b{min-width:0;font-weight:600;line-height:1.5}.assessment-history-question-heading span{flex:0 0 auto;color:var(--primary);font-size:11px;font-weight:700}.assessment-history-options{margin-top:9px;display:grid;gap:5px}.assessment-history-options>div{min-height:30px;padding:5px 8px;border:1px solid #edf0f3;border-radius:4px;display:flex;align-items:center;gap:7px;color:#59616d;font-size:11px}.assessment-history-options>div.selected{border-color:#f0c36a;background:#fff9eb}.assessment-history-options>div.correct{border-color:#a9dfc3;background:#f0fbf5}.assessment-history-options>div.selected.correct{border-color:#69bf91;background:#edf9f2}.assessment-history-options>div>span{width:19px;height:19px;border-radius:50%;display:grid;place-items:center;flex:0 0 auto;color:#fff;background:#aeb6c2;font-size:10px;font-weight:700}.assessment-history-options>div.selected>span{background:#c58b1c}.assessment-history-options>div.correct>span{background:#24915a}.assessment-history-options p{min-width:0;flex:1;margin:0}.assessment-history-options small{color:#8a650f;font-size:10px;white-space:nowrap}.assessment-history-options .correct small{color:#157c4b}.assessment-history-question-result{margin-top:9px;display:flex;align-items:flex-start;flex-wrap:wrap;gap:5px;color:#b42318;font-size:11px}.assessment-history-question-result.correct{color:#157c4b}.data-initialization-panel{padding:20px}.data-initialization-warning{padding:14px;border:1px solid #f0c36a;border-radius:6px;display:flex;align-items:flex-start;gap:10px;color:#8a650f;background:#fff9eb}.data-initialization-warning strong{display:block;color:#7b560b;font-size:13px}.data-initialization-warning p{margin-top:5px;font-size:12px;line-height:1.5}.data-initialization-modes{margin-top:20px;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.data-initialization-modes button{min-height:76px;padding:13px;border:1px solid var(--border);border-radius:6px;display:flex;align-items:flex-start;gap:10px;color:var(--muted);background:#fff;text-align:left}.data-initialization-modes button:hover,.data-initialization-modes button.active{border-color:#9ec8ff;color:var(--primary);background:var(--primary-soft)}.data-initialization-modes button.active.danger{border-color:#f09a92;color:var(--danger);background:var(--danger-soft)}.data-initialization-modes span{display:grid;gap:5px}.data-initialization-modes strong{color:var(--text);font-size:14px}.data-initialization-modes small{color:var(--muted);font-size:11px;line-height:1.4}.data-initialization-date-grid{max-width:600px;margin-top:20px}.data-initialization-all-note{margin-top:20px;padding:12px;color:var(--danger);background:var(--danger-soft);font-size:12px;line-height:1.5}.data-initialization-confirm{max-width:380px;margin-top:20px}.data-initialization-panel .modal-footer{margin-top:20px;padding:16px 0 0;border-top:1px solid var(--border)}.data-initialization-result{margin-top:14px}.data-initialization-result-grid{padding:16px 18px;display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px}.data-initialization-result-grid div{padding:10px;border:1px solid var(--border);border-radius:5px;display:flex;justify-content:space-between;gap:8px;color:var(--muted);font-size:12px}.data-initialization-result-grid strong{color:var(--text)}.data-initialization-empty{padding:18px;color:var(--muted);font-size:12px}.assessment-history-question-result svg{flex:0 0 auto}.assessment-history-question-result em{width:100%;padding-left:20px;color:var(--muted);font-style:normal;line-height:1.5}.detail-loading{width:min(300px,100%);min-height:100px;display:flex;align-items:center;justify-content:center;gap:8px;color:var(--muted)}.explanation-input{min-height:150px!important}.field-hint{display:block;margin-top:6px;color:#8d939d;font-size:11px;line-height:1.45}.notice-panel{margin:16px 24px 0;padding:12px 14px;border:1px solid #bfdbfe;border-radius:6px;display:grid;grid-template-columns:minmax(0,1fr) minmax(220px,320px);gap:14px;align-items:end;background:#eff6ff}.notice-panel strong{display:block;color:#1d4ed8;font-size:13px}.notice-panel p{margin-top:4px;color:#475569;font-size:12px;line-height:1.45}.super-password-confirm{display:flex;align-items:end;gap:8px}.super-password-confirm .field{min-width:0;flex:1;margin:0}.super-password-confirm .button{flex:0 0 auto}.paired-readonly-fields{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.paired-readonly-fields .field{margin:0;min-width:0}.paired-readonly-fields .field input{width:100%}.triad-readonly-fields{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}.triad-readonly-fields .field{margin:0;min-width:0}.triad-readonly-fields .field input{width:100%}.dual-hour-field{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}.dual-hour-field label{min-width:0}.dual-hour-field label>span{display:block;margin-bottom:8px;font-size:14px;font-weight:600}.photo-uploader{display:flex;align-items:center;gap:12px;flex-wrap:wrap}.photo-preview{width:86px;height:120px;border:1px dashed #b8c1cc;border-radius:5px;display:grid;place-items:center;color:#8d939d;background:#f8fafc;overflow:hidden}.photo-preview img{width:100%;height:100%;object-fit:cover}.photo-preview.large{width:112px;height:156px;border-style:dashed}.photo-uploader input[type=file]{display:none}.progress-wrap{min-width:112px;display:flex;align-items:center;gap:7px}.progress-track{width:76px;height:6px;overflow:hidden;border-radius:3px;background:#e9edf2}.progress-track span{display:block;height:100%;border-radius:inherit;background:var(--primary)}.progress-value{width:30px;color:#59616d;font-size:10px;text-align:right}.segmented{height:34px;padding:3px;border:1px solid var(--border);border-radius:6px;display:flex;background:#f3f5f7}.segmented button{min-width:60px;border:0;border-radius:4px;color:var(--muted);background:transparent;font-size:12px}.segmented button.active{color:var(--primary);background:#fff;box-shadow:0 1px 3px #1f23291f}.schedule-list{border:1px solid var(--border);border-radius:7px;overflow:hidden;background:#fff}.schedule-item{min-height:102px;padding:16px 19px;border-bottom:1px solid var(--border);display:grid;grid-template-columns:100px minmax(260px,1fr) 80px 150px;align-items:center;gap:20px}.schedule-item:last-child{border-bottom:0}.schedule-date{min-width:0;display:grid;grid-template-columns:22px 1fr;align-items:center;color:var(--primary)}.schedule-date strong{color:var(--text);font-size:16px}.schedule-date span{grid-column:2;margin-top:4px;color:var(--muted);font-size:12px}.schedule-main>div{display:flex;align-items:center;gap:10px}.schedule-main h2{font-size:15px}.schedule-main p{margin-top:10px;display:flex;align-items:center;gap:6px;color:var(--muted);font-size:12px}.schedule-main p svg:not(:first-child){margin-left:10px}.schedule-capacity{padding-left:18px;border-left:1px solid var(--border)}.schedule-capacity span{display:block;color:var(--muted);font-size:11px}.schedule-capacity strong{display:block;margin-top:5px;font-size:18px}.schedule-capacity small{color:#8d939d;font-size:11px}.confirm-state{min-height:34px;padding:0 10px;border-radius:5px;display:flex;align-items:center;gap:7px;font-size:11px;font-weight:600}.confirm-state.confirmed{color:#157c4b;background:var(--success-soft)}.confirm-state.pending{color:#a86400;background:var(--warning-soft)}.scope-note{min-height:48px;margin-top:14px;padding:0 15px;border:1px solid #b9d8ff;border-radius:6px;display:flex;align-items:center;gap:9px;color:#2d6297;background:#edf6ff;font-size:12px}.schedule-page-actions{display:flex;align-items:flex-end;gap:10px}.schedule-student-select{display:grid;gap:4px}.schedule-student-select span{color:var(--muted);font-size:11px}.schedule-student-select select{min-width:220px;height:34px;padding:0 32px 0 10px;border:1px solid var(--border);border-radius:6px;background:#fff}.schedule-student-summary{min-height:66px;margin-bottom:14px;padding:12px 17px;border:1px solid var(--border);border-radius:7px;display:flex;align-items:center;gap:12px;background:#fff}.schedule-student-summary>svg{color:var(--primary)}.schedule-student-summary div{display:grid;gap:5px}.schedule-student-summary strong{font-size:15px}.schedule-student-summary span{color:var(--muted);font-size:12px}.schedule-student-summary>b{margin-left:auto;padding:6px 10px;border-radius:5px;color:var(--primary);background:var(--primary-soft);font-size:12px}.student-week-schedule{border:1px solid var(--border);border-radius:7px;overflow:hidden;background:#fff}.schedule-week-navigation{height:62px;display:flex;align-items:center;justify-content:center;gap:28px;border-bottom:1px solid var(--border)}.schedule-week-navigation strong{min-width:230px;text-align:center;font-size:17px}.schedule-calendar-wrap{overflow-x:auto}.schedule-calendar-grid{min-width:1050px;display:grid;grid-template-columns:72px repeat(7,minmax(138px,1fr))}.schedule-calendar-corner,.schedule-calendar-day{height:78px;border-right:1px solid var(--border);border-bottom:1px solid var(--border)}.schedule-calendar-day{display:grid;place-content:center;gap:6px;text-align:center}.schedule-calendar-day span{color:var(--muted);font-size:12px}.schedule-calendar-day strong{font-size:15px}.schedule-calendar-day.today{color:var(--primary);background:#f0f4ff}.schedule-calendar-day.today strong{width:32px;height:32px;margin:-3px auto;border-radius:50%;display:grid;place-items:center;color:#fff;background:var(--primary)}.schedule-calendar-period{min-height:190px;border-right:1px solid var(--border);border-bottom:1px solid var(--border);display:grid;place-items:center;color:var(--muted);font-size:13px}.schedule-calendar-cell{min-height:190px;padding:9px;border-right:1px solid var(--border);border-bottom:1px solid var(--border)}.schedule-calendar-course-list{display:grid;gap:8px}.schedule-calendar-course{min-height:170px;padding:12px;border-left:3px solid var(--primary);border-radius:5px;display:flex;flex-direction:column;gap:9px;background:#f5f9ff}.schedule-calendar-course strong{line-height:1.45;font-size:13px}.schedule-calendar-course span{display:flex;align-items:flex-start;gap:5px;color:#5a6472;font-size:11px;line-height:1.45}.schedule-calendar-course span svg{flex:0 0 auto;margin-top:1px}.schedule-calendar-course small{width:fit-content;padding:3px 6px;border-radius:4px;color:var(--primary);background:#e4efff;font-size:10px}.schedule-calendar-course.schedule-completed{border-left-color:#16a368;background:#f2fbf6}.schedule-calendar-course.schedule-completed small{color:#157c4b;background:#dcf5e8}.schedule-calendar-course.schedule-in_progress{border-left-color:#0d8ca5;background:#effbfc}.schedule-calendar-course.schedule-expired{border-left-color:#e0a128;background:#fffaf0}.schedule-calendar-course.schedule-expired small{color:#a86400;background:var(--warning-soft)}.schedule-course-footer{margin-top:auto;display:flex;align-items:center;justify-content:space-between;gap:6px}.schedule-complete-button{min-height:27px;padding:0 8px;border:0;border-radius:4px;display:inline-flex;align-items:center;gap:4px;color:#fff;background:var(--primary);font-size:10px;font-weight:600}.schedule-complete-button:disabled{opacity:.6}.schedule-calendar-course em{color:#7d8794;font-size:9px;font-style:normal;line-height:1.4}.schedule-calendar-empty{min-height:170px}.schedule-generated-list{border:1px solid var(--border);border-radius:7px;background:#fff}.schedule-generated-list table{min-width:1080px}.schedule-generated-list td:first-child{display:flex;align-items:center;gap:6px}.schedule-completion-audit{color:var(--muted);font-size:11px}.compact-button{min-height:30px;padding:0 10px;font-size:11px}.analysis-tabs{margin-bottom:14px;display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px}.analysis-tabs button{min-height:58px;padding:0 15px;border:1px solid var(--border);border-radius:7px;display:flex;align-items:center;gap:9px;color:#4e5969;background:#fff}.analysis-tabs button b{margin-left:auto;min-width:25px;height:25px;border-radius:4px;display:grid;place-items:center;color:var(--primary);background:var(--primary-soft);font-size:11px}.analysis-tabs button.active{border-color:#91c2ff;color:var(--primary);box-shadow:inset 0 -3px 0 var(--primary)}.module-panel{padding:20px}.module-heading{display:flex;align-items:center;gap:10px;color:var(--primary)}.module-heading.compact{color:var(--primary)}.module-heading h2{color:var(--text);font-size:16px}.module-items{margin-top:18px;border-top:1px solid var(--border)}.module-items>div{min-height:60px;padding:0 8px;border-bottom:1px solid var(--border);display:grid;grid-template-columns:54px 1fr auto;align-items:center;gap:12px}.module-items>div>span{color:#9aa1aa;font-size:12px;font-weight:700}.module-items strong{font-size:13px}.module-items small{color:var(--muted);font-size:11px}.training-course-table{min-width:1160px}.course-modal{width:min(760px,100%)}.course-form-summary{margin:0 18px 14px;padding:10px 12px;border:1px solid #d8eaff;border-radius:6px;color:#2d6297;background:#f3f9ff;font-size:13px}.course-form-summary strong{color:var(--primary);font-size:16px}.dialog-notice{margin:14px 18px 0}.teachers-table{min-width:1480px}.aircraft-assets-table{min-width:1360px}.teacher-modal{width:min(900px,100%)}.aircraft-modal{width:min(820px,100%)}.teacher-form-section,.aircraft-form-section{padding:18px;border-bottom:1px solid var(--border)}.teacher-form-section h3,.aircraft-form-section h3{margin-bottom:16px;padding-left:9px;border-left:4px solid var(--primary);display:flex;align-items:center;gap:8px;color:var(--text);font-size:15px}.teacher-upload-grid{margin-bottom:18px;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}.aircraft-upload-grid{margin-bottom:18px;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}.aircraft-upload-grid.single{grid-template-columns:minmax(0,1fr)}.aircraft-upload-grid>div>small{display:block;margin-top:8px;color:#8d939d;font-size:12px}.aircraft-upload-tile,.aircraft-upload-tile img{min-height:152px}.char-count{position:absolute;right:10px;bottom:9px;color:#8d939d;font-size:12px;pointer-events:none}.field.compact{position:relative}.field.compact input[maxlength]{padding-right:58px}.required-field>span:after{content:" *";color:var(--danger)}.teacher-upload-grid>div>small{display:block;margin-top:8px;color:#8d939d;font-size:12px}.required-label{display:block;margin-bottom:8px;font-size:14px;font-weight:600}.required-label:before,.teacher-form-section .field>span:before{content:"* ";color:var(--danger)}.teacher-upload-tile{min-height:150px;padding:18px;border:1px dashed #cfd6df;border-radius:6px;display:grid;place-items:center;align-content:center;gap:9px;color:var(--primary);background:#fbfdff;text-align:center;cursor:pointer}.teacher-upload-tile:hover{border-color:#91c2ff;background:#f4f9ff}.teacher-upload-tile.has-image{padding:0;overflow:hidden;background:#fff}.teacher-upload-tile.compact-preview{width:33.333%;min-width:260px}.teacher-upload-tile strong{max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--primary);font-size:13px}.teacher-upload-tile span{color:#8d939d;font-size:12px}.teacher-upload-tile input{display:none}.teacher-upload-tile img{width:100%;height:100%;min-height:150px;object-fit:contain;border-radius:6px}.contract-file-tile{position:relative}.contract-file-tile.has-file:hover{border-color:#91c2ff;background:#f4f9ff}.certificate-attachment-tile{position:relative}.certificate-attachment-tile.has-file:hover{border-color:#91c2ff;background:#f4f9ff}.upload-action-overlay{position:absolute;inset:0;border-radius:6px;display:flex;align-items:center;justify-content:center;gap:12px;background:#ffffffc7;opacity:0;transition:opacity .16s ease}.contract-file-tile:hover .upload-action-overlay,.certificate-attachment-tile:hover .upload-action-overlay{opacity:1}.upload-action-overlay .icon-button{border:1px solid #d6d9df;background:#fff;box-shadow:0 4px 12px #1f23291f}.attachment-preview-modal{width:min(920px,100%)}.attachment-preview-body{height:min(70vh,680px);padding:16px;display:grid;place-items:center;background:#f7f8fa}.attachment-preview-actions{position:absolute;z-index:1;top:12px;right:12px}.attachment-preview-body iframe,.attachment-preview-body object,.attachment-preview-body img{width:100%;height:100%;border:0;object-fit:contain;background:#fff}.theory-course-modal{width:min(720px,100%)}.theory-course-primary-fields{grid-column:1 / -1;display:grid;grid-template-columns:minmax(0,3fr) minmax(90px,1fr) minmax(90px,1fr) minmax(120px,1fr);gap:16px;align-items:end}.student-flight-hours-table{min-width:1220px}.student-flight-hours-modal{width:min(760px,100%)}.student-license-exam-modal{width:min(940px,100%)}.student-license-exam-table{min-width:1180px}.student-license-exam-filter-bar{align-items:stretch;flex-direction:column;gap:12px}.student-license-exam-filter-bar .filter-title{width:100%;height:auto;padding:0 0 10px;border-right:0;border-bottom:1px solid var(--border)}.student-license-exam-filter-fields{display:grid;grid-template-columns:repeat(2,minmax(220px,1fr));gap:12px}.student-license-exam-filter-fields.advanced{grid-template-columns:repeat(3,minmax(190px,1fr))}.student-license-exam-filter-fields .compact-field,.student-license-exam-filter-fields .compact-input,.student-license-exam-filter-fields .compact-field select{width:100%;min-width:0}.student-license-exam-filter-bar .filter-actions{justify-content:flex-end}.student-license-exam-detail-modal{width:min(900px,100%)}.student-license-exam-detail-table{min-width:720px}.compact-action{min-height:32px;padding:4px 10px}.student-license-exam-name-button{border:0;padding:0;background:transparent;color:var(--primary, #4c9bff);font:inherit;font-weight:700;cursor:pointer}.student-license-exam-name-button:hover{text-decoration:underline}.student-license-exam-items{margin-top:18px;display:grid;gap:12px}.section-title-row{display:flex;align-items:center;justify-content:space-between;gap:12px}.section-title-row h3{margin:0;font-size:15px}.student-license-exam-row{padding:14px;border:1px solid var(--border);border-radius:7px;background:#f8fafc;display:grid;grid-template-columns:1fr 1.2fr 1.5fr;gap:12px;align-items:end}.student-license-exam-row-head{grid-column:1 / -1;display:flex;align-items:center;justify-content:space-between}.student-license-exam-score{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:8px}.student-license-exam-score input,.student-license-exam-score select{min-width:0;width:100%}@media(max-width:760px){.student-license-exam-row{grid-template-columns:1fr}.student-license-exam-row-head{grid-column:auto}}@media(max-width:980px){.student-license-exam-filter-fields.advanced{grid-template-columns:repeat(2,minmax(190px,1fr))}}@media(max-width:620px){.student-license-exam-filter-fields,.student-license-exam-filter-fields.advanced{grid-template-columns:1fr}.student-license-exam-filter-bar .filter-actions{justify-content:stretch;flex-wrap:wrap}}.student-flight-filter-bar{flex-wrap:wrap}.student-flight-filter-bar .compact-field{min-width:190px}.student-picker-modal{width:min(900px,100%)}.student-picker-toolbar{padding:14px 18px;border-bottom:1px solid var(--border);display:flex;align-items:center;gap:12px;background:#fafbfc}.student-picker-toolbar>span{margin-left:auto;color:var(--muted);font-size:12px;white-space:nowrap}.student-picker-search{min-width:0;flex:1;height:38px;padding:0 10px;border:1px solid #d6d9df;border-radius:5px;display:flex;align-items:center;gap:8px;color:#8d939d;background:#fff}.student-picker-search:focus-within{border-color:var(--primary);box-shadow:0 0 0 3px #1677ff14}.student-picker-search input{min-width:0;flex:1;border:0;outline:0;color:var(--text);background:transparent}.student-picker-table-wrap{max-height:min(55vh,520px);overflow:auto}.student-picker-table{width:100%;border-collapse:collapse}.student-picker-table th,.student-picker-table td{padding:12px 18px;border-bottom:1px solid var(--border);text-align:left;white-space:nowrap;font-size:13px}.student-picker-table th{position:sticky;top:0;z-index:1;color:var(--muted);background:#f7f8fa;font-size:12px}.student-picker-table tbody tr{cursor:pointer;transition:background .12s ease}.student-picker-table tbody tr:hover,.student-picker-table tbody tr.selected{background:#edf6ff}.student-picker-trigger{width:100%;min-height:38px;padding:0 10px;border:1px solid #d6d9df;border-radius:5px;display:flex;align-items:center;gap:10px;color:#8d939d;background:#fff;text-align:left;cursor:pointer}.student-picker-trigger:hover,.student-picker-trigger:focus{border-color:var(--primary);outline:0;box-shadow:0 0 0 3px #1677ff14}.student-picker-trigger.selected{color:var(--text)}.student-picker-trigger-arrow{margin-left:auto;color:var(--primary);font-size:12px}.flight-hours-input{width:100%;height:38px;padding:0 10px;border:1px solid #d6d9df;border-radius:5px;display:flex;align-items:center;gap:8px;color:#8d939d;background:#fff}.flight-hours-input:focus-within{border-color:var(--primary);box-shadow:0 0 0 3px #1677ff14}.flight-hours-input input{min-width:0;flex:1;height:34px;padding:0;border:0;outline:0;color:var(--text);background:transparent}.flight-hours-input span{color:var(--muted);font-size:12px}.max-student-row{display:grid;grid-template-columns:42px minmax(0,1fr) 42px;gap:6px}.max-student-row .button{min-width:0;padding:0}.course-content-list{display:grid;gap:8px}.course-content-row{display:grid;grid-template-columns:minmax(0,1fr) 38px;gap:8px;align-items:center}.add-content-btn{width:100%;margin-top:10px;border-style:dashed;color:var(--primary)}.course-content-add{margin-top:8px;display:grid;grid-template-columns:minmax(0,1fr) 72px;gap:8px}.courseware-upload{display:flex;align-items:flex-start;gap:10px;flex-wrap:wrap}.courseware-selected{max-width:100%;color:#59616d}.courseware-selected span{max-width:330px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.company-info-panel{overflow:hidden}.company-info-grid{grid-template-columns:repeat(2,minmax(280px,1fr));align-items:start}.company-image-field{grid-column:1 / -1;padding:16px;border:1px solid #edf0f3;border-radius:7px;display:grid;grid-template-columns:230px minmax(0,1fr);gap:18px;background:#fbfcfe}.company-image-field>div:first-child>span{display:block;color:var(--text);font-size:14px;font-weight:700}.company-image-field small{display:block;margin-top:7px;color:var(--muted);font-size:12px;line-height:1.6}.company-image-control{min-width:0;display:grid;gap:12px}.company-image-control.logo{grid-template-columns:92px minmax(0,1fr);align-items:center}.company-image-control.login{display:flex;align-items:center}.company-image-preview{overflow:hidden;border:1px solid #dbe4ef;border-radius:8px;display:grid;place-items:center;color:#8d939d;background:#fff}.company-image-preview.logo{width:78px;height:78px;padding:8px}.company-image-preview.logo img{width:100%;height:100%;object-fit:contain}.company-image-preview.login{flex:0 1 20%;width:20%;min-width:180px;aspect-ratio:1024 / 500;min-height:0;background:linear-gradient(135deg,#2f78c9,#4c9bff)}.company-image-preview.login img{width:50%;height:50%;object-fit:contain}.company-image-preview.miniapp-login-logo-preview{aspect-ratio:600 / 500}.company-image-preview.login span{color:#ffffffd1;font-size:13px}.company-image-actions{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.company-image-actions input[type=file]{display:none}.button.disabled{pointer-events:none;opacity:.55}.company-info-footer{position:static;border-top:1px solid var(--border)}.courseware-setting-panel{margin-top:14px;overflow:hidden}.courseware-setting-panel .panel-heading>svg{color:var(--primary)}.courseware-setting-notice{margin:14px 18px 0}.courseware-setting-body{padding:18px;display:flex;align-items:end;gap:18px;flex-wrap:wrap}.courseware-setting-body .field{min-width:min(360px,100%);margin-top:0;flex:1}.courseware-setting-body .input-with-icon{height:38px}.department-layout{display:grid;grid-template-columns:340px minmax(0,1fr);gap:14px;align-items:start}.department-tree-panel,.department-detail-panel{min-height:610px;overflow:hidden}.department-tree{padding:9px 8px 14px}.department-tree-branch{min-width:0}.department-tree-row{min-height:50px;padding-right:7px;border-radius:5px;display:flex;align-items:center}.department-tree-row:hover{background:#f5f8fc}.department-tree-row.selected{background:var(--primary-soft)}.department-tree-toggle{width:25px;height:34px;padding:0;border:0;display:grid;place-items:center;flex:0 0 auto;color:#7b8794;background:transparent}.department-tree-toggle:disabled{opacity:1;cursor:default}.department-tree-toggle>span{width:15px}.department-tree-main{min-width:0;min-height:44px;padding:0 5px;border:0;display:flex;align-items:center;gap:9px;flex:1;color:#3e4650;background:transparent;text-align:left}.department-tree-row.selected .department-tree-main{color:#1261b5}.department-tree-main>svg{flex:0 0 auto}.department-tree-main>span{min-width:0;flex:1}.department-tree-main strong,.department-tree-main small{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.department-tree-main strong{font-size:13px}.department-tree-main small{margin-top:4px;color:#8d939d;font-size:10px}.department-tree-main b{flex:0 0 auto;color:#7b8794;font-size:10px;font-weight:600}.department-detail-heading{min-height:82px;padding:14px 18px;border-bottom:1px solid var(--border);display:flex;align-items:center;justify-content:space-between;gap:18px}.department-detail-title{min-width:0;display:flex;align-items:center;gap:12px}.department-detail-title>span{width:38px;height:38px;border-radius:6px;display:grid;place-items:center;flex:0 0 auto;color:#1261b5;background:var(--primary-soft)}.department-detail-title h2{font-size:17px}.department-detail-title p{margin-top:5px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--muted);font-size:11px}.department-detail-actions{display:flex;align-items:center;gap:3px}.department-member-warning{min-height:44px;margin:16px 18px 0;padding:8px 11px;border-left:3px solid var(--warning);display:flex;align-items:center;gap:9px;color:#7a5200;background:var(--warning-soft);font-size:12px}.department-detail-grid{margin:0;padding:18px;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:0 26px}.department-detail-grid>div{min-width:0;min-height:68px;padding:12px 0;border-bottom:1px solid #edf0f3}.department-detail-grid>div.wide{grid-column:1 / -1}.department-detail-grid dt{color:var(--muted);font-size:11px}.department-detail-grid dd{margin:7px 0 0;overflow-wrap:anywhere;color:var(--text);font-size:13px;font-weight:600}.department-employees-section,.department-children-section{padding:0 18px 20px}.department-section-title{min-height:60px;display:flex;align-items:center;justify-content:space-between;gap:14px}.department-section-title h3{font-size:14px}.department-section-title p{margin-top:4px;color:var(--muted);font-size:11px}.department-employee-actions{display:flex;align-items:center;justify-content:flex-end;gap:7px;flex-wrap:wrap}.department-employee-table-wrap{overflow-x:auto;border-top:1px solid var(--border)}.department-employee-table{min-width:720px}.department-employee-table tbody tr{cursor:pointer}.department-employee-table tbody tr:hover{background:#f7faff}.department-employee-table tbody tr.selected-row{background:var(--primary-soft)}.department-child-list{border-top:1px solid var(--border)}.department-child-list button{width:100%;min-height:56px;padding:7px 5px;border:0;border-bottom:1px solid #edf0f3;display:flex;align-items:center;gap:10px;color:#3e4650;background:transparent;text-align:left}.department-child-list button:hover{background:#f7faff}.department-child-list button>span{min-width:0;flex:1}.department-child-list strong,.department-child-list small{display:block}.department-child-list strong{font-size:13px}.department-child-list small{margin-top:4px;color:var(--muted);font-size:10px}.department-no-children{min-height:76px;border-top:1px solid var(--border);display:grid;place-items:center;color:#8d939d;font-size:12px}.user-management-panel{overflow:hidden}.user-management-actions{min-height:50px;padding:10px 17px;border-top:1px solid var(--border);border-bottom:1px solid var(--border);display:flex;align-items:center;justify-content:flex-end;gap:7px;flex-wrap:wrap;background:#fbfcfe}.user-management-table{min-width:980px}.user-management-table tbody tr{cursor:pointer}.user-management-table tbody tr.selected-row{background:var(--primary-soft)}.user-management-modal{width:min(720px,100%)}.account-layout{display:grid;grid-template-columns:minmax(0,1.2fr) minmax(320px,.8fr);gap:14px;align-items:start}.account-info-grid{margin:0;padding:18px;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:0 26px}.account-info-grid>div{min-width:0;min-height:68px;padding:12px 0;border-bottom:1px solid #edf0f3}.account-info-grid dt{color:var(--muted);font-size:11px}.account-info-grid dd{margin:7px 0 0;overflow-wrap:anywhere;color:var(--text);font-size:13px;font-weight:600}.account-readonly-note{margin:0 18px 18px;padding:11px 12px;border-left:3px solid var(--primary);display:flex;align-items:center;gap:9px;color:#1261b5;background:var(--primary-soft);font-size:12px;line-height:1.6}.account-password-panel .panel-heading>svg{color:var(--primary)}.account-password-form{padding:18px;display:grid;gap:14px}.department-modal{width:min(720px,100%)}.department-move-modal{width:min(560px,100%)}.department-form-error{margin:14px 18px 0}.department-form-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.department-move-body{padding:18px}.department-move-body>p{margin-top:12px;color:var(--muted);font-size:12px;line-height:1.6}.permission-layout{display:grid;grid-template-columns:340px minmax(0,1fr);gap:14px;align-items:start}.permission-detail-panel{min-height:610px;overflow:hidden}.permission-detail-heading{min-height:82px;padding:14px 18px;border-bottom:1px solid var(--border);display:flex;align-items:center;justify-content:space-between;gap:18px}.permission-summary{min-width:96px;min-height:42px;padding:6px 12px;border:1px solid var(--border);border-radius:6px;display:flex;align-items:baseline;justify-content:center;gap:4px;background:#f8fafc}.permission-summary strong{color:var(--primary);font-size:22px}.permission-summary span{color:var(--muted);font-size:12px}.permission-toolbar{min-height:66px;padding:12px 18px;border-bottom:1px solid var(--border);display:flex;align-items:center;justify-content:space-between;gap:14px}.permission-toolbar strong,.permission-toolbar span{display:block}.permission-toolbar strong{font-size:14px}.permission-toolbar span{margin-top:5px;color:var(--muted);font-size:11px}.permission-toolbar-actions{display:flex;align-items:center;justify-content:flex-end;gap:7px}.permission-module-grid{padding:18px;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.permission-module-option{min-height:92px;padding:14px;border:1px solid var(--border);border-radius:7px;display:flex;align-items:flex-start;gap:12px;background:#fff;cursor:pointer;transition:border-color .16s ease,background-color .16s ease}.permission-module-option:hover{border-color:#9ec8ff;background:#f7fbff}.permission-module-option.checked{border-color:#8fc0ff;background:var(--primary-soft)}.permission-module-option input{margin-top:3px}.permission-check{width:20px;height:20px;display:grid;place-items:center;color:var(--primary)}.permission-module-option>span:last-child{min-width:0}.permission-module-option strong{display:block;color:var(--text);font-size:14px}.permission-module-option small{display:block;margin-top:7px;color:var(--muted);font-size:11px;line-height:1.55}.permission-execution-note{margin:0 18px 12px;padding:11px 12px;border-left:3px solid var(--primary);display:flex;align-items:center;gap:9px;color:#1261b5;background:var(--primary-soft);font-size:12px;line-height:1.6}.permission-updated-at{padding:0 18px 20px;color:var(--muted);font-size:11px}.radio-row{min-height:38px;display:flex;align-items:center;gap:28px}.radio-row label{display:inline-flex;align-items:center;gap:7px;font-weight:600}.field.compact .radio-row input[type=radio]{width:14px;height:14px;padding:0;flex:0 0 auto}.checkbox-grid{min-height:38px;padding:6px 0;display:flex;align-items:center;flex-wrap:wrap;gap:10px 18px}.checkbox-grid label{display:inline-flex;align-items:center;gap:7px;font-weight:600}.field.compact .checkbox-grid input[type=checkbox]{width:14px;height:14px;padding:0;flex:0 0 auto}.message-list{border:1px solid var(--border);border-radius:7px;overflow:hidden;background:#fff}.message-row{width:100%;min-height:92px;padding:16px 18px;border:0;border-bottom:1px solid var(--border);display:flex;align-items:flex-start;gap:13px;color:var(--text);text-align:left;background:#f8fbff}.message-row:last-child{border-bottom:0}.message-row:hover{background:#f2f7fd}.message-row.read{background:#fff}.message-icon{width:34px;height:34px;border-radius:6px;display:grid;place-items:center;flex:0 0 auto;color:var(--primary);background:var(--primary-soft)}.message-row.read .message-icon{color:#7d848d;background:#f0f2f5}.message-content{min-width:0;flex:1}.message-content strong{display:block;font-size:13px}.message-content p{margin:6px 0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--muted);font-size:12px}.message-content small{color:#9aa1aa;font-size:10px}.read-state{display:flex;align-items:center;gap:5px;color:var(--primary);font-size:11px;white-space:nowrap}.message-row.read .read-state{color:#8d939d}@media(max-width:1180px){.metric-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.dashboard-grid{grid-template-columns:1fr}.department-layout,.permission-layout{grid-template-columns:300px minmax(0,1fr)}.schedule-item{grid-template-columns:90px minmax(240px,1fr) 70px}.confirm-state{grid-column:2 / 4;width:fit-content}}@media(min-width:1201px)and (max-width:1599px){.login-brand-inner>img{width:min(760px,calc(100% - 144px));height:auto;aspect-ratio:1024 / 500}}@media(min-width:861px)and (max-width:1200px){.login-brand-inner>img{top:120px;width:min(560px,calc(100% - 110px));height:auto;aspect-ratio:1024 / 500}}@media(max-width:860px){.login-page{grid-template-columns:1fr;background:var(--primary-dark)}.login-brand{min-height:250px}.login-brand-inner{min-height:250px;padding:34px 38px}.login-brand-inner>img{position:static;width:min(320px,100%);height:auto;aspect-ratio:1024 / 500;transform:none;align-self:center}.login-brand-copy{position:static;width:100%;margin-top:55px;transform:none;text-align:center}.login-brand-copy h1{font-size:28px}.login-panel{min-height:calc(100vh - 250px);padding:38px 24px;border-radius:0}.sidebar{transform:translate(-100%);transition:transform .18s ease}.sidebar.open{transform:translate(0)}.sidebar-close{display:inline-grid}.sidebar-backdrop{position:fixed;z-index:29;inset:0;background:#141f2d6b}.sidebar-backdrop.show{display:block}.app-main{margin-left:0}.menu-button{display:inline-grid;margin-right:8px}.content{padding:20px 18px 32px}.filter-bar{align-items:stretch;flex-wrap:wrap}.filter-title{width:100%;height:auto;padding:0 0 9px;border:0;border-bottom:1px solid var(--border)}.compact-field{min-width:min(100%,210px);flex:1}.compact-input,.compact-field select{width:100%;min-width:0}.analysis-tabs{grid-template-columns:repeat(2,minmax(0,1fr))}.department-layout,.permission-layout,.account-layout{grid-template-columns:1fr}.department-tree-panel,.department-detail-panel,.permission-detail-panel{min-height:0}.department-tree-panel{max-height:460px;overflow:auto}.department-detail-heading,.permission-detail-heading,.permission-toolbar{align-items:flex-start}.department-detail-grid,.account-info-grid,.permission-module-grid{grid-template-columns:1fr}.department-detail-grid>div.wide{grid-column:auto}.department-form-grid,.question-bank-layout,.learning-preview-layout,.learning-summary-grid,.learning-home-grid{grid-template-columns:1fr}.learning-welcome-band{align-items:flex-start;flex-wrap:wrap}.learning-welcome-band .button{margin-left:56px}.question-bank-sidebar{min-height:0}.schedule-page-actions{align-items:stretch;flex-direction:column}.schedule-student-select select{min-width:190px}.schedule-student-summary{align-items:flex-start;flex-wrap:wrap}.schedule-student-summary>b{margin-left:31px}.weekly-course-charts{grid-template-columns:1fr}.weekly-course-chart-half+.weekly-course-chart-half{border-top:1px solid var(--border);border-left:0}.course-pie-layout{grid-template-columns:minmax(150px,220px) minmax(0,1fr)}}@media(max-width:620px){.login-brand{min-height:220px}.login-brand-inner{min-height:220px;padding:28px 26px}.login-brand-copy{margin-top:47px}.login-brand-copy h1{font-size:24px}.login-panel{min-height:calc(100vh - 220px);padding:30px 22px 42px;place-items:start center}.login-heading{margin-bottom:25px}.topbar{padding:0 11px}.topbar-context{display:none}.user-button>span:last-child{display:none}.message-popover{right:48px;width:min(280px,calc(100vw - 30px))}.content{padding:18px 12px 28px}.page-header{min-height:48px;margin-bottom:14px}.page-header h1{font-size:19px}.page-header p{max-width:220px}.metric-grid{grid-template-columns:1fr 1fr;gap:8px}.metric-card{min-height:104px;padding:13px 11px;gap:10px}.metric-icon{width:35px;height:35px}.metric-card strong{font-size:23px}.metric-card small{display:none}.bar-chart{padding-left:8px;padding-right:8px;gap:4px}.bar-column{width:42px}.filter-actions{width:100%}.filter-actions .button{flex:1}.modal-backdrop{padding:16px 10px}.form-grid,.theory-course-primary-fields,.student-basic-body,.paired-readonly-fields,.triad-readonly-fields{grid-template-columns:1fr}.student-photo-card{padding:0 18px 18px}.schedule-item{padding:15px;grid-template-columns:1fr;gap:12px}.schedule-date{width:100%;grid-template-columns:22px auto 1fr}.schedule-date span{grid-column:3;margin:0;text-align:right}.schedule-main p{align-items:flex-start;flex-wrap:wrap}.schedule-capacity{padding:0;border:0;display:flex;align-items:center;gap:7px}.schedule-capacity strong{margin:0}.confirm-state{grid-column:auto}.analysis-tabs{gap:7px}.analysis-tabs button{min-height:52px;padding:0 10px;font-size:12px}.analysis-tabs button svg{display:none}.template-rule-head{display:none}.template-rule{grid-template-columns:1fr 1fr 34px}.template-rule select{grid-column:1 / -1}.template-rule .icon-button{justify-self:end}.module-items>div{grid-template-columns:36px 1fr}.module-items small{display:none}.message-row{padding:14px 12px}.read-state{display:none}}
