body{margin:0;font:14px/1.5 -apple-system,"PingFang SC","Microsoft YaHei",sans-serif;background:#f3f5f8;color:#222}
.hidden{display:none!important}header{display:flex;gap:16px;align-items:center;background:#1f2937;color:#fff;padding:10px 16px}
nav a{color:#cbd5e1;margin-right:12px;cursor:pointer}nav a.on{color:#fff;font-weight:bold;border-bottom:2px solid #60a5fa}
header button{margin-left:auto}section{padding:16px}.cards{display:flex;flex-wrap:wrap;gap:12px;margin-bottom:12px}
.card{background:#fff;border-radius:8px;padding:12px 16px;min-width:150px;box-shadow:0 1px 2px #0001}.card .k{color:#666;font-size:12px}.card .v{font-size:20px;font-weight:600}
.panel{background:#fff;border-radius:8px;padding:12px 16px;margin-bottom:12px;box-shadow:0 1px 2px #0001}.chart{height:360px}.chart.small{height:260px}
.grid2{display:grid;grid-template-columns:1fr 1fr;gap:12px}table{border-collapse:collapse;width:100%}th,td{padding:4px 8px;border-bottom:1px solid #eee;text-align:left;font-size:13px}
.pos{color:#16a34a}.neg{color:#dc2626}.badge{padding:2px 8px;border-radius:10px;background:#6b7280}.badge.ok{background:#16a34a}.badge.timeout{background:#dc2626}
.log{background:#111;color:#ddd;max-height:600px;overflow:auto;font-size:12px;white-space:pre-wrap}.log .error{color:#f87171;font-weight:bold}.log .warn{color:#fbbf24}
.alert{background:#fee2e2;color:#991b1b;padding:8px 12px;border-radius:6px;margin-bottom:8px}.err{color:#dc2626}.muted{color:#777}
#login .box{max-width:300px;margin:120px auto;background:#fff;padding:24px;border-radius:8px;display:flex;flex-direction:column;gap:10px}
.symlist{max-height:220px;overflow:auto;display:grid;grid-template-columns:repeat(auto-fill,minmax(130px,1fr));margin:8px 0}
pre#cfMsg{white-space:pre-wrap}.filters>*{margin-right:6px}
.pcsyms label{margin-right:14px;cursor:pointer}.pcbox{margin-top:10px}.pcbox h4{margin:6px 0}.chart.pc{height:420px}

body:not([data-role="admin"]) .admin-only{display:none!important}
.statusbar{padding:10px 16px;background:#e8eef7;border-bottom:1px solid #cbd5e1}
#runBanner{padding:10px 16px;background:#fee2e2;color:#991b1b;font-weight:600}
.table-scroll{overflow-x:auto}.table-scroll th{white-space:nowrap}.table-scroll td{min-width:86px}
.control-actions{padding:10px 0;line-height:2.5}.control-actions button{margin:2px}
@media(max-width:760px){header{flex-wrap:wrap;gap:8px}section{padding:10px}.grid2{grid-template-columns:1fr}.panel{padding:10px}.chart.pc{height:340px}}
.notifications{position:relative}.notifications button{white-space:nowrap}#noticeList{position:absolute;right:0;top:38px;width:min(380px,85vw);max-height:420px;overflow:auto;z-index:30;background:#fff;color:#222;border:1px solid #ccc;border-radius:6px;padding:12px;box-shadow:0 6px 20px #0003}#noticeList>div{padding:8px 0;border-bottom:1px solid #eee}
.calendar{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:5px}.calendar>b{text-align:center}.day{border:1px solid #e5e7eb;border-radius:4px;padding:8px;text-align:center}.day.pos{background:#dcfce7}.day.neg{background:#fee2e2}
.param-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:12px}.param-grid label{display:flex;flex-wrap:wrap;align-items:center;gap:6px}.param-grid input:not([type=checkbox]){width:100px}.param-grid small{display:block;width:100%;color:#777}fieldset{border:1px solid #ddd;border-radius:6px;margin:10px 0;padding:12px}
body[data-role="viewer"] .param-write,body[data-role="viewer"] #cfSave,body[data-role="viewer"] #cfRollback,body[data-role="viewer"] #ackAll{display:none!important}
.timeline-scroll{max-height:520px;overflow:auto}.pager{display:flex;align-items:center;gap:8px;margin:10px 0}.filters{display:flex;flex-wrap:wrap;align-items:center;gap:6px}.panel{min-width:0}pre{white-space:pre-wrap;overflow-wrap:anywhere}input,select,button{max-width:100%;box-sizing:border-box}button{cursor:pointer}#currentUser{font-size:12px;white-space:nowrap}
body[data-role="viewer"] #importFile,body[data-role="viewer"] #cfPw,body[data-role="viewer"] #cfRb{display:none!important}
@media(max-width:760px){header{gap:6px;padding:8px}header b{font-size:14px}nav{order:2;width:100%;display:flex;overflow-x:auto;white-space:nowrap;padding:5px 0}nav a{flex-shrink:0;margin-right:12px}header button{margin-left:0}section{padding:8px}.cards{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}.card{min-width:0;padding:10px}.card .v{font-size:18px;overflow-wrap:anywhere}.grid2,.param-grid{grid-template-columns:1fr}.panel{overflow-wrap:anywhere}.panel table{min-width:560px}.panel:has(>table){overflow-x:auto}.chart{height:280px}.calendar{gap:2px}.day{padding:5px 1px;font-size:11px}.statusbar{padding:8px}.filters input{max-width:145px}#passwordForm{display:flex;flex-direction:column;gap:8px}#cfStartup{max-width:100%}}
