:root{--paper: #f4efe6;--paper2: #faf6ee;--ink: #2b2b2b;--ink-rgb: 43, 43, 43;--orange: #c2571b;--teal: #0e7c86;--line: rgba(var(--ink-rgb), .14);--ok: #2e7d32;--warn: #b23a12;--shadow: 0 1px 3px rgba(var(--ink-rgb), .14);--field: #fff;--field-hover: #fff8ee;--editor-bg: #fffdf8;--hud-bg: rgba(250, 246, 238, .9);--pill-bg: rgba(255, 255, 255, .9)}html[data-theme=dark]{--paper: #0b0e13;--paper2: #151b25;--ink: #e7ecf3;--ink-rgb: 205, 213, 224;--orange: #e0692a;--teal: #2bb7c6;--line: rgba(var(--ink-rgb), .16);--ok: #4bd08a;--warn: #ff7a52;--shadow: 0 1px 3px rgba(0, 0, 0, .5);--field: #0f1520;--field-hover: #17202e;--editor-bg: #0c1119;--hud-bg: rgba(15, 21, 32, .9);--pill-bg: rgba(15, 21, 32, .85);color-scheme:dark}*{box-sizing:border-box}html,body{margin:0;height:100%;background:var(--paper);color:var(--ink);font-family:Archivo,system-ui,-apple-system,Segoe UI,sans-serif;font-size:14px}.topbar{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:10px 16px;background:var(--paper2);border-bottom:1px solid var(--line);flex-wrap:wrap}.brand{display:flex;align-items:center;gap:10px}.brand h1{font-size:17px;font-weight:700;margin:0;letter-spacing:-.2px}.brand h1 em{font-weight:400;color:var(--teal);font-style:normal}.dot{width:12px;height:12px;border-radius:50%;background:var(--orange);box-shadow:0 0 0 3px #c2571b33}.topctl{display:flex;align-items:center;gap:12px;flex-wrap:wrap}.topctl label{display:flex;flex-direction:column;font-size:10px;text-transform:uppercase;letter-spacing:.5px;color:rgba(var(--ink-rgb),.6);gap:2px}.topctl select{font-family:IBM Plex Mono,monospace;font-size:13px;padding:3px 6px;border:1px solid var(--line);border-radius:6px;background:var(--field);color:var(--ink)}.misselect{width:100%;margin:6px 0 4px;font-family:IBM Plex Mono,monospace;font-size:12px;padding:4px 6px;border:1px solid var(--line);border-radius:6px;background:var(--field);color:var(--ink)}.langsw{position:fixed;top:10px;right:12px;z-index:50;display:flex;gap:2px;padding:3px;background:var(--pill-bg);border:1px solid var(--line);border-radius:999px;box-shadow:var(--shadow);backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px)}.langsw button{font-family:IBM Plex Mono,monospace;font-size:12px;letter-spacing:.06em;color:rgba(var(--ink-rgb),.6);background:transparent;border:0;border-radius:999px;padding:5px 9px;cursor:pointer;transition:color .15s ease,background .15s ease}.langsw button:hover{color:var(--ink)}.langsw button[aria-pressed=true]{color:#fff;background:var(--orange);font-weight:600}.topbar{padding-right:168px}.status{font-family:IBM Plex Mono,monospace;font-size:12px;padding:3px 10px;border-radius:20px}.status.ok{background:#2e7d321f;color:var(--ok)}.status.busy{background:#c2571b24;color:var(--orange)}.status.err{background:#b23a1224;color:var(--warn)}.btn{font-family:Archivo,sans-serif;font-size:13px;font-weight:600;padding:7px 12px;border:1px solid var(--line);border-radius:8px;background:var(--field);color:var(--ink);cursor:pointer;box-shadow:var(--shadow);transition:transform .05s ease,background .12s ease}.btn:hover{background:var(--field-hover)}.btn:active{transform:translateY(1px)}.btn.accent{background:var(--orange);color:#fff;border-color:#9c440f}.btn.accent:hover{background:#d0611f}.btn.ghost{background:transparent;box-shadow:none;color:rgba(var(--ink-rgb),.7)}.layout{display:grid;grid-template-columns:minmax(0,1fr) 380px;gap:14px;padding:14px;align-items:start}@media (max-width: 1000px){.layout{grid-template-columns:1fr}}.stagecol{display:flex;flex-direction:column;gap:12px;min-width:0}.views{display:grid;grid-template-columns:1fr 1fr;gap:12px}@media (max-width: 760px){.views{grid-template-columns:1fr}}.view{display:flex;flex-direction:column;gap:6px;margin:0;min-width:0}.viewcap{display:flex;align-items:baseline;gap:8px;padding:0 2px}.viewcap b{font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.7px;color:var(--teal)}.viewcap span{font-family:IBM Plex Mono,monospace;font-size:10.5px;color:rgba(var(--ink-rgb),.5)}.stagewrap{position:relative}#stage{width:100%;height:380px;border-radius:12px;border:1px solid var(--line);background:var(--paper2);box-shadow:var(--shadow);display:block}.telem{display:flex;align-items:center;flex-wrap:wrap;gap:6px 10px;padding:8px 12px;background:var(--paper2);border:1px solid var(--line);border-radius:12px;box-shadow:var(--shadow)}.telem-cells{display:flex;align-items:baseline;flex-wrap:wrap;gap:4px 16px;flex:1 1 auto;min-width:0;font-family:IBM Plex Mono,monospace;font-size:12.5px}.tcell{display:inline-flex;align-items:baseline;gap:6px;white-space:nowrap}.tcell .tk{color:rgba(var(--ink-rgb),.5);font-size:11px}.tcell .tv{font-weight:500;color:var(--ink)}.tcell .tgt{color:rgba(var(--ink-rgb),.4);font-weight:400}.tcell.det .tk{color:var(--teal)}.tcell.sat .tv{color:var(--warn);font-weight:700}.telem-toggle{margin-left:auto;flex:0 0 auto;font-family:IBM Plex Mono,monospace;font-size:11px;color:rgba(var(--ink-rgb),.7);background:transparent;border:1px solid var(--line);border-radius:999px;padding:3px 10px;cursor:pointer;transition:background .12s ease,color .12s ease}.telem-toggle:hover{background:var(--field-hover);color:var(--ink)}.telem-toggle[aria-expanded=true]{background:#0e7c861f;color:var(--teal);border-color:#0e7c8666}.errbanner{position:absolute;left:10px;bottom:10px;right:10px;background:#b23a12f2;color:#fff;font-family:IBM Plex Mono,monospace;font-size:12px;padding:8px 10px;border-radius:8px;white-space:pre-wrap}.hidden{display:none!important}#topview{width:100%;height:380px;border-radius:12px;border:1px solid var(--line);background:var(--paper2);box-shadow:var(--shadow);display:block}.wprow{display:flex;align-items:end;gap:10px;margin-top:10px;flex-wrap:wrap}.wprow label{display:flex;flex-direction:column;font-size:10px;text-transform:uppercase;letter-spacing:.5px;color:rgba(var(--ink-rgb),.6);gap:2px}.wprow input{width:76px;font-family:IBM Plex Mono,monospace;font-size:13px;padding:5px 6px;border:1px solid var(--line);border-radius:6px;background:var(--field);color:var(--ink)}.charts{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));grid-auto-rows:118px;gap:10px}@media (max-width: 700px){.charts{grid-template-columns:1fr}}.chart{width:100%;height:118px;border-radius:10px;border:1px solid var(--line);background:var(--paper2);box-shadow:var(--shadow);display:block}.panel{display:flex;flex-direction:column;gap:12px}.card{background:var(--paper2);border:1px solid var(--line);border-radius:12px;padding:12px;box-shadow:var(--shadow)}.card h2{font-size:13px;margin:0 0 10px;text-transform:uppercase;letter-spacing:.6px;color:rgba(var(--ink-rgb),.75)}.card h2 code{text-transform:none;letter-spacing:0;color:var(--orange);font-family:IBM Plex Mono,monospace;font-size:12px}.cardhead{display:flex;align-items:baseline;justify-content:space-between}.hint{font-size:11px;color:rgba(var(--ink-rgb),.45);font-weight:400;text-transform:none;letter-spacing:0}.btnrow{display:flex;flex-wrap:wrap;gap:8px}.challist{display:flex;flex-direction:column;gap:4px}.chrow{display:grid;grid-template-columns:22px 1fr auto;align-items:center;gap:8px;font-family:IBM Plex Mono,monospace;font-size:12px;padding:4px 6px;border-radius:6px;background:rgba(var(--ink-rgb),.03)}.chrow .cdetail{color:rgba(var(--ink-rgb),.55);font-size:11px}.chrow.run{background:#c2571b1a}.chrow.pass{background:#2e7d321a}.chrow.pass .cdetail{color:var(--ok);font-weight:600}.chrow.fail{background:#b23a121f}.chrow.fail .cdetail{color:var(--warn);font-weight:600}.rcsliders{margin-top:10px}#rcToggle.rcon{background:var(--orange);color:#fff;border-color:#9c440f}.sticks{display:flex;justify-content:space-around;gap:14px;flex-wrap:wrap;margin-top:4px}.stickwrap{display:flex;flex-direction:column;align-items:center;gap:6px}.stick{position:relative;width:128px;height:128px;border-radius:12px;background:radial-gradient(circle at 50% 50%,#10151c,#0b0e13 70%);border:1px solid var(--line, #243040);touch-action:none;cursor:grab;-webkit-user-select:none;user-select:none}.stick:active{cursor:grabbing}.stick-cross:before,.stick-cross:after{content:"";position:absolute;background:#ffffff14}.stick-cross:before{left:50%;top:8%;width:1px;height:84%;transform:translate(-50%)}.stick-cross:after{top:50%;left:8%;height:1px;width:84%;transform:translateY(-50%)}.stick-knob{position:absolute;left:50%;top:50%;width:34%;height:34%;border-radius:50%;transform:translate(-50%,-50%);background:radial-gradient(circle at 38% 34%,#4fd1c5,#1f8f86 70%,#12655e);box-shadow:0 2px 6px #00000080;pointer-events:none}.sticklbl{text-align:center;font-size:11px;line-height:1.35;color:rgba(var(--ink-rgb),.72)}.sticklbl b{display:block;color:var(--ink, #2b2b2b);font-size:12px}.sgroup{margin-bottom:10px}.sgroup>summary{cursor:pointer;font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.5px;color:var(--teal);padding:4px 0;list-style:none}.sgroup>summary::-webkit-details-marker{display:none}.sgroup>summary:before{content:"▸ "}.sgroup[open]>summary:before{content:"▾ "}.srow{display:grid;grid-template-columns:96px 1fr 58px;align-items:center;gap:8px;margin:3px 0}.srow label{font-size:12px;color:rgba(var(--ink-rgb),.72)}.srow input[type=range]{width:100%;accent-color:var(--teal)}.srow .sval{font-family:IBM Plex Mono,monospace;font-size:12px;text-align:right;color:var(--ink)}.physmodel{display:flex;flex-wrap:wrap;gap:6px 14px;align-items:center;margin:0 0 12px;padding:0 0 10px;border-bottom:1px solid var(--line)}.physmodel .chk{display:inline-flex;align-items:center;gap:6px;font-size:12px;color:rgba(var(--ink-rgb),.82);cursor:pointer}.physmodel .chk input[type=checkbox]{accent-color:var(--orange);cursor:pointer;margin:0}.physmodel-hint{flex-basis:100%}.senrow{display:grid;grid-template-columns:1fr 96px;align-items:center;gap:8px;margin:3px 0}.senrow label{font-size:12px;color:rgba(var(--ink-rgb),.72);font-family:IBM Plex Mono,monospace}.senrow select{font-family:IBM Plex Mono,monospace;font-size:11px;padding:2px 4px;border:1px solid var(--line);border-radius:6px;background:var(--field);color:var(--ink)}.senrow select.senfault{background:#b23a121f;color:var(--warn);border-color:#b23a1266;font-weight:600}.senrow select.senoff{opacity:.5;font-style:italic}#editor{width:100%;height:260px;resize:vertical;font-family:IBM Plex Mono,monospace;font-size:12px;line-height:1.45;border:1px solid var(--line);border-radius:8px;padding:10px;background:var(--editor-bg);color:var(--ink);margin-bottom:8px;-moz-tab-size:4;tab-size:4;white-space:pre;overflow:auto}.log{font-family:IBM Plex Mono,monospace;font-size:11.5px;line-height:1.4;background:#23201b;color:#e7dfd0;border-radius:8px;padding:10px;margin:8px 0 0;max-height:160px;overflow:auto;white-space:pre-wrap}.log.console{background:#1c2624;color:#cfe6e2;max-height:180px}.log:empty:before{content:"—";color:#ffffff4d}.howto{margin:0 0 10px;border:1px solid rgba(var(--ink-rgb),.12);border-radius:8px;background:#ffb43c0f}.howto>summary{cursor:pointer;padding:8px 12px;font-size:12.5px;font-weight:600;color:rgba(var(--ink-rgb),.8);list-style:none}.howto>summary::-webkit-details-marker{display:none}.howto>summary:before{content:"▸ ";color:var(--orange)}.howto[open]>summary:before{content:"▾ "}.howto ol{margin:4px 0 6px;padding:0 14px 0 30px;font-size:12px;line-height:1.55;color:rgba(var(--ink-rgb),.75)}.howto ol li{margin-bottom:6px}.howto .hint{display:block;padding:0 14px 10px}.pagefoot{border-top:1px solid var(--line);background:var(--paper2);padding:20px 16px 28px;margin-top:4px}.pagefoot h2{font-family:IBM Plex Mono,monospace;font-size:11px;font-weight:500;letter-spacing:.12em;text-transform:uppercase;color:rgba(var(--ink-rgb),.75);margin:0 0 8px}.pagefoot p{max-width:78ch;margin:0;font-size:13px;line-height:1.6;color:rgba(var(--ink-rgb),.8)}.footnav{display:flex;flex-wrap:wrap;gap:8px 22px;margin-top:14px}.footnav a{font-size:13px;color:var(--ink);text-decoration:underline;text-underline-offset:3px;text-decoration-color:rgba(var(--ink-rgb),.35);transition:color .15s ease,text-decoration-color .15s ease}.footnav a:hover{color:var(--teal);text-decoration-color:currentColor}@media (max-width: 640px){.topbar{padding-right:16px}.brand h1 em{display:none}.topctl label,.wprow label,.hint,.sgroup>summary,.senrow select,.sticklbl,.chrow .cdetail{font-size:11.5px}}
