:root{--bg-bench: #EAE4D7;--bg-panel: #F5F1E8;--bg-card: #FBF9F4;--bg-inset: #EFEAE0;--border-line: #CFC6B4;--border-strong: #B5AA95;--ink-primary: #1B1814;--ink-secondary: #575046;--ink-muted: #847B6D;--accent-ruby: #A91E34;--accent-ruby-soft: rgba(169, 30, 52, .11);--accent-steel: #1E4D84;--accent-steel-soft: rgba(30, 77, 132, .11);--accent-brass: #9C722C;--accent-emerald: #1D6E47;--font-serif: "Cormorant Garamond", Georgia, serif;--font-sans: "IBM Plex Sans", -apple-system, sans-serif;--font-mono: "IBM Plex Mono", monospace}*{box-sizing:border-box;margin:0;padding:0}html,body{width:100vw;height:100vh;overflow:hidden;background:var(--bg-bench);color:var(--ink-primary);font-family:var(--font-sans);font-size:13px;-webkit-font-smoothing:antialiased;-webkit-user-select:none;user-select:none}.app-shell{display:flex;flex-direction:column;width:100vw;height:100vh;padding:8px;gap:8px}.top-bar{display:flex;align-items:center;gap:14px;height:50px;padding:0 14px;background:var(--bg-card);border:1px solid var(--border-line);border-radius:6px;flex-shrink:0}.brand-plate{display:flex;flex-direction:column;line-height:1.05}.brand-meta{font-family:var(--font-mono);font-size:9.5px;letter-spacing:.07em;color:var(--accent-brass);font-weight:600;white-space:nowrap}.brand-title{font-family:var(--font-serif);font-size:22px;font-weight:700;letter-spacing:-.01em;color:var(--ink-primary);white-space:nowrap}.brand-title em{font-style:italic;font-weight:600;color:var(--accent-ruby)}.header-divider{width:1px;height:28px;background:var(--border-line)}.toolbar-group{display:flex;align-items:center;gap:6px}.toolbar-label{font-family:var(--font-mono);font-size:10px;font-weight:600;color:var(--ink-muted);letter-spacing:.06em;margin-right:2px}.segmented{display:flex;background:var(--bg-inset);border:1px solid var(--border-line);border-radius:5px;padding:2px;gap:2px}.seg-btn{border:none;background:transparent;padding:4px 9px;font-family:var(--font-sans);font-size:11.5px;font-weight:500;color:var(--ink-secondary);border-radius:3px;cursor:pointer;white-space:nowrap;transition:all .15s ease}.seg-btn:hover{color:var(--ink-primary)}.seg-btn.active{background:var(--ink-primary);color:#faf7f0}.toggle-pill{border:1px solid var(--border-line);background:var(--bg-panel);padding:4px 9px;border-radius:4px;font-family:var(--font-sans);font-size:11.5px;font-weight:500;color:var(--ink-secondary);cursor:pointer;transition:all .15s}.toggle-pill.active{border-color:var(--accent-steel);background:var(--accent-steel-soft);color:var(--accent-steel);font-weight:600}.live-status-strip{display:flex;align-items:center;gap:8px;margin-left:auto;padding:5px 10px;background:var(--bg-inset);border:1px solid var(--border-line);border-radius:4px;min-width:240px;max-width:390px}.status-dot{width:8px;height:8px;border-radius:50%;background:var(--accent-emerald);flex-shrink:0;transition:background .08s}.status-phase{font-family:var(--font-mono);font-size:10.5px;font-weight:600;color:var(--ink-primary);white-space:nowrap}.status-desc{font-size:11.5px;color:var(--ink-secondary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.header-right{display:flex;align-items:center}.audio-btn{display:flex;align-items:center;gap:7px;padding:6px 11px;border-radius:4px;border:1px solid var(--border-strong);background:var(--bg-panel);color:var(--ink-primary);font-family:var(--font-mono);font-size:11px;font-weight:500;cursor:pointer;transition:all .15s}.audio-btn.active{background:var(--accent-ruby-soft);border-color:var(--accent-ruby);color:var(--accent-ruby)}.audio-indicator{width:7px;height:7px;border-radius:50%;background:var(--ink-muted)}.audio-btn.active .audio-indicator{background:var(--accent-ruby);box-shadow:0 0 6px var(--accent-ruby)}.workbench{flex:1;display:grid;grid-template-columns:304px 1fr 336px;gap:8px;min-height:0}.panel{display:flex;flex-direction:column;gap:8px;min-height:0;overflow-y:auto;scrollbar-width:none}.panel::-webkit-scrollbar{display:none}.card{background:var(--bg-card);border:1px solid var(--border-line);border-radius:6px;padding:10px 12px;display:flex;flex-direction:column;gap:8px}.card-header{display:flex;align-items:center;gap:7px;border-bottom:1px solid #E5DECFE8;padding-bottom:6px}.fig-badge{background:var(--ink-primary);color:#faf7f0;font-family:var(--font-mono);font-size:9.5px;font-weight:600;padding:2px 5px;border-radius:3px;letter-spacing:.04em}.card-title{font-family:var(--font-mono);font-size:10.5px;font-weight:600;letter-spacing:.05em;color:var(--ink-secondary)}.link-reset{margin-left:auto;border:none;background:none;color:var(--accent-steel);font-family:var(--font-mono);font-size:10.5px;cursor:pointer;text-decoration:underline}.speed-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:5px}.speed-btn{display:flex;flex-direction:column;align-items:center;padding:6px 4px;background:var(--bg-panel);border:1px solid var(--border-line);border-radius:4px;cursor:pointer;transition:all .15s}.speed-btn:hover{border-color:var(--ink-secondary)}.speed-btn.active{background:var(--accent-steel);border-color:var(--accent-steel);color:#fff}.speed-val{font-family:var(--font-mono);font-size:12px;font-weight:600}.speed-sub{font-size:9.5px;opacity:.82;margin-top:1px}.step-beat-btn{width:100%;padding:6px 8px;background:var(--bg-inset);border:1px dashed var(--border-strong);border-radius:4px;font-family:var(--font-mono);font-size:10.5px;font-weight:500;color:var(--ink-primary);cursor:pointer;transition:all .15s}.step-beat-btn:hover{background:var(--accent-ruby-soft);border-color:var(--accent-ruby);color:var(--accent-ruby)}.vph-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:5px}.vph-card{display:flex;flex-direction:column;align-items:flex-start;padding:6px;background:var(--bg-panel);border:1px solid var(--border-line);border-radius:4px;cursor:pointer;transition:all .15s}.vph-card.active{background:#234e37;border-color:#1a3d2a;color:#faf7f0}.vph-hz{font-family:var(--font-mono);font-size:9.5px;opacity:.78}.vph-num{font-family:var(--font-mono);font-size:12.5px;font-weight:600;margin:2px 0 1px}.vph-tag{font-size:9px;opacity:.8;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%}.slider-block{display:flex;flex-direction:column;gap:4px}.slider-top{display:flex;justify-content:space-between;align-items:center;font-size:11.5px;font-weight:500;color:var(--ink-primary)}.mono-readout{font-family:var(--font-mono);font-size:11px;font-weight:600;color:var(--accent-steel)}input[type=range]{-webkit-appearance:none;-moz-appearance:none;appearance:none;width:100%;height:5px;background:#ddd5c5;border-radius:3px;outline:none;cursor:pointer}input[type=range]::-webkit-slider-thumb{-webkit-appearance:none;width:14px;height:14px;border-radius:50%;background:var(--ink-primary);border:2px solid #FAF7F0;box-shadow:0 1px 3px #0000004d;cursor:grab}.slider-ticks{display:flex;justify-content:space-between;font-family:var(--font-mono);font-size:9px;color:var(--ink-muted)}.wind-btn{margin-top:3px;padding:5px 8px;background:#f4ead5;border:1px solid #C8A96E;border-radius:4px;color:#6b4a12;font-family:var(--font-mono);font-size:10.5px;font-weight:600;cursor:pointer;transition:all .15s}.wind-btn:hover{background:#ecd9b0}.train-diagram-card{margin-top:auto}.train-flow{display:flex;align-items:center;justify-content:space-between;gap:3px}.train-node{flex:1;background:var(--bg-panel);border:1px solid var(--border-line);border-radius:4px;padding:5px 4px;text-align:center;display:flex;flex-direction:column;gap:2px}.train-node.highlight{border-color:var(--accent-brass);background:#f8f1e1}.train-node.ruby{border-color:var(--accent-ruby);background:var(--accent-ruby-soft)}.tn-name{font-size:9.5px;color:var(--ink-secondary)}.tn-val{font-family:var(--font-mono);font-size:10px;font-weight:600}.tn-arrow{font-family:var(--font-mono);font-size:10px;color:var(--ink-muted)}.viewport-panel{position:relative;background:radial-gradient(circle at 50% 44%,#f7f3ea,#e7dfcf 68%,#d9ceba);border:1px solid var(--border-strong);border-radius:6px;overflow:hidden;display:flex;flex-direction:column}.viewport-panel.dark-studio{background:radial-gradient(circle at 50% 44%,#23262e,#14161b 75%,#0d0e12)}#three-canvas{width:100%;height:100%;display:block;cursor:grab}#three-canvas:active{cursor:grabbing}.vp-overlay-top{position:absolute;top:12px;left:14px;right:14px;display:flex;justify-content:space-between;align-items:center;pointer-events:none;z-index:5}.vp-scale{font-family:var(--font-mono);font-size:10px;letter-spacing:.08em;color:var(--ink-secondary);background:#fbf9f4d1;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);padding:4px 8px;border-radius:4px;border:1px solid rgba(181,170,149,.5)}.viewport-panel.dark-studio .vp-scale{background:#181b22cc;color:#c9c3b8;border-color:#ffffff24}.cam-pills{display:flex;gap:4px;pointer-events:auto;background:#fbf9f4db;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);padding:3px;border-radius:5px;border:1px solid var(--border-line)}.cam-btn{border:none;background:transparent;padding:4px 9px;border-radius:3px;font-family:var(--font-mono);font-size:10.5px;font-weight:500;color:var(--ink-secondary);cursor:pointer}.cam-btn.active{background:var(--ink-primary);color:#faf7f0}.callouts-layer{position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none;z-index:4}.callout-pin{position:absolute;transform:translate(-50%,-100%);display:flex;flex-direction:column;align-items:center;transition:opacity .2s}.callout-tag{background:#1b1814e0;color:#faf7f0;padding:3px 8px;border-radius:3px;font-family:var(--font-mono);font-size:10px;letter-spacing:.02em;white-space:nowrap;border:1px solid rgba(220,195,145,.45);box-shadow:0 2px 8px #00000029}.callout-tag b{color:#f0c46f;margin-right:4px}.callout-stem{width:1px;height:16px;background:#1b1814a6}.viewport-panel.dark-studio .callout-stem{background:#f0c46fb3}.callout-dot{width:6px;height:6px;border-radius:50%;background:var(--accent-ruby);border:1.5px solid #FAF7F0}.stage-bar{position:absolute;bottom:12px;left:50%;transform:translate(-50%);width:calc(100% - 32px);max-width:760px;background:#fbf9f4ed;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border:1px solid var(--border-strong);border-radius:7px;padding:7px 10px 6px;box-shadow:0 8px 24px #1c17101f;z-index:6;display:flex;flex-direction:column;gap:5px}.stage-steps{display:grid;grid-template-columns:repeat(4,1fr);gap:6px}.stage-step{display:flex;align-items:center;gap:7px;padding:6px 9px;background:var(--bg-inset);border:1px solid var(--border-line);border-radius:4px;cursor:pointer;text-align:left;transition:all .16s ease}.stage-step:hover{border-color:var(--ink-secondary)}.stage-step.active{background:var(--ink-primary);border-color:var(--ink-primary);color:#faf7f0}.st-num{font-family:var(--font-mono);font-size:10.5px;font-weight:600;color:var(--accent-ruby)}.stage-step.active .st-num{color:#f0c46f}.st-label{font-size:11.5px;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.vp-hint{text-align:center;font-family:var(--font-mono);font-size:9.5px;letter-spacing:.08em;color:var(--ink-muted)}.cosc-badge{margin-left:auto;font-family:var(--font-mono);font-size:9.5px;font-weight:600;padding:2px 6px;border-radius:3px;background:#1d6e471f;color:var(--accent-emerald);border:1px solid rgba(29,110,71,.35)}.cosc-badge.warn{background:var(--accent-ruby-soft);color:var(--accent-ruby);border-color:#a91e3459}.metrics-grid{display:grid;grid-template-columns:1fr 1fr;gap:6px}.metric-box{background:var(--bg-panel);border:1px solid var(--border-line);border-radius:4px;padding:6px 8px;display:flex;flex-direction:column}.m-label{font-family:var(--font-mono);font-size:9px;color:var(--ink-muted);letter-spacing:.05em}.m-value{font-family:var(--font-mono);font-size:16px;font-weight:600;color:var(--ink-primary);margin:1px 0}.m-value small{font-size:11px;font-weight:500;color:var(--ink-secondary)}.m-sub{font-family:var(--font-mono);font-size:9.5px;color:var(--ink-secondary)}.canvas-frame{background:#f4efe4;border:1px solid var(--border-line);border-radius:4px;overflow:hidden}.canvas-frame.dark-scope{background:#14171a;border-color:#2d3239}.canvas-caption{display:flex;justify-content:space-between;padding:4px 8px;font-family:var(--font-mono);font-size:9px;color:var(--ink-secondary);border-bottom:1px solid rgba(0,0,0,.07)}.scope-cap{border-bottom-color:#ffffff14}.scope-cap .ch1{color:#e85d75}.scope-cap .ch2{color:#5da9e9}#timegrapher-canvas,#scope-canvas{display:block;width:100%;height:auto}.monograph-card{flex:1}.mono-heading{font-family:var(--font-serif);font-size:18px;font-weight:700;color:var(--ink-primary);line-height:1.15}.mono-body{font-size:12px;line-height:1.48;color:var(--ink-secondary)}.mono-body strong{color:var(--ink-primary);font-weight:600}.experiment-tip{margin-top:auto;background:var(--accent-steel-soft);border-left:3px solid var(--accent-steel);padding:7px 9px;border-radius:0 4px 4px 0;font-size:11px;line-height:1.4;color:var(--ink-primary)}
