:root{
  --bg:#061519;--surface:#091d22;--surface-2:#0d272d;--line:#214149;--line-soft:#17343a;
  --text:#e9f2f2;--muted:#779097;--teal:#28d8c7;--teal-dim:#147d78;--violet:#8d7cff;
  --danger:#ff6d70;--warning:#ffb35c;--ok:#62d8a6;--mono:"Roboto Mono",monospace
}
*{box-sizing:border-box}
html{background:var(--bg);color:var(--text);font-family:Manrope,sans-serif}
body{margin:0;min-width:320px;background:var(--bg);color:var(--text)}
button,a,input,select{font:inherit}button{color:inherit}a{color:inherit}.dashboard-page{height:100svh;overflow:hidden}
.app-header{height:58px;display:flex;align-items:center;justify-content:space-between;padding:0 13px;border-bottom:1px solid var(--line);background:#081a1f;position:relative;z-index:30}
.brand{display:flex;align-items:center;gap:9px;text-decoration:none;min-width:0}.brand-glyph{width:34px;height:34px;border:2px solid var(--teal);border-radius:11px;display:flex;flex-direction:column;justify-content:center;gap:4px;padding:7px;transform:rotate(-6deg);flex:0 0 auto}.brand-glyph i{height:2px;background:var(--teal)}.brand-glyph i:nth-child(2){width:72%}.brand strong,.brand small{display:block}.brand strong{font-size:12px;white-space:nowrap}.brand small{font:7px var(--mono);color:var(--muted);letter-spacing:.08em;text-transform:uppercase;margin-top:2px;white-space:nowrap}
.primary-nav{position:fixed;left:0;right:0;bottom:0;height:66px;padding-bottom:env(safe-area-inset-bottom);display:flex;background:#091e23;border-top:1px solid var(--line);z-index:60}.primary-nav a{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:5px;text-decoration:none;color:var(--muted);font-size:9px;position:relative}.primary-nav a b{font:500 18px var(--mono);line-height:1}.primary-nav a.active{color:var(--teal)}.primary-nav a.active:before{content:"";position:absolute;top:-1px;width:42px;border-top:2px solid var(--teal)}
.header-actions{display:flex;align-items:center;gap:7px;min-width:0}.demo-toggle{height:28px;border:1px solid #34565d;background:#0b242a;color:#8ea5aa;padding:0 8px;display:flex;align-items:center;gap:5px;font:7px var(--mono);cursor:pointer}.demo-toggle i{width:6px;height:6px;border-radius:50%;background:#668087}.demo-toggle.active{border-color:#2ca99e;color:var(--teal);background:#113439;box-shadow:inset 0 -2px #28d8c766}.demo-toggle.active i{background:var(--teal);box-shadow:0 0 8px #28d8c7}.connection{border:0;background:none;display:flex;align-items:center;gap:8px;padding:4px;cursor:pointer;text-align:left}.connection>i,.system-strip>span:first-child i{width:8px;height:8px;border-radius:50%;background:var(--muted);box-shadow:0 0 0 4px #78909912;flex:0 0 auto}.connection.online>i,.system-strip>span:first-child i{background:var(--ok);box-shadow:0 0 12px #62d8a688}.connection.offline>i{background:var(--danger)}.connection span{display:none}.connection strong,.connection small{display:block}.connection strong{font-size:9px}.connection small{font:7px var(--mono);color:var(--muted);margin-top:2px}
.system-strip{height:34px;padding:0 13px;display:flex;align-items:center;gap:18px;background:#0e252b;border-bottom:1px solid var(--line);font:8px var(--mono);color:var(--muted);position:relative;z-index:20}.system-strip>span:first-child{display:flex;align-items:center;gap:8px;color:var(--ok)}.system-strip.alarm>span:first-child{color:var(--danger)}.system-strip.alarm>span:first-child i{background:var(--danger);box-shadow:0 0 12px #ff6d7088}.system-strip>span:nth-child(2),.system-strip>span:nth-child(3){display:none}.system-strip b{font-weight:400;color:#a9bdc1}.system-strip button{margin-left:auto;border:0;background:none;color:#9bb0b5;font:8px var(--mono);cursor:pointer}.system-strip button:disabled{opacity:.35}
.dashboard-shell{height:calc(100svh - 158px);min-height:0;position:relative}.tank-workspace{height:100%;min-height:0;position:relative;overflow:hidden;display:flex;flex-direction:column;background:linear-gradient(180deg,#071a1f,#092229);isolation:isolate}.tank-grid{position:absolute;inset:0;z-index:-1;opacity:.17;background-image:linear-gradient(#17353c 1px,transparent 1px),linear-gradient(90deg,#17353c 1px,transparent 1px);background-size:48px 48px;mask-image:linear-gradient(to bottom,#000,transparent 90%)}
.water-fill{position:absolute;left:0;right:0;bottom:0;min-height:4%;z-index:-1;background:linear-gradient(180deg,#14827d45,#0b66684c 40%,#06464e66);transition:height 1.1s cubic-bezier(.2,.8,.2,1);box-shadow:inset 0 10px 28px #31e2d30b}.water-fill:before{content:"";position:absolute;left:0;right:0;top:-1px;height:1px;background:#48c8bd77}.water-fill i{position:absolute;left:-20px;top:-9px;width:calc(100% + 40px);height:16px;background:radial-gradient(24px 8px at 24px 10px,transparent 69%,#2dd3c52e 72%,transparent 75%) repeat-x;background-size:48px 18px;animation:wave 12s linear infinite}.water-fill i:nth-child(2){opacity:.22;animation-direction:reverse;animation-duration:16s;transform:translateX(24px)}
.tank-head{height:54px;flex:0 0 54px;padding:8px 17px 2px;display:flex;align-items:center;justify-content:flex-end;position:relative;z-index:3}.kicker{font:7px var(--mono);color:#718b92;letter-spacing:.15em}.operational-metrics{display:flex;align-items:flex-end;justify-content:flex-end;gap:13px;min-width:0}.level-display,.flow-display{display:grid;grid-template-columns:auto auto;align-items:end;text-align:right}.level-display span,.flow-display span{grid-column:1/3;font:7px var(--mono);color:var(--muted);margin-bottom:-2px;text-transform:uppercase;letter-spacing:.08em;white-space:nowrap}.level-display strong{font:500 27px var(--mono);color:var(--violet);letter-spacing:-.07em}.level-display em,.flow-display em{font:normal 8px var(--mono);color:#a9b8bc;margin:0 0 5px 5px}.flow-display{min-width:54px}.flow-display strong{font:500 15px var(--mono);color:var(--teal);letter-spacing:-.04em}.flow-display em{font-size:6px;margin-bottom:3px}.flow-display[hidden]{display:none!important}
.trend-controls{height:34px;flex:0 0 34px;padding:0 16px;display:flex;justify-content:space-between;align-items:center;position:relative;z-index:4}.pump-filter{display:flex;border:1px solid #2a4b53;background:#081a1f}.pump-filter button{min-width:42px;padding:5px 9px;border:0;border-right:1px solid #2a4b53;background:none;color:var(--muted);font:8px var(--mono);cursor:pointer}.pump-filter button:last-child{border:0}.pump-filter button.active{background:#164047;color:var(--teal)}.analog-open{border:0;background:none;color:#8ba2a8;font:8px var(--mono);cursor:pointer}.analog-open span{color:var(--teal);font-size:12px}
.trend-legend{min-height:58px;flex:0 0 auto;padding:5px 14px 6px;display:flex;gap:6px 11px;align-content:flex-start;flex-wrap:wrap;position:relative;z-index:4;overflow:hidden}.trend-legend button{border:0;background:none;padding:2px 0;color:#526c73;font:7px var(--mono);white-space:nowrap;cursor:pointer;transition:color .2s,opacity .2s;opacity:.6}.trend-legend button i{display:inline-block;width:14px;border-top:2px solid #526c73;margin:0 5px 2px 0}.trend-legend button.calculated i{border-top-style:dashed}.trend-legend button.active{color:#dce8e9;opacity:1}.trend-legend button.active i{border-color:var(--metric)}
.trend-stage{flex:1;min-height:92px;margin:0 15px 5px;position:relative;z-index:2;touch-action:none;cursor:grab;user-select:none}.trend-stage.dragging{cursor:grabbing}.trend-stage svg{width:100%;height:100%;overflow:hidden}.grid-line{stroke:#1d4249;stroke-width:1;opacity:.62}.grid-line.vertical{opacity:.28}.axis-text{fill:#6f8991;font:8px var(--mono)}.chart-message{position:absolute;inset:0;display:grid;place-items:center;text-align:center;color:#779097;font:8px/1.5 var(--mono);margin:0;padding:24px;pointer-events:none}.trend-freshness{position:absolute;left:4px;right:4px;top:2px;display:flex;justify-content:space-between;color:#698188;font:7px var(--mono);pointer-events:none}
.pump-deck{height:132px;flex:0 0 132px;margin:0;border-top:1px solid #34565d;display:grid;grid-template-columns:1fr 1fr;position:relative;z-index:5;background:linear-gradient(180deg,#0b222600,#08202599 23%,#071b20e8)}.pump-unit{min-width:0;display:flex;align-items:flex-end;justify-content:center;gap:9px;padding:7px 7px 8px;border-right:1px solid #26474e}.pump-unit:last-child{border-right:0}.pump-visual{width:57px;height:96px;display:flex;align-items:flex-end;flex:0 0 57px;filter:drop-shadow(0 4px 9px #0007);color:#70868b;transition:.3s}.pump-visual svg{display:block;width:100%;height:100%;overflow:visible}.pump-unit.running .pump-visual{color:var(--teal);filter:drop-shadow(0 0 9px #28d8c777)}.pump-unit.fault .pump-visual{color:var(--danger);filter:drop-shadow(0 0 10px #ff6d7077)}.pump-info{min-width:0;align-self:center}.pump-info strong,.pump-info>div>span{display:block}.pump-info strong{font:500 9px var(--mono);letter-spacing:.04em}.pump-info>div>span{font:7px var(--mono);color:var(--muted);margin-top:3px}.pump-unit.running .pump-info>div>span{color:var(--teal)}.pump-unit.fault .pump-info>div>span{color:var(--danger)}.discrete-status{display:flex;gap:4px;flex-wrap:wrap;margin-top:7px}.discrete-status i{font:normal 6px var(--mono);padding:3px 5px;border:1px solid #3a5258;color:#789097;background:#0a1b20}.discrete-status i.ok{border-color:#2a6a59;color:#6bd0a7}.discrete-status i.bad{border-color:#713d42;color:#ff8183}.manual-frequency-button{display:block;margin-top:6px;border:0;border-bottom:1px dashed #567078;padding:0 0 2px;background:none;color:#b3c2c5;font:7px var(--mono);cursor:pointer}.frequency-tagged{display:block;margin-top:6px;color:#6e898f;font:7px var(--mono)}
.alarm-rail{position:fixed;inset:0 0 60px 0;background:#081b20f5;z-index:55;display:flex;flex-direction:column;transform:translateY(110%);transition:transform .28s ease;backdrop-filter:blur(10px)}.alarm-rail.mobile-open{transform:none}.rail-head{height:72px;display:flex;align-items:center;justify-content:space-between;padding:0 18px;border-bottom:1px solid var(--line)}.rail-head h2{font-size:17px;margin:4px 0 0}.rail-head a{color:var(--teal);font:8px var(--mono);text-decoration:none}.alarm-total{height:92px;display:flex;align-items:center;gap:12px;padding:0 20px;border-bottom:1px solid var(--line);background:#102b31}.alarm-total strong{font:500 38px var(--mono);color:var(--danger)}.alarm-total span{font:8px/1.5 var(--mono);color:var(--muted);text-transform:uppercase}.alarm-list{overflow:auto;flex:1;min-height:0}.alarm-item{padding:15px 18px;display:grid;grid-template-columns:8px 1fr;gap:10px;border-bottom:1px solid var(--line-soft)}.alarm-item>i{width:7px;height:7px;border-radius:50%;background:var(--danger);margin-top:4px;box-shadow:0 0 9px #ff6d7066}.alarm-item.warning>i{background:var(--warning);box-shadow:none}.alarm-item.ok>i{background:var(--ok);box-shadow:none}.alarm-item span,.alarm-item strong,.alarm-item small{display:block}.alarm-item span{font:7px var(--mono);color:var(--danger);letter-spacing:.1em}.alarm-item.warning span{color:var(--warning)}.alarm-item.ok span{color:var(--ok)}.alarm-item strong{font-size:10px;margin:5px 0}.alarm-item small{font:7px var(--mono);color:var(--muted)}.rail-footer{height:46px;display:flex;align-items:center;justify-content:space-between;padding:0 18px;border-top:1px solid var(--line);font:8px var(--mono);color:var(--muted)}.rail-footer strong{color:var(--ok);font-weight:400}.mobile-alarm-button{position:absolute;right:12px;bottom:140px;z-index:12;border:1px solid #34545b;background:#0b252bcc;border-radius:18px;padding:7px 9px;display:flex;align-items:center;gap:6px;font:7px var(--mono);backdrop-filter:blur(8px)}.mobile-alarm-button i{width:6px;height:6px;border-radius:50%;background:var(--ok)}.mobile-alarm-button strong{font-weight:500}.mobile-alarm-button.has-alarm{border-color:#804249;color:#ffc1c1}.mobile-alarm-button.has-alarm i{background:var(--danger);box-shadow:0 0 7px #ff6d70}
.sheet-dialog{width:min(620px,calc(100% - 20px));max-height:min(78svh,720px);padding:0;border:1px solid #315159;background:#0a2026;color:var(--text);box-shadow:0 22px 80px #000b}.sheet-dialog::backdrop{background:#021014bb;backdrop-filter:blur(5px)}.sheet-dialog[open]{animation:dialog-in .22s ease}.sheet-dialog>p{padding:0 18px;color:var(--muted);font-size:9px}.sheet-head{min-height:64px;padding:13px 17px;display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid var(--line)}.sheet-head h2{font-size:15px;margin:4px 0 0}.sheet-head button{border:0;background:none;color:#92a8ad;font-size:24px;cursor:pointer}.analog-picker{padding:8px 12px 18px;display:grid;grid-template-columns:1fr;gap:4px;max-height:55svh;overflow:auto}.analog-picker button{border:1px solid var(--line-soft);background:#0a1b20;color:#7d949a;padding:9px 10px;display:grid;grid-template-columns:10px 1fr auto;align-items:center;text-align:left;gap:7px;font:8px var(--mono);cursor:pointer}.analog-picker button i{width:8px;border-top:2px solid #516970}.analog-picker button em{font-style:normal;color:#607a81}.analog-picker button.active{border-color:#3a6068;color:var(--text)}.analog-picker button.active i{border-color:var(--tag-color)}.sheet-dialog.compact{max-width:390px}.sheet-dialog.compact form{padding-bottom:16px}.field{display:block;margin:14px 17px}.field>span{display:block;color:#8ba0a5;font:8px var(--mono);margin-bottom:6px}.field input,.field select{width:100%;height:40px;border:1px solid #315159;background:#07191e;color:var(--text);padding:0 10px;border-radius:0}.primary-button{height:40px;margin:3px 17px;width:calc(100% - 34px);border:1px solid var(--teal);background:#123b3f;color:var(--teal);font:9px var(--mono);cursor:pointer}.primary-button:disabled{opacity:.55;cursor:wait}.pin-save-feedback{min-height:19px;margin:0 17px 4px;color:var(--muted);font:8px/1.45 var(--mono)}.pin-save-feedback.saving{color:#a4bec3}.pin-save-feedback.success{color:var(--ok)}.pin-save-feedback.error{color:#ff9b9e}.toast{position:fixed;left:12px;right:12px;bottom:72px;background:#143039;border:1px solid #3b5b64;padding:11px 14px;font-size:9px;transform:translateY(20px);opacity:0;transition:.25s;z-index:80;text-align:center}.toast.show{transform:none;opacity:1}

/* Внутренние страницы */
body:not(.dashboard-page){min-height:100svh;padding-bottom:60px}.page-shell{padding:20px 12px;max-width:1500px;margin:auto}.page-title{margin-bottom:20px}.page-title h1{font-size:24px;margin:5px 0}.page-title p{margin:6px 0 0;color:var(--muted);font-size:9px;line-height:1.5}.toolbar,.panel-head{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap}.range-tabs,.status-tabs{display:flex;border:1px solid var(--line);overflow:auto;max-width:100%}.range-tabs button,.status-tabs button{border:0;border-right:1px solid var(--line);background:#0b2027;color:var(--muted);padding:8px 11px;font:8px var(--mono);white-space:nowrap}.range-tabs button:last-child,.status-tabs button:last-child{border:0}.range-tabs button.active,.status-tabs button.active{color:var(--teal);background:#15353c}.analysis-panel{border-top:1px solid var(--line);padding:16px 0}.analysis-chart{height:430px;margin-top:14px}.analysis-chart svg{width:100%;height:100%}.metric-picker{display:flex;gap:7px;flex-wrap:wrap}.metric-picker label{border:1px solid var(--line);padding:7px 9px;font:8px var(--mono);color:var(--muted);cursor:pointer}.metric-picker input{display:none}.metric-picker label:has(input:checked){border-color:var(--series,var(--teal));color:var(--text);box-shadow:inset 0 -2px var(--series,var(--teal))}.archive-meta{display:flex;gap:16px;flex-wrap:wrap;margin-top:14px;color:var(--muted);font:7px var(--mono)}.alarm-table{width:100%;border-collapse:collapse;min-width:720px}.alarm-table th{text-align:left;color:var(--muted);font:7px var(--mono);letter-spacing:.08em;padding:11px;border-bottom:1px solid var(--line)}.alarm-table td{padding:13px 11px;border-bottom:1px solid var(--line-soft);font-size:9px}.alarm-table td.mono{font:8px var(--mono);color:#9db0b5}.severity{font:7px var(--mono);text-transform:uppercase;padding:4px 7px;border:1px solid #6c3737;color:var(--danger)}.severity.warning{border-color:#6d5530;color:var(--warning)}.alarm-status{color:var(--danger)}.alarm-status.closed{color:var(--muted)}.table-scroll{overflow:auto}.empty-state,.empty-copy{text-align:center;padding:40px 16px;color:var(--muted);font-size:9px}

/* Настройки */
.settings-shell{max-width:1100px}.settings-intro{display:flex;align-items:flex-start;justify-content:space-between;gap:18px;margin-bottom:20px}.settings-intro h1{font-size:25px;margin:5px 0}.save-config{position:sticky;top:10px;z-index:10;width:auto;margin:0;padding:0 18px}.settings-nav{display:flex;gap:2px;overflow:auto;border-bottom:1px solid var(--line);margin-bottom:20px}.settings-nav a{padding:11px 13px;color:var(--muted);font:8px var(--mono);text-decoration:none;white-space:nowrap}.settings-nav a:hover{color:var(--teal)}.settings-section{padding:10px 0 28px;border-bottom:1px solid var(--line)}.settings-section>header{margin-bottom:17px}.settings-section h2{font-size:17px;margin:0 0 5px}.settings-section header p{margin:0;color:var(--muted);font-size:9px}.settings-grid{display:grid;grid-template-columns:1fr;gap:12px}.settings-grid .field{margin:0}.field small{display:block;color:#607a81;font:7px/1.5 var(--mono);margin-top:5px}.pump-settings{padding:18px 0;border-top:1px solid var(--line-soft)}.pump-settings:first-of-type{border-top:0}.pump-settings>header{display:flex;justify-content:space-between;align-items:center}.pump-settings h3{font-size:13px;margin:0}.tag-table{display:grid;gap:7px}.tag-row{display:grid;grid-template-columns:1fr;gap:6px;padding:9px 0;border-bottom:1px solid var(--line-soft)}.tag-row>span{font:8px var(--mono);color:#a7b8bc}.tag-row select{width:100%;height:40px;border:1px solid #315159;background-color:#07191e;color:var(--text);padding:0 30px 0 10px;border-radius:0;appearance:none;background-image:linear-gradient(45deg,transparent 50%,#779097 50%),linear-gradient(135deg,#779097 50%,transparent 50%);background-position:calc(100% - 14px) 17px,calc(100% - 9px) 17px;background-size:5px 5px;background-repeat:no-repeat}.scale-fields{display:none;grid-template-columns:repeat(2,1fr);gap:8px;margin-top:10px}.scale-fields.visible{display:grid}.passport-tools{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.file-button{display:inline-flex;align-items:center;min-height:38px;padding:0 13px;border:1px solid #3a5960;color:var(--teal);font:8px var(--mono);cursor:pointer}.file-button input{display:none}.passport-status{color:var(--muted);font:8px var(--mono)}.curve-editor{margin-top:15px}.curve-preview{position:relative;height:250px;border:1px solid var(--line-soft);padding:22px 12px 24px}.curve-preview svg{width:100%;height:100%}.curve-axis-title{position:absolute;z-index:1;color:#91a8ad;font:500 10px var(--mono);pointer-events:none}.curve-axis-y{left:14px;top:9px}.curve-axis-x{right:14px;bottom:8px}.curve-points-heading{display:flex;align-items:baseline;justify-content:space-between;gap:12px;margin-top:14px;padding-bottom:8px;border-bottom:1px solid var(--line-soft)}.curve-points-heading span{color:#b9c7ca;font:600 11px var(--mono)}.curve-points-heading small{color:#647b81;font:8px var(--mono)}.curve-points{display:grid;grid-template-columns:1fr}.curve-point{display:grid;grid-template-columns:32px minmax(0,1fr) minmax(0,1fr) 34px;align-items:end;gap:8px;padding:9px 0;border-bottom:1px solid var(--line-soft)}.curve-point-index{align-self:center;color:#607980;font:500 9px var(--mono)}.curve-point label>span:first-child{display:block;margin-bottom:5px;color:#82999f;font:9px var(--mono)}.curve-point-input{position:relative;display:block}.curve-point input{width:100%;height:40px;border:1px solid var(--line);background:#07191e;color:var(--text);padding:0 52px 0 10px;font:11px var(--mono)}.curve-point-input em{position:absolute;right:10px;top:50%;transform:translateY(-50%);color:#7e969c;font:normal 8px var(--mono);pointer-events:none}.curve-point button{width:34px;height:40px;border:1px solid var(--line);background:none;color:var(--muted);cursor:pointer}.curve-point button:hover{border-color:#a65f66;color:#ff8088}.add-point{margin-top:10px;border:0;background:none;color:var(--teal);font:9px var(--mono);cursor:pointer}

@keyframes wave{to{background-position:48px 0}}@keyframes dialog-in{from{opacity:0;transform:translateY(15px)}}
@media(prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important}}

@media(min-width:700px){
  .app-header{height:68px;padding:0 20px;display:grid;grid-template-columns:1fr auto 1fr}.brand-glyph{width:38px;height:38px}.brand strong{font-size:14px}.brand small{font-size:8px}.connection{justify-self:end}.connection span{display:block}.primary-nav{position:static;height:100%;padding:0;border:0;background:none}.primary-nav a{padding:0 16px;flex-direction:row;font-size:9px}.primary-nav a b{display:none}.primary-nav a.active:before{top:auto;bottom:-1px;width:100%}
  .system-strip{height:38px;padding:0 20px}.system-strip>span:nth-child(2),.system-strip>span:nth-child(3){display:inline}.dashboard-shell{height:calc(100svh - 106px)}
  body:not(.dashboard-page){padding-bottom:0}.page-shell{padding:28px}.page-title{display:flex;align-items:flex-end;justify-content:space-between}.page-title h1{font-size:28px}.analysis-panel{padding:20px}.analysis-chart{height:520px}.settings-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.tag-row{grid-template-columns:180px 1fr;align-items:center}.curve-points{grid-template-columns:1fr}.analog-picker{grid-template-columns:1fr 1fr}.toast{left:auto;right:18px;bottom:18px;width:auto}
}

/* v38: устойчивые всплывающие панели, читаемые подписи и проверка техлиста */
.level-gauge.popover-open{z-index:24}
.flow-display.calculated{opacity:.58}
.flow-display b:empty{display:none}
.efficiency-tick{fill:#82999f;font:8px var(--mono)}
.passport-review-warning{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:4px 14px;align-items:center;margin:14px 18px 0;padding:13px;border-left:3px solid var(--warning);background:#241d132e}
.passport-review-warning strong,.passport-review-warning span{display:block}.passport-review-warning strong{font-size:11px}.passport-review-warning span{color:#9fb1b4;font:8px/1.5 var(--mono)}
.passport-review-warning .passport-view-link{grid-column:2;grid-row:1/3}

@media(max-width:699px){
  body:not(.dashboard-page):not(.map-page) .primary-nav{position:fixed!important;left:0!important;right:0!important;top:auto!important;bottom:0!important;width:100%!important;z-index:80!important;transform:translateZ(0)}
  .map-overview>div:first-child:after{font-size:9px;line-height:1.1;margin-left:6px;align-self:center}
  .passport-review-warning{grid-template-columns:1fr;margin:12px 14px 0}
  .passport-review-warning strong{font-size:13px}.passport-review-warning span{font-size:10px}
  .passport-review-warning .passport-view-link{grid-column:1;grid-row:auto;justify-self:start;margin-top:5px}
  .efficiency-tick{font-size:10px}
}
@media(min-width:1000px){
  .dashboard-shell{display:grid;grid-template-columns:minmax(0,1fr) 310px}.tank-workspace{grid-column:1}.alarm-rail{position:static;inset:auto;grid-column:2;transform:none;z-index:5;border-left:1px solid var(--line);backdrop-filter:none;background:#081b20}.mobile-alarm-button{display:none}.tank-head{height:72px;flex-basis:72px;padding:15px 24px 8px}.tank-head h1{font-size:15px}.level-display strong{font-size:34px}.trend-controls{padding:0 23px}.trend-legend{padding:8px 23px;min-height:42px}.trend-legend button{font-size:8px}.trend-stage{margin:0 24px 8px;min-height:150px}.pump-deck{height:150px;flex-basis:150px;margin:0 7px}.pump-unit{gap:18px}.pump-visual{width:58px;height:112px;flex-basis:58px;transform:scale(1.12);transform-origin:bottom}.pump-info strong{font-size:10px}.pump-info>div>span{font-size:7px}.tank-workspace:before,.tank-workspace:after{width:9px}.water-fill{left:9px;right:9px}.threshold-stack{left:9px;right:9px}
}
@media(max-height:680px) and (max-width:699px){.pump-deck{height:112px;flex-basis:112px}.pump-visual{transform:scale(.82);transform-origin:bottom}.trend-legend{min-height:48px}.mobile-alarm-button{bottom:118px}}

/* v5: мобильная ёмкость без декоративных стенок и отдельный демо-источник */
.alarm-rail{inset:0 0 66px 0}.toast{bottom:78px}body:not(.dashboard-page){padding-bottom:66px}.system-strip.demo>span:first-child{color:var(--teal)}.system-strip.demo>span:first-child i{background:var(--teal);box-shadow:0 0 12px #28d8c788}
.analysis-chart{touch-action:pan-y;cursor:grab;user-select:none}.analysis-chart.dragging{cursor:grabbing}
@media(max-width:390px){.brand strong{font-size:11px}.brand small{font-size:6px}.brand-glyph{width:31px;height:31px}.demo-toggle{padding:0 6px}.connection{padding-left:1px}.connection>i{width:7px;height:7px}}
@media(min-width:700px){.header-actions{justify-self:end}.dashboard-shell{height:calc(100svh - 106px)}body:not(.dashboard-page){padding-bottom:0}.alarm-rail{inset:0}.toast{bottom:18px}.demo-toggle{height:31px;font-size:8px}.tank-head{height:58px;flex-basis:58px}}
@media(min-width:1000px){.tank-head{height:64px;flex-basis:64px;padding:10px 24px 4px}.trend-stage{margin:0 24px 8px;min-height:150px}.pump-deck{height:148px;flex-basis:148px;margin:0}.pump-unit{gap:18px}.pump-visual{width:66px;height:116px;flex-basis:66px;transform:none}.water-fill{left:0;right:0}.pump-info strong{font-size:10px}.pump-info>div>span{font-size:7px}}

/* v6: источник данных, измерительный курсор и масштабирование трендов */
.demo-toggle,.demo-toggle.active{height:30px;border:0;box-shadow:none;background:none;padding:0;color:#9bb0b5;gap:7px;font:8px var(--mono)}.demo-toggle i,.demo-toggle.active i{width:30px;height:16px;border:1px solid #45636a;border-radius:10px;background:#10272c;box-shadow:none;position:relative;transition:background .2s,border-color .2s}.demo-toggle i:after{content:"";position:absolute;width:10px;height:10px;left:2px;top:2px;border-radius:50%;background:#789097;transition:transform .22s ease,background .2s}.demo-toggle.active{color:var(--teal)}.demo-toggle.active i{background:#154743;border-color:#2ab8ad}.demo-toggle.active i:after{background:var(--teal);transform:translateX(14px);box-shadow:0 0 7px #28d8c788}
.header-actions .connection{gap:6px;padding:4px 0 4px 3px}.header-actions .connection span{display:block}.header-actions .connection strong{font:500 8px var(--mono);white-space:nowrap}.header-actions .connection small{display:none}.header-actions .connection>i{width:7px;height:7px}
.axis-text.time-axis{font-size:11px;fill:#8aa0a6}.axis-text.value-axis{font-size:9px;fill:#8ba1a7}.axis-unit{font:9px var(--mono);fill:#8ba1a7}.cursor-line{stroke:#c4d5d8;stroke-width:1;stroke-dasharray:4 5;opacity:.68;vector-effect:non-scaling-stroke;pointer-events:none}.cursor-leader{stroke-width:1;opacity:.55;vector-effect:non-scaling-stroke;pointer-events:none}.cursor-value,.cursor-time{pointer-events:none}.cursor-value rect{fill:#07191ef2;stroke-width:1;vector-effect:non-scaling-stroke}.cursor-value text{font:9px var(--mono)}.cursor-time rect{fill:#c6d6d8}.cursor-time text{fill:#0a2025;font:500 9px var(--mono)}
@media(min-width:700px){.header-actions .connection small{display:block}.axis-text.time-axis{font-size:10px}.cursor-value text{font-size:8px}}

/* Расчётные тренды отличаются подписью и цветом, но остаются сплошными. */
.trend-legend button.calculated i{border-top-style:solid}

/* Полная синхронизация и диагностика архива объекта */
.analysis-chart{position:relative}
.archive-tag-tools button[hidden]{display:none}
.archive-sync-line{display:grid;grid-template-columns:8px auto minmax(180px,1fr) 120px;align-items:center;gap:9px 12px;margin:13px 0 15px;padding:11px 0;border-top:1px solid var(--line-soft);border-bottom:1px solid var(--line-soft);font:8px var(--mono)}.archive-sync-line>i{width:7px;height:7px;border-radius:50%;background:var(--muted)}.archive-sync-line>strong{font-weight:500;color:#c7d5d7;white-space:nowrap}.archive-sync-line>span{color:var(--muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.archive-sync-line>div{height:3px;background:#17353b;overflow:hidden}.archive-sync-line>div b{display:block;height:100%;width:0;background:var(--teal);transition:width .35s ease}.archive-sync-line.ready>i{background:var(--ok);box-shadow:0 0 9px #62d8a666}.archive-sync-line.syncing>i{background:var(--teal);box-shadow:0 0 9px #28d8c777;animation:archive-pulse 1.4s ease-in-out infinite}.archive-sync-line.failed>i{background:var(--danger)}.archive-sync-line.failed>strong{color:#ff9b9d}.archive-sync-line.failed>div b{background:var(--danger)}
.archive-tag-tools{display:flex;align-items:end;gap:9px;margin-bottom:12px}.archive-tag-tools label{display:grid;gap:5px;min-width:min(420px,100%)}.archive-tag-tools label span{color:#789197;font:7px var(--mono);letter-spacing:.05em;text-transform:uppercase}.archive-tag-tools select{height:36px;min-width:0;border:1px solid var(--line);background:#081b20;color:#bac9cb;padding:0 32px 0 10px;font:8px var(--mono)}.archive-tag-tools button{height:36px;border:0;border-bottom:1px solid #39565d;background:none;color:#789197;padding:0 5px;font:8px var(--mono);cursor:pointer;white-space:nowrap}.archive-tag-tools button:hover{color:var(--teal);border-color:var(--teal)}
@keyframes archive-pulse{50%{opacity:.4}}
@media(max-width:699px){.archive-sync-line{grid-template-columns:8px 1fr auto;gap:7px 9px}.archive-sync-line>span{grid-column:2/4;font-size:7px}.archive-sync-line>div{grid-column:1/4;width:100%}.archive-tag-tools{align-items:stretch;flex-direction:column}.archive-tag-tools label{min-width:0;width:100%}.archive-tag-tools button{align-self:flex-start}.analysis-chart{height:390px}.range-tabs{width:100%}}

/* Push-будильник и настройки уведомлений */
.alarm-toggle{height:28px;border:0;background:none;color:#789197;padding:0 2px;display:flex;align-items:center;gap:6px;font:7px var(--mono);cursor:pointer;white-space:nowrap}
.alarm-toggle i,.demo-toggle i{position:relative;width:28px;height:16px;border:1px solid #456068;border-radius:10px;background:#10282e;transition:.2s;box-shadow:none;flex:0 0 auto}
.alarm-toggle i::after,.demo-toggle i::after{content:"";position:absolute;width:10px;height:10px;left:2px;top:2px;border-radius:50%;background:#80969b;transition:.2s}
.alarm-toggle.active{color:#ffca71}.alarm-toggle.active i{border-color:#d79431;background:#4b3617;box-shadow:0 0 12px #ffb74d33}.alarm-toggle.active i::after{transform:translateX(12px);background:#ffbd55;box-shadow:0 0 8px #ffbd55}
.demo-toggle{border:0;background:none;padding:0 2px}.demo-toggle.active{border:0;background:none;box-shadow:none}.demo-toggle.active i{border-color:#28bcae;background:#12433f;box-shadow:none}.demo-toggle.active i::after{transform:translateX(12px);background:var(--teal);box-shadow:0 0 7px #28d8c7}
.alarm-dialog{width:min(620px,calc(100% - 20px))}.alarm-explainer{padding:15px 18px 4px}.alarm-explainer>p{padding:0;margin:0 0 14px;color:#b1c1c4;font-size:10px;line-height:1.65}.alarm-explainer>p strong{color:#fff}.alarm-explainer section{display:grid;grid-template-columns:70px 1fr;gap:12px;padding:12px 0;border-top:1px solid var(--line-soft)}.alarm-explainer section b{color:var(--teal);font:500 9px var(--mono)}.alarm-explainer section span{color:#8ea4a9;font-size:9px;line-height:1.6}.alarm-explainer .watch-note{margin:12px 0 2px;color:#ffca71;font:8px/1.55 var(--mono)}
.notification-settings{padding-top:4px}.notification-switches{border-top:1px solid var(--line)}.notification-switches label{min-height:68px;display:flex;align-items:center;justify-content:space-between;gap:20px;border-bottom:1px solid var(--line-soft);cursor:pointer}.notification-switches span{display:block;padding:12px 0}.notification-switches b,.notification-switches small{display:block}.notification-switches b{font-size:11px}.notification-switches small{margin-top:5px;color:var(--muted);font:7px/1.5 var(--mono)}.notification-switches input{position:absolute;opacity:0;pointer-events:none}.notification-switches i{position:relative;width:42px;height:23px;border:1px solid #3a5960;border-radius:14px;background:#0b2026;flex:0 0 auto;transition:.2s}.notification-switches i::after{content:"";position:absolute;width:15px;height:15px;left:3px;top:3px;border-radius:50%;background:#71888e;transition:.2s}.notification-switches input:checked+i{border-color:#24a99c;background:#123c39}.notification-switches input:checked+i::after{transform:translateX(19px);background:var(--teal);box-shadow:0 0 9px #28d8c777}.notification-switches input:focus-visible+i{outline:2px solid #fff;outline-offset:3px}.notification-hint{margin:13px 0 0;color:#718a90;font:8px/1.5 var(--mono)}
.notification-shell{max-width:820px}.notification-panel{border-top:1px solid var(--line);padding:20px 0 28px}.notification-panel>header{max-width:620px;margin-bottom:14px}.notification-panel h2{font-size:18px;margin:5px 0}.notification-panel header p{margin:0;color:var(--muted);font-size:9px;line-height:1.6}.notification-panel .notification-switches{border-top-color:#315159}.notification-panel .notification-switches label{min-height:76px}.notification-panel .notification-switches b{font-size:12px}.notification-panel .notification-switches small{max-width:540px;font-size:8px}.level-watch-panel{margin-top:12px}.level-watch-row{min-height:54px;border-top:1px solid var(--line-soft);border-bottom:1px solid var(--line-soft);display:flex;align-items:center;justify-content:space-between;gap:16px;font:8px var(--mono);color:#8ba2a8}.level-watch-row a{color:var(--teal);text-decoration:none;white-space:nowrap}
@media(max-width:699px){.header-actions{gap:4px}.alarm-toggle span{font-size:0}.alarm-toggle span::after{content:"Буд.";font:7px var(--mono)}.alarm-toggle{padding:0}.alarm-toggle i,.demo-toggle i{width:26px}.alarm-toggle.active i::after,.demo-toggle.active i::after{transform:translateX(10px)}.alarm-explainer{padding:13px 15px 3px}.alarm-explainer section{grid-template-columns:58px 1fr}.notification-switches label{min-height:74px}.notification-switches small{max-width:240px}}

.station-switcher{display:flex;align-items:center;gap:9px;min-width:130px;max-width:210px;height:42px;padding:0 11px;border:0;border-left:1px solid var(--line);border-right:1px solid var(--line);background:#0a2025;color:var(--text);text-align:left;cursor:pointer}.station-switcher span{min-width:0;display:block}.station-switcher small,.station-switcher strong{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.station-switcher small{font:6px var(--mono);letter-spacing:.12em;color:#668087}.station-switcher strong{margin-top:3px;font-size:9px}.station-switcher>b{margin-left:auto;color:var(--teal);font:12px var(--mono)}
.station-dialog{width:min(520px,100%);max-width:none;max-height:min(760px,92svh);margin:auto;border:1px solid var(--line);border-radius:0;background:#07191e;color:var(--text);padding:0;box-shadow:0 30px 100px #000b}.station-dialog::backdrop{background:#001014c9;backdrop-filter:blur(5px)}.station-sheet{padding:20px}.station-sheet>header{display:flex;align-items:flex-start;justify-content:space-between;padding-bottom:14px;border-bottom:1px solid var(--line)}.station-sheet h2{font-size:19px;margin:4px 0 0}.station-sheet>header button{border:0;background:none;color:var(--muted);font-size:25px;cursor:pointer}.station-list{display:grid}.station-row{display:grid;grid-template-columns:9px minmax(0,1fr) auto;align-items:center;gap:11px;min-height:63px;border:0;border-bottom:1px solid var(--line-soft);background:none;color:var(--text);text-align:left;cursor:pointer}.station-row>i{width:7px;height:7px;border-radius:50%;background:#627a80}.station-row.active>i{background:var(--teal);box-shadow:0 0 10px #28d8c788}.station-row strong,.station-row small{display:block}.station-row strong{font-size:11px}.station-row small{margin-top:4px;color:var(--muted);font:7px var(--mono)}.station-row>b{color:var(--teal);font:11px var(--mono)}.station-admin{margin-top:13px;border-top:1px solid var(--line)}.station-admin summary{padding:15px 0;color:var(--teal);font:8px var(--mono);cursor:pointer}.station-pin{display:flex;align-items:center;gap:10px;margin-bottom:9px}.station-pin span{font:7px var(--mono);color:var(--muted)}.station-pin input{height:35px;min-width:0;flex:1;border:1px solid var(--line);background:#06161a;color:var(--text);padding:0 9px}.station-manage-row{display:grid;grid-template-columns:minmax(0,1fr) auto auto;align-items:center;gap:5px;padding:8px 0;border-bottom:1px solid var(--line-soft)}.station-manage-row strong,.station-manage-row small{display:block}.station-manage-row strong{font-size:9px}.station-manage-row small{margin-top:3px;color:var(--muted);font:6px var(--mono)}.station-manage-row button,.station-discover{min-height:31px;border:1px solid var(--line);background:none;color:#93a9ae;padding:0 8px;font:7px var(--mono);cursor:pointer}.station-discover{width:100%;margin-top:12px;color:var(--teal)}.station-add-form [data-station-add-fields]{display:grid;grid-template-columns:1fr 1fr;gap:8px;padding-top:10px}.station-add-form [hidden]{display:none!important}.station-add-form label span{display:block;margin-bottom:5px;color:var(--muted);font:7px var(--mono)}.station-add-form input,.station-add-form select{width:100%;height:38px;border:1px solid var(--line);background:#06161a;color:var(--text);padding:0 9px}.station-add-form .primary-button{grid-column:1/-1}.station-feedback,.station-empty{min-height:14px;color:#ff9b74;font:7px/1.5 var(--mono)}
@media(max-width:700px){.station-switcher{position:absolute;left:58px;top:7px;width:126px;height:37px;border:0;background:transparent;padding:0 5px}.station-switcher small{display:none}.station-switcher strong{font-size:8px}.brand>span:last-child{display:none}.station-dialog{width:100%;max-height:88svh;margin:auto 0 0;border-left:0;border-right:0;border-bottom:0;border-radius:16px 16px 0 0}.station-sheet{padding:18px 16px calc(20px + env(safe-area-inset-bottom))}.station-add-form [data-station-add-fields]{grid-template-columns:1fr}.station-add-form .primary-button{grid-column:auto}.station-manage-row{grid-template-columns:minmax(0,1fr) auto}.station-manage-row button:last-child{grid-column:2;min-width:82px}}
@media(min-width:700px){.app-header{grid-template-columns:auto minmax(130px,210px) minmax(360px,1fr) auto;gap:10px}.station-switcher{justify-self:start}.primary-nav{justify-self:center}.header-actions{justify-self:end}}
.pump-deck{grid-template-columns:repeat(var(--pump-count,2),minmax(0,1fr))}
@media(max-width:699px){.pump-deck[style*="--pump-count: 3"] .pump-unit,.pump-deck[style*="--pump-count: 4"] .pump-unit{gap:2px;padding-left:2px;padding-right:2px}.pump-deck[style*="--pump-count: 3"] .pump-visual,.pump-deck[style*="--pump-count: 4"] .pump-visual{width:40px;flex-basis:40px;transform:scale(.78);transform-origin:bottom}.pump-deck[style*="--pump-count: 4"] .pump-info{display:none}}
.station-manage-row small a{color:var(--teal);text-decoration:none;border-bottom:1px solid #28d8c755}

/* v8: карта объектов и геоточки */
.primary-nav a{min-width:0}.primary-nav a span{overflow:hidden;text-overflow:ellipsis;max-width:100%}
.map-page{height:100svh;overflow:hidden;padding-bottom:0!important}.map-workspace{position:relative;height:calc(100svh - 124px);min-height:0;overflow:hidden;background:#071a1f;isolation:isolate}.map-canvas{position:absolute;inset:0;background:radial-gradient(circle at 52% 42%,#123039 0,#071a1f 52%,#061519 100%)}
.map-canvas:empty:before{content:"";position:absolute;inset:0;opacity:.22;background-image:linear-gradient(35deg,transparent 47%,#26515a 48%,transparent 49%),linear-gradient(145deg,transparent 47%,#1e454d 48%,transparent 49%);background-size:84px 84px}
.map-loading{position:absolute;inset:0;z-index:8;display:grid;place-content:center;justify-items:center;gap:8px;background:#07191edb;color:#b8c9cc;text-align:center}.map-loading[hidden]{display:none}.map-loading i{width:22px;height:22px;border:2px solid #315159;border-top-color:var(--teal);border-radius:50%;animation:map-spin .8s linear infinite}.map-loading strong{font-size:12px}.map-loading span{font:8px var(--mono);color:var(--muted)}
.map-overview{position:absolute;z-index:10;left:12px;top:12px;display:flex;align-items:center;gap:13px;min-height:54px;padding:8px 11px;border-left:2px solid var(--ok);background:#07191ee8;box-shadow:0 12px 36px #00101455;backdrop-filter:blur(9px)}.map-overview>div:first-child{min-width:58px}.map-overview strong,.map-overview small{display:block}.map-overview strong{font:500 22px var(--mono);color:#e8f3f3}.map-overview small{font:6px var(--mono);color:var(--muted)}.map-legend{display:grid;grid-template-columns:repeat(3,auto);gap:5px 10px;border-left:1px solid var(--line);padding-left:12px}.map-legend span{display:flex;align-items:center;gap:5px;color:#8ca1a6;font:6px var(--mono);white-space:nowrap}.map-legend i{width:6px;height:6px;border-radius:50%;background:#647b80}.map-legend .critical i{background:var(--danger)}.map-legend .warning i{background:var(--warning)}.map-legend .normal i{background:var(--ok)}.map-station-select{height:34px;padding:0 10px;border:1px solid #35616a;background:#0b242ae8;color:#c9d9db;display:flex;align-items:center;gap:10px;font:8px var(--mono);white-space:nowrap;cursor:pointer}.map-station-select b{color:var(--teal);font-size:12px;font-weight:400}
.station-marker{position:relative;transform:translate(-50%,-92%);width:34px;height:42px;padding:0;border:0;background:none;color:var(--ok);cursor:pointer;overflow:visible;filter:drop-shadow(0 5px 8px #00101499)}.station-marker>span{position:absolute;left:5px;top:1px;width:24px;height:29px;border:2px solid currentColor;border-radius:15px 15px 15px 3px;background:#081b20;transform:rotate(-45deg);transition:transform .2s,filter .2s}.station-marker>span i{position:absolute;width:8px;height:8px;left:6px;top:7px;border:2px solid currentColor;border-radius:50%;background:#0b242a}.station-marker>b{position:absolute;left:50%;top:33px;transform:translateX(-50%);max-width:150px;padding:3px 6px;background:#07191eea;border:1px solid #2c4f57;color:#d5e2e3;font:600 7px var(--mono);white-space:nowrap;box-shadow:0 5px 16px #00101466}.station-marker.warning{color:var(--warning)}.station-marker.critical{color:var(--danger)}.station-marker.selected>span{transform:rotate(-45deg) scale(1.16);filter:drop-shadow(0 0 8px currentColor)}.station-marker.selected>b{border-color:currentColor;color:#fff}.station-marker.critical>span{animation:marker-pulse 2.2s ease-in-out infinite}
.unmapped-panel{position:absolute;z-index:11;right:12px;top:52px;width:min(250px,calc(100% - 24px));background:#07191eee;border:1px solid #294950;backdrop-filter:blur(9px)}.unmapped-toggle{width:100%;height:38px;padding:0 10px;border:0;background:none;color:#a3b4b8;display:flex;align-items:center;justify-content:space-between;font:8px var(--mono);cursor:pointer}.unmapped-toggle b{color:var(--warning);font-size:10px}.unmapped-toggle i{font-style:normal;transition:transform .2s}.unmapped-panel.expanded .unmapped-toggle i{transform:rotate(180deg)}.unmapped-list{display:none;border-top:1px solid var(--line-soft);max-height:180px;overflow:auto}.unmapped-panel.expanded .unmapped-list{display:grid}.unmapped-list a{display:flex;justify-content:space-between;gap:10px;padding:10px;border-bottom:1px solid var(--line-soft);text-decoration:none;font-size:8px}.unmapped-list small{color:var(--teal);font:6px var(--mono);white-space:nowrap}
.map-detail{position:absolute;z-index:15;left:12px;bottom:12px;width:330px;padding:17px 17px 14px;border-top:2px solid var(--ok);background:#07191ef2;box-shadow:0 22px 70px #001014aa;backdrop-filter:blur(13px);animation:map-detail-in .24s ease}.map-detail[data-tone="critical"]{border-color:var(--danger)}.map-detail[data-tone="warning"]{border-color:var(--warning)}.map-detail-close{position:absolute;right:8px;top:7px;width:30px;height:30px;border:0;background:none;color:#84999e;font-size:22px;cursor:pointer}.map-detail-head{display:flex;align-items:flex-start;gap:9px;padding-right:28px}.map-detail-head>i{width:8px;height:8px;margin-top:7px;border-radius:50%;background:var(--ok);box-shadow:0 0 9px #52d39a77}.map-detail[data-tone="critical"] .map-detail-head>i{background:var(--danger)}.map-detail[data-tone="warning"] .map-detail-head>i{background:var(--warning)}.map-detail h1{margin:3px 0 0;font-size:16px}.map-detail-metrics{display:grid;grid-template-columns:1fr 1fr;margin-top:14px;border-top:1px solid var(--line);border-bottom:1px solid var(--line)}.map-detail-metrics>div{padding:10px 0}.map-detail-metrics>div+div{border-left:1px solid var(--line);padding-left:12px}.map-detail-metrics span{display:block;color:var(--muted);font:6px var(--mono)}.map-detail-metrics strong{font:500 20px var(--mono);color:var(--violet)}.map-detail-metrics small{font:7px var(--mono);color:#9bafb3}.map-detail-events{display:grid;gap:4px;padding:9px 0 2px}.map-detail-events span{color:#91a6aa;font:7px/1.4 var(--mono)}.map-detail-events span.critical{color:#ff8587}.map-detail-events span.warning{color:#ffc077}.map-detail>p{margin:9px 0;color:#71888e;font:7px var(--mono)}.map-detail .primary-button{margin:5px 0 0;width:100%}
.map-failure{position:absolute;z-index:9;left:50%;top:50%;transform:translate(-50%,-50%);width:min(430px,calc(100% - 30px));padding:24px;border-left:2px solid var(--warning);background:#07191ef0;box-shadow:0 20px 70px #001014aa}.map-failure h1{margin:7px 0 9px;font-size:18px}.map-failure p{margin:0;color:#8da2a7;font-size:9px;line-height:1.6}.map-failure button{margin-top:16px;border:1px solid #3b5c63;background:#0a242a;color:var(--teal);height:36px;padding:0 14px;font:8px var(--mono);cursor:pointer}
.location-actions{display:flex;align-items:center;gap:14px;flex-wrap:wrap;margin-top:14px}.secondary-button{height:36px;border:1px solid #3a5960;background:none;color:#9db0b4;padding:0 12px;font:8px var(--mono);cursor:pointer}.location-actions a{color:var(--teal);font:8px var(--mono);text-decoration:none}.location-actions>span{color:#647d83;font:7px var(--mono)}
@keyframes map-spin{to{transform:rotate(360deg)}}@keyframes marker-pulse{50%{filter:drop-shadow(0 0 8px currentColor)}}@keyframes map-detail-in{from{opacity:0;transform:translateY(12px)}}
@media(max-width:699px){
  .primary-nav a{gap:4px;font-size:8px}.primary-nav a b{font-size:16px}.primary-nav a.active:before{width:32px}
  .map-workspace{height:calc(100svh - 124px)}.map-overview{left:0;right:0;top:0;min-height:48px;padding:6px 8px 6px 10px;border-left:0;border-bottom:1px solid var(--line);display:grid;grid-template-columns:auto minmax(0,1fr) auto;gap:8px;box-shadow:0 8px 24px #00101444}.map-overview>div:first-child{min-width:22px;display:flex;align-items:center}.map-overview>div:first-child .kicker,.map-overview>div:first-child small{display:none}.map-overview>div:first-child:after{content:"КНС";margin-left:4px;color:#718b92;font:6px var(--mono)}.map-overview strong{font-size:18px}.map-legend{gap:3px 7px;padding-left:8px}.map-legend span{font-size:5.5px}.map-legend i{width:6px;height:6px}.map-station-select{height:34px;padding:0 8px;font-size:7px;gap:6px}.unmapped-panel{right:8px;top:55px}.map-detail{left:0;right:0;bottom:44px;width:auto;padding:15px 16px 14px;border-left:0;border-right:0}.map-detail-metrics{margin-top:11px}.map-detail-events{max-height:55px;overflow:auto}.map-failure{top:48%}
}
@media(min-width:700px){
  .map-workspace{height:calc(100svh - 68px)}.primary-nav a{padding-left:10px;padding-right:10px;font-size:8px}.primary-nav a span{overflow:visible;max-width:none}.map-overview{left:18px;top:18px}.unmapped-panel{right:18px;top:54px}.map-detail{left:18px;bottom:48px}
}
@media(min-width:1200px){.primary-nav a{padding-left:15px;padding-right:15px;font-size:9px}}

/* v9: авария связи и комфортный операторский масштаб */
@keyframes connection-alert-pulse{50%{box-shadow:inset 3px 0 #ff6d70,0 0 24px #ff39441d}}
.connection.offline{border:1px solid #74383e;background:#32171bcc;color:#ffd7d8;padding:6px 8px}.connection.offline>i{background:var(--danger);box-shadow:0 0 0 4px #ff6d7024,0 0 13px #ff6d70}
.connection.warning{border:1px solid #76572d;background:#302515cc;color:#ffe0ad;padding:6px 8px}.connection.warning>i{background:var(--warning);box-shadow:0 0 0 4px #ffb35c24,0 0 11px #ffb35c}
.system-strip.alarm{background:linear-gradient(90deg,#3b171c 0,#221a1e 42%,#0e252b 100%);box-shadow:inset 3px 0 var(--danger);animation:connection-alert-pulse 2.4s ease-in-out infinite}.system-strip.alarm>span:first-child{font-weight:600}
.system-strip.warning{background:linear-gradient(90deg,#302515 0,#25241d 42%,#0e252b 100%);box-shadow:inset 3px 0 var(--warning)}.system-strip.warning>span:first-child{color:var(--warning)}.system-strip.warning>span:first-child i{background:var(--warning);box-shadow:0 0 10px #ffb35c88}
.mobile-alarm-button.has-alarm{background:#37191ed9;box-shadow:0 0 0 1px #ff6d7033,0 8px 24px #0008}.mobile-alarm-button.has-alarm i{box-shadow:0 0 0 4px #ff6d7024,0 0 10px #ff6d70}
.station-row.normal>i{background:var(--ok)}.station-row.warning>i{background:var(--warning);box-shadow:0 0 9px #ffb24c77}.station-row.warning small{color:#e8b66c}.station-row.critical>i{background:var(--danger);box-shadow:0 0 0 4px #ff6d701d,0 0 11px #ff6d70}.station-row.critical small{color:#ff9294}.station-row.critical.active>i{background:var(--danger);box-shadow:0 0 0 4px #ff6d7024,0 0 12px #ff6d70}
.controller-summary{display:flex;align-items:center;gap:12px;min-height:58px;padding:10px 13px;border:1px solid var(--line);background:#07191e}.controller-summary>i{width:9px;height:9px;border-radius:50%;background:var(--warning);box-shadow:0 0 10px #ffb35c66}.controller-summary.connected>i{background:var(--ok);box-shadow:0 0 10px #62d8a677}.controller-summary strong,.controller-summary small{display:block}.controller-summary strong{font-size:12px}.controller-summary small{margin-top:4px;color:var(--muted);font:8px/1.5 var(--mono)}.controller-connect-form{display:grid;grid-template-columns:minmax(150px,.45fr) auto minmax(240px,1fr) auto;align-items:end;gap:10px;margin-top:12px}.controller-connect-form[hidden],.controller-connect-form [hidden]{display:none!important}.controller-connect-form .field{margin:0}.controller-connect-form .secondary-button,.controller-connect-form .primary-button{height:40px;margin:0;white-space:nowrap}.controller-feedback{grid-column:1/-1;min-height:16px;margin:0;color:#dfb36f;font:8px var(--mono)}
.tank-shape-fields{margin-top:12px}.tank-shape-fields[hidden]{display:none!important}.level-offset-grid{margin-top:12px}.settings-subsection{display:grid;gap:13px;margin-top:20px;padding-top:18px;border-top:1px solid var(--line-soft)}.settings-subsection p{margin:5px 0 0;color:var(--muted);font-size:9px}.setpoint-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.setpoint-grid .field{margin:0}.passport-document{display:flex;align-items:center;justify-content:space-between;gap:15px;margin-top:17px;padding:13px;border:1px solid var(--line);background:#07191e}.passport-document strong,.passport-document span{display:block}.passport-document strong{font-size:10px}.passport-document span{margin-top:4px;color:var(--muted);font:8px/1.45 var(--mono)}.passport-document-actions{display:flex;align-items:center;justify-content:flex-end;gap:10px;flex-wrap:wrap}.passport-document .file-button{white-space:nowrap}.passport-view-link{display:inline-flex;align-items:center;min-height:36px;padding:0 12px;border:1px solid #315159;color:var(--teal);font:8px var(--mono);text-decoration:none;white-space:nowrap}.passport-view-link:hover{border-color:var(--teal)}.passport-tools{margin-top:9px}.pump-copy-bar{display:grid;grid-template-columns:minmax(0,1fr) minmax(130px,190px) auto;align-items:center;gap:10px;margin:0 0 18px;padding:12px 14px;border:1px solid var(--line-soft);background:#081b20}.pump-copy-bar strong,.pump-copy-bar span{display:block}.pump-copy-bar strong{font-size:10px}.pump-copy-bar span{margin-top:4px;color:var(--muted);font:8px/1.45 var(--mono)}.pump-copy-bar select{height:40px;border:1px solid var(--line);background:#07191e;color:var(--text);padding:0 10px}.pump-copy-bar button{height:40px;white-space:nowrap}
.controller-maintenance{display:flex;align-items:center;justify-content:space-between;gap:16px;margin-top:10px;padding:12px 13px;border-left:2px solid var(--warning);background:#201d16}.controller-maintenance[hidden]{display:none!important}.controller-maintenance strong,.controller-maintenance span{display:block}.controller-maintenance strong{font-size:10px}.controller-maintenance span{max-width:680px;margin-top:4px;color:#a3957b;font:7px/1.5 var(--mono)}.caution-button{border-color:#76572d;color:var(--warning)}.caution-button.solid{height:40px;padding:0 14px;border:1px solid #8b6530;background:#392a17;color:#ffd291;font:9px var(--mono);cursor:pointer}.danger-zone{margin-top:28px;padding:24px 0 12px;border-top:1px solid #66373d;border-bottom:0}.danger-zone .kicker{color:var(--danger)}.danger-zone header p{max-width:760px;color:#b18b8e}.danger-button{min-height:40px;padding:0 14px;border:1px solid #874149;background:none;color:#ff9698;font:9px var(--mono);cursor:pointer}.danger-button:hover,.danger-button:focus-visible{border-color:var(--danger);background:#35191d;outline:none}.danger-button.solid{background:#491f24;color:#ffd7d8}.action-dialog form>p{margin:14px 17px 2px;color:#9aadb1;font:9px/1.6 var(--mono)}.destructive-dialog{border-color:#71363c}.destructive-dialog .sheet-head{border-bottom-color:#71363c}.destructive-dialog .kicker{color:var(--danger)}.dialog-actions{display:flex;justify-content:flex-end;gap:8px;margin:15px 17px 4px}.dialog-actions .secondary-button,.dialog-actions .caution-button,.dialog-actions .danger-button{margin:0}.action-feedback{min-height:18px!important;margin:8px 17px 0!important;color:#ffaa88!important}.action-dialog button:disabled{opacity:.5;cursor:wait}

@media(max-width:699px){
  .app-header{height:64px;padding:0 10px}.brand-glyph{width:36px;height:36px}.station-switcher{top:10px;left:56px;height:40px;width:142px}.station-switcher strong{font-size:10px}.header-actions{gap:5px}.alarm-toggle,.demo-toggle{font-size:8px}.connection.offline{padding:6px}
  .system-strip{height:40px;padding:0 12px;font-size:10px;gap:10px}.system-strip button{font-size:9px}.dashboard-shell{height:calc(100svh - 170px)}
  .primary-nav{height:66px}.primary-nav a{font-size:10px;gap:5px}.primary-nav a b{font-size:20px}.primary-nav a.active:before{width:36px}
  .tank-head{height:58px;flex-basis:58px;padding:8px 16px 2px}.level-display span{font-size:9px}.level-display strong{font-size:32px}.level-display em{font-size:10px}.kicker{font-size:8px}
  .trend-controls{height:40px;flex-basis:40px;padding:0 14px}.pump-filter button,.analog-open{font-size:9px}.pump-filter button{min-width:44px;padding:6px 9px}.analog-open span{font-size:15px}
  .trend-legend{min-height:70px;padding:7px 13px;gap:7px 12px}.trend-legend button{font-size:8.5px}.trend-legend button i{width:16px}.axis-text{font-size:10px}.trend-freshness,.chart-message{font-size:9px}
  .pump-deck{height:136px;flex-basis:136px}.pump-info strong{font-size:10.5px}.pump-info>div>span{font-size:8px}.discrete-status i{font-size:7px;padding:4px 6px}.manual-frequency-button,.frequency-tagged{font-size:8px}
  .mobile-alarm-button{font-size:9px;padding:9px 11px;border-radius:22px}.alarm-rail{bottom:66px}.rail-head h2{font-size:20px}.rail-head a{font-size:10px}.alarm-total span{font-size:10px}.alarm-item span,.alarm-item small{font-size:9px}.alarm-item strong{font-size:12px}.rail-footer{font-size:9px}
  .sheet-dialog>p,.sheet-dialog>form,.field>span,.analog-picker button,.primary-button,.toast{font-size:11px}.sheet-head h2{font-size:18px}.field small{font-size:9px}
  body:not(.dashboard-page):not(.map-page){padding-bottom:66px}.page-shell{padding:22px 16px}.page-title h1,.settings-intro h1{font-size:28px}.page-title p,.settings-section header p,.notification-panel header p{font-size:11px}.range-tabs button,.status-tabs button,.metric-picker label,.settings-nav a,.tag-row>span,.file-button,.passport-status,.add-point,.archive-sync-line,.archive-tag-tools select,.archive-tag-tools button{font-size:10px}.archive-meta,.field small{font-size:9px}.alarm-table td{font-size:11px}.alarm-table td.mono,.alarm-table th,.severity{font-size:9px}.empty-state,.empty-copy{font-size:11px}.settings-section h2,.notification-panel h2{font-size:20px}.pump-settings h3{font-size:15px}.notification-switches b,.notification-panel .notification-switches b{font-size:14px}.notification-switches small,.notification-panel .notification-switches small,.notification-hint,.level-watch-row{font-size:10px}.station-sheet h2{font-size:21px}.station-row strong{font-size:13px}.station-row small,.station-admin summary,.station-pin span,.station-manage-row strong,.station-manage-row button,.station-discover,.station-add-form label span,.station-feedback,.station-empty{font-size:9px}
  .map-page .map-workspace{height:calc(100svh - 130px)}.map-overview{min-height:52px;padding:7px 8px 7px 10px}.map-overview strong{font-size:21px}.map-legend span{font-size:6px}.map-legend i{width:7px;height:7px}.map-station-select{height:36px;font-size:8px}.unmapped-panel{top:59px}.unmapped-toggle{height:44px;font-size:10px}.unmapped-toggle b{font-size:12px}.unmapped-list a{font-size:10px}.unmapped-list small{font-size:8px}.map-failure{padding:22px}.map-failure h1{font-size:21px}.map-failure p{font-size:11px}.map-failure button{font-size:10px}.map-detail{bottom:44px}.map-detail h1{font-size:19px}.map-detail-metrics span{font-size:8px}.map-detail-metrics strong{font-size:24px}.map-detail-metrics small,.map-detail-events span,.map-detail>p{font-size:9px}
  .controller-connect-form{grid-template-columns:1fr}.controller-feedback{grid-column:1}.controller-summary strong{font-size:14px}.controller-summary small{font-size:9px}
  .controller-maintenance{align-items:flex-start;flex-direction:column}.controller-maintenance strong{font-size:13px}.controller-maintenance span{font-size:9px}.controller-maintenance .secondary-button{width:100%;height:42px;font-size:10px}.danger-zone{margin-top:20px;padding-top:22px}.danger-button{width:100%;font-size:10px}.dialog-actions{display:grid;grid-template-columns:1fr 1fr}.dialog-actions button{width:100%;height:42px}.action-dialog form>p{font-size:10px}
  .dashboard-page .station-switcher{width:clamp(92px,24vw,110px)}.dashboard-page .station-switcher strong{font-size:9px}
}

@media(max-width:699px) and (max-height:680px){.trend-legend{min-height:58px}.pump-deck{height:112px;flex-basis:112px}.pump-visual{transform:scale(.8);transform-origin:bottom}.mobile-alarm-button{bottom:118px}}

@media(min-width:1200px){
  .app-header{height:76px;padding:0 26px;grid-template-columns:auto minmax(170px,250px) minmax(430px,1fr) auto;gap:14px}.brand-glyph{width:44px;height:44px}.brand strong{font-size:17px}.brand small{font-size:9px}.station-switcher{height:48px;max-width:250px;padding:0 14px}.station-switcher small{font-size:8px}.station-switcher strong{font-size:12px}.primary-nav a{padding:0 14px;font-size:11px}.connection strong{font-size:12px}.connection small{font-size:9px}.alarm-toggle,.demo-toggle{font-size:9px}.header-actions{gap:10px}
  .system-strip{height:44px;padding:0 26px;font-size:11px}.system-strip button{font-size:10px}.dashboard-shell{height:calc(100svh - 120px);grid-template-columns:minmax(0,1fr) 370px}
  .tank-head{height:72px;flex-basis:72px;padding:11px 28px 5px}.level-display span{font-size:10px}.level-display strong{font-size:40px}.level-display em{font-size:11px}.kicker{font-size:9px}
  .trend-controls{height:44px;flex-basis:44px;padding:0 28px}.pump-filter button,.analog-open{font-size:10px}.pump-filter button{min-width:52px;padding:7px 11px}.trend-legend{min-height:50px;padding:9px 28px;gap:8px 16px}.trend-legend button{font-size:10px}.trend-stage{margin:0 28px 10px}.axis-text{font-size:10px}.trend-freshness,.chart-message{font-size:9px}
  .pump-deck{height:164px;flex-basis:164px}.pump-visual{width:72px;height:126px;flex-basis:72px}.pump-info strong{font-size:13px}.pump-info>div>span{font-size:9px}.discrete-status i{font-size:8px;padding:4px 7px}.manual-frequency-button,.frequency-tagged{font-size:9px}
  .rail-head{height:82px;padding:0 22px}.rail-head h2{font-size:21px}.rail-head a{font-size:10px}.alarm-total{height:106px}.alarm-total strong{font-size:46px}.alarm-total span{font-size:10px}.alarm-item{padding:18px 21px}.alarm-item span,.alarm-item small{font-size:9px}.alarm-item strong{font-size:13px}.rail-footer{height:52px;font-size:10px}
  body:not(.dashboard-page):not(.map-page){font-size:16px}.page-shell{padding:36px;max-width:1600px}.page-title h1,.settings-intro h1{font-size:34px}.page-title p,.settings-section header p,.notification-panel header p{font-size:12px}.range-tabs button,.status-tabs button,.metric-picker label,.settings-nav a,.tag-row>span,.file-button,.passport-status,.add-point,.archive-sync-line,.archive-tag-tools select,.archive-tag-tools button{font-size:11px}.archive-meta,.field small{font-size:9px}.alarm-table td{font-size:12px}.alarm-table td.mono,.alarm-table th,.severity{font-size:10px}.settings-section h2,.notification-panel h2{font-size:22px}.pump-settings h3{font-size:16px}.field>span{font-size:10px}.notification-switches b,.notification-panel .notification-switches b{font-size:14px}.notification-switches small,.notification-panel .notification-switches small,.notification-hint,.level-watch-row{font-size:10px}
  .map-page .map-workspace{height:calc(100svh - 76px)}.map-overview{min-height:72px;padding:12px 15px}.map-overview strong{font-size:29px}.map-overview small{font-size:8px}.map-legend span{font-size:8px}.map-legend i{width:8px;height:8px}.map-station-select{height:42px;font-size:9px}.unmapped-panel{top:66px;width:300px}.unmapped-toggle{height:46px;font-size:10px}.unmapped-list a{font-size:10px}.unmapped-list small{font-size:8px}.map-detail{width:390px;padding:21px}.map-detail h1{font-size:20px}.map-detail-metrics span{font-size:8px}.map-detail-metrics strong{font-size:27px}.map-detail-events span,.map-detail>p{font-size:9px}.map-failure h1{font-size:22px}.map-failure p{font-size:11px}
}

/* v12: global map context, unified navigation and PWA installation */
.primary-nav a b svg{display:block;width:22px;height:22px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}
.map-page-title{min-width:0}.map-page-title strong,.map-page-title small{display:block}.map-page-title strong{font-size:12px;white-space:nowrap}.map-page-title small{margin-top:3px;color:var(--muted);font:7px var(--mono);white-space:nowrap}
.map-header .map-connection{cursor:default}.map-header .map-connection strong{white-space:nowrap}
.map-overview{border-left-color:var(--ok)}.map-overview[data-tone="warning"]{border-left-color:var(--warning)}.map-overview[data-tone="critical"]{border-left-color:var(--danger)}
.map-overview-total{min-width:76px}.map-overview-total strong,.map-overview-total small{display:block}.map-overview-total strong{font:500 24px var(--mono)}.map-overview-total small{margin-top:2px;color:var(--muted);font:7px var(--mono)}
.map-state-counts{display:grid;grid-template-columns:repeat(3,auto);gap:14px;border-left:1px solid var(--line);padding-left:14px}.map-state-counts span{display:grid;grid-template-columns:8px auto;column-gap:6px;align-items:center}.map-state-counts i{grid-row:1/3;width:7px;height:7px;border-radius:50%;background:var(--ok)}.map-state-counts b{font:500 12px var(--mono);line-height:1}.map-state-counts small{margin-top:3px;color:var(--muted);font:6px var(--mono)}.map-state-counts .warning i{background:var(--warning)}.map-state-counts .critical i{background:var(--danger);box-shadow:0 0 8px #ff6d7066}
.station-marker>b{border-color:#29495099;background:#07191ed2;color:#d3dfe0;font-size:7.2px;font-weight:500;box-shadow:0 4px 12px #00101455}

.install-nudge{position:fixed;z-index:120;left:12px;right:12px;bottom:calc(76px + env(safe-area-inset-bottom));max-width:560px;margin:auto;padding:16px 16px 14px;display:grid;grid-template-columns:46px minmax(0,1fr);gap:9px 13px;border:1px solid #35616a;border-top:2px solid var(--teal);background:#081d22f5;box-shadow:0 20px 70px #000c;backdrop-filter:blur(16px);opacity:0;transform:translateY(18px);transition:opacity .25s,transform .25s}.install-nudge.visible{opacity:1;transform:none}.install-nudge-close{position:absolute;right:7px;top:5px;width:34px;height:34px;border:0;background:none;color:#82999e;font-size:23px;cursor:pointer}.install-nudge-icon{padding-top:2px}.install-nudge-icon .brand-glyph{width:38px;height:38px}.install-nudge-copy{padding-right:25px}.install-nudge-copy>strong{display:block;font-size:13px}.install-nudge-copy>p{margin:5px 0 0;color:#91a5aa;font-size:10px;line-height:1.5}.install-ios-steps{margin-top:11px;padding-top:10px;border-top:1px solid var(--line);color:#a8b9bc;font-size:10px;line-height:1.55}.install-ios-steps b,.install-ios-steps span{display:block}.install-ios-steps b{margin-bottom:4px;color:var(--teal);font:9px var(--mono)}.install-nudge-actions{grid-column:2;display:flex;gap:8px}.install-nudge-actions button{height:36px;padding:0 12px;border:1px solid var(--line);background:none;color:#9fb1b5;font:9px var(--mono);cursor:pointer}.install-nudge-actions .install-nudge-primary{border-color:var(--teal);background:#123b3f;color:var(--teal)}

@media(max-width:699px){
  .app-header{height:56px}.brand-glyph{width:32px;height:32px}.station-switcher{top:8px;left:49px;height:40px}.dashboard-shell{height:calc(100svh - 162px)}
  .map-header{padding:0 10px}.map-header .brand{flex:0 0 34px}.map-header .brand-glyph{width:31px;height:31px}.map-page-title{margin-left:8px;margin-right:auto}.map-page-title strong{font-size:13px}.map-page-title small{font-size:7px}.map-header .map-connection{max-width:108px;padding:5px 7px}.map-header .map-connection span{display:block}.map-header .map-connection strong{font-size:8px}.map-header .map-connection small{display:none}
  .map-page .map-workspace{height:calc(100svh - 122px)}
  .global-nav{justify-content:center}.global-nav a{flex:0 0 50%;max-width:180px}
  .map-overview{min-height:50px;grid-template-columns:auto minmax(0,1fr);padding:6px 10px}.map-overview-total{min-width:53px}.map-overview-total strong{font-size:19px}.map-overview-total small{font-size:6px}.map-state-counts{justify-content:space-around;gap:5px;padding-left:9px}.map-state-counts span{grid-template-columns:7px auto;column-gap:4px}.map-state-counts i{width:6px;height:6px}.map-state-counts b{font-size:11px}.map-state-counts small{font-size:6px}.unmapped-panel{top:57px}
  .install-nudge{grid-template-columns:40px minmax(0,1fr);padding:14px 13px 12px}.install-nudge-icon .brand-glyph{width:34px;height:34px}.install-nudge-copy>strong{font-size:12px}.install-nudge-copy>p,.install-ios-steps{font-size:9.5px}.install-nudge-actions{gap:6px}.install-nudge-actions button{padding:0 9px;font-size:8.5px}
}

@media(min-width:700px){
  .primary-nav a b svg{display:none}.map-header{grid-template-columns:auto minmax(160px,220px) minmax(220px,1fr) auto}.map-page-title{justify-self:start}.map-header .global-nav{justify-self:center}.map-header .map-connection{justify-self:end}.global-nav a{min-width:92px}
  .install-nudge{left:auto;right:20px;bottom:20px;width:520px;margin:0}
}

/* v13: clear station context, truthful cached state and mobile safe areas */
.station-switcher{border:1px solid #31535b;background:#0b242a;transition:border-color .2s,background .2s}.station-switcher:hover,.station-switcher:focus-visible{border-color:var(--teal);background:#103037;outline:none}.station-switcher>b{width:27px;height:27px;display:grid;place-items:center;border-left:1px solid #31535b;color:var(--teal);font-size:17px;line-height:1}
.trend-empty-state{gap:12px;align-content:center;pointer-events:none}.trend-empty-state>span{max-width:440px;line-height:1.55}.trend-empty-state button{pointer-events:auto;height:36px;padding:0 13px;border:1px solid #3b686e;background:#0d3035;color:var(--teal);font:8px var(--mono);cursor:pointer}.trend-empty-state button:hover{border-color:var(--teal);background:#123b3f}.trend-empty-state button[hidden]{display:none}
.pump-unit.stale.running .pump-visual{color:#70868b;filter:drop-shadow(0 4px 9px #0007)}.pump-unit.stale .discrete-status i{border-color:#3b5055;color:#789095;background:#0a1b20;box-shadow:none}.pump-stale-note{display:block;margin-top:5px;color:#758b91;font:6px/1.35 var(--mono)}.manual-frequency-button{max-width:100%;text-align:left;line-height:1.35}
.mobile-alarm-button.connection-only{border-color:#68434a;background:#261b1ed9;color:#d8a8aa;box-shadow:none}.mobile-alarm-button.connection-only i{box-shadow:0 0 7px #ff6d7077}
.station-marker>b{font-size:8.2px;padding:4px 7px;transition:opacity .18s,border-color .18s}.station-marker.label-hidden:not(.selected)>b{opacity:0}
.map-state-counts small{white-space:nowrap}

@media(max-width:699px){
  .primary-nav{height:calc(66px + env(safe-area-inset-bottom));padding-bottom:env(safe-area-inset-bottom)}
  .dashboard-shell{height:calc(100svh - 162px - env(safe-area-inset-bottom))}.map-page .map-workspace{height:calc(100svh - 122px - env(safe-area-inset-bottom))}
  .alarm-rail{bottom:calc(66px + env(safe-area-inset-bottom))}.toast{bottom:calc(72px + env(safe-area-inset-bottom))}body:not(.dashboard-page):not(.map-page){padding-bottom:calc(66px + env(safe-area-inset-bottom))}
  .dashboard-page .app-header{display:grid;grid-template-columns:34px minmax(0,1fr) auto;gap:7px;padding:0 9px;height:56px}
  .dashboard-page .brand{width:34px;min-width:34px}.dashboard-page .brand-glyph{width:32px;height:32px}.dashboard-page .brand>span:last-child{display:none}
  .dashboard-page .station-switcher{position:static;left:auto;top:auto;width:auto;max-width:none;min-width:0;height:42px;padding:0 0 0 9px;gap:6px;border:1px solid #31535b;background:#0b242a}
  .dashboard-page .station-switcher small{display:block;font-size:5px;letter-spacing:.08em}.dashboard-page .station-switcher strong{margin-top:2px;font-size:9.5px}.dashboard-page .station-switcher>b{width:28px;height:100%;flex:0 0 28px;font-size:17px}
  .dashboard-page .header-actions{position:static;min-width:0;gap:5px}.dashboard-page .alarm-toggle{gap:4px}.dashboard-page .alarm-toggle span{font:7px var(--mono)}.dashboard-page .alarm-toggle span::after{content:none}.dashboard-page .alarm-toggle i{width:26px}
  .dashboard-page .header-actions .connection{padding:5px 6px;gap:5px}.dashboard-page .header-actions .connection strong{font-size:7.5px}.dashboard-page .header-actions .connection small{display:none}
  .map-state-counts small{font-size:5.5px}.station-marker>b{font-size:8px}
  .pump-stale-note{font-size:6.5px}.trend-empty-state>span{max-width:300px}.trend-empty-state button{height:38px;font-size:9px}
}

@media(max-width:380px){
  .dashboard-page .app-header{grid-template-columns:32px minmax(0,1fr) auto;gap:5px;padding:0 7px}.dashboard-page .alarm-toggle span{display:none}.dashboard-page .station-switcher{padding-left:7px}.dashboard-page .station-switcher strong{font-size:8.5px}
}

/* v14: compact object context and focused mobile workspace */
.station-switcher{
  width:184px;min-width:0;max-width:184px;height:40px;padding:0 9px 0 13px;gap:8px;
  border:1px solid #35555d;border-radius:7px;background:#0a2025;box-shadow:inset 0 1px #ffffff08;
}
.station-switcher span{flex:1;min-width:0}.station-switcher small{display:none}
.station-switcher strong{margin:0;font-size:10px;font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.station-switcher>b{width:24px;height:24px;flex:0 0 24px;border:0;color:var(--teal)}
.station-switcher>b svg{display:block;width:18px;height:18px;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;transition:transform .18s ease}
.station-switcher:hover>b svg,.station-switcher:focus-visible>b svg{transform:translateY(1px)}
.alarm-toggle>svg{width:15px;height:15px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round;flex:0 0 auto}
.dashboard-page .connection.offline,.dashboard-page .connection.warning{border:0;background:transparent;padding:4px;color:var(--danger)}
.dashboard-page .connection.warning{color:var(--warning)}
.trend-legend button{color:#82979c;opacity:.74}.trend-legend button i{border-color:#668087}
.trend-legend button:hover,.trend-legend button:focus-visible{color:#c1d0d2;opacity:1;outline:none}
.trend-legend button.active{color:#eef5f5}
.trend-freshness[hidden]{display:none!important}
.pump-deck{background:#071b20;box-shadow:0 -1px #315159}
.pump-heading{min-width:0}.pump-heading span{line-height:1.35}
.manual-frequency-button,.frequency-tagged{white-space:normal;line-height:1.35}
.primary-nav a[data-nav-key="alarms"].has-count::after{
  content:attr(data-count);position:absolute;left:calc(50% + 7px);top:7px;min-width:14px;height:14px;padding:0 3px;
  display:grid;place-items:center;border:2px solid #091e23;border-radius:8px;background:var(--danger);color:#fff;
  font:600 7px/1 var(--mono);box-shadow:0 0 10px #ff6d7044;
}

@media(max-width:699px){
  .dashboard-page .app-header{grid-template-columns:34px auto minmax(0,1fr);gap:7px;padding:0 9px}
  .dashboard-page .station-switcher{
    width:clamp(138px,42vw,158px);max-width:158px;height:38px;padding:0 7px 0 12px;border-radius:7px;background:#0a2025;
  }
  .dashboard-page .station-switcher strong{font-size:10px}.dashboard-page .station-switcher>b{width:22px;height:22px;flex-basis:22px}
  .dashboard-page .header-actions{justify-self:end}.dashboard-page .header-actions .connection{display:none}
  .dashboard-page .alarm-toggle{gap:5px;padding:0;color:#8da3a8}.dashboard-page .alarm-toggle span{display:block;font:7px var(--mono)}
  .system-strip{font-size:9px;line-height:1.3}.system-strip>span:first-child{min-width:0}.system-strip>span:first-child strong{min-width:0}
  .mobile-alarm-button,.alarm-rail{display:none}
  .trend-legend button{font-size:8.5px;opacity:.78}
  .pump-deck{height:116px;flex-basis:116px}
  .pump-unit{align-items:center;gap:10px;padding:6px 8px}
  .pump-visual{width:48px;height:84px;flex-basis:48px;transform:none}
  .pump-info{align-self:center}.pump-info strong{font-size:10px}.pump-info>div>span{font-size:7.4px;margin-top:2px}
  .discrete-status{gap:3px;margin-top:5px}.discrete-status i{font-size:6.8px;padding:3px 4px}
  .manual-frequency-button,.frequency-tagged{margin-top:5px;font-size:7.2px}
  .primary-nav a[data-nav-key="alarms"].has-count::after{top:6px}
}

@media(max-width:380px){
  .dashboard-page .app-header{grid-template-columns:32px auto minmax(0,1fr);gap:5px;padding:0 7px}
  .dashboard-page .station-switcher{width:146px;padding-left:10px}.dashboard-page .station-switcher strong{font-size:9.5px}
  .dashboard-page .alarm-toggle span{display:block;font:7px var(--mono)}.dashboard-page .alarm-toggle span::after{content:none}
}

@media(min-width:700px){
  .pump-deck{height:138px;flex-basis:138px}.pump-visual{width:60px;height:106px;flex-basis:60px}.pump-unit{gap:15px}
}

/* v15: два датчика уровня в одной ёмкости и оперативные расходы */
@media(max-width:699px){
  .operational-metrics{width:100%;gap:10px}.flow-display{min-width:57px}.flow-display span{font-size:8px}.flow-display strong{font-size:18px}.flow-display em{font-size:7px}.level-display{margin-left:auto}
}
@media(min-width:700px){
  .operational-metrics{gap:20px}.flow-display{min-width:70px}.flow-display span{font-size:8px}.flow-display strong{font-size:21px}.flow-display em{font-size:7px}
}
@media(min-width:1200px){
  .operational-metrics{gap:28px}.flow-display{min-width:88px}.flow-display span{font-size:10px}.flow-display strong{font-size:27px}.flow-display em{font-size:8px}
}

@media(min-width:1200px){
  .station-switcher{width:196px;max-width:196px;height:44px}.station-switcher strong{font-size:11px}
  .pump-deck{height:148px;flex-basis:148px}.pump-visual{width:66px;height:116px;flex-basis:66px}
}

/* v15: readable map summary on mobile */
.tag-control{display:grid;gap:5px;min-width:0}.tag-control small{min-height:11px;color:#607a81;font:7px/1.45 var(--mono)}
@media(max-width:699px){.tag-control small{font-size:9px}}

@media(max-width:699px){
  .map-page-title small{font-size:9.5px;line-height:1.25;letter-spacing:.02em}
  .map-header .map-connection strong{font-size:10px}
  .map-overview{min-height:64px;padding:9px 11px}
  .map-overview-total{min-width:58px}
  .map-overview-total strong{font-size:22px}
  .map-overview-total small{font-size:9px;line-height:1.2}
  .map-state-counts{gap:4px;padding-left:11px}
  .map-state-counts span{grid-template-columns:8px auto;column-gap:5px}
  .map-state-counts i{width:7px;height:7px}
  .map-state-counts b{font-size:14px}
  .map-state-counts small{font-size:clamp(8.5px,2.5vw,10px);line-height:1.15}
  .unmapped-panel{top:71px}
}

/* v16: два уровня, суточные объёмы и компактные насосы */
.visually-hidden{position:absolute!important;width:1px!important;height:1px!important;padding:0!important;margin:-1px!important;overflow:hidden!important;clip:rect(0,0,0,0)!important;white-space:nowrap!important;border:0!important}
.daily-flow-group{display:grid;gap:3px;text-align:left}.daily-flow-group>span{color:var(--muted);font:6px var(--mono);text-transform:uppercase;letter-spacing:.08em}.daily-flow-group>div{display:flex;gap:11px}.daily-flow-group[hidden]{display:none!important}.flow-display{display:grid;grid-template-columns:auto auto auto;gap:3px;align-items:baseline;min-width:0;text-align:left}.flow-display b{color:#89a0a5;font:500 6px var(--mono)}.flow-display strong{font:500 15px var(--mono);color:var(--teal);letter-spacing:-.04em}.flow-display em{margin:0;color:#93a7ab;font:normal 5.5px var(--mono)}.flow-display.unavailable{opacity:.42}
.level-gauge{position:absolute;z-index:4;top:62px;bottom:123px;width:36px;display:grid;grid-template-rows:auto auto minmax(0,1fr);justify-items:center;gap:3px;padding:5px 3px;pointer-events:none;color:#71878d}.level-gauge[hidden]{display:none!important}.level-gauge-left{left:2px}.level-gauge-right{right:2px}.level-gauge>span{font:600 8px var(--mono)}.level-gauge>strong{font:500 6.5px var(--mono);white-space:nowrap}.level-gauge>div{position:relative;width:5px;height:100%;min-height:60px;border:1px solid #38545b;border-radius:4px;background:#07171bc7;overflow:hidden}.level-gauge>div>i{position:absolute;left:0;right:0;bottom:0;min-height:2px;background:#637b82;transition:height .9s cubic-bezier(.2,.8,.2,1)}.level-gauge.active{color:var(--violet)}.level-gauge.active>div{border-color:#6f64bb;box-shadow:0 0 10px #8d7cff22}.level-gauge.active>div>i{background:var(--violet);box-shadow:0 0 8px #8d7cff88}.level-gauge.not-selected{opacity:.68}.tank-workspace.has-level-gauges .trend-stage{margin-left:42px;margin-right:42px}
.pump-deck{height:132px;flex-basis:132px;grid-template-columns:repeat(var(--pump-count,2),minmax(0,1fr))}.pump-unit{display:grid;grid-template-rows:auto minmax(0,1fr) auto;align-items:stretch;justify-content:stretch;gap:2px;padding:6px 7px 5px;cursor:pointer;overflow:hidden}.pump-unit:hover,.pump-unit:focus-within{background:#0b252a99}.pump-heading{display:flex;align-items:center;gap:5px}.pump-heading strong{font:600 9px var(--mono);letter-spacing:.04em}.pump-heading>i{width:6px;height:6px;border-radius:50%;background:#70868b}.pump-unit.running .pump-heading>i{background:var(--ok);box-shadow:0 0 8px #62d8a677}.pump-unit.fault .pump-heading>i{background:var(--danger);box-shadow:0 0 8px #ff6d7077}.pump-body{min-width:0;display:grid;grid-template-columns:42px minmax(0,1fr);align-items:center;gap:6px}.pump-visual{width:42px;height:67px;min-width:0;flex-basis:auto;transform:none!important}.pump-info{display:block!important}.pump-metrics{min-width:0;display:grid;gap:2px}.pump-metrics>span{min-width:0;display:grid;grid-template-columns:10px minmax(0,auto) auto;align-items:baseline;gap:2px;color:#c6d3d5;font:7px var(--mono);white-space:nowrap}.pump-metrics b{color:#668087;font-weight:400}.pump-metrics em,.pump-metric-value{min-width:0;color:#d8e3e4;font:500 7.2px var(--mono);font-style:normal}.pump-metrics small{color:#72898f;font:5.5px var(--mono)}.pump-metric-value{display:inline;border:0;border-bottom:1px dashed #527078;background:none;padding:0;cursor:pointer;text-align:left}.pump-metrics span>span.pump-metric-value{border:0}.pump-metrics .temperature em{color:#f0c37d}.pump-foot{display:flex;gap:5px;overflow:hidden;color:#70868b;font:5.8px var(--mono);white-space:nowrap}.pump-foot span{overflow:hidden;text-overflow:ellipsis}.pump-foot .ok{color:#64b99a}.pump-foot .bad{color:var(--danger)}
.pump-detail-dialog{padding-bottom:14px}.pump-detail-metrics{display:grid;grid-template-columns:1fr 1fr;margin:13px 16px;border-top:1px solid var(--line);border-left:1px solid var(--line)}.pump-detail-metrics>div{padding:10px;border-right:1px solid var(--line);border-bottom:1px solid var(--line)}.pump-detail-metrics span{display:block;color:var(--muted);font:7px var(--mono)}.pump-detail-metrics strong{font:500 19px var(--mono);color:#dce7e8}.pump-detail-metrics small{margin-left:4px;color:#879ca1;font:7px var(--mono)}.pump-temperature-list{margin:0 16px;border-top:1px solid var(--line-soft)}.pump-temperature-list>div{display:flex;justify-content:space-between;gap:12px;padding:9px 2px;border-bottom:1px solid var(--line-soft);font:8px var(--mono)}.pump-temperature-list span{color:#82989d}.pump-temperature-list strong{font-weight:500;color:#efc17b}.pump-temperature-list p{padding:18px 0;margin:0;color:var(--muted);font:8px/1.5 var(--mono);text-align:center}

@media(max-width:699px){
  .tank-head{padding-left:43px;padding-right:43px}.operational-metrics{gap:9px}.daily-flow-group>div{gap:7px}.daily-flow-group>span{font-size:6.5px}.flow-display strong{font-size:13px}.flow-display em{font-size:5px}.level-display span{font-size:6.5px}.level-display strong{font-size:24px}
  .pump-deck[style*="--pump-count: 3"],.pump-deck[style*="--pump-count: 4"]{height:132px;flex-basis:132px}.pump-deck[style*="--pump-count: 3"] .pump-unit,.pump-deck[style*="--pump-count: 4"] .pump-unit{gap:2px;padding:5px 3px 4px}.pump-deck[style*="--pump-count: 3"] .pump-body,.pump-deck[style*="--pump-count: 4"] .pump-body{grid-template-columns:29px minmax(0,1fr);gap:3px}.pump-deck[style*="--pump-count: 3"] .pump-visual,.pump-deck[style*="--pump-count: 4"] .pump-visual{width:29px;height:50px;flex-basis:auto;transform:none}.pump-deck[style*="--pump-count: 4"] .pump-info{display:block!important}.pump-deck[style*="--pump-count: 3"] .pump-heading strong,.pump-deck[style*="--pump-count: 4"] .pump-heading strong{font-size:8px}.pump-deck[style*="--pump-count: 3"] .pump-metrics>span,.pump-deck[style*="--pump-count: 4"] .pump-metrics>span{grid-template-columns:7px minmax(0,auto) auto;gap:1px;font-size:6px}.pump-deck[style*="--pump-count: 3"] .pump-metrics em,.pump-deck[style*="--pump-count: 3"] .pump-metric-value,.pump-deck[style*="--pump-count: 4"] .pump-metrics em,.pump-deck[style*="--pump-count: 4"] .pump-metric-value{font-size:6px}.pump-deck[style*="--pump-count: 3"] .pump-metrics small,.pump-deck[style*="--pump-count: 4"] .pump-metrics small{font-size:4.6px}.pump-deck[style*="--pump-count: 3"] .pump-foot,.pump-deck[style*="--pump-count: 4"] .pump-foot{font-size:4.8px;gap:3px}.level-gauge{bottom:139px}
}

@media(min-width:700px){
  .level-gauge{top:78px;bottom:145px;width:46px}.level-gauge-left{left:7px}.level-gauge-right{right:7px}.level-gauge>span{font-size:10px}.level-gauge>strong{font-size:8px}.level-gauge>div{width:7px}.tank-workspace.has-level-gauges .trend-stage{margin-left:55px;margin-right:55px}
  .daily-flow-group>span{font-size:8px}.daily-flow-group>div{gap:16px}.flow-display b{font-size:8px}.flow-display strong{font-size:20px}.flow-display em{font-size:7px}
  .pump-deck{height:148px;flex-basis:148px}.pump-unit{padding:7px 10px}.pump-body{grid-template-columns:50px minmax(0,1fr);gap:9px}.pump-visual{width:50px;height:82px}.pump-heading strong{font-size:11px}.pump-metrics>span{font-size:8px}.pump-metrics em,.pump-metric-value{font-size:8.5px}.pump-metrics small{font-size:6.5px}.pump-foot{font-size:6.5px}
}

/* v16.1: читаемые четыре насоса и шкалы только в области графика */
@media(max-width:699px){
  .daily-flow-group>span{font-size:7.5px}.daily-flow-group>div{gap:8px}.flow-display b{font-size:7px}.flow-display strong{font-size:15.5px}.flow-display em{font-size:6.2px}.level-display span{font-size:7.2px}.level-display strong{font-size:25px}
  .level-gauge{top:145px}
  .pump-deck[style*="--pump-count: 3"] .pump-heading strong,.pump-deck[style*="--pump-count: 4"] .pump-heading strong{font-size:9px}
  .pump-deck[style*="--pump-count: 3"] .pump-metrics>span,.pump-deck[style*="--pump-count: 4"] .pump-metrics>span{grid-template-columns:8px minmax(0,auto) auto;font-size:7px}
  .pump-deck[style*="--pump-count: 3"] .pump-metrics em,.pump-deck[style*="--pump-count: 3"] .pump-metric-value,.pump-deck[style*="--pump-count: 4"] .pump-metrics em,.pump-deck[style*="--pump-count: 4"] .pump-metric-value{font-size:7.2px}
  .pump-deck[style*="--pump-count: 3"] .pump-metrics small,.pump-deck[style*="--pump-count: 4"] .pump-metrics small{font-size:5.2px}
  .pump-deck[style*="--pump-count: 3"] .pump-foot,.pump-deck[style*="--pump-count: 4"] .pump-foot{font-size:5.7px}
}
@media(min-width:700px){
  .level-gauge{top:130px}
  .pump-heading strong{font-size:12px}.pump-metrics>span{font-size:9.5px}.pump-metrics em,.pump-metric-value{font-size:10px}.pump-metrics small{font-size:7.5px}.pump-foot{font-size:7.5px}
}

/* v17: параметры насосов выше пиктограммы, стабильная панель тренда */
.pump-filter-conditional{visibility:hidden;opacity:0;transform:translateY(-2px);pointer-events:none;transition:opacity .18s ease,transform .18s ease}
.pump-filter-conditional.is-visible{visibility:visible;opacity:1;transform:none;pointer-events:auto}
.daily-flow-group,.level-display{align-self:stretch;grid-template-rows:13px minmax(0,1fr);align-items:end}
.daily-flow-group>span,.level-display>span{margin:0;line-height:1;align-self:start}
.daily-flow-group>div{align-items:baseline}
.flow-display{display:flex;grid-template-columns:none;align-items:baseline;gap:3px;min-width:0}
.flow-display b{align-self:baseline}.flow-display em{white-space:nowrap}
.pump-unit{grid-template-rows:auto auto minmax(0,1fr);gap:3px}
.pump-heading{min-height:13px}.pump-heading strong{line-height:1}.pump-heading>i{margin-left:1px}
.pump-metrics{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:4px 6px;align-self:start}
.pump-metrics>span{display:grid;grid-template-columns:1fr;gap:1px;min-width:0;color:#c6d3d5;white-space:nowrap}
.pump-metrics>span>b{font:500 7px/1 var(--mono);color:#82979c}
.pump-metrics>span>span{display:flex;align-items:baseline;gap:2px;min-width:0}
.pump-metrics em,.pump-metric-value{font:500 11px/1 var(--mono);color:#e3ecec;font-style:normal}
.pump-metrics small{font:6.5px/1 var(--mono);color:#84999e}
.pump-metrics .temperature em{color:#f0c37d}.pump-metrics .temperature b{color:#a38c69}
.pump-metric-value{width:auto;max-width:100%}
.pump-visual{justify-self:center;align-self:end}

@media(max-width:699px){
  .operational-metrics{align-items:stretch}.daily-flow-group,.level-display{height:45px}
  .daily-flow-group>span,.level-display>span{font-size:7.5px;letter-spacing:.08em}
  .daily-flow-group>div{gap:9px}.flow-display b{font-size:7.5px}.flow-display strong{font-size:17px;line-height:1}.flow-display em{font-size:6.5px;margin:0}.level-display strong{font-size:25px;line-height:1}.level-display em{font-size:7.5px;margin:0 0 1px 4px}
  .trend-legend button{font-size:9px}.analog-open{font-size:8.5px}.axis-text.value-axis,.axis-unit{font-size:10px}
  .pump-deck[style*="--pump-count: 3"],.pump-deck[style*="--pump-count: 4"]{height:132px;flex-basis:132px}
  .pump-deck[style*="--pump-count: 3"] .pump-unit,.pump-deck[style*="--pump-count: 4"] .pump-unit{padding:5px 4px 4px;gap:3px}
  .pump-deck[style*="--pump-count: 3"] .pump-heading strong,.pump-deck[style*="--pump-count: 4"] .pump-heading strong{font-size:10px}
  .pump-deck[style*="--pump-count: 3"] .pump-metrics,.pump-deck[style*="--pump-count: 4"] .pump-metrics{gap:4px 3px}
  .pump-deck[style*="--pump-count: 3"] .pump-metrics>span>b,.pump-deck[style*="--pump-count: 4"] .pump-metrics>span>b{font-size:7px}
  .pump-deck[style*="--pump-count: 3"] .pump-metrics em,.pump-deck[style*="--pump-count: 3"] .pump-metric-value,.pump-deck[style*="--pump-count: 4"] .pump-metrics em,.pump-deck[style*="--pump-count: 4"] .pump-metric-value{font-size:11px}
  .pump-deck[style*="--pump-count: 3"] .pump-metrics small,.pump-deck[style*="--pump-count: 4"] .pump-metrics small{font-size:6.2px}
  .pump-deck[style*="--pump-count: 3"] .pump-visual,.pump-deck[style*="--pump-count: 4"] .pump-visual{width:32px;height:52px}
}
@media(min-width:700px){
  .daily-flow-group,.level-display{height:53px;grid-template-rows:16px minmax(0,1fr)}
  .daily-flow-group>span,.level-display>span{font-size:9px}.flow-display strong{font-size:25px}.flow-display em{font-size:8px;margin:0}.level-display strong{line-height:1}.level-display em{margin-bottom:2px}
  .pump-unit{padding:8px 12px 6px}.pump-heading strong{font-size:13px}.pump-metrics{gap:6px 12px}.pump-metrics>span>b{font-size:8px}.pump-metrics em,.pump-metric-value{font-size:13px}.pump-metrics small{font-size:8px}.pump-visual{width:55px;height:88px}
}

/* v18: независимый выбор насосов и выровненная оперативная типографика */
.tank-grid{background-image:linear-gradient(#17353c 1px,transparent 1px),linear-gradient(90deg,#17353c80 1px,transparent 1px)}
.trend-controls.pump-filter-row{justify-content:center}
.pump-filter-row .pump-filter{gap:5px;border:0;background:transparent}
.pump-filter-row .pump-filter button{min-width:36px;padding:5px 9px;border:1px solid #294a52;background:#081a1f;color:#789097}
.pump-filter-row .pump-filter button:last-child{border:1px solid #294a52}
.pump-filter-row .pump-filter button.active{border-color:#278d86;background:#12383d;color:var(--teal);box-shadow:inset 0 -2px #28d8c744}
.trend-legend .analog-open{margin-left:2px;color:#82979c;opacity:.82}
.trend-legend .analog-open span{margin-left:2px;color:var(--teal);font-size:1.28em;line-height:0}
.pump-metrics .temperature.unavailable b,.pump-metrics .temperature.unavailable em{color:#82979c}

@media(hover:none){
  .trend-legend button:not(.active){color:#82979c;opacity:.74}
}

@media(max-width:699px){
  .tank-head{padding-left:12px;padding-right:12px}
  .daily-flow-group>div{gap:9px}
  .flow-display strong,.level-display strong{font-size:clamp(21px,6.4vw,25px);line-height:1}
  .flow-display em,.level-display em{font-size:clamp(6.5px,1.92vw,7.5px);line-height:1}
  .flow-display em{margin:0 0 1px 1px}.level-display em{margin:0 0 1px 4px}
  .flow-display b{font-size:clamp(6.5px,1.92vw,7.5px)}
  .pump-filter-row{height:34px;flex-basis:34px;padding:0 14px}
  .pump-filter-row .pump-filter button{min-width:37px;padding:5px 10px;font-size:9px}
  .pump-deck[style*="--pump-count: 3"] .pump-metrics,.pump-deck[style*="--pump-count: 4"] .pump-metrics{gap:4px 5px}
  .pump-deck[style*="--pump-count: 3"] .pump-metrics>span,.pump-deck[style*="--pump-count: 4"] .pump-metrics>span{display:grid;grid-template-columns:minmax(0,1fr);grid-template-rows:8px 13px;gap:1px;align-items:start}
  .pump-deck[style*="--pump-count: 3"] .pump-metrics>span>b,.pump-deck[style*="--pump-count: 4"] .pump-metrics>span>b{font-size:7.5px;line-height:1}
  .pump-deck[style*="--pump-count: 3"] .pump-metrics>span>span,.pump-deck[style*="--pump-count: 4"] .pump-metrics>span>span{min-height:13px;align-items:baseline;gap:2px}
  .pump-deck[style*="--pump-count: 3"] .pump-metrics em,.pump-deck[style*="--pump-count: 3"] .pump-metric-value,.pump-deck[style*="--pump-count: 4"] .pump-metrics em,.pump-deck[style*="--pump-count: 4"] .pump-metric-value{font-size:11.5px;line-height:1}
  .pump-deck[style*="--pump-count: 3"] .pump-metrics small,.pump-deck[style*="--pump-count: 4"] .pump-metrics small{font-size:6.5px;line-height:1}
}

/* v19: отдельная компоновка двухнасосной КНС */
.level-gauge-single.warning{color:var(--warning)}
.level-gauge-single.warning>div{border-color:#93682c;box-shadow:0 0 10px #ffb45d22}
.level-gauge-single.warning>div>i{background:var(--warning);box-shadow:0 0 8px #ffb45d66}
.level-gauge-single.critical{color:var(--danger)}
.level-gauge-single.critical>div{border-color:#91474c;box-shadow:0 0 10px #ff6d7030}
.level-gauge-single.critical>div>i{background:var(--danger);box-shadow:0 0 8px #ff6d7077}
.level-gauge-single.stale{color:#70868b;opacity:.72}
.level-gauge-single.stale>div{border-color:#38545b;box-shadow:none}
.level-gauge-single.stale>div>i{background:#637b82;box-shadow:none}
.tank-workspace.has-single-level-gauge .trend-stage{margin-right:42px}
.pump-deck[data-pump-count="2"] .pump-unit{display:grid;grid-template-columns:56px minmax(0,1fr);grid-template-rows:14px minmax(0,1fr);column-gap:10px;row-gap:3px;padding:7px 11px 6px;align-items:stretch}
.pump-deck[data-pump-count="2"] .pump-heading{grid-column:1/-1;grid-row:1;min-width:0}
.pump-deck[data-pump-count="2"] .pump-heading strong{font-size:10px}
.pump-deck[data-pump-count="2"] .pump-visual{grid-column:1;grid-row:2;align-self:center;justify-self:center;width:56px;height:88px}
.pump-deck[data-pump-count="2"] .pump-metrics{grid-column:2;grid-row:2;align-self:center;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:9px 8px}
.pump-deck[data-pump-count="2"] .pump-metrics>span{display:grid;grid-template-columns:minmax(0,1fr);grid-template-rows:9px 17px;gap:2px;align-items:start}
.pump-deck[data-pump-count="2"] .pump-metrics>span>b{font-size:8px;line-height:1}
.pump-deck[data-pump-count="2"] .pump-metrics>span>span{display:flex;min-height:17px;align-items:baseline;gap:3px}
.pump-deck[data-pump-count="2"] .pump-metrics em,.pump-deck[data-pump-count="2"] .pump-metric-value{font-size:15px;line-height:1}
.pump-deck[data-pump-count="2"] .pump-metrics small{font-size:8px;line-height:1}

@media(max-width:699px){
  .tank-workspace[data-pump-count="2"] .operational-metrics{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:end;width:100%;gap:7px}
  .tank-workspace[data-pump-count="2"] .daily-flow-group{min-width:0}
  .tank-workspace[data-pump-count="2"] .daily-flow-group>div{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:5px}
  .tank-workspace[data-pump-count="2"] .flow-display{min-width:0;gap:2px}
  .tank-workspace[data-pump-count="2"] .flow-display strong{font-size:clamp(17px,5.4vw,21px)}
  .tank-workspace[data-pump-count="2"] .flow-display em{font-size:clamp(5px,1.55vw,6px)}
  .tank-workspace[data-pump-count="2"] .level-display{min-width:96px}
  .tank-workspace[data-pump-count="2"].without-daily-flow .operational-metrics{justify-content:center}
  .tank-workspace[data-pump-count="2"].without-daily-flow .operational-metrics{grid-template-columns:auto}
  .tank-workspace[data-pump-count="2"].without-daily-flow .level-display{margin-left:0;min-width:0}
  .level-gauge-single>span{font-size:6.5px}
}

@media(min-width:700px){
  .tank-workspace.has-single-level-gauge .trend-stage{margin-right:55px}
  .pump-deck[data-pump-count="2"] .pump-unit{grid-template-columns:72px minmax(0,220px);grid-template-rows:16px minmax(0,1fr);justify-content:center;column-gap:18px;row-gap:4px;padding:9px 18px 7px}
  .pump-deck[data-pump-count="2"] .pump-heading strong{font-size:12px}
  .pump-deck[data-pump-count="2"] .pump-visual{width:68px;height:108px}
  .pump-deck[data-pump-count="2"] .pump-metrics{gap:12px 18px}
  .pump-deck[data-pump-count="2"] .pump-metrics>span{grid-template-rows:10px 19px;gap:3px}
  .pump-deck[data-pump-count="2"] .pump-metrics>span>b{font-size:9px}
  .pump-deck[data-pump-count="2"] .pump-metrics em,.pump-deck[data-pump-count="2"] .pump-metric-value{font-size:16px}
  .pump-deck[data-pump-count="2"] .pump-metrics small{font-size:9px}
}

/* v21: паспорт насоса, проверка AI-черновика */
.passport-operating-points{display:grid;gap:10px;margin-top:16px}.passport-point{padding:12px;border:1px solid var(--line-soft);background:#07191e}.passport-point>strong{display:block;margin-bottom:10px;color:#b7c8ca;font:600 10px var(--mono)}.passport-point>div{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px}.passport-point .field{margin:0}.passport-range{margin-top:10px}.passport-analyze:disabled{opacity:.38;cursor:not-allowed}.passport-review-dialog{width:min(880px,calc(100% - 24px));max-width:none;max-height:min(860px,94svh);padding:0}.passport-review-dialog form{padding-bottom:14px}.passport-analyze-gate{padding:18px}.passport-analyze-gate>p{margin:0 0 16px;color:#9aafb3;font-size:10px;line-height:1.65}.passport-analyze-gate .primary-button{margin-top:12px}.passport-review-summary{display:grid;gap:5px;margin:14px 18px;padding:13px;border-left:3px solid var(--teal);background:#0b2429}.passport-review-summary strong{font-size:13px}.passport-review-summary span{color:#91a6aa;font:8px/1.55 var(--mono)}.passport-review-list{margin:0 18px;border-top:1px solid var(--line)}.passport-review-row{min-height:58px;display:grid;grid-template-columns:22px minmax(0,1fr) minmax(100px,220px);align-items:center;gap:10px;border-bottom:1px solid var(--line-soft);cursor:pointer}.passport-review-row input{position:absolute;opacity:0}.passport-review-row>i{width:17px;height:17px;border:1px solid #466269;position:relative}.passport-review-row input:checked+i{border-color:var(--teal);background:#123c39}.passport-review-row input:checked+i:after{content:"\2713";position:absolute;inset:-2px 0 0;display:grid;place-items:center;color:var(--teal);font:11px var(--mono)}.passport-review-row span b,.passport-review-row span small{display:block}.passport-review-row span b{font-size:10px}.passport-review-row span small{margin-top:4px;color:#647d82;font:7px var(--mono)}.passport-review-row>strong{text-align:right;color:#dbe6e7;font:500 10px/1.4 var(--mono)}.passport-review-row.uncertain{border-left:2px solid var(--warning);padding-left:8px}.passport-review-note{margin:14px 18px;color:#7e9499;font:8px/1.55 var(--mono)}
.passport-range-note{margin:4px 2px 14px;color:#71888e;font:8px/1.55 var(--mono)}
@media(max-width:699px){.passport-point>div{grid-template-columns:1fr 1fr}.passport-point>strong{font-size:11px}.passport-review-dialog{width:100%;height:100svh;max-height:none;margin:0;border-left:0;border-right:0}.passport-review-row{grid-template-columns:22px minmax(0,1fr);padding:10px 0}.passport-review-row>strong{grid-column:2;text-align:left;color:#e8f1f2}.passport-review-summary span,.passport-review-note{font-size:9px}.passport-review-list{margin:0 14px}}
.pump-efficiency-panel{margin:4px 16px 14px;border:1px solid var(--line);background:#071a1f}.pump-efficiency-panel[hidden]{display:none}.pump-efficiency-panel>header{display:grid;gap:4px;padding:12px 13px;border-left:3px solid #70868b}.pump-efficiency-panel>header strong{font-size:11px}.pump-efficiency-panel>header small{color:#7e959a;font:7px var(--mono)}.pump-efficiency-panel.good>header{border-left-color:var(--ok)}.pump-efficiency-panel.warning>header,.pump-efficiency-panel.setup>header,.pump-efficiency-panel.incomplete>header{border-left-color:var(--warning)}.pump-efficiency-panel.critical>header{border-left-color:var(--danger)}.pump-efficiency-panel.neutral>header,.pump-efficiency-panel.collecting>header{border-left-color:var(--teal)}.pump-efficiency-panel.waiting>header{border-left-color:#70868b}.pump-efficiency-panel>svg{display:block;width:100%;height:190px;border-top:1px solid var(--line-soft);border-bottom:1px solid var(--line-soft)}.efficiency-curve{fill:none;stroke:var(--teal);stroke-width:3;vector-effect:non-scaling-stroke}.efficiency-marker circle{fill:#071a1f;stroke-width:3;vector-effect:non-scaling-stroke}.efficiency-marker text{font:8px var(--mono);paint-order:stroke;stroke:#071a1f;stroke-width:4px;stroke-linejoin:round}.efficiency-marker.actual circle{stroke:#fff}.efficiency-marker.actual text{fill:#fff}.efficiency-marker.project circle{stroke:var(--warning)}.efficiency-marker.project text{fill:var(--warning)}.efficiency-marker.bep circle{stroke:var(--violet)}.efficiency-marker.bep text{fill:var(--violet)}.efficiency-axis{fill:#71888e;font:8px var(--mono)}.pump-recommendation{padding:12px 13px}.pump-efficiency-panel.no-chart .pump-recommendation{border-top:1px solid var(--line-soft)}.pump-recommendation.is-awaiting{min-height:188px}.pump-recommendation p{margin:0 0 10px;color:#a9bbbe;font-size:9px;line-height:1.55}.pump-recommendation b{display:block;margin-bottom:5px;color:#dce7e8;font-size:9px}.pump-recommendation small{display:block;padding-top:9px;border-top:1px solid var(--line-soft);color:#6f878c;font:7px/1.5 var(--mono)}.efficiency-checklist{display:grid;gap:7px;margin:12px 0;padding:0;list-style:none}.efficiency-checklist li{display:flex;align-items:flex-start;gap:7px;color:#91a6aa;font:8px/1.45 var(--mono)}.efficiency-checklist i{flex:0 0 12px;color:#71868b;font-style:normal}.efficiency-checklist .done{color:#b7cbc9}.efficiency-checklist .done i,.efficiency-checklist .live i{color:var(--teal)}.efficiency-checklist .live i{animation:efficiency-pulse 1.8s ease-in-out infinite}.efficiency-checklist .missing,.efficiency-checklist .missing i{color:#d5a65f}.efficiency-requirements{margin:12px 0;border-top:1px solid var(--line-soft)}.efficiency-requirements summary{padding:10px 0;color:var(--teal);font:8px var(--mono);cursor:pointer;list-style:none}.efficiency-requirements summary::-webkit-details-marker{display:none}.efficiency-requirements summary:after{content:'+';float:right;font-size:13px;line-height:.7}.efficiency-requirements[open] summary:after{content:'−'}.efficiency-requirements ul{display:grid;gap:7px;margin:0 0 12px;padding-left:17px;color:#899fa4;font:8px/1.45 var(--mono)}@keyframes efficiency-pulse{50%{opacity:.38}}
@media(max-width:699px){.pump-efficiency-panel>svg{height:170px}.pump-efficiency-panel>header strong{font-size:13px}.pump-efficiency-panel>header small{font-size:9px}.pump-recommendation p,.pump-recommendation b{font-size:10px}.pump-recommendation small{font-size:8px}.efficiency-checklist li,.efficiency-requirements summary,.efficiency-requirements ul{font-size:9px}}

/* v20: значения последнего пуска и безопасная ПК-компоновка насосов */
.pump-heading{min-width:0}.pump-reading-time{margin-left:auto;color:#748a90;font:500 6.2px/1 var(--mono);white-space:nowrap}.pump-reading-time.current{color:#dce7e8}.pump-reading-time.unavailable{opacity:.58}
.pump-unit.archived-values .pump-metrics em,.pump-unit.archived-values .pump-metric-value{color:#87999d}.pump-unit.archived-values .pump-metrics small{color:#697f84}.pump-unit.archived-values .pump-metrics .temperature em,.pump-unit.archived-values .pump-metrics .temperature b{color:#8d887b}
.pump-detail-context{display:grid;gap:4px;margin:12px 16px 0;padding:10px 0;border-top:1px solid var(--line-soft);border-bottom:1px solid var(--line-soft)}.pump-detail-context strong{color:#dce7e8;font:600 9px/1.35 var(--mono)}.pump-detail-context span{color:#80969b;font:7px/1.45 var(--mono)}.pump-detail-metrics>div>time{display:block;margin-top:5px;color:#71878d;font:6.5px/1 var(--mono)}

@media(max-width:699px){
  .pump-deck[data-pump-count="3"] .pump-reading-time span,.pump-deck[data-pump-count="4"] .pump-reading-time span{display:none}
  .pump-deck[data-pump-count="3"] .pump-reading-time,.pump-deck[data-pump-count="4"] .pump-reading-time{font-size:5.4px}
  .pump-detail-context strong{font-size:10px}.pump-detail-context span{font-size:8px}.pump-detail-metrics>div>time{font-size:7.5px}
}

@media(min-width:700px){
  .pump-deck[data-pump-count="3"] .pump-unit,.pump-deck[data-pump-count="4"] .pump-unit{grid-template-columns:52px minmax(0,1fr);grid-template-rows:16px minmax(0,1fr);column-gap:9px;row-gap:4px;padding:8px 8px 6px}
  .pump-deck[data-pump-count="3"] .pump-heading,.pump-deck[data-pump-count="4"] .pump-heading{grid-column:1/-1;grid-row:1}
  .pump-deck[data-pump-count="3"] .pump-visual,.pump-deck[data-pump-count="4"] .pump-visual{grid-column:1;grid-row:2;align-self:center;justify-self:center;width:50px;height:82px}
  .pump-deck[data-pump-count="3"] .pump-metrics,.pump-deck[data-pump-count="4"] .pump-metrics{grid-column:2;grid-row:2;align-self:center;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px 7px}
  .pump-deck[data-pump-count="3"] .pump-metrics>span,.pump-deck[data-pump-count="4"] .pump-metrics>span{display:grid;grid-template-columns:minmax(0,1fr);grid-template-rows:9px 17px;gap:2px;align-items:start}
  .pump-deck[data-pump-count="3"] .pump-metrics>span>b,.pump-deck[data-pump-count="4"] .pump-metrics>span>b{font-size:8px;line-height:1}
  .pump-deck[data-pump-count="3"] .pump-metrics>span>span,.pump-deck[data-pump-count="4"] .pump-metrics>span>span{display:flex;min-height:17px;align-items:baseline;gap:2px}
  .pump-deck[data-pump-count="3"] .pump-metrics em,.pump-deck[data-pump-count="3"] .pump-metric-value,.pump-deck[data-pump-count="4"] .pump-metrics em,.pump-deck[data-pump-count="4"] .pump-metric-value{font-size:13px;line-height:1}
  .pump-deck[data-pump-count="3"] .pump-metrics small,.pump-deck[data-pump-count="4"] .pump-metrics small{font-size:7px;line-height:1}
}

/* v22: читаемая ПК-версия при масштабе браузера 100% */
@media(min-width:1100px){
  .brand strong{font-size:18px}.brand small{font-size:10px}
  .station-switcher strong{font-size:13px}.primary-nav a{font-size:12px}
  .alarm-toggle,.demo-toggle{font-size:11px}.connection strong{font-size:13px}.connection small{font-size:10px}
  .system-strip,.system-strip button{font-size:12px}
  .daily-flow-group>span,.level-display>span{font-size:11px}.flow-display b{font-size:10px}.flow-display em{font-size:10px}.level-display em{font-size:12px}
  .trend-legend button,.analog-open{font-size:12px}.trend-legend button i{width:18px}.analog-open span{font-size:17px}
  .axis-text,.axis-unit{font-size:12px}.chart-message,.trend-freshness{font-size:11px}
  .level-gauge>span{font-size:12px}.level-gauge>strong{font-size:10px}
  .pump-heading strong{font-size:14px}.pump-reading-time{font-size:9.5px}
  .pump-deck[data-pump-count="2"] .pump-heading strong,.pump-deck[data-pump-count="3"] .pump-heading strong,.pump-deck[data-pump-count="4"] .pump-heading strong{font-size:14px}
  .pump-deck[data-pump-count="2"] .pump-metrics>span>b,.pump-deck[data-pump-count="3"] .pump-metrics>span>b,.pump-deck[data-pump-count="4"] .pump-metrics>span>b{font-size:10px}
  .pump-deck[data-pump-count="2"] .pump-metrics em,.pump-deck[data-pump-count="2"] .pump-metric-value,.pump-deck[data-pump-count="3"] .pump-metrics em,.pump-deck[data-pump-count="3"] .pump-metric-value,.pump-deck[data-pump-count="4"] .pump-metrics em,.pump-deck[data-pump-count="4"] .pump-metric-value{font-size:15px}
  .pump-deck[data-pump-count="2"] .pump-metrics small,.pump-deck[data-pump-count="3"] .pump-metrics small,.pump-deck[data-pump-count="4"] .pump-metrics small{font-size:9px}
  .rail-head a{font-size:12px}.alarm-total span{font-size:12px}.alarm-item span,.alarm-item small{font-size:11px}.alarm-item strong{font-size:15px}.rail-footer{font-size:11px}
  .sheet-dialog.compact.pump-detail-dialog{width:min(640px,calc(100% - 40px));max-width:640px}
  .pump-detail-context strong{font-size:12px}.pump-detail-context span{font-size:10px}
  .pump-detail-metrics span{font-size:11px}.pump-detail-metrics strong{font-size:24px}.pump-detail-metrics small{font-size:11px}.pump-detail-metrics>div>time{font-size:9px}
  .pump-temperature-list>div{font-size:11px}.pump-temperature-list p{font-size:11px}
  .pump-efficiency-panel>header strong{font-size:15px}.pump-efficiency-panel>header small{font-size:11px}
  .efficiency-marker text,.efficiency-axis{font-size:10px}.pump-recommendation p,.pump-recommendation b{font-size:12px}.pump-recommendation small{font-size:10px}.efficiency-checklist li,.efficiency-requirements summary,.efficiency-requirements ul{font-size:11px}
  .passport-review-summary span,.passport-review-note{font-size:10px}.passport-review-row span b,.passport-review-row>strong{font-size:12px}.passport-review-row span small{font-size:10px}
}

/* v16: сервисное исключение сигналов */
.alarm-table{min-width:1020px}.alarm-status.excluded{color:#d5b06f}.severity.muted{border-color:#465a60;color:#82969b}.exclusion-note{color:#c3a66f;font:7px/1.55 var(--mono)}.table-action{min-height:32px;padding:0 9px;border:1px solid #7b6038;background:#2d2418;color:#f0c378;font:7px var(--mono);cursor:pointer;white-space:nowrap}.table-action.restore{border-color:#35635d;background:#102e2d;color:var(--teal)}.table-action:hover,.table-action:focus-visible{filter:brightness(1.16);outline:none}.exclusion-dialog textarea{width:100%;min-height:88px;resize:vertical;border:1px solid #315159;background:#07191e;color:var(--text);padding:10px;font:9px/1.5 var(--mono)}.exclusion-dialog>form>p{margin:14px 17px 2px;color:#8da2a7;font:8px/1.6 var(--mono)}.exclusion-dialog .action-feedback{min-height:18px;color:#ffb274}.exclusion-dialog button:disabled{opacity:.5;cursor:wait}
.alarm-technical{margin-top:7px;color:#728a90;font:7px/1.5 var(--mono)}.alarm-technical summary{display:inline-block;color:#88a2a8;border-bottom:1px dashed #587178;cursor:pointer;list-style:none}.alarm-technical summary::-webkit-details-marker{display:none}.alarm-technical>div{display:grid;gap:3px;margin-top:6px;padding:7px 9px;border-left:2px solid #294950;background:#081b20}.alarm-technical span{display:block}
@media(max-width:699px){.exclusion-dialog textarea{font-size:11px}.exclusion-dialog>form>p{font-size:10px}.table-action{min-height:36px;font-size:9px}}
@media(max-width:699px){.setpoint-grid{grid-template-columns:1fr 1fr}.passport-document{align-items:flex-start;flex-direction:column}.passport-document-actions{width:100%;justify-content:flex-start}.passport-document strong{font-size:13px}.passport-document span,.passport-view-link{font-size:10px}.pump-settings>header{align-items:flex-start;gap:10px}.pump-copy-bar{grid-template-columns:minmax(0,1fr) auto}.pump-copy-bar>div{grid-column:1/-1}.pump-copy-bar strong{font-size:12px}.pump-copy-bar span{font-size:9px}.pump-copy-bar select{min-width:0}.settings-subsection p{font-size:11px}.curve-preview{height:220px}.curve-axis-title{font-size:10px}.curve-points-heading span{font-size:11px}.curve-points-heading small{font-size:8px;text-align:right}.curve-point{grid-template-columns:25px minmax(0,1fr) minmax(0,1fr) 32px;gap:5px}.curve-point-index{font-size:9px}.curve-point label>span:first-child{font-size:9px}.curve-point input{height:42px;padding-left:8px;padding-right:38px;font-size:12px}.curve-point-input em{right:7px;font-size:8px}.curve-point button{width:32px;height:42px;font-size:18px}.add-point{min-height:40px;font-size:10px}}

/* v27: явная карточка насоса и адаптивный инспектор */
.pump-info-button{flex:0 0 22px;width:22px;height:22px;display:grid;place-items:center;padding:0;border:0;background:transparent;color:#5f777d;font:500 16px/1 var(--sans);cursor:pointer;transition:color .18s ease,transform .18s ease,text-shadow .18s ease}
.pump-info-button:hover,.pump-info-button:focus-visible,.pump-unit.details-open .pump-info-button{color:var(--teal);text-shadow:0 0 10px #28d8c777;outline:none}
.pump-info-button:active{transform:scale(.92)}
.pump-unit:focus-visible{outline:1px solid var(--teal);outline-offset:-2px;background:#0b252a99}
.pump-detail-dialog{overflow:auto;overscroll-behavior:contain}

@media(max-width:699px){
  .pump-info-button{flex-basis:18px;width:18px;height:18px;font-size:14px}
  .pump-deck[data-pump-count="3"] .pump-info-button,.pump-deck[data-pump-count="4"] .pump-info-button{flex-basis:15px;width:15px;height:15px;font-size:12px}
  .sheet-dialog.compact.pump-detail-dialog{position:fixed;inset:auto 0 0;margin:0;width:100%;max-width:none;max-height:min(88svh,820px);border-right:0;border-bottom:0;border-left:0;animation:pump-sheet-up .24s cubic-bezier(.2,.75,.25,1) both}
}

@media(min-width:700px){
  .sheet-dialog.compact.pump-detail-dialog{position:fixed;inset:0 0 0 auto;margin:0;width:min(600px,46vw);max-width:600px;height:100svh;max-height:none;border-top:0;border-right:0;border-bottom:0;animation:pump-inspector-in .24s cubic-bezier(.2,.75,.25,1) both}
}

@keyframes pump-sheet-up{from{opacity:0;transform:translateY(28px)}to{opacity:1;transform:none}}
@keyframes pump-inspector-in{from{opacity:0;transform:translateX(34px)}to{opacity:1;transform:none}}
@media(prefers-reduced-motion:reduce){.sheet-dialog.compact.pump-detail-dialog{animation:none}.pump-info-button{transition:none}}

/* v28.1: кнопка подробностей не конкурирует с заголовком карточки */
.pump-unit{position:relative}
.pump-info-button{position:absolute;right:5px;bottom:4px;z-index:2;flex-basis:auto}
.pump-foot{padding-right:22px}
@media(max-width:699px){
  .pump-info-button{right:4px;bottom:3px}
  .pump-deck[data-pump-count="3"] .pump-info-button,.pump-deck[data-pump-count="4"] .pump-info-button{right:2px;bottom:2px}
}

/* v29: проверяемая Q–H характеристика в настройках */
.curve-preview{height:270px;max-width:900px;padding:20px 8px 8px;background:#07191e66;overflow:hidden}
.curve-preview svg{display:block;overflow:visible}
.curve-preview-legend{max-width:900px;min-height:31px;display:flex;align-items:center;gap:14px;flex-wrap:wrap;padding:7px 4px 5px;border-bottom:1px solid var(--line-soft)}
.curve-key{display:inline-flex;align-items:center;gap:6px;color:#7f969c;font:7px var(--mono)}
.curve-key i{width:8px;height:8px;border:1px solid #81979c;background:#07191e}
.curve-key.curve i{width:17px;height:0;border:0;border-top:2px solid var(--teal)}
.curve-key.range i{border:1px solid #28d8c766;background:#28d8c71b}
.curve-key.design i{transform:rotate(45deg);border-color:#e7ae64;background:#e7ae6430}
.curve-key.bep i{border-radius:50%;border-color:var(--violet);background:#8d7cff55}
.curve-key.current i{border-radius:50%;border-color:#eefafa;background:var(--teal);box-shadow:0 0 7px #28d8c777}
.curve-tick{fill:#769096;font:8px var(--mono);pointer-events:none}
.curve-operating-range{fill:#28d8c70d}
.curve-range-edge{stroke:#28d8c74d;stroke-width:1;stroke-dasharray:4 5;vector-effect:non-scaling-stroke}
.curve-characteristic{fill:none;stroke:var(--teal);stroke-width:3;vector-effect:non-scaling-stroke;filter:drop-shadow(0 0 3px #28d8c733)}
.curve-anchor-target{cursor:pointer;outline:none}
.curve-anchor-hit{fill:transparent;stroke:none;pointer-events:all}
.curve-anchor{fill:#07191e;stroke:var(--teal);stroke-width:2;vector-effect:non-scaling-stroke;pointer-events:none;transition:r .15s ease,fill .15s ease,stroke .15s ease}
.curve-anchor-target:hover .curve-anchor,.curve-anchor-target:focus .curve-anchor,.curve-anchor.active{fill:var(--teal);stroke:#e8ffff;outline:none;filter:drop-shadow(0 0 5px #28d8c799)}
.curve-anchor.invalid{stroke:var(--danger);fill:#421e23}
.curve-marker{pointer-events:none}
.curve-marker>*:not(text){fill:#07191e;stroke:#afc0c3;stroke-width:2;vector-effect:non-scaling-stroke}
.curve-marker text{fill:#9cafb3;font:7px var(--mono)}
.curve-marker.design>*:not(text){stroke:#e7ae64;fill:#e7ae6430}
.curve-marker.design text{fill:#e7bd82}
.curve-marker.bep>*:not(text){stroke:var(--violet);fill:#8d7cff55}
.curve-marker.bep text{fill:#b5a9ff}
.curve-marker.current>*:not(text){stroke:#e8ffff;fill:var(--teal);filter:drop-shadow(0 0 5px #28d8c999)}
.curve-marker.current text{fill:#dffefd}
.curve-tooltip{position:absolute;z-index:4;transform:translate(-50%,-100%);padding:6px 8px;border:1px solid #3f636b;background:#07181dee;color:#dce8e9;font:8px var(--mono);white-space:nowrap;pointer-events:none;box-shadow:0 8px 22px #0007}
.curve-tooltip[hidden]{display:none}
.curve-point{transition:background-color .16s ease}
.curve-point.active{background:#0d2a2f66}
.curve-point-error{grid-column:2/4;min-height:11px;color:transparent;font:7px/1.4 var(--mono)}
.curve-point.invalid .curve-point-error{color:#ff8589}
.curve-point.invalid-q [data-q],.curve-point.invalid-both input{border-color:#88464d}

@media(max-width:699px){
  .curve-preview{height:235px;padding:19px 2px 4px}
  .curve-axis-title{font-size:9px}
  .curve-preview-legend{gap:9px;padding-left:2px;padding-right:2px}
  .curve-key{font-size:7.5px}
  .curve-tick{font-size:15px}
  .curve-marker text{font-size:14px}
  .curve-point-error{font-size:8px}
}

/* v31: интерактивная Q–H характеристика и честная рекомендуемая область */
.curve-editor{max-width:none}
.curve-toolbar{display:flex;align-items:center;gap:14px;min-height:48px;padding:7px 2px;border-top:1px solid var(--line-soft);border-bottom:1px solid var(--line-soft)}
.curve-toolbar>label:first-child{display:flex;align-items:center;gap:9px;color:#91a6ab;font:8px var(--mono)}
.curve-frequency-input{position:relative;display:inline-flex}
.curve-frequency-input input{width:88px;height:34px;border:1px solid #315159;background:#07191e;color:#dce8e9;padding:0 31px 0 9px;font:10px var(--mono)}
.curve-frequency-input em{position:absolute;right:9px;top:50%;transform:translateY(-50%);color:#7f969c;font:normal 8px var(--mono);pointer-events:none}
.curve-toolbar>small{margin-left:auto;color:#687f85;font:7px var(--mono)}
.curve-last-run-toggle{display:inline-flex;align-items:center;gap:7px;color:#a9b9bc;font:8px var(--mono);cursor:pointer}
.curve-last-run-toggle[hidden]{display:none}
.curve-last-run-toggle input{position:absolute;opacity:0;pointer-events:none}
.curve-last-run-toggle i{position:relative;width:30px;height:17px;border:1px solid #3a5960;border-radius:12px;background:#0a2025;transition:border-color .15s ease,background .15s ease}
.curve-last-run-toggle i::after{content:"";position:absolute;left:3px;top:3px;width:9px;height:9px;border-radius:50%;background:#789096;transition:transform .15s ease,background .15s ease}
.curve-last-run-toggle input:checked+i{border-color:#e9f5f5;background:#17393d}
.curve-last-run-toggle input:checked+i::after{transform:translateX(13px);background:#fff}
.curve-last-run-toggle input:focus-visible+i{outline:1px solid var(--teal);outline-offset:2px}
.curve-preview{height:330px;max-width:none;padding:15px 0 0;overflow:visible}
.curve-preview-legend{max-width:none;gap:16px;padding:8px 3px 7px}
.curve-key{font-size:9px;line-height:1.4}
.curve-key.last-run i{border-radius:50%;border-color:#fff;background:#fff;box-shadow:0 0 7px #fff7}
.curve-tick{fill:#91a7ac;font-size:10px;font-weight:500}
.curve-operating-range{fill:#28d8c712;pointer-events:none}
.curve-range-hit{fill:transparent;stroke:none;pointer-events:all}
.curve-range-target{cursor:help;outline:none}
.curve-range-target:hover .curve-operating-range,.curve-range-target:focus .curve-operating-range{fill:#28d8c71e}
.curve-anchor{stroke-width:1.5}
.curve-anchor-target:hover .curve-anchor,.curve-anchor-target:focus .curve-anchor,.curve-anchor.active{r:5.2px}
.curve-marker{cursor:pointer;outline:none;pointer-events:auto}
.curve-marker-hit{fill:transparent!important;stroke:none!important;pointer-events:all}
.curve-marker>*:not(text):not(.curve-marker-hit){pointer-events:none;transition:transform .15s ease,fill .15s ease,stroke .15s ease;transform-box:fill-box;transform-origin:center}
.curve-marker:hover>*:not(text):not(.curve-marker-hit),.curve-marker:focus>*:not(text):not(.curve-marker-hit){transform:scale(1.42);fill:var(--teal);stroke:#e8ffff;filter:drop-shadow(0 0 5px #28d8c999)}
.curve-marker text{font-size:10px;pointer-events:none}
.curve-marker.bep-nominal>*:not(text):not(.curve-marker-hit){stroke:var(--violet);fill:#8d7cff55}
.curve-marker.bep-nominal text{fill:#c1b8ff}
.curve-marker.combined>*:not(text):not(.curve-marker-hit){stroke:var(--violet);fill:#8d7cff38}
.curve-marker.combined path{stroke:#e7ae64!important;fill:#e7ae6460!important}
.curve-marker.combined text{fill:#d5ccff}
.curve-marker.last-run>*:not(text):not(.curve-marker-hit){stroke:#fff;fill:#fff;filter:drop-shadow(0 0 5px #fff8)}
.curve-marker.last-run text{fill:#f3fafa}
.curve-tooltip{transform:none;display:grid;gap:4px;width:max-content;max-width:min(310px,calc(100% - 16px));padding:8px 10px;font-size:8px;line-height:1.35;white-space:normal;pointer-events:none}
.curve-tooltip strong{color:#e9f4f4;font:600 9px var(--sans)}
.curve-tooltip span{display:flex;justify-content:space-between;gap:14px;color:#8fa5aa}
.curve-tooltip b{color:#dce8e9;font-weight:500}
.curve-tooltip small{display:block;max-width:280px;padding-top:3px;border-top:1px solid var(--line-soft);color:#89a0a5;font:7px/1.45 var(--mono)}

@media(max-width:699px){
  .curve-toolbar{align-items:flex-start;gap:10px;flex-wrap:wrap;padding:9px 2px}
  .curve-toolbar>label:first-child,.curve-last-run-toggle{font-size:9px}
  .curve-toolbar>small{width:100%;margin-left:0;font-size:8px}
  .curve-preview{height:255px;padding:12px 0 0}
  .curve-preview-legend{gap:8px 11px}
  .curve-key{font-size:9px}
  .curve-tick{font-size:10px}
  .curve-marker text{font-size:10px}
  .curve-tooltip{font-size:10px}
  .curve-tooltip strong{font-size:11px}
  .curve-tooltip small{font-size:9px}
}

/* v33: источники уставок и компактные отметки на индикаторах уровня */
.setpoint-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
.setpoint-grid .field{padding:10px;border:1px solid var(--line-soft);background:#07191e66}
.setpoint-source{min-height:22px;margin-top:7px!important;padding-top:6px;border-top:1px solid var(--line-soft);color:#71878c!important}
.setpoint-source.from-controller{color:#66d8bd!important}
.setpoint-source.waiting{color:#c69b5d!important}
.setpoint-source.unavailable{color:#71878c!important}

.level-gauge{width:44px;pointer-events:auto;cursor:pointer;outline:none}
.level-gauge-left{left:2px}.level-gauge-right{right:2px}
.level-gauge>span{font-size:10px}.level-gauge>strong{font-size:8px}
.level-gauge>.level-gauge-track{position:relative!important;width:13px!important;height:100%!important;min-height:60px!important;border:1px solid #46636a!important;border-radius:7px!important;background:#07171bd9!important;overflow:hidden!important}
.level-gauge>.level-gauge-track>.level-gauge-fill{position:absolute;z-index:1;left:1px;right:1px;bottom:1px;min-height:2px;border-radius:5px;background:#637b82;transition:height .9s cubic-bezier(.2,.8,.2,1)}
.level-gauge.active>.level-gauge-track{border-color:#7468c4!important;box-shadow:0 0 12px #8d7cff26}
.level-gauge.active>.level-gauge-track>.level-gauge-fill{background:var(--violet);box-shadow:0 0 8px #8d7cff88}
.level-setpoint-marks{position:absolute!important;z-index:2;inset:1px!important;width:auto!important;height:auto!important;min-height:0!important;border:0!important;border-radius:5px!important;background:none!important;overflow:hidden!important;pointer-events:none}
.level-setpoint-mark{position:absolute;left:0;right:0;width:auto;height:1.333px;display:flex;transform:translateY(50%);border-radius:2px;overflow:hidden;background:#7b9095;box-shadow:0 0 0 1px #07171b99;transition:height .16s ease,filter .16s ease,box-shadow .16s ease}
.level-setpoint-mark>b{display:block;flex:1;height:100%;min-width:1px}.level-setpoint-mark>b.dry,.level-setpoint-mark>b.overflow{background:var(--danger)}.level-setpoint-mark>b.low,.level-setpoint-mark>b.high{background:var(--ok)}.level-setpoint-mark>b.pump2{background:var(--warning)}
.level-setpoint-mark.grouped{height:2px}.level-setpoint-mark.highlighted{height:2.667px;filter:brightness(1.35);box-shadow:0 0 7px #35d8cb99}
.level-gauge>.level-gauge-popover.level-gauge-popover{position:absolute!important;z-index:12;top:42px;width:230px!important;height:auto!important;min-height:0!important;padding:11px!important;border:1px solid #35575f!important;border-radius:0!important;background:#07191ff5!important;color:#c6d5d7!important;overflow:visible!important;box-shadow:0 14px 34px #0009!important;cursor:default}
.level-gauge-left>.level-gauge-popover{left:calc(100% - 7px)}.level-gauge-right>.level-gauge-popover{right:calc(100% - 7px)}
.level-gauge-popover[hidden]{display:none!important}.level-gauge-popover>strong{display:block;margin-bottom:9px;text-align:left;font:600 12px var(--sans);color:#e1ebec}
.level-gauge-popover>span{display:grid;grid-template-columns:9px minmax(0,1fr) auto;align-items:center;gap:6px;padding:5px 3px;border-top:1px solid #173138;text-align:left;outline:none;transition:background .16s ease,color .16s ease}
.level-gauge-popover>span:hover,.level-gauge-popover>span:focus-visible,.level-gauge-popover>span.highlighted{background:#0e2a30;color:#eaf6f6}
.level-gauge-popover>span>i{width:7px;height:2px;background:#7b9095}.level-gauge-popover>span>i.dry,.level-gauge-popover>span>i.overflow{background:var(--danger)}.level-gauge-popover>span>i.low,.level-gauge-popover>span>i.high{background:var(--ok)}.level-gauge-popover>span>i.pump2{background:var(--warning)}
.level-gauge-popover b{font:500 10px var(--mono);color:#aebfc2}.level-gauge-popover em{font:500 10px var(--mono);font-style:normal;color:#e1ebec}.level-gauge-popover small{grid-column:2/4;color:#718b91;font:8px var(--mono)}
.level-gauge:focus-visible>.level-gauge-track,.level-gauge.popover-open>.level-gauge-track{outline:1px solid var(--teal);outline-offset:3px}
.tank-workspace.has-level-gauges .trend-stage{margin-left:46px;margin-right:46px}.tank-workspace.has-single-level-gauge .trend-stage{margin-right:46px}
.level-gauge-single.warning>.level-gauge-track{border-color:#93682c!important}.level-gauge-single.warning>.level-gauge-track>.level-gauge-fill{background:var(--warning)}
.level-gauge-single.critical>.level-gauge-track{border-color:#91474c!important}.level-gauge-single.critical>.level-gauge-track>.level-gauge-fill{background:var(--danger)}
.level-gauge-single.stale>.level-gauge-track{border-color:#38545b!important}.level-gauge-single.stale>.level-gauge-track>.level-gauge-fill{background:#637b82}
.level-gauge-single>span,.level-gauge-single>strong{justify-self:end;text-align:right}
.efficiency-marker.combined circle{stroke:var(--violet);fill:#8d7cff38}
.efficiency-marker.combined path{stroke:var(--warning);fill:#ffb45d55;stroke-width:2;vector-effect:non-scaling-stroke}
.efficiency-marker.combined text{fill:#d9d0ff}
.pump-engineering-panel{margin:0 16px 18px;border-top:1px solid var(--line)}.engineering-loading{margin:0;padding:24px 4px;color:#789096;font:8px/1.5 var(--mono);text-align:center}.engineering-loading.error{color:var(--danger)}.pump-engineering-panel section{padding:15px 0;border-bottom:1px solid var(--line)}.pump-engineering-panel section>header{display:flex;align-items:flex-start;justify-content:space-between;gap:14px}.pump-engineering-panel h3{margin:4px 0 0;font-size:12px}.pump-engineering-panel header p,.engineering-statistics>header p{margin:5px 0 0;color:#758d92;font:7px/1.45 var(--mono)}.pump-engineering-panel header button,.maintenance-stat button{flex:none;border:1px solid #31565d;background:none;color:var(--teal);padding:7px 9px;font:7px/1.2 var(--mono);cursor:pointer}.pump-engineering-panel header button:disabled{color:#647b80;border-color:#263f45;cursor:default}.engineering-industry>p{margin:11px 0 0;color:#a8bbbe;font-size:9px;line-height:1.5}.engineering-industry-numbers{display:flex;gap:18px;margin-top:12px}.engineering-industry-numbers span{display:grid;gap:3px}.engineering-industry-numbers b{font:500 17px var(--mono);color:#dce8e9}.engineering-industry-numbers small{color:#71878c;font:7px var(--mono)}.engineering-stat-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));margin-top:12px;border-top:1px solid var(--line-soft);border-left:1px solid var(--line-soft)}.engineering-stat-grid>div{min-height:70px;padding:9px;border-right:1px solid var(--line-soft);border-bottom:1px solid var(--line-soft)}.engineering-stat-grid>div>span{display:block;color:#7f969b;font:7px/1.3 var(--mono)}.engineering-stat-grid>div>strong{display:block;margin-top:7px;color:#dce7e8;font:500 15px/1.1 var(--mono)}.engineering-stat-grid strong em{color:#82989d;font-size:7px;font-style:normal}.engineering-stat-grid>div>small{display:block;margin-top:5px;color:#6c858b;font:6.5px/1.35 var(--mono)}.engineering-stat-grid .maintenance-stat{grid-column:1/-1;position:relative;padding-right:105px}.maintenance-stat button{position:absolute;right:9px;top:50%;transform:translateY(-50%)}.engineering-ai>header p{max-width:310px}.engineering-empty{margin:13px 0 0;color:#758c91;font:8px var(--mono)}.engineering-ai-history{margin-top:13px;border-top:1px solid var(--line-soft)}.engineering-ai-report{border-bottom:1px solid var(--line-soft)}.engineering-ai-report summary{display:flex;justify-content:space-between;gap:12px;padding:11px 0;color:#c9d7d9;font:8px var(--mono);cursor:pointer;list-style:none}.engineering-ai-report summary::-webkit-details-marker{display:none}.engineering-ai-report summary:after{content:'+';order:3;color:var(--teal)}.engineering-ai-report[open] summary:after{content:'−'}.engineering-ai-report summary time{color:#71878c}.engineering-ai-report>div{padding:0 0 13px}.engineering-ai-report p{margin:0 0 7px;color:#a8bbbe;font-size:9px;line-height:1.5}.engineering-ai-report>div>small{color:#70878d;font:7px/1.4 var(--mono)}.engineering-ai-report h4{margin:12px 0 6px;font-size:9px}.engineering-ai-report ul{display:grid;gap:5px;margin:0;padding-left:17px;color:#94a9ad;font-size:8px;line-height:1.45}.engineering-ai-report .hypotheses{list-style:none;padding-left:0}.engineering-ai-report .hypotheses li{display:grid;gap:4px;padding-left:9px;border-left:2px solid #485f65}.engineering-ai-report .hypotheses strong{color:#d4e0e1}.engineering-ai-report .hypotheses span,.engineering-ai-report .hypotheses small{color:#879da2;font-weight:400}.dialog-copy{margin:14px 17px 4px;color:#91a6aa;font-size:9px;line-height:1.55}.pump-standards-dialog{overflow:auto}.pump-standards-dialog #pump-standards-content{padding:15px 17px 19px}.standards-lead{margin:0;color:#b1c1c4;font-size:9px;line-height:1.6}.standards-formula{display:grid;gap:5px;margin:14px 0;padding:12px;border-left:3px solid var(--teal);background:#0c292f}.standards-formula b{font:500 13px var(--mono);color:#e2ebec}.standards-formula span{color:#8fa5aa;font:8px var(--mono)}.pump-standards-dialog h3{margin:17px 0 9px;font-size:11px}.standards-inputs,.standards-notes{margin:0;padding:0;list-style:none}.standards-inputs li{display:grid;grid-template-columns:1fr auto;gap:3px 10px;padding:8px 0;border-bottom:1px solid var(--line-soft)}.standards-inputs span{color:#a5b7ba;font-size:9px}.standards-inputs strong{font:500 9px var(--mono)}.standards-inputs small{grid-column:1/-1;color:#6f878c;font:7px var(--mono)}.standards-inputs .missing strong,.standards-inputs .missing small{color:#ad8d5d}.standards-inputs .measured strong{color:var(--ok)}.standards-notes{display:grid;gap:8px}.standards-notes li{padding-left:12px;border-left:2px solid #3b555b;color:#93a7ab;font-size:8px;line-height:1.5}.standards-sources{display:grid;gap:7px;margin-top:17px}.standards-sources a{color:var(--teal);font:8px var(--mono)}.standards-disclaimer{display:block;margin-top:15px;padding-top:10px;border-top:1px solid var(--line);color:#6f858b;font:7px/1.5 var(--mono)}
@media(min-width:700px){.engineering-stat-grid{grid-template-columns:repeat(3,minmax(0,1fr))}.engineering-stat-grid .maintenance-stat{grid-column:1/-1}.pump-standards-dialog{max-width:560px!important}.pump-engineering-panel h3{font-size:15px}.pump-engineering-panel header p{font-size:10px}.pump-engineering-panel header button,.maintenance-stat button{font-size:10px}.engineering-industry>p{font-size:12px}.engineering-stat-grid>div>span{font-size:10px}.engineering-stat-grid>div>strong{font-size:19px}.engineering-stat-grid strong em,.engineering-stat-grid>div>small{font-size:9px}.engineering-ai-report summary{font-size:11px}.engineering-ai-report p{font-size:12px}.engineering-ai-report>div>small,.engineering-ai-report ul{font-size:10px}}
@media(max-width:699px){.pump-engineering-panel{margin-right:13px;margin-left:13px}.pump-engineering-panel section>header{display:grid}.pump-engineering-panel header button{justify-self:start}.pump-engineering-panel h3{font-size:14px}.pump-engineering-panel header p{font-size:9px}.engineering-industry>p{font-size:10px}.engineering-stat-grid>div>span{font-size:8px}.engineering-stat-grid>div>strong{font-size:17px}.engineering-stat-grid strong em,.engineering-stat-grid>div>small{font-size:8px}.engineering-ai-report summary{font-size:9px}.engineering-ai-report p{font-size:10px}.engineering-ai-report>div>small,.engineering-ai-report ul{font-size:9px}.dialog-copy,.standards-lead{font-size:10px}.standards-inputs span,.standards-inputs strong{font-size:10px}.standards-inputs small,.standards-formula span,.standards-notes li,.standards-sources a,.standards-disclaimer{font-size:9px}}
@media(min-width:700px){.pump-standards-dialog{width:min(720px,calc(100vw - 48px));max-width:720px!important}.standards-lead{font-size:12px}.standards-formula{padding:15px}.standards-formula b{font-size:17px}.standards-formula span{font-size:11px}.pump-standards-dialog h3{font-size:14px}.standards-inputs span,.standards-inputs strong{font-size:12px}.standards-inputs small{font-size:10px}.standards-notes li,.standards-sources a{font-size:11px}.standards-disclaimer{font-size:10px}.pump-engineering-panel header p{font-size:11px}.pump-engineering-panel header button,.maintenance-stat button{font-size:11px}.engineering-industry>p{font-size:13px}.engineering-stat-grid>div>span{font-size:11px}.engineering-stat-grid>div>small{font-size:10px}.engineering-ai-report summary{font-size:12px}.engineering-ai-report p{font-size:13px}.engineering-ai-report>div>small,.engineering-ai-report ul{font-size:11px}}

@media(max-width:699px){
  .setpoint-grid{grid-template-columns:1fr}
  .setpoint-source{font-size:8.5px!important}
}
@media(min-width:700px){
  .level-gauge{width:64px}.level-gauge-left{left:4px}.level-gauge-right{right:4px}
  .level-gauge>span{font-size:12px}.level-gauge>strong{font-size:10px}
  .level-gauge>.level-gauge-track{width:15px!important}
  .tank-workspace.has-level-gauges .trend-stage{margin-left:62px;margin-right:62px}.tank-workspace.has-single-level-gauge .trend-stage{margin-right:62px}
  .level-gauge-popover b,.level-gauge-popover em{font-size:11px}.level-gauge-popover small{font-size:8.5px}
}

@media(max-width:699px){
  .map-overview>div:first-child:after{font-size:9px;line-height:1.1;margin-left:6px;align-self:center}
}
.passport-repeat{min-height:36px;height:auto;padding:0 12px;font:8px var(--mono);white-space:nowrap}
@media(max-width:699px){.passport-repeat{font-size:10px}}
@media(min-width:700px){.passport-repeat{font-size:9px}}

/* Сессия 2: произвольный период, экспорт и проверяемые push */
.custom-period{display:grid;grid-template-columns:minmax(180px,1fr) minmax(180px,1fr) auto minmax(140px,1fr);align-items:end;gap:10px;margin:12px 0;padding:12px;border:1px solid var(--line);background:#081b20}.custom-period[hidden]{display:none}.custom-period label span{display:block;margin-bottom:6px;color:var(--muted);font:8px var(--mono)}.custom-period input{width:100%;height:40px;border:1px solid var(--line);background:#06161a;color:var(--text);padding:0 10px;font:10px var(--mono);color-scheme:dark}.custom-period button,.trend-export-bar button,.notification-test-row button{min-height:40px;border:1px solid #35666a;background:#0d292e;color:var(--teal);padding:0 14px;font:9px var(--mono);cursor:pointer}.custom-period button:disabled,.trend-export-bar button:disabled,.notification-test-row button:disabled{opacity:.4;cursor:not-allowed}.custom-period>small{align-self:center;color:var(--danger);font:8px var(--mono)}
.trend-tools-row{display:flex;align-items:flex-end;justify-content:space-between;gap:20px;margin-top:12px}.trend-tools-row>.metric-picker{flex:1;min-width:0}.trend-export-bar{display:flex;align-items:center;justify-content:flex-end;gap:14px;flex:0 0 auto;margin-left:auto}.trend-export-bar>div{display:flex;gap:8px}.trend-export-bar>span{max-width:330px;color:#82999e;font:8px var(--mono);text-align:right}.notification-device-status{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));border-top:1px solid var(--line);border-left:1px solid var(--line)}.notification-device-status>div{min-height:72px;padding:13px;border-right:1px solid var(--line);border-bottom:1px solid var(--line)}.notification-device-status span,.notification-device-status strong{display:block}.notification-device-status span{color:var(--muted);font:8px var(--mono)}.notification-device-status strong{margin-top:8px;font-size:11px;line-height:1.35}.notification-test-row{display:flex;align-items:center;gap:14px;margin-top:13px}.notification-test-row small{max-width:520px;color:var(--muted);font:8px/1.5 var(--mono)}
@media(max-width:699px){.custom-period{grid-template-columns:1fr 1fr}.custom-period button{grid-column:1/-1}.custom-period>small{grid-column:1/-1}.trend-tools-row{align-items:stretch;flex-direction:column;gap:12px}.trend-export-bar{align-items:flex-start;flex-direction:column;margin-left:0}.trend-export-bar>span{order:2;text-align:left}.notification-device-status{grid-template-columns:1fr}.notification-device-status>div{min-height:58px}.notification-test-row{align-items:flex-start;flex-direction:column}.notification-test-row small{font-size:9px}}

/* Основной ПК диспетчера: 1920x1080 при масштабе браузера 100% */
@media(min-width:1600px) and (min-height:850px){
  .app-header{padding-left:32px;padding-right:32px}.brand strong{font-size:19px}.brand small{font-size:11px}.station-switcher strong{font-size:14px}.primary-nav a{font-size:13px}.connection strong{font-size:14px}.connection small{font-size:11px}
  body:not(.dashboard-page):not(.map-page){font-size:18px}.page-shell{max-width:1720px;padding:42px}.page-title h1,.settings-intro h1{font-size:40px}.page-title p,.settings-section header p,.notification-panel header p{font-size:15px}.kicker{font-size:11px}
  .analysis-panel{padding:24px}.range-tabs button,.status-tabs button,.metric-picker label,.archive-sync-line,.archive-tag-tools select,.archive-tag-tools button{font-size:13px;padding:10px 13px}.analysis-chart{height:610px}.archive-meta,.trend-export-bar>span{font-size:11px}.axis-text,.axis-unit{font-size:14px}.cursor-value text,.cursor-time text{font-size:12px}
  .custom-period label span,.custom-period>small{font-size:11px}.custom-period input{font-size:13px}.custom-period button,.trend-export-bar button,.notification-test-row button{font-size:12px}
  .notification-shell{max-width:1400px}.notification-panel h2{font-size:27px}.notification-panel .notification-switches b{font-size:17px}.notification-panel .notification-switches small,.notification-hint,.level-watch-row,.notification-test-row small{font-size:13px}.notification-device-status span{font-size:12px}.notification-device-status strong{font-size:15px}
  .system-strip,.system-strip button{font-size:14px}.daily-flow-group>span,.level-display>span{font-size:13px}.flow-display b{font-size:12px}.flow-display strong{font-size:30px}.flow-display em{font-size:11px}.level-display strong{font-size:48px}.level-display em{font-size:13px}.trend-legend button,.analog-open{font-size:13px}.trend-freshness,.chart-message{font-size:12px}.level-gauge>span{font-size:13px}.level-gauge>strong{font-size:11px}
  .pump-heading strong,.pump-deck[data-pump-count="2"] .pump-heading strong,.pump-deck[data-pump-count="3"] .pump-heading strong,.pump-deck[data-pump-count="4"] .pump-heading strong{font-size:16px}.pump-reading-time{font-size:11px}.pump-deck[data-pump-count="2"] .pump-metrics>span>b,.pump-deck[data-pump-count="3"] .pump-metrics>span>b,.pump-deck[data-pump-count="4"] .pump-metrics>span>b{font-size:11px}.pump-deck[data-pump-count="2"] .pump-metrics em,.pump-deck[data-pump-count="2"] .pump-metric-value,.pump-deck[data-pump-count="3"] .pump-metrics em,.pump-deck[data-pump-count="3"] .pump-metric-value,.pump-deck[data-pump-count="4"] .pump-metrics em,.pump-deck[data-pump-count="4"] .pump-metric-value{font-size:17px}.pump-deck[data-pump-count="2"] .pump-metrics small,.pump-deck[data-pump-count="3"] .pump-metrics small,.pump-deck[data-pump-count="4"] .pump-metrics small{font-size:10px}
  .rail-head h2{font-size:25px}.rail-head a,.alarm-total span{font-size:13px}.alarm-item strong{font-size:17px}.alarm-item span,.alarm-item small,.rail-footer{font-size:12px}
}

/* Сессия 3: каталог привязок и проверяемый ИИ-черновик */
.tag-binding-head{display:flex;align-items:flex-start;justify-content:space-between;gap:18px}.tag-ai-open{flex:0 0 auto;color:var(--teal);border-color:#33706c}.tag-binding-overview{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));border:1px solid var(--line);background:#07191e}.tag-binding-overview>div{padding:14px;border-right:1px solid var(--line)}.tag-binding-overview>div:nth-child(3){border-right:0}.tag-binding-overview strong,.tag-binding-overview span{display:block}.tag-binding-overview strong{font:500 21px var(--mono);color:#dce9e9}.tag-binding-overview span{margin-top:4px;color:#7f959b;font:8px var(--mono)}.tag-binding-overview .warning strong{color:var(--warning)}.tag-binding-overview .danger strong{color:var(--danger)}.tag-binding-overview>p{grid-column:1/-1;display:flex;align-items:center;gap:8px;margin:0;padding:10px 14px;border-top:1px solid var(--line);color:#91a6aa;font:8px var(--mono)}.tag-binding-overview>p i{width:7px;height:7px;border-radius:50%;background:currentColor}.tag-binding-overview>p.ready{color:var(--ok)}.tag-binding-overview>p.danger{color:var(--danger)}
.tag-binding-toolbar{display:grid;grid-template-columns:minmax(260px,1fr) minmax(170px,.35fr) minmax(180px,.35fr);gap:9px;margin:13px 0}.tag-binding-toolbar label>span{display:block;margin-bottom:5px;color:#758c91;font:7px var(--mono)}.tag-binding-toolbar input,.tag-binding-toolbar select,.tag-picker-toolbar input{width:100%;height:40px;border:1px solid var(--line);background:#07191e;color:var(--text);padding:0 11px;font:9px var(--mono)}
.tag-binding-groups{display:grid;gap:7px}.tag-binding-group{border:1px solid var(--line-soft);background:#07191e}.tag-binding-group>summary{display:flex;align-items:center;justify-content:space-between;gap:14px;min-height:56px;padding:10px 13px;cursor:pointer;list-style:none}.tag-binding-group>summary::-webkit-details-marker{display:none}.tag-binding-group>summary span{min-width:0}.tag-binding-group>summary strong,.tag-binding-group>summary small{display:block}.tag-binding-group>summary strong{font-size:12px}.tag-binding-group>summary small{margin-top:3px;color:#6f858a;font:7px var(--mono)}.tag-binding-group>summary em{flex:0 0 auto;color:#8ea3a8;font:normal 9px var(--mono)}.tag-binding-group[open]>summary{border-bottom:1px solid var(--line);background:#0b2227}.tag-binding-rows{padding:0 13px}.tag-binding-row{display:grid;grid-template-columns:minmax(180px,.55fr) minmax(260px,1fr);align-items:center;gap:14px;padding:10px 0;border-bottom:1px solid var(--line-soft)}.tag-binding-row:last-child{border-bottom:0}.tag-binding-label strong,.tag-binding-label span{display:block}.tag-binding-label strong{font-size:10px}.tag-binding-label span{margin-top:3px;color:#647b81;font:7px var(--mono)}.tag-binding-row>button{min-width:0;min-height:45px;padding:7px 38px 7px 10px;border:1px solid #304e55;background:#06171c;color:var(--text);text-align:left;cursor:pointer;position:relative}.tag-binding-row>button:after{content:'⌄';position:absolute;right:13px;top:12px;color:var(--teal);font-size:17px}.tag-binding-row>button span,.tag-binding-row>button small{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.tag-binding-row>button span{font:500 9px var(--mono)}.tag-binding-row>button small{margin-top:3px;color:#6e878d;font:7px var(--mono)}.tag-binding-row.empty>button span{color:#758b90}.tag-binding-row.warning>button{border-color:#7c6138}.tag-binding-row.error>button{border-color:#804047}.tag-binding-row>ul{grid-column:2;margin:-7px 0 1px;padding:0;list-style:none;color:#d0a762;font:7px/1.45 var(--mono)}.tag-binding-row.error>ul{color:#ff8f94}
.tag-binding-validation{margin-top:12px;padding:11px 13px;border-left:2px solid #41646a;background:#091d22}.tag-binding-validation strong{font-size:10px}.tag-binding-validation p{margin:4px 0 0;color:#81989d;font:8px/1.5 var(--mono)}.tag-binding-history{margin-top:13px;border-top:1px solid var(--line)}.tag-binding-history>summary{padding:13px 0;color:#91a6aa;font:9px var(--mono);cursor:pointer}.tag-binding-history article{padding:10px 0;border-top:1px solid var(--line-soft)}.tag-binding-history article>div{display:flex;justify-content:space-between;gap:12px}.tag-binding-history article strong{font-size:10px}.tag-binding-history time,.tag-binding-history article p{color:#748b90;font:7px var(--mono)}.tag-binding-history article p{margin:4px 0}.tag-binding-history ul{display:grid;gap:4px;margin:8px 0 0;padding:0;list-style:none}.tag-binding-history li{display:grid;grid-template-columns:minmax(180px,.5fr) 1fr;gap:10px;color:#8da2a7;font:7px var(--mono)}.tag-binding-history li b{color:#b5c5c8}
.tag-picker-dialog,.tag-ai-dialog{width:min(760px,calc(100% - 26px));max-height:88svh}.tag-picker-toolbar{display:grid;grid-template-columns:1fr auto;gap:8px;padding:12px 14px}.tag-picker-toolbar .secondary-button{height:40px}.tag-picker-hint{margin:0;padding:0 14px 10px;color:#72898e;font:8px var(--mono)}.tag-picker-list{display:grid;gap:4px;max-height:62svh;overflow:auto;padding:0 14px 16px}.tag-picker-list>button{display:grid;grid-template-columns:10px 1fr;align-items:start;gap:9px;padding:10px;border:1px solid var(--line-soft);background:#07191e;color:var(--text);text-align:left;cursor:pointer}.tag-picker-list>button>i{width:8px;height:8px;margin-top:4px;border:1px solid #536e74;border-radius:50%}.tag-picker-list>button span>*{display:block}.tag-picker-list>button strong{font-size:10px}.tag-picker-list>button small{margin-top:3px;color:#748c91;font:8px var(--mono)}.tag-picker-list>button em{margin-top:4px;color:#c69b5d;font:normal 7px/1.45 var(--mono)}.tag-picker-list>button.selected{border-color:var(--teal);background:#0d292d}.tag-picker-list>button.selected>i{border-color:var(--teal);background:var(--teal)}.tag-picker-list>button.warning{border-color:#705b38}.tag-picker-list>button.blocked{opacity:.38;cursor:not-allowed}
.tag-ai-intro>p{margin:14px 17px;color:#91a6aa;font:9px/1.65 var(--mono)}.tag-review-existing{display:flex;align-items:center;gap:9px;margin:9px 17px 13px;color:#a4b5b8;font:9px var(--mono)}.tag-review-existing input{width:18px;height:18px;accent-color:var(--teal)}.tag-ai-results{padding:14px}.tag-ai-summary{display:flex;justify-content:space-between;gap:10px;margin-bottom:10px}.tag-ai-summary strong,.tag-ai-summary span{display:block}.tag-ai-summary strong{font-size:12px}.tag-ai-summary span{color:#789096;font:8px var(--mono)}.tag-ai-list{display:grid;gap:5px;max-height:55svh;overflow:auto}.tag-ai-item{display:grid;grid-template-columns:20px minmax(0,1fr) auto;align-items:start;gap:9px;padding:10px;border:1px solid var(--line-soft);background:#07191e}.tag-ai-item input{width:17px;height:17px;accent-color:var(--teal)}.tag-ai-item span>*{display:block}.tag-ai-item strong{font-size:10px}.tag-ai-item b{margin-top:4px;color:var(--teal);font:500 8px var(--mono)}.tag-ai-item small{margin-top:5px;color:#91a6aa;font:8px/1.45 var(--mono)}.tag-ai-item em{margin-top:4px;color:#d1a35d;font:normal 7px/1.45 var(--mono)}.tag-ai-item>i{font:normal 7px var(--mono);color:#748b90}.tag-ai-item.high>i{color:var(--ok)}.tag-ai-item.medium>i{color:var(--warning)}.tag-ai-note{margin:12px 0 0;color:#71898e;font:8px/1.5 var(--mono)}
@media(max-width:699px){.tag-binding-head{display:block}.tag-ai-open{width:100%;height:42px;margin-top:12px;font-size:10px}.tag-binding-overview{grid-template-columns:1fr 1fr}.tag-binding-overview>div{padding:11px}.tag-binding-overview>div:nth-child(2){border-right:0}.tag-binding-overview>div:nth-child(3){grid-column:1/-1;border-top:1px solid var(--line)}.tag-binding-overview strong{font-size:19px}.tag-binding-overview span,.tag-binding-overview>p{font-size:9px}.tag-binding-toolbar{grid-template-columns:1fr 1fr}.tag-binding-toolbar label:first-child{grid-column:1/-1}.tag-binding-toolbar label>span{font-size:9px}.tag-binding-toolbar input,.tag-binding-toolbar select{font-size:10px}.tag-binding-group>summary{min-height:62px}.tag-binding-group>summary strong{font-size:13px}.tag-binding-group>summary small{font-size:9px}.tag-binding-group>summary em{font-size:10px}.tag-binding-rows{padding:0 10px}.tag-binding-row{grid-template-columns:1fr;gap:7px;padding:12px 0}.tag-binding-label strong{font-size:12px}.tag-binding-label span{font-size:9px}.tag-binding-row>button{min-height:50px}.tag-binding-row>button span{font-size:11px}.tag-binding-row>button small,.tag-binding-row>ul{font-size:9px}.tag-binding-row>ul{grid-column:1;margin:0}.tag-binding-history li{grid-template-columns:1fr}.tag-picker-dialog,.tag-ai-dialog{position:fixed;inset:auto 0 0;margin:0;width:100%;max-width:none;max-height:90svh;border-right:0;border-bottom:0;border-left:0}.tag-picker-list>button strong,.tag-ai-item strong{font-size:12px}.tag-picker-list>button small,.tag-ai-item b,.tag-ai-item small{font-size:9px}.tag-ai-summary{display:block}.tag-ai-summary span{margin-top:4px;font-size:9px}.tag-ai-item{grid-template-columns:20px minmax(0,1fr)}.tag-ai-item>i{grid-column:2;font-size:8px}.tag-ai-results .dialog-actions{margin-left:0;margin-right:0}}
@media(min-width:700px){.tag-picker-dialog,.tag-ai-dialog{position:fixed;inset:0 0 0 auto;margin:0;width:min(760px,52vw);height:100svh;max-height:none;border-top:0;border-right:0;border-bottom:0}}
@media(min-width:1600px) and (min-height:850px){.tag-binding-section{font-size:16px}.tag-binding-group>summary strong{font-size:15px}.tag-binding-group>summary small,.tag-binding-label span,.tag-binding-row>button small,.tag-binding-row>ul,.tag-binding-history time,.tag-binding-history article p,.tag-binding-history li{font-size:10px}.tag-binding-label strong,.tag-binding-row>button span{font-size:13px}.tag-binding-overview span,.tag-binding-overview>p,.tag-binding-toolbar label>span,.tag-binding-validation p{font-size:11px}.tag-binding-overview strong{font-size:28px}.tag-binding-toolbar input,.tag-binding-toolbar select{font-size:12px}}

/* v47: единая читаемая мобильная типографика */
@media(max-width:699px){
  .primary-nav a{font-size:11px}
  .station-switcher strong,.dashboard-page .station-switcher strong{font-size:12px}
  .dashboard-page .station-switcher small{font-size:8px}
  .alarm-toggle,.dashboard-page .alarm-toggle span{font-size:10px}
  .system-strip,.system-strip button{font-size:11px}

  .kicker{font-size:10px}
  .daily-flow-group>span,.level-display>span,.flow-display span{font-size:10px}
  .flow-display b{font-size:9px}.flow-display em,.level-display em{font-size:9px}
  .tank-workspace .daily-flow-group .flow-display em{font-size:9px}
  .pump-filter button,.trend-legend button,.analog-open{font-size:10.5px}
  .axis-text,.axis-unit{font-size:11px}.trend-freshness,.chart-message{font-size:10.5px}
  .level-gauge>span{font-size:11px}.level-gauge>strong{font-size:10px}
  .level-gauge-popover b,.level-gauge-popover em{font-size:11px}.level-gauge-popover small{font-size:10px}

  .pump-heading strong,.pump-deck[data-pump-count="2"] .pump-heading strong,.pump-deck[data-pump-count="3"] .pump-heading strong,.pump-deck[data-pump-count="4"] .pump-heading strong{font-size:12px}
  .pump-reading-time{font-size:9px}
  .pump-deck[data-pump-count="2"] .pump-metrics>span>b,.pump-deck[data-pump-count="3"] .pump-metrics>span>b,.pump-deck[data-pump-count="4"] .pump-metrics>span>b{font-size:9px}
  .pump-deck[data-pump-count="2"] .pump-metrics em,.pump-deck[data-pump-count="2"] .pump-metric-value,.pump-deck[data-pump-count="3"] .pump-metrics em,.pump-deck[data-pump-count="3"] .pump-metric-value,.pump-deck[data-pump-count="4"] .pump-metrics em,.pump-deck[data-pump-count="4"] .pump-metric-value{font-size:13px}
  .pump-deck[data-pump-count="2"] .pump-metrics small{font-size:9.5px}
  .pump-deck[data-pump-count="3"] .pump-metrics small,.pump-deck[data-pump-count="4"] .pump-metrics small{font-size:8.5px}
  .pump-foot,.pump-deck[data-pump-count="3"] .pump-foot,.pump-deck[data-pump-count="4"] .pump-foot{font-size:8px}

  .sheet-dialog>p,.dialog-copy{font-size:12px}.sheet-head h2{font-size:19px}
  .analog-picker button,.primary-button,.secondary-button,.caution-button,.danger-button{font-size:11px}
  .field>span{font-size:12px}.field small,.pin-save-feedback{font-size:10.5px}.toast{font-size:12px}
  .alarm-explainer>p{font-size:12px}.alarm-explainer section b{font-size:11px}.alarm-explainer section span{font-size:11px}.alarm-explainer .watch-note{font-size:10px}

  .pump-detail-context strong{font-size:13px}.pump-detail-context span{font-size:11px}
  .pump-detail-metrics span{font-size:11px}.pump-detail-metrics strong{font-size:22px}.pump-detail-metrics small{font-size:10px}.pump-detail-metrics>div>time{font-size:10px}
  .pump-temperature-list>div,.pump-temperature-list p{font-size:12px}
  .pump-efficiency-panel>header strong{font-size:15px}.pump-efficiency-panel>header small{font-size:11px}
  .efficiency-marker text,.efficiency-axis{font-size:10px}
  .pump-recommendation p,.pump-recommendation b{font-size:12px}.pump-recommendation small{font-size:10.5px}
  .efficiency-checklist li,.efficiency-requirements summary,.efficiency-requirements ul{font-size:11px}
  .pump-engineering-panel h3{font-size:15px}.pump-engineering-panel header p,.engineering-statistics>header p{font-size:11px}
  .pump-engineering-panel header button,.maintenance-stat button{font-size:10.5px}
  .engineering-industry>p{font-size:12px}.engineering-industry-numbers small{font-size:10px}
  .engineering-stat-grid>div>span{font-size:10.5px}.engineering-stat-grid>div>strong{font-size:18px}
  .engineering-stat-grid strong em,.engineering-stat-grid>div>small{font-size:10px}
  .engineering-empty{font-size:11px}.engineering-ai-report summary{font-size:11px}.engineering-ai-report p{font-size:12px}
  .engineering-ai-report>div>small,.engineering-ai-report ul{font-size:10.5px}.engineering-ai-report h4{font-size:12px}
  .standards-lead{font-size:12px}.standards-formula span{font-size:10.5px}.pump-standards-dialog h3{font-size:14px}
  .standards-inputs span,.standards-inputs strong{font-size:11px}.standards-inputs small,.standards-notes li,.standards-sources a,.standards-disclaimer{font-size:10px}

  .page-title p,.settings-section header p,.settings-subsection p,.notification-panel header p{font-size:12px}
  .range-tabs button,.status-tabs button,.metric-picker label,.settings-nav a,.tag-row>span,.file-button,.passport-status,.add-point,.archive-sync-line,.archive-tag-tools select,.archive-tag-tools button{font-size:11px}
  .archive-sync-line>span{font-size:10px}.archive-tag-tools label span{font-size:10px}.archive-meta,.trend-export-bar>span{font-size:10px}
  .custom-period label span,.custom-period>small{font-size:10px}.custom-period input{font-size:13px}.custom-period button,.trend-export-bar button,.notification-test-row button{font-size:11px}
  .alarm-table td{font-size:12px}.alarm-table td.mono,.alarm-table th,.severity{font-size:10.5px}
  .alarm-technical,.exclusion-note{font-size:9.5px}.table-action{font-size:10px}
  .empty-state,.empty-copy{font-size:12px}

  .notification-switches small,.notification-panel .notification-switches small,.notification-hint,.level-watch-row{font-size:11.5px}
  .notification-device-status span{font-size:11px}.notification-device-status strong{font-size:13px}.notification-test-row small{font-size:11px}

  .settings-nav a{font-size:11px}.settings-section .field>span{font-size:12px}.settings-section .field small,.setpoint-source{font-size:10.5px!important}
  .location-actions>a,.location-actions>span{font-size:10.5px}
  .controller-summary small,.controller-feedback,.controller-maintenance span{font-size:10.5px}
  .pump-copy-bar span,.passport-document span,.passport-view-link,.passport-range-note{font-size:10.5px}
  .pump-settings em{font-size:10px}
  .curve-toolbar>label:first-child,.curve-last-run-toggle,.curve-toolbar>small{font-size:10px}
  .curve-key{font-size:10px}.curve-points-heading small,.curve-point-index,.curve-point label>span:first-child,.curve-point-input em,.curve-point-error{font-size:10px}

  .tag-binding-overview span,.tag-binding-overview>p,.tag-binding-toolbar label>span{font-size:10.5px}
  .tag-binding-toolbar input,.tag-binding-toolbar select{font-size:12px}
  .tag-binding-group>summary small,.tag-binding-label span,.tag-binding-row>button small,.tag-binding-row>ul{font-size:10.5px}
  .tag-binding-group>summary em,.tag-binding-history>summary{font-size:11px}.tag-binding-row>button span{font-size:12px}
  .tag-binding-validation p,.tag-binding-history time,.tag-binding-history article p,.tag-binding-history li{font-size:10px}
  .tag-picker-hint,.tag-picker-list>button small,.tag-picker-list>button em,.tag-ai-summary span,.tag-ai-item b,.tag-ai-item small,.tag-ai-item em,.tag-ai-item>i,.tag-ai-note{font-size:10.5px}
  .tag-ai-intro>p,.tag-review-existing{font-size:11px}

  .map-page-title strong{font-size:16px}.map-page-title small{font-size:11px}
  .map-header .map-connection strong{font-size:10.5px}
  .map-overview-total small,.map-state-counts small,.map-overview>div:first-child:after{font-size:10px}
  .map-station-select{font-size:11px}.station-marker>b{font-size:10px}
  .unmapped-toggle,.unmapped-list a{font-size:11px}.unmapped-list small{font-size:10px}
  .map-detail-metrics span{font-size:10.5px}.map-detail-metrics small,.map-detail-events span,.map-detail>p{font-size:11px}

  .rail-head a{font-size:11px}.alarm-total span{font-size:11px}.alarm-item span,.alarm-item small{font-size:10.5px}.alarm-item strong{font-size:14px}.rail-footer{font-size:10.5px}
}

/* Финальная ревизия: читаемые настройки на основном ПК 1920x1080 при масштабе 100% */
@media(min-width:1600px) and (min-height:850px){
  .settings-shell{max-width:1640px}
  .settings-nav a{font-size:12px}
  .settings-section h2{font-size:22px}.settings-section header p,.settings-subsection p{font-size:13px}
  .settings-section .field>span,.settings-section .tag-row>span{font-size:12px}
  .settings-section .field input,.settings-section .field select,.pump-copy-bar select{font-size:13px}
  .settings-section .field small,.setpoint-source{font-size:11px!important}
  .save-config,.secondary-button,.file-button,.passport-repeat,.danger-button,.caution-button.solid,.tag-ai-open,.add-point{font-size:12px}
  .location-actions a,.location-actions>span{font-size:11px}
  .controller-summary strong{font-size:15px}.controller-summary small,.controller-feedback{font-size:11px}
  .controller-maintenance strong{font-size:14px}.controller-maintenance span{font-size:11px}
  .pump-settings h3{font-size:17px}.pump-settings>header p{font-size:12px}
  .pump-copy-bar strong,.passport-document strong{font-size:14px}
  .pump-copy-bar span,.passport-document span,.passport-status,.passport-view-link,.passport-range-note{font-size:11px}
  .pump-settings em{font-size:11px}
  .curve-axis-title{font-size:12px}.curve-points-heading span{font-size:14px}.curve-points-heading small{font-size:11px}
  .curve-point-index,.curve-point label>span:first-child,.curve-point-input em{font-size:11px}.curve-point input{font-size:13px}
  .tag-binding-group>summary em{font-size:12px}.tag-binding-history>summary{font-size:11px}
  .tag-binding-validation strong,.tag-binding-history article strong{font-size:13px}
  .tag-picker-hint{font-size:11px}.tag-picker-list>button strong{font-size:13px}.tag-picker-list>button small,.tag-picker-list>button em{font-size:11px}
  .tag-ai-intro>p,.tag-review-existing{font-size:12px}.tag-ai-summary strong{font-size:14px}
  .tag-ai-summary span,.tag-ai-item b,.tag-ai-item small,.tag-ai-item em,.tag-ai-item>i,.tag-ai-note{font-size:11px}
}

/* v48: читаемая ПК-типографика для 1920x1080 при масштабе браузера 100% */
@media(min-width:1600px) and (min-height:850px){
  .brand small,.connection small,.dashboard-page .connection small{font-size:12px}
  .connection strong,.dashboard-page .connection strong{font-size:13px!important}
  .station-switcher small,.alarm-toggle,.alarm-toggle span{font-size:12px}
  .kicker{font-size:12px}

  .system-strip,.system-strip button{font-size:14px}
  .daily-flow-group>span,.level-display>span,.flow-display span{font-size:13px}
  .flow-display b,.flow-display em,.level-display em{font-size:12px}
  .axis-text.time-axis,.axis-text.value-axis,.axis-unit{font-size:12px}
  .cursor-value text,.cursor-time text{font-size:12px}
  .trend-legend button,.analog-open,.trend-freshness,.chart-message{font-size:13px}
  .level-gauge>span,.level-gauge>strong{font-size:12px}
  .level-gauge-popover b,.level-gauge-popover em,.level-gauge-popover small{font-size:12px}
  .pump-reading-time,.pump-status{font-size:12px}
  .pump-deck[data-pump-count="2"] .pump-metrics>span>b,.pump-deck[data-pump-count="3"] .pump-metrics>span>b,.pump-deck[data-pump-count="4"] .pump-metrics>span>b{font-size:12px}
  .pump-deck[data-pump-count="2"] .pump-metrics small,.pump-deck[data-pump-count="3"] .pump-metrics small,.pump-deck[data-pump-count="4"] .pump-metrics small{font-size:12px}
  .pump-foot,.pump-deck[data-pump-count="3"] .pump-foot,.pump-deck[data-pump-count="4"] .pump-foot{font-size:12px}
  .rail-head a,.alarm-total span,.alarm-item span,.alarm-item small,.rail-footer{font-size:12px}

  .page-title p,.settings-section header p,.settings-subsection p,.notification-panel header p{font-size:15px}
  .range-tabs button,.status-tabs button,.pump-filter button,.metric-picker label,.archive-sync-line,.archive-tag-tools select,.archive-tag-tools button{font-size:13px}
  .archive-sync-line>span,.archive-tag-tools label span,.archive-meta,.trend-export-bar>span,.custom-period label span,.custom-period>small{font-size:12px}
  .custom-period input{font-size:14px}.custom-period button,.trend-export-bar button{font-size:13px}
  .alarm-table th,.alarm-table td.mono,.severity,.table-action{font-size:12px}
  .alarm-table td{font-size:14px}.alarm-technical,.exclusion-note{font-size:12px}
  .empty-state,.empty-copy{font-size:13px}

  .notification-switches b,.notification-panel .notification-switches b{font-size:17px}
  .notification-switches small,.notification-panel .notification-switches small,.notification-hint,.level-watch-row{font-size:13px}
  .notification-device-status span{font-size:12px}.notification-device-status strong{font-size:15px}
  .notification-test-row small,.notification-test-row button{font-size:13px}

  .settings-nav a{font-size:13px}
  .settings-section .field>span,.settings-section .tag-row>span{font-size:13px}
  .settings-section .field input,.settings-section .field select,.pump-copy-bar select{font-size:14px}
  .settings-section .field small,.setpoint-source,.location-actions a,.location-actions>span{font-size:12px!important}
  .controller-summary small,.controller-feedback,.controller-maintenance span{font-size:12px}
  .pump-settings>header p,.pump-copy-bar span,.passport-document span,.passport-status,.passport-view-link,.passport-range-note,.passport-repeat{font-size:12px}
  .passport-point>strong{font-size:13px}
  .curve-toolbar>label:first-child,.curve-last-run-toggle,.curve-toolbar>small,.curve-key{font-size:12px}
  .curve-axis-title,.curve-tick,.curve-marker text,.curve-points-heading small,.curve-point-index,.curve-point label>span:first-child,.curve-point-input em,.curve-frequency-input em,.curve-point-error{font-size:12px}
  .curve-point input{font-size:14px}.add-point{font-size:13px}

  .tag-binding-overview span,.tag-binding-overview>p,.tag-binding-toolbar label>span,.tag-binding-validation p{font-size:12px}
  .tag-binding-toolbar input,.tag-binding-toolbar select{font-size:14px}
  .tag-binding-group>summary small,.tag-binding-group>summary em,.tag-binding-label span,.tag-binding-row>button small,.tag-binding-row>ul{font-size:12px}
  .tag-binding-label strong,.tag-binding-row>button span{font-size:13px}
  .tag-binding-history>summary,.tag-binding-history time,.tag-binding-history article p,.tag-binding-history li{font-size:12px}
  .tag-picker-hint,.tag-picker-list>button small,.tag-picker-list>button em,.tag-ai-summary span,.tag-ai-item b,.tag-ai-item small,.tag-ai-item em,.tag-ai-item>i,.tag-ai-note{font-size:12px}
  .tag-picker-list>button strong,.tag-ai-item strong{font-size:13px}.tag-ai-intro>p,.tag-review-existing{font-size:13px}

  .sheet-dialog>p,.dialog-copy{font-size:14px}.sheet-head h2{font-size:22px}
  .analog-picker button,.primary-button,.secondary-button,.caution-button,.danger-button{font-size:13px}
  .field>span{font-size:13px}.field small,.pin-save-feedback{font-size:12px}.toast{font-size:13px}
  .alarm-explainer>p{font-size:14px}.alarm-explainer section b,.alarm-explainer section span,.alarm-explainer .watch-note{font-size:12px}

  .pump-detail-context strong{font-size:16px}.pump-detail-context span{font-size:12px}
  .pump-detail-metrics span{font-size:12px}.pump-detail-metrics small,.pump-detail-metrics>div>time{font-size:12px}
  .pump-temperature-list>div,.pump-temperature-list p{font-size:13px}
  .pump-efficiency-panel>header strong{font-size:17px}.pump-efficiency-panel>header small{font-size:12px}
  .efficiency-marker text,.efficiency-axis,.efficiency-tick{font-size:12px}
  .pump-recommendation p,.pump-recommendation b{font-size:14px}.pump-recommendation small{font-size:12px}
  .efficiency-checklist li,.efficiency-requirements summary,.efficiency-requirements ul{font-size:12px}
  .pump-engineering-panel h3{font-size:17px}.pump-engineering-panel header p,.engineering-statistics>header p{font-size:13px}
  .pump-engineering-panel header button,.maintenance-stat button{font-size:12px}
  .engineering-industry>p{font-size:14px}.engineering-industry-numbers small{font-size:12px}
  .engineering-stat-grid>div>span{font-size:12px}.engineering-stat-grid strong em,.engineering-stat-grid>div>small{font-size:12px}
  .engineering-empty,.engineering-ai-report summary{font-size:12px}.engineering-ai-report p{font-size:13px}
  .engineering-ai-report>div>small,.engineering-ai-report ul,.engineering-ai-report h4{font-size:12px}
  .standards-lead{font-size:14px}.standards-formula span,.standards-inputs span,.standards-inputs strong{font-size:12px}
  .standards-inputs small,.standards-notes li,.standards-sources a,.standards-disclaimer{font-size:12px}

  .map-page-title strong{font-size:22px}.map-page-title small,.map-loading span{font-size:12px}
  .map-header .map-connection strong,.map-header .map-connection small{font-size:12px}
  .map-overview-total small,.map-state-counts small,.map-overview>div:first-child:after{font-size:12px}
  .map-state-counts b{font-size:16px}.map-station-select{font-size:12px}
  .station-marker>b{font-size:12px}.unmapped-toggle,.unmapped-toggle b,.unmapped-list a,.unmapped-list small{font-size:12px}
  .map-detail h1{font-size:22px}.map-detail-metrics span,.map-detail-metrics small,.map-detail-events span,.map-detail>p{font-size:12px}
  .map-failure .kicker,.map-failure p,.map-failure button{font-size:12px}
}

/* v49: компактная десятичная запятая в показаниях насосов */
.pump-metrics em,.pump-metric-value{
  font-family:Manrope,sans-serif;
  font-variant-numeric:tabular-nums lining-nums;
  font-feature-settings:"tnum" 1,"lnum" 1;
  letter-spacing:-.01em;
}
/* MQTT is prepared in parallel and can only become active after a valid PLC snapshot. */
.data-source-settings{display:grid;grid-template-columns:minmax(260px,1.2fr) minmax(210px,.7fr) minmax(280px,1fr);gap:18px;align-items:end;padding:20px;border:1px solid #24444b;background:#081c21}
.data-source-settings>div:first-child{align-self:center}.data-source-settings>div:first-child strong{display:block;color:#dce8e9;font-size:14px}.data-source-settings>div:first-child span{display:block;margin-top:7px;color:#81979c;font-size:11px;line-height:1.55}
.mqtt-source-status{grid-column:1/-1;display:flex;align-items:center;gap:10px;padding-top:14px;border-top:1px solid #17343a}.mqtt-source-status>i{width:10px;height:10px;flex:0 0 10px;border-radius:50%;background:#60767b}.mqtt-source-status.ready>i{background:#5dd9ad;box-shadow:0 0 14px #5dd9ad66}.mqtt-source-status.waiting>i{background:#ffb34f}.mqtt-source-status span{display:flex;gap:10px;align-items:baseline}.mqtt-source-status strong{color:#cbdadc;font-size:12px}.mqtt-source-status small{color:#81979c;font-size:11px}
@media(min-width:761px){.data-source-settings{align-items:start}.data-source-settings>.field{margin:0}.data-source-settings>div:first-child{align-self:start}}
@media(max-width:760px){.data-source-settings{grid-template-columns:1fr;padding:16px;gap:14px}.mqtt-source-status{grid-column:auto;align-items:flex-start}.mqtt-source-status span{display:block}.mqtt-source-status small{display:block;margin-top:4px;line-height:1.45}}

/* AA contrast for secondary copy; keep approved typography and layout unchanged. */
.level-gauge,.field small{color:var(--muted)}
@media(min-width:1600px) and (min-height:850px){
  .exclusion-dialog>form>p,.action-dialog form>p,.passport-analyze-gate>p,
  .passport-review-summary span,.passport-review-row span small,.passport-review-note,
  .data-source-settings>div:first-child span{font-size:12px}
}
