@import url('https://fonts.googleapis.com/css2?family=DM+Mono&family=Noto+Sans+SC:wght@400;500;600;700&display=swap');
.fakeqr{background:none!important;position:static!important;display:block}.fakeqr:after{display:none!important}
*{box-sizing:border-box}body{margin:0;background:#f5f7fb;color:#182338;font-family:'Noto Sans SC',sans-serif}aside{position:fixed;width:244px;height:100vh;background:#071b32;color:#bfd0e7;padding:25px 15px;display:flex;flex-direction:column}.brand{color:#fff;font:12px 'DM Mono';letter-spacing:1px;display:flex;gap:11px;align-items:center;padding:0 10px 40px}.brand span{font-size:30px;color:#35d7c4}.brand b{font:600 17px 'Noto Sans SC';letter-spacing:0}nav{display:grid;gap:6px}.nav{color:#9fb2c9;background:none;border:0;text-align:left;padding:13px 15px;border-radius:7px;font:500 14px 'Noto Sans SC';cursor:pointer}.nav:hover,.nav.active{background:#10365c;color:#fff}.sidefoot{margin-top:auto;font-size:12px;padding:15px 10px;color:#89a1bc;line-height:1.8}.sidefoot i{display:inline-block;width:7px;height:7px;border-radius:50%;background:#35d7c4;margin-right:6px}main{margin-left:244px;min-height:100vh}header{height:100px;padding:25px 50px;display:flex;align-items:center;justify-content:space-between;background:#fff;border-bottom:1px solid #e5ebf2}h1,h2,h3,p{margin:0}h1{font-size:23px;color:#142039}header p{font:11px 'DM Mono';color:#8594a7;margin-bottom:4px}.user{font-size:13px;color:#526276}.user span{margin-left:8px;border:1px solid #dbe3ec;padding:4px 7px;color:#50657b;font:10px 'DM Mono'}.view{display:none;padding:38px 50px}.view.show{display:block}.hero{min-height:160px;padding:32px 35px;background:linear-gradient(110deg,#0e3155,#124e70 67%,#08736f);color:#fff;border-radius:12px;display:flex;justify-content:space-between;align-items:center}.eyebrow{font:11px 'DM Mono';letter-spacing:1px;color:#5f8299}.hero .eyebrow{color:#8ce5df}.hero h2{font-size:27px;margin:9px 0}.hero p{color:#cad9e6;font-size:14px}.primary{border:0;border-radius:5px;background:#36d4c4;color:#06343b;padding:12px 18px;font:600 14px 'Noto Sans SC';cursor:pointer}.metrics{display:grid;grid-template-columns:repeat(6,1fr);gap:16px;margin:20px 0}.metrics article,.panel,.formpanel,.note{background:#fff;border:1px solid #e3e9f0;border-radius:9px}.metrics article{padding:19px}.metrics span{font-size:13px;color:#728299;display:block}.metrics strong{font:700 29px 'DM Mono';display:block;margin:9px 0 4px;color:#122743}.metrics small{font-size:11px;color:#97a5b6}.metrics .warn strong{color:#e14453}.panel{padding:24px;margin-top:20px}.panelhead,.filter{display:flex;justify-content:space-between;align-items:center;margin-bottom:19px}.panel h3{font-size:18px;margin-top:4px}.legend{font-size:12px;color:#718196}.legend i{width:7px;height:7px;border-radius:50%;background:#2fc6b7;display:inline-block;margin:0 5px}.legend .red{background:#e14453;margin-left:15px}table{width:100%;border-collapse:collapse;font-size:13px}th{text-align:left;color:#8290a2;font-weight:500;font-size:12px;border-bottom:1px solid #e9eef4;padding:11px}td{padding:13px 11px;border-bottom:1px solid #eef2f6;color:#26354a}.danger,.abnormal{color:#d9303e!important;font-weight:700}.chip{font:11px 'DM Mono';padding:4px 8px;border-radius:3px;background:#e9f7f5;color:#117a70}.chip.night{background:#eaf0fb;color:#3767ab}.split{display:grid;grid-template-columns:minmax(500px,2fr) 1fr;gap:20px}.formpanel,.note{padding:30px}.formpanel h2,.panel h2{margin:8px 0;font-size:23px}.formpanel>p,.panel>p,.note p{font-size:13px;color:#718196;line-height:1.8;margin-bottom:20px}form{display:grid;grid-template-columns:1fr 1fr;gap:15px}form #items{grid-column:1/-1;display:grid;gap:9px}label{font-size:12px;color:#596b80;display:grid;gap:7px}input,select{border:1px solid #dce5ee;padding:10px;border-radius:4px;color:#253550;background:#fff;font:13px 'Noto Sans SC'}#items label{grid-template-columns:2fr 1fr 70px;align-items:center;background:#f8fafc;padding:9px 12px;border-radius:5px}.rangeHint{font:11px 'DM Mono';color:#8190a4}.full{grid-column:1/-1;margin-top:8px}.note{height:max-content;background:#f1f8fb;border-color:#dbe9ef}.note>span{font:11px 'DM Mono';color:#168d83}.note h3{font-size:16px;margin:10px 0}.note hr{border:0;border-top:1px solid #dce9ed;margin:20px 0}.filter select{margin-left:auto;margin-right:10px}.range{background:#f6f9fc;padding:12px 15px;display:flex;justify-content:space-between;font-size:12px;color:#617188}.chart{height:310px;position:relative;border-left:1px solid #cbd7e4;border-bottom:1px solid #cbd7e4;margin:25px 12px 10px 38px;background:repeating-linear-gradient(0deg,transparent,transparent 61px,#edf1f5 62px)}.point{position:absolute;width:10px;height:10px;border-radius:50%;background:#27bcae;transform:translate(-50%,50%);border:2px solid white;box-shadow:0 0 0 1px #27bcae}.point.bad{background:#e14453;box-shadow:0 0 0 1px #e14453}.line{position:absolute;height:2px;background:#2cc0b2;transform-origin:left center}.qrgrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(232px,1fr));gap:17px;margin-top:22px}.qr{border:1px solid #e2e9f0;border-radius:7px;padding:18px;text-align:center;overflow:hidden}.fakeqr{width:116px;height:116px;margin:0 auto 12px;background:repeating-linear-gradient(45deg,#102b4c 0 4px,#fff 4px 8px);position:relative}.fakeqr:after{content:'SCAN';background:#fff;color:#123558;font:13px 'DM Mono';padding:5px;position:absolute;left:28px;top:48px}.qr b{font-size:14px;display:block}.qr small{font-size:11px;color:#7d8b9d}@media(max-width:900px){aside{position:static;width:auto;height:auto;padding:15px}.brand{padding-bottom:12px}nav{grid-template-columns:repeat(4,1fr)}.nav{text-align:center;font-size:11px;padding:8px}.sidefoot{display:none}main{margin:0}header,.view{padding-left:20px;padding-right:20px}.metrics,.split{grid-template-columns:1fr 1fr}.hero{padding:22px}.hero h2{font-size:22px}}@media(max-width:600px){.metrics,.split,form{grid-template-columns:1fr}.hero{display:block}.hero .primary{margin-top:20px}.filter{display:grid;gap:8px}.filter select{margin:0}.range{display:block}.range span:last-child{display:block;margin-top:8px}#items label{grid-template-columns:1fr}.view{padding-top:20px}}

.qrhint{grid-column:1/-1;margin:0 0 4px;padding:12px 14px;border:1px solid #c9e6e1;background:#f1fbf9;border-radius:7px;color:#1d344d;font-size:13px;line-height:1.7}
.qr code{display:block;margin-top:10px;font-size:10px;color:#8395a9;word-break:break-all;line-height:1.5}
.qr img{background:#fff;padding:6px;border:1px solid #eef3f8;border-radius:6px}

.qrbox{width:100%;max-width:190px;margin:0 auto 12px}
.qrbox img{width:100%!important;height:auto!important;display:block;margin:0 auto;image-rendering:pixelated}
.qrbox table{width:100%!important;height:auto!important;border-collapse:collapse;margin:0 auto}
.qrbox td{border:0!important;padding:0!important}

/* 厂房设备巡检汇总：本月全列 + 横向滚动 + 今日高亮 */
#summaryTable{overflow-x:auto;padding-bottom:4px}
#summaryTable table{min-width:1240px}
#summaryTable th,#summaryTable td{text-align:center;white-space:nowrap;padding-left:6px;padding-right:6px}
#summaryTable th:first-child,#summaryTable td:first-child{text-align:left;position:sticky;left:0;background:#fff;min-width:130px;z-index:1}
#summaryTable th.today{color:#0d6b5c;background:#e8f9f4;border-bottom:1px solid #bfe7dd}
#summaryTable tbody tr:hover td{background:#fbfdff}
#summaryTable tbody tr:hover td:first-child{background:#fbfdff}
.asof{color:#8290a2;font-size:12px;margin-left:10px;font-weight:400}

/* 仪表盘指标卡：共 6 张，按屏宽分档折行（顺序需在基础规则之后，逐级覆盖） */
@media(max-width:1200px){.metrics{grid-template-columns:repeat(3,1fr)}}
@media(max-width:900px){.metrics{grid-template-columns:1fr 1fr}}
@media(max-width:600px){.metrics{grid-template-columns:1fr}}
