:root{
  --bg:#f4f7fb; --panel:#fff; --text:#13233a; --muted:#68778d; --line:#e4eaf2;
  --primary:#3563e9; --danger:#d9363e; --danger-bg:#fff1f2; --warn:#d17a00; --warn-bg:#fff7e8;
  --ok:#16875d; --ok-bg:#eefaf5; --dark:#1f2937; --shadow:0 10px 30px rgba(27,47,84,.08);
}
*{box-sizing:border-box} body{margin:0;background:var(--bg);color:var(--text);font-family:Inter,"PingFang SC","Microsoft YaHei",system-ui,sans-serif}
button,input,textarea,select{font:inherit}.app-shell{max-width:1780px;margin:0 auto;padding:24px 28px 48px}.topbar{display:flex;justify-content:space-between;gap:20px;align-items:flex-start;margin-bottom:20px}.eyebrow{font-size:13px;font-weight:800;color:#6b7890}.topbar h1{font-size:34px;margin:6px 0 6px;letter-spacing:-1px}.topbar p{margin:0;color:var(--muted)}.top-actions{display:flex;gap:10px}.btn{border:0;border-radius:12px;padding:11px 16px;font-weight:800;cursor:pointer}.btn-light{background:#fff;border:1px solid var(--line);color:var(--text)}.btn-primary{background:var(--primary);color:#fff}.btn-danger{background:var(--danger);color:#fff}.btn-warn{background:#fff4db;color:#9a5d00;border:1px solid #ffd996}.btn-ghost{background:#f4f6fa;color:#42516b}.btn:disabled{opacity:.5;cursor:not-allowed}
.stats{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:12px;margin-bottom:14px}.stat{background:var(--panel);border:1px solid var(--line);border-radius:16px;padding:17px 18px;box-shadow:var(--shadow)}.stat .label{font-size:13px;color:var(--muted);font-weight:700}.stat .value{font-size:28px;font-weight:900;margin-top:4px}.stat .sub{font-size:12px;color:var(--muted);margin-top:2px}.stat.danger .value{color:var(--danger)}.stat.warn .value{color:var(--warn)}
.panel{background:var(--panel);border:1px solid var(--line);border-radius:18px;box-shadow:var(--shadow)}.toolbar{display:flex;gap:14px;padding:12px;margin-bottom:10px;align-items:center}.search{min-width:320px;flex:1;border:1px solid var(--line);background:#f8fafc;border-radius:12px;padding:12px 14px;outline:none}.search:focus{border-color:#9eb3ff;box-shadow:0 0 0 3px #edf1ff}.filters{display:flex;gap:7px;flex-wrap:wrap}.chip{border:0;background:#f2f5fa;color:#607087;padding:9px 12px;border-radius:10px;font-weight:800;cursor:pointer}.chip.active{background:#eaf0ff;color:#2d59d9}.legend{display:flex;gap:18px;flex-wrap:wrap;color:#728096;font-size:12px;padding:0 3px 10px}.dot{display:inline-block;width:9px;height:9px;border-radius:50%;margin-right:6px}.dot.normal{background:var(--ok)}.dot.active{background:var(--danger)}.dot.handover{background:var(--warn)}.dot.closed{background:#8693a8}
.table-panel{overflow:hidden}.table-wrap{overflow:auto;max-height:calc(100vh - 295px)}table{border-collapse:separate;border-spacing:0;width:100%;min-width:1500px}thead th{position:sticky;top:0;z-index:4;background:#f9fbfd;color:#536278;font-size:12px;text-align:left;padding:11px 10px;border-bottom:1px solid var(--line);white-space:nowrap}tbody td{padding:9px 10px;border-bottom:1px solid #edf1f6;font-size:13px;vertical-align:middle}tbody tr:hover{background:#fafcff}tbody tr.row-active{background:linear-gradient(90deg,#fff6f6 0,#fff 23%)}tbody tr.row-handover{box-shadow:inset 4px 0 0 #e4a01b}.turbine{font-weight:900;font-size:15px;white-space:nowrap}.model{font-size:11px;color:#718096;margin-top:2px}.badge{display:inline-flex;align-items:center;gap:5px;border-radius:999px;padding:5px 9px;font-size:11px;font-weight:900;white-space:nowrap}.badge.ok{background:var(--ok-bg);color:var(--ok)}.badge.danger{background:var(--danger-bg);color:var(--danger)}.badge.warn{background:var(--warn-bg);color:var(--warn)}.badge.gray{background:#f0f3f7;color:#68778d}.cell-strong{font-weight:800}.reason{max-width:230px;white-space:normal;line-height:1.35;color:#3b4b63}.muted{color:#98a3b4}.handover-box{min-width:150px}.handover-box .who{font-weight:800}.handover-box .time{font-size:11px;color:#7c889a;margin-top:2px}.actions{display:flex;gap:6px;white-space:nowrap}.mini{padding:7px 9px;border-radius:9px;border:1px solid var(--line);background:#fff;font-size:12px;font-weight:800;cursor:pointer}.mini.primary{color:#2f5be7}.mini.warn{color:#a76600;background:#fff9ed;border-color:#ffe2aa}.mini.danger{color:#c92f38;background:#fff5f5;border-color:#ffc9cd}.sticky-right{position:sticky;right:0;background:#f9fbfd;z-index:3}tbody td.sticky-right{background:inherit}.empty{text-align:center;color:#8b97a8;padding:40px}.hidden{display:none!important}
.modal-backdrop{position:fixed;inset:0;background:rgba(15,23,42,.45);display:flex;align-items:center;justify-content:center;padding:24px;z-index:50}.modal{background:#fff;border-radius:20px;width:min(900px,96vw);max-height:92vh;overflow:auto;box-shadow:0 30px 80px rgba(0,0,0,.2)}.modal-head{display:flex;align-items:flex-start;justify-content:space-between;padding:22px 24px 14px;border-bottom:1px solid var(--line)}.modal-head h2{margin:0;font-size:24px}.modal-head p{margin:5px 0 0;color:var(--muted);font-size:13px}.close-x{border:0;background:#f2f5f9;width:38px;height:38px;border-radius:11px;font-size:22px;cursor:pointer}.modal-body{padding:20px 24px}.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:15px}.field.full{grid-column:1/-1}.field label{display:block;font-size:12px;font-weight:900;color:#55657c;margin-bottom:6px}.field input,.field textarea,.field select{width:100%;border:1px solid #dfe6ef;border-radius:11px;padding:11px 12px;outline:none;background:#fff}.field textarea{min-height:84px;resize:vertical}.field input:focus,.field textarea:focus,.field select:focus{border-color:#9fb2f8;box-shadow:0 0 0 3px #eef2ff}.split-title{grid-column:1/-1;font-weight:900;margin-top:4px;padding-top:8px;border-top:1px dashed #dfe5ed}.modal-foot{display:flex;justify-content:flex-end;gap:10px;padding:14px 24px 22px}.hint{font-size:12px;color:#7d899a;line-height:1.6}.required{color:var(--danger)}
.timeline{display:flex;flex-direction:column;gap:10px}.event{border:1px solid var(--line);border-radius:14px;padding:13px 14px;background:#fbfcfe}.event-top{display:flex;justify-content:space-between;gap:12px}.event-action{font-weight:900}.event-time{font-size:12px;color:#8490a2}.event-desc{margin-top:6px;line-height:1.55;color:#415069}.event-person{font-size:12px;color:#607087;margin-top:5px}.toast{position:fixed;left:50%;bottom:28px;transform:translateX(-50%) translateY(20px);background:#152238;color:white;padding:11px 16px;border-radius:12px;opacity:0;pointer-events:none;transition:.2s;z-index:100}.toast.show{opacity:1;transform:translateX(-50%) translateY(0)}
@media(max-width:900px){.app-shell{padding:16px 12px 40px}.topbar{flex-direction:column}.stats{grid-template-columns:repeat(2,1fr)}.toolbar{flex-direction:column;align-items:stretch}.search{min-width:0}.table-wrap{max-height:none}.form-grid{grid-template-columns:1fr}.field.full,.split-title{grid-column:auto}.topbar h1{font-size:29px}.top-actions{width:100%}.top-actions .btn{flex:1}}
.version-tag{display:inline-flex;vertical-align:middle;font-size:12px;background:#eaf0ff;color:#3158cf;border-radius:999px;padding:4px 8px;margin-left:6px;letter-spacing:0}
.top-actions{flex-wrap:wrap;justify-content:flex-end}.dot.handed{background:#4f6fd8}
.shift-banner{margin-bottom:14px;border:1px solid #ffd993;background:#fff8e8;border-radius:16px;padding:14px 16px;color:#805300;font-weight:800;box-shadow:var(--shadow)}
.shift-banner.done{border-color:#bde8d5;background:#effbf5;color:#126b4b}.shift-banner strong{font-size:16px}
.active-board{padding:16px;margin-bottom:14px}.section-head{display:flex;justify-content:space-between;gap:16px;align-items:center;margin-bottom:12px}.section-head h2{font-size:18px;margin:0}.section-head p{font-size:12px;color:var(--muted);margin:4px 0 0}.active-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px}.active-card{border:1px solid #ffd4d7;background:#fff8f8;border-radius:14px;padding:12px;min-width:0;position:relative}.active-card.pending{border-color:#ffd28d;background:#fff9ee}.active-card.handed{border-color:#cbd5ff;background:#f6f8ff}.active-card .ac-top{display:flex;justify-content:space-between;gap:8px;align-items:center}.active-card .ac-turbine{font-weight:900;font-size:16px}.active-card .ac-status{font-size:11px;font-weight:900;border-radius:999px;padding:4px 7px;background:#fff;border:1px solid currentColor}.active-card .ac-main{font-size:13px;font-weight:800;margin-top:9px;line-height:1.45}.active-card .ac-sub{font-size:12px;color:#66768d;margin-top:7px;line-height:1.45}.active-card .ac-actions{display:flex;gap:5px;margin-top:10px;flex-wrap:wrap}.empty.compact{padding:18px}
.duration{font-weight:900;white-space:nowrap}.duration.fresh{color:#536278}.duration.long{color:#b36c00}.duration.very-long{color:#c8323b}.duration small{display:block;font-size:10px;font-weight:700;color:#8a96a8;margin-top:2px}
.badge.handed{background:#eef1ff;color:#4f62be}.row-handed{box-shadow:inset 4px 0 0 #6378d4}.row-very-long{background:linear-gradient(90deg,#fff0f1 0,#fff 28%)}
@media(max-width:1300px){.active-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(max-width:700px){.active-grid{grid-template-columns:1fr}.section-head{align-items:flex-start}.top-actions{display:grid;grid-template-columns:1fr 1fr;width:100%}.top-actions .btn{width:100%}}
