: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(auto-fit,minmax(150px,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%}}

/* V2.2 故障时间与停机时长 */
.active-card.stopped{border-color:#f1a1a7;background:#fff6f6;box-shadow:inset 4px 0 0 #d43b45}
.stop-time{color:#c92f38;font-size:13px}
.row-stopped{box-shadow:inset 5px 0 0 #d43b45}
.stop-box{border:1px solid #ffd0d4;background:#fff8f8;border-radius:12px;padding:10px 12px}
.stop-box label{margin-bottom:2px}
.mini-help{font-size:11px;color:#8d6670}


/* V2.3 停机时长分级：<48h / 48-72h / 72-168h / >=168h */
.stat.threshold48 .value{color:#b36c00}
.stat.threshold72 .value{color:#d15f00}
.stat.threshold168 .value{color:#b42318}
.stat.threshold168{border-color:#f3b3b3;background:#fff8f8}

.duration.under48{color:#536278}
.duration.over48{color:#b36c00}
.duration.over72{color:#d15f00}
.duration.over168{color:#b42318}

.duration-level{
  display:inline-flex;
  margin-left:6px;
  padding:2px 6px;
  border-radius:999px;
  font-size:10px;
  font-weight:900;
  vertical-align:middle;
  white-space:nowrap;
}
.duration-level.under48{background:#eef2f7;color:#66758a}
.duration-level.over48{background:#fff3d7;color:#9b6100}
.duration-level.over72{background:#ffe7cf;color:#b54a00}
.duration-level.over168{background:#ffe0e0;color:#a71919;border:1px solid #f3aaaa}

.stop-time.under48{color:#536278}
.stop-time.over48{color:#b36c00}
.stop-time.over72{color:#d15f00}
.stop-time.over168{color:#b42318}

.row-under48{box-shadow:inset 5px 0 0 #aeb8c8}
.row-over48{background:linear-gradient(90deg,#fff8e8 0,#fff 30%)!important;box-shadow:inset 5px 0 0 #d19a25}
.row-over72{background:linear-gradient(90deg,#fff1e5 0,#fff 30%)!important;box-shadow:inset 5px 0 0 #e06a1b}
.row-over168{background:linear-gradient(90deg,#ffe8e8 0,#fff 32%)!important;box-shadow:inset 6px 0 0 #b42318}

.active-card.stop-under48{border-color:#d8dee8}
.active-card.stop-over48{border-color:#e5bd63;background:#fffaf0;box-shadow:inset 4px 0 0 #d19a25}
.active-card.stop-over72{border-color:#e89a5f;background:#fff7f0;box-shadow:inset 4px 0 0 #e06a1b}
.active-card.stop-over168{border-color:#df7777;background:#fff3f3;box-shadow:inset 5px 0 0 #b42318}

.chip.threshold48-chip{color:#9b6100;background:#fff7e5}
.chip.threshold72-chip{color:#b54a00;background:#fff0e4}
.chip.threshold168-chip{color:#a71919;background:#ffe9e9}
.chip.threshold48-chip.active{background:#f5d88f;color:#7a4800}
.chip.threshold72-chip.active{background:#f6c39b;color:#8c3600}
.chip.threshold168-chip.active{background:#f3b3b3;color:#7f1010}

.dot.t48{background:#d19a25}
.dot.t72{background:#e06a1b}
.dot.t168{background:#b42318}

/* V2.4 单一停机时间 + 设备主人 */
.ac-owner{margin-top:3px;font-size:11px;font-weight:800;color:#66758a}
.owner-cell{font-weight:800;color:#24344e;white-space:nowrap}
@media(max-width:900px){.owner-cell{white-space:normal}}
