body.schedule-page{background:#f4f6fa}
.schedule-layout{display:flex;gap:16px;align-items:flex-start}
.sidebar{flex:0 0 312px;width:312px;display:grid;gap:13px;position:sticky;top:80px;max-height:calc(100vh - 104px);overflow:auto;padding-right:3px}
.sidebar.collapsed{display:none}
.side-block{background:#fff;border:1px solid #e2e7ee;border-radius:14px;padding:12px;box-shadow:0 4px 16px #1722350a}
.side-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:9px}
.side-head h3{margin:0;font-size:13px;letter-spacing:.06em;color:#5b6a80;font-weight:900}
.side-head button{border:1px solid #dfe5ee;background:#fff;color:#4a5c76;border-radius:7px;padding:3px 8px;font-size:11px;font-weight:800}
.side-head button:hover{border-color:#c99c34;color:#8a6412}
.account-card{border:1px solid #e5eaf1;border-radius:11px;padding:9px;margin-bottom:9px;background:#fbfcfe}
.account-card .acc-top{display:flex;align-items:center;gap:6px;margin-bottom:7px}
.account-card .acc-top input[type=text]{flex:1;min-width:0;border:1px solid #d5dde7;border-radius:7px;padding:4px 7px;font-size:13px;font-weight:800;color:#243149}
.account-card .acc-top input[type=color]{width:26px;height:26px;border:1px solid #d5dde7;border-radius:7px;background:#fff;padding:1px}
.acc-btn{border:0;background:none;color:#8894a5;font-size:11px;font-weight:800;padding:3px 5px;border-radius:6px}
.acc-btn:hover{background:#f2f5f9;color:#42536d}
.acc-btn.danger:hover{background:#fdeff1;color:#c8445d}
.acc-group{display:flex;align-items:center;gap:6px;font-size:11px;color:#7b8798;margin-bottom:7px}
.acc-group select{flex:1;min-width:0;border:1px solid #d5dde7;border-radius:7px;padding:3px 5px;font-size:11px;background:#fff}
.shift-list{display:grid;gap:4px;margin-bottom:7px}
.shift-row{display:grid;grid-template-columns:40px 1fr 62px 62px 18px;gap:4px;align-items:center}
.shift-row input{border:1px solid #dde4ec;border-radius:6px;padding:3px 5px;font-size:11px;min-width:0;background:#fff}
.shift-row input.code{text-align:center;font-weight:800;color:#2f6fc4;background:#f2f7ff}
.shift-row input[type=time]{padding:2px 3px;font-size:10px}
.shift-row .del{border:0;background:none;color:#a7b2c0;font-size:13px;line-height:1;padding:0}
.shift-row .del:hover{color:#c8445d}
.shift-head{display:grid;grid-template-columns:40px 1fr 62px 62px 18px;gap:4px;font-size:10px;color:#a3adba;text-align:center;margin-bottom:2px}
.shift-actions{display:flex;gap:9px;font-size:11px}
.shift-actions button{border:0;background:none;color:#3d6fb0;font-weight:800;padding:0}
.shift-actions button:hover{text-decoration:underline}
.chip-row{display:flex;flex-wrap:wrap;gap:4px;margin-bottom:6px}
.anchor-chip{display:inline-flex;align-items:center;gap:4px;background:#f2f5f9;border:1px solid #e2e8f0;border-radius:99px;padding:2px 6px;font-size:11px;color:#3f4d64}
.anchor-chip button{border:0;background:none;color:#a7b2c0;font-size:11px;padding:0}
.anchor-chip button:hover{color:#c8445d}
.member-add{display:flex;gap:5px}
.member-add select{flex:1;min-width:0;border:1px solid #d5dde7;border-radius:7px;padding:3px 5px;font-size:11px;background:#fff}
.member-add button{border:1px solid #cddef6;background:#eff6ff;color:#2f6fc4;border-radius:7px;padding:3px 8px;font-size:11px;font-weight:800}
.preset-card{border:1px solid #e5eaf1;border-radius:10px;padding:7px;margin-bottom:7px;background:#fbfcfe}
.preset-card .row{display:flex;gap:5px;align-items:center}
.preset-card input{border:1px solid #dde4ec;border-radius:6px;padding:3px 6px;font-size:11px;min-width:0;background:#fff}
.preset-card input.icon{width:32px;text-align:center}
.preset-card input.label{width:56px}
.stats-panel{display:grid;gap:5px;font-size:12px}
.stats-row{display:flex;justify-content:space-between;gap:8px;border-bottom:1px dashed #eef1f5;padding-bottom:3px}
.stats-row b{color:#33425c}
.stats-row span:last-child{color:#7b8798;text-align:right;white-space:nowrap}
.grid-area{flex:1;min-width:0}
.grid-topbar{display:flex;flex-wrap:wrap;justify-content:space-between;gap:10px;align-items:center;background:#fff;border:1px solid #e2e7ee;border-radius:12px;padding:9px 13px;margin-bottom:10px;box-shadow:0 3px 12px #17223508}
.grid-hint{font-size:12px;color:#7b8798;line-height:1.5}
.grid-hint b{color:#4a5c76}
.selection-bar{display:flex;gap:8px;align-items:center;font-size:12px;color:#4a5c76;white-space:nowrap}
.selection-bar strong{color:#a97917}
/* ---------- 筛选栏（账号 / 主播） ---------- */
.filter-bar{flex:1 0 100%;display:flex;flex-wrap:wrap;align-items:center;gap:9px;padding-bottom:8px;border-bottom:1px dashed #e8edf4;order:-1}
.filter-group{position:relative}
.filter-btn{display:inline-flex;align-items:center;gap:6px;border:1px solid #dfe5ee;background:#fff;color:#4a5c76;border-radius:9px;padding:4px 9px;font-size:12px;font-weight:800}
.filter-btn:hover{border-color:#c99c34;color:#8a6412}
.filter-btn[aria-expanded=true]{border-color:#3b82f6;background:#f4f8ff;color:#2f6fc4}
.filter-btn .filter-kicker{color:#98a3b2;font-weight:700}
.filter-btn .filter-label{max-width:196px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.filter-btn .caret{font-style:normal;color:#a7b2c0;font-size:10px}
.filter-panel{position:absolute;top:calc(100% + 6px);left:0;z-index:40;width:262px;max-height:346px;overflow:auto;background:#fff;border:1px solid #e2e7ee;border-radius:12px;box-shadow:0 18px 44px #1722352e;padding:8px}
.filter-panel-head{display:flex;align-items:center;justify-content:space-between;gap:8px;font-size:11px;color:#5b6a80;font-weight:900;letter-spacing:.04em;margin-bottom:6px}
.filter-panel-head button{border:0;background:none;color:#3d6fb0;font-size:11px;font-weight:800;padding:0}
.filter-panel-head button:hover{text-decoration:underline}
.filter-search{width:100%;border:1px solid #dde4ec;border-radius:8px;padding:4px 7px;font-size:12px;margin-bottom:6px}
.filter-item{display:flex;align-items:center;gap:7px;padding:4px 6px;border-radius:8px;font-size:12px;color:#33425c;cursor:pointer}
.filter-item:hover{background:#f4f8ff}
.filter-item input{accent-color:#3b82f6}
.filter-item .swatch{flex:0 0 9px;width:9px;height:9px;border-radius:50%}
.filter-item .filter-item-name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.filter-item .filter-item-hint{margin-left:auto;color:#a3adba;font-size:10px;font-weight:700;white-space:nowrap}
.filter-empty{padding:7px 6px;font-size:12px;color:#98a3b2}
.filter-only{display:inline-flex;align-items:center;gap:5px;font-size:12px;color:#4a5c76;white-space:nowrap}
.filter-only input{accent-color:#3b82f6}
.filter-clear{border:1px solid #e2e7ee;background:#fff;color:#7b8798;border-radius:9px;padding:4px 9px;font-size:12px;font-weight:800}
.filter-clear:hover{border-color:#c8445d;color:#c8445d}
.filter-summary{font-size:12px;color:#8792a3}
.filter-summary b{color:#2f6fc4}
.schedule-table-wrap{overflow:auto;max-height:calc(100vh - 218px);border:1px solid #dfe5ee;border-radius:14px;background:#fff;box-shadow:0 10px 30px #1c273c12}
table.matrix{border-collapse:separate;border-spacing:0;min-width:max-content;font-size:12px}
table.matrix th,table.matrix td{border-right:1px solid #eef1f5;border-bottom:1px solid #eef1f5}
table.matrix thead th{position:sticky;top:0;z-index:6;background:#f8fafc;padding:5px 3px;font-weight:900;color:#5b6a80;min-width:52px;font-size:11px}
table.matrix thead th.weekend{background:#fff8e9;color:#a97917}
table.matrix thead th em{display:block;font-style:normal;font-weight:600;color:#a3adba;font-size:10px}
table.matrix th.corner{left:0;z-index:9;min-width:184px;text-align:left;padding:7px 10px;color:#8b96a5;font-size:11px}
table.matrix td.row-head{position:sticky;left:0;z-index:5;background:#fff;text-align:left;padding:5px 9px;min-width:184px;font-weight:700;color:#2f3d54;border-right:1px solid #e5eaf1}
table.matrix td.row-head .code{color:#2f6fc4;font-weight:900;margin-right:5px}
table.matrix td.row-head small{display:block;color:#9aa5b5;font-weight:600;font-size:10px;margin-top:1px}
table.matrix tr.account-band td{position:sticky;left:0;background:#fff8e9;color:#6c4e15;font-weight:900;padding:5px 10px;font-size:12px;z-index:6}
.cell{position:relative;height:50px;padding:5px 3px 13px;text-align:center;cursor:pointer;background:#fff;user-select:none;transition:background .08s}
.cell:hover{background:#f2f7ff}
.cell.selected{outline:2px solid #3b82f6;outline-offset:-2px;background:#eff6ff}
.cell.conflict{background:#fee2e2}
.cell.conflict .anchor{color:#991b1b}
.cell.rest{background:#fff8e9}
.cell.rest:hover{background:#fff3da}
.cell .anchor{display:block;font-size:12px;font-weight:800;color:#22304a;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.cell .anchor.empty{color:#c9d1db;font-weight:600}
.cell .code-badge{position:absolute;left:4px;bottom:2px;font-size:9px;font-weight:900;color:#4b86d6;pointer-events:none}
.cell .note-badge{position:absolute;right:4px;bottom:2px;font-size:9px;color:#98a3b2;max-width:68%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;pointer-events:none}
.cell .note-badge.rest{color:#c07d16;font-weight:900}
.cell.readonly{cursor:default}
/* 主播筛选：命中高亮 / 未命中淡化 / 只看所选主播时留白 */
.cell.hit:not(.conflict){background:#eff6ff}
.cell.hit{box-shadow:inset 0 0 0 2px #3b82f6}
.cell.hit .anchor{color:#1d4ed8}
.cell.muted:not(.conflict):not(.rest){background:#fbfcfe}
.cell.muted .anchor{color:#b9c2ce;font-weight:600}
.cell.muted .note-badge{opacity:.45}
.cell.hollow:not(.conflict):not(.rest){background:#fbfcfe}
.cell.hollow .anchor{color:#dfe5ee}
.save-state{margin:9px 3px 0;font-size:12px;color:#8792a3}
.save-state.saving{color:#a97917}
.save-state.error{color:#c8445d}
.context-menu{position:fixed;z-index:60;min-width:186px;max-height:58vh;overflow:auto;background:#fff;border:1px solid #e2e7ee;border-radius:11px;box-shadow:0 18px 44px #17223533;padding:5px}
.context-menu .cm-head{padding:5px 9px;font-size:11px;color:#98a3b2;border-bottom:1px solid #f1f4f7;margin-bottom:4px}
.context-menu button{display:block;width:100%;text-align:left;border:0;background:none;padding:7px 10px;border-radius:7px;font-size:13px;color:#253148;font-weight:700}
.context-menu button:hover{background:#eff5ff}
.context-menu button.danger:hover{background:#fdeff1;color:#c8445d}
.anchor-dialog{max-width:680px}
.anchor-dialog h2{margin:5px 0 9px}
.modal-current{background:#f8fafc;border:1px solid #e7ecf2;border-radius:9px;padding:9px 11px;font-size:13px;color:#5b6a80;margin-bottom:8px}
.anchor-search{width:100%;border:1px solid #d5dde7;border-radius:8px;padding:8px 10px;font-size:13px;margin-bottom:8px}
.anchor-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(96px,1fr));gap:7px;max-height:216px;overflow:auto;padding:1px}
.anchor-grid button{border:1px solid #e2e7ee;background:#fff;border-radius:8px;padding:8px 6px;font-size:13px;font-weight:700;color:#2c3a52;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.anchor-grid button:hover{border-color:#9fc2f0;background:#eff6ff}
.anchor-grid button.selected{border-color:#3b82f6;background:#e4efff;color:#1d4ed8}
.anchor-grid button .pick-order{display:inline-grid;place-items:center;min-width:15px;height:15px;margin-left:5px;padding:0 3px;border-radius:99px;background:#3b82f6;color:#fff;font-size:10px;font-style:normal;font-weight:900;vertical-align:middle}
.anchor-fill-row{display:flex;justify-content:flex-end;margin-top:8px}
.modal-count{color:#98a3b2;font-size:12px;font-weight:600}
.modal-section{border-top:1px solid #eef1f5;margin-top:14px;padding-top:4px}
.note-input-row{display:flex;gap:8px;align-items:center}
.note-input-row .modal-note-input{flex:1;min-width:0}
.note-input-row .secondary-btn{white-space:nowrap}
.note-preset-row{display:flex;flex-wrap:wrap;gap:7px}
.note-preset-row button{border:1px solid #e2e7ee;background:#fff;border-radius:8px;padding:6px 11px;font-size:12px;font-weight:800;color:#42536d}
.note-preset-row button:hover{border-color:#c99c34}
.tone-amber{background:#fef3c7!important;border-color:#fde68a!important;color:#a16207!important}
.tone-blue{background:#dbeafe!important;border-color:#bfdbfe!important;color:#1d4ed8!important}
.tone-purple{background:#ede9fe!important;border-color:#ddd6fe!important;color:#6d28d9!important}
.tone-rose{background:#ffe4e6!important;border-color:#fecdd3!important;color:#be123c!important}
.tone-green{background:#d1fae5!important;border-color:#a7f3d0!important;color:#047857!important}
.tone-slate{background:#e2e8f0!important;border-color:#cbd5e1!important;color:#334155!important}
.field-label{display:block;font-size:12px;font-weight:900;color:#4a5c76;margin:14px 0 6px}
.modal-note-input{width:100%;border:1px solid #cbd5e1;border-radius:9px;padding:9px 11px;font-size:14px}
.modal-note-input:focus,.anchor-search:focus{outline:2px solid #d6aa49;outline-offset:1px}
/* ---------- 审批记录（保留最近两个月） ---------- */
.modal-shift-select{flex:1;min-width:0;border:1px solid #cbd5e1;border-radius:9px;padding:9px 11px;font-size:13px;background:#fff}
.modal-shift-select:focus{outline:2px solid #d6aa49;outline-offset:1px}
.modal-shift-select:disabled{background:#f6f8fb;color:#98a3b2}
.modal-shift-hint{margin:7px 0 0;font-size:11px;color:#98a3b2;line-height:1.6}
/* 单元格里的销售 + 侧栏销售名单 + 操作记录 */
.cell .cell-sales{display:block;font-size:9px;line-height:1.05;color:#8b96a5;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.sales-chip{display:inline-flex;align-items:center;gap:3px;background:#f2f7ff;border:1px solid #dbe6f7;border-radius:99px;padding:2px 4px 2px 8px;font-size:11px;color:#3f4d64}
.sales-chip .acc-btn{padding:0 3px}
.change-row .change-sales{grid-column:1/-1;font-size:11px;color:#7b8798;margin-top:4px;line-height:1.5}
.history-restore{margin-top:6px;padding:6px 10px;font-size:12px}
/* 单元格单独改过班次：徽标用琥珀色区分，并加小标记 */
.cell .code-badge.override{color:#b06f0c}
.cell .code-badge.override::after{content:"·";margin-left:2px;color:#e0a83c}
.record-heading{align-items:center;gap:8px}
.record-note{margin-left:2px;margin-right:auto;font-size:11px;color:#a3adba}
.record-list .record-item{border:1px solid #e2e7ee;border-radius:11px;background:#fbfcfe;padding:11px 13px}
.record-list .record-item .event-top{display:flex;justify-content:space-between;gap:8px;align-items:center}
.record-list .record-item strong{display:block;margin:7px 0 2px;font-size:14px;color:#22304a}
.record-list .record-item p{margin:0;color:#64748b;font-size:12px;line-height:1.6}
.record-list .record-changes{margin-top:6px;font-size:12px;color:#526174;line-height:1.7}
.record-list .record-final{color:#2f6fc4;font-weight:800}
.record-list .record-meta{margin-top:6px;font-size:11px;color:#98a3b2}
@media(max-width:1180px){.schedule-layout{flex-direction:column}.sidebar{position:static;width:100%;flex:1 1 auto;max-height:none}.schedule-table-wrap{max-height:none}}
@media print{.sidebar,.grid-topbar,.save-state{display:none!important}main{padding:0;max-width:none}.schedule-table-wrap{max-height:none;overflow:visible;border:0;box-shadow:none}table.matrix thead th,table.matrix td.row-head,table.matrix tr.account-band td,table.matrix th.corner{position:static}.cell{height:auto}}
