:root{--ink:#17352d;--muted:#67756f;--line:#dce4df;--paper:#fff;--bg:#f4f6f2;--green:#176c50;--green-soft:#e5f1ea;--lime:#d8f06a;--danger:#ad403e}*{box-sizing:border-box}button,input{font:inherit}button{cursor:pointer}body{background:var(--bg);color:var(--ink);margin:0}main{min-height:100vh;padding-bottom:72px}.topbar{border-bottom:1px solid var(--line);z-index:10;background:#fff;justify-content:space-between;align-items:center;height:76px;padding:0 clamp(20px,4vw,64px);display:flex;position:sticky;top:0}.brand{align-items:center;gap:12px;display:flex}.brand .mark{background:var(--ink);width:42px;height:42px;color:var(--lime);border-radius:12px;place-items:center;font-weight:800;display:grid}.brand strong,.brand small{display:block}.brand strong{font-size:16px}.brand small{color:var(--muted);margin-top:2px;font-size:12px}.header-actions{align-items:center;gap:10px;display:flex}.save-state{color:var(--muted);padding-right:6px;font-size:12px}.save-state:before{content:"";background:#d19a41;border-radius:50%;width:7px;height:7px;margin-right:7px;display:inline-block}.save-state.ok:before{background:#45a877}.primary,.ghost{border:0;border-radius:10px;padding:11px 16px;font-weight:700}.primary{background:var(--green);color:#fff}.primary:hover{background:#115a42}.ghost{color:var(--ink);background:#eef2ef}.hero{background:var(--ink);color:#fff;justify-content:space-between;align-items:flex-end;gap:32px;padding:48px clamp(20px,6vw,92px) 34px;display:flex}.eyebrow{text-transform:uppercase;letter-spacing:.16em;color:var(--lime);margin:0 0 12px;font-size:12px;font-weight:800}.hero h1{letter-spacing:-.03em;max-width:850px;margin:0;font-family:Georgia,serif;font-size:clamp(30px,4vw,54px);font-weight:500}.hero p:last-child{color:#bdd0c8;max-width:720px;margin:14px 0 0}.hero-kpi{border-left:1px solid #4b685f;min-width:170px;padding-left:26px}.hero-kpi span{color:var(--lime);font:46px/1 Georgia,serif}.hero-kpi small{color:#bdd0c8;margin-top:8px;display:block}.card{background:var(--paper);border:1px solid var(--line);border-radius:18px;padding:26px;box-shadow:0 10px 32px #17352d0a}.study-card,.source-layout{width:min(1400px,100% - 40px);margin:28px auto}.section-heading{justify-content:space-between;align-items:center;gap:16px;margin-bottom:24px;display:flex}.section-heading>div{align-items:center;gap:10px;display:flex}.section-heading h2{margin:0;font:600 24px/1.1 Georgia,serif}.step{letter-spacing:.1em;color:var(--green);background:var(--green-soft);border-radius:8px;padding:7px 8px;font-size:11px;font-weight:900}.hint,.section-note{color:var(--muted);font-size:13px}.form-grid{gap:18px;display:grid}.cols-2{grid-template-columns:1fr 1fr}.cols-3{grid-template-columns:1fr 2fr 1fr}.field{flex-direction:column;gap:8px;min-width:0;display:flex}.field>span{color:#52625c;text-transform:uppercase;letter-spacing:.04em;font-size:12px;font-weight:800}.field em{text-transform:none;color:#87918d;margin-left:6px;font-style:normal;font-weight:500}.field input,.pollutant-row input,.sample-row input{width:100%;height:44px;color:var(--ink);background:#fbfcfb;border:1px solid #ccd7d1;border-radius:10px;outline:none;padding:0 12px}.field input:focus,.pollutant-row input:focus,.sample-row input:focus{border-color:var(--green);box-shadow:0 0 0 3px #176c5016}.field.wide{grid-column:1/-1}.date-time{grid-template-columns:1.4fr 1fr;gap:12px;display:grid}.source-layout{grid-template-columns:250px minmax(0,1fr);align-items:start;gap:22px;display:grid}.source-nav{padding:15px;position:sticky;top:96px}.nav-title{text-transform:uppercase;letter-spacing:.1em;color:var(--muted);justify-content:space-between;align-items:center;padding:7px 8px 14px;font-size:11px;font-weight:900;display:flex}.nav-title button{background:var(--green-soft);color:var(--green);border:0;border-radius:9px;width:30px;height:30px;font-size:18px}.source-tab{text-align:left;width:100%;color:var(--ink);background:0 0;border:0;border-radius:12px;margin-bottom:5px;padding:13px}.source-tab b,.source-tab span{display:block}.source-tab b{font-size:14px}.source-tab span{color:var(--muted);white-space:nowrap;text-overflow:ellipsis;margin-top:4px;font-size:12px;overflow:hidden}.source-tab.active{background:var(--ink);color:#fff}.source-tab.active span{color:#bdd0c8}.add-source{color:var(--green);background:#fafcfa;border:1px dashed #b8c6bf;border-radius:12px;width:100%;margin-top:8px;padding:12px;font-weight:700}.source-main{gap:22px;min-width:0;display:grid}.danger-link,.text-button{background:0 0;border:0;font-size:13px;font-weight:700}.danger-link{color:var(--danger)}.text-button{color:var(--green)}.toggle{height:44px;color:var(--muted);background:#f5f7f5;border:1px solid #ccd7d1;border-radius:10px;align-items:center;gap:10px;padding:0 14px;display:flex}.toggle span{background:#bdc7c2;border-radius:20px;width:34px;height:20px;position:relative}.toggle span:after{content:"";background:#fff;border-radius:50%;width:14px;height:14px;transition:all .2s;position:absolute;top:3px;left:3px}.toggle.on{color:var(--green);background:var(--green-soft);border-color:#b9d5c8}.toggle.on span{background:var(--green)}.toggle.on span:after{left:17px}.subsection{border-top:1px solid var(--line);margin-top:28px;padding-top:22px}.subsection h3{margin:0 0 12px;font-size:13px}.section-picker{gap:10px;display:flex}.section-picker button{color:var(--muted);background:#fff;border:1px solid #ccd7d1;border-radius:12px;align-items:center;gap:9px;padding:11px 14px;display:flex}.section-picker button.selected{border-color:var(--green);background:var(--green-soft);color:var(--green);font-weight:700}.shape{border:2px solid;display:inline-block}.shape.circle{border-radius:50%;width:17px;height:17px}.shape.rectangle{width:22px;height:15px}.measurements{grid-template-columns:repeat(6,1fr);margin-top:18px}.calc-strip{background:var(--line);border:1px solid var(--line);border-radius:14px;grid-template-columns:repeat(5,1fr);gap:1px;margin-top:24px;display:grid;overflow:hidden}.metric{background:#f8faf8;padding:16px}.metric small{color:var(--muted);min-height:28px;font-size:11px;display:block}.metric strong{font:600 24px Georgia,serif}.metric span{color:var(--muted);margin-left:5px;font-size:11px}.metric.accent{background:var(--ink);color:#fff}.metric.accent small,.metric.accent span{color:#bdd0c8}.pollutant-head,.pollutant-row{grid-template-columns:minmax(180px,2fr) minmax(110px,1fr) minmax(120px,1fr) minmax(100px,.8fr) 34px;align-items:center;gap:10px;display:grid}:is(.pollutant-head:has(span:nth-child(6)),.pollutant-row:has(input:nth-child(3))){grid-template-columns:minmax(180px,2fr) minmax(105px,1fr) minmax(105px,1fr) minmax(120px,1fr) minmax(100px,.8fr) 34px}.pollutant-head{text-transform:uppercase;letter-spacing:.05em;color:var(--muted);padding:0 4px 8px;font-size:10px;font-weight:800}.pollutant-row{border-top:1px solid #edf1ee;padding:8px 0}.pollutant-row output,.sample-row output{font-variant-numeric:tabular-nums;background:#f0f5f2;border-radius:10px;align-items:center;height:44px;padding:0 11px;font-weight:700;display:flex}.pollutant-row output{flex-direction:column;justify-content:center;align-items:flex-start}.pollutant-row output small{color:var(--green);font-size:10px;font-weight:700}.remove{color:#9aa5a0;background:0 0;border:0;font-size:22px}.remove:hover{color:var(--danger)}.section-note{margin:-12px 0 18px}.empty-action{color:var(--green);background:#fafcfa;border:1px dashed #b8c6bf;border-radius:12px;width:100%;padding:22px;font-weight:700}.sample-table{overflow-x:auto}.sample-head,.sample-row{grid-template-columns:1.2fr repeat(7,1fr) 32px;align-items:center;gap:8px;min-width:900px;display:grid}.sample-head{text-transform:uppercase;letter-spacing:.04em;color:var(--muted);padding:0 4px 8px;font-size:9px;font-weight:800}.sample-row{border-top:1px solid #edf1ee;padding:8px 0}.sample-row .strong{color:var(--green);background:var(--green-soft)}.modal-backdrop{z-index:50;background:#101b18cc;padding:24px;position:fixed;inset:0;overflow:auto}.report-modal{background:#fff;border-radius:18px;max-width:1500px;margin:auto;overflow:hidden}.modal-bar{z-index:3;border-bottom:1px solid var(--line);background:#fff;justify-content:space-between;align-items:center;gap:16px;padding:14px 18px;display:flex;position:sticky;top:-24px}.modal-bar>div:last-child{gap:8px;display:flex}.modal-bar strong,.modal-bar span{display:block}.modal-bar span{color:var(--muted);margin-top:3px;font-size:12px}.close{background:#eef2ef;border:0;border-radius:10px;width:40px;font-size:24px}.report{color:#222;padding:36px}.report-title h2{margin:0 0 18px;font:600 25px Georgia,serif}.report-title p{margin:5px 0;font-size:12px}.report-scroll{margin-top:24px;overflow:auto}.report table{border-collapse:collapse;width:100%;min-width:1200px;font:10px Arial,sans-serif}.report th,.report td{text-align:center;vertical-align:middle;border:1px solid #777;padding:6px}.report th{background:#e8eee9;font-weight:700}.report-samples{margin-top:28px}.report-samples h3{font:600 18px Georgia,serif}.report-samples table{min-width:800px}@media (max-width:1000px){.measurements,.calc-strip{grid-template-columns:repeat(3,1fr)}.source-layout{grid-template-columns:1fr}.source-nav{gap:6px;display:flex;position:static;overflow-x:auto}.nav-title{display:none}.source-tab{min-width:150px}.add-source{min-width:170px;margin:0}.pollutant-head{display:none}:is(.pollutant-row,.pollutant-row:has(input:nth-child(3))){grid-template-columns:1fr 1fr 34px}.pollutant-row>:first-child{grid-column:1/-2}.pollutant-row output:before{content:"Мощность: ";color:var(--muted);font-size:10px}}@media (max-width:700px){.topbar{height:auto;padding:13px 16px}.brand small,.save-state,.header-actions .ghost{display:none}.primary,.ghost{padding:10px 12px}.hero{padding:32px 20px;display:block}.hero-kpi{display:none}.hero h1{font-size:34px}.study-card,.source-layout{width:calc(100% - 24px);margin:14px auto}.card{border-radius:15px;padding:18px}.cols-2,.cols-3,.measurements{grid-template-columns:1fr}.date-time{grid-template-columns:1fr 1fr}.section-heading{align-items:flex-start}.section-heading .hint{display:none}.section-picker{grid-template-columns:1fr;display:grid}.calc-strip{grid-template-columns:1fr 1fr}.metric.accent{grid-column:1/-1}:is(.pollutant-row,.pollutant-row:has(input:nth-child(3))){grid-template-columns:1fr 34px}.pollutant-row>*{grid-column:1}.pollutant-row .remove{grid-area:1/2}.modal-backdrop{padding:0}.report-modal{border-radius:0;min-height:100vh}.modal-bar{align-items:flex-start;top:0}.modal-bar>div:last-child{flex-wrap:wrap;justify-content:flex-end}.report{padding:20px}.report-scroll{margin-right:-20px}}@media print{body{background:#fff}.topbar,.hero,.study-card,.source-layout,.modal-bar{display:none!important}.modal-backdrop{background:#fff;padding:0;position:static}.report-modal{border-radius:0}.report{padding:0}.report table{min-width:0;font-size:7px}.report th,.report td{padding:3px}@page{size:A4 landscape;margin:8mm}}.field select{width:100%;height:44px;color:var(--ink);background:#fbfcfb;border:1px solid #ccd7d1;border-radius:10px;padding:0 12px}.database-bar{border:1px solid var(--line);background:#fff;border-radius:16px;grid-template-columns:minmax(200px,1.2fr) minmax(190px,1fr) minmax(190px,1fr) auto;align-items:end;gap:14px;width:min(1500px,100% - 40px);margin:20px auto;padding:16px 18px;display:grid;box-shadow:0 8px 24px #17352d0d}.database-title{align-self:center}.database-title strong,.database-title span{display:block}.database-title strong{font:600 18px Georgia,serif}.database-title span{color:var(--muted);margin-top:5px;font-size:11px}.database-bar>label{flex-direction:column;gap:6px;display:flex}.database-bar>label>span{color:#52625c;text-transform:uppercase;letter-spacing:.05em;font-size:10px;font-weight:800}.database-bar select{width:100%;height:42px;color:var(--ink);background:#fbfcfb;border:1px solid #ccd7d1;border-radius:10px;padding:0 10px}.database-actions{flex-wrap:wrap;justify-content:flex-end;gap:7px;display:flex}.database-actions .ghost,.database-actions .primary{padding:10px 16px}.database-actions button:disabled{cursor:not-allowed;opacity:.48}.danger-button{color:var(--danger);background:#f9e8e7;border:0;border-radius:10px;padding:10px 14px;font-weight:800}.danger-button:hover{background:#f3d7d5}.database-start{text-align:center;width:min(760px,100% - 40px);margin:70px auto;padding:54px}.database-start-mark{width:54px;height:54px;color:var(--lime);background:var(--ink);border-radius:16px;place-items:center;margin:0 auto 20px;font-weight:900;display:grid}.database-start .eyebrow{color:var(--green)}.database-start h1{color:var(--ink);margin:0;font:600 clamp(32px,5vw,48px)/1.08 Georgia,serif}.database-start p:last-of-type{max-width:590px;color:var(--muted);margin:18px auto 0;line-height:1.6}.database-start .primary{margin-top:26px}.save-toast{z-index:80;color:#fff;background:var(--green);border-radius:13px;align-items:center;gap:10px;min-width:190px;padding:15px 20px;font-weight:800;animation:.18s ease-out save-toast-in;display:flex;position:fixed;bottom:24px;right:24px;box-shadow:0 16px 42px #17352d47}.save-toast span{width:24px;height:24px;color:var(--green);background:#fff;border-radius:50%;place-items:center;display:grid}@keyframes save-toast-in{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}.database-hero{border-radius:22px;width:min(1500px,100% - 40px);margin:20px auto 0}:is(.pollutant-head,.pollutant-row,.pollutant-row:has(input:nth-child(3))){grid-template-columns:minmax(180px,2fr) repeat(3,minmax(120px,1fr)) 34px}:is(.pollutant-head.with-pgu,.pollutant-head.with-pgu:has(span:nth-child(6)),.pollutant-row.with-pgu,.pollutant-row.with-pgu:has(input:nth-child(3))){grid-template-columns:minmax(180px,2fr) repeat(4,minmax(120px,1fr)) 34px}.pollutant-field,.ndv-field{width:auto;min-width:0;display:block}.pollutant-field>span,.ndv-field>span{display:none}.pollutant-field input,.ndv-field input{width:100%}.pollutant-row output.exceeds-ndv{color:#9f2525;background:#fff0ef;border:1px solid #e58d88;box-shadow:0 0 0 3px #c637301a}.pollutant-row output.exceeds-ndv small{color:#b12f2b}.pgu-settings{margin-bottom:22px}.pgu-topology{background:#f4f9f6;border:1px solid #a9c5b5;border-radius:18px;margin:0 0 24px;padding:20px}.pgu-topology-heading{justify-content:space-between;align-items:center;gap:20px;margin-bottom:18px;display:flex}.pgu-topology-heading>div{align-items:center;gap:12px;display:flex}.pgu-topology-heading span{color:var(--green);background:var(--green-soft);text-transform:uppercase;letter-spacing:.05em;border-radius:999px;padding:6px 10px;font-size:11px;font-weight:800}.pgu-topology-heading strong{color:var(--ink);font:600 28px Georgia,serif}.pgu-topology-heading p{max-width:680px;color:var(--muted);margin:0;font-size:12px;line-height:1.45}.pgu-channel-columns{grid-template-columns:1fr 1fr;align-items:start;gap:16px;display:grid}.pgu-channel-side{border:1px solid var(--line);background:#fff;border-radius:15px;min-width:0;padding:14px}.pgu-channel-side-title{justify-content:space-between;align-items:center;gap:12px;margin-bottom:12px;display:flex}.pgu-channel-side-title>div{align-items:baseline;gap:8px;display:flex}.pgu-channel-side-title strong{font:600 20px Georgia,serif}.pgu-channel-side-title span{color:var(--muted);font-size:11px}.pgu-channel-side-title button:disabled{opacity:.45;cursor:not-allowed}.pgu-primary-channel{background:var(--green-soft);border-radius:12px;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:10px;padding:12px;display:grid}.pgu-primary-channel>span{background:var(--green);color:#fff;text-transform:uppercase;border-radius:999px;padding:5px 8px;font-size:10px;font-weight:800}.pgu-primary-channel strong,.pgu-primary-channel small{display:block}.pgu-primary-channel strong{font-size:13px}.pgu-primary-channel small{color:var(--muted);margin-top:3px;font-size:10px}.pgu-primary-channel output{color:var(--green);white-space:nowrap;font-size:12px;font-weight:800}.pgu-channel-card{background:#fbfcfb;border:1px solid #d5dfda;border-radius:14px;margin-top:12px;padding:14px}.pgu-channel-card-title{grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:10px;margin-bottom:12px;display:grid}.pgu-channel-card-title>span{color:var(--green);text-transform:uppercase;font-size:11px;font-weight:800}.pgu-channel-card-title input{width:100%;height:38px;color:var(--ink);background:#fff;border:1px solid #ccd7d1;border-radius:9px;padding:0 10px;font-weight:700}.pgu-channel-card .section-picker{margin-bottom:12px}.pgu-channel-card .section-picker button{padding:8px 10px;font-size:11px}.pgu-channel-measurements{grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;display:grid}.pgu-channel-measurements .field>span{font-size:9px}.pgu-channel-measurements .field input{height:40px}.pgu-channel-flow{background:var(--ink);color:#fff;border-radius:10px;justify-content:space-between;align-items:center;gap:12px;margin-top:12px;padding:10px 12px;display:flex}.pgu-channel-flow span{color:#bdd0c8;font-size:10px}.pgu-channel-flow strong{color:var(--lime);font-size:13px}.pgu-channel-pollutants{gap:8px;margin-top:12px;display:grid}.pgu-channel-pollutants label{grid-template-columns:minmax(130px,1fr) minmax(100px,.7fr);align-items:center;gap:8px;display:grid}.pgu-channel-pollutants span{overflow-wrap:anywhere;color:var(--muted);font-size:10px}.pgu-channel-pollutants input{width:100%;height:38px;color:var(--ink);background:#fff;border:1px solid #ccd7d1;border-radius:9px;padding:0 10px}.pgu-flow-balance{border-top:1px solid #cbdcd3;grid-template-columns:minmax(0,1fr) minmax(0,1fr) auto;align-items:center;gap:12px;margin-top:16px;padding-top:16px;line-height:1.5;display:grid}.pgu-topology>.pgu-balance-note{color:var(--muted);overflow-wrap:anywhere;border-top:1px solid #dce4df;margin:20px 0 0;padding-top:14px;font-size:12px;line-height:1.6;display:block}.pgu-flow-balance span{color:var(--muted);font-size:11px}.pgu-flow-balance b{color:var(--ink);margin-top:3px;font-size:14px;display:block}.pgu-flow-balance em{white-space:nowrap;border-radius:999px;padding:8px 10px;font-size:10px;font-style:normal;font-weight:800}.pgu-flow-balance .flow-ok{color:var(--green);background:var(--green-soft)}.pgu-flow-balance .flow-loss{color:#ad403e;background:#fae8e7}.pgu-flow-balance .flow-gain{color:#8b5415;background:#fff0da}.pgu-stages{gap:22px;margin-top:18px;display:grid}.pgu-stage-card{background:#fbfcfb;border:1px solid #cbd8d1;border-radius:18px;min-width:0;padding:20px;box-shadow:0 8px 22px #17352d0a}.pgu-stage-title{justify-content:space-between;align-items:center;gap:16px;margin-bottom:18px;display:flex}.pgu-stage-title>div{align-items:baseline;gap:12px;min-width:0;display:flex}.pgu-stage-title span{color:var(--green);background:var(--green-soft);text-transform:uppercase;letter-spacing:.05em;border-radius:999px;flex:none;padding:6px 10px;font-size:11px;font-weight:800}.pgu-stage-title strong{overflow-wrap:anywhere;font:600 20px Georgia,serif}.stage-measurement{border:1px solid var(--line);background:#fff;border-radius:14px;margin:8px 0 20px;padding:16px}.stage-measurement .subsection{border-top:0;margin-top:14px;padding-top:0}.stage-measurement .measurements{grid-template-columns:repeat(3,minmax(0,1fr))}.stage-measurement .calc-strip{grid-template-columns:repeat(5,minmax(0,1fr))}.add-pgu-stage{width:100%;color:var(--green);cursor:pointer;background:#f8fbf9;border:1px dashed #92aa9e;border-radius:14px;margin-top:18px;padding:15px;font-weight:800}.add-pgu-stage:hover{background:var(--green-soft)}.overall-pgu{background:#f4f9f6;border:1px solid #a9c5b5;border-radius:18px;margin-top:22px;padding:20px}.overall-pgu-grid,.overall-pgu-row{grid-template-columns:minmax(180px,1.5fr) repeat(3,minmax(130px,1fr));align-items:center;gap:8px;min-width:760px;display:grid}.overall-pgu-grid{color:var(--muted);text-transform:uppercase;letter-spacing:.04em;font-size:9px;font-weight:800}.overall-pgu-row{border-top:1px solid #dce8e1;padding:8px 0}.overall-pgu-row output{font-variant-numeric:tabular-nums;background:#fff;border-radius:10px;align-items:center;min-height:44px;padding:0 10px;font-size:12px;font-weight:700;display:flex}.overall-pgu-row .efficiency{color:var(--green);background:#dceee4;font-size:16px}.overall-pgu-row .efficiency.negative{color:var(--danger);background:#f9e8e7}.measurement-panels{margin-top:28px}.measurement-panels.paired{grid-template-columns:1fr 1fr;align-items:stretch;gap:18px;display:grid}.measurement-panel{border:1px solid var(--line);background:#fbfcfb;border-radius:15px;flex-direction:column;min-width:0;padding:18px;display:flex}.measurement-title{border-bottom:1px solid var(--line);justify-content:space-between;align-items:baseline;gap:12px;padding-bottom:14px;display:flex}.measurement-title h3{margin:0;font:600 19px Georgia,serif}.measurement-title span{color:var(--muted);text-align:right;font-size:11px}.measurement-panel .subsection{border-top:0;margin-top:16px;padding-top:0}.measurement-panel .section-picker{flex-wrap:wrap}.measurement-panel .measurements{grid-template-columns:repeat(3,1fr);margin-bottom:24px}.measurement-panel .calc-strip{grid-template-columns:repeat(5,1fr);height:120px;min-height:120px;margin-top:auto}.measurement-panel .metric{grid-template-rows:auto minmax(0,1fr) auto;height:100%;padding:12px 10px;display:grid}.measurement-panel .metric-value{white-space:nowrap;align-self:center;align-items:baseline;gap:5px;display:flex}.measurement-panel .metric strong{font-size:18px;line-height:1}.measurement-panel .metric-value span{flex:none;margin-left:0}.measurement-panel .metric-value-sm{gap:3px}.measurement-panel .metric-value-sm strong{font-size:15px}.measurement-panel .metric-value-sm span{font-size:9px}.measurement-panel .metric-value-xs{gap:2px}.measurement-panel .metric-value-xs strong{font-size:12px}.measurement-panel .metric-value-xs span{font-size:8px}.measurement-panel .metric.accent:not(.flow-loss):not(.flow-gain),.metric.accent.flow-ok{background:#176c50}.metric.accent.flow-loss{background:#a92f2b}.metric.accent.flow-gain{background:#c66a0a}.metric.accent.flow-loss small,.metric.accent.flow-loss span,.metric.accent.flow-gain small,.metric.accent.flow-gain span{color:#ffffffd1}.flow-status-text{white-space:nowrap;letter-spacing:-.01em;margin-top:auto;padding-top:6px;font-size:7px;font-style:normal;font-weight:700;line-height:1;display:block}.metric.accent .flow-status-text{color:#fff}.pgu-disabled{text-align:center;background:#fafcfa;border:1px dashed #b8c6bf;border-radius:14px;padding:24px}.pgu-disabled p{color:var(--muted);margin:7px 0 12px}.pgu-table{overflow-x:auto}.pgu-head,.pgu-row{grid-template-columns:minmax(170px,1.6fr) repeat(7,minmax(105px,1fr));align-items:center;gap:8px;min-width:1080px;display:grid}.pgu-head{color:var(--muted);text-transform:uppercase;letter-spacing:.04em;padding:0 4px 8px;font-size:9px;font-weight:800}.pgu-row{border-top:1px solid #edf1ee;padding:8px 0}.pgu-row strong{font-size:12px;line-height:1.3}.pgu-row input{width:100%;height:44px;color:var(--ink);background:#fbfcfb;border:1px solid #ccd7d1;border-radius:10px;padding:0 10px}.pgu-row output{font-variant-numeric:tabular-nums;background:#f0f5f2;border-radius:10px;align-items:center;height:44px;padding:0 10px;font-size:12px;font-weight:700;display:flex}.pgu-row .efficiency{background:var(--green-soft);color:var(--green);font-size:16px}.pgu-row .efficiency.negative{color:var(--danger);background:#f9e8e7}.report table.protocol-table{min-width:1750px}.report table.protocol-table th,.report table.protocol-table td,.report-samples th,.report-samples td{text-align:center;vertical-align:middle;line-height:1.35}.report table.protocol-table td{padding:9px 7px}.report .measurement-stage{white-space:normal;background:#f2f6f3;font-weight:800;text-align:center!important;vertical-align:middle!important}.report .measurement-stage.after{color:var(--green);background:#e5f1ea}@media (max-width:1000px){.database-bar{grid-template-columns:1fr 1fr}.database-title{grid-column:1/-1}.database-actions{grid-column:1/-1;justify-content:flex-start}.pgu-channel-columns{grid-template-columns:1fr}.pgu-flow-balance{grid-template-columns:1fr 1fr}.pgu-flow-balance em{grid-column:1/-1;justify-self:start}.measurement-panels.paired{grid-template-columns:1fr}.pollutant-row,.pollutant-row.with-pgu{grid-template-columns:1fr 1fr 34px}.pollutant-row:has(input:nth-child(3)){grid-template-columns:1fr 1fr 34px}.ndv-field{width:auto;min-width:0}.stage-measurement .measurements{grid-template-columns:repeat(2,minmax(0,1fr))}.stage-measurement .calc-strip{grid-template-columns:repeat(3,minmax(0,1fr))}}@media (max-width:700px){.database-bar{grid-template-columns:1fr;width:calc(100% - 24px);margin:12px auto;padding:14px}.database-hero{border-radius:16px;width:calc(100% - 24px);margin-top:12px}.database-title,.database-actions{grid-column:auto}.database-start{width:calc(100% - 24px);margin:28px auto;padding:34px 20px}.save-toast{justify-content:center;bottom:12px;left:12px;right:12px}.pgu-topology{padding:14px}.pgu-topology-heading{flex-direction:column;align-items:flex-start}.pgu-primary-channel{grid-template-columns:1fr auto}.pgu-primary-channel>span{grid-column:1/-1;justify-self:start}.pgu-channel-card-title{grid-template-columns:auto 1fr}.pgu-channel-card-title .danger-link{grid-column:1/-1;justify-self:end}.pgu-channel-measurements,.pgu-flow-balance{grid-template-columns:1fr}.pgu-flow-balance em{white-space:normal;grid-column:1}.measurement-panel{padding:14px}.measurement-panel .measurements{grid-template-columns:1fr}.measurement-panel .calc-strip{grid-template-columns:1fr 1fr;height:auto;min-height:0}.measurement-panel .metric{height:auto}.pollutant-row,.pollutant-row.with-pgu{grid-template-columns:1fr 34px}.pollutant-row:has(input:nth-child(3)){grid-template-columns:1fr 34px}.pgu-stage-card,.overall-pgu{padding:14px}.pgu-stage-title{align-items:flex-start}.pgu-stage-title>div{flex-direction:column;align-items:flex-start;gap:7px}.stage-measurement{padding:13px}.stage-measurement .measurements{grid-template-columns:1fr}.stage-measurement .calc-strip{grid-template-columns:1fr 1fr}.overall-pgu{overflow-x:auto}}.pgu-mode-controls{align-content:start;gap:14px;min-width:0;display:grid}.pollutant-head.multi-flow-summary,.pollutant-row.multi-flow-summary{grid-template-columns:minmax(180px,2fr) minmax(120px,1fr) minmax(120px,1fr) 32px}.pgu-primary-concentrations{border-top:1px solid #dce4df;margin-top:20px;padding-top:16px}.pgu-primary-concentrations h3{margin:0 0 12px}@media (max-width:700px){.pollutant-row.multi-flow-summary{grid-template-columns:minmax(0,1fr) minmax(0,1fr) 32px}}.pgu-flow-counts{margin:18px 0}.pgu-channel-side>.measurement-panel{margin-bottom:16px}.pgu-channel-card .calc-strip{grid-template-columns:repeat(5,minmax(0,1fr));margin-top:16px}@media (max-width:700px){.pgu-channel-card .calc-strip{grid-template-columns:repeat(2,minmax(0,1fr))}}.pgu-channel-side .calc-strip{grid-template-columns:repeat(auto-fit,minmax(min(100%,140px),1fr));height:auto;min-height:0}.pgu-channel-side .metric{min-width:0;min-height:112px;padding:12px 10px}.pgu-channel-side .metric-value{flex-wrap:wrap;align-items:baseline;gap:4px;min-width:0;display:flex}.pgu-channel-side .metric-value strong{white-space:nowrap;font-size:18px;line-height:1.2}.pgu-channel-side .metric-value-sm strong{font-size:16px}.pgu-channel-side .metric-value-xs strong{font-size:12px}.pgu-channel-side .metric-value span{white-space:nowrap;margin-left:0}.pgu-channel-side .flow-status-text{white-space:normal;line-height:1.35}.source-nav{overscroll-behavior:contain;scrollbar-width:thin}.app-version{text-align:center;color:#67756f;margin:28px auto 0;padding:12px 20px;font-size:12px}@media print{.app-version{display:none}}.source-search-header{background:#fff;grid-column:1/-1;min-width:0;padding-bottom:10px}.source-search{position:relative}.source-search input{color:#17352d;background:#fbfcfb;border:1px solid #ccd7d1;border-radius:10px;width:100%;min-width:0;height:40px;padding:0 32px 0 10px;font-size:16px}.source-search input:focus{border-color:#176c50;outline:2px solid #176c5033}.source-search input::-webkit-search-cancel-button{display:none}.source-search button{color:#67756f;background:0 0;border:0;width:32px;height:32px;font-size:22px;position:absolute;top:4px;right:4px}.source-search-count{color:#67756f;margin:7px 2px 0;font-size:12px;display:block}.source-search-empty{color:#67756f;grid-column:1/-1;margin:12px 8px;font-size:13px}@media (min-width:1001px){.source-search-header{z-index:1;position:sticky;top:-15px}}@media (min-width:901px) and (max-width:1000px){.source-search-header{flex:0 0 210px}}.sampling-panel{border-top:1px solid #dce4df;min-width:0;margin-top:14px;padding-top:14px}.sampling-panel h3{margin:0 0 10px;font-size:17px}.sampling-results{grid-template-columns:repeat(auto-fit,minmax(min(100%,180px),1fr));gap:10px;margin-bottom:12px;display:grid}.sampling-results span{color:#67756f;background:#e5f1ea;border-radius:10px;padding:10px 12px;font-size:13px;line-height:1.35}.sampling-results b{color:#17352d;overflow-wrap:anywhere;margin-top:5px;font-size:19px;display:block}.sampling-fields{grid-template-columns:repeat(auto-fit,minmax(min(100%,180px),1fr));gap:10px;display:grid}.sampling-fields .field{min-width:0}.sampling-fields input{width:100%;min-width:0;font-size:16px}.sampling-note{color:#67756f;margin:14px 0;font-size:13px;line-height:1.55}.sampling-error{color:#ad403e;font-size:13px;line-height:1.5}.sampling-panel summary{cursor:pointer;color:#176c50;margin:10px 0;font-size:13px}@media (min-width:901px){.source-nav{max-height:var(--source-nav-height,calc(100dvh - 116px));scrollbar-gutter:stable;overflow:hidden auto}}html,body{max-width:100%;overflow-x:clip}.source-main,.source-main>.card{min-width:0}@media (max-width:1000px){.source-layout{grid-template-columns:minmax(0,1fr)}}.concentrations-card{min-width:0;max-width:100%;container:concentrations/inline-size}.pollutant-output-label{display:none}.concentrations-card .pollutant-head.with-pgu.multi-flow-summary,.concentrations-card .pollutant-row.with-pgu.multi-flow-summary{grid-template-columns:minmax(180px,2fr) repeat(2,minmax(120px,1fr)) 34px}@media (max-width:700px){main,.topbar,.hero,.study-card,.source-layout,.source-main,.source-main>.card{min-width:0;max-width:100%}.topbar{gap:10px;width:100%;min-height:70px;padding:10px 12px}.brand{flex:1;gap:9px;min-width:0}.brand .mark{border-radius:11px;flex:0 0 38px;width:38px;height:38px}.brand>div{min-width:0}.brand strong{font-size:14px;line-height:1.15}.header-actions{flex:none;min-width:0}.header-actions .primary{max-width:148px;padding:10px 12px;font-size:14px;line-height:1.15}.hero{width:100%;padding:24px 16px;overflow:hidden}.hero h1{font-size:29px;line-height:1.08}.hero p:last-child{font-size:13px;line-height:1.45}.study-card,.source-layout{width:calc(100% - 20px);max-width:calc(100% - 20px);margin:10px auto}.card{min-width:0;max-width:100%;padding:16px}.cols-2,.cols-3,.measurements{grid-template-columns:minmax(0,1fr)}.date-time{grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:10px}.field input,.field select,.pollutant-row input,.sample-row input{min-width:0;font-size:16px}.section-heading{flex-wrap:wrap;align-items:flex-start;gap:10px;margin-bottom:20px}.section-heading>div{min-width:0}.section-heading h2{font-size:22px;line-height:1.15}.source-layout{display:block}.source-nav{width:100%;max-width:100%;max-height:var(--source-nav-height,45dvh);overscroll-behavior:contain;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;padding:10px;display:grid;position:static;overflow:hidden auto}.source-tab,.add-source{width:100%;min-width:0;min-height:72px;margin:0}.source-tab{padding:12px}.add-source{padding:10px;font-size:14px}.source-main{gap:10px;width:100%;margin-top:10px}.source-main>.card{width:100%;overflow:hidden}.section-picker{grid-template-columns:minmax(0,1fr)}.section-picker button{justify-content:flex-start;width:100%}.measurement-title{display:block}.measurement-title span{text-align:left;margin-top:5px;line-height:1.35;display:block}.calc-strip,.measurement-panel .calc-strip{grid-template-columns:1fr 1fr;margin-top:16px}.metric{min-width:0;padding:13px 11px}.metric strong{font-size:21px}.pollutants{width:100%;min-width:0}.pollutant-row,.pollutant-row.with-pgu{flex-direction:column;align-items:stretch;gap:14px;width:100%;padding-top:46px;display:flex;position:relative}.pollutant-row:has(input:nth-child(3)){flex-direction:column;align-items:stretch;gap:14px;width:100%;padding-top:46px;display:flex;position:relative}.pollutant-row>*{width:100%;min-width:0;display:flex}.pollutant-field,.ndv-field{flex-direction:column;gap:7px;display:flex}.pollutant-field>span,.ndv-field>span{color:#52625c;letter-spacing:.04em;text-transform:uppercase;font-size:11px;font-weight:800;display:block}.pollutant-name-field,.pollutant-field input,.pollutant-name-field input,.ndv-field input,.pollutant-row output{width:100%}.pollutant-row .remove{grid-area:auto;width:40px;height:36px;display:block;position:absolute;top:4px;right:2px}.pollutant-row output.exceeds-ndv:before{color:#b12f2b}.sample-table,.pgu-table,.report-scroll{overscroll-behavior-x:contain;max-width:100%}.database-bar{grid-template-columns:minmax(0,1fr);gap:12px;width:calc(100% - 20px);max-width:calc(100% - 20px);margin:10px auto;padding:14px}.database-bar>label,.database-bar select{min-width:0}.database-bar select{font-size:16px}.database-title,.database-actions{grid-column:auto}.database-actions{grid-template-columns:1fr 1fr;width:100%;display:grid}.database-actions .ghost,.database-actions .primary,.database-actions .danger-button{width:100%;padding-inline:8px}.database-actions .danger-button{grid-column:1/-1}.database-hero{width:calc(100% - 20px);max-width:calc(100% - 20px);margin-top:10px}.report-modal{width:100%}.report{padding:16px}.report-scroll{margin-right:-16px}}@media (max-width:390px){.topbar{padding-inline:10px}.brand strong{max-width:94px}.header-actions .primary{max-width:132px;font-size:13px}.date-time,.source-nav,.database-actions,.calc-strip,.measurement-panel .calc-strip{grid-template-columns:1fr}.database-actions .danger-button{grid-column:auto}.source-tab,.add-source{min-height:58px}.section-heading h2{font-size:20px}.metric.accent{grid-column:auto}}@container concentrations (width<=960px){.concentrations-card .pollutant-head{display:none}.concentrations-card .section-heading{flex-wrap:wrap}.concentrations-card .section-heading>div{min-width:0}.concentrations-card .section-heading h2{overflow-wrap:anywhere}.concentrations-card .pollutants .pollutant-row,.concentrations-card .pollutants .pollutant-row.with-pgu,.concentrations-card .pollutants .pollutant-row.multi-flow-summary{grid-template-columns:repeat(2,minmax(0,1fr));align-items:start;gap:14px;width:100%;padding:16px 0;display:grid;position:relative}.concentrations-card .pollutant-row>*{grid-area:auto;width:100%;min-width:0}.concentrations-card .pollutant-row .pollutant-name-field{grid-column:1/-1;padding-right:48px}.concentrations-card .pollutant-field,.concentrations-card .ndv-field{flex-direction:column;gap:7px;display:flex}.concentrations-card .pollutant-field>span,.concentrations-card .ndv-field>span,.concentrations-card .pollutant-output-label{color:#52625c;letter-spacing:.02em;font-size:11px;font-weight:800;line-height:1.4;display:block}.concentrations-card .pollutant-row input{width:100%;min-width:0;font-size:16px}.concentrations-card .pollutant-row output{overflow-wrap:anywhere;gap:5px;height:auto;min-height:67px;padding:10px 12px}.concentrations-card .pollutant-row output:before{content:none}.concentrations-card .pollutant-row .remove{grid-area:auto;width:40px;height:44px;display:block;position:absolute;top:39px;right:0}}@container concentrations (width<=480px){.concentrations-card .pollutants .pollutant-row,.concentrations-card .pollutants .pollutant-row.with-pgu,.concentrations-card .pollutants .pollutant-row.multi-flow-summary{grid-template-columns:minmax(0,1fr)}}.license-screen{background:radial-gradient(circle at top,#edf5ef,#f4f6f2 55%);outline:0 solid #0000;place-items:center;min-height:100vh;padding:24px;display:grid}.license-box{border:1px solid var(--line);text-align:center;background:#fff;border-radius:24px;width:min(480px,100%);padding:38px;box-shadow:0 24px 70px #17352d1a}.license-mark{background:var(--ink);width:52px;height:52px;color:var(--lime);border-radius:15px;place-items:center;margin:0 auto 20px;font-weight:900;display:grid}.license-eyebrow{color:var(--green);letter-spacing:.14em;text-transform:uppercase;font-size:11px;font-weight:900}.license-box h1,.admin-shell h1,.admin-card h2{font-family:Georgia,serif}.license-box h1{margin:7px 0 12px;font-size:38px}.license-box>p:not(.license-eyebrow){color:var(--muted);line-height:1.55}.license-box label,.admin-card label{text-align:left;flex-direction:column;gap:7px;display:flex}.license-box label span,.admin-card label span{text-transform:uppercase;color:#52625c;font-size:11px;font-weight:800}.license-box input,.admin-card input{background:#fbfcfb;border:1px solid #ccd7d1;border-radius:11px;height:46px;padding:0 13px}.license-box .primary{width:100%;margin-top:14px}.license-box small{color:var(--muted);margin-top:18px;display:block}.license-error{color:var(--danger);background:#f9e8e7;border-radius:10px;margin-top:12px;padding:10px}.license-ribbon{background:var(--lime);color:var(--ink);justify-content:space-between;align-items:center;gap:16px;padding:9px clamp(16px,4vw,64px);font-size:12px;display:flex}.license-ribbon button{color:var(--ink);background:0 0;border:0;font-weight:800}.app-loading{min-height:70vh;color:var(--green);place-items:center;font-weight:800;display:grid}.admin-shell{width:min(1400px,100% - 40px);margin:auto;padding:36px 0 70px}.admin-shell>header{justify-content:space-between;align-items:center;margin-bottom:24px;display:flex}.admin-shell h1{margin:5px 0;font-size:42px}.admin-shell a{color:var(--green);font-weight:800}.admin-card{border:1px solid var(--line);background:#fff;border-radius:18px;margin-bottom:20px;padding:24px;box-shadow:0 10px 30px #17352d0a}.admin-card h2{margin-top:0}.admin-login{align-items:end;gap:12px;display:flex}.admin-login label{flex:1}.issue-form{grid-template-columns:2fr 1.5fr .7fr .7fr auto;align-items:end;gap:12px;display:grid}.issue-form h2{grid-column:1/-1}.issued-key{background:var(--green-soft);border-radius:12px;grid-column:1/-1;align-items:center;gap:14px;padding:14px;display:flex}.issued-key span{color:var(--muted)}.issued-key b{letter-spacing:.06em;font-size:18px}.issued-key button,.license-table button{color:var(--green);background:#eef2ef;border:0;border-radius:8px;padding:8px;font-weight:700}.license-table{overflow:auto}.license-table table{border-collapse:collapse;width:100%;min-width:1000px}.license-table th,.license-table td{border-bottom:1px solid var(--line);text-align:left;padding:12px;font-size:12px}.license-table td:last-child{gap:6px;display:flex}@media (max-width:800px){.license-box{padding:26px 20px}.license-box h1{font-size:31px}.license-ribbon{align-items:flex-start}.admin-shell{width:calc(100% - 24px);padding-top:18px}.admin-login,.issued-key{display:grid}.issue-form{grid-template-columns:1fr}.issue-form h2,.issued-key{grid-column:auto}}.offline-expired{gap:8px;display:grid}.offline-expired .primary{min-height:48px}.offline-notice{color:#6c5519;background:#fff7df;border:1px solid #d7b96c;border-radius:12px;justify-content:space-between;align-items:center;gap:16px;width:min(1400px,100% - 40px);margin:18px auto -10px;padding:12px 16px;font-size:13px;display:flex}.offline-notice>div{gap:3px;display:grid}.offline-notice .offline-notice-actions{flex:none;grid-auto-flow:column;gap:8px;display:flex}.offline-notice button{color:#fff;white-space:nowrap;background:#176c50;border:0;border-radius:8px;padding:8px 12px;font-weight:700}.offline-notice button.danger{background:#ad403e}.offline-notice.conflict{color:#8e312e;background:#fbeceb;border-color:#e0a29f}.save-state.sync-synced:before{background:#45a877}.save-state.sync-offline:before,.save-state.sync-local:before{background:#d19a41}.save-state.sync-conflict:before,.save-state.sync-error:before{background:#c8524e}@media (max-width:700px){.offline-notice{flex-direction:column;align-items:stretch;width:calc(100% - 24px);margin:12px auto 0}.offline-notice .offline-notice-actions{flex-direction:column}.offline-notice button{width:100%}}.team-auth-box a{color:#126f53;text-align:center;font-weight:800}.license-ribbon{gap:14px}.ribbon-actions{align-items:center;gap:10px;display:flex}.license-ribbon .invite-employee-button{color:#176c50;background:#fff;border-radius:11px;padding:10px 16px;box-shadow:0 5px 16px #17352d14}.viewing-member{text-align:center;color:#174b3d;background:#e4f3ec;padding:10px 24px}.team-modal{z-index:1000;background:#08231c9e;place-items:center;padding:20px;display:grid;position:fixed;inset:0}.team-panel{background:#fff;border-radius:26px;width:min(820px,100%);max-height:90vh;padding:28px;overflow:auto;box-shadow:0 28px 80px #08231c47}.team-panel>header{justify-content:space-between;gap:20px;margin-bottom:20px;display:flex}.team-panel h2{color:#123b31;margin:2px 0;font-size:34px}.team-close{cursor:pointer;background:0 0;border:0;font-size:36px}.team-invite-form{grid-template-columns:1fr auto;align-items:end;gap:12px;display:grid}.team-invite-form label{gap:7px;font-weight:800;display:grid}.team-invite-form input,.invite-link input{min-width:0;font:inherit;border:1px solid #cbdad4;border-radius:12px;padding:13px 15px}.team-message{color:#165b46;background:#eef6f2;border-radius:12px;margin-top:14px;padding:12px 15px}.invite-link{grid-template-columns:1fr auto;gap:10px;margin-top:10px;display:grid}.team-list{margin-top:24px}.team-list-heading{justify-content:space-between;align-items:center;gap:12px;display:flex}.team-list-heading h3{margin:0}.team-list article{border-top:1px solid #e1e9e5;justify-content:space-between;align-items:center;gap:14px;padding:14px 0;display:flex}.team-list article div:first-child{gap:4px;display:grid}.team-list article span{color:#667a73}.team-list button,.invite-link button{cursor:pointer;background:#fff;border:1px solid #cad8d2;border-radius:9px;padding:8px 11px}.team-list button.danger{color:#a9342d;border-color:#edc5c2}.team-list button.database-active{color:#176c50;background:#e5f1ea;border-color:#9fc8b8}.license-table table{min-width:1120px}.license-table th,.license-table td{vertical-align:middle}.license-table button{cursor:pointer}.admin-cell-actions,.admin-row-actions{align-items:center;gap:6px;display:flex}.admin-row-actions{flex-wrap:wrap}.license-table button.danger{color:var(--danger);background:#f9e8e7}@media (max-width:760px){.license-ribbon{align-items:stretch}.ribbon-actions{flex-wrap:wrap}.license-ribbon .invite-employee-button{flex:100%}.team-panel{border-radius:20px;padding:20px}.team-invite-form,.invite-link{grid-template-columns:1fr}.team-list-heading,.team-list article{flex-direction:column;align-items:flex-start}}
