:root{--radius: .75rem;--background: #fbfbfc;--foreground: #191817;--card: #ffffff;--card-foreground: #14161a;--tile: #ffffff;--pic-bg: #fbfbfc;--pic-paper: #fff;--pic-ink: #3b3f46;--pic-soft: #c7ccd4;--pic-dim: #9aa1ad;--pic-dim-ink: #6b7280;--pic-hot: oklch(.52 .15 250);--pic-steel: #2f6fd6;--pic-beam: #f08a24;--port-case: #2f6fd6;--port-pallet: #f08a24;--port-product: #2ea56b;--popover: #ffffff;--popover-foreground: #191817;--primary: oklch(.52 .15 250);--primary-foreground: #ffffff;--secondary: #f1efec;--secondary-foreground: #3f3d3a;--muted: #f1efec;--muted-foreground: #8d8a85;--destructive: #b42318;--destructive-foreground: #ffffff;--border: #e9e7e3;--input: #e2e0db;--ring: #2563eb;--sidebar: #f5f6f8;--sidebar-border: #eef0f3;--ink: #14161a;--ink-2: #2b2f36;--muted-1: #6b7280;--muted-2: #9aa0a9;--faint: #8b919b;--line: #dfe2e7;--line-2: #eef0f3;--line-3: #f4f5f7;--hover: #f1f2f5;--active: #e6e8ec;--accent: oklch(.985 .008 250);--accent-ink: oklch(.52 .15 250);--accent-hover: oklch(.46 .15 250);--accent-tint: oklch(.985 .008 250);--mine-head: oklch(.955 .012 250);--scrim: rgb(0 0 0 / .5);--accent-border: oklch(.9 .04 250);--accent-text: oklch(.45 .12 250);--warm: oklch(.55 .15 40);--green: oklch(.55 .13 155);--field: #faf9f7;--accent-blue: #2563eb;--accent-soft: #dbeafe;--shadow-card: 0 1px 2px rgba(20,18,15,.04), 0 8px 24px rgba(20,18,15,.05);--shadow-pop: 0 4px 14px rgba(20,18,15,.08), 0 22px 60px rgba(20,18,15,.16);--font-sans: "Geist", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;--font-mono: "JetBrains Mono", ui-monospace, SFMono-Regular, Menlo, monospace;--brand: #122c5f;--rail-w: 232px;--plan-bg: #fcfcfc;--grid-minor: var(--plan-grid-minor);--grid-major: var(--plan-grid-major);--ghost: var(--accent-ink);--ghost-soft: color-mix(in oklab, var(--accent-ink) 10%, transparent);--ghost-guard: var(--accent-ink);--ghost-guard-soft: color-mix(in oklab, var(--accent-ink) 22%, transparent);--paint: #d0021b;--badge-logical-bg: #ede8f7;--badge-logical-fg: #6a4fa3;--err-soft: color-mix(in oklab, var(--destructive) 8%, var(--card));--label: color-mix(in srgb, var(--ink) 62%, transparent);--label-up: color-mix(in srgb, var(--ink) 42%, transparent);--plan-grid-minor: #f0f1f3;--plan-grid-major: #e1e4e8;--plan-axis: #9aa0a9;--plan-ink: #14161a;--plan-line: #1c1c1c;--plan-field: #c2410c;--plan-ink-soft: rgba(20,22,26,.55);--plan-sel-fill: rgba(37,99,235,.14);--plan-sel-route: rgba(37,99,235,.3);--plan-floor-fill: rgba(107,114,128,.1);--plan-route-fill: rgba(107,114,128,.35);--plan-paper: #ffffff;--plan-bad: #b42318;--plan-warn: #b45309;--wipe-line: #000;--wipe-thumb: #fff;--wipe-thumb-ink: #222;--wipe-shadow: rgba(0, 0, 0, .45);--panel: var(--card);--ink2: var(--muted-1);--ink3: var(--muted-2);--err: var(--destructive);--mono: var(--font-mono);--sans: var(--font-sans)}:root.dark{--pic-bg: var(--card);--pic-paper: var(--card);--pic-ink: var(--foreground);--pic-soft: var(--line-2);--pic-dim: var(--muted-1);--pic-dim-ink: var(--muted-1);--pic-hot: var(--accent-ink);--pic-steel: #6f9cf0;--pic-beam: #f5a54e;--port-case: #6f9cf0;--port-pallet: #f5a54e;--port-product: #5cc08f;--background: #1a1917;--foreground: #ece9e4;--card: #232120;--card-foreground: #ece9e4;--tile: #232120;--popover: #232120;--popover-foreground: #ece9e4;--primary: #ece9e4;--primary-foreground: #1a1917;--secondary: #2a2826;--secondary-foreground: #ece9e4;--muted: #2a2826;--muted-foreground: #a8a39b;--destructive: #e5614d;--destructive-foreground: #1a1917;--border: #34322f;--input: #3a3835;--ring: #3b82f6;--sidebar: #1f1e1c;--sidebar-border: #2a2826;--ink: #ece9e4;--ink-2: #c9c5be;--muted-1: #9a958d;--muted-2: #7d7973;--line: #34322f;--line-2: #3a3835;--line-3: #2a2826;--hover: #2a2826;--active: #322f2c;--field: #232120;--accent-blue: #3b82f6;--accent-soft: #1e293b;--accent: #2f2d2a;--accent-ink: #93c5fd;--accent-text: #93c5fd;--accent-tint: #1e293b;--mine-head: #262a31;--scrim: rgb(0 0 0 / .6);--accent-border: #2f4a7a;--shadow-card: 0 1px 2px rgba(0,0,0,.3), 0 8px 24px rgba(0,0,0,.35);--shadow-pop: 0 4px 14px rgba(0,0,0,.4), 0 22px 60px rgba(0,0,0,.5);--brand: #ece9e4;--plan-bg: #1d1c1a;--grid-minor: #24231f;--grid-major: #34322f;--badge-logical-bg: #2c2740;--badge-logical-fg: #c4b5fd;--plan-grid-minor: #24231f;--plan-grid-major: #34322f;--plan-axis: #7d7973;--plan-ink: #ece9e4;--plan-line: #d9d4cc;--plan-field: #f59e0b;--plan-ink-soft: rgba(236,233,228,.55);--plan-sel-fill: rgba(147,197,253,.18);--plan-sel-route: rgba(147,197,253,.35);--plan-floor-fill: rgba(154,149,141,.14);--plan-route-fill: rgba(154,149,141,.35);--plan-paper: #1d1c1a;--plan-bad: #e5614d;--plan-warn: #f59e0b}*{box-sizing:border-box;margin:0;padding:0}html,body{height:100%;overflow:hidden}body{font-family:var(--sans);font-size:13px;color:var(--ink);background:var(--background);-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}body{user-select:none;-webkit-user-select:none;-webkit-touch-callout:none}input,textarea,select,[contenteditable],code,.selectable{user-select:text;-webkit-user-select:text}button{font:inherit;color:inherit;background:none;border:none;cursor:pointer}button:disabled{cursor:default;opacity:.45}input[type=text],input[type=number],input[type=search]{font:inherit;color:var(--ink);background:var(--panel);border:1px solid var(--line);border-radius:6px;padding:4px 7px;outline:none;width:100%}input:focus{border-color:var(--ring);box-shadow:0 0 0 3px color-mix(in srgb,var(--ring) 20%,transparent)}#app{display:flex;flex-direction:column;height:100%}#app{touch-action:none}#railList,#pList,#jList,#sessionsList,#propBody,#popover.wide,.mpCard,#catSettings .csShelves{touch-action:pan-y}header{display:flex;align-items:center;gap:14px;height:46px;padding:0 12px;background:var(--panel);border-bottom:1px solid var(--line);flex:none;z-index:30}.wordmark{display:flex;align-items:center;gap:8px;font-weight:650;font-size:13.5px;letter-spacing:-.01em;color:var(--ink);white-space:nowrap}.wordmark svg{width:20px;height:20px;fill:var(--brand);flex:none}#rtxOpen{margin-left:14px}#rtxOpen:before{content:"";position:absolute;left:-8px;top:6px;bottom:6px;width:1px;background:var(--line)}#rtxOpen.on{color:var(--accent-ink);background:var(--accent-tint)}#rtxOpen.busy>svg{animation:rtxPulse 1.1s ease-in-out infinite}@keyframes rtxPulse{50%{opacity:.35}}#rtxCaret{position:absolute;right:0;bottom:0;width:12px;height:12px;display:flex;align-items:center;justify-content:center;border-radius:4px;color:var(--ink2);background:var(--panel);box-shadow:0 0 0 1px var(--line);opacity:0;transition:opacity .12s}#rtxCaret svg{width:9px;height:9px;stroke-width:2.2}#rtxOpen:hover #rtxCaret,#rtxCaret.on{opacity:1}#rtxCaret:hover{color:var(--ink)}#threeTools #rtxViews{margin-right:6px}#viewerWrap.rtxLive #threeTools{display:flex;align-items:center}#rtxViews .vm.ibtn.active{background:var(--panel);color:var(--ink);box-shadow:var(--shadow-card)}#rtxPic{position:absolute;inset:0;overflow:hidden;display:none;pointer-events:none;z-index:3}#rtxVideo{position:absolute!important;top:0!important;left:0!important;width:100%!important;height:100%!important;margin:0!important;transform:none!important;object-fit:fill!important;pointer-events:none;background:transparent}#viewerWrap[data-rtx=rtx] #rtxPic,#viewerWrap[data-rtx=split] #rtxPic{display:block}#viewerWrap[data-rtx=split] #rtxPic{clip-path:inset(0 0 0 var(--rtx-wipe, 50%))}#rtxWipe{display:none;position:absolute;top:0;bottom:0;left:var(--rtx-wipe, 50%);width:0;z-index:4;pointer-events:none}#rtxWipe .wipe-line{position:absolute;top:0;bottom:0;left:-.5px;width:1px;background:var(--wipe-line)}#rtxWipe .wipe-thumb{position:absolute;top:50%;left:0;width:32px;height:32px;transform:translate(-50%,-50%);border-radius:50%;background:var(--wipe-thumb);color:var(--wipe-thumb-ink);box-shadow:0 1px 4px var(--wipe-shadow);display:flex;align-items:center;justify-content:center;cursor:ew-resize;pointer-events:auto;touch-action:none}#rtxWipe .wipe-thumb svg{width:18px;height:18px}#viewerWrap[data-rtx=split] #rtxWipe{display:block}#rtxCfg{position:fixed;z-index:60;display:none;width:236px;padding:12px;background:var(--panel);color:var(--ink);border:1px solid var(--line);border-radius:12px;box-shadow:var(--shadow-pop)}#rtxCfg.on{display:block}#rtxCfg .t-name{font-weight:650}#rtxCfg .cfgLabel{font-size:10px;font-weight:600;color:var(--ink3);text-transform:uppercase;letter-spacing:.04em;margin:12px 0 5px}#rtxCfg{width:280px}#rtxCfg .rtxAddr{display:grid;grid-template-columns:1fr 74px;gap:6px}#rtxCfg .rtxTiles{display:grid;grid-auto-flow:column;grid-auto-columns:1fr;gap:6px}#rtxCfg .rtxTile{display:flex;flex-direction:column;align-items:center;gap:5px;padding:9px 4px 7px;border:1px solid var(--line);border-radius:8px;color:var(--ink2);font-size:11px;line-height:1.2;text-align:center}#rtxCfg .rtxTile svg{width:22px;height:22px;stroke:currentColor;fill:none;stroke-width:1.6;stroke-linecap:round;stroke-linejoin:round}#rtxCfg .rtxTile:hover{color:var(--ink);background:var(--muted)}#rtxCfg .rtxTile.active{color:var(--accent-ink);border-color:var(--accent-ink);background:var(--accent-tint)}#rtxStatus{font-size:11px;color:var(--ink2);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:40vw}#rtxStatus:empty{display:none}#themeBtn .ic-sun{display:none}html.dark #themeBtn .ic-sun{display:inline-block}html.dark #themeBtn .ic-moon{display:none}.toolgroup{display:flex;gap:2px;background:var(--muted);border:1px solid var(--line);border-radius:10px;padding:2px}.tool{display:flex;align-items:center;gap:6px;padding:4px 10px;border-radius:6px;color:var(--ink2);font-weight:500}.ibtn{display:inline-flex;align-items:center;justify-content:center;width:30px;height:30px;border-radius:8px;color:var(--ink2);position:relative;padding:0}.ibtn svg{width:16px;height:16px;stroke:currentColor;fill:none;stroke-width:1.75;stroke-linecap:round;stroke-linejoin:round}.ibtn:not(:disabled):hover{color:var(--ink);background:var(--hover)}.ibtn.on,.ibtn.active{color:var(--accent-ink);background:var(--accent-tint)}.ibtn.primary{color:var(--background);background:var(--ink)}.ibtn.primary.dirty{box-shadow:0 0 0 2px var(--accent-soft)}.ibtn.primary:not(:disabled):hover{background:var(--ink-2)}.ibtn .dot{display:none;position:absolute;top:4px;right:4px;width:7px;height:7px;border-radius:50%;font-size:0}.ibtn .dot.blocking{display:block;background:var(--destructive)}.ibtn .dot.concern{display:block;background:var(--warm)}.ibtn .dot.clean{display:block;background:var(--green)}.ibtn .dot.some{display:block;background:var(--accent-ink)}.ibtn .dot.stale{opacity:.45}.ibtn .n{position:absolute;top:1px;right:1px;font-family:var(--mono);font-size:9px;color:var(--accent-ink)}.toolgroup .tool.ibtn{width:30px;height:26px;border-radius:6px}.tool svg,.hbtn svg{width:14px;height:14px;stroke:currentColor;fill:none;stroke-width:1.75;stroke-linecap:round;stroke-linejoin:round;flex:none}.hbtn{display:inline-flex;align-items:center;gap:6px}.tool:not(:disabled):hover{color:var(--ink)}.tool.active{background:var(--panel);color:var(--accent-ink);box-shadow:var(--shadow-card)}.tool .key{font-family:var(--mono);font-size:10px;color:var(--ink3)}.hbtn{padding:5px 10px;border:1px solid var(--line);border-radius:8px;color:var(--ink2);font-weight:500}.hbtn:not(:disabled):hover{color:var(--ink);border-color:var(--ink3)}.hbtn.on{color:var(--accent-ink);border-color:var(--accent-ink);background:var(--accent-soft)}#journalBtn .badge{background:var(--accent-ink);color:var(--primary-foreground);border-radius:12px;padding:0 6px;font-size:10px;font-family:var(--mono);margin-left:4px}#journalPanel{position:absolute;z-index:46;top:6px;right:8px;bottom:40px;width:336px;background:var(--panel);border:1px solid var(--line);border-radius:12px;box-shadow:var(--shadow-pop);display:none;flex-direction:column}#journalPanel.open{display:flex}.j-head{display:flex;align-items:center;gap:8px;padding:10px 12px;border-bottom:1px solid var(--line);font-weight:650}.j-head .spacer{flex:1}.j-head button{color:var(--ink2);font-size:15px}.j-meta{padding:8px 12px;border-bottom:1px solid var(--line);display:grid;gap:6px}#jList{flex:1;overflow-y:auto;padding:4px 0}.j-row{padding:6px 12px;border-bottom:1px solid var(--line-2);font-size:11.5px;line-height:1.4}.j-row .k{font-family:var(--mono);font-size:9.5px;color:var(--primary-foreground);background:var(--ink2);border-radius:4px;padding:1px 5px;margin-right:6px}.j-row.failed{background:var(--err-soft)}.j-row.failed .k{background:var(--err)}.j-row .err{color:var(--err);font-size:10.5px;margin-top:2px}.j-row .noteIn{margin-top:4px;font-size:11px;padding:2px 6px}.j-row.notice{color:var(--ghost);font-size:10.5px}.j-actions{display:flex;gap:6px;padding:8px 12px;border-top:1px solid var(--line)}.j-actions .spacer{flex:1}#jClear.armed{color:var(--err);background:var(--err-soft)}#jImportBox{padding:8px 12px;border-top:1px solid var(--line)}#jImportBox textarea{width:100%;height:72px;font-family:var(--mono);font-size:10px;border:1px solid var(--line);border-radius:6px;padding:5px;resize:vertical}#jImportErr{color:var(--err);font-size:11px;margin-top:4px;line-height:1.4;white-space:pre-wrap}.j-hint{padding:6px 12px 10px;font-size:10px;color:var(--ink3);line-height:1.45}#viewMode .vm.ibtn,#planMode .vm.ibtn,#paneMode .vm.ibtn{width:30px;height:26px;border-radius:6px}#viewMode .vm.ibtn.active,#planMode .vm.ibtn.active,#paneMode .vm.ibtn.active{background:var(--panel);color:var(--ink);box-shadow:var(--shadow-card)}#main.plan-only #viewerWrap,#main.plan-only #split{display:none}#main.plan-only #planWrap{flex:1 1 auto!important}#main.three-only #planWrap,#main.three-only #split{display:none}#popover select{width:100%;font:inherit;font-size:12px;padding:4px 6px;border:1px solid var(--line);border-radius:6px;background:var(--panel);color:var(--ink)}#popover .p-row{display:flex;gap:4px;align-items:center}#popover .p-row input{min-width:0;flex:1}#popover .p-style .ibtn{width:26px;height:26px;flex:0 0 26px}#popover .p-style select{flex:1}#planLegend{position:absolute;right:14px;bottom:12px;z-index:5;pointer-events:none;background:var(--panel);border:1px solid var(--line);border-radius:8px;padding:6px 10px;font-family:var(--mono);font-size:10px;color:var(--ink2);box-shadow:var(--shadow-card);max-width:60%}#planLegend table{border-collapse:collapse}#planLegend th{font-weight:600;text-transform:uppercase;letter-spacing:.05em;font-size:8.5px;color:var(--ink3);text-align:right;padding:0 5px 3px}#planLegend th:first-child,#planLegend td:first-child{text-align:left}#planLegend td{text-align:right;padding:1px 5px;border-top:1px solid var(--line-2)}#planLegend b{color:var(--ink)}.lg-line{padding:2px 0}.lg-line+.lg-line,table+.lg-line{border-top:1px solid var(--line-2);margin-top:3px;padding-top:4px}.lg-k{display:inline-block;min-width:62px;text-transform:uppercase;letter-spacing:.05em;font-size:8.5px;color:var(--ink3)}.lg-empty{color:var(--ink3)}.p-toggle{display:flex;align-items:center;gap:5px;font-size:11px;color:var(--ink2);cursor:pointer}.t-ref{margin:4px 0 6px;font-size:11px}#propFoot .pref{color:var(--accent-ink);text-decoration:none}#propFoot .pref:hover{text-decoration:underline}.t-ref a{color:var(--accent-ink);text-decoration:none;pointer-events:auto}.t-ref a:hover{text-decoration:underline}#partsPanel{position:absolute;z-index:46;top:6px;right:8px;bottom:40px;width:620px;min-width:420px;max-width:calc(100% - 16px);resize:horizontal;overflow:hidden;background:var(--panel);border:1px solid var(--line);border-radius:12px;box-shadow:var(--shadow-pop);display:none;flex-direction:column}#partsPanel.open{display:flex}[hidden]{display:none!important}#partsPanel .j-head{cursor:grab;user-select:none}#partsPanel.dragging .j-head{cursor:grabbing}#partsPanel.moved{right:auto;bottom:auto;height:70vh;max-height:calc(100% - 52px)}.p-cols,.p-row{display:grid;grid-template-columns:var(--p-cols, 36px 40px minmax(120px, 1.1fr) minmax(140px, 2fr) minmax(76px, 1fr) 64px 72px);gap:8px;padding:6px 12px;align-items:baseline}.p-cols span{position:relative}.p-cols .p-grip{position:absolute;top:-6px;bottom:-6px;right:-6px;width:9px;cursor:col-resize;z-index:1}.p-cols .p-grip:hover,.p-cols .p-grip.on{background:var(--accent);opacity:.35}.p-row .nm .dsc{display:block;font-size:10px;color:var(--ink3);line-height:1.3}.p-row .src a{color:var(--accent-ink);text-decoration:none}.p-row .src a:hover{text-decoration:underline}.p-sub{padding:6px 12px 2px;font-size:10px;color:var(--ink2);border-bottom:1px solid var(--line-2)}.p-row .unit,.p-row .size,.p-row .wt,.p-row .src{font-size:10.5px;color:var(--ink3);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.p-row .size{font-family:var(--mono)}.p-row .wt{font-family:var(--mono);text-align:right}.p-design{padding:2px 12px 6px;font-size:10.5px;color:var(--ink2);border-bottom:1px solid var(--line-2)}.p-cols{font-size:9.5px;text-transform:uppercase;letter-spacing:.06em;color:var(--ink3);border-bottom:1px solid var(--line)}#pList{flex:1;overflow-y:auto;padding:2px 0}.p-row{border-bottom:1px solid var(--line-2);font-size:11.5px;line-height:1.35;cursor:pointer}.p-row:hover{background:var(--hover)}.p-row.sel{background:var(--accent-tint);box-shadow:inset 3px 0 0 var(--accent-ink)}.p-row .qty{font-family:var(--mono);font-size:11px;text-align:right;color:var(--ink)}.p-row .num{font-family:var(--mono);font-size:10.5px;color:var(--ink);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.p-row.default .num{font-style:italic;color:var(--ink3)}.p-takeoff-head b{color:var(--ink)}.p-note{padding:3px 12px;font-size:10.5px;color:var(--plan-warn)}.p-note.soft{color:var(--ink3)}.p-row .nm{color:var(--ink2);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.p-row .nm .on{color:var(--ink3);font-size:10px}.p-group{padding:8px 12px 3px;font-size:9.5px;text-transform:uppercase;letter-spacing:.06em;color:var(--ink3)}#pFoot{padding:7px 12px;border-top:1px solid var(--line);font-size:11px;color:var(--ink2);display:flex;gap:12px}#pFoot b{color:var(--ink)}#partsPanel .j-hint{padding:0;flex:1}.p-units{display:inline-flex;border:1px solid var(--line);border-radius:6px;overflow:hidden;margin-left:6px}.p-units button{font:inherit;font-size:10.5px;padding:2px 7px;border:0;background:transparent;color:var(--ink3);cursor:pointer}.p-units button.on{background:var(--accent-tint);color:var(--accent-ink)}.caption.blocking{background:var(--destructive)}.caption.concern{background:var(--warm)}#linkDrop{position:absolute;z-index:47;top:6px;left:8px;width:440px;padding:10px 12px;background:var(--panel);border:1px solid var(--line);border-radius:10px;box-shadow:var(--shadow-pop);display:none}#linkDrop.open{display:block}.ld-title{font-size:12.5px;font-weight:650;margin-bottom:8px}.ld-row{display:flex;gap:6px}.ld-row input{flex:1;min-width:0;font:inherit;font-size:12px;padding:6px 8px;border:1px solid var(--line);border-radius:6px;background:var(--panel);color:var(--ink)}.ld-cur{display:flex;align-items:center;gap:8px;margin-top:10px;padding-top:8px;border-top:1px solid var(--line-2);font-size:11px;color:var(--ink2)}.ld-k{text-transform:uppercase;letter-spacing:.05em;font-size:9.5px;color:var(--ink3);flex:0 0 auto}#curLink{flex:1;min-width:0;font-family:var(--mono);font-size:10.5px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;direction:rtl;text-align:left}.ld-cur .ibtn{width:26px;height:26px}#saveName{width:220px;font:inherit;font-size:12px;padding:5px 8px;border:1px solid var(--accent-ink);border-radius:8px;background:var(--panel);color:var(--ink);margin-right:6px}#sessionsPanel{position:absolute;z-index:47;top:6px;left:8px;width:340px;max-height:calc(100% - 46px);background:var(--panel);border:1px solid var(--line);border-radius:12px;box-shadow:var(--shadow-pop);display:none;flex-direction:column;overflow:hidden}#sessionsPanel.open{display:flex}#sessionsPanel .j-head button{color:var(--ink2);font-size:15px;padding:0 4px}#sessionsWho{display:flex;align-items:center;gap:8px;font-size:11px;font-weight:500;color:var(--ink2)}#sessionsWho button{font-size:11px;font-weight:600;color:var(--accent-ink)}#sessionsWho .s-user{font-family:var(--mono);font-size:10.5px;max-width:150px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}#sessionsWhy{padding:0 12px;font-size:11px;color:var(--ink3);line-height:1.4}#sessionsWhy:not(:empty){padding:8px 12px}#sessionsList{flex:1;overflow-y:auto;overscroll-behavior:contain;min-height:0}.s-row{position:relative;padding:8px 40px 8px 12px;border-bottom:1px solid var(--line-2);cursor:pointer}.s-row .s-del{position:absolute;right:8px;top:50%;transform:translateY(-50%);width:26px;height:26px;display:flex;align-items:center;justify-content:center;border-radius:6px;color:var(--ink3);opacity:0}.s-row .s-del svg{width:15px;height:15px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}.s-row:hover .s-del,.s-row .s-del:focus-visible{opacity:1}.s-row .s-del:hover{color:var(--plan-bad);background:var(--hover)}@media(hover:none){.s-row .s-del{opacity:1}}.s-row .s-rename{width:100%;font:inherit;padding:1px 4px;border:1px solid var(--line);border-radius:4px;background:var(--panel);color:var(--ink)}.s-row.going{opacity:.35;pointer-events:none}.s-row .s-size{white-space:nowrap}.s-row:hover{background:var(--hover)}.s-row.current{background:var(--accent-tint);box-shadow:inset 3px 0 0 var(--accent-ink)}.s-row.nolink{opacity:.55;cursor:not-allowed}.s-row .s-name{font-size:12.5px;font-weight:600;color:var(--ink)}.s-row .s-meta{display:flex;gap:8px;margin-top:2px;font-size:10.5px;color:var(--ink3)}.s-row .s-id{font-family:var(--mono);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.s-row .s-when{margin-left:auto;white-space:nowrap}.s-empty{padding:12px;font-size:11.5px;color:var(--ink3)}#sessionLink{font-family:var(--mono);font-size:10.5px;color:var(--ink2);background:var(--field)}#sessionLink:focus{color:var(--ink);background:var(--panel)}#emptyState .card .or{font-size:11px;color:var(--ink3);margin:8px 0}#emptyState .card #sessionsPick{pointer-events:auto;background:var(--card)}#emptyState .card input{pointer-events:auto;width:100%;font-family:var(--mono);font-size:11px;padding:8px 11px;border:1px solid var(--line);border-radius:8px;background:var(--card);color:var(--ink)}#emptyState .card input::placeholder{color:var(--ghost)}header .spacer{flex:1}#moveMm{display:none;font-family:var(--mono);font-size:11px;color:var(--ink);white-space:nowrap}#moveMm .dim{color:var(--ink3)}#moveMm .ok{color:var(--accent-ink)}#statusDot{width:8px;height:8px;border-radius:50%;background:var(--ghost);flex:none}#statusDot.ready{background:var(--green)}#statusDot.dead{background:var(--err)}#statusText{color:var(--ink2);font-size:12px;white-space:nowrap}#versionChip{font-family:var(--mono);font-size:11px;background:var(--muted);border:1px solid var(--line);border-radius:20px;padding:3px 9px;color:var(--ink2)}#versionChip.dirty:after{content:"●";color:var(--ghost);margin-left:6px;font-size:9px}#main{position:relative;flex:1;display:flex;min-height:0}#rail{width:var(--rail-w);flex:none;background:var(--sidebar);border-right:1px solid var(--line);min-height:0;position:relative;overflow:hidden;transition:width .22s cubic-bezier(.4,0,.2,1)}#rail.collapsed{width:0;border-right-width:0}#railInner{width:var(--rail-w);height:100%;display:flex;flex-direction:column;min-height:0}#railToggle{position:absolute;top:50%;left:var(--rail-w);transform:translateY(-50%);z-index:6;width:15px;height:46px;display:flex;align-items:center;justify-content:center;background:var(--panel);border:1px solid var(--line);border-left:none;border-radius:0 5px 5px 0;color:var(--ink3);font-size:10px;cursor:pointer;transition:left .22s cubic-bezier(.4,0,.2,1),height .22s}#railToggle .vlab{display:none;writing-mode:vertical-rl;text-orientation:mixed;font-size:9.5px;letter-spacing:.12em;font-weight:650}#main.railClosed #railToggle{height:116px;width:19px}#main.railClosed #railToggle .chev{display:none}#main.railClosed #railToggle .vlab{display:block}#railToggle:hover{color:var(--accent-ink);border-color:var(--accent-ink)}#main.railClosed #railToggle{left:0}@media(prefers-reduced-motion:reduce){#rail,#railToggle{transition:none}}#railSearch{padding:8px;border-bottom:1px solid var(--line);display:flex;gap:6px;align-items:center;position:relative}#railSearch #catSearch{flex:1;min-width:0}#catGear{flex:none;width:28px;height:28px;display:inline-flex;align-items:center;justify-content:center;border:0;background:none;border-radius:6px;color:var(--ink3);cursor:pointer}#catGear svg{width:16px;height:16px;fill:none;stroke:currentColor;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round}#catGear:hover,#catGear.on{color:var(--accent-ink);background:var(--accent-soft)}#catSettings{position:fixed;z-index:60;width:560px;max-width:calc(100vw - 32px);background:var(--card);border:1px solid var(--line);border-radius:12px;box-shadow:var(--shadow-pop);overflow:hidden}#catSettings[hidden]{display:none}.shelfHead.mine{background:var(--mine-head)}.mpImportTile{display:flex;align-items:center;justify-content:center;color:var(--ink3);border-style:dashed;cursor:pointer}.mpImportTile svg{width:18px;height:18px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round}.mpImportTile:hover{color:var(--accent-ink)}.mpTile .mpState{position:absolute;left:0;right:0;bottom:0;padding:2px 4px;font-size:9.5px;font-weight:600;text-align:center;background:var(--muted);color:var(--ink3);display:none}.mpTile:hover .mpState{display:block}.mpTile.failed{border-color:var(--destructive)}.mpTile.failed .mpState{color:var(--destructive)}.mpTile.setup .mpState{color:var(--accent-ink)}.mpTile.processing,.mpTile.failed{cursor:default}.mpTile.setup{cursor:pointer}.mpTile .catThumbFallback{display:flex;align-items:center;justify-content:center}#mpNotice{position:fixed;left:50%;top:50%;transform:translate(-50%,-50%);z-index:80;display:flex;align-items:center;gap:10px;padding:12px 18px;border-radius:10px;background:var(--ink);color:var(--background);font-size:13px;font-weight:600;box-shadow:var(--shadow-pop);pointer-events:none}#mpNotice[hidden]{display:none}#mpNotice.err{background:var(--err)}#mpNotice .mpSpinner{border-color:color-mix(in srgb,var(--background) 30%,transparent);border-top-color:var(--background)}.mpSpinner{width:18px;height:18px;border-radius:50%;border:2px solid var(--line);border-top-color:var(--accent-ink);animation:mpSpin .9s linear infinite}@keyframes mpSpin{to{transform:rotate(360deg)}}.mpWarn{width:20px;height:20px;fill:none;stroke:var(--destructive);stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}#mpConfirm{position:fixed;inset:0;z-index:80;display:flex;align-items:center;justify-content:center;background:var(--scrim)}.mpConfirmCard{width:100%;max-width:448px;margin:0 16px;padding:24px;background:var(--card);color:var(--ink);border-radius:10px;box-shadow:var(--shadow-pop)}.mpConfirmCard h2{margin:0 0 8px;font-size:18px;font-weight:600;overflow-wrap:anywhere}.mpConfirmCard p{margin:0 0 24px;font-size:13.5px;line-height:1.5;color:var(--ink3)}.mpConfirmFoot{display:flex;gap:12px}.mpConfirmFoot button{flex:1;padding:8px 16px;font:inherit;font-size:13.5px;border-radius:8px;cursor:pointer;border:1px solid var(--line);background:var(--card);color:var(--ink)}.mpConfirmFoot button:hover{background:var(--hover)}.mpConfirmFoot button.danger{border-color:var(--destructive);background:var(--destructive);color:var(--destructive-foreground)}.mpConfirmFoot button.danger:hover{background:color-mix(in oklab,var(--destructive) 85%,var(--foreground))}.mpNote{grid-column:1 / -1;font-size:11px;color:var(--ink3);padding:2px 10px 6px}#descTip .t-acts{float:right;display:flex;gap:2px;margin:-4px -4px 0 8px}#descTip .t-acts .ibtn{width:26px;height:26px}#descTip .t-acts .ibtn.danger:hover{color:var(--destructive);background:var(--err-soft)}#descTip .t-field{display:flex;gap:8px;font-size:11px;color:var(--ink3)}#descTip .t-field b{margin-left:auto;font-weight:500;color:var(--ink)}.mpDialog{position:fixed;inset:0;z-index:70;display:flex;align-items:center;justify-content:center;background:color-mix(in oklab,var(--foreground) 18%,transparent)}.mpDialog[hidden]{display:none}.mpCard{width:440px;max-width:calc(100vw - 32px);max-height:calc(100vh - 48px);overflow-y:auto;background:var(--card);color:var(--ink);border:1px solid var(--line);border-radius:12px;box-shadow:var(--shadow-pop)}.mpCard.wide{width:560px}.mpHead{display:flex;align-items:center;gap:12px;padding:8px 8px 8px 16px;border-bottom:1px solid var(--line)}.mpHead b{font-size:14px;font-weight:600}.mpHead .ibtn{margin-left:auto}.mpGrid{display:grid;grid-template-columns:1fr 1fr;gap:10px;padding:10px 16px 4px}.mpGrid label{display:grid;gap:4px;font-size:11.5px;color:var(--ink3)}.mpGrid label.wide{grid-column:1 / -1}.mpCard input:not([type=file]){font:inherit;font-size:12.5px;color:var(--ink);background:var(--card);border:1px solid var(--input);border-radius:6px;padding:6px 8px;min-width:0}.mpFields{display:grid;gap:6px;padding:6px 16px 0}.mpField{display:grid;grid-template-columns:1fr 1fr 64px 22px;gap:6px}.mpX{border:0;background:none;color:var(--ink3);font-size:15px;cursor:pointer}.mpStage{position:relative;margin:12px 16px 0;border:1px solid var(--line-2);border-radius:8px;background:var(--pic-bg)}.mpStage canvas{display:block;width:100%;height:auto;aspect-ratio:520 / 320}.mpReset{position:absolute;top:8px;right:8px;background:var(--card)}.mpSize{position:absolute;left:10px;bottom:8px;font-size:11.5px;color:var(--ink3)}.mpFoot{display:flex;justify-content:space-between;gap:8px;padding:14px 16px}#catSettings .csHead{display:flex;align-items:center;justify-content:space-between;padding:12px 16px;border-bottom:1px solid var(--line)}#catSettings .csHead b{font-size:14px;font-weight:600}#catSettings .csHead span{font-size:11.5px;color:var(--ink3)}#catSettings{width:620px}#catSettings .csBody{display:grid;grid-template-columns:220px minmax(0,1fr)}#catSettings .csPacks{border-right:1px solid var(--line);padding:10px;display:grid;gap:4px;align-content:start}#catSettings .csPacks small{font-size:10px;letter-spacing:.06em;text-transform:uppercase;color:var(--ink3);padding:2px 6px 4px}#catSettings .csPack{text-align:left;font:inherit;font-size:12.5px;font-weight:600;background:transparent;color:var(--ink);border:1px solid transparent;border-radius:8px;padding:7px 10px;cursor:pointer}#catSettings .csPack .top{display:flex;align-items:baseline;gap:8px}#catSettings .csPack .top .n{margin-left:auto;font-size:11px;font-weight:400;color:var(--ink3);font-variant-numeric:tabular-nums}#catSettings .csPack em{display:block;font-style:normal;font-weight:400;font-size:11px;color:var(--ink3)}#catSettings .csPack:hover{background:var(--accent-tint)}#catSettings .csPack.sel{border-color:var(--accent-ink);background:var(--accent-tint)}#catSettings .csPack.off .lab,#catSettings .csPack.off em{color:var(--ink3)}#catSettings .csPackHead{display:flex;align-items:center;gap:10px;padding:8px 16px 10px;margin-bottom:4px;border-bottom:1px solid var(--line-2)}#catSettings .csPackHead{cursor:pointer}#catSettings .csPackHead .lab{font-size:12.5px;font-weight:600}#catSettings .csPackHead .need{font-size:11px;color:var(--ink3);margin-right:auto}#catSettings .csPackHead .csSw{margin-left:auto}#catSettings .csPackHead .n{margin-left:auto;font-size:11px;color:var(--ink3)}#catSettings .csShelves{padding:6px 0;max-height:min(520px,calc(100vh - 220px));overflow-y:auto}#catSettings .csNeed{font-size:11px;color:var(--ink3);padding:6px 16px 4px}#catSettings .csRow{display:flex;align-items:center;gap:10px;padding:7px 16px;font-size:12.5px;cursor:pointer}#catSettings .csRow .n{margin-left:auto;font-size:11px;color:var(--ink3);font-variant-numeric:tabular-nums}#catSettings .csRow.off .lab{color:var(--ink3)}#catSettings .csRow.locked{opacity:.5;cursor:default}#catSettings .csRow .n,#catSettings .csBrand .n{margin-left:auto}#catSettings .csSw:disabled{opacity:.55;cursor:default}#catSettings .csSw{appearance:none;-webkit-appearance:none;margin:0;width:28px;height:16px;border-radius:8px;background:var(--line);position:relative;cursor:pointer;flex:none;transition:background .12s}#catSettings .csSw:after{content:"";position:absolute;top:2px;left:2px;width:12px;height:12px;border-radius:50%;background:var(--card);transition:transform .12s}#catSettings .csSw:checked{background:var(--accent-ink)}#catSettings .csSw:checked:after{transform:translate(12px)}#catSettings .csBrands{display:grid;gap:4px;padding:0 16px 10px 32px;font-size:12px}#catSettings .csBrand{display:flex;align-items:center;gap:10px;cursor:pointer}#catSettings .csBrand input{width:28px;text-align:center}#catSettings .csBrand .n{margin-left:auto;font-size:11px;color:var(--ink3)}#catSettings .csBrand input{accent-color:var(--accent-ink);margin:0}#catSettings .csFoot{display:flex;gap:8px;justify-content:flex-end;padding:10px 16px;border-top:1px solid var(--line)}#railHidden{padding:8px 10px;font-size:11px;color:var(--ink3)}#railList{flex:1;overflow-y:auto;overscroll-behavior:contain}.shelfHead{position:sticky;top:0;background:var(--sidebar);border-top:1px solid var(--line);border-bottom:1px solid var(--line);padding:5px 10px;font-size:10px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--ink2);z-index:2;display:flex;align-items:center;gap:6px;cursor:pointer;user-select:none;-webkit-user-select:none}.shelfHead:hover{color:var(--accent-ink)}.shelfHead .caret{font-size:8px;width:8px;transition:transform .12s;color:var(--ink3)}.shelfHead.open .caret{transform:rotate(90deg)}.shelfHead .count{margin-left:auto;font-weight:600;color:var(--ink3);letter-spacing:0}.shelfHead.muted{color:var(--ink3);background:var(--line-3)}.shelfHead .smartMark{display:inline-flex;margin-left:6px;color:var(--ink3)}.shelfHead .smartMark svg{width:11px;height:11px;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round}#railTailHead{padding:9px 10px 4px;font-size:9.5px;letter-spacing:.06em;text-transform:uppercase;color:var(--ink3);border-top:1px solid var(--line);background:var(--line-3)}.shelfBody{display:grid;grid-template-columns:repeat(auto-fill,minmax(58px,1fr));grid-auto-flow:dense;gap:4px;padding:6px}.catItem{position:relative;aspect-ratio:4 / 3;border:1px solid var(--line);border-radius:6px;background:var(--card);cursor:grab;user-select:none;-webkit-user-select:none;overflow:hidden}.shelfBody.grouped{grid-auto-flow:row}.shelfGroup{grid-column:1 / -1;display:flex;align-items:center;gap:6px;padding:4px 2px 4px 12px;font-size:10px;font-weight:600;letter-spacing:.03em;color:var(--ink2);cursor:pointer;user-select:none;-webkit-user-select:none}.shelfGroup:hover{color:var(--accent-ink)}.groupBody{grid-column:1 / -1;display:grid;grid-template-columns:repeat(auto-fill,minmax(54px,1fr));gap:4px;padding:2px 0 6px 12px}.shelfGroup .caret{font-size:7px;width:8px;color:var(--ink3);transition:transform .12s}.shelfGroup.open .caret{transform:rotate(90deg)}.shelfGroup .count{margin-left:auto;font-weight:500;color:var(--ink3)}.sizeTile .catThumb{height:calc(100% - 13px)}.sizeTile .sizeName{position:absolute;left:0;right:0;bottom:1px;font-size:8.5px;line-height:12px;text-align:center;color:var(--ink2);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;padding:0 2px}.routerTile{grid-column:span 2;grid-row:span 2;aspect-ratio:4 / 3}.routerRows{grid-column:1 / -1;display:grid;grid-template-columns:1fr 1fr;gap:4px}.routerRows .routerTile{grid-column:auto;grid-row:auto;aspect-ratio:4 / 3.4}.routerTile .catThumb{position:absolute;inset:0 0 18px;width:100%;height:calc(100% - 18px)}.routerTile .routerName{position:absolute;left:0;right:0;bottom:0;padding:0 6px 4px;font-size:10.5px;font-weight:600;color:var(--ink);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;text-align:center}.routerTile.on{border-color:var(--accent-ink);box-shadow:0 0 0 2px var(--accent-ink)}.routerTile.on .routerName{color:var(--accent-ink)}.routerTile .catThumbFallback{position:absolute;inset:0 0 18px;height:auto}.routerTile .catThumbFallback svg{width:22px;height:22px;fill:none;stroke:currentColor;stroke-width:1.75}.routerTile{cursor:pointer}.catItem:hover{border-color:var(--accent-ink);box-shadow:0 0 0 1px var(--accent-ink)}.catItem.armed{border-color:var(--accent-ink);box-shadow:0 0 0 2px var(--accent-ink)}.catThumb{width:100%;height:100%;display:block;object-fit:contain;background:var(--card)}.catItem{background:var(--card)}.catThumbFallback{width:100%;height:100%;background:var(--muted);color:var(--ink3);display:flex;align-items:center;justify-content:center;font-size:11px;font-weight:700}.catItem .catBadge{position:absolute;top:2px;right:2px;margin:0;font-size:0;width:7px;height:7px;border-radius:50%;padding:0}.catName{font-size:12px;line-height:1.25}#sizeMenu{position:fixed;z-index:60;display:none;width:320px;padding:12px 12px 8px;background:var(--panel);color:var(--ink);border:1px solid var(--line);border-radius:12px;box-shadow:var(--shadow-pop)}#sizeMenu .t-name{font-weight:650}#sizeMenu .t-ref{font-size:11px;margin-top:2px}#sizeMenu .t-ref a{color:var(--accent-ink);text-decoration:none}#sizeMenu img{width:100%;aspect-ratio:16 / 10;height:auto;object-fit:contain;margin:6px 0 4px;display:block}#sizeMenu table{width:100%;border-collapse:collapse;font-size:12px;font-variant-numeric:tabular-nums}#sizeMenu th{font-size:10px;font-weight:600;color:var(--ink3);text-transform:uppercase;letter-spacing:.04em;text-align:right;padding:0 6px 4px}#sizeMenu th:first-child,#sizeMenu td:first-child{text-align:left}#sizeMenu td{padding:6px;text-align:right;color:var(--ink2);border-top:1px solid var(--line);white-space:nowrap}#sizeMenu td:first-child{color:var(--ink);font-weight:500}#sizeMenu .sizeRow{cursor:pointer}#sizeMenu .sizeRow:hover td{background:var(--accent-soft)}#sizeMenu .sizeRow.on td{background:var(--accent-soft);color:var(--accent-ink)}#sizeMenu .sizeRow.on td:first-child{box-shadow:inset 3px 0 var(--accent-ink)}.catBadge{display:inline-block;font-size:8.5px;font-weight:700;letter-spacing:.05em;text-transform:uppercase;border-radius:3px;padding:0 4px;margin-left:5px;vertical-align:1px}.catBadge.logical{background:var(--badge-logical-bg);color:var(--badge-logical-fg)}.catBadge.output{background:var(--err-soft);color:var(--err)}.catItem.blocked{opacity:.6;cursor:not-allowed}.catItem.blocked:hover{background:var(--err-soft)}#railFilter{display:flex;align-items:center;gap:5px;margin-top:6px;font-size:10.5px;color:var(--ink2)}.catType{font-family:var(--mono);font-size:9px;color:var(--ink3);word-break:break-all}#railEmpty{padding:16px 12px;color:var(--ink3);font-size:12px}#descTip{position:fixed;z-index:60;width:236px;background:var(--panel);border:1px solid var(--line);border-radius:12px;box-shadow:var(--shadow-pop);padding:10px;display:none}#descTip .t-name{font-weight:650;margin-bottom:2px}#descTip .t-span{font-family:var(--mono);font-size:11px;color:var(--accent-ink);margin:3px 0}#descTip .t-desc{font-size:11px;color:var(--ink2);line-height:1.4}#descTip img{width:100%;aspect-ratio:16 / 10;height:auto;object-fit:cover;margin-top:6px;background:var(--tile);border-radius:6px;display:block}#planWrap{flex:1.1;min-width:260px;position:relative;background:var(--plan-bg);overflow:hidden}#plan{position:absolute;inset:0;width:100%;height:100%;display:block;touch-action:none}#planFx{position:absolute;inset:0;width:100%;height:100%;pointer-events:none}#planWrap.sheet-elev #planFx,#planWrap.sheet-elev #partLabels,#planWrap.sheet-elev #cut,#planWrap.sheet-elev #selTools,#planWrap.sheet-elev #planLegend{display:none!important}#gDrawn .guardHit{pointer-events:stroke;cursor:pointer}#planWrap.panning #planFx .guardHit,#planWrap.panning .partLabel .note,#planWrap.panning .errtag,#planWrap.panning #planTools>*{pointer-events:none}#plan[class*=tool-]:not(.tool-select){cursor:crosshair}#plan[class*=tool-]:not(.tool-select)~#planFx #gDrawn .guardHit{pointer-events:none}#plan.panning{cursor:grabbing}#planOverlay{position:absolute;inset:0;pointer-events:none;overflow:hidden}.gridLabel{position:absolute;font-family:var(--mono);font-size:9px;color:var(--ink3);white-space:nowrap}.partLabel{position:absolute;transform:translate(-50%,-50%);font-size:10px;color:var(--label);white-space:nowrap;pointer-events:none;text-shadow:0 0 3px var(--plan-bg)}.partLabel .sub{color:var(--ink3);font-family:var(--mono);font-size:9px}.partLabel.up{color:var(--label-up)}.partLabel.sel{color:var(--accent-ink);font-weight:600;font-size:11px}#scalebar{position:absolute;left:14px;bottom:12px;pointer-events:none}#planTools{position:absolute;left:14px;bottom:44px;pointer-events:none;display:flex;flex-direction:column-reverse;align-items:flex-start;gap:6px}#planTools>*{pointer-events:auto}#planTools #planMode{background:var(--panel);box-shadow:var(--shadow-card)}#cut{position:static;pointer-events:auto;display:none;align-items:center;gap:7px;background:var(--panel);border:1px solid var(--line);border-radius:8px;padding:3px 8px;box-shadow:var(--shadow-card)}#cut.on{display:flex}#cut .lab{font-family:var(--mono);font-size:10px;color:var(--ink2)}#cut input[type=range]{width:110px;accent-color:var(--ink2)}#cut .n{font-family:var(--mono);font-size:10px;color:var(--ink3);min-width:74px}#scalebar .bar{height:4px;border:1px solid var(--ink2);border-top:none}#scalebar .lab{font-family:var(--mono);font-size:10px;color:var(--ink2);margin-bottom:2px}#emptyState{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;pointer-events:none}#emptyState .card{max-width:340px;text-align:center;color:var(--ink2)}.caption{position:absolute;transform:translate(-50%,-130%);pointer-events:none;background:var(--ink);color:var(--background);border-radius:6px;padding:5px 9px;font-size:11.5px;white-space:nowrap;box-shadow:var(--shadow-pop)}.caption .dim{color:var(--muted-2)}#snapTag{position:absolute;transform:translate(-50%,-170%);pointer-events:none;display:none;background:var(--accent-ink);color:var(--primary-foreground);border-radius:6px;padding:3px 8px;font-size:10.5px;font-family:var(--mono);white-space:nowrap;box-shadow:var(--shadow-pop)}.errtag{position:absolute;transform:translate(-50%,-130%);pointer-events:auto;max-width:320px;background:var(--err);color:var(--primary-foreground);border-radius:6px;padding:6px 24px 6px 10px;font-size:11.5px;line-height:1.4;box-shadow:var(--shadow-pop);white-space:normal}.errtag .x{position:absolute;top:2px;right:5px;color:var(--primary-foreground);opacity:.75;font-size:13px;line-height:1}.errtag .x:hover{opacity:1}.j-ref{padding:5px 12px;border-bottom:1px solid var(--line-2);font-size:11px;color:var(--err);line-height:1.4}.j-ref .t{color:var(--ink3);font-family:var(--mono);font-size:9.5px;margin-right:5px}#jRefHead{display:flex;align-items:center;padding:5px 12px;background:var(--err-soft);font-size:10px;font-weight:700;letter-spacing:.07em;text-transform:uppercase;color:var(--err);border-top:1px solid var(--line)}#jRefHead .spacer{flex:1}#jRefHead button{font-size:10px;color:var(--err);text-decoration:underline}#popover{position:fixed;z-index:50;width:252px;background:var(--panel);border:1px solid var(--line);border-radius:12px;box-shadow:var(--shadow-pop);display:none}#popover .p-head{padding:9px 12px 0;font-weight:650;display:flex;align-items:baseline;gap:10px}#popover.wide{width:420px;max-height:calc(100vh - 16px);overflow-y:auto;overscroll-behavior:contain}#popover.wide .p-foot{position:sticky;bottom:0;background:var(--panel);border-top:1px solid var(--line-2);z-index:1}#popover .p-out{margin-left:auto;font:500 12px var(--mono);color:var(--accent-ink);white-space:nowrap}#popover .p-out:empty{display:none}#popover .p-tabs{display:none;gap:18px;padding:8px 12px 0;border-bottom:1px solid var(--line-2)}#popover.wide .p-tabs.many{display:flex}#popover .p-tabs button{font:inherit;font-size:12px;font-weight:600;background:none;border:0;border-bottom:2px solid transparent;color:var(--ink3);padding:5px 0 7px;margin-bottom:-1px;cursor:pointer}#popover .p-tabs button.on{color:var(--ink);border-bottom-color:var(--ink)}#popover .p-pic{display:none;background:var(--pic-bg);border-bottom:1px solid var(--line-2)}#popover.wide .p-pic{display:block}#popover .p-svg{width:100%;height:auto;max-height:min(190px,24vh);display:block;margin:4px 0}#popover .p-say{padding:0 12px 8px;font-size:11.5px;color:var(--ink2)}#popover .p-say{min-height:1.35em}#popover .p-body .cp-hide{display:none}#popover .p-body .cp-on>label{color:var(--accent-ink);font-weight:600}#popover .p-next{display:none;padding:5px 10px;border:1px solid var(--line);border-radius:8px;color:var(--ink2)}#popover.wide .p-next.many{display:inline-block}#popover.wide .p-cancel{display:none}#popover.wide .p-ok{min-width:72px}#popover .p-svg text{font-family:var(--sans)}#popover .p-svg .dim line{stroke:var(--pic-dim);stroke-width:1}#popover .p-svg .dim text{fill:var(--pic-dim-ink);font-size:calc(11px * var(--px, 1))}#popover .p-svg .dim.hot line{stroke:var(--pic-hot);stroke-width:1.6}#popover .p-svg .dim.pick{cursor:pointer}#popover .p-svg .dim.pick:hover text{fill:var(--pic-hot);text-decoration:underline}#popover .p-svg .dim.pick text{pointer-events:all}#popover .dimEdit{position:absolute;transform:translate(-50%,-50%);width:86px;z-index:5;text-align:center;font:inherit;font-size:12px;padding:3px 6px;border:1.5px solid var(--pic-hot);border-radius:5px;background:var(--card);color:var(--ink);box-shadow:var(--shadow-pop);outline:none}#popover .p-svg .dim.hot text,#popover .p-svg text.dim.hot{fill:var(--pic-hot);font-weight:700;font-size:calc(12.5px * var(--px, 1))}#popover .p-svg .steel{fill:var(--pic-steel)}#popover .p-svg .beam{fill:var(--pic-beam)}#popover .p-svg .c-case{fill:var(--port-case)}#popover .p-svg .c-pallet{fill:var(--port-pallet)}#popover .p-svg .c-product{fill:var(--port-product)}#popover .p-svg .s-case{stroke:var(--port-case)}#popover .p-svg .s-pallet{stroke:var(--port-pallet)}#popover .p-svg .s-product{stroke:var(--port-product)}#popover .p-svg .load,#popover .p-svg .pal{fill:var(--pic-paper);stroke:var(--pic-ink);stroke-width:1}#popover .p-svg .soft{fill:none;stroke:var(--pic-soft);stroke-dasharray:4 3}#popover .p-svg .lbl{fill:var(--pic-dim-ink);font-size:calc(10.5px * var(--px, 1))}#popover .p-svg line,#popover .p-svg path,#popover .p-svg rect{vector-effect:non-scaling-stroke}#popover .p-sub{padding:2px 12px 0;font-size:11px;color:var(--accent-ink);font-family:var(--mono);min-height:15px}#popover .p-sub:empty{display:none}#popover .p-why{padding:3px 12px 0;font-size:10.5px;color:var(--ink3);line-height:1.4}#popover .p-body{padding:9px 12px 4px;display:grid;grid-template-columns:1fr 1fr;gap:7px}#popover .p-body label{display:block;font-size:10px;color:var(--ink2);margin-bottom:2px}#popover .p-body .full{grid-column:1 / -1}#popover .p-check{display:flex;gap:6px;align-items:center;font-size:12px;color:var(--ink);grid-column:1 / -1}#popover .p-err{margin:4px 12px 0;padding:6px 8px;background:var(--err-soft);color:var(--err);border-radius:6px;font-size:11px;line-height:1.4;display:none}#popover .p-foot{display:flex;justify-content:flex-end;gap:8px;padding:10px 12px}#popover .p-units-card{display:inline-flex;margin-right:auto;border:1px solid var(--line);border-radius:6px;overflow:hidden;align-self:center}#popover .p-units-card button{font:inherit;font-size:11px;padding:3px 9px;border:0;background:transparent;color:var(--ink3);cursor:pointer}#popover .p-units-card button.on{background:var(--accent-tint);color:var(--accent-ink)}#popover .p-cancel{color:var(--ink2);padding:5px 10px}#popover .p-del{display:none;margin-right:auto;color:var(--err);padding:5px 10px}#popover .p-del.armed{font-weight:600}#popover .p-ok{background:var(--ink);color:var(--background);border-radius:8px;padding:5px 14px;font-weight:600}#popover .p-ok:not(:disabled):hover{background:var(--ink-2)}#propPanel{position:fixed;top:54px;right:10px;width:268px;max-height:calc(100vh - 96px);z-index:40;display:none;flex-direction:column;overflow:hidden;background:var(--panel);border:1px solid var(--line);border-radius:12px;box-shadow:var(--shadow-pop)}#propPanel.on{display:flex}#propHead{position:relative;padding:9px 26px 9px 11px;border-bottom:1px solid var(--line)}#propHead .pname{font-size:12.5px;font-weight:650;line-height:1.25}#propHead #handlesBtn{display:none;position:absolute;right:28px;top:6px;width:24px;height:24px;padding:0;align-items:center;justify-content:center}#propHead #handlesBtn svg{width:16px;height:16px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}#propHead .pmeta{display:none}#propEdit{margin-top:6px;font:inherit;font-size:11px;padding:3px 9px;border:1px solid var(--line);border-radius:6px;background:var(--accent-tint);color:var(--accent-ink);cursor:pointer}#propEdit:hover{filter:brightness(.97)}#propHead .pnum{font-family:var(--mono);font-size:10px;color:var(--ink2);margin-top:2px}#propHead .pnum:empty{display:none}#propHead .pnum.default{font-style:italic;color:var(--ink3)}#propHead .pmeta-was{font-family:var(--mono);font-size:9.5px;color:var(--ink3);margin-top:2px}#propClose{position:absolute;top:7px;right:8px;color:var(--ink3);font-size:15px;line-height:1;cursor:pointer}#propClose:hover{color:var(--err)}#propBody{overflow-y:auto;overscroll-behavior:contain;padding:4px 0 6px}.prow{display:grid;grid-template-columns:1fr 66px 50px;gap:6px;align-items:center;padding:2px 11px}.prow.wide{grid-template-columns:1fr 122px}.prow:has(>select){grid-template-columns:auto minmax(122px,1fr)}.pjoints{margin-top:8px;border-top:1px solid var(--line);padding-top:8px}.prow .plab{font-size:11.5px;color:var(--ink2);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.prow .plab .unit{font-size:9.5px;color:var(--ink3);margin-left:4px}.srange{position:relative;height:21px;border:1px solid var(--line);border-radius:3px;background:var(--card);overflow:hidden;cursor:ew-resize;touch-action:none}.srange .sfill{position:absolute;left:0;top:0;bottom:0;background:var(--active);pointer-events:none}.srange .shandle{position:absolute;top:0;bottom:0;width:3px;background:var(--muted-1);pointer-events:none}.srange:hover{border-color:var(--ink2)}.srange:hover .shandle,.srange.live .shandle{background:var(--ink)}.snum{width:100%;height:21px;font-size:11px;font-family:var(--mono);text-align:right;padding:0 4px;border:1px solid var(--line);border-radius:3px;background:var(--card);color:var(--ink)}.snum:focus{outline:none;border-color:var(--ink2)}.prow>select,.prow>input[type=text]:not(.snum){grid-column:2 / -1;width:100%;height:21px;font-size:11px;font-family:var(--mono);padding:0 4px;border:1px solid var(--line);border-radius:3px;background:var(--card);color:var(--ink)}#planCaret{position:absolute;z-index:6;margin:0;padding:0 2px;resize:none;overflow:hidden;border:1px dashed var(--accent-ink);background:color-mix(in srgb,var(--card) 82%,transparent);color:var(--paint);font-family:Arial Narrow,Arial,sans-serif;font-weight:700;line-height:1.05;letter-spacing:.01em;text-transform:uppercase;outline:none;box-sizing:border-box}#planCaret::placeholder{color:color-mix(in srgb,var(--paint) 35%,transparent);font-weight:400}.prow.multiline{grid-template-columns:1fr}.prow.multiline>textarea{width:100%;min-height:44px;resize:vertical;font-family:var(--sans);font-size:11.5px;border:1px solid var(--line);border-radius:3px;padding:3px 5px;box-sizing:border-box;line-height:1.35;background:var(--card);color:var(--ink)}.prow.multiline>textarea:focus{outline:none;border-color:var(--ink2)}.prow>input[type=color]{grid-column:2 / -1;width:100%;height:21px;padding:1px;border:1px solid var(--line);border-radius:3px;background:var(--card)}.prow>select:focus,.prow>input[type=text]:not(.snum):focus{outline:none;border-color:var(--ink2)}.prow input[type=checkbox]{grid-column:2 / -1;width:14px;height:14px;accent-color:var(--muted-1);justify-self:start;margin:0}.prow.locked{opacity:.55}.prow.locked .strack,.prow.locked .snum,.prow.locked>select,.prow.locked input{cursor:default}.plocked{padding:6px 11px 4px;font-size:10.5px;line-height:1.4;color:var(--ink3)}.prow.refused .srange,.prow.refused .snum,.prow.refused>select{border-color:var(--err)}.prow.refused .sfill{background:var(--err-soft)}.pfold{padding:7px 11px 3px;font-size:9.5px;letter-spacing:.07em;text-transform:uppercase;color:var(--ink3);cursor:pointer;user-select:none;display:flex;align-items:center;gap:5px}.pfold:hover{color:var(--accent-ink)}.pfold .caret{font-size:7px;transition:transform .12s}.pfold.open .caret{transform:rotate(90deg)}#propWhy{padding:5px 11px 8px;font-size:10.5px;line-height:1.4;color:var(--err);display:none}#propFoot{padding:6px 11px;border-top:1px solid var(--line);font-size:10px;color:var(--ink3);line-height:1.4}#underlayPanel{position:absolute;z-index:45;top:6px;width:250px;background:var(--panel);border:1px solid var(--line);border-radius:12px;box-shadow:var(--shadow-pop);padding:12px;display:none}#underlayPanel h3{font-size:12px;margin-bottom:8px}#underlayPanel .row{margin-bottom:9px;font-size:12px;color:var(--ink2)}#underlayPanel .row input[type=range]{width:100%}#underlayPanel .ubtn{border:1px solid var(--line);border-radius:6px;padding:4px 9px;font-size:12px;color:var(--ink);margin-right:5px}#underlayPanel .ubtn.on{border-color:var(--accent-ink);color:var(--accent-ink);background:var(--accent-soft)}#underlayPanel .hint{font-size:10.5px;color:var(--ink3);line-height:1.45}#split{width:7px;flex:none;cursor:col-resize;touch-action:none;z-index:6;background:var(--background);border-left:1px solid var(--line);border-right:1px solid var(--line);position:relative}#split:after{content:"";position:absolute;top:50%;left:2px;width:1px;height:26px;background:var(--ink3);transform:translateY(-50%);box-shadow:2px 0 0 var(--ink3) inset}#viewerWrap{flex:1;min-width:260px;position:relative;background:var(--muted)}#viewer{position:absolute;inset:0;width:100%;height:100%;border:0}#viewerShield{position:absolute;inset:0;display:none}#threeTools{position:absolute;left:14px;bottom:14px;z-index:5;display:none}@media(pointer:coarse),(max-width:900px){#threeTools{display:flex;align-items:center}}#threeTools .toolgroup{background:var(--panel);box-shadow:var(--shadow-card)}#viewerBoot{position:absolute;inset:0;z-index:2;display:flex;align-items:center;justify-content:center;color:var(--ink2);font-size:12.5px;background:var(--muted)}footer .spacer{flex:1}footer{height:26px;flex:none;display:flex;align-items:center;gap:16px;padding:0 12px;background:var(--panel);border-top:1px solid var(--line);font-size:11.5px;color:var(--ink2);z-index:30}#hint{flex:1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}#buildStamp{font-family:var(--mono);font-size:10px;color:var(--ink3)}#cursorMm{font-family:var(--mono);font-size:10.5px}#selChip{font-size:11.5px;color:var(--accent-ink);max-width:260px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.fbtn{display:none;width:26px;height:24px}#selTools{position:absolute;display:none;gap:2px;padding:2px;background:var(--card);border:1px solid var(--line);border-radius:8px;box-shadow:var(--shadow-card);pointer-events:auto;transform:translate(-50%,-100%)}#selTools.on{display:flex}#carryMenu{position:fixed;z-index:58;display:none;min-width:260px;background:var(--card);border:1px solid var(--line);border-radius:10px;box-shadow:var(--shadow-pop);padding:4px}#carryMenu .m-row{display:flex;align-items:center;gap:8px;padding:6px 8px;border-radius:6px;font-size:11.5px}#carryMenu .m-row:hover{background:var(--hover)}#carryMenu .m-row.muted{color:var(--ink3)}#carryMenu .m-name{font-weight:600;color:var(--ink)}#carryMenu .m-type{font-family:var(--mono);font-size:10px;color:var(--ink3);flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}#carryMenu .m-off{border:1px solid var(--line);border-radius:6px;padding:2px 8px;font-size:11px;color:var(--ink2)}#carryMenu .m-off:hover{color:var(--destructive);border-color:var(--destructive)}.partLabel .note{display:block;margin-top:1px;font-size:9.5px;color:var(--accent-text);font-style:italic;pointer-events:auto;cursor:pointer;border-radius:3px;padding:0 2px}.partLabel .note:hover{background:var(--accent-soft)}.partLabel .note.sel{background:var(--accent-ink);color:var(--plan-bg);font-style:normal}#deleteBtn{display:none;width:26px;height:24px;color:var(--err)}#deleteBtn:hover{background:var(--err-soft)}#jClear.armed{border-color:var(--err);color:var(--err);background:var(--err-soft)}#partsChip{font-family:var(--mono);font-size:10.5px}#toasts{position:absolute;right:14px;bottom:14px;display:flex;flex-direction:column;gap:6px;z-index:55;pointer-events:none}.toast{background:var(--ink);color:var(--background);border-radius:8px;padding:7px 12px;font-size:12px;box-shadow:var(--shadow-pop);opacity:0;transition:opacity .2s}.toast.show{opacity:1}.toast.err{background:var(--err)}#banner{position:absolute;top:8px;left:50%;transform:translate(-50%);z-index:55;max-width:82%;background:var(--err);color:var(--primary-foreground);border-radius:8px;padding:8px 14px;font-size:12.5px;display:none;box-shadow:var(--shadow-pop)}#banner.note{background:var(--panel);color:var(--muted-foreground);border:1px solid var(--border)}#dragGhost{position:fixed;z-index:70;pointer-events:none;display:none;background:var(--panel);border:1px solid var(--accent-ink);border-radius:6px;padding:4px 8px;font-size:11px;color:var(--accent-ink);box-shadow:var(--shadow-pop)}.drag-handle{cursor:grab;user-select:none}.drag-handle.dragging{cursor:grabbing}#popover .p-x{margin-left:auto;order:9;color:var(--ink3);font-size:17px;line-height:1;cursor:pointer;padding:0 2px;font-weight:400}#popover .p-x:hover{color:var(--ink)}@media(pointer:coarse){#split:before{content:"";position:absolute;inset:0 -19px}#split:after{height:44px}header{height:58px;gap:10px}.ibtn{width:44px;height:44px;border-radius:10px}.ibtn svg{width:22px;height:22px}.toolgroup .tool.ibtn,#viewMode .vm.ibtn,#planMode .vm.ibtn,#paneMode .vm.ibtn{width:44px;height:40px;border-radius:8px}.tool svg,.hbtn svg{width:20px;height:20px}.hbtn{padding:10px 14px}.shelfHead{padding:11px 12px;font-size:12.5px}.shelfHead .caret{font-size:10px;width:10px}.shelfGroup{padding:9px 2px 9px 12px;font-size:12.5px}.shelfGroup .caret{font-size:9px;width:10px}}.shareWrap{position:relative;display:inline-flex}#shareDlg{position:absolute;top:calc(100% + 6px);right:0;width:min(380px,calc(100vw - 32px));z-index:60;background:var(--panel);border:1px solid var(--line);border-radius:12px;box-shadow:var(--shadow-pop);font-size:13px}#shareDlg[hidden]{display:none}#shareDlg .sec{padding:10px 14px;display:grid;gap:8px}#shareDlg .sec[hidden]{display:none}#shareDlg .sec+.sec{border-top:1px solid var(--line)}#shareDlg .row{display:flex;align-items:center;gap:10px;color:var(--ink);font-weight:550}#shareDlg .row svg{width:16px;height:16px;flex:none;stroke:var(--ink2);fill:none;stroke-width:1.75;stroke-linecap:round;stroke-linejoin:round}#shareDlg .row em{font-style:normal;font-family:var(--mono);font-size:11px;font-weight:400;color:var(--ink3)}#shareDlg .row .hbtn{margin-left:auto}#shareDlg .dec{display:grid;grid-template-columns:48px 1fr;gap:4px 10px;align-items:start}#shareDlg .dk{font-family:var(--mono);font-size:10.5px;letter-spacing:.04em;text-transform:uppercase;color:var(--ink3);padding-top:5px}#shareDlg .chips{display:flex;gap:6px;flex-wrap:wrap}#shareDlg .chips label{display:inline-flex;align-items:center;gap:5px;padding:3px 9px;border:1px solid var(--line);border-radius:999px;cursor:pointer;color:var(--ink)}#shareDlg .chips label:has(input:checked){border-color:var(--accent-ink);color:var(--accent-ink);background:var(--accent-tint)}#shareDlg .chips label:has(input:disabled){opacity:.7;cursor:default}#shareDlg .chips input{accent-color:var(--accent-ink);margin:0}#shareDlg .chips i{font-style:normal;font-family:var(--mono);font-size:10.5px;color:var(--ink3)}#shareDlg .chips i:empty{display:none}#shareDlg .meta{font-family:var(--mono);font-size:11.5px;color:var(--ink3);font-variant-numeric:tabular-nums}#shareDlg .meta:empty{display:none}@media(pointer:coarse){#shareDlg .sec{padding:13px 14px}#shareDlg .row{font-size:15px}#shareDlg .row svg{width:20px;height:20px}}#planTools .toolgroup .ibtn{width:36px;height:36px;border-radius:9px}#planTools .toolgroup .ibtn svg{width:22px;height:22px;stroke-width:1.6}#planMode .sep{width:1px;align-self:stretch;margin:5px 3px;background:var(--line)}#planMode .sheet.on{color:var(--accent-ink);background:var(--accent-tint)}
