@import"https://fonts.googleapis.com/css2?family=Manrope:wght@400;500;600;700;800&display=swap";:root{--green: #35c393;--green-d: #26a87c;--green-l: #e8f8f1;--green-l2: #f3fbf8;--ink: #1f2937;--ink-2: #4b5563;--ink-3: #8b95a3;--line: #eaeef2;--line-2: #f1f4f7;--bg: #f5f7f9;--white: #ffffff;--red: #ef4444;--red-l: #fdecec;--orange: #f59e0b;--orange-l: #fef6e7;--gray: #9ca3af;--blue: #3b82f6;--shadow: 0 1px 3px rgba(16, 24, 40, .06), 0 1px 2px rgba(16, 24, 40, .04);--shadow-l: 0 8px 28px rgba(16, 24, 40, .12);--r: 12px;--r-s: 8px;--font: Manrope, "PingFang SC", "Microsoft YaHei", Inter, "Segoe UI", sans-serif;--primary: var(--green);--primary-d: var(--green-d);--primary-soft: var(--green-l);--muted: var(--ink-2);--green-soft: var(--green-l);--amber: var(--orange);--amber-soft: var(--orange-l);--red-soft: var(--red-l)}*{box-sizing:border-box}html,body{margin:0;padding:0}body{font-family:var(--font);color:var(--ink);background:var(--bg);font-variant-numeric:tabular-nums}button,input,select{font-family:inherit}a{color:var(--green-d)}.tc-proto-bar{position:fixed;left:12px;right:12px;bottom:10px;z-index:9999;display:flex;align-items:center;justify-content:space-between;gap:12px;min-height:40px;padding:6px 10px;background:#111827;color:#f9fafb;border-radius:8px;box-shadow:0 8px 24px #00000047;font-size:12px;line-height:1.2}.tc-proto-left,.tc-proto-right{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.tc-proto-mark{font-weight:700;letter-spacing:.02em;color:#e5e7eb}.tc-proto-hint{color:#9ca3af}.tc-proto-seg{display:flex;border:1px solid #374151;border-radius:6px;overflow:hidden}.tc-loc,.tc-line{border:0;background:transparent;color:#e5e7eb;padding:6px 12px;cursor:pointer;font-weight:700}.tc-loc.on,.tc-line.on{background:#35c393;color:#fff}.tc-proto-bar select,.tc-proto-bar button.tc-demo-btn{background:#1f2937;color:#fff;border:1px solid #374151;border-radius:4px;padding:5px 8px;font-size:12px;cursor:pointer}body{padding-bottom:56px}html,body{height:100%;overflow:hidden}.pc-app{height:calc(100vh - 56px);min-height:0;display:flex;flex-direction:column}.global{height:56px;flex-shrink:0;background:var(--white);border-bottom:1px solid var(--line);display:flex;align-items:center;padding:0 20px;gap:20px;z-index:20}.logo{font-weight:800;color:var(--green);font-size:20px;cursor:pointer;letter-spacing:.5px}.plant{font-size:13px;color:var(--ink-2)}.line-seg{display:flex;background:var(--line-2);border-radius:var(--r-s);padding:2px}.line-seg button{border:0;background:transparent;padding:6px 14px;border-radius:6px;font-weight:600;font-size:13px;color:var(--ink-3);cursor:pointer}.line-seg button.on{background:var(--white);color:var(--green);box-shadow:var(--shadow)}.grow{flex:1}.bell,.user{font-size:13px;color:var(--ink);background:none;border:0;cursor:pointer;position:relative}.icon-btn{width:30px;height:30px;border-radius:var(--r-s);border:1px solid transparent;background:none;color:var(--ink-3);font-size:15px;line-height:1;cursor:pointer}.icon-btn:hover{background:var(--line-2);color:var(--ink)}.icon-btn.on{background:var(--green-l);border-color:var(--green);color:var(--green-d)}.badge{position:absolute;top:-4px;right:-8px;background:var(--red);color:#fff;border-radius:8px;font-size:10px;padding:0 5px;min-width:16px;text-align:center}.module{height:44px;flex-shrink:0;background:var(--white);border-bottom:1px solid var(--line);display:flex;align-items:stretch;padding:0 12px;z-index:19}.module button{border:0;background:none;padding:0 12px;font-size:13px;font-weight:600;color:var(--ink-3);cursor:pointer;border-bottom:3px solid transparent}.module button.on{color:var(--green);border-bottom-color:var(--green);background:var(--green-l)}.body{display:flex;flex:1;min-height:0;overflow:hidden}.sub{width:180px;flex-shrink:0;background:var(--white);border-right:1px solid var(--line);padding:12px 0;overflow-y:auto}.sub .mod-name{font-size:14px;font-weight:600;padding:0 14px 10px}.sub a{display:block;padding:8px 14px;font-size:13px;color:var(--ink);text-decoration:none;border-left:3px solid transparent;white-space:normal;line-height:1.35}.sub a.on{background:var(--green-l);border-left-color:var(--green);font-weight:600;color:var(--green-d)}.content{flex:1;padding:20px 24px 72px;max-width:1716px;min-width:0;overflow-y:auto}body.dash-mode .content{max-width:none}.ops-head{display:flex;align-items:flex-end;justify-content:space-between;gap:16px;margin-bottom:14px;flex-wrap:wrap}.ops-head h1{font-size:22px;font-weight:800;margin:0 0 4px}.ops-line{font-size:20px;font-weight:700;color:var(--green-d)}.ops-meta{font-size:12px;color:var(--ink-3)}.page-h{display:flex;align-items:center;gap:12px;margin-bottom:16px}.page-h h1{font-size:20px;font-weight:700;margin:0;flex:1}.btn{height:32px;padding:0 12px;border-radius:7px;border:1px solid var(--line);background:var(--white);font-size:13px;cursor:pointer;font-weight:600}.btn.primary{background:var(--green);color:#fff;border-color:var(--green)}.btn.danger{background:var(--red);color:#fff;border-color:var(--red)}.filters{display:flex;gap:8px;align-items:center;margin-bottom:12px;flex-wrap:wrap}.filters select,.filters input{height:32px;border:1px solid var(--line);border-radius:var(--r-s);padding:0 8px;background:var(--white)}.kpis{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:12px;margin-bottom:16px}.content h3{font-size:14px;margin:18px 0 8px}.kpi{background:var(--white);border:1px solid var(--line);border-radius:var(--r);padding:14px;box-shadow:var(--shadow)}.kpi .n{font-size:28px;font-weight:700}.kpi .l{font-size:12px;color:var(--ink-3)}.kpi.hot .n{color:var(--red)}.table-wrap{overflow-x:auto;background:var(--white);border:1px solid var(--line);border-radius:var(--r);box-shadow:var(--shadow)}table.data{width:max-content;min-width:100%;border-collapse:separate;border-spacing:0;background:var(--white);table-layout:auto}table.data th,table.data td{padding:0 12px;height:44px;border-bottom:1px solid var(--line);font-size:13px;text-align:left;white-space:nowrap;vertical-align:middle}table.data th{height:48px;background:var(--line-2);font-weight:600;position:sticky;top:0;z-index:1}table.data td.num,table.data th.num{text-align:right}table.data th.num{font-variant-numeric:tabular-nums}table.data td.num input{text-align:right;width:4.5em;box-sizing:border-box}table.data td.neg{color:var(--red);font-weight:700;text-align:right}.tag{display:inline-block;padding:2px 8px;border-radius:999px;font-size:12px;font-weight:600}.tag.ok{background:var(--green-l);color:var(--green-d)}.tag.warn{background:var(--orange-l);color:#b8791f}.tag.bad{background:var(--red-l);color:var(--red)}.tag.idle{background:var(--line-2);color:var(--ink-3)}.foot{display:flex;justify-content:space-between;margin-top:10px;font-size:12px;color:var(--ink-3)}.dash{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;pointer-events:none}.dash .span2{grid-column:span 2}.card{background:var(--white);border:1px solid var(--line);border-radius:var(--r);padding:16px;min-height:200px;cursor:default;box-shadow:var(--shadow)}.card h3{margin:0 0 10px;font-size:13px;font-weight:600;color:var(--ink-3)}.big{font-size:36px;font-weight:800;line-height:1;color:var(--ink)}.subn{font-size:12px;color:var(--ink-3);margin-top:6px}.bar{height:8px;background:var(--line-2);border-radius:99px;overflow:hidden;margin:8px 0}.bar>i{display:block;height:100%;background:var(--green)}.bar.g>i{background:var(--green-d)}.mini{display:flex;justify-content:space-between;font-size:12px;margin:4px 0;color:var(--ink-2)}.exgrid{display:grid;grid-template-columns:1fr 1fr;gap:8px}.excell{background:var(--green-l2);border-radius:var(--r-s);padding:8px}.excell b{display:block;font-size:18px}.excell.hot{background:var(--red-l);color:var(--red)}.dots{display:flex;gap:10px;flex-wrap:wrap}.dot{font-size:12px;color:var(--ink-2)}.dot:before{content:"";display:inline-block;width:8px;height:8px;border-radius:50%;background:var(--green);margin-right:4px}.hint{font-size:12px;color:var(--ink-3);margin-bottom:12px}.banner{background:var(--orange-l);border:1px solid #f6dca0;padding:8px 12px;border-radius:10px;font-size:13px;margin-bottom:12px;color:#92611a}.rgrid{display:grid;grid-template-columns:repeat(3,1fr);gap:12px}.rcard{background:var(--white);border:1px solid var(--line);border-radius:var(--r);padding:14px;box-shadow:var(--shadow);cursor:pointer;text-align:left;width:100%;font:inherit;color:inherit}.rcard:hover{border-color:var(--green);box-shadow:0 0 0 3px var(--green-l)}.rcard .code{font-size:18px;color:var(--green-d);font-weight:800;letter-spacing:.04em}.rcard .nm{font-size:14px;font-weight:700;margin-top:4px}.xr6{display:grid;grid-template-columns:1fr 1fr;gap:12px}.xr6 .card{min-height:0}.user-menu{position:absolute;right:16px;top:60px;z-index:40;padding:4px;background:var(--white);border:1px solid var(--line);border-radius:var(--r);box-shadow:var(--shadow-l);display:none;min-width:180px}.user-menu.on{display:block}.user-menu button{display:block;width:100%;text-align:left;border:0;background:none;padding:10px 12px;cursor:pointer;border-radius:var(--r-s)}.user-menu button:hover{background:var(--green-l2)}.note-pop{position:absolute;right:128px;top:60px;z-index:40;width:320px;background:var(--white);border:1px solid var(--line);border-radius:var(--r);display:none;box-shadow:var(--shadow-l);overflow:hidden}.note-pop.on{display:block}.note-pop div{padding:10px 12px;border-bottom:1px solid var(--line);font-size:13px}.note-pop div:last-child{border-bottom:0}.hide-line .line-seg{visibility:hidden}body.dash-mode .sub,body.focus-mode .module,body.focus-mode .sub{display:none}.short-table{width:100%;border-collapse:collapse;font-size:13px}.short-table th{text-align:left;color:var(--ink-3);font-weight:600;padding:4px 8px 4px 0;border-bottom:1px solid var(--line)}.short-table td{padding:5px 8px 5px 0;border-bottom:1px solid var(--line-2)}.short-table th.num,.short-table td.num{text-align:right;padding-left:8px;padding-right:0}.short-table td.num{font-weight:700}.reader{display:flex;align-items:center;justify-content:space-between;padding:8px 0;border-bottom:1px solid var(--line-2);font-size:13px}.reader .lamp{width:10px;height:10px;border-radius:50%;background:var(--green);display:inline-block;margin-right:8px}.reader.off .lamp{background:var(--gray)}.kv{display:flex;justify-content:space-between;font-size:13px;margin-top:8px;color:var(--ink-2)}.kv b{color:var(--ink)}.flow{display:flex;gap:8px;align-items:center;flex-wrap:wrap;margin-bottom:16px}.flow .st{min-width:88px;background:var(--white);border:1px solid var(--line);border-radius:var(--r);padding:10px 12px;text-align:center;box-shadow:var(--shadow)}.flow .st b{display:block;font-size:22px}.flow .st span{font-size:11px;color:var(--ink-3);font-weight:700}.flow .arrow{color:var(--ink-3)}.five{display:grid;grid-template-columns:repeat(5,1fr);gap:10px;margin-bottom:16px}.five .kpi .n{font-size:32px}.trace-card{background:var(--white);border:1px solid var(--line);border-radius:var(--r);padding:14px 16px;margin-bottom:12px;display:grid;grid-template-columns:repeat(4,1fr);gap:10px}.trace-card .l{font-size:11px;color:var(--ink-3)}.trace-card .v{font-weight:700}.rep-sec{margin-bottom:20px;scroll-margin-top:8px}.rep-sec h3{font-size:14px;margin:0 0 10px;color:var(--ink-2)}.rep-sec.on{padding:12px;margin-left:-12px;margin-right:-12px;border-radius:var(--r);background:var(--green-l2)}.form-row{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:12px}.form-row input,.form-row select{height:32px;border:1px solid var(--line);border-radius:var(--r-s);padding:0 8px}.tabs{display:flex;gap:0;margin-bottom:12px;border-bottom:1px solid var(--line);flex-wrap:wrap}.tabs button{border:0;background:none;padding:8px 14px;font-weight:600;font-size:13px;color:var(--ink-3);cursor:pointer;border-bottom:2px solid transparent}.tabs button.on{color:var(--green-d);border-bottom-color:var(--green)}tr.hot{background:#fff7e8}tr.bad{background:var(--red-l)}.chip{font-size:10px;color:var(--ink-3);margin-left:4px;font-weight:700}.bar.inline{width:72px;display:inline-block;vertical-align:middle;margin:0 6px 0 0}.muted{color:var(--ink-3)}.dept-bars{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-bottom:16px}.dept-bars .card{min-height:0}.hour-chart{height:120px;display:flex;align-items:flex-end;gap:6px;background:var(--white);border:1px solid var(--line);border-radius:var(--r);padding:12px 16px;margin-bottom:16px}.hour-chart i{flex:1;background:var(--green);border-radius:3px 3px 0 0;min-width:0}@media(max-width:1100px){.dash{grid-template-columns:1fr 1fr}.dash .span2{grid-column:span 2}.kpis,.rgrid,.five,.trace-card{grid-template-columns:1fr 1fr}}html,body,#root{height:100%}#root{min-height:0}.dash{pointer-events:auto}.pc-login{position:fixed;top:0;right:0;bottom:0;left:0;z-index:80;background:#0f172a;display:flex;align-items:center;justify-content:center}.pc-login-card{width:420px;background:#fff;border-radius:12px;padding:28px 28px 22px;box-shadow:var(--shadow-l);display:flex;flex-direction:column;gap:10px}.pc-login-card .logo{font-size:22px;font-weight:800;color:var(--green)}.pc-login-card h1{margin:0 0 6px;font-size:22px}.pc-login-card label{font-size:12px;font-weight:700;color:var(--ink-3)}.pc-login-card select,.pc-login-card input{height:44px;border:1px solid var(--line);border-radius:8px;padding:0 12px;font-size:14px;font-weight:700;color:var(--ink);background:#fff}.pc-login-card .btn-login{margin-top:8px;height:44px;border:0;border-radius:8px;background:var(--green);color:#fff;font-weight:800;cursor:pointer}.pc-login-card .tip{margin:4px 0 0;font-size:12px;color:var(--ink-3)}.pc-login-card .banner{display:none}.pc-login-card .banner.on{display:block}.short-table td.neg{color:var(--red)}button.excell{display:block;width:100%;text-align:left;border:0;cursor:pointer;font:inherit}button.excell:hover{filter:brightness(.97);box-shadow:inset 0 0 0 1px #00000014}body.ai-mode .sub{display:none}body.ai-mode .content{max-width:none}.sub .sub-grp{font-size:11px;font-weight:700;color:var(--ink-3);padding:12px 14px 4px;letter-spacing:.04em}.ant-table{font-family:inherit}.ant-btn-primary{background:var(--green);border-color:var(--green)}.content h3.ant-typography{display:none}.later-box{max-width:280px;margin-top:8px;padding:18px 20px;background:#fff7ed;border:2px dashed #ea580c;border-radius:12px}.later-box .later-mark{font-size:14px;font-weight:800;color:#c2410c}
