html:has(.ss-page),html:has(.ss-page) body{height:100%;margin:0}body:has(.ss-page){display:flex;flex-direction:column}body:has(.ss-page)>.knav-host{flex:0 0 auto}.ss-page{flex:1 1 auto;min-height:0;display:flex;background:var(--paper);color:var(--ink);font-family:var(--sans)}.ss-stage{flex:1 1 auto;position:relative;min-height:480px;overflow:hidden;background:var(--paper)}.ss-canvas-2d,.ss-canvas-3d{position:absolute;inset:0;width:100%;height:100%}.ss-canvas-2d:not([hidden]),.ss-canvas-3d:not([hidden]){display:block}.ss-canvas-2d[hidden],.ss-canvas-3d[hidden]{display:none!important}.ss-canvas-3d{cursor:grab;touch-action:none}.ss-canvas-3d:active{cursor:grabbing}.ss-overlay{position:absolute;top:14px;left:14px;z-index:5;width:280px;display:flex;flex-direction:column;gap:10px}.ss-panel,.ss-params{background:color-mix(in srgb,var(--paper) 92%,transparent);border:1px solid var(--rule);border-radius:10px;box-shadow:0 6px 18px color-mix(in srgb,var(--ink) 12%,transparent)}.ss-panel{padding:12px;display:flex;flex-direction:column;gap:10px}.ss-field{display:grid;grid-template-columns:68px minmax(0,1fr);align-items:center;gap:8px;font-family:var(--mono);font-size:10px;letter-spacing:.12em;text-transform:uppercase;color:var(--ink-soft)}.ss-field[hidden]{display:none}.ss-field select{width:100%;min-width:0;font-family:var(--sans);font-size:12.5px;letter-spacing:0;text-transform:none;padding:4px 6px;border:1px solid var(--rule);border-radius:6px;background:var(--paper);color:var(--ink)}.ss-field select:focus-visible{outline:2px solid var(--acid);outline-offset:1px}.ss-junction{display:flex;flex-direction:column;gap:10px}.ss-junction[hidden]{display:none}.ss-slider{display:flex;flex-direction:column;gap:4px}.ss-slider .head{display:flex;justify-content:space-between;align-items:baseline;font-family:var(--mono);font-size:10px;letter-spacing:.12em;text-transform:uppercase;color:var(--ink-soft)}.ss-slider .vl{font-size:11.5px;letter-spacing:0;text-transform:none;color:var(--ink);font-variant-numeric:tabular-nums}.ss-slider input[type=range]{width:100%;accent-color:var(--acid)}.ss-slider .hint{display:flex;justify-content:space-between;font-family:var(--mono);font-size:9.5px;color:var(--ink-soft)}.ss-ticks{position:relative;display:block;height:12px;margin:0 7px;font-family:var(--mono);font-size:9.5px;color:var(--ink-soft)}.ss-ticks span{position:absolute;top:0;transform:translate(-50%);white-space:nowrap}.ss-toggles{display:grid;grid-template-columns:1fr 1fr;gap:4px 8px;font-family:var(--mono);font-size:10px;color:var(--ink-soft)}.ss-toggles label{display:flex;align-items:center;gap:5px;cursor:pointer}.ss-toggles input{margin:0;accent-color:var(--acid)}.ss-btn{align-self:flex-start;font-family:var(--mono);font-size:10.5px;letter-spacing:.06em;padding:4px 10px;border:1px solid var(--rule);border-radius:6px;background:var(--paper);color:var(--ink);cursor:pointer}.ss-btn:hover{border-color:var(--ink-soft)}.ss-btn:focus-visible{outline:2px solid var(--acid);outline-offset:1px}.ss-btns{display:flex;flex-wrap:wrap;gap:6px}.ss-process{margin:0;padding:0;list-style:none;display:grid;grid-template-columns:1fr 1fr;gap:4px 8px;font-family:var(--mono);font-size:10.5px;color:var(--ink-soft)}.ss-process li{display:flex;align-items:center;gap:6px;cursor:help;padding:2px 6px;border:1px solid var(--rule);border-radius:6px}.ss-process li:before{content:"";flex:0 0 auto;width:7px;height:7px;border-radius:50%;border:1px solid var(--ink-soft)}.ss-process li.is-off{opacity:.4}.ss-process li.is-on{color:var(--ink);border-color:var(--acid)}.ss-process li.is-on:before{background:var(--acid);border-color:var(--acid)}.ss-process li.is-done{color:var(--ink)}.ss-process li.is-done:before{background:var(--ink-soft)}.ss-flow{margin:0;font-family:var(--mono);font-size:10px;color:var(--ink)}.ss-flow small{display:block;color:var(--ink-soft)}.ss-jstats{margin:0;padding-top:6px;border-top:1px solid var(--rule)}.ss-jstats div{display:flex;justify-content:space-between;align-items:baseline;gap:8px;padding:2px 0}.ss-jstats dt{font-family:var(--mono);font-size:10px;letter-spacing:.06em;color:var(--ink-soft)}.ss-jstats dd{margin:0;font-family:var(--mono);font-size:11.5px;color:var(--ink);font-variant-numeric:tabular-nums}.ss-params{margin:0;padding:6px 12px}.ss-params div{display:flex;justify-content:space-between;align-items:baseline;gap:8px;padding:4px 0;border-bottom:1px dashed var(--rule)}.ss-params div:last-child{border-bottom:0}.ss-params dt{font-family:var(--mono);font-size:10px;letter-spacing:.08em;color:var(--ink-soft)}.ss-params dt{flex:0 0 auto}.ss-params dd{margin:0;font-family:var(--mono);font-size:11.5px;color:var(--ink);font-variant-numeric:tabular-nums;text-align:right}.ss-params dd small{display:block;font-size:9.5px;line-height:1.3;color:var(--ink-soft)}.ss-params .ss-gap-scale{align-items:center;gap:6px}.ss-gap-scale dd{flex:1 1 auto}.ss-gap-track{position:relative;display:block;height:10px;border-bottom:1px solid var(--ink-soft)}.ss-gap-mark{position:absolute;bottom:0;width:2px;height:8px;margin-left:-1px;background:var(--ink-soft)}.ss-gap-mark.is-on{width:4px;height:10px;margin-left:-2px;background:var(--acid)}.semi-lab{max-width:1120px;margin:0 auto;color:var(--app-fg)}.semi-lab__head h2{margin:0 0 6px;font-size:1.2rem}.semi-lab__head p{margin:0 0 12px;font-size:13px;color:color-mix(in srgb,var(--app-fg) 76%,transparent)}.semi-lab__layout{display:grid;grid-template-columns:minmax(260px,330px) 1fr;gap:14px;align-items:start}@media (max-width: 900px){.semi-lab__layout{grid-template-columns:1fr}}.semi-lab__controls{border:1px solid var(--border);border-radius:10px;padding:10px;background:color-mix(in srgb,var(--panel-bg) 93%,var(--accent-hover))}.semi-lab__row{display:grid;grid-template-columns:88px 1fr;gap:8px;align-items:center;margin-bottom:9px}.semi-lab__row label{font-size:12px}.semi-lab__controls select{width:100%;border:1px solid var(--border);border-radius:6px;padding:5px 7px;background:var(--panel-bg);color:var(--app-fg)}.semi-lab__check{display:flex;align-items:center;gap:7px;margin:4px 0 10px;font-size:12px;user-select:none}.semi-lab__notes{font-size:12px;line-height:1.45;color:color-mix(in srgb,var(--app-fg) 82%,transparent);margin-top:8px}.semi-lab__canvas-wrap{border:1px solid var(--border);border-radius:10px;background:var(--panel-bg);overflow:hidden}.semi-lab__canvas{display:block;width:100%;height:auto}.semi-lab__legend{margin-top:8px;font-size:12px;color:color-mix(in srgb,var(--app-fg) 80%,transparent)}
