:root{--primary:#4a90d9;--primary-light:#e8f0fe;--primary-dark:#3570b0;--success:#52c41a;--success-light:#f6ffed;--warning:#faad14;--warning-light:#fffbe6;--danger:#ff4d4f;--danger-light:#fff2f0;--purple:#722ed1;--purple-light:#f9f0ff;--bg:#f0f2f5;--card-bg:#fff;--text:#333;--text-light:#888;--border:#e8e8e8;--shadow:0 2px 12px #00000014;--radius:8px}*{box-sizing:border-box;margin:0;padding:0}body{background:var(--bg);color:var(--text);min-height:100vh;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,PingFang SC,Hiragino Sans GB,Microsoft YaHei,sans-serif}.header{color:#fff;z-index:100;background:linear-gradient(135deg,#4a90d9,#2b5ea7);justify-content:space-between;align-items:center;padding:14px 24px;display:flex;position:sticky;top:0;box-shadow:0 2px 8px #4a90d966}.header h1{font-size:18px;font-weight:600}.btn{cursor:pointer;border:none;border-radius:6px;align-items:center;gap:4px;padding:8px 16px;font-size:13px;font-weight:500;transition:all .2s;display:inline-flex}.btn:hover{transform:translateY(-1px);box-shadow:0 2px 6px #00000026}.btn-primary{background:var(--primary);color:#fff}.btn-primary:hover{background:var(--primary-dark)}.btn-success{background:var(--success);color:#fff}.btn-warning{background:var(--warning);color:#fff}.btn-danger{background:var(--danger);color:#fff}.btn-outline{color:var(--primary);border:1px solid var(--primary);background:#fff}.btn-white{color:#fff;background:#fff3;border:1px solid #ffffff4d}.btn-sm{padding:4px 10px;font-size:12px}.btn-xs{padding:2px 8px;font-size:11px}.container{max-width:1200px;margin:0 auto;padding:16px}.tabs{background:var(--card-bg);border-radius:var(--radius);box-shadow:var(--shadow);margin-bottom:16px;display:flex;overflow:hidden}.tab{text-align:center;cursor:pointer;color:var(--text-light);background:0 0;border:none;border-bottom:3px solid #0000;flex:1;padding:12px 8px;font-size:14px;transition:all .2s}.tab.active{color:var(--primary);border-bottom-color:var(--primary);background:var(--primary-light);font-weight:600}.tab:hover{background:var(--primary-light)}.card{background:var(--card-bg);border-radius:var(--radius);box-shadow:var(--shadow);margin-bottom:16px;padding:20px}.card-title{border-bottom:1px solid var(--border);justify-content:space-between;align-items:center;margin-bottom:16px;padding-bottom:12px;font-size:16px;font-weight:600;display:flex}.form-group{margin-bottom:16px}.form-group label{color:var(--text-light);margin-bottom:6px;font-size:13px;font-weight:500;display:block}.form-group input,.form-group select{border:1px solid var(--border);border-radius:6px;width:100%;padding:8px 12px;font-size:14px;transition:border-color .2s}.form-group input:focus,.form-group select:focus{border-color:var(--primary);outline:none;box-shadow:0 0 0 3px #4a90d91a}.form-row{gap:12px;display:flex}.form-row .form-group{flex:1}.staff-list{flex-wrap:wrap;gap:8px;margin-top:12px;display:flex}.staff-tag{border-radius:20px;align-items:center;gap:6px;padding:6px 12px;font-size:13px;font-weight:500;display:inline-flex}.staff-tag .remove{cursor:pointer;background:#0000001a;border-radius:50%;justify-content:center;align-items:center;width:16px;height:16px;font-size:10px;display:flex}.staff-tag .remove:hover{background:var(--danger);color:#fff}.staff-tag.group-a{background:var(--primary-light);color:var(--primary)}.staff-tag.group-b{background:var(--success-light);color:var(--success)}.staff-tag.group-c{background:var(--warning-light);color:var(--warning)}.staff-tag.group-d{background:var(--purple-light);color:var(--purple)}.radio-group{flex-wrap:wrap;gap:12px;display:flex}.radio-item{border:2px solid var(--border);cursor:pointer;border-radius:8px;flex-direction:column;align-items:center;gap:4px;padding:10px 16px;font-size:14px;transition:all .2s;display:flex}.radio-item:hover{border-color:var(--primary-light)}.radio-item.selected{border-color:var(--primary);background:var(--primary-light);color:var(--primary);font-weight:500}.calendar-header{justify-content:space-between;align-items:center;margin-bottom:16px;display:flex}.calendar-header h3{font-size:18px}.calendar-nav{align-items:center;gap:8px;display:flex}.calendar-table{border-collapse:collapse;table-layout:fixed;width:100%}.calendar-table th{text-align:center;color:var(--text-light);border:1px solid var(--border);background:#fafafa;padding:10px 4px;font-size:13px}.calendar-table td{border:1px solid var(--border);vertical-align:top;cursor:pointer;min-height:70px;padding:4px;transition:background .15s;position:relative}.calendar-table td:hover{background:var(--primary-light)}.calendar-table td.today{background:#fff7e6}.calendar-table td.other-month{opacity:.3}.day-num{color:var(--text-light);margin-bottom:2px;font-size:12px;font-weight:500}.shift-tag{white-space:nowrap;text-overflow:ellipsis;color:#fff;border-radius:4px;margin-bottom:2px;padding:2px 4px;font-size:10px;font-weight:500;display:block;overflow:hidden}.leave-tag{color:#fff;background:#999;border-radius:4px;margin-bottom:2px;padding:2px 4px;font-size:10px;font-weight:500;text-decoration:line-through;display:block}.swap-mark{background:var(--danger);border-radius:50%;width:8px;height:8px;position:absolute;top:2px;right:2px}.table-view{overflow-x:auto}.schedule-table{border-collapse:collapse;width:100%;font-size:13px}.schedule-table th,.schedule-table td{border:1px solid var(--border);text-align:center;padding:8px 6px}.schedule-table th{color:var(--text-light);background:#fafafa;font-weight:600;position:sticky;top:0}.shift-cell{color:#fff;border-radius:4px;margin:1px;padding:3px 6px;font-size:11px;font-weight:500;display:inline-block}.name-col{text-align:left;background:#fafafa;min-width:80px;padding-left:12px;font-weight:600}.modal-overlay{z-index:200;background:#00000080;justify-content:center;align-items:center;display:none;position:fixed;inset:0}.modal-overlay.active{display:flex}.modal{background:#fff;border-radius:12px;width:90%;max-width:500px;max-height:80vh;padding:24px;overflow-y:auto;box-shadow:0 8px 32px #0003}.modal h3{margin-bottom:16px;font-size:16px}.modal-actions{justify-content:flex-end;gap:8px;margin-top:20px;display:flex}.swap-record{border:1px solid var(--border);background:#fafafa;border-radius:8px;align-items:center;margin-bottom:8px;padding:12px;font-size:13px;display:flex}.swap-record .swap-info{flex:1}.swap-record .swap-time{color:var(--text-light);margin-top:4px;font-size:11px}.swap-record .swap-delete{cursor:pointer;color:var(--danger);margin-left:12px}.legend{flex-wrap:wrap;gap:12px;margin-bottom:12px;display:flex}.legend-item{align-items:center;gap:4px;font-size:12px;display:flex}.legend-dot{border-radius:3px;width:12px;height:12px}.toast{color:#fff;z-index:300;border-radius:8px;padding:12px 20px;font-size:14px;animation:.3s slideIn;position:fixed;top:80px;right:20px;box-shadow:0 4px 12px #0003}.toast.success{background:var(--success)}.toast.error{background:var(--danger)}.toast.info{background:var(--primary)}@keyframes slideIn{0%{opacity:0;transform:translate(100%)}to{opacity:1;transform:translate(0)}}.empty-state{text-align:center;color:var(--text-light);padding:40px 20px}.empty-state .icon{margin-bottom:12px;font-size:48px}@media print{.header,.tabs,.calendar-header .btn,.no-print,.modal-overlay{display:none!important}body{background:#fff}.container{max-width:100%;padding:0}.card{box-shadow:none;page-break-inside:avoid;border:1px solid #ddd}.calendar-table td{min-height:auto}.schedule-table th{-webkit-print-color-adjust:exact;print-color-adjust:exact;background:#eee!important}.shift-cell,.shift-tag,.leave-tag{-webkit-print-color-adjust:exact;print-color-adjust:exact}@page{size:landscape;margin:10mm}}@media (width<=768px){.header h1{font-size:16px}.container{padding:8px}.card{padding:12px}.form-row{flex-direction:column;gap:0}.calendar-table td{padding:2px}.calendar-table td .shift-tag{font-size:9px}.modal{width:95%;padding:16px}}
