
*{margin:0;padding:0;box-sizing:border-box}
:root{--sb-w:190px;--pri:#92400e;--pri-l:#d97706;--blu:#0369a1;--blu-l:#38bdf8;--bg:#fef7ed;--bd:#e7e5e4;--tx:#1e293b;--tx2:#78716c;--rd:10px;--sh:0 1px 4px rgba(0,0,0,.06)}
html,body{overscroll-behavior:none}
body{font-family:-apple-system,'PingFang SC','Microsoft YaHei',sans-serif;background:linear-gradient(135deg,#fafaf9,#f0f9ff);color:var(--tx);font-size:13px}
/* Sidebar */
.sidebar{position:fixed;left:0;top:0;bottom:0;width:var(--sb-w);background:linear-gradient(180deg,#1c1917,#292524 50%,#44403c);z-index:200;display:flex;flex-direction:column;box-shadow:2px 0 12px rgba(0,0,0,.12)}
.sb-logo{padding:20px 16px 14px;color:#fff;font-size:16px;font-weight:800;border-bottom:1px solid rgba(255,255,255,.15)}
.sb-nav{flex:1;overflow-y:auto;padding:6px 0}
.sb-zone-label{font-size:10px;color:rgba(255,255,255,.5);padding:8px 16px 3px;font-weight:600;letter-spacing:1px}
.sb-zone+.sb-zone{border-top:1px solid rgba(255,255,255,.1);margin-top:4px}
.sb-item{padding:8px 16px;color:rgba(255,255,255,.85);cursor:pointer;font-size:13px;margin:2px 8px;border-radius:8px;transition:all .15s}
.sb-item:hover{background:rgba(255,255,255,.14)}
.sb-item.active{background:rgba(255,255,255,.25);font-weight:700}
.sb-user{padding:10px 14px 12px;border-top:1px solid rgba(255,255,255,.15);color:#fff;display:flex;flex-direction:column;gap:7px}
.sbu-sync{font-size:10.5px;color:rgba(255,255,255,.72);display:flex;align-items:center;gap:5px;letter-spacing:.5px}
.sbu-name{font-size:13.5px;font-weight:700;display:flex;align-items:center;gap:6px}
.sbu-btns{display:flex;gap:7px}
.sbu-btns button{flex:1;background:rgba(255,255,255,.13);border:1px solid rgba(255,255,255,.26);color:#fff;padding:5px 0;border-radius:8px;cursor:pointer;font-size:11.5px;transition:background .15s}
.sbu-btns button:hover{background:rgba(255,255,255,.26)}
/* PWA install */
.sb-install{padding:10px 16px;border-top:1px solid rgba(255,255,255,.1)}
.sb-install button{width:100%;background:linear-gradient(135deg,#d97706,#f59e0b);border:none;color:#fff;padding:7px 0;border-radius:8px;cursor:pointer;font-size:12px;font-weight:700;letter-spacing:2px;box-shadow:0 2px 6px rgba(217,119,6,.35);transition:filter .15s}
.sb-install button:hover{filter:brightness(1.1)}
/* Main */
.main{margin-left:var(--sb-w);padding:16px;min-height:100vh}
.card{background:#fff;border-radius:var(--rd);box-shadow:var(--sh);padding:14px;margin-bottom:14px;border:1px solid var(--bd)}
.ct{font-size:15px;font-weight:700;margin-bottom:10px;display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.badge{font-size:11px;padding:2px 8px;border-radius:10px;background:linear-gradient(135deg,var(--pri),var(--pri-l));color:#fff;font-weight:600}
/* Stats */
.stat-row{display:flex;gap:10px;margin-bottom:12px;flex-wrap:wrap}
.stat-card{flex:1;min-width:120px;background:#fff;border-radius:var(--rd);padding:12px 14px;box-shadow:var(--sh);border-left:4px solid var(--pri)}
.stat-card.blu{border-left-color:var(--blu)}.stat-card.grn{border-left-color:#22c55e}
.stat-card .sl{font-size:11px;color:var(--tx2)}
.stat-card .sv{font-size:20px;font-weight:800}
.sv.oc{color:var(--pri)}.sv.bl{color:var(--blu)}.sv.gr{color:#16a34a}
/* Schedule board */
.sched-layout{display:flex;gap:12px;align-items:flex-start}
.sched-center{flex:1;background:#fff;border-radius:var(--rd);box-shadow:var(--sh);overflow:hidden;border:1px solid var(--bd)}
.sched-hd{background:linear-gradient(135deg,#92400e,#b45309);color:#fff;padding:8px 14px;display:flex;justify-content:space-between;align-items:center}
.sched-hd .pl{font-weight:700;font-size:14px}.sched-hd .pd{font-size:11px;opacity:.85}
.dh-wrap{overflow-x:auto;-webkit-overflow-scrolling:touch;overscroll-behavior-x:contain}
.dh-g{display:grid;grid-template-columns:56px repeat(var(--nc,7),minmax(85px,1fr));min-width:700px}
.dh-c{background:#fff7ed;border-right:1px solid var(--bd);border-bottom:1px solid var(--bd)}
.dh-d{background:linear-gradient(135deg,#fef3c7,#fef9c3);font-weight:700;font-size:12px;text-align:center;padding:5px 2px;border-right:1px solid var(--bd);border-bottom:1px solid var(--bd);color:#9a3412}
.dh-w{background:#fff7ed;font-size:10px;color:#78716c;text-align:center;padding:2px;border-right:1px solid var(--bd);border-bottom:2px solid var(--pri)}
.dh-d.brk,.dh-w.brk{background:#e7e5e4;color:#a8a29e}
/* Time grid */
.tg-wrap{overflow:auto;max-height:calc(100vh - 280px);-webkit-overflow-scrolling:touch;overscroll-behavior-x:contain}
.tg-g{display:grid;grid-template-columns:56px repeat(var(--nc,7),minmax(85px,1fr));position:relative;min-width:700px}
.tg-t{font-size:9px;line-height:1;padding-top:1px;color:#a8a29b;border-right:1px solid var(--bd);background:#fafaf9;position:sticky;left:0;z-index:2;font-weight:600;display:flex;align-items:flex-start;justify-content:flex-end;padding-right:3px}
.tg-t.mj{color:var(--pri)}
.tg-c{border-right:1px solid #f5f5f4;position:relative;transition:background .12s}
.tg-c:hover{background:#fefce8}
.tg-c.dv{background:#fef3c7!important;outline:2px dashed var(--pri);outline-offset:-1px}
.tg-c.flt{border-bottom:1px solid #f5f5f4}
.tg-c.r2h{border-bottom:2px solid var(--bd)}
.tg-c.brk{background:repeating-linear-gradient(45deg,#f5f5f4,#f5f5f4 5px,#e7e5e4 5px,#e7e5e4 10px);pointer-events:none}
.cb{position:absolute;left:1px;right:1px;border-radius:4px;color:#fff;font-size:11px;cursor:grab;z-index:5;padding:3px 5px;overflow:hidden;user-select:none;box-shadow:0 1px 3px rgba(0,0,0,.12)}
.cb:hover{box-shadow:0 2px 8px rgba(0,0,0,.2);z-index:8}
.cb .n{font-weight:700;font-size:11.5px;line-height:1.25;white-space:normal;word-break:break-all;padding-right:14px}
.cb .t{font-size:10px;line-height:1.3;opacity:.85;white-space:normal;word-break:break-all}
.g-card{border-radius:12px;box-shadow:0 1px 4px rgba(30,58,138,.08);border:1px solid #e2e8f0;background:#fff}
.g-hd{display:flex;align-items:center;gap:10px;margin-bottom:8px}
.g-hd b{font-size:14px;color:#0f172a}
.g-filter{display:flex;gap:8px;align-items:center;flex-wrap:wrap;margin:6px 0 10px}
.g-filter span{font-size:11px;color:#64748b}
.g-tbl{border-collapse:separate;border-spacing:0;width:100%;font-size:12.5px;min-width:640px;table-layout:auto}
.g-tbl th{background:linear-gradient(180deg,#3b4a5f,#2b3a4d);color:#fff;font-weight:700;padding:8px 10px;border-right:1px solid rgba(255,255,255,.12);border-bottom:2px solid #1e2a38;font-size:11.5px;letter-spacing:.3px}
.g-tbl th.g-sub-语文{background:#7f1d1d}
.g-tbl th.g-sub-数学{background:#1e3a8a}
.g-tbl th.g-sub-英语{background:#14532d}
.g-tbl th.g-sub-物理{background:#4c1d95}
.g-tbl th.g-sub-化学{background:#7c2d12}
.g-tbl th:first-child{border-top-left-radius:8px}
.g-tbl th:last-child{border-top-right-radius:8px}
.g-tbl th.g-sub-语文{background:#7f1d1d}
.g-tbl th.g-sub-数学{background:#1e3a8a}
.g-tbl th.g-sub-英语{background:#14532d}
.g-tbl th.g-sub-物理{background:#4c1d95}
.g-tbl th.g-sub-化学{background:#7c2d12}
.g-tbl td{border-bottom:1px solid #eef2f7;border-right:1px solid #eef2f7;padding:7px 10px;text-align:center;color:#334155;background:#fff}
.g-tbl td:first-child{border-left:1px solid #eef2f7}
.g-tbl td:last-child{border-right:1px solid #eef2f7}
.g-tbl tbody tr:nth-child(even) td{background:#f8fafc}
.g-tbl td.stu{font-weight:700;color:#0f172a;text-align:left;padding-left:12px}
.g-tbl td.cell{cursor:pointer;color:#94a3b8;min-width:46px}
.g-tbl td.cell:hover{background:#dbeafe}
.g-tbl td.cell.filled{color:#1d4ed8;font-weight:600}
.g-tbl td.tot{background:#eff6ff;font-weight:800;color:#1d4ed8}
.g-tbl td.subj-cell{font-size:10.5px;color:#475569;text-align:left;width:158px;min-width:158px;max-width:158px;line-height:1.8}
.g-tbl td.subj-cell div{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.g-tbl td.sticky{position:sticky;left:0;background:inherit;z-index:2}
tr.hl td{background:#fff7e6!important}
td.hl{background:#fff7e6!important}
tr.hl-all td{background:#fff7e6!important}
td.hl-all{background:#fff7e6!important}
/* v1.3.33 时间选择面板：流畅淡入+灵敏响应 */
.tp-panel{position:absolute;z-index:9500;background:#fff;border:1px solid #e7e5e4;border-radius:10px;box-shadow:0 10px 30px rgba(0,0,0,.16);padding:10px;animation:tpIn .16s ease;user-select:none}
@keyframes tpIn{from{opacity:0;transform:translateY(-6px) scale(.98)}to{opacity:1;transform:translateY(0) scale(1)}}
.tp-lbl{font-size:10px;font-weight:700;color:#a8a29e;margin:2px 0 3px;text-align:center}
.tp-cols{display:flex;gap:8px}
.tp-col{height:168px;overflow-y:auto;scroll-snap-type:y mandatory;width:70px;border:1px solid #e7e5e4;border-radius:8px;background:#fafaf9;scrollbar-width:none}
.tp-col::-webkit-scrollbar{display:none}
.tp-col .tp-pad{height:66px}
.tp-i{height:36px;scroll-snap-align:center;display:flex;align-items:center;justify-content:center;font-size:13px;cursor:pointer;color:#44403c;transition:background .1s,color .1s}
.tp-i:hover{background:#fef3c7}
.tp-i.on{background:#9a3412;color:#fff;font-weight:800;border-radius:6px;margin:0 4px}
@keyframes tpIn{from{opacity:0;transform:translateY(-6px) scale(.98)}to{opacity:1;transform:translateY(0) scale(1)}}
.cb .k{position:absolute;top:1px;right:2px;background:rgba(255,255,255,.68);padding:0 3px;border-radius:4px;font-weight:800;font-size:8px}
.cb .nt{font-size:8px;line-height:1.2;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;opacity:.92;background:rgba(255,255,255,.55);border-radius:4px;padding:0 3px;margin:1px 2px 0}
.cb.dn{opacity:.55;filter:saturate(.35);box-shadow:inset 0 0 0 2px rgba(28,25,23,.18),0 1px 3px rgba(0,0,0,.08)}
/* 排课冲突高亮：坚持排课后持续标记，冲突解除自动恢复 */
.cb.cf{outline:2px solid #ef4444;outline-offset:-2px;box-shadow:0 0 0 3px rgba(239,68,68,.35)}
.cb.cf::after{content:'';position:absolute;inset:0;background:repeating-linear-gradient(45deg,rgba(239,68,68,.16) 0 6px,transparent 6px 12px);pointer-events:none;border-radius:4px}
.cb .exm{position:absolute;top:-1px;right:-1px;background:#d97706;color:#fff;font-size:8px;font-weight:800;padding:0 3px;border-radius:0 6px 0 6px;line-height:12px}.cfm{position:absolute;top:0;right:0;background:#ef4444;color:#fff;font-size:8px;font-weight:700;line-height:1;padding:2px 3px;border-radius:0 0 0 5px;z-index:2}
.cg-co.cf{outline:2px solid #ef4444;outline-offset:-1px;background:#fee2e2!important;color:#b91c1c}
.cb.dn .n::after{content:' ✓';font-weight:800}
.cb .rz{position:absolute;bottom:0;left:0;right:0;height:6px;cursor:ns-resize;background:linear-gradient(transparent,rgba(0,0,0,.15))}
.cb.dg{opacity:.5;z-index:20}
/* Material lib */
.mat-lib{width:190px;flex-shrink:0;max-height:calc(100vh - 140px);overflow-y:auto;background:#fff;border-radius:var(--rd);box-shadow:var(--sh);border:1px solid var(--bd);padding:8px}
.mat-lib h4{font-size:12px;font-weight:700;margin-bottom:6px;color:#9a3412}
.mat-it{border:1px solid var(--bd);border-radius:8px;padding:6px 8px;margin-bottom:5px;cursor:grab;transition:all .15s;background:linear-gradient(135deg,#fff,#fafaf9);display:flex;align-items:center;justify-content:space-between}
.mat-it:hover{border-color:var(--pri-l);box-shadow:0 2px 6px rgba(234,88,12,.12)}
.mat-it .n{font-weight:600;font-size:11px}.mat-it .s{font-size:9px;color:var(--tx2)}
.mat-it .k{font-weight:800;font-size:12px;color:var(--pri);min-width:30px;text-align:right}
.mat-it .k.has{color:var(--blu)}
/* Week summary 周总结 */
.wt{border-collapse:collapse;font-size:11px;min-width:1280px;width:100%}
.wt th,.wt td{border:1px solid #e7e5e4;padding:4px 6px;vertical-align:top;text-align:center}
.wt th{background:linear-gradient(135deg,#fef3c7,#fef9c3);color:#92400e;font-size:10px;line-height:1.3}
.wt td.l{text-align:left}
/* 周总结专属高级配色：深石色表头 + 米白斑马纹 + 克制分隔线 */
.wt-x thead th{background:linear-gradient(180deg,#39332e,#1c1917);color:#fafaf9;border-color:#292524;font-weight:700;font-size:12px;letter-spacing:.5px;padding:8px 8px;line-height:1.35}
.wt-x thead th span{color:#a8a29e;font-weight:400;font-size:10px;letter-spacing:.2px}
.wt-x thead tr:nth-child(2) th{background:#44403c;color:#d6d3d1;font-size:10px;font-weight:600;letter-spacing:.3px;padding:5px 6px}
.wt-x tbody td{border-color:#efedeb;padding:6px 8px}
.wt-x{min-width:1200px}
.wt-x .ta{min-width:0}
.wt-x .win{width:100%}
/* 周总结：表头/数据自动换行 + 居中 + 列宽拖拽手柄 + 可编辑大标题 */
.wt-x thead th{white-space:normal;word-break:break-word;text-align:center;position:relative}
.wt-x tbody td{word-break:break-word}
.wt-x td.l,.wt-x td.l div{word-break:break-word}
.wt-x .col-grip{position:absolute;top:0;right:0;width:6px;height:100%;cursor:col-resize;user-select:none;z-index:2}
.wt-x .col-grip:hover,.wt-x .col-grip.on{background:#3b82f6;opacity:.5}
.ws-title{font-size:19px;font-weight:800;color:#1c1917;letter-spacing:.5px;padding:2px 10px;border-radius:6px;outline:none;white-space:nowrap}
.ws-title:focus{background:#fff;box-shadow:0 0 0 2px #d6d3d1}
/* 第17轮：行高统一 33px + 表头标题垂直居中占满（消除标题下留白感）+ 数据区水平/垂直居中 */
.wt-x thead th{vertical-align:middle}
.wt-x tbody td,.wt-x tfoot td{height:33px;vertical-align:middle}
.wt-x tbody td.l{text-align:center}
.wt-x .ta{height:26px}
.wt-x tbody tr:nth-child(odd) td{background:#fafaf9}
.wt-x tfoot td{background:#f5f5f4;color:#1c1917;border-top:2px solid #292524;border-color:#e7e5e4;padding:7px 8px;font-size:12px}
/* 课频统计专属：深石色表头 + 低饱和身份色块 + 斑马纹 */
.wt-cf thead th{background:linear-gradient(180deg,#39332e,#1c1917);color:#fafaf9;border-color:#292524;font-weight:700;font-size:12px;letter-spacing:.5px;padding:7px 8px;line-height:1.35}
.wt-cf thead th span{color:#a8a29e;font-weight:400;font-size:10px;letter-spacing:.2px}
.wt-cf tbody td{border-color:#efedeb;padding:5px 8px}
.wt-cf tbody tr:nth-child(odd) td{background:#fafaf9}
.wt-cf tbody tr td.cfg{background:#ecfdf5;color:#047857}
.wt-cf tbody tr td.cft{background:#eff6ff;color:#1d4ed8}
.wt-cf tbody tr td.cftot{background:#fffbeb;color:#92400e;font-weight:800;font-size:13px}
.wt .win{width:36px;box-sizing:border-box;border:1px solid #fde4cc;border-radius:4px;font-size:10px;padding:2px 3px;text-align:center}
.wt .win2{width:34px;box-sizing:border-box;border:1px solid #fde4cc;border-radius:4px;font-size:10px;padding:2px 3px;text-align:center}
.wt .ta{width:100%;min-width:96px;box-sizing:border-box;border:1px solid #fde4cc;border-radius:4px;font-size:10px;padding:2px 4px;resize:vertical;line-height:1.4;word-break:break-all}
.wt .rs-in{box-sizing:border-box;border:1px solid #fde4cc;border-radius:4px;font-size:10px;padding:1px 4px}
.gchip{display:inline-flex;align-items:center;gap:2px;background:#f5f5f4;border:1px solid #e7e5e4;border-radius:8px;padding:0 5px;font-size:9px;cursor:pointer;white-space:nowrap}
.gchip:hover{border-color:var(--pri);background:#fff7ed}
.gchip i{font-style:normal;color:var(--pri);font-weight:700}
/* Campus board */
.camp-w{overflow-x:auto;cursor:grab;-webkit-overflow-scrolling:touch;overscroll-behavior-x:contain}
.camp-w.dragging{cursor:grabbing;user-select:none}
.camp-blk{border:1px solid var(--bd);border-radius:8px;overflow:hidden;margin-bottom:10px}
.camp-nm{background:linear-gradient(135deg,#92400e,#b45309);color:#fff;font-weight:700;font-size:14px;padding:8px 14px;display:flex;align-items:center;gap:8px}
.camp-nm .sj{font-size:11px;opacity:.8;font-weight:400}.camp-nm .gp{font-size:11px;background:rgba(255,255,255,.2);padding:2px 8px;border-radius:10px}
.cg-g{display:grid;grid-template-columns:56px repeat(var(--nc,7),minmax(80px,1fr)) 65px 65px 100px 60px 60px;min-width:960px}
.cg-c{border-right:1px solid #fde4cc;border-bottom:1px solid #fde4cc;padding:2px 4px;font-size:9px;min-height:20px}
.cg-h{background:linear-gradient(135deg,#fef3c7,#fef9c3);font-weight:700;font-size:10px;text-align:center;padding:4px 2px;color:#9a3412}
.cg-tm{background:#fafaf9;font-size:9px;color:#a8a29b;display:flex;align-items:center;justify-content:flex-end;padding-right:4px;font-weight:600}
.cg-tm.mj{color:var(--pri)}
.cg-co{background:linear-gradient(135deg,#dbeafe,#bfdbfe);color:#1e40af;border-radius:3px;padding:1px 3px;font-size:8px;margin:1px 0;font-weight:600}
.cg-co.b{background:linear-gradient(135deg,#fce7f3,#fbcfe8);color:#831843}
.cg-st{background:#faf5ff;font-weight:800;text-align:center;font-size:13px;color:#7c3aed;display:flex;align-items:center;justify-content:center}
.cg-st.oc{color:var(--pri);background:#fff7ed}
.cg-st.hr{background:#fce7f3;color:#831843}
.cg-st.vd{background:#dbeafe;color:#1e40af}
.cg-st.at{background:#d1fae5;color:#065f46}
.cg-nt{background:#fefce8;font-size:9px;color:#a16207;padding:4px 5px;cursor:text;min-height:20px}
.cg-nt:empty::before{content:'点击填写…';color:#d6d3d1}
.cg-tot{background:linear-gradient(135deg,#fff7ed,#ffedd5);font-weight:800;font-size:11px;text-align:center;padding:4px;border-top:2px solid var(--pri);color:#9a3412}
/* Buttons */
.btn{padding:6px 12px;border-radius:8px;border:none;cursor:pointer;font-size:12px;font-weight:600;transition:all .15s}
.btn-p{background:linear-gradient(135deg,var(--pri),var(--pri-l));color:#fff}
.btn-p:hover{transform:translateY(-1px);box-shadow:0 3px 8px rgba(234,88,12,.3)}
.btn-b{background:linear-gradient(135deg,var(--blu),var(--blu-l));color:#fff}
.btn-gh{background:#fff;border:1px solid var(--bd);color:var(--tx2)}
.btn-sm{padding:3px 8px;font-size:11px}
/* Modal */
.modal-bg{position:fixed;inset:0;background:rgba(0,0,0,.45);display:none;align-items:center;justify-content:center;z-index:2000;backdrop-filter:blur(3px)}
.modal-bg.show{display:flex}
.modal-c{position:relative;background:#fff;border-radius:14px;padding:20px;min-width:340px;max-width:520px;box-shadow:0 20px 50px rgba(0,0,0,.2);max-height:85vh;overflow:hidden;display:flex;flex-direction:column}
/* v1.2.4 统一弹窗关闭：右上角 ×（hover 反馈 + aria-label），配 ESC 快捷键 */
.modal-x{position:absolute;top:10px;right:10px;width:30px;height:30px;border:none;background:transparent;border-radius:8px;font-size:20px;line-height:1;color:#a8a29e;cursor:pointer;display:flex;align-items:center;justify-content:center;padding:0;transition:background .12s,color .12s,transform .12s;z-index:3}
.modal-x:hover{background:#fee2e2;color:#b91c1c;transform:scale(1.08)}
.modal-x:focus-visible{outline:2px solid #f59e0b;outline-offset:1px}
/* v1.2.4 任课学生课表弹窗（stuWin）的 ✕ 与 modal-x 同规格：hover 反馈 + aria-label */
.stuwin-x{margin-left:auto;background:rgba(255,255,255,.18);border:none;color:#fff;width:24px;height:24px;border-radius:50%;font-size:14px;line-height:1;cursor:pointer;display:flex;align-items:center;justify-content:center;padding:0;transition:background .12s,transform .12s}
.stuwin-x:hover{background:rgba(255,255,255,.4);transform:scale(1.12)}
.modal-t{font-size:15px;font-weight:700;margin-bottom:12px;padding-bottom:8px;padding-right:34px;border-bottom:2px solid var(--pri-l);color:#9a3412;flex:none;cursor:move;user-select:none}
/* v1.3.28b 弹窗固定头：容器不滚动（flex column），仅内容区 #modalB 滚动 → 标题行+关闭按钮固定在弹窗顶部 */
#modalB{flex:1;overflow-y:auto;min-height:0}
/* v1.3.28b 周期选择器侧格 hover 提亮（棕色头部内） */
.pbar-side:hover{background:rgba(255,255,255,.18)!important}
.pbar-side:active{background:rgba(255,255,255,.28)!important}
/* Toast */
.toast{position:fixed;bottom:24px;right:24px;background:linear-gradient(135deg,#1e293b,#334155);color:#fff;padding:10px 18px;border-radius:10px;font-size:13px;z-index:9999;box-shadow:0 8px 20px rgba(0,0,0,.25);animation:tI .25s}
@keyframes tI{from{transform:translateY(10px);opacity:0}to{transform:translateY(0);opacity:1}}
/* Login */
.login-bg{position:fixed;inset:0;background:linear-gradient(135deg,#1c1917,#44403c 50%,#0c4a6e);z-index:9999;display:flex;align-items:center;justify-content:center}
.login-c{background:#fff;border-radius:16px;padding:36px;width:100%;max-width:380px;box-shadow:0 25px 60px rgba(0,0,0,.35)}
.login-c h1{text-align:center;font-size:20px;color:#1c1917}.login-c .sub{text-align:center;font-size:12px;color:#78716c;margin-bottom:18px}
.lf{margin-bottom:12px}.lf label{display:block;font-size:12px;color:#78716c;margin-bottom:4px;font-weight:600}
.lf input{width:100%;padding:10px;border:1.5px solid #fde4cc;border-radius:8px;font-size:14px}
.lf input:focus{outline:none;border-color:var(--pri);box-shadow:0 0 0 3px rgba(234,88,12,.1)}
.lb{width:100%;padding:10px;background:linear-gradient(135deg,var(--pri),var(--pri-l));color:#fff;border:none;border-radius:8px;font-size:14px;font-weight:700;cursor:pointer}
.lm{padding:8px 12px;border-radius:8px;font-size:12px;margin-bottom:10px;display:none}
.lm.err{background:#fef2f2;color:#991b1b;display:block;border:1px solid #fecaca}
.lm.ok{background:#f0fdf4;color:#166534;display:block;border:1px solid #bbf7d0}
/* Table for my students */
.mt-wrap{overflow-x:auto;-webkit-overflow-scrolling:touch;overscroll-behavior-x:contain}
.mt{width:100%;border-collapse:collapse;font-size:11px;min-width:1020px} /* v2.3.6 删两列+整体瘦身后下调，避免横向溢出 */ /* v1.3.29c 1100→1450：列宽调优后固定列 1270px，给学科弹性列保底空间 */
.mt td,.mt th{overflow:hidden;text-overflow:ellipsis}
/* v1.3.29b table-layout:fixed 不再全局挂在 .mt（周总结汇总表等无 colgroup 表格会被均分误伤），改为学生表格内联声明 */
.mt th{background:linear-gradient(135deg,#fff7ed,#ffedd5);padding:6px 8px;text-align:left;font-weight:700;color:#9a3412;border-bottom:2px solid var(--pri-l);font-size:10px;white-space:nowrap}
.mt td{padding:5px 8px;border-bottom:1px solid #fdf2e3;vertical-align:middle}
.mt tr:hover td{background:#fefce8}
/* Self-study checkbox */
.ss-chk{width:20px;height:20px;border:2px solid #d6d3d1;border-radius:5px;cursor:pointer;display:inline-flex;align-items:center;justify-content:center;font-size:14px;transition:all .15s;background:#fff}
.ss-chk.on{background:linear-gradient(135deg,#22c55e,#16a34a);border-color:#16a34a;color:#fff}
.ss-chk:hover{border-color:#22c55e}
/* Status badge */
.st-b{display:inline-block;padding:2px 8px;border-radius:8px;font-size:10px;font-weight:600;cursor:pointer}
.st-b.frozen{background:#dbeafe;color:#1e40af}
.st-b.lost{background:#fecaca;color:#991b1b}
.st-b.active{background:#dcfce7;color:#166534}
.st-b:hover{opacity:.8}
/* Flow table */
.flow-t{width:100%;border-collapse:collapse;font-size:12px;table-layout:fixed} /* v2.3.2 三张分区表共用固定列宽，解决列不对齐 */
.flow-t th{background:linear-gradient(135deg,#dbeafe,#bfdbfe);padding:8px 10px;text-align:left;font-weight:700;color:#1e40af;border-bottom:2px solid var(--blu-l);font-size:11px}
.flow-t td{padding:8px 10px;border-bottom:1px solid #e0f2fe;overflow:hidden;text-overflow:ellipsis}
.flow-t tr.lost-row td{background:#f5f5f4;color:#a8a29e;text-decoration:line-through}
/* Scrollbar */
::-webkit-scrollbar{width:6px;height:6px}
::-webkit-scrollbar-track{background:#f5f5f4}
::-webkit-scrollbar-thumb{background:#a8a29e;border-radius:3px}
.empty{text-align:center;padding:20px;color:#a8a29e;font-size:12px}
/* Course select */
.cs-sel{width:100%;padding:6px;border:1.5px solid #fde4cc;border-radius:6px;font-size:12px}
.cs-in{width:100%;padding:6px;border:1.5px solid #fde4cc;border-radius:6px;font-size:12px}
/* Highlight low weeks */
.low-week{background:#fef08a!important;color:#854d0e!important;font-weight:800!important;border-radius:4px;padding:1px 4px}
.org-row{transition:border-color .15s}
.org-row:hover{border-color:#a8a29e!important}

/* v1.3.25 小字注解暂时隐藏（发现问题逐项恢复：删除对应选择器行即可） */
span[style*="font-size:10px"][style*="color:#78716c"],
span[style*="font-size:10.5px"][style*="color:#78716c"],
span[style*="font-size:11px"][style*="color:#78716c"],
span[style*="font-size:11.5px"][style*="color:#78716c"],
span[style*="font-size:12px"][style*="color:#78716c"],
span[style*="font-size:10px"][style*="color:#a8a29e"],
span[style*="font-size:11px"][style*="color:#a8a29e"],
div[style*="font-size:11px"][style*="color:#78716c"],
div[style*="font-size:12px"][style*="color:#78716c"],
div[style*="font-size:12px"][style*="color:#a8a29e"],
span[style*="font-size:11px"][style*="color:#94a3b8"],
div[style*="font-size:11px"][style*="color:#92400e"][style*="margin-left"],
div[style*="font-size:12px"][style*="color:#57534e"][style*="white-space:nowrap"]{display:none !important}

/* v1.3.27 移动端基础优化 */
@media (max-width:768px){
  .sb{width:64px}.sb .sb-logo{font-size:11px}
  .wt-x th,.wt-x td{font-size:10px!important;padding:4px 4px!important}
  .cb .n{font-size:9px}.cb .t{font-size:8px}
  .modal-c{width:94vw!important;max-width:94vw!important;padding:14px!important}
  .btn{padding:8px 12px}
  h1{font-size:18px}
}
.ws-scroll{-webkit-overflow-scrolling:touch;scroll-behavior:smooth}

.todo-badge{display:inline-block;min-width:16px;height:16px;line-height:16px;border-radius:8px;background:#dc2626;color:#fff;font-size:10px;text-align:center;margin-left:4px;padding:0 4px}
.kz-ui[title="删除此条"]{min-width:20px;min-height:20px;padding:0 4px;border-radius:4px;background:#fef2f2;display:inline-flex;align-items:center;justify-content:center;pointer-events:auto;position:relative;z-index:5;line-height:1}
.kz-ui[title="删除此条"]:hover{background:#fee2e2}
.btn{display:inline-flex;align-items:center;justify-content:center;gap:3px}
