:root[data-theme=dark]{--surface: #0c0d10;--surface-raised: #14161a;--surface-sunken: #0a0b0d;--surface-overlay: #1a1c21;--surface-hover: #1f2228;--ink: #eceef2;--ink-muted: #9ca0aa;--ink-subtle: #6c707a;--line: #22252c;--line-strong: #393d47;--accent: #ffb547;--accent-ink: #1c1405;--surface-inverse: var(--accent);--ink-inverse: var(--accent-ink);--focus-ring: var(--accent);--caption-scrim: rgba(12, 13, 16, .72);--radius-sm: 8px;--radius-md: 12px;--radius-lg: 16px;--side-panel: 340px}*{box-sizing:border-box}html,body{margin:0;height:100%;background:var(--surface);color:var(--ink);font-family:var(--font-sans);font-size:13px;line-height:20px;overflow:hidden;-webkit-font-smoothing:antialiased}h1,h2,h3,p{margin:0}button{font-family:inherit}.muted{color:var(--ink-muted)}.rp-num{font-variant-numeric:tabular-nums}.grow{flex:1 1 0;min-width:0}.spacer{flex:1}.label-section{text-transform:uppercase;color:var(--ink-muted);display:block;font:650 11px/16px var(--font-sans);letter-spacing:.07em}.title-section{font:600 14px/20px var(--font-sans)}.caption{font-size:12px;line-height:16px}:focus-visible{outline:var(--border-strong) solid var(--focus-ring);outline-offset:2px}[hidden]{display:none!important}.shell{position:fixed;inset:0;display:grid;grid-template-rows:auto 1fr}.hdr{display:flex;align-items:center;gap:var(--space-4);padding:var(--space-2) var(--space-4);border-bottom:var(--border-hair) solid var(--line);background:var(--surface);flex-wrap:wrap;min-height:52px}.field-inline{display:flex;align-items:center;gap:var(--space-2);min-width:0}.field-inline .select{max-width:min(360px,52vw)}.env{display:inline-flex;align-items:center;gap:var(--space-2);height:26px;padding:0 var(--space-2);border:var(--border-hair) solid var(--line-strong);border-radius:var(--radius-xs);background:var(--surface-raised);white-space:nowrap;font:650 11px/16px var(--font-sans);letter-spacing:.06em}.env-dot{width:6px;height:6px;border-radius:50%;background:var(--ink)}.seg{display:inline-flex;padding:2px;gap:2px;background:var(--surface-sunken);border:var(--border-hair) solid var(--line);border-radius:var(--radius-sm);max-width:100%}.seg.mode{border-color:var(--line-strong);padding:3px}.seg-full{display:flex;width:100%}.seg-full .seg-btn{flex:1 1 0}.seg-btn{display:inline-flex;align-items:center;justify-content:center;gap:var(--space-2);height:28px;padding:0 var(--space-3);border:0;border-radius:calc(var(--radius-sm) - 2px);background:transparent;color:var(--ink-muted);cursor:pointer;font:550 13px/16px var(--font-sans);white-space:nowrap;transition:background var(--duration-quick) var(--ease-standard),color var(--duration-quick) var(--ease-standard)}.seg.mode .seg-btn{height:30px;color:var(--ink);padding:0 var(--space-4)}.seg-btn:hover:not([aria-checked=true]){background:var(--surface-hover);color:var(--ink)}.seg-btn[aria-checked=true]{background:var(--surface-inverse);color:var(--ink-inverse)}.kbd{font:600 10px/14px var(--font-mono);padding:0 4px;border:1px solid currentColor;border-radius:var(--radius-xs);opacity:.6}.main{display:grid;grid-template-columns:1fr var(--side-panel);gap:var(--space-3);padding:var(--space-3);min-height:0}body.nopanels .main{grid-template-columns:1fr}body.nopanels .side{display:none}.stage{position:relative;background:var(--stage);border-radius:var(--radius-lg);overflow:hidden;min-height:0;color:var(--stage-ink);container-type:size;container-name:stage}.stage:fullscreen{border-radius:0}.stage canvas{position:absolute;inset:0;width:100%;height:100%;display:block;outline:none}#labels{position:absolute;inset:0;pointer-events:none}.ov{position:absolute;z-index:var(--z-stage-overlay);display:flex;gap:var(--space-2)}.ov-tl{top:var(--space-3);left:var(--space-3);right:50%}.ov-tr{top:var(--space-3);right:var(--space-3)}.ov-bl{left:var(--space-3);bottom:64px;flex-wrap:wrap;max-width:calc(100% - 24px);pointer-events:none}.stage-toolbar{display:inline-flex;align-items:center;gap:2px;padding:3px;border-radius:var(--radius-md);background:var(--caption-scrim);backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);flex-wrap:wrap}.tb-btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;height:28px;min-width:28px;padding:0 var(--space-2);border:0;border-radius:calc(var(--radius-md) - 3px);background:transparent;color:var(--stage-ink);font:550 12px/16px var(--font-sans);cursor:pointer;white-space:nowrap;transition:background var(--duration-instant) var(--ease-standard)}.tb-btn:hover{background:#ffffff1f}.tb-btn[aria-pressed=true],.tb-btn[aria-checked=true]{background:var(--accent);color:var(--accent-ink)}.tb-btn svg{width:16px;height:16px;flex:none}.tb-sep{width:1px;height:18px;background:#ffffff3d;margin:0 2px}.status{display:inline-flex;align-items:center;gap:var(--space-1);height:22px;padding:0 var(--space-2) 0 6px;border:var(--border-hair) solid rgba(255,255,255,.28);border-radius:var(--radius-xs);background:var(--caption-scrim);color:var(--stage-ink);white-space:nowrap;font:650 11px/16px var(--font-sans);letter-spacing:.04em}.status .k{color:var(--stage-ink-muted);font-weight:550}.status.t-live{border-color:var(--accent)}.status.t-live .pulse{background:var(--accent)}.pulse{width:6px;height:6px;border-radius:50%;background:var(--stage-ink);animation:pulse 1.6s var(--ease-standard) infinite}@keyframes pulse{50%{opacity:.25}}.stage-state{position:absolute;inset:0;z-index:30;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:var(--space-2);background:#0d0d0ceb}.stage-state p{color:var(--stage-ink-muted)}.spinner{width:24px;height:24px;border-radius:50%;border:2px solid rgba(255,255,255,.2);border-top-color:var(--stage-ink);animation:spin .9s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.lbl{font:600 10px/1 var(--font-mono);color:var(--stage-ink);background:var(--caption-scrim);padding:3px 5px;border-radius:var(--radius-xs);white-space:nowrap;display:inline-flex;align-items:center}.lbl.truss{font-family:var(--font-sans);font-weight:650;letter-spacing:.04em;text-transform:uppercase;border:1px solid rgba(255,255,255,.3)}.dock{position:absolute;z-index:var(--z-stage-overlay);left:var(--space-3);right:var(--space-3);bottom:var(--space-3);display:flex;align-items:center;gap:2px;padding:3px;border-radius:var(--radius-md);background:var(--caption-scrim);backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);overflow-x:auto;scrollbar-width:none}.dock::-webkit-scrollbar{display:none}.dock .cat{font:650 10px/12px var(--font-sans);letter-spacing:.07em;text-transform:uppercase;color:var(--stage-ink-muted);padding:0 6px 0 10px;white-space:nowrap}.dock .cat:first-child{padding-left:6px}.dock .tb-btn{height:32px;padding:0 10px}.dock .tb-btn .kbd{margin-left:2px}.legend{position:absolute;z-index:var(--z-stage-overlay);left:var(--space-3);bottom:var(--space-3);display:flex;flex-direction:column;gap:2px;padding:var(--space-2);border-radius:var(--radius-md);background:var(--caption-scrim);backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);min-width:240px}.legend .lg-head{display:flex;justify-content:space-between;align-items:baseline;padding:2px 6px 6px;gap:var(--space-3)}.legend .lg-row{display:grid;grid-template-columns:12px 1fr auto;align-items:center;gap:var(--space-2);padding:4px 6px;border:0;border-radius:var(--radius-sm);background:transparent;color:var(--stage-ink);text-align:left;cursor:pointer;font:550 12px/16px var(--font-sans)}.legend .lg-row:hover{background:#ffffff1a}.legend .lg-row[aria-pressed=false]{opacity:.38}.legend .lg-row .n{font-variant-numeric:tabular-nums;color:var(--stage-ink-muted)}.legend .dot{width:10px;height:10px;border-radius:3px}.legend .lg-foot{color:var(--stage-ink-muted);padding:6px 6px 2px;font-size:11px;line-height:14px}body.rigmode .ov-bl{display:none}.float-card{position:absolute;z-index:calc(var(--z-stage-overlay) + 1);right:var(--space-3);bottom:64px;width:300px;max-height:calc(100% - 140px);overflow-y:auto;background:var(--surface-overlay);color:var(--ink);border:var(--border-hair) solid var(--line);border-radius:var(--radius-md);box-shadow:var(--shadow-3);padding:var(--space-4);display:flex;flex-direction:column;gap:var(--space-3)}body.rigmode .float-card{bottom:var(--space-3)}.float-card #selInfo{display:flex;flex-direction:column;gap:var(--space-3)}.icon-btn{display:inline-grid;place-items:center;width:28px;height:28px;border:0;border-radius:var(--radius-sm);background:transparent;color:var(--ink-muted);cursor:pointer;font-size:13px}.icon-btn:hover{background:var(--surface-hover);color:var(--ink)}.float-card .close{position:absolute;top:8px;right:8px}.help-pop{position:absolute;z-index:calc(var(--z-stage-overlay) + 2);top:52px;right:var(--space-3);width:280px;background:var(--surface-overlay);color:var(--ink);border:var(--border-hair) solid var(--line);border-radius:var(--radius-md);box-shadow:var(--shadow-2);padding:var(--space-3) var(--space-4);display:flex;flex-direction:column;gap:var(--space-2)}.kv-keys{grid-template-columns:auto 1fr;font-size:12px}.kv-keys dd{text-align:left!important;color:var(--ink-muted)}.kv-keys .kbd{opacity:.9}.side{display:flex;flex-direction:column;min-height:0;background:var(--surface)}.tabs{display:flex;gap:var(--space-1);padding:2px;flex:none;background:var(--surface-sunken);border:var(--border-hair) solid var(--line);border-radius:var(--radius-sm)}.tab{flex:1;height:30px;border:0;border-radius:calc(var(--radius-sm) - 2px);background:none;color:var(--ink-muted);cursor:pointer;font:550 13px/16px var(--font-sans);transition:background var(--duration-quick) var(--ease-standard)}.tab:hover{color:var(--ink);background:var(--surface-hover)}.tab[aria-selected=true]{background:var(--surface-inverse);color:var(--ink-inverse)}.tabpanel{overflow-y:auto;padding:var(--space-3) 2px var(--space-6) 0;display:flex;flex-direction:column;gap:var(--space-3);min-height:0;flex:1;scrollbar-width:thin;scrollbar-color:var(--line-strong) transparent}.card{background:var(--surface-raised);border:var(--border-hair) solid var(--line);border-radius:var(--radius-md);padding:var(--space-4);display:flex;flex-direction:column;gap:var(--space-3)}.card-head{display:flex;justify-content:space-between;align-items:center;gap:var(--space-2)}.row{display:flex;gap:var(--space-2);flex-wrap:wrap;align-items:center}.stack{display:flex;flex-direction:column;gap:var(--space-2)}.disc{display:flex;flex-direction:column}.disc>summary{list-style:none;display:flex;align-items:baseline;gap:var(--space-2);cursor:pointer;padding:2px 0}.disc>summary::-webkit-details-marker{display:none}.disc>summary:before{content:"";width:7px;height:7px;border-right:1.75px solid var(--ink-muted);border-bottom:1.75px solid var(--ink-muted);transform:rotate(-45deg) translateY(-2px);transition:transform var(--duration-quick) var(--ease-standard);margin-right:2px;flex:none}.disc[open]>summary:before{transform:rotate(45deg) translateY(-3px)}.disc[open]>summary{margin-bottom:var(--space-3)}.disc>*:not(summary)+*{margin-top:var(--space-3)}.card .disc+.disc{border-top:var(--border-hair) solid var(--line);padding-top:var(--space-3)}.btn{display:inline-flex;align-items:center;justify-content:center;gap:var(--space-2);height:var(--control-md);padding:0 var(--space-3);border-radius:var(--radius-sm);border:var(--border-hair) solid var(--line-strong);background:var(--surface-raised);color:var(--ink);cursor:pointer;white-space:nowrap;font:550 13px/16px var(--font-sans);transition:background var(--duration-instant) var(--ease-standard),transform var(--duration-instant) var(--ease-standard)}.btn:hover:not(:disabled){background:var(--surface-hover)}.btn:active:not(:disabled){transform:translateY(1px)}.btn:disabled{cursor:not-allowed;color:var(--ink-subtle);background:var(--surface-sunken);border-style:dashed}.btn-primary:not(:disabled){background:var(--surface-inverse);border-color:var(--surface-inverse);color:var(--ink-inverse)}.btn-primary:not(:disabled):hover{background:var(--surface-inverse);box-shadow:inset 0 0 0 999px #7f7f7f2e}.btn[aria-pressed=true]{background:var(--surface-inverse);color:var(--ink-inverse);border-color:var(--surface-inverse)}.btn-sm{height:var(--control-sm);padding:0 var(--space-2);font-size:12px}.btn-quiet{border-color:transparent;background:transparent;color:var(--ink-muted)}.btn-quiet:hover:not(:disabled){color:var(--ink)}.select{height:var(--control-md);padding:0 28px 0 var(--space-3);border-radius:var(--radius-sm);border:var(--border-hair) solid var(--line-strong);background:var(--surface-sunken) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 24 24' fill='none' stroke='%23a8a8a2' stroke-width='2' stroke-linecap='round'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E") no-repeat right 10px center;color:var(--ink);font:550 13px/16px var(--font-sans);appearance:none;-webkit-appearance:none;cursor:pointer;max-width:100%;text-overflow:ellipsis}.stepper{display:inline-flex;align-items:center;border:var(--border-hair) solid var(--line-strong);border-radius:var(--radius-sm);background:var(--surface-sunken);overflow:hidden}.stepper button{width:24px;height:26px;border:0;background:transparent;color:var(--ink-muted);cursor:pointer;font:600 14px/1 var(--font-sans)}.stepper button:hover:not(:disabled){background:var(--surface-hover);color:var(--ink)}.stepper button:disabled{opacity:.3;cursor:default}.stepper output{min-width:22px;text-align:center;font-variant-numeric:tabular-nums;font-weight:600}.switch{display:flex;align-items:center;gap:var(--space-2);cursor:pointer;min-height:var(--control-sm)}.switch input{position:absolute;opacity:0;width:1px;height:1px}.switch-track{position:relative;width:34px;height:20px;border-radius:var(--radius-pill);border:var(--border-hair) solid var(--line-strong);background:var(--surface-sunken);flex:none;transition:background var(--duration-quick) var(--ease-standard)}.switch-track:after{content:"";position:absolute;top:2px;left:2px;width:14px;height:14px;border-radius:var(--radius-pill);background:var(--ink-muted);transition:transform var(--duration-quick) var(--ease-standard)}.switch input:checked+.switch-track{background:var(--surface-inverse);border-color:var(--surface-inverse)}.switch input:checked+.switch-track:after{transform:translate(14px);background:var(--ink-inverse)}.switch input:focus-visible+.switch-track{outline:var(--border-strong) solid var(--focus-ring);outline-offset:2px}.slider{display:grid;grid-template-columns:92px 1fr 52px;align-items:center;gap:var(--space-2);min-height:var(--control-sm)}.slider output{text-align:right;color:var(--ink-muted);font-size:12px}input[type=range]{-webkit-appearance:none;appearance:none;width:100%;height:20px;background:transparent;cursor:pointer}input[type=range]::-webkit-slider-runnable-track{height:4px;border-radius:2px;background:var(--surface-sunken);border:1px solid var(--line)}input[type=range]::-webkit-slider-thumb{-webkit-appearance:none;width:14px;height:14px;margin-top:-6px;border-radius:50%;background:var(--ink);border:2px solid var(--surface-raised)}input[type=range]::-moz-range-track{height:4px;border-radius:2px;background:var(--surface-sunken)}input[type=range]::-moz-range-thumb{width:12px;height:12px;border-radius:50%;background:var(--ink);border:2px solid var(--surface-raised)}.dtable{width:100%;border-collapse:collapse;font-size:13px}.dtable th{text-align:left;font:650 11px/16px var(--font-sans);letter-spacing:.07em;text-transform:uppercase;color:var(--ink-muted);padding:0 0 var(--space-1);border-bottom:var(--border-hair) solid var(--line)}.dtable td{padding:6px 0;border-bottom:var(--border-hair) solid var(--line);vertical-align:middle}.dtable td.n,.dtable th.n{text-align:right;font-variant-numeric:tabular-nums;padding-left:var(--space-3)}.dtable tr:last-child td{border-bottom:0}.dtable td.where{color:var(--ink-muted);font-size:12px;line-height:16px;padding-right:var(--space-2)}.unit{color:var(--ink-muted)}.flag{border:var(--border-strong) solid var(--ink);border-radius:var(--radius-xs);padding:0 4px;font-weight:700}.kv{display:grid;grid-template-columns:auto 1fr;gap:2px var(--space-3);font-size:12px;margin:0}.kv dt{color:var(--ink-muted)}.kv dd{margin:0;text-align:right;font-variant-numeric:tabular-nums}.badge{font:650 10px/16px var(--font-sans);letter-spacing:.06em;text-transform:uppercase;padding:0 6px;border-radius:var(--radius-xs);border:var(--border-hair) solid var(--line-strong);color:var(--ink-muted);white-space:nowrap}.badge.solid{background:var(--surface-inverse);color:var(--ink-inverse);border-color:var(--surface-inverse)}.badge.dashed{border-style:dashed}.swatch-dot{display:inline-block;width:8px;height:8px;border-radius:2px;margin-right:6px;vertical-align:1px;flex:none}.lib-item{padding:var(--space-3) 0;border-bottom:var(--border-hair) solid var(--line);display:flex;flex-direction:column;gap:6px}.lib-item:last-child{border-bottom:0}.lib-head{display:flex;justify-content:space-between;gap:var(--space-2);align-items:baseline}.body-strong{font-weight:600}.swatches{display:grid;grid-template-columns:repeat(6,1fr);gap:4px}.swatches button{height:26px;border-radius:var(--radius-xs);border:var(--border-hair) solid var(--line-strong);cursor:pointer;padding:0;color:var(--ink-muted);background:var(--surface-sunken);font:550 11px var(--font-sans)}.swatches button[aria-pressed=true]{outline:var(--border-strong) solid var(--ink);outline-offset:1px}.drawer-layer{position:fixed;inset:0;z-index:var(--z-drawer)}.drawer-scrim{position:absolute;inset:0;background:var(--scrim)}.drawer{position:absolute;top:0;right:0;bottom:0;width:min(var(--drawer-width),100vw);background:var(--surface-overlay);box-shadow:var(--shadow-3);display:flex;flex-direction:column;gap:var(--space-2);padding:var(--space-4);animation:drawer-in var(--duration-standard) var(--ease-standard)}@keyframes drawer-in{0%{transform:translate(24px);opacity:0}}.drawer-head{display:flex;justify-content:space-between;align-items:center}.drawer-body{overflow-y:auto;min-height:0;flex:1}#toast{position:fixed;left:50%;bottom:var(--space-6);transform:translate(-50%);background:var(--surface-inverse);color:var(--ink-inverse);padding:var(--space-2) var(--space-3);border-radius:var(--radius-sm);box-shadow:var(--shadow-2);opacity:0;transition:opacity var(--duration-quick) var(--ease-standard);pointer-events:none;z-index:var(--z-tooltip);font-weight:550}#toast.show{opacity:1}@media (max-width: 1279px){:root{--side-panel: 320px}}@media (max-width: 900px){html,body{overflow:auto}.shell{position:static;display:block}.main{display:flex;flex-direction:column}.stage{height:64vh}.tabpanel{overflow:visible}}@container stage (max-width: 820px){.tb-label{display:none}.ov-tl{right:46%}.float-card{width:260px}}@container stage (max-width: 560px){.ov-tl{right:var(--space-3)}.ov-tr{top:auto;bottom:64px}.ov-bl{display:none}.legend{min-width:0;right:var(--space-3)}.float-card{left:var(--space-3);width:auto}}@media (prefers-reduced-motion: reduce){*{transition:none!important;animation:none!important}}.legend .lg-name{color:var(--stage-ink-muted);font-weight:450}.hdr .seg.mode{background:var(--surface-raised)}.card{box-shadow:0 1px #ffffff05 inset}.tab[aria-selected=true]{box-shadow:0 1px 2px #0006}.stage{box-shadow:0 0 0 1px var(--line)}.dock>*{flex:none}#layoutDesc{display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden;cursor:pointer}#layoutDesc.open{-webkit-line-clamp:unset;display:block}#layoutDesc:not(.open):after{content:""}body.rigmode .lbl:not(.truss){font-size:9px;padding:2px 4px}body.pseudofs .stage{position:fixed;inset:0;z-index:100;border-radius:0;box-shadow:none}@container stage (max-width: 640px){.legend .lg-name,.legend .lg-foot{display:none}.legend{right:auto;min-width:0}}
