:root{--bg-primary:#f8fafc;--bg-secondary:#f1f5f9;--bg-surface:#fff;--bg-card:#fff;--bg-card-hover:#f8fafc;--bg-panel:#fff;--border-color:#cbd5e1;--border-subtle:#e2e8f0;--text-primary:#0f172a;--text-secondary:#334155;--text-muted:#475569;--accent-blue:#0284c7;--accent-blue-hover:#0369a1;--accent-purple:#6366f1;--accent-emerald:#059669;--accent-amber:#d97706;--accent-rose:#dc2626;--table-code-color:#0284c7;--table-name-color:#0f172a;--table-header-bg:#f1f5f9;--table-header-color:#0f172a;--table-header-border:#cbd5e1;--table-border:#cbd5e1;--table-row-even:#fff;--table-row-odd:#f8fafc;--table-row-hover:#e0f2fe;--table-row-selected:#bae6fd;--table-divider-shadow:4px 0 8px -2px #0000001f;--table-divider-border:#cbd5e1;--gradient-primary:linear-gradient(135deg, #0284c7 0%, #2563eb 100%);--gradient-glow:radial-gradient(circle at 50% 0%, #0284c70f, transparent 70%);--radius-sm:6px;--radius-md:10px;--radius-lg:16px;--radius-full:9999px;--shadow-sm:0 1px 3px #00000014;--shadow-md:0 4px 16px #00000014;--shadow-glow:0 0 20px #0284c726;--font-sans:"Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;--font-mono:ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace}[data-theme=dark]{--bg-primary:#0b1329;--bg-secondary:#131f37;--bg-surface:#1e293b;--bg-card:#101a33;--bg-card-hover:#24345afa;--bg-panel:#1e293b;--border-color:#ffffff29;--border-subtle:#ffffff14;--text-primary:#fff;--text-secondary:#cbd5e1;--text-muted:#94a3b8;--accent-blue:#38bdf8;--accent-blue-hover:#0284c7;--accent-purple:#818cf8;--accent-emerald:#34d399;--accent-amber:#fbbf24;--accent-rose:#f43f5e;--table-code-color:#fb923c;--table-name-color:#fff;--table-header-bg:#192642;--table-header-color:#fff;--table-header-border:#38bdf8;--table-border:#ffffff14;--table-row-even:#101a33;--table-row-odd:#162444;--table-row-hover:#1b345f;--table-row-selected:#1e427a;--table-divider-shadow:4px 0 10px -2px #00000073;--table-divider-border:#38bdf84d;--gradient-primary:linear-gradient(135deg, #6366f1 0%, #38bdf8 100%);--gradient-glow:radial-gradient(circle at 50% 0%, #38bdf81f, transparent 70%);--shadow-sm:0 2px 6px #00000040;--shadow-md:0 8px 24px #00000059;--shadow-glow:0 0 20px #38bdf840}[data-theme=midnight]{--bg-primary:#121212;--bg-secondary:#1e1e1e;--bg-surface:#252526;--bg-card:#181818;--bg-card-hover:#222;--bg-panel:#1e1e1e;--border-color:#333;--border-subtle:#242424;--text-primary:#e5e7eb;--text-secondary:#9ca3af;--text-muted:#6b7280;--accent-blue:#60a5fa;--accent-blue-hover:#3b82f6;--accent-purple:#a78bfa;--accent-emerald:#34d399;--accent-amber:#fbbf24;--accent-rose:#f87171;--table-code-color:#38bdf8;--table-name-color:#fff;--table-header-bg:#1e1e1e;--table-header-color:#e5e7eb;--table-header-border:#60a5fa;--table-border:#2a2a2a;--table-row-even:#161616;--table-row-odd:#1f1f1f;--table-row-hover:#2a2d34;--table-row-selected:#1e3a5f;--table-divider-shadow:4px 0 10px -2px #0009;--table-divider-border:#444;--gradient-primary:linear-gradient(135deg, #3b82f6 0%, #1d4ed8 100%);--gradient-glow:radial-gradient(circle at 50% 0%, #60a5fa14, transparent 70%);--shadow-sm:0 1px 3px #0006;--shadow-md:0 4px 16px #00000080;--shadow-glow:0 0 20px #60a5fa26}[data-theme=nord]{--bg-primary:#2e3440;--bg-secondary:#3b4252;--bg-surface:#434c5e;--bg-card:#2e3440;--bg-card-hover:#3b4252;--bg-panel:#3b4252;--border-color:#4c566a;--border-subtle:#3b4252;--text-primary:#eceff4;--text-secondary:#d8dee9;--text-muted:#88c0d0;--accent-blue:#88c0d0;--accent-blue-hover:#81a1c1;--accent-purple:#b48ead;--accent-emerald:#a3be8c;--accent-amber:#ebcb8b;--accent-rose:#bf616a;--table-code-color:#88c0d0;--table-name-color:#eceff4;--table-header-bg:#3b4252;--table-header-color:#eceff4;--table-header-border:#88c0d0;--table-border:#434c5e;--table-row-even:#2e3440;--table-row-odd:#353b49;--table-row-hover:#434c5e;--table-row-selected:#4c566a;--table-divider-shadow:4px 0 10px -2px #00000080;--table-divider-border:#4c566a;--gradient-primary:linear-gradient(135deg, #88c0d0 0%, #5e81ac 100%);--gradient-glow:radial-gradient(circle at 50% 0%, #88c0d01a, transparent 70%);--shadow-sm:0 1px 3px #00000059;--shadow-md:0 4px 16px #00000073;--shadow-glow:0 0 20px #88c0d033}*{box-sizing:border-box;margin:0;padding:0}html,body{font-family:var(--font-sans);background-color:var(--bg-primary);background-image:var(--gradient-glow);color:var(--text-primary);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;min-height:100vh;line-height:1.5}html[data-font-scale=xs]{font-size:13px}html[data-font-scale=small]{font-size:14px}html[data-font-scale=normal]{font-size:15px}html[data-font-scale=medium]{font-size:16px}html[data-font-scale=large]{font-size:17.5px}html[data-font-scale=xlarge]{font-size:19px}html[data-font-scale=xxlarge]{font-size:21px}html[data-font-family=system],body[data-font-family=system]{--font-sans:-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "PingFang TC", "Microsoft JhengHei", sans-serif}html[data-font-family=inter],body[data-font-family=inter]{--font-sans:"Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "PingFang TC", sans-serif}html[data-font-family=noto-sans],body[data-font-family=noto-sans]{--font-sans:"Noto Sans TC", -apple-system, BlinkMacSystemFont, "PingFang TC", "Microsoft JhengHei", sans-serif}html[data-font-family=rounded],body[data-font-family=rounded]{--font-sans:"Comic Sans MS", "PingFang TC", "Microsoft JhengHei", system-ui, sans-serif}html[data-font-family=mono],body[data-font-family=mono]{--font-sans:ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "PingFang TC", monospace}#root{flex-direction:column;width:100%;min-height:100vh;display:flex}.font-mono{font-family:var(--font-mono)}.font-bold{font-weight:600}.text-accent-blue{color:var(--accent-blue)!important}.text-accent-emerald{color:var(--accent-emerald)!important}.text-muted{color:var(--text-muted)!important}.text-right{text-align:right!important}.opacity-40{opacity:.4}.app-navbar{-webkit-backdrop-filter:blur(16px);border-bottom:1px solid var(--border-color);z-index:50;background:#0b1329d9;justify-content:space-between;align-items:center;padding:.85rem 1.5rem;display:flex;position:sticky;top:0}.app-brand{align-items:center;gap:.75rem;display:flex}.app-brand-icon{border-radius:var(--radius-md);background:var(--gradient-primary);color:#fff;width:38px;height:38px;box-shadow:var(--shadow-glow);justify-content:center;align-items:center;display:flex}.app-title-group h1{color:var(--text-primary);font-size:1.15rem;font-weight:700;line-height:1.2}.app-title-group p{color:var(--text-secondary);font-size:.78rem}.app-actions{align-items:center;gap:.6rem;display:flex}.btn-pill{border-radius:var(--radius-full);border:1px solid var(--border-color);color:var(--text-primary);cursor:pointer;background:#ffffff0d;align-items:center;gap:.4rem;padding:.4rem .85rem;font-size:.82rem;font-weight:500;transition:all .2s;display:inline-flex}.btn-pill:hover{border-color:var(--accent-blue);background:#ffffff1a;transform:translateY(-1px)}.btn-pill.primary{background:var(--accent-blue);color:#0b1329;border-color:var(--accent-blue);font-weight:600}.btn-pill.primary:hover{box-shadow:var(--shadow-glow);background:#7dd3fc}.app-container{box-sizing:border-box;flex-direction:column;flex:1;max-width:100%;padding:1rem 1.5rem;display:flex}.app-toolbar{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:1rem;margin-bottom:.75rem;display:flex}.toolbar-left{flex:1;align-items:center;gap:.75rem;min-width:280px;max-width:480px;display:flex}.toolbar-right{align-items:center;gap:.5rem;display:flex}.search-box{border:1.5px solid var(--border-color);border-radius:var(--radius-sm);background:var(--bg-surface);align-items:center;width:100%;height:38px;padding:0 10px;transition:border-color .2s,box-shadow .2s;display:flex}.search-box:focus-within{border-color:var(--accent-blue);box-shadow:0 0 0 3px #38bdf833}.search-icon{color:var(--text-muted);flex-shrink:0;margin-right:8px}.search-input{min-width:0;color:var(--text-primary);outline:none;flex:1;font-size:.88rem;background:0 0!important;border:none!important}.search-input::placeholder{color:var(--text-muted)}.search-clear-btn{color:var(--text-muted);cursor:pointer;border-radius:var(--radius-full);background:0 0;border:none;flex-shrink:0;justify-content:center;align-items:center;padding:2px;display:flex}.search-clear-btn:hover{color:var(--text-primary);background:#ffffff1a}.category-nav-panel{width:100%;margin-bottom:.75rem}.category-tabs{scrollbar-width:thin;align-items:center;gap:6px;padding-bottom:4px;display:flex;overflow-x:auto}.category-tabs::-webkit-scrollbar{height:4px}.category-tabs::-webkit-scrollbar-thumb{background:var(--border-color);border-radius:4px}.category-pill{border-radius:var(--radius-full);border:1px solid var(--border-color);color:var(--text-secondary);cursor:pointer;white-space:nowrap;-webkit-user-select:none;user-select:none;background:#131f37cc;align-items:center;gap:6px;padding:.35rem .75rem;font-size:.82rem;transition:all .15s;display:inline-flex}.category-pill:hover{color:var(--text-primary);background:#1a2642e6;border-color:#ffffff40}.category-pill.active{background:var(--accent-blue);color:#0b1329;border-color:var(--accent-blue);font-weight:600;box-shadow:0 0 12px #38bdf859}.cat-code-badge{background:#ffffff1a;border-radius:4px;justify-content:center;align-items:center;width:18px;height:18px;font-size:.72rem;font-weight:700;display:inline-flex}.category-pill.active .cat-code-badge{color:#0b1329;background:#0b132933}.pill-badge{border-radius:var(--radius-full);background:#ffffff14;padding:1px 6px;font-size:.72rem}.category-pill.active .pill-badge{color:#0b1329;background:#0b132940}.virtual-table-root{background:var(--bg-card);border:1px solid var(--border-color);border-radius:var(--radius-md);height:100%;min-height:0;max-height:100%;box-shadow:var(--shadow-sm);flex-direction:column;flex:1;display:flex;overflow:hidden}.table-status-bar{background:var(--bg-secondary);border-bottom:1px solid var(--border-color);color:var(--text-secondary);flex-shrink:0;justify-content:space-between;align-items:center;padding:.5rem 1rem;font-size:.82rem;display:flex}.status-left{align-items:center;gap:.5rem;display:flex}.selected-badge{border:1px solid var(--accent-blue);color:var(--accent-blue);border-radius:var(--radius-full);background:#38bdf81f;align-items:center;gap:4px;padding:2px 8px;font-size:.75rem;display:inline-flex}.virtual-viewport{contain:content;-webkit-overflow-scrolling:touch;overscroll-behavior:contain;background:var(--bg-card);outline:none;flex:1;position:relative;height:100%!important;min-height:0!important;max-height:100%!important;overflow:auto scroll!important}.virtual-viewport.virtual-viewport-empty{flex:none;height:auto!important;overflow-y:hidden!important}.virtual-h-wrapper{background:var(--bg-card);width:max-content!important;max-width:max-content!important}table.excel-table{border-collapse:collapse;table-layout:fixed;border-spacing:0;background:var(--bg-card);font-size:.86rem;width:max-content!important;max-width:max-content!important;margin-right:auto!important}table.excel-table thead{z-index:20;position:sticky;top:0}table.excel-table th{background:var(--table-header-bg);color:var(--table-header-color);font-weight:700;font-size:inherit;border-right:1px solid var(--table-border);border-bottom:2.5px solid var(--table-header-border);white-space:nowrap;-webkit-user-select:none;user-select:none;z-index:10;box-sizing:border-box;min-height:36px;padding:0;position:sticky;top:0;overflow:hidden}table.excel-table th.sticky-col-header{z-index:35!important;background-color:var(--table-header-bg)!important;position:sticky!important}table.excel-table td.sticky-col-cell{background-color:var(--table-row-even);z-index:15!important;position:sticky!important}table.excel-table tr.row-even td.sticky-col-cell{background-color:var(--table-row-even)}table.excel-table tr.row-odd td.sticky-col-cell{background-color:var(--table-row-odd)}table.excel-table tr:hover td.sticky-col-cell{background-color:var(--table-row-hover)!important}table.excel-table tr.row-selected td.sticky-col-cell{background-color:var(--table-row-selected)!important}table.excel-table th.sticky-col-divider,table.excel-table td.sticky-col-divider{box-shadow:var(--table-divider-shadow);border-right:1.5px solid var(--table-divider-border)!important}.resizer{cursor:col-resize;-webkit-user-select:none;user-select:none;touch-action:none;z-index:15;background:0 0;width:6px;height:100%;transition:background .15s;position:absolute;top:0;right:0}.resizer:hover,.resizer.isResizing{background:var(--accent-blue)!important;opacity:1!important}.table-header-content{box-sizing:border-box;cursor:pointer;justify-content:space-between;align-items:center;width:100%;height:100%;padding:6px 10px;display:flex}.table-header-content:hover{background:#7d7d7d14}.table-header-content.align-right{justify-content:flex-end}.table-header-content.align-center{justify-content:center}.sort-icon-wrapper{align-items:center;margin-left:6px;display:inline-flex}.sort-icon.active{color:var(--accent-blue)}.sort-icon.inactive{opacity:.3}table.excel-table tr{transition:background-color .12s}table.excel-table td{border-right:1px solid var(--table-border);border-bottom:1px solid var(--table-border);color:var(--text-primary);background-color:var(--table-row-even);white-space:nowrap;text-overflow:ellipsis;box-sizing:border-box;line-height:1.35;overflow:hidden}table.excel-table tr.row-even td{background-color:var(--table-row-even)}table.excel-table tr.row-odd td{background-color:var(--table-row-odd)}table.excel-table tr:hover td{background-color:var(--table-row-hover)!important}table.excel-table tr.row-selected td{background-color:var(--table-row-selected)!important}.checkbox-btn{cursor:pointer;color:inherit;background:0 0;border:none;justify-content:center;align-items:center;padding:4px;display:inline-flex}.th-checkbox-wrapper,.td-checkbox-wrapper{justify-content:center;align-items:center;width:100%;display:flex}.characteristic-badge{border-radius:var(--radius-sm);cursor:pointer;border:1px solid #0000;align-items:center;gap:5px;padding:2px 8px;font-size:.78rem;font-weight:500;transition:all .15s;display:inline-flex}.characteristic-badge:hover{filter:brightness(1.2);transform:scale(1.02)}.badge-normal{color:#34d399;background:#34d39926;border-color:#34d39966}.badge-small{color:#38bdf8;background:#38bdf826;border-color:#38bdf866}.badge-bulk{color:#c084fc;background:#a855f726;border-color:#a855f766}.cell-input-disguise{border:1px solid #0000;border-radius:4px;align-items:center;width:100%;height:30px;padding:0 4px;transition:all .15s;display:flex}.cell-input-disguise:hover{background:#ffffff08;border-color:#ffffff26}.cell-input-disguise.focused{border-color:var(--accent-blue);background:#0f172ae6;box-shadow:0 0 0 2px #38bdf833}.cell-hidden-input{width:100%;color:var(--text-primary);font-size:inherit;text-align:center;outline:none;background:0 0!important;border:none!important}.master-code-cell{font-family:var(--font-mono,monospace);color:var(--table-code-color)!important;font-weight:700!important;font-size:inherit!important}.master-name-cell,.product-name-cell{text-overflow:ellipsis;display:block;overflow:hidden;color:var(--table-name-color)!important;font-weight:700!important;font-size:inherit!important}table.excel-table td.col-code,table.excel-table td.col-name,table.excel-table td[data-col-id=code],table.excel-table td[data-col-id=name],td.col-code,td.col-name{font-weight:700!important}.barcode-cell{color:var(--text-secondary);font-size:inherit;align-items:center;gap:6px;display:flex}.barcode-icon{opacity:.5}.cat-badge{color:var(--text-secondary);background:#ffffff14;border-radius:4px;padding:1px 6px;font-size:.85em;font-weight:600;display:inline-flex}.notes-badge{color:#fbbf24;text-overflow:ellipsis;background:#fbbf2426;border-radius:4px;max-width:130px;padding:1px 6px;font-size:.85em;display:inline-block;overflow:hidden}.empty-cell,.loading-cell{text-align:center;background:0 0!important;height:280px!important}.table-empty,.table-loader{flex-direction:column;justify-content:center;align-items:center;padding:3rem 1rem;display:flex}.empty-icon{color:var(--text-muted);opacity:.4;margin-bottom:.75rem}.empty-title{color:var(--text-primary);margin-bottom:.25rem;font-size:1.05rem;font-weight:600}.empty-subtitle{color:var(--text-muted);font-size:.82rem}.spinner{border:3px solid #38bdf833;border-top-color:var(--accent-blue);border-radius:50%;width:32px;height:32px;margin-bottom:.75rem;animation:.8s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}.master-db-container .table-status-bar{display:none!important}.master-db-container .virtual-viewport{background:#fff!important;border:none!important;border-radius:0!important}.master-db-container table.excel-table th{color:#475569!important;background:#f8fafc!important;border-bottom:2px solid #cbd5e1!important;border-right:1px solid #e2e8f0!important;font-weight:700!important}.master-db-container table.excel-table th:hover{background:#f1f5f9!important}.master-db-container table.excel-table td{color:#1e293b!important;background:#fff!important;border-bottom:1px solid #e2e8f0!important;border-right:1px solid #f1f5f9!important;font-size:.86rem!important}.master-db-container table.excel-table tr:hover td{background-color:#f0f9ff!important}.master-db-container table.excel-table tr.row-selected td{background-color:#e0f2fe!important}.app-main-workspace{flex-direction:column;flex:1;width:100%;min-height:0;padding:8px 4px 72px;display:flex;overflow:hidden}.settings-scroll-container{width:100%;max-width:1100px;height:100%;margin:0 auto;padding:.25rem .25rem 2rem;overflow-y:auto}.settings-card-section{background:var(--bg-card);-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);border:1px solid var(--border-color);border-radius:16px;flex-direction:column;gap:1.25rem;width:100%;padding:1.25rem 1rem;display:flex;box-shadow:0 4px 20px #0000000d}@media (width>=768px){.app-main-workspace{padding:12px 14px 24px}}@media (width>=769px){.mobile-bottom-nav{display:none!important}}@media (width<=768px){.desktop-nav-only,.desktop-only{display:none!important}.app-brand-lockup{min-width:0;gap:8px!important}.app-brand-mark{border-radius:9px!important;width:34px!important;height:34px!important}.app-title-lockup h1{font-size:.96rem!important}.app-title-lockup span{font-size:.68rem!important}.app-header-controls{flex-shrink:1;min-width:0}.app-container{padding:.75rem}.virtual-viewport{height:100%!important}table.excel-table tr{height:48px!important}table.excel-table td{padding:4px 8px;font-size:.9rem;height:48px!important;max-height:48px!important}table.excel-table th{height:42px;padding:0}.compact-mobile-table table.excel-table{width:auto!important;max-width:none!important}.compact-mobile-table table.excel-table tr,.compact-mobile-table table.excel-table td{height:auto!important;max-height:none!important}.compact-mobile-table table.excel-table tr.table-row{height:var(--table-row-height)!important}.compact-mobile-table table.excel-table th{height:34px;min-height:34px}.compact-mobile-table table.excel-table td{font-size:var(--table-font-size)!important}}@media (width<=640px){.settings-card-section{border-radius:12px;padding:1rem .65rem}.settings-scroll-container{padding:.15rem .15rem 2rem}}.mobile-side-trigger{display:none}.mobile-side-panel{border:0;border-left:1px solid var(--border-color);background:var(--bg-card);width:min(320px,85vw);max-width:85vw;height:100dvh;max-height:100dvh;color:var(--text-primary);margin:0;padding:0;position:fixed;inset:0 0 0 auto;box-shadow:-12px 0 40px #0002}.mobile-side-panel::backdrop{background:#0006}.mobile-side-content{min-height:100%;padding:max(16px, env(safe-area-inset-top)) 16px 24px}.mobile-side-content header{justify-content:space-between;align-items:center;margin-bottom:24px;display:flex}.mobile-side-content h2{margin:0;font-size:1.1rem}.mobile-side-content button{border:1px solid var(--border-color);background:var(--bg-secondary);min-width:44px;min-height:44px;color:var(--text-primary);cursor:pointer;border-radius:10px;justify-content:center;align-items:center;display:flex}.mobile-side-content .mobile-side-link{width:100%;font:inherit;justify-content:flex-start;gap:12px;padding:12px}.mobile-side-link[aria-current=page]{color:var(--accent-blue)}@media (width<=767px){.mobile-side-trigger{border:1px solid var(--border-color);background:var(--bg-secondary);width:36px;height:36px;color:var(--text-primary);cursor:pointer;border-radius:8px;flex-shrink:0;justify-content:center;align-items:center;padding:0;display:flex}.app-header-controls{gap:6px!important}}.dataset-switcher{border-radius:var(--radius-full);border:1px solid var(--border-color);background:#ffffff0a;align-items:center;gap:.35rem;padding:3px;display:flex}.dataset-btn{color:var(--text-secondary);border-radius:var(--radius-full);cursor:pointer;background:0 0;border:none;padding:3px 8px;font-size:.76rem;font-weight:500;transition:all .15s}.dataset-btn:hover{color:var(--text-primary)}.dataset-btn.active{background:var(--accent-blue);color:#0b1329;font-weight:600}
