:root{--paper:#f6f1e7;--paper2:#efe8d9;--card:#fffdf7;--ink:#26221b;--ink2:#6e675a;--line:#dcd3c0;--line2:#c9bfa9;--seal:#bc3a28;--seal-d:#9e2e1f;--green:#2e6b4e;--green-bg:#e6eee5;--blue:#3a6b9e;--blue-bg:#e0eaf2;--red-bg:#f4e2dd;--shadow:3px 3px 0 #26221b17;--serif:"Noto Serif SC",serif;--sans:"Noto Sans SC",sans-serif}*{box-sizing:border-box;scrollbar-width:none;-ms-overflow-style:none;margin:0;padding:0}::-webkit-scrollbar{width:0;height:0;display:none}html,body{height:100%}body{background:var(--paper);color:var(--ink);font-family:var(--sans);font-size:14px;line-height:1.6}body:before{content:"";pointer-events:none;z-index:9998;opacity:.55;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='140' height='140'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='2'/%3E%3CfeColorMatrix values='0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.035 0'/%3E%3C/filter%3E%3Crect width='140' height='140' filter='url(%23n)'/%3E%3C/svg%3E");position:fixed;inset:0}::selection{background:var(--seal);color:#fff}a{color:inherit;text-decoration:none}button{cursor:pointer;font-family:inherit}input,select,textarea{color:var(--ink);background:var(--card);border:1px solid var(--line2);border-radius:4px;outline:none;padding:8px 10px;font-family:inherit;font-size:14px;transition:border-color .15s}input:focus,select:focus,textarea:focus{border-color:var(--seal)}select.sel{appearance:none;cursor:pointer;background:var(--card) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8'%3E%3Cpath d='M1 1l5 5 5-5' fill='none' stroke='%23666' stroke-width='1.5'/%3E%3C/svg%3E") no-repeat right 10px center;padding-right:32px}select.sel:hover{border-color:var(--ink)}select.sel:disabled{opacity:.55;cursor:not-allowed;background-color:var(--paper2)}.ic{vertical-align:-3px}.layout{min-height:100vh;display:flex}.side{color:#cfc6b4;background:#211d17;flex-direction:column;flex-shrink:0;width:212px;height:100vh;display:flex;position:sticky;top:0}.side-logo{border-bottom:1px solid #3a342a;align-items:center;gap:12px;padding:26px 20px 20px;display:flex}.logo-seal{background:var(--seal);color:#fff6ec;width:44px;height:44px;font-family:var(--serif);text-align:center;border-radius:6px;justify-content:center;align-items:center;font-size:15px;font-weight:900;line-height:1.1;display:flex;transform:rotate(-3deg);box-shadow:inset 0 0 0 2px #fff6ec59,2px 2px #0000004d}.side-logo b{font-family:var(--serif);color:#f4eddd;letter-spacing:2px;font-size:17px;display:block}.side-logo small{letter-spacing:1px;color:#8b8371;font-size:10px}.nav{flex:1;padding:14px 0}.nav-i{color:#b7ae99;letter-spacing:1px;border-left:3px solid #0000;align-items:center;gap:11px;padding:11px 22px;font-size:14px;transition:all .15s;display:flex}.nav-i:hover{color:#f0e9d8;background:#ffffff08}.nav-i.on{color:#fff6ec;border-left-color:var(--seal);background:#bc3a2824}.nav-i .ic{opacity:.85}.side-foot{color:#7a7362;border-top:1px solid #3a342a;padding:16px 20px 26px;font-size:11px;line-height:1.7}.side-foot .lnk{color:#b7ae99;cursor:pointer;white-space:nowrap;align-items:center;gap:8px;padding:4px 0;display:flex}.side-foot .lnk:hover{color:#f0e9d8}.side-foot-row{justify-content:space-between;align-items:center;gap:4px;display:flex}.side.collapsed{width:64px}.side.collapsed .side-logo{justify-content:center;padding:22px 10px 16px}.side.collapsed .side-logo-txt{display:none}.side.collapsed .nav-i{letter-spacing:0;justify-content:center;padding:13px 0}.side.collapsed .nav-i .ic{opacity:.95}.side.collapsed .side-foot{padding:14px 10px}.side.collapsed .side-foot-row{flex-direction:column;justify-content:center;gap:6px}.side.collapsed .side-foot .lnk{justify-content:center;width:100%}.main-wrap{flex-direction:column;flex:1;min-width:0;display:flex}.main{flex:1;min-width:0;padding:34px 40px 0}.h-page{font-family:var(--serif);letter-spacing:2px;margin-bottom:6px;font-size:27px;font-weight:900}.h-page:after{content:"";background:var(--seal);width:34px;height:4px;margin-top:8px;display:block}.h-sub{color:var(--ink2);margin:10px 0 26px;font-size:13px}.h-row{flex-wrap:wrap;justify-content:space-between;align-items:flex-start;gap:16px;display:flex}.dash-head{color:var(--ink2);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:16px;margin:10px 0 26px;font-size:13px;display:flex}.dash-date{text-align:center;letter-spacing:1px;white-space:nowrap;flex:1;min-width:0}.dash-greet{flex-wrap:wrap;align-items:center;gap:10px;display:inline-flex}.dash-sem{color:var(--seal);letter-spacing:1px;background:var(--red-bg);white-space:nowrap;border:1px solid #bc3a284d;border-radius:999px;align-items:center;padding:2px 10px;font-weight:700;display:inline-flex}.card{background:var(--card);border:1px solid var(--line);box-shadow:var(--shadow);border-radius:6px;padding:20px}.btn{background:var(--ink);color:#f6f1e7;border:1px solid var(--ink);letter-spacing:1px;border-radius:4px;align-items:center;gap:7px;padding:5px 12px;font-size:12.5px;font-weight:500;transition:all .15s;display:inline-flex}.btn:hover{transform:translate(-1px,-1px);box-shadow:2px 2px #26221b40}.btn:active{box-shadow:none;transform:none}.btn.accent{background:var(--seal);border-color:var(--seal)}.btn.accent:hover{background:var(--seal-d)}.btn.ghost{color:var(--ink);background:0 0}.btn.ghost:hover{background:var(--paper2)}.btn.sm,.btn.xs{padding:5px 12px;font-size:12.5px}.btn.link{color:var(--ink2);background:0 0;border:1px solid #0000;padding:5px 6px}.btn.link:hover{color:var(--seal);box-shadow:none;transform:none}.btn:disabled{opacity:.45;pointer-events:none}.welcome .card .btn{justify-content:center}.badge{letter-spacing:1px;border:1px solid;border-radius:99px;align-items:center;gap:6px;padding:3px 11px;font-size:12px;display:inline-flex}.badge.live{color:var(--green);border-color:var(--green);background:var(--green-bg)}.badge.end{color:var(--ink2);border-color:var(--line2);background:var(--paper2)}.badge.wait{color:var(--blue);border-color:var(--blue);background:var(--blue-bg)}.badge.hot{color:var(--seal);border-color:var(--seal);background:var(--red-bg)}.tbl{border-collapse:collapse;background:var(--card);width:100%}.tbl th{color:var(--ink2);letter-spacing:1.5px;text-align:left;border-bottom:2px solid var(--ink);white-space:nowrap;padding:9px 12px;font-size:12px;font-weight:500}.tbl td{border-bottom:1px solid var(--line);vertical-align:middle;padding:9px 12px}.tbl tr:hover td{background:#fbf7ec}.num{font-variant-numeric:tabular-nums}.tbl.compact th,.tbl.compact td{padding:6px 10px}.tbl.compact .pick{letter-spacing:.5px;padding:5px 10px;font-size:12.5px}.tbl.compact input{padding:4px 8px;font-size:12px}.tbl td.td-title{max-width:240px}.tbl td.td-title .clip{white-space:nowrap;text-overflow:ellipsis;display:block;overflow:hidden}.tbl th.sortable{cursor:pointer;-webkit-user-select:none;user-select:none}.tbl th.sortable:hover{color:var(--accent)}.tbl th .sort-arrow{opacity:.35;font-size:10px;font-weight:400}.tbl th.sortable.on{color:var(--accent)}.tbl th.sortable.on .sort-arrow{opacity:1}.stat-grid{flex-wrap:wrap;gap:16px;margin-bottom:26px;display:flex}.stat{background:var(--card);border:1px solid var(--line);min-width:150px;box-shadow:var(--shadow);border-radius:8px;flex:1;justify-content:space-between;align-items:center;gap:24px;padding:16px 22px;transition:box-shadow .2s,transform .2s,border-color .2s;display:flex;position:relative;overflow:hidden}.stat:before{content:"";background:var(--accent);opacity:.4;border-radius:0 2px 2px 0;width:3px;height:60%;transition:opacity .2s;position:absolute;top:20%;left:0}.stat:hover{border-color:var(--accent);transform:translateY(-1px);box-shadow:0 4px 16px #00000014}.stat:hover:before{opacity:1}.stat .k{color:var(--ink2);letter-spacing:2px;white-space:nowrap;z-index:1;flex-shrink:0;font-size:12px;position:relative}.stat .v{font-family:var(--serif);font-variant-numeric:tabular-nums;text-align:right;z-index:1;flex-shrink:0;font-size:34px;font-weight:900;line-height:1.2;position:relative}.stat .v small{color:var(--ink2);margin-left:2px;font-size:14px;font-weight:600}.stat .v.seal{color:var(--seal)}.stat .v.green{color:var(--green)}.stat .v.red{color:var(--seal)}.empty{text-align:center;color:var(--ink2);padding:60px 20px}.empty .big{font-family:var(--serif);color:var(--ink);letter-spacing:2px;margin-bottom:8px;font-size:22px}.modal-mask{z-index:1000;background:#1e1a1480;justify-content:center;align-items:center;padding:20px;animation:.18s fadeIn;display:flex;position:fixed;inset:0}.modal{background:var(--card);border:1px solid var(--line);border-radius:8px;flex-direction:column;width:100%;max-width:620px;max-height:88vh;animation:.22s cubic-bezier(.2,1.4,.4,1) pop;display:flex;box-shadow:6px 6px #26221b2e}.modal-h{border-bottom:1px solid var(--line);justify-content:space-between;align-items:center;padding:16px 22px;display:flex}.modal-h b{font-family:var(--serif);letter-spacing:2px;font-size:17px}.modal-b{scrollbar-width:none;-ms-overflow-style:none;padding:20px 22px;overflow:auto}.modal-b::-webkit-scrollbar{width:0;height:0;display:none}.modal-f{border-top:1px solid var(--line);justify-content:flex-end;gap:10px;padding:14px 22px;display:flex}.detail-modal .modal{max-width:900px}.detail-table-wrap{border:1px solid var(--line);scrollbar-width:thin;border-radius:8px;max-height:340px;overflow:auto}.detail-table-wrap::-webkit-scrollbar{width:8px;height:8px;display:block}.detail-table-wrap::-webkit-scrollbar-thumb{background:var(--line2);border-radius:4px}.detail-table-wrap::-webkit-scrollbar-thumb:hover{background:var(--ink2)}.detail-table-wrap::-webkit-scrollbar-track{background:0 0}.detail-table-wrap .tbl{white-space:nowrap;width:100%;min-width:max-content;margin:0}.grade-modal .modal{max-width:1080px}.batch-confirm-modal .modal{max-width:480px}.batch-confirm-modal .bc-body{align-items:flex-start;gap:16px;padding:6px 2px;display:flex}.batch-confirm-modal .bc-ic{background:var(--green-bg);width:46px;height:46px;color:var(--green);border-radius:14px;flex:none;justify-content:center;align-items:center;display:flex}.batch-confirm-modal .bc-ic.undone{color:var(--seal);background:#f7e4de}.batch-confirm-modal .bc-line1{color:var(--ink);margin-bottom:5px;font-size:14px;line-height:1.6}.batch-confirm-modal .bc-line2{letter-spacing:.5px;color:var(--green);margin-bottom:8px;font-size:18px;font-weight:700}.batch-confirm-modal .bc-line2.undone{color:var(--seal)}.batch-confirm-modal .bc-note{color:var(--ink2);font-size:12px;line-height:1.8}.batch-confirm-modal .del-confirm{flex:1}.batch-confirm-modal .del-confirm .bc-line2{text-align:center}.batch-confirm-modal .del-confirm .bc-note{text-align:right}.dtp{position:relative}.dtp-trigger{background:var(--card);border:1px solid var(--line2);width:100%;color:var(--ink);cursor:pointer;text-align:left;border-radius:4px;justify-content:space-between;align-items:center;gap:8px;padding:8px 10px;font-size:14px;transition:border-color .15s,box-shadow .15s;display:flex}.dtp-trigger:hover{border-color:var(--ink)}.dtp-trigger:focus{border-color:var(--seal);outline:none;box-shadow:0 0 0 2px #bc3a2826}.dtp-trigger .dtp-val{white-space:nowrap;text-overflow:ellipsis;font-variant-numeric:tabular-nums;flex:1;overflow:hidden}.dtp-trigger .dtp-val.ph{color:var(--ink2);font-size:13px}.dtp-trigger .dtp-ic{color:var(--ink2);flex:none;display:inline-flex}.dtp-trigger.on .dtp-ic,.dtp-trigger:hover .dtp-ic{color:var(--seal)}.dtp.compact .dtp-trigger{border-radius:5px;padding:4px 6px;font-size:12.5px}.dtp-trigger.is-dis{opacity:.55;cursor:not-allowed;background:var(--paper2)}.dtp-trigger.is-dis:hover{border-color:var(--line2)}.dtp-pop{z-index:1500;background:var(--card);border:1px solid var(--line);border-radius:10px;width:300px;padding:12px;animation:.15s fadeIn;position:fixed;box-shadow:4px 4px #26221b24}.dtp-pop.time{width:280px}.dtp-head{justify-content:space-between;align-items:center;margin-bottom:8px;display:flex}.dtp-title{font-family:var(--serif);letter-spacing:1px;color:var(--ink);cursor:pointer;-webkit-user-select:none;user-select:none;font-size:15px;font-weight:700;transition:color .14s}.dtp-title:hover{color:var(--seal)}.dtp-nav{width:26px;height:26px;color:var(--ink2);cursor:pointer;background:0 0;border:1px solid #0000;border-radius:6px;justify-content:center;align-items:center;transition:background .14s,color .14s;display:inline-flex}.dtp-nav:hover{background:var(--paper2);color:var(--ink)}.dtp-week{text-align:center;color:var(--ink2);letter-spacing:1px;border-bottom:1px solid var(--line);grid-template-columns:repeat(7,1fr);gap:2px;margin-bottom:4px;padding-bottom:6px;font-size:11px;display:grid}.dtp-grid{grid-template-columns:repeat(7,1fr);gap:2px;display:grid}.dtp-day{height:34px;color:var(--ink);font-variant-numeric:tabular-nums;cursor:pointer;background:0 0;border:1px solid #0000;border-radius:6px;font-size:13px;transition:background .12s,border-color .12s,color .12s}.dtp-day:hover{border-color:var(--ink);background:var(--paper2)}.dtp-day.today{border-color:var(--seal);color:var(--seal);font-weight:600}.dtp-day.on{background:var(--ink);color:var(--paper);border-color:var(--ink);font-weight:600}.dtp-day.out{color:var(--ink2);opacity:.45}.dtp-day.dis{opacity:.3;pointer-events:none}.dtp-ym{grid-template-columns:repeat(3,1fr);gap:6px;padding-top:4px;display:grid}.dtp-ym-month{border:1px solid var(--line2);background:var(--card);color:var(--ink);letter-spacing:1px;cursor:pointer;text-align:center;font-variant-numeric:tabular-nums;border-radius:6px;padding:11px 4px;font-size:13px;transition:transform .12s,border-color .12s,background .12s,color .12s}.dtp-ym-month:hover{border-color:var(--ink);transform:translateY(-1px)}.dtp-ym-month.on{background:var(--ink);color:var(--paper);border-color:var(--ink);font-weight:600}.dtp-time-panel{border-top:1px dashed var(--line2);margin-top:10px;padding-top:10px}.dtp-pop.time .dtp-time-panel{border-top:none;margin-top:0;padding-top:0}.dtp-sec{margin-bottom:8px}.dtp-sec:last-child{margin-bottom:0}.dtp-sec-key{color:var(--ink2);letter-spacing:1px;margin-bottom:5px;font-size:12px;display:block}.dtp-tgrid{grid-template-columns:repeat(6,1fr);gap:2px;display:grid}.dtp-tcell{height:28px;color:var(--ink);font-variant-numeric:tabular-nums;cursor:pointer;background:0 0;border:1px solid #0000;border-radius:6px;font-size:13px;transition:background .12s,border-color .12s,color .12s}.dtp-tcell:hover{border-color:var(--ink);background:var(--paper2)}.dtp-tcell.on{background:var(--ink);color:var(--paper);border-color:var(--ink);font-weight:600}.dtp-exact{align-items:center;gap:6px;margin-top:6px;display:flex}.dtp-exact-key{color:var(--ink2);letter-spacing:1px;font-size:12px}.dtp-exact-unit{color:var(--ink2);font-size:12px}.dtp-min-input{border:1px solid var(--line2);background:var(--card);width:48px;color:var(--ink);font-variant-numeric:tabular-nums;-moz-appearance:textfield;border-radius:4px;padding:3px 6px;font-size:12.5px}.dtp-min-input:focus{border-color:var(--seal);outline:none}.dtp-min-input::-webkit-outer-spin-button{appearance:none;margin:0}.dtp-min-input::-webkit-inner-spin-button{appearance:none;margin:0}.dtp-foot{align-items:center;margin-top:10px;display:flex}.dtp-act{color:var(--ink2);letter-spacing:1px;cursor:pointer;background:0 0;border:1px solid #0000;border-radius:4px;padding:4px 10px;font-size:11.5px;transition:color .14s}.dtp-act:hover,.dtp-act.clear{color:var(--seal)}.dtp-act.clear:hover{background:var(--red-bg)}@media (width<=640px){.dtp-pop{width:280px;max-width:calc(100vw - 24px)}.dtp-trigger{min-height:40px}}.f-row{margin-bottom:14px}.f-row label{color:var(--ink2);letter-spacing:1px;margin-bottom:5px;font-size:12.5px;display:block}.f-row input,.f-row select,.f-row textarea{width:100%}.f-row input[type=checkbox]{width:auto}.remember-row{margin:8px 0 4px}.remember-row label{color:var(--ink2);cursor:pointer;-webkit-user-select:none;user-select:none;align-items:center;gap:6px;font-size:13px;display:flex}.remember-row input[type=checkbox]{flex:none;width:auto}.f-grid-2{grid-template-columns:1fr 1fr;column-gap:12px;display:grid}.f-grid-3{grid-template-columns:1fr 1fr 1fr;column-gap:12px;display:grid}@media (width<=560px){.f-grid-2,.f-grid-3{grid-template-columns:1fr}}.eq-row .pick{letter-spacing:.5px;justify-content:center;align-items:center;height:38px;padding:0 10px;display:flex}.eq-row input[type=number]{height:38px}.f-tip{color:var(--ink2);margin-top:6px;font-size:12px;line-height:1.7}.pt-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px 10px;margin-bottom:12px;display:grid}.pt-item{border:1px solid var(--line2);background:var(--paper);border-radius:8px;align-items:center;gap:6px;padding:7px 10px;transition:border-color .15s,box-shadow .15s;display:flex}.pt-item:hover{border-color:var(--line);box-shadow:1px 1px #26221b0f}.pt-no{border:1.5px solid var(--seal);width:20px;height:20px;color:var(--seal);font-family:var(--serif);border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;font-size:12px;font-weight:900;display:flex}.pt-time{flex:1;min-width:0}.pt-dash{color:var(--ink2);flex-shrink:0}.pt-del{color:var(--ink2);cursor:pointer;background:0 0;border:none;flex-shrink:0;padding:2px;font-size:15px;line-height:1;transition:color .15s}.pt-del:hover{color:var(--seal)}.pt-add{border:1.5px dashed var(--line2);width:100%;color:var(--ink2);font-family:var(--sans);letter-spacing:1px;cursor:pointer;background:0 0;border-radius:8px;margin-bottom:16px;padding:9px 0;font-size:13px;transition:color .15s,border-color .15s}.pt-add:hover:not(:disabled){border-color:var(--seal);color:var(--seal)}.pt-add:disabled{cursor:not-allowed;opacity:.6}@media (width<=560px){.pt-grid{grid-template-columns:1fr}}.gen-collapse{border:1px solid var(--line2);background:var(--card);border-radius:10px;margin:0 0 16px;position:relative;overflow:hidden;box-shadow:0 1px #26221b0a}.gen-collapse summary{cursor:pointer;-webkit-user-select:none;user-select:none;align-items:center;gap:9px;padding:12px 14px;list-style:none;display:flex}.gen-collapse summary::-webkit-details-marker{display:none}.gen-collapse .gen-mark{background:var(--seal);border-radius:2px;flex-shrink:0;width:6px;height:16px;box-shadow:0 0 0 2px #bc3a281f}.gen-collapse .gen-title{font-family:var(--serif);letter-spacing:2px;color:var(--ink);font-size:14px;font-weight:700;transition:color .15s}.gen-collapse summary:hover .gen-title{color:var(--seal)}.gen-collapse .gen-tip{color:var(--ink2);letter-spacing:.5px;white-space:nowrap;margin-left:auto;font-size:11.5px}.gen-collapse .gen-caret{border-top:2px solid var(--seal);border-right:2px solid var(--seal);flex-shrink:0;width:7px;height:7px;margin-left:10px;transition:transform .25s;transform:rotate(45deg)}.gen-collapse[open] .gen-caret{transform:rotate(135deg)}.gen-collapse[open] summary{border-bottom:1px solid var(--line2);background:linear-gradient(#bc3a280a,#0000)}.gen-body{background:var(--paper);padding:14px;animation:.22s ccIn}.gen-rhythm{border:1px solid var(--line2);background:var(--card);border-radius:8px;grid-template-columns:repeat(3,1fr);margin-bottom:12px;display:grid;overflow:hidden}.gen-rhythm-item{align-items:center;gap:8px;padding:9px 12px;display:flex}.gen-rhythm-item+.gen-rhythm-item{border-left:1px dashed var(--line2)}.gr-label{color:var(--ink2);letter-spacing:1px;flex-shrink:0;font-size:12px}.gr-input{flex:1;justify-content:flex-end;align-items:center;gap:3px;min-width:0;display:flex}.gr-input input{width:100%;min-width:0;max-width:64px;font-family:var(--serif);color:var(--ink);text-align:right;background:0 0;border:none;outline:none;padding:0;font-size:16px;font-weight:700;transition:color .15s}.gr-input input:focus{color:var(--seal)}.gr-input i{color:var(--ink2);flex-shrink:0;font-size:11.5px;font-style:normal}.gen-sessions{flex-direction:column;gap:8px;margin-bottom:14px;display:flex}.gen-session{border:1px solid var(--line2);background:var(--card);border-radius:8px;align-items:center;gap:10px;padding:9px 12px;transition:border-color .15s,box-shadow .15s;display:flex}.gen-session:hover{border-color:var(--line);box-shadow:1px 1px #26221b0f}.gen-seal{border:1.5px solid var(--seal);width:28px;height:28px;color:var(--seal);font-family:var(--serif);border-radius:5px;flex-shrink:0;justify-content:center;align-items:center;font-size:13px;font-weight:900;display:flex;box-shadow:1px 1px #bc3a2826}.seal-morning{background:var(--seal);color:#fff;transform:rotate(-3deg)}.seal-afternoon{transform:rotate(2deg)}.seal-evening{border-style:dashed;transform:rotate(-1deg)}.gen-tag{color:var(--ink2);letter-spacing:1px;flex-shrink:0;font-size:11.5px}.gen-start{flex:none;width:96px}.gen-count-wrap{border:1px solid var(--line2);background:var(--card);border-radius:6px;align-items:center;gap:5px;margin-left:auto;padding:5px 10px;transition:border-color .15s;display:flex}.gen-count-wrap:focus-within{border-color:var(--seal)}.gen-count{width:34px;font-family:var(--serif);color:var(--ink);text-align:center;background:0 0;border:none;outline:none;padding:0;font-size:14px;font-weight:700}.gen-unit{color:var(--ink2);flex-shrink:0;font-size:11.5px}.gen-actions{flex-wrap:wrap;justify-content:flex-end;align-items:center;gap:10px;display:flex}@media (width<=560px){.gen-collapse .gen-tip{display:none}.gen-rhythm{grid-template-columns:1fr}.gen-rhythm-item+.gen-rhythm-item{border-left:none;border-top:1px dashed var(--line2)}.gen-session{flex-wrap:wrap;gap:8px}.gen-actions .btn{flex:1;justify-content:center}}.captcha-row{align-items:center;gap:10px;display:flex}.captcha-row input{flex:1;min-width:0;height:38px}.captcha-img{border:1px solid var(--line2);cursor:pointer;background:var(--paper2);border-radius:4px;flex-shrink:0;width:120px;height:38px}@keyframes fadeIn{0%{opacity:0}}@keyframes pop{0%{opacity:0;transform:scale(.94)}}.toast-wrap{z-index:2000;flex-direction:column;gap:10px;display:flex;position:fixed;top:20px;right:20px}.toast{background:var(--ink);color:#f6f1e7;letter-spacing:.5px;border-radius:5px;align-items:center;gap:9px;max-width:340px;padding:11px 18px;font-size:13.5px;animation:.3s cubic-bezier(.2,1.4,.4,1) toastIn;display:flex;box-shadow:4px 4px #26221b33}.toast:before{content:"";background:#8bc4a5;border-radius:50%;flex-shrink:0;width:8px;height:8px}.toast.warn:before{background:#e8b04b}.toast.err:before{background:#e0705b}@keyframes toastIn{0%{opacity:0;transform:translate(40px)}}.toast.out{opacity:0;transition:all .3s;transform:translate(30px)}.seal{border:3px solid var(--seal);color:var(--seal);font-family:var(--serif);-webkit-user-select:none;user-select:none;background:#bc3a280a;border-radius:50%;justify-content:center;align-items:center;font-weight:900;display:inline-flex;transform:rotate(-8deg);box-shadow:inset 0 0 0 1.5px #bc3a2859}.seal.stamp{animation:.5s cubic-bezier(.25,1.5,.35,1) both stamp}.seal.blue{border-color:var(--blue);color:var(--blue);background:#3a6b9e0a;box-shadow:inset 0 0 0 1.5px #3a6b9e59}@keyframes stamp{0%{opacity:0;transform:scale(2.6)rotate(-24deg)}55%{opacity:1;transform:scale(.9)rotate(-6deg)}75%{transform:scale(1.06)rotate(-9deg)}to{opacity:1;transform:scale(1)rotate(-8deg)}}.seal-lg{letter-spacing:3px;border-width:4px;flex-direction:column;width:150px;height:150px;font-size:30px;line-height:1.25}.seal-lg small{letter-spacing:2px;margin-top:2px;font-size:12px;font-weight:600}.seal-sm{border-width:2px;flex-shrink:0;width:24px;height:24px;font-size:12px}.mg{grid-template-columns:240px 220px 1fr;align-items:start;gap:22px;display:grid}.mg-col{min-width:0}.mg-class .cls-grid{grid-template-columns:1fr}.course-item{border:1px solid var(--line);background:var(--card);cursor:pointer;border-radius:6px;margin-bottom:10px;padding:13px 15px;transition:all .15s;position:relative}.course-item:hover{border-color:var(--ink2)}.course-item.on{border-color:var(--seal);box-shadow:2px 2px #bc3a282e}.course-item b{font-family:var(--serif);letter-spacing:1px;align-items:center;gap:8px;font-size:15px;display:flex}.course-item .meta{color:var(--ink2);justify-content:space-between;align-items:center;gap:8px;margin-top:3px;font-size:12px;display:flex}.exam-tag{font-family:var(--sans);letter-spacing:.5px;background:var(--paper2);color:var(--ink2);border:1px solid var(--line2);border-radius:3px;padding:1px 7px;font-size:10px;font-weight:600;line-height:1.5}.course-item .ops{opacity:0;transition:all .15s;display:flex}.course-item:hover .ops{opacity:1}.cls-grid{grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:12px;margin-bottom:20px;display:grid}.cls-card{border:1px solid var(--line);background:var(--card);cursor:pointer;box-shadow:var(--shadow);border-radius:6px;padding:10px 14px;transition:all .15s;position:relative}.cls-card:hover{transform:translate(-1px,-1px)}.cls-card.on{border-color:var(--seal);outline:2px solid #bc3a2840}.cls-card .ops{opacity:0;transition:all .15s;display:flex}.cls-card:hover .ops{opacity:1}.cls-card b{font-family:var(--serif);font-size:14px;line-height:1.3;display:block}.cls-foot{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:8px;margin-top:8px;display:flex}.dashed{border:1.5px dashed var(--line2);box-shadow:none;color:var(--ink2);letter-spacing:1px;background:0 0;justify-content:center;align-items:center;min-height:76px;display:flex}.dashed:hover{border-color:var(--seal);color:var(--seal);transform:none}.step{margin-bottom:26px}.step-t{align-items:center;gap:10px;margin-bottom:14px;display:flex}.step-n{background:var(--ink);width:26px;height:26px;color:var(--paper);font-family:var(--serif);border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;font-size:14px;font-weight:700;display:flex}.step-t b{font-family:var(--serif);letter-spacing:2px;font-size:16px}.dur-custom{align-items:center;gap:8px;display:flex}.dur-custom input{text-align:center;width:70px}.topic-preview{border:1px dashed var(--line2);color:var(--ink);background:var(--paper2);letter-spacing:1px;word-break:break-all;border-radius:6px;margin-top:8px;padding:8px 12px;font-size:13px}.topic-2col{grid-template-columns:1fr 1fr;gap:10px;display:grid}@media (width<=768px){.topic-2col{grid-template-columns:1fr}}.create-card{max-width:none;padding:26px 30px}.create-grid{grid-template-columns:1.1fr 1fr;align-items:start;gap:26px 36px;display:grid}.create-col{min-width:0}.create-col .step{margin-bottom:26px}.create-col .step:last-child{margin-bottom:0}.course-pick{grid-template-columns:repeat(auto-fill,minmax(148px,1fr));gap:10px;display:grid}.pick{border:1px solid var(--line2);background:var(--card);letter-spacing:1px;text-align:center;cursor:pointer;-webkit-user-select:none;user-select:none;border-radius:6px;padding:11px 14px;font-size:14px;transition:all .12s}.pick:hover{border-color:var(--ink);transform:translateY(-1px)}.pick.on{background:var(--ink);color:var(--paper);border-color:var(--ink);font-weight:600}.pick.on.red{background:var(--seal);border-color:var(--seal)}.course-pick.count-row{flex-wrap:nowrap;align-items:center;gap:8px;display:flex}.course-pick.count-row .pick{white-space:nowrap;letter-spacing:.5px;flex:none;width:auto;padding:8px 18px}.course-pick.count-row .dur-custom{flex-shrink:0}.course-pick.mode-row{flex-wrap:nowrap;align-items:center;gap:8px;display:flex}.course-pick.mode-row .pick{white-space:nowrap;letter-spacing:.5px;flex:none;width:auto;padding:8px 16px;line-height:1.6}.course-pick.mode-row .pick-sub{opacity:.6;letter-spacing:0;margin-left:2px;font-size:11px}.course-pick.mode-row .pick.on .pick-sub{opacity:.75}.course-pick.mode-row .row-sep{background:var(--line2);flex-shrink:0;width:1px;height:22px;margin:0 4px}.course-pick.status-grid{grid-template-columns:repeat(4,1fr);gap:8px}.course-pick.status-grid .pick{letter-spacing:0;justify-content:center;align-items:center;gap:2px;padding:8px;font-size:13px;display:flex}.course-pick.status-grid .pick.hot{border-color:var(--seal);color:var(--seal)}.course-pick.status-grid .pick .st-name{flex-shrink:0}.course-pick.status-grid .pick .st-score{opacity:.55;flex-shrink:0;font-size:11px}.course-pick.status-grid .pick .st-score.neg{color:var(--seal);opacity:.85;font-weight:600}.course-pick.status-grid .pick .st-score.pos{color:var(--green);opacity:.85}.course-pick.status-grid .pick.on .st-score{color:var(--paper);opacity:.85}.course-pick.status-grid .pick.on.red .st-score,.course-pick.status-grid .pick.on.hot{color:var(--paper)}.param-hint{border:1.5px dashed var(--line2);background:var(--paper2);min-height:280px;color:var(--ink2);text-align:center;border-radius:8px;flex-direction:column;justify-content:center;align-items:center;gap:12px;padding:16px;display:flex}.param-hint .ph-ic{background:var(--card);border:1px solid var(--line);width:42px;height:42px;color:var(--seal);border-radius:50%;justify-content:center;align-items:center;display:flex}.param-hint p{letter-spacing:1px;margin:0;font-size:12.5px;line-height:1.8}.param-panel{border:1px solid var(--line);background:var(--paper2);border-radius:8px;flex-direction:column;gap:24px;padding:22px 20px;animation:.28s panelIn;display:flex}@keyframes panelIn{0%{opacity:0;transform:translateY(6px)}}.param-panel .opt-grid{margin-top:0}.opt-grid{gap:8px;display:grid}.opt-grid.c6{grid-template-columns:repeat(6,1fr)}.opt-grid.c4{grid-template-columns:repeat(4,1fr)}.opt-grid.c3{grid-template-columns:repeat(3,1fr)}.opt-grid.c5{grid-template-columns:repeat(5,1fr)}.opt-grid.c2{grid-template-columns:repeat(2,1fr)}.opt{border:1px solid var(--line2);background:var(--card);text-align:center;letter-spacing:1px;cursor:pointer;-webkit-user-select:none;user-select:none;border-radius:6px;padding:12px 3px;font-size:13px;transition:transform .14s,border-color .14s,background .14s,color .14s}.opt:hover{border-color:var(--ink);transform:translateY(-1px)}.opt.on{background:var(--ink);color:var(--paper);border-color:var(--ink);font-weight:600}.as-row{flex-wrap:wrap;align-items:center;gap:10px 8px;display:flex}.as-label{color:var(--ink2);letter-spacing:.5px;white-space:nowrap;flex:none;font-size:12px}.as-opt{flex:none;grid-template-columns:repeat(2,48px);gap:6px;display:grid}.as-opt .opt{justify-content:center;align-items:center;height:38px;padding:0;font-size:13px;display:flex}.as-time{flex:0 104px;min-width:96px}.as-time .dtp-trigger{height:38px;min-height:38px;padding:0 8px;font-size:13px}.as-actions{flex:none;gap:8px;margin-left:auto;display:flex}.as-row .as-btn{white-space:nowrap;flex:none;height:38px;min-height:38px;padding:0 10px;font-size:12.5px}@media (width<=1540px){.as-label{display:none}}@media (width<=640px){.as-actions{flex:100%;margin-left:0}.as-row .as-btn{flex:1 1 0;justify-content:center}}.opt-custom{border-top:1px dashed var(--line2);color:var(--ink2);letter-spacing:1px;justify-content:center;align-items:center;gap:8px;margin-top:14px;padding-top:12px;font-size:12px;display:flex}.opt-custom input{text-align:center;border:1px solid var(--line2);background:var(--card);width:64px;color:var(--ink);letter-spacing:0;border-radius:4px;padding:6px 4px;font-size:13px}.opt-custom input:focus{border-color:var(--ink);outline:none}.opt-custom input[type=number]{-moz-appearance:textfield}.param-row{flex-wrap:wrap;align-items:center;gap:10px;margin-top:10px;display:flex}.param-row .opt-grid{flex-shrink:0;margin-top:0}.param-row .opt{white-space:nowrap;padding:8px 6px;font-size:12px}.param-row .opt-custom{border-top:none;flex-shrink:0;gap:4px;margin-top:0;padding-top:0}.param-row .opt-custom input{width:52px;padding:4px;font-size:12px}.opt-custom input::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.opt-custom input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}.create-bar{border:1px solid var(--line);background:var(--paper2);border-radius:8px;justify-content:space-between;align-items:center;gap:16px;margin-top:24px;padding:13px 18px;display:flex}.create-sum{flex-wrap:wrap;align-items:center;gap:9px;min-width:0;display:flex}.create-sum .sum-key{font-family:var(--serif);letter-spacing:1px;font-size:15px;font-weight:700}.create-sum .sum-div{color:var(--ink2);align-items:center;font-style:normal;font-weight:900;display:flex}.create-sum .sum-title{color:var(--ink2);white-space:nowrap;text-overflow:ellipsis;max-width:320px;font-size:13px;overflow:hidden}.create-sum .sum-tag{letter-spacing:1px;color:var(--seal);font-variant-numeric:tabular-nums;background:#bc3a280f;border:1px solid #bc3a2859;border-radius:99px;align-items:center;gap:5px;padding:4px 11px;font-size:12px;display:inline-flex}.create-sum .sum-tag .ic{flex-shrink:0}.create-sum .sum-dim{color:var(--ink2);letter-spacing:1px;font-size:12.5px}.create-bar .btn{letter-spacing:3px;flex-shrink:0;padding:12px 30px;font-size:15px}.create-acts{flex-shrink:0;align-items:center;gap:10px;display:flex}.course-pick.locked{opacity:.6}.course-pick.locked .pick{cursor:not-allowed}@media (width<=1120px){.opt-grid.c6,.opt-grid.c5{grid-template-columns:repeat(3,1fr)}.opt-grid.c4{grid-template-columns:repeat(2,1fr)}}@media (width<=820px){.create-grid{grid-template-columns:1fr}.create-bar{flex-direction:column;align-items:stretch}.create-bar .btn{width:100%}.create-acts{flex-direction:column;width:100%}.param-row{flex-direction:column;align-items:stretch;gap:8px}.param-row .opt-grid{flex-shrink:1}.param-hint{min-height:150px}}.live-head{flex-wrap:wrap;align-items:center;gap:14px;margin-bottom:22px;display:flex}.live-head .tt{font-family:var(--serif);letter-spacing:1px;font-size:23px;font-weight:900}.live-head .sub{color:var(--ink2);font-size:12.5px}.live-body{align-items:start;gap:20px;display:grid}.live-top{grid-template-columns:250px calc(50% - 274px) calc(50% - 8px);align-items:stretch;gap:16px;display:grid}.live-top .card{flex-direction:column;justify-content:center;display:flex}.live-side{flex-direction:column;gap:16px;display:flex}.live-side .card{flex:1}.receipt-grid{grid-template-columns:1.15fr 1fr;gap:8px;display:grid}.receipt-grid .btn{justify-self:stretch}.timer-card{text-align:center;padding:26px 20px}.timer-wrap{width:190px;margin:0 auto;position:relative}.timer-wrap svg{width:190px;height:190px;display:block}.ring-bg{fill:none;stroke:var(--paper2);stroke-width:7px}.ring-fg{fill:none;stroke:var(--green);stroke-width:7px;stroke-linecap:round;transition:stroke-dashoffset .5s linear,stroke .3s}.ring-fg.warn{stroke:var(--seal)}.t-num{flex-direction:column;justify-content:center;align-items:center;display:flex;position:absolute;inset:0}.t-num b{font-family:var(--serif);font-variant-numeric:tabular-nums;letter-spacing:2px;font-size:40px;font-weight:900}.t-num.warn b{color:var(--seal)}.t-num span{color:var(--ink2);letter-spacing:3px;margin-top:2px;font-size:11px}.timer-card .t-label{color:var(--ink2);letter-spacing:1px;margin-top:12px;font-size:12px}.qr-card{text-align:center}.qr-box{border:1px solid var(--line);background:#fff;border-radius:6px;width:min(250px,100%);max-width:300px;margin:0 auto;padding:14px}.qr-box svg{width:100%;height:auto;display:block}.code-line{color:var(--ink2);white-space:nowrap;justify-content:center;align-items:center;gap:8px;margin-top:14px;font-size:13px;display:flex}.code-line b{font-family:var(--serif);letter-spacing:7px;color:var(--seal);font-size:26px;font-weight:900}.qr-hint{color:var(--ink2);margin-top:8px;font-size:11.5px;line-height:1.7}.qr-hint.warn{color:var(--seal);font-weight:600}.tools{flex-wrap:wrap;align-items:flex-end;gap:12px;margin-bottom:16px;display:flex}.tool{flex:1;min-width:190px}.tool label{color:var(--ink2);letter-spacing:1.5px;margin-bottom:5px;font-size:11.5px;display:block}.tool .in-row{gap:8px;display:flex}.tool input{flex:1;width:100%}.q-cand{background:var(--card);border:1px solid var(--line2);z-index:50;border-radius:5px;position:absolute;top:calc(100% + 4px);left:0;right:0;overflow:hidden;box-shadow:4px 4px #26221b1f}.q-cand div{cursor:pointer;justify-content:space-between;padding:8px 13px;font-size:13.5px;display:flex}.q-cand div:hover{background:var(--paper2)}.roster{grid-template-columns:1fr 1fr;gap:16px;display:grid}.rcol{background:var(--card);border:1px solid var(--line);box-shadow:var(--shadow);border-radius:6px;flex-direction:column;max-height:640px;display:flex;overflow:hidden}.rcol-h{border-bottom:2px solid var(--ink);justify-content:space-between;align-items:center;padding:12px 16px;display:flex}.rcol-h b{font-family:var(--serif);letter-spacing:2px;align-items:center;gap:8px;font-size:15px;display:flex}.rcol-h .cnt{font-family:var(--serif);font-size:18px;font-weight:900}.rcol.in .cnt{color:var(--green)}.rcol.out .cnt{color:var(--seal)}.rcol ul{flex:1;list-style:none;overflow-y:auto}.rcol li{border-bottom:1px dashed var(--line);align-items:center;gap:8px;padding:8px 14px;animation:.3s slideIn;display:flex}@keyframes slideIn{0%{opacity:0;transform:translate(-10px)}}.rcol li .no{min-width:78px;color:var(--ink2);font-variant-numeric:tabular-nums;white-space:nowrap;flex:none;font-size:11.5px}.rcol li .nm{white-space:nowrap;text-overflow:ellipsis;flex:1;min-width:0;font-weight:500;overflow:hidden}.rcol li .status-tag{text-align:center;min-width:34px}.rcol li .tm{color:var(--green);font-variant-numeric:tabular-nums;font-size:11px}.rcol li .badge{letter-spacing:0;padding:2px 8px;font-size:11px}.rcol.out li .nm{color:var(--ink2)}.m-src{color:var(--ink2);border:1px solid var(--line2);border-radius:3px;padding:0 4px;font-size:10.5px}.status-tag{color:var(--ink2);border:1px solid var(--line2);white-space:nowrap;border-radius:3px;padding:0 4px;font-size:10.5px}.end-stat{justify-content:space-around;padding:8px 0 2px;display:flex}.end-stat div{text-align:center}.end-stat .v{font-family:var(--serif);font-size:30px;font-weight:900}.end-stat .k{color:var(--ink2);letter-spacing:2px;font-size:11px}.rate-bar{background:var(--paper2);border-radius:99px;height:5px;margin-top:14px;overflow:hidden}.rate-bar i{background:var(--green);border-radius:99px;height:100%;transition:width .4s;display:block}.rate-bar.low i{background:var(--seal)}body.stu-mode{background:var(--paper2)}.stu-wrap{flex-direction:column;width:100%;max-width:440px;min-height:100vh;margin:0 auto;padding:24px 18px 40px;display:flex;overflow-x:hidden}.stu-head{text-align:center;margin-bottom:18px}.stu-head .logo-seal{width:52px;height:52px;margin:0 auto 12px;font-size:17px}.stu-head h1{font-family:var(--serif);letter-spacing:3px;font-size:21px}.stu-head .sub{color:var(--ink2);margin-top:4px;font-size:12.5px}.stu-card{background:var(--card);border:1px solid var(--line);box-shadow:var(--shadow);border-radius:10px;padding:22px}.stu-meta{flex-wrap:wrap;gap:8px;margin-bottom:14px;display:flex}.stu-time{background:var(--paper);border:1px dashed var(--line2);border-radius:6px;justify-content:space-between;align-items:center;margin-bottom:16px;padding:10px 14px;display:flex}.stu-time b{font-family:var(--serif);font-variant-numeric:tabular-nums;font-size:22px}.stu-time b.warn{color:var(--seal)}.stu-search{margin-bottom:14px;position:relative}.stu-search input{width:100%;padding-left:36px}.stu-search .ic{color:var(--ink2);position:absolute;top:10px;left:11px}.stu-grid{grid-template-columns:repeat(auto-fill,minmax(100px,1fr));gap:9px;max-height:46vh;padding:2px;display:grid;overflow-y:auto}.stu-cell{border:1px solid var(--line2);background:var(--card);text-align:center;border-radius:6px;padding:9px 6px;transition:all .12s}.stu-cell b{font-size:14.5px;display:block}.stu-cell span{color:var(--ink2);font-variant-numeric:tabular-nums;font-size:10.5px}.stu-cell:hover{border-color:var(--seal);transform:translateY(-1px);box-shadow:2px 2px #bc3a2826}.stu-cell.done{opacity:.45;pointer-events:none;background:var(--green-bg);border-color:var(--green)}.stu-cell.done b{color:var(--green)}.stu-cell .stu-gender{color:#fff;background:var(--seal);vertical-align:1px;border-radius:8px;margin-left:4px;padding:0 5px;font-size:9.5px;font-weight:600;line-height:14px;display:inline-block}.stu-confirm{z-index:500;background:var(--ink);color:var(--paper);align-items:center;gap:14px;padding:16px 20px;animation:.25s slideUp;display:flex;position:fixed;bottom:0;left:0;right:0;box-shadow:0 -4px 20px #0003}@keyframes slideUp{0%{transform:translateY(100%)}}.stu-confirm .who{flex:1}.stu-confirm .who b{font-family:var(--serif);font-size:17px;display:block}.stu-confirm .who span{color:#b7ae99;font-variant-numeric:tabular-nums;font-size:11.5px}.stu-done{text-align:center;padding:16px 0 8px}.stu-done .name{font-family:var(--serif);letter-spacing:2px;margin:18px 0 2px;font-size:24px;font-weight:900}.stu-done .tm{color:var(--ink2);margin-bottom:20px;font-size:13px}.rcpt{background:var(--paper);border:1.5px dashed var(--line2);border-radius:8px;margin-top:6px;padding:14px}.rcpt .k{color:var(--ink2);letter-spacing:2px;font-size:11.5px}.rcpt .v{font-family:var(--serif);letter-spacing:10px;color:var(--ink);font-variant-numeric:tabular-nums;margin:4px 0 8px;font-size:38px;font-weight:900}.rcpt p{color:var(--ink2);font-size:11.5px;line-height:1.7}.center{text-align:center}.w-full{width:100%}.btn.w-full{justify-content:center}.btn-right{width:fit-content;margin-left:auto;display:flex}.max-w-600{max-width:600px}.max-w-560{max-width:560px}.site-foot{border-top:1px solid var(--line2);text-align:center;color:var(--ink2);letter-spacing:1px;margin-top:28px;padding:24px 40px;font-size:12px;line-height:1.7}.stu-mode .site-foot{margin-top:auto;padding:24px 0 4px}.mb-22{margin-bottom:22px}.mb-20{margin-bottom:20px}.mb-16{margin-bottom:16px}.mb-14{margin-bottom:14px}.mb-12{margin-bottom:12px}.mt-20{margin-top:20px}.mt-12{margin-top:12px}.mt-10{margin-top:10px}.mt-6{margin-top:6px}.pos-rel{position:relative}.flex-1{flex:1}.gap-8{gap:8px}.gap-12{gap:12px}.gap-10{gap:10px}.gap-4{gap:4px}.p-30-10{padding:30px 10px}.p-60-20{padding:60px 20px}.filt{flex-wrap:wrap;align-items:flex-end;gap:12px;margin-bottom:18px;display:flex}.filt .tool{flex:none;min-width:170px}.rate-cell{align-items:center;gap:8px;display:flex}.rate-cell .bar{background:var(--paper2);border-radius:99px;flex-shrink:0;width:80px;height:6px;overflow:hidden}.rate-cell .bar i{background:var(--green);height:100%;display:block}.rate-cell .bar.low i{background:var(--seal)}.ana-title{font-family:var(--serif);letter-spacing:2px;align-items:baseline;gap:10px;margin-bottom:14px;font-size:16px;font-weight:700;display:flex}.ana-title .ana-hint{letter-spacing:0;color:var(--ink2);font-family:inherit;font-size:12px;font-weight:400}.ana-trend{width:100%;font-family:var(--sans);display:block;overflow:visible}.ana-grid{stroke:var(--line);stroke-width:1px;stroke-dasharray:3 3}.ana-base,.ana-tick{stroke:var(--line);stroke-width:1px}.ana-axis{fill:var(--ink2);font-variant-numeric:tabular-nums;letter-spacing:.3px;font-size:10.5px}.ana-axis-x{fill:var(--ink2);font-variant-numeric:tabular-nums;letter-spacing:.2px;font-size:10.5px}.ana-area{fill:var(--green);opacity:.1}.ana-line{fill:none;stroke:var(--green);stroke-width:2px;stroke-linejoin:round;stroke-linecap:round}.ana-dot{fill:var(--card);stroke:var(--green);stroke-width:2px;transition:r .15s}.ana-dot:hover{r:5.5}.audit-head{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;margin-bottom:12px;display:flex}.audit-head b{font-family:var(--serif);letter-spacing:1px;font-size:15px}.audit-meta{color:var(--ink2);margin-left:10px;font-size:12.5px}.audit-sum{color:var(--ink2);gap:16px;font-size:12.5px;display:flex}.audit-sum b{margin-left:2px}.audit-sum b.green{color:var(--green)}.audit-sum b.red{color:var(--seal)}.audit-dates{flex-wrap:wrap;gap:8px;display:flex}.audit-chip{border:1px solid var(--line2);background:var(--paper2);border-radius:6px;align-items:center;gap:8px;padding:5px 10px;font-size:12.5px;display:flex}.audit-chip .audit-date{color:var(--ink);font-variant-numeric:tabular-nums;letter-spacing:1px}.audit-chip .audit-status{letter-spacing:1px;font-size:11px}.audit-chip.checked{border-color:var(--green);background:var(--green-bg)}.audit-chip.checked .audit-status{color:var(--green)}.audit-chip.missed{border-color:var(--seal)}.audit-chip.missed .audit-status{color:var(--seal)}.audit-chip.pending .audit-status{color:var(--ink2)}.audit-btn{padding:2px 8px;font-size:11px}.welcome{text-align:center;max-width:560px;margin:8vh auto}.welcome .logo-seal{border-radius:10px;width:84px;height:84px;margin:0 auto 22px;font-size:26px;transform:rotate(-4deg)}.welcome h1{font-family:var(--serif);letter-spacing:4px;margin-bottom:10px;font-size:32px}.welcome p{color:var(--ink2);margin-bottom:30px;line-height:1.9}.welcome .ops{flex-wrap:wrap;justify-content:center;gap:14px;display:flex}.welcome .feat{flex-wrap:wrap;justify-content:center;gap:8px;margin-top:34px;display:flex}.welcome .feat span{color:var(--ink2);border:1px solid var(--line2);letter-spacing:1px;border-radius:99px;padding:4px 14px;font-size:12px}.settings-grid{grid-template-columns:1fr 1fr;align-items:start;gap:20px;display:grid}.settings-col{flex-direction:column;gap:20px;min-width:0;display:flex}.settings-grid input{text-align:center}.about-val{background:var(--paper2);border:1px solid var(--line2);width:100%;height:38px;color:var(--ink);text-overflow:ellipsis;white-space:nowrap;border-radius:4px;justify-content:center;align-items:center;padding:0 10px;font-size:13px;display:flex;overflow:hidden}.settings-defaults-row{align-items:flex-end;gap:12px;display:flex}.settings-defaults-row .f-row{flex:1 1 0;min-width:0;margin-bottom:0}.settings-defaults-row input,.settings-defaults-row .btn{height:38px}.settings-defaults-row .btn{flex:none;justify-content:center;margin-left:auto}@media (width<=560px){.settings-defaults-row{flex-wrap:wrap}.settings-defaults-row .f-row{flex:100%}}.about-changelog summary{cursor:pointer;color:var(--blue);font-size:13px}.about-changelog .ac-body{white-space:normal;color:var(--ink2);background:#00000006;border-radius:4px;max-height:280px;margin-top:8px;padding:10px 12px;font-size:12.5px;line-height:1.8;overflow:auto}.about-changelog h3{font-family:var(--serif);letter-spacing:1px;color:var(--ink);border-bottom:1px dashed var(--line2);margin:12px 0 6px;padding-bottom:5px;font-size:14px;font-weight:800}.about-changelog h3:first-child{margin-top:0}.about-changelog h4{color:var(--seal);letter-spacing:2px;align-items:center;gap:7px;margin:10px 0 5px;font-size:12px;font-weight:700;display:flex}.about-changelog h4:before{content:"";background:var(--seal);flex-shrink:0;width:7px;height:7px;transform:rotate(45deg)}.about-changelog ul{margin:0;padding:0;list-style:none}.about-changelog li{color:var(--ink2);margin:3px 0;padding-left:14px;position:relative}.about-changelog li:before{content:"";background:var(--ink2);border-radius:1px;width:5px;height:5px;position:absolute;top:8px;left:2px;transform:rotate(45deg)}.about-changelog p{color:var(--ink2);margin:4px 0}.about-changelog .ac-body code{background:var(--paper2);color:var(--ink);border-radius:4px;padding:1px 5px;font-family:ui-monospace,SFMono-Regular,Consolas,Courier New,monospace;font-size:12px}.collapse-card{padding:0}.collapse-card>summary{cursor:pointer;-webkit-user-select:none;user-select:none;align-items:center;gap:8px;padding:20px;list-style:none;display:flex}.collapse-card>summary::-webkit-details-marker{display:none}.collapse-card>summary:hover .cc-title{color:var(--seal)}.collapse-card .cc-title{font-family:var(--serif);letter-spacing:2px;font-size:16px;font-weight:700;transition:color .15s}.collapse-card .cc-caret{border-top:2px solid var(--seal);border-right:2px solid var(--seal);flex-shrink:0;width:8px;height:8px;margin-left:auto;transition:transform .25s;transform:rotate(45deg)}.collapse-card[open] .cc-caret{transform:rotate(135deg)}.collapse-card[open]>summary{border-bottom:1px dashed var(--line2);padding-bottom:14px}.collapse-card .cc-body{padding:0 20px 20px;animation:.22s ccIn}@keyframes ccIn{0%{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:none}}.cc-body input:disabled{opacity:.55;cursor:not-allowed}.oka-mono{color:var(--ink);font-family:ui-monospace,SFMono-Regular,Consolas,Courier New,monospace;font-size:13px}.oka-warn{color:var(--seal);margin:0 0 10px;font-weight:600}.oka-key{word-break:break-all;background:var(--paper2);border:1px dashed var(--line2);color:var(--ink);border-radius:6px;padding:10px 12px;font-family:ui-monospace,SFMono-Regular,Consolas,Courier New,monospace;font-size:12.5px;line-height:1.6}.oka-footer{margin-top:14px}.oka-inline summary{-webkit-user-select:none;user-select:none;align-items:center;gap:8px;min-height:31px;padding:0;list-style:none;display:flex}.oka-inline summary::-webkit-details-marker{display:none}.oka-inline summary:before{content:"";border-left:5px solid var(--blue);border-top:4px solid #0000;border-bottom:4px solid #0000;flex:none;width:0;height:0;transition:transform .2s,border-color .15s}.oka-inline[open] summary:before{transform:rotate(90deg)}.oka-inline summary:hover{color:var(--seal)}.oka-inline summary:hover:before{border-left-color:var(--seal)}.oka-inline .oka-footer-acts{margin-left:auto}.oka-footer-acts{flex-shrink:0;align-items:center;gap:8px;display:flex}.oka-footer-right{justify-content:flex-end;margin-top:14px}.preset-tag{border:1px solid var(--line);background:var(--card);box-shadow:var(--shadow);border-radius:6px;align-items:center;gap:6px;min-width:0;padding:4px 6px 4px 10px;transition:border-color .15s,box-shadow .15s,transform .15s;display:flex}.preset-tag:hover{border-color:var(--seal);transform:translateY(-1px);box-shadow:2px 2px #bc3a2826}.preset-tag input{box-shadow:none;text-align:left;background:0 0;border:none;border-radius:0;padding:6px 2px}.preset-tag .pt-name{min-width:0;color:var(--ink);text-overflow:ellipsis;white-space:nowrap;flex:1;font-size:13px;overflow:hidden}.preset-tag .pt-name::placeholder{color:var(--ink2)}.preset-tag .pt-score{text-align:center;background:var(--green);color:#fff6ec;font-variant-numeric:tabular-nums;appearance:textfield;border:none;border-radius:5px;flex:none;width:52px;height:26px;padding:0;font-size:12.5px;font-weight:600}.preset-tag .pt-score::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.preset-tag .pt-score::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}.preset-tag .pt-score::placeholder{color:#fff6ecbf}.preset-tag .pt-score.neg{background:var(--seal)}.preset-tag .pt-score:focus{outline-offset:1px;outline:2px solid #bc3a2859}.demo-bar{color:#7a5e1e;background:#fbf3e4;border:1px solid #e3c98f;border-left:4px solid #c9932b;border-radius:6px;flex-wrap:wrap;align-items:center;gap:12px;margin-bottom:22px;padding:12px 16px;font-size:13px;display:flex}.pager{flex-wrap:wrap;justify-content:center;align-items:center;gap:6px;padding:14px 0 4px;display:flex}.pager .pg{border:1px solid var(--line2);background:var(--card);min-width:30px;height:30px;color:var(--ink);cursor:pointer;border-radius:4px;justify-content:center;align-items:center;padding:0 9px;font-family:inherit;font-size:13px;transition:all .12s;display:inline-flex}.pager .pg:hover{border-color:var(--ink)}.pager .pg.on{background:var(--ink);color:var(--paper);border-color:var(--ink)}.pager .pg:disabled{opacity:.4;pointer-events:none}.pager .pg-dots{color:var(--ink2);padding:0 2px}.pager .pg-info{color:var(--ink2);letter-spacing:1px;margin-left:8px;font-size:12px}.pager .pg-size{color:var(--ink2);align-items:center;gap:4px;margin-right:8px;font-size:12px;display:inline-flex}.pager .pg-size-label{letter-spacing:1px}.pager .pg-select{border:1px solid var(--line2);background:var(--card);height:30px;color:var(--ink);cursor:pointer;appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns=%27http://www.w3.org/2000/svg%27 width=%2710%27 height=%276%27%3E%3Cpath d=%27M0 0l5 6 5-6%27 fill=%27none%27 stroke=%27%23666%27 stroke-width=%271.5%27/%3E%3C/svg%3E");background-position:right 6px center;background-repeat:no-repeat;border-radius:4px;padding:0 18px 0 6px;font-family:inherit;font-size:13px}.pager .pg-select:hover{border-color:var(--ink)}.pager .pg-select:focus{border-color:var(--seal);outline:none}.rcol .pager{padding:8px 4px}.stu-card .pager{padding:10px 0 0}.pick-steps{grid-template-columns:1fr 1fr;align-items:start;column-gap:34px;display:grid}.cand-wrap{flex-wrap:wrap;gap:8px;display:flex}.cand-chip{border:1.5px solid var(--line2);background:var(--card);cursor:pointer;-webkit-user-select:none;user-select:none;border-radius:99px;align-items:center;gap:7px;padding:7px 13px;font-size:13.5px;transition:all .12s;display:inline-flex}.cand-chip:hover{border-color:var(--ink);transform:translateY(-1px)}.cand-chip .cc-cnt{color:var(--ink2);border:1px solid var(--line2);font-variant-numeric:tabular-nums;white-space:nowrap;border-radius:99px;padding:0 7px;font-size:11px}.cand-chip.off{opacity:.5;background:var(--paper2);text-decoration:line-through}.cand-chip.on{background:var(--ink);color:var(--paper);border-color:var(--ink)}.cand-chip.on .cc-cnt{color:var(--paper);border-color:#f6f1e773}.roll-mask{z-index:1500;background:#1e1a14bd;justify-content:center;align-items:center;animation:.2s fadeIn;display:flex;position:fixed;inset:0}.roll-card{background:var(--card);border:1px solid var(--line);text-align:center;border-radius:14px;max-width:92vw;padding:36px 44px;box-shadow:8px 8px #26221b47}.roll-title{font-family:var(--serif);letter-spacing:4px;font-size:21px;font-weight:900}.roll-sub{color:var(--ink2);letter-spacing:1px;margin:6px 0 24px;font-size:12px}.roll-slots{flex-wrap:wrap;justify-content:center;gap:14px;display:flex}.roll-slot{border:2px dashed var(--line2);background:var(--paper);border-radius:10px;min-width:118px;padding:20px 16px}.roll-slot b{font-family:var(--serif);letter-spacing:2px;color:var(--ink2);white-space:nowrap;font-size:26px;display:block}.roll-slot.settle{border:3px solid var(--seal);background:#fbede9;animation:.45s cubic-bezier(.25,1.5,.35,1) stampIn}.roll-slot.settle b{color:var(--seal)}.roll-tip{color:var(--ink2);letter-spacing:1px;margin-top:22px;font-size:11.5px}@keyframes stampIn{0%{opacity:0;transform:scale(2.1)}}.stu-duty{border:1.5px solid var(--seal);background:#fbede9;border-radius:10px;align-items:center;gap:12px;margin-bottom:14px;padding:13px 16px;animation:.3s pop;display:flex}.stu-duty b{font-family:var(--serif);color:var(--seal-d);letter-spacing:1px;font-size:15px}@media (width<=1200px){.main{padding:28px 28px 0}.site-foot{padding:22px 28px}.side-foot{padding:16px 20px 22px}.live-top{grid-template-columns:230px calc(50% - 254px) calc(50% - 8px)}}@media (width<=960px){.layout{flex-direction:column}.side{flex-flow:wrap;align-items:center;width:100%;height:auto;position:static}.side-logo{border:none;padding:14px 16px}.nav{flex:1;padding:0;display:flex}.nav-i{border-bottom:3px solid #0000;border-left:none;padding:14px}.nav-i.on{border-bottom-color:var(--seal)}.side-foot{display:none}.main{padding:22px 16px 0}.site-foot{padding:18px 16px}.live-body{grid-template-columns:1fr}.live-top{grid-template-columns:1fr 1fr}.live-side{grid-column:1/-1}.roster,.mg,.pick-steps,.settings-grid{grid-template-columns:1fr}}@media (width<=640px){.stat-grid{gap:10px}.stat{min-width:120px;padding:12px 14px}.stat .v{font-size:28px}.h-page{font-size:22px}.tools{flex-direction:column}.tool{min-width:unset}.cls-grid{grid-template-columns:repeat(auto-fill,minmax(140px,1fr))}.live-head .tt{font-size:19px}.live-top{grid-template-columns:1fr}.live-side{grid-column:auto}.receipt-grid{grid-template-columns:1fr}}.stu-card,.stu-grid{min-width:0}.stu-search input{width:100%;min-width:0}.rcpt{max-width:100%}.rcpt .v{letter-spacing:clamp(4px,2vw,10px);text-overflow:ellipsis;font-size:clamp(26px,9vw,38px);overflow:hidden}.stu-meta{max-width:100%}.stu-meta .badge{text-overflow:ellipsis;white-space:nowrap;max-width:100%;overflow:hidden}@media (width<=360px){.stu-head h1{font-size:18px}.rcpt .v{letter-spacing:4px;font-size:24px}.stu-cell{min-width:0}.stu-cell span{text-overflow:ellipsis;white-space:nowrap;display:block;overflow:hidden}}.m-topbar,.m-tabs{display:none}@media (width<=960px){.side{display:none}.m-topbar{z-index:600;color:#f4eddd;background:#211d17;border-bottom:1px solid #3a342a;justify-content:space-between;align-items:center;height:56px;padding:0 14px;display:flex;position:fixed;top:0;left:0;right:0}.m-topbar-title{font-family:var(--serif);letter-spacing:2px;text-overflow:ellipsis;white-space:nowrap;min-width:0;font-size:16px;font-weight:700;overflow:hidden}.m-more-wrap{position:relative}.m-more-btn{color:#cfc6b4;background:0 0;border:none;border-radius:6px;justify-content:center;align-items:center;width:40px;height:40px;display:flex}.m-more-btn.on{color:#fff6ec;background:#ffffff14}.m-more-mask{z-index:610;background:#1e1a1459;position:fixed;inset:0}.m-more-menu{z-index:620;background:var(--card);border:1px solid var(--line);border-radius:10px;min-width:190px;animation:.15s fadeIn;position:fixed;top:56px;right:10px;overflow:hidden;box-shadow:6px 6px #26221b2e}.m-more-item{color:var(--ink);cursor:pointer;border-bottom:1px solid var(--line);align-items:center;gap:10px;padding:14px 16px;font-size:14px;display:flex}.m-more-item:last-child{border-bottom:none}.m-more-item:hover{background:var(--paper2)}.m-more-item.danger{color:var(--seal)}.m-more-item .ic{opacity:.85}.m-tabs{z-index:600;height:calc(60px + env(safe-area-inset-bottom));padding-bottom:env(safe-area-inset-bottom);background:var(--card);border-top:1px solid var(--line);display:flex;position:fixed;bottom:0;left:0;right:0;box-shadow:0 -2px 10px #26221b0f}.m-tab{color:var(--ink2);letter-spacing:.5px;cursor:pointer;-webkit-user-select:none;user-select:none;flex-direction:column;flex:1;justify-content:center;align-items:center;gap:2px;font-size:10.5px;display:flex}.m-tab .ic{width:22px;height:22px}.m-tab b{font-size:10.5px;font-weight:500;line-height:1.2}.m-tab.on{color:var(--seal)}.m-tab.on b{font-weight:700}.m-tab:active{opacity:.7}.main-wrap{padding-top:56px;padding-bottom:calc(60px + env(safe-area-inset-bottom))}}@media (width<=768px){input,select,textarea{font-size:16px}.main{padding:18px 12px 0}.btn{min-height:40px}.btn.link{min-height:36px}.pager .pg{min-width:40px;height:40px}.cand-chip{padding:10px 15px;font-size:14.5px}.pick{padding:12px 8px;font-size:15px}.course-pick.count-row{flex-wrap:wrap;gap:8px 6px}.course-pick.count-row .pick{padding:10px 14px;font-size:14px}.course-pick.mode-row{flex-wrap:wrap;gap:8px 6px}.course-pick.mode-row .pick{padding:10px 14px;font-size:14px}.course-pick.mode-row .row-sep{display:none}.course-pick.status-grid{grid-template-columns:repeat(2,1fr)}.opt{padding:14px 3px;font-size:14px}.nav-i{padding:14px 10px;font-size:13px}.course-item .ops,.cls-card .ops{opacity:1}.tbl thead{display:none}.tbl tbody tr{border:1px solid var(--line);background:var(--card);box-shadow:var(--shadow);border-radius:8px;margin:0 0 12px;padding:4px 14px 10px;display:block}.tbl tbody tr:hover td{background:0 0}.tbl td{border-bottom:1px dashed var(--line);text-align:right;justify-content:space-between;align-items:center;gap:14px;padding:7px 0;display:flex}.tbl td:last-child{border-bottom:none}.tbl td:before{content:attr(data-label);color:var(--ink2);letter-spacing:1px;text-align:left;flex-shrink:0;font-size:11px}.tbl td[data-label=操作]{justify-content:flex-end}.tbl td[data-label=操作]:before{display:none}.tbl td[data-label=出勤率] .rate-cell .bar{width:64px}.tbl td[data-label=实到\/应到]{justify-content:flex-end}.tbl td.td-title{max-width:none}.tbl td.td-title .clip{flex:1;min-width:0}.modal-mask{align-items:flex-end;padding:0}.modal{border-radius:14px 14px 0 0;width:100%;max-width:100%;max-height:92vh}.modal-f{padding-bottom:calc(14px + env(safe-area-inset-bottom))}.toast-wrap{align-items:stretch;inset:12px 12px auto}.toast{width:100%;max-width:none}.welcome{margin:6vh auto;padding:0 14px}.welcome .ops{flex-direction:column}.welcome .ops .card{width:100%;min-width:0}.stat-grid{grid-template-columns:repeat(2,1fr);gap:10px;display:grid}.stat{min-width:0}.filt{flex-direction:column;align-items:stretch;gap:8px}.filt>div{width:100%;flex:auto!important}.filt select{width:100%}.filt .btn{flex:1;justify-content:center;margin-left:0!important}.card{padding:16px}.create-card{padding:18px 16px}.param-panel{padding:18px 14px}.pick-steps{column-gap:0}.settings-grid{gap:14px}.modal-b{padding:16px}.h-sub{margin:10px 0 18px}.timer-wrap{width:160px}.timer-wrap svg{width:160px;height:160px}.t-num b{font-size:34px}.code-line{font-size:12px}.code-line b{letter-spacing:5px;font-size:22px}.roll-card{padding:26px 18px}.roll-slot{min-width:96px;padding:16px 12px}.roll-slot b{font-size:22px}}@media (width<=420px){.m-topbar-title{font-size:14px}.m-tab b{font-size:9.5px}.m-tab .ic{width:20px;height:20px}.h-page{font-size:20px}.stat .v{font-size:24px}.t-num b{font-size:30px}.timer-wrap{width:140px}.timer-wrap svg{width:140px;height:140px}.create-sum .sum-key{font-size:13.5px}.code-line b{letter-spacing:4px;font-size:19px}}.schedule-wrap{margin-top:16px;overflow-x:auto}.schedule-grid{border:1px solid var(--line2);background:var(--paper);border-radius:8px;grid-template-columns:80px repeat(5,1fr);min-width:800px;display:grid;overflow:hidden}.schedule-grid .sgh{background:var(--paper2);text-align:center;border-bottom:1px solid var(--line2);border-right:1px solid var(--line2);color:var(--ink2);letter-spacing:1px;padding:10px 6px;font-size:12.5px;font-weight:600}.schedule-grid .sgh:last-child{border-right:none}.schedule-grid .sgl{background:var(--paper2);text-align:center;border-bottom:1px solid var(--line2);border-right:1px solid var(--line2);color:var(--ink2);padding:8px 4px;font-size:12px}.schedule-grid .sgc{border-bottom:1px solid var(--line2);border-right:1px solid var(--line2);vertical-align:top;min-height:70px;padding:2px;position:relative}.schedule-grid .sgc:last-child{border-right:none}.schedule-grid .sgc.rowspan-end{border-bottom:none}.schedule-grid .sgc.empty{background:var(--paper)}.schedule-grid.wide{grid-template-columns:80px repeat(7,1fr);min-width:920px}.schedule-grid .sgh.today{color:var(--ink);background:#f4e3b8}.schedule-grid .sgc.today,.schedule-grid .sgc.today.empty{background:#f4e3b86b}.schedule-grid .sgc .course-block{cursor:pointer;border-radius:6px;flex-direction:column;justify-content:space-between;height:100%;min-height:60px;padding:6px 8px;transition:opacity .15s;display:flex;position:relative}.schedule-grid .sgc .course-block:hover{opacity:.85}.schedule-grid .sgc .course-block .cb-name{font-size:13px;font-weight:700;line-height:1.4}.schedule-grid .sgc .course-block .cb-meta{color:var(--ink2);font-size:11.5px;line-height:1.4}.schedule-grid .sgc .course-block .cb-week{color:var(--ink2);background:#fff9;border-radius:3px;padding:1px 5px;font-size:10.5px;position:absolute;bottom:4px;right:6px}.schedule-grid .sgc .course-block .cb-overlay{background:var(--seal);color:#fff;z-index:2;border-radius:8px;padding:1px 6px;font-size:11px;font-weight:700;position:absolute;top:2px;right:4px}.schedule-grid .sgc .multi-hint{background:var(--seal);color:#fff;z-index:2;cursor:pointer;border-radius:8px;padding:1px 6px;font-size:11px;font-weight:700;position:absolute;top:2px;right:4px}.schedule-grid .sgc .multi-hint:hover{background:var(--seal-d)}.schedule-grid .sgc .course-block .cb-del{width:18px;height:18px;color:var(--ink2);border:1px solid var(--line2);cursor:pointer;opacity:0;z-index:3;background:#ffffffd9;border-radius:50%;padding:0;font-size:14px;line-height:16px;transition:opacity .15s;position:absolute;top:3px;right:4px}.schedule-grid .sgc .course-block:hover .cb-del{opacity:1}.schedule-grid .sgc .course-block .cb-del:hover{color:#fff;background:var(--seal);border-color:var(--seal)}.schedule-grid .sgc .course-block .cb-del-left{left:4px;right:auto}.schedule-grid .sgc .course-block .makeup-badge{color:#fff;background:var(--seal);z-index:2;white-space:nowrap;border-radius:3px;padding:1px 6px;font-size:10px;position:absolute;bottom:4px;left:6px}.makeup-preview{border:1px solid var(--line2);border-radius:8px;max-height:220px;padding:2px 12px;overflow-y:auto}.makeup-item{border-bottom:1px dashed var(--line2);justify-content:space-between;align-items:center;padding:7px 0;display:flex}.makeup-item:last-child{border-bottom:none}.schedule-top{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;margin-bottom:12px;display:flex}.schedule-top .st-left{align-items:center;gap:10px;display:flex}.schedule-top .st-left label{color:var(--ink2);white-space:nowrap;font-size:13px}.schedule-top .st-right{flex-wrap:wrap;gap:8px;display:flex}.schedule-current-week{color:var(--ink2);align-items:center;gap:8px;font-size:13px;display:flex}.schedule-current-week .week-badge{background:var(--seal);color:#fff;border-radius:12px;padding:2px 10px;font-size:13px;font-weight:700}.sem-table{border-collapse:collapse;white-space:nowrap;width:100%}.sem-table th,.sem-table td{text-align:left;border-bottom:1px solid var(--line2);padding:8px 10px;font-size:13px}.sem-table th{background:var(--paper2);color:var(--ink2);font-weight:600}.import-preview{border:1px solid var(--line2);border-radius:8px;max-height:400px;overflow-y:auto}.import-preview table{border-collapse:collapse;width:100%;font-size:12.5px}.import-preview th,.import-preview td{text-align:left;border-bottom:1px solid var(--line2);padding:6px 8px}.import-preview th{background:var(--paper2);color:var(--ink2);z-index:1;font-weight:600;position:sticky;top:0}.import-preview .err-row{background:var(--red-bg)}.import-preview .ok-row{background:var(--green-bg)}.import-preview .err-msg{color:var(--seal);font-size:11px}.import-file-input{display:none}body.health-mode{background:var(--paper)}.health-bg{pointer-events:none;z-index:0;background:radial-gradient(90% 60% at 85% -10%,#bc3a2814,#0000 60%),radial-gradient(70% 50% at -10% 110%,#2e6b4e1a,#0000 60%);position:fixed;inset:0}.health-wrap{z-index:1;flex-direction:column;max-width:980px;min-height:100vh;margin:0 auto;padding:40px 32px 28px;display:flex;position:relative}.health-head{border-bottom:1px solid var(--line2);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:16px;padding-bottom:20px;display:flex}.health-brand{align-items:center;gap:14px;display:flex}.health-brand .logo-seal{width:52px;height:52px;font-size:16px}.health-brand-txt h1{font-family:var(--serif);letter-spacing:3px;font-size:20px}.health-brand-txt span{color:var(--ink2);letter-spacing:2px;font-size:11.5px}.health-meta{align-items:center;gap:12px;display:flex}.health-lat{font-family:var(--serif);color:var(--ink2);font-variant-numeric:tabular-nums;font-size:14px;font-weight:700}.health-hero{flex-wrap:wrap;align-items:center;gap:28px;padding:44px 8px 36px;display:flex}.health-seal{letter-spacing:2px;border-width:4px;flex-shrink:0;width:120px;height:120px;font-size:38px}.health-seal.is-ok{border-color:var(--green);color:var(--green);background:#2e6b4e0d;box-shadow:inset 0 0 0 1.5px #2e6b4e59}.health-seal.is-bad{border-color:var(--seal);color:var(--seal);background:#bc3a280f;animation:1.1s ease-in-out infinite heartBeat;box-shadow:inset 0 0 0 1.5px #bc3a2859}.health-seal.is-checking{animation:2.4s ease-in-out infinite spinSway}.health-hero-txt h2{font-family:var(--serif);letter-spacing:3px;margin-bottom:8px;font-size:26px}.health-hero-txt p{color:var(--ink2);letter-spacing:1px;font-size:13.5px;line-height:1.8}@keyframes spinSway{0%,to{transform:rotate(-8deg)}50%{transform:rotate(10deg)}}@keyframes heartBeat{0%,to{transform:rotate(-8deg)scale(1)}10%{transform:rotate(-8deg)scale(1.05)}20%{transform:rotate(-8deg)scale(1)}}.health-stat-grid{grid-template-columns:repeat(4,1fr);gap:14px;margin-bottom:34px;display:grid}.health-stat{background:var(--card);border:1px solid var(--line);box-shadow:var(--shadow);border-radius:8px;justify-content:space-between;align-items:center;gap:10px;padding:14px 16px;display:flex;position:relative;overflow:hidden}.health-stat:before{content:"";background:var(--seal);opacity:.5;border-radius:0 2px 2px 0;width:3px;height:56%;position:absolute;top:22%;left:0}.health-stat .k{color:var(--ink2);letter-spacing:2px;flex-shrink:0;font-size:12px;display:block}.health-stat .v{font-family:var(--serif);font-variant-numeric:tabular-nums;text-align:right;font-size:18px;font-weight:900;line-height:1.2}.health-section{margin-bottom:30px}.health-sec-t{font-family:var(--serif);letter-spacing:3px;align-items:center;gap:10px;margin-bottom:14px;font-size:15px;display:flex}.health-sec-t:before{content:"";background:var(--seal);flex-shrink:0;width:6px;height:6px;transform:rotate(45deg)}.health-checks{grid-template-columns:repeat(2,1fr);gap:10px;display:grid}.health-check{background:var(--card);border:1px solid var(--line);box-shadow:var(--shadow);border-radius:8px;align-items:center;gap:10px;padding:12px 14px;transition:all .15s;display:flex}.health-check:hover{transform:translate(-1px,-1px)}.hc-ic{border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;width:24px;height:24px;font-size:13px;font-weight:700;display:flex}.health-check.is-ok .hc-ic{background:var(--green-bg);color:var(--green);border:1px solid var(--green)}.health-check.is-bad .hc-ic{background:var(--red-bg);color:var(--seal);border:1px solid var(--seal)}.hc-name{letter-spacing:1px;flex-shrink:0;font-size:13.5px;font-weight:600}.hc-detail{color:var(--ink2);letter-spacing:.5px;text-align:right;text-overflow:ellipsis;white-space:nowrap;margin-left:auto;font-size:11.5px;overflow:hidden}.health-info{background:var(--line);border:1px solid var(--line);box-shadow:var(--shadow);border-radius:8px;grid-template-columns:repeat(2,1fr);gap:1px;display:grid;overflow:hidden}.health-info-row{background:var(--card);justify-content:space-between;align-items:center;gap:12px;padding:11px 16px;display:flex}.health-info-row span{color:var(--ink2);letter-spacing:1px;flex-shrink:0;font-size:12.5px}.health-info-row b{font-family:var(--serif);text-align:right;word-break:break-all;font-size:13.5px;font-weight:700}.health-foot{border-top:1px solid var(--line2);color:var(--ink2);letter-spacing:1px;flex-wrap:wrap;justify-content:space-between;gap:10px;margin-top:auto;padding-top:22px;font-size:11.5px;display:flex}@media (width<=768px){.health-wrap{padding:24px 16px 20px}.health-stat-grid{grid-template-columns:repeat(2,1fr)}.health-stat .v{font-size:15.5px}.health-stat .k{letter-spacing:1px}.health-checks,.health-info{grid-template-columns:1fr}.health-hero{gap:20px;padding:30px 4px 26px}.health-hero-txt h2{font-size:21px}}.nf{text-align:center;max-width:560px;margin:0 auto;padding:52px 12px 44px;position:relative}.nf:before{content:"";z-index:-1;pointer-events:none;background:radial-gradient(90% 55% at 85% -10%,#bc3a2812,#0000 60%),radial-gradient(70% 50% at -10% 110%,#2e6b4e17,#0000 60%);position:fixed;inset:0}.nf-deco{font-family:var(--serif);color:var(--seal);opacity:.06;-webkit-user-select:none;user-select:none;pointer-events:none;font-weight:900;line-height:1;position:fixed}.nf-deco-1{font-size:150px;top:5%;left:3%;transform:rotate(-14deg)}.nf-deco-2{font-size:110px;bottom:7%;right:3%;transform:rotate(16deg)}.nf-seal{border:2.5px solid var(--seal);width:96px;height:96px;color:var(--seal);font-family:var(--serif);letter-spacing:0;mix-blend-mode:multiply;-webkit-user-select:none;user-select:none;background:#bc3a280d;border-radius:7px;grid-template-rows:1fr 1fr;grid-template-columns:1fr 1fr;place-items:center;margin:0 auto 30px;font-size:22px;font-weight:900;line-height:1;animation:.6s cubic-bezier(.25,1.5,.35,1) both stamp;display:grid;position:relative;transform:rotate(-8deg);box-shadow:inset 0 0 0 1px #bc3a2829,3px 3px #26221b1f}.nf-seal:before{content:"";pointer-events:none;border:1px solid #bc3a2880;border-radius:3px;position:absolute;inset:5px}.nf-seal:after{content:"";border-radius:inherit;pointer-events:none;opacity:.4;mix-blend-mode:multiply;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='120' height='120'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='1.6' numOctaves='3' seed='7'/%3E%3CfeColorMatrix values='0 0 0 0 0.62 0 0 0 0 0.19 0 0 0 0 0.13 0 0 0 0.16 0'/%3E%3C/filter%3E%3Crect width='120' height='120' filter='url(%23n)'/%3E%3C/svg%3E");position:absolute;inset:0}.nf-seal span{line-height:1;display:block;position:relative}.nf-slot{border:3px dashed var(--line2);background:var(--card);border-radius:14px;max-width:360px;margin:0 auto 36px;padding:40px 24px 32px;position:relative;box-shadow:6px 6px #26221b14}.nf-slot:before,.nf-slot:after{content:"";background:var(--paper);border:1.5px solid var(--line2);width:14px;height:14px;position:absolute;transform:rotate(45deg)}.nf-slot:before{top:-8px;left:-8px}.nf-slot:after{bottom:-8px;right:-8px}.nf-empty-tag{letter-spacing:3px;color:var(--ink2);background:var(--paper);border:1px solid var(--line2);white-space:nowrap;border-radius:99px;padding:2px 14px;font-size:11px;position:absolute;top:-12px;left:50%;transform:translate(-50%)}.nf-code{font-family:var(--serif);color:var(--seal);letter-spacing:6px;font-variant-numeric:tabular-nums;padding-left:6px;font-size:clamp(62px,15vw,104px);font-weight:900;line-height:1}.nf-slot-sub{color:var(--ink2);letter-spacing:3px;margin-top:14px;font-size:12.5px}.nf-title{font-family:var(--serif);letter-spacing:4px;margin-bottom:12px;font-size:27px;font-weight:900}.nf-sub{color:var(--ink2);max-width:400px;margin:0 auto 30px;font-size:13px;line-height:2}.nf-sub code{font-family:var(--sans);background:var(--paper2);border:1px solid var(--line2);color:var(--seal);word-break:break-all;border-radius:4px;padding:1px 8px;font-size:12px}.nf-ops{flex-wrap:wrap;justify-content:center;gap:12px;display:flex}.nf-btn{letter-spacing:2px;padding:10px 24px;font-size:13.5px}.nf-btn .ic{vertical-align:-3px}.nf-foot{color:var(--ink2);letter-spacing:1px;margin-top:32px;font-size:11.5px}@media (width<=640px){.nf{padding:36px 8px 28px}.nf-deco-1{font-size:108px;left:1%}.nf-deco-2{font-size:76px;right:1%}.nf-seal{width:74px;height:74px;margin-bottom:24px;font-size:18px}.nf-seal:before{inset:4px}.nf-slot{margin-bottom:30px;padding:32px 16px 26px}.nf-title{font-size:22px}.nf-sub code{max-width:100%;display:inline-block}.nf-btn{flex:1;justify-content:center;min-width:0}}
