.login-board{background:radial-gradient(1200px 600px at 50% -10%, #3a3f48 0%, var(--board) 55%, #24272c 100%);justify-content:center;align-items:center;min-height:100%;padding:28px 16px;display:flex}.login-card{background:var(--paper);border-radius:var(--r-md);border-top:3px solid var(--red);flex-direction:column;gap:12px;width:100%;max-width:380px;padding:26px 24px 22px;display:flex;box-shadow:0 18px 44px #00000080}.lg-brand{border-bottom:1px solid var(--paper-line);align-items:center;gap:10px;padding-bottom:12px;display:flex}.lg-brand img{height:30px;display:block}.lg-brand div{flex-direction:column;line-height:1.35;display:flex}.lg-brand b{letter-spacing:.06em;color:var(--ink);font-size:15px}.lg-brand span{color:var(--ink-3);letter-spacing:.04em;font-size:11.5px}.lg-title{color:var(--ink);letter-spacing:.02em;margin:4px 0 0;font-size:18px;font-weight:650}.lg-note{color:var(--ink-2);margin:0;font-size:12.5px;line-height:1.6}.lg-note strong{color:var(--red-deep)}.lg-error{color:#7d1f18;background:var(--red-wash);border:1px solid #f0c9c4;border-left:3px solid var(--red);border-radius:var(--r-sm);padding:9px 11px;font-size:12.5px;line-height:1.5}.lg-field{flex-direction:column;gap:5px;display:flex}.lg-field>span{color:var(--ink-3);letter-spacing:.08em;font-size:11.5px}.lg-field input{border:1px solid var(--paper-line);border-radius:var(--r-sm);height:36px;color:var(--ink);background:#fff;padding:0 10px;font-size:14px}.lg-field input:focus{border-color:var(--cyan);box-shadow:var(--focus);outline:none}.lg-remember{color:var(--ink-2);align-items:flex-start;gap:7px;font-size:12px;line-height:1.5;display:flex}.lg-remember input{margin-top:2px}.lg-submit{border-radius:var(--r-sm);background:var(--red);color:#fff;letter-spacing:.1em;cursor:pointer;border:none;height:38px;margin-top:2px;font-size:14.5px;font-weight:600}.lg-submit:hover:not(:disabled){background:var(--red-deep)}.lg-submit:disabled{opacity:.55;cursor:not-allowed}.lg-foot{color:var(--ink-3);padding-top:4px;font-size:11.5px;line-height:1.6}.pwd-mask{z-index:60;background:#0a0c0f8c;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.pwd-card{background:var(--paper);border-radius:var(--r-md);border-top:3px solid var(--red);width:100%;max-width:340px;box-shadow:var(--shadow-sheet);flex-direction:column;gap:12px;padding:22px 20px 18px;display:flex}.pwd-card h2{color:var(--ink);margin:0;font-size:16px}.pwd-card .pwd-note{color:var(--ink-2);margin:0;font-size:12px;line-height:1.6}.pwd-card .pwd-row{justify-content:flex-end;gap:8px;margin-top:2px;display:flex}.pager{border-top:1px dashed var(--line,#e6e6e6);color:var(--ink-2,#6b7280);flex-wrap:wrap;align-items:center;gap:4px 5px;margin-top:6px;padding-top:6px;font-size:11px;display:flex}.pager-grow{flex:1}.pager-info{white-space:nowrap}.pager-info b{color:var(--ink,#111827);font-weight:600}.pager-size{align-items:center;gap:4px;display:inline-flex}.pager-size select{border:1px solid var(--line,#e6e6e6);background:#fff;border-radius:4px;height:22px;padding:0 3px;font-size:11px}.pager-gap{padding:0 2px}.ac{flex-direction:column;gap:12px;display:flex}.ac-head h1{color:var(--ink);margin:0 0 4px;font-size:19px}.ac-head p{color:var(--ink-2);margin:0;font-size:12.5px}.ac-tabs{border-bottom:1px solid var(--paper-line);gap:6px;padding-bottom:8px;display:flex}.ac-tabs button{border:1px solid var(--paper-line);border-radius:var(--r-sm);height:30px;color:var(--ink-2);cursor:pointer;background:0 0;padding:0 14px;font-size:13px}.ac-tabs button[aria-current=page]{background:var(--red-wash);color:var(--red-deep);border-color:#eec7c2;font-weight:600}.ac-ok,.ac-err{border-radius:var(--r-sm);border-left:3px solid;padding:8px 11px;font-size:12.5px;line-height:1.5}.ac-ok{color:#1d5c46;background:#eefaf3;border-color:#2f9a72}.ac-err{color:#7d1f18;background:var(--red-wash);border-color:var(--red)}.ac-temp{background:var(--sheet-paper);border:1px dashed var(--cyan-deep);border-radius:var(--r-sm);color:var(--ink-2);flex-wrap:wrap;align-items:center;gap:10px;padding:10px 12px;font-size:12.5px;display:flex}.ac-temp code{font-family:var(--font-data);letter-spacing:.06em;color:var(--ink);border:1px solid var(--paper-line);border-radius:var(--r-sm);background:#fff;padding:2px 8px;font-size:15px;font-weight:700}.ac-form{border:1px solid var(--paper-line);border-radius:var(--r-md);background:#fff;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));align-items:end;gap:10px;padding:12px;display:grid}.ac-form label{flex-direction:column;gap:4px;display:flex}.ac-form label>span{color:var(--ink-3);letter-spacing:.06em;font-size:11.5px}.ac-form input,.ac-form select{border:1px solid var(--paper-line);border-radius:var(--r-sm);background:#fff;height:32px;padding:0 8px;font-size:13px}.ac-form input:focus,.ac-form select:focus{border-color:var(--cyan);box-shadow:var(--focus);outline:none}.ac-form>button{grid-column:1/-1;justify-self:start}.ac-hint{color:var(--ink-3);margin:0;font-size:12px;line-height:1.6}.ac-toolbar{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.ac-toolbar input[type=text],.ac-toolbar>input:not([type]){border:1px solid var(--paper-line);border-radius:var(--r-sm);background:#fff;width:240px;height:30px;padding:0 8px;font-size:13px}.ac-check{color:var(--ink-2);align-items:center;gap:6px;font-size:12.5px;display:flex}.ac-tbl{border-collapse:collapse;border:1px solid var(--paper-line);border-radius:var(--r-md);background:#fff;width:100%;font-size:13px;overflow:hidden}.ac-tbl th,.ac-tbl td{text-align:left;border-bottom:1px solid var(--paper-line);vertical-align:middle;padding:7px 9px}.ac-tbl thead th{background:var(--paper);letter-spacing:.08em;color:var(--ink-3);white-space:nowrap;font-size:11.5px;font-weight:600}.ac-tbl tbody tr:hover{background:var(--cyan-wash)}.ac-tbl select{border:1px solid var(--paper-line);border-radius:var(--r-sm);background:#fff;min-width:104px;height:28px;padding:0 4px;font-size:13px}.ac-tbl.ac-matrix td:not(:first-child),.ac-tbl.ac-matrix th:not(:first-child){text-align:center;width:96px}.ac-acts{min-width:190px}.ac-empty{text-align:center;color:var(--ink-3);padding:16px 0}.ac-mono{font-family:var(--font-data);font-size:12.5px}.ac-dim{color:var(--ink-3);font-size:12px}.ac-ua{text-overflow:ellipsis;white-space:nowrap;max-width:200px;overflow:hidden}.ac-me,.ac-warn{letter-spacing:.04em;border-radius:2px;margin-left:6px;padding:0 5px;font-size:10.5px;font-style:normal;display:inline-block}.ac-me{background:var(--cyan-wash);color:var(--cyan-deep);border:1px solid #bfe3ec}.ac-warn{background:var(--red-wash);color:var(--red-deep);border:1px solid #eec7c2}.ac-off td{color:var(--ink-3);background:#fbfbf9}.ac-acts{flex-wrap:wrap;gap:5px;display:flex}.ac-danger{color:var(--red-deep)!important;border-color:#eec7c2!important}.ac-chip{border:1px solid var(--paper-line);color:var(--ink-2);cursor:pointer;background:#fff;border-radius:999px;margin:0 4px 3px 0;padding:2px 9px;font-size:11.5px;line-height:1.6}.ac-chip:hover{border-color:var(--cyan);color:var(--cyan-deep)}.ac-chip.on{border-color:var(--cyan-deep);background:var(--cyan-deep);color:#fff;font-weight:600}.ac-chip:disabled{opacity:.5;cursor:default}.ac-subj{min-width:108px}.ac-subj-field .ac-subj-pick{border:1px solid var(--paper-line);border-radius:var(--r-sm);background:#fff;flex-wrap:wrap;align-items:center;min-height:28px;padding:2px 6px;display:flex}.last-lesson{border:1px solid #f0d9d5;border-left:3px solid var(--red);background:linear-gradient(180deg, var(--red-wash), #fff 62%);border-radius:6px;margin:12px 0 0;padding:9px 11px 8px}.last-lesson.loading,.last-lesson.empty{border-left-color:var(--paper-line);background:#fafbfc;align-items:center;gap:8px;display:flex}.last-lesson .ll-head{flex-wrap:wrap;align-items:center;gap:6px 8px;display:flex}.last-lesson .cap{border-radius:var(--r-sm);background:var(--red);color:#fff;letter-spacing:.04em;padding:1px 6px;font-size:11px;font-weight:700}.last-lesson .ll-date{font-family:var(--font-round);color:var(--red-deep);font-size:15px}.last-lesson .ll-pills{flex-wrap:wrap;gap:6px;display:inline-flex}.last-lesson .ll-pills em{border:1px solid var(--paper-line);color:var(--ink-2);background:#fff;border-radius:999px;padding:1px 6px;font-size:11px;font-style:normal}.last-lesson .ll-pills em.warn{color:var(--red-deep);background:#fff6f4;border-color:#f2c9c4;font-weight:700}.last-lesson .ll-pills em.mute{color:var(--ink-3)}.last-lesson .ll-note{color:var(--red-deep);font-size:11px}.last-lesson .ll-body{max-height:188px;margin-top:6px;padding-right:4px;overflow:auto}.last-lesson .ll-sec{border-top:1px dashed #f1e3e1;gap:8px;padding:2px 0;font-size:12.5px;line-height:1.55;display:flex}.last-lesson .ll-sec:first-child{border-top:0}.last-lesson .ll-lbl{color:var(--ink-2);text-align:right;flex:0 0 96px;font-weight:700}.last-lesson .ll-lines{min-width:0;color:var(--ink);flex:1}.last-lesson .ll-line{overflow-wrap:anywhere;display:block}.last-lesson .ll-line.sub{color:var(--ink-2);padding-left:10px}.last-lesson .ll-line i{color:var(--red);margin-right:4px;font-style:normal;font-weight:700}.last-lesson .ll-more{color:var(--ink-3);font-size:11px}.last-lesson .ll-foot{border-top:1px dashed #f1e3e1;align-items:center;gap:6px;margin-top:6px;padding-top:6px;display:flex}.last-lesson .ll-foot .cap{color:var(--ink-2);background:0 0;padding:0;font-weight:600}.last-lesson .ll-err{color:var(--red-deep);margin-top:6px;font-size:12px}.prep-flip{margin-top:5px;display:block}.prep-flip .mini{border-style:dashed;border-color:var(--red);color:var(--red-deep);padding:3px 8px;font-size:11px}.archive .item.flip{border-style:dashed;border-color:var(--red);color:var(--red-deep);font-weight:700}.archive .item.flip:before{content:"▸";color:var(--red)}.reader-mask{z-index:60;background:#181b219e;justify-content:center;align-items:center;padding:16px;display:flex;position:fixed;inset:0}.reader{background:var(--paper);border-radius:10px;flex-direction:column;width:min(1180px,97vw);height:min(980px,96vh);display:flex;overflow:hidden;box-shadow:0 26px 70px #00000080}.reader-head{border-bottom:1px solid var(--paper-line);background:#fff;align-items:center;gap:10px;padding:9px 14px;display:flex}.reader-head .who{flex-wrap:wrap;align-items:baseline;gap:4px 10px;min-width:0;display:flex}.reader-head .who b{font-family:var(--font-round);font-size:17px}.reader-head .pos{background:var(--red-wash);color:var(--red-deep);border-radius:999px;padding:1px 7px;font-size:12px;font-weight:700}.reader-head .meta{color:var(--ink-2);font-size:12.5px}.reader-head .mini{margin-left:auto}.reader-bar{border-bottom:1px solid var(--paper-line);background:#fff;flex-wrap:wrap;align-items:center;gap:6px;padding:8px 14px;display:flex}.reader-bar .grow{flex:1}.reader-bar input.date{width:140px}.reader-bar .sw{color:var(--ink-2);font-size:12px}.reader-hint{background:var(--red-wash);color:var(--red-deep);padding:6px 14px;font-size:12px}.reader-err{margin:8px 14px 0}.reader-meta{border-bottom:1px solid var(--paper-line);color:var(--ink-2);background:#fbfcfd;flex-wrap:wrap;align-items:center;gap:6px 16px;padding:6px 14px;font-size:12px;display:flex}.reader-meta b{color:var(--ink)}.reader-meta b.hw-done{color:#177a51}.reader-meta b.hw-partial,.reader-meta b.hw-none{color:var(--red-deep)}.reader-meta .hw{align-items:center;gap:5px;display:inline-flex}.reader-stage{background:var(--board);background-image:linear-gradient(#ffffff08 1px,#0000 1px),linear-gradient(90deg,#ffffff08 1px,#0000 1px);background-size:10px 10px;flex:1;justify-content:center;align-items:center;min-height:0;padding:10px;display:flex;overflow:hidden}.reader-slot{flex:none;position:relative}.reader-paper{transform-origin:0 0;width:max-content}.reader-paper .sheet{box-shadow:0 12px 30px #00000073}.reader.wide{width:min(1620px,98vw)}.reader-paper.spread{display:block}.reader-book{perspective:2400px;background:linear-gradient(155deg,#4d2c27 0%,#2c1a18 55%,#3d2320 100%);border-radius:8px 10px 10px 8px;align-items:flex-start;gap:0;padding:13px;display:flex;position:relative;box-shadow:0 28px 60px #0000008c,inset 0 0 0 1px #ffffff12}.reader-book.single{box-shadow:none;background:0 0;border-radius:0;padding:0}.reader-book:before{content:"";pointer-events:none;z-index:3;background:linear-gradient(90deg,#0000 0%,#00000024 40%,#0000004d 50%,#00000024 60%,#0000 100%);width:30px;position:absolute;top:13px;bottom:13px;left:50%;transform:translate(-50%)}.reader-book.single:before{display:none}.reader-page{flex-direction:column;gap:6px;display:flex}.reader-page .reader-cap{margin:0 8px}.reader-page[data-side=prev] .sheet{border-radius:3px 0 0 3px;box-shadow:inset -18px 0 22px -20px #00000080,0 12px 26px #0006}.reader-page[data-side=cur] .sheet{border-radius:0 3px 3px 0;box-shadow:inset 18px 0 22px -20px #00000080,0 12px 26px #0006}.reader-page[data-side=prev] .reader-empty{border-radius:3px 0 0 3px}.reader-page[data-side=cur] .reader-empty{border-radius:0 3px 3px 0}.reader-page[data-side=cur]{transform-origin:0}.reader-page[data-side=prev]{transform-origin:100%;animation:.26s ease-out both leaf-settle}.reader-book[data-turn=next] .reader-page[data-side=cur]{animation:.3s cubic-bezier(.22,.7,.3,1) both leaf-drop}.reader-book[data-turn=prev] .reader-page[data-side=cur]{animation:.3s cubic-bezier(.22,.7,.3,1) both leaf-rise}@keyframes leaf-drop{0%{opacity:.34;transform:rotateY(-17deg)}to{opacity:1;transform:none}}@keyframes leaf-rise{0%{opacity:.34;transform:rotateY(15deg)}to{opacity:1;transform:none}}@keyframes leaf-settle{0%{opacity:.45}to{opacity:1}}.reader-page .reader-empty{box-sizing:border-box;justify-content:center;width:210mm;min-height:297mm}@media (prefers-reduced-motion:reduce){.reader-page,.reader-book .reader-page{animation:none!important}}@media print{.reader-mask{display:none!important}}.mini.ai-polish{font-variant-numeric:tabular-nums;flex:none}.mini.ai-polish:disabled,.mini.ai-polish:disabled:hover{border-color:var(--paper-line);background:var(--paper);color:var(--ink-3);cursor:not-allowed}.editor-body .banner.ai-polish-banner{margin:4px 0 12px}.ai-polish-wrap{flex:none;align-items:center;gap:6px;display:inline-flex}.ai-polish-err{color:var(--red);max-width:24em;font-size:12px;line-height:1.3}.ai-inline{align-items:flex-start;gap:6px;display:flex}.ai-inline>input,.ai-inline>textarea{flex:auto;min-width:0}.ai-inline>.ai-polish-wrap{padding-top:5px}.ai-field-foot{align-items:center;gap:6px;margin-top:6px;display:flex}.prep-count-row{align-items:center;gap:8px;display:flex}.prep-count-row .prep-count{margin:0}.fee-rules{border:1px solid var(--paper-line);border-radius:var(--r-md);background:var(--cyan-wash);color:var(--ink);border-left-width:3px;margin-bottom:12px;padding:9px 12px;font-size:12.5px;line-height:1.7;display:block}.fee-rules b{letter-spacing:.04em;margin-right:6px;font-size:12px}.fee-rules.ok{border-left-color:var(--cyan)}.fee-rules.ok .fee-rules-ok{color:#1f7a5c}.fee-rules.bad{border-color:#edc9c5;border-left-color:var(--red);background:var(--red-wash)}.fee-rules.bad b{color:var(--red-deep)}.fee-rules .fee-rules-meta{font-family:var(--font-data);color:var(--ink-2)}.fee-rules ul{margin:6px 0 0;padding-left:18px}.fee-rules li{margin:2px 0}.fee-rules li em{font-style:normal;font-family:var(--font-data);color:var(--red-deep)}.fee-hint{color:var(--ink-3);margin-top:4px;font-size:11.5px;line-height:1.5;display:block}.fee-hint.bad{color:var(--red-deep);font-weight:600}.fee-flag{font-family:var(--font-data);color:var(--red);white-space:nowrap;background:#fdecea;border-radius:10px;margin-left:6px;padding:1px 6px;font-size:10.5px;display:inline-block}.fee-refund-head{flex-wrap:wrap;align-items:center;gap:10px;display:flex}.fee-refund-total{font-family:var(--font-data);color:var(--ink-2);font-size:12px}.fee-refund-sums{color:var(--ink-2);margin-top:8px;font-size:12px}.fee-refund-sums b{font-family:var(--font-data);color:var(--ink)}.refund-voided td{color:var(--ink-3);text-decoration:line-through}.refund-voided .pill{text-decoration:none}.fee-refund-why{max-width:220px;color:var(--ink-2)}.crm .module-head{align-items:center}.crm-msg{border-radius:var(--r-md);background:var(--cyan-wash);color:var(--ink);border:1px solid #bfe0f7;align-items:center;gap:10px;margin-bottom:12px;padding:8px 12px;font-size:12.5px;display:flex}.crm-msg .mini{margin-left:auto}.crm-cards{grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:10px;margin:12px 0 14px;display:grid}.crm-stat{border:1px solid var(--paper-line);border-left:3px solid var(--paper-line);border-radius:var(--r-md);background:#fff;flex-direction:column;gap:2px;padding:10px 12px;display:flex}.crm-stat .k{letter-spacing:.06em;color:var(--ink-2);font-size:11.5px;font-weight:600}.crm-stat b{font-family:var(--font-data);color:var(--ink);font-size:22px;font-weight:600;line-height:1.2}.crm-stat b em{color:var(--ink-3);margin-left:3px;font-size:11px;font-style:normal}.crm-stat .s{color:var(--ink-3);font-size:11px}.crm-stat.danger{border-left-color:var(--red);background:var(--red-wash)}.crm-stat.danger b{color:var(--red-deep)}.crm-stat.warn{background:#fff8ec;border-left-color:#e8a33d}.crm-table-wrap{overflow-x:auto}.crm-table{min-width:900px;margin-top:4px}.crm-table .crm-nowrap,.crm-table .crm-name-cell b,.crm-table .crm-name-cell .mute{white-space:nowrap}.crm-table .crm-name-cell .pill{white-space:nowrap;width:fit-content;margin-top:3px;display:block}.crm-table th:first-child{min-width:96px}.crm-table td{vertical-align:top;line-height:1.45}.crm-row-renew td:first-child{box-shadow:inset 3px 0 0 var(--red)}.crm-table .crm-excerpt{text-overflow:ellipsis;white-space:nowrap;vertical-align:bottom;max-width:150px;display:inline-block;overflow:hidden}.crm-table .seg{white-space:nowrap;flex-wrap:nowrap;gap:5px}.crm-filter{align-items:flex-end;gap:10px;margin-bottom:8px}.crm-filter .crm-count{font-family:var(--font-data);padding-bottom:6px;font-size:11.5px}.crm-logs-wrap{overflow-x:auto}.crm-logs-wrap table{min-width:900px}.crm-logs-wrap td:first-child,.crm-logs-wrap td:nth-child(2),.crm-logs-wrap td:nth-child(3),.crm-logs-wrap td:nth-child(4),.crm-logs-wrap td:nth-child(6),.crm-logs-wrap td:nth-child(7),.crm-logs-wrap td:nth-child(8){white-space:nowrap}.table .crm-content{text-overflow:ellipsis;white-space:nowrap;vertical-align:bottom;max-width:320px;display:inline-block;overflow:hidden}.crm-modal-backdrop{z-index:40;background:#141c266b;justify-content:center;align-items:center;padding:24px;display:flex;position:fixed;inset:0}.crm-modal{border:1px solid var(--paper-line);border-radius:var(--r-md);background:#fff;width:min(720px,100%);max-height:88vh;padding:16px 18px 14px;overflow:auto;box-shadow:0 18px 40px #141e3247}.crm-modal-head{border-bottom:1px solid var(--paper-line);align-items:center;gap:10px;margin-bottom:10px;padding-bottom:8px;display:flex}.crm-modal-head h3{margin:0;font-size:14px}.crm-modal-head .mini{margin-left:auto}.crm-quick{align-items:center;gap:6px;margin:-2px 0 10px;display:flex}.crm-textarea{width:100%;display:block}.crm-textarea textarea{width:100%;font:inherit;color:var(--ink);border:1px solid var(--paper-line);border-radius:var(--r-sm);resize:vertical;background:#fff;padding:7px 9px;font-size:13px}.crm-textarea textarea:focus{border-color:var(--cyan);box-shadow:var(--focus);outline:none}.crm-modal-foot{border-top:1px solid var(--paper-line);align-items:center;gap:8px;margin-top:14px;padding-top:10px;display:flex}.crm-modal-foot .mute{font-size:11.5px}.crm-follow-grid{grid-template-columns:repeat(auto-fit,minmax(230px,1fr));gap:10px;display:grid}.crm-follow-item{text-align:left;border:1px solid var(--paper-line);border-left:3px solid var(--paper-line);border-radius:var(--r-md);cursor:pointer;background:#fff;flex-direction:column;gap:2px;padding:10px 12px;transition:border-color .15s,box-shadow .15s;display:flex}.crm-follow-item:hover{border-color:var(--cyan);box-shadow:0 2px 8px #1428500f}.crm-follow-item .k{color:var(--ink-2);font-size:11.5px;font-weight:600}.crm-follow-item b{font-family:var(--font-data);color:var(--ink);font-size:15px;font-weight:600}.crm-follow-item .s{color:var(--ink-3);font-size:11px;line-height:1.5}.crm-follow-item.danger{border-left-color:var(--red);background:var(--red-wash)}.crm-follow-item.danger b{color:var(--red-deep)}.crm-follow-item.warn{background:#fff8ec;border-left-color:#e8a33d}@media (width<=900px){.crm-table .crm-excerpt,.table .crm-content{max-width:160px}}.exam-layout{grid-template-columns:clamp(360px,25vw,440px) minmax(0,1fr);align-items:start;gap:16px;display:grid}@media (width<=1180px){.exam-layout{grid-template-columns:minmax(0,1fr)}}.exam-form{max-height:calc(100vh - 40px);position:sticky;top:12px;overflow:auto}.exam-form .f{margin-bottom:10px;display:block}.exam-form .f>span{color:var(--ink-2);margin-bottom:4px;font-size:12px;display:block}.exam-form .f input,.exam-form .f select,.exam-form .f textarea{width:100%}.exam-blocks{border:1px solid var(--paper-line);border-radius:var(--r-md);margin:6px 0 10px;overflow:hidden}.exam-blocks .row{border-bottom:1px dashed var(--paper-line);align-items:center;gap:8px;padding:5px 9px;font-size:12px;display:flex}.exam-blocks .row:last-child{border-bottom:none}.exam-blocks .row.on{background:var(--cyan-wash)}.exam-blocks .row b{font-weight:600}.exam-blocks .row .pts{font-family:var(--font-data);color:var(--ink-2);margin-left:auto}.exam-progress{border-radius:var(--r-sm);background:var(--cyan-wash);color:var(--cyan-deep);margin:8px 0;padding:8px 10px;font-size:12.5px}.exam-history{margin-top:12px}.exam-history button{text-align:left;border:1px solid var(--paper-line);border-radius:var(--r-sm);cursor:pointer;background:#fff;width:100%;margin-bottom:4px;padding:6px 8px;font-size:12px;line-height:1.4;display:block}.exam-history button:hover{border-color:var(--cyan)}.exam-history button.on{border-color:var(--cyan);background:var(--cyan-wash)}.exam-history .t{color:var(--ink);font-weight:600;display:block}.exam-history .m{color:var(--ink-3);font-family:var(--font-data);font-size:11px}.exam-paper-stage{background:var(--board);border-radius:var(--r-md);flex-direction:column;align-items:center;gap:14px;padding:18px;display:flex;overflow:auto}.exam-paper{--paper-fs:11pt;color:#111;font-family:var(--font-ui);font-size:var(--paper-fs);background:#fff;flex-direction:column;line-height:1.62;display:flex;position:relative;box-shadow:0 14px 32px #00000073}.exam-paper.a4{width:210mm;height:297mm;padding:14mm 15mm 12mm}.exam-paper.a3{transform-origin:0 0;width:420mm;height:297mm;padding:12mm 14mm 10mm}.exam-paper-body{flex:1;gap:10mm;min-height:0;display:flex}.exam-paper.a3 .exam-paper-body{gap:9mm}.exam-col{flex:1;min-width:0;overflow:hidden}.exam-col-rule{border-left:1px dashed #b9c2cc;width:0}.exam-paper-head{text-align:center;margin-bottom:4mm}.exam-paper-head .school{letter-spacing:.32em;color:#2a2a2a;font-size:.92em}.exam-paper-head h1{letter-spacing:.06em;margin:1.2mm 0 2mm;font-size:1.62em;font-weight:700}.exam-paper-head .meta{color:#333;flex-wrap:wrap;justify-content:center;gap:6mm;font-size:.92em;display:flex}.exam-paper-head .exam-fill{text-align:center;border-bottom:1px solid #555;min-width:26mm;padding:0 1mm;display:inline-block}.exam-paper-head .exam-score{border-collapse:collapse;table-layout:fixed;border:1px solid #333;width:100%;margin-top:2.6mm}.exam-paper-head .exam-score th,.exam-paper-head .exam-score td{text-align:center;border:1px solid #333;height:7mm;padding:1.1mm 0;font-size:.88em}.exam-paper-head .exam-score th{background:#f2f4f6;font-weight:600}.exam-paper-note{color:#444;text-align:left;margin-top:1.6mm;font-size:.86em}.exam-sec{align-items:baseline;gap:2mm;margin:3.2mm 0 1.6mm;font-size:1.02em;font-weight:700;display:flex}.exam-sec .pt{color:#555;margin-left:auto;font-size:.86em;font-weight:400}.exam-sec-hint{color:#555;font-size:.86em;font-weight:400}.exam-q{break-inside:avoid;margin:0 0 1.8mm}.exam-q .no{margin-right:.4em;font-weight:600}.exam-q .exam-opts{flex-wrap:wrap;gap:1.2mm 6mm;margin-top:.6mm;padding-left:1.2em;display:flex}.exam-q .exam-opts span{min-width:22mm}.exam-q .exam-blank{border-bottom:1px solid #666;height:6mm;margin:1.2mm 0 0 1.2em;display:block}.exam-q .exam-work{border-bottom:1px dotted #999;height:16mm;margin:1mm 0 0 1.2em}.exam-q.script{color:#333}.exam-q.script .en{font-family:Times New Roman,Georgia,serif}.exam-paper-foot{color:#666;border-top:1px solid #ccc;justify-content:space-between;margin-top:auto;padding-top:2mm;font-size:.8em;display:flex}.exam-seal{border-right:1px dashed #999;justify-content:center;align-items:center;width:8mm;display:flex;position:absolute;top:34mm;bottom:20mm;left:4mm}.exam-seal span{writing-mode:vertical-rl;color:#666;letter-spacing:.4em;font-size:.8em;transform:rotate(180deg)}.exam-paper.exam-answers .exam-sec{color:#0a6b4a}.exam-paper.exam-answers .exam-q .ans{color:#0a6b4a;font-weight:600}.exam-paper-zoom{transform-origin:top}.exam-print-only{display:none}@media print{html,body,#root{background:#fff;height:auto;overflow:visible}body *{visibility:hidden}.exam-doc,.exam-doc *{visibility:visible}.exam-doc{background:#fff;position:absolute;top:0;left:0;width:auto!important;height:auto!important;display:block!important}.exam-paper{box-shadow:none;page-break-after:always;break-after:page;overflow:hidden;height:296mm!important;margin:0!important}.exam-paper.a3{width:419mm!important}.exam-paper:last-child{page-break-after:auto;break-after:auto}.exam-paper-zoom{transform:none!important}}.score-capture{margin-bottom:12px}.score-capture .form-row{padding:8px 12px}.score-pick-head{color:var(--ink-2);margin:6px 2px;font-size:12px}.score-pick{border:1px solid var(--paper-line);border-radius:var(--r-md);background:var(--paper);max-height:260px;overflow:auto}.score-pick-grp+.score-pick-grp{border-top:1px dashed var(--paper-line)}.score-pick-grp .grp-head{border-bottom:1px solid var(--paper-line);background:#fff;padding:5px 10px;font-size:12px}.score-pick .line{grid-template-columns:minmax(0,1fr) 120px 160px;align-items:center;gap:8px;padding:5px 10px;font-size:13px;display:grid}.score-pick .line.on{background:var(--cyan-wash);box-shadow:inset 3px 0 0 var(--cyan)}.score-pick .line .pick{cursor:pointer;align-items:baseline;gap:6px;min-width:0;display:flex}.score-pick .line .pick .p{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.score-pick .line .ans{color:var(--ink-2);text-overflow:ellipsis;white-space:nowrap;font-size:12px;overflow:hidden}.score-pick .line .wrong-ans{padding:2px 6px;font-size:12px}.score-pick-foot{align-items:center;padding:8px 12px 2px}.score-summary{border:1px solid var(--paper-line);border-left:4px solid var(--cyan);border-radius:var(--r-md);background:var(--cyan-wash);flex-wrap:wrap;align-items:baseline;gap:8px;margin-bottom:10px;padding:10px 12px;font-size:13px;display:flex}.score-summary .s{color:var(--cyan-deep);font-weight:600}.score-mastery{margin-bottom:14px}.score-mastery .m-row{grid-template-columns:70px minmax(60px,140px) minmax(0,1fr);align-items:center;gap:10px;padding:3px 0;font-size:12px;display:grid}.score-mastery .m-row .s{font-weight:600}.score-mastery .track{background:var(--paper-line);border-radius:999px;height:8px;overflow:hidden}.score-mastery .track i{background:var(--red);border-radius:999px;min-width:4px;height:100%;display:block}.score-mastery .n{color:var(--ink-2)}.score-trend{border:1px solid var(--paper-line);border-radius:var(--r-md);background:#fff;align-items:flex-end;gap:10px;margin-bottom:8px;padding:10px 12px 4px;display:flex}.score-trend .t{font-family:var(--font-data);color:var(--ink-2);flex-direction:column;align-items:center;gap:2px;font-size:11px;display:flex}.score-trend .t .bar{background:linear-gradient(180deg, var(--cyan), var(--cyan-deep));border-radius:3px 3px 0 0;width:18px}.score-trend .t .v{color:var(--ink)}.score-trend .t .d{color:var(--ink-3)}.ml-wrap{grid-template-columns:clamp(340px,24vw,420px) minmax(0,1fr);align-items:start;gap:14px;display:grid}@media (width<=1000px){.ml-wrap{grid-template-columns:minmax(0,1fr)}}.ml-up{border:1px solid var(--paper-line);border-radius:var(--r-md);background:var(--paper);color:var(--ink-2);flex-wrap:wrap;align-items:center;gap:8px;padding:8px 12px;font-size:12px;display:flex}.ml-up code{font-family:var(--font-data);color:var(--ink);font-size:11px}.ml-dot{background:var(--ink-3);border-radius:50%;width:8px;height:8px}.ml-dot.on{background:#2f9e6f}.ml-dot.off{background:var(--red)}.ml-form{flex-direction:column;gap:10px;display:flex}.ml-form label{color:var(--ink-2);flex-direction:column;gap:4px;font-size:12px;display:flex}.ml-form select,.ml-form input,.ml-form textarea{font:inherit;border:1px solid var(--paper-line);border-radius:var(--r-sm);color:var(--ink);background:#fff;padding:6px 8px;font-size:13px}.ml-form textarea{resize:vertical;min-height:62px}.ml-hint{color:var(--ink-3);font-size:11px;line-height:1.5}.ml-list{flex-direction:column;gap:10px;display:flex}.ml-card{border:1px solid var(--paper-line);border-radius:var(--r-md);background:#fff;padding:10px 12px}.ml-card-head{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.ml-card-head b{font-size:14px}.ml-meta{color:var(--ink-3);margin:4px 0 0;font-size:12px}.ml-focus{color:var(--ink-2);margin:6px 0 0;font-size:12px}.ml-actions{flex-wrap:wrap;gap:6px;margin-top:8px;display:flex}.ml-bar{background:var(--paper-line);border-radius:999px;height:6px;margin-top:8px;overflow:hidden}.ml-bar>i{background:var(--cyan);height:100%;transition:width .4s;display:block}.ml-err{border-radius:var(--r-sm);background:var(--red-wash);color:var(--red-deep);word-break:break-all;margin:8px 0 0;padding:6px 8px;font-size:12px}.ml-req{border-radius:var(--r-sm);background:var(--paper);max-height:220px;font-family:var(--font-data);white-space:pre-wrap;color:var(--ink-2);margin:8px 0 0;padding:8px;font-size:11px;overflow:auto}.ml-tag{background:var(--paper-line);color:var(--ink-2);border-radius:999px;padding:2px 8px;font-size:11px;font-weight:700}.ml-tag-succeeded{color:#24724f;background:#2f9e6f24}.ml-tag-failed{background:var(--red-wash);color:var(--red-deep)}.ml-tag-running,.ml-tag-queued{color:var(--cyan-deep);background:#3aa5c429}.ml-link{font-family:var(--font-data);color:var(--cyan-deep);word-break:break-all;font-size:11px}.pv-page{z-index:50;-webkit-overflow-scrolling:touch;color:#1e242c;-webkit-text-size-adjust:100%;background:#f5f6f3;font-family:-apple-system,BlinkMacSystemFont,PingFang SC,Hiragino Sans GB,Microsoft YaHei,system-ui,Helvetica Neue,sans-serif;font-size:16px;line-height:1.6;position:fixed;inset:0;overflow-y:auto}.pv-wrap{max-width:520px;margin:0 auto;padding:20px 16px 48px}.pv-head{margin-bottom:16px}.pv-brand{color:#2a7e97;letter-spacing:.08em;background:#3aa5c41f;border-radius:999px;padding:3px 10px;font-size:12px;font-weight:700;display:inline-block}.pv-title{letter-spacing:.01em;margin:10px 0 4px;font-size:24px;font-weight:700;line-height:1.3}.pv-sub{color:#5b6875;margin:0;font-size:16px}.pv-card{background:#fff;border:1px solid #dce1e7;border-radius:12px;margin:0 0 12px;padding:16px 16px 14px;box-shadow:0 1px 2px #1e242c0a}.pv-h2{margin:22px 0 10px;font-size:17px;font-weight:700}.pv-mute{color:#8b96a3;margin:6px 0 0;font-size:13px}.pv-loading{color:#5b6875;align-items:center;gap:10px;display:flex}.pv-dot{background:#3aa5c4;border-radius:50%;width:8px;height:8px;animation:1s ease-in-out infinite pv-pulse}@keyframes pv-pulse{0%,to{opacity:.25;transform:scale(.85)}50%{opacity:1;transform:scale(1)}}.pv-fail{background:#fdf1ef;border-color:#f0c9c4}.pv-fail b{color:#bc3b31;font-size:17px;display:block}.pv-fail p{margin:6px 0 0}.pv-balance{color:#fff;background:linear-gradient(150deg,#2a7e97,#3aa5c4);border-color:#0000;align-items:center;gap:16px;padding:18px 16px;display:flex}.pv-hours{border-right:1px solid #ffffff59;flex-direction:column;align-items:center;min-width:100px;padding-right:16px;display:flex}.pv-hours b{letter-spacing:-.02em;font-size:40px;font-weight:800;line-height:1.1}.pv-hours span,.pv-metrics span{opacity:.92;font-size:13px}.pv-metrics{flex:1;gap:12px;display:flex}.pv-metrics>div{flex-direction:column;flex:1;gap:2px;min-width:0;display:flex}.pv-metrics b{white-space:nowrap;font-size:22px;font-weight:700}.pv-renew{background:#fffaea;border-color:#f3d9a8}.pv-renew b{color:#9a6a12;font-size:17px;display:block}.pv-renew p{margin:6px 0 0}.pv-lesson{padding:0;overflow:hidden}.pv-lesson>summary{cursor:pointer;-webkit-tap-highlight-color:transparent;align-items:center;gap:12px;padding:14px 16px;list-style:none;display:flex}.pv-lesson>summary::-webkit-details-marker{display:none}.pv-lesson>summary:after{content:"";border-bottom:2px solid #8b96a3;border-right:2px solid #8b96a3;flex:none;width:8px;height:8px;margin-left:auto;transition:transform .15s;transform:rotate(45deg)}.pv-lesson[open]>summary:after{transform:rotate(-135deg)}.pv-lesson[open]>summary{border-bottom:1px solid #eef1f4}.pv-when{flex-direction:column;flex:none;align-items:center;width:52px;display:flex}.pv-when b{font-size:19px;font-weight:700}.pv-when i{color:#8b96a3;font-size:12px;font-style:normal}.pv-what{flex-direction:column;min-width:0;display:flex}.pv-what b{white-space:nowrap;text-overflow:ellipsis;font-size:16px;font-weight:600;overflow:hidden}.pv-what i{color:#8b96a3;white-space:nowrap;text-overflow:ellipsis;font-size:13px;font-style:normal;overflow:hidden}.pv-tag{border-radius:999px;flex:none;align-self:flex-start;padding:2px 8px;font-size:12px;font-weight:600}.pv-tag-final{color:#2a7e97;background:#3aa5c424}.pv-tag-draft{color:#8b96a3;background:#f0f1f3}.pv-sections{margin:0;padding:6px 16px 16px}.pv-section{border-bottom:1px dashed #e6eaee;padding:10px 0}.pv-section:last-child{border-bottom:none;padding-bottom:0}.pv-section dt{color:#2a7e97;letter-spacing:.02em;margin:0 0 4px;font-size:13px;font-weight:700}.pv-section dd{white-space:pre-line;word-break:break-word;margin:0;font-size:16px}.pv-empty{color:#8b96a3;margin:0;padding:14px 16px;font-size:14px}.pv-card.pv-empty{padding:16px}.pv-foot{text-align:center;border-top:1px solid #e6eaee;margin-top:22px;padding-top:14px}.pv-micro{color:inherit;border-left:3px solid #3aa5c4;align-items:center;gap:12px;text-decoration:none;display:flex}.pv-micro-icon{color:#2a7e97;background:#3aa5c424;border-radius:50%;flex:0 0 34px;justify-content:center;align-items:center;height:34px;font-size:13px;display:flex}.pv-micro-body{flex-direction:column;flex:auto;gap:2px;min-width:0;display:flex}.pv-micro-body b{font-size:15px;line-height:1.4}.pv-micro-body i{color:#8b96a3;font-size:12px;font-style:normal}.pv-micro-go{color:#2a7e97;flex:none;font-size:13px;font-weight:700}@media (width>=720px){.pv-page{background:#eef1f4}.pv-wrap{max-width:560px;padding-top:32px}.pv-card{box-shadow:0 2px 10px #1e242c0f}}@media (hover:none){.pv-lesson>summary{padding:16px}}.prep{background:var(--board);flex-direction:column;flex:auto;min-width:0;height:100%;min-height:0;display:flex;overflow:hidden}.prep-grow{flex:1;min-width:0}.prep-grid{flex:1;grid-template-rows:minmax(0,1fr);grid-template-columns:clamp(300px,21vw,380px) minmax(0,1fr) clamp(560px,42vw,820px);min-height:0;display:grid}.prep .banner.notice{color:#245c33;background:#f1faf3;border-color:#bfe3c8}.prep .banner.warn{color:#7a4a1c;background:#fff6ec;border-color:#f0c9a8}.prep-card{text-align:left;align-items:flex-start}.prep-last{font-family:var(--font-data);color:var(--ink-3);font-size:10px}.prep-att{margin-top:3px;display:block}.prep-att em{background:var(--red-wash);font-family:var(--font-ui);color:var(--red-deep);border:1px solid #f3d6d2;border-radius:999px;margin:0 4px 2px 0;padding:0 6px;font-size:10px;font-style:normal;display:inline-block}.prep-hw{flex-wrap:wrap;align-items:center;gap:4px;margin-top:5px;display:flex}.prep-hw.attention .cap{color:var(--red,#c0392b);font-weight:600}.prep-hw .cap{color:var(--ink-3);font-size:10px}.prep-hw .mini{padding:3px 7px;font-size:11px}.prep-hw .mini.active{border-color:var(--cyan);background:var(--cyan-wash);color:var(--cyan-deep)}.prep-hw-note{flex:1;min-width:60px;padding:3px 6px!important;font-size:11px!important}.mark.prep-none i{border-style:dashed}.mark.prep-ready i{background:#2f7d3f;border-color:#2f7d3f}.mark.prep-edited i{background:var(--red);border-color:var(--red)}.pill.prep-state{border:1px solid var(--paper-line);border-radius:999px;flex:none;padding:1px 8px;font-size:11px}.pill.prep-state.prep-none{color:var(--ink-3);border-color:#d7dde3}.pill.prep-state.prep-ready{color:#245c33;background:#f1faf3;border-color:#bfe3c8}.pill.prep-state.prep-edited{background:var(--red-wash);color:var(--red-deep);border-color:#f3d6d2}.prep-bar{border-bottom:1px solid var(--paper-line);background:#fff;align-items:center;gap:10px;padding:10px 16px;display:flex}.prep-who{flex:1;min-width:0}.prep-who b{color:var(--ink);font-size:13.5px;display:block}.prep-who .mute{white-space:nowrap;text-overflow:ellipsis;margin-top:2px;display:block;overflow:hidden}.prep-meta{border-bottom:1px solid var(--paper-line);font-family:var(--font-data);color:var(--ink-3);background:#fff;flex-wrap:wrap;gap:4px 14px;padding:7px 16px;font-size:10.5px;display:flex}.prep-meta b{color:var(--ink-2);font-weight:600}.prep-actions{border-bottom:1px solid var(--paper-line);background:#fff;flex-wrap:wrap;align-items:center;gap:6px;padding:9px 16px;display:flex}.prep-actions .btn{flex:none}.prep-note-input{flex:1;min-width:150px;padding:6px 9px!important;font-size:11.5px!important}.prep-wait{background:var(--cyan-wash);border-bottom:1px solid var(--paper-line);color:var(--cyan-deep);margin:0;padding:8px 16px;font-size:11.5px}.prep-spin{vertical-align:-1px;border:2px solid #ffffff73;border-top-color:#fff;border-radius:50%;width:10px;height:10px;margin-right:5px;animation:.8s linear infinite prep-spin;display:inline-block}.prep-spin.dark{border-color:#d2453a4d;border-top-color:var(--red)}@keyframes prep-spin{to{transform:rotate(360deg)}}.prep-hist{border-bottom:1px solid var(--paper-line);background:#fff;padding:8px 16px}.prep-hist-body{max-height:36vh;padding-top:6px;overflow:auto}.prep-hist-table th,.prep-hist-table td{padding:5px 6px;font-size:11.5px}.prep-hist-table td .mute{white-space:nowrap;font-size:10.5px}.prep-hist-flag{background:var(--red-wash);color:#7d2a20;border-bottom:1px solid #f3d6d2;align-items:center;gap:8px;padding:7px 16px;font-size:11.5px;display:flex}.prep-hist-flag b{color:var(--red-deep)}.prep-hist-flag .mini{flex:none}.prep-lbl{align-items:baseline;gap:6px;display:flex!important}.prep-hint{font-style:normal;font-family:var(--font-data);color:var(--ink-3);font-size:10px;font-weight:400}.prep-minutes input{width:110px}.prep-count{margin-top:4px}.prep-item .cap{align-items:center;margin-bottom:0}.prep-no{font-family:var(--font-data);letter-spacing:.06em;color:var(--cyan-deep);font-size:11px;font-weight:700}.prep-item>input,.prep-item>textarea{margin-top:6px}.prep-item>textarea{min-height:54px}.sheet.prep-sheet{--fs:11.6px;--sheet-paper:#fff;--sheet-row:#fff;--sheet-label:#fdf1ef;--sheet-head:#f7dcd9;--sheet-line:#c0392b;color:#241d1c;gap:2.6mm;padding:10mm 12mm 8mm;overflow:hidden}.prep-sheet .sheet-head .htitle{letter-spacing:.3em;color:var(--red);opacity:1;font-size:1.24em}.prep-sheet .sheet-title{color:#a6342b;font-size:1.78em}.prep-sheet .title-block .rule{border-top:1.2px solid #c0392b}.prep-sheet .title-block .rule:after{border-top:.5px solid #e7b8b2}.prep-sheet .sheet-who{margin-top:3.4mm;font-size:.98em}.prep-sheet .sheet-who .cap{color:#b5796f}.prep-sheet .sheet-who .val{color:#5a1f19}.prep-sheet .sheet-who .val.name{border-bottom:1.4px solid #daa49d}.prep-sheet .sheet-foot .line-1{color:#a6342b}.prep-sheet .sheet-foot .promo{color:#9c8480}.prep-body{flex-direction:column;flex:1;gap:2.3mm;min-height:0;display:flex;overflow:hidden}.prep-sec{break-inside:avoid}.prep-sec-t{font-family:var(--font-ui);letter-spacing:.14em;color:#a6342b;border-bottom:1px solid #ecc9c4;align-items:baseline;gap:.5em;margin:0 0 1mm;padding-bottom:.5mm;font-size:1.06em;font-weight:700;display:flex}.prep-sec-t:before{content:"■";color:var(--red);font-size:.58em}.prep-sec-t em{font-style:normal;font-family:var(--font-data);letter-spacing:.02em;color:#b5796f;font-size:.78em;font-weight:600}.prep-ol{margin:0;padding:0;list-style:none}.prep-ol li{font-family:var(--font-song);gap:.55em;margin:.1em 0;font-size:1.05em;line-height:1.5;display:flex}.prep-ol li .n,.prep-teach .n{height:1.45em;font-family:var(--font-ui);font-variant-numeric:tabular-nums;color:#a6342b;background:#fbe6e3;border-radius:50%;flex:0 0 1.45em;justify-content:center;align-items:center;margin-top:.16em;font-size:.8em;font-weight:700;display:inline-flex}.prep-ol li .t{flex:1;min-width:0}.prep-ol li .ans{color:#8a3a30;border-left:2px solid #f0d3cf;margin-top:.12em;padding-left:.2em;font-size:.93em;display:block}.prep-teach{font-family:var(--font-song);margin:.3mm 0 1.1mm;font-size:1.05em;line-height:1.5}.prep-teach .pt-point{font-family:var(--font-ui);color:#7d2a20;gap:.55em;font-weight:700;display:flex}.prep-teach .pt-line{color:#3d2c29;padding-left:2em;font-size:.96em}@media (width<=1280px){.prep-grid{grid-template-rows:auto minmax(320px,1fr);grid-template-columns:300px minmax(0,1fr)}.prep-grid>.roster{grid-row:1/span 2}.prep-grid>.stage{min-height:70vh}}@media (width<=820px){.prep-grid{display:block}.prep-grid>.roster,.prep-grid>.editor{border-right:none;border-bottom:1px solid var(--board-line)}.prep-grid .roster-list{max-height:260px}.prep-grid .stage-scroll{padding:14px 12px}}.prep-add{padding:8px 12px 0}.prep-add .mini.block{width:100%}.prep-add-form{border:1px dashed var(--paper-line);background:#fff;border-radius:6px;flex-direction:column;gap:6px;margin:8px 0 4px;padding:9px 10px;display:flex}.prep-add-form .f{flex-direction:column;gap:3px;display:flex}.prep-add-form .f>span{color:var(--ink-2);font-size:11px}.prep-add-form select,.prep-add-form input{border:1px solid var(--paper-line);width:100%;height:28px;font:inherit;background:#fff;border-radius:4px;padding:0 6px;font-size:12px}.prep-add-form .mini.primary{background:var(--sheet-line);border-color:var(--sheet-line);color:#fff;margin-top:2px;padding:7px 8px}.prep-add-hint{color:var(--ink-3);font-size:11px;line-height:1.5}.prep-add-err{color:var(--red-deep);font-size:11.5px}.prep-drop{border:1px dashed var(--paper-line);background:#fbfcfd;border-radius:6px;flex-wrap:wrap;align-items:center;gap:8px;padding:10px;font-size:11.5px;display:flex}.prep-drop.on{border-color:var(--red);background:var(--red-wash)}.prep-drop input[type=file]{opacity:0;pointer-events:none;width:1px;height:1px;position:absolute}.prep-drop-btn{border:1px solid var(--paper-line);cursor:pointer;background:#fff;border-radius:4px;align-items:center;padding:5px 10px;font-weight:700;display:inline-flex}.prep-drop-btn:hover{border-color:var(--red);color:var(--red-deep)}.prep-att-err{color:var(--red-deep);margin-top:6px;font-size:11.5px}.prep-atts{margin:8px 0 0;padding:0;list-style:none}.prep-atts li{border-bottom:1px dashed #eef1f4;align-items:center;gap:8px;padding:6px 0;font-size:12px;display:flex}.prep-att-thumb{object-fit:cover;border:1px solid var(--paper-line);background:#fff;border-radius:4px;width:34px;height:34px}.prep-att-tag{border:1px solid var(--paper-line);background:var(--red-wash);width:40px;height:34px;color:var(--red-deep);font-family:var(--font-data);border-radius:4px;justify-content:center;align-items:center;font-size:10px;font-weight:700;display:inline-flex}.prep-att-name{text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;overflow:hidden}.prep-atts-sheet{border-top:.4mm solid var(--sheet-line);margin-top:3mm;padding-top:2mm}.prep-atts-title{font-family:var(--font-round);color:var(--sheet-line);margin-bottom:1.6mm;font-size:.95em;font-weight:700}.prep-atts-grid{flex-wrap:wrap;gap:2.4mm;display:flex}.prep-atts-grid figure{text-align:center;margin:0}.prep-atts-grid img{background:#fff;border:.3mm solid #cbd6e2;border-radius:1mm;max-width:62mm;max-height:58mm;display:block}.prep-atts-grid .prep-atts-qr{border:none;width:30mm;height:30mm;max-height:none}.prep-atts-grid figcaption{color:#3d4a58;margin-top:.8mm;font-size:.74em}.prep-skills{flex-wrap:wrap;align-items:center;gap:6px;margin:4px 0 10px;display:flex}.prep-skills .cap{color:var(--ink-3);font-size:12px}.prep-skill{border:1px solid var(--red-line,#e6c8c4);background:var(--red-wash,#fdf1ef);color:var(--red-deep,#bc3b31);border-radius:999px;align-items:center;gap:4px;padding:2px 6px 2px 8px;font-size:12px;font-style:normal;display:inline-flex}.prep-skill .x{color:inherit;cursor:pointer;background:0 0;border:0;padding:2px;font-size:11px;line-height:1}.prep-skill .x:hover{color:var(--red)}.prep-md-bar{flex-wrap:wrap;align-items:center;gap:8px;margin-bottom:6px;display:flex}.prep-md-bar .grow{flex:auto}.prep-md-file{display:none}.prep-md-filelabel{cursor:pointer;align-items:center;display:inline-flex}.prep-md-input{border:1px solid var(--paper-line,#e6e2da);background:var(--paper,#fff);width:100%;min-height:460px;color:var(--ink,#2b2b2b);resize:vertical;border-radius:8px;padding:10px 12px;font-family:ui-monospace,SFMono-Regular,Menlo,Noto Sans Mono CJK SC,monospace;font-size:13px;line-height:1.7}.prep-md-input:focus{outline:2px solid var(--red-wash,#fdf1ef);border-color:var(--red-line,#e6c8c4)}.prep-md-hint{margin-top:6px;line-height:1.6}.prep-md-hint code{background:var(--wash,#f6f4f0);border-radius:4px;padding:1px 4px;font-size:12px}.prep-md-bar>.mini,.prep-md-bar>.ai-polish-wrap{flex:none}.md-body .md-h2{border-bottom:1px solid var(--red-wash,#fdf1ef);color:var(--red-deep,#bc3b31);letter-spacing:.5px;margin:10px 0 5px;padding-bottom:3px;font-size:13px}.md-body .md-h3{color:var(--ink,#2b2b2b);margin:8px 0 4px;font-size:12.5px}.md-body .md-p{margin:4px 0;font-size:12px;line-height:1.65}.md-body .md-list{margin:4px 0 4px 1.1em;padding:0;font-size:12px;line-height:1.6}.md-body .md-list li{margin:2px 0}.md-body .md-sub{color:var(--ink-3,#6b6b6b);margin:2px 0 2px 1em;padding:0;list-style:circle}.md-body .md-hr{border:0;border-top:1px dashed var(--paper-line,#e6e2da);margin:8px 0}.md-body .md-quote{border-left:3px solid var(--red-line,#e6c8c4);background:var(--red-wash,#fdf1ef);margin:6px 0;padding:4px 8px;font-size:12px}.md-body .md-table{border-collapse:collapse;width:100%;margin:6px 0;font-size:11.5px}.md-body .md-table th,.md-body .md-table td{border:1px solid var(--paper-line,#e6e2da);text-align:left;padding:3px 6px}.md-body .md-table th{background:var(--wash,#f6f4f0)}.md-body .md-figure{text-align:center;margin:8px 0}.md-body .md-figure img{border:1px solid var(--paper-line,#e6e2da);border-radius:4px;max-width:62mm;max-height:56mm}.md-body .md-figure figcaption{color:var(--ink-3,#6b6b6b);margin-top:3px;font-size:10.5px}.md-body .md-inline-img{vertical-align:middle;max-width:40mm;max-height:34mm}.md-body code{background:var(--wash,#f6f4f0);border-radius:3px;padding:0 3px;font-size:11.5px}.md-body a{color:var(--red-deep,#bc3b31)}.md-editor{margin:2px 0 4px}.md-editor-loading{margin:8px 0}.md-editor .milkdown{background:var(--paper,#fff);border:1px solid var(--paper-line,#e6e2da);border-radius:10px;min-height:480px;padding:6px 0 10px;overflow:visible}.md-editor .milkdown .ProseMirror{min-height:460px;color:var(--ink,#2b2b2b);padding:10px 20px 24px;font-size:15px;line-height:1.75}.md-editor .milkdown .ProseMirror h1{margin:14px 0 6px;font-size:22px}.md-editor .milkdown .ProseMirror h2{border-bottom:1px solid var(--wash,#f6f4f0);margin:14px 0 6px;padding-bottom:4px;font-size:18px}.md-editor .milkdown .ProseMirror h3{margin:12px 0 4px;font-size:16px}.md-editor .milkdown .ProseMirror p{margin:6px 0}.md-editor .milkdown .ProseMirror ul,.md-editor .milkdown .ProseMirror ol{margin:6px 0;padding-left:1.4em}.md-editor .milkdown .ProseMirror table{border-collapse:collapse;margin:10px 0;font-size:14px}.md-editor .milkdown .ProseMirror th,.md-editor .milkdown .ProseMirror td{border:1px solid var(--paper-line,#e6e2da);padding:5px 9px}.md-editor .milkdown .ProseMirror th{background:var(--wash,#f6f4f0)}.md-editor .milkdown .ProseMirror img{border-radius:6px;max-width:100%}.md-editor .milkdown .ProseMirror blockquote{border-left:3px solid var(--red-line,#e6c8c4);background:var(--red-wash,#fdf1ef);color:var(--ink-2,#464646);margin:8px 0;padding:6px 12px}.prep-title-field{margin:2px 0 10px}.prep-title-field .prep-lbl{align-items:baseline;gap:8px;margin-bottom:4px;display:flex}.prep-title-field input{width:100%;font-size:15px;font-weight:600}.del-panel{background:#fff7f6;border:1px solid #f0c8c2;border-left:3px solid #d94f3d;border-radius:6px;margin:8px 0 12px;padding:12px 14px}.del-warn{color:#8a1f10;margin:0 0 8px;font-size:13px;line-height:1.6}.del-list{color:#4b5563;flex-wrap:wrap;gap:4px 18px;margin:0 0 8px;padding-left:18px;font-size:12px;display:flex}.del-list li b{color:#b3261e}.del-row{flex-wrap:wrap;align-items:flex-end;gap:10px;margin-top:6px;display:flex}.del-row .f{min-width:220px}:root{--board:#2e3138;--board-2:#23262b;--board-line:#3b3f47;--ticket:#98a2ae;--paper:#f5f6f3;--paper-line:#dce1e7;--ink:#1e242c;--ink-2:#5b6875;--ink-3:#8b96a3;--cyan:#3aa5c4;--cyan-deep:#2a7e97;--cyan-wash:#f2fafc;--red:#d2453a;--red-deep:#bc3b31;--red-wash:#fdf1ef;--sheet-paper:#fffbe8;--sheet-row:#d6edfb;--sheet-label:#cbe6fa;--sheet-head:#bfe0f7;--sheet-line:#16324f;--font-ui:"PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", system-ui, sans-serif;--font-data:ui-monospace, "SF Mono", Menlo, Consolas, monospace;--font-round:"Yuanti SC", "Yuanti TC", "PingFang SC", sans-serif;--font-song:"Songti SC", "STSong", SimSun, serif;--r-sm:3px;--r-md:4px;--shadow-sheet:0 18px 40px #00000073;--focus:0 0 0 3px #3aa5c429}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{font-family:var(--font-ui);background:var(--board);color:var(--ink);-webkit-font-smoothing:antialiased}button,input,textarea,select{font-family:inherit;font-size:inherit;color:inherit}:focus-visible{outline:2px solid var(--cyan);outline-offset:2px}.bar{background:var(--board-2);border-bottom:1px solid var(--board-line);align-items:center;gap:14px;height:56px;padding:0 16px;display:flex}.bar .plate{background:var(--sheet-paper);border-radius:var(--r-sm);align-items:center;padding:5px 9px;display:flex;box-shadow:0 1px #00000059}.bar .plate img{height:22px;display:block}.bar .who{flex-direction:column;line-height:1.3;display:flex}.bar .who b{color:#f2f5f8;letter-spacing:.06em;white-space:nowrap;font-size:14px;font-weight:600}.bar .who span{color:var(--ticket);letter-spacing:.04em;white-space:nowrap;font-size:11px}.modules{align-items:stretch;height:56px;margin-left:6px;display:flex}.modules button{color:var(--ticket);letter-spacing:.08em;cursor:pointer;background:0 0;border:none;padding:0 14px;font-size:13px;font-weight:600;position:relative}.modules button[aria-current=page]{color:#fff}.modules button[aria-current=page]:after{content:"";background:var(--red);height:2px;position:absolute;bottom:0;left:12px;right:12px}.modules button:disabled{color:#5c646e;cursor:not-allowed}.modules button:disabled:before{content:"· "}.bar .grow{flex:1}.bar .note{max-width:300px;color:var(--ticket);text-align:right;font-size:11.5px;line-height:1.5}.bar .note b{color:#d6dee7;font-weight:600}.source{border:1px solid var(--board-line);border-radius:var(--r-sm);font-family:var(--font-data);color:var(--ticket);white-space:nowrap;flex:none;align-items:center;gap:7px;padding:5px 9px;font-size:11px;display:flex}.source b{color:#e4eaf0;font-weight:600}.source select{color:#e4eaf0;font-family:var(--font-data);cursor:pointer;background:0 0;border:none;font-size:11px}.source select option{color:#1e242c}.btn{border-radius:var(--r-md);color:#d6dee7;letter-spacing:.02em;white-space:nowrap;cursor:pointer;background:0 0;border:1px solid #4a5058;padding:8px 14px;font-size:12.5px;font-weight:600;transition:background .15s,border-color .15s,color .15s}.btn:hover:not(:disabled){color:#fff;background:#383d45}.btn:disabled{opacity:.45;cursor:not-allowed}.btn.primary{background:var(--red);border-color:var(--red);color:#fff;padding:9px 18px}.btn.primary:hover:not(:disabled){background:var(--red-deep);border-color:var(--red-deep)}.layout{grid-template-rows:minmax(0,1fr);grid-template-columns:clamp(300px,21vw,380px) minmax(0,1fr) clamp(560px,42vw,820px);height:calc(100% - 56px);min-height:0;display:grid}.roster{background:var(--paper);border-right:1px solid var(--board-line);flex-direction:column;min-height:0;display:flex}.roster-head{border-bottom:1px solid var(--paper-line);padding:14px 14px 10px}.roster-head h2{letter-spacing:.2em;color:var(--ink);align-items:baseline;gap:8px;margin:0 0 10px;font-size:12px;font-weight:700;display:flex}.roster-head h2 span{font-family:var(--font-data);letter-spacing:.04em;color:var(--ink-3);font-size:10px;font-weight:600}.roster-head .date{font-family:var(--font-data);color:var(--cyan-deep);font-size:11px}.roster-tools{flex-wrap:wrap;align-items:center;gap:6px;display:flex}.roster-tools input{flex:1;min-width:0}.roster-dates{align-items:center;gap:5px;margin:0 0 8px;display:flex}.roster-dates .mini.step{flex:none;padding:5px 8px;font-size:13px;line-height:1}.roster-dates input.date{min-width:0;font-family:var(--font-data);flex:1;padding:5px 6px;font-size:11px}.roster-dates .mini.active{border-color:var(--cyan);color:var(--cyan-deep);background:#f2fbfd}.roster-list{flex:1;min-height:0;padding:8px 10px 24px;overflow-y:auto}.roster-group{letter-spacing:.16em;color:var(--ink-3);margin:12px 4px 6px;font-size:10.5px;font-weight:700}.student{border-radius:var(--r-md);text-align:left;cursor:pointer;background:0 0;border:1px solid #0000;align-items:center;gap:9px;width:100%;margin-bottom:4px;padding:9px 10px;display:flex}.student:hover{border-color:var(--paper-line);background:#fff}.student[aria-pressed=true]{border-color:var(--paper-line);box-shadow:inset 2px 0 0 var(--cyan);background:#fff}.student .nm{flex:1;min-width:0}.student .nm b{color:var(--ink);font-size:13.5px;font-weight:600;display:block}.student .nm span{color:var(--ink-3);white-space:nowrap;text-overflow:ellipsis;margin-top:2px;font-size:11px;display:block;overflow:hidden}.student .nm span.slot{font-family:var(--font-data);color:var(--cyan-deep);font-size:10.5px}.student .nm span.course-chip{border:1px solid var(--paper-line);color:var(--ink-2);background:#fff;border-radius:999px;margin-top:3px;padding:1px 6px;font-size:10.5px;display:inline-block}.mark{font-family:var(--font-data);color:var(--ink-3);white-space:nowrap;align-items:center;gap:5px;font-size:10px;display:flex}.mark i{border:1.5px solid #b9c2cb;border-radius:50%;width:9px;height:9px;display:block}.mark.draft i{border-style:dashed;border-color:var(--cyan)}.mark.final i,.mark.sent i{background:var(--sheet-line);border-color:var(--sheet-line)}.mark .tick{color:var(--red);font-family:var(--font-ui);font-size:13px;font-weight:700;line-height:1}.new-student{border:1px dashed var(--paper-line);border-radius:var(--r-md);background:#fff;margin:6px 0 2px;padding:10px}.new-student .row{gap:6px;margin-top:6px;display:flex}.roster-foot{border-top:1px solid var(--paper-line);font-family:var(--font-data);color:var(--ink-3);padding:9px 14px;font-size:10.5px}.nums{font-family:var(--font-data);color:var(--ink-3);white-space:nowrap;flex-direction:column;align-items:flex-end;gap:2px;margin-right:8px;font-size:10px;display:flex}.nums em{color:#a95d16;background:#fff2e6;border-radius:8px;padding:0 4px;font-style:normal}.nums em.owed{color:var(--red);background:#fdecea}.editor{background:var(--paper);border-right:1px solid var(--board-line);flex-direction:column;min-height:0;display:flex}.editor-body{flex:1;min-height:0;padding:0 16px 24px;overflow-y:auto}.editor h3{border-bottom:1px solid var(--paper-line);letter-spacing:.2em;color:var(--ink);align-items:center;gap:8px;margin:22px 0 11px;padding-bottom:7px;font-size:12px;font-weight:700;display:flex}.editor h3:first-child{margin-top:16px}.archive{border-bottom:1px solid var(--paper-line);background:#fff;align-items:center;gap:6px;padding:9px 16px;display:flex;overflow-x:auto}.archive .cap{letter-spacing:.1em;color:var(--ink-2);white-space:nowrap;flex:none;font-size:11px;font-weight:700}.archive .item{border:1px solid var(--paper-line);color:var(--ink-2);white-space:nowrap;cursor:pointer;background:#fff;border-radius:20px;flex:none;align-items:center;gap:5px;padding:4px 9px;font-size:11.5px;display:flex}.archive .item:hover{border-color:var(--cyan);color:var(--cyan-deep)}.archive .item[aria-pressed=true]{background:var(--sheet-line);border-color:var(--sheet-line);color:#fff}.archive .item b{font-family:var(--font-data);font-weight:600}.archive .item i{border:1.5px solid #c3ccd5;border-radius:50%;width:7px;height:7px}.archive .item.sent i{background:var(--red);border-color:var(--red)}.archive .item.final i{background:var(--sheet-line);border-color:var(--sheet-line)}.archive .item.draft i{border-style:dashed;border-color:var(--cyan)}.editor h3:before{content:"";background:var(--cyan);width:12px;height:2px}.editor h3 em{font-family:var(--font-data);letter-spacing:.04em;color:var(--ink-3);font-size:10px;font-style:normal}.lead{border-left:2px solid var(--cyan);color:var(--ink-2);margin-bottom:14px;padding:2px 0 2px 10px;font-size:11.5px;line-height:1.65}.field{margin-bottom:11px}.field>label,.field>.lbl{letter-spacing:.06em;color:var(--ink-2);margin-bottom:5px;font-size:11.5px;font-weight:600;display:block}.field .row2{gap:7px;display:flex}.field .row2>:first-child{flex:1;min-width:0}.f-auto{font-family:var(--font-data);letter-spacing:.08em;color:var(--cyan-deep);background:#3aa5c41f;border-radius:2px;margin-left:6px;padding:1px 5px;font-size:9.5px;font-weight:600;display:inline-block}input[type=text],input[type=date],input[type=search],textarea,select{border:1px solid var(--paper-line);border-radius:var(--r-sm);width:100%;color:var(--ink);background:#fff;padding:8px 10px;font-size:13px;transition:border-color .15s,box-shadow .15s}input:focus,textarea:focus,select:focus{border-color:var(--cyan);box-shadow:var(--focus);outline:none}textarea{resize:vertical;min-height:64px;font-size:12.8px;line-height:1.62}input:disabled,textarea:disabled,select:disabled{color:var(--ink-2);background:#f2f4f6}.seg{gap:5px;display:inline-flex}.card{border:1px solid var(--paper-line);border-radius:var(--r-md);background:#fff;margin-bottom:10px;padding:10px}.card .cap{gap:7px;margin-bottom:8px;display:flex}.card .cap input{color:var(--sheet-line);border-color:#e7ebef;flex:1;font-size:12.5px;font-weight:700}.card textarea{border-color:#e7ebef;min-height:70px}.editor .card textarea{min-height:var(--sec-min-h,70px);line-height:var(--sec-lh,1.62)}.row-tools{justify-content:space-between;align-items:center;gap:12px;display:flex}.row-tools .lead{flex:1;margin-bottom:10px}.rowh{color:var(--ink-2);white-space:nowrap;align-items:center;gap:6px;margin-bottom:10px;font-size:11.5px;display:flex}.card .foot{color:var(--ink-2);justify-content:space-between;align-items:center;gap:8px;margin-top:8px;font-size:11px;display:flex}.sw{cursor:pointer;-webkit-user-select:none;user-select:none;align-items:center;gap:6px;display:inline-flex}.sw input{accent-color:var(--cyan-deep);margin:0}.icon-btn{color:#b7c0c9;cursor:pointer;background:0 0;border:none;padding:2px 5px;font-size:15px;line-height:1}.icon-btn:hover{color:var(--red)}.mini{border:1px solid var(--paper-line);border-radius:var(--r-sm);color:var(--ink);cursor:pointer;background:#fff;padding:6px 10px;font-size:11.5px;font-weight:600;transition:border-color .15s,color .15s}.mini:hover{border-color:var(--cyan);color:var(--cyan-deep)}.mini.block{text-align:center;width:100%;padding:8px;display:block}.chips{flex-wrap:wrap;gap:5px;display:flex}.chip{border:1px solid var(--paper-line);border-radius:var(--r-sm);color:var(--cyan-deep);cursor:pointer;background:#fff;padding:4px 9px;font-size:11.5px;transition:all .15s}.chip:hover{background:var(--cyan-deep);border-color:var(--cyan-deep);color:#fff}input[type=range]{width:100%;accent-color:var(--cyan-deep);margin:8px 0 0}.readout{font-family:var(--font-data);color:var(--cyan-deep);background:#eff7fa;border-color:#d6e9ef;font-size:11.5px;font-weight:600}.editor-foot{border-top:1px solid var(--paper-line);background:#eef1f3;flex-direction:column;gap:8px;padding:10px 16px;display:flex}.editor-foot .actions{gap:8px;display:flex}.editor-foot .actions .btn{text-align:center;flex:1;padding:9px 8px}.editor-foot .state{font-family:var(--font-data);color:var(--ink-2);font-size:11px}.editor-foot .btn{border-color:var(--paper-line);color:var(--ink);background:#fff}.editor-foot .btn:hover:not(:disabled){border-color:var(--cyan);color:var(--cyan-deep);background:#fff}.editor-foot .btn.primary{background:var(--sheet-line);border-color:var(--sheet-line);color:#fff}.editor-foot .btn.primary:hover:not(:disabled){background:#0f2740;border-color:#0f2740}.empty-state{text-align:center;color:var(--ink-2);padding:26px 18px;font-size:12.5px;line-height:1.8}.empty-state b{color:var(--ink);margin-bottom:6px;font-size:13.5px;display:block}.banner{border-radius:var(--r-md);color:#7a4a1c;background:#fff6ec;border:1px solid #f0c9a8;align-items:center;gap:10px;margin:12px 16px 0;padding:9px 12px;font-size:12px;line-height:1.6;display:flex}.banner button{flex:none}.note-card{border-radius:var(--r-md);background:var(--cyan-wash);color:#26454f;border:1px solid #cfe7ef;margin-bottom:12px;padding:10px 12px;font-size:11.5px;line-height:1.7}.note-card b{color:var(--cyan-deep)}.note-card .chips{margin-top:8px}.stage{background:var(--board);background-image:linear-gradient(#ffffff07 1px,#0000 1px),linear-gradient(90deg,#ffffff07 1px,#0000 1px);background-size:10px 10px;flex-direction:column;min-width:0;min-height:0;display:flex}.stage-scroll{flex:1;justify-content:center;align-items:flex-start;min-height:0;padding:22px 24px 18px;display:flex;overflow:auto}.slot{flex:none;animation:.5s cubic-bezier(.2,.8,.2,1) both settle;position:relative}.paper{transform-origin:0 0;grid-template-rows:9mm 297mm;grid-template-columns:16mm 210mm;width:max-content;display:grid}.origin{justify-content:flex-end;align-items:flex-end;padding:0 3mm 3mm 0;display:flex}.origin i{border:1px solid #5aaac4d9;border-radius:50%;width:4mm;height:4mm;position:relative}.origin i:before,.origin i:after{content:"";background:#5aaac4d9;position:absolute}.origin i:before{width:8.4mm;height:1px;margin-top:-.5px;top:50%;left:-2.2mm}.origin i:after{width:1px;height:8.4mm;margin-left:-.5px;top:-2.2mm;left:50%}.rule-h{background:repeating-linear-gradient(90deg,#7c8794 0 1px,#0000 1px 10mm) 0 100%/auto 5mm repeat-x;width:210mm;height:9mm;animation:.6s .12s both fade;position:relative}.rule-h:after{content:"";opacity:.55;background:#7c8794;height:1px;position:absolute;bottom:0;left:0;right:0}.rule-h span,.rule-v span{font-family:var(--font-data);color:#8d98a5;font-size:6.4pt;position:absolute}.rule-h span{bottom:6mm;transform:translate(-50%)}.rule-v{background:repeating-linear-gradient(#7c8794 0 1px,#0000 1px 10mm) 100% 0/5mm repeat-y;width:16mm;height:297mm;animation:.6s .18s both fade;position:relative}.rule-v:after{content:"";opacity:.55;background:#7c8794;width:1px;position:absolute;top:0;bottom:0;right:0}.rule-v span{right:6mm;transform:translateY(-50%)}.paper-board{position:relative}.corner{width:0;height:0;position:absolute}.corner:before,.corner:after{content:"";background:#7e8894;position:absolute}.corner:before{width:9mm;height:1px}.corner:after{width:1px;height:9mm}.corner.tl{top:0;left:0}.corner.tr{top:0;right:0}.corner.bl{bottom:0;left:0}.corner.br{bottom:0;right:0}.corner.tl:before{left:-13mm}.corner.tl:after{top:-13mm}.corner.tr:before{right:-13mm}.corner.tr:after{top:-13mm}.corner.bl:before{left:-13mm}.corner.bl:after{bottom:-13mm}.corner.br:before{right:-13mm}.corner.br:after{bottom:-13mm}.jobticket{border-top:1px solid var(--board-line);background:var(--board-2);font-family:var(--font-data);letter-spacing:.02em;color:var(--ticket);flex-wrap:wrap;align-items:center;gap:6px 14px;padding:7px 14px;font-size:10.5px;display:flex}.jobticket b{color:#e4eaf0;font-weight:600}.jobticket .grow{flex:1}.jobticket .warn{color:#f0a98c}@keyframes fade{0%{opacity:0}to{opacity:1}}@keyframes settle{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}@media (prefers-reduced-motion:reduce){*{transition:none!important;animation:none!important}}@media (width<=1280px){.layout{grid-template-rows:auto minmax(320px,1fr);grid-template-columns:300px minmax(0,1fr);height:auto}.roster{grid-row:1/span 2}.stage{min-height:70vh}}@media (width<=820px){.bar{flex-wrap:wrap;row-gap:10px;height:auto;padding:10px 12px}.bar .note,.bar .grow{display:none}.modules{height:40px}.modules button{padding:0 10px}.layout{height:auto;display:block}.roster,.editor{border-right:none;border-bottom:1px solid var(--board-line)}.roster-list{max-height:240px}.stage-scroll{padding:14px 12px}.jobticket{gap:14px;font-size:10.5px}}.roster-subj{flex-wrap:wrap;flex:1;align-items:center;gap:4px;min-width:0;display:flex}.roster-subj .cap{font-family:var(--font-data);color:var(--ink-3);font-size:10.5px}.roster-tools .mini.subj{border-radius:999px;padding:3px 8px;font-size:11px;line-height:1.5}.roster-tools .mini.subj.on{border-color:var(--cyan-deep);background:var(--cyan-deep);color:#fff;font-weight:600}.roster-tools .mini.subj.warn{border-color:var(--red);color:var(--red-deep);background:var(--red-wash)}.student .nm span.subject-chip{color:#fff;background:var(--cyan-deep);border-radius:999px;margin:3px 4px 0 0;padding:1px 7px;font-size:10.5px;font-weight:600;display:inline-block}.sheet{--fs:14px;--label-w:26%;background:var(--sheet-paper);color:#0e1b33;width:210mm;height:297mm;font-size:var(--fs);box-shadow:var(--shadow-sheet);flex-direction:column;gap:3.4mm;padding:11mm 12mm 9mm;line-height:1.5;display:flex}.sheet.auto-height{height:auto;min-height:297mm}.sheet-head{justify-content:space-between;align-items:center;display:flex}.sheet-head img{height:11mm;display:block}.sheet-head .htitle{font-family:var(--font-round);letter-spacing:.42em;color:var(--sheet-line);opacity:.9;padding-left:.4em;font-size:1.42em;font-weight:700}.dots{gap:1.2mm;margin-top:-1.4mm;display:flex}.dots i{border-radius:50%;width:1.7mm;height:1.7mm}.dots i:first-child{background:#f2c230}.dots i:nth-child(2){background:#e4574c}.dots i:nth-child(3){background:#4f9bd9}.dots i:nth-child(4){background:#8bc34a}.title-block{text-align:center}.sheet-title{font-family:var(--font-round);letter-spacing:.045em;color:var(--sheet-line);text-wrap:balance;margin:0;font-size:2.3em;font-weight:700;line-height:1.22}.sheet-title .missing{border-bottom:.13em dashed #c7d6e2;min-width:4.6em;display:inline-block}.title-block .rule{border-top:1.2px solid var(--sheet-line);width:100%;margin:2.6mm auto 0;position:relative}.title-block .rule:after{content:"";border-top:.5px solid #9fbdd8;position:absolute;top:1.4mm;left:0;right:0}.sheet-who{font-family:var(--font-ui);color:#1c3b5c;font-variant-numeric:tabular-nums;justify-content:space-between;align-items:baseline;gap:4mm;margin-top:4.2mm;font-size:1.02em;display:flex}.sheet-who .who-seg{align-items:baseline;gap:.44em;min-width:0;display:flex}.sheet-who .cap{letter-spacing:.18em;text-indent:.18em;color:#6b8aa6;flex:none;font-size:.9em;font-style:normal;font-weight:600}.sheet-who .val{min-width:0;color:var(--sheet-line);white-space:nowrap;font-size:1.06em;font-weight:700}.sheet-who .val.name{font-family:var(--font-round);letter-spacing:.08em;border-bottom:1.4px solid #7fa8cf;padding:0 .16em .06em;font-size:1.3em}.sheet-who .val.blank{border-bottom:1.2px dashed #b9cadb;min-width:4.4em;display:inline-block}.ph{color:#b6c4d2;font-weight:400}.tbl-wrap{flex:1;min-height:0;overflow:hidden}.kw-table{border-collapse:collapse;table-layout:fixed;width:100%;height:100%}.kw-table th,.kw-table td{border:1px solid var(--sheet-line);word-break:break-word;padding:.6em .72em}.kw-table thead th{background:var(--sheet-head);color:#0f2c4a;font-family:var(--font-ui);letter-spacing:.36em;text-align:center;padding:.44em .72em;font-size:1.04em;font-weight:700}.kw-table td{background:var(--sheet-row);color:#0a1424;font-family:var(--font-song);vertical-align:middle;font-size:1.16em;line-height:1.62}.kw-table td.lbl{width:var(--label-w);background:var(--sheet-label);color:#12304c;font-family:var(--font-ui);letter-spacing:.14em;text-align:center;vertical-align:middle;text-indent:.14em;font-size:1.03em;font-weight:700;line-height:1.5}.lines{display:block}.line{gap:.5em;margin:.14em 0;display:flex}.line .n{color:#164a78;height:1.5em;font-family:var(--font-ui);font-variant-numeric:tabular-nums;background:#164a7817;border-radius:50%;flex:0 0 1.5em;justify-content:center;align-items:center;margin-top:.12em;font-size:.84em;font-weight:700;display:inline-flex}.line .t{flex:1;min-width:0}.line.sub{padding-left:1.5em}.line.sub .n{color:#4a7ba6;background:0 0;flex:0 0 1em;height:1em;font-weight:400}.line.plain .n{display:none}.line.plain .t{font-family:var(--font-ui);letter-spacing:.01em;color:#233c58;font-size:.96em}.sheet-foot{text-align:center;color:#3c5a78;margin-top:auto;padding-top:.6mm}.sheet-foot .line-1{font-family:var(--font-round);letter-spacing:.42em;padding-left:.42em;font-size:1.05em;font-weight:700}.sheet-foot .promo{letter-spacing:.02em;color:#6b7f94;margin-top:1.3mm;font-size:.8em}.sheet.ink{--sheet-row:#fff;--sheet-label:#fff;--sheet-head:#fff;--sheet-line:#2b2b2b;background:#fff}.sheet.ink .sheet-foot{color:#333}.sheet.ink .dots{opacity:.35}.sheet.ink .line .n{background:0 0}@page{size:A4;margin:0}@media print{html,body,#root{background:#fff;height:auto;overflow:visible}body *{visibility:hidden}.sheet,.sheet *{visibility:visible}.layout,.stage,.stage-scroll{background:#fff;height:auto;padding:0;display:block;overflow:visible}.slot,.paper{display:block;width:auto!important;height:auto!important;animation:none!important;position:static!important;transform:none!important}.roster,.editor,.bar,.jobticket,.rule-h,.rule-v,.corner,.origin,.banner{display:none!important}.sheet{height:297mm;box-shadow:none;-webkit-print-color-adjust:exact;print-color-adjust:exact;margin:0;padding:11mm 12mm 9mm;position:absolute;top:0;left:0;width:210mm!important}.sheet.auto-height{height:auto;min-height:297mm}.ph{display:none}}.module{background:var(--paper);flex:1;min-height:0;padding:18px 22px 40px;overflow-y:auto}.page{height:calc(100% - 56px);min-height:0;display:flex}.module-head{align-items:baseline;gap:10px;margin-bottom:14px;display:flex}.module-head h2{letter-spacing:.1em;color:var(--ink);margin:0;font-size:15px;font-weight:700}.module-head .mute,.mute{font-family:var(--font-data);color:var(--ink-3);font-size:11px}.module h3{letter-spacing:.18em;color:var(--ink);align-items:center;gap:8px;margin:0 0 10px;font-size:12px;font-weight:700;display:flex}.module h3:before{content:"";background:var(--cyan);width:10px;height:2px}.module h3 .mute{letter-spacing:0}.cards{grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:10px;margin-bottom:16px;display:grid}.stat{border:1px solid var(--paper-line);border-radius:var(--r-md);text-align:left;cursor:pointer;background:#fff;flex-direction:column;gap:2px;padding:12px 14px;transition:border-color .15s,box-shadow .15s;display:flex}.stat:hover{border-color:var(--cyan);box-shadow:0 2px 8px #1428500f}.stat .k{letter-spacing:.08em;color:var(--ink-2);font-size:11.5px;font-weight:600}.stat b{font-family:var(--font-data);color:var(--ink);font-size:26px;font-weight:600;line-height:1.2}.stat b em{color:var(--ink-3);margin-left:3px;font-size:12px;font-style:normal}.stat .s{color:var(--ink-3);font-size:11px}.two-col{grid-template-columns:minmax(0,1.1fr) minmax(0,1fr);align-items:start;gap:12px;display:grid}.panel-card{border:1px solid var(--paper-line);border-radius:var(--r-md);background:#fff;padding:14px}.todo{grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:10px;display:grid}.todo-group ul{color:var(--ink-2);margin:0;padding-left:16px;font-size:12px;line-height:1.75}.todo-head{width:100%;color:var(--ink);cursor:pointer;background:0 0;border:none;align-items:center;gap:7px;margin-bottom:4px;padding:0;font-size:12.5px;font-weight:600;display:flex}.todo-head:hover b{color:var(--cyan-deep)}.todo-head .count{background:var(--cyan-wash);font-family:var(--font-data);color:var(--cyan-deep);border-radius:10px;padding:0 6px;font-size:11px}.bars{align-items:flex-end;gap:3px;height:130px;display:flex}.bar-item{flex-direction:column;flex:1;align-items:center;gap:4px;min-width:0;height:100%;display:flex}.bar-item span{font-family:var(--font-data);color:var(--ink-3);white-space:nowrap;font-size:9px}.bar-track{background:#f2f5f8;border-radius:2px;flex-direction:column;flex:1;justify-content:flex-end;width:100%;display:flex;overflow:hidden}.bar-att{background:var(--sheet-line);min-height:2px}.bar-miss{background:var(--red);min-height:2px}.table{border-collapse:collapse;width:100%;font-size:12.5px}.table th{border-bottom:1px solid var(--paper-line);letter-spacing:.08em;color:var(--ink-2);text-align:left;white-space:nowrap;padding:7px 8px;font-size:11px;font-weight:700}.table td{color:var(--ink);vertical-align:top;border-bottom:1px solid #eef1f4;padding:8px}.table tbody tr:hover td{background:#fafcfd}.table .num{font-family:var(--font-data);text-align:right;white-space:nowrap}.table .pos{color:#1f7a5c}.table .neg{color:var(--red)}.row-click{cursor:pointer}.row-click[aria-pressed=true] td{background:var(--cyan-wash)}.form-row{border:1px solid var(--paper-line);border-radius:var(--r-md);background:#fff;flex-wrap:wrap;align-items:flex-end;gap:8px;margin-bottom:14px;padding:12px 14px;display:flex}.form-row .f{flex-direction:column;gap:4px;display:flex}.form-row .f>span{color:var(--ink-2);letter-spacing:.06em;font-size:11px;font-weight:600}.form-row input,.form-row select{padding:6px 8px;font-size:12.5px}.form-row input[type=number]{width:92px}.form-row .w-grow{flex:1;min-width:140px}.form-row .w-md{min-width:150px}.kv{color:var(--ink-2);align-items:center;gap:8px;margin-bottom:8px;font-size:12.5px;display:flex}.kv b{color:var(--ink);font-weight:600}.mini.active{background:var(--sheet-line);border-color:var(--sheet-line);color:#fff}.cycle-price{border-radius:var(--r-sm);background:var(--cyan-wash);font-family:var(--font-data);color:var(--cyan-deep);white-space:nowrap;border:1px solid #cfe7ef;padding:7px 10px;font-size:12.5px;font-weight:600;display:inline-block}.loads{grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:12px;display:grid}.load{border:1px solid var(--paper-line);border-radius:var(--r-md);background:#fff;padding:10px 12px}.load-head{border-bottom:1px dashed var(--paper-line);align-items:baseline;gap:8px;padding-bottom:6px;display:flex}.load-head b{font-size:14px}.load-head .count{font-family:var(--font-data);color:var(--ink-2);margin-left:auto;font-size:12px}.load ul{margin:8px 0 0;padding:0;list-style:none}.load li{align-items:baseline;gap:7px;padding:3px 0;font-size:12.5px;display:flex}.load li .t{font-family:var(--font-data);color:var(--cyan-deep);min-width:40px;font-weight:600}.load li .mute{margin-left:auto}.load .dot{background:var(--cyan);border-radius:50%;flex:none;width:7px;height:7px}.load .dot.done{background:#6bbf59}.load .dot.cancelled{background:#c9ced6}.grid-bar{border:1px solid var(--paper-line);border-radius:var(--r-md);background:var(--paper);flex-wrap:wrap;align-items:center;gap:8px 14px;margin:6px 0 10px;padding:8px 12px;font-size:12.5px;display:flex}.grid-bar .f-inline{color:var(--ink-2);align-items:center;gap:5px;display:inline-flex}.grid-bar input[type=time],.grid-bar select{font-family:var(--font-data);padding:3px 6px;font-size:12.5px}.timetable{border-collapse:separate;border-spacing:0}.timetable .cell-empty{cursor:copy}.timetable .cell-empty:hover{background:var(--cyan-wash)}.timetable td,.timetable th{vertical-align:top}.timetable th{text-align:center;font-size:12px}.timetable th em{font-style:normal;font-family:var(--font-data);color:var(--ink-3);font-size:11px;display:block}.timetable th.today{background:var(--red-wash);color:var(--red-deep)}.timetable th.today em{color:var(--red)}.timetable .time-col{text-align:center;width:58px;font-family:var(--font-data);color:var(--ink-2);font-size:12px}.timetable .cell{height:62px;padding:4px!important}.slot{text-align:left;border:1px solid #cfe7ef;border-left:3px solid var(--cyan);border-radius:var(--r-sm);background:var(--cyan-wash);width:100%;font:inherit;cursor:pointer;margin-bottom:4px;padding:5px 7px;font-size:11.5px;line-height:1.35;display:block;position:relative}.slot:hover{background:#e6f5fa}.slot b{color:var(--ink);font-size:12.5px;display:block}.slot span{color:var(--ink-2);display:block}.slot .mute{font-size:10.5px}.slot.done{background:#f2f9f0;border-left-color:#6bbf59}.slot.cancelled{opacity:.7;background:#f6f7f8;border-left-color:#c9ced6;text-decoration:line-through}.slot .tick{color:#4f9f3f;font-style:normal;font-weight:700;position:absolute;top:6px;right:6px}.slot-add{border:1px dashed var(--paper-line);border-radius:var(--r-sm);width:100%;height:26px;color:var(--ink-3);cursor:copy;font-size:11.5px;font-family:var(--font-data);opacity:.55;background:0 0}.slot-add:hover{border-color:var(--cyan);color:var(--cyan-deep);background:var(--cyan-wash);opacity:1}.mini.danger{color:var(--red-deep);border-color:#edc9c5}.mini.danger:hover{background:#fdf1ef}.seg .mini{margin-right:5px}.pill{font-family:var(--font-data);background:var(--cyan-wash);color:var(--cyan-deep);border-radius:10px;padding:1px 7px;font-size:10.5px;display:inline-block}.pill.warn{color:#a95d16;background:#fff2e6}.pill.danger{color:var(--red);background:#fdecea}.detail-grid{grid-template-columns:repeat(auto-fit,minmax(120px,1fr));gap:8px;margin-bottom:14px;display:grid}.detail-grid .cell{border:1px solid var(--paper-line);border-radius:var(--r-sm);background:#fff;padding:9px 11px}.detail-grid .cell i{color:var(--ink-2);font-size:11px;font-style:normal;display:block}.detail-grid .cell b{font-family:var(--font-data);font-size:17px;font-weight:600}.tabs{border-bottom:1px solid var(--paper-line);gap:4px;margin-bottom:10px;display:flex}.tabs button{color:var(--ink-2);cursor:pointer;background:0 0;border:none;border-bottom:2px solid #0000;padding:7px 12px;font-size:12.5px;font-weight:600}.tabs button[aria-selected=true]{color:var(--ink);border-bottom-color:var(--cyan)}.split{grid-template-columns:minmax(340px,420px) minmax(0,1fr);align-items:start;gap:14px;display:grid}.mini-row{font-family:var(--font-data);color:var(--ink-3);margin-top:10px;font-size:11px}@media (width<=1100px){.two-col,.split{grid-template-columns:1fr}}.table .cell-input{width:100%;min-width:0;font:inherit;color:var(--ink);border:1px solid var(--cyan);border-radius:var(--r-sm);background:#fff;padding:4px 6px;font-size:12px}.table td .seg{justify-content:flex-start}
