:root{font-family:Inter,'Segoe UI',Arial,sans-serif;color:#294754;background:#f2f5f7;--line:#d8e4ea;--muted:#7d97a4}*{box-sizing:border-box}body{margin:0}button,input,select{font:inherit}button{cursor:pointer}button:disabled{opacity:.4;cursor:not-allowed}button:focus-visible,input:focus-visible,select:focus-visible{outline:2px solid #41a88c;outline-offset:3px}[hidden]{display:none!important}h1,h2,h3,p{margin:0}.app-header{height:74px;padding:0 32px;background:#102a36;color:#fff;display:flex;align-items:center;justify-content:space-between}.brand{display:flex;align-items:center;gap:13px;color:inherit;text-decoration:none;letter-spacing:2px;font-size:16px;font-weight:700}.brand-symbol{border:1px solid #81c7b2;border-radius:10px;width:40px;height:40px;display:grid;place-items:center;letter-spacing:-1px;color:#b3ead8;transform:skewY(-5deg)}.brand small{display:block;font-size:10px;font-weight:400;letter-spacing:1px;color:#9db8c4;margin-top:5px}nav{display:flex;height:100%;gap:24px}nav button{background:none;border:0;border-bottom:3px solid transparent;color:#a4beca;font-size:12px;padding:0 6px}nav .nav-active,nav button:hover{border-color:#93d5bf;color:white}.header-right{display:flex;gap:24px;align-items:center}.simulation-chip{color:#a6c7cc;font-size:9px;letter-spacing:1px}.icon-button{background:transparent;color:inherit;border:1px solid #7894a466;border-radius:6px;width:30px;height:30px;font-size:19px}.workspace{max-width:1840px;margin:auto;padding:28px 32px 0}.titlebar{display:flex;justify-content:space-between;align-items:center;gap:20px;margin-bottom:24px}.eyebrow{font-size:10px;letter-spacing:1.5px;color:#7a95a3;font-weight:600}.titlebar h1{font-size:31px;letter-spacing:-1px;font-weight:600;margin:7px 0}.titlebar p{font-size:12px;color:var(--muted)}.title-actions,.dialog-actions{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.button{display:inline-flex;justify-content:center;align-items:center;gap:8px;border:1px solid #cadce5;background:white;color:#345764;padding:11px 15px;border-radius:7px;font-size:12px;font-weight:600;white-space:nowrap}.button:hover{background:#eef7f3;border-color:#8dc8b5}.button.primary{background:#177e67;color:white;border-color:#177e67}.button.small{font-size:11px;padding:8px 12px}.button.full{width:100%}.text-button{background:none;border:0;color:#29856f;font-size:11px;padding:5px}.danger{color:#b45456!important}.status-dot{width:7px;height:7px;border-radius:100%;background:#90a8b1}.metrics{display:grid;grid-template-columns:repeat(4,1fr);background:white;border:1px solid var(--line);border-radius:10px;margin-bottom:22px;padding:20px 0}.metrics>div{padding:0 26px;border-right:1px solid #e3ebef}.metrics>div:last-child{border:0}.metrics span{display:block;font-size:9px;letter-spacing:1.2px;color:#809aa7;font-weight:600}.metrics strong{display:block;font-size:29px;font-weight:550;line-height:1.45;letter-spacing:-1px;font-variant-numeric:tabular-nums}.metrics b{font-weight:550}.metrics em{font-size:12px;color:#8ea8b3;margin-left:7px;font-style:normal;letter-spacing:0}.metrics small{font-size:11px;color:#8da7b3}.demo-grid{display:grid;grid-template-columns:minmax(0,1fr) 310px;gap:18px}.stage-card{min-width:0;background:#e5eaed;border:1px solid #d3e1e8;border-radius:10px;overflow:hidden;display:flex;flex-direction:column}.stage-heading,.stage-footer{display:flex;align-items:center;justify-content:space-between;padding:0 16px;background:#f8fbfc;border-bottom:1px solid var(--line);height:48px}.stage-heading{font-size:9px;letter-spacing:1.2px;color:#7a99a8}.stage-heading b{font:10px monospace;margin-left:10px;color:#9cb1bc}.segmented{display:flex;gap:2px;background:#edf3f6;border:1px solid #d4e3eb;padding:3px;border-radius:6px}.segmented button{background:none;border:0;padding:6px 10px;font-size:10px;color:#7f9ba9;border-radius:4px}.segmented button.active{background:white;color:#307c67;box-shadow:0 1px 3px #0001}.viewport{position:relative;flex:1;min-height:495px;height:55vh;max-height:760px;overflow:hidden}.viewport canvas{width:100%;height:100%;display:block;touch-action:none}.viewport-tools{position:absolute;left:14px;right:14px;bottom:16px;display:flex;flex-wrap:wrap;gap:4px;pointer-events:none}.viewport-tools button{pointer-events:auto;background:#f9fcfdef;border:1px solid #c5d8e2;color:#557988;font-size:10px;padding:7px 10px;border-radius:5px}.viewport-tools button:hover{border-color:#4fa894}.viewport-note{position:absolute;top:16px;left:16px;font-size:10px;color:#8ba5b3;max-width:65%;pointer-events:none}.labels-layer{position:absolute;inset:0;pointer-events:none;overflow:hidden}.machine-label{position:absolute;transform:translate(-50%,-100%);pointer-events:auto;background:#fffffff0;border:1px solid #bfd5df;border-radius:5px;padding:7px 10px;box-shadow:0 3px 14px #153b4c14;text-align:left;min-width:85px;max-width:150px;white-space:nowrap}.machine-label:after{content:'';position:absolute;left:50%;top:100%;height:14px;border-left:1px solid #9bb6c3}.machine-label.selected{border-color:#479f86;box-shadow:0 0 0 2px #309f7d22}.label-name{display:block;color:#3b606f;font-size:10px;font-weight:600;text-overflow:ellipsis;overflow:hidden}.label-state{display:block;margin-top:4px;font-size:8px;letter-spacing:.7px;font-weight:650;color:var(--state)}.label-state:before{content:'●';margin-right:5px}.model-missing{border-style:dashed}.stage-footer{border-bottom:0;border-top:1px solid var(--line);height:40px}.legend{display:flex;gap:14px;flex-wrap:wrap;font-size:9px;color:#7e9baa}.legend span{display:flex;align-items:center;gap:5px}.legend i{width:5px;height:5px;background:var(--c);border-radius:50%}.caption{font-size:9px;color:#9aafb9}.control-panel{background:#15313e;border-radius:10px;color:#e1eef4;padding:23px 22px;display:flex;flex-direction:column}.control-panel .eyebrow{display:flex;justify-content:space-between;color:#88a9b8;font-size:9px}.control-panel select{background:transparent;color:white;border:0;border-bottom:1px solid #345564;border-radius:0;padding:14px 0;font-size:20px;font-weight:550;margin:0 0 14px}.control-panel option{background:#15313e}.selected-state{display:flex;justify-content:space-between;align-items:center;margin-bottom:19px}.state-pill{background:#2a4a58;border:1px solid #456371;border-radius:4px;padding:6px 9px;font-size:9px;letter-spacing:.8px}.control-panel .text-button{color:#a0d0c0;font-size:10px}.selected-metrics{display:grid;grid-template-columns:1fr 1fr;margin-bottom:18px}.selected-metrics span,.buffer-info span{font-size:10px;color:#91b0be}.selected-metrics strong{display:block;font-size:23px;font-weight:500;margin-top:6px;font-variant-numeric:tabular-nums}.buffer-info{margin-bottom:23px}.buffer-info b{float:right;font-size:9px;font-weight:400;color:#b4cfdc;margin-top:4px}.buffer-track{height:4px;background:#315667;margin-top:9px;border-radius:5px;overflow:hidden}.buffer-track i{display:block;width:0;height:100%;background:#8acfb4;transition:width .3s}.fault-heading{display:flex;justify-content:space-between;align-items:center;margin-bottom:12px}.fault-heading h2{font-size:12px;font-weight:500}.fault-heading>span{font-size:7px;letter-spacing:1px;color:#7a9fad}.fault-controls{display:grid;gap:6px}.fault-button{display:flex;justify-content:space-between;align-items:center;background:#1f3d4c;border:1px solid #395c6c;border-radius:5px;color:#dae9ef;font-size:11px;padding:10px 11px;text-align:left}.fault-button span:before{content:'◇';color:#b99790;margin-right:9px}.fault-button small{color:#80a3b3;font:9px monospace}.fault-button:hover{background:#384650;border-color:#a88783}.fault-button.active{background:#5b3f49;border-color:#d97f7d;color:#ffe7df}.recover{margin-top:12px;background:#244f4f;color:#beebd8;border-color:#446e64;width:100%;font-size:11px}.recover:hover{background:#37685e}.impact{margin-top:auto;padding-top:19px}.impact-title{font-size:8px;letter-spacing:1.2px;color:#7d9fab}.impact p{font-size:10px;line-height:1.75;color:#abc6d0;margin-top:7px}.insights,.activity{margin-top:18px;background:white;border:1px solid var(--line);border-radius:9px;overflow:hidden}.insights{padding:17px 21px 12px}.insight-header{display:flex;justify-content:space-between;align-items:center;gap:14px;margin-bottom:10px}.insight-header .eyebrow{font-size:8px}.insight-header h2{font-size:12px;font-weight:550;margin-top:6px}.scenario-actions{display:flex;gap:6px}#trend{width:100%;height:66px;overflow:visible}.chart-axis{display:flex;justify-content:space-between;font-size:8px;color:#90abb7;margin-top:5px}.activity-heading{height:48px;display:flex;justify-content:space-between;align-items:center;border-bottom:1px solid var(--line);padding:0 19px}.tabs{display:flex;gap:22px;align-self:stretch}.tabs button{background:none;border:0;border-bottom:2px solid transparent;color:#89a7b5;font-size:11px;padding:0}.tabs button.active{border-color:#3f9a7b;color:#386f5e}.tabs span{background:#ecf5f5;font-size:9px;padding:2px 5px;border-radius:4px;margin-left:5px}.activity-heading .text-button{font-size:10px;margin-left:10px}.activity table{width:100%;border-collapse:collapse;text-align:left;font-size:11px}.activity th{background:#fafcfd;font-size:8px;letter-spacing:1px;font-weight:500;color:#91aebc;padding:12px 20px}.activity td{padding:12px 20px;color:#718f9d;border-top:1px solid #eef4f6}.event-marker{display:inline-block;border-radius:50%;width:6px;height:6px;background:#9aafba;margin-right:8px}.event-marker.fault{background:#cc6269}.event-marker.clear{background:#66aa8f}#eventsPanel{max-height:225px;overflow:auto}#signalsPanel{padding:18px}pre{font:11px/1.6 ui-monospace,monospace;background:#163340;color:#b4dece;padding:16px;border-radius:6px;white-space:pre-wrap;word-break:break-word;max-height:340px;overflow:auto}.workspace-footer{display:flex;justify-content:space-between;padding:22px 0;font-size:8px;letter-spacing:.7px;color:#8ba6b4}.toast{position:fixed;bottom:25px;left:50%;transform:translateX(-50%);z-index:10000;background:#1b4353;color:white;padding:15px 23px;border-radius:8px;font-size:12px;line-height:1.6;max-width:min(700px,90vw);box-shadow:0 5px 25px #00203033}.toast.error{background:#8f4149}.empty-scene{position:absolute;inset:25% 10%;text-align:center}.empty-scene>span{font-size:35px;color:#79a699}.empty-scene h2{font-size:24px;font-weight:500;margin:12px}.empty-scene p{font-size:12px;color:#7b9aa8;margin-bottom:20px}
dialog{padding:0;border:1px solid #d3e3eb;border-radius:12px;max-height:94vh;color:#315360;box-shadow:0 24px 80px #00152244}dialog::backdrop{background:#14364799;backdrop-filter:blur(4px)}.dialog-top{padding:22px 26px;border-bottom:1px solid #dce8ef;background:#fbfdfd;display:flex;align-items:center;justify-content:space-between;gap:15px}.dialog-top h2{font-size:21px;font-weight:600;letter-spacing:-.4px;margin-top:5px}.dialog-content{padding:25px 26px;overflow:auto}.settings-dialog{width:min(700px,94vw)}.settings-dialog.wide{width:min(850px,95vw)}.subtle{font-size:11px;color:#7f9dac;line-height:1.7;margin:10px 0 15px}label{display:block;font-size:10px;color:#7393a3}input:not([type=checkbox]),select{width:100%;min-width:0;background:#fbfdfe;color:#345b6a;border:1px solid #c9dfe9;border-radius:6px;padding:10px 11px;font-size:12px;margin:7px 0 14px}input[type=checkbox]{accent-color:#29866c}.field-grid{display:grid;grid-template-columns:1fr 1fr;gap:18px}.field-note{font-size:10px;color:#8aa6b4;line-height:1.6;margin:-3px 0 14px}.dialog-actions{margin:15px 0}.connection-path{display:flex;align-items:center;justify-content:space-between;background:#edf7f2;border:1px solid #cee7da;border-radius:7px;padding:17px;color:#51836e;font-size:10px;font-weight:600;letter-spacing:.6px}.connection-path i{font-size:18px;font-style:normal;color:#a7caba}.technical-details{padding:13px 0;border-block:1px solid #e1ecf1;margin:5px 0 16px;font-size:11px;line-height:1.8}.technical-details summary{cursor:pointer;font-weight:600}.technical-details p{margin:10px 0;color:#80a0ae}.connection-status{background:#eef6f8;padding:13px 15px;border-radius:6px;font-size:11px;color:#648793;line-height:1.6}.connection-stats{display:grid;grid-template-columns:repeat(3,1fr);margin:15px 0}.connection-stats span{display:block;font-size:9px;color:#90adb9}.connection-stats b{display:block;font-size:15px;font-weight:550;margin-top:6px}.check{display:flex;gap:7px;align-items:center;margin-bottom:12px}.settings-dialog h3{font-size:13px;font-weight:600;margin-top:25px}.template-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-top:14px}.template-grid button{text-align:left;background:#eff8f3;border:1px solid #cde3d9;border-radius:8px;padding:20px 15px;color:#477d68}.template-grid b{display:block;font-size:12px;margin-bottom:8px}.template-grid span{font-size:10px;color:#8dab9d}.saved-row,.model-row{display:flex;align-items:center;justify-content:space-between;gap:15px;padding:15px 0;border-bottom:1px solid #e5eff4}.saved-row b,.model-row b{display:block;font-size:12px;font-weight:550}.saved-row small,.model-row small{display:block;font-size:10px;color:#8daab7;margin-top:6px}.saved-row>div:last-child,.model-row>div:last-child{display:flex;gap:6px}.model-info{display:flex;gap:16px;align-items:center}.model-info svg{width:40px;height:35px}.help-content{font-size:12px;line-height:1.85;color:#7b9dab}.help-content li{margin-bottom:18px}.help-content b{color:#385f6e}.help-content p{margin:15px 0}.builder-dialog{width:96vw;max-width:1900px;height:92vh}.builder-dialog .dialog-top{height:89px}.builder-grid{display:grid;grid-template-columns:230px minmax(0,1fr) 258px;height:calc(100% - 89px);overflow:hidden}.machine-library,.builder-properties{background:#f9fcfd;padding:20px;overflow:auto}.machine-library{border-right:1px solid #d7e7ef}.section-title{display:flex;justify-content:space-between;align-items:center}.section-title h3,.builder-properties h3{font-size:12px;font-weight:600}.catalog-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-bottom:15px}.catalog-card{border:1px solid #cce0e9;background:white;padding:10px;min-height:97px;border-radius:6px;text-align:left;cursor:grab;color:#547e8c}.catalog-card:hover{background:#f2faf6;border-color:#5eae92}.catalog-card svg{width:45px;height:37px;margin-bottom:8px;display:block}.catalog-card span{display:block;font-size:10px;font-weight:550;line-height:1.4}.catalog-card small{display:block;font-size:8px;color:#94afbb;margin-top:4px}.plan-workspace{display:flex;flex-direction:column;overflow:hidden;background:#f0f6f9}.plan-toolbar{display:flex;align-items:center;flex-wrap:wrap;gap:12px;padding:12px 16px;background:white;border-bottom:1px solid #dceaf1}.plan-toolbar label{display:flex;gap:5px;align-items:center}.plan-toolbar input[type=number]{width:58px;margin:0;padding:7px}.plan-status{padding:11px 17px;font-size:10px;color:#779fae;min-height:38px}.plan{position:relative;flex:1;overflow:hidden;min-height:260px;margin:0 15px;background-color:#e9f2f7;background-image:linear-gradient(#c8dde744 1px,transparent 1px),linear-gradient(90deg,#c8dde744 1px,transparent 1px);background-size:25px 25px;border:1px solid #ccdee7;border-radius:6px;touch-action:none}.plan-wires{position:absolute;inset:0;width:100%;height:100%;pointer-events:none}.plan-wires path{fill:none;stroke:#529c86;stroke-width:2}.plan-node{position:absolute;transform:translate(-50%,-50%);width:104px;height:66px;padding:10px;background:white;border:1px solid #a3c2d0;border-radius:6px;box-shadow:0 3px 8px #12344412;text-align:center;cursor:grab;user-select:none;touch-action:none}.plan-node.selected{border:2px solid #2a9475;background:#effaf5}.plan-node strong{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-size:10px;font-weight:600}.plan-node small{display:block;font-size:8px;color:#88a9b8;margin-top:5px}.node-arrow{font-size:10px;color:#c6a56a}.port{position:absolute;top:25px;width:13px;height:13px;border:2px solid white;background:#65a68c;border-radius:50%;padding:0}.port.in{left:-8px;background:#8aaebe}.port.out{right:-8px}.plan-footer{display:flex;align-items:center;justify-content:space-between;padding:12px 18px;font-size:10px;color:#7ba0b0}.plan-help{padding:0 18px 12px;margin:0;font-size:9px}.builder-properties{border-left:1px solid #d9e8f1}.builder-properties label{font-size:9px}.builder-properties input,.builder-properties select{padding:9px;font-size:11px;margin:6px 0 11px}.builder-properties hr{border:0;border-top:1px solid #dfeaf0;margin:12px 0 18px}.builder-properties h3{margin-bottom:15px}.builder-properties .field-grid{gap:9px}.connection-row{border-top:1px solid #deebf1;padding:10px 0}.connection-row>span{display:block;font-size:10px;margin-bottom:4px}.connection-row label{display:flex;align-items:center;gap:5px}.connection-row input{width:65px;margin:0}.connection-row button{margin-left:auto}.presenting .app-header,.presenting .metrics,.presenting .insights,.presenting .activity,.presenting .workspace-footer{display:none}.presenting .workspace{padding:20px;max-width:none}.presenting .titlebar{margin-bottom:18px}.presenting .demo-grid{height:calc(100vh - 135px)}.presenting .viewport{max-height:none;height:auto}.presenting .titlebar h1{font-size:25px}
@media(max-width:1100px){.workspace{padding:22px 20px 0}.demo-grid{grid-template-columns:minmax(0,1fr) 275px;gap:12px}.control-panel{padding:20px 16px}.stage-footer .caption,.simulation-chip{display:none}.builder-grid{grid-template-columns:180px minmax(0,1fr) 220px}.machine-library,.builder-properties{padding:14px}.plan-toolbar>.button{display:none}.machine-label{max-width:100px;min-width:65px;padding:6px}.label-name{font-size:9px}.metrics>div{padding:0 18px}}
@media(max-width:760px){nav{display:none}.app-header{height:62px;padding:0 18px}.workspace{padding:20px 12px 0}.titlebar{align-items:flex-start;flex-direction:column;gap:15px}.titlebar h1{font-size:25px}.title-actions .button{font-size:10px;padding:9px 10px}.metrics{grid-template-columns:1fr 1fr;row-gap:18px}.metrics>div:nth-child(2){border:0}.demo-grid{grid-template-columns:1fr}.viewport{height:45vh;min-height:350px}.control-panel{display:grid;grid-template-columns:1fr 1fr;gap:8px 15px}.control-panel>.eyebrow,.control-panel>select,.fault-heading,.fault-controls,.impact{grid-column:1/-1}.fault-controls{grid-template-columns:1fr 1fr}.insight-header{align-items:flex-start;flex-direction:column}.scenario-actions{flex-wrap:wrap}.activity-heading{padding:0 10px}.activity-heading .text-button{font-size:9px;margin-left:2px}.activity td,.activity th{padding:10px;font-size:9px}.workspace-footer span:first-child{display:none}.builder-grid{grid-template-columns:145px 1fr;grid-template-rows:1fr auto}.builder-properties{grid-column:1/-1;height:220px;border-top:1px solid #d7e5ec}.builder-dialog .dialog-top{padding:15px}.builder-dialog .dialog-top h2{font-size:15px}.builder-dialog .button{font-size:10px;padding:9px}.catalog-grid{grid-template-columns:1fr}.plan-toolbar{padding:7px;gap:5px}.plan-toolbar input[type=number]{width:36px;padding:5px}.plan-toolbar label{font-size:8px}.plan-status,.plan-help{display:none}.plan{margin:5px;min-height:200px}.plan-node{width:72px;height:56px;padding:7px}.plan-node strong{font-size:8px}.plan-node small{font-size:7px}.port{top:20px}.dialog-content,.dialog-top{padding:18px}.dialog-top h2{font-size:18px}.field-grid{gap:10px}.model-row{align-items:flex-start}.model-row>div:last-child{flex-wrap:wrap;justify-content:flex-end}.model-row .button{font-size:10px;padding:6px}.presenting .demo-grid{height:auto}.presenting .viewport{min-height:50vh}}

.selected-metrics{grid-template-columns:1fr 1fr 1fr}.tuning{margin-bottom:18px;padding-bottom:14px;border-bottom:1px solid #2b4c5a}.tune-row{display:block;margin-top:8px}.tune-row span{display:flex;justify-content:space-between;font-size:10px;color:#91b0be}.tune-row b{color:#e1eef4;font-weight:500;font-variant-numeric:tabular-nums}.tune-row input{width:100%;margin:6px 0 2px;accent-color:#8acfb4}.tune-row input:disabled{opacity:.4}.tune-row small{font-size:9px;color:#7a9fad}.tune-row.loss b{color:#e6b45a}.tuning .text-button{font-size:10px}.event-marker.speed{background:#e6b45a}.event-marker.quality{background:#c77dd6}
.tune-row small,.tune-row span{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.tune-row small{display:block}.impact p{min-height:7em}

.server-unknown .control-panel .fault-button,.server-unknown .control-panel .recover,.server-unknown .tune-row input,.server-unknown #startButton,.server-unknown #pauseButton,.server-unknown .scenario-actions .button{opacity:.4;pointer-events:none}
.server-unknown .fault-controls:before{content:'Controls paused: the server cannot be reached. The live session may still be publishing.';display:block;font-size:10px;line-height:1.5;color:#e6b45a;margin-bottom:8px}
