.auth-page{min-height:100vh;display:flex;align-items:center;justify-content:center;background:#0f172a;padding:1.5rem}.auth-card{width:100%;max-width:360px;display:flex;flex-direction:column;gap:1rem;padding:2rem;background:#fff;border-radius:12px;box-shadow:0 10px 30px #00000040}.auth-logo{width:56px;height:56px;object-fit:contain;align-self:center}.auth-title{margin:0;text-align:center;font-size:1.25rem;color:#0f172a}.auth-field{display:flex;flex-direction:column;gap:.35rem;font-size:.9rem;color:#334155}.auth-field input{padding:.6rem .7rem;border:1px solid #cbd5e1;border-radius:8px;font-size:1rem}.auth-field input:focus{outline:none;border-color:#2563eb;box-shadow:0 0 0 3px #2563eb33}.auth-error{padding:.6rem .7rem;background:#fef2f2;color:#b91c1c;border:1px solid #fecaca;border-radius:8px;font-size:.85rem}.auth-submit{padding:.7rem;background:#2563eb;color:#fff;border:none;border-radius:8px;font-size:1rem;cursor:pointer}.auth-submit:disabled{opacity:.6;cursor:not-allowed}.auth-loading{min-height:100vh;display:flex;align-items:center;justify-content:center;color:#64748b}.ras-demo-container{max-width:1200px}.ras-demo-panel{padding:18px}.ras-demo-title{margin:0;color:var(--muted);font-weight:600;text-align:left}.ras-demo-subtitle{margin:8px 0 16px;color:var(--muted);text-align:left}.ras-layout-grid{display:grid;grid-template-columns:64px minmax(0,1fr);gap:14px;align-items:start}.ras-left-actions{display:flex;flex-direction:column;gap:8px;align-items:center;position:relative;z-index:30;overflow:visible}.ras-action-icon-button{width:42px;height:42px;border-radius:10px;border:1px solid var(--border);background:var(--surface);color:var(--muted);display:inline-flex;align-items:center;justify-content:center;cursor:pointer;position:relative;font-size:1rem;z-index:31;opacity:.88}.ras-action-icon-button:hover{border-color:var(--primary);color:var(--primary)}.ras-action-icon-button-active{border-color:var(--primary);color:var(--primary);background:#eef6fa}.ras-action-icon-button:after{content:attr(data-label);position:absolute;left:calc(100% + 8px);top:50%;transform:translateY(-50%);background:var(--primary-dark);color:#fff;padding:4px 8px;border-radius:6px;font-size:.72rem;white-space:nowrap;opacity:0;pointer-events:none;transition:opacity .12s ease;z-index:40}.ras-action-icon-button:hover:after{opacity:1}.ras-image-wrapper{position:relative;width:100%;border:1px solid var(--border);border-radius:10px;overflow:hidden;background:var(--card);z-index:1}.ras-image{width:100%;display:block;height:auto}.sensor-badge{position:absolute;transform:translate(-50%,-50%);border:1px solid var(--border);border-radius:8px;background:var(--surface);color:var(--text);padding:8px 10px;min-width:135px;text-align:left;display:flex;flex-direction:column;gap:2px;cursor:pointer}.sensor-badge-toprow{display:flex;align-items:center;gap:6px}.sensor-toggle-dot{width:10px;height:10px;border-radius:50%;border:1px solid var(--border);background:var(--border);display:inline-block}.sensor-toggle-dot-on{border-color:var(--primary);background:var(--primary)}.sensor-badge span{font-size:.78rem;color:var(--muted)}.sensor-badge strong{font-size:.92rem;color:var(--text)}.sensor-badge-active{border-color:var(--primary)}.sensor-mini-chart{position:absolute;transform:translate(-50%,-50%);width:180px;height:110px;border:1px solid var(--border);border-radius:8px;background:var(--surface);padding:4px 6px}.sensor-mini-chart-title{font-size:.72rem;color:var(--muted);text-align:left;margin-bottom:2px}.ras-stats-section{margin-top:14px}.ras-energy-content{min-width:0}.ras-energy-toggle{display:inline-flex;align-items:center;gap:8px;font-size:.9rem;color:var(--text);margin-bottom:10px}.ras-energy-toggle input{accent-color:var(--primary)}.ras-export-button{margin-left:0}.ras-export-row{display:flex;justify-content:flex-start;margin:8px 6px 2px}.ras-energy-zoom-hint{margin:2px 6px 8px;text-align:left;font-size:.8rem;color:var(--muted)}.ras-energy-charts-grid{display:grid;grid-template-columns:1.4fr 1fr;gap:12px}.ras-energy-line-chart,.ras-energy-pie-chart{height:auto}.ras-stats-title{margin:0 0 8px;text-align:left;color:var(--muted);font-size:1rem;font-weight:600}.ras-stats-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:10px}.ras-stat-card{border:1px solid var(--border);border-radius:8px;background:var(--surface);padding:10px;text-align:left}.ras-stat-header{font-size:.85rem;color:var(--muted);margin-bottom:4px}.ras-stat-current{font-size:1.05rem;font-weight:700;color:var(--muted);margin-bottom:6px}.ras-stat-row{display:flex;justify-content:space-between;gap:12px;font-size:.84rem;color:var(--muted)}.ras-chart-card{margin-top:16px;height:auto}.ras-chart-title{margin:8px 6px 2px;color:var(--primary-dark);text-align:left}@media(max-width:900px){.ras-layout-grid{grid-template-columns:1fr}.ras-left-actions{flex-direction:row;flex-wrap:wrap;justify-content:flex-start}.ras-action-icon-button:after{display:none}.sensor-badge{min-width:120px;padding:6px 8px}.sensor-badge span{font-size:.72rem}.sensor-badge strong{font-size:.82rem}.sensor-mini-chart{width:150px;height:95px}.sensor-mini-chart-title{font-size:.68rem}.ras-stat-row{font-size:.8rem}.ras-energy-charts-grid{grid-template-columns:1fr}.ras-export-button{margin-top:0;display:inline-block}}@font-face{font-display:block;font-family:KaTeX_AMS;font-style:normal;font-weight:400;src:url(/assets/KaTeX_AMS-Regular-BQhdFMY1.woff2) format("woff2"),url(/assets/KaTeX_AMS-Regular-DMm9YOAa.woff) format("woff"),url(/assets/KaTeX_AMS-Regular-DRggAlZN.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Caligraphic;font-style:normal;font-weight:700;src:url(/assets/KaTeX_Caligraphic-Bold-Dq_IR9rO.woff2) format("woff2"),url(/assets/KaTeX_Caligraphic-Bold-BEiXGLvX.woff) format("woff"),url(/assets/KaTeX_Caligraphic-Bold-ATXxdsX0.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Caligraphic;font-style:normal;font-weight:400;src:url(/assets/KaTeX_Caligraphic-Regular-Di6jR-x-.woff2) format("woff2"),url(/assets/KaTeX_Caligraphic-Regular-CTRA-rTL.woff) format("woff"),url(/assets/KaTeX_Caligraphic-Regular-wX97UBjC.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Fraktur;font-style:normal;font-weight:700;src:url(/assets/KaTeX_Fraktur-Bold-CL6g_b3V.woff2) format("woff2"),url(/assets/KaTeX_Fraktur-Bold-BsDP51OF.woff) format("woff"),url(/assets/KaTeX_Fraktur-Bold-BdnERNNW.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Fraktur;font-style:normal;font-weight:400;src:url(/assets/KaTeX_Fraktur-Regular-CTYiF6lA.woff2) format("woff2"),url(/assets/KaTeX_Fraktur-Regular-Dxdc4cR9.woff) format("woff"),url(/assets/KaTeX_Fraktur-Regular-CB_wures.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Main;font-style:normal;font-weight:700;src:url(/assets/KaTeX_Main-Bold-Cx986IdX.woff2) format("woff2"),url(/assets/KaTeX_Main-Bold-Jm3AIy58.woff) format("woff"),url(/assets/KaTeX_Main-Bold-waoOVXN0.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Main;font-style:italic;font-weight:700;src:url(/assets/KaTeX_Main-BoldItalic-DxDJ3AOS.woff2) format("woff2"),url(/assets/KaTeX_Main-BoldItalic-SpSLRI95.woff) format("woff"),url(/assets/KaTeX_Main-BoldItalic-DzxPMmG6.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Main;font-style:italic;font-weight:400;src:url(/assets/KaTeX_Main-Italic-NWA7e6Wa.woff2) format("woff2"),url(/assets/KaTeX_Main-Italic-BMLOBm91.woff) format("woff"),url(/assets/KaTeX_Main-Italic-3WenGoN9.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Main;font-style:normal;font-weight:400;src:url(/assets/KaTeX_Main-Regular-B22Nviop.woff2) format("woff2"),url(/assets/KaTeX_Main-Regular-Dr94JaBh.woff) format("woff"),url(/assets/KaTeX_Main-Regular-ypZvNtVU.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Math;font-style:italic;font-weight:700;src:url(/assets/KaTeX_Math-BoldItalic-CZnvNsCZ.woff2) format("woff2"),url(/assets/KaTeX_Math-BoldItalic-iY-2wyZ7.woff) format("woff"),url(/assets/KaTeX_Math-BoldItalic-B3XSjfu4.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Math;font-style:italic;font-weight:400;src:url(/assets/KaTeX_Math-Italic-t53AETM-.woff2) format("woff2"),url(/assets/KaTeX_Math-Italic-DA0__PXp.woff) format("woff"),url(/assets/KaTeX_Math-Italic-flOr_0UB.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_SansSerif;font-style:normal;font-weight:700;src:url(/assets/KaTeX_SansSerif-Bold-D1sUS0GD.woff2) format("woff2"),url(/assets/KaTeX_SansSerif-Bold-DbIhKOiC.woff) format("woff"),url(/assets/KaTeX_SansSerif-Bold-CFMepnvq.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_SansSerif;font-style:italic;font-weight:400;src:url(/assets/KaTeX_SansSerif-Italic-C3H0VqGB.woff2) format("woff2"),url(/assets/KaTeX_SansSerif-Italic-DN2j7dab.woff) format("woff"),url(/assets/KaTeX_SansSerif-Italic-YYjJ1zSn.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_SansSerif;font-style:normal;font-weight:400;src:url(/assets/KaTeX_SansSerif-Regular-DDBCnlJ7.woff2) format("woff2"),url(/assets/KaTeX_SansSerif-Regular-CS6fqUqJ.woff) format("woff"),url(/assets/KaTeX_SansSerif-Regular-BNo7hRIc.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Script;font-style:normal;font-weight:400;src:url(/assets/KaTeX_Script-Regular-D3wIWfF6.woff2) format("woff2"),url(/assets/KaTeX_Script-Regular-D5yQViql.woff) format("woff"),url(/assets/KaTeX_Script-Regular-C5JkGWo-.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Size1;font-style:normal;font-weight:400;src:url(/assets/KaTeX_Size1-Regular-mCD8mA8B.woff2) format("woff2"),url(/assets/KaTeX_Size1-Regular-C195tn64.woff) format("woff"),url(/assets/KaTeX_Size1-Regular-Dbsnue_I.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Size2;font-style:normal;font-weight:400;src:url(/assets/KaTeX_Size2-Regular-Dy4dx90m.woff2) format("woff2"),url(/assets/KaTeX_Size2-Regular-oD1tc_U0.woff) format("woff"),url(/assets/KaTeX_Size2-Regular-B7gKUWhC.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Size3;font-style:normal;font-weight:400;src:url(data:font/woff2;base64,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) format("woff2"),url(/assets/KaTeX_Size3-Regular-CTq5MqoE.woff) format("woff"),url(/assets/KaTeX_Size3-Regular-DgpXs0kz.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Size4;font-style:normal;font-weight:400;src:url(/assets/KaTeX_Size4-Regular-Dl5lxZxV.woff2) format("woff2"),url(/assets/KaTeX_Size4-Regular-BF-4gkZK.woff) format("woff"),url(/assets/KaTeX_Size4-Regular-DWFBv043.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Typewriter;font-style:normal;font-weight:400;src:url(/assets/KaTeX_Typewriter-Regular-CO6r4hn1.woff2) format("woff2"),url(/assets/KaTeX_Typewriter-Regular-C0xS9mPB.woff) format("woff"),url(/assets/KaTeX_Typewriter-Regular-D3Ib7_Hf.ttf) format("truetype")}.katex{font: 1.21em KaTeX_Main,Times New Roman,serif;line-height:1.2;position:relative;text-indent:0;text-rendering:auto}.katex *{-ms-high-contrast-adjust:none!important;border-color:currentColor}.katex .katex-version:after{content:"0.16.45"}.katex .katex-mathml{clip:rect(1px,1px,1px,1px);border:0;height:1px;overflow:hidden;padding:0;position:absolute;width:1px}.katex .katex-html>.newline{display:block}.katex .base{position:relative;white-space:nowrap;width:-webkit-min-content;width:-moz-min-content;width:min-content}.katex .base,.katex .strut{display:inline-block}.katex .textbf{font-weight:700}.katex .textit{font-style:italic}.katex .textrm{font-family:KaTeX_Main}.katex .textsf{font-family:KaTeX_SansSerif}.katex .texttt{font-family:KaTeX_Typewriter}.katex .mathnormal{font-family:KaTeX_Math;font-style:italic}.katex .mathit{font-family:KaTeX_Main;font-style:italic}.katex .mathrm{font-style:normal}.katex .mathbf{font-family:KaTeX_Main;font-weight:700}.katex .boldsymbol{font-family:KaTeX_Math;font-style:italic;font-weight:700}.katex .amsrm,.katex .mathbb,.katex .textbb{font-family:KaTeX_AMS}.katex .mathcal{font-family:KaTeX_Caligraphic}.katex .mathfrak,.katex .textfrak{font-family:KaTeX_Fraktur}.katex .mathboldfrak,.katex .textboldfrak{font-family:KaTeX_Fraktur;font-weight:700}.katex .mathtt{font-family:KaTeX_Typewriter}.katex .mathscr,.katex .textscr{font-family:KaTeX_Script}.katex .mathsf,.katex .textsf{font-family:KaTeX_SansSerif}.katex .mathboldsf,.katex .textboldsf{font-family:KaTeX_SansSerif;font-weight:700}.katex .mathitsf,.katex .mathsfit,.katex .textitsf{font-family:KaTeX_SansSerif;font-style:italic}.katex .mainrm{font-family:KaTeX_Main;font-style:normal}.katex .vlist-t{border-collapse:collapse;display:inline-table;table-layout:fixed}.katex .vlist-r{display:table-row}.katex .vlist{display:table-cell;position:relative;vertical-align:bottom}.katex .vlist>span{display:block;height:0;position:relative}.katex .vlist>span>span{display:inline-block}.katex .vlist>span>.pstrut{overflow:hidden;width:0}.katex .vlist-t2{margin-right:-2px}.katex .vlist-s{display:table-cell;font-size:1px;min-width:2px;vertical-align:bottom;width:2px}.katex .vbox{align-items:baseline;display:inline-flex;flex-direction:column}.katex .hbox{width:100%}.katex .hbox,.katex .thinbox{display:inline-flex;flex-direction:row}.katex .thinbox{max-width:0;width:0}.katex .msupsub{text-align:left}.katex .mfrac>span>span{text-align:center}.katex .mfrac .frac-line{border-bottom-style:solid;display:inline-block;width:100%}.katex .hdashline,.katex .hline,.katex .mfrac .frac-line,.katex .overline .overline-line,.katex .rule,.katex .underline .underline-line{min-height:1px}.katex .mspace{display:inline-block}.katex .smash{display:inline;line-height:0}.katex .clap,.katex .llap,.katex .rlap{position:relative;width:0}.katex .clap>.inner,.katex .llap>.inner,.katex .rlap>.inner{position:absolute}.katex .clap>.fix,.katex .llap>.fix,.katex .rlap>.fix{display:inline-block}.katex .llap>.inner{right:0}.katex .clap>.inner,.katex .rlap>.inner{left:0}.katex .clap>.inner>span{margin-left:-50%;margin-right:50%}.katex .rule{border:0 solid;display:inline-block;position:relative}.katex .hline,.katex .overline .overline-line,.katex .underline .underline-line{border-bottom-style:solid;display:inline-block;width:100%}.katex .hdashline{border-bottom-style:dashed;display:inline-block;width:100%}.katex .sqrt>.root{margin-left:.2777777778em;margin-right:-.5555555556em}.katex .fontsize-ensurer.reset-size1.size1,.katex .sizing.reset-size1.size1{font-size:1em}.katex .fontsize-ensurer.reset-size1.size2,.katex .sizing.reset-size1.size2{font-size:1.2em}.katex .fontsize-ensurer.reset-size1.size3,.katex .sizing.reset-size1.size3{font-size:1.4em}.katex .fontsize-ensurer.reset-size1.size4,.katex .sizing.reset-size1.size4{font-size:1.6em}.katex .fontsize-ensurer.reset-size1.size5,.katex .sizing.reset-size1.size5{font-size:1.8em}.katex .fontsize-ensurer.reset-size1.size6,.katex .sizing.reset-size1.size6{font-size:2em}.katex .fontsize-ensurer.reset-size1.size7,.katex .sizing.reset-size1.size7{font-size:2.4em}.katex .fontsize-ensurer.reset-size1.size8,.katex .sizing.reset-size1.size8{font-size:2.88em}.katex .fontsize-ensurer.reset-size1.size9,.katex .sizing.reset-size1.size9{font-size:3.456em}.katex .fontsize-ensurer.reset-size1.size10,.katex .sizing.reset-size1.size10{font-size:4.148em}.katex .fontsize-ensurer.reset-size1.size11,.katex .sizing.reset-size1.size11{font-size:4.976em}.katex .fontsize-ensurer.reset-size2.size1,.katex .sizing.reset-size2.size1{font-size:.8333333333em}.katex .fontsize-ensurer.reset-size2.size2,.katex .sizing.reset-size2.size2{font-size:1em}.katex .fontsize-ensurer.reset-size2.size3,.katex .sizing.reset-size2.size3{font-size:1.1666666667em}.katex .fontsize-ensurer.reset-size2.size4,.katex .sizing.reset-size2.size4{font-size:1.3333333333em}.katex .fontsize-ensurer.reset-size2.size5,.katex .sizing.reset-size2.size5{font-size:1.5em}.katex .fontsize-ensurer.reset-size2.size6,.katex .sizing.reset-size2.size6{font-size:1.6666666667em}.katex .fontsize-ensurer.reset-size2.size7,.katex .sizing.reset-size2.size7{font-size:2em}.katex .fontsize-ensurer.reset-size2.size8,.katex .sizing.reset-size2.size8{font-size:2.4em}.katex .fontsize-ensurer.reset-size2.size9,.katex .sizing.reset-size2.size9{font-size:2.88em}.katex .fontsize-ensurer.reset-size2.size10,.katex .sizing.reset-size2.size10{font-size:3.4566666667em}.katex .fontsize-ensurer.reset-size2.size11,.katex .sizing.reset-size2.size11{font-size:4.1466666667em}.katex .fontsize-ensurer.reset-size3.size1,.katex .sizing.reset-size3.size1{font-size:.7142857143em}.katex .fontsize-ensurer.reset-size3.size2,.katex .sizing.reset-size3.size2{font-size:.8571428571em}.katex .fontsize-ensurer.reset-size3.size3,.katex .sizing.reset-size3.size3{font-size:1em}.katex .fontsize-ensurer.reset-size3.size4,.katex .sizing.reset-size3.size4{font-size:1.1428571429em}.katex .fontsize-ensurer.reset-size3.size5,.katex .sizing.reset-size3.size5{font-size:1.2857142857em}.katex .fontsize-ensurer.reset-size3.size6,.katex .sizing.reset-size3.size6{font-size:1.4285714286em}.katex .fontsize-ensurer.reset-size3.size7,.katex .sizing.reset-size3.size7{font-size:1.7142857143em}.katex .fontsize-ensurer.reset-size3.size8,.katex .sizing.reset-size3.size8{font-size:2.0571428571em}.katex .fontsize-ensurer.reset-size3.size9,.katex .sizing.reset-size3.size9{font-size:2.4685714286em}.katex .fontsize-ensurer.reset-size3.size10,.katex .sizing.reset-size3.size10{font-size:2.9628571429em}.katex .fontsize-ensurer.reset-size3.size11,.katex .sizing.reset-size3.size11{font-size:3.5542857143em}.katex .fontsize-ensurer.reset-size4.size1,.katex .sizing.reset-size4.size1{font-size:.625em}.katex .fontsize-ensurer.reset-size4.size2,.katex .sizing.reset-size4.size2{font-size:.75em}.katex .fontsize-ensurer.reset-size4.size3,.katex .sizing.reset-size4.size3{font-size:.875em}.katex .fontsize-ensurer.reset-size4.size4,.katex .sizing.reset-size4.size4{font-size:1em}.katex .fontsize-ensurer.reset-size4.size5,.katex .sizing.reset-size4.size5{font-size:1.125em}.katex .fontsize-ensurer.reset-size4.size6,.katex .sizing.reset-size4.size6{font-size:1.25em}.katex .fontsize-ensurer.reset-size4.size7,.katex .sizing.reset-size4.size7{font-size:1.5em}.katex .fontsize-ensurer.reset-size4.size8,.katex .sizing.reset-size4.size8{font-size:1.8em}.katex .fontsize-ensurer.reset-size4.size9,.katex .sizing.reset-size4.size9{font-size:2.16em}.katex .fontsize-ensurer.reset-size4.size10,.katex .sizing.reset-size4.size10{font-size:2.5925em}.katex .fontsize-ensurer.reset-size4.size11,.katex .sizing.reset-size4.size11{font-size:3.11em}.katex .fontsize-ensurer.reset-size5.size1,.katex .sizing.reset-size5.size1{font-size:.5555555556em}.katex .fontsize-ensurer.reset-size5.size2,.katex .sizing.reset-size5.size2{font-size:.6666666667em}.katex .fontsize-ensurer.reset-size5.size3,.katex .sizing.reset-size5.size3{font-size:.7777777778em}.katex .fontsize-ensurer.reset-size5.size4,.katex .sizing.reset-size5.size4{font-size:.8888888889em}.katex .fontsize-ensurer.reset-size5.size5,.katex .sizing.reset-size5.size5{font-size:1em}.katex .fontsize-ensurer.reset-size5.size6,.katex .sizing.reset-size5.size6{font-size:1.1111111111em}.katex .fontsize-ensurer.reset-size5.size7,.katex .sizing.reset-size5.size7{font-size:1.3333333333em}.katex .fontsize-ensurer.reset-size5.size8,.katex .sizing.reset-size5.size8{font-size:1.6em}.katex .fontsize-ensurer.reset-size5.size9,.katex .sizing.reset-size5.size9{font-size:1.92em}.katex .fontsize-ensurer.reset-size5.size10,.katex .sizing.reset-size5.size10{font-size:2.3044444444em}.katex .fontsize-ensurer.reset-size5.size11,.katex .sizing.reset-size5.size11{font-size:2.7644444444em}.katex .fontsize-ensurer.reset-size6.size1,.katex .sizing.reset-size6.size1{font-size:.5em}.katex .fontsize-ensurer.reset-size6.size2,.katex .sizing.reset-size6.size2{font-size:.6em}.katex .fontsize-ensurer.reset-size6.size3,.katex .sizing.reset-size6.size3{font-size:.7em}.katex .fontsize-ensurer.reset-size6.size4,.katex .sizing.reset-size6.size4{font-size:.8em}.katex .fontsize-ensurer.reset-size6.size5,.katex .sizing.reset-size6.size5{font-size:.9em}.katex .fontsize-ensurer.reset-size6.size6,.katex .sizing.reset-size6.size6{font-size:1em}.katex .fontsize-ensurer.reset-size6.size7,.katex .sizing.reset-size6.size7{font-size:1.2em}.katex .fontsize-ensurer.reset-size6.size8,.katex .sizing.reset-size6.size8{font-size:1.44em}.katex .fontsize-ensurer.reset-size6.size9,.katex .sizing.reset-size6.size9{font-size:1.728em}.katex .fontsize-ensurer.reset-size6.size10,.katex .sizing.reset-size6.size10{font-size:2.074em}.katex .fontsize-ensurer.reset-size6.size11,.katex .sizing.reset-size6.size11{font-size:2.488em}.katex .fontsize-ensurer.reset-size7.size1,.katex .sizing.reset-size7.size1{font-size:.4166666667em}.katex .fontsize-ensurer.reset-size7.size2,.katex .sizing.reset-size7.size2{font-size:.5em}.katex .fontsize-ensurer.reset-size7.size3,.katex .sizing.reset-size7.size3{font-size:.5833333333em}.katex .fontsize-ensurer.reset-size7.size4,.katex .sizing.reset-size7.size4{font-size:.6666666667em}.katex .fontsize-ensurer.reset-size7.size5,.katex .sizing.reset-size7.size5{font-size:.75em}.katex .fontsize-ensurer.reset-size7.size6,.katex .sizing.reset-size7.size6{font-size:.8333333333em}.katex .fontsize-ensurer.reset-size7.size7,.katex .sizing.reset-size7.size7{font-size:1em}.katex .fontsize-ensurer.reset-size7.size8,.katex .sizing.reset-size7.size8{font-size:1.2em}.katex .fontsize-ensurer.reset-size7.size9,.katex .sizing.reset-size7.size9{font-size:1.44em}.katex .fontsize-ensurer.reset-size7.size10,.katex .sizing.reset-size7.size10{font-size:1.7283333333em}.katex .fontsize-ensurer.reset-size7.size11,.katex .sizing.reset-size7.size11{font-size:2.0733333333em}.katex .fontsize-ensurer.reset-size8.size1,.katex .sizing.reset-size8.size1{font-size:.3472222222em}.katex .fontsize-ensurer.reset-size8.size2,.katex .sizing.reset-size8.size2{font-size:.4166666667em}.katex .fontsize-ensurer.reset-size8.size3,.katex .sizing.reset-size8.size3{font-size:.4861111111em}.katex .fontsize-ensurer.reset-size8.size4,.katex .sizing.reset-size8.size4{font-size:.5555555556em}.katex .fontsize-ensurer.reset-size8.size5,.katex .sizing.reset-size8.size5{font-size:.625em}.katex .fontsize-ensurer.reset-size8.size6,.katex .sizing.reset-size8.size6{font-size:.6944444444em}.katex .fontsize-ensurer.reset-size8.size7,.katex .sizing.reset-size8.size7{font-size:.8333333333em}.katex .fontsize-ensurer.reset-size8.size8,.katex .sizing.reset-size8.size8{font-size:1em}.katex .fontsize-ensurer.reset-size8.size9,.katex .sizing.reset-size8.size9{font-size:1.2em}.katex .fontsize-ensurer.reset-size8.size10,.katex .sizing.reset-size8.size10{font-size:1.4402777778em}.katex .fontsize-ensurer.reset-size8.size11,.katex .sizing.reset-size8.size11{font-size:1.7277777778em}.katex .fontsize-ensurer.reset-size9.size1,.katex .sizing.reset-size9.size1{font-size:.2893518519em}.katex .fontsize-ensurer.reset-size9.size2,.katex .sizing.reset-size9.size2{font-size:.3472222222em}.katex .fontsize-ensurer.reset-size9.size3,.katex .sizing.reset-size9.size3{font-size:.4050925926em}.katex .fontsize-ensurer.reset-size9.size4,.katex .sizing.reset-size9.size4{font-size:.462962963em}.katex .fontsize-ensurer.reset-size9.size5,.katex .sizing.reset-size9.size5{font-size:.5208333333em}.katex .fontsize-ensurer.reset-size9.size6,.katex .sizing.reset-size9.size6{font-size:.5787037037em}.katex .fontsize-ensurer.reset-size9.size7,.katex .sizing.reset-size9.size7{font-size:.6944444444em}.katex .fontsize-ensurer.reset-size9.size8,.katex .sizing.reset-size9.size8{font-size:.8333333333em}.katex .fontsize-ensurer.reset-size9.size9,.katex .sizing.reset-size9.size9{font-size:1em}.katex .fontsize-ensurer.reset-size9.size10,.katex .sizing.reset-size9.size10{font-size:1.2002314815em}.katex .fontsize-ensurer.reset-size9.size11,.katex .sizing.reset-size9.size11{font-size:1.4398148148em}.katex .fontsize-ensurer.reset-size10.size1,.katex .sizing.reset-size10.size1{font-size:.2410800386em}.katex .fontsize-ensurer.reset-size10.size2,.katex .sizing.reset-size10.size2{font-size:.2892960463em}.katex .fontsize-ensurer.reset-size10.size3,.katex .sizing.reset-size10.size3{font-size:.337512054em}.katex .fontsize-ensurer.reset-size10.size4,.katex .sizing.reset-size10.size4{font-size:.3857280617em}.katex .fontsize-ensurer.reset-size10.size5,.katex .sizing.reset-size10.size5{font-size:.4339440694em}.katex .fontsize-ensurer.reset-size10.size6,.katex .sizing.reset-size10.size6{font-size:.4821600771em}.katex .fontsize-ensurer.reset-size10.size7,.katex .sizing.reset-size10.size7{font-size:.5785920926em}.katex .fontsize-ensurer.reset-size10.size8,.katex .sizing.reset-size10.size8{font-size:.6943105111em}.katex .fontsize-ensurer.reset-size10.size9,.katex .sizing.reset-size10.size9{font-size:.8331726133em}.katex .fontsize-ensurer.reset-size10.size10,.katex .sizing.reset-size10.size10{font-size:1em}.katex .fontsize-ensurer.reset-size10.size11,.katex .sizing.reset-size10.size11{font-size:1.1996142719em}.katex .fontsize-ensurer.reset-size11.size1,.katex .sizing.reset-size11.size1{font-size:.2009646302em}.katex .fontsize-ensurer.reset-size11.size2,.katex .sizing.reset-size11.size2{font-size:.2411575563em}.katex .fontsize-ensurer.reset-size11.size3,.katex .sizing.reset-size11.size3{font-size:.2813504823em}.katex .fontsize-ensurer.reset-size11.size4,.katex .sizing.reset-size11.size4{font-size:.3215434084em}.katex .fontsize-ensurer.reset-size11.size5,.katex .sizing.reset-size11.size5{font-size:.3617363344em}.katex .fontsize-ensurer.reset-size11.size6,.katex .sizing.reset-size11.size6{font-size:.4019292605em}.katex .fontsize-ensurer.reset-size11.size7,.katex .sizing.reset-size11.size7{font-size:.4823151125em}.katex .fontsize-ensurer.reset-size11.size8,.katex .sizing.reset-size11.size8{font-size:.578778135em}.katex .fontsize-ensurer.reset-size11.size9,.katex .sizing.reset-size11.size9{font-size:.6945337621em}.katex .fontsize-ensurer.reset-size11.size10,.katex .sizing.reset-size11.size10{font-size:.8336012862em}.katex .fontsize-ensurer.reset-size11.size11,.katex .sizing.reset-size11.size11{font-size:1em}.katex .delimsizing.size1{font-family:KaTeX_Size1}.katex .delimsizing.size2{font-family:KaTeX_Size2}.katex .delimsizing.size3{font-family:KaTeX_Size3}.katex .delimsizing.size4{font-family:KaTeX_Size4}.katex .delimsizing.mult .delim-size1>span{font-family:KaTeX_Size1}.katex .delimsizing.mult .delim-size4>span{font-family:KaTeX_Size4}.katex .nulldelimiter{display:inline-block;width:.12em}.katex .delimcenter,.katex .op-symbol{position:relative}.katex .op-symbol.small-op{font-family:KaTeX_Size1}.katex .op-symbol.large-op{font-family:KaTeX_Size2}.katex .accent>.vlist-t,.katex .op-limits>.vlist-t{text-align:center}.katex .accent .accent-body{position:relative}.katex .accent .accent-body:not(.accent-full){width:0}.katex .overlay{display:block}.katex .mtable .vertical-separator{display:inline-block;min-width:1px}.katex .mtable .arraycolsep{display:inline-block}.katex .mtable .col-align-c>.vlist-t{text-align:center}.katex .mtable .col-align-l>.vlist-t{text-align:left}.katex .mtable .col-align-r>.vlist-t{text-align:right}.katex .svg-align{text-align:left}.katex svg{fill:currentColor;stroke:currentColor;display:block;height:inherit;position:absolute;width:100%}.katex svg path{stroke:none}.katex svg{fill-rule:nonzero;fill-opacity:1;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1}.katex img{border-style:none;max-height:none;max-width:none;min-height:0;min-width:0}.katex .stretchy{display:block;overflow:hidden;position:relative;width:100%}.katex .stretchy:after,.katex .stretchy:before{content:""}.katex .hide-tail{overflow:hidden;position:relative;width:100%}.katex .halfarrow-left{left:0;overflow:hidden;position:absolute;width:50.2%}.katex .halfarrow-right{overflow:hidden;position:absolute;right:0;width:50.2%}.katex .brace-left{left:0;overflow:hidden;position:absolute;width:25.1%}.katex .brace-center{left:25%;overflow:hidden;position:absolute;width:50%}.katex .brace-right{overflow:hidden;position:absolute;right:0;width:25.1%}.katex .x-arrow-pad{padding:0 .5em}.katex .cd-arrow-pad{padding:0 .55556em 0 .27778em}.katex .mover,.katex .munder,.katex .x-arrow{text-align:center}.katex .boxpad{padding:0 .3em}.katex .fbox,.katex .fcolorbox{border:.04em solid;box-sizing:border-box}.katex .cancel-pad{padding:0 .2em}.katex .cancel-lap{margin-left:-.2em;margin-right:-.2em}.katex .sout{border-bottom-style:solid;border-bottom-width:.08em}.katex .angl{border-right:.049em solid;border-top:.049em solid;box-sizing:border-box;margin-right:.03889em}.katex .anglpad{padding:0 .03889em}.katex .eqn-num:before{content:"(" counter(katexEqnNo) ")";counter-increment:katexEqnNo}.katex .mml-eqn-num:before{content:"(" counter(mmlEqnNo) ")";counter-increment:mmlEqnNo}.katex .mtr-glue{width:50%}.katex .cd-vert-arrow{display:inline-block;position:relative}.katex .cd-label-left{display:inline-block;position:absolute;right:calc(50% + .3em);text-align:left}.katex .cd-label-right{display:inline-block;left:calc(50% + .3em);position:absolute;text-align:right}.katex-display{display:block;margin:1em 0;text-align:center}.katex-display>.katex{display:block;text-align:center;white-space:nowrap}.katex-display>.katex>.katex-html{display:block;position:relative}.katex-display>.katex>.katex-html>.tag{position:absolute;right:0}.katex-display.leqno>.katex>.katex-html>.tag{left:0;right:auto}.katex-display.fleqn>.katex{padding-left:2em;text-align:left}body{counter-reset:katexEqnNo mmlEqnNo}.degasser-v2-container.degasser-container{max-width:none;width:100%;margin:0;padding:16px 24px}.degasser-v2-container .panel.full-span{width:100%}@media(max-width:800px){.degasser-v2-container.degasser-container{padding:12px}}.blower-container{padding:16px}.blower-window{background:var(--surface);border:1px solid var(--border);border-radius:6px;box-shadow:0 4px 16px #0000001f;overflow:hidden;max-width:1100px;margin:0 auto}.blower-titlebar{display:grid;grid-template-columns:1fr auto 1fr;align-items:center;background:linear-gradient(180deg,#1f3a4d,#15293a);color:#fff;padding:8px 14px;gap:12px}.blower-titlebar-left{display:flex;align-items:center;gap:10px;font-weight:700;font-size:1rem}.blower-titlebar-left svg{font-size:1.2rem;opacity:.85}.blower-titlebar-center{display:flex;align-items:center;justify-content:center;letter-spacing:2px;font-weight:600;font-size:.85rem;opacity:.75}.blower-titlebar-right{display:flex;align-items:center;justify-content:flex-end;gap:8px;font-size:.8rem;opacity:.8}.blower-status-dot{width:9px;height:9px;border-radius:50%;background:#6b7280;flex-shrink:0}.blower-status-dot.live{background:#22c55e;box-shadow:0 0 6px #22c55e88}.blower-tabs{display:flex;border-bottom:1px solid var(--border, #e5e7eb);background:var(--surface);padding:0 20px;gap:0}.blower-tab{padding:10px 20px;background:transparent;border:none;border-bottom:3px solid transparent;color:var(--muted, #6b7280);cursor:pointer;font-size:.9rem;font-weight:500;transition:color .15s,border-color .15s;margin-bottom:-1px}.blower-tab:hover{color:var(--text, inherit)}.blower-tab.active{color:#2563eb;border-bottom-color:#2563eb;font-weight:600}.blower-body{padding:24px}.blower-gauges{display:grid;grid-template-columns:repeat(auto-fit,minmax(320px,1fr));gap:24px}.blower-log-controls{display:flex;gap:12px;align-items:center;margin-bottom:20px;flex-wrap:wrap}.blower-log-grid{display:grid;grid-template-columns:minmax(280px,320px) 1fr;gap:24px;align-items:start}@media(max-width:700px){.blower-log-grid{grid-template-columns:1fr}}.blower-panel{border:1px solid var(--border, #e5e7eb);border-radius:12px;padding:16px}.blower-panel-center{display:flex;flex-direction:column;align-items:center}.blower-error{background:#fef2f2;color:#991b1b;border:1px solid #fecaca;padding:8px 12px;border-radius:6px;margin-bottom:16px;font-size:.9rem}.blower-warn{background:#fffbeb;color:#92400e;border:1px solid #fde68a;padding:8px 12px;border-radius:6px;margin-bottom:16px;font-size:.9rem}.drives-overview{padding:1.5rem;max-width:1200px;margin:0 auto}.drives-overview h1{font-size:1.75rem;font-weight:700;margin-bottom:1.5rem;color:var(--heading, #1f2937)}.drives-error{padding:1rem;margin-bottom:1.5rem;background-color:#fee2e2;border:1px solid #fecaca;border-radius:6px;color:#991b1b;font-size:.9rem}.drives-loading,.drives-empty{padding:2rem 1rem;text-align:center;color:var(--muted, #6b7280);font-size:.95rem}.drives-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(320px,1fr));gap:1.25rem}.drive-card{border:1px solid var(--border, #e5e7eb);border-radius:8px;padding:1.25rem;background-color:var(--card-bg, #ffffff);box-shadow:0 1px 3px #0000001a;transition:box-shadow .2s ease}.drive-card:hover{box-shadow:0 4px 12px #00000026}.drive-header{margin-bottom:1rem;border-bottom:1px solid var(--border, #e5e7eb);padding-bottom:.75rem}.drive-title{font-size:1.1rem;font-weight:600;color:var(--text, #111827);margin-bottom:.25rem}.drive-meta{font-size:.8rem;color:var(--muted, #6b7280)}.drive-signals{display:flex;flex-direction:column;gap:.5rem}.signals-label{font-size:.75rem;font-weight:600;text-transform:uppercase;letter-spacing:.05em;color:var(--muted, #6b7280)}.signals-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:.4rem}.signal-item{display:flex;gap:.5rem;font-size:.85rem;color:var(--text, #111827);padding:.3rem .5rem;background-color:var(--signal-bg, #f3f4f6);border-radius:4px}.signal-name{font-weight:500;flex:1;word-break:break-word}.signal-unit{color:var(--muted, #6b7280);font-size:.75rem;white-space:nowrap}@media(max-width:768px){.drives-overview{padding:1rem}.drives-grid{grid-template-columns:1fr}.drives-overview h1{font-size:1.5rem}}.oxygenation-container{padding:24px}.oxygenation-panel{padding:0;overflow:hidden}.oxygenation-panel .panel-header{display:flex;align-items:center;justify-content:flex-start;gap:12px;padding:24px 24px 0}.oxygenation-panel .panel-header h3{margin:0;color:var(--primary)}.oxygenation-header-main{display:inline-flex;align-items:center;gap:10px}.oxygenation-info-button{width:28px;height:28px;border:1px solid var(--border);border-radius:999px;background:var(--surface-soft);color:var(--primary);font-size:.95rem;font-weight:700;line-height:1;cursor:pointer}.oxygenation-info-button:hover{background:#e9eef3}.oxygenation-info-panel{margin:12px 24px 0;max-width:780px;padding:12px 14px;border:1px solid var(--border);border-radius:8px;background:var(--surface-soft);color:var(--muted);font-size:.92rem;line-height:1.45}.oxy-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:14px;padding:16px;align-items:start}@media(max-width:1200px){.oxy-grid{grid-template-columns:1fr 1fr}}@media(max-width:720px){.oxy-grid{grid-template-columns:1fr}}.oxy-col{display:flex;flex-direction:column;gap:14px;min-width:0}.oxy-card{background:var(--surface-soft);border:1px solid var(--border);border-radius:6px;padding:12px 14px;text-align:left}.oxy-card-title{margin:0 0 10px;font-size:.95rem;font-weight:700;color:var(--text)}.oxy-row{display:grid;grid-template-columns:1fr auto;align-items:center;gap:10px;padding:4px 0;min-height:28px}.oxy-label{color:var(--muted);font-size:.9rem}.oxy-value-group{display:inline-flex;align-items:center;gap:6px}.oxy-value{display:inline-block;min-width:70px;text-align:right;background:#e9eef3;color:#1f262e;padding:4px 8px;border-radius:3px;font-variant-numeric:tabular-nums;font-weight:600}.oxy-value.readonly{background:#e9eef3;color:#4e5866}.oxy-value.strong{background:#d8e6ee;color:#0f3a4a}.oxy-value.alarm{background:#fdecea;color:#b3261e;outline:1px solid #e0907a}.oxy-unit{font-size:.85rem;color:#4e5866;min-width:36px}.oxy-unit.unit-blue{color:#1f6e95;font-weight:600}.oxy-input{width:80px;padding:4px 8px;border:1px solid var(--border);background:#fff;border-radius:3px;text-align:right;font-variant-numeric:tabular-nums;font-weight:600;color:#1f262e}.oxy-input:focus{outline:2px solid var(--primary);outline-offset:0}.oxy-alarm-icon{color:#d97a1f;font-size:.95rem}.oxy-sensor.has-alarm{border-color:#e0907a;box-shadow:0 0 0 2px #e0907a26 inset}.oxy-valves-card{display:flex;flex-direction:column}.oxy-valves-row{display:flex;gap:12px;justify-content:space-around;margin-bottom:10px}.oxy-rotameter{display:flex;flex-direction:column;align-items:center;flex:1;min-width:0}.oxy-rotameter-label{font-size:.75rem;font-weight:700;color:var(--muted);letter-spacing:1px;margin-bottom:4px}.oxy-rotameter-svg{width:100%;max-width:110px;height:170px}.oxy-rotameter-readings{width:100%;margin-top:6px;display:flex;flex-direction:column;gap:4px}.oxy-mini-row{display:grid;grid-template-columns:56px 1fr auto;align-items:center;gap:6px;font-size:.78rem}.oxy-mini-label{color:var(--muted)}.oxy-mini-value{background:#e9eef3;padding:2px 6px;border-radius:3px;text-align:right;font-variant-numeric:tabular-nums;font-weight:600;color:#1f262e}.oxy-mini-unit{color:#1f6e95;font-weight:600}.oxy-mini-slider{width:100%}.oxy-valves-summary{border-top:1px solid var(--border);padding-top:8px;margin-top:4px}.oxy-conetank-svg{width:100%;height:auto;max-height:240px;background:#fff;border:1px solid var(--border);border-radius:4px}.oxy-conetank-readings{margin-top:10px}:root.dark-theme .oxy-value,:root.dark-theme .oxy-value.readonly{background:#2a3744;color:#e6edf4}:root.dark-theme .oxy-value.strong{background:#1f4f63;color:#e6f3fa}:root.dark-theme .oxy-input{background:#1a222b;color:#e6edf4}:root.dark-theme .oxy-mini-value{background:#2a3744;color:#e6edf4}:root.dark-theme .oxy-config-delete-btn{background:#3a2424;border-color:#7b3c3c;color:#ffb9b0}:root.dark-theme .oxy-config-delete-btn:hover:not(:disabled){background:#4a2b2b}:root.dark-theme .oxy-conetank-svg{background:#1a222b}.oxy-body{display:flex;align-items:flex-start;gap:0;margin-top:16px;border-bottom:1px solid var(--border)}.oxy-sim-sidebar{flex-shrink:0;width:240px;padding:16px 8px 16px 16px;align-self:stretch}.oxy-body>.oxy-grid{flex:1;min-width:0}.oxy-sim-panel{display:flex;flex-direction:column;gap:12px;height:100%}.oxy-config-panel{margin-top:4px;padding-top:10px;border-top:1px solid var(--border)}.oxy-config-delete-btn{border:1px solid #d7a29a;background:#fff3f1;color:#a33b2f;border-radius:4px;padding:4px 8px;font-size:.78rem;font-weight:600;cursor:pointer}.oxy-config-delete-btn:disabled{cursor:default;opacity:.65}.oxy-config-delete-btn:hover:not(:disabled){background:#fdecea}.oxy-sim-controls{display:flex;align-items:center;gap:16px;flex-wrap:wrap}.oxy-sim-btn{padding:7px 20px;border:none;border-radius:4px;font-weight:700;font-size:.95rem;cursor:pointer;letter-spacing:.5px;transition:background .15s ease}.oxy-sim-btn.start{background:#2faa5c;color:#fff}.oxy-sim-btn.start:hover{background:#279e54}.oxy-sim-btn.stop{background:#c0392b;color:#fff}.oxy-sim-btn.stop:hover{background:#a93226}.oxy-sim-time-group{display:inline-flex;align-items:center;gap:8px}.oxy-sim-elapsed{font-size:.88rem;color:var(--muted);font-variant-numeric:tabular-nums}.oxy-sim-init-title{font-size:.85rem;font-weight:700;color:var(--muted);text-transform:uppercase;letter-spacing:1px;border-top:1px solid var(--border);padding-top:10px}.oxy-sim-init-grid{display:flex;flex-direction:column;gap:2px}.oxy-plot-row{padding:0 16px 20px;width:100%;box-sizing:border-box}.oxy-plot-toolbar{display:flex;justify-content:flex-end;padding:0 0 10px}.oxy-plot-freeze-toggle{display:inline-flex;align-items:center;gap:8px;color:var(--text);font-size:.9rem;font-weight:600}.oxy-plot-freeze-toggle input{width:16px;height:16px;accent-color:var(--primary)}.oxy-plot-row .oxy-card{min-height:280px}.oxy-plot-empty{color:var(--muted);font-size:.9rem;text-align:center;padding:24px;background:var(--surface-soft);border:1px dashed var(--border);border-radius:6px;margin:0}.oxy-plot-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:14px}@media(max-width:1100px){.oxy-plot-grid{grid-template-columns:1fr}}.oxy-config-btn{padding:6px 12px;background:var(--surface);border:1px solid var(--border);color:var(--text);border-radius:4px;font-size:.85rem;font-weight:600;cursor:pointer}.oxy-config-btn:hover{background:#e9eef3}:root.dark-theme .oxy-config-btn:hover{background:#2a3744}:root.dark-theme .oxygenation-info-button:hover{background:#2a3744}.oxy-hint{color:var(--muted);font-size:.78rem;font-weight:400;margin-left:4px}.oxy-modal-overlay{position:fixed;inset:0;background:#0f1e2d8c;display:flex;align-items:center;justify-content:center;z-index:1000;padding:16px}.oxy-modal{background:var(--surface);border:1px solid var(--border);border-radius:8px;box-shadow:0 12px 48px #00000059;width:100%;max-width:480px;max-height:90vh;display:flex;flex-direction:column;overflow:hidden}.oxy-modal-header{display:flex;align-items:center;justify-content:space-between;background:linear-gradient(180deg,#1f3a4d,#15293a);color:#fff;padding:10px 14px}.oxy-modal-title{margin:0;font-size:1rem;font-weight:700;letter-spacing:.5px}.oxy-modal-close{background:transparent;border:0;color:#fff;font-size:1.4rem;line-height:1;cursor:pointer;padding:0 6px}.oxy-modal-body{padding:14px 16px;overflow-y:auto}.oxy-modal-footer{padding:10px 16px;border-top:1px solid var(--border);display:flex;justify-content:flex-end;gap:10px}.oxy-modal-section{font-size:.78rem;font-weight:700;color:var(--muted);text-transform:uppercase;letter-spacing:1px;margin:10px 0 4px;border-bottom:1px solid var(--border);padding-bottom:4px}.oxy-modal-section:first-child{margin-top:0}.oxy-modal-hint{margin-top:10px;padding:8px 10px;background:var(--surface-soft);border:1px solid var(--border);border-radius:4px;font-size:.82rem;color:var(--muted)}.fp-container{padding:16px}.fp-header{display:flex;align-items:center;gap:14px;margin-bottom:16px}.fp-header-icon{font-size:2rem;line-height:1;color:var(--primary);font-weight:700;font-family:sans-serif;flex-shrink:0}.fp-header-text h2{margin:0 0 2px;font-size:1.25rem;font-weight:700;color:var(--text)}.fp-header-text p{margin:0;font-size:.85rem;color:var(--muted)}.fp-header-actions{margin-left:auto;display:flex;align-items:center;gap:8px}.fp-layout{display:flex;align-items:flex-start;gap:16px}.fp-input-panel{flex-shrink:0;width:240px;background:var(--surface);border:1px solid var(--border);border-radius:6px;padding:14px;display:flex;flex-direction:column;gap:0}.fp-input-panel-title{font-size:.75rem;font-weight:700;text-transform:uppercase;letter-spacing:1px;color:var(--muted);margin:0 0 12px}.fp-input-section-label{font-size:.7rem;font-weight:700;text-transform:uppercase;letter-spacing:.8px;color:var(--primary);margin:10px 0 6px;border-top:1px solid var(--border);padding-top:10px}.fp-input-section-label:first-of-type{margin-top:0;border-top:none;padding-top:0}.fp-input-row{display:flex;flex-direction:column;gap:3px;margin-bottom:8px}.fp-input-label{display:flex;justify-content:space-between;font-size:.82rem;color:var(--text);font-weight:600}.fp-input-unit{color:var(--muted);font-weight:400;font-size:.78rem}.fp-input-field{width:100%;padding:5px 8px;border:1px solid var(--border);border-radius:4px;background:var(--surface-soft);color:var(--text);font-size:.88rem;font-variant-numeric:tabular-nums;text-align:right;transition:border-color .15s}.fp-input-field:focus{outline:none;border-color:var(--primary);background:var(--surface)}.fp-input-field.invalid{border-color:#c0392b;background:#fdf3f3}.fp-input-description{font-size:.7rem;color:var(--muted)}.fp-reset-btn{margin-top:14px;width:100%;padding:7px;background:transparent;border:1px solid var(--border);border-radius:4px;color:var(--muted);font-size:.82rem;cursor:pointer;transition:background .15s,color .15s}.fp-reset-btn:hover{background:var(--surface-soft);color:var(--text);border-color:var(--primary)}.fp-results{flex:1;min-width:0;display:flex;flex-direction:column;gap:14px}.fp-status{display:flex;align-items:center;gap:10px;font-size:.82rem;min-height:24px}.fp-status-loading{color:var(--primary)}.fp-status-error{color:#c0392b;background:#fdecea;border:1px solid #e8a59a;border-radius:4px;padding:6px 10px;font-size:.82rem;flex:1}.fp-status-stale{color:var(--muted);font-style:italic}.fp-section{background:var(--surface);border:1px solid var(--border);border-radius:6px;padding:14px 16px}.fp-section-title{font-size:.72rem;font-weight:700;text-transform:uppercase;letter-spacing:1px;color:var(--muted);margin:0 0 12px}.fp-gas-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}.fp-gas-card{border-radius:6px;padding:12px 14px;border:1px solid transparent;position:relative;overflow:hidden}.fp-gas-card.o2{background:#e8f7ee;border-color:#a8d8ba}.fp-gas-card.n2{background:#e8f0fb;border-color:#a4bfef}.fp-gas-card.co2{background:#fef5e8;border-color:#f0cc8c}:root.dark-theme .fp-gas-card.o2{background:#1a3328;border-color:#2d6645}:root.dark-theme .fp-gas-card.n2{background:#1a2840;border-color:#2d4a7a}:root.dark-theme .fp-gas-card.co2{background:#332a18;border-color:#7a5c1a}.fp-gas-symbol{font-size:.72rem;font-weight:700;text-transform:uppercase;letter-spacing:1px;opacity:.65;margin-bottom:4px}.fp-gas-card.o2 .fp-gas-symbol{color:#1a7a42}.fp-gas-card.n2 .fp-gas-symbol{color:#1a4a9a}.fp-gas-card.co2 .fp-gas-symbol{color:#9a5c10}.fp-gas-value{font-size:1.5rem;font-weight:700;font-variant-numeric:tabular-nums;line-height:1.1}.fp-gas-card.o2 .fp-gas-value{color:#0f5c30}.fp-gas-card.n2 .fp-gas-value{color:#0f3a7a}.fp-gas-card.co2 .fp-gas-value{color:#7a3c08}:root.dark-theme .fp-gas-card.o2 .fp-gas-value{color:#5dd899}:root.dark-theme .fp-gas-card.n2 .fp-gas-value{color:#7aadff}:root.dark-theme .fp-gas-card.co2 .fp-gas-value{color:#ffc055}.fp-gas-unit{font-size:.78rem;font-weight:600;opacity:.7;margin-left:4px}.fp-gas-sub{font-size:.75rem;color:var(--muted);margin-top:4px}.fp-gas-bar-track{position:absolute;bottom:0;left:0;right:0;height:3px;background:#00000014}.fp-gas-bar-fill{height:100%;border-radius:0 2px 0 0;transition:width .4s ease}.fp-gas-card.o2 .fp-gas-bar-fill{background:#2faa5c}.fp-gas-card.n2 .fp-gas-bar-fill{background:#2d7fe8}.fp-gas-card.co2 .fp-gas-bar-fill{background:#e8a020}.fp-prop-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:8px}.fp-prop-item{display:flex;flex-direction:column;gap:2px}.fp-prop-label{font-size:.75rem;color:var(--muted);font-weight:600}.fp-prop-value{font-size:1rem;font-weight:700;font-variant-numeric:tabular-nums;color:var(--text)}.fp-prop-unit{font-size:.75rem;font-weight:400;color:var(--muted);margin-left:4px}.fp-chart-section{background:var(--surface);border:1px solid var(--border);border-radius:6px;padding:14px 16px}.fp-view-toggle{display:inline-flex;border:1px solid var(--border);border-radius:4px;overflow:hidden}.fp-view-toggle button{padding:5px 12px;font-size:.78rem;font-weight:600;border:none;background:transparent;color:var(--muted);cursor:pointer;transition:background .12s,color .12s}.fp-view-toggle button.active{background:var(--primary);color:#fff}@keyframes fp-spin{to{transform:rotate(360deg)}}.fp-spinner{display:inline-block;width:14px;height:14px;border:2px solid var(--border);border-top-color:var(--primary);border-radius:50%;animation:fp-spin .7s linear infinite;vertical-align:middle;margin-right:6px}@media(max-width:900px){.fp-layout{flex-direction:column}.fp-input-panel{width:100%}.fp-gas-grid{grid-template-columns:1fr 1fr 1fr}}@media(max-width:600px){.fp-gas-grid{grid-template-columns:1fr}}.fishtalk-container{max-width:1100px;margin:0 auto;padding:20px 24px 40px;color:var(--text)}.ft-title{margin:0 0 4px;font-size:1.4rem}.ft-subtitle{margin:0 0 18px;color:var(--muted);font-size:.9rem}.ft-card{background:var(--surface);border:1px solid var(--border);border-radius:8px;padding:14px 16px;margin-bottom:16px;box-shadow:0 1px 2px #0000000a}.ft-card h3{margin:0 0 10px;font-size:1rem;letter-spacing:.3px;color:var(--text);border-bottom:1px solid var(--border);padding-bottom:6px}.ft-row{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin:8px 0}.ft-row label{color:var(--muted);font-size:.85rem;min-width:60px}.ft-input{padding:6px 10px;border:1px solid var(--border);border-radius:4px;background:var(--surface);color:var(--text);font-family:inherit;font-size:.9rem;min-width:160px}.ft-input.ft-method{min-width:92px}.ft-input.ft-scope{min-width:180px;flex:0 0 200px}.ft-input.ft-grow{flex:1 1 auto;min-width:240px;font-family:ui-monospace,SFMono-Regular,Menlo,monospace}.ft-textarea{width:100%;padding:10px;border:1px solid var(--border);border-radius:4px;background:var(--surface-soft, #f7f9fb);color:var(--text);font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:.85rem;resize:vertical;box-sizing:border-box}.ft-btn{padding:6px 14px;background:var(--surface);border:1px solid var(--border);color:var(--text);border-radius:4px;font-size:.88rem;font-weight:600;cursor:pointer}.ft-btn:hover:not(:disabled){background:#e9eef3}.ft-btn:disabled{opacity:.55;cursor:not-allowed}.ft-btn.primary{background:#1f5a8a;color:#fff;border-color:#1f5a8a}.ft-btn.primary:hover:not(:disabled){background:#275f8e}:root.dark-theme .ft-btn:hover:not(:disabled){background:#2a3744}.ft-pill{display:inline-block;padding:2px 8px;border-radius:999px;font-size:.72rem;font-weight:700;letter-spacing:.4px;text-transform:uppercase}.ft-pill.ok{background:#d6f0dc;color:#1a6b35}.ft-pill.warn{background:#fde6cf;color:#b14a08}:root.dark-theme .ft-pill.ok{background:#1c3d28;color:#95e1ab}:root.dark-theme .ft-pill.warn{background:#4a2a14;color:#f5b787}.ft-muted{color:var(--muted);font-size:.82rem}.ft-hint{color:var(--muted);font-size:.82rem;margin:6px 0 0}.ft-error{margin:8px 0;padding:8px 10px;background:#fde2e2;color:#8c1d1d;border:1px solid #f3b6b6;border-radius:4px;font-size:.85rem}:root.dark-theme .ft-error{background:#3a1c1c;color:#f3b6b6;border-color:#5a2a2a}.ft-kv{border-collapse:collapse}.ft-kv th,.ft-kv td{text-align:left;padding:4px 10px 4px 0;font-size:.88rem;vertical-align:top}.ft-kv th{color:var(--muted);font-weight:600;min-width:110px}.ft-kv code{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:.85rem}.ft-actions{list-style:none;padding:0;margin:0}.ft-actions li{margin:6px 0;display:flex;align-items:center;gap:8px;flex-wrap:wrap}.ft-action-group{border:1px solid var(--border);border-radius:4px;padding:6px 10px;margin:6px 0;background:var(--surface-soft, #f7f9fb)}.ft-action-group>summary{cursor:pointer;padding:4px 0;font-size:.9rem;-webkit-user-select:none;user-select:none}.ft-action-group[open]>summary{margin-bottom:6px}:root.dark-theme .ft-action-group{background:#1a2430}.ft-pre{background:#0f1a25;color:#d5e3f0;padding:10px 12px;border-radius:4px;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:.78rem;line-height:1.4;max-height:400px;overflow:auto;margin:8px 0 0}.ft-result,.ft-token-result{margin-top:8px}.ft-tabs{display:flex;gap:2px;border-bottom:1px solid var(--border);margin:4px 0 14px}.ft-tab{padding:8px 16px;background:transparent;border:1px solid transparent;border-bottom:none;color:var(--muted);font-size:.9rem;font-weight:600;cursor:pointer;border-radius:6px 6px 0 0;margin-bottom:-1px}.ft-tab:hover{color:var(--text);background:var(--surface-soft, #f7f9fb)}.ft-tab.active{background:var(--surface);border-color:var(--border);color:var(--text)}:root.dark-theme .ft-tab:hover{background:#1a2430}.ft-table-wrap{overflow-x:auto;margin-top:8px}.ft-table{width:100%;border-collapse:collapse;font-size:.88rem}.ft-table th,.ft-table td{text-align:left;padding:8px 10px;border-bottom:1px solid var(--border);vertical-align:top}.ft-table th{color:var(--muted);font-weight:600;font-size:.78rem;text-transform:uppercase;letter-spacing:.4px;border-bottom:2px solid var(--border);background:var(--surface-soft, #f7f9fb)}:root.dark-theme .ft-table th{background:#1a2430}.ft-table tbody tr:hover{background:var(--surface-soft, #f7f9fb)}:root.dark-theme .ft-table tbody tr:hover{background:#1a2430}.ft-table .ft-row-selected,.ft-table tr.ft-row-selected{background:#e6f0fa}:root.dark-theme .ft-table tr.ft-row-selected{background:#1f3247}.ft-table-inner th,.ft-table-inner td{padding:6px 8px;font-size:.83rem}.ft-id{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:.75rem;color:var(--muted)}.io-root{max-width:900px;margin:0 auto;padding:1.5rem 1rem 3rem;font-family:inherit}.io-header-row{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:.5rem;margin-bottom:1.5rem}.io-title{font-size:1.5rem;font-weight:700;margin:0}.io-header-meta{display:flex;align-items:center;gap:.75rem;flex-wrap:wrap}.io-health-badge{font-weight:700;font-size:.85rem;padding:3px 10px;border-radius:20px}.io-health-badge.healthy{background:#17a96e26;color:#17a96e}.io-health-badge.down{background:#dc354526;color:#dc3545}.io-cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(160px,1fr));gap:.75rem;margin-bottom:2rem}.io-card{background:var(--card-bg, #fff);border-radius:8px;padding:.75rem 1rem;box-shadow:0 1px 4px #00000014}.dark-theme .io-card{background:#1e1e2e;box-shadow:0 1px 6px #0006}.io-card-label{font-size:.72rem;text-transform:uppercase;letter-spacing:.06em;color:var(--text-muted, #888);margin-bottom:4px}.io-card-value{font-size:1.25rem;font-weight:700}.io-section{margin-bottom:2rem}.io-section-title{font-size:1rem;font-weight:700;margin:0 0 .6rem;padding-bottom:4px;border-bottom:2px solid #7c4dff;display:inline-block}.io-hint{font-size:.78rem;font-weight:400;color:var(--text-muted, #888);margin-left:6px}.io-table{width:100%;border-collapse:collapse;font-size:.9rem}.io-table th,.io-table td{padding:6px 10px;border-bottom:1px solid var(--border-color, #e8e8e8);text-align:left}.dark-theme .io-table th,.dark-theme .io-table td{border-bottom-color:#333}.io-range-table th{width:220px;color:var(--text-muted, #888);font-weight:500}.io-tag-row:hover{background:var(--row-hover, rgba(124, 77, 255, .06))}.io-expand-icon{display:inline-block;width:1rem;color:#7c4dff;font-size:.75rem}.io-tag-key{font-family:monospace}.io-tag-count{color:var(--text-muted, #888);width:80px;text-align:right}.io-tag-values-row td{padding:4px 10px 10px 26px;background:var(--subtle-bg, rgba(124, 77, 255, .04))}.io-tag-values-list{display:flex;flex-wrap:wrap;gap:4px}.io-tag-chip{background:#7c4dff1a;color:#7c4dff;border-radius:4px;padding:2px 7px;font-size:.78rem;font-family:monospace}.io-measurement-chip{display:inline-block;background:#007bff1a;color:#007bff;border-radius:4px;padding:3px 9px;font-size:.85rem;font-family:monospace;margin:2px}.io-chip-list{display:flex;flex-wrap:wrap;gap:4px}.io-muted{color:var(--text-muted, #888);font-size:.88rem}.io-error-text{color:#dc3545;font-size:.85rem}.io-refresh-btn{background:#7c4dff;color:#fff;border:none;border-radius:6px;padding:5px 14px;font-size:.85rem;cursor:pointer;transition:background .15s}.io-refresh-btn:hover{background:#6a3de8}.io-bucket-select{background:var(--io-card-bg, #fff);color:inherit;border:1px solid rgba(124,77,255,.45);border-radius:6px;padding:4px 10px;font-size:.85rem;cursor:pointer}.io-bucket-select:focus{outline:none;border-color:#7c4dff;box-shadow:0 0 0 2px #7c4dff40}.io-loading{padding:3rem;text-align:center;color:var(--text-muted, #888)}.io-error-page{padding:2rem;max-width:600px;margin:0 auto}.io-error-page pre{background:#dc35451a;padding:.75rem;border-radius:6px;font-size:.82rem;overflow:auto}.io-disk-meta{display:flex;gap:.6rem;flex-wrap:wrap;margin-bottom:.5rem;font-size:.9rem}.io-disk-bar-track{position:relative;height:18px;background:var(--bar-bg, #e8e8e8);border-radius:9px;overflow:hidden}.dark-theme .io-disk-bar-track{background:#333}.io-disk-bar-used{position:absolute;left:0;top:0;height:100%;border-radius:9px;transition:width .4s ease}.io-disk-bar-influx{position:absolute;left:0;top:0;height:100%;background:#7c4dff8c;border-radius:9px;transition:width .4s ease}.io-disk-legend{display:flex;gap:1rem;margin-top:.4rem;font-size:.8rem;color:var(--text-muted, #888);flex-wrap:wrap;align-items:center}.io-disk-legend-dot{display:inline-block;width:10px;height:10px;border-radius:50%;margin-right:4px}.water-log{padding:1rem 1.25rem 2rem;display:flex;flex-direction:column;gap:.75rem;width:100%;box-sizing:border-box}.water-log-bar{display:flex;flex-wrap:wrap;align-items:flex-end;justify-content:space-between;gap:1rem}.water-log-title{display:flex;align-items:flex-end;gap:1.5rem}.water-log-title h2{margin:0;font-size:1.25rem}.water-log-unit{display:flex;flex-direction:column;font-size:.75rem;font-weight:600;text-transform:uppercase;letter-spacing:.04em;color:#64748b;gap:.25rem}.water-log-unit input{width:6rem;padding:.35rem .5rem;font-size:.95rem;border:1px solid #cbd5e1;border-radius:6px}.water-log-actions{display:flex;gap:.5rem;flex-wrap:wrap}.water-log-actions button{padding:.45rem .9rem;font-size:.85rem;border:1px solid #cbd5e1;background:#f8fafc;border-radius:6px;cursor:pointer;color:#1e293b}.water-log-actions button:hover{background:#eef2f7}.water-log-actions button.primary{background:#2563eb;border-color:#2563eb;color:#fff}.water-log-actions button.primary:hover{background:#1d4ed8}.water-log-status{font-size:.85rem;color:#0f766e;background:#ecfdf5;border:1px solid #a7f3d0;padding:.4rem .7rem;border-radius:6px;align-self:flex-start}.water-log-table-wrap{overflow:auto;border:1px solid #e2e8f0;border-radius:8px;max-height:calc(100vh - 220px)}.water-log-table{border-collapse:collapse;font-size:.8rem;white-space:nowrap}.water-log-table th,.water-log-table td{border:1px solid #e2e8f0;padding:0;text-align:center}.water-log-table thead th{position:sticky;background:#f1f5f9;font-weight:600;color:#334155;padding:.3rem .5rem;z-index:1}.water-log-table .group-row th{top:0;background:#e2e8f0;text-transform:uppercase;font-size:.7rem;letter-spacing:.04em}.water-log-table .label-row th{top:27px}.water-log-table .unit-row th{top:54px;font-weight:400;font-style:italic;color:#64748b;font-size:.7rem}.water-log-table tbody td input{width:100%;min-width:4.5rem;border:none;padding:.3rem .4rem;font-size:.8rem;background:transparent;text-align:center;box-sizing:border-box}.water-log-table tbody td.comments-cell input{min-width:12rem;text-align:left}.water-log-table tbody td input:focus{outline:2px solid #2563eb;outline-offset:-2px;background:#eff6ff}.water-log-table tbody tr:nth-child(2n) td{background:#fafbfc}.sticky-col{position:sticky;left:0;z-index:2;background:#f1f5f9}.water-log-table thead .sticky-col{z-index:3}.row-action{width:2rem;min-width:2rem}.delete-row{border:none;background:transparent;color:#ef4444;font-size:1.1rem;line-height:1;cursor:pointer;width:100%;padding:.25rem}.delete-row:hover{color:#b91c1c}.dark-theme .water-log-table-wrap,.dark-theme .water-log-table th,.dark-theme .water-log-table td{border-color:#334155}.dark-theme .water-log-table thead th{background:#1e293b;color:#cbd5e1}.dark-theme .water-log-table .group-row th{background:#334155}.dark-theme .water-log-table tbody td input{color:#e2e8f0}.dark-theme .water-log-table tbody tr:nth-child(2n) td{background:#1a2433}.dark-theme .sticky-col{background:#1e293b}.de-container{padding:24px}.de-panel{padding:0;overflow:hidden}.de-header{padding:20px 24px 0;display:flex;align-items:center;gap:12px}.de-header h3{color:var(--primary)}.de-header-actions{margin-left:auto;display:flex;align-items:center}.de-time-bar{display:flex;align-items:center;flex-wrap:wrap;gap:6px;padding:12px 24px;border-bottom:1px solid var(--border);background:var(--surface-soft)}.de-time-label{font-size:.85rem;color:var(--muted);font-weight:600}.de-time-sep{color:var(--border);margin:0 2px}.de-time-to{color:var(--muted);font-size:.72rem}.de-time-resolved{font-size:.78rem;color:var(--muted);margin-left:4px}.de-preset{padding:4px 10px;border:1px solid var(--border);background:var(--surface);color:var(--text);border-radius:4px;font-size:.82rem;font-weight:600;cursor:pointer}.de-preset-active{background:var(--primary);color:#fff;border-color:var(--primary)}.de-preset:hover:not(.de-preset-active){background:var(--surface-soft)}.de-time-input{padding:4px 8px;border:1px solid var(--border);border-radius:4px;font-size:.75rem;background:var(--surface);color:var(--text);width:50px}.de-btn-refresh{padding:5px 14px;background:var(--primary);color:#fff;border:none;border-radius:4px;font-weight:700;cursor:pointer;font-size:.85rem}.de-btn-refresh:disabled{opacity:.6;cursor:default}.de-btn-refresh:hover:not(:disabled){background:var(--primary-dark, #005f8a)}.de-layout{display:flex;align-items:flex-start;min-height:500px}.de-sidebar{width:240px;flex-shrink:0;border-right:1px solid var(--border);display:flex;flex-direction:column;gap:0;align-self:stretch}.de-main{flex:1;min-width:0;padding:16px;display:flex;flex-direction:column;gap:14px}.de-signal-browser{padding:14px 12px;border-bottom:1px solid var(--border)}.de-section-title{margin:0 0 10px;font-size:.85rem;font-weight:700;color:var(--muted);text-transform:uppercase;letter-spacing:.08em}.de-browser-row{display:flex;align-items:center;gap:6px;margin-bottom:6px}.de-browser-label{width:52px;font-size:.82rem;color:var(--muted);flex-shrink:0}.de-browser-select{flex:1;padding:4px 6px;border:1px solid var(--border);background:var(--surface);color:var(--text);border-radius:4px;font-size:.82rem;min-width:0}.de-browser-actions{display:flex;flex-direction:column;gap:6px;margin-top:10px}.de-export-panel{padding:14px 12px;border-bottom:1px solid var(--border)}.de-export-row{display:flex;align-items:center;gap:6px;margin-bottom:6px}.de-export-time-grid{display:grid;grid-template-columns:1fr auto 1fr auto;gap:6px;margin:4px 0 8px 58px}.de-export-save-row{display:flex;align-items:center;gap:8px;margin-top:10px}.de-export-save-note{font-size:.72rem;color:var(--muted);word-break:break-word}.de-saved-panel{padding:14px 12px}.de-save-row{display:flex;gap:6px;margin-bottom:8px}.de-save-input{flex:1;padding:4px 8px;border:1px solid var(--border);background:var(--surface);color:var(--text);border-radius:4px;font-size:.82rem}.de-saved-row{display:flex;align-items:center;gap:4px;margin-bottom:4px}.de-saved-name{flex:1;background:none;border:none;color:var(--primary);font-size:.85rem;cursor:pointer;text-align:left;padding:2px 0}.de-saved-name:hover{text-decoration:underline}.de-saved-del{background:none;border:none;color:var(--muted);cursor:pointer;font-size:1rem;padding:0 4px}.de-saved-del:hover{color:#c0392b}.de-btn-primary{padding:6px 12px;background:var(--primary);color:#fff;border:none;border-radius:4px;font-weight:700;font-size:.82rem;cursor:pointer}.de-btn-primary:disabled{opacity:.5;cursor:default}.de-btn-primary:hover:not(:disabled){background:var(--primary-dark, #005f8a)}.de-btn-secondary{padding:6px 12px;background:var(--surface);color:var(--primary);border:1px solid var(--primary);border-radius:4px;font-weight:700;font-size:.82rem;cursor:pointer}.de-btn-secondary:disabled{opacity:.5;cursor:default}.de-btn-secondary:hover:not(:disabled){background:var(--surface-soft)}.de-export-notification{position:fixed;top:24px;right:24px;background:var(--primary);color:#fff;padding:12px 20px;border-radius:4px;box-shadow:0 4px 12px #00000026;font-size:.85rem;font-weight:500;display:flex;align-items:center;gap:10px;z-index:9999;animation:slideInDown .3s ease-out}.de-export-notification.done{background:#27ae60}.de-export-notification.error{background:#c0392b}.de-export-spinner{display:inline-block;width:16px;height:16px;border:2px solid rgba(255,255,255,.3);border-top-color:#fff;border-radius:50%;animation:spin .8s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}@keyframes slideInDown{0%{transform:translateY(-20px);opacity:0}to{transform:translateY(0);opacity:1}}.de-btn-icon{padding:3px 8px;background:var(--surface);border:1px solid var(--border);color:var(--text);border-radius:4px;font-size:.78rem;cursor:pointer}.de-btn-icon:hover{background:var(--surface-soft)}.de-btn-close:hover{background:#fdecea;color:#c0392b;border-color:#e0907a}.de-windows{display:grid;grid-template-columns:repeat(auto-fill,minmax(500px,1fr));gap:14px}.de-window{background:var(--surface-soft);border:2px solid var(--border);border-radius:8px;padding:12px 14px;cursor:pointer;display:flex;flex-direction:column;gap:10px}.de-window-active{border-color:var(--primary)}.de-window:hover:not(.de-window-active){border-color:color-mix(in srgb,var(--primary) 40%,var(--border))}.de-window-header{display:flex;align-items:center;justify-content:space-between;gap:8px}.de-window-title{font-size:.9rem;font-weight:700;color:var(--text);flex:1}.de-loading-dot{color:var(--muted);font-weight:400}.de-window-title-input{flex:1;padding:2px 6px;border:1px solid var(--primary);background:var(--surface);color:var(--text);border-radius:4px;font-size:.9rem;font-weight:700}.de-window-actions{display:flex;gap:6px}.de-window-empty{text-align:center;color:var(--muted);font-size:.88rem;padding:32px;border:1px dashed var(--border);border-radius:6px}.de-window-chips{display:flex;flex-wrap:wrap;gap:6px}.de-chip{display:inline-flex;align-items:center;gap:5px;background:var(--surface);border:1px solid var(--border);border-radius:999px;padding:2px 8px;font-size:.78rem}.de-chip-dot{width:10px;height:10px;border-radius:50%;flex-shrink:0}.de-chip-label{color:var(--text)}.de-chip-error{color:#d97a1f}.de-chip-remove{background:none;border:none;cursor:pointer;color:var(--muted);font-size:.9rem;line-height:1;padding:0}.de-chip-remove:hover{color:#c0392b}.de-empty-state{flex:1;display:flex;align-items:center;justify-content:center;color:var(--muted);font-size:.92rem;padding:60px;text-align:center;border:1px dashed var(--border);border-radius:8px}:root.dark-theme .de-preset{background:#1a222b;color:#e6edf4}:root.dark-theme .de-btn-icon{background:#1a222b;color:#e6edf4}:root.dark-theme .de-time-input{background:#1a222b;color:#e6edf4}:root.dark-theme .de-browser-select{background:#1a222b;color:#e6edf4}:root.dark-theme .de-save-input{background:#1a222b;color:#e6edf4}:root.dark-theme .de-window{background:#1a222b}:root.dark-theme .de-chip{background:#252e38}.users-admin{max-width:1100px;margin:0 auto;padding:1.5rem;display:flex;flex-direction:column;gap:1.25rem}.users-admin-head{display:flex;align-items:center;justify-content:space-between}.users-admin-head h1{margin:0;font-size:1.5rem}.users-error{padding:.7rem .9rem;background:#fef2f2;color:#b91c1c;border:1px solid #fecaca;border-radius:8px;font-size:.9rem}.users-notice{padding:.7rem .9rem;background:#ecfdf5;color:#047857;border:1px solid #a7f3d0;border-radius:8px;font-size:.9rem}.users-loading{padding:1.5rem;color:#64748b}.ua-card{background:var(--card-bg, #ffffff);border:1px solid var(--border-color, #e2e8f0);border-radius:12px;padding:1.1rem 1.25rem;display:flex;flex-direction:column;gap:.9rem}.ua-card h2{margin:0;font-size:1.05rem}.ua-create-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:.75rem;align-items:end}.ua-field{display:flex;flex-direction:column;gap:.3rem;font-size:.82rem;color:var(--text-muted, #475569)}.ua-field input,.ua-input{padding:.5rem .6rem;border:1px solid var(--border-color, #cbd5e1);border-radius:8px;font-size:.95rem;background:var(--input-bg, #ffffff);color:inherit}.ua-field input:focus,.ua-input:focus{outline:none;border-color:#2563eb;box-shadow:0 0 0 3px #2563eb2e}.ua-check,.ua-toggle{display:flex;align-items:center;gap:.4rem;font-size:.9rem;cursor:pointer;-webkit-user-select:none;user-select:none}.ua-table-wrap{overflow-x:auto;border:1px solid var(--border-color, #e2e8f0);border-radius:12px}.ua-table{width:100%;border-collapse:collapse;font-size:.9rem}.ua-table th,.ua-table td{text-align:left;padding:.6rem .75rem;border-bottom:1px solid var(--border-color, #eef2f7);vertical-align:middle}.ua-table th{font-size:.72rem;letter-spacing:.05em;text-transform:uppercase;color:var(--text-muted, #64748b);background:var(--table-head-bg, #f8fafc)}.ua-empty{text-align:center;color:#94a3b8;padding:1.25rem}.ua-muted{color:#94a3b8}.ua-badge{display:inline-block;padding:.15rem .5rem;border-radius:999px;font-size:.72rem;font-weight:600}.ua-badge-super{background:#ede9fe;color:#6d28d9}.ua-badge-active{background:#dcfce7;color:#15803d}.ua-badge-inactive{background:#fee2e2;color:#b91c1c}.ua-chips{display:flex;flex-wrap:wrap;gap:.4rem}.ua-chip{display:inline-flex;align-items:center;gap:.35rem;padding:.18rem .5rem;background:#eff6ff;color:#1d4ed8;border:1px solid #bfdbfe;border-radius:999px;font-size:.78rem}.ua-chip-site{background:#f1f5f9;color:#334155;border-color:#e2e8f0}.ua-chip-x{border:none;background:transparent;color:inherit;cursor:pointer;font-size:1rem;line-height:1;padding:0}.ua-chip-x:hover{color:#b91c1c}.ua-row-actions{display:flex;gap:.4rem;white-space:nowrap}.ua-btn{padding:.4rem .75rem;border-radius:8px;border:1px solid transparent;font-size:.85rem;cursor:pointer}.ua-btn:disabled{opacity:.5;cursor:not-allowed}.ua-btn-primary{background:#2563eb;color:#fff}.ua-btn-ghost{background:transparent;border-color:var(--border-color, #cbd5e1);color:inherit}.ua-btn-danger{background:#fff;border-color:#fecaca;color:#b91c1c}.ua-btn-danger:not(:disabled):hover{background:#fef2f2}.ua-edit-row>td{background:var(--table-head-bg, #f8fafc)}.ua-edit{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:1.25rem;padding:.5rem .25rem}.ua-edit-block h4{margin:0 0 .5rem;font-size:.8rem;text-transform:uppercase;letter-spacing:.04em;color:var(--text-muted, #64748b)}.ua-edit-controls{display:flex;flex-wrap:wrap;align-items:center;gap:.5rem;margin-bottom:.6rem}.ua-site-list{margin-bottom:.25rem}.ua-site-form{margin-bottom:0}.cs-app{max-width:1000px;margin:0 auto;padding:24px 16px 64px;color:#1f2937}.cs-head{display:flex;align-items:center;justify-content:space-between}.cs-head h1{margin:0;font-size:1.6rem}.cs-sub{color:#6b7280;font-size:.9rem;margin:6px 0 0}.cs-card{background:#fff;border:1px solid #e5e7eb;border-radius:10px;padding:18px 20px;margin-top:18px;box-shadow:0 1px 2px #0000000a}.cs-card h2{margin:0 0 10px;font-size:1.1rem}.cs-form-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:12px}.cs-form-grid label,.cs-check{display:flex;flex-direction:column;gap:4px;font-size:.85rem;font-weight:600;color:#374151}.cs-check{flex-direction:row;align-items:center;gap:8px;margin-top:12px;font-weight:500}.cs-form-grid input,.cs-form-grid select,.cs-table select{padding:8px 10px;border:1px solid #d1d5db;border-radius:6px;font-size:.9rem;font-weight:400}.cs-actions{display:flex;align-items:center;gap:12px;margin-top:14px;flex-wrap:wrap}.cs-btn{border:1px solid #2563eb;background:#2563eb;color:#fff;padding:8px 14px;border-radius:6px;font-size:.88rem;font-weight:600;cursor:pointer}.cs-btn:disabled{opacity:.5;cursor:not-allowed}.cs-btn-primary{border-color:#16a34a;background:#16a34a}.cs-btn-ghost{background:#fff;color:#374151;border-color:#d1d5db}.cs-btn-danger{background:#fff;color:#dc2626;border-color:#fca5a5}.cs-pill{display:inline-block;padding:3px 10px;border-radius:999px;font-size:.78rem;font-weight:600}.cs-pill-ok{background:#dcfce7;color:#166534}.cs-pill-bad{background:#fee2e2;color:#991b1b}.cs-pill-off{background:#f3f4f6;color:#6b7280}.cs-table{width:100%;border-collapse:collapse;margin-top:8px}.cs-table th,.cs-table td{text-align:left;padding:8px 10px;border-bottom:1px solid #f0f1f3;font-size:.9rem}.cs-table th{color:#6b7280;font-size:.78rem;text-transform:uppercase;letter-spacing:.04em}.cs-error{background:#fee2e2;color:#991b1b;border:1px solid #fca5a5;border-radius:8px;padding:10px 14px;margin-top:14px;font-size:.9rem}.cs-notice{background:#dcfce7;color:#166534;border:1px solid #86efac;border-radius:8px;padding:10px 14px;margin-top:14px;font-size:.9rem}.cs-loading,.cs-empty{color:#6b7280;padding:12px 0;font-size:.9rem}.cs-rep-list{display:grid;gap:14px}.cs-rep{border:1px solid #e5e7eb;border-radius:8px;padding:14px 16px}.cs-rep-top{display:flex;align-items:center;justify-content:space-between}.cs-rep-title{display:flex;align-items:center;gap:8px;font-size:1rem}.cs-arrow{color:#9ca3af}.cs-rep-meta{color:#6b7280;font-size:.8rem;margin-top:6px}.cs-rep-stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(120px,1fr));gap:10px;margin-top:12px}.cs-rep-stats>div{display:flex;flex-direction:column;gap:2px}.cs-label{font-size:.72rem;text-transform:uppercase;letter-spacing:.04em;color:#9ca3af}.cs-rep-err{margin-top:10px;background:#fef2f2;color:#991b1b;border-radius:6px;padding:8px 10px;font-size:.82rem;word-break:break-word}.cs-rep-actions{display:flex;gap:10px;margin-top:14px;flex-wrap:wrap}.cs-backfill{margin-top:14px;padding-top:14px;border-top:1px dashed #e5e7eb}.cs-backfill-status{margin-top:12px;font-size:.85rem;color:#374151}.cs-progress{margin-top:6px;height:8px;background:#f3f4f6;border-radius:999px;overflow:hidden}.cs-progress-bar{height:100%;background:#16a34a;transition:width .4s ease}.App{text-align:center;overflow-x:hidden}.App-header{background:linear-gradient(135deg,var(--primary-dark),var(--primary));padding:10px 20px;color:#fff;display:flex;align-items:center;justify-content:flex-start;box-shadow:0 2px 8px #00000026}.header-link{display:flex;align-items:center;text-decoration:none;color:#fff}.header-grafana-tools{display:flex;align-items:center;gap:10px;margin-left:12px;flex:1}.header-grafana-label{font-size:.95rem;font-weight:700;color:#fff;letter-spacing:.2px}.header-maximize-link{display:inline-flex;align-items:center;gap:6px;margin-left:auto;text-decoration:none;color:#fff;border:1px solid rgba(255,255,255,.45);background:#ffffff26;padding:7px 10px;height:34px;box-sizing:border-box;border-radius:8px;font-weight:600}.header-maximize-link:hover{background:#ffffff40}.header-link h1{font-size:2rem;margin:0;font-weight:600;font-family:Times New Roman,Times,serif}.logo{height:50px;width:auto;margin-right:12px;object-fit:contain;flex-shrink:0}.logo-white{filter:brightness(0) invert(1)}main{max-width:3840px;margin:16px auto 24px;padding:0 24px}main.grafana-main{max-width:none;margin:0;padding:0}.app-list{display:grid;grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:12px;justify-content:center}.app-card{background:linear-gradient(90deg,var(--surface-soft),var(--card));border:1px solid var(--border);border-radius:12px;padding:12px 14px;box-shadow:0 2px 6px #1f2b3d0f;text-align:left;transition:transform .2s}.app-card:hover{transform:translateY(-2px)}.app-card h2{margin:0 0 6px;font-size:1.1rem;font-weight:700;color:var(--text)}.app-card p{color:var(--muted);font-size:.9rem;margin-bottom:15px}.app-link{display:inline-block;background:var(--primary);color:#fff;border:none;padding:9px 14px;border-radius:8px;cursor:pointer;font-weight:600;letter-spacing:.2px;box-shadow:0 2px 6px #1f3a4d40;text-decoration:none;font-size:.9rem;transition:transform .05s ease,box-shadow .1s ease,background .15s ease}.app-link:hover{background:var(--primary-dark);transform:translateY(1px);box-shadow:0 1px 4px #0000001f}.app-container{padding:24px;max-width:3840px;margin:0 auto}.panel{background:var(--surface);border-radius:8px;box-shadow:0 2px 8px #0000001a;padding:24px;margin-bottom:20px}.panel-header h3{margin:0;color:var(--primary);font-size:1.4rem}.divider{height:1px;background:var(--border);margin:15px 0 25px;opacity:.6}.grid{display:grid;gap:24px}.two-col{grid-template-columns:minmax(340px,420px) 1fr;align-items:start}.single-col{grid-template-columns:1fr}.compact-grid{gap:8px;grid-template-columns:1fr 1fr}.chart-card{height:420px;width:100%;background:var(--surface);padding:10px;border-radius:8px;box-shadow:0 2px 8px #00000014;min-width:0}.control-row{display:flex;flex-wrap:wrap;gap:16px;align-items:flex-end;margin-bottom:16px}.control-row .input-group{margin-bottom:0;min-width:160px}.pipe-list{display:flex;flex-direction:column;gap:12px}.pipe-section-header{display:flex;align-items:center;justify-content:space-between;gap:12px;margin:12px 0 4px}.pipe-section-header h4{margin:0;font-size:1.05rem;color:var(--text)}.pipe-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(320px,1fr));gap:14px}.pipe-card{border:1px solid var(--border);border-radius:10px;padding:12px;background:var(--surface-soft);box-shadow:0 1px 4px #0000000a}.pipe-card-header{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:8px}.pipe-name{display:flex;align-items:center;gap:8px;font-weight:700;color:var(--text)}.selectable-label{display:inline-flex;align-items:center;gap:6px;font-weight:600;color:var(--text)}.pipe-name-input{border:none;background:transparent;font-weight:700;font-size:1rem;color:var(--text);padding:2px 4px;border-radius:4px;min-width:80px}.pipe-name-input:focus{outline:2px solid var(--primary);outline-offset:1px;background:#eef6fa}.pipe-dot{width:12px;height:12px;border-radius:50%;display:inline-block}.pipe-actions{display:flex;align-items:center;gap:10px;flex-wrap:wrap;justify-content:flex-end}.toggle{display:flex;align-items:center;gap:6px;font-size:.9rem;color:var(--text)}.toggle input{accent-color:var(--primary)}.ghost-button{border:1px solid var(--border);background:transparent;color:var(--text);padding:8px 10px;border-radius:6px;cursor:pointer;transition:border-color .15s ease,color .15s ease}.ghost-button:hover{border-color:var(--primary);color:var(--primary)}.secondary-button{background:var(--primary);color:#fff;border:none;padding:10px 14px;border-radius:8px;cursor:pointer;font-weight:700;width:fit-content;box-shadow:0 2px 6px #1f3a4d40;transition:transform .05s ease,box-shadow .1s ease,background .15s ease}.secondary-button:hover{background:var(--primary-dark);transform:translateY(1px);box-shadow:0 1px 4px #0000001f}.input-group{display:flex;flex-direction:column;margin-bottom:1px;text-align:left}.input-group label{font-weight:600;margin-bottom:6px;font-size:.9rem;color:var(--text)}.input-group input{padding:10px 12px;border:1px solid var(--border);border-radius:6px;font-size:1rem;transition:border-color .2s,box-shadow .2s;background:var(--surface-soft);color:var(--text)}.input-group input:focus{border-color:var(--primary);box-shadow:0 0 0 3px #0f74891a;outline:none;background:var(--surface)}.theme-toggle{margin-left:auto;border:1px solid rgba(255,255,255,.45);background:#ffffff26;color:var(--header-text);padding:7px 10px;height:34px;box-sizing:border-box;border-radius:8px;cursor:pointer;font-weight:600}.theme-toggle:hover{background:#ffffff40}.header-right{margin-left:auto;display:flex;align-items:center;gap:12px}.header-user{display:flex;align-items:center;gap:8px}.header-admin-link{font-size:.85rem;font-weight:600;color:var(--header-text);text-decoration:none;border:1px solid rgba(255,255,255,.45);background:#ffffff26;padding:7px 10px;height:34px;box-sizing:border-box;border-radius:8px;display:inline-flex;align-items:center}.header-admin-link:hover{background:#ffffff40}.header-user-email{font-size:.85rem;max-width:180px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;opacity:.9}.header-logout{border:1px solid rgba(255,255,255,.45);background:#ffffff26;color:var(--header-text);padding:7px 10px;height:34px;box-sizing:border-box;border-radius:8px;cursor:pointer;font-weight:600}.header-logout:hover{background:#ffffff40}.grafana-fullscreen-page{width:100%;min-height:calc(100vh - 78px);background:var(--surface);display:flex;flex-direction:column}.grafana-embed-frame{flex:1;width:100%;min-height:calc(100vh - 78px);border:none;background:var(--surface)}.input-group small{margin-top:6px;font-size:.8rem;color:var(--muted)}@media(max-width:768px){.two-col{grid-template-columns:1fr}}.description-section table{border-collapse:collapse;width:100%;margin:16px 0}.description-section th{text-align:left;font-weight:700;border-bottom:2px solid #333;padding:8px;background-color:transparent}.description-section td{border:none;padding:8px}.description-section tr{background-color:transparent!important}.oxyguard-container{max-width:2200px}.oxyguard-controls{align-items:flex-end}.oxyguard-input{min-width:180px}.oxyguard-select{padding:10px 12px;border:1px solid var(--border);border-radius:6px;background:var(--surface-soft);color:var(--text)}.oxyguard-summary-row{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:12px;margin:8px 0 16px}.oxyguard-summary-card{background:var(--surface-soft);border:1px solid var(--border);border-radius:10px;padding:10px 12px;text-align:left}.oxyguard-summary-card span{display:block;color:var(--muted);font-size:.85rem}.oxyguard-summary-card strong{color:var(--text);font-size:1.2rem}.oxyguard-error{margin:6px 0 14px;color:#c02626;font-weight:600;text-align:left}.oxyguard-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:12px}.oxyguard-signal-card{border:1px solid var(--border);border-radius:10px;padding:12px;text-align:left;background:linear-gradient(180deg,var(--surface),var(--surface-soft))}.oxyguard-card-header{display:flex;align-items:center;justify-content:space-between;gap:10px}.oxyguard-card-header h4{margin:0;font-size:1rem;color:var(--text)}.oxyguard-badge{font-size:.75rem;border:1px solid var(--border);border-radius:999px;padding:3px 8px;color:var(--muted)}.oxyguard-tag{margin:6px 0 2px;color:var(--muted);font-size:.8rem}.oxyguard-field{margin:0 0 8px;font-weight:700;color:var(--primary)}.oxyguard-value-wrap{display:flex;align-items:baseline;gap:8px;margin-bottom:8px}.oxyguard-value-wrap strong{font-size:1.6rem;color:var(--text)}.oxyguard-value-wrap span{color:var(--muted);font-size:.9rem}.oxyguard-updated{margin:0;font-size:.82rem;color:var(--muted)}.oxyguard-plot-trigger{margin-top:10px;border:1px solid var(--border);background:var(--surface);color:var(--text);padding:6px 10px;border-radius:7px;cursor:pointer;font-weight:600}.oxyguard-plot-trigger:hover{border-color:var(--primary);color:var(--primary)}.oxyguard-overlay{position:fixed;inset:0;background:#00000073;display:flex;align-items:center;justify-content:center;z-index:1200;padding:18px}.oxyguard-overlay-panel{width:min(1100px,100%);max-height:90vh;overflow:auto;background:var(--surface);border:1px solid var(--border);border-radius:12px;padding:14px;box-shadow:0 16px 32px #00000038}.oxyguard-overlay-head{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:10px}.oxyguard-overlay-head h4{margin:0;color:var(--text)}.oxyguard-overlay-actions{display:flex;align-items:center;gap:8px;flex-shrink:0}.oxyguard-range-buttons{display:flex;gap:8px;margin-bottom:12px;align-items:center;flex-wrap:wrap}.oxyguard-sampling-control{display:flex;align-items:center;gap:6px;margin-left:auto;font-size:.85rem;color:var(--muted)}.oxyguard-sampling-control input{padding:4px 8px;border-radius:6px;border:1px solid var(--border);background:var(--surface);color:var(--text);font-size:.85rem}.oxyguard-range-active{border-color:var(--primary);color:var(--primary);background:var(--surface-soft)}.oxyguard-trend-chart-wrap{border:1px solid var(--border);border-radius:10px;padding:8px;background:var(--surface-soft)}.degasser-container{max-width:1200px;margin:0 auto;padding:16px}.degasser-container .panel-header{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:12px}.degasser-top-tabs{display:flex;justify-content:flex-start;margin-bottom:12px}.degasser-mode-tabs{display:inline-flex;align-items:center;gap:4px;border:1px solid var(--border);border-radius:10px;padding:3px;background:var(--surface-soft)}.degasser-mode-tab{border:none;background:transparent;color:var(--muted);padding:6px 12px;border-radius:7px;font-size:.82rem;font-weight:600;cursor:pointer}.degasser-mode-tab.active{background:#1f77b4;color:#fff}.degasser-backend-tag{font-size:.8rem;color:var(--muted);font-family:ui-monospace,SFMono-Regular,Menlo,monospace}.degasser-intro{margin:8px 0 16px;color:var(--muted);font-size:.92rem}.degasser-intro code{background:var(--surface-soft);padding:1px 5px;border-radius:4px}.degasser-grid{display:grid;grid-template-columns:minmax(280px,1fr) minmax(280px,1.2fr);gap:16px}@media(max-width:800px){.degasser-grid{grid-template-columns:1fr}}.degasser-card{border:1px solid var(--border);border-radius:10px;padding:14px 16px;background:var(--surface, #fff);text-align:left}.degasser-card h4{margin:0 0 10px;font-size:1rem}.degasser-form{display:grid;grid-template-columns:1fr 1fr;gap:8px 12px}.degasser-field{display:flex;flex-direction:column}.degasser-field label{font-size:.78rem;color:var(--muted);margin-bottom:2px}.degasser-field input{padding:6px 8px;border:1px solid var(--border);border-radius:6px;font-size:.9rem}.degasser-actions{display:flex;gap:8px;margin-top:12px}.degasser-primary{background:#1f77b4;color:#fff;border:none;padding:8px 14px;border-radius:6px;font-weight:600;cursor:pointer}.degasser-primary:disabled{opacity:.6;cursor:not-allowed}.degasser-secondary{background:var(--surface-soft);color:var(--text, #222);border:1px solid var(--border);padding:8px 14px;border-radius:6px;cursor:pointer}.degasser-error{margin-top:10px;padding:8px 10px;background:#fdecea;border:1px solid #f5c2c0;color:#7a1d1a;border-radius:6px;font-size:.85rem;font-family:ui-monospace,SFMono-Regular,Menlo,monospace}.degasser-empty{color:var(--muted);font-style:italic;padding:12px 0}.degasser-kpis{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}.degasser-kpi{border:1px solid var(--border);border-radius:8px;padding:8px 10px;background:var(--surface-soft)}.degasser-kpi-strong{background:#eaf3fb;border-color:#bcdcf2}.degasser-kpi-label{font-size:.72rem;text-transform:uppercase;letter-spacing:.4px;color:var(--muted)}.degasser-kpi-value{font-size:1.1rem;font-weight:700;margin-top:2px}.degasser-meta{margin-top:10px;font-size:.8rem;color:var(--muted)}.degasser-meta code{font-family:ui-monospace,SFMono-Regular,Menlo,monospace}.degasser-sweep{margin-top:16px}.degasser-sweep-header{display:flex;flex-direction:column;gap:10px}.degasser-sweep-controls{display:flex;flex-wrap:wrap;gap:10px 14px;align-items:flex-end}.degasser-sweep-controls label{display:flex;flex-direction:column;font-size:.78rem;color:var(--muted);gap:2px}.degasser-sweep-controls input,.degasser-sweep-controls select{padding:6px 8px;border:1px solid var(--border);border-radius:6px;font-size:.9rem;min-width:110px}.degasser-chart-wrap{margin-top:14px;width:100%}.degasser-table-details{margin-top:10px}.degasser-table-details summary{cursor:pointer;color:#1f77b4;font-weight:600;font-size:.9rem}.degasser-table-wrap{margin-top:8px;max-height:280px;overflow:auto;border:1px solid var(--border);border-radius:6px}.degasser-table{width:100%;border-collapse:collapse;font-size:.85rem}.degasser-table th,.degasser-table td{padding:6px 10px;border-bottom:1px solid var(--border);text-align:right}.degasser-table th{background:var(--surface-soft);position:sticky;top:0}.degasser-grid-3{grid-template-columns:minmax(260px,1fr) minmax(260px,1fr) minmax(260px,1fr)}@media(max-width:1100px){.degasser-grid-3{grid-template-columns:1fr 1fr}}@media(max-width:800px){.degasser-grid-3{grid-template-columns:1fr}}.degasser-section-header{display:flex;justify-content:space-between;align-items:baseline;margin:8px 0 6px}.degasser-section-header h5{margin:0;font-size:.88rem;text-transform:uppercase;letter-spacing:.4px;color:var(--muted)}.degasser-link{background:none;border:none;color:#1f77b4;cursor:pointer;padding:0;font-size:.8rem;text-decoration:underline}.degasser-hint{font-size:.75rem;color:var(--muted);margin:-2px 0 8px}.degasser-kpi-sub{font-size:.72rem;color:var(--muted);margin-top:2px}.degasser-model-row{display:flex;align-items:center;gap:8px;margin-bottom:10px}.degasser-model-select{flex:1;padding:6px 8px;border:1px solid var(--border);border-radius:6px;font-size:.9rem}.degasser-model-tag{font-size:.7rem;text-transform:uppercase;letter-spacing:.5px;padding:2px 6px;border-radius:10px;background:#eef6ee;color:#1e6b1e}.degasser-model-tag[data-status=planned]{background:#fff4e5;color:#8a5a00}.degasser-model-info{border-top:1px dashed var(--border);padding-top:8px}.degasser-model-short{font-weight:600;margin-bottom:4px}.degasser-model-desc{font-size:.85rem;color:var(--text, #222);margin:0 0 8px;line-height:1.4}.degasser-model-meta{font-size:.75rem;color:var(--muted)}.degasser-sweep-axes{margin-top:8px;padding-top:8px;border-top:1px dashed var(--border)}.degasser-field input[type=number]{max-width:110px;padding:3px 6px;font-size:.82rem}.degasser-form{gap:6px 10px}.degasser-sweep-controls input[type=number]{max-width:90px;padding:3px 6px;font-size:.82rem}.degasser-modal-backdrop{position:fixed;inset:0;background:#00000073;display:flex;align-items:center;justify-content:center;z-index:1000;padding:24px}.degasser-modal{background:var(--surface, #fff);color:var(--text, #222);border-radius:12px;border:1px solid var(--border);width:min(720px,100%);max-height:90vh;display:flex;flex-direction:column;box-shadow:0 20px 60px #00000059}.degasser-modal-header{display:flex;align-items:center;justify-content:space-between;padding:12px 16px;border-bottom:1px solid var(--border)}.degasser-modal-header h3{margin:0;font-size:1.05rem}.degasser-modal-close{background:none;border:none;font-size:1.5rem;line-height:1;cursor:pointer;color:var(--muted);padding:0 6px}.degasser-modal-close:hover{color:var(--text, #000)}.degasser-modal-body{padding:14px 18px;overflow-y:auto;flex:1}.degasser-modal-footer{display:flex;justify-content:flex-end;gap:8px;padding:10px 16px;border-top:1px solid var(--border)}.model-description{font-size:.9rem;line-height:1.5}.model-description h1,.model-description h2,.model-description h3{margin-top:.6em}.model-description table{border-collapse:collapse;margin:.5em 0}.model-description th,.model-description td{border:1px solid var(--border);padding:4px 8px;font-size:.85rem}.model-description img{max-width:100%;border-radius:6px}.degasser-modal-sep{border:none;border-top:1px dashed var(--border);margin:14px 0}:root{--primary: #0f7489;--primary-dark: #1f3a4d;--bg: #eef2f4;--card: #fafbfc;--surface: #ffffff;--surface-soft: #f8fafc;--border: #d3d8dd;--text: #1f262e;--muted: #4e5866;--header-text: #f8f6f6;color-scheme:light}:root.dark-theme{--bg: #12181f;--card: #1a222b;--surface: #1e2832;--surface-soft: #242f3a;--border: #324252;--text: #e6edf4;--muted: #9eb0c1;--header-text: #f2f6fa;color-scheme:dark}*{box-sizing:border-box}body{margin:0;font-family:Segoe UI,Arial,sans-serif;background:var(--bg);color:var(--text);line-height:1.5;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;transition:background-color .2s ease,color .2s ease}h1{font-size:2rem}
