@import"https://fonts.googleapis.com/css2?family=Poppins:wght@400;500;600;700&display=swap";:root{--stream-blue: #2e5f9a;--stream-red: #d8232a;--ink-1: #0b1528;--ink-2: #14253f;--ink-3: #2a3f62;--ink-soft: #5c7091;--text-dim: #5f7190;--line-1: #cfd8e6;--line-2: #c1cde0;--line-soft: #d9e2ef;--line-strong: #9eb0ca;--bg-main: #e9eef6;--bg-panel: #ffffff;--bg-soft: #f5f8fd;--ok-bg: #d8f3e5;--ok-tx: #106f47;--warn-bg: #f8e9c8;--warn-tx: #8b6200;--bad-bg: #f8d9df;--bad-tx: #a11e35;--neutral-bg: #e5ebf5;--neutral-tx: #415473;--radius-lg: 0;--radius-md: 0;--radius-sm: 0;--shadow-1: 0 1px 0 rgba(10, 20, 36, .04);--shadow-2: 0 1px 0 rgba(10, 20, 36, .04)}*{box-sizing:border-box}html,body,#root{margin:0;min-height:100%;font-family:Poppins,Segoe UI,Tahoma,sans-serif;color:var(--ink-1);background:var(--bg-main)}.site-wrapper{width:100%}.app-shell{max-width:1460px;margin:0 auto;padding:1rem 1.1rem 2.2rem}.header{position:relative;top:0;z-index:20;border-radius:var(--radius-lg);padding:.75rem 1rem;border:1px solid #182031;background:#04070d;box-shadow:none}.header-inner.container--fluid{width:100%}.header-title-nav-wrapper{display:grid;grid-template-columns:1fr auto 1fr;align-items:center;gap:1rem}.header-title{display:flex;align-items:center;justify-content:center;gap:.6rem;min-width:0}.header-title-logo{flex-shrink:0}.brand-logo{width:148px;max-width:42vw;height:auto;object-fit:contain}.header-eyebrow{margin:0;color:#ffffffb3;font-size:.72rem;letter-spacing:.11em;text-transform:uppercase}.header h1{margin:0;font-size:clamp(1.05rem,2vw,1.42rem);line-height:1.2;color:#fff}.header-subtitle{margin:.2rem 0 0;color:#ffffffc7;font-size:.81rem}.header-context{margin:.16rem 0 0;color:#ffffff9e;font-size:.72rem;letter-spacing:.05em;text-transform:uppercase}.header-nav-wrapper{border:0;background:transparent;padding:0}.header-nav-list{display:flex;align-items:center;gap:1rem}.header-nav-item{-webkit-appearance:none;-moz-appearance:none;appearance:none;border:0;border-bottom:1px solid transparent;background:transparent;font-family:inherit;text-decoration:none;font-size:.68rem;font-weight:600;letter-spacing:.08em;text-transform:uppercase;color:#ffffffe0;border-radius:0;padding:.08rem 0;cursor:pointer;transition:.15s ease}.header-nav-item:hover{border-bottom-color:#fff9;color:#fff}.header-nav-item--active{border-bottom-color:#ffffffe6;color:#fff}.header-actions{display:flex;justify-content:flex-end;flex-wrap:wrap;gap:.4rem;align-items:center}.header-project-pill{border:1px solid #32445f;background:#0e1724;color:#d7e0ef;font-size:.68rem;letter-spacing:.04em;text-transform:uppercase;padding:.24rem .52rem}.language-switch{display:inline-flex;align-items:center;border:1px solid #32445f;background:#070d16}.language-switch-button{-webkit-appearance:none;-moz-appearance:none;appearance:none;min-width:34px;border:0;background:transparent;color:#9fb0c8;font-family:inherit;font-size:.66rem;font-weight:700;letter-spacing:.04em;padding:.26rem .42rem;cursor:pointer}.language-switch-button+.language-switch-button{border-left:1px solid #32445f}.language-switch-button.active,.language-switch-button:hover{background:#e6edf8;color:#0e1724}.sections{margin-top:.72rem}.page-section{margin-top:.8rem}.hero-banner{min-height:340px;border-radius:var(--radius-lg);position:relative;background-position:center;background-size:cover;background-repeat:no-repeat;border:1px solid #0f192a;box-shadow:none;overflow:hidden}.hero-video{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;object-fit:cover;z-index:0}.hero-overlay{min-height:340px;background:linear-gradient(100deg,#0000001a,#0000001a),linear-gradient(90deg,#ca00191a,#537bbb1a);padding:1.4rem;color:#fff;display:flex;flex-direction:column;justify-content:flex-end;position:relative;z-index:1}.hero-kicker{margin:0;text-transform:uppercase;letter-spacing:.09em;font-size:.72rem;color:#ffffffbd}.hero-overlay h2{margin:.5rem 0 0;max-width:680px;font-size:clamp(1.45rem,2.9vw,2.2rem);line-height:1.15}.hero-overlay p{margin:.55rem 0 0;max-width:650px;color:#ffffffe0;font-size:.92rem}.hero-stats{margin-top:.88rem;display:flex;flex-wrap:wrap;gap:.45rem}.hero-stats span{border-radius:0;border:1px solid rgba(255,255,255,.24);background:#0000005c;color:#fff;padding:.24rem .6rem;font-size:.76rem;font-weight:500}.overview-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:.78rem}.overview-card{border-radius:var(--radius-md);border:1px solid var(--line-1);box-shadow:var(--shadow-2);background:#fff;padding:.92rem .96rem}.overview-label{margin:0;font-size:.69rem;text-transform:uppercase;letter-spacing:.08em;color:var(--ink-soft)}.overview-card h3{margin:.36rem 0 .16rem;font-size:1.28rem;color:var(--ink-2)}.overview-card small{color:var(--ink-soft);font-size:.76rem}.overview-card.partner{background:#fff}.section-overview-trend .chart-wrap{height:390px}.partner-head{display:flex;justify-content:space-between;gap:.45rem;align-items:center}.partner-logo{width:78px;height:auto;object-fit:contain}.partner-error{margin-top:.45rem;border:1px solid #f7c3cb;background:#fff1f3;color:var(--bad-tx);border-radius:var(--radius-sm);padding:.35rem .45rem;font-size:.72rem}.partner-health{margin:.5rem 0;display:flex;flex-wrap:wrap;gap:.35rem}.health-kpi-line{margin-top:.24rem;display:block}.danger-text{color:var(--stream-red)}.legend-strip{display:flex;align-items:center;flex-wrap:wrap;gap:.55rem;border-radius:var(--radius-md);border:1px solid var(--line-1);background:var(--bg-panel);box-shadow:none;padding:.82rem .92rem}.legend-title{font-size:.8rem;font-weight:600;color:var(--ink-3)}.legend-item{display:inline-flex;border-radius:0;font-size:.73rem;font-weight:600;padding:.19rem .58rem}.legend-item.ok{background:var(--ok-bg);color:var(--ok-tx)}.legend-item.warn{background:var(--warn-bg);color:var(--warn-tx)}.legend-item.bad{background:var(--bad-bg);color:var(--bad-tx)}.legend-item.alarm{background:#ffd8dd;color:var(--stream-red)}.legend-time{margin-left:auto;font-size:.77rem;color:var(--ink-soft)}.operator-guide{border-radius:var(--radius-md);border:1px solid var(--line-1);background:var(--bg-panel);box-shadow:none;padding:.9rem .98rem}.operator-guide h3{margin:0;font-size:.98rem}.operator-guide>p{margin:.34rem 0 0;color:var(--ink-soft);font-size:.8rem}.operator-guide-grid{margin-top:.56rem;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.62rem}.operator-guide-grid strong{font-size:.8rem;color:var(--ink-2)}.operator-guide-grid p{margin:.22rem 0 0;color:var(--ink-soft);font-size:.77rem}.overview-process-guide{border:0;background:transparent;padding:0}.overview-guide-head{border:1px solid var(--line-1);background:var(--bg-panel);padding:.82rem .92rem}.overview-guide-head h3{margin:.25rem 0 0;color:var(--ink-2);font-size:1rem}.overview-guide-head p:last-child{max-width:980px;margin:.34rem 0 0;color:var(--ink-soft);font-size:.8rem;line-height:1.45}.overview-guide-grid{margin-top:.7rem;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.78rem}.overview-guide-panel{min-width:0;border:1px solid var(--line-1);background:#fff}.overview-guide-panel-head{min-height:76px;display:flex;justify-content:space-between;align-items:flex-start;gap:.7rem;border-bottom:1px solid var(--line-1);background:#f7faff;padding:.72rem .78rem}.overview-guide-panel-head h4{margin:.25rem 0 .14rem;color:var(--ink-2);font-size:.96rem}.overview-guide-panel-head span:not(.status-pill){color:var(--ink-soft);font-size:.74rem;line-height:1.35}.process-flow{display:flex;flex-wrap:wrap;gap:.38rem;border-bottom:1px solid var(--line-1);padding:.62rem .72rem}.process-step{display:inline-flex;align-items:center;gap:.28rem;border:1px solid #d7e5f8;background:#f3f8ff;color:var(--ink-3);font-size:.7rem;font-weight:700;padding:.2rem .44rem}.process-step strong{display:inline-grid;place-items:center;width:18px;height:18px;background:var(--stream-blue);color:#fff;font-size:.66rem}.overview-guide-section{border-bottom:1px solid #e4ecf7}.overview-guide-section:last-child{border-bottom:0}.overview-guide-section-head{background:#f3f7fd;padding:.52rem .72rem}.overview-guide-section-head strong{display:block;color:var(--ink-2);font-size:.8rem}.overview-guide-section-head span{display:block;margin-top:.12rem;color:var(--ink-soft);font-size:.7rem;line-height:1.35}.overview-param-list{display:grid;grid-template-columns:1fr}.overview-param-row{min-width:0;display:grid;grid-template-columns:minmax(0,1fr) minmax(96px,auto);gap:.62rem;border-top:1px solid #e7eef8;padding:.56rem .72rem}.overview-param-copy{min-width:0}.overview-param-copy strong{display:block;color:var(--ink-2);font-size:.78rem}.overview-param-copy p{margin:.16rem 0 0;color:var(--ink-3);font-size:.72rem;line-height:1.35}.overview-param-copy span,.overview-param-copy small{display:block;margin-top:.22rem;color:var(--ink-soft);font-size:.67rem;line-height:1.3}.overview-param-value{align-self:start;justify-self:end;min-width:112px;border:1px solid #c7d8ef;background:#fff;padding:.44rem .58rem;text-align:right}.overview-param-value span{display:block;color:var(--ink-2);font-size:.84rem;font-weight:800;line-height:1.2;overflow-wrap:anywhere}.overview-param-value small{display:block;margin-top:.12rem;color:var(--ink-soft);font-size:.62rem;line-height:1.2;overflow-wrap:anywhere}.mqtt-console{border:1px solid var(--line-1);background:var(--bg-panel);box-shadow:none;padding:.94rem}.mqtt-view-section{margin-top:.8rem}.mqtt-section-head{padding:0}.mqtt-toolbar{display:flex;align-items:center;gap:.38rem}.mqtt-button{min-height:30px;border:1px solid var(--line-2);background:#fff;color:var(--ink-2);font-size:.74rem;font-weight:600;padding:.22rem .62rem;cursor:pointer}.mqtt-button:hover:not(:disabled){border-color:var(--stream-blue);color:var(--stream-blue)}.mqtt-button:disabled{cursor:not-allowed;color:var(--ink-soft);background:#f4f7fb}.mqtt-toggle{min-height:30px;display:inline-flex;align-items:center;gap:.35rem;border:1px solid var(--line-2);background:#fff;padding:.2rem .55rem;font-size:.74rem;font-weight:600;color:var(--ink-2)}.mqtt-toggle input{width:14px;height:14px;margin:0;accent-color:var(--stream-blue)}.mqtt-status-grid{margin-top:.7rem;display:grid;grid-template-columns:.8fr 2fr 1.1fr .9fr;gap:.52rem}.mqtt-status-cell{min-width:0;border:1px solid var(--line-1);background:var(--bg-soft);padding:.58rem .62rem}.mqtt-cell-label{display:block;margin-bottom:.26rem;color:var(--ink-soft);font-size:.68rem;text-transform:uppercase;letter-spacing:.07em}.mqtt-status-cell strong{display:block;min-width:0;color:var(--ink-2);font-size:.82rem;overflow-wrap:anywhere}.mqtt-config-panel{margin-top:.58rem;border:1px solid var(--line-1);background:#fff;padding:.62rem}.mqtt-access-panel{max-width:420px}.mqtt-config-switches{display:flex;flex-wrap:wrap;gap:.42rem}.mqtt-config-grid{margin-top:.58rem;display:grid;grid-template-columns:1.5fr 1fr .42fr 1fr 1fr;gap:.5rem}.mqtt-field{min-width:0;display:flex;flex-direction:column;gap:.22rem}.mqtt-field.wide,.mqtt-field.topic{grid-column:span 2}.mqtt-field span{color:var(--ink-soft);font-size:.68rem;font-weight:600;text-transform:uppercase;letter-spacing:.07em}.mqtt-field input,.mqtt-field select{width:100%;min-height:34px;border:1px solid var(--line-2);background:#fbfdff;color:var(--ink-2);font:inherit;font-size:.78rem;padding:.28rem .46rem}.mqtt-field input:focus,.mqtt-field select:focus{outline:2px solid rgba(46,95,154,.24);border-color:var(--stream-blue)}.mqtt-config-actions{margin-top:.58rem;display:flex;align-items:center;flex-wrap:wrap;gap:.42rem}.mqtt-button.primary{border-color:var(--stream-blue);background:var(--stream-blue);color:#fff}.mqtt-button.primary:hover:not(:disabled){background:#234d80;color:#fff}.mqtt-button.danger{border-color:#b73a3a;color:#9f2f2f}.mqtt-button.danger:hover:not(:disabled){border-color:#9f2f2f;background:#fff4f4;color:#842727}.mqtt-dirty{visibility:hidden;color:var(--warn-tx);font-size:.74rem;font-weight:600}.mqtt-dirty.visible{visibility:visible}.mqtt-topic-grid{margin-top:.55rem;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.52rem}.mqtt-topic{min-width:0;display:grid;grid-template-columns:50px minmax(0,1fr);align-items:center;gap:.52rem;border:1px solid var(--line-1);background:#fff;padding:.5rem .58rem}.mqtt-topic span{color:var(--ink-2);font-weight:700;font-size:.76rem}.mqtt-topic code{min-width:0;color:var(--ink-3);font-size:.75rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.mqtt-error{margin-top:.56rem;border:1px solid #f1bdc5;background:#fff3f5;color:var(--bad-tx);padding:.48rem .58rem;font-size:.76rem}.mqtt-test-result{margin-top:.55rem;min-height:40px;display:flex;align-items:center;flex-wrap:wrap;gap:.5rem;border:1px solid var(--line-1);background:#fff;padding:.45rem .58rem}.mqtt-test-result.ok{border-color:#b8d8ca;background:#f2fbf6}.mqtt-test-result.bad{border-color:#f1bdc5;background:#fff7f8}.mqtt-test-result span:last-child{color:var(--ink-soft);font-size:.74rem;font-weight:600}.mqtt-workbench{margin-top:.66rem;display:grid;grid-template-columns:minmax(300px,.92fr) minmax(0,1.35fr);gap:.7rem}.mqtt-message-list,.mqtt-payload-viewer{min-width:0;border:1px solid var(--line-1);background:#fff}.mqtt-message-list{max-height:540px;overflow:auto}.mqtt-list-head,.mqtt-viewer-head{min-height:48px;display:flex;justify-content:space-between;align-items:center;gap:.6rem;border-bottom:1px solid var(--line-1);background:#f3f7fd;padding:.54rem .62rem}.mqtt-list-head strong,.mqtt-viewer-head strong{display:block;color:var(--ink-2);font-size:.86rem}.mqtt-list-head span,.mqtt-viewer-head span{display:block;margin-top:.08rem;color:var(--ink-soft);font-size:.72rem}.mqtt-message-row{width:100%;min-height:78px;border:0;border-bottom:1px solid #e7eef8;background:#fff;color:inherit;display:grid;grid-template-columns:minmax(0,1fr) auto;gap:.62rem;text-align:left;padding:.56rem .62rem;cursor:pointer}.mqtt-message-row:hover,.mqtt-message-row.active{background:#f1f6fd}.mqtt-message-row.active{box-shadow:inset 3px 0 0 var(--stream-blue)}.mqtt-row-main,.mqtt-row-meta{min-width:0;display:flex;flex-direction:column;gap:.24rem}.mqtt-row-main strong{color:var(--ink-2);font-size:.78rem}.mqtt-row-main small,.mqtt-row-meta small{color:var(--ink-soft);font-size:.68rem}.mqtt-row-main small{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.mqtt-row-meta{align-items:flex-end}.mqtt-payload-viewer{display:flex;flex-direction:column;min-height:540px}.mqtt-payload-legend{border-bottom:1px solid var(--line-1);background:#fbfdff}.mqtt-legend-head{min-height:52px;display:flex;justify-content:space-between;align-items:flex-start;gap:.7rem;padding:.62rem .68rem .42rem}.mqtt-legend-head strong{display:block;color:var(--ink-2);font-size:.86rem}.mqtt-legend-head span{display:block;margin-top:.12rem;color:var(--ink-soft);font-size:.72rem;line-height:1.35}.mqtt-legend-unit{flex:0 0 auto;border:1px solid #c7d8ef;background:#eef6ff;color:var(--stream-blue)!important;font-size:.7rem!important;font-weight:700;padding:.18rem .42rem}.mqtt-legend-note{margin:0 .68rem .52rem;border-left:3px solid var(--stream-blue);background:#f1f6fd;color:var(--ink-3);font-size:.72rem;line-height:1.35;padding:.34rem .48rem}.mqtt-legend-sections{max-height:430px;overflow:auto;border-top:1px solid #e4ecf7}.mqtt-legend-section{border-bottom:1px solid #dfe9f6}.mqtt-legend-section-head{background:#f3f7fd;padding:.52rem .68rem}.mqtt-legend-section-head strong{display:block;color:var(--ink-2);font-size:.8rem}.mqtt-legend-section-head span{display:block;margin-top:.12rem;color:var(--ink-soft);font-size:.7rem;line-height:1.35}.mqtt-legend-items{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:0}.mqtt-legend-item{min-width:0;display:grid;grid-template-columns:minmax(0,1fr) minmax(82px,auto);gap:.62rem;border-top:1px solid #e7eef8;padding:.58rem .68rem}.mqtt-legend-item:nth-child(odd){border-right:1px solid #e7eef8}.mqtt-legend-item-copy{min-width:0}.mqtt-legend-item-copy strong{display:block;color:var(--ink-2);font-size:.78rem}.mqtt-legend-item-copy p{margin:.16rem 0 0;color:var(--ink-3);font-size:.72rem;line-height:1.35}.mqtt-legend-item-copy span,.mqtt-legend-item-copy small{display:block;margin-top:.22rem;color:var(--ink-soft);font-size:.68rem;line-height:1.3}.mqtt-legend-item-copy code{display:inline-block;max-width:100%;margin-top:.22rem;color:#315a8f;background:#eef6ff;border:1px solid #d7e5f8;font-size:.68rem;padding:.1rem .24rem;overflow-wrap:anywhere}.mqtt-legend-value{align-self:start;justify-self:end;min-width:76px;border:1px solid #c7d8ef;background:#fff;padding:.28rem .38rem;text-align:right}.mqtt-legend-value span{display:block;color:var(--ink-2);font-size:.82rem;font-weight:800;line-height:1.2;overflow-wrap:anywhere}.mqtt-legend-value small{display:block;margin-top:.08rem;color:var(--ink-soft);font-size:.62rem;font-weight:700;text-transform:uppercase}.mqtt-json{flex:1;min-height:430px;margin:0;padding:.78rem;overflow:auto;background:#09101d;color:#e7edf8;font-size:.78rem;line-height:1.45;white-space:pre}.section-head{display:flex;justify-content:space-between;align-items:baseline;gap:.8rem;padding:.12rem .12rem .1rem}.section-head h2{margin:0;font-size:clamp(1rem,2vw,1.2rem)}.section-head p{margin:0;font-size:.82rem;color:var(--ink-soft)}.grid-cards{margin-top:.62rem;display:grid;grid-template-columns:repeat(auto-fit,minmax(296px,1fr));gap:.78rem}.machine-card,.chart-card,.table-card{border-radius:var(--radius-md);border:1px solid var(--line-1);box-shadow:none;background:var(--bg-panel)}.machine-card{padding:.95rem;transition:.18s ease}.machine-card:hover{transform:none;box-shadow:none}.machine-header{display:flex;justify-content:space-between;align-items:flex-start;gap:.65rem}.machine-eyebrow{margin:0;font-size:.68rem;color:var(--ink-soft);text-transform:uppercase;letter-spacing:.08em}.machine-header h3{margin:.16rem 0 0;font-size:1rem}.machine-badges{display:flex;justify-content:flex-end;flex-wrap:wrap;gap:.33rem}.machine-kpi{margin-top:.68rem;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.54rem}.kpi-cell{border-radius:var(--radius-sm);border:1px solid var(--line-1);background:var(--bg-soft);padding:.6rem .66rem}.kpi-label{display:block;font-size:.71rem;color:var(--ink-soft)}.machine-status{display:inline-flex;align-items:center;gap:.35rem}.status-dot{width:8px;height:8px;border-radius:50%;display:inline-block}.status-dot.on{background:#15a36d;box-shadow:0 0 0 4px #15a36d26}.status-dot.off{background:#cc3b4d;box-shadow:0 0 0 4px #cc3b4d29}.machine-temps{margin-top:.64rem}.section-label{margin:0 0 .42rem;color:var(--ink-soft);font-size:.76rem;text-transform:uppercase;letter-spacing:.07em}.metric-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:.5rem}.metric-item{border-radius:var(--radius-sm);border:1px solid var(--line-1);background:#fff;text-align:left;color:inherit;cursor:pointer;padding:.58rem .62rem;transition:.13s ease}.metric-item:hover{transform:none;border-color:var(--stream-blue);box-shadow:none}.metric-item.active{border-color:var(--stream-blue);box-shadow:inset 0 0 0 1px #2e5f9a59;background:#f1f6fd}.metric-item-static{cursor:default}.metric-item-static:hover{border-color:var(--line-1)}.metric-label{display:block;font-size:.68rem;color:var(--ink-soft)}.metric-value{display:block;margin-top:.14rem;font-size:.91rem}.metric-meta{display:block;margin-top:.2rem;font-size:.66rem;color:var(--ink-soft)}.machine-footer{margin-top:.68rem;border-top:1px dashed var(--line-2);padding-top:.52rem;display:flex;justify-content:space-between;gap:.45rem;font-size:.76rem;color:var(--ink-soft)}.panel-grid{margin-top:.62rem;display:grid;grid-template-columns:1.35fr 1fr;gap:.82rem}.trends-section-head{align-items:center}.history-range-control{display:flex;align-items:center;gap:.5rem;color:var(--ink-soft);font-size:.72rem;font-weight:600}.history-window-actions{display:inline-flex;align-items:center;gap:.16rem;border:1px solid #d8e3f0;border-radius:8px;background:#ecf2fac2;padding:.18rem}.history-window-btn{border:0;border-radius:6px;background:transparent;color:var(--ink-3);font-family:inherit;font-size:.72rem;font-weight:600;min-height:30px;padding:.26rem .58rem;cursor:pointer;transition:background .14s ease,color .14s ease,box-shadow .14s ease}.history-window-btn:hover{background:#ffffffb8}.history-window-btn.active{background:var(--stream-blue);color:#fff;box-shadow:0 1px 3px #2e5f9a33}.trend-controls{min-width:0;display:flex;flex-direction:column;align-items:flex-end;gap:.45rem}.telemetry-export-control{max-width:100%;display:flex;align-items:flex-end;justify-content:flex-end;flex-wrap:wrap;gap:.38rem;border:1px solid #d8e3f0;background:#fbfdff;padding:.38rem}.telemetry-export-title{align-self:center;color:var(--ink-soft);font-size:.72rem;font-weight:700}.telemetry-export-field{min-width:142px;display:flex;flex-direction:column;gap:.12rem}.telemetry-export-machine{min-width:178px}.telemetry-export-field span{color:var(--ink-soft);font-size:.64rem;font-weight:700;letter-spacing:.06em;text-transform:uppercase}.telemetry-export-field input,.telemetry-export-field select{width:100%;min-height:32px;border:1px solid var(--line-2);background:#fff;color:var(--ink-2);font:inherit;font-size:.72rem;padding:.22rem .42rem}.telemetry-export-field input:focus,.telemetry-export-field select:focus{outline:2px solid rgba(46,95,154,.22);border-color:var(--stream-blue)}.telemetry-export-actions{display:inline-flex;align-items:flex-end;gap:.24rem}.telemetry-export-btn{min-height:32px;border:1px solid var(--line-2);background:#fff;color:var(--ink-2);font-family:inherit;font-size:.72rem;font-weight:700;padding:.24rem .58rem;cursor:pointer}.telemetry-export-btn:hover:not(:disabled){border-color:var(--stream-blue);color:var(--stream-blue)}.telemetry-export-btn.primary{border-color:var(--stream-blue);background:var(--stream-blue);color:#fff}.telemetry-export-btn.primary:hover:not(:disabled){background:#234d80;color:#fff}.telemetry-export-btn:disabled{cursor:not-allowed;color:var(--ink-soft);background:#f4f7fb}.telemetry-export-error{flex-basis:100%;color:var(--bad-tx);font-size:.7rem;font-weight:700;text-align:right}.trend-stack{margin-top:.62rem;display:grid;gap:.9rem}.machine-trend-block{border-radius:var(--radius-md);border:1px solid var(--line-1);background:var(--bg-panel);box-shadow:none;padding:.92rem;content-visibility:auto;contain-intrinsic-size:620px}.machine-trend-block .section-head{padding:0}.machine-trend-block .section-head h3{margin:0;font-size:1rem}.chart-card,.table-card{padding:.9rem}.chart-card{position:relative;overflow:hidden;border-color:#d4dfed;border-radius:8px;background:linear-gradient(180deg,#fffffffa,#f8fbfffa),linear-gradient(90deg,#2e5f9a14,#1b9a790d)}.chart-card-expanded{padding:1rem;border-color:#b9c9df;overflow:visible;box-shadow:0 10px 28px #0a14241f}.chart-card-expanded .chart-wrap,.section-overview-trend .chart-card-expanded .chart-wrap{height:clamp(520px,70vh,760px);min-height:420px}.chart-card:before{content:"";position:absolute;inset:0 0 auto;height:3px;background:linear-gradient(90deg,var(--stream-blue),#1b9a79 62%,var(--stream-red))}.panel-header{display:flex;justify-content:space-between;align-items:baseline;gap:.7rem;margin-bottom:.46rem}.panel-header h3{margin:0;font-size:1rem}.chart-card .panel-header{align-items:flex-start;margin-bottom:.58rem}.chart-header-actions{display:flex;align-items:center;justify-content:flex-end;flex:0 0 auto;margin-left:auto}.chart-icon-button{-webkit-appearance:none;-moz-appearance:none;appearance:none;display:inline-flex;align-items:center;justify-content:center;width:34px;height:34px;border:1px solid #c9d6e7;border-radius:6px;background:#ffffffd6;color:var(--ink-3);cursor:pointer;transition:background .14s ease,border-color .14s ease,color .14s ease}.chart-icon-button:hover,.chart-icon-button:focus-visible{border-color:var(--stream-blue);background:#eef5ff;color:var(--stream-blue);outline:none}.chart-title-row{display:flex;align-items:center;gap:.44rem;min-width:0}.chart-title-row h3{overflow-wrap:anywhere}.chart-live-dot{position:relative;width:9px;height:9px;border-radius:50%;flex:0 0 auto;background:#1b9a79;box-shadow:0 0 0 4px #1b9a7929;animation:chart-live-glow 1.7s ease-in-out infinite}.chart-live-dot:after{content:"";position:absolute;top:-7px;right:-7px;bottom:-7px;left:-7px;border:1px solid rgba(27,154,121,.28);border-radius:inherit;animation:chart-live-ring 1.7s ease-out infinite}.panel-subtitle{margin:.12rem 0 0;color:var(--ink-soft);font-size:.74rem}.panel-meta{font-size:.74rem;color:var(--ink-soft)}.chart-toolbar{display:flex;align-items:center;justify-content:space-between;gap:.7rem;margin-bottom:.72rem}.chart-card .panel-meta{border:1px solid #d9e3f1;border-radius:999px;background:#ffffffb8;color:var(--ink-3);padding:.22rem .56rem;white-space:nowrap}.trend-stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(112px,1fr));gap:.5rem;margin-bottom:.72rem}.chart-series-legend{display:flex;flex-wrap:wrap;gap:.38rem;margin:-.22rem 0 .72rem}.chart-series-item{-webkit-appearance:none;-moz-appearance:none;appearance:none;min-width:0;display:inline-flex;align-items:center;gap:.36rem;border:1px solid #d9e3f1;border-radius:999px;background:#ffffffc7;color:var(--ink-3);font:inherit;padding:.22rem .52rem;font-size:.68rem;cursor:pointer;transition:border-color .14s ease,background .14s ease,opacity .14s ease}.chart-series-item:hover{border-color:var(--stream-blue);background:#fff}.chart-series-item.is-hidden{opacity:.46;background:#f0f4fa}.chart-series-item.is-hidden span,.chart-series-item.is-hidden strong{text-decoration:line-through}.chart-series-item i,.chart-tooltip-value i{width:8px;height:8px;display:inline-block;flex:0 0 auto;border-radius:999px}.chart-series-item span{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.chart-series-item strong{color:var(--ink-2);font-size:.7rem;white-space:nowrap}.chart-window-actions{display:inline-flex;align-items:center;gap:.16rem;border:1px solid #d8e3f0;border-radius:8px;background:#ecf2fac2;padding:.18rem}.chart-window-btn{border:0;border-radius:6px;background:transparent;color:var(--ink-3);font-size:.72rem;font-weight:600;min-height:30px;padding:.26rem .58rem;cursor:pointer;transition:background .14s ease,color .14s ease,box-shadow .14s ease}.chart-window-btn:hover{background:#ffffffb8}.chart-window-btn.active{background:var(--stream-blue);color:#fff;box-shadow:0 1px 3px #2e5f9a33}.trend-stat{position:relative;min-width:0;min-height:62px;border-radius:8px;border:1px solid #d9e3f1;background:#ffffffd1;color:var(--ink-soft);padding:.54rem .66rem .5rem;box-shadow:inset 0 1px #ffffffeb}.trend-stat:before{content:"";position:absolute;inset:.55rem auto .55rem 0;width:3px;border-radius:0 3px 3px 0;background:var(--stream-blue)}.trend-stat.latest:before,.trend-stat.avg:before{background:#1b9a79}.trend-stat.max:before,.trend-stat.range:before{background:var(--stream-red)}.trend-stat-label{display:block;margin-bottom:.16rem;overflow-wrap:anywhere;color:var(--ink-soft);font-size:.66rem;font-weight:600;letter-spacing:.04em;text-transform:uppercase}.trend-stat strong{color:var(--ink-2);display:block;overflow-wrap:anywhere;font-size:1.02rem;line-height:1.18}.chart-wrap{position:relative;width:100%;height:344px;overflow:hidden;border-radius:8px;border:1px solid #d3deec;background:linear-gradient(180deg,#fff,#f8fbff),repeating-linear-gradient(90deg,rgba(46,95,154,.034) 0,rgba(46,95,154,.034) 1px,transparent 1px,transparent 32px);background-position:0 0,0 0;background-size:auto,64px 100%;padding:.68rem .34rem .22rem .22rem;box-shadow:inset 0 1px #ffffffe6}.chart-wrap:after{content:"";display:none;position:absolute;top:0;right:0;bottom:0;left:0;z-index:0;pointer-events:none;background:linear-gradient(90deg,transparent 0%,rgba(46,95,154,.055) 48%,transparent 72%);transform:translate(-110%)}.chart-wrap>*{position:relative;z-index:1}.chart-wrap .empty-state{height:100%;min-height:0;border-radius:6px}.chart-tooltip{min-width:168px;border:1px solid #cfdbea;border-radius:8px;background:#fffffff7;box-shadow:0 12px 30px #0a142424;padding:.58rem .66rem}.chart-tooltip-time{display:block;margin-bottom:.28rem;color:var(--text-dim);font-size:.68rem;white-space:nowrap}.chart-tooltip-values{display:grid;gap:.22rem}.chart-tooltip-value{display:flex;justify-content:space-between;align-items:baseline;gap:.75rem;color:var(--ink-soft);font-size:.72rem}.chart-tooltip-value>span{display:inline-flex;align-items:center;gap:.32rem;min-width:0}.chart-tooltip-value strong{color:var(--ink-2);font-size:1rem;white-space:nowrap}.chart-latest-dot{transform-box:fill-box;transform-origin:center;filter:drop-shadow(0 0 5px rgba(46,95,154,.22))}.chart-active-dot{filter:drop-shadow(0 0 6px rgba(10,20,36,.18))}.chart-hover-capture{fill:transparent;cursor:crosshair;pointer-events:all}.chart-hover-line{pointer-events:none;stroke:#2e5f9a6b;stroke-width:1;stroke-dasharray:4 6}.chart-hover-dot{pointer-events:none;filter:drop-shadow(0 0 6px rgba(10,20,36,.16))}.chart-hover-overlay{position:absolute;top:0;right:0;bottom:0;left:0;z-index:4;opacity:0;visibility:hidden;pointer-events:none}.chart-hover-overlay.is-active{opacity:1;visibility:visible}.chart-hover-line-html{position:absolute;z-index:3;top:0;left:0;width:1px;height:0;pointer-events:none;background:repeating-linear-gradient(to bottom,rgba(46,95,154,.42) 0,rgba(46,95,154,.42) 4px,transparent 4px,transparent 10px);transform:translate(-.5px);will-change:transform,height}.chart-hover-dot-html{position:absolute;z-index:4;top:0;left:0;display:none;border:2.2px solid var(--stream-blue);border-radius:999px;background:#fff;box-shadow:0 0 6px #0a142429;pointer-events:none;transform:translate(-50%,-50%);will-change:transform}.chart-hover-tooltip{position:absolute;z-index:4;top:0;left:0;max-width:min(320px,calc(100% - 16px));pointer-events:none;transform:translate(-50%,calc(-100% - 12px));will-change:transform}.chart-hover-tooltip.left{transform:translate(10px,calc(-100% - 12px))}.chart-hover-tooltip.right{transform:translate(calc(-100% - 10px),calc(-100% - 12px))}@keyframes chart-live-glow{0%,to{box-shadow:0 0 0 4px #1b9a7929}50%{box-shadow:0 0 0 6px #1b9a7914,0 0 10px #1b9a7952}}@keyframes chart-live-ring{0%{opacity:.5;transform:scale(.68)}to{opacity:0;transform:scale(1.5)}}@keyframes chart-grid-drift{0%{background-position:0 0,0 0}to{background-position:0 0,64px 0}}@keyframes chart-soft-sweep{0%,36%{opacity:0;transform:translate(-110%)}52%{opacity:1}82%,to{opacity:0;transform:translate(110%)}}@keyframes chart-tooltip-pop{0%{opacity:0;transform:translateY(3px) scale(.98)}to{opacity:1;transform:translateY(0) scale(1)}}@keyframes chart-latest-pulse{0%,to{opacity:.88;transform:scale(.96)}50%{opacity:1;transform:scale(1.22)}}.table-wrap{border:1px solid var(--line-1);border-radius:0;overflow:auto;max-height:350px}table{width:100%;border-collapse:collapse;min-width:760px}thead th{position:sticky;top:0;z-index:1;background:#eaf1fd;letter-spacing:.02em}th,td{text-align:left;font-size:.79rem;padding:.53rem .5rem;border-bottom:1px solid #e8eff8}tbody tr:hover{background:#f1f7ff}tbody tr:nth-child(2n){background:#fcfdff}.alarm-count{border-radius:999px;background:var(--neutral-bg);color:var(--neutral-tx);font-size:.72rem;font-weight:600;padding:.24rem .6rem;white-space:nowrap}.alarm-count.active{background:#ffe4e8;color:var(--stream-red)}.alarm-filters{display:flex;flex-wrap:wrap;gap:.36rem;margin-bottom:.54rem}.alarm-filter-btn{display:inline-flex;align-items:center;gap:.38rem;border:1px solid #d7e2f0;border-radius:999px;background:#fff;color:var(--ink-3);font-size:.71rem;font-weight:600;min-height:30px;padding:.2rem .3rem .2rem .58rem;cursor:pointer}.alarm-filter-btn.active{border-color:var(--stream-red);background:#fff4f6;color:var(--stream-red);font-weight:600}.alarm-filter-btn strong{min-width:22px;border-radius:999px;background:#eef3fa;color:var(--ink-3);font-size:.66rem;line-height:1;padding:.22rem .34rem;text-align:center}.alarm-filter-btn.active strong{background:var(--stream-red);color:#fff}.alarm-row.active{background:#fff8f9}.alarm-row.active td:first-child{box-shadow:inset 3px 0 0 var(--stream-red)}.alarm-code{display:inline-grid;gap:.12rem;max-width:230px;border-radius:8px;border:1px solid rgba(202,0,25,.25);background:#fff2f4;color:var(--stream-red);font-weight:700;padding:.28rem .48rem}.alarm-code-main{overflow-wrap:anywhere;font-size:.72rem;line-height:1.18}.alarm-code-source{overflow-wrap:anywhere;color:#7f4d59;font-size:.6rem;font-weight:600}.alarm-message-cell{min-width:220px;max-width:360px;color:var(--ink-2)}.alarm-duration{display:inline-flex;align-items:center;min-height:24px;border-radius:999px;background:#edf3fb;color:var(--ink-3);font-size:.7rem;font-weight:700;padding:.14rem .48rem;white-space:nowrap}.status-pill{display:inline-flex;align-items:center;border:1px solid transparent;border-radius:0;white-space:nowrap;font-size:.76rem;font-weight:600;padding:.22rem .62rem}.status-pill.ok{background:var(--ok-bg);color:var(--ok-tx)}.status-pill.warn{background:var(--warn-bg);color:var(--warn-tx)}.status-pill.bad,.status-pill.alarm{background:var(--bad-bg);color:var(--bad-tx)}.status-pill.neutral{background:var(--neutral-bg);color:var(--neutral-tx)}.empty-state{min-height:94px;border-radius:0;border:1px dashed var(--line-2);background:linear-gradient(180deg,#fbfdff,#f7fbff);display:grid;place-items:center;text-align:center;color:var(--ink-soft);font-size:.83rem;padding:.78rem}.empty-state.compact{min-height:70px}.skeleton{position:relative;overflow:hidden;background:#e7edf7;border-radius:0}.skeleton:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;transform:translate(-100%);background:linear-gradient(90deg,transparent,rgba(255,255,255,.67),transparent);animation:shimmer 1.25s infinite}.skeleton-logo{width:170px;height:34px}.skeleton-pill{width:104px;height:26px}.skeleton-card{min-height:170px}.skeleton-line{height:15px;margin-top:8px}.skeleton-line.short{width:48%}@keyframes shimmer{to{transform:translate(100%)}}@media(prefers-reduced-motion:reduce){.chart-live-dot,.chart-live-dot:after,.chart-wrap,.chart-wrap:after,.chart-tooltip,.chart-latest-dot,.skeleton:after{animation:none}}@media(max-width:1250px){.header-title-nav-wrapper{grid-template-columns:1fr;align-items:stretch}.header-actions,.header-title{justify-content:flex-start}.header-nav-list{flex-wrap:wrap;gap:.65rem 1rem}.overview-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(max-width:1080px){.panel-grid,.mqtt-status-grid,.mqtt-config-grid,.mqtt-workbench{grid-template-columns:1fr}.mqtt-field.wide,.mqtt-field.topic{grid-column:auto}.header{position:static}}@media(max-width:760px){.app-shell{padding:.72rem}.brand-logo{width:146px}.overview-grid,.machine-kpi,.metric-grid{grid-template-columns:1fr}.trends-section-head,.history-range-control{align-items:stretch;flex-direction:column}.trend-controls{width:100%;align-items:stretch}.history-window-actions{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));width:100%}.history-window-btn{min-width:0;padding-inline:.32rem}.telemetry-export-control{display:grid;grid-template-columns:1fr;align-items:stretch;justify-content:stretch}.telemetry-export-field,.telemetry-export-machine{min-width:0}.telemetry-export-actions{display:grid;grid-template-columns:repeat(2,minmax(0,1fr))}.telemetry-export-error{text-align:left}.chart-card{padding:.78rem}.chart-card .panel-header,.chart-toolbar{align-items:stretch;flex-direction:column}.chart-window-actions{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));width:100%}.chart-window-btn{min-width:0;padding-inline:.32rem}.chart-card .panel-meta{width:fit-content}.trend-stats{grid-template-columns:repeat(2,minmax(0,1fr))}.trend-stat.latest{grid-column:1 / -1}.chart-wrap{height:300px;padding:.54rem .12rem .16rem 0}.section-overview-trend .chart-wrap{height:340px}.chart-card-expanded{padding:.7rem}.chart-card-expanded .panel-header{align-items:flex-start;flex-direction:row}.chart-card-expanded .chart-wrap,.section-overview-trend .chart-card-expanded .chart-wrap{height:68vh;min-height:300px}.legend-time{width:100%;margin-left:0}.operator-guide-grid,.overview-guide-grid,.overview-guide-panel-head,.overview-param-row{grid-template-columns:1fr}.overview-guide-panel-head{align-items:stretch;flex-direction:column}.overview-param-value{justify-self:stretch;text-align:left}.mqtt-section-head,.mqtt-toolbar,.mqtt-list-head,.mqtt-viewer-head,.mqtt-legend-head{align-items:stretch;flex-direction:column}.mqtt-topic-grid{grid-template-columns:1fr}.mqtt-topic{grid-template-columns:1fr;gap:.26rem}.mqtt-message-row{grid-template-columns:1fr}.mqtt-row-meta{align-items:flex-start}.mqtt-legend-unit{width:fit-content}.mqtt-legend-items,.mqtt-legend-item{grid-template-columns:1fr}.mqtt-legend-item:nth-child(odd){border-right:0}.mqtt-legend-value{justify-self:stretch;text-align:left}.mqtt-json{min-height:320px;font-size:.72rem}.hero-banner,.hero-overlay{min-height:260px}}
