:root{color-scheme:dark;--bg: #15181c;--panel: #1d2127;--panel-2: #23282f;--panel-3: #2a3038;--sunken: #1a1d22;--line: #353b44;--line-soft: #262b32;--ink: #d5dae1;--ink-strong: #ffffff;--ink-2: #b8bec6;--muted: #8e96a1;--dim: #5d6570;--oil: #199e70;--gas: #d95926;--water: #3987e5;--cat-water: #3987e5;--cat-stim: #c98500;--cat-lift: #199e70;--cat-mech: #e87ba4;--cat-none: #5d6570;--warn: #e3a33b;--ok: #8e96a1;--mono: "IBM Plex Mono", ui-monospace, monospace;--sans: "IBM Plex Sans", system-ui, sans-serif;--ease: cubic-bezier(.4, 0, .2, 1)}*{box-sizing:border-box}html,body{margin:0;background:var(--bg);color:var(--ink);font-family:var(--sans);font-size:14px}body{min-height:100vh}a{color:var(--ink);text-decoration:none}a:hover{color:var(--ink-strong)}button,select,input{font:inherit;color:inherit}button{cursor:pointer}:focus-visible{outline:2px solid var(--ink-strong);outline-offset:2px}.mono{font-family:var(--mono);font-variant-numeric:tabular-nums}.muted{color:var(--muted)}.warn{color:var(--warn)}.small{font-size:12px}.eyebrow{font-family:var(--mono);font-size:11px;letter-spacing:.1em;color:var(--muted);text-transform:uppercase}.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}.app{display:flex;flex-direction:column;min-height:100vh}.topbar{display:flex;flex-wrap:wrap;align-items:center;gap:10px 20px;padding:8px 20px;background:var(--panel);border-bottom:1px solid var(--line);position:sticky;top:0;z-index:20}.brand{font-family:var(--mono);font-weight:600;letter-spacing:.12em;font-size:13px;white-space:nowrap}.stages{display:flex;flex-wrap:wrap;gap:4px}.stages a{padding:8px 12px;border:1px solid var(--line);color:var(--muted);font-size:13px;display:flex;gap:6px;align-items:center;min-height:36px}.stages a .n{font-family:var(--mono);font-size:11px}.stages a[aria-current=page]{border-color:var(--ink);background:var(--panel-3);color:var(--ink-strong)}.spacer{flex:1 1 auto}.seg{display:inline-flex;border:1px solid var(--line)}.seg button{background:transparent;border:0;color:var(--muted);padding:7px 11px;font-size:12px;min-height:34px}.seg button[aria-pressed=true]{background:var(--line);color:var(--ink-strong)}.btn{background:var(--panel-2);border:1px solid var(--line);color:var(--ink);padding:8px 14px;min-height:36px;font-size:13px;display:inline-flex;gap:8px;align-items:center;justify-content:center;transition:border-color .15s var(--ease),background .15s var(--ease)}.btn:hover{border-color:var(--muted)}.btn.primary{border-color:var(--ink);background:var(--panel-3);color:var(--ink-strong)}.btn.ghost{background:transparent}.btn:disabled{opacity:.45;cursor:not-allowed}.banner{display:flex;flex-wrap:wrap;gap:6px 16px;align-items:center;padding:6px 20px;border-bottom:1px solid var(--line);font-size:12px;color:var(--muted);background:var(--sunken)}.badge{font-family:var(--mono);font-size:11px;border:1px solid var(--line);padding:2px 7px;color:var(--muted);white-space:nowrap}.badge.synthetic{border-color:var(--warn);color:var(--warn)}.badge.real{border-color:var(--oil);color:#5fd0a6}main.view{flex:1 1 auto;display:flex;flex-direction:column;min-width:0}.statusbar{display:flex;flex-wrap:wrap;gap:4px 22px;padding:6px 20px;border-top:1px solid var(--line);background:var(--panel);font-family:var(--mono);font-size:11px;color:var(--muted)}.statusbar a{color:var(--muted);text-decoration:underline}.cols{display:flex;flex-wrap:wrap;flex:1 1 auto;min-width:0}.rail{flex:1 1 220px;max-width:250px;border-right:1px solid var(--line);padding:16px;display:flex;flex-direction:column;gap:16px;background:var(--sunken)}.rail.right{border-right:0;border-left:1px solid var(--line);background:transparent;max-width:370px;flex-basis:320px}.center{flex:999 1 560px;min-width:0;padding:14px;display:flex;flex-direction:column;gap:12px}.grid{display:grid;gap:12px}.panel{background:var(--panel);border:1px solid var(--line);padding:12px;display:flex;flex-direction:column;gap:6px;min-width:0}.panel>header{display:flex;justify-content:space-between;align-items:baseline;gap:8px;flex-wrap:wrap}.panel h2,.panel h3{margin:0;font-size:14px;font-weight:600}.panel h3{font-size:13px}.chart{position:relative;width:100%;min-width:0}.chart svg{display:block;width:100%;overflow:visible}.row{display:flex;flex-wrap:wrap;gap:12px}.row>*{flex:1 1 260px}.kpis{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}.kpi{border:1px solid var(--line);padding:8px 10px;background:var(--panel)}.kpi .v{font-family:var(--mono);font-size:20px;font-variant-numeric:tabular-nums}.kpi .l,.kpi .s{font-size:11px;color:var(--muted)}.empty{border:1px dashed var(--line);padding:18px;color:var(--muted);font-size:13px;line-height:1.6}.field{display:flex;flex-direction:column;gap:4px;font-size:12px}.field .top{display:flex;justify-content:space-between;gap:8px}.field .top .mono{color:var(--ink)}input[type=range]{width:100%;accent-color:var(--muted)}select{background:var(--panel-2);border:1px solid var(--line);padding:6px;min-height:34px}fieldset{border:0;padding:0;margin:0;display:flex;flex-direction:column;gap:6px}legend{padding:0;margin-bottom:6px}label.check{display:flex;gap:8px;align-items:center;font-size:13px;min-height:26px;cursor:pointer}input[type=checkbox]{accent-color:var(--muted);width:16px;height:16px}.tabs{display:inline-flex;flex-wrap:wrap;border:1px solid var(--line)}.tabs button{background:transparent;border:0;color:var(--muted);padding:8px 14px;font-size:13px;min-height:36px}.tabs button[aria-selected=true]{background:var(--panel-3);color:var(--ink-strong)}.tabs button:disabled{opacity:.4;cursor:not-allowed}.tablewrap{overflow:auto}table.data{width:100%;border-collapse:collapse;font-size:12px}table.data th{text-align:left;color:var(--muted);font-weight:500;padding:6px;position:sticky;top:0;background:var(--panel);white-space:nowrap}table.data th button{background:none;border:0;color:inherit;padding:0;font:inherit}table.data td{padding:7px 6px;border-top:1px solid var(--line-soft);white-space:nowrap}table.data tr.sel td{background:var(--panel-3)}table.data tbody tr{cursor:pointer;transition:background .12s}table.data tbody tr:hover td{background:var(--panel-2)}.num{font-family:var(--mono);font-variant-numeric:tabular-nums;text-align:right}.chip{display:inline-flex;align-items:center;gap:5px;font-family:var(--mono);font-size:11px}.dot{width:8px;height:8px;border-radius:50%;display:inline-block;flex:none}.bar-inline{display:inline-block;height:6px;background:var(--muted);vertical-align:middle;margin-right:6px}.axis text,.tick text{fill:var(--muted);font-family:var(--mono);font-size:10px}.axis path,.axis line{stroke:var(--line)}.gridline line{stroke:var(--line-soft)}.gridline path{display:none}.lbl{fill:var(--muted);font-size:11px;font-family:var(--sans)}.lbl-strong{fill:var(--ink);font-size:12px;font-family:var(--sans)}.lbl-mono{fill:var(--ink);font-size:11px;font-family:var(--mono)}.tip{position:fixed;pointer-events:none;z-index:60;background:#0f1215;border:1px solid var(--line);padding:8px 10px;font-size:12px;line-height:1.5;min-width:140px;max-width:280px;opacity:0;transform:translateY(4px);transition:opacity .12s,transform .12s}.tip.on{opacity:1;transform:none}.tip .t{font-family:var(--mono);color:var(--ink-strong);margin-bottom:2px}.tip .r{display:flex;justify-content:space-between;gap:14px}.tip .r span:last-child{font-family:var(--mono)}.drawer-scrim{position:fixed;top:0;right:0;bottom:0;left:0;background:#00000073;z-index:40;opacity:0;pointer-events:none;transition:opacity .2s}.drawer-scrim.on{opacity:1;pointer-events:auto}.drawer{position:fixed;top:0;right:0;bottom:0;width:min(560px,100vw);background:var(--panel);border-left:1px solid var(--line);z-index:41;transform:translate(100%);transition:transform .28s var(--ease);overflow:auto;padding:20px 24px;line-height:1.6}.drawer.on{transform:none}.drawer h2{margin:0 0 4px;font-size:18px}.drawer h3{margin:20px 0 4px;font-size:14px}.drawer .eq{font-family:var(--mono);background:var(--sunken);border:1px solid var(--line);padding:8px 10px;margin:6px 0;overflow-x:auto;white-space:pre;font-size:12px}.drawer p,.drawer li{color:var(--ink-2);font-size:13px}.drawer .close{position:sticky;top:0;float:right}.boot{position:fixed;top:0;right:0;bottom:0;left:0;z-index:100;background:var(--bg);display:grid;place-items:center;transition:opacity .5s var(--ease)}.boot.off{opacity:0;pointer-events:none}.boot .inner{width:min(560px,90vw);font-family:var(--mono)}.boot .line{color:var(--muted);font-size:12px;letter-spacing:.1em;opacity:0;animation:bootin .35s forwards}.boot h1{font-family:var(--sans);font-size:clamp(26px,4vw,40px);margin:10px 0;font-weight:600;opacity:0;animation:bootin .5s .25s forwards}.boot .bar{height:2px;background:var(--line);margin-top:18px;overflow:hidden}.boot .bar i{display:block;height:100%;width:0;background:var(--ink);animation:bootbar 1.1s .2s var(--ease) forwards}@keyframes bootin{to{opacity:1}}@keyframes bootbar{to{width:100%}}.present{position:fixed;top:0;right:0;bottom:0;left:0;z-index:80;background:var(--bg);display:flex;flex-direction:column}.present .slide{flex:1 1 auto;padding:40px clamp(16px,5vw,72px);display:flex;flex-direction:column;gap:20px;overflow:auto}.present .slide h1{margin:0;font-size:clamp(24px,3vw,38px);font-weight:600}.present .foot{display:flex;justify-content:space-between;align-items:center;padding:10px 20px;border-top:1px solid var(--line);font-family:var(--mono);font-size:12px;color:var(--muted)}.slide-enter{animation:slidein .45s var(--ease)}@keyframes slidein{0%{opacity:0;transform:translate(24px)}to{opacity:1;transform:none}}@keyframes seep{0%{transform:translate(0);opacity:0}20%{opacity:1}to{transform:translate(var(--dx));opacity:0}}.droplet{animation:seep 1.6s linear infinite}@keyframes pulse-warn{0%,to{opacity:.35}50%{opacity:1}}.pulse{animation:pulse-warn 1.6s ease-in-out infinite}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:0s!important;animation-iteration-count:1!important;transition-duration:0s!important}.droplet{display:none}}@media print{.topbar,.banner,.statusbar,.rail,.no-print{display:none!important}body{background:#fff;color:#000}}@media(max-width:720px){.topbar{padding:8px 16px;position:static;gap:8px}.brand{width:100%}.stages{flex-wrap:nowrap;overflow-x:auto;width:calc(100% + 32px);margin:0 -16px;padding:0 16px 2px;scrollbar-width:none}.stages a{white-space:nowrap;flex:none}.topbar .spacer{display:none}.topbar .btn{min-height:34px;padding:6px 10px}.cols.chart-first>.center{order:-1}.schematic svg{max-width:300px;margin:0 auto;display:block}.banner,.statusbar{padding:6px 16px}.rail,.rail.right{max-width:none;border:0;border-bottom:1px solid var(--line)}.center{padding:12px 16px}}@media print{body.print-pager .app>*:not(main){display:none!important}body.print-pager main .center{display:none!important}body.print-pager .onepager-wrap{max-width:none!important;border:0!important}body.print-pager .onepager{border:1px solid #999;color:#000;background:#fff}body.print-pager .onepager *{color:#000!important}}
