:root{color-scheme:dark;--bg:#102337;--panel:#182f45;--line:#345065;--ink:#eef5fb;--muted:#a2b9cb;--accent:#77d5df;--amber:#f7c77d;--running:#ffd447;--done:#52e08b;--error:#ff5c65;--waiting:#58a6ff}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--ink);font-family:-apple-system,BlinkMacSystemFont,"PingFang SC",sans-serif;padding:env(safe-area-inset-top) 36px env(safe-area-inset-bottom);min-height:100vh}header{height:100px;display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid var(--line)}.brand,.top{display:flex;align-items:center;gap:18px}.brand{font-size:18px;font-weight:650;letter-spacing:2px}.logo{font-size:36px;color:var(--accent)}.sub{color:var(--muted);font-size:14px;letter-spacing:1px;margin-left:14px}.top{font-size:12px;color:var(--muted)}time{font-size:25px;color:var(--ink);font-variant-numeric:tabular-nums}main{display:grid;grid-template-columns:1.03fr 1fr;gap:24px;padding:28px 0}.hero{padding:30px 32px 22px;background:var(--panel);border-radius:24px;min-height:370px;display:flex;flex-direction:column}.eyebrow{font-size:11px;letter-spacing:2px;color:var(--muted)}.signal{height:150px;display:flex;align-items:center;gap:12px;margin:20px 0 8px}.signal span{width:26px;border-radius:13px;background:var(--status-color,var(--muted));height:52px;box-shadow:0 0 22px color-mix(in srgb,var(--status-color,var(--muted)) 35%,transparent)}.signal span:nth-child(2),.signal span:nth-child(4){height:94px}.signal span:nth-child(3){height:140px}/* 运行状态持续明暗闪烁，主灯与列表灯使用同一周期，避免错位呼吸难以辨认。 */
.signal.running span,.task.running .dot{animation:running-blink 1.6s steps(1,end) infinite}/* 【业务逻辑】主灯和任务灯共用状态色：运行黄、完成绿、错误红、需要用户处理蓝。离线不冒充任务错误。 */
.running{--status-color:var(--running)}.done{--status-color:var(--done)}.error{--status-color:var(--error)}.waiting{--status-color:var(--waiting)}.signal.offline span{background:var(--muted);box-shadow:none}.signal.offline{opacity:.45}h1{font-size:53px;letter-spacing:-2px;margin:0 0 12px;font-weight:600}.hero p{color:var(--muted);font-size:15px;margin:0 0 28px;line-height:1.6}.hero-bottom{display:flex;justify-content:space-between;gap:16px;margin-top:auto;padding-top:20px;border-top:1px solid var(--line);font-size:11px;color:var(--muted)}.tasks{padding:8px 0}.section-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:12px}h2{font-size:20px;font-weight:550;margin:0}.section-head>span{color:var(--muted);font-size:12px}.task{display:flex;gap:15px;padding:20px 4px;border-bottom:1px solid var(--line);align-items:center}.task .dot{width:20px;height:20px;flex:none;border-radius:50%;background:var(--status-color,var(--muted));box-shadow:0 0 14px color-mix(in srgb,var(--status-color,var(--muted)) 30%,transparent)}.task-title{flex:1;line-height:1.5;font-size:16px;overflow-wrap:anywhere}.badge{font-size:11px;color:var(--muted);white-space:nowrap}.task .badge{color:var(--status-color,var(--muted))}.note,.empty{font-size:13px;line-height:1.7;color:var(--muted)}.empty{padding:32px 0}.quota{grid-column:1/-1;border:1px solid var(--line);border-radius:20px;display:grid;grid-template-columns:190px 1fr;gap:24px;padding:25px 30px}.quota h2{margin-top:10px}.quota p{font-size:11px;color:var(--muted);margin-bottom:0}#windows{display:flex;align-items:center;gap:32px}.window{flex:1;min-width:0}.window-title,.window-value{display:flex;justify-content:space-between;align-items:center;gap:16px;font-size:12px;color:var(--muted)}.window-value{margin-top:8px}.window-value strong{font-size:29px;color:var(--ink);font-weight:500}.track{height:5px;border-radius:5px;background:#30485a;margin:12px 0;overflow:hidden}.fill{height:100%;background:var(--accent)}.fill.low{background:var(--amber)}.reset{font-size:11px;color:var(--muted)}footer{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:0 0 24px;color:var(--muted);font-size:11px}footer>div{display:flex;gap:8px}button{min-height:44px;padding:0 15px;border:1px solid var(--line);border-radius:12px;background:transparent;color:var(--ink);font:inherit;font-size:12px;cursor:pointer}button:hover{background:var(--panel)}button:focus-visible,input:focus-visible{outline:2px solid var(--accent);outline-offset:3px}dialog{width:min(450px,90vw);background:var(--panel);color:var(--ink);border:1px solid var(--line);border-radius:20px;padding:28px}dialog::backdrop{background:#0009}dialog p{color:var(--muted);line-height:1.6}label{display:block;font-size:13px}input{display:block;width:100%;margin:12px 0 24px;padding:14px;color:var(--ink);background:var(--bg);border:1px solid var(--line);border-radius:8px}.dialog-actions{display:flex;justify-content:flex-end;gap:12px}@keyframes running-blink{0%,100%{opacity:1}50%{opacity:.18;box-shadow:none}}@media(min-width:1200px){body{max-width:1500px;margin:auto}header{height:120px}.hero{min-height:430px}h1{font-size:64px}.task{padding:24px 4px}}@media(max-width:900px){body{padding-left:24px;padding-right:24px}header{height:90px}.sub{display:none}main{grid-template-columns:1fr}.hero{min-height:310px}.signal{height:140px;margin:14px 0}.signal span:nth-child(3){height:130px}.quota{grid-template-columns:1fr}.quota>div:first-child{display:flex;align-items:center;gap:18px}.quota h2{margin:0}.quota p{margin:0}footer{flex-wrap:wrap}.tasks{min-height:130px}}@media(max-width:450px){body{padding-left:16px;padding-right:16px}.top{gap:10px}time{font-size:20px}.hero{padding:24px}h1{font-size:44px}#windows{flex-direction:column;align-items:stretch}.quota{padding:22px}.quota>div:first-child{flex-wrap:wrap}}@media(prefers-reduced-motion:reduce){.signal.running span,.task.running .dot{animation:none}}

/* 【业务逻辑】整行可点击打开对应对话；缺少真实 ID 时禁用，避免错误定位。 */
button.task{width:100%;text-align:left;border:0;border-bottom:1px solid var(--line);border-radius:0;color:var(--ink)}button.task:hover:not(:disabled){background:var(--panel)}button.task:disabled{cursor:default}button.task:active:not(:disabled){background:#24445e}
