:root{--h-header: 60px;--bg-canvas: #F7F8FA;--surface: #FFFFFF;--surface-hover: #F1F2F4;--ink-primary: #1F2329;--ink-secondary: #6B7280;--ink-muted: #9CA3AF;--line: #E8EAED;--accent: #2E6BE6;--accent-bg: #EAF1FE;--warn: #E6A23C;--danger: #E5484D;--r-sm: 8px;--r-md: 12px;--r-lg: 16px;--r-pill: 999px;--shadow-float: 0 4px 16px rgba(17, 24, 39, .06);--gap-xs: 4px;--gap-sm: 8px;--gap-md: 12px;--gap-lg: 16px;--gap-xl: 24px;--sr-edge: 300px;--fs-tool: 10px;--fs-mini: 11px;--fs-body: 13px;--fs-title: 14px;--fw-regular: 400;--fw-medium: 500;--icon-tool: 18px;--icon-bar: 16px;--icon-sw: 1.75;--ease: cubic-bezier(.32, .72, 0, 1);--dur-fast: .13s;--dur-base: .18s;--dur-panel: .28s;--font-ui: "Inter", system-ui, -apple-system, "PingFang SC", "Microsoft YaHei", sans-serif;--font-mono: "Roboto Mono", "Consolas", "PingFang SC", "Microsoft YaHei", monospace;--primary: var(--accent);--primary-soft: var(--accent-bg);--panel: var(--surface);--border: var(--line);--text: var(--ink-primary);--muted: var(--ink-muted);--muted-strong: var(--ink-secondary)}b,strong{font-weight:var(--fw-medium)}.ic{width:var(--icon-bar);height:var(--icon-bar);flex:0 0 auto;display:inline-block;vertical-align:-.18em;fill:none;stroke:currentColor;stroke-width:var(--icon-sw);stroke-linecap:round;stroke-linejoin:round;pointer-events:none}.ic-tool{width:var(--icon-tool);height:var(--icon-tool)}.ic-lg{width:20px;height:20px}.op-btn,.mode-tab,.sb-btn,.cad-bar-btn,.ehs-print-btn,.ehs-toolbox-title,.ehs-toolbox-hint,.ehs-hint,.pt,.ab{display:inline-flex;align-items:center;gap:var(--gap-sm)}.pt,.ehs-toolbox-title,.ehs-hint{display:flex}.ab{justify-content:center}.icon-btn,.op-btn.icon-only{gap:0}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}input[type=number]::-webkit-outer-spin-button,input[type=number]::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}input[type=number]{-moz-appearance:textfield}body{font-family:var(--font-ui);font-size:12px;background:var(--bg-canvas);color:var(--text);height:100vh;display:flex;flex-direction:column;overflow:hidden;-webkit-font-smoothing:antialiased}header{height:var(--h-header);background:var(--surface);border-bottom:1px solid var(--line);color:var(--text);display:flex;align-items:center;gap:var(--gap-md);padding:0 var(--gap-lg);flex-shrink:0;z-index:100;position:relative}.h-left{display:flex;align-items:center;gap:var(--gap-md)}.logo{font-weight:var(--fw-medium);font-size:var(--fs-title);letter-spacing:.2px;white-space:nowrap;color:var(--ink-primary)}.logo-img{height:40px;width:auto;display:block;flex:none;object-fit:contain;user-select:none;-webkit-user-drag:none}.zone-picker-wrap{position:relative}.zone-picker{display:inline-flex;align-items:center;gap:var(--gap-xs);background:var(--surface);border:1px solid var(--line);color:var(--ink-primary);border-radius:var(--r-pill);padding:5px 10px 5px 12px;font-size:var(--fs-mini);font-weight:var(--fw-medium);cursor:pointer;white-space:nowrap;transition:background var(--dur-fast) var(--ease),border-color var(--dur-fast) var(--ease)}.zone-picker:hover{background:var(--surface-hover)}.zone-picker-caret,.zone-picker-lead{width:14px;height:14px;color:var(--ink-muted)}.zone-picker-div{color:var(--ink-muted);font-size:var(--fs-tool);opacity:.5;margin:0 -4px}.zp-sub{display:block;font-size:10px;color:var(--ink-muted);margin-top:1px}.zp-note{padding:6px 10px 4px;font-size:10px;line-height:1.6;color:var(--ink-muted)}.acct-wrap{position:relative}.acct-menu{position:absolute;top:calc(100% + 6px);right:0;min-width:210px;z-index:100005;background:var(--surface);border:1px solid var(--line);border-radius:var(--r-lg);box-shadow:var(--shadow-float);padding:5px;overflow:hidden}.acct-menu[hidden]{display:none}.acct-who{padding:8px 10px 6px}.acct-who b{display:block;font-size:var(--fs-tool);font-weight:var(--fw-medium);color:var(--ink-primary)}.acct-who span{display:block;margin-top:2px;font-size:10px;color:var(--ink-muted);line-height:1.6}.acct-item{display:flex;align-items:center;gap:8px;width:100%;padding:8px 10px;border:none;background:transparent;border-radius:var(--r-md);font-size:var(--fs-tool);color:var(--ink-secondary);cursor:pointer;text-align:left;text-decoration:none}.acct-item:hover{background:var(--surface-hover);color:var(--ink-primary)}.acct-item .ic{width:15px;height:15px}.acct-item.danger:hover{background:#fdecec;color:var(--danger)}body.zp-open header{z-index:100005}.zone-picker-menu{position:absolute;left:0;top:calc(100% + 6px);z-index:10;min-width:190px;background:var(--surface);border:1px solid var(--line);border-radius:var(--r-md);box-shadow:var(--shadow-float);padding:var(--gap-xs);overflow:hidden}.zone-picker-menu[hidden]{display:none}.zp-group{font-size:10px;color:var(--ink-muted);padding:6px 10px 3px}.zp-item{display:flex;align-items:center;justify-content:space-between;gap:var(--gap-sm);width:100%;border:none;background:transparent;text-align:left;padding:7px 10px;border-radius:var(--r-sm);cursor:pointer;font-size:var(--fs-mini);color:var(--ink-secondary);transition:background var(--dur-fast) var(--ease),color var(--dur-fast) var(--ease)}.zp-item:hover{background:var(--surface-hover);color:var(--ink-primary)}.zp-item.active{color:var(--accent);background:var(--accent-bg)}.zp-item .ic{width:14px;height:14px;opacity:0}.zp-item.active .ic{opacity:1}.zp-sep{height:1px;background:var(--line);margin:5px 6px}.zp-group-on{color:var(--accent);font-weight:var(--fw-medium)}.zp-tag{margin-left:6px;font-style:normal;font-size:9px;color:var(--ink-muted);border:1px solid var(--line);border-radius:3px;padding:0 3px;vertical-align:1px}.zp-new{display:flex;align-items:center;gap:7px;width:100%;border:none;background:transparent;text-align:left;padding:7px 10px;border-radius:var(--r-sm);cursor:pointer;font-size:var(--fs-mini);color:var(--accent);transition:background var(--dur-fast) var(--ease)}.zp-new:hover{background:var(--accent-bg)}.zp-new .ic{width:14px;height:14px}.mode-switcher{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);display:flex;gap:2px;background:var(--surface-hover);border-radius:var(--r-pill);padding:3px}.mode-tab{border:none;background:transparent;padding:6px 14px;border-radius:var(--r-pill);font-size:12px;font-weight:var(--fw-medium);color:var(--ink-secondary);cursor:pointer;white-space:nowrap;transition:background var(--dur-fast) var(--ease),color var(--dur-fast) var(--ease),box-shadow var(--dur-fast) var(--ease)}.mode-tab:hover{color:var(--ink-primary)}.mode-tab.active{background:var(--surface);color:var(--ink-primary);box-shadow:var(--shadow-float)}.logo span{color:var(--primary)}.h-sep{width:1px;height:20px;background:var(--border);margin:0 2px}.toggle-sw{width:28px;height:16px;background:#cbd5e1;border-radius:8px;position:relative;transition:background .2s var(--ease);cursor:pointer}.toggle-sw:after{content:"";position:absolute;top:2px;left:2px;width:12px;height:12px;border-radius:50%;background:#fff;transition:transform .2s var(--ease);box-shadow:var(--shadow-float)}.toggle-sw.on{background:var(--primary)}.toggle-sw.on:after{transform:translate(12px)}.grid-scale-wrap{display:flex;align-items:center;gap:3px;font-size:11px;color:var(--muted-strong)}.grid-scale-wrap input{background:#f8fafc;border:1px solid var(--border);color:var(--text);border-radius:4px;padding:1px 4px;font-size:11px;font-family:var(--font-mono)}.grid-scale-wrap input:disabled{opacity:.5}.h-right{margin-left:auto;display:flex;align-items:center;gap:var(--gap-sm)}.h-group{display:flex;align-items:center;gap:var(--gap-xs)}.h-shell .icon-btn:disabled{opacity:.45}.icon-btn.has-dot{position:relative}.icon-btn.has-dot:after{content:"";position:absolute;top:5px;right:5px;width:6px;height:6px;border-radius:50%;background:var(--danger);border:1.5px solid var(--surface)}.op-btn{background:transparent;border:1px solid transparent;color:var(--ink-secondary);border-radius:var(--r-sm);padding:5px 10px;font-size:var(--fs-mini);cursor:pointer;transition:background var(--dur-fast) var(--ease),color var(--dur-fast) var(--ease),border-color var(--dur-fast) var(--ease);white-space:nowrap}.op-btn:hover:not(:disabled){background:var(--surface-hover);color:var(--ink-primary)}.op-btn:disabled{opacity:.4;cursor:default}.op-btn.active{background:var(--primary);border-color:var(--primary);color:#fff}.op-btn.route{background:#eef2ff;border-color:#c7d2fe;color:#4338ca}.op-btn.route:hover,.op-btn.route.active{background:#4f46e5;border-color:#4f46e5;color:#fff}.op-btn.lod-btn.active{background:#0369a1;border-color:#0369a1;color:#fff}.op-btn.ehs{background:#fef2f2;border-color:#fecaca;color:#b91c1c}.op-btn.ehs:hover,.op-btn.ehs.active{background:#dc2626;border-color:#dc2626;color:#fff}.theme-switch{background:#f8fafc;border:1px solid var(--border);color:var(--muted-strong);border-radius:6px;padding:4px 8px;font-size:11px;cursor:pointer}.theme-switch:hover{background:var(--primary-soft);border-color:#bfdbfe;color:var(--primary)}.floor-float{position:fixed;right:var(--sr-edge);z-index:9000;top:auto;bottom:calc(50% + 36px);user-select:none;transition:right var(--dur-base) var(--ease)}.floor-float-body{display:flex;flex-direction:column;align-items:center;gap:3px;background:#fff;border:1px solid var(--border);border-right:none;border-radius:10px 0 0 10px;padding:6px 8px 8px}.floor-float-title{font-size:10px;color:var(--muted);white-space:nowrap;margin-bottom:1px}.floor-float-btns{display:flex;flex-direction:column;gap:3px}.floor-float-btn{width:34px;height:26px;border:1px solid var(--border);background:#f8fafc;color:var(--muted-strong);border-radius:6px;font-size:11px;font-family:var(--font-mono);cursor:pointer;transition:all .15s var(--ease)}.floor-float-btn.active,.floor-float-btn:hover{background:var(--primary);border-color:var(--primary);color:#fff}.floor-float-add{width:34px;height:22px;border:1px dashed var(--border);background:transparent;color:var(--muted);border-radius:6px;font-size:13px;cursor:pointer;transition:all .15s var(--ease);margin-bottom:2px}.floor-float-add:hover{border-color:var(--primary);color:var(--primary);background:#2563eb0f}.floor-float-row{display:flex;align-items:center;justify-content:center}.floor-float-eye{margin-top:6px;width:100%;padding:5px 0;border:1px solid var(--border);background:#f8fafc;color:var(--muted-strong);border-radius:6px;font-size:14px;cursor:pointer;transition:all .15s var(--ease)}.floor-float-eye:hover{background:#eff6ff;border-color:var(--primary)}.floor-float-eye.off{opacity:.45;filter:grayscale(1)}.statusbar{height:34px;flex-shrink:0;display:flex;align-items:center;background:var(--surface);border-top:1px solid var(--line);padding:0 var(--gap-md);font-size:var(--fs-mini);color:var(--ink-secondary);gap:var(--gap-md);z-index:100}.sb-zone{display:flex;align-items:center;gap:8px}.sb-left{flex:1}.sb-right{flex:1;justify-content:flex-end}.sb-sep{width:1px;height:14px;background:var(--border)}.sb-btn{display:inline-flex;align-items:center;gap:var(--gap-xs);background:transparent;border:1px solid transparent;color:var(--ink-secondary);font-size:var(--fs-mini);font-weight:var(--fw-regular);padding:3px 10px;border-radius:var(--r-pill);cursor:pointer;transition:background var(--dur-fast) var(--ease),color var(--dur-fast) var(--ease),border-color var(--dur-fast) var(--ease);white-space:nowrap}.sb-btn:hover{color:var(--ink-primary);background:var(--surface-hover)}.sb-btn.active{color:var(--accent);background:var(--accent-bg);border-color:transparent}.sb-btn.sb-dim{color:var(--ink-muted);background:transparent;opacity:.55}.sb-btn.sb-dim.active{color:var(--ink-muted);background:var(--surface-hover)}.sb-btn .ic{width:15px;height:15px}.sb-icon{width:18px;height:18px;border:none;background:transparent;color:var(--muted-strong);font-size:13px;line-height:1;cursor:pointer;border-radius:4px;transition:all .12s var(--ease)}.sb-icon:hover{color:var(--primary);background:#2563eb14}.sb-zoom{min-width:34px;text-align:center;font-family:var(--font-mono);font-size:11px}.sb-coord{font-family:var(--font-mono);font-size:11px;color:var(--muted)}.sb-popover-wrap{position:relative}.sb-popover{position:absolute;bottom:28px;right:0;background:#fff;border:1px solid var(--border);border-radius:8px;box-shadow:var(--shadow-float);padding:8px;z-index:9001}.sb-popover-title{font-size:10px;color:var(--muted);text-transform:uppercase;letter-spacing:.4px;padding-bottom:5px}.sb-zone-nav-list{display:flex;flex-direction:column;gap:2px;max-height:240px;overflow-y:auto;min-width:96px}.sb-zone-nav-item{background:transparent;border:none;color:var(--muted-strong);font-size:12px;text-align:left;padding:5px 8px;border-radius:5px;cursor:pointer;transition:all .12s var(--ease);white-space:nowrap}.sb-zone-nav-item:hover{color:var(--primary);background:#2563eb14}.sb-zone-nav-empty{font-size:11px;color:var(--muted);padding:5px 8px}.icon-btn-group{display:flex;gap:3px}.icon-btn{width:30px;height:30px;border:1px solid transparent;background:transparent;border-radius:var(--r-sm);color:var(--ink-secondary);cursor:pointer;display:flex;align-items:center;justify-content:center;transition:background var(--dur-fast) var(--ease),color var(--dur-fast) var(--ease)}.icon-btn:hover:not(:disabled){background:var(--surface-hover);color:var(--ink-primary)}.icon-btn:disabled{cursor:default}.icon-btn.danger:hover:not(:disabled){background:#fdecec;color:var(--danger)}.ws{position:relative;display:flex;flex:1;overflow:hidden}.sl-wrap{position:absolute;left:var(--gap-md);top:50%;transform:translateY(-50%);display:flex;align-items:center;gap:var(--gap-sm);z-index:10000;max-height:calc(100% - var(--gap-md) * 2);pointer-events:none}.sl-wrap>*{pointer-events:auto}.sl-primary{width:60px;flex-shrink:0;background:var(--surface);border:1px solid var(--line);border-radius:var(--r-lg);box-shadow:var(--shadow-float);display:flex;flex-direction:column;align-items:center;padding:var(--gap-sm) 0;gap:2px;overflow-y:auto;scrollbar-width:none;-ms-overflow-style:none}.sl-primary::-webkit-scrollbar{width:0;height:0;display:none}.aisle-seed-box{width:100%;flex-shrink:0;display:flex;flex-direction:column;align-items:center;gap:2px;padding:2px 0 8px;margin-bottom:var(--gap-xs);border-bottom:1px solid var(--line)}.aisle-seed-lbl{font-size:9px;color:#64748b;letter-spacing:.5px}.aisle-seed-box input{width:32px;text-align:center;text-transform:uppercase;border:none;background:transparent;border-radius:6px;font-size:13px;font-weight:500;color:var(--text);padding:3px 0;transition:background .15s var(--ease)}.aisle-seed-box input:hover{background:#f1f5f9}.aisle-seed-box input:focus{outline:none;background:var(--primary-soft);color:var(--primary)}.sl-cat{width:48px;border:none;background:transparent;border-radius:var(--r-md);padding:8px 2px 6px;cursor:pointer;color:var(--ink-secondary);display:flex;flex-direction:column;align-items:center;gap:3px;transition:background var(--dur-fast) var(--ease),color var(--dur-fast) var(--ease)}.sl-cat span{font-size:var(--fs-tool)}.sl-cat-icon{display:flex;align-items:center;justify-content:center}.sl-cat:hover{background:var(--surface-hover);color:var(--ink-primary)}.sl-cat.active{background:var(--ink-primary);color:#fff}.sl-cat.active .ic{color:#fff}.sl-flyout{flex-shrink:0;width:78px;overflow:visible;background:var(--surface);border:1px solid var(--line);border-radius:var(--r-lg);box-shadow:var(--shadow-float);opacity:0;pointer-events:none;transition:width var(--dur-base) var(--ease),opacity var(--dur-base) var(--ease),padding var(--dur-base) var(--ease),border-width var(--dur-base) var(--ease);padding:var(--gap-sm) var(--gap-xs);z-index:10000}.sl-flyout:not(.open){width:0;padding-left:0;padding-right:0;border-left-width:0;border-right-width:0;overflow:hidden}.sl-flyout:not(.open) .sl-flyout-panel{display:none}.sl-flyout.open{opacity:1;pointer-events:auto}.sl-flyout-panel{display:none;flex-direction:column;gap:4px;min-height:0}.sl-flyout-panel.visible{display:flex}.sl-flyout-title{font-size:10px;font-weight:500;color:var(--muted);text-transform:uppercase;letter-spacing:.5px;padding:2px 4px 6px;text-align:center}.tc{width:100%;border:1px solid transparent;border-radius:var(--r-md);background:transparent;cursor:grab;padding:8px 4px 6px;display:flex;flex-direction:column;align-items:center;gap:3px;text-align:center;font-size:var(--fs-tool);color:var(--ink-secondary);transition:background var(--dur-fast) var(--ease),color var(--dur-fast) var(--ease);user-select:none}.tc:hover{background:var(--surface-hover);color:var(--ink-primary)}.tc.active-tool{background:var(--accent-bg);color:var(--accent)}.tc.active-tool .ic{color:var(--accent)}.tc.tc-compact{padding:6px 4px 4px}.tc.tc-compact .ic{width:15px;height:15px}.sl-group-label{font-size:9px;color:var(--ink-muted);letter-spacing:.4px;padding:8px 4px 3px;margin-top:2px;border-top:1px solid var(--line)}.sl-flyout-panel>.sl-group-label:first-of-type{border-top:none;margin-top:0}.tc-seg{display:flex;gap:2px;width:100%;background:var(--surface-hover);border-radius:var(--r-md);padding:2px}.tc-seg-btn{flex:1;min-width:0;border:none;background:transparent;cursor:pointer;border-radius:calc(var(--r-md) - 3px);padding:6px 2px 5px;display:flex;flex-direction:column;align-items:center;gap:2px;font-size:var(--fs-tool);color:var(--ink-secondary);transition:background var(--dur-fast) var(--ease),color var(--dur-fast) var(--ease)}.tc-seg-btn .ic{width:16px;height:16px}.tc-seg-btn:hover{background:var(--surface);color:var(--ink-primary)}.tc-seg-btn.active{background:var(--accent-bg);color:var(--accent)}.ti{font-size:17px;line-height:1.3;opacity:.75}.tc:hover .ti,.tc.active-tool .ti{opacity:1}.ehs-toolbox{position:absolute;left:var(--gap-md);top:50%;transform:translateY(-50%);z-index:10000;width:88px;background:var(--surface);border:1px solid var(--line);border-radius:var(--r-lg);box-shadow:var(--shadow-float);display:flex;flex-direction:column;align-items:stretch;padding:var(--gap-sm) var(--gap-xs);gap:2px;opacity:1;max-height:calc(100% - var(--gap-md) * 2);overflow-y:auto;scrollbar-width:none;-ms-overflow-style:none}.ehs-toolbox::-webkit-scrollbar{width:0;height:0;display:none}.ehs-toolbox-title{font-size:var(--fs-tool);font-weight:var(--fw-medium);color:var(--ink-muted);letter-spacing:.4px;padding:2px 4px 6px;justify-content:center}.ehs-toolbox-title .ic{width:14px;height:14px}.eff-toolbox-title-gap{border-top:1px solid var(--line);margin-top:6px;padding-top:10px}#eff-toolbox{width:60px}.ehs-tc{border:1px solid transparent}.ehs-tc:hover{background:var(--surface-hover);color:var(--ink-primary)}.ehs-tc.active-tool{background:var(--accent-bg);color:var(--accent)}.ehs-ti{display:block;width:20px;height:20px;margin:0 auto 4px;object-fit:contain}.ehs-toolbox-hint{margin-top:var(--gap-sm);padding-top:var(--gap-sm);border-top:1px solid var(--line);font-size:9px;color:var(--ink-muted);text-align:center;line-height:1.6;display:block}.pick-panel{width:228px;align-items:stretch;text-align:left}.pick-sec{padding:4px 2px 8px}.pick-sec:not(:first-of-type){border-top:1px solid var(--line);padding-top:10px;margin-top:2px}.pick-sec-lbl{font-size:9px;color:var(--ink-muted);letter-spacing:.4px;padding:0 2px 6px}.pick-row{display:flex;align-items:center;gap:6px;padding:2px}.pick-k{font-size:11px;color:var(--muted-strong);flex-shrink:0}.pick-qty{flex:1;min-width:0}.pick-range{padding:4px 2px 2px}.pick-wh-row,.pick-zone-row{display:flex;flex-wrap:wrap;gap:4px;align-items:center;margin-bottom:6px}.pick-range-lbl{font-size:10px;color:var(--ink-muted);width:100%}.pick-chip{border:1px solid var(--line);background:var(--surface);color:var(--ink-secondary);border-radius:var(--r-pill);padding:3px 9px;font-size:11px;cursor:pointer;transition:background var(--dur-fast) var(--ease),color var(--dur-fast) var(--ease),border-color var(--dur-fast) var(--ease)}.pick-chip:hover{border-color:var(--accent);color:var(--accent)}.pick-chip.on{background:var(--accent);color:#fff;border-color:var(--accent)}.pick-range-empty{font-size:10px;color:var(--ink-muted)}.pick-count{font-size:10px;color:var(--muted-strong);padding:2px}.pick-xwarn{font-size:10px;color:var(--warn);padding:3px 2px 0}.pick-gen-btn{margin-top:8px;background:var(--accent);color:#fff;border-color:var(--accent)}.pick-gen-btn:hover{background:#2359c9}.pick-markers{display:flex;flex-direction:column;gap:6px}.pick-marker{display:flex;align-items:center;gap:8px;padding:7px 9px;border:1px solid var(--line);border-radius:var(--r-md);background:var(--surface);cursor:grab;transition:border-color var(--dur-fast) var(--ease),box-shadow var(--dur-fast) var(--ease)}.pick-marker:hover{border-color:var(--accent);box-shadow:var(--shadow-float)}.pick-marker.placed{border-color:var(--accent)}.pick-marker-ico{width:18px;height:18px;flex-shrink:0;border-radius:50%}.pick-marker-ico.start{background:radial-gradient(circle,var(--accent) 40%,transparent 42%),radial-gradient(circle,transparent 60%,var(--accent) 62%);border:2px solid var(--accent);box-sizing:border-box}.pick-marker-ico.dock{border-radius:3px;background:#2e6be626;border:1.5px solid var(--accent)}.pick-marker-txt{display:flex;flex-direction:column;line-height:1.3}.pick-marker-txt b{font-size:12px;font-weight:var(--fw-medium);color:var(--ink-primary)}.pick-marker-txt em{font-size:9px;color:var(--ink-muted);font-style:normal}.pick-sec-play{border-top:1px solid var(--line);padding-top:10px;margin-top:2px}.pick-play-row{display:flex;align-items:stretch;gap:6px}.pick-play-row .pick-play-btn{flex:1 1 auto;min-width:0}.pick-mini{flex:0 0 46px;border:1px solid var(--line);background:var(--surface);color:var(--ink-secondary);border-radius:var(--r-md);font-size:11px;line-height:1;cursor:pointer;white-space:nowrap;transition:background var(--dur-fast) var(--ease),color var(--dur-fast) var(--ease),border-color var(--dur-fast) var(--ease)}.pick-mini:hover{background:var(--surface-hover);color:var(--ink-primary);border-color:var(--border)}#pick-clear-btn.pick-mini:hover{color:var(--danger);border-color:var(--danger)}.pick-play-btn{background:var(--accent);color:#fff;border-color:var(--accent)}.pick-play-btn:hover{background:#2359c9}.pick-play-btn:disabled{background:var(--surface-hover);color:var(--ink-muted);border-color:var(--line);cursor:not-allowed}.pick-play-btn.stopping{background:var(--danger);border-color:var(--danger)}.pick-play-btn.stopping:hover{background:#cf3f43}.pick-live{display:grid;grid-template-columns:repeat(3,1fr);gap:4px;margin-top:8px}.pick-live-cell{background:var(--surface-hover);border-radius:var(--r-md);padding:6px 2px;text-align:center}.pick-live-cell b{display:block;font-size:14px;color:var(--accent)}.pick-live-cell span{display:block;font-size:9px;color:var(--ink-muted);margin-top:1px}.ehs-console{display:flex;flex-direction:column;flex:1;overflow-y:auto;opacity:1}.ehs-hint{padding:12px 16px;background:#fef2f2;border-bottom:1px solid #fecaca;font-size:11px;color:#991b1b;line-height:1.7}.ehs-print-btn{display:block;margin-top:6px;border:1px solid #c7d2fe;background:#eef2ff;color:#4338ca;font-size:11px;font-weight:500;padding:5px 10px;border-radius:6px;cursor:pointer;transition:all .15s var(--ease)}.ehs-print-btn:hover,.ehs-print-btn.active{background:#4f46e5;border-color:#4f46e5;color:#fff}.print-hint{padding:6px 12px 4px;font-size:10.5px;color:var(--muted-strong);line-height:1.6}.print-anchor-disp{flex:1;font-size:11px;color:var(--muted-strong)}.print-anchor-disp.set{color:#4338ca;font-weight:500}.print-artboard{position:absolute;pointer-events:none;z-index:500;border:2px solid #4f46e5;box-sizing:border-box;box-shadow:0 0 0 1px #4f46e52e}.print-artboard:after{content:"A3 出图范围 (42:29.7) — 请把要打印的区域摆进框内";position:absolute;top:-22px;left:0;white-space:nowrap;font-size:11px;color:#4f46e5;font-weight:500;font-family:var(--font-ui)}.ehs-stat-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;padding:0 12px}.ehs-stat{background:var(--surface-hover);border:none;border-radius:var(--r-md);padding:10px 6px;text-align:center;box-shadow:none}.ehs-stat b{display:block;font-size:18px;color:var(--text);font-family:var(--font-mono)}.ehs-stat span{display:block;font-size:10px;color:var(--muted);margin-top:2px}.ehs-risk-empty{padding:0 12px;font-size:11px;color:var(--muted)}.ehs-risk-item{margin:0 12px;padding:10px 12px;background:#fef2f2;border:1px solid #fecaca;border-radius:8px;font-size:11px;color:#b91c1c;font-weight:500;cursor:pointer;transition:background .15s var(--ease)}.ehs-risk-item:hover{background:#fee2e2}.ehs-asset-head{display:grid;grid-template-columns:1.1fr .8fr 1fr .9fr;gap:8px;padding:0 12px 4px;font-size:9px;color:var(--muted);text-transform:uppercase;letter-spacing:.3px}.ehs-asset-row{display:grid;grid-template-columns:1.1fr .8fr 1fr .9fr;gap:8px;align-items:center;padding:7px 12px;font-size:11px;cursor:pointer;border-bottom:1px solid #f1f5f9;transition:background .15s var(--ease)}.ehs-asset-row>span{min-width:0;word-break:break-word}.ehs-asset-row:hover{background:var(--primary-soft)}.ehs-asset-row.warn>span:last-child{color:#b91c1c;font-weight:500}.ehs-due-warn{color:#b91c1c;font-weight:500}.ehs-word-toolbar{display:flex;flex-direction:column;gap:8px;padding:0 12px 8px}.ehs-toolbar-row{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.ehs-toolbar-lbl{font-size:10px;color:var(--muted-strong);flex-shrink:0;width:26px}.ehs-btn-group{display:flex;gap:4px}.ehs-stepper{display:flex;align-items:stretch;border:1px solid var(--border);border-radius:6px;overflow:hidden}.ehs-stepper button{width:22px;border:none;background:#f8fafc;color:var(--muted-strong);cursor:pointer;font-size:13px;font-weight:500;transition:background .15s var(--ease)}.ehs-stepper button:hover{background:var(--primary-soft);color:var(--primary)}.ehs-font-size{width:44px;border:none;border-left:1px solid var(--border);border-right:1px solid var(--border);text-align:center;font-size:12px;font-family:var(--font-mono);color:var(--text);outline:none}.ehs-font-btn{width:28px;height:28px;border:1px solid var(--border);border-radius:6px;background:#fff;color:var(--text);cursor:pointer;font-size:13px;display:flex;align-items:center;justify-content:center;transition:all .15s var(--ease)}.ehs-font-btn:hover{background:var(--primary-soft);border-color:#bfdbfe}.ehs-font-btn.active{background:var(--primary);border-color:var(--primary);color:#fff}.ehs-font-color{width:28px;height:28px;padding:2px;border:1px solid var(--border);border-radius:6px;cursor:pointer;background:#fff}.ehs-font-rot{flex:1;min-width:0}.ehs-text-hint{padding:0 12px;font-size:10.5px;color:var(--muted);line-height:1.6}#ehs-text-editor{position:fixed;z-index:100003;box-sizing:border-box;border:1px dashed #2563eb;border-radius:3px;background:#ffffffeb;font-family:var(--font-ui);line-height:1.3;padding:2px 4px;resize:none;outline:none;transform-origin:top left}.fade-swap{transition:opacity .3s var(--ease)}.tc-hover-group{position:relative}.sl-flyout3{display:none;position:absolute;left:100%;top:-6px;width:136px;background:#fff;border-radius:8px;box-shadow:var(--shadow-float);padding:8px;z-index:10001;cursor:default;text-align:left}.tc-hover-group:hover .sl-flyout3{display:block}.sl-flyout3-title{font-size:9px;font-weight:500;color:var(--muted);text-transform:uppercase;letter-spacing:.3px;padding-bottom:6px}.preset-list{display:flex;flex-direction:column;gap:4px;margin-bottom:6px}.preset-tc{position:relative;border:1px solid var(--border);border-radius:6px;padding:6px 22px 6px 8px;font-size:10px;font-family:var(--font-mono);color:var(--text);cursor:grab;text-align:left;transition:all .15s var(--ease)}.preset-tc:hover{background:var(--primary-soft);border-color:#bfdbfe;color:var(--primary)}.preset-del{position:absolute;top:50%;right:6px;transform:translateY(-50%);width:14px;height:14px;line-height:14px;text-align:center;border-radius:50%;font-size:10px;color:var(--muted-strong);cursor:pointer;opacity:0;transition:opacity .15s var(--ease),background .15s var(--ease),color .15s var(--ease)}.preset-tc:hover .preset-del{opacity:.7}.preset-del:hover{opacity:1;background:#fef2f2;color:#dc2626}.preset-add-btn{width:100%;border:1px dashed var(--border);background:transparent;border-radius:6px;padding:6px 0;font-size:10px;color:var(--muted-strong);cursor:pointer;transition:all .15s var(--ease)}.preset-add-btn:hover{border-color:var(--primary);color:var(--primary);background:var(--primary-soft)}.tc.abc-A:hover,.tc.abc-A.active-tool{background:#ecfdf5;color:#047857}.tc.abc-B:hover,.tc.abc-B.active-tool{background:#fffbeb;color:#92400e}.tc.abc-C:hover,.tc.abc-C.active-tool{background:#fef2f2;color:#991b1b}.vp{flex:1;position:relative;overflow:hidden;background:var(--bg-canvas);cursor:default}.vp.pan-cursor{cursor:grabbing}.vp.paint-cursor{cursor:crosshair}.align-bar{position:fixed;transform:translate(-50%);z-index:40;display:flex;align-items:center;gap:2px;background:#fff;border:1px solid var(--border);border-radius:10px;box-shadow:var(--shadow-float);padding:5px 8px}.align-bar[hidden]{display:none}.align-btn{width:28px;height:28px;border:none;border-radius:6px;background:transparent;color:var(--muted-strong);font-size:16px;line-height:1;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:background .12s var(--ease),color .12s var(--ease)}.align-btn:hover:not(:disabled){background:var(--primary-soft);color:var(--primary)}.align-btn:disabled{opacity:.3;cursor:not-allowed}.align-sep{width:1px;height:18px;background:var(--border);margin:0 4px}.align-count{font-size:11px;color:var(--muted);margin-left:6px;padding-right:2px;white-space:nowrap}.align-btn-wide{width:auto;padding:0 10px;font-size:11px;font-weight:500;white-space:nowrap}#bn-list .route-item{cursor:grab}#bn-list .route-num{background:var(--primary)}.sr{position:relative;width:288px;flex-shrink:0;margin:var(--gap-md) var(--gap-md) var(--gap-md) 0;background:var(--surface);border:1px solid var(--line);border-radius:var(--r-lg);box-shadow:var(--shadow-float);display:flex;flex-direction:column;overflow:hidden;transition:width var(--dur-base) var(--ease),margin var(--dur-base) var(--ease),opacity var(--dur-base) var(--ease)}body.sr-collapsed .sr{width:0;margin-right:0;margin-left:0;opacity:0;border-width:0;pointer-events:none}body.sr-collapsed{--sr-edge: 0px}.sr-collapse{position:absolute;top:10px;right:10px;z-index:5;width:26px;height:26px;border:none;background:transparent;border-radius:var(--r-sm);color:var(--ink-muted);cursor:pointer;display:flex;align-items:center;justify-content:center;transition:background var(--dur-fast) var(--ease),color var(--dur-fast) var(--ease)}.sr-collapse:hover{background:var(--surface-hover);color:var(--ink-primary)}.sr-handle{align-self:center;flex-shrink:0;width:22px;height:52px;margin:auto 0;border:1px solid var(--line);border-right:none;background:var(--surface);border-radius:var(--r-md) 0 0 var(--r-md);box-shadow:var(--shadow-float);color:var(--ink-secondary);cursor:pointer;display:flex;align-items:center;justify-content:center;transition:background var(--dur-fast) var(--ease),color var(--dur-fast) var(--ease)}.sr-handle[hidden]{display:none}.sr-handle:hover{background:var(--surface-hover);color:var(--ink-primary)}.normal-panel{display:flex;flex-direction:column;flex:1;overflow:hidden}.sr-tabs{display:flex;flex-shrink:0;border-bottom:1px solid var(--line);background:transparent;padding-right:40px}.sr-tab{flex:1;border:none;background:transparent;padding:12px 0 10px;cursor:pointer;font-size:var(--fs-body);font-weight:var(--fw-medium);color:var(--ink-secondary);border-bottom:2px solid transparent;transition:color var(--dur-fast) var(--ease),border-color var(--dur-fast) var(--ease)}.sr-tab:hover{color:var(--ink-primary)}.sr-tab.active{color:var(--accent);border-bottom-color:var(--accent)}.sr-tab-body{flex:1;min-height:0;overflow:hidden;overflow-y:auto;padding:10px 10px 6px;display:flex;flex-direction:column;gap:10px}.ps{background:transparent;border:none;border-radius:0;padding:2px 0 4px;box-shadow:none;flex-shrink:0}.ps:not(:first-child){border-top:1px solid var(--line);padding-top:10px}.pt{font-size:10px;font-weight:500;color:var(--muted);padding:0 12px 6px;text-transform:uppercase;letter-spacing:.5px}.pr{display:flex;align-items:center;gap:6px;padding:3px 12px}.pl{color:var(--muted-strong);width:64px;flex-shrink:0;font-size:11px}.pi{flex:1;border:1px solid var(--border);border-radius:5px;padding:4px 7px;font-size:11px;color:var(--text);background:#fff;min-width:0;font-family:var(--font-mono)}.pi:focus{outline:none;border-color:var(--primary);box-shadow:0 0 0 3px var(--primary-soft)}select.pi{appearance:auto;font-family:var(--font-ui)}.pi.pi-dup{border-color:var(--danger);background:#e5484d0f}.pi.pi-dup:focus{box-shadow:0 0 0 3px #e5484d2e}.pgl{font-size:9px;color:var(--ink-muted);letter-spacing:.4px;padding:9px 12px 4px;margin-top:2px;border-top:1px solid var(--line)}.pgl:first-child{border-top:none;margin-top:0;padding-top:2px}.pgl-unit{font-family:var(--font-mono);opacity:.75}.pg2{display:grid;grid-template-columns:1fr 1fr;gap:6px;padding:2px 12px 4px}.pf{display:flex;flex-direction:column;gap:3px;min-width:0}.pfl{font-size:10px;color:var(--muted-strong)}.pf .pi{flex:none;width:100%}.dim-row{display:flex;align-items:center;gap:3px;padding:2px 12px 4px}.dim-lbl{font-size:10px;color:var(--muted-strong);flex-shrink:0}.dim-inp{flex:1;min-width:0;text-align:center;padding-left:2px;padding-right:2px}.dim-x{font-size:10px;color:var(--ink-muted);flex-shrink:0}.dim-inp::-webkit-outer-spin-button,.dim-inp::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}.dim-inp{-moz-appearance:textfield}.slot-matrix-row{display:flex;flex-wrap:wrap;gap:4px;padding:3px 12px}.slot-cell{display:flex;flex-direction:column;align-items:center;gap:2px}.slot-lbl{font-size:9px;color:var(--muted);font-family:var(--font-mono);line-height:1}.slot-inp{width:24px;height:22px;border:1px solid var(--border);border-radius:4px;text-align:center;font-size:11px;font-family:var(--font-mono);color:var(--text);background:#fff;padding:0}.slot-inp:focus{outline:none;border-color:var(--primary);box-shadow:0 0 0 2px var(--primary-soft)}.slot-inp::-webkit-outer-spin-button,.slot-inp::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}.slot-inp{-moz-appearance:textfield}.tri-row{display:flex;gap:6px;padding:4px 12px}.tri-col{flex:1;display:flex;flex-direction:column;align-items:center;gap:2px;min-width:0}.tri-lbl{font-size:9px;color:var(--muted);white-space:nowrap}.tri-inp{width:100%;text-align:center}.pmx-wrap{position:relative;display:flex;flex-direction:column;gap:3px;padding:4px 12px 10px;user-select:none}.pmx-row{display:flex;align-items:stretch;gap:4px}.pmx-hgutter{width:26px;flex-shrink:0;display:flex;flex-direction:column;align-items:center;justify-content:center;border-right:1.5px solid var(--border);padding-right:3px}.pmx-letter{font-size:10px;font-weight:500;color:var(--muted-strong);font-family:var(--font-mono);line-height:1.3;cursor:pointer;border-radius:2px}.pmx-letter:hover{background:#f1f5f9}.pmx-hlabel{font-size:8px;color:var(--muted);font-family:var(--font-mono);white-space:nowrap;cursor:text;border-radius:2px}.pmx-hlabel:hover{background:#f1f5f9}.pmx-h-edit{width:26px;border:none;background:transparent;text-align:center;font-size:8px;font-family:var(--font-mono);color:#1e293b;outline:none;padding:0}.pmx-cells{flex:1;display:grid;gap:3px;min-width:0}.pmx-cell{position:relative;display:flex;align-items:center;justify-content:center;background:#fff;border:1px solid #e2e8f0;border-radius:3px;min-height:26px;overflow:hidden;cursor:pointer}.pmx-cell:hover{border-color:#cbd5e1}.pmx-cell.sel{border:2px solid #2563eb;background:#eff6ff}.pmx-cell.odd{background:#fef9c3;border-color:#fde68a}.pmx-cell.odd.sel{border-color:#2563eb;background:#eff6ff}.pmx-w{font-size:10px;color:#94a3b8;font-family:var(--font-mono);line-height:1;cursor:text}.pmx-cells.dense .pmx-w{font-size:8px}.pmx-w-edit{width:100%;height:100%;border:none;background:transparent;text-align:center;font-size:10px;font-family:var(--font-mono);color:#1e293b;outline:none;padding:0}.pmx-wrench{position:absolute;top:0;right:1px;font-size:8px;line-height:1}.pmx-axis-row{margin-top:1px}.pmx-axis-cells{gap:3px}.pmx-axis-cell{font-size:9px;color:var(--muted-strong);text-align:center;font-family:var(--font-mono)}.pmx-title-row{display:flex;align-items:center;justify-content:space-between;gap:8px}.pmx-paint-toggle{border:1px solid var(--border);background:#fff;color:var(--muted-strong);font-size:9px;padding:3px 8px;border-radius:var(--r-pill, 999px);cursor:pointer;white-space:nowrap;transition:background .12s var(--ease),color .12s var(--ease),border-color .12s var(--ease)}.pmx-paint-toggle:hover{border-color:#94a3b8}.pmx-paint-toggle.on{background:#475569;color:#fff;border-color:#475569}.pmx-painting .pmx-row[data-layer-row]{cursor:crosshair}.pmx-type-badge{width:100%;margin-top:1px;border:none;background:transparent;color:transparent;font-size:8px;line-height:1.2;cursor:pointer;border-radius:2px;padding:0}.pmx-type-badge.on{color:#64748b;background:#f1f5f9}.pmx-type-badge:hover{background:#e2e8f0;color:#475569}.pmx-storage-row{flex:1;display:flex;align-items:center;justify-content:center;gap:6px;background:#e2e8f0;border:1px solid #cbd5e1;border-radius:3px;min-height:26px;font-size:10px;color:#64748b;font-weight:500}.pmx-pending{outline:2px solid #475569;outline-offset:-1px}.pmx-clearance-row{display:flex;padding:2px 0}.pmx-clearance-bar{flex:1;display:flex;flex-direction:column;align-items:stretch;cursor:pointer;border-radius:3px;padding:1px 0}.pmx-clearance-bar:hover{background:#f1f5f9}.pmx-clearance-line{height:1px;background:#94a3b8}.pmx-clearance-val{font-size:9px;color:#64748b;text-align:center;padding:3px 0;white-space:nowrap}.pmx-addclr-row{display:flex;align-items:center;justify-content:center;padding:6px 0 2px;margin-top:2px;border-top:1px dashed #cbd5e1}.pmx-add-raised-btn{border:1px dashed #94a3b8;border-radius:3px;background:#fff;color:#64748b;font-size:10px;padding:3px 10px;cursor:pointer}.pmx-add-raised-btn:hover{background:#f1f5f9;border-color:#64748b;color:#334155}.zprofile-error{border-color:#dc2626!important;background:#fef2f2!important;box-shadow:0 0 0 3px #dc262626!important}.ag{display:flex;flex-wrap:wrap;gap:5px;padding:5px 12px}.ab{border:1px solid var(--border);background:#f8fafc;border-radius:6px;padding:5px 9px;font-size:11px;cursor:pointer;color:var(--text);transition:all .15s var(--ease)}.ab:hover{background:var(--primary-soft);border-color:#bfdbfe;color:var(--primary)}.ab.red{border-color:#fecaca;color:#dc2626}.ab.red:hover{background:#fef2f2}.ab.full{width:100%;text-align:center}.no-sel{padding:var(--gap-xl) var(--gap-md);color:var(--ink-muted);line-height:1.7;text-align:center;font-size:var(--fs-mini);display:flex;flex-direction:column;align-items:center;gap:var(--gap-md)}.no-sel .empty-art{width:76px;height:76px;color:var(--line);fill:none;stroke:currentColor;stroke-width:var(--icon-sw);stroke-linecap:round;stroke-linejoin:round;vector-effect:non-scaling-stroke}.cm-overlay{position:fixed;inset:0;z-index:100008;display:flex;align-items:center;justify-content:center;background:#0f172a73;backdrop-filter:blur(3px);opacity:0;transition:opacity .16s var(--ease);pointer-events:none}.cm-overlay.show{opacity:1;pointer-events:auto}.cm-card{width:760px;max-width:calc(100vw - 48px);max-height:calc(100vh - 64px);overflow:auto;background:#fff;border-radius:16px;padding:28px 30px 22px;box-shadow:var(--shadow-float);transform:translateY(10px) scale(.985);transition:transform .18s cubic-bezier(.2,.8,.3,1)}.cm-overlay.show .cm-card{transform:none}.cm-title{font-size:17px;font-weight:650;color:#0f172a}.cm-sub{font-size:12px;color:#64748b;margin-top:4px}.cm-hero{margin:20px 0 18px;padding:24px 14px 16px;border-radius:14px;background:linear-gradient(180deg,#f8fafc,#f1f5f9);border:1px solid #e2e8f0;display:flex;align-items:flex-start;justify-content:center;gap:0;overflow:hidden}.cm-cell{display:flex;flex-direction:column;align-items:center;min-width:0}.cm-char{font-family:Times New Roman,Georgia,serif;font-size:38px;line-height:1.05;color:#0f172a;letter-spacing:1px;padding:0 3px;white-space:pre}.cm-label{margin-top:10px;font-size:12.5px;color:#1e3a8a;white-space:nowrap}.cm-sublabel{font-size:10px;color:#64748b;margin-top:2px;white-space:nowrap}.cm-in{font-family:Times New Roman,Georgia,serif;font-size:38px;line-height:1.05;color:#1d4ed8;letter-spacing:1px;text-align:center;background:transparent;border:none;outline:none;border-bottom:2px dashed #93c5fd;border-radius:0;padding:0 1px;transition:all .14s var(--ease)}.cm-in[data-sep]{width:1.5ch}.cm-in#cd-prefix{width:2.6ch}.cm-in:hover{background:#2563eb0f}.cm-in:focus{border-bottom-color:#2563eb;border-bottom-style:solid;background:#2563eb17}.cm-in.bad{color:#dc2626;border-bottom-color:#dc2626}.cm-flash{animation:cmFlash .45s ease-out}@keyframes cmFlash{0%{background:#fde047}to{background:transparent}}.cm-row{display:flex;align-items:center;gap:10px;margin-bottom:10px;font-size:13px;color:#334155}.cm-row>.cm-k{width:96px;color:#64748b;font-size:12px;flex-shrink:0}.cm-switch{position:relative;width:38px;height:22px;flex-shrink:0}.cm-switch input{opacity:0;width:0;height:0}.cm-slider{position:absolute;inset:0;background:#cbd5e1;border-radius:999px;cursor:pointer;transition:background .16s var(--ease)}.cm-slider:before{content:"";position:absolute;width:16px;height:16px;left:3px;top:3px;background:#fff;border-radius:50%;transition:transform .16s var(--ease);box-shadow:var(--shadow-float)}.cm-switch input:checked+.cm-slider{background:#2563eb}.cm-switch input:checked+.cm-slider:before{transform:translate(16px)}.cm-err{color:#dc2626;font-size:11px;min-height:15px;margin:-4px 0 8px 106px}.cm-rules{background:#f8fafc;border:1px solid #e2e8f0;border-radius:10px;padding:12px 14px;font-size:12px;color:#475569;line-height:1.75;margin:14px 0 4px}.cm-rules b{color:#0f172a}.cm-rules code{font-family:ui-monospace,Menlo,Consolas,monospace;background:#e2e8f0;padding:1px 5px;border-radius:4px;color:#0f172a}.cm-input{width:100%;margin-top:14px;box-sizing:border-box;border:1px solid #cbd5e1;border-radius:8px;padding:9px 11px;font-size:13px;color:#0f172a;background:#fff;outline:none;transition:border-color .14s var(--ease),box-shadow .14s var(--ease)}.cm-input::placeholder{color:#94a3b8}.cm-input:focus{border-color:var(--primary);box-shadow:0 0 0 3px var(--primary-soft)}#name-prompt .cm-err{margin:6px 0 0;min-height:0}#name-prompt .cm-foot{margin-top:14px}.cm-foot{display:flex;align-items:center;gap:10px;margin-top:16px}.cm-status{flex:1;font-size:12px;color:#64748b;min-height:18px}.cm-btn{padding:8px 16px;border-radius:8px;font-size:13px;cursor:pointer;border:1px solid #cbd5e1;background:#fff;color:#334155;transition:all .14s var(--ease)}.cm-btn:hover{background:#f1f5f9}.cm-btn.primary{background:#2563eb;border-color:#2563eb;color:#fff}.cm-btn.primary:hover{background:#1d4ed8}.cm-btn.primary.danger{background:var(--danger);border-color:var(--danger)}.cm-btn.primary.danger:hover{background:#c93b3f;border-color:#c93b3f}.cm-btn.ghost{border-color:transparent;color:#64748b}.cm-btn.ghost:hover{background:#f1f5f9;color:#334155}.ledger-filters{display:flex;gap:6px;padding:0;flex-shrink:0;margin-bottom:6px;align-items:center;flex-wrap:wrap}.ledger-globalrule{display:flex;align-items:center;gap:4px;font-size:11px;color:var(--muted);white-space:nowrap;cursor:pointer}.ledger-globalrule input{cursor:pointer}.ledger-select{flex:1;min-width:0;border:1px solid var(--border);border-radius:7px;padding:6px 8px;font-size:11px;background:#fff;color:var(--text);cursor:pointer;transition:border-color .15s var(--ease),box-shadow .15s var(--ease)}.ledger-select:hover{border-color:#bfdbfe}.ledger-select:focus{outline:none;border-color:var(--primary);box-shadow:0 0 0 3px var(--primary-soft)}.ledger-wrap{flex:1;overflow-y:auto;min-height:200px;background:transparent;border:none;border-top:1px solid var(--line);border-radius:0;box-shadow:none}.ledger-head{display:grid;grid-template-columns:1.5fr .8fr 1.1fr;column-gap:10px;position:sticky;top:0;z-index:2;background:var(--panel);font-size:10px;color:var(--muted);font-weight:500;text-transform:uppercase;letter-spacing:.3px;padding:9px 12px;border-bottom:1px solid var(--border)}.ledger-head>span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ledger-list{position:relative;z-index:1}#path-ledger-tbody.ledger-list{position:relative}#path-ledger-tbody .ledger-row{position:absolute;left:0;right:0}#path-ledger-tbody .ledger-empty{position:absolute;top:0;left:0;right:0}.ledger-row{display:grid;grid-template-columns:1.5fr .8fr 1.1fr;column-gap:10px;align-items:center;padding:9px 12px;font-size:11.5px;line-height:1.5;border-bottom:1px solid #f1f5f9;box-sizing:border-box;transition:background .12s var(--ease)}.ledger-row:hover>span{color:var(--text)}.ledger-row:hover .mono{color:var(--primary);font-weight:500}.ledger-row.checked{background:var(--primary-soft)}.ledger-row>span{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ledger-row .mono{font-family:var(--font-mono)}.ledger-row .ledger-dim{color:var(--muted)}.ledger-empty{padding:32px 16px;text-align:center;font-size:11px;color:var(--muted);line-height:1.7}.ledger-stat{display:flex;justify-content:space-between;padding:6px 2px;font-size:10px;color:var(--muted);flex-shrink:0}.abc-badge{display:inline-block;padding:1px 8px;border-radius:9px;font-size:10px;font-weight:500}.ledger-wrap{scrollbar-width:thin;scrollbar-color:#cbd5e1 transparent}.ledger-wrap::-webkit-scrollbar{width:6px}.ledger-wrap::-webkit-scrollbar-track{background:transparent}.ledger-wrap::-webkit-scrollbar-thumb{background:#cbd5e1;border-radius:4px}.ledger-wrap::-webkit-scrollbar-thumb:hover{background:#94a3b8}.normal-panel,.route-list-wrap{scrollbar-width:none;-ms-overflow-style:none}.normal-panel::-webkit-scrollbar,.route-list-wrap::-webkit-scrollbar{width:0;height:0;display:none}.minimap{position:absolute;right:calc(var(--sr-edge) + var(--gap-md));bottom:50px;width:200px;height:150px;transition:right var(--dur-base) var(--ease);background:var(--surface)!important;border-radius:var(--r-lg);overflow:hidden;border:1px solid var(--line);box-shadow:var(--shadow-float);z-index:99999!important}#minimap-container{width:100%;height:100%}.minimap-close{position:absolute;top:4px;right:6px;z-index:2;width:18px;height:18px;line-height:18px;text-align:center;font-size:11px;color:#64748b;cursor:pointer;border-radius:5px;background:#ffffffd9;transition:background .15s var(--ease),color .15s var(--ease)}.minimap-close:hover{background:#fef2f2;color:#dc2626}.north-marker{position:fixed;z-index:45;width:62px;height:62px;top:calc(var(--h-header) + var(--gap-md));right:calc(var(--sr-edge) + var(--gap-md));background:transparent;border:none;cursor:pointer;transition:right var(--dur-base) var(--ease),opacity .15s var(--ease)}.north-marker.unset{opacity:.5}.north-marker:hover{opacity:1}.north-rose{width:100%;height:100%;display:block;user-select:none}.nr-needle-n{fill:var(--ink-secondary)}.nr-needle-s{fill:#cbd5e1}.north-marker.set .nr-needle-n,.north-marker:hover .nr-needle-n{fill:var(--primary)}.nr-c{text-anchor:middle;dominant-baseline:middle;font-family:var(--font-sans);font-size:13px;font-weight:500;fill:var(--ink-secondary);paint-order:stroke;stroke:var(--bg-canvas);stroke-width:3;stroke-linejoin:round}.north-popover{position:fixed;z-index:100002;width:200px;background:#fff;border:1px solid #e2e8f0;border-radius:12px;box-shadow:var(--shadow-float);padding:16px 14px 14px;display:flex;flex-direction:column;align-items:center;gap:12px;opacity:0;transform:scale(.96);transition:opacity .15s var(--ease),transform .15s var(--ease);pointer-events:none}.north-popover.show{opacity:1;transform:scale(1);pointer-events:auto}.north-popover[hidden]{display:none}.north-dial{position:relative;width:140px;height:140px;border-radius:50%;background:#fff;border:1px solid var(--border);flex-shrink:0;touch-action:none}.north-dial-rose{position:absolute;inset:0;width:100%;height:100%;pointer-events:none}.nd-ticks path{fill:none;stroke:var(--ink-muted);stroke-linecap:round}.nd-major path{stroke-width:2;stroke:var(--ink-secondary)}.nd-minor path{stroke-width:1.4}.nd-tiny path{stroke-width:.9;opacity:.5}.nd-c,.nd-o{text-anchor:middle;dominant-baseline:middle;font-family:var(--font-sans);paint-order:stroke;stroke:#fff;stroke-width:2.4;stroke-linejoin:round}.nd-c{font-size:9px;font-weight:600;fill:var(--ink-primary)}.nd-o{font-size:6px;font-weight:500;fill:var(--ink-muted)}.north-dial-arrow{position:absolute;left:50%;top:50%;width:7px;height:52px;background:#e11d48;transform-origin:50% 100%;transform:translate(-50%,-100%) rotate(0);clip-path:polygon(50% 0%,100% 26%,62% 26%,62% 100%,38% 100%,38% 26%,0% 26%);cursor:grab;filter:drop-shadow(0 1px 2px rgba(225,29,72,.35))}.north-dial-arrow:active{cursor:grabbing}.north-dial-center{position:absolute;left:50%;top:50%;width:9px;height:9px;border-radius:50%;background:#fff;border:2px solid #e11d48;transform:translate(-50%,-50%)}.nd-index{fill:var(--ink-primary)}.north-dial-foot{display:flex;flex-direction:column;align-items:center;gap:2px;user-select:none;pointer-events:none}.north-dial-readout{font-size:15px;font-weight:600;color:var(--ink-primary);font-family:var(--font-mono);line-height:1.1}.north-dial-hint{font-size:10px;color:var(--ink-muted);white-space:nowrap}.north-input-row{display:flex;align-items:center;gap:6px;font-size:12px;color:var(--muted-strong)}.north-input-row input{width:52px;border:1px solid var(--border);border-radius:6px;padding:5px 6px;font-size:12px;font-family:var(--font-mono);color:var(--text);text-align:center;outline:none;transition:border-color .15s var(--ease),box-shadow .15s var(--ease)}.north-input-row input:focus{border-color:var(--primary);box-shadow:0 0 0 3px var(--primary-soft)}.north-popover-actions{display:flex;gap:8px;width:100%}.north-popover-actions button{flex:1;font-size:11px;padding:7px 0}.mode-switcher-sep{width:1px;height:18px;background:var(--line);margin:0 6px;flex-shrink:0}@media(max-width:1460px){.mode-tab>span{display:none}.mode-tab{padding:6px 10px}.mode-switcher-sep{margin:0 3px}}.mode-tab-overview{color:var(--primary);font-weight:var(--fw-medium)}.mode-tab-overview.active,.mode-tab.mode-tab-overview.active{background:var(--primary);color:#fff;box-shadow:var(--shadow-float)}.mode-tab-overview.active .ic{color:#fff}body.ov-mode{--sr-edge: 0px}body.ov-mode .sl-wrap,body.ov-mode .sr,body.ov-mode .sr-handle{display:none!important}body.ov-mode .vp{cursor:grab}.pl-float{position:fixed;z-index:10001;width:max-content;min-width:300px;max-width:440px;display:flex;flex-direction:column;overflow:hidden;background:var(--surface);border:1px solid var(--line);border-radius:var(--r-lg);box-shadow:var(--shadow-float)}.pl-float[hidden]{display:none}.pl-float-h{flex:none;display:flex;align-items:center;gap:6px;padding:9px 8px 9px 12px;border-bottom:1px solid var(--line);font-size:12px;font-weight:var(--fw-medium);color:var(--ink-primary);user-select:none}.pl-float.is-collapsed .pl-float-h{border-bottom-color:transparent}.pl-float-h>.ic{width:14px;height:14px;color:var(--ink-muted)}.pl-float-toggle{margin-left:auto;flex:none;border:none;background:transparent;cursor:pointer;color:var(--ink-muted);padding:3px;line-height:0;border-radius:var(--r-sm);transition:color var(--dur-fast) var(--ease),background var(--dur-fast) var(--ease)}.pl-float-toggle:hover{color:var(--ink-primary);background:var(--surface-hover)}.pl-float-toggle .ic{width:14px;height:14px;transition:transform var(--dur-panel) var(--ease)}.pl-float.is-collapsed .pl-float-toggle .ic{transform:rotate(-90deg)}.pl-float-wrap{display:grid;grid-template-rows:1fr;min-height:0;transition:grid-template-rows var(--dur-panel) var(--ease),opacity var(--dur-panel) var(--ease)}.pl-float.is-collapsed .pl-float-wrap{grid-template-rows:0fr;opacity:0}.pl-float-inner{min-height:0;overflow:hidden;display:flex;flex-direction:column}.pl-float-play{flex:none;padding:10px 12px 4px;border-bottom:1px solid var(--line)}.pl-float-play .pick-sec-play{padding:0;margin:0;border-top:none}.pl-float-body{flex:1 1 auto;min-height:0;display:flex;flex-direction:column;overflow:hidden}.pl-float-body>.sr-tab-body{flex:1 1 auto;min-height:0}.ov-dock{position:fixed;z-index:10000;width:412px;max-width:calc(100vw - 24px);display:flex;flex-direction:column}.ov-tabs{flex:none;display:flex;align-items:stretch;gap:2px;padding:5px;cursor:grab;user-select:none;background:var(--surface);border:1px solid var(--line);border-radius:var(--r-lg) var(--r-lg) 0 0;border-bottom:none;box-shadow:var(--shadow-float)}.ov-tabs.dragging{cursor:grabbing}.ov-dock.is-collapsed .ov-tabs,.ov-dock.is-sim .ov-tabs{border-radius:var(--r-lg);border-bottom:1px solid var(--line);transition:border-radius var(--dur-base) var(--ease)}.ov-tabs{transition:border-radius var(--dur-panel) var(--ease)}.ov-slot-wrap{display:grid;grid-template-rows:1fr;min-height:0;transition:grid-template-rows var(--dur-panel) var(--ease),opacity var(--dur-panel) var(--ease)}.ov-dock.is-collapsed .ov-slot-wrap,.ov-dock.is-sim .ov-slot-wrap{grid-template-rows:0fr;opacity:0}.ov-slot-wrap>.ov-slot{min-height:0}.ov-navi{flex:1 1 0;min-width:0;border:none;background:transparent;cursor:pointer;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;padding:7px 2px;border-radius:var(--r-md);font-size:var(--fs-tool);color:var(--ink-secondary);line-height:1.2;white-space:nowrap;transition:background var(--dur-fast) var(--ease),color var(--dur-fast) var(--ease)}.ov-navi .ic{width:16px;height:16px}.ov-navi:hover{background:var(--surface-hover);color:var(--ink-primary)}.ov-navi.active{background:var(--ink-primary);color:#fff}.ov-navi.active .ic{color:#fff}.ov-tabs-sep{flex:none;width:1px;margin:6px 3px;background:var(--line)}body.ov-mode #route-toolbox{left:var(--gap-md);top:78px;transform:none;max-height:calc(100% - 90px)}.ov-slot{flex:1 1 auto;min-height:0;overflow-y:auto;scrollbar-width:thin;scrollbar-color:var(--border) transparent}.ov-dock .ov-card{border-radius:0 0 var(--r-lg) var(--r-lg);border-top:none}.ov-slot::-webkit-scrollbar{width:6px}.ov-slot::-webkit-scrollbar-track{background:transparent}.ov-slot::-webkit-scrollbar-thumb{background:var(--border);border-radius:999px}.ov-card{background:var(--surface);border:1px solid var(--line);border-radius:var(--r-lg);box-shadow:var(--shadow-float);padding:18px 20px 16px}.ov-note{font-size:10px;color:var(--ink-muted);line-height:1.6;margin-bottom:12px}.ov-sub-h{margin:18px 0 8px;padding-top:12px;border-top:1px solid var(--line);font-size:11px;font-weight:var(--fw-medium);color:var(--ink-muted);letter-spacing:.04em}.ov-sub-h.ov-sub-top{margin-top:0;padding-top:0;border-top:none}.ov-hero.ov-hero-top{margin-top:0}.ov-hero{display:flex;gap:12px;margin-top:14px}.ov-hero>div{flex:1;display:flex;flex-direction:column;gap:3px;min-width:0}.ov-hero b{font-size:27px;font-weight:500;color:var(--ink-primary);font-family:var(--font-mono);line-height:1.05;letter-spacing:-.02em}.ov-hero b i{font-style:normal;font-size:15px;color:var(--ink-secondary);margin-left:1px}.ov-hero span{font-size:10px;color:var(--ink-muted);white-space:nowrap}.ov-hero-sm b{font-size:22px}.ov-kpis{display:flex;gap:10px}.ov-kpi{flex:1;min-width:0;display:flex;flex-direction:column;gap:4px;background:var(--surface-hover);border-radius:var(--r-md);padding:10px 12px}.ov-kpi-k{font-size:10px;color:var(--ink-muted)}.ov-kpi-v{font-size:16px;font-weight:500;color:var(--ink-primary);font-family:var(--font-mono)}.ov-kpi-v i{font-style:normal;font-size:10px;color:var(--ink-muted);font-family:var(--font-sans)}.ov-todo{font-style:normal;font-size:12px;color:var(--ink-muted);font-family:var(--font-sans)}.ov-inputs{display:flex;flex-direction:column;gap:8px;margin-top:10px}.ov-in{display:flex;align-items:center;gap:8px;font-size:11px;color:var(--ink-secondary)}.ov-in>span{width:92px;flex-shrink:0}.ov-in input{flex:1;min-width:0;border:1px solid var(--line);border-radius:var(--r-sm);padding:6px 8px;font-size:11px;font-family:var(--font-mono);color:var(--ink-primary);background:var(--surface);outline:none;transition:border-color var(--dur-fast) var(--ease),box-shadow var(--dur-fast) var(--ease)}.ov-in input:focus{border-color:var(--primary);box-shadow:0 0 0 3px var(--primary-soft)}.ov-in em{width:62px;flex-shrink:0;text-align:right;font-style:normal;font-size:10px;color:var(--ink-muted);font-family:var(--font-mono)}.ov-sim-recap{display:flex;align-items:center;gap:8px;width:100%;margin-top:16px;padding:10px 12px;border:1px solid var(--line);border-radius:var(--r-md);background:var(--surface);cursor:pointer;text-align:left;transition:border-color var(--dur-fast) var(--ease),background var(--dur-fast) var(--ease)}.ov-sim-recap:hover{border-color:var(--primary);background:var(--primary-soft)}.ov-sim-recap.is-empty{cursor:default;background:var(--surface-hover);border-style:dashed}.ov-sim-k{font-size:10px;color:var(--ink-muted);flex-shrink:0}.ov-sim-v{flex:1;min-width:0;font-size:11px;color:var(--ink-primary);font-family:var(--font-mono)}.ov-sim-recap .ic{width:13px;height:13px;color:var(--ink-muted);transform:rotate(-90deg)}.ov-row{display:flex;align-items:center;gap:8px;font-size:11px;padding:3px 0}.ov-row-name{width:92px;flex-shrink:0;color:var(--ink-secondary);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ov-row-bar{flex:1;min-width:24px;height:6px;background:var(--surface-hover);border-radius:999px;overflow:hidden}.ov-row-bar>i{display:block;height:100%;background:var(--primary);border-radius:999px}.ov-row-val{width:62px;text-align:right;flex-shrink:0;color:var(--ink-primary);font-family:var(--font-mono)}.ov-row-pct{width:42px;text-align:right;flex-shrink:0;color:var(--ink-muted);font-family:var(--font-mono);font-size:10px}.ov-stack{display:flex;height:12px;border-radius:999px;overflow:hidden;background:var(--surface-hover)}.ov-stack-seg{background:var(--primary);height:100%}.ov-legend{display:flex;flex-wrap:wrap;gap:4px 14px;margin-top:10px}.ov-lg{display:inline-flex;align-items:center;gap:5px;font-size:10px;color:var(--ink-secondary)}.ov-lg>i{width:8px;height:8px;border-radius:2px;background:var(--primary);flex-shrink:0}.ov-empty-line{font-size:11px;color:var(--ink-muted);padding:8px 0}.ov-foot{margin-top:14px;padding-top:10px;border-top:1px solid var(--line);font-size:10px;color:var(--ink-muted);line-height:1.7}.route-goverify,.route-schema-toggle{margin-top:6px}.route-schema-toggle.off{opacity:.62}.route-schema-toggle.off .ic{opacity:.55}#clone-menu,#pillar-clone-menu{position:fixed;z-index:100001;width:190px;background:#fff;border:1px solid #e2e8f0;border-radius:10px;box-shadow:var(--shadow-float);padding:12px;display:flex;flex-direction:column;gap:9px}#clone-menu[hidden],#pillar-clone-menu[hidden]{display:none}.clone-menu-row{display:flex;align-items:center;justify-content:space-between;gap:8px}.clone-menu-lbl{font-size:11px;color:var(--muted-strong);white-space:nowrap}.clone-menu-row>input{width:56px;border:1px solid var(--border);border-radius:6px;padding:5px 7px;font-size:12px;font-family:var(--font-mono);color:var(--text);text-align:center;outline:none;transition:border-color .15s var(--ease),box-shadow .15s var(--ease)}.clone-menu-row>input:focus{border-color:var(--primary);box-shadow:0 0 0 3px var(--primary-soft)}#clone-go,#pillar-clone-go{margin-top:2px;background:var(--primary);color:#fff;border:none;border-radius:7px;padding:8px 0;font-size:12px;font-weight:500;cursor:pointer;transition:background .15s var(--ease)}#clone-go:hover,#pillar-clone-go:hover{background:#1d4ed8}.route-console{display:flex;flex-direction:column;flex:1;min-height:0;overflow:hidden}.route-hint{padding:12px 16px;background:var(--primary-soft);border-bottom:1px solid #dbeafe;font-size:11px;color:#1e3a8a;line-height:1.7}.route-list-wrap{flex:1;overflow-y:auto;padding:8px 10px}.route-list{display:flex;flex-direction:column;gap:5px}.route-empty{font-size:11px;color:var(--muted);text-align:center;padding:14px}.route-item{display:flex;align-items:center;gap:8px;border:1px solid var(--border);border-radius:8px;background:#fff;padding:7px 10px;cursor:grab;transition:box-shadow .15s var(--ease)}.route-item:hover{box-shadow:0 2px 8px #2563eb1a}.route-item.dragging{opacity:.5}.route-item.drag-over{border-color:var(--primary);background:var(--primary-soft)}.route-item.hot{border-color:var(--accent);background:var(--accent-bg);box-shadow:0 2px 8px #2e6be629}.route-edit-toggle{background:var(--accent-bg);color:var(--accent);border-color:var(--accent)}.route-edit-toggle:hover{background:#dde9fd}.route-edit-toggle.editing{background:var(--accent);color:#fff;border-color:var(--accent)}.route-edit-toggle.editing:hover{background:#2359c9}#route-tab-picklist{padding:0;display:flex;flex-direction:column}.picklist-scroll{flex:1;min-height:0;display:flex;flex-direction:column;overflow:hidden}.picklist-head,.picklist-row{display:grid;grid-template-columns:15px var(--pl-w-code, 70px) var(--pl-w-sort, 56px) 16px 34px 44px;justify-content:start;gap:10px;align-items:center;padding:6px 10px;font-size:10px}.picklist-head{color:var(--ink-muted);font-size:9px;letter-spacing:.2px;border-bottom:1px solid var(--line);flex-shrink:0}.picklist-body{flex:1;min-height:0;overflow-y:auto;overflow-x:hidden}.picklist-empty{padding:24px 14px;text-align:center;font-size:11px;color:var(--ink-muted)}.picklist-row{border-bottom:1px solid var(--line);transition:background var(--dur-fast) var(--ease)}.picklist-row .pl-no{color:var(--ink-muted)}.picklist-row .pl-code,.picklist-row .pl-sort{white-space:nowrap}.picklist-row.active{background:var(--accent-bg)}.picklist-row.unreachable{background:#e5484d14}.picklist-row.unreachable .pl-code{color:var(--danger)}.picklist-row:hover{background:var(--surface-hover)}.pl-seg.backtrack{color:var(--danger);font-weight:var(--fw-medium)}.pl-ic{display:inline-block;width:13px;height:13px;border-radius:50%;box-sizing:border-box;line-height:13px;text-align:center}.pl-ic.pending{border:1.5px solid var(--ink-muted)}.pl-ic.active{background:var(--accent);box-shadow:0 0 #2e6be680;animation:pl-pulse 1.1s infinite}.pl-ic.done{color:#16a34a;font-size:12px;font-weight:700}@keyframes pl-pulse{0%{box-shadow:0 0 #2e6be680}70%{box-shadow:0 0 0 5px #2e6be600}to{box-shadow:0 0 #2e6be600}}#pick-metrics{position:fixed;bottom:56px;left:calc((100vw - var(--sr-edge)) / 2);transform:translate(-50%);z-index:100000;pointer-events:none;background:var(--surface);border:1px solid var(--line);border-radius:var(--r-lg);box-shadow:var(--shadow-float);padding:12px 20px 10px;min-width:520px}#pick-metrics[hidden]{display:none}.pm-row{display:flex;align-items:flex-end;justify-content:center;gap:28px}.pm-card{text-align:center;min-width:62px}.pm-card b{display:block;font-size:20px;line-height:1.1;font-weight:var(--fw-medium);color:var(--ink-primary);font-family:var(--font-mono)}.pm-card b i{font-style:normal;font-size:11px;color:var(--ink-muted);margin-left:2px}.pm-card span{display:block;font-size:10px;color:var(--ink-muted);margin-top:4px}.pm-sub{margin-top:10px;padding-top:9px;border-top:1px solid var(--line)}.pm-bar{display:flex;height:4px;border-radius:2px;overflow:hidden;background:var(--line)}.pm-bar .walk{background:var(--accent)}.pm-bar .pick{background:#16a34a}.pm-legend{display:flex;align-items:center;justify-content:center;gap:18px;margin-top:7px;font-size:10.5px;color:var(--ink-secondary)}.pm-legend .dot{display:inline-block;width:6px;height:6px;border-radius:50%;margin-right:5px}.pm-legend .dot.walk{background:var(--accent)}.pm-legend .dot.pick{background:#16a34a}.pm-legend .warn{color:var(--danger)}.pick-sec-phys #phys-list{display:flex;flex-direction:column;gap:2px}.phys-group+.phys-group{margin-top:8px;padding-top:8px;border-top:1px solid var(--line)}.phys-gt{font-size:9px;color:var(--ink-muted);letter-spacing:.4px;padding:0 2px 4px}.phys-row{padding:5px 2px}.phys-row+.phys-row{border-top:1px dashed var(--line)}.phys-top{display:flex;align-items:center;gap:4px}.phys-k{flex:1;min-width:0;font-size:11px;color:var(--ink-secondary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.phys-v{width:44px;flex-shrink:0;text-align:right;border:1px solid var(--line);border-radius:var(--r-sm);padding:2px 4px;font-size:11px;font-family:var(--font-mono);color:var(--ink-primary);background:var(--surface);outline:none}.phys-v.on{border-color:#bbf7d0}.phys-v:focus{border-color:var(--primary);box-shadow:0 0 0 3px var(--primary-soft)}.phys-u{font-style:normal;font-size:9px;color:var(--ink-muted);width:26px;flex-shrink:0}.phys-cal{flex-shrink:0;border:1px solid var(--line);background:var(--surface);color:var(--ink-secondary);border-radius:var(--r-sm);padding:2px 5px;font-size:9px;white-space:nowrap;cursor:pointer;transition:color var(--dur-fast) var(--ease),border-color var(--dur-fast) var(--ease)}.phys-cal:hover{color:var(--primary);border-color:var(--primary)}.phys-method{margin-top:3px;display:flex;align-items:center;gap:5px;font-size:8.5px;color:var(--ink-muted);line-height:1.5;white-space:nowrap;overflow:hidden}.phys-m-txt{min-width:0;overflow:hidden;text-overflow:ellipsis;opacity:.85}.phys-badge{flex-shrink:0;display:inline-flex;align-items:center;gap:3px;font-size:8.5px;color:#16a34a;white-space:nowrap}.phys-badge>i{width:5px;height:5px;border-radius:50%;background:#16a34a;flex-shrink:0}.pm-basis{margin-top:9px;padding-top:8px;border-top:1px solid var(--line);pointer-events:auto}.pm-basis>summary{list-style:none;cursor:pointer;display:inline-flex;align-items:center;gap:4px;font-size:10px;color:var(--ink-muted)}.pm-basis>summary::-webkit-details-marker{display:none}.pm-basis>summary:hover{color:var(--primary)}.pm-basis>summary .ic{width:11px;height:11px;transition:transform var(--dur-fast) var(--ease)}.pm-basis[open]>summary .ic{transform:rotate(180deg)}.pm-basis-body{margin-top:8px}.pb-line{font-size:10.5px;color:var(--ink-primary);line-height:1.9;font-family:var(--font-mono)}.pb-line b{font-weight:500}.pb-line.pb-sub{color:var(--ink-secondary);padding-left:12px;font-size:10px}.pb-chips{display:flex;flex-wrap:wrap;gap:5px;margin-top:8px}.pb-chip{display:inline-flex;align-items:center;gap:4px;border:1px solid var(--line);border-radius:999px;padding:2px 8px;font-size:9px;color:var(--ink-muted);font-family:var(--font-mono)}.pb-chip>i{width:5px;height:5px;border-radius:50%;background:var(--border)}.pb-chip.on{color:#16a34a;border-color:#bbf7d0}.pb-chip.on>i{background:#16a34a}.pb-credit{margin-top:8px;font-size:9.5px;color:var(--ink-muted)}.pb-credit.on{color:#16a34a}.pb-credit em{font-style:normal;color:var(--ink-muted)}.cal-mask{position:fixed;inset:0;z-index:100010;background:#0f172a47;display:flex;align-items:center;justify-content:center}.cal-mask[hidden]{display:none}.cal-dlg{width:340px;background:var(--surface);border:1px solid var(--line);border-radius:var(--r-lg);box-shadow:var(--shadow-float);padding:18px 20px 16px}.cal-h{display:flex;align-items:center;justify-content:space-between;font-size:13px;font-weight:var(--fw-medium);color:var(--ink-primary)}.cal-x{border:none;background:transparent;cursor:pointer;color:var(--ink-muted);padding:2px;line-height:0}.cal-x:hover{color:var(--ink-primary)}.cal-x .ic{width:14px;height:14px}.cal-method{margin-top:8px;font-size:10px;color:var(--ink-muted)}.cal-howto{margin-top:10px;padding:9px 11px;background:var(--surface-hover);border-radius:var(--r-md);font-size:11px;color:var(--ink-secondary);line-height:1.7}.cal-row{display:flex;align-items:center;gap:8px;margin-top:10px;font-size:11px;color:var(--ink-secondary)}.cal-row>span{width:78px;flex-shrink:0}.cal-row input{flex:1;min-width:0;border:1px solid var(--line);border-radius:var(--r-sm);padding:6px 8px;font-size:12px;color:var(--ink-primary);background:var(--surface);outline:none}.cal-row input:focus{border-color:var(--primary);box-shadow:0 0 0 3px var(--primary-soft)}.cal-row em{font-style:normal;font-size:10px;color:var(--ink-muted);width:34px;flex-shrink:0}.cal-hint{margin-top:10px;font-size:10px;color:var(--ink-muted);line-height:1.7}.cal-acts{display:flex;justify-content:flex-end;gap:8px;margin-top:14px}.cal-btn{border:1px solid var(--line);background:var(--surface);color:var(--ink-secondary);border-radius:var(--r-md);padding:7px 16px;font-size:12px;cursor:pointer}.cal-btn:hover{color:var(--ink-primary)}.cal-btn.primary{background:var(--primary);border-color:var(--primary);color:#fff}.cal-btn.primary:hover{filter:brightness(1.06);color:#fff}.roi-stat-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:6px;padding:4px 12px 2px}.roi-stat{background:var(--surface-hover);border:none;border-radius:var(--r-md);padding:8px 4px;text-align:center}.roi-stat b{display:block;font-size:15px;color:var(--text);font-family:var(--font-mono)}.roi-stat span{display:block;font-size:9px;color:var(--muted);margin-top:2px}.roi-note{padding:6px 12px 2px;font-size:9.5px;color:var(--muted);line-height:1.5}.route-num{width:20px;height:20px;border-radius:50%;background:var(--primary);color:#fff;font-weight:500;font-size:11px;display:flex;align-items:center;justify-content:center;flex-shrink:0}.route-code{font-family:var(--font-mono);font-weight:500;font-size:12px;flex:1}.route-arrow{font-size:18px;color:var(--primary);flex-shrink:0}.preset-modal-overlay{position:fixed;inset:0;z-index:20000;display:flex;align-items:center;justify-content:center;background:#0f172a59}.preset-modal-overlay[hidden]{display:none}.preset-modal{width:300px;background:#fff;border-radius:12px;padding:18px;box-shadow:var(--shadow-float);display:flex;flex-direction:column;gap:12px}.preset-modal-title{font-size:14px;font-weight:500;color:var(--text)}.preset-field{display:flex;flex-direction:column;gap:4px}.preset-field>span{font-size:11px;color:var(--muted-strong)}.preset-field>input{border:1px solid var(--border);border-radius:6px;padding:7px 9px;font-size:12px;font-family:var(--font-mono);color:var(--text);outline:none;transition:border-color .15s var(--ease),box-shadow .15s var(--ease)}.preset-field>input:focus{border-color:var(--primary);box-shadow:0 0 0 3px var(--primary-soft)}.preset-modal-actions{display:flex;justify-content:flex-end;gap:8px;margin-top:2px}.preset-btn{border-radius:6px;padding:7px 16px;font-size:12px;cursor:pointer;border:1px solid transparent;transition:all .15s var(--ease)}.preset-btn-ghost{background:transparent;border-color:var(--border);color:var(--muted-strong)}.preset-btn-ghost:hover{background:#f1f5f9;color:var(--text)}.preset-btn-primary{background:var(--primary);color:#fff}.preset-btn-primary:hover{background:#1d4ed8}.preset-empty{font-size:9px;color:var(--muted);padding:4px 2px 6px;text-align:center}#canvas-tooltip{position:fixed;left:0;top:0;z-index:100000;pointer-events:none;transform:translate(-50%,-100%);background:#fff;border:1px solid #bfdbfe;color:#1e293b;font-family:var(--font-mono);font-weight:500;font-size:12px;padding:6px 10px;border-radius:8px;white-space:nowrap;box-shadow:var(--shadow-float);opacity:0;transition:opacity .18s var(--ease)}#canvas-tooltip.show{opacity:1}#app-toast{position:fixed;top:72px;left:50%;z-index:100012;pointer-events:none;transform:translate(-50%) translateY(-12px);background:#1e293b;color:#f1f5f9;border:1px solid #334155;display:flex;align-items:center;gap:var(--gap-sm);font-size:var(--fs-body);font-weight:var(--fw-medium);padding:11px 18px;border-radius:var(--r-md);box-shadow:var(--shadow-float);white-space:nowrap;max-width:90vw;opacity:0;transition:opacity .25s var(--ease),transform .25s var(--ease)}#app-toast.show{opacity:1;transform:translate(-50%) translateY(0)}#app-toast.warn,#app-toast.danger{background:#fef2f2;color:#b91c1c;border-color:#fecaca;box-shadow:var(--shadow-float)}#lodp-backdrop{position:fixed;inset:0;z-index:100010;background:#11182747;display:none;align-items:center;justify-content:center}#lodp-backdrop.show{display:flex}.lodp-modal{width:min(920px,92vw);height:min(640px,86vh);background:var(--surface);border:1px solid var(--line);border-radius:var(--r-lg);box-shadow:var(--shadow-float);display:flex;flex-direction:column;overflow:hidden}.lodp-header{flex-shrink:0;display:flex;align-items:center;justify-content:space-between;padding:var(--gap-md) var(--gap-lg);border-bottom:1px solid var(--line)}.lodp-title{font-size:var(--fs-title);font-weight:var(--fw-medium);color:var(--ink-primary)}.lodp-subtitle{font-size:var(--fs-mini);color:var(--ink-muted);margin-top:2px}.lodp-close{width:28px;height:28px;border:none;background:transparent;border-radius:var(--r-sm);color:var(--ink-secondary);cursor:pointer;display:flex;align-items:center;justify-content:center}.lodp-close:hover{background:var(--surface-hover);color:var(--ink-primary)}.lodp-close .ic{width:16px;height:16px}.lodp-body{flex:1;min-height:0;display:flex}.lodp-nav{width:208px;flex-shrink:0;border-right:1px solid var(--line);display:flex;flex-direction:column;padding:var(--gap-md) var(--gap-sm);overflow-y:auto}.lodp-search{padding:0 var(--gap-xs) var(--gap-sm)}.lodp-search input{width:100%;border:1px solid var(--line);border-radius:var(--r-sm);padding:6px 10px;font-size:var(--fs-mini);color:var(--ink-primary);background:var(--bg-canvas)}.lodp-search input:focus{outline:none;border-color:var(--accent);background:var(--surface)}.lodp-cat{display:flex;align-items:center;gap:var(--gap-sm);padding:8px 10px;border-radius:var(--r-md);border:none;background:transparent;color:var(--ink-secondary);font-size:var(--fs-mini);cursor:pointer;text-align:left;transition:background var(--dur-fast) var(--ease),color var(--dur-fast) var(--ease)}.lodp-cat:hover{background:var(--surface-hover);color:var(--ink-primary)}.lodp-cat.active{background:var(--ink-primary);color:#fff}.lodp-cat .ic{width:16px;height:16px;flex-shrink:0}.lodp-cat-label{flex:1}.lodp-cat-hit{font-size:9px;min-width:16px;height:16px;padding:0 4px;border-radius:var(--r-pill);background:var(--accent-bg);color:var(--accent);display:flex;align-items:center;justify-content:center}.lodp-cat.active .lodp-cat-hit{background:#fff3;color:#fff}.lodp-detail{flex:1;min-width:0;overflow-y:auto;padding:var(--gap-lg)}.lodp-detail-header{display:flex;align-items:baseline;justify-content:space-between;margin-bottom:var(--gap-md)}.lodp-detail-title{font-size:var(--fs-title);font-weight:var(--fw-medium);color:var(--ink-primary)}.lodp-cat-reset{border:none;background:transparent;color:var(--ink-muted);font-size:var(--fs-mini);cursor:pointer;padding:4px 8px;border-radius:var(--r-sm)}.lodp-cat-reset:hover{background:var(--surface-hover);color:var(--ink-secondary)}.lodp-row{display:flex;align-items:center;gap:var(--gap-md);padding:12px 4px;border-bottom:1px solid var(--line)}.lodp-row:last-child{border-bottom:none}.lodp-row-main{flex:1;min-width:0}.lodp-row-label{font-size:var(--fs-body);color:var(--ink-primary);font-weight:var(--fw-medium)}.lodp-row-desc{font-size:var(--fs-mini);color:var(--ink-muted);margin-top:2px;line-height:1.5}.lodp-row-ctrl{flex-shrink:0;display:flex;align-items:center;gap:var(--gap-sm)}.lodp-slider-wrap{display:flex;align-items:center;gap:10px;width:200px}.lodp-slider{-webkit-appearance:none;appearance:none;flex:1;height:4px;border-radius:2px;background:var(--line);outline:none;cursor:pointer}.lodp-slider::-webkit-slider-thumb{-webkit-appearance:none;appearance:none;width:16px;height:16px;border-radius:50%;background:var(--accent);border:2px solid #fff;box-shadow:0 1px 4px #11182740;cursor:pointer}.lodp-slider::-moz-range-thumb{width:16px;height:16px;border-radius:50%;background:var(--accent);border:2px solid #fff;box-shadow:0 1px 4px #11182740;cursor:pointer}.lodp-slider-val{min-width:40px;text-align:right;font-size:var(--fs-mini);font-family:var(--font-mono, monospace);color:var(--accent);font-weight:var(--fw-medium)}.lodp-num-wrap{display:flex;align-items:center;gap:6px}.lodp-num-wrap input{width:64px;border:1px solid var(--line);border-radius:var(--r-sm);padding:5px 8px;font-size:var(--fs-mini);font-family:var(--font-mono, monospace);color:var(--ink-primary);text-align:right}.lodp-num-wrap input:focus{outline:none;border-color:var(--accent)}.lodp-num-unit{font-size:var(--fs-mini);color:var(--ink-muted)}.lodp-reset-btn{width:26px;height:26px;border:none;background:transparent;border-radius:var(--r-sm);color:var(--ink-muted);cursor:pointer;display:flex;align-items:center;justify-content:center;flex-shrink:0;position:relative}.lodp-reset-btn:hover{background:var(--surface-hover);color:var(--accent)}.lodp-reset-btn .ic{width:14px;height:14px}.lodp-reset-btn[disabled]{opacity:.3;cursor:default;pointer-events:none}.lodp-row.locked{opacity:.68}.lodp-lock-badge{display:flex;align-items:center;gap:4px;padding:4px 10px;border-radius:var(--r-pill);background:var(--surface-hover);color:var(--ink-muted);font-size:var(--fs-mini);cursor:help}.lodp-lock-badge .ic{width:12px;height:12px}.lodp-readonly-badge{padding:4px 10px;border-radius:var(--r-pill);background:var(--accent-bg);color:var(--accent);font-size:var(--fs-mini)}.lodp-empty{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:60px 0;color:var(--ink-muted);font-size:var(--fs-mini);gap:var(--gap-sm)}.lodp-footer{flex-shrink:0;display:flex;justify-content:flex-end;gap:var(--gap-sm);padding:var(--gap-md) var(--gap-lg);border-top:1px solid var(--line)}.lodp-btn-danger-ghost{border:1px solid var(--line);background:transparent;color:var(--ink-secondary);font-size:var(--fs-mini);padding:7px 14px;border-radius:var(--r-sm);cursor:pointer}.lodp-btn-danger-ghost:hover{border-color:var(--danger);color:var(--danger);background:#fef2f2}.rz-row{display:flex;align-items:center;gap:8px;padding:8px 12px;border-bottom:1px solid var(--line);cursor:pointer;font-size:12px;color:var(--text);transition:background var(--dur-fast) var(--ease)}.rz-row:hover{background:var(--surface-hover)}.rz-row.open{background:var(--accent-bg)}.rz-row.dragging{opacity:.4}.rz-row.drag-over{box-shadow:inset 0 2px 0 var(--accent)}.rz-grip{color:var(--ink-muted);font-size:11px;cursor:grab}.rz-name{font-weight:500}.rz-meta{color:var(--muted);font-size:11px;margin-left:auto}.rz-state{font-size:10.5px;color:var(--ink-muted)}.rz-state.ok{color:#16a34a}.rz-sub{padding:4px 0 6px 14px;border-bottom:1px solid var(--line);background:#fcfcfd}.rz-warn{color:var(--warn);font-size:12px;cursor:help;margin-left:2px}.rz-floor{font-size:9px;color:var(--ink-muted);background:var(--surface-hover);border-radius:var(--r-pill);padding:1px 5px;flex-shrink:0}.rz-sub{max-height:46vh;overflow-y:auto}.rz-wh{padding:8px 12px 10px;border-top:1px solid var(--line)}.rz-wh-title{font-size:10px;color:var(--ink-muted);margin-bottom:5px}.rz-wh-item{font-size:11px;color:var(--muted);font-family:var(--font-mono);padding:2px 0;opacity:.8}.lodp-canvas-flash{position:fixed;z-index:99998;pointer-events:none;border-radius:var(--r-md);border:2px solid var(--accent);background:#2e6be614;opacity:0;transition:opacity .5s ease-out}.eff-overview{padding:6px 12px 12px;font-size:11.5px;color:var(--muted);font-weight:500;border-bottom:1px solid var(--line);margin-bottom:14px}.eff-ruler{--eff-hdr-h: 34px;--eff-foot-h: 34px}.eff-ruler-row{display:flex;height:var(--eff-hdr-h);padding:6px 0 4px}.eff-ruler-row.is-head{align-items:flex-end}.eff-ruler-row.is-foot{align-items:flex-start;height:var(--eff-foot-h)}.eff-rowpad{flex:none}.eff-rowpad-head{height:var(--eff-hdr-h)}.eff-rowpad-foot{height:var(--eff-foot-h)}.eff-ruler-fixed{display:flex;flex-direction:column;flex:none}.eff-fixed-mid{display:flex}.eff-ruler-scroll{flex:1 1 auto;min-width:0;overflow-x:auto;overflow-y:hidden;padding-bottom:6px;scrollbar-width:thin;scrollbar-color:var(--border) transparent;overscroll-behavior-x:contain}.eff-ruler-track{width:max-content}.eff-ruler-scroll::-webkit-scrollbar{height:6px}.eff-ruler-scroll::-webkit-scrollbar-track{background:transparent}.eff-ruler-scroll::-webkit-scrollbar-thumb{background:var(--border);border-radius:999px;transition:background .15s var(--ease)}.eff-ruler-scroll:hover::-webkit-scrollbar-thumb{background:var(--muted)}.eff-ruler-scroll::-webkit-scrollbar-thumb:hover{background:var(--ink-secondary)}.eff-col-header{text-align:center;font-size:10px;color:var(--muted);line-height:1.25;overflow:hidden;display:flex;flex-direction:column;align-items:center}.eff-col-header>.eff-col-x{color:var(--ink-muted);font-family:var(--font-mono)}.eff-col-header{flex-direction:row;flex-wrap:wrap;justify-content:center;column-gap:1px}.eff-col-h{font-size:9px;color:var(--ink-muted);font-family:var(--font-mono);flex:0 0 100%;text-align:center}.eff-ruler-body{display:flex;padding:0 12px 0 0}.eff-axis{position:relative;flex-shrink:0;border-right:1px solid var(--border)}.eff-axis-tick{position:absolute;right:0;transform:translateY(50%);display:flex;align-items:center;gap:3px;pointer-events:none}.eff-axis-tick span{font-size:9px;color:var(--muted);font-family:var(--font-mono);line-height:1}.eff-axis-tick i{width:4px;height:1px;background:var(--border);display:block}.eff-human{position:relative;flex-shrink:0;display:flex;align-items:flex-end;justify-content:center}.eff-human-fig{display:block;flex:none;object-fit:contain;pointer-events:none;user-select:none;mix-blend-mode:multiply}.eff-human-tag{position:absolute;left:0;transform:translateY(-50%);font-size:9px;line-height:1;font-family:var(--font-mono);color:var(--muted);pointer-events:none;white-space:nowrap}.eff-plot{position:relative;flex:1}.eff-gridline{position:absolute;left:0;right:0;height:0;border-top:1px dashed var(--border);pointer-events:none}.eff-cols-row{display:flex;align-items:flex-end;height:100%;position:relative}.eff-col-wrap{display:flex;flex-direction:column;justify-content:flex-end;height:100%}.eff-pillar{display:flex;flex-direction:column;background:var(--surface-hover);border:1px solid var(--border);border-bottom:none;border-radius:3px 3px 0 0;overflow:hidden}.eff-ruler-cell{border:none;border-bottom:1px solid var(--border);background:transparent;cursor:pointer;font-family:var(--font-mono);font-weight:500;display:flex;align-items:center;justify-content:center;line-height:1;padding:0;overflow:hidden;transition:filter .12s var(--ease)}.eff-ruler-cell:last-child{border-bottom:none}.eff-ruler-cell:hover{filter:brightness(.94)}.eff-col-selectall{border:1px solid var(--border);background:#f8fafc;border-radius:6px;padding:3px 0;font-size:10px;cursor:pointer;color:var(--text);transition:all .15s var(--ease)}.eff-col-selectall:hover{background:var(--primary-soft);border-color:#bfdbfe;color:var(--primary)}.eff-recap{padding:10px 12px 6px;margin-top:10px;border-top:1px solid var(--line);font-size:11px;color:var(--muted);line-height:1.5}.eff-level-row-global{display:flex;gap:6px;padding:0 12px 12px}.eff-level-btn-g{flex:1;text-align:center;border:1px solid var(--border);background:#fff;border-radius:6px;padding:7px 4px;font-size:11px;font-weight:500;cursor:pointer;transition:filter .15s var(--ease)}.eff-level-btn-g:hover{filter:brightness(.97)}.eff-level-btn-g.is-none{color:var(--muted);border-style:dashed;border-color:var(--border);background:var(--surface-hover)}.eff-level-btn-g.is-none:hover{color:var(--ink-secondary);border-color:var(--muted);background:#f1f5f9}.lodp-canvas-flash.on{opacity:1;transition:opacity .05s ease-in}#dev-toolbox{width:76px}#dev-toolbox .tc{cursor:grab}#dev-toolbox .tc:active{cursor:grabbing}#dev-toolbox .tc:hover{background:var(--surface-hover)}#dev-toolbox .tc.active-tool{background:var(--accent-bg);color:var(--accent)}#dev-list-body,#dev-param-body{display:block}.dev-sec-t{display:flex;align-items:baseline;justify-content:space-between;font-size:var(--fs-tool);font-weight:var(--fw-medium);color:var(--ink-muted);letter-spacing:.4px;margin-bottom:var(--gap-sm)}.dev-sec-x{font-size:10px;font-weight:400;color:var(--ink-muted);letter-spacing:0}.dev-sec-t2{margin-top:16px;padding-top:12px;border-top:1px solid var(--line)}.dev-empty{font-size:11px;line-height:1.7;color:var(--ink-muted);text-align:center;padding:16px 10px;background:var(--bg-canvas);border-radius:var(--r-md)}.dev-list{display:flex;flex-direction:column;gap:var(--gap-sm)}.dev-card{background:var(--surface);border:1px solid var(--line);border-radius:var(--r-md);padding:8px 9px;cursor:pointer}.dev-card:hover{border-color:var(--ink-muted)}.dev-card-off{opacity:.62}.dev-card-on{border-color:var(--accent);background:var(--accent-bg)}.dev-card-top{display:flex;align-items:center;gap:6px}.dev-card-nm{flex:1;min-width:0;font-size:12px;font-weight:var(--fw-medium);color:var(--ink-primary)}.dev-card-sub{margin-top:4px;font-size:10px;color:var(--ink-secondary)}.dev-kv{margin-top:6px;padding-top:6px;border-top:1px solid var(--line);display:flex;flex-direction:column;gap:3px}.dev-kv-r{display:flex;align-items:baseline;justify-content:space-between;gap:8px;font-size:10px}.dev-kv-r>span{color:var(--ink-muted);white-space:nowrap}.dev-kv-r>b{font-weight:var(--fw-medium);color:var(--ink-primary);text-align:right}.dev-qty-txt{flex:none;font-size:11px;font-weight:var(--fw-medium);color:var(--ink-primary);padding:2px 7px;border-radius:999px;background:var(--surface-hover)}.dev-del{flex:none;width:20px;height:20px;border:none;background:transparent;color:var(--ink-muted);cursor:pointer;border-radius:4px;font-size:12px;line-height:1}.dev-del:hover{background:#fdecec;color:var(--danger)}.dev-diag{margin-bottom:6px;padding:8px 9px;cursor:pointer;background:var(--surface);border:1px solid var(--line);border-left:3px solid var(--line);border-radius:var(--r-md)}.dev-diag:hover{background:var(--surface-hover)}.dev-diag-on{border-color:var(--accent);background:var(--accent-bg)}.dev-diag-bad{border-left-color:var(--danger)}.dev-diag-warn{border-left-color:var(--warn)}.dev-diag-ok{border-left-color:#3fa45b}.dev-diag-n{font-size:17px;font-weight:var(--fw-medium);color:var(--ink-primary);line-height:1.2}.dev-diag-n span{font-size:10px;font-weight:400;color:var(--ink-muted)}.dev-diag-d{margin-top:3px;font-size:10px;line-height:1.6;color:var(--ink-secondary)}.dev-diag-d b{color:var(--ink-primary);font-weight:var(--fw-medium)}.dev-note{font-size:9px;line-height:1.6;color:var(--ink-muted);margin-top:6px}.dev-ai{margin-top:12px;padding-top:12px;border-top:1px solid var(--line)}.dev-ai-btn{width:100%;padding:7px;font-size:11px;cursor:pointer;color:var(--accent);background:var(--accent-bg);border:1px solid transparent;border-radius:var(--r-md)}.dev-ai-btn:hover:not(:disabled){border-color:var(--accent)}.dev-ai-btn:disabled{cursor:default;color:var(--ink-muted);background:var(--surface-hover)}.dev-ai-text:not(:empty){margin-top:8px;padding:8px;font-size:11px;line-height:1.75;color:var(--ink-secondary);background:var(--bg-canvas);border-radius:var(--r-md);white-space:pre-wrap}.dev-ai-err{margin-top:8px;font-size:10px;line-height:1.6;color:var(--danger)}.dev-ph{padding-bottom:10px;border-bottom:1px solid var(--line);margin-bottom:10px}.dev-ph-nm{font-size:13px;font-weight:var(--fw-medium);color:var(--ink-primary)}.dev-ph-nm span{margin-left:6px;font-size:10px;font-weight:400;color:var(--ink-muted)}.dev-ph-sc{margin-top:4px;font-size:10px;line-height:1.7;color:var(--ink-secondary)}.dev-ro{margin-bottom:10px;padding:8px;border-radius:var(--r-md);font-size:10px;line-height:1.6;color:var(--warn);background:#fdf6ec}.dev-pf{display:flex;flex-direction:column;gap:10px}.dev-pfield{display:flex;flex-direction:column;gap:4px}.dev-pfl{font-size:11px;color:var(--ink-secondary);display:flex;align-items:center;gap:5px}.dev-pfl i{font-style:normal;font-size:9px;padding:1px 5px;border-radius:999px;color:var(--accent);background:var(--accent-bg)}.dev-psel{width:100%;padding:5px 7px;font-size:12px;color:var(--ink-primary);background:var(--surface);border:1px solid var(--line);border-radius:4px;cursor:pointer}.dev-psel:focus{outline:none;border-color:var(--accent)}.dev-psel:disabled{cursor:default;color:var(--ink-muted);background:var(--surface-hover)}.dev-pfield-key .dev-psel{border-color:var(--accent)}.dev-pfh{font-size:9px;line-height:1.6;color:var(--ink-muted)}.bell-btn{position:relative}.bell-btn.bell-on{background:var(--accent-bg);color:var(--accent)}.bell-btn.bell-on .ic{color:var(--accent)}.bell-num{position:absolute;top:-3px;right:-3px;min-width:14px;height:14px;padding:0 3px;border-radius:999px;background:var(--danger);color:#fff;font-size:9px;line-height:14px;text-align:center;font-weight:var(--fw-medium);box-shadow:0 0 0 2px var(--surface);pointer-events:none;letter-spacing:0}.bell-btn.bell-on:after{content:"";position:absolute;inset:-2px;border-radius:var(--r-md);border:1.5px solid var(--accent);opacity:0;animation:bellPulse 1.6s ease-out 3}@keyframes bellPulse{0%{opacity:.55;transform:scale(1)}to{opacity:0;transform:scale(1.22)}}.mc-mask{position:fixed;inset:0;z-index:100010;display:flex;align-items:center;justify-content:center;background:#0f141e6b;opacity:0;transition:opacity .18s;padding:24px}.mc-mask.show{opacity:1}.mc-win{width:1000px;max-width:100%;height:640px;max-height:calc(100vh - 48px);background:var(--surface);border-radius:14px;box-shadow:0 24px 70px #131d6b2e;display:flex;flex-direction:column;overflow:hidden;transform:translateY(10px) scale(.985);transition:transform .18s}.mc-mask.show .mc-win,.mc-mask.show .mc-force{transform:none}.mc-hd{display:flex;align-items:center;gap:var(--gap-lg);flex:none;padding:0 14px 0 20px;height:56px;border-bottom:1px solid var(--line)}.mc-title{font-size:16px;font-weight:var(--fw-medium);flex:none}.mc-tabs{display:flex;gap:2px;flex:1;align-self:stretch}.mc-tab{position:relative;border:none;background:none;cursor:pointer;padding:0 14px;font-size:var(--fs-tool);color:var(--ink-secondary);display:inline-flex;align-items:center;gap:6px}.mc-tab:hover{color:var(--ink-primary)}.mc-tab.on{color:var(--accent);font-weight:var(--fw-medium)}.mc-tab.on:after{content:"";position:absolute;left:14px;right:14px;bottom:-1px;height:2px;background:var(--accent);border-radius:2px 2px 0 0}.mc-tab i{font-style:normal;font-size:9px;min-width:15px;height:15px;line-height:15px;padding:0 4px;border-radius:999px;background:var(--danger);color:#fff;text-align:center}.mc-x{flex:none;width:30px;height:30px;border:none;background:none;color:var(--ink-muted);font-size:14px;cursor:pointer;border-radius:var(--r-md)}.mc-x:hover{background:var(--surface-hover);color:var(--ink-primary)}.mc-body{flex:1;min-height:0;display:grid;grid-template-columns:296px 1fr}.mc-list{border-right:1px solid var(--line);overflow-y:auto;background:var(--bg-canvas)}.mc-i{display:block;width:100%;text-align:left;cursor:pointer;padding:12px 16px;border:none;border-bottom:1px solid var(--line);background:transparent}.mc-i:hover{background:var(--surface-hover)}.mc-i.on{background:var(--surface);box-shadow:inset 3px 0 0 var(--accent)}.mc-i-top{display:flex;align-items:center;gap:5px;margin-bottom:5px;flex-wrap:wrap}.mc-i-t{display:-webkit-box;font-size:var(--fs-tool);font-weight:400;color:var(--ink-secondary);line-height:1.5;overflow:hidden;-webkit-line-clamp:2;-webkit-box-orient:vertical}.mc-i.unread .mc-i-t{color:var(--ink-primary);font-weight:var(--fw-medium)}.mc-i-m{display:block;margin-top:6px;font-size:10px;color:var(--ink-muted)}.mc-kind{font-style:normal;font-size:9px;padding:1px 7px;border-radius:999px;background:var(--surface-hover);color:var(--ink-secondary);white-space:nowrap}.mc-kind.accent{background:var(--accent-bg);color:var(--accent)}.mc-kind.ok{background:#e8f5ec;color:#2c6b4a}.mc-pin{font-style:normal;font-size:9px;padding:1px 6px;border-radius:999px;background:var(--accent-bg);color:var(--accent)}.mc-need{font-style:normal;font-size:9px;padding:1px 6px;border-radius:999px;background:#fdecec;color:var(--danger)}.mc-empty{padding:60px 20px;text-align:center;font-size:var(--fs-tool);color:var(--ink-muted)}.mc-detail{overflow-y:auto;padding:26px 30px}.mc-d-hd{padding-bottom:16px;border-bottom:1px solid var(--line);margin-bottom:18px}.mc-d-hd h2{margin-top:9px;font-size:21px;font-weight:var(--fw-medium);line-height:1.45}.mc-d-meta{margin-top:9px;font-size:12px;color:var(--ink-muted)}.mc-d-body{font-size:14px;line-height:2;color:var(--ink-secondary)}.mc-dim{color:var(--ink-muted)}.mc-atts{margin-top:22px;display:flex;flex-direction:column;gap:7px}.mc-atts-t{font-size:11px;color:var(--ink-muted);margin-bottom:2px}.mc-att{display:flex;align-items:center;gap:9px;width:100%;text-align:left;cursor:pointer;padding:11px 13px;border:1px solid var(--line);border-radius:var(--r-md);background:var(--surface);font-size:var(--fs-tool);color:var(--ink-primary)}.mc-att:hover{border-color:var(--accent);background:var(--accent-bg);color:var(--accent)}.mc-att .ic{width:16px;height:16px;flex:none}.mc-att i{display:block;font-style:normal;font-size:10px;color:var(--ink-muted);margin-top:2px}.mc-ack{margin-top:24px;padding:14px 16px;border-radius:var(--r-md);background:#fdf6ec;border:1px solid #F3E2C7;display:flex;align-items:center;justify-content:space-between;gap:var(--gap-md);flex-wrap:wrap}.mc-ackline{display:flex;align-items:center;gap:9px;font-size:var(--fs-tool);color:#8a5a22;cursor:pointer}.mc-ackline input{width:15px;height:15px;cursor:pointer}.mc-ackbtn{padding:7px 20px;border:none;border-radius:var(--r-md);background:var(--accent);color:#fff;font-size:var(--fs-tool);cursor:pointer}.mc-ackbtn:disabled{background:#cbd5e1;cursor:not-allowed}.mc-laterbtn{padding:7px 14px;border:1px solid var(--line);border-radius:var(--r-md);background:var(--surface);color:var(--ink-secondary);font-size:var(--fs-tool);cursor:pointer}.mc-acked{margin-top:22px;font-size:var(--fs-tool);color:#2c6b4a}.mc-force{width:560px;max-width:100%;max-height:calc(100vh - 48px);overflow-y:auto;background:var(--surface);border-radius:14px;padding:26px 28px;box-shadow:0 24px 70px #131d6b33;transform:translateY(10px) scale(.985);transition:transform .18s}.mc-f-hd{padding-bottom:14px;border-bottom:1px solid var(--line);margin-bottom:16px}.mc-f-hd h2{margin-top:9px;font-size:19px;font-weight:var(--fw-medium);line-height:1.45}@media(max-width:900px){.mc-body{grid-template-columns:1fr}.mc-list{max-height:34%;border-right:none;border-bottom:1px solid var(--line)}}.mc-banner{display:flex;flex-direction:column;gap:4px;padding:12px 14px;border-radius:var(--r-md);margin-bottom:18px;font-size:var(--fs-tool);line-height:1.75}.mc-banner b{font-weight:var(--fw-medium)}.mc-banner.live{background:#e8f5ec;border:1px solid #CBE5D5;color:#2c6b4a}.mc-banner.off{background:#fdecec;border:1px solid #F5D2D4;color:#96323a}.mc-banner a{color:inherit;font-weight:var(--fw-medium);text-underline-offset:3px}.mc-live{font-style:normal;font-size:9px;padding:1px 7px;border-radius:999px;background:#e8f5ec;color:#2c6b4a;font-weight:var(--fw-medium);white-space:nowrap}.mc-vercnt{font-style:normal;font-size:9px;color:var(--ink-muted)}.mc-vers{margin-top:24px}.mc-ver{display:flex;align-items:center;gap:10px;width:100%;text-align:left;cursor:pointer;padding:9px 12px;border:1px solid transparent;border-radius:var(--r-md);background:transparent}.mc-ver:hover{background:var(--surface-hover)}.mc-ver.on{border-color:var(--accent);background:var(--accent-bg)}.mc-ver-dot{flex:none;width:8px;height:8px;border-radius:50%;background:var(--surface);border:2px solid var(--ink-muted)}.mc-ver-dot.live{background:#3fa45b;border-color:#3fa45b}.mc-ver-t{flex:1;min-width:0;font-size:var(--fs-tool);color:var(--ink-primary)}.mc-ver-t i{display:block;font-style:normal;font-size:10px;color:var(--ink-muted);margin-top:2px}.mc-vtag{font-style:normal;font-size:9px;padding:1px 7px;border-radius:999px;white-space:nowrap}.mc-vtag.live{background:#e8f5ec;color:#2c6b4a}.mc-vtag.off{background:var(--surface-hover);color:var(--ink-muted)}.rc-card{width:min(920px,calc(100vw - 40px));max-height:min(calc(100vh - 56px),880px);padding:0;overflow:hidden;display:flex;flex-direction:column}.rc-hd{padding:24px 30px 16px;border-bottom:1px solid #e2e8f0;flex:none}.rc-ft{flex:none;display:flex;align-items:center;gap:14px;padding:14px 30px;border-top:1px solid #e2e8f0;background:#f8fafc}.rc-ft-tip{flex:1;font-size:11.5px;color:#64748b;line-height:1.5}.rc-body{flex:1;min-height:0;overflow-y:auto;overflow-x:hidden;padding:22px 30px 26px;scrollbar-width:thin;scrollbar-color:#cbd5e1 transparent}.rc-body::-webkit-scrollbar{width:12px}.rc-body::-webkit-scrollbar-track{background:transparent}.rc-body::-webkit-scrollbar-thumb{background:#cbd5e1;border-radius:999px;border:4px solid transparent;background-clip:padding-box}.rc-body::-webkit-scrollbar-thumb:hover{background:#94a3b8;background-clip:padding-box}.rc-w-lbl{font-size:11.5px;font-weight:650;letter-spacing:.08em;color:#2563eb;text-transform:none;margin-bottom:10px}.rc-w-row{display:flex;align-items:stretch;gap:4px;flex-wrap:nowrap;padding:16px 12px;border-radius:14px;background:linear-gradient(180deg,#eff6ff,#f8fafc);border:1px solid #dbeafe}.rc-w{flex:1 1 0;min-width:0;display:flex;flex-direction:column;align-items:center;gap:3px;padding:10px 4px;border-radius:10px;background:#fff;border:1px solid #dbeafe;box-shadow:0 1px 2px #0f172a0a}.rc-w em{font-style:normal;font-size:10px;font-weight:650;color:#93a8c4;letter-spacing:.04em}.rc-w b{font-family:ui-monospace,Menlo,Consolas,monospace;font-size:34px;font-weight:700;color:#2563eb;line-height:1.05;letter-spacing:1px}.rc-w i{font-style:normal;font-size:13.5px;font-weight:650;color:#0f172a}.rc-w u{text-decoration:none;font-size:10.5px;color:#64748b;white-space:nowrap}.rc-gt{align-self:center;font-size:20px;color:#93c5fd;font-weight:700;padding:0 1px}.rc-w-cap{margin-top:12px;font-size:13px;color:#475569;line-height:1.9}.rc-w-cap b{color:#0f172a}code.rc-big{font-family:ui-monospace,Menlo,Consolas,monospace;font-size:16px;font-weight:700;letter-spacing:2px;color:#1d4ed8;background:#dbeafe;padding:2px 9px;border-radius:6px}.rc-sec{margin-top:26px}.rc-h{font-size:14.5px;font-weight:650;color:#0f172a;padding-left:10px;border-left:3px solid #2563eb;margin-bottom:10px}.rc-h.danger{border-left-color:var(--danger, #E5484D)}.rc-ne{color:var(--danger, #E5484D);font-weight:700}.rc-sub2{font-size:12.5px;color:#64748b;line-height:1.8;margin-bottom:12px}.rc-sub2 b{color:#0f172a}.rc-tb-wrap{border:1px solid #e2e8f0;border-radius:12px;overflow:hidden}.rc-tb{width:100%;border-collapse:collapse;font-size:12.5px}.rc-tb th,.rc-tb td{text-align:left;padding:10px 12px;border-bottom:1px solid #eef2f7;vertical-align:top}.rc-tb tr:last-child th,.rc-tb tr:last-child td{border-bottom:none}.rc-tb th{color:#0f172a;font-weight:650;background:#f8fafc}.rc-tb th.on,.rc-tb td.on{background:#f0f7ff}.rc-tb th.on{background:#e0efff}.rc-tb td:first-child{color:#64748b;white-space:nowrap;width:92px;background:#fcfdfe}.rc-tb b.g{color:#15803d}.rc-tb b.r{color:#b91c1c}.rc-ol,.rc-ul{margin:0;padding-left:22px;font-size:13px;color:#475569;line-height:1.95}.rc-ol li,.rc-ul li{margin-bottom:8px}.rc-ol b,.rc-ul b{color:#0f172a}.rc-ol b.rst,.rc-ul b.rst{color:#1d4ed8}.rc-ul.danger{list-style:none;padding-left:0}.rc-ul.danger li{padding:9px 12px 9px 14px;margin-bottom:8px;border-left:3px solid #fca5a5;border-radius:0 8px 8px 0;background:#fef2f2}.rc-ul.danger li b{color:#991b1b}.rc-tip{display:block;margin-top:3px;font-size:11.5px;color:#7f8ea3;line-height:1.7}.rc-ul.danger .rc-tip{color:#b45c5c}.rc-ol code,.rc-ul code,.rc-note code,.rc-tb code{font-family:ui-monospace,Menlo,Consolas,monospace;background:#e2e8f0;padding:1px 6px;border-radius:5px;color:#0f172a;font-size:11.5px}.rc-tb th.on code{background:#c7e0fb}.rc-note{margin-top:12px;padding:11px 13px;border-radius:10px;background:#fffbeb;border:1px solid #fde68a;font-size:12.5px;color:#78350f;line-height:1.85}.rc-note b{color:#451a03}.rc-note.danger{background:#fef2f2;border-color:#fecaca;color:#991b1b}.rc-note.danger b{color:#7f1d1d}.rc-note.ok{background:#f0fdf4;border-color:#bbf7d0;color:#14532d}.rc-note.ok b{color:#052e16}.rc-demo{display:grid;grid-template-columns:1fr 1fr;gap:14px}@media(max-width:780px){.rc-demo{grid-template-columns:1fr}}.rc-dm{border-radius:12px;padding:13px 14px 14px;border:1px solid #e2e8f0}.rc-dm.good{background:#f6fefa;border-color:#bbf7d0}.rc-dm.bad{background:snow;border-color:#fecaca}.rc-dm-h{display:flex;align-items:center;gap:7px;font-size:13.5px;font-weight:650;color:#0f172a;margin-bottom:10px}.rc-dm-h em{font-style:normal;font-size:10.5px;font-weight:600;color:#94a3b8;margin-left:auto}.rc-tick{display:inline-flex;align-items:center;justify-content:center;width:18px;height:18px;border-radius:50%;font-size:11px;font-weight:700;color:#fff}.rc-tick.ok{background:#16a34a}.rc-tick.no{background:#e5484d}.rc-rk{display:flex;flex-direction:column;gap:4px}.rc-rk-row{display:flex;align-items:center;gap:4px}.rc-rk-ly{flex:none;width:30px;font-size:10.5px;color:#64748b;text-align:right}.rc-rk-row i{flex:1 1 0;min-width:0;font-style:normal;font-family:ui-monospace,Menlo,Consolas,monospace;font-size:12.5px;font-weight:650;text-align:center;padding:6px 0;border-radius:6px;background:#fff;border:1px solid #e2e8f0;color:#334155}.rc-dm.good .rc-rk-row i{border-color:#86efac;color:#15803d}.rc-dm.bad .rc-rk-row i{border-color:#fecaca;color:#b91c1c}.rc-rk-foot i{background:transparent;border:none;color:#94a3b8!important;font-size:10px;font-weight:500;padding:2px 0}.rc-dm-n{margin-top:10px;font-size:11.5px;line-height:1.8;color:#475569}.rc-dm-n b{font-weight:700}.rc-dm-n.ok{color:#15803d}.rc-dm-n.no{color:#b91c1c}.route-rule-wrap{padding:10px 14px 2px}.route-rule-btn{margin:0}.rz-bar{display:flex;align-items:center;gap:8px;padding:8px 12px 8px 0;margin-bottom:6px;border-bottom:1px dashed var(--line)}.rz-bar-n{margin-left:auto;font-size:10.5px;color:var(--ink-muted);font-variant-numeric:tabular-nums}.rz-auto-btn{display:inline-flex;align-items:center;gap:6px;padding:6px 12px;border-radius:8px;cursor:pointer;font-size:11.5px;font-weight:600;letter-spacing:.01em;color:#fff;background:linear-gradient(180deg,#3b82f6,#2563eb);border:1px solid #1d4ed8;box-shadow:0 1px 3px #2563eb52;transition:filter var(--dur-fast) var(--ease),transform var(--dur-fast) var(--ease)}.rz-auto-btn:hover{filter:brightness(1.07)}.rz-auto-btn:active{transform:translateY(1px)}.rz-auto-btn.ghost{color:var(--accent);background:#fff;border-color:#bfdbfe;box-shadow:none;font-weight:500;margin-top:10px;width:100%;justify-content:center}.rz-auto-btn.ghost:hover{background:var(--accent-bg)}.rz-auto-ic,.rz-guide-ic{display:inline-flex;align-items:center;justify-content:center;width:16px;height:16px;border-radius:5px;flex-shrink:0;font-family:var(--font-mono);font-size:11px;font-weight:700;font-style:italic;background:#ffffff3d;color:#fff}.rz-guide{margin:6px 12px 8px 0;padding:12px 14px;border-radius:10px;background:linear-gradient(180deg,#eff6ff,#f8fafc);border:1px solid #dbeafe}.rz-guide-t{display:flex;align-items:center;gap:7px;font-size:12.5px;font-weight:650;color:#1d4ed8;margin-bottom:6px}.rz-guide-ic{background:#2563eb}.rz-guide-b{font-size:11.5px;color:#475569;line-height:1.8}.rz-guide-b b{color:#1d4ed8;font-variant-numeric:tabular-nums}.route-dir{display:inline-flex;align-items:center;gap:4px;flex-shrink:0;padding:2px 8px;border-radius:var(--r-pill);font-size:10.5px;font-weight:600;color:var(--accent);background:var(--accent-bg);border:1px solid #dbeafe}.route-dir i{font-style:normal;font-size:11px;line-height:1}.mode-tab-book{color:var(--accent);border:1px solid #bfdbfe;background:var(--accent-bg)}.mode-tab-book:hover{background:#dbeafe;border-color:#93c5fd}.lb-mask{position:fixed;inset:0;z-index:100005;background:#0f172a6b;backdrop-filter:blur(2px);display:flex;align-items:center;justify-content:center;opacity:0;pointer-events:none;transition:opacity .16s var(--ease)}.lb-mask.show{opacity:1;pointer-events:auto}.lb-win{width:calc(100vw - 40px);height:calc(100vh - 40px);max-width:1760px;background:#fff;border-radius:14px;overflow:hidden;display:flex;flex-direction:column;box-shadow:0 24px 64px #0f172a4d;transform:translateY(10px) scale(.99);transition:transform .18s cubic-bezier(.2,.8,.3,1)}.lb-mask.show .lb-win{transform:none}.lb-hd{flex:none;display:flex;align-items:center;gap:14px;padding:12px 16px;border-bottom:1px solid var(--line)}.lb-title{display:flex;align-items:center;gap:8px;font-size:16px;font-weight:650;color:#0f172a;white-space:nowrap}.lb-title .ic{width:18px;height:18px;color:var(--accent)}.lb-where{font-size:12px;color:var(--muted);white-space:nowrap;padding:3px 10px;border-radius:var(--r-pill);background:var(--surface-hover)}.lb-modes{margin-left:auto;display:flex;gap:3px;padding:3px;border-radius:10px;background:#eef2f7;flex:none}.lb-mode{display:flex;flex-direction:column;align-items:center;gap:1px;padding:5px 15px;border-radius:8px;cursor:pointer;border:1px solid transparent;background:transparent;font-size:12.5px;font-weight:600;color:var(--muted);transition:all var(--dur-fast) var(--ease)}.lb-mode i{font-style:normal;font-size:9.5px;font-weight:500;opacity:.8}.lb-mode:hover{color:#334155}.lb-mode.on{background:#fff;color:var(--accent);border-color:#dbeafe;box-shadow:0 1px 3px #0f172a17}.lb-acts{display:flex;gap:8px;flex:none}.lb-btn{display:inline-flex;align-items:center;gap:6px;height:30px;padding:0 13px;border-radius:7px;cursor:pointer;font-size:12px;font-weight:600;white-space:nowrap;border:1px solid var(--border);background:#fff;color:#334155;transition:all var(--dur-fast) var(--ease)}.lb-btn .ic{width:14px;height:14px}.lb-btn:hover{background:var(--surface-hover)}.lb-btn.primary{color:#fff;border-color:#1d4ed8;background:linear-gradient(180deg,#3b82f6,#2563eb);box-shadow:0 1px 3px #2563eb4d}.lb-btn.primary:hover{filter:brightness(1.07)}.lb-x{flex:none;width:30px;height:30px;border-radius:8px;cursor:pointer;border:1px solid var(--border);background:#fff;color:var(--muted);font-size:13px}.lb-x:hover{background:var(--surface-hover);color:#0f172a}.lb-scroll{flex:1;min-height:0;overflow:auto;position:relative;scrollbar-width:thin;scrollbar-color:#cbd5e1 transparent}.lb-scroll::-webkit-scrollbar{width:12px;height:12px}.lb-scroll::-webkit-scrollbar-track{background:transparent}.lb-scroll::-webkit-scrollbar-thumb{background:#cbd5e1;border-radius:999px;border:4px solid transparent;background-clip:padding-box}.lb-scroll::-webkit-scrollbar-thumb:hover{background:#94a3b8;background-clip:padding-box}.lb-inner{min-width:min-content}.lb-sticky{position:sticky;top:0;z-index:3}.lb-viewport{position:relative}.lb-rows{position:absolute;top:0;left:0;right:0;will-change:transform}.lb-head,.lb-filt,.lb-row{display:grid;align-items:center;padding:0 14px;font-size:12px}.lb-head span,.lb-row span{padding:0 6px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;text-align:center;font-family:var(--font-ui);font-variant-numeric:tabular-nums;letter-spacing:.01em}.lb-head{height:32px;background:#f1f5f9;border-bottom:1px solid var(--border);font-weight:650;color:#475569}.lb-head span{font-size:11px}.lb-head.wide span,.lb-filt.wide span{font-size:10.5px}.lb-filt{height:32px;background:#f8fafc;border-bottom:1px solid var(--border)}.lb-filt>span{padding:0 3px;overflow:visible}.lb-cf{font-family:var(--font-ui);width:100%;height:22px;padding:0 5px;border-radius:5px;border:1px solid var(--border);background:#fff;color:var(--text);font-size:11px;outline:none;text-align:center;transition:border-color var(--dur-fast) var(--ease)}.lb-cf:focus{border-color:var(--accent);background:#fff}.lb-cf:not(:placeholder-shown),select.lb-cf:valid{border-color:#93c5fd}.lb-row{height:32px;color:#334155;border-bottom:1px solid #f1f5f9}.lb-row.alt{background:#fcfdfe}.lb-row:hover{background:var(--accent-bg)}.lb-row.on{background:#e0efff}.lb-row.on:hover{background:#d6e9ff}.lb-ck{display:flex;align-items:center;justify-content:center;padding:0!important}.lb-ck input{width:13px;height:13px;cursor:pointer;accent-color:#2563eb}.lb-abc{justify-self:center;min-width:20px;text-align:center;padding:1px 7px;border-radius:var(--r-pill);font-size:10.5px;font-weight:700;color:var(--ink-muted);background:#f1f5f9}.lb-abc.lv-A{color:#047857;background:#d1fae5}.lb-abc.lv-B{color:#92400e;background:#fef3c7}.lb-abc.lv-C{color:#991b1b;background:#fee2e2}.lb-empty{padding:60px 0;text-align:center;color:var(--muted);font-size:12.5px}.lb-batch[hidden]{display:none!important}.lb-batch{flex:none;display:flex;align-items:center;gap:10px;flex-wrap:wrap;padding:10px 16px;border-top:1px solid #bfdbfe;background:linear-gradient(180deg,#eff6ff,#e0efff)}.lb-b-n{font-size:12px;color:#1e3a5f}.lb-b-n b{color:#1d4ed8;font-variant-numeric:tabular-nums}.lb-b-warn{font-size:11.5px;color:#92400e;background:#fef3c7;border:1px solid #fde68a;border-radius:6px;padding:3px 9px}.lb-b-warn b{color:#78350f}.lb-b-eq{font-size:12px;color:var(--muted)}.lb-b-in{height:28px;padding:0 8px;border-radius:6px;min-width:130px;border:1px solid #bfdbfe;background:#fff;color:var(--text);font-size:12px;outline:none}.lb-b-in:focus{border-color:var(--accent)}.lb-ft{flex:none;display:flex;align-items:center;gap:18px;flex-wrap:wrap;padding:9px 16px;border-top:1px solid var(--line);background:#f8fafc;font-size:11.5px;color:var(--muted)}.lb-ft b{color:#0f172a;font-variant-numeric:tabular-nums}.lb-ft-n b{color:var(--accent);font-size:14px}.wp-grid{display:grid;grid-template-columns:1fr 1fr;gap:5px 8px;padding:2px 0 6px}select.wp-in{font-family:var(--font-mono)}.wp-btn{flex:1;height:26px;border-radius:6px;cursor:pointer;border:1px solid var(--border);background:#fff;color:#334155;font-size:11px;transition:background var(--dur-fast) var(--ease)}.lb-ft-bad{display:inline-flex;align-items:center;gap:5px;cursor:pointer;padding:3px 10px;border-radius:var(--r-pill);border:1px solid #fecaca;background:#fef2f2;color:#b91c1c;font-family:var(--font-ui);font-size:11.5px;font-weight:600}.lb-ft-bad:hover{background:#fee2e2}.lb-ft-bad b{color:#7f1d1d;font-variant-numeric:tabular-nums}.lb-btn.primary.filtered{background:linear-gradient(180deg,#f59e0b,#d97706);border-color:#b45309;box-shadow:0 1px 3px #d9770652}.ws-btn{display:flex;align-items:center;gap:5px;width:100%;height:26px;padding:0 5px 0 8px;cursor:pointer;border:1px solid var(--border);border-radius:6px;background:#fff;color:var(--text);font-size:11.5px;text-align:left;transition:border-color var(--dur-fast) var(--ease)}.ws-btn:hover{border-color:#93c5fd}.ws-btn.on{border-color:var(--accent);box-shadow:0 0 0 2px #2563eb1f}.ws-v{flex:none;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-family:Roboto Mono,Consolas,monospace;font-weight:600;letter-spacing:.02em}.ws-vcn{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-family:var(--font-ui);font-size:11px;color:var(--muted)}.ws-btn.compact .ws-v{flex:1}.ws-caret{width:12px;height:12px;flex:none;margin-left:auto;fill:none;stroke:var(--ink-muted);stroke-width:2}.ws-pop{position:fixed;z-index:100010;max-height:320px;overflow-y:auto;padding:4px;border-radius:9px;background:#fff;border:1px solid var(--border);box-shadow:0 12px 32px #0f172a2e;scrollbar-width:thin}.ws-opt{display:grid;grid-template-columns:92px 1fr;align-items:center;gap:10px;width:100%;padding:6px 9px;cursor:pointer;text-align:left;border:none;border-radius:6px;background:transparent}.ws-opt:hover{background:var(--surface-hover)}.ws-opt.on{background:var(--accent-bg)}.ws-code{font-family:Roboto Mono,Consolas,monospace;font-size:11.5px;font-weight:600;color:#0f172a;letter-spacing:.02em;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ws-opt.on .ws-code{color:var(--accent)}.ws-cn{font-family:var(--font-ui);font-size:11.5px;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.ws-none{padding:12px 10px;font-size:11.5px;color:var(--ink-muted);text-align:center}.ws-newrow{display:flex;gap:4px;padding:5px 4px 2px;margin-top:3px;border-top:1px solid var(--line)}.ws-new{flex:1;min-width:0;height:25px;padding:0 7px;border-radius:5px;border:1px solid var(--border);font-size:11.5px;font-family:var(--font-ui);outline:none}.ws-new:focus{border-color:var(--accent)}.ws-newbtn{flex:none;height:25px;padding:0 9px;border-radius:5px;cursor:pointer;border:1px solid #1d4ed8;background:var(--accent);color:#fff;font-size:11px;font-family:var(--font-ui)}.wp-grid{display:grid;grid-template-columns:1fr 1fr;gap:6px 8px;padding:2px 0 6px}.wp-f{display:flex;flex-direction:column;gap:2px;min-width:0}.wp-f.full{grid-column:1 / -1;flex-direction:row;align-items:center;gap:8px}.wp-f.full .wp-l{flex:none}.wp-f.full .wp-ctl{flex:1}.wp-l{font-size:10px;color:var(--ink-muted);font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.wp-ctl{position:relative;display:block;min-width:0}.wp-in{width:100%;min-width:0;font-size:11.5px}.wp-mixed{background:#fffbeb!important;border-color:#fde68a!important}.wp-fixed{display:inline-block;padding:4px 12px;border-radius:6px;background:#eef2f7;border:1px solid var(--border);color:var(--muted-strong);font-family:Roboto Mono,Consolas,monospace;font-size:11.5px;font-weight:600}.wp-pair{display:flex;align-items:center;gap:6px;margin:4px 0 2px;padding:5px 9px;border-radius:7px;background:#fff7ed;border:1px solid #fed7aa;font-size:11px;color:#9a3412}.wp-pair.ok{background:#f0fdf4;border-color:#bbf7d0;color:#15803d}.wp-pair-c,.wp-pair-n{font-weight:600}.wp-pair-c{font-family:Roboto Mono,Consolas,monospace}.wp-pair-eq{opacity:.7}.wp-pair em{margin-left:auto;font-style:normal;font-size:10px;opacity:.85}.wp-req{font-size:9.5px;font-weight:700;color:#b91c1c;background:#fee2e2;border-radius:var(--r-pill);padding:1px 6px;margin-left:4px}.wp-multi{font-size:11px;color:#1d4ed8;background:var(--accent-bg);border:1px solid #dbeafe;border-radius:7px;padding:6px 9px;margin-bottom:8px}.wp-multi b{font-variant-numeric:tabular-nums}.wp-warn{font-size:11px;color:#991b1b;background:#fef2f2;border:1px solid #fecaca;border-radius:7px;padding:6px 9px;margin-bottom:8px;line-height:1.65}.wp-foot{display:flex;gap:6px;margin-top:8px}.wp-btn{flex:1;height:26px;border-radius:6px;cursor:pointer;border:1px solid var(--border);background:#fff;color:#334155;font-size:11px;font-family:var(--font-ui);transition:background var(--dur-fast) var(--ease)}.wp-btn:hover{background:var(--surface-hover)}.wp-tip{margin-top:8px;font-size:10.5px;color:var(--ink-muted);line-height:1.7}.lb-filt .ws-btn{height:22px;font-size:11px;padding:0 4px;justify-content:center}.lb-filt .ws-btn .ws-v{flex:none;font-size:10.5px;text-align:center}.lb-filt .ws-btn .ws-vcn{display:none}.lb-filt .ws-btn .ws-caret{margin-left:2px}.lb-filt input.lb-cf{text-align:center}.rc-h2{font-size:12.5px;font-weight:650;color:#334155;margin:14px 0 7px;padding-left:8px;border-left:2px solid #cbd5e1}.rc-tb-enum td:first-child{width:118px}.rc-tb-enum td:nth-child(2){width:108px}.rc-tb-enum td:nth-child(3){width:92px;color:#475569}.rc-tb-enum td:last-child{color:#475569;line-height:1.7}.rc-say{color:#1d4ed8;font-weight:650;letter-spacing:.02em}.rc-must{display:inline-block;margin-left:5px;padding:0 5px;border-radius:var(--r-pill);background:#fee2e2;color:#b91c1c;font-size:9.5px;font-weight:700}.wp-grps{display:flex;flex-direction:column;gap:6px;padding:2px 0 4px}.wp-grp{display:grid;grid-template-columns:34px 1fr auto auto;align-items:center;gap:7px;padding:6px 8px;border-radius:8px;background:#f0fdf4;border:1px solid #bbf7d0}.wp-grp.empty{background:#fff7ed;border-color:#fed7aa}.wp-grp.mixed{background:#fffbeb;border-color:#fde68a}.wp-grp-l{font-size:11px;font-weight:650;color:#334155}.wp-grp-ctl{min-width:0}.wp-grp-n{font-size:11px;color:#15803d;font-weight:600;max-width:96px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.wp-grp.empty .wp-grp-n{color:#9a3412}.wp-grp.mixed .wp-grp-n{color:#92400e}.wp-grp-edit{width:22px;height:22px;border-radius:5px;cursor:pointer;border:1px solid #86efac;background:#fff;color:#15803d;font-size:11px}.wp-grp-edit:hover{background:#dcfce7}.wp-grp-tip{font-size:10.5px;color:var(--ink-muted);line-height:1.7;margin:4px 0 2px}.ws-act{display:block;width:100%;margin-top:3px;padding:7px 9px;border:none;border-top:1px solid var(--line);border-radius:0 0 6px 6px;background:transparent;cursor:pointer;text-align:left;color:var(--accent);font-size:11.5px;font-weight:600;font-family:var(--font-ui)}.ws-act:hover{background:var(--accent-bg)}.gm-form{display:flex;flex-direction:column;gap:10px;margin-top:14px}.gm-f{display:flex;flex-direction:column;gap:4px}.gm-f>span{font-size:11px;color:var(--ink-muted);font-weight:600}.gm-in{height:32px;padding:0 10px;border-radius:7px;border:1px solid var(--border);background:#fff;color:var(--text);font-size:13px;font-family:var(--font-ui);outline:none}.gm-in.mono{font-family:Roboto Mono,Consolas,monospace;letter-spacing:.03em}.gm-in:focus{border-color:var(--accent)}.gm-in[readonly]{background:#f8fafc;color:var(--muted-strong)}.gm-err{margin-top:10px;padding:7px 10px;border-radius:7px;background:#fef2f2;border:1px solid #fecaca;color:#b91c1c;font-size:11.5px}.gm-note{margin-top:10px;padding:7px 10px;border-radius:7px;background:#fffbeb;border:1px solid #fde68a;color:#78350f;font-size:11.5px;line-height:1.7}.ws-opt.has-del{grid-template-columns:92px 1fr 20px}.ws-del{display:flex;align-items:center;justify-content:center;width:18px;height:18px;border-radius:4px;color:transparent;font-size:10px;line-height:1;cursor:pointer;transition:color var(--dur-fast) var(--ease),background var(--dur-fast) var(--ease)}.ws-opt:hover .ws-del{color:#b91c1c;background:#fee2e2}.ws-opt .ws-del:hover{color:#fff;background:var(--danger, #E5484D)}.route-plan-panel{gap:6px}.route-plan-panel .ab.full{margin:0}.ehs-sheet-top{padding:10px 12px 6px}.ehs-new-sheet{margin:0}.ehs-sheet-list{padding:0 12px 8px;display:flex;flex-direction:column;gap:5px;max-height:34vh;overflow-y:auto}.ehs-sheet{display:grid;grid-template-columns:4px 1fr auto;align-items:center;gap:8px;padding:8px 9px;border-radius:8px;cursor:pointer;border:1px solid var(--border);background:#fff;transition:all var(--dur-fast) var(--ease)}.ehs-sheet:hover{border-color:#93c5fd;background:var(--accent-bg)}.ehs-sheet.on{border-color:var(--accent);background:var(--accent-bg)}.ehs-sheet-dot{width:4px;height:22px;border-radius:2px;background:transparent}.ehs-sheet.on .ehs-sheet-dot{background:var(--accent)}.ehs-sheet-main{display:flex;flex-direction:column;gap:2px;min-width:0}.ehs-sheet-main b{font-size:12.5px;font-weight:600;color:var(--text);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ehs-sheet.on .ehs-sheet-main b{color:var(--accent)}.ehs-sheet-main em{font-style:normal;font-size:10px;color:var(--ink-muted)}.ehs-sheet-del{width:20px;height:20px;border-radius:5px;cursor:pointer;border:1px solid transparent;background:transparent;color:transparent;font-size:10px;transition:all var(--dur-fast) var(--ease)}.ehs-sheet:hover .ehs-sheet-del{color:#b91c1c;background:#fee2e2}.ehs-sheet-del:hover{color:#fff!important;background:var(--danger, #E5484D)!important}.ehs-sheet-empty{padding:22px 12px;text-align:center;font-size:11.5px;color:var(--ink-muted);line-height:1.9}.ehs-sheet-cfg{padding:10px 12px 14px;border-top:1px solid var(--line)}.ehs-cfg-h{font-size:11px;font-weight:650;color:var(--ink-muted);letter-spacing:.06em;margin-bottom:8px}.ehs-cf{display:flex;flex-direction:column;gap:3px;margin-bottom:8px}.ehs-cf>span,.ehs-cf-l{font-size:10.5px;color:var(--ink-muted);font-weight:600}.ehs-cf2{display:grid;grid-template-columns:1fr 1fr;gap:8px}.ehs-cf-anchor{display:flex;flex-direction:column;gap:3px;margin-bottom:8px}.ehs-cf-tip{font-size:10.5px;color:var(--ink-muted);line-height:1.75;padding:8px 9px;border-radius:7px;background:var(--surface-hover);margin-bottom:10px}.ehs-cf-acts{display:flex;flex-direction:column;gap:6px}.ehs-btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;height:32px;padding:0 14px;border-radius:8px;cursor:pointer;font-size:12px;font-weight:600;font-family:var(--font-ui);border:1px solid var(--border);background:#fff;color:#334155;transition:all var(--dur-fast) var(--ease)}.ehs-btn .ic{width:14px;height:14px}.ehs-btn:hover{background:var(--surface-hover)}.ehs-btn.primary{color:#fff;border-color:#1d4ed8;background:linear-gradient(180deg,#3b82f6,#2563eb);box-shadow:0 1px 3px #2563eb4d}.ehs-btn.primary:hover{filter:brightness(1.07)}#path-ledger-tbody .ledger-row{border-bottom:none}#path-ledger-tbody .ledger-row:hover{background:transparent}#path-ledger-tbody .ledger-row:hover>span{color:var(--accent)}#path-ledger-tbody .ledger-row,#route-tab-pathcode .ledger-head{padding:8px 10px;font-size:11px;column-gap:8px}#sr-tab-ledger .ledger-head,#sr-tab-ledger .ledger-row{grid-template-columns:1.25fr .62fr 1.35fr;column-gap:8px}#sr-tab-ledger .ledger-row{padding:8px 10px;font-size:11px}#sr-tab-ledger .ledger-head{padding-left:10px;padding-right:10px}#sr-tab-ledger .ledger-row>span:last-child{font-variant-numeric:tabular-nums}.route-plan-panel .ab.full{flex-direction:column;gap:4px;padding:9px 4px;height:auto;line-height:1.2}.route-plan-panel .ab.full>span{white-space:nowrap;font-size:11.5px}.route-plan-panel .ab.full .ic{width:16px;height:16px}.ehs-rot{padding:0 12px 12px}.ehs-rot-h{font-size:10.5px;font-weight:650;color:var(--ink-muted);margin-bottom:7px}.ehs-rot-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:5px}.ehs-rot-b{height:30px;border-radius:7px;cursor:pointer;border:1px solid var(--border);background:#fff;color:var(--muted-strong);display:flex;align-items:center;justify-content:center;transition:all var(--dur-fast) var(--ease)}.ehs-rot-b i{font-style:normal;font-size:15px;line-height:1;transform:rotate(var(--rot))}.ehs-rot-b:hover{border-color:#93c5fd;background:var(--accent-bg)}.ehs-rot-b.on{border-color:var(--accent);background:var(--accent-bg);color:var(--accent)}.ehs-rot-free{display:flex;align-items:center;gap:6px;margin-top:8px}.ehs-rot-free>span:first-child{font-size:10.5px;color:var(--ink-muted);flex:none}.ehs-rot-free .pi{flex:1;min-width:0}.ehs-rot-deg{font-size:11px;color:var(--muted);flex:none}.ehs-sheet{grid-template-columns:4px 1fr auto auto!important}.ehs-sheet-edit{width:20px;height:20px;border-radius:5px;cursor:pointer;border:1px solid transparent;background:transparent;color:transparent;font-size:11px;transition:all var(--dur-fast) var(--ease)}.ehs-sheet:hover .ehs-sheet-edit{color:var(--accent);background:var(--accent-bg)}.ehs-sheet-edit:hover{color:#fff!important;background:var(--accent)!important}header{display:grid;grid-template-columns:auto minmax(0,1fr) auto;gap:8px}.h-left,.h-right{min-width:0}.mode-switcher{position:static;transform:none;justify-self:center;max-width:100%;overflow:hidden}@media(max-width:1400px){.logo-img{height:32px}.h-group{gap:2px}}@media(max-width:1240px){.acct-name{display:none}}@media(max-width:1080px){#btn-coding-settings>span{display:none}#btn-coding-settings{padding-left:8px;padding-right:8px}.site-picker-txt,.zone-picker-txt{max-width:84px}}@media(max-width:940px){.site-picker-txt,.zone-picker-txt{max-width:60px}.mode-switcher-sep{margin-left:2px;margin-right:2px}}@media(max-width:900px){.site-picker-txt,.zone-picker-txt,.zone-picker-div{display:none}.logo-img{height:26px}}.site-picker-txt,.zone-picker-txt{display:inline-block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;vertical-align:bottom;max-width:140px}.statusbar{flex-wrap:nowrap}.sb-left{flex:1 1 0;min-width:0;overflow:hidden}.sb-center{flex:0 0 auto}.sb-right{flex:1 1 0;min-width:0;justify-content:flex-end}@media(max-width:1000px){.sb-center .sb-btn>span{display:none}.sb-center .sb-btn{padding-left:8px;padding-right:8px}}@media(max-width:920px){.sb-left{flex:0 1 auto}.sb-right{flex:1 1 auto}}.sb-coord{white-space:nowrap}@media(max-width:1400px){.sb-btn>span{display:none}.sb-btn{padding-left:8px;padding-right:8px}}@media(max-width:1150px){.sb-coord{display:none}}@media(max-width:980px){.grid-scale-wrap{display:none}}@media(max-width:1240px){.sr{width:262px}:root{--sr-edge: 274px}}@media(max-width:1080px){.sr{width:242px}:root{--sr-edge: 254px}}.align-bar{max-width:calc(100vw - 32px);flex-wrap:wrap;justify-content:center}.align-btn-ic{display:inline-flex;align-items:center;justify-content:center;width:28px;padding:0}.align-btn-ic .ic{width:15px;height:15px}.align-btn-ic.danger{color:var(--danger, #E5484D)}.align-btn-ic.danger:hover{background:#fef2f2;border-color:#fecaca}.align-btn:disabled{opacity:.35;cursor:not-allowed}.align-btn:disabled:hover{background:transparent;border-color:transparent}.acct-btn{display:inline-flex;align-items:center;gap:6px;height:30px;padding:0 8px 0 5px;border-radius:8px;cursor:pointer;border:1px solid transparent;background:transparent;transition:background var(--dur-fast) var(--ease)}.acct-btn:hover{background:var(--surface-hover)}.acct-avatar{width:22px;height:22px;border-radius:50%;flex:none;display:inline-flex;align-items:center;justify-content:center;background:linear-gradient(180deg,#3b82f6,#2563eb);color:#fff;font-size:11px;font-weight:700;font-family:var(--font-ui)}.acct-name{font-size:12px;color:var(--text);font-weight:500;white-space:nowrap;max-width:76px;overflow:hidden;text-overflow:ellipsis}.sb-zoom{min-width:46px;text-align:center;font-family:var(--font-mono);font-size:11px;background:transparent;border:1px solid transparent;color:inherit;padding:2px 4px;border-radius:5px;cursor:pointer;transition:background var(--dur-fast) var(--ease)}.sb-zoom:hover,.sb-zoom.open{background:var(--surface-hover);color:var(--ink-primary)}.sb-zoom-menu{right:auto;left:50%;transform:translate(-50%);min-width:176px;padding:5px;display:flex;flex-direction:column;gap:1px}.sb-zoom-menu[hidden]{display:none!important}.sb-menu-item{display:flex;align-items:center;justify-content:space-between;gap:16px;background:transparent;border:none;color:var(--ink-secondary);font-size:12px;font-family:var(--font-ui);text-align:left;white-space:nowrap;padding:6px 9px;border-radius:6px;cursor:pointer;transition:background var(--dur-fast) var(--ease),color var(--dur-fast) var(--ease)}.sb-menu-item:hover{background:var(--accent-bg);color:var(--accent)}.sb-menu-item[disabled]{opacity:.38;pointer-events:none}.sb-menu-item kbd{font-family:var(--font-mono);font-size:10px;color:var(--ink-muted);background:var(--surface-sunken, rgba(0,0,0,.04));border-radius:4px;padding:1px 5px}.sb-menu-sep{height:1px;background:var(--line);margin:4px 2px}.ehs-sheet.framing{background:var(--accent-bg);box-shadow:inset 3px 0 0 var(--accent)}.ehs-sheet.framing .ehs-sheet-dot{background:var(--accent)}.sb-act{display:inline-flex;align-items:center;justify-content:center;width:22px;height:20px;padding:0;flex:none;border:none;background:transparent;color:var(--muted-strong);border-radius:5px;cursor:pointer;transition:color var(--dur-fast) var(--ease),background var(--dur-fast) var(--ease)}.sb-act .ic{width:14px;height:14px}.sb-act:hover:not(:disabled){color:var(--primary);background:#2563eb14}.sb-act:disabled{opacity:.3;cursor:default}.save-state{display:inline-flex;align-items:center;gap:4px;flex:none;padding:2px 8px 2px 6px;border-radius:var(--r-pill);font-size:11px;font-weight:500;white-space:nowrap;transition:color var(--dur-fast) var(--ease),background var(--dur-fast) var(--ease)}.save-state .ic{width:13px;height:13px}.save-state .ss-ago{font-family:var(--font-mono);font-size:10.5px;opacity:.78}.save-state.ok{color:var(--ink-muted);background:transparent;animation:ss-settle 1.1s var(--ease) 1}@keyframes ss-settle{0%,45%{color:#3fa45b;background:#3fa45b26}to{color:var(--ink-muted);background:transparent}}.save-state.ok .ic{animation:ss-pop .4s cubic-bezier(.2,.9,.3,1.15) 1}@keyframes ss-pop{0%{transform:scale(.55);opacity:0}to{transform:scale(1);opacity:1}}.save-state.dirty{color:#b45309;background:#f59e0b1a}.save-state.dirty .ic{animation:ss-breathe 1.9s ease-in-out infinite}@keyframes ss-breathe{50%{opacity:.42}}.save-state.busy{color:var(--accent);background:var(--accent-bg)}.save-state.busy .ic{animation:save-spin .85s linear infinite}@keyframes save-spin{to{transform:rotate(360deg)}}.save-state.err{color:var(--danger, #E5484D);background:#e5484d1a}.save-state.err .ic{animation:save-blink .9s ease-in-out 3}@keyframes save-blink{50%{opacity:.25}}.save-state.offline{color:#475569;background:#4755691a}.save-state.offline .ic{animation:ss-breathe 2.4s ease-in-out infinite}@media(max-width:1180px){.save-state .ss-ago{display:none}}@media(max-width:1000px){.save-state .ss-t{display:none}.save-state{padding:2px 6px}}@media(prefers-reduced-motion:reduce){.save-state,.save-state .ic{animation:none!important}}.lodp-presets{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin-bottom:14px}.lodp-preset{text-align:left;padding:12px 13px;border-radius:10px;cursor:pointer;border:1.5px solid var(--line);background:var(--surface);display:flex;flex-direction:column;gap:5px;transition:border-color var(--dur-fast) var(--ease),background var(--dur-fast) var(--ease)}.lodp-preset:hover{border-color:var(--accent)}.lodp-preset.on{border-color:var(--accent);background:var(--accent-bg)}.lodp-preset b{font-size:13px;color:var(--ink-primary)}.lodp-preset span{font-size:11px;line-height:1.55;color:var(--ink-secondary)}.lodp-preset-custom{font-size:12px;color:var(--ink-secondary);background:var(--surface-hover);border-radius:8px;padding:8px 11px;margin-bottom:14px}.lodp-meter{border-radius:9px;padding:10px 12px;margin-bottom:14px;background:var(--surface-hover);border-left:3px solid var(--ink-muted)}.lodp-meter.good{border-left-color:#3fa45b;background:#3fa45b12}.lodp-meter.ok{border-left-color:#2563eb;background:var(--accent-bg)}.lodp-meter.warn{border-left-color:#f59e0b;background:#f59e0b17}.lodp-meter.bad{border-left-color:#e5484d;background:#e5484d17}.lodp-meter-top{display:flex;align-items:center;gap:8px;font-size:12.5px;color:var(--ink-primary)}.lodp-meter-top b{font-weight:600}.lodp-meter-re{margin-left:auto;font-size:11px;padding:3px 9px;border-radius:6px;cursor:pointer;border:1px solid var(--line);background:var(--surface);color:var(--ink-secondary)}.lodp-meter-re:hover{border-color:var(--accent);color:var(--accent)}.lodp-meter-sub{font-size:11px;line-height:1.6;color:var(--ink-secondary);margin-top:5px}.lodp-tag{font-size:10px;padding:1px 6px;border-radius:4px;margin-left:7px;font-weight:500;vertical-align:middle}.lodp-tag.perf{color:#b45309;background:#f59e0b24}.lodp-tag.look{color:var(--ink-muted);background:var(--surface-hover)}.lodp-row-cat{color:var(--ink-muted);font-weight:var(--fw-regular);font-size:var(--fs-mini)}.lodp-cat-desc{font-size:12px;line-height:1.6;color:var(--ink-secondary);margin:0 0 12px}.lodp-fixed{border-top:1px solid var(--line);padding-top:12px;margin-top:4px}.lodp-fixed-t{font-size:11px;color:var(--ink-muted);margin-bottom:7px}.lodp-fixed-i{font-size:11.5px;line-height:1.65;color:var(--ink-secondary);padding-left:13px;position:relative;margin-bottom:5px}.lodp-fixed-i:before{content:"·";position:absolute;left:3px;color:var(--ink-muted)}.sa-toolbox{width:208px}.sa-import{display:flex;flex-direction:column;align-items:center;gap:3px;padding:14px 10px;margin-bottom:10px;cursor:pointer;border:1.5px dashed var(--line);border-radius:10px;background:var(--surface);transition:border-color var(--dur-fast) var(--ease),background var(--dur-fast) var(--ease)}.sa-import:hover{border-color:var(--accent);background:var(--accent-bg)}.sa-import .ic{width:20px;height:20px;color:var(--accent)}.sa-import b{font-size:12.5px;color:var(--ink-primary)}.sa-import em{font-size:10.5px;color:var(--ink-muted);font-style:normal}.sa-state{font-size:11px;line-height:1.7;color:var(--ink-secondary);background:var(--surface-hover);border-radius:7px;padding:8px 10px;margin-bottom:10px}.sa-state.err{color:#e5484d;background:#e5484d17}.sa-state b{color:var(--ink-primary)}.sa-state .sa-bad{color:#e5484d}.sa-state .sa-warn{color:#b45309}.sa-legend{margin-bottom:10px}.sa-legend-t{font-size:10px;color:var(--ink-muted);margin-bottom:5px}.sa-legend-i{display:flex;align-items:center;gap:6px;font-size:11px;color:var(--ink-secondary);padding:2px 0}.sa-legend-i i{width:11px;height:11px;border-radius:3px;flex:none;opacity:.75}.sa-search{position:absolute;top:14px;left:50%;transform:translate(-50%);z-index:60;display:flex;align-items:center;gap:7px;width:340px;max-width:calc(100% - 260px);padding:7px 10px;border-radius:10px;background:var(--surface);border:1px solid var(--line);box-shadow:var(--shadow-float)}.sa-search .ic{width:15px;height:15px;color:var(--ink-muted);flex:none}.sa-search input{flex:1;min-width:0;border:none;outline:none;background:transparent;font-size:12.5px;color:var(--ink-primary);font-family:var(--font-mono)}.sa-search-hit{font-size:10.5px;color:var(--ink-muted);white-space:nowrap}.sa-search-x{border:none;background:transparent;color:var(--ink-muted);cursor:pointer;font-size:12px;padding:0 2px}.sa-search-x:hover{color:var(--ink-primary)}.sa-search-drop{position:absolute;left:0;right:0;top:calc(100% + 5px);max-height:264px;overflow-y:auto;background:var(--surface);border:1px solid var(--line);border-radius:10px;box-shadow:var(--shadow-float);padding:4px}.sa-search-item{display:flex;align-items:center;justify-content:space-between;gap:10px;width:100%;border:none;background:transparent;cursor:pointer;padding:6px 8px;border-radius:6px;font-size:12px;color:var(--ink-secondary);text-align:left}.sa-search-item:hover{background:var(--accent-bg)}.sa-search-item b{font-family:var(--font-mono);color:var(--ink-primary)}.sa-dot{display:inline-block;width:7px;height:7px;border-radius:50%;margin-right:5px}.sa-dot.ok{background:#3fa45b}.sa-dot.bad{background:#e5484d}.sa-body{padding:12px;overflow-y:auto}.sa-empty{text-align:center;padding:34px 18px;color:var(--ink-secondary)}.sa-empty .ic{width:30px;height:30px;opacity:.35;margin-bottom:10px}.sa-empty b{display:block;font-size:13px;color:var(--ink-primary);margin-bottom:8px}.sa-empty p{font-size:11.5px;line-height:1.75;margin:0 0 8px}.sa-empty-note{color:var(--ink-muted)}.sa-kpis{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-bottom:14px}.sa-kpi{padding:10px;border-radius:9px;background:var(--surface-hover);border-left:3px solid var(--ink-muted)}.sa-kpi.good{border-left-color:#3fa45b;background:#3fa45b12}.sa-kpi.ok{border-left-color:#f59e0b;background:#f59e0b14}.sa-kpi.bad{border-left-color:#e5484d;background:#e5484d14}.sa-kpi.warn{border-left-color:#f59e0b;background:#f59e0b14}.sa-kpi b{display:block;font-size:19px;font-weight:700;color:var(--ink-primary);line-height:1.2}.sa-kpi span{display:block;font-size:11px;color:var(--ink-secondary);margin-top:1px}.sa-kpi em{display:block;font-size:10px;color:var(--ink-muted);font-style:normal;margin-top:3px}.sa-sec{margin-bottom:18px}.sa-sec h4{display:flex;align-items:center;gap:7px;font-size:12.5px;margin:0 0 8px;color:var(--ink-primary)}.sa-sec h4 em{font-style:normal;font-size:10.5px;color:var(--ink-muted);font-weight:400}.sa-exp{margin-left:auto;font-size:10.5px;padding:2px 8px;border-radius:5px;cursor:pointer;border:1px solid var(--line);background:var(--surface);color:var(--ink-secondary)}.sa-exp:hover{border-color:var(--accent);color:var(--accent)}.sa-note{font-size:11px;line-height:1.7;color:var(--ink-secondary);margin:0 0 8px}.sa-note.bad{color:#b45309;background:#f59e0b17;padding:8px 10px;border-radius:7px}.sa-dim{color:var(--ink-muted)}.sa-bad{color:#e5484d}.sa-matrix,.sa-dist{width:100%;border-collapse:collapse;font-size:11.5px}.sa-matrix th,.sa-dist th{color:var(--ink-secondary);font-weight:500;padding:5px}.sa-matrix td{text-align:center;padding:3px}.sa-matrix td button{width:100%;border:none;border-radius:5px;cursor:pointer;padding:7px 0;font-size:12px;font-weight:600;color:#fff}.sa-matrix td.ok button{background:#3fa45b}.sa-matrix td.slow button{background:#e5484d}.sa-matrix td.waste button{background:#f59e0b}.sa-matrix td.z{color:var(--ink-muted)}.sa-matrix-key{margin-top:7px;display:flex;flex-direction:column;gap:3px}.sa-matrix-key span{font-size:10.5px;color:var(--ink-secondary);display:flex;align-items:center;gap:5px}.sa-matrix-key i{width:9px;height:9px;border-radius:2px}.sa-matrix-key i.ok{background:#3fa45b}.sa-matrix-key i.slow{background:#e5484d}.sa-matrix-key i.waste{background:#f59e0b}.sa-dist td{text-align:center;padding:5px;color:var(--ink-primary)}.sa-dist td i{display:block;font-style:normal;font-size:10px;color:var(--ink-muted)}.sa-swaps{display:flex;flex-direction:column;gap:6px}.sa-swap{display:flex;gap:8px;padding:8px;border-radius:8px;background:var(--surface-hover)}.sa-swap-n{font-size:10px;color:var(--ink-muted);flex:none;width:16px}.sa-swap-b{flex:1;min-width:0;font-size:11px}.sa-swap-b i{font-style:normal;color:var(--ink-secondary);margin-left:6px}.sa-swap-b em{font-style:normal;color:var(--ink-muted);margin-left:6px;font-size:10px}.sa-swap-ar{color:var(--accent);font-size:13px;margin:2px 0}.sa-code{border:none;background:transparent;cursor:pointer;padding:1px 4px;border-radius:4px;font-family:var(--font-mono);font-size:11px;color:var(--accent)}.sa-code:hover{background:var(--accent-bg);text-decoration:underline}.sa-codes{display:flex;flex-wrap:wrap;gap:3px}.sa-more{font-size:10.5px;color:var(--ink-muted);align-self:center}.sa-map{width:560px;max-width:calc(100vw - 40px)}.sa-map-sub{font-size:11.5px;line-height:1.7;color:var(--ink-secondary);margin:0 0 14px}.sa-map-row{display:grid;grid-template-columns:132px 1fr;gap:8px 10px;align-items:center;margin-bottom:12px}.sa-map-l{font-size:12px;color:var(--ink-primary)}.sa-map-l i{font-style:normal;font-size:9.5px;color:#e5484d;margin-left:5px}.sa-map-row select{padding:5px 8px;border-radius:6px;border:1px solid var(--line);font-size:12px;background:var(--surface);color:var(--ink-primary)}.sa-map-row em{grid-column:2;font-style:normal;font-size:10.5px;line-height:1.6;color:var(--ink-muted);margin-top:-2px}body.sa-mode .sr{width:360px}body.sa-mode{--sr-edge: 372px}@media(max-width:1280px){body.sa-mode .sr{width:320px}body.sa-mode{--sr-edge: 332px}}.sa-head{display:flex;gap:6px;margin-bottom:8px}.sa-imp-btn{flex:1;display:inline-flex;align-items:center;justify-content:center;gap:6px;padding:8px 12px;border-radius:8px;cursor:pointer;border:1px solid var(--accent);background:var(--accent-bg);color:var(--accent);font-size:12.5px;font-weight:500;transition:background var(--dur-fast) var(--ease)}.sa-imp-btn:hover{background:var(--accent);color:#fff}.sa-imp-btn .ic{width:15px;height:15px}.sa-imp-x{padding:8px 12px;border-radius:8px;cursor:pointer;font-size:12px;border:1px solid var(--line);background:var(--surface);color:var(--ink-secondary)}.sa-imp-x:hover{border-color:#e5484d;color:#e5484d}.sa-file-tip{font-size:10.5px;color:var(--ink-muted);margin-bottom:8px}.sa-imp-modal{width:460px;max-width:calc(100vw - 40px)}.sa-drop{display:flex;flex-direction:column;align-items:center;gap:5px;padding:30px 20px;margin-bottom:16px;cursor:pointer;border:1.5px dashed var(--line);border-radius:12px;background:var(--surface-hover);transition:border-color var(--dur-fast) var(--ease),background var(--dur-fast) var(--ease)}.sa-drop:hover,.sa-drop.on{border-color:var(--accent);background:var(--accent-bg)}.sa-drop .ic{width:26px;height:26px;color:var(--accent)}.sa-drop b{font-size:13px;color:var(--ink-primary)}.sa-drop em{font-size:11px;color:var(--ink-muted);font-style:normal}.sa-need-t{font-size:12px;color:var(--ink-primary);margin-bottom:8px}.sa-need-i{display:grid;grid-template-columns:138px 1fr;gap:10px;align-items:baseline;font-size:11.5px;padding:4px 0}.sa-need-i b{color:var(--ink-primary);font-weight:500}.sa-need-i span{color:var(--ink-secondary)}.sa-need-i.dim b,.sa-need-i.dim span{color:var(--ink-muted)}.sa-need-p{font-size:11px;line-height:1.7;color:var(--ink-muted);margin:10px 0 0}.sa-legend-sec{border-top:1px solid var(--line);padding-top:12px}.sa-legend-row{display:flex;flex-wrap:wrap;gap:6px 14px}.sa-legend-row span{display:inline-flex;align-items:center;gap:5px;font-size:10.5px;color:var(--ink-secondary)}.sa-legend-row i{width:10px;height:10px;border-radius:3px;opacity:.8}
