.login-screen{--lg-navy:var(--brand-navy);--lg-navy-hover:var(--brand-navy-hover);--lg-blue:var(--brand-blue);--lg-blue-deep:var(--brand-blue-deep);--lg-green:var(--brand-green);--lg-yellow:var(--brand-yellow);--lg-pink:var(--brand-pink);--lg-cream:var(--brand-cream);--lg-muted:var(--brand-muted);--lg-focus:0 0 0 3px #409ec440;background:var(--paper);min-height:100dvh;color:var(--ink);grid-template-columns:minmax(0,1.02fr) minmax(0,.98fr);display:grid}.login-aside{background:radial-gradient(720px 460px at 4% 2%, #fff 0%, #fff0 62%), linear-gradient(158deg, var(--lg-cream) 0%, #f3f8fc 58%, #e8f0f8 100%);border-right:1px solid var(--paper-line);align-items:center;padding:56px 52px;display:flex;position:relative;overflow:hidden}.la-dots{pointer-events:none;opacity:.55;background-repeat:no-repeat;background-image:radial-gradient(circle at center, var(--lg-yellow) 0 12px, transparent 12.5px), radial-gradient(circle at center, var(--lg-blue) 0 9px, transparent 9.5px), radial-gradient(circle at center, var(--lg-pink) 0 7px, transparent 7.5px), radial-gradient(circle at center, var(--lg-green) 0 6px, transparent 6.5px);background-position:94% 9%,86% 13%,96% 18%,89% 24%;background-size:24px 24px,18px 18px,14px 14px,12px 12px;position:absolute;inset:0}.la-inner{z-index:1;flex-direction:column;gap:22px;width:100%;max-width:480px;margin:0 auto;display:flex;position:relative}.la-logo{object-fit:contain;align-self:flex-start;width:auto;height:46px;display:block}.la-slogan{letter-spacing:.02em;color:var(--lg-navy);margin:0;font-size:25px;font-weight:600;line-height:1.55}.la-points{color:var(--lg-muted);flex-direction:column;gap:11px;margin:0;padding:0;font-size:13.5px;line-height:1.6;list-style:none;display:flex}.la-points li{padding-left:20px;position:relative}.la-points li:before{content:"";background:var(--lg-blue);border-radius:50%;width:9px;height:9px;position:absolute;top:7px;left:0}.la-points li[data-dot=green]:before{background:var(--lg-green)}.la-points li[data-dot=yellow]:before{background:var(--lg-yellow)}.la-foot{color:var(--lg-muted);flex-wrap:wrap;align-items:center;gap:10px;font-size:12.5px;display:flex}.la-org{color:var(--lg-navy);letter-spacing:.02em;background:#fff;border:1px solid #dbe4ee;border-radius:999px;padding:3px 10px;font-weight:600}.la-subjects{letter-spacing:.06em}.login-panel{padding:36px 24px calc(24px + env(safe-area-inset-bottom));background:var(--paper);flex-direction:column;justify-content:center;align-items:center;gap:14px;display:flex}.login-card{border:1px solid var(--paper-line);border-top:3px solid var(--lg-navy);background:#fff;border-radius:6px;flex-direction:column;gap:14px;width:100%;max-width:400px;padding:26px 24px 22px;display:flex;box-shadow:0 16px 40px #10203a1a}.lg-head{flex-direction:column;gap:6px;display:flex}.lg-title{letter-spacing:.02em;color:var(--ink);margin:0;font-size:19px;font-weight:650}.lg-back{color:var(--lg-muted);align-self:flex-start;margin-bottom:2px;font-size:12.5px;text-decoration:none}.lg-back:hover{color:var(--brand-navy)}.lg-note{color:var(--lg-muted);margin:0;font-size:12.5px;line-height:1.65}.lg-note strong{color:var(--lg-navy)}.lg-alert{color:#8f2b21;background:var(--red-wash);border:1px solid #f0c9c4;border-left:3px solid var(--red);border-radius:5px;flex-direction:column;gap:6px;padding:11px 13px;font-size:12.5px;line-height:1.6;display:flex}.lg-alert h2{margin:0;font-size:13px;font-weight:700}.lg-alert p{margin:0}.lg-alert ul{margin:0;padding-left:17px}.lg-alert a{color:inherit}.lg-alert:focus{outline:none}.lg-alert-server{align-items:flex-start;gap:8px;width:100%;max-width:400px}.lg-retry{color:#8f2b21;cursor:pointer;background:#fff;border:1px solid #e2b4ae;border-radius:5px;align-self:flex-start;min-height:36px;padding:0 14px;font-size:13px}.lg-retry:hover:not(:disabled){background:#fff7f6}.lg-retry:disabled{opacity:.6;cursor:progress}.lg-field{flex-direction:column;gap:5px;display:flex}.lg-label{letter-spacing:.04em;color:var(--lg-muted);font-size:12.5px;font-weight:600}.lg-input{display:block;position:relative}.lg-input input{width:100%;height:44px;color:var(--ink);background:#fff;border:1px solid #d3dae2;border-radius:5px;padding:0 12px;font-size:15px;transition:border-color .16s,box-shadow .16s}.lg-input input::placeholder{color:#9aa4b0}.lg-input input:hover{border-color:#bcc6d2}.lg-input input:focus{border-color:var(--lg-blue);box-shadow:var(--lg-focus);outline:none}.lg-input input:focus-visible{outline:2px solid var(--lg-blue-deep);outline-offset:1px}.lg-input input[aria-invalid=true]{border-color:var(--red);background:#fffbfb}.lg-input.has-eye input{padding-right:46px}.lg-eye{width:44px;height:44px;color:var(--lg-muted);cursor:pointer;background:0 0;border:0;border-radius:5px;place-items:center;transition:color .16s,background .16s;display:grid;position:absolute;top:0;right:0}.lg-eye:hover{color:var(--lg-navy);background:#f1f5f9}.lg-eye[aria-pressed=true]{color:var(--lg-blue-deep)}.lg-err{color:#8f2b21;font-size:12.5px;line-height:1.5}.lg-caps{color:#7a5f14;background:#fff9e6;border:1px solid #f0e0b0;border-radius:4px;padding:5px 9px;font-size:12px;line-height:1.45}.lg-rules{color:var(--lg-muted);flex-direction:column;gap:5px;margin:3px 0 0;padding:0;font-size:12.5px;line-height:1.5;list-style:none;display:flex}.lg-rules li{align-items:flex-start;gap:7px;display:flex}.lg-rules li svg{color:#c3cbd5;flex:none;margin-top:3px}.lg-rules li[data-ok=true],.lg-rules li[data-ok=true] svg{color:#3d6b16}.lg-rules li[data-soft=true] svg{color:#c3cbd5}.lg-sr{clip:rect(0 0 0 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.lg-check{min-height:44px;color:var(--lg-muted);cursor:pointer;align-items:flex-start;gap:9px;padding:6px 0;font-size:13px;line-height:1.5;display:flex;position:relative}.lg-check input{opacity:0;width:1px;height:1px;position:absolute}.lg-check-box{color:#0000;background:#fff;border:1.5px solid #b9c2cc;border-radius:4px;flex:none;place-items:center;width:20px;height:20px;margin-top:1px;transition:background .16s,border-color .16s;display:grid}.lg-check:hover .lg-check-box{border-color:var(--lg-blue)}.lg-check input:checked+.lg-check-box{background:var(--lg-navy);border-color:var(--lg-navy);color:#fff}.lg-check input:focus-visible+.lg-check-box{outline:2px solid var(--lg-blue-deep);outline-offset:2px}.lg-check-text{flex-direction:column;display:flex}.lg-check-text em{color:var(--lg-muted);font-size:11.5px;font-style:normal}.lg-submit{letter-spacing:.06em;color:#fff;background:var(--lg-navy);cursor:pointer;touch-action:manipulation;border:0;border-radius:5px;justify-content:center;align-items:center;gap:9px;width:100%;height:46px;margin-top:2px;font-size:15px;font-weight:600;transition:background .16s,transform .12s;display:flex}.lg-submit:hover:not(:disabled){background:var(--lg-navy-hover)}.lg-submit:active:not(:disabled){transform:translateY(1px)}.lg-submit:disabled{opacity:.62;cursor:progress}.lg-spin{border:2px solid #ffffff73;border-top-color:#fff;border-radius:50%;width:15px;height:15px;animation:.7s linear infinite lg-spin}@keyframes lg-spin{to{transform:rotate(360deg)}}.lg-help{color:var(--lg-muted);margin-top:2px;font-size:12.5px;line-height:1.6}.lg-help summary{min-height:24px;color:var(--lg-blue-deep);cursor:pointer;padding:3px 0;font-weight:600}.lg-help summary:hover{color:var(--lg-navy)}.lg-help ul{flex-direction:column;gap:5px;margin:6px 0 0;padding-left:18px;display:flex}.lg-dev{color:var(--lg-muted);margin:0;font-size:12px;line-height:1.7}.lg-dev code{font-family:var(--font-data);background:#f2f5f8;border-radius:3px;padding:1px 5px;font-size:11.5px}.lg-wait{min-height:120px;color:var(--lg-muted);justify-content:center;align-items:center;font-size:13.5px}.login-legal{text-align:center;max-width:400px;color:var(--lg-muted);flex-wrap:wrap;justify-content:center;align-items:center;gap:6px 14px;font-size:12px;line-height:1.6;display:flex}.login-legal a{color:inherit;border-bottom:1px dotted;text-decoration:none}.login-legal a:hover{color:var(--lg-navy)}@media (width<=820px){.login-screen{grid-template-columns:1fr}.login-aside{border-right:0;border-bottom:1px solid var(--paper-line);align-items:flex-start;padding:22px 18px 20px}.la-inner{gap:12px;max-width:none}.la-logo{height:34px}.la-slogan{font-size:17px;line-height:1.5}.la-points{display:none}.la-dots{opacity:.4;background-position:90% 22%,78% 60%,95% 74%,72% 30%}.login-panel{padding:18px 16px calc(20px + env(safe-area-inset-bottom));justify-content:flex-start}.login-card{padding:20px 18px 18px}.lg-input input{height:48px;font-size:16px}.lg-eye{height:48px}.lg-submit{height:50px;font-size:16px}}@media (prefers-reduced-motion:reduce){.lg-spin{animation-duration:2.4s}}.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}}.glare-hover{width:var(--gh-width);height:var(--gh-height);background:var(--gh-bg);border-radius:var(--gh-br);border:1px solid var(--gh-border);place-items:center;display:grid;position:relative;overflow:hidden}.glare-hover:before{content:"";background:linear-gradient(var(--gh-angle), #0000 60%, var(--gh-rgba) 70%, #0000, #0000 100%);transition:var(--gh-duration) ease;background-size:var(--gh-size) var(--gh-size), 100% 100%;background-position:-100% -100%,0 0;background-repeat:no-repeat;position:absolute;inset:0}.glare-hover:hover{cursor:pointer}.glare-hover:hover:before{background-position:100% 100%,0 0}.glare-hover--play-once:before{transition:none}.glare-hover--play-once:hover:before{transition:var(--gh-duration) ease;background-position:100% 100%,0 0}.noise-overlay{pointer-events:none;width:100%;height:100%;image-rendering:pixelated;mix-blend-mode:overlay;position:absolute;inset:0}.prism-container{width:100%;height:100%;position:relative}.scroll-reveal{display:block}.scroll-reveal .sr-unit{will-change:opacity, filter;display:inline-block}.card-spotlight{--mouse-x:50%;--mouse-y:50%;--spotlight-color:#ffffff0d;background-color:#111;border:1px solid #222;border-radius:1.5rem;padding:2rem;position:relative;overflow:hidden}.card-spotlight:before{content:"";background:radial-gradient(circle at var(--mouse-x) var(--mouse-y), var(--spotlight-color), transparent 80%);opacity:0;pointer-events:none;transition:opacity .5s;position:absolute;inset:0}.card-spotlight:hover:before,.card-spotlight:focus-within:before{opacity:.6}.star-border-container{border-radius:20px;display:inline-block;position:relative;overflow:hidden}.border-gradient-bottom{opacity:.7;z-index:0;border-radius:50%;width:300%;height:50%;animation:linear infinite alternate star-movement-bottom;position:absolute;bottom:-12px;right:-250%}.border-gradient-top{opacity:.7;z-index:0;border-radius:50%;width:300%;height:50%;animation:linear infinite alternate star-movement-top;position:absolute;top:-12px;left:-250%}.inner-content{color:#fff;text-align:center;z-index:1;background:#000;border:1px solid #222;border-radius:20px;padding:16px 26px;font-size:16px;position:relative}@keyframes star-movement-bottom{0%{opacity:1;transform:translate(0%)}to{opacity:0;transform:translate(-100%)}}@keyframes star-movement-top{0%{opacity:1;transform:translate(0%)}to{opacity:0;transform:translate(100%)}}.outer-container{flex-direction:column;flex:1;justify-content:center;align-items:center;min-height:100%;padding:1rem;display:flex}@media (width>=640px){.outer-container{aspect-ratio:4/3}}@media (width>=768px){.outer-container{aspect-ratio:2}}.step-circle-container{border-radius:2rem;width:100%;max-width:28rem;margin-left:auto;margin-right:auto;box-shadow:0 20px 25px -5px #0000001a,0 10px 10px -5px #0000000a}.step-indicator-row{align-items:center;width:100%;padding:2rem;display:flex}.step-content-default{position:relative;overflow:hidden}.step-default{padding-left:2rem;padding-right:2rem}.footer-container{padding-bottom:2rem;padding-left:2rem;padding-right:2rem}.footer-nav{margin-top:2.5rem;display:flex}.footer-nav.spread{justify-content:space-between}.footer-nav.end{justify-content:flex-end}.back-button{color:#a3a3a3;cursor:pointer;border-radius:.25rem;padding:.25rem .5rem;transition:all .35s}.back-button:hover{color:#52525b}.back-button.inactive{pointer-events:none;opacity:.5;color:#a3a3a3}.next-button{color:#fff;letter-spacing:-.025em;cursor:pointer;background-color:#5227ff;border-radius:9999px;justify-content:center;align-items:center;padding:.375rem .875rem;font-weight:500;transition:all .35s;display:flex}.next-button:hover,.next-button:active{background-color:#5227ff}.step-indicator{cursor:pointer;outline:none;position:relative}.step-indicator-inner{border-radius:9999px;justify-content:center;align-items:center;width:2rem;height:2rem;font-weight:600;display:flex}.active-dot{background-color:#fff;border-radius:9999px;width:.75rem;height:.75rem}.step-number{font-size:.875rem}.step-connector{background-color:#52525b;border-radius:.25rem;flex:1;height:.125rem;margin-left:.5rem;margin-right:.5rem;position:relative;overflow:hidden}.step-connector-inner{height:100%;position:absolute;top:0;left:0}.check-icon{color:#fff;width:1rem;height:1rem}.portal{--pz-ink:#14161a;--pz-ink-2:#1b1e24;--pz-board:#2e3138;--pz-paper:#f5f6f3;--pz-sheet:#fffbe8;--pz-grid:#d6edfb;--pz-line:#16324f;--pz-imprint:#c9403a;--pz-navy:#0a1a60;--pz-muted:#5b6875;--pz-dark-text:#f3f0e7;--pz-dark-muted:#a9b0ba;background:var(--pz-paper);color:var(--ink);scroll-behavior:smooth}.portal section[id]{scroll-margin-top:70px}.pz-wrap{max-width:1080px;margin:0 auto;padding:0 22px}.pz-nav{z-index:30;background:linear-gradient(#1b1e23 0%,#16181c 100%);border-bottom:1px solid #ffffff12;position:sticky;top:0}.pz-nav-inner{align-items:center;gap:18px;max-width:1080px;height:58px;margin:0 auto;padding:0 22px;display:flex}.pz-mark{align-items:center;gap:10px;text-decoration:none;display:inline-flex}.pz-mark-dots{gap:3px;display:inline-flex}.pz-mark-dots i{border-radius:50%;width:5px;height:5px}.pz-mark-dots i:first-child{background:#f2c230}.pz-mark-dots i:nth-child(2){background:#e4574c}.pz-mark-dots i:nth-child(3){background:#4f9bd9}.pz-mark b{letter-spacing:.04em;color:var(--pz-dark-text);font-size:15.5px;font-weight:700}.pz-nav-links{margin-left:auto;display:flex}.pz-nav-links a{color:var(--pz-dark-muted);padding:19px 12px;font-size:13px;text-decoration:none;transition:color .18s;position:relative}.pz-nav-links a:hover{color:var(--pz-dark-text)}.pz-nav-links a:after{content:"";background:var(--pz-imprint);transform-origin:0;height:2px;transition:transform .22s;position:absolute;bottom:-1px;left:12px;right:12px;transform:scaleX(0)}.pz-nav-links a.is-here:after{transform:scaleX(1)}.pz-nav-links a.is-here{color:var(--pz-dark-text)}.pz-nav-links a:focus-visible{outline:2px solid var(--pz-sheet);outline-offset:-4px;border-radius:2px}.pz-btn{letter-spacing:.02em;cursor:pointer;touch-action:manipulation;border-radius:5px;justify-content:center;align-items:center;min-height:44px;padding:0 20px;font-size:14.5px;font-weight:600;text-decoration:none;transition:background .18s,color .18s,border-color .18s;display:inline-flex}.pz-btn-paper{color:var(--pz-line);background:var(--pz-sheet);border:1px solid var(--pz-sheet)}.pz-btn-paper:hover{background:#fff}.pz-btn-ink{color:#fff;background:var(--pz-navy);border:1px solid var(--pz-navy)}.pz-btn-ink:hover{background:#16266f}.pz-btn-nav{border-radius:4px;min-height:34px;padding:0 14px;font-size:13px}.pz-quiet{color:var(--pz-dark-muted);border-bottom:1px solid #ffffff40;padding-bottom:2px;font-size:13.5px;text-decoration:none}.pz-quiet:hover{color:var(--pz-dark-text)}.pz-quiet-ink{color:var(--pz-muted);border-bottom-color:#c9d3dd}.pz-quiet-ink:hover{color:var(--pz-line)}.pz-hero{background:linear-gradient(168deg, #1a1d22 0%, var(--pz-ink) 46%, #0e1013 100%);align-items:center;min-height:calc(100svh - 58px);padding:44px 0 56px;display:flex;position:relative;overflow:hidden}.pz-light{pointer-events:none;position:absolute;inset:0}.pz-light-scrim{background:linear-gradient(90deg, var(--pz-ink) 0%, #14161af2 28%, #14161abd 46%, #14161a33 68%, #14161a00 84%), linear-gradient(180deg, #14161a80 0%, #14161a00 28%, #0e10138c 100%);position:absolute;inset:0}.pz-light-grain{opacity:.75}.pz-hero-inner{z-index:1;grid-template-columns:minmax(0,1fr) minmax(0,1fr);align-items:center;gap:54px;width:100%;max-width:1080px;margin:0 auto;padding:0 22px;display:grid;position:relative}.pz-kicker{color:var(--pz-dark-muted);margin:0;font-size:13px}.pz-h1{letter-spacing:.01em;color:var(--pz-dark-text);margin:14px 0 0;font-size:clamp(30px,4.1vw,46px);font-weight:700;line-height:1.32}.pz-h1 .pz-h1-line{display:block}.pz-lead{max-width:42ch;color:var(--pz-dark-muted);margin:20px 0 0;font-size:15px;line-height:1.95}.pz-actions{flex-wrap:wrap;align-items:center;gap:18px;margin-top:30px;display:flex}.pz-stage{flex-direction:column;gap:12px;margin:0;display:flex}.pz-sheet{background:var(--pz-sheet);font-family:var(--font-song);color:var(--pz-line);border-radius:3px;padding:24px 22px 20px;position:relative;transform:rotate(-1.1deg);box-shadow:0 30px 70px #0009,inset 0 2px #fff6}.pz-sheet:before{content:"";background:var(--pz-imprint);height:3px;position:absolute;top:0;left:22px;right:22px}.pz-sheet-head{border-bottom:1.5px solid var(--pz-line);justify-content:space-between;align-items:baseline;gap:10px;padding-bottom:11px;display:flex}.pz-sheet-head b{letter-spacing:.02em;font-size:16px;font-weight:700}.pz-sheet-head span{font-family:var(--font-data);opacity:.72;font-size:11px}.pz-sheet-cols,.pz-sheet-row{grid-template-columns:58px minmax(0,1fr) 62px;gap:10px;display:grid}.pz-sheet-cols{margin-top:13px}.pz-sheet-cols>span{text-align:center;background:var(--pz-grid);padding:5px 0;font-size:11.5px}.pz-sheet-cols>span:first-child{background:0 0}.pz-sheet-row{border-bottom:1px solid var(--pz-grid);padding:8px 0 7px;font-size:12.5px;line-height:1.55}.pz-sheet-row i{font-style:normal;font-family:var(--font-data);color:#3f5a75;font-size:11px}.pz-sheet-row em{text-align:right;font-style:normal;font-family:var(--font-data);font-size:11px}.pz-sheet-note{color:#4a6480;margin:11px 0 0;font-size:11.5px;line-height:1.75}.pz-sheet-foot{border-top:1px solid var(--pz-grid);justify-content:space-between;align-items:center;gap:12px;margin-top:14px;padding-top:11px;font-size:11.5px;display:flex}.pz-stamp{font-family:var(--font-ui);color:var(--pz-imprint);border:1px solid var(--pz-imprint);border-radius:2px;padding:3px 8px;font-size:10.5px;transform:rotate(-2deg)}.pz-fig-caption{color:var(--pz-dark-muted);text-align:right;font-size:12px}.pz-sec{background:var(--pz-paper);padding:78px 0}.pz-sec-dark{background:var(--pz-ink-2);color:var(--pz-dark-text)}.pz-h2{color:var(--pz-line);margin:0;font-size:clamp(22px,2.4vw,30px);font-weight:700;line-height:1.5}.pz-sec-dark .pz-h2{color:var(--pz-dark-text)}.pz-note{max-width:60ch;color:var(--pz-muted);margin:14px 0 0;font-size:14.5px;line-height:1.9}.pz-sec-dark .pz-note{color:var(--pz-dark-muted)}.pz-chain{border-top:1.5px solid var(--pz-line);grid-template-columns:repeat(4,minmax(0,1fr));margin-top:34px;display:grid}.pz-chain-step{border-right:1px solid #dfe3e6;padding:20px 20px 0 0}.pz-chain-step:last-child{border-right:0}.pz-chain-step b{font-family:var(--font-data);letter-spacing:.06em;color:var(--pz-imprint);font-size:11.5px;display:block}.pz-chain-step h3{color:var(--pz-line);margin:10px 0 8px;font-size:15.5px;font-weight:700}.pz-chain-step p{color:var(--pz-muted);margin:0;font-size:13.5px;line-height:1.85}.pz-samples{grid-template-columns:1.35fr 1fr .85fr;align-items:end;gap:24px;margin-top:38px;display:grid}.pz-piece{background:#fff;border:1px solid #e2e6ea;border-radius:4px;padding:18px;box-shadow:0 12px 30px #16324f14}.pz-piece h3{color:var(--pz-line);margin:0 0 12px;font-size:14.5px;font-weight:700}.pz-piece p{color:var(--pz-muted);margin:12px 0 0;font-size:13px;line-height:1.8}.pz-paper-a3{background:var(--pz-sheet);border:1px solid #efe6c8;grid-template-columns:1fr 1fr;padding:14px 12px 12px 26px;display:grid;position:relative}.pz-paper-a3:before{content:"密封线";color:#b8a97c;writing-mode:vertical-rl;border-left:1px dashed #b8a97c;width:1px;font-size:9px;position:absolute;top:6px;bottom:6px;left:8px}.pz-paper-a3:after{content:"";background:var(--pz-imprint);height:3px;position:absolute;top:0;left:0;right:0}.pz-paper-a3 ul{font-family:var(--font-song);color:var(--pz-line);margin:0;padding:0 10px 0 0;font-size:11.5px;line-height:2.05;list-style:none}.pz-paper-a3 ul:last-child{border-left:1px solid var(--pz-grid);padding:0 0 0 10px}.pz-ledger{font-family:var(--font-data);color:var(--pz-line);font-size:12px}.pz-ledger div{border-bottom:1px solid #eceff2;justify-content:space-between;gap:10px;padding:7px 0;display:flex}.pz-ledger div:last-child{border-bottom:0}.pz-ledger em{color:var(--pz-imprint);font-style:normal}.pz-parents{grid-template-columns:minmax(0,1fr) minmax(0,380px);align-items:center;gap:44px;display:grid}.pz-push{color:var(--ink);background:#fff;border-radius:10px;padding:16px;box-shadow:0 20px 50px #00000073}.pz-push-head{color:var(--pz-muted);border-bottom:1px solid #eef0f2;align-items:center;gap:9px;padding-bottom:12px;font-size:12.5px;display:flex}.pz-push-dot{background:linear-gradient(135deg,#91b44f,#409ec4);border-radius:5px;flex:none;width:22px;height:22px}.pz-push dl{gap:9px;margin:13px 0 0;display:grid}.pz-push dt{color:var(--pz-muted);font-size:11.5px}.pz-push dd{color:var(--ink);margin:3px 0 0;font-size:13.5px;line-height:1.6}.pz-push-body{font-family:var(--font-song);color:var(--pz-line);background:var(--pz-sheet);border-left:3px solid var(--pz-imprint);margin:14px 0 0;padding:12px;font-size:12.5px;line-height:1.9}.pz-push-foot{color:var(--pz-muted);margin:10px 0 0;font-size:11.5px}.pz-pairs{border-top:1.5px solid var(--pz-line);margin-top:30px}.pz-pair-head,.pz-pair{grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:26px;display:grid}.pz-pair-head{color:var(--pz-muted);padding:12px 0 0;font-size:12.5px}.pz-pair{border-bottom:1px solid #e2e6ea;padding:18px 0}.pz-pair p{margin:0;font-size:14px;line-height:1.85}.pz-pair .was{color:var(--pz-muted)}.pz-pair .now{color:var(--pz-line);font-weight:600}.pz-final{background:var(--pz-paper);border-top:1.5px solid var(--pz-line);padding:72px 0 78px}.pz-final-row{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:20px;display:flex}.pz-foot{color:var(--pz-dark-muted);background:var(--pz-ink);padding:24px 0 34px;font-size:12.5px}.pz-foot-inner{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:10px 20px;max-width:1080px;margin:0 auto;padding:0 22px;display:flex}.pz-foot a{color:inherit;border-bottom:1px dotted #ffffff4d;text-decoration:none}.pz-foot a:hover{color:var(--pz-dark-text)}.pz-stepper{--border-primary:transparent;margin-top:30px;display:block}.pz-stepper .step-circle-container{width:100%;max-width:none;box-shadow:none;border-radius:0;margin:0}.pz-stepper .step-indicator-row{border-bottom:1.5px solid var(--pz-line);padding:0 0 14px}.pz-stepper .step-connector{background:#dfe3e6;border-radius:0;height:1px;margin:0 10px}.pz-stepper .step-connector-inner{background-color:var(--pz-line)!important}.pz-stepper .footer-container{display:none}.pz-stepper-content{margin-top:20px}.pz-stepper .step-default{padding:0}.pz-stepper .step-default h3{color:var(--pz-line);margin:0 0 8px;font-size:16px;font-weight:700}.pz-stepper .step-default p{max-width:58ch;color:var(--pz-muted);margin:0;font-size:14px;line-height:1.95}.pz-step{cursor:pointer;white-space:nowrap;font-family:var(--font-ui);color:var(--pz-muted);background:0 0;border:0;align-items:baseline;gap:8px;padding:4px 2px;font-size:13.5px;transition:color .18s;display:inline-flex}.pz-step b{font-family:var(--font-data);letter-spacing:.06em;color:#b3b9c0;font-size:11.5px;transition:color .18s}.pz-step:hover{color:var(--pz-line)}.pz-step.is-active{color:var(--pz-line);font-weight:600}.pz-step.is-active b,.pz-step.is-done b{color:var(--pz-imprint)}.pz-step:focus-visible{outline:2px solid var(--pz-navy);outline-offset:3px;border-radius:2px}.pz-piece.card-spotlight{background:#fff;border:1px solid #e2e6ea;border-radius:4px;padding:18px}.pz-piece.card-spotlight:before{transition:opacity .4s}.pz-piece.card-spotlight:hover:before,.pz-piece.card-spotlight:focus-within:before{opacity:1}.pz-glare.glare-hover{place-items:initial;cursor:default;background:0 0;border:0;display:block;overflow:hidden}.pz-glare.glare-hover:hover{cursor:default}.pz-glare .pz-push{z-index:1;position:relative}.pz-sec-dark{position:relative;overflow:hidden}.pz-dark-grain{opacity:.6}.pz-star.star-border-container{border-radius:5px;display:inline-block}.pz-star .inner-content{font-family:var(--font-ui);letter-spacing:.02em;border-radius:5px;padding:13px 24px;font-size:14.5px;font-weight:600;line-height:1.2}.pz-star:hover .inner-content{background:#16266f!important}@media (width<=900px){.pz-hero-inner{grid-template-columns:1fr;gap:36px}.pz-light-scrim{background:linear-gradient(180deg, #14161ab8 0%, #14161a8c 34%, #14161ae0 72%, var(--pz-ink) 100%)}.pz-hero{min-height:0;padding:44px 0 56px}.pz-sheet{transform:none}.pz-chain{border-top:0;grid-template-columns:1fr}.pz-chain-step{border-top:1px solid #dfe3e6;border-right:0;padding:16px 0}.pz-samples{grid-template-columns:1fr;align-items:stretch;gap:20px}.pz-parents{grid-template-columns:1fr;gap:30px}.pz-pair-head,.pz-pair{grid-template-columns:1fr;gap:8px}.pz-pair-head{padding-bottom:4px}}@media (width<=820px){.pz-nav-links{display:none}.pz-btn-nav{margin-left:auto}.pz-nav-inner{gap:12px;height:54px}.pz-mark b{font-size:14px}.pz-mark-dots i{width:4px;height:4px}.pz-sec{padding:52px 0}.pz-h1{font-size:28px}.pz-actions{gap:14px}.pz-actions .pz-btn{flex:100%}}@media (width<=640px){.pz-stepper .step-indicator-row{grid-template-columns:1fr 1fr;gap:8px 0;display:grid}.pz-stepper .step-connector{display:none}.pz-light-grain{opacity:.5}.pz-star .border-gradient-top,.pz-star .border-gradient-bottom{animation-duration:12s}}@media (prefers-reduced-motion:reduce){.portal{scroll-behavior:auto}.pz-star .border-gradient-top,.pz-star .border-gradient-bottom{opacity:.22;animation:none}.pz-piece.card-spotlight:before,.pz-glare.glare-hover:before,.pz-btn,.pz-step,.pz-nav-links a,.pz-nav-links a:after{transition:none}}.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-recent{border-top:1px dashed var(--paper-line);max-width:46ch;margin-top:14px;padding-top:12px}.prep-recent .cap{color:var(--ink-3);margin-bottom:8px;font-size:11px;display:block}.prep-recent ul{flex-direction:column;gap:6px;margin:0 0 8px;padding:0;list-style:none;display:flex}.prep-recent li{margin:0}.prep-recent button.mini{text-align:left;white-space:nowrap;text-overflow:ellipsis;width:100%;overflow:hidden}.prep-recent .mute{font-size:11px}.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:minmax(0,3fr) minmax(0,2fr);grid-template-columns:300px minmax(0,1fr)}.prep-grid>.roster{grid-row:1/span 2}.prep-grid>.editor{grid-row:1}.prep-grid>.stage{grid-row:2;min-height:0}}@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 .f>span.prep-add-cap{justify-content:space-between;align-items:center;gap:6px;display:flex}.prep-add-form .prep-add-cap .mini{padding:1px 6px;font-size:10px;line-height:1.5}.prep-add-link{color:var(--red-deep);font:inherit;cursor:pointer;background:0 0;border:none;padding:0;text-decoration:underline}.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-none{margin:6px 0 0;line-height:1.7}.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-filelabel.is-off{opacity:.6}.prep-att-file{display:none}.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}.trend-chart-wrap{border:1px solid var(--paper-line);border-radius:var(--r-md);background:#fff;padding:10px 12px 6px}.trend-chart{width:100%;height:auto;display:block}.tc-grid{stroke:var(--paper-line);stroke-width:1px}.tc-axis{stroke:#c7ced6;stroke-width:1px}.tc-pass{stroke:var(--red);stroke-width:1px;stroke-dasharray:4 4;opacity:.45}.tc-pass-label{font-family:var(--font-data);fill:var(--red);opacity:.75;text-anchor:end;font-size:10px}.tc-ytick{font-family:var(--font-data);fill:var(--ink-3);text-anchor:end;font-size:11px}.tc-xtick{font-family:var(--font-data);fill:var(--ink-3);text-anchor:middle;font-size:11px}.tc-line{fill:none;stroke-width:2.2px;stroke-linejoin:round;stroke-linecap:round}.tc-dot{fill:#fff;stroke-width:2.2px}.tc-dot:hover{fill:currentColor}.tc-band{stroke:none;fill-opacity:.14}.tc-median{fill:none;stroke-width:1.4px;stroke-dasharray:5 4;opacity:.6}.trend-chart-empty{border:1px dashed var(--paper-line);border-radius:var(--r-md);text-align:center;color:var(--ink-3);background:var(--paper);padding:26px 12px;font-size:13px}.trend-legend{flex-wrap:wrap;align-items:center;gap:14px;padding:6px 2px 2px;font-size:12px;display:flex}.trend-legend .lg{align-items:center;gap:6px;display:inline-flex}.trend-legend .lg i{border-radius:2px;width:10px;height:10px}.trend-legend .lg b{font-weight:400}.trend-legend .lg-note{margin-left:auto}.trend-card{border:1px solid var(--paper-line);border-left:4px solid var(--cyan);border-radius:var(--r-md);background:var(--cyan-wash);margin-top:10px;padding:10px 12px}.trend-head{flex-wrap:wrap;align-items:center;gap:8px;font-size:13px;display:flex}.trend-head b{font-weight:600}.trend-chip{border:1px solid;border-radius:999px;align-items:center;gap:4px;padding:1px 8px;font-size:12px;display:inline-flex}.trend-chip.up{color:#2f7a4f;background:#eef7f1}.trend-chip.down{color:var(--red-deep);background:var(--red-wash)}.trend-chip.flat{color:var(--ink-2);background:#f2f4f6}.trend-lines{color:var(--ink);margin:8px 0 0;padding-left:18px;font-size:13px;line-height:1.65}.trend-peers{border-left:2px solid var(--paper-line);border-radius:0 var(--r-md) var(--r-md) 0;background:#f7f9fb;margin-top:6px;padding:6px 10px 6px 14px}.trend-sugg{border-radius:var(--r-md);border:1px solid var(--paper-line);background:#fff;margin:8px 0 0;padding:8px 10px;font-size:13px}.trend-sugg .row{align-items:baseline;gap:6px;display:flex}.trend-sugg .row+.row{margin-top:4px}.trend-stats{color:var(--ink-2);grid-template-columns:repeat(auto-fit,minmax(96px,1fr));gap:6px 12px;margin-top:8px;font-size:12px;display:grid}.trend-stats .k{color:var(--ink-3);display:block}.trend-stats .v{font-family:var(--font-data);color:var(--ink);font-size:15px}.vocab-grid{grid-template-columns:minmax(220px,260px) minmax(0,1.6fr) minmax(300px,1fr);align-items:start;gap:12px;display:grid}@media (width<=1280px){.vocab-grid{grid-template-columns:minmax(200px,240px) minmax(0,1fr)}.vocab-grid>.vocab-col.assign{grid-column:1/-1}}.vocab-col{min-width:0}.vocab-col>.card{margin-bottom:12px}.vocab-col h4{margin:0 0 8px;font-size:13px;font-weight:600}.tag-subj{border:1px solid;border-radius:999px;padding:1px 7px;font-size:11px;line-height:1.5;display:inline-block}.book-row{border:1px solid var(--paper-line);border-radius:var(--r-md);cursor:pointer;background:#fff;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:6px;padding:7px 9px;display:grid}.book-row+.book-row{margin-top:6px}.book-row.on{background:var(--cyan-wash);border-color:var(--cyan);box-shadow:inset 3px 0 0 var(--cyan)}.book-row .nm{text-overflow:ellipsis;white-space:nowrap;font-size:13px;overflow:hidden}.book-row .meta{color:var(--ink-3);font-size:11px;font-family:var(--font-data)}.book-row .acts{gap:4px;display:flex}.unit-bar{flex-wrap:wrap;gap:6px;margin-bottom:8px;display:flex}.import-box textarea{width:100%;min-height:108px;font-family:var(--font-data);font-size:12px;line-height:1.6}.import-box .field .row2>input{flex:0 0 190px;min-width:0}.import-hint{color:var(--ink-2);font-size:12px;line-height:1.7}.import-hint code{font-family:var(--font-data);border:1px solid var(--paper-line);background:#fff;border-radius:3px;padding:0 4px}.import-result{border-radius:var(--r-md);background:var(--cyan-wash);border:1px solid var(--paper-line);margin-top:6px;padding:7px 9px;font-size:12px}.import-result.warn{background:var(--red-wash);border-color:#f0cfca}.word-table td.w{font-family:var(--font-data);font-size:13px}.word-table td .ph{color:var(--ink-3);margin-left:6px;font-size:11px}.word-table input{width:100%}.mastery-track{background:#e7ebef;border-radius:999px;height:8px;display:block;overflow:hidden}.mastery-track>i{background:var(--cyan);height:100%;display:block}.mastery-line{grid-template-columns:minmax(0,1fr) 74px;align-items:center;gap:8px;margin-top:4px;display:grid}.mastery-line .n{font-family:var(--font-data);color:var(--ink-2);text-align:right;font-size:12px}.progress-card{border:1px solid var(--paper-line);border-radius:var(--r-md);background:#fff;margin-top:8px;padding:9px 11px}.progress-card .top{flex-wrap:wrap;align-items:baseline;gap:10px;font-size:13px;display:flex}.progress-card .big{font-family:var(--font-data);color:var(--ink);font-size:20px}.progress-card .today{margin-top:6px;font-size:13px}.week-bars{align-items:flex-end;gap:3px;height:46px;margin-top:8px;display:flex}.week-bars .d{flex-direction:column;flex:1;justify-content:flex-end;align-items:center;gap:2px;min-width:0;display:flex}.week-bars .b{background:var(--cyan);border-radius:2px 2px 0 0;width:100%}.week-bars .b.zero{background:#e7ebef}.week-bars .l{color:var(--ink-3);font-size:9px;font-family:var(--font-data)}.stage-viz{flex-direction:column;gap:6px;display:flex}.stage-viz.compact{flex-direction:row;align-items:center;gap:8px}.stage-bar{background:var(--paper-line);border:1px solid var(--paper-line);border-radius:999px;height:14px;display:flex;overflow:hidden}.stage-viz.compact .stage-bar{flex:auto;min-width:56px;height:8px}.stage-bar .seg{flex:none;min-width:3px;height:100%}.stage-bar .seg.recognize{background:color-mix(in srgb, var(--cyan) 26%, transparent)}.stage-bar .seg.recall{background:color-mix(in srgb, var(--cyan) 52%, transparent)}.stage-bar .seg.spell{background:color-mix(in srgb, var(--cyan) 78%, transparent)}.stage-bar .seg.mastered{background:var(--cyan)}.stage-bar .seg.empty{background:0 0;flex:auto}.stage-legend{color:var(--ink-2);flex-wrap:wrap;align-items:center;gap:4px 14px;font-size:12px;display:flex}.stage-legend .lg{align-items:center;gap:5px;display:inline-flex}.stage-legend .sw{border-radius:2px;width:10px;height:10px;display:inline-block}.stage-legend .sw.recognize{background:color-mix(in srgb, var(--cyan) 26%, transparent)}.stage-legend .sw.recall{background:color-mix(in srgb, var(--cyan) 52%, transparent)}.stage-legend .sw.spell{background:color-mix(in srgb, var(--cyan) 78%, transparent)}.stage-legend .sw.mastered{background:var(--cyan)}.stage-legend b{font-family:var(--font-data);color:var(--ink);font-weight:600}.stage-alert{border:1px solid var(--red);background:var(--red-wash);color:var(--red-deep);border-radius:999px;margin-left:auto;padding:0 8px;font-size:12px}.stage-mini-note{font-family:var(--font-data);color:var(--ink-3);white-space:nowrap;font-size:12px}.stage-mini-note.warn{color:var(--red-deep)}.word-stage-list{flex-direction:column;gap:4px;max-height:264px;margin-top:8px;display:flex;overflow:auto}.word-stage-row{border:1px solid var(--paper-line);border-radius:var(--r-sm);background:#fff;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:8px;padding:5px 8px;display:grid}.word-stage-row .w{font-family:var(--font-data);font-size:13px}.word-stage-row .m{color:var(--ink-3);margin-left:6px;font-size:12px}.word-stage-row .side{align-items:center;gap:6px;display:inline-flex}.stage-now{border:1px dashed var(--paper-line);color:var(--ink-2);border-radius:999px;padding:0 7px;font-size:11px}.gate-dots{gap:4px;display:inline-flex}.gate-dots .gate{border:1px solid var(--paper-line);color:var(--ink-3);background:#fff;border-radius:999px;padding:0 6px;font-size:11px}.gate-dots .gate.pass{color:var(--cyan-deep);border-color:var(--cyan);background:var(--cyan-wash)}.gate-dots .gate.now{color:var(--ink);border-style:dashed}.rewrite-flag{border:1px solid var(--red);background:var(--red-wash);color:var(--red-deep);border-radius:999px;padding:0 7px;font-size:11px}.assign-form .field{margin-bottom:8px}.assign-units{flex-wrap:wrap;gap:6px;margin-top:4px;display:flex}.unit-pick{border:1px solid var(--paper-line);border-radius:var(--r-sm);cursor:pointer;background:#fff;align-items:center;gap:5px;padding:3px 9px;font-size:12px;display:inline-flex}.unit-pick:has(input:checked){border-color:var(--cyan);background:var(--cyan-wash);color:var(--cyan-deep)}.banner.bad{background:var(--red-wash);color:#7d2b23;border-color:#f0cfca}: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;--brand-navy:#0a1a60;--brand-navy-hover:#16266f;--brand-blue:#409ec4;--brand-blue-deep:#2a7e97;--brand-green:#91b44f;--brand-yellow:#f5c63b;--brand-pink:#d5396e;--brand-cream:#fffdf6;--brand-muted:#66707c;--subj-en:#2f7fa8;--subj-math:#c2762a;--subj-sci:#6f5bd0;--subj-other:#6b7683}*{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}.new-student .mini.primary{border-color:var(--sheet-line);background:var(--sheet-line);color:#fff}.new-student .mini.primary:disabled{opacity:.55}.new-student .hint,.new-student .err,.new-student .ok{margin-top:7px;font-size:11.5px;line-height:1.6}.new-student .hint{color:var(--ink-3)}.new-student .hint .link{color:var(--red-deep,#bc3b31);font:inherit;cursor:pointer;background:0 0;border:none;margin:0 2px;padding:0;text-decoration:underline}.new-student .err{color:var(--red-deep,#bc3b31)}.new-student .ok{color:var(--cyan-deep,#2a7e97)}.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)}a.mini{align-items:center;text-decoration:none;display:inline-flex}.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}
