:root{color-scheme:dark;font-family:Avenir Next,Trebuchet MS,sans-serif;--bg: #081018;--bg-elevated: rgba(13, 24, 35, .88);--bg-panel: rgba(12, 21, 30, .92);--bg-panel-strong: rgba(11, 18, 25, .96);--line: rgba(147, 179, 198, .18);--line-strong: rgba(154, 200, 218, .3);--text: #f1f6fb;--text-muted: #96a9ba;--healthy: #86f0bb;--healthy-strong: #4cdb97;--shock: #ffb27a;--failure: #ff6d6d;--accent: #8ea8ff;--shadow: 0 30px 80px rgba(0, 0, 0, .35)}*{box-sizing:border-box}html,body,#root{margin:0;min-height:100%}body{background:radial-gradient(circle at top left,rgba(91,215,152,.14),transparent 24%),radial-gradient(circle at top right,rgba(111,135,255,.16),transparent 18%),linear-gradient(180deg,#0a1118,#071018 54%,#050b12);color:var(--text)}button,input,select,textarea{font:inherit}.app-shell{position:relative;min-height:100vh;overflow:hidden}.app-shell__ambient{position:absolute;inset:0;background:linear-gradient(180deg,rgba(255,255,255,.02),transparent 30%),repeating-linear-gradient(90deg,transparent 0,transparent 118px,rgba(255,255,255,.02) 118px,rgba(255,255,255,.02) 119px);pointer-events:none}.app-shell__content{position:relative;max-width:1480px;margin:0 auto;padding:24px 22px 32px}.app-shell__header,.app-shell__overview,.app-shell__flow,.app-shell__dock,.app-shell__banner{position:relative;z-index:1}.control-bar{display:grid;grid-template-columns:minmax(280px,1.4fr) minmax(420px,1fr) auto;gap:16px;align-items:stretch;padding:22px 24px;border:1px solid rgba(147,179,198,.15);border-radius:26px;background:linear-gradient(180deg,#121c27f0,#0b131beb);box-shadow:var(--shadow)}.control-bar__brand h1{margin:0;font-size:clamp(1.8rem,3vw,3rem);line-height:1;letter-spacing:-.05em;max-width:11ch}.control-bar__eyeline,.flow-panel__caption,.bottom-dock__caption{margin:0 0 10px;font-size:.82rem;letter-spacing:.18em;text-transform:uppercase;color:var(--healthy)}.control-bar__description{max-width:42ch;margin:12px 0 0;color:var(--text-muted);line-height:1.45;font-size:.96rem}.control-bar__stats{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.control-bar__stat,.overview-card,.module-card,.module-detail,.telemetry-card,.status-banner,.bottom-dock{border:1px solid var(--line);background:var(--bg-panel);-webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px)}.control-bar__stat{padding:14px 15px;border-radius:16px}.control-bar__stat span,.overview-card span,.telemetry-card span,.module-card span,.module-detail span{display:block;color:var(--text-muted);font-size:.82rem;text-transform:uppercase;letter-spacing:.12em}.control-bar__stat strong{display:block;margin-top:8px;font-size:1rem}.control-bar__actions{display:flex;flex-direction:column;gap:12px;justify-content:center;min-width:220px}.button{appearance:none;border:0;border-radius:999px;padding:13px 18px;cursor:pointer;font-weight:700;letter-spacing:.02em;transition:transform .16s ease,opacity .16s ease,background .16s ease}.button:hover:not(:disabled){transform:translateY(-1px)}.button:disabled{opacity:.55;cursor:not-allowed}.button--primary{color:#04110c;background:linear-gradient(135deg,#9bfac8,#55d897)}.button--secondary,.button--ghost{color:var(--text);background:#ffffff0f;border:1px solid rgba(255,255,255,.08)}.button--danger{color:#ffe7e7;background:#ff6d6d1f;border:1px solid rgba(255,109,109,.35)}.button--file{position:relative;display:inline-flex;align-items:center;justify-content:center;overflow:hidden}.button--file[aria-disabled=true]{opacity:.55;cursor:not-allowed}.button--file[aria-disabled=true] span{pointer-events:none}.control-bar__upload-input{position:absolute;inset:0;opacity:0;cursor:pointer}.control-bar__upload-input:disabled{cursor:not-allowed}.control-bar__config-path{margin:0;max-width:220px;color:var(--text-muted);font-size:.82rem;line-height:1.4;word-break:break-word}.status-banner{margin-top:18px;padding:16px 18px;border-radius:20px;display:flex;gap:16px;align-items:center;justify-content:space-between}.status-banner strong{display:block;margin-bottom:6px}.status-banner p{margin:0;color:var(--text-muted)}.overview-grid{margin-top:18px;display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px}.overview-card{padding:16px 18px 18px;border-radius:18px}.overview-card strong{display:block;margin:10px 0 6px;font-size:clamp(1.3rem,1.5vw,1.8rem);letter-spacing:-.04em}.overview-card p{margin:0;color:var(--text-muted);line-height:1.35;font-size:.92rem}.overview-card--status{background:radial-gradient(circle at top right,rgba(84,219,151,.16),transparent 30%),var(--bg-panel)}.flow-panel{margin-top:18px;position:relative;padding:18px;border-radius:26px;border:1px solid var(--line);background:radial-gradient(circle at 20% 20%,rgba(91,215,152,.08),transparent 26%),linear-gradient(180deg,#0e1821f5,#080f17f2);box-shadow:var(--shadow);overflow:hidden}.flow-panel__stage{display:grid;grid-template-columns:minmax(0,1fr) 336px;gap:20px;margin-top:16px;align-items:start}.flow-panel__heading,.bottom-dock__header{display:flex;justify-content:space-between;gap:16px;align-items:flex-end;flex-wrap:wrap}.flow-panel__heading h2,.bottom-dock__header h2{margin:0;font-size:clamp(1.2rem,1.5vw,1.6rem);letter-spacing:-.04em}.flow-panel__status{margin:0;max-width:42ch;color:var(--text-muted);text-align:right;font-size:.92rem;line-height:1.45}.flow-panel__canvas{position:relative;min-height:520px;border-radius:22px;border:1px solid rgba(255,255,255,.04);background:linear-gradient(180deg,rgba(255,255,255,.015),transparent 22%),linear-gradient(90deg,rgba(255,255,255,.02) 1px,transparent 1px),linear-gradient(180deg,rgba(255,255,255,.02) 1px,transparent 1px),#060b10db;background-size:auto,96px 96px,96px 96px,auto;overflow:hidden}.flow-panel__canvas svg{display:block;width:100%;height:auto}.flow-link{fill:none;stroke-linecap:round}.flow-link--base{opacity:.18}.flow-link--pulse{opacity:.88;stroke-dasharray:56 148;animation:heartbeat var(--heartbeat-duration, 60s) linear infinite}.flow-link--co2{stroke:url(#co2Pulse)}.flow-link--steam{stroke:url(#steamPulse)}.flow-link--energy{stroke:url(#energyPulse)}.flow-link--materials{stroke:url(#materialsPulse)}.flow-link--co2.flow-link--pulse{filter:drop-shadow(0 0 6px rgba(129,255,195,.3))}.flow-link--steam.flow-link--pulse{filter:drop-shadow(0 0 6px rgba(130,203,255,.28))}.flow-link--energy.flow-link--pulse{filter:drop-shadow(0 0 6px rgba(255,193,111,.28))}.flow-link--materials.flow-link--pulse{filter:drop-shadow(0 0 6px rgba(208,227,140,.28))}.flow-link--inactive{stroke:#788ca029}.flow-link--margin{fill:none;stroke:#a8bad257;stroke-dasharray:10 14}.flow-link__label{fill:var(--text-muted);font-size:11px;letter-spacing:.12em;text-transform:uppercase;text-anchor:middle}.flow-link__label--steam,.flow-link__label--margin{fill:#a8c4dbeb}.flow-lane__label{fill:#86f0bbeb;font-size:12px;font-weight:700;letter-spacing:.18em;text-transform:uppercase}.flow-lane__label--steam{fill:#8ed6ffe6}.flow-node{stroke:#ffffff14;stroke-width:2px}.flow-node--module{fill:#0f1d27fa}.flow-node--healthy{stroke:#86f0bbcc}.flow-node--shock{stroke:#ffb27ad9}.flow-node--failure{stroke:#ff6d6ddb}.flow-node--idle{stroke:#93b3c633}.flow-node--steam{stroke:#8ed8ffb8}.module-ring{fill:none;stroke-width:8px;opacity:.18;transform-origin:center;animation:ringPulse var(--heartbeat-duration, 60s) ease-in-out infinite}.module-ring--healthy{stroke:#86f0bb47}.module-ring--shock{stroke:#ffb27a4d}.module-ring--failure{stroke:#ff6d6d5c}.module-ring--idle{stroke:#93b3c61f}.module-ring--steam{stroke:#8ed8ff47}.flow-node--orb{fill:#0c1822f0}.flow-node__title{fill:var(--text);font-size:18px;font-weight:700}.flow-node__title--module,.flow-node__title--orb{font-size:16px}.flow-node__subtitle{fill:var(--text-muted);font-size:12px;text-transform:capitalize}.flow-node__subtitle--module,.flow-node__subtitle--orb{font-size:12px}.flow-node__title--centered,.flow-node__subtitle--centered{text-anchor:middle}.flow-node__metric-label,.flow-node__metric-value{fill:var(--text-muted);font-size:12px}.flow-node__metric-value{fill:var(--text);font-weight:700;text-anchor:end}.flow-chip{cursor:pointer;outline:none}.flow-chip rect{fill:#0a1722eb;stroke-width:1.75px;transition:transform .16s ease,fill .16s ease,stroke .16s ease}.flow-chip:hover rect,.flow-chip:focus-visible rect{transform:translateY(-1px)}.flow-chip--capture rect{stroke:#86f0bb75}.flow-chip--steam rect{stroke:#8ed8ff7a}.flow-chip--energy rect{stroke:#ffc16f7a}.flow-chip--materials rect{stroke:#d0e38c75}.flow-chip--loss rect{stroke:#ff84847a}.flow-chip--support rect{stroke:#a8bad257}.flow-chip--selected rect{fill:#101f2cfa}.flow-chip--capture.flow-chip--selected rect{stroke:#86f0bbe0}.flow-chip--steam.flow-chip--selected rect{stroke:#8ed8ffdb}.flow-chip--energy.flow-chip--selected rect{stroke:#ffc16fe0}.flow-chip--materials.flow-chip--selected rect{stroke:#d0e38cdb}.flow-chip--loss.flow-chip--selected rect{stroke:#ff8484e0}.flow-chip--support.flow-chip--selected rect{stroke:#a8bad2cc}.flow-chip__eyebrow{fill:var(--text-muted);font-size:10px;letter-spacing:.16em;text-transform:uppercase}.flow-chip__title{fill:var(--text);font-size:20px;font-weight:700}.flow-chip__status-dot{fill:var(--healthy)}.flow-chip--steam .flow-chip__status-dot{fill:#8ed8ff}.flow-chip--energy .flow-chip__status-dot{fill:#ffc16f}.flow-chip--materials .flow-chip__status-dot{fill:#d0e38c}.flow-chip--loss .flow-chip__status-dot{fill:#ff8484}.flow-chip--support .flow-chip__status-dot{fill:#a8bad2}.flow-inspector{display:grid;gap:14px;align-content:start;padding:18px;border-radius:22px;border:1px solid rgba(147,179,198,.16);background:radial-gradient(circle at top right,rgba(142,216,255,.08),transparent 30%),linear-gradient(180deg,#0e1821fa,#080f17f2);min-width:0;position:sticky;top:18px}.flow-inspector__header{display:flex;justify-content:space-between;gap:12px;align-items:flex-start;flex-wrap:wrap}.flow-inspector__header h3{margin:8px 0 0;font-size:1.5rem;line-height:1.05;letter-spacing:-.04em}.flow-inspector__eyebrow{display:inline-block;font-size:.76rem;letter-spacing:.16em;text-transform:uppercase;color:var(--text-muted)}.flow-inspector__eyebrow--capture{color:var(--healthy)}.flow-inspector__eyebrow--steam{color:#8ed8ff}.flow-inspector__eyebrow--support{color:var(--shock)}.flow-inspector__eyebrow--energy{color:#ffc16f}.flow-inspector__eyebrow--materials{color:#d0e38c}.flow-inspector__eyebrow--loss{color:#ff8484}.flow-inspector__summary{margin:0;color:var(--text-muted);line-height:1.5;font-size:.94rem}.flow-inspector__grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.flow-inspector__grid dt{color:var(--text-muted);font-size:.75rem;text-transform:uppercase;letter-spacing:.12em}.flow-inspector__grid dd{margin:8px 0 0;color:var(--text);font-size:1rem;font-weight:700;line-height:1.35}.flow-inspector__footer{display:flex;flex-wrap:wrap;gap:8px}.flow-inspector__footer span{display:inline-flex;align-items:center;padding:8px 10px;border-radius:999px;border:1px solid rgba(255,255,255,.06);background:#ffffff0a;color:var(--text-muted);font-size:.78rem;letter-spacing:.06em}.module-card,.module-detail{padding:16px;border-radius:16px;box-shadow:0 14px 28px #0000002e}.module-card__header,.module-detail__header{display:flex;justify-content:space-between;gap:12px;align-items:flex-start;flex-wrap:wrap}.module-card__header h3,.module-detail__header h3{margin:6px 0 0;font-size:1rem}.module-card__metrics{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;margin:12px 0 0}.module-card__metrics>div:last-child{grid-column:1 / -1}.module-detail__grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;margin:12px 0 0}.module-card__metrics dt,.module-detail__grid dt{color:var(--text-muted);font-size:.77rem;text-transform:uppercase;letter-spacing:.12em}.module-card__metrics dd,.module-detail__grid dd{margin:8px 0 0;font-size:.93rem;font-weight:700}.module-card__flags{margin:14px 0 0;color:var(--text-muted);font-size:.88rem;line-height:1.4}.status-chip{display:inline-flex;align-items:center;padding:7px 11px;border-radius:999px;background:#ffffff0f;font-size:.68rem;letter-spacing:.12em;text-transform:uppercase}.status-chip--running{color:var(--healthy)}.status-chip--shock{color:var(--shock)}.status-chip--failed,.status-chip--error{color:var(--failure)}.status-chip--stopped,.status-chip--completed,.status-chip--idle{color:var(--text-muted)}.bottom-dock{margin-top:18px;padding:18px 18px 14px;border-radius:24px;box-shadow:var(--shadow)}.bottom-dock__meta{margin-left:auto;color:var(--text-muted);font-size:.84rem;letter-spacing:.03em}.bottom-dock__tabs{display:inline-flex;gap:8px;padding:4px;border-radius:999px;background:#ffffff08}.dock-tab{appearance:none;border:0;background:transparent;color:var(--text-muted);padding:9px 14px;border-radius:999px;text-transform:capitalize;cursor:pointer}.dock-tab--active{color:var(--text);background:#86f0bb1f}.bottom-dock__telemetry{margin-top:20px;display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:12px}.telemetry-card{padding:14px;border-radius:18px}.telemetry-card__header strong{display:block;margin-top:7px;font-size:1.2rem;letter-spacing:-.04em}.telemetry-card__swing{display:block;margin-top:6px;color:var(--text-muted);font-size:.76rem;letter-spacing:.08em;text-transform:uppercase}.telemetry-card__svg{display:block;width:100%;margin-top:10px}.telemetry-card__axis{stroke:#ffffff14;stroke-width:2}.telemetry-card__label{fill:var(--text-muted);font-size:11px}.bottom-dock__table-wrap{margin-top:18px;overflow:auto}.data-table{width:100%;border-collapse:collapse;min-width:860px}.data-table th,.data-table td{padding:14px 10px;text-align:left;border-bottom:1px solid rgba(255,255,255,.06)}.data-table thead th{color:var(--text-muted);font-size:.76rem;text-transform:uppercase;letter-spacing:.12em}.data-table__empty,.bottom-dock__empty{padding:24px 8px;color:var(--text-muted)}.bottom-dock__modules{margin-top:18px;display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:14px}@keyframes heartbeat{0%{stroke-dashoffset:0}to{stroke-dashoffset:-380}}@keyframes ringPulse{0%,to{opacity:.12;transform:scale(.992)}45%{opacity:.24;transform:scale(1.008)}}@media(max-width:1120px){.control-bar,.flow-panel__stage{grid-template-columns:1fr}.flow-panel__status{text-align:left;max-width:none}.overview-grid,.bottom-dock__telemetry{grid-template-columns:repeat(2,minmax(0,1fr))}.flow-inspector{position:static}}@media(max-width:760px){.app-shell__content{padding:18px 14px 22px}.overview-grid,.bottom-dock__telemetry,.flow-inspector__grid,.module-detail__grid,.module-card__metrics{grid-template-columns:1fr}.flow-panel,.control-bar,.bottom-dock{border-radius:20px;padding:16px}.flow-panel__heading,.bottom-dock__header,.status-banner{flex-direction:column;align-items:stretch}.control-bar__actions{flex-direction:row}.flow-panel__canvas{min-height:auto}.flow-chip__title{font-size:18px}}@media(prefers-reduced-motion:reduce){.flow-link--pulse,.module-ring{animation:none}.button{transition:none}}
