﻿:root{--bg:#edf3fa;--ink:#172033;--muted:#69758a;--line:#dfe7f2;--blue:#2563eb;--green:#159b5b;--amber:#d97706;--red:#dc2626}*{box-sizing:border-box}body{margin:0;min-width:1000px;color:var(--ink);font-family:"Microsoft YaHei UI","Segoe UI",sans-serif;background:radial-gradient(circle at 0 0,#fff 0,#f4f8fd 35%,#e9f0f8 100%)}.topbar{padding:26px 38px 18px;display:flex;justify-content:space-between;align-items:center}.topbar h1{margin:0;font-size:36px}.topbar p{margin:0;color:var(--muted)}.eyebrow{font-size:11px!important;letter-spacing:1.7px;color:var(--blue)!important;font-weight:800}.top-actions{display:flex;gap:14px;align-items:center}.top-actions button,.actions button{border:1px solid var(--line);background:#fff;border-radius:10px;padding:10px 15px;color:#25324a;font:inherit;font-weight:700;cursor:pointer}.top-actions button:hover,.actions button:hover{border-color:#93b4f9;box-shadow:0 6px 16px #2563eb1c}.summary{padding:24px 38px 18px;display:grid;grid-template-columns:repeat(5,minmax(130px,1fr));gap:14px}.summary-card{background:#fff;border:1px solid #e4ebf4;border-radius:14px;padding:15px 18px;box-shadow:0 8px 20px #1e293b0a}.summary-card b{font-size:28px;display:block}.summary-card span{font-size:13px;color:var(--muted)}.summary-card.good b{color:var(--green)}.summary-card.active b{color:var(--blue)}.summary-card.warn b{color:var(--amber)}.summary-card.danger b{color:var(--red)}.summary-card.clickable{cursor:pointer;user-select:none;transition:transform .12s ease,box-shadow .12s ease,border-color .12s ease}.summary-card.clickable:hover{transform:translateY(-2px);border-color:#c6d8f7;box-shadow:0 10px 24px #1e293b14}.summary-card.selected{border-color:var(--blue);box-shadow:0 10px 24px #2563eb26;outline:2px solid var(--blue);outline-offset:1px}.machines{padding:0 38px 38px;display:flex;flex-direction:column;gap:14px}.machine-card{display:grid;grid-template-columns:250px minmax(370px,1.6fr) 300px 188px;grid-template-areas:"info task metrics actions" "info task stats actions" "info history history actions";gap:14px 22px;align-items:center;padding:20px 22px;background:#fff;border:1px solid #e3eaf3;border-radius:16px;box-shadow:0 12px 28px #253b5a0c;transition:.2s ease}.machine-card.active{border-color:#9dbcf8;box-shadow:0 15px 35px #2563eb16}.machine-card.stalled{border-left:5px solid var(--amber)}.machine-card.offline{opacity:.78;border-left:5px solid var(--red)}.machine-info{grid-area:info;min-width:0}.serial-row{display:flex;align-items:center;gap:9px}.serial{margin:0;font-size:23px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.status-pill{display:inline-flex;align-items:center;justify-content:center;min-width:53px;padding:6px 9px;border-radius:999px;font-size:12px;font-weight:800;background:#e8eff8;color:#506078}.status-pill.online{background:#e8f8ef;color:#08783d}.status-pill.stalled{background:#fff4df;color:#a95b00}.status-pill.offline{background:#fee9ea;color:#b42328}.task-status-pill{display:inline-flex;align-items:center;justify-content:center;min-width:56px;padding:6px 10px;border-radius:999px;font-size:12px;font-weight:800}.task-status-pill.t-copy{background:#e8f0fe;color:#1d4ed8}.task-status-pill.t-done{background:#e8f8ef;color:#08783d}.task-status-pill.t-fail{background:#fee9ea;color:#b42328}.task-status-pill.t-wait{background:#eef2f7;color:#64748b}.machine-info p{margin:8px 0 0;font-size:12px;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.run-id{font-family:Consolas,monospace;font-size:11px!important}.task-main{grid-area:task;min-width:0}.task-top{display:flex;justify-content:space-between;gap:16px;align-items:flex-start}.section-label{margin:0 0 5px;color:var(--muted);font-size:12px}.game{font-weight:800;font-size:20px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.task-line,.task-note{color:var(--muted);font-size:13px;margin-top:7px}.percent{font-size:32px;color:var(--blue);line-height:1}.progress{height:10px;margin-top:16px;background:#e9eff7;border-radius:999px;overflow:hidden}.progress i{display:block;height:100%;width:0;background:linear-gradient(90deg,#2563eb,#5f9bff);border-radius:inherit;transition:width .45s ease}.metrics{grid-area:metrics;display:grid;grid-template-columns:repeat(2,1fr);gap:10px}.metrics div,.task-stats div{border-left:2px solid #e4ebf5;padding-left:10px;min-width:0}.metrics span,.task-stats span{display:block;font-size:11px;color:var(--muted)}.metrics b,.task-stats b{display:block;margin-top:3px;font-size:14px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.task-stats{grid-area:stats;display:grid;grid-template-columns:repeat(5,1fr);gap:7px}.task-stats div:nth-child(1) b{color:var(--green)}.task-stats div:nth-child(2) b{color:var(--blue)}.task-stats div:nth-child(3) b{color:var(--amber)}.task-stats div:nth-child(4) b{color:var(--red)}.history-preview{grid-area:history;border-top:1px solid #eef2f7;padding-top:11px}.history-title{font-size:12px;font-weight:800;color:#53627a;margin-bottom:7px}.history-count{color:var(--muted);font-weight:500}.history-list{display:flex;gap:8px;min-width:0}.history-item{flex:1;min-width:0;background:#f7f9fc;border-radius:9px;padding:7px 9px}.history-item b,.history-item span{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.history-item b{font-size:12px}.history-item span{font-size:11px;color:var(--muted);margin-top:3px}.history-item.completed b{color:var(--green)}.history-item.copying b{color:var(--blue)}.history-item.failed b{color:var(--red)}.history-empty{font-size:12px;color:var(--muted)}.actions{grid-area:actions;display:grid;grid-template-columns:1fr 1fr;gap:8px;align-self:center;min-width:0}.actions button{min-width:0;width:100%;padding:9px 8px;font-size:12px;white-space:nowrap}.actions .open-detail{grid-column:1/-1;background:#eff5ff;border-color:#bdd4ff;color:#1d4ed8}.danger-btn{color:#b42328!important;background:#fff5f5!important}.warn-btn{color:#a95b00!important;background:#fffaf0!important}.empty{padding:40px;color:var(--muted);text-align:center}.danger-text{color:var(--red)}.detail{position:fixed;inset:0;background:#17203366;display:flex;justify-content:flex-end;z-index:5}.detail.hidden{display:none}.detail-panel{height:100%;width:min(680px,92vw);overflow:auto;background:#fff;padding:28px;box-shadow:-14px 0 35px #1720332b}.detail-panel h2{margin-top:0}.detail-panel h3{margin:24px 0 10px}.close{float:right;border:0;background:#eef2f7;border-radius:9px;font-size:25px;width:36px;height:36px;cursor:pointer}.task-list,.detail-history{display:flex;flex-direction:column;gap:7px}.task-item,.detail-history div{display:flex;justify-content:space-between;gap:10px;padding:9px 10px;background:#f7f9fc;border-radius:9px;font-size:13px}.task-item span,.detail-history span,.detail-history small{color:var(--muted)}.log-item{padding:8px 0;border-bottom:1px solid #edf1f5;font-size:13px}.log-item b{display:inline-block;width:84px;color:var(--muted)}@media(max-width:1360px){body{min-width:0}.machine-card{grid-template-columns:230px minmax(360px,1fr) minmax(230px,280px);grid-template-areas:"info task metrics" "info task stats" "history history history" "actions actions actions";gap:14px 18px;align-items:stretch}.summary{grid-template-columns:repeat(3,1fr)}.actions{grid-template-columns:repeat(4,minmax(118px,1fr));align-self:stretch;justify-self:stretch}.actions .open-detail{grid-column:auto}.actions button{height:38px;padding:9px 12px}}@media(max-width:980px){.topbar{padding:22px 24px 16px}.summary,.machines{padding-left:24px;padding-right:24px}.machine-card{grid-template-columns:1fr;grid-template-areas:"info" "task" "metrics" "stats" "history" "actions";align-items:stretch}.metrics{grid-template-columns:repeat(2,1fr)}.task-stats{grid-template-columns:repeat(5,minmax(54px,1fr))}.actions{grid-template-columns:repeat(2,minmax(120px,1fr));justify-content:start}.actions .open-detail{grid-column:1/-1}.history-list{flex-wrap:wrap}.history-item{flex:1 1 180px}}