:root{color-scheme:light;--bg: #f5f7fb;--surface: #ffffff;--surface-2: #f0f3f9;--surface-elevated: #ffffff;--th-bg: #f8fafc;--row-hover: #f5f8fd;--row-zebra: #fafbfe;--border: #e3e8f0;--border-weak: #edf1f7;--border-strong: #c9d3e0;--overlay: rgba(15, 23, 42, .5);--overlay-soft: rgba(15, 23, 42, .35);--text: #131c2e;--text-soft: #5d6b81;--text-muted: #93a1b5;--accent: #4f46e5;--accent-hover: #4338ca;--accent-active: #3730a3;--accent-soft: #eef1fe;--accent-weak: #dfe4fd;--accent-bright: #818cf8;--on-accent: #ffffff;--tag-info: #1d4ed8;--tag-cyan: #0e7490;--tag-purple: #7c3aed;--tag-pink: #be185d;--pending: #b45309;--pending-bg: #fdf3e3;--warning: #b45309;--success: #047857;--available: #047857;--available-bg: #e8f6ef;--restricted: #854d0e;--restricted-bg: #fbf4dc;--quarantine: #b91c1c;--quarantine-bg: #fdecec;--scrap: #5b6b7b;--scrap-bg: #eef2f7;--danger: #b91c1c;--danger-bg: #feecec;--danger-hover: #991b1b;--on-danger: #ffffff;--danger-border: rgba(239, 68, 68, .25);--success-border: rgba(5, 150, 105, .3);--success-ghost: rgba(5, 150, 105, .08);--success-ghost-strong: rgba(5, 150, 105, .18);--online: #16a34a;--op-info: #1677cc;--op-info-bg: #e8f4fe;--op-info-border: #90c8f2;--op-primary: #3552e0;--op-primary-bg: #e9edfe;--op-primary-border: #aebbf5;--op-danger: #d93036;--op-danger-bg: #feebec;--op-danger-border: #f5b8ba;--op-success: #157f52;--op-success-bg: #e7f6ee;--op-success-border: #9bd9bf;--op-warn: #b45309;--op-warn-bg: #fdf1e0;--op-warn-border: #efc48c;--btn-soft: rgba(255, 255, 255, .8);--op-neutral: #64748b;--op-neutral-bg: #eef2f7;--op-neutral-border: #c9d3e0;--op-purple: #7c3aed;--op-purple-bg: #f3ecfe;--op-purple-border: #cbb4f7;--sidebar-bg: #101828;--sidebar-border: rgba(255, 255, 255, .08);--sidebar-hover: rgba(255, 255, 255, .05);--sidebar-text: #9aa7bb;--sidebar-text-strong: #e4e9f2;--sidebar-group: #64748b;--sidebar-active-bg: rgba(99, 102, 241, .22);--sidebar-active-fg: #ffffff;--sidebar-footer-bg: rgba(0, 0, 0, .22);--flyout-bg: #1a2334;--flyout-border: rgba(255, 255, 255, .09);--flyout-hover-bg: rgba(99, 102, 241, .32);--sidebar-btn-hover-bg: rgba(99, 102, 241, .2);--sidebar-btn-hover-fg: #a5b4fc;--sidebar-logout-hover-bg: rgba(220, 38, 38, .2);--sidebar-logout-hover-fg: #f87171;--auth-bg-1: #0f172a;--auth-bg-2: #1e1b4b;--auth-bg-3: #312e81;--auth-glow: #6366f1;--auth-hud: #818cf8;--auth-muted: #94a3b8;--auth-soft: #cbd5e1;--cmd-1: #0f172a;--cmd-2: #1e293b;--cmd-3: #1e3a5f;--cmd-s1: #1e293b;--cmd-s2: #0f172a;--cmd-sub: #64748b;--dash-grid: rgba(79, 70, 229, .04);--shadow-xs: 0 1px 2px rgba(15, 23, 42, .04);--shadow-sm: 0 1px 3px rgba(15, 23, 42, .06), 0 1px 2px rgba(15, 23, 42, .04);--shadow-md: 0 4px 10px rgba(15, 23, 42, .06), 0 2px 4px rgba(15, 23, 42, .04);--shadow-lg: 0 12px 28px rgba(15, 23, 42, .12);--sidebar-width: 240px;--topbar-height: 64px;--radius-sm: 6px;--radius: 10px;--radius-lg: 14px}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{font-family:Segoe UI,Microsoft YaHei,system-ui,-apple-system,sans-serif;font-size:14px;line-height:1.5;color:var(--text);background:var(--bg);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.layout{display:flex;height:100vh;height:100dvh;overflow:hidden}.content{flex:1;display:flex;flex-direction:column;min-width:0}.sidebar{width:var(--sidebar-width);flex-shrink:0;background:var(--sidebar-bg);color:var(--sidebar-text-strong);display:flex;flex-direction:column;padding:0;overflow:hidden;z-index:60;transition:width .22s ease,padding .22s ease}.sidebar .brand{display:flex;align-items:center;gap:10px;padding:0 20px 18px;font-size:16px;font-weight:700;color:var(--sidebar-text-strong);border-bottom:1px solid var(--sidebar-border);margin-bottom:10px}.brand-dot{width:9px;height:9px;border-radius:50%;background:var(--accent);box-shadow:0 0 0 4px color-mix(in srgb,var(--accent) 25%,transparent)}.nav-group{margin-bottom:6px}.nav-group-title{padding:14px 20px 6px;font-size:11px;font-weight:600;color:var(--sidebar-group);text-transform:uppercase;letter-spacing:.04em}.nav-item{display:flex;align-items:center;gap:12px;padding:10px 18px;margin:0 10px;color:var(--sidebar-text);text-decoration:none;cursor:pointer;border-radius:var(--radius-sm);font-size:13.5px;transition:background .15s,color .15s}.nav-item:hover{background:var(--sidebar-hover);color:var(--sidebar-text-strong)}.nav-item.active{background:var(--sidebar-active-bg);color:var(--sidebar-active-fg);font-weight:600}.nav-item.active svg{color:var(--accent)}.topbar{height:var(--topbar-height);flex-shrink:0;background:var(--surface);border-bottom:1px solid var(--border);display:flex;align-items:center;justify-content:space-between;padding:0 24px;gap:16px}.topbar-left{display:flex;align-items:center;gap:14px;min-width:0}.topbar-title{font-size:18px;font-weight:700;color:var(--text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.topbar-hint{font-size:12px;color:var(--text-soft);display:none}@media (min-width: 768px){.topbar-hint{display:inline}}.menu-btn{display:none;width:34px;height:34px;align-items:center;justify-content:center;border:none;border-radius:var(--radius-sm);background:transparent;color:var(--text-soft);cursor:pointer;box-shadow:none}.menu-btn:hover{background:var(--surface-2);color:var(--text)}.main{flex:1;overflow:hidden;padding:0;display:flex;flex-direction:column}.main>div{display:flex;flex-direction:column;flex:1;min-height:0;overflow:hidden;padding:12px 28px}.main>div>*{flex-shrink:0}.main>div>.table-wrap{flex:1;min-height:0;overflow:auto}.page-title,.page-desc,.page-title-hidden{display:none}.card,.panel,.panel-box{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow-sm)}.card-header,.panel-head,.card-title{display:flex;align-items:center;justify-content:space-between;padding:14px 18px;border-bottom:1px solid var(--border);font-weight:700;font-size:14px;color:var(--text)}.toolbar{display:flex;gap:10px;align-items:center;flex-wrap:wrap;margin-bottom:18px}.filter-bar{display:flex;gap:8px;align-items:flex-end;flex-wrap:wrap;margin-bottom:14px;padding:10px 14px;background:var(--th-bg);border:1px solid var(--border);border-radius:var(--radius-sm)}.filter-item{display:flex;flex-direction:column;gap:2px}.filter-label{font-size:11px;color:var(--text-tertiary);font-weight:500;padding-left:2px}.filter-bar input,.filter-bar select{width:auto;min-width:130px;height:32px;font-size:13px}.filter-bar button{height:32px}.filter-extra{display:flex;align-items:center;gap:12px;margin-bottom:10px}.filter-chk{display:inline-flex;align-items:center;gap:5px;font-size:13px;color:var(--text-soft);cursor:pointer;-webkit-user-select:none;user-select:none}.filter-chk input{cursor:pointer}input,select,textarea{height:36px;padding:0 12px;border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--surface);font-size:14px;color:var(--text);box-shadow:var(--shadow-xs);transition:border-color .15s,box-shadow .15s}input:focus,select:focus,textarea:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-weak)}input::placeholder{color:var(--text-muted)}select{cursor:pointer}input[type=checkbox],input[type=radio]{width:auto;min-width:0;height:auto;padding:0;border:0;background:none;box-shadow:none;accent-color:var(--accent);cursor:pointer}button,.btn{height:36px;padding:0 16px;border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--surface);cursor:pointer;font-size:14px;font-weight:500;display:inline-flex;align-items:center;justify-content:center;gap:6px;color:var(--text);box-shadow:var(--shadow-xs);transition:background .15s,border-color .15s,color .15s,transform .05s}button:hover,.btn:hover{border-color:var(--border-strong);background:var(--th-bg)}button:active,.btn:active{transform:translateY(1px)}button:disabled,.btn:disabled{opacity:.5;cursor:not-allowed}button.primary,.btn.primary{background:var(--accent);border-color:var(--accent);color:var(--on-accent);box-shadow:var(--shadow-sm)}button.primary:hover,.btn.primary:hover{background:var(--accent-hover);border-color:var(--accent-hover)}button.primary:active,.btn.primary:active{background:var(--accent-active);border-color:var(--accent-active)}button.danger,.btn.danger{background:var(--danger);border-color:var(--danger);color:var(--on-danger)}button.danger:hover,.btn.danger:hover{background:var(--danger-hover);border-color:var(--danger-hover)}button.ghost,.btn.ghost{background:transparent;border-color:transparent;box-shadow:none}button.ghost:hover,.btn.ghost:hover{background:var(--surface-2)}.icon-btn{width:32px;height:32px;padding:0;display:inline-flex;align-items:center;justify-content:center;border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--surface);cursor:pointer;color:var(--text-soft);box-shadow:var(--shadow-xs)}.icon-btn:hover{border-color:var(--accent);color:var(--accent);background:var(--accent-soft)}.btn-sm{height:26px;padding:0 10px;border-radius:var(--radius-sm);background:var(--accent);color:var(--on-accent);border:none;cursor:pointer;font-size:12px;white-space:nowrap;transition:all .15s}.btn-sm:hover{opacity:.85;background:var(--accent)}.op-btn{display:inline-flex;align-items:center;gap:4px;height:28px;padding:0 8px;border-radius:var(--radius-sm);background:var(--surface);cursor:pointer;font-size:12px;white-space:nowrap;transition:all .15s;border:1px solid}.op-btn-view{color:var(--op-info);border-color:var(--op-info-border)}.op-btn-view:hover{background:var(--op-info-bg);border-color:var(--op-info)}.op-btn-edit{color:var(--op-primary);border-color:var(--op-primary-border)}.op-btn-edit:hover{background:var(--op-primary-bg);border-color:var(--op-primary)}.op-btn-del{color:var(--op-danger);border-color:var(--op-danger-border)}.op-btn-del:hover{background:var(--op-danger-bg);border-color:var(--op-danger)}.op-btn-ok{color:var(--op-success);border-color:var(--op-success-border)}.op-btn-ok:hover{background:var(--op-success-bg);border-color:var(--op-success)}.op-btn-warn{color:var(--op-warn);border-color:var(--op-warn-border)}.op-btn-warn:hover{background:var(--op-warn-bg);border-color:var(--op-warn)}.op-btn-gray{color:var(--op-neutral);border-color:var(--op-neutral-border)}.op-btn-gray:hover{background:var(--op-neutral-bg);border-color:var(--op-neutral)}.op-btn-purple{color:var(--op-purple);border-color:var(--op-purple-border)}.op-btn-purple:hover{background:var(--op-purple-bg);border-color:var(--op-purple)}.table-wrap{overflow:auto;border:1px solid var(--border);border-radius:var(--radius);background:var(--surface);box-shadow:var(--shadow-xs)}table{width:100%;border-collapse:collapse;font-size:13px;background:var(--surface)}th,td{text-align:left;padding:10px 14px;border-bottom:1px solid var(--border);border-right:1px solid var(--border-weak);white-space:nowrap;vertical-align:middle}td{line-height:1.5}th{color:var(--text-soft);font-weight:700;background:var(--th-bg);position:sticky;top:0;z-index:5;font-size:12px;text-transform:uppercase;letter-spacing:.04em;border-bottom:1px solid var(--border-strong)}th:first-child,td:first-child{padding-left:16px}th:last-child,td:last-child{padding-right:16px}tbody tr{transition:background .1s}tbody tr:nth-child(2n){background:var(--row-zebra)}tbody tr:hover{background:var(--row-hover)}tbody tr:last-child td{border-bottom:none}td.num{text-align:right;font-variant-numeric:tabular-nums}.dict-layout{display:flex;gap:16px;flex:1;min-height:0}.dict-sidebar{width:220px;flex-shrink:0;position:sticky;top:20px;display:flex;flex-direction:column;gap:10px}.dict-search{position:relative}.dict-search input{width:100%;height:34px;padding:0 10px 0 32px;font-size:13px;border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--surface)}.dict-search svg{position:absolute;left:10px;top:50%;transform:translateY(-50%);color:var(--text-muted)}.dict-list{max-height:calc(100vh - 220px);overflow-y:auto;border:1px solid var(--border);border-radius:var(--radius);background:var(--surface);box-shadow:var(--shadow-sm)}.dict-item{display:flex;align-items:center;gap:8px;padding:10px 14px;cursor:pointer;border-bottom:1px solid var(--border);transition:background .15s;position:relative}.dict-item:last-child{border-bottom:none}.dict-item:hover,.dict-item.active{background:var(--accent-soft)}.dict-item.active:before{content:"";position:absolute;left:0;top:0;bottom:0;width:3px;background:var(--accent)}.dict-item-info{display:flex;flex-direction:column;gap:2px;flex:1;min-width:0}.dict-item-name{font-size:13px;font-weight:500;color:var(--text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.dict-item.active .dict-item-name{font-weight:600}.dict-item-code{font-size:11px;font-family:Cascadia Code,JetBrains Mono,monospace;color:var(--text-muted)}.dict-item .edit-icon{opacity:0;transition:opacity .15s;flex-shrink:0;color:var(--text-muted);cursor:pointer}.dict-item:hover .edit-icon{opacity:1}.dict-item .edit-icon:hover{color:var(--accent)}.dict-main{flex:1;min-width:0;display:flex;flex-direction:column;min-height:0}.dict-main>.table-wrap{flex:1;min-height:0}.main>div>.report-page{flex:1;min-height:0;flex-shrink:1;display:flex;flex-direction:column;gap:16px}.report-tabs{display:flex;gap:4px;padding:5px;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow-sm);overflow-x:auto;scrollbar-width:none;flex-shrink:0}.report-tabs::-webkit-scrollbar{display:none}.report-tab{display:flex;align-items:center;gap:10px;padding:9px 16px;border:1px solid transparent;background:transparent;cursor:pointer;border-radius:var(--radius-sm);transition:all .15s;white-space:nowrap;flex-shrink:0;height:auto;box-shadow:none}.report-tab:hover{background:var(--th-bg);border-color:var(--border)}.report-tab.active{background:var(--accent-soft);border-color:var(--accent-weak);box-shadow:inset 0 0 0 1px var(--accent-weak),var(--shadow-xs)}.report-tab-icon{color:var(--text-muted);flex-shrink:0;transition:color .15s}.report-tab:hover .report-tab-icon{color:var(--text-soft)}.report-tab.active .report-tab-icon{color:var(--accent)}.report-tab-text{display:flex;flex-direction:column;gap:1px;text-align:left;line-height:1.3}.report-tab-label{font-size:13px;font-weight:700;color:var(--text)}.report-tab.active .report-tab-label{color:var(--accent)}.report-tab-desc{font-size:11px;color:var(--text-muted)}.report-summary{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;flex-shrink:0}.rpt-sum-card{display:flex;flex-direction:column;gap:4px;padding:12px 16px;background:var(--surface);border:1px solid var(--border);border-left:3px solid var(--border);border-radius:var(--radius-sm);box-shadow:var(--shadow-xs);transition:box-shadow .15s,transform .1s}.rpt-sum-card:hover{box-shadow:var(--shadow-sm);transform:translateY(-1px)}.rpt-sum-card.ok{border-left-color:var(--available)}.rpt-sum-card.err{border-left-color:var(--danger)}.rpt-sum-card.warn{border-left-color:var(--pending)}.rpt-sum-card.info{border-left-color:var(--accent)}.rpt-sum-label{font-size:11px;color:var(--text-soft);font-weight:700;text-transform:uppercase;letter-spacing:.04em}.rpt-sum-value{font-size:22px;font-weight:800;color:var(--text);font-family:Cascadia Code,JetBrains Mono,Consolas,monospace;font-variant-numeric:tabular-nums;line-height:1.2}.rpt-sum-card.ok .rpt-sum-value{color:var(--available)}.rpt-sum-card.err .rpt-sum-value{color:var(--danger)}.rpt-sum-card.warn .rpt-sum-value{color:var(--pending)}.rpt-sum-card.info .rpt-sum-value{color:var(--accent)}.report-content{display:flex;flex-direction:column;gap:14px;flex:1;min-height:0}.report-content>.table-wrap{flex:1;min-height:0;overflow:auto}.report-loading{display:flex;align-items:center;justify-content:center;height:200px;color:var(--text-soft);font-size:14px}.report-loading:before{content:"";width:22px;height:22px;border:2.5px solid var(--border);border-top-color:var(--accent);border-radius:50%;animation:rpt-spin .6s linear infinite}@keyframes rpt-spin{to{transform:rotate(360deg)}}.rpt-badge{display:inline-flex;align-items:center;justify-content:center;padding:2px 8px;border-radius:4px;font-size:12px;font-weight:600;white-space:nowrap}.rpt-badge.ok{background:var(--available-bg);color:var(--available)}.rpt-badge.err{background:var(--danger-bg);color:var(--danger)}.rpt-badge.warn{background:var(--pending-bg);color:var(--pending)}.rpt-badge.info{background:var(--accent-soft);color:var(--accent)}.tag{display:inline-flex;align-items:center;gap:5px;padding:3px 10px;border-radius:999px;font-size:12px;font-weight:600;line-height:1.4}.tag:before{content:"";width:6px;height:6px;border-radius:50%;background:currentColor}.tag.PENDING_QC{color:var(--pending);background:var(--pending-bg)}.tag.AVAILABLE{color:var(--available);background:var(--available-bg)}.tag.RESTRICTED{color:var(--restricted);background:var(--restricted-bg)}.tag.DEFECTIVE{color:var(--quarantine);background:var(--quarantine-bg)}.tag.RETURNED{color:var(--scrap);background:var(--scrap-bg)}.tag.INFO{color:var(--tag-info);background:color-mix(in srgb,var(--tag-info) 12%,var(--surface))}.tag.CYAN{color:var(--tag-cyan);background:color-mix(in srgb,var(--tag-cyan) 12%,var(--surface))}.tag.PRIMARY{color:var(--accent);background:var(--accent-soft)}.tag.PURPLE{color:var(--tag-purple);background:color-mix(in srgb,var(--tag-purple) 12%,var(--surface))}.tag.PINK{color:var(--tag-pink);background:color-mix(in srgb,var(--tag-pink) 12%,var(--surface))}.tag.GRAY,.tag.SCRAPPED{color:var(--scrap);background:var(--scrap-bg)}.tag.WARNING{color:var(--pending);background:var(--pending-bg)}.tag.DANGER,.tag.QUARANTINE{color:var(--quarantine);background:var(--quarantine-bg)}.kpi-row{display:grid;grid-template-columns:repeat(4,1fr);gap:16px;margin-bottom:22px}.kpi{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:16px 18px;box-shadow:var(--shadow-sm)}.kpi .label{color:var(--text-soft);font-size:12px;font-weight:600;text-transform:uppercase;letter-spacing:.03em}.kpi .value{font-size:24px;font-weight:700;margin-top:6px;font-variant-numeric:tabular-nums;color:var(--text)}.kpi-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:18px;display:flex;flex-direction:column;gap:12px;box-shadow:var(--shadow-sm);transition:transform .15s,box-shadow .15s}.kpi-card:hover{transform:translateY(-2px);box-shadow:var(--shadow-md)}.kpi-value{font-size:28px;font-weight:700;font-variant-numeric:tabular-nums;color:var(--text)}.msg{position:fixed;top:16px;left:50%;transform:translate(-50%);z-index:200;padding:12px 16px;border-radius:var(--radius-sm);font-size:13px;font-weight:500;display:flex;align-items:center;gap:8px;box-shadow:var(--shadow-lg);max-width:min(720px,90vw);animation:msgSlide .25s ease}@keyframes msgSlide{0%{transform:translate(-50%) translateY(-100%);opacity:0}to{transform:translate(-50%) translateY(0);opacity:1}}.msg.ok{background:var(--available-bg);color:var(--available);border:1px solid var(--success-border)}.msg.err{background:var(--quarantine-bg);color:var(--quarantine);border:1px solid var(--danger-border)}.msg>span{flex:1 1 auto;min-width:0;line-height:1.5;word-break:break-word}.next-action-btn{margin-left:auto;padding:4px 12px;border-radius:var(--radius-sm);border:1px solid var(--success-border);background:var(--success-ghost);color:var(--available);font-size:12px;font-weight:600;cursor:pointer;display:inline-flex;align-items:center;gap:4px;transition:all .15s ease}.next-action-btn:hover{background:var(--success-ghost-strong);border-color:var(--success-border)}.msg-confirm-mask{z-index:300}.msg-confirm-box{animation:msg-pop .2s ease-out}.msg-confirm-icon{width:48px;height:48px;border-radius:50%;background:var(--available-bg);display:flex;align-items:center;justify-content:center;margin:0 auto 14px;color:var(--success)}.msg-confirm-text{font-size:14px;color:var(--text);line-height:1.6;margin-bottom:16px}.msg-confirm-doc{display:flex;align-items:center;justify-content:center;gap:8px;margin-bottom:20px;font-size:13px}.msg-confirm-doc .doc-label{color:var(--text-soft)}.msg-confirm-doc .copyable{font-weight:600;color:var(--primary);font-family:Cascadia Code,JetBrains Mono,monospace}.msg-confirm-actions{display:flex;gap:8px;justify-content:center}@keyframes msg-pop{0%{transform:scale(.92);opacity:0}to{transform:scale(1);opacity:1}}.ss-wrap{position:relative}.ss-input{width:100%;cursor:pointer}.ss-input:focus{cursor:text}.ss-dropdown{position:absolute;top:100%;left:0;right:0;z-index:200;max-height:260px;overflow-y:auto;background:var(--card);border:1px solid var(--border);border-radius:0 0 6px 6px;box-shadow:var(--shadow-md)}.ss-option{padding:8px 12px;cursor:pointer;font-size:13px;color:var(--text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.ss-option:hover{background:var(--accent-soft)}.ss-option.active{background:var(--primary-soft);color:var(--primary);font-weight:600}.ss-empty{padding:16px;text-align:center;color:var(--text-soft);font-size:13px}.empty{padding:48px 24px;text-align:center;color:var(--text-soft);font-size:13px}.empty td{text-align:center}.timeline{list-style:none;padding:0;margin:0}.timeline li{display:grid;grid-template-columns:150px 130px 1fr auto;gap:14px;padding:12px 16px;border-bottom:1px solid var(--border);align-items:center;font-size:13px}.timeline li:last-child{border-bottom:none}.dir-in{color:var(--available);font-weight:700}.dir-out{color:var(--quarantine);font-weight:700}.lot-meta{display:grid;grid-template-columns:repeat(3,1fr);gap:14px;padding:16px;background:var(--th-bg);border-radius:var(--radius-sm);margin-bottom:10px;border:1px solid var(--border)}.lot-meta .k{font-size:12px;color:var(--text-soft);font-weight:600}.lot-meta .v{font-size:14px;margin-top:3px;color:var(--text)}.list-row{padding:12px 14px;cursor:pointer;border-bottom:1px solid var(--border)}.list-row:hover{background:var(--row-hover)}.list-row.active{background:var(--accent-soft);color:var(--accent);font-weight:600}.wh-list-row{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:10px 14px}.wh-row-main{display:flex;align-items:center;gap:8px;flex:1;min-width:0}.wh-code{font-weight:700;font-size:13px;white-space:nowrap}.wh-name{font-size:13px;color:var(--text-soft);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.wh-mgr{font-size:11px;color:var(--text-muted);padding:1px 6px;border-radius:4px;background:var(--surface-2);white-space:nowrap}.wh-row-ops{display:flex;align-items:center;gap:4px;flex-shrink:0}.wh-row-ops .op-btn{width:26px;height:26px;padding:0;justify-content:center}.hint{font-size:12px;color:var(--text-soft)}.modal-mask{position:fixed;top:0;right:0;bottom:0;left:0;background:var(--overlay);display:flex;align-items:flex-start;justify-content:center;padding:60px 16px 16px;z-index:100;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px)}.modal{background:var(--surface);border-radius:var(--radius-lg);box-shadow:var(--shadow-lg);max-height:86vh;display:flex;flex-direction:column;width:100%}.modal-head{display:flex;justify-content:space-between;align-items:center;padding:16px 20px;border-bottom:1px solid var(--border);font-weight:700;font-size:15px}.modal-body{padding:20px;overflow:auto}.field{display:flex;flex-direction:column;gap:5px}.field-label{font-size:12px;color:var(--text-soft);font-weight:600}.req-mark{color:var(--danger);margin-right:4px;font-weight:700}.field input,.field select,.field textarea{width:100%}.line-editor{border:1px solid var(--border);border-radius:var(--radius);padding:14px;background:var(--th-bg)}.line-head,.line-row{display:grid;grid-template-columns:2.5fr 1fr 1fr 1.5fr 40px;gap:10px;align-items:center}.line-head{font-size:12px;color:var(--text-soft);font-weight:700;padding:0 4px 8px;text-transform:uppercase;letter-spacing:.03em}.line-row{margin-bottom:8px}.line-row:last-child{margin-bottom:0}.line-row>select,.line-row>input{min-width:0;width:100%}.line-row input[type=number]::-webkit-inner-spin-button,.line-row input[type=number]::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.line-row input[type=number]{-moz-appearance:textfield}.line-row>button{width:100%;height:36px;padding:0;display:inline-flex;align-items:center;justify-content:center}.pr-line-editor{padding:12px 14px}.pr-line-head,.pr-line-row{display:grid;grid-template-columns:1fr 80px 90px 80px 1fr 36px;gap:8px;align-items:center}.pr-line-head{font-size:11px;color:var(--text-soft);font-weight:700;padding:0 2px 8px;text-transform:uppercase;letter-spacing:.03em;border-bottom:1px solid var(--border);margin-bottom:8px}.pr-line-row{margin-bottom:8px}.pr-line-row:last-of-type{margin-bottom:0}.pr-batch-cell{display:flex;gap:4px;align-items:center;min-width:0}.pr-batch-cell select,.pr-batch-cell input{flex:1;min-width:0}.pr-batch-back{flex-shrink:0;width:30px;height:30px;padding:0;display:inline-flex;align-items:center;justify-content:center;border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--surface);cursor:pointer;color:var(--text-soft)}.pr-batch-back:hover{border-color:var(--accent);color:var(--accent);background:var(--accent-soft)}.pr-line-row>select,.pr-line-row>input{min-width:0;width:100%}.pr-line-row input[type=number]::-webkit-inner-spin-button,.pr-line-row input[type=number]::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.pr-line-row input[type=number]{-moz-appearance:textfield}.line-editor>button{margin-top:6px;border-style:dashed;width:100%;justify-content:center;background:transparent}.line-editor>button:hover{background:var(--accent-soft);border-color:var(--accent);color:var(--accent)}.flow-panel{display:flex;flex-direction:column;gap:14px;margin-top:16px}.flow-section{border:1px solid var(--border);border-radius:var(--radius-sm);overflow:hidden}.flow-title{background:var(--bg-soft);padding:7px 12px;font-size:13px;font-weight:600;color:var(--text-soft);border-bottom:1px solid var(--border)}.flow-table{width:100%;font-size:13px}.flow-table th{background:var(--bg-soft);padding:5px 10px;text-align:left;font-weight:600;color:var(--text-soft);border-right:1px solid var(--border)}.flow-table td{padding:5px 10px;border-right:1px solid var(--border);border-top:1px solid var(--border)}.flow-table .num{text-align:right;font-variant-numeric:tabular-nums}.flow-empty{text-align:center;color:var(--text-soft);font-size:13px;padding:16px 0}.addr-picker{display:flex;flex-direction:column;gap:10px}.addr-row{display:flex;gap:12px}.addr-row .addr-field{flex:1}.addr-field{display:flex;flex-direction:column;gap:4px}.addr-field label{font-size:12px;font-weight:600;color:var(--text-muted)}.addr-field select,.addr-field input{padding:7px 10px;border:1px solid var(--border);border-radius:6px;font-size:13px;background:var(--surface);color:var(--text);transition:border-color .15s}.addr-field select:disabled,.addr-field input:disabled{background:var(--th-bg);color:var(--text-muted);cursor:not-allowed}.addr-field select:focus,.addr-field input:focus{border-color:var(--accent);outline:none;box-shadow:0 0 0 3px color-mix(in srgb,var(--accent) 12%,transparent)}.addr-detail{margin-top:2px}.addr-summary{font-size:13px;color:var(--text);line-height:1.7}.addr-summary .addr-label{font-weight:600;color:var(--text-muted);margin-right:6px}.ship-dual-pane{display:flex;gap:12px;min-height:280px}.ship-stock-pane,.ship-picked-pane{flex:1;border:1px solid var(--border);border-radius:6px;overflow:hidden;display:flex;flex-direction:column}.pane-title{padding:6px 10px;font-size:12px;font-weight:700;color:var(--accent);background:var(--accent-soft);border-bottom:1px solid var(--border)}.ship-stock-pane table,.ship-picked-pane table{font-size:12px}.ship-stock-pane table tbody{max-height:260px;overflow-y:auto;display:block}.ship-stock-pane table thead,.ship-stock-pane table tbody tr,.ship-picked-pane table thead,.ship-picked-pane table tbody tr{display:table;width:100%;table-layout:fixed}.ship-picked-pane table tbody{max-height:260px;overflow-y:auto;display:block}tr.row-clickable{cursor:pointer;transition:background .1s}tr.row-clickable:hover{background:var(--accent-soft)}tr.row-added{opacity:.45;cursor:not-allowed}tr.row-added td:first-child:after{content:" ✓";color:var(--success);font-weight:700}tr.row-disabled{opacity:.5}tr.row-disabled td{color:var(--text-muted)}.status-timeline{margin-top:0;margin-bottom:16px;border:1px solid var(--border);border-radius:var(--radius-sm);overflow:hidden;background:var(--surface)}.status-timeline-title{background:var(--accent-soft);padding:8px 12px;font-size:13px;font-weight:700;color:var(--accent);border-bottom:1px solid var(--border);text-align:center}.status-timeline-body{padding:22px 16px 18px;overflow-x:auto}.status-timeline-rail{display:flex;align-items:center;min-width:100%}.tl-node{display:flex;align-items:center;flex:1}.tl-node:last-child{flex:0 0 auto}.tl-dot{width:16px;height:16px;border-radius:50%;border:2.5px solid var(--border-strong);background:var(--surface);flex-shrink:0;z-index:1;transition:all .2s}.tl-node.reached .tl-dot{background:var(--success);border-color:var(--success)}.tl-node.current .tl-dot{background:var(--accent);border-color:var(--accent);box-shadow:0 0 0 5px color-mix(in srgb,var(--accent) 18%,transparent);animation:tl-pulse 1.6s ease-in-out infinite}@keyframes tl-pulse{0%,to{box-shadow:0 0 0 4px color-mix(in srgb,var(--accent) 15%,transparent)}50%{box-shadow:0 0 0 8px color-mix(in srgb,var(--accent) 8%,transparent)}}.tl-link{flex:1;display:flex;align-items:center;height:16px;min-width:30px}.tl-link.on .tl-link-line{flex:1;height:3px;background:var(--success);border-radius:2px}.tl-link.on .tl-link-arrow{width:0;height:0;border-left:8px solid var(--success);border-top:6px solid transparent;border-bottom:6px solid transparent;flex-shrink:0;margin-left:-1px}.tl-link.off .tl-link-line{flex:1;height:3px}.tl-link.off .tl-link-arrow{display:none}.status-timeline-labels{display:flex;min-width:100%;margin-top:10px}.tl-label-cell{flex:1;text-align:center}.tl-label-cell:last-child{flex:0 0 auto}.tl-label{font-size:13px;font-weight:600;color:var(--text-muted)}.tl-label-cell.reached .tl-label{color:var(--text)}.tl-label-cell.current .tl-label{color:var(--accent);font-weight:700}.tl-badge{display:inline-block;font-size:11px;padding:2px 10px;border-radius:10px;margin-top:5px;font-weight:600}.tl-label-cell.reached .tl-badge{background:var(--available-bg);color:var(--success)}.tl-label-cell.current .tl-badge{background:var(--accent-soft);color:var(--accent)}.tl-badge.pending{background:var(--surface-2);color:var(--text-muted)}.tl-time{font-size:11px;color:var(--text-muted);margin-top:4px}.flex{display:flex}.flex-between{display:flex;justify-content:space-between;align-items:center}.flex-end{display:flex;justify-content:flex-end;align-items:center}.gap-8{gap:8px}.gap-12{gap:12px}.mt-8{margin-top:8px}.mt-12{margin-top:12px}.grid-2{display:grid;grid-template-columns:repeat(2,1fr);gap:12px}.grid-3{display:grid;grid-template-columns:repeat(3,1fr);gap:12px}.grid-4{display:grid;grid-template-columns:repeat(4,1fr);gap:12px}@media (max-width: 1024px){.kpi-row,.report-summary,.dash-kpi-grid,.dash-sum-grid{grid-template-columns:repeat(2,1fr)}}.tab-bar{display:flex;align-items:center;gap:4px;padding:0 8px;background:var(--surface);border-bottom:1px solid var(--border);flex-shrink:0;height:48px}.tab-bar-menu-btn{display:none;background:none;border:none;color:var(--text-secondary);cursor:pointer;padding:0 10px;height:100%;align-items:center;flex-shrink:0}.tab-bar-menu-btn:hover{color:var(--primary)}.tab-bar-brand{display:flex;align-items:center;gap:8px;padding:0 12px 0 4px;border-right:1px solid var(--border);flex-shrink:0;height:100%}.brand-logo{color:var(--accent);flex-shrink:0}.brand-text{font-size:15px;font-weight:700;color:var(--text);white-space:nowrap}.sidebar-toggle{width:32px;height:32px;display:inline-flex;align-items:center;justify-content:center;border:none;background:transparent;color:var(--text-soft);cursor:pointer;border-radius:var(--radius-sm);box-shadow:none}.sidebar-toggle:hover{background:var(--surface-2);color:var(--text)}.sidebar-toggle.active{color:var(--accent)}.tab-list{display:flex;gap:2px;flex:1;overflow:visible;align-items:center;height:100%}.tab-bar-right{display:flex;align-items:center;gap:8px;flex-shrink:0;margin-left:auto;padding-left:8px}.tab-item{display:flex;align-items:center;gap:4px;padding:5px 10px;border-radius:var(--radius-sm);cursor:pointer;font-size:13px;color:var(--text-soft);white-space:nowrap;transition:background .15s,color .15s}.tab-item:hover{background:var(--surface-2);color:var(--text)}.tab-item.active{background:var(--accent-soft);color:var(--accent);font-weight:600}.tab-item.pinned,.tab-item.pinned .pin-icon{color:var(--accent)}.tab-close{display:inline-flex;align-items:center;justify-content:center;width:16px;height:16px;border-radius:4px;border:none;background:transparent;cursor:pointer;color:var(--text-muted);padding:0;box-shadow:none}.tab-close:hover{background:var(--danger-bg);color:var(--danger)}.ctx-menu{position:fixed;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-sm);box-shadow:var(--shadow-lg);z-index:200;padding:4px 0;min-width:120px}.ctx-item{padding:7px 16px;cursor:pointer;font-size:13px;color:var(--text);transition:background .15s}.ctx-item:hover{background:var(--accent-soft);color:var(--accent)}.backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:var(--overlay-soft);z-index:55}@media print{.sidebar,.topbar,.menu-btn{display:none}.layout{display:block;height:auto}.main{overflow:visible;padding:0}}.auth-page{display:flex;min-height:100vh;min-height:100dvh}.auth-brand-panel{flex:0 0 42%;display:flex;flex-direction:column;justify-content:center;align-items:center;position:relative;overflow:hidden;background:linear-gradient(135deg,var(--auth-bg-1) 0%,var(--auth-bg-2) 50%,var(--auth-bg-3) 100%)}.auth-brand-panel:before{content:"";position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none;background-image:linear-gradient(color-mix(in srgb,var(--auth-glow) 7%,transparent) 1px,transparent 1px),linear-gradient(90deg,color-mix(in srgb,var(--auth-glow) 7%,transparent) 1px,transparent 1px);background-size:40px 40px}.auth-brand-panel:after{content:"";position:absolute;top:-80px;right:-80px;width:280px;height:280px;background:radial-gradient(circle,color-mix(in srgb,var(--auth-glow) 18%,transparent) 0%,transparent 70%);pointer-events:none}.auth-hud{position:absolute;pointer-events:none;z-index:0}.auth-hud-gauge{width:90px;height:90px;top:14%;right:10%;border-radius:50%;border:3px solid rgba(255,255,255,.04);border-top:3px solid color-mix(in srgb,var(--auth-hud) 22%,transparent);border-right:3px solid color-mix(in srgb,var(--auth-hud) 10%,transparent)}.auth-hud-bars{width:70px;height:45px;bottom:22%;right:12%;background-image:linear-gradient(to top,color-mix(in srgb,var(--auth-hud) 20%,transparent),transparent 35%),linear-gradient(to top,color-mix(in srgb,var(--auth-hud) 12%,transparent),transparent 50%),linear-gradient(to top,color-mix(in srgb,var(--auth-hud) 18%,transparent),transparent 40%),linear-gradient(to top,color-mix(in srgb,var(--auth-hud) 8%,transparent),transparent 70%);background-size:12px 100%;background-position:0 100%,18px 100%,36px 100%,54px 100%;background-repeat:no-repeat}.auth-hud-line{width:100px;height:35px;top:18%;left:6%;opacity:.25;background:var(--auth-hud);-webkit-mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 100 40'%3E%3Cpolyline points='0,30 20,20 40,25 60,10 80,15 100,5' fill='none' stroke='%23fff' stroke-width='1.5'/%3E%3C/svg%3E") no-repeat center/contain;mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 100 40'%3E%3Cpolyline points='0,30 20,20 40,25 60,10 80,15 100,5' fill='none' stroke='%23fff' stroke-width='1.5'/%3E%3C/svg%3E") no-repeat center/contain}.auth-brand-content{position:relative;z-index:1;text-align:center;padding:40px}.auth-brand-logo{width:72px;height:72px;border-radius:18px;margin:0 auto 24px;background:color-mix(in srgb,var(--auth-glow) 15%,transparent);border:1px solid color-mix(in srgb,var(--auth-glow) 30%,transparent);display:flex;align-items:center;justify-content:center;color:var(--auth-hud)}.auth-brand-title{font-size:26px;font-weight:800;color:#fff;margin:0 0 8px;letter-spacing:.02em}.auth-brand-subtitle{font-size:14px;color:var(--auth-muted);margin:0 0 40px;letter-spacing:.05em}.auth-features{display:flex;flex-direction:column;gap:14px;text-align:left}.auth-feature{display:flex;align-items:center;gap:10px;font-size:14px;color:var(--auth-soft)}.auth-feature-dot{width:6px;height:6px;border-radius:50%;background:var(--auth-hud);flex-shrink:0}.auth-form-panel{flex:1;display:flex;align-items:center;justify-content:center;padding:40px 24px;position:relative;overflow:hidden;background:linear-gradient(180deg,var(--bg) 0%,var(--accent-soft) 100%)}.auth-form-card{width:400px;max-width:100%;position:relative;z-index:1;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);box-shadow:0 8px 30px #00000014,0 0 0 1px #00000005;padding:36px 32px 32px}.auth-form-card:before{content:"";position:absolute;top:0;left:0;right:0;height:3px;background:linear-gradient(90deg,var(--accent),var(--accent-bright),var(--accent));border-radius:var(--radius-lg) var(--radius-lg) 0 0}.auth-form-header{text-align:center;margin-bottom:24px}.auth-form-title{font-size:22px;font-weight:800;color:var(--text);margin:0 0 6px}.auth-form-subtitle{font-size:13px;color:var(--text-soft);margin:0}.auth-tabs{display:flex;gap:4px;padding:4px;background:var(--surface-2);border-radius:var(--radius);margin-bottom:24px}.auth-tab{flex:1;display:flex;align-items:center;justify-content:center;gap:8px;padding:10px;border:none;background:transparent;border-radius:var(--radius-sm);cursor:pointer;font-size:14px;font-weight:600;color:var(--text-soft);transition:all .2s;height:42px;box-shadow:none}.auth-tab:hover{color:var(--text)}.auth-tab.active{background:var(--surface);color:var(--accent);box-shadow:var(--shadow-sm);font-weight:700}.auth-form{display:flex;flex-direction:column;gap:18px}.auth-form-row{display:grid;grid-template-columns:1fr 1fr;gap:12px}.input-with-icon{position:relative;display:flex;align-items:center}.input-with-icon .input-icon{position:absolute;left:12px;color:var(--text-muted);pointer-events:none;flex-shrink:0}.input-with-icon input{width:100%;height:36px;padding:0 12px 0 38px;background:var(--surface);border:1px solid var(--border);color:var(--text);border-radius:var(--radius-sm);font-size:14px;transition:border-color .15s,box-shadow .15s}.input-with-icon input::placeholder{color:var(--text-muted)}.input-with-icon input:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft);outline:none}.input-pwd input{padding-right:38px}.input-with-icon .pwd-toggle{position:absolute;right:8px;border:none;background:transparent;cursor:pointer;color:var(--text-muted);padding:4px;border-radius:var(--radius-sm);display:flex;align-items:center;justify-content:center;box-shadow:none;height:auto;width:auto}.input-with-icon .pwd-toggle:hover{color:var(--accent);background:var(--accent-soft)}.auth-submit{width:100%;height:44px;font-size:15px;font-weight:700;margin-top:6px;display:flex;align-items:center;justify-content:center;gap:8px}.auth-spin{animation:auth-spin .6s linear infinite}@keyframes auth-spin{to{transform:rotate(360deg)}}@media (max-width: 768px){.auth-brand-panel{display:none}.auth-form-panel{flex:1}}.sidebar{position:relative;padding:0}.sidebar-header{display:flex;align-items:center;gap:10px;padding:0 16px;height:48px;flex-shrink:0;cursor:pointer;border-bottom:1px solid var(--sidebar-border);transition:background .15s}.sidebar-header:hover{background:var(--sidebar-hover)}.sidebar-logo{color:var(--accent);flex-shrink:0}.sidebar-title{font-size:14px;font-weight:700;color:var(--sidebar-text-strong);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.sidebar-footer{display:flex;align-items:center;gap:8px;padding:10px 16px;flex-shrink:0;border-top:1px solid var(--sidebar-border);background:var(--sidebar-footer-bg)}.online-dot{width:8px;height:8px;border-radius:50%;background:var(--online);box-shadow:0 0 0 3px color-mix(in srgb,var(--online) 25%,transparent);flex-shrink:0}.sidebar-user-name{font-size:13px;color:var(--sidebar-text-strong);flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.sidebar-icon-btn{width:28px;height:28px;display:inline-flex;align-items:center;justify-content:center;border:none;background:transparent;color:var(--sidebar-text);cursor:pointer;border-radius:var(--radius-sm);box-shadow:none;padding:0}.sidebar-icon-btn:hover{background:var(--sidebar-btn-hover-bg);color:var(--sidebar-btn-hover-fg)}.sidebar-logout-btn{width:28px;height:28px;display:inline-flex;align-items:center;justify-content:center;border:none;background:transparent;color:var(--sidebar-text);cursor:pointer;border-radius:var(--radius-sm);box-shadow:none;padding:0}.sidebar-logout-btn:hover{background:var(--sidebar-logout-hover-bg);color:var(--sidebar-logout-hover-fg)}.sidebar.collapsed{width:54px!important;overflow:visible}.sidebar.collapsed .sidebar-header{justify-content:center;padding:0}.sidebar.collapsed .sidebar-scroll{overflow-y:auto;overflow-x:visible}.sidebar-scroll{flex:1;overflow-y:auto;overflow-x:hidden;padding:8px 0}.nav-parent{-webkit-user-select:none;user-select:none;font-weight:600}.nav-parent.expanded{color:var(--sidebar-text-strong)}.nav-sub{margin-left:0}.nav-sub .nav-item{font-size:13px}.nav-collapse-icon{justify-content:center!important;padding:10px 0!important}.nav-collapse-group{position:relative}.nav-collapse-group:hover .nav-flyout{display:block}.nav-flyout{display:none;position:absolute;left:54px;top:0;min-width:160px;background:var(--flyout-bg);border:1px solid var(--flyout-border);border-radius:6px;padding:6px 0;z-index:200;box-shadow:var(--shadow-lg)}.nav-flyout-item{display:block;padding:8px 16px;color:var(--sidebar-text-strong);font-size:13px;text-decoration:none;white-space:nowrap;transition:background .15s}.nav-flyout-item:hover{background:var(--flyout-hover-bg);color:var(--sidebar-active-fg)}.ghost-btn{display:inline-flex;align-items:center;gap:6px;padding:8px 14px;border:1px solid var(--border);background:var(--surface);color:var(--text-soft);border-radius:var(--radius-sm);font-size:13px;cursor:pointer;transition:all .15s}.ghost-btn:hover{border-color:var(--accent);color:var(--accent);background:var(--accent-soft)}.more-tab{position:relative}.tab-more-dropdown{position:absolute;top:100%;right:0;min-width:160px;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-sm);box-shadow:var(--shadow-lg);z-index:200;padding:4px 0;max-height:320px;overflow-y:auto}.tab-more-item{display:flex;align-items:center;gap:6px;padding:7px 14px;cursor:pointer;font-size:13px;color:var(--text-soft);white-space:nowrap;transition:background .15s,color .15s}.tab-more-item:hover{background:var(--surface-2);color:var(--text)}.tab-more-item.active{background:var(--accent-soft);color:var(--accent);font-weight:600}.filter-extra{margin-left:auto;display:flex;gap:8px;align-items:center}.pagination{display:flex;align-items:center;gap:8px;flex-wrap:wrap;padding:8px 14px;margin-top:10px;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-sm);font-size:13px;color:var(--text-soft)}.pagination .page-total{font-weight:600;color:var(--text);white-space:nowrap}.pagination .page-range{color:var(--text-muted);white-space:nowrap;font-variant-numeric:tabular-nums}.pagination select{height:28px;font-size:12.5px;border:1px solid var(--border);border-radius:var(--radius-sm);padding:0 4px;background:var(--surface);color:var(--text-soft);cursor:pointer}.pagination .page-nav{margin-left:auto;display:flex;align-items:center;gap:3px}.pagination .page-btn{width:28px;height:28px;padding:0;display:inline-flex;align-items:center;justify-content:center;border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--surface);cursor:pointer;color:var(--text-soft);transition:all .15s;box-shadow:none}.pagination .page-btn:hover:not(:disabled){border-color:var(--accent);color:var(--accent);background:var(--accent-soft)}.pagination .page-btn:disabled{opacity:.35;cursor:not-allowed}.pagination .page-num-btn{min-width:28px;height:28px;padding:0 6px;display:inline-flex;align-items:center;justify-content:center;border:1px solid transparent;border-radius:var(--radius-sm);background:transparent;cursor:pointer;font-size:12.5px;font-weight:600;color:var(--text-soft);font-variant-numeric:tabular-nums;transition:all .15s;box-shadow:none}.pagination .page-num-btn:hover{background:var(--surface-2);color:var(--text)}.pagination .page-num-btn.active{background:var(--accent);border-color:var(--accent);color:var(--on-accent)}.pagination .page-gap{color:var(--text-muted);min-width:16px;text-align:center;font-size:12px}.pagination .page-jump{display:flex;align-items:center;gap:4px;font-size:12.5px;color:var(--text-soft);white-space:nowrap;margin-left:4px}.pagination .page-jump-input{width:44px;height:28px;text-align:center;padding:0 4px;font-size:12.5px;border:1px solid var(--border);border-radius:var(--radius-sm)}.copyable{display:inline-flex;align-items:center;gap:4px}.copyable .copy-btn{display:inline-flex;align-items:center;justify-content:center;width:20px;height:20px;border:none;background:transparent;cursor:pointer;color:var(--text-soft);opacity:.4;transition:opacity .15s;padding:0;border-radius:3px}.copyable .copy-btn:hover{opacity:1;color:var(--accent);background:var(--accent-soft)}.copyable .copy-btn.copy-fail{opacity:1;color:var(--danger);background:var(--danger-bg)}th.col-sn,td.col-sn{text-align:center;width:50px;min-width:50px;color:var(--text-soft);font-size:12px}.notif-bell-wrap{position:relative;flex-shrink:0}.notif-bell-btn{position:relative;display:inline-flex;align-items:center;gap:6px;height:34px;padding:0 12px;border:none;background:var(--accent);color:var(--on-accent);cursor:pointer;border-radius:var(--radius-sm);transition:all .15s;font-size:13px;font-weight:600}.notif-bell-btn:hover{background:var(--accent-hover)}.notif-bell-btn:active{opacity:.85}.notif-bell-btn svg{flex-shrink:0}.notif-bell-btn.has-unread{animation:notif-pulse 2s ease-in-out infinite}@keyframes notif-pulse{0%,to{box-shadow:0 0 color-mix(in srgb,var(--danger) 30%,transparent)}50%{box-shadow:0 0 0 4px transparent}}.notif-badge{position:absolute;top:-4px;right:-4px;min-width:18px;height:18px;padding:0 5px;background:var(--danger);color:var(--on-danger);font-size:11px;font-weight:700;line-height:18px;border-radius:9px;text-align:center;border:2px solid var(--surface)}.notif-dropdown{position:absolute;top:calc(100% + 6px);right:0;width:380px;max-width:90vw;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow-lg);z-index:300;overflow:hidden}.notif-dropdown-header{display:flex;align-items:center;justify-content:space-between;padding:12px 16px;border-bottom:1px solid var(--border);background:var(--bg)}.notif-dropdown-title{font-size:14px;font-weight:700;color:var(--text)}.notif-read-all{display:inline-flex;align-items:center;gap:4px;border:none;background:transparent;color:var(--accent);font-size:12px;cursor:pointer;padding:2px 6px;border-radius:var(--radius-sm);transition:background .15s}.notif-read-all:hover{background:var(--accent-soft)}.notif-list{max-height:420px;overflow-y:auto}.notif-empty{padding:40px 16px;text-align:center;color:var(--text-muted);font-size:13px}.notif-item{display:flex;gap:10px;padding:12px 16px;border-bottom:1px solid var(--border);cursor:pointer;transition:background .15s}.notif-item:hover{background:var(--bg)}.notif-item.unread{background:var(--accent-weak)}.notif-item.unread:hover{background:var(--accent-soft)}.notif-item-dot{width:8px;height:8px;border-radius:50%;flex-shrink:0;margin-top:6px}.notif-item-body{flex:1;min-width:0}.notif-item-top{display:flex;align-items:center;justify-content:space-between;margin-bottom:2px}.notif-item-type{font-size:11px;font-weight:600}.notif-item-time{font-size:11px;color:var(--text-muted);white-space:nowrap}.notif-item-title{font-size:13px;font-weight:600;color:var(--text);margin-bottom:2px}.notif-item-content{font-size:12px;color:var(--text-soft);line-height:1.4}.notif-item-source{font-size:11px;color:var(--text-muted);margin-top:2px;display:flex;align-items:center;gap:8px}.notif-item-link{display:inline-flex;align-items:center;gap:3px;border:none;background:transparent;padding:0;color:var(--accent);font-size:11px;cursor:pointer;text-decoration:underline}.notif-item-link:hover{color:var(--accent-hover)}.notif-item-check{color:var(--text-muted);flex-shrink:0;margin-top:6px}.notif-toast{position:fixed;top:60px;right:24px;display:flex;align-items:flex-start;gap:12px;min-width:320px;max-width:400px;padding:14px 16px;background:var(--surface);border:1px solid var(--border);border-left:4px solid var(--accent);border-radius:var(--radius);box-shadow:var(--shadow-lg);z-index:9999;animation:notif-slide-in .3s ease-out}@keyframes notif-slide-in{0%{transform:translate(100%);opacity:0}to{transform:translate(0);opacity:1}}.notif-toast-icon{flex-shrink:0;margin-top:1px}.notif-toast-body{flex:1;min-width:0}.notif-toast-title{font-size:14px;font-weight:700;color:var(--text);margin-bottom:4px}.notif-toast-content{font-size:12px;color:var(--text-soft);line-height:1.4}.notif-toast-link{display:inline-block;margin-top:6px;border:none;background:transparent;padding:0;color:var(--accent);font-size:12px;cursor:pointer;text-decoration:underline}.notif-toast-link:hover{color:var(--accent-hover)}.notif-toast-close{flex-shrink:0;width:24px;height:24px;display:inline-flex;align-items:center;justify-content:center;border:none;background:transparent;color:var(--text-muted);cursor:pointer;border-radius:var(--radius-sm);padding:0}.notif-toast-close:hover{background:var(--bg);color:var(--text)}.color-dot{display:inline-block;width:16px;height:16px;border-radius:50%;border:1px solid var(--border);vertical-align:middle}.dash-root{background-image:linear-gradient(var(--dash-grid) 1px,transparent 1px),linear-gradient(90deg,var(--dash-grid) 1px,transparent 1px);background-size:28px 28px}.dash-cmd-header{display:flex;border-radius:var(--radius);overflow:hidden;margin-bottom:14px;box-shadow:var(--shadow-md)}.dash-cmd-brand{flex:1;background:linear-gradient(135deg,var(--cmd-1),var(--cmd-2) 70%,var(--cmd-3));padding:16px 24px;position:relative;overflow:hidden}.dash-cmd-brand:before{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background-image:linear-gradient(rgba(255,255,255,.035) 1px,transparent 1px),linear-gradient(90deg,rgba(255,255,255,.035) 1px,transparent 1px);background-size:18px 18px;pointer-events:none}.dash-cmd-brand:after{content:"";position:absolute;top:-40%;right:-5%;width:280px;height:280px;background:radial-gradient(circle,rgba(245,158,11,.1) 0%,transparent 65%);pointer-events:none}.dash-cmd-title{font-size:19px;font-weight:800;color:#fff;letter-spacing:.02em;position:relative;z-index:1}.dash-cmd-sub{font-size:11px;color:var(--cmd-sub);margin-top:4px;font-family:Cascadia Code,JetBrains Mono,Consolas,monospace;letter-spacing:.04em;position:relative;z-index:1}.dash-cmd-status{display:flex;flex-direction:column;justify-content:center;gap:6px;padding:0 24px;background:linear-gradient(135deg,var(--cmd-s1),var(--cmd-s2));border-left:1px solid rgba(255,255,255,.06);min-width:170px}.dash-cmd-sig{display:flex;align-items:center;gap:8px}.dash-sig-bars{display:flex;gap:2px;align-items:flex-end}.dash-sig-bar{width:3px;border-radius:1px;background:var(--online);animation:dash-sig 2s ease-in-out infinite}.dash-sig-bar:nth-child(1){height:5px;animation-delay:0s}.dash-sig-bar:nth-child(2){height:8px;animation-delay:.15s}.dash-sig-bar:nth-child(3){height:11px;animation-delay:.3s}.dash-sig-bar:nth-child(4){height:14px;animation-delay:.45s}@keyframes dash-sig{0%,to{opacity:.35}50%{opacity:1}}.dash-cmd-sig-text{font-size:11px;font-weight:700;color:var(--online);letter-spacing:.04em}.dash-cmd-ts{font-size:11px;color:var(--cmd-sub);font-family:Cascadia Code,JetBrains Mono,Consolas,monospace;letter-spacing:.06em}.dash-kpi-grid{display:grid;gap:10px;margin-bottom:12px}.dash-kpi-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:11px 14px 9px;display:flex;flex-direction:column;gap:2px;box-shadow:var(--shadow-sm);transition:all .2s;animation:dash-card-in .4s ease backwards;position:relative;overflow:hidden}.dash-kpi-card:before{content:"";position:absolute;top:0;left:0;width:3px;height:100%;background:var(--kpi-color, var(--accent));border-radius:3px 0 0 3px}@keyframes dash-card-in{0%{opacity:0;transform:translateY(8px) scale(.98)}to{opacity:1;transform:translateY(0) scale(1)}}.dash-kpi-card:hover{transform:translateY(-2px);box-shadow:var(--shadow-lg);border-color:var(--kpi-color, var(--accent))}.dash-kpi-top{display:flex;align-items:center;justify-content:space-between}.dash-kpi-label{font-size:10px;color:var(--text-soft);font-weight:700;letter-spacing:.05em;text-transform:uppercase}.dash-kpi-icon-wrap{width:26px;height:26px;border-radius:6px;display:flex;align-items:center;justify-content:center}.dash-kpi-value{font-size:21px;font-weight:800;font-variant-numeric:tabular-nums;font-family:Cascadia Code,JetBrains Mono,Consolas,monospace;line-height:1.2;margin-top:2px}.dash-kpi-track{height:2px;background:var(--border);border-radius:1px;margin-top:6px;overflow:hidden}.dash-kpi-fill{height:100%;border-radius:1px;animation:dash-fill .8s ease backwards}@keyframes dash-fill{0%{width:0!important}}.dash-alert-bar{display:flex;align-items:center;gap:12px;padding:10px 16px;border-radius:var(--radius);margin-bottom:14px;box-shadow:var(--shadow-sm);border:1px solid var(--border);background:var(--surface)}.dash-alert-bar.danger{border-color:var(--danger-border);background:linear-gradient(90deg,var(--danger-bg),var(--surface) 45%)}.dash-alert-bar.ok{border-color:var(--success-border);background:linear-gradient(90deg,var(--available-bg),var(--surface) 45%)}.dash-alert-icon{width:34px;height:34px;border-radius:8px;display:flex;align-items:center;justify-content:center;flex-shrink:0}.dash-alert-content{display:flex;align-items:center;gap:8px;flex-wrap:wrap;flex:1}.dash-alert-chip{display:inline-flex;align-items:center;gap:4px;padding:3px 10px;border-radius:6px;font-size:12px;font-weight:700;white-space:nowrap;font-family:Cascadia Code,JetBrains Mono,Consolas,monospace}.dash-nav{display:flex;gap:4px;margin-bottom:14px;flex-shrink:0;overflow-x:auto;scrollbar-width:none}.dash-nav::-webkit-scrollbar{display:none}.dash-nav-item{display:flex;align-items:center;gap:7px;padding:8px 16px;border:1px solid var(--border);border-radius:8px;background:var(--surface);cursor:pointer;font-size:13px;font-weight:600;color:var(--text-soft);white-space:nowrap;transition:all .15s;position:relative;box-shadow:var(--shadow-xs)}.dash-nav-item:hover{color:var(--text);border-color:var(--border-strong);transform:translateY(-1px)}.dash-nav-item.active{color:var(--on-accent);background:var(--accent);border-color:var(--accent);box-shadow:0 4px 14px color-mix(in srgb,var(--accent) 30%,transparent)}.dash-nav-badge{background:var(--danger);color:var(--on-danger);font-size:10px;font-weight:800;border-radius:999px;min-width:18px;height:18px;display:flex;align-items:center;justify-content:center;padding:0 5px}.dash-content{flex:1;min-height:0;overflow:auto;animation:dash-fade .3s ease}@keyframes dash-fade{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:translateY(0)}}.dash-loading{display:flex;align-items:center;justify-content:center;height:300px;color:var(--text-soft);font-size:14px}.dash-loading:before{content:"";width:20px;height:20px;border:2px solid var(--border);border-top-color:var(--accent);border-radius:50%;margin-right:10px;animation:dash-spin .6s linear infinite}@keyframes dash-spin{to{transform:rotate(360deg)}}.dash-sum-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:16px}.dash-sum-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);overflow:hidden;box-shadow:var(--shadow-sm);transition:box-shadow .2s,border-color .2s,transform .15s}.dash-sum-card:hover{box-shadow:var(--shadow-md)}.dash-sum-card.clickable{cursor:pointer}.dash-sum-card.clickable:hover{border-color:var(--accent);transform:translateY(-2px);box-shadow:var(--shadow-lg)}.dash-sum-card.clickable:active{transform:translateY(0) scale(.99)}.dash-sum-footer{display:flex;align-items:center;justify-content:center;gap:4px;padding:8px 18px;border-top:1px solid var(--border);font-size:12px;color:var(--accent);font-weight:600;transition:background .15s}.dash-sum-card.clickable:hover .dash-sum-footer{background:var(--accent-soft)}.dash-sum-arrow{font-size:16px;opacity:.7;transition:transform .15s}.dash-sum-card.clickable:hover .dash-sum-arrow{transform:translate(3px)}.dash-sum-head{display:flex;align-items:center;justify-content:space-between;padding:14px 18px;border-bottom:1px solid var(--border);background:var(--th-bg)}.dash-sum-title{font-size:13px;font-weight:700;color:var(--text);letter-spacing:.02em}.dash-sum-total{font-size:15px;font-weight:800;color:var(--accent);font-family:Cascadia Code,JetBrains Mono,Consolas,monospace;font-variant-numeric:tabular-nums}.dash-sum-body{padding:12px 18px;display:flex;flex-direction:column;gap:10px}.dash-sum-row{display:flex;align-items:center;gap:8px}.dash-sum-dot{width:8px;height:8px;border-radius:2px;flex-shrink:0}.dash-sum-label{font-size:12px;color:var(--text-soft);white-space:nowrap;min-width:50px}.dash-sum-bar{flex:1;height:6px;background:var(--surface-2);border-radius:3px;overflow:hidden}.dash-sum-fill{height:100%;border-radius:3px;transition:width .6s ease;animation:dash-fill .8s ease backwards}.dash-sum-val{font-size:12px;font-weight:700;font-variant-numeric:tabular-nums;white-space:nowrap;font-family:Cascadia Code,JetBrains Mono,Consolas,monospace;min-width:80px;text-align:right}.dash-sum-pct{font-size:11px;color:var(--text-muted);white-space:nowrap;min-width:36px;text-align:right;font-family:Cascadia Code,JetBrains Mono,Consolas,monospace}.dash-kpi-card.clickable{cursor:pointer}.dash-kpi-card.clickable:active{transform:translateY(0) scale(.98)}.dash-alert-chip.clickable{cursor:pointer;transition:filter .15s,transform .1s}.dash-alert-chip.clickable:hover{filter:brightness(.92);transform:translateY(-1px)}.dash-alert-arrow{font-size:14px;opacity:.6;margin-left:2px}.dash-pager{display:flex;align-items:center;justify-content:flex-end;gap:8px;padding:8px 4px;font-size:12px;color:var(--text-soft)}.dash-pager-info{margin-right:auto}.dash-pager-btn{width:28px;height:28px;padding:0;border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--surface);cursor:pointer;display:flex;align-items:center;justify-content:center;font-size:16px;color:var(--text-soft);transition:all .15s}.dash-pager-btn:hover:not(:disabled){border-color:var(--accent);color:var(--accent)}.dash-pager-btn:disabled{opacity:.4;cursor:not-allowed}.dash-pager-num{font-family:Cascadia Code,JetBrains Mono,Consolas,monospace;font-weight:700;min-width:60px;text-align:center}.dash-mon-grid{display:flex;gap:20px;align-items:stretch;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:16px;box-shadow:var(--shadow-sm)}.dash-mon-reserved{display:flex;flex-direction:column;justify-content:center;align-items:center;padding:0 20px;border-right:1px solid var(--border);min-width:120px}.dash-mon-label{font-size:12px;color:var(--text-soft);margin-bottom:4px}.dash-mon-value{font-size:24px;font-weight:700;font-variant-numeric:tabular-nums}.dash-mon-cards{flex:1;display:grid;grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:12px}.dash-mon-card{position:relative;display:flex;flex-direction:column;gap:4px;padding:12px 14px;border:1px solid var(--border);border-radius:var(--radius-sm);cursor:pointer;transition:all .15s;background:var(--surface);animation:dash-fade .4s ease backwards}.dash-mon-card:hover{border-color:var(--c);transform:translateY(-2px);box-shadow:0 4px 12px color-mix(in srgb,var(--c) 15%,transparent)}.dash-mon-card:active{transform:translateY(0) scale(.98)}.dash-mon-dot{width:10px;height:10px;border-radius:3px}.dash-mon-name{font-size:12px;color:var(--text-soft);font-weight:600}.dash-mon-qty{font-size:18px;font-weight:700;font-variant-numeric:tabular-nums;font-family:Cascadia Code,JetBrains Mono,Consolas,monospace}.dash-mon-meta{display:flex;gap:4px;font-size:11px;color:var(--text-muted);font-variant-numeric:tabular-nums}.dash-mon-arrow{position:absolute;right:10px;top:50%;transform:translateY(-50%);font-size:18px;color:var(--c);opacity:0;transition:opacity .15s,transform .15s}.dash-mon-card:hover .dash-mon-arrow{opacity:.7;transform:translateY(-50%) translate(3px)}@media (max-width: 768px){body{-webkit-text-size-adjust:100%;-webkit-tap-highlight-color:transparent;overscroll-behavior-y:contain}.sidebar-scroll,.table-wrap,.modal-body,.notif-list,.dash-content,.dash-mon-cards{-webkit-overflow-scrolling:touch;overscroll-behavior:contain}.sidebar{position:fixed!important;top:0;left:0;bottom:0;width:var(--sidebar-width)!important;z-index:100;transform:translate(-100%);transition:transform .25s ease;box-shadow:var(--shadow-lg);padding-top:env(safe-area-inset-top);padding-bottom:env(safe-area-inset-bottom)}.sidebar.mobile-open{transform:translate(0)}.sidebar.collapsed{width:var(--sidebar-width)!important;overflow-y:auto}.sidebar.collapsed .sidebar-title{display:inline}.sidebar.collapsed .sidebar-header{justify-content:flex-start;padding:0 16px}.sidebar.collapsed .sidebar-footer{display:flex}.sidebar.collapsed .sidebar-scroll{overflow-x:hidden}.sidebar.collapsed .nav-collapse-icon{justify-content:flex-start!important;padding:10px 18px!important}.sidebar.collapsed .nav-collapse-group .nav-flyout{display:none!important}.backdrop{z-index:90;background:var(--overlay);-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px)}.content{width:100%}.tab-bar{padding:0 4px;height:44px;height:calc(44px + env(safe-area-inset-top));padding-top:env(safe-area-inset-top)}.tab-bar-menu-btn{display:flex}.tab-bar-brand .brand-text{display:none}.tab-item{padding:5px 8px;font-size:12px}.tab-bar-right{padding-left:4px}.notif-bell-btn{padding:0 10px;font-size:12px;height:32px}.notif-dropdown{width:calc(100vw - 24px);right:0;max-height:60vh}.notif-toast{left:12px;right:12px;min-width:0;max-width:none}.main>div{padding:8px 12px}.filter-bar{flex-direction:column;align-items:stretch;padding:8px 10px}.filter-bar input,.filter-bar select{width:100%;min-width:0}.filter-extra{margin-left:0;flex-wrap:wrap}.toolbar{flex-direction:column;align-items:stretch;gap:8px}.grid-2,.grid-3,.grid-4{grid-template-columns:1fr}.kpi-row{grid-template-columns:1fr;gap:10px}.report-summary{grid-template-columns:1fr}.line-head,.line-row,.pr-line-head,.pr-line-row{grid-template-columns:1fr;gap:4px}.modal-mask{padding:0}.modal{max-height:100vh;max-height:100dvh;border-radius:0;height:100vh;height:100dvh}.modal-body{padding:14px}.dict-layout{flex-direction:column}.dict-sidebar{width:100%;position:relative;top:0;max-height:200px}.dict-list{max-height:160px}.dash-kpi-grid,.dash-sum-grid{grid-template-columns:1fr}.dash-mon-grid{flex-direction:column}.dash-mon-reserved{border-right:none;border-bottom:1px solid var(--border);padding:0 0 16px;min-width:0}.dash-cmd-header{flex-direction:column}.dash-cmd-status{min-width:0;padding:12px 24px}.lot-meta{grid-template-columns:1fr}.timeline li{grid-template-columns:1fr;gap:4px}.pagination{flex-wrap:wrap;gap:6px;padding:8px 10px}.pagination .page-jump{display:none}.pagination select{height:28px}.auth-form-row{grid-template-columns:1fr}.table-wrap{overflow-x:auto;-webkit-overflow-scrolling:touch}table{min-width:600px}.msg{top:calc(8px + env(safe-area-inset-top));max-width:calc(100vw - 24px)}.btn-sm{height:30px;padding:0 12px}.op-btn{height:30px;padding:0 10px}.icon-btn{width:36px;height:36px}.tab-close{width:22px;height:22px}}@media (max-width: 480px){.tab-bar-brand{display:none}.auth-form-card{padding:24px 20px}.dash-cmd-title{font-size:16px}.dash-kpi-value{font-size:18px}.topbar{padding:0 12px}.topbar-title{font-size:15px}.main>div{padding:6px 8px}.filter-bar{padding:6px 8px}.modal-body{padding:10px}.notif-bell-btn span{display:none}.notif-bell-btn{padding:0 8px}}@media (max-width: 768px) and (orientation: landscape){.modal-mask{padding:0}.modal{height:100dvh;max-height:100dvh}.modal-body{max-height:calc(100dvh - 60px)}}.spk{position:relative}.spk-trigger{width:100%;justify-content:space-between;text-align:left;gap:8px}.spk-trigger.has-val:hover{background:var(--surface)}.spk-placeholder{color:var(--text-muted);font-size:13px}.spk-caret{color:var(--text-muted);flex-shrink:0;transition:transform .15s}.spk-caret.open{transform:rotate(180deg);color:var(--accent)}.spk-sel{display:flex;align-items:baseline;gap:8px;min-width:0;overflow:hidden}.spk-sel-code{font-family:Cascadia Code,JetBrains Mono,monospace;font-size:12.5px;font-weight:700;color:var(--accent);letter-spacing:.02em}.spk-sel-name{font-size:13.5px;font-weight:600;color:var(--text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.spk-sel-sub{font-size:12px;color:var(--text-soft);white-space:nowrap}.spk-pop{position:absolute;top:calc(100% + 6px);left:0;right:0;z-index:60;background:var(--surface-elevated);border:1px solid var(--border);border-radius:var(--radius-sm);box-shadow:var(--shadow-lg);overflow:hidden;animation:spk-in .14s ease}@keyframes spk-in{0%{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:none}}.spk-search{display:flex;align-items:center;gap:8px;padding:10px 12px;border-bottom:1px solid var(--border);color:var(--text-muted)}.spk-search input{flex:1;height:30px;border:none;box-shadow:none;padding:0;font-size:13px;background:transparent}.spk-search input:focus{box-shadow:none}.spk-list{max-height:264px;overflow-y:auto;padding:6px}.spk-row{width:100%;height:auto;display:flex;align-items:center;justify-content:space-between;gap:10px;padding:9px 10px;border:1px solid transparent;border-radius:var(--radius-sm);background:transparent;box-shadow:none;cursor:pointer;text-align:left}.spk-row:hover{background:var(--accent-soft);border-color:var(--accent-weak)}.spk-row.active{background:var(--accent-soft);border-color:var(--accent)}.spk-row-info{display:flex;flex-direction:column;gap:5px;min-width:0;flex:1}.spk-row-t1{display:flex;align-items:baseline;gap:8px;min-width:0}.spk-code{font-family:Cascadia Code,JetBrains Mono,monospace;font-size:12px;font-weight:700;color:var(--accent)}.spk-name{font-size:13px;font-weight:500;color:var(--text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.spk-row-t2{display:flex;gap:6px;flex-wrap:wrap}.spk-chip{font-size:11px;line-height:1;padding:3px 7px;border-radius:4px;background:var(--bg);border:1px solid var(--border);color:var(--text-soft)}.spk-row-qty{display:flex;flex-direction:column;align-items:flex-end;gap:2px;flex-shrink:0}.spk-qty-label{font-size:10px;letter-spacing:.08em;color:var(--text-muted);text-transform:uppercase}.spk-qty-num{font-family:Cascadia Code,JetBrains Mono,monospace;font-size:14px;font-weight:700;color:var(--text)}.spk-check{color:var(--accent);flex-shrink:0}.spk-empty{text-align:center;color:var(--text-muted);font-size:12.5px;padding:28px 0}.site-footer{flex-shrink:0;display:flex;align-items:center;justify-content:center;gap:8px;padding:8px 16px;font-size:12px;line-height:1.4;text-align:center;color:var(--text-muted);background:var(--surface);border-top:1px solid var(--border)}.site-footer a{color:var(--text-soft);text-decoration:none;letter-spacing:.02em;transition:color .15s ease}.site-footer a:hover{color:var(--accent);text-decoration:underline}.site-footer a:focus-visible{outline:2px solid var(--accent);outline-offset:2px;border-radius:3px}.auth-page-wrap{display:flex;flex-direction:column;min-height:100vh;min-height:100dvh}.auth-page-wrap>.auth-page{flex:1 1 auto;min-height:0}@media (max-width: 768px){.site-footer{font-size:11.5px}}@media print{.site-footer{display:none}}.import-tips{margin:0;padding-left:18px;color:var(--text-soft);font-size:13px;line-height:1.8}.import-tips li{margin:0}.import-errors{max-height:180px;overflow-y:auto;margin-top:8px;padding:8px 12px;background:var(--danger-bg);border:1px solid var(--danger);border-radius:var(--radius-sm);font-size:12.5px;color:var(--danger);line-height:1.9}:root[data-theme=porcelain]{color-scheme:light;--bg: #f3f7fa;--surface: #ffffff;--surface-2: #edf2f8;--surface-elevated: #ffffff;--th-bg: #f2f6fa;--row-hover: #ecf4f8;--row-zebra: #f8fbfd;--border: #dce5ee;--border-weak: #e8eef4;--border-strong: #bfd0df;--overlay: rgba(11, 37, 51, .45);--overlay-soft: rgba(11, 37, 51, .32);--text: #172531;--text-soft: #56707f;--text-muted: #8ba0ae;--accent: #0e7490;--accent-hover: #0c647d;--accent-active: #0a5267;--accent-soft: #e2f3f8;--accent-weak: #cbe9f2;--accent-bright: #0891b2;--on-accent: #ffffff;--tag-info: #0369a1;--tag-cyan: #0f766e;--tag-purple: #7c3aed;--tag-pink: #be185d;--pending: #b45309;--pending-bg: #fbf2e4;--warning: #b45309;--success: #0f8a5f;--available: #0f8a5f;--available-bg: #e4f5ee;--restricted: #854d0e;--restricted-bg: #faf3dc;--quarantine: #c23742;--quarantine-bg: #fceded;--scrap: #5b6b7b;--scrap-bg: #edf2f7;--danger: #c23742;--danger-hover: #b93a45;--danger-bg: #fceded;--on-danger: #ffffff;--danger-border: rgba(214, 69, 80, .28);--success-border: rgba(15, 138, 95, .3);--success-ghost: rgba(15, 138, 95, .08);--success-ghost-strong: rgba(15, 138, 95, .18);--online: #16a34a;--op-info: #0369a1;--op-info-bg: #e6f4fc;--op-info-border: #a4d5ee;--op-primary: #12657e;--op-primary-bg: #e2f3f8;--op-primary-border: #a7d5e2;--op-danger: #c23742;--op-danger-bg: #fceded;--op-danger-border: #f2b8bc;--op-success: #0f8a5f;--op-success-bg: #e4f5ee;--op-success-border: #a3d9c2;--op-warn: #b45309;--op-warn-bg: #fbf2e4;--op-warn-border: #e8c996;--op-neutral: #5b6b7b;--op-neutral-bg: #edf2f7;--op-neutral-border: #c5d2dd;--op-purple: #7c3aed;--op-purple-bg: #f2ebfd;--op-purple-border: #cdb6f5;--btn-soft: rgba(255, 255, 255, .8);--sidebar-bg: #ffffff;--sidebar-border: #e3eaf2;--sidebar-hover: #edf2f8;--sidebar-text: #566d7d;--sidebar-text-strong: #172531;--sidebar-group: #93a8b8;--sidebar-active-bg: #e2f3f8;--sidebar-active-fg: #0a5e77;--sidebar-footer-bg: rgba(14, 116, 144, .04);--flyout-bg: #ffffff;--flyout-border: #e3eaf2;--flyout-hover-bg: #e2f3f8;--sidebar-btn-hover-bg: #e2f3f8;--sidebar-btn-hover-fg: #0e7490;--sidebar-logout-hover-bg: #fceded;--sidebar-logout-hover-fg: #d64550;--auth-bg-1: #07272f;--auth-bg-2: #0a4a5c;--auth-bg-3: #0e7490;--auth-glow: #22d3ee;--auth-hud: #67e8f9;--auth-muted: #9fb8c4;--auth-soft: #d5e6ee;--cmd-1: #07272f;--cmd-2: #0d4a5c;--cmd-3: #12617a;--cmd-s1: #0d4a5c;--cmd-s2: #07272f;--cmd-sub: #7fa4b4;--dash-grid: rgba(14, 116, 144, .05);--shadow-xs: 0 1px 2px rgba(13, 42, 56, .05);--shadow-sm: 0 1px 3px rgba(13, 42, 56, .06), 0 1px 2px rgba(13, 42, 56, .04);--shadow-md: 0 4px 12px rgba(13, 42, 56, .07), 0 2px 4px rgba(13, 42, 56, .05);--shadow-lg: 0 14px 30px rgba(13, 42, 56, .14);--radius-sm: 8px;--radius: 12px;--radius-lg: 16px}:root[data-theme=porcelain] .sidebar{border-right:1px solid var(--sidebar-border)}:root[data-theme=porcelain] .nav-item.active{font-weight:600}:root[data-theme=porcelain] .sidebar-footer .online-dot{box-shadow:0 0 0 3px color-mix(in srgb,var(--online) 22%,transparent)}:root[data-theme=obsidian]{color-scheme:dark;--bg: #0d1117;--surface: #151b23;--surface-2: #1e2630;--surface-elevated: #1b222c;--th-bg: #1a212b;--row-hover: #1d2530;--row-zebra: #171e27;--border: #2a3341;--border-weak: #232c38;--border-strong: #3c4759;--overlay: rgba(2, 5, 9, .66);--overlay-soft: rgba(2, 5, 9, .5);--text: #e6edf3;--text-soft: #9fb0c0;--text-muted: #6e8093;--accent: #38bdf8;--accent-hover: #5cc9fa;--accent-active: #82d8fb;--accent-soft: #10293c;--accent-weak: #173c57;--accent-bright: #7dd3fc;--on-accent: #04121c;--tag-info: #93c5fd;--tag-cyan: #67e8f9;--tag-purple: #c4b5fd;--tag-pink: #f9a8d4;--pending: #fbbf24;--pending-bg: #292112;--warning: #fbbf24;--success: #34d399;--available: #34d399;--available-bg: #0e2a20;--restricted: #eab308;--restricted-bg: #272310;--quarantine: #f87171;--quarantine-bg: #2a1416;--scrap: #94a3b8;--scrap-bg: #1d2530;--danger: #f87171;--danger-hover: #fca5a5;--danger-bg: #2a1416;--on-danger: #240808;--danger-border: rgba(248, 113, 113, .3);--success-border: rgba(52, 211, 153, .32);--success-ghost: rgba(52, 211, 153, .1);--success-ghost-strong: rgba(52, 211, 153, .22);--online: #34d399;--op-info: #4cc9f0;--op-info-bg: #0c2a3c;--op-info-border: #1e4a63;--op-primary: #7cc0fb;--op-primary-bg: #101f38;--op-primary-border: #25477c;--op-danger: #f87171;--op-danger-bg: #2a1416;--op-danger-border: #5c2a2d;--op-success: #34d399;--op-success-bg: #0e2a20;--op-success-border: #1d4d39;--op-warn: #fbbf24;--op-warn-bg: #292112;--op-warn-border: #57431a;--op-neutral: #9aa8b8;--op-neutral-bg: #222b37;--op-neutral-border: #3c4757;--op-purple: #c4b5fd;--op-purple-bg: #231a3d;--op-purple-border: #4a3a75;--btn-soft: rgba(255, 255, 255, .08);--sidebar-bg: #0a0e14;--sidebar-border: rgba(255, 255, 255, .07);--sidebar-hover: rgba(255, 255, 255, .045);--sidebar-text: #8fa0b2;--sidebar-text-strong: #dbe4ee;--sidebar-group: #5c6b7d;--sidebar-active-bg: rgba(56, 189, 248, .14);--sidebar-active-fg: #7dd3fc;--sidebar-footer-bg: rgba(0, 0, 0, .3);--flyout-bg: #161d27;--flyout-border: rgba(255, 255, 255, .09);--flyout-hover-bg: rgba(56, 189, 248, .2);--sidebar-btn-hover-bg: rgba(56, 189, 248, .16);--sidebar-btn-hover-fg: #7dd3fc;--sidebar-logout-hover-bg: rgba(248, 113, 113, .16);--sidebar-logout-hover-fg: #fca5a5;--auth-bg-1: #0d1117;--auth-bg-2: #0e2033;--auth-bg-3: #0d3a56;--auth-glow: #38bdf8;--auth-hud: #7dd3fc;--auth-muted: #7d8fa2;--auth-soft: #c3d0dd;--cmd-1: #0d1117;--cmd-2: #161d27;--cmd-3: #143149;--cmd-s1: #161d27;--cmd-s2: #0d1117;--cmd-sub: #5f7080;--dash-grid: rgba(148, 163, 184, .05);--shadow-xs: 0 1px 2px rgba(0, 0, 0, .4);--shadow-sm: 0 1px 3px rgba(0, 0, 0, .5), 0 1px 2px rgba(0, 0, 0, .35);--shadow-md: 0 6px 16px rgba(0, 0, 0, .45), 0 2px 5px rgba(0, 0, 0, .35);--shadow-lg: 0 14px 34px rgba(0, 0, 0, .55);--radius-sm: 5px;--radius: 9px;--radius-lg: 13px}:root[data-theme=midnight]{color-scheme:dark;--bg: #0b1020;--surface: #121a30;--surface-2: #1c2742;--surface-elevated: #182138;--th-bg: #19233d;--row-hover: #1e2a47;--row-zebra: #151d35;--border: #273355;--border-weak: #222c49;--border-strong: #3b4b79;--overlay: rgba(3, 6, 16, .66);--overlay-soft: rgba(3, 6, 16, .5);--text: #e8ecf8;--text-soft: #a3aec9;--text-muted: #6f7c99;--accent: #8f96fa;--accent-hover: #a5acfb;--accent-active: #bcc1fc;--accent-soft: #1d2547;--accent-weak: #2b3565;--accent-bright: #b9bdfd;--on-accent: #0d1130;--tag-info: #93c5fd;--tag-cyan: #67e8f9;--tag-purple: #c4b5fd;--tag-pink: #f9a8d4;--pending: #fcd34d;--pending-bg: #2a2212;--warning: #fcd34d;--success: #4ade80;--available: #4ade80;--available-bg: #11291c;--restricted: #facc15;--restricted-bg: #28240e;--quarantine: #f87171;--quarantine-bg: #2b1516;--scrap: #94a3b8;--scrap-bg: #1e2946;--danger: #f87171;--danger-hover: #fca5a5;--danger-bg: #2b1516;--on-danger: #220808;--danger-border: rgba(248, 113, 113, .3);--success-border: rgba(74, 222, 128, .32);--success-ghost: rgba(74, 222, 128, .1);--success-ghost-strong: rgba(74, 222, 128, .22);--online: #4ade80;--op-info: #5eb2f7;--op-info-bg: #0e2440;--op-info-border: #204a76;--op-primary: #a5abfb;--op-primary-bg: #1d2547;--op-primary-border: #3c4680;--op-danger: #f87171;--op-danger-bg: #2b1516;--op-danger-border: #5c2a2d;--op-success: #4ade80;--op-success-bg: #11291c;--op-success-border: #1f4d31;--op-warn: #fcd34d;--op-warn-bg: #2a2212;--op-warn-border: #59471b;--op-neutral: #9aa8c4;--op-neutral-bg: #232d4a;--op-neutral-border: #3c4868;--op-purple: #c4b5fd;--op-purple-bg: #241a44;--op-purple-border: #4a3a75;--btn-soft: rgba(255, 255, 255, .08);--sidebar-bg: #0c1226;--sidebar-border: rgba(255, 255, 255, .07);--sidebar-hover: rgba(143, 150, 250, .09);--sidebar-text: #93a0c4;--sidebar-text-strong: #dde3f5;--sidebar-group: #5a6788;--sidebar-active-bg: rgba(143, 150, 250, .16);--sidebar-active-fg: #b9bdfd;--sidebar-footer-bg: rgba(0, 0, 0, .28);--flyout-bg: #161e38;--flyout-border: rgba(255, 255, 255, .08);--flyout-hover-bg: rgba(143, 150, 250, .22);--sidebar-btn-hover-bg: rgba(143, 150, 250, .16);--sidebar-btn-hover-fg: #b9bdfd;--sidebar-logout-hover-bg: rgba(248, 113, 113, .16);--sidebar-logout-hover-fg: #fca5a5;--auth-bg-1: #0b1020;--auth-bg-2: #1a1740;--auth-bg-3: #322a70;--auth-glow: #818cf8;--auth-hud: #a5abfa;--auth-muted: #79839e;--auth-soft: #c7cde8;--cmd-1: #0b1020;--cmd-2: #151d38;--cmd-3: #232a5c;--cmd-s1: #1a2340;--cmd-s2: #0b1020;--cmd-sub: #5d6a8c;--dash-grid: rgba(148, 163, 184, .05);--shadow-xs: 0 1px 2px rgba(0, 0, 0, .4);--shadow-sm: 0 1px 3px rgba(0, 0, 0, .5), 0 1px 2px rgba(0, 0, 0, .35);--shadow-md: 0 6px 18px rgba(0, 0, 0, .45), 0 2px 5px rgba(0, 0, 0, .35);--shadow-lg: 0 16px 40px rgba(0, 0, 0, .55);--radius-sm: 8px;--radius: 14px;--radius-lg: 20px}.theme-trigger{height:34px;padding:0 12px;gap:6px;font-weight:600}.theme-menu{position:absolute;top:calc(100% + 6px);right:0;z-index:320;width:248px;padding:5px;background:var(--surface-elevated);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow-lg);animation:theme-in .15s ease}@keyframes theme-in{0%{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:none}}.theme-item{width:100%;display:flex;align-items:center;gap:10px;padding:8px 10px;height:auto;border:1px solid transparent;border-radius:var(--radius-sm);background:transparent;box-shadow:none;cursor:pointer;text-align:left;transition:background .15s,border-color .15s}.theme-item:hover{background:var(--surface-2)}.theme-item.active{background:var(--accent-soft);border-color:var(--accent-weak)}.theme-swatch{display:inline-flex;gap:3px;flex-shrink:0}.theme-swatch i{width:12px;height:12px;border-radius:4px;border:1px solid var(--border)}.theme-item-text{display:flex;flex-direction:column;gap:1px;flex:1;min-width:0}.theme-item-name{font-size:13px;font-weight:700;color:var(--text);display:flex;align-items:baseline;gap:6px}.theme-item-name em{font-style:normal;font-size:10px;font-weight:600;color:var(--text-muted);letter-spacing:.02em}.theme-item.active .theme-item-name{color:var(--accent)}.theme-item-desc{font-size:11px;color:var(--text-soft)}.theme-check{color:var(--accent);flex-shrink:0}@media (prefers-reduced-motion: reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important;scroll-behavior:auto!important}}.ptree-toolbar{display:flex;gap:8px;margin-bottom:10px;align-items:center}.ptree-search{position:relative;flex:1;min-width:0}.ptree-search svg{position:absolute;left:9px;top:50%;transform:translateY(-50%);color:var(--text-muted);pointer-events:none}.ptree-search input{width:100%;height:32px;padding:0 10px 0 30px;font-size:13px}.ptree-stats{display:inline-flex;align-items:center;gap:6px;flex-shrink:0;height:32px;padding:0 12px;font-size:12px;color:var(--text-soft);background:var(--surface-2);border:1px solid var(--border);border-radius:var(--radius-sm);white-space:nowrap}.ptree-stats b{color:var(--accent);font-variant-numeric:tabular-nums;font-weight:700}.ptree-tools{display:flex;gap:4px;flex-shrink:0}.ptree-tools button{height:32px;padding:0 10px;font-size:12px;gap:4px}.ptree{max-height:min(58vh,560px);overflow:auto;border:1px solid var(--border);border-radius:var(--radius);background:var(--surface)}.ptree-row{display:flex;align-items:center;gap:8px;height:34px;padding:0 14px 0 calc(var(--pt-indent, 0px) + 10px);font-size:13px;position:relative;cursor:pointer;border-bottom:1px solid var(--border-weak);transition:background .12s}.ptree-row:last-child{border-bottom:none}.ptree-row:hover{background:var(--surface-2)}.ptree-row.parent{background:var(--th-bg)}.ptree-row.parent:hover{background:var(--surface-2)}.ptree-guide{position:absolute;top:0;bottom:0;width:1px;background:var(--border);pointer-events:none}.ptree-caret{width:20px;height:20px;padding:0;flex-shrink:0;display:inline-flex;align-items:center;justify-content:center;border:none;background:transparent;box-shadow:none;color:var(--text-muted);cursor:pointer;border-radius:4px;transition:background .12s,color .12s}.ptree-caret:hover{background:var(--surface-2);color:var(--text)}.ptree-caret svg{transition:transform .15s}.ptree-leaf{width:20px;flex-shrink:0}.ptree-row input[type=checkbox]{width:15px;height:15px;margin:0;flex-shrink:0;cursor:pointer}.ptree-type{font-size:10px;font-weight:600;line-height:1;padding:3px 7px;border-radius:4px;flex-shrink:0;white-space:nowrap}.ptree-name{color:var(--text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:0}.ptree-row.parent .ptree-name{font-weight:700}.ptree-row.child .ptree-name{color:var(--text-soft)}.ptree-code{margin-left:auto;color:var(--text-muted);font-size:11px;font-family:Cascadia Code,JetBrains Mono,monospace;white-space:nowrap;flex-shrink:0}.ptree-row.match .ptree-name{color:var(--accent)}.ptree-footer{display:flex;justify-content:space-between;align-items:center;gap:8px;margin-top:12px}.ptree-footer .hint{font-size:12px}.ptree-footer .actions{display:flex;gap:8px}.dtbl-col-label{-webkit-user-select:none;user-select:none}.dtbl-col-resizer{position:absolute;top:0;right:0;bottom:0;width:8px;cursor:col-resize;z-index:6}.dtbl-col-resizer:after{content:"";position:absolute;right:3px;top:22%;bottom:22%;width:2px;border-radius:1px;background:transparent;transition:background .12s}table th:hover .dtbl-col-resizer:after{background:var(--accent-weak)}.dtbl-col-resizer:hover:after{background:var(--accent)}body.dtbl-resizing,body.dtbl-resizing *{cursor:col-resize!important;-webkit-user-select:none!important;user-select:none!important}table th.dtbl-drag-src{opacity:.45}table th.dtbl-drop-target{box-shadow:inset 0 0 0 2px var(--accent)}
