:root{--c-bg: #f5f7fb;--c-bg-soft: #edf2f9;--c-surface: rgba(255, 255, 255, .84);--c-surface-solid: #ffffff;--c-surface-muted: rgba(255, 255, 255, .72);--c-surface-strong: rgba(255, 255, 255, .96);--c-sidebar: #ffffff;--c-panel: #fbfcfe;--c-content: #f8fafd;--c-card: #ffffff;--c-card-muted: #fcfdff;--c-border: rgba(229, 231, 235, .92);--c-border-strong: rgba(213, 219, 229, .96);--c-border-light: rgba(238, 242, 247, .92);--c-text: #1f2937;--c-text-secondary: #667085;--c-text-muted: #98a2b3;--c-accent: #3b82f6;--c-accent-light: rgba(59, 130, 246, .1);--c-accent-soft: rgba(59, 130, 246, .14);--c-accent-hover: #2563eb;--c-accent-glow: rgba(59, 130, 246, .18);--c-accent-border: rgba(59, 130, 246, .2);--c-accent-border-strong: rgba(59, 130, 246, .32);--c-success: #059669;--c-success-light: rgba(5, 150, 105, .1);--c-warning: #d97706;--c-warning-light: rgba(217, 119, 6, .1);--c-danger: #dc2626;--c-danger-light: rgba(220, 38, 38, .1);--c-brand: #4361ee;--c-brand-text: #ffffff;--glass-blur: 16px;--glass-bg: rgba(255, 255, 255, .82);--glass-border: 1px solid rgba(229, 231, 235, .92);--glass-shadow: 0 8px 22px rgba(15, 23, 42, .06), 0 1px 3px rgba(15, 23, 42, .04);--glass-shadow-lg: 0 14px 36px rgba(15, 23, 42, .1), 0 4px 12px rgba(15, 23, 42, .06);--shadow-md: 0 10px 28px rgba(15, 23, 42, .12);--shadow-soft: 0 4px 14px rgba(15, 23, 42, .05);--shadow-card: 0 8px 24px rgba(15, 23, 42, .06);--radius: 12px;--radius-sm: 8px;--radius-xs: 6px;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,PingFang SC,Microsoft YaHei,Helvetica Neue,Arial,sans-serif;color:var(--c-text);background:var(--c-bg);-webkit-font-smoothing:antialiased}*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}html{touch-action:manipulation}body{margin:0;min-width:320px;overflow-x:hidden}button,input,select,textarea{font:inherit}.app-shell{min-height:100vh;background:radial-gradient(circle at top left,rgba(59,130,246,.06) 0%,transparent 30%),radial-gradient(circle at bottom right,rgba(59,130,246,.04) 0%,transparent 24%),linear-gradient(180deg,#f5f7fb 0% 55%,#eef3f9)}input[type=checkbox]{-webkit-appearance:none;appearance:none;width:16px;height:16px;min-width:16px;border:1.5px solid #c8d0dd;border-radius:4px;background:#fffc;cursor:pointer;position:relative;transition:all .15s ease}input[type=checkbox]:hover{border-color:var(--c-accent)}input[type=checkbox]:checked{background:var(--c-accent);border-color:var(--c-accent);box-shadow:0 0 0 3px var(--c-accent-glow)}input[type=checkbox]:checked:after{content:"";position:absolute;left:4px;top:1px;width:5px;height:9px;border:solid #fff;border-width:0 2px 2px 0;transform:rotate(45deg)}input[type=checkbox]:disabled{opacity:.4;cursor:not-allowed}button{border:var(--glass-border);background:#fff;backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);color:var(--c-text);min-height:34px;border-radius:var(--radius-sm);padding:0 14px;display:inline-flex;align-items:center;justify-content:center;gap:5px;cursor:pointer;font-size:13px;font-weight:500;transition:all .18s ease;box-shadow:0 1px 3px #0f172a0a}button:hover:not(:disabled){background:#fff;border-color:#cbd5e1f5;box-shadow:0 6px 16px #0f172a14;transform:translateY(-1px)}button:active:not(:disabled){transform:translateY(0);box-shadow:0 1px 2px #0f172a0a}button:disabled,input:disabled,select:disabled,textarea:disabled,.disabled{cursor:not-allowed;opacity:.4}input,select,textarea{width:100%;border:1px solid var(--c-border);background:#fffffff0;backdrop-filter:blur(4px);-webkit-backdrop-filter:blur(4px);border-radius:var(--radius-sm);color:var(--c-text);outline:none;transition:border-color .15s ease,box-shadow .15s ease,background .15s ease}input:focus,select:focus,textarea:focus{border-color:var(--c-accent);background:#fff;box-shadow:none;outline:none}.editor input,.editor select,.editor textarea{-webkit-appearance:none;-moz-appearance:none;appearance:none;box-shadow:none!important}.editor input:focus,.editor select:focus,.editor textarea:focus{border-color:var(--c-accent-border-strong);background:#fff;box-shadow:none!important;outline:none!important}.editor select{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8'%3E%3Cpath d='M1 1l5 5 5-5' stroke='%239ca3af' stroke-width='1.5' fill='none'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 12px center;padding-right:32px;cursor:pointer}.editor input[type=date]::-webkit-calendar-picker-indicator{opacity:.5;cursor:pointer}input:not([type=checkbox]),select{height:36px;padding:0 12px}textarea{min-height:76px;padding:12px;resize:vertical}.topbar{height:56px;padding:0 24px;display:flex;align-items:center;justify-content:space-between;background:#fff;backdrop-filter:none;-webkit-backdrop-filter:none;color:var(--c-text);position:sticky;top:0;z-index:20;border-bottom:1px solid var(--c-border);box-shadow:0 2px 14px #0f172a14}.eyebrow{color:var(--c-text-muted);font-size:11px;letter-spacing:.02em}h1{margin:0;font-size:16px;font-weight:600;color:var(--c-text);letter-spacing:.02em}.topbar-actions,.toolbar,.panel-heading,.editor-actions,.inline-add{display:flex;align-items:center;gap:8px}.cloud-state,.role-switch{height:32px;display:flex;align-items:center;gap:6px;border:1px solid var(--c-border);background:var(--c-card);backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);border-radius:var(--radius-sm);padding:0 12px;color:var(--c-text-secondary);font-size:12px;transition:background .15s ease,border-color .15s ease,box-shadow .15s ease;box-shadow:0 1px 2px #0f172a08}.cloud-state:hover,.role-switch:hover{background:#fff;border-color:#cbd5e1f5;box-shadow:0 4px 12px #0f172a0d}.sync-status{height:32px;display:flex;align-items:center;gap:5px;border:1px solid var(--c-border);background:var(--c-card);backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);border-radius:var(--radius-sm);padding:0 10px;font-size:12px;transition:background .15s ease,border-color .15s ease,box-shadow .15s ease;cursor:default;box-shadow:0 1px 2px #0f172a08}.sync-ok{color:#4ade80}.sync-syncing{color:#facc15}.sync-error{color:#f87171}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.spin{animation:spin 1s linear infinite}.role-switch select{width:72px;border:0;background:transparent;padding:0;font-size:12px;color:var(--c-text)}.role-switch select option{color:var(--c-text);background:var(--c-surface-solid)}.year-filter{display:flex;align-items:center;gap:6px;height:36px;padding:0 12px;border:1px solid var(--c-border);border-radius:var(--radius-sm);background:var(--c-card);font-size:13px;color:var(--c-text);box-shadow:0 1px 2px #0f172a08;transition:border-color .15s ease,box-shadow .15s ease,background .15s ease}.year-filter:hover{background:#fff;border-color:#cbd5e1f5;box-shadow:0 4px 12px #0f172a0d}.year-filter span{color:var(--c-text-muted);font-size:12px;white-space:nowrap}.year-filter select{border:0;outline:none;background:transparent;padding:0;font-size:13px;color:var(--c-text);cursor:pointer}.year-filter select:focus{box-shadow:none;border-color:transparent;outline:none;background:transparent}.year-filter select option{color:var(--c-text);background:var(--c-surface-solid)}.workspace{height:calc(100vh - 56px);display:grid;grid-template-columns:220px minmax(0,1fr);transition:grid-template-columns .22s ease}.workspace.detail-open{grid-template-columns:220px minmax(0,1fr) 360px}.workspace.sidebar-collapsed{grid-template-columns:68px minmax(0,1fr)}.workspace.sidebar-collapsed.detail-open{grid-template-columns:68px minmax(0,1fr) 360px}.sidebar{background:var(--c-sidebar);backdrop-filter:none;-webkit-backdrop-filter:none;position:relative;overflow-y:auto;overflow-x:hidden;scrollbar-gutter:stable;scrollbar-width:thin;scrollbar-color:rgba(148,163,184,.32) transparent;padding:18px 14px;border-right:1px solid rgba(213,219,229,.98);box-shadow:2px 0 18px #0f172a12;transition:padding .22s ease,box-shadow .22s ease}.sidebar-collapse-btn{position:fixed;top:112px;left:203px;z-index:24;width:34px;height:34px;min-height:34px;margin:0;padding:0;border:1px solid rgba(229,231,235,.95);background:#fff;color:var(--c-text-secondary);border-radius:999px;box-shadow:0 8px 18px #0f172a1f}.sidebar-collapse-btn:hover:not(:disabled){color:var(--c-accent);border-color:var(--c-accent-border-strong);background:#fff;transform:none}.sidebar.collapsed{padding:18px 10px;overflow-x:hidden}.sidebar.collapsed .sidebar-collapse-btn{left:51px}.sidebar.collapsed .category,.sidebar.collapsed .sidebar-menu-action{width:48px;min-height:46px;padding:0;justify-content:center;margin-left:auto;margin-right:auto}.sidebar.collapsed .category-root-main,.sidebar.collapsed .sidebar-menu-action-main{flex:none;justify-content:center;gap:0}.sidebar.collapsed .category-root-label,.sidebar.collapsed .sidebar-menu-action-label,.sidebar.collapsed .category-root-meta,.sidebar.collapsed .category-shell-children,.sidebar.collapsed .category-children,.sidebar.collapsed .sidebar-action-sublist,.sidebar.collapsed .status-filter-bar,.sidebar.collapsed .category-editor,.sidebar.collapsed .category-delete-btn,.sidebar.collapsed .sidebar-menu-action>.rotate-180,.sidebar.collapsed .sidebar-menu-action>svg:last-child{display:none}.sidebar.collapsed .sidebar-quick-actions{padding-bottom:10px;border-bottom:0}.sidebar::-webkit-scrollbar{width:8px}.sidebar::-webkit-scrollbar-track{background:transparent}.sidebar::-webkit-scrollbar-thumb{background:#94a3b847;border-radius:999px;border:2px solid transparent;background-clip:padding-box}.sidebar::-webkit-scrollbar-thumb:hover{background:#94a3b86b;background-clip:padding-box}.detail{background:var(--c-panel);backdrop-filter:none;-webkit-backdrop-filter:none;overflow:auto;padding:18px 14px;border-left:1px solid rgba(221,227,236,.96);box-shadow:-2px 0 16px #0f172a0d}.content{min-width:0;padding:24px;overflow:auto;background:var(--c-bg)}.panel-title,.panel-heading>div{display:flex;align-items:center;gap:7px;font-weight:700;font-size:11px;color:var(--c-text-secondary);text-transform:uppercase;letter-spacing:.06em}.panel-title{margin-bottom:14px;padding-bottom:10px;border-bottom:1px solid var(--c-border-light)}.category-group{margin-bottom:2px;padding-bottom:2px;border-bottom:0}.category-group:last-child{border-bottom:0;margin-bottom:0}.category-shell{display:grid;gap:2px}.category-shell-button{font-weight:500;color:#0f172ac7}.category-shell-icon{flex-shrink:0;color:currentColor;opacity:.84}.category-shell-children{display:grid;grid-template-rows:1fr;opacity:1;transition:grid-template-rows .28s ease,opacity .24s ease}.category-shell-children.collapsed{grid-template-rows:0fr;opacity:0}.category-shell-children-inner{display:grid;gap:0;overflow:hidden}.category-root-row{display:flex;align-items:center;gap:0;overflow:visible}.category-root-row .category{flex:1;min-width:0}.category-root-button{width:100%;justify-content:space-between;gap:12px;text-align:left;min-height:46px}.category-root-main,.category-root-meta{display:inline-flex;align-items:center}.category-root-main{min-width:0;flex:1;gap:12px}.category-root-label{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.category-root-meta{flex-shrink:0;gap:8px;color:var(--c-text-muted)}.category-child-row{display:flex;align-items:center;gap:0;overflow:hidden;padding-left:0;border-left:0;margin-left:0}.category-child-row .category{flex:1;min-width:0}.category-child-row .category-delete-btn{opacity:0}.category-child-row:hover .category-delete-btn{opacity:1}.category-child-row:hover .category-delete-btn.disabled-delete{opacity:.35}.category-delete-btn.disabled-delete{cursor:not-allowed}.category-delete-btn.hidden-placeholder{visibility:hidden}.category-delete-btn{width:22px;min-height:22px;padding:0;flex-shrink:0;border:0;background:transparent;border-radius:var(--radius-xs);color:var(--c-text-muted);opacity:0;transition:opacity .12s ease,color .12s ease,background .12s ease;margin-left:-22px}.category-root-row:hover .category-delete-btn{opacity:1}.category-delete-btn:hover{background:var(--c-danger-light);color:var(--c-danger)}.category{justify-content:flex-start;margin-bottom:1px;border-color:transparent;background:transparent;border-radius:8px;min-height:46px;padding:0 16px;font-size:14px;font-weight:400;color:#0f172ab8;transition:background .18s ease,color .18s ease;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;box-shadow:none}.category-count{margin-left:auto;color:var(--c-text-muted);font-size:11px;font-weight:600;min-width:24px;height:20px;padding:0 7px;border-radius:999px;display:inline-flex;align-items:center;justify-content:center;background:#94a3b81f}.category:hover:not(:disabled){background:#0f172a0b;border-color:transparent;color:#0f172aeb;transform:none}.category.active{background:transparent;border:1px solid transparent;color:var(--c-accent);font-weight:600;box-shadow:none}.category.active .category-count{color:var(--c-text-muted)}.category.active:hover:not(:disabled){background:#0f172a0b;border-color:transparent;color:var(--c-accent);box-shadow:none}.category.active:hover:not(:disabled) .category-count{color:var(--c-text-muted)}.category.child{min-height:42px;padding:0 14px 0 52px;font-size:13px;font-weight:400;color:#0f172aa3;border-radius:8px}.category-child-label{min-width:0;overflow:hidden;text-overflow:ellipsis}.category.child .category-count{font-size:10px;min-width:18px;text-align:center;background:#94a3b81f;border-radius:10px;padding:1px 5px;margin-left:auto;color:var(--c-text-muted)}.category.child.active{font-weight:500;color:var(--c-accent);background:transparent;box-shadow:none}.category.child.active .category-count{color:var(--c-text-muted);background:#94a3b81f}.category.child.active:hover:not(:disabled){background:#0f172a0a;color:var(--c-accent);box-shadow:none}.category.child.active:hover:not(:disabled) .category-count{color:var(--c-text-muted);background:#94a3b81f}.category-children{display:grid;grid-template-rows:1fr;opacity:1;transition:grid-template-rows .28s ease,opacity .24s ease,margin-top .28s ease}.category-children.collapsed{grid-template-rows:0fr;opacity:0;margin-top:0}.category-children.expanded{margin-top:0}.category-children-inner{overflow:hidden;display:grid;gap:0}.category.child.pending-cat{font-style:italic;font-size:11px;color:var(--c-text-muted);opacity:.7;min-height:28px}.category.child.pending-cat:hover{opacity:1}.category-editor,.category-cleanup{margin-top:14px;padding-top:14px;border-top:1px solid var(--c-border-light);display:grid;gap:7px}.category-editor>.custom-select-wrap{display:flex}.category-editor>.custom-select-wrap>.custom-select-trigger{flex:1}.category-editor small,.readonly-note{color:var(--c-text-muted);font-size:12px;line-height:1.5}.sidebar-settings-btn{display:flex;align-items:center;gap:8px;width:100%;margin-top:14px;padding:10px 14px;border:1px solid var(--c-accent-border);border-radius:var(--radius-sm);background:var(--c-accent-light);color:var(--c-accent);font-size:13px;font-weight:500;cursor:pointer;transition:all .15s ease;box-shadow:0 2px 8px #3b82f614}.sidebar-settings-btn:hover{background:var(--c-accent-soft);border-color:var(--c-accent-border-strong)}.sidebar-settings-btn.active{background:var(--c-accent-soft);border-color:var(--c-accent);font-weight:600}.sidebar-settings-btn.active:hover:not(:disabled){background:var(--c-accent-soft);border-color:var(--c-accent);color:var(--c-accent)}.toolbar{margin-bottom:18px;flex-wrap:wrap;gap:8px}.toolbar-actions-row .add-menu-wrap,.toolbar-actions-row .add-menu-wrap+button{display:none}.sidebar-quick-actions{display:grid;gap:2px;padding:0 0 10px;margin-bottom:10px;border-bottom:1px solid var(--c-border-light)}.sidebar-menu-action{width:100%;min-height:44px;justify-content:space-between;padding:0 16px;border:1px solid transparent;background:transparent;box-shadow:none;color:#0f172ab8;font-size:14px;font-weight:400;border-radius:8px}.sidebar-menu-action:hover:not(:disabled){background:#0f172a0b;border-color:transparent;box-shadow:none;color:#0f172aeb;transform:none}.sidebar-menu-action.active,.sidebar-menu-action.active:hover:not(:disabled){background:transparent;border-color:transparent;box-shadow:none;color:var(--c-accent);font-weight:600;transform:none}.sidebar-menu-action-main{min-width:0;display:inline-flex;align-items:center;gap:12px}.sidebar-menu-action-subitem{min-height:38px;justify-content:flex-start;padding-left:42px;font-size:13px;color:#0f172aa3}.sidebar-action-sublist{display:grid;grid-template-rows:1fr;opacity:1;transition:grid-template-rows .28s ease,opacity .24s ease}.sidebar-action-sublist.collapsed{grid-template-rows:0fr;opacity:0}.sidebar-action-sublist-inner{display:grid;gap:0;overflow:hidden}.searchbox{flex:1;min-width:200px;display:flex;align-items:center;gap:7px;height:40px;border:1px solid var(--c-border);border-radius:var(--radius);background:var(--c-card);backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);padding:0 14px;box-shadow:var(--shadow-soft);transition:border-color .2s ease,box-shadow .2s ease}.searchbox:focus-within{border-color:var(--c-accent-border-strong);box-shadow:0 6px 14px #0f172a0f;background:#fff}.searchbox input{border:0;padding:0;font-size:13px;background:transparent;-webkit-backdrop-filter:none;backdrop-filter:none;width:100%;min-width:0}.searchbox input:focus{box-shadow:none!important;background:transparent!important;border-color:transparent!important;outline:none!important}.file-button{position:relative;min-height:34px;border:var(--glass-border);background:var(--glass-bg);backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);color:var(--c-text);border-radius:var(--radius-sm);padding:0 14px;display:inline-flex;align-items:center;gap:5px;cursor:pointer;font-size:13px;font-weight:500;box-shadow:0 1px 3px #0000000a}.file-button input{display:none}.import-panel{background:var(--c-card-muted);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);border:1px solid var(--c-border);border-radius:var(--radius);margin-bottom:18px;box-shadow:var(--glass-shadow)}.table-wrap{background:var(--c-card);backdrop-filter:none;-webkit-backdrop-filter:none;border:1px solid var(--c-border);border-radius:var(--radius);margin-bottom:18px;box-shadow:var(--shadow-card)}.import-panel{padding:18px}.panel-heading{justify-content:space-between;margin-bottom:12px}.import-grid{display:grid;gap:6px}.import-row{display:grid;grid-template-columns:1fr 120px 180px 140px 180px;gap:10px;align-items:center;min-height:36px;padding:8px 12px;border-radius:var(--radius-sm);background:#ffffffd6;font-size:13px;transition:background .12s ease}.import-row:hover{background:#fff}.stats-row{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:12px}.stats-row span{min-height:26px;display:inline-flex;align-items:center;border-radius:20px;padding:0 12px;font-size:12px;font-weight:500}.stats-row span:nth-child(1){background:var(--c-success-light);color:var(--c-success)}.stats-row span:nth-child(2){background:var(--c-accent-light);color:var(--c-accent)}.stats-row span:nth-child(3){background:var(--c-warning-light);color:var(--c-warning)}.stats-row span:nth-child(4){background:var(--c-danger-light);color:var(--c-danger)}.table-quick-search{display:flex;align-items:center;gap:8px;padding:8px 12px;margin-bottom:10px;background:#ffffff8c;border:1px solid rgba(200,210,225,.3);border-radius:var(--radius-sm);backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px);transition:border-color .15s ease,box-shadow .15s ease;position:relative;z-index:2}.table-quick-search:focus-within{border-color:#c8d2e14d;box-shadow:none}.table-quick-search svg{color:var(--c-text-muted);flex-shrink:0}.table-quick-search input{flex:1;border:0;padding:0;font-size:12px;background:transparent;min-width:0;height:24px}.table-quick-search input:focus{box-shadow:none!important;background:transparent!important;border-color:transparent!important;outline:none!important}.quick-search-clear{font-size:11px;min-height:24px;padding:0 8px;border-radius:4px}.column-settings{position:relative;margin-left:auto}.column-settings-btn{min-height:28px;width:28px;padding:0;border-color:transparent;background:transparent;border-radius:var(--radius-xs);color:var(--c-text-muted)}.column-settings-btn:hover{background:var(--c-accent-light);color:var(--c-accent)}.column-settings-btn.active{background:var(--c-accent-soft);border:1px solid var(--c-accent-border);color:var(--c-accent);box-shadow:inset 0 0 0 1px #ffffff3d}.column-settings-dropdown{position:absolute;top:100%;right:0;margin-top:6px;background:#fffffffa;backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px);border:1px solid var(--c-border);border-radius:var(--radius);box-shadow:0 8px 32px #0000001a,0 2px 6px #0000000a;min-width:140px;z-index:30;padding:6px 0;transform-origin:top right;animation:dropdown-in .13s cubic-bezier(.16,1,.3,1)}.column-settings-item{display:flex;align-items:center;gap:8px;padding:7px 14px;font-size:12px;color:var(--c-text);cursor:pointer;transition:background .1s ease;background:transparent}.column-settings-item:hover{background:var(--c-accent-light)}.column-settings-item:has(input:checked){background:var(--c-accent-light);color:var(--c-accent);font-weight:500}.table-wrap{overflow:auto;max-height:62vh;border-radius:var(--radius)}.table-wrap,.content,.detail,.settings-page,.settings-content,.batch-body,.batch-input-textarea,.batch-preview-list,.log-page,.log-table-wrap,.custom-select-menu{scrollbar-width:thin;scrollbar-color:rgba(148,163,184,.22) transparent}.table-wrap::-webkit-scrollbar,.content::-webkit-scrollbar,.detail::-webkit-scrollbar,.settings-page::-webkit-scrollbar,.settings-content::-webkit-scrollbar,.batch-body::-webkit-scrollbar,.batch-input-textarea::-webkit-scrollbar,.batch-preview-list::-webkit-scrollbar,.log-page::-webkit-scrollbar,.log-table-wrap::-webkit-scrollbar,.custom-select-menu::-webkit-scrollbar{width:8px;height:8px}.table-wrap::-webkit-scrollbar-track,.content::-webkit-scrollbar-track,.detail::-webkit-scrollbar-track,.settings-page::-webkit-scrollbar-track,.settings-content::-webkit-scrollbar-track,.batch-body::-webkit-scrollbar-track,.batch-input-textarea::-webkit-scrollbar-track,.batch-preview-list::-webkit-scrollbar-track,.log-page::-webkit-scrollbar-track,.log-table-wrap::-webkit-scrollbar-track,.custom-select-menu::-webkit-scrollbar-track{background:transparent}.table-wrap::-webkit-scrollbar-thumb,.content::-webkit-scrollbar-thumb,.detail::-webkit-scrollbar-thumb,.settings-page::-webkit-scrollbar-thumb,.settings-content::-webkit-scrollbar-thumb,.batch-body::-webkit-scrollbar-thumb,.batch-input-textarea::-webkit-scrollbar-thumb,.batch-preview-list::-webkit-scrollbar-thumb,.log-page::-webkit-scrollbar-thumb,.log-table-wrap::-webkit-scrollbar-thumb,.custom-select-menu::-webkit-scrollbar-thumb{background:#94a3b82e;border-radius:999px;border:2px solid transparent;background-clip:padding-box}.table-wrap:hover::-webkit-scrollbar-thumb,.content:hover::-webkit-scrollbar-thumb,.detail:hover::-webkit-scrollbar-thumb,.settings-page:hover::-webkit-scrollbar-thumb,.settings-content:hover::-webkit-scrollbar-thumb,.batch-body:hover::-webkit-scrollbar-thumb,.batch-input-textarea:hover::-webkit-scrollbar-thumb,.batch-preview-list:hover::-webkit-scrollbar-thumb,.log-page:hover::-webkit-scrollbar-thumb,.log-table-wrap:hover::-webkit-scrollbar-thumb,.custom-select-menu:hover::-webkit-scrollbar-thumb{background:#94a3b857;background-clip:padding-box}.product-table{width:max-content;min-width:100%;border-collapse:collapse;font-size:13px}.product-table th,.product-table td{padding:12px 14px;text-align:left;vertical-align:middle;white-space:nowrap;max-width:200px;overflow:hidden;text-overflow:ellipsis;border-bottom:1px solid var(--c-border-light)}.product-table th{position:sticky;top:0;z-index:2;background:#eef3f9;backdrop-filter:none;-webkit-backdrop-filter:none;color:var(--c-text-secondary);font-weight:700;font-size:11px;text-transform:uppercase;letter-spacing:.06em;border-bottom:1px solid rgba(205,214,226,.98);cursor:pointer;-webkit-user-select:none;user-select:none;box-shadow:inset 0 -1px #cdd6e2fa}.product-table th:hover{color:var(--c-accent)}.product-table tbody tr{cursor:pointer;transition:background .15s ease,box-shadow .15s ease}.product-table tbody tr:nth-child(2n) td{background:#f7fafdc7}.product-table tbody tr:hover td{background:#3b82f624}.product-table tbody tr:hover td.sensitive{background:#fbbf242e}.product-table tbody tr.selected td{background:#3b82f62e;box-shadow:inset 3px 0 0 var(--c-accent)}.product-table tbody tr.selected td.sensitive{background:#fbbf242e}.sticky-col{position:sticky;left:0;z-index:1;background:#fff;box-shadow:1px 0 #e2e8f0e6}th.sticky-col{z-index:3;background:#eef3f9;-webkit-backdrop-filter:none;backdrop-filter:none}.product-table tbody tr:hover td.sticky-col{background:#3b82f624}.product-table tbody tr.selected td.sticky-col{background:#3b82f62e}.product-table tbody tr:nth-child(2n) td.sticky-col{background:#f7fafdf0}.strong{font-weight:600;color:var(--c-text)}em{color:var(--c-text-muted);font-style:normal;font-size:12px}.badge{display:inline-flex;align-items:center;max-width:160px;height:22px;padding:0 10px;border-radius:20px;background:var(--c-accent-light);color:var(--c-accent);font-size:11px;font-weight:500;overflow:hidden;text-overflow:ellipsis;border:1px solid var(--c-accent-border)}.badge.warn{background:var(--c-warning-light);color:var(--c-warning);border-color:#f59e0b26}.sensitive{color:#b45309;font-size:12px;font-weight:500}.icon-button{width:28px;min-height:28px;padding:0;border-color:transparent;background:transparent;border-radius:var(--radius-sm)}.icon-button:hover:not(:disabled){background:var(--c-accent-light)}.editor{display:grid;gap:14px;max-width:400px;padding-bottom:12px}.editor-scroll{display:grid;gap:14px;min-width:0}.form-section-title{font-weight:600;font-size:13px;color:var(--c-text-secondary);background:#f8fafceb;border:1px solid var(--c-border);border-radius:var(--radius-sm);padding:10px 12px}.editor-primary-section,.editor-compact-section{display:grid;gap:14px}.editor-field{display:grid;gap:5px;min-width:0}.editor-field-label{color:var(--c-text);font-size:12px;font-weight:600;letter-spacing:.01em}.editor-field-control{min-width:0;display:grid;gap:8px}.editor label{display:grid;gap:5px;color:var(--c-text);font-size:12px;font-weight:600;letter-spacing:.01em}.editor label input,.editor label select,.editor label textarea,.editor-field input,.editor-field select,.editor-field textarea{color:var(--c-text);font-size:13px}.editor-field-pair,.two-col{display:grid;grid-template-columns:1fr 1fr;gap:10px}.editor-inline-add{margin-top:2px}.price-input-wrap{display:flex;align-items:stretch}.price-input-wrap input{flex:1;min-width:0}.price-input-wrap input.has-suffix{border-top-right-radius:0;border-bottom-right-radius:0;border-right:none}.price-unit-suffix{flex-shrink:0;width:auto;min-width:52px;height:36px;border-top-left-radius:0;border-bottom-left-radius:0;border-left:1px solid var(--c-border);background-color:#f8fafcfa;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8'%3E%3Cpath d='M1 1l5 5 5-5' stroke='%239ca3af' stroke-width='1.5' fill='none'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 6px center;font-size:12px;color:var(--c-text-muted, #6b7280);padding:0 18px 0 6px;cursor:pointer}.price-unit-suffix:focus,.price-unit-suffix:active{outline:none;background-color:#f8fafcfa;border-color:var(--c-border);box-shadow:none}.price-unit-suffix:focus-visible{outline:none;box-shadow:none}.price-unit-fixed{flex-shrink:0;display:flex;align-items:center;height:36px;padding:0 8px;border-radius:0 var(--radius-sm) var(--radius-sm) 0;border:1px solid var(--c-border);border-left:1px solid var(--c-border);background-color:#f8fafcfa;font-size:12px;color:var(--c-text-muted, #6b7280);white-space:nowrap}.custom-select-wrap{position:relative;display:inline-flex}.custom-select-trigger{display:inline-flex;align-items:center;justify-content:space-between;border:var(--glass-border);background:var(--c-card);backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);color:var(--c-text);min-height:34px;border-radius:var(--radius-sm);padding:0 10px;gap:5px;cursor:pointer;font-size:13px;font-weight:500;transition:background .14s ease,border-color .14s ease,box-shadow .14s ease,color .14s ease;box-shadow:0 1px 3px #0000000a}.custom-select-trigger:hover:not(:disabled){background:#fff;border-color:#cbd5e1f5;box-shadow:0 6px 16px #0f172a14}.custom-select-trigger:disabled{cursor:not-allowed;opacity:.4}.custom-select-trigger:after{content:"";display:inline-block;width:0;height:0;border-left:4px solid transparent;border-right:4px solid transparent;border-top:5px solid var(--c-text-muted);margin-left:4px;flex-shrink:0;transition:transform .14s ease,border-color .14s ease}.custom-select-trigger.is-open:not(.open-up):after{transform:rotate(180deg)}.custom-select-trigger.open-up:after{border-top:none;border-bottom:5px solid var(--c-text-muted)}.custom-select-trigger.open-up.is-open:after{transform:rotate(180deg)}.custom-select-trigger.year-filter{border:0;background:transparent;backdrop-filter:none;-webkit-backdrop-filter:none;min-height:0;padding:0;font-size:13px;color:var(--c-text);box-shadow:none;height:auto;border-radius:0;transform:none}.custom-select-trigger.year-filter:hover:not(:disabled),.custom-select-trigger.year-filter.is-open{background:transparent;border-color:transparent;box-shadow:none;transform:none}.custom-select-trigger.year-filter:after{border-top-color:var(--c-text-muted)}.custom-select-trigger.price-unit-suffix{flex-shrink:0;width:auto;min-width:52px;height:36px;border-radius:0;border-top-right-radius:var(--radius-sm);border-bottom-right-radius:var(--radius-sm);border-left:1px solid var(--c-border);background-color:#f8fafcfa;backdrop-filter:none;-webkit-backdrop-filter:none;font-size:12px;color:var(--c-text-muted, #6b7280);padding:0 8px 0 6px;min-height:0;box-shadow:none}.custom-select-trigger.price-unit-suffix:hover:not(:disabled){background-color:#f1f5f9;box-shadow:none}.custom-select-trigger.price-unit-suffix:after{border-top-color:var(--c-text-muted, #6b7280)}.custom-select-value{pointer-events:none}.custom-select-value{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.custom-select-menu{background:#fffffffa;backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px);border:1px solid var(--c-border);border-radius:var(--radius);box-shadow:0 16px 40px #0f172a1f,0 4px 10px #0f172a0d;z-index:100;overflow-x:hidden;overflow-y:auto;max-height:min(280px,calc(100vh - 80px));transform-origin:top center;animation:dropdown-in .13s cubic-bezier(.16,1,.3,1)}.custom-select-menu.open-up{animation-name:dropdown-up-in}.custom-select-item{display:flex;align-items:center;width:100%;border:0;border-radius:0;background:transparent;min-height:38px;padding:0 14px;font-size:13px;color:var(--c-text);cursor:pointer;transition:background .1s ease;white-space:nowrap}.custom-select-item:hover{background:var(--c-accent-light);color:var(--c-accent)}.custom-select-item.active{color:var(--c-accent);font-weight:600}.editor-field-control .custom-select-wrap{width:100%;display:flex}.editor-field-control .custom-select-trigger{width:100%;min-height:36px;justify-content:space-between;border:1px solid var(--c-border);background:#fffffff5;box-shadow:none;font-weight:500}.editor-field-control .custom-select-trigger:hover:not(:disabled){border-color:#cbd5e1f5;background:#fff;box-shadow:0 4px 12px #0f172a0d}.editor-field-control .custom-select-trigger.is-open{border-color:var(--c-accent-border-strong);background:#fff}.custom-select-trigger.editor-category-select,.custom-select-trigger.editor-source-select{color:var(--c-text)}.price-input-wrap .custom-select-wrap{width:auto;display:inline-flex;flex:0 0 auto}.price-input-wrap .custom-select-trigger.price-unit-suffix{width:auto;min-width:52px;height:36px;min-height:36px;border-radius:0;border-top-right-radius:var(--radius-sm);border-bottom-right-radius:var(--radius-sm);border-left:1px solid var(--c-border);background-color:#f8fafcfa;box-shadow:none}.danger{color:var(--c-danger);border-color:#ef444433}.danger:hover:not(:disabled){background:var(--c-danger-light);border-color:#ef44444d}.primary{background:var(--c-accent);color:#fff;border-color:var(--c-accent);box-shadow:none}.primary:hover:not(:disabled){background:var(--c-accent-hover);border-color:var(--c-accent-hover)}.empty-state{min-height:200px;display:grid;place-items:center;color:var(--c-text-muted);border:1px dashed var(--c-border-strong);border-radius:var(--radius);font-size:13px;background:#ffffff9e}.detail-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:14px}.detail-close{width:30px;min-height:30px;padding:0;border-color:transparent;background:transparent;border-radius:var(--radius-sm);color:var(--c-text-muted)}.detail-close:hover{background:#0f172a0a;color:var(--c-text)}.archived-row td{opacity:.45}.archived-toggle{margin-top:8px;color:var(--c-warning);border-color:transparent;background:var(--c-warning-light);font-size:12px}.archived-toggle:hover:not(:disabled){background:#f59e0b1f;border-color:transparent}.archived-toggle.active{background:#f59e0b1f;border-color:transparent}.status-filter-bar{display:flex;gap:4px;margin-top:8px}.status-filter-btn{flex:1;height:30px;font-size:12px;font-weight:500;border:1px solid var(--c-border);border-radius:var(--radius-sm);background:var(--c-card);color:var(--c-text-secondary);cursor:pointer;transition:all .15s ease}.status-filter-btn:hover:not(.active){background:#3b82f614;color:var(--c-text)}.status-filter-btn.active{background:var(--c-brand);color:var(--c-brand-text);border-color:var(--c-brand)}.status-filter-btn.active:hover:not(:disabled){background:var(--c-brand);color:var(--c-brand-text);border-color:var(--c-brand);box-shadow:none}.batch-date-row{display:flex;align-items:center;gap:12px;margin-bottom:12px;padding:10px 14px;background:#ffffffd6;border:1px solid var(--c-border-light);border-radius:var(--radius-sm)}.batch-date-row label{display:flex;align-items:center;gap:7px;font-size:13px;color:var(--c-text-secondary);white-space:nowrap}.batch-date-row input[type=date]{width:140px}.batch-date-hint{font-size:12px;color:var(--c-text-muted)}.editor-actions{position:sticky;bottom:-6px;z-index:4;flex-wrap:wrap;gap:8px;margin:10px -14px -6px;padding:10px 14px 8px;background:#fffffffa;backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);border-top:1px solid var(--c-border);box-shadow:0 -10px 24px #0f172a14}.editor-actions:after{content:"";position:absolute;left:0;right:0;bottom:-10px;height:10px;background:#fffffffa}.editor-actions button{flex:1 1 120px}.settings-section{margin-top:14px;padding-top:14px;border-top:1px solid rgba(200,210,225,.3)}.settings-toggle{width:100%;justify-content:flex-start;border-color:transparent;background:transparent;color:var(--c-text-muted);font-weight:600;font-size:11px;text-transform:uppercase;letter-spacing:.06em}.settings-toggle:hover:not(:disabled){background:#00000005}.rotate-180{transform:rotate(180deg);transition:transform .15s ease}.settings-panel{margin-top:8px;border:1px solid rgba(200,210,225,.3);border-radius:var(--radius);background:#f0f4f880;backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);overflow:hidden}.settings-tabs{display:flex;border-bottom:1px solid rgba(200,210,225,.3)}.settings-tabs button{flex:1;border:0;border-radius:0;min-height:36px;font-size:12px;background:transparent;color:var(--c-text-muted);font-weight:500}.settings-tabs button:hover{background:#f8fafce6}.settings-tabs button.active{background:#fff9;color:var(--c-accent);font-weight:600;border-bottom:2px solid var(--c-accent)}.settings-content{padding:12px;max-height:280px;overflow-y:auto}.settings-page{padding:16px 20px;overflow-y:auto;height:calc(100vh - 104px);width:100%}.settings-home-header{margin-bottom:18px}.settings-home-title-row{display:flex;align-items:center;gap:10px;margin-bottom:2px}.settings-home-copy h2,.settings-panel-copy h2{margin:0;font-size:18px;color:var(--c-text)}.settings-home-copy p,.settings-panel-copy p{margin:6px 0 0;font-size:13px;color:var(--c-text-muted);line-height:1.6}.settings-module-list{display:grid;gap:12px}.settings-module-card{width:100%;display:flex;align-items:center;justify-content:space-between;gap:14px;padding:16px 18px;border:1px solid var(--c-border);border-radius:var(--radius);background:var(--c-card);color:var(--c-text);text-align:left;box-shadow:0 6px 18px #0f172a0a}.settings-module-card:hover{background:var(--c-card);border-color:#3b82f638;box-shadow:var(--shadow-soft)}.settings-module-copy{display:grid;gap:4px;min-width:0}.settings-module-copy strong{font-size:14px;color:var(--c-text)}.settings-module-copy span{font-size:12px;color:var(--c-text-muted);line-height:1.5}.settings-panel-header{display:flex;align-items:flex-start;gap:14px;margin-bottom:18px}.settings-panel-title-row{display:flex;align-items:center;gap:10px;margin-bottom:2px}.settings-back-btn{display:inline-flex;align-items:center;justify-content:center;width:34px;min-width:34px;height:34px;min-height:34px;padding:0;border:1px solid var(--c-border);border-radius:12px;background:#fffffff5;box-shadow:0 3px 12px #0f172a0d;color:var(--c-text-secondary);flex-shrink:0}.settings-back-btn:hover:not(:disabled){background:#fff;border-color:var(--c-accent-border);color:var(--c-accent)}.settings-mobile-back{display:none}.settings-panel-copy{min-width:0}.settings-placeholder{padding:18px;border:1px solid var(--c-border);border-radius:var(--radius);background:var(--c-card)}.settings-placeholder strong{display:block;font-size:14px;color:var(--c-text);margin-bottom:8px}.settings-placeholder p{margin:0;font-size:13px;color:var(--c-text-muted);line-height:1.7}.settings-page .settings-tabs{border-bottom:1px solid var(--c-border);margin-bottom:0}.settings-page .settings-tabs button{padding:10px 18px;font-size:13px;font-weight:500;color:var(--c-text-muted);background:transparent;border:none;border-bottom:2px solid transparent;cursor:pointer;transition:all .15s ease}.settings-page .settings-tabs button:hover{color:var(--c-text);background:#f8fafce6}.settings-page .settings-tabs button.active{color:var(--c-accent);border-bottom-color:var(--c-accent);background:transparent}.settings-page .settings-content{padding:16px 0;max-height:none;overflow-y:visible}.settings-page-compact-perms .settings-panel-header{margin-bottom:10px}.settings-page-compact-perms .settings-panel-copy p{margin-top:4px}.settings-page-compact-perms .settings-content{padding-top:8px}.settings-page-compact-perms .perm-settings-content{display:grid;gap:12px}.settings-page-compact-perms .perm-hint,.settings-page-compact-perms .field-config-select,.settings-page-compact-perms .field-list,.settings-page-compact-perms .perm-save-bar{margin:0}.settings-page .rule-add-row{grid-template-columns:1fr 1fr 1fr auto}.settings-page .settings-rule-add-short{grid-template-columns:1fr 1fr auto}.settings-page .rule-add-row select,.settings-page .rule-add-row input{height:34px;font-size:13px}.settings-page .rule-add-row button{min-height:34px;font-size:13px}.settings-page .field-list{display:grid;grid-template-columns:repeat(auto-fill,minmax(160px,1fr));gap:8px}.settings-page .field-item{font-size:13px;padding:8px 12px;border:1px solid var(--c-border);border-radius:var(--radius-sm);background:var(--c-surface)}.settings-page .user-item{padding:12px 0}.settings-nav-btn{gap:5px}.perm-hint{font-size:12px;color:var(--c-text-muted);margin-bottom:12px;line-height:1.5}.perm-save-bar{display:flex;align-items:center;gap:12px;margin-top:16px;padding:12px 16px;background:var(--c-accent-light);border:1px solid var(--c-accent-border);border-radius:var(--radius-sm)}.perm-unsaved{font-size:13px;color:#d97706;font-weight:500}.perm-save-btn{padding:6px 20px;font-size:13px;font-weight:600;color:#fff;background:var(--c-accent);border:none;border-radius:var(--radius-sm);cursor:pointer;white-space:nowrap}.perm-save-btn:hover{opacity:.9}.perm-save-btn:disabled{opacity:.5;cursor:not-allowed}.rule-add-row{display:grid;grid-template-columns:1fr;gap:5px;margin-bottom:10px}.rule-add-row select,.rule-add-row input{height:30px;font-size:12px}.rule-add-row button{min-height:30px;font-size:12px}.rule-group{margin-bottom:8px}.rule-group strong{display:block;font-size:11px;color:var(--c-text-muted);text-transform:uppercase;letter-spacing:.04em;margin-bottom:3px;padding:0 4px}.rule-item{display:flex;align-items:center;gap:5px;padding:6px 10px;border-radius:var(--radius-sm);background:var(--c-card);margin-bottom:3px;font-size:12px;transition:background .12s ease;border:1px solid transparent}.rule-item:hover{background:var(--c-card-muted);border-color:var(--c-border-light)}.rule-item span:first-child{font-weight:600;color:var(--c-text)}.rule-item span:nth-child(2){color:var(--c-text-muted)}.rule-item span:nth-child(3){color:var(--c-text-secondary)}.rule-item .icon-button{margin-left:auto;width:22px;min-height:22px}.root-category-item .rule-item-main{font-size:14px;font-weight:700;color:var(--c-accent)}.child-category-item .rule-item-main{font-size:12px;font-weight:500;color:var(--c-text-secondary)}.field-config-select{margin-bottom:8px}.field-config-select select{height:30px;font-size:12px}.field-list{display:grid;gap:2px}.field-item{display:flex;align-items:center;gap:7px;padding:6px 10px;border-radius:var(--radius-sm);background:var(--c-card);font-size:12px;cursor:pointer;transition:background .12s ease}.field-item:hover{background:var(--c-card-muted)}.stats-failed{background:var(--c-danger-light)!important;color:var(--c-danger)!important}.batch-bar{display:flex;align-items:center;gap:10px;padding:10px 14px;margin-bottom:12px;background:var(--c-accent-light);border:1px solid var(--c-accent-border);border-radius:var(--radius);font-size:13px;backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px)}.batch-bar span{font-weight:600;color:var(--c-accent)}.classify-row{display:flex;align-items:center;gap:6px;margin-left:4px}.classify-row button{min-height:30px;font-size:12px}.classify-menu-btn{height:30px;padding:0 12px;font-size:12px;background:var(--c-surface);border:1px solid var(--c-border);border-radius:var(--radius-sm);color:var(--c-text);cursor:pointer;white-space:nowrap;display:flex;align-items:center;gap:4px}.classify-menu,.classify-submenu{list-style:none;margin:0;padding:4px 0;background:var(--c-surface-solid);border:1px solid var(--c-border);border-radius:var(--radius-sm);box-shadow:var(--shadow-md);z-index:9999}.classify-menu{min-width:140px;max-height:320px;overflow-y:auto}.classify-submenu{min-width:120px}.classify-menu-root{display:block;padding:6px 12px;font-size:13px;color:var(--c-text);cursor:default;white-space:nowrap}.classify-menu-item.has-children .classify-menu-root{cursor:pointer}.classify-menu-root:hover,.classify-menu-root.active{background:var(--c-brand);color:var(--c-brand-text);border-radius:4px}.classify-submenu-item{display:block;padding:6px 12px;font-size:12px;color:var(--c-text-secondary);cursor:pointer;white-space:nowrap}.classify-submenu-item:hover{background:var(--c-brand);color:var(--c-brand-text);border-radius:4px}.confirm-overlay{position:fixed;inset:0;background:#0f142366;display:grid;place-items:center;z-index:100;backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px);padding:20px}.confirm-dialog{background:#ffffffeb;backdrop-filter:blur(24px);-webkit-backdrop-filter:blur(24px);border:1px solid var(--c-border);border-radius:16px;padding:28px;width:100%;max-width:380px;box-shadow:0 24px 80px #0000001f,0 4px 12px #0000000a;text-align:center}.confirm-icon{color:var(--c-warning);margin-bottom:12px}.confirm-dialog p{margin:0 0 18px;font-size:14px;line-height:1.6}.confirm-input{width:100%;margin-bottom:14px;border:1px solid rgba(200,210,225,.5);border-radius:var(--radius-sm);padding:10px 12px;font-size:13px}.confirm-input:focus{border-color:var(--c-danger);box-shadow:0 0 0 3px #ef44441a}.confirm-actions{display:flex;justify-content:center;gap:10px;margin-top:8px}.confirm-actions button{min-height:38px;padding:0 20px;font-size:13px}.confirm-compare{width:100%;margin-bottom:14px;text-align:left;border:1px solid rgba(200,210,225,.5);border-radius:var(--radius-sm);overflow:hidden;font-size:12px}.confirm-compare table{width:100%;border-collapse:collapse}.confirm-compare th,.confirm-compare td{padding:6px 10px;border-bottom:1px solid rgba(200,210,225,.3)}.confirm-compare th{background:#c8d2e126;font-weight:600;text-align:left;white-space:nowrap}.confirm-compare td{color:var(--c-text)}.confirm-compare tr:last-child td{border-bottom:none}.confirm-compare .compare-label{color:var(--c-text-muted);width:70px}.toast{position:fixed;bottom:24px;left:50%;transform:translate(-50%);display:flex;align-items:center;gap:10px;padding:12px 18px;background:#1a1f2ee6;backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px);color:#fff;border-radius:12px;font-size:13px;box-shadow:0 12px 40px #0003;z-index:101;animation:toast-in .3s cubic-bezier(.16,1,.3,1)}@keyframes toast-in{0%{opacity:0;transform:translate(-50%) translateY(16px) scale(.96)}to{opacity:1;transform:translate(-50%) translateY(0) scale(1)}}.mobile-scroll-top-btn{display:none}.toast-actions{display:flex;align-items:center;gap:5px}.toast-undo{border-color:#ffffff26;background:transparent;color:#86efac;min-height:26px;font-size:12px}.toast-undo:hover{background:#ffffff1a}.toast-close{border:0;background:transparent;color:#ffffff80;min-height:26px;padding:0 3px}.toast-close:hover{color:#fff}.offline-banner{background:#ef4444;color:#fff;text-align:center;padding:8px 12px;font-size:13px;font-weight:500;letter-spacing:.02em;display:flex;align-items:center;justify-content:center;gap:6px;animation:slideDown .25s ease-out}.offline-banner svg{flex-shrink:0}@keyframes slideDown{0%{transform:translateY(-100%);opacity:0}to{transform:translateY(0);opacity:1}}.expand-toggle{width:100%;margin-top:6px;border-color:transparent;background:transparent;color:var(--c-text-secondary);font-size:12px;justify-content:center}.expand-toggle:hover{background:#00000005}.rule-item-actions{margin-left:auto;display:flex;gap:1px}.rule-item-actions .icon-button{width:20px;min-height:20px;font-size:11px}.rule-item .rename-input{flex:1;height:26px;font-size:12px;padding:2px 6px;border:1px solid var(--c-accent);border-radius:var(--radius-sm);outline:none}.field-required{color:var(--c-text-muted);font-size:11px}.user-item{display:flex;align-items:center;justify-content:space-between;padding:8px 10px;margin-bottom:4px;border-radius:var(--radius-sm);background:#ffffffd6}.user-info{display:flex;align-items:center;gap:8px}.user-name{font-size:13px;font-weight:600;color:var(--c-text)}.user-status{font-size:11px;padding:2px 8px;border-radius:10px;font-weight:500}.user-status.pending{background:var(--c-warning-light);color:var(--c-warning)}.user-status.approved{background:var(--c-success-light);color:var(--c-success)}.user-status.rejected{background:var(--c-danger-light);color:var(--c-danger)}.user-actions{display:flex;gap:4px}.user-approve{min-height:28px;padding:0 10px;font-size:12px;background:var(--c-success-light);color:var(--c-success);border:1px solid rgba(5,150,105,.2);border-radius:var(--radius-xs)}.user-approve:hover{background:#05966926}.user-reject{min-height:28px;padding:0 10px;font-size:12px;background:var(--c-danger-light);color:var(--c-danger);border:1px solid rgba(220,38,38,.2);border-radius:var(--radius-xs)}.user-reject:hover{background:#dc262626}.users-empty{font-size:13px;color:var(--c-text-muted);text-align:center;padding:20px 0}.user-role-select{height:26px;font-size:11px;padding:0 6px;border:1px solid var(--c-border);border-radius:4px;background:var(--c-surface-solid);color:var(--c-text)}.user-role-label{font-size:11px;color:var(--c-text-muted)}.user-delete{min-height:28px;padding:0 10px;font-size:12px;background:#c8d2e133;color:var(--c-text-muted);border:1px solid rgba(200,210,225,.3);border-radius:var(--radius-xs)}.user-delete:hover{background:var(--c-danger-light);color:var(--c-danger);border-color:#dc262633}@media(min-width:768px){.settings-page{max-width:1160px;margin:0 auto}.settings-home-header,.settings-panel-header,.settings-page .settings-content{max-width:980px;margin-left:auto;margin-right:auto}.settings-module-list{max-width:980px;margin:0 auto;grid-template-columns:repeat(2,minmax(0,1fr));align-items:start}.settings-page .settings-content{display:grid;gap:16px}.settings-page .rule-add-row{margin-bottom:0;padding:14px;border:1px solid rgba(200,210,225,.42);border-radius:14px;background:#ffffff94;box-shadow:0 4px 18px #0f172a0a}.settings-page .rule-group{margin-bottom:0;padding:14px;border:1px solid rgba(200,210,225,.42);border-radius:14px;background:#ffffff85;box-shadow:0 4px 18px #0f172a0a}.settings-page .rule-group strong{margin-bottom:10px;padding:0;font-size:12px;letter-spacing:.05em}.settings-page .rule-item{gap:12px;margin-bottom:8px;padding:10px 12px;border:1px solid rgba(200,210,225,.3);background:#ffffffb8}.settings-page .rule-item:last-child{margin-bottom:0}.settings-page .rule-item-info{min-width:0;flex:1;display:flex;align-items:center;gap:10px}.settings-page .rule-item-main{min-width:0;font-size:13px;font-weight:600;color:var(--c-text);word-break:break-word}.settings-page .root-category-item .rule-item-main{font-size:14px;font-weight:700;color:var(--c-accent)}.settings-page .child-category-item .rule-item-main{font-size:12px;font-weight:500;color:var(--c-text-secondary)}.settings-page .rule-item-arrow{flex-shrink:0;color:var(--c-text-muted)}.settings-page .rule-item-target{min-width:0;color:var(--c-text-secondary);word-break:break-word}.settings-page .rule-item-actions{margin-left:0;flex-shrink:0;gap:6px}.settings-page .rule-item-actions .icon-button{width:28px;min-height:28px;font-size:12px}.settings-page .rule-item .rename-input{height:34px;padding:0 10px;font-size:13px}.settings-page .users-empty{padding:28px 0;border:1px dashed rgba(200,210,225,.5);border-radius:14px;background:#ffffff6b}.settings-page .user-item{align-items:flex-start;gap:14px;margin-bottom:10px;padding:14px 16px;border:1px solid rgba(200,210,225,.38);border-radius:14px;background:#ffffff9e;box-shadow:0 4px 18px #0f172a0a}.settings-page .user-item:last-child{margin-bottom:0}.settings-page .user-info{min-width:0;flex:1;display:grid;gap:8px}.settings-page .user-main,.settings-page .user-meta{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.settings-page .user-role-select{min-width:120px;height:30px;font-size:12px;padding:0 10px}.settings-page .user-role-label{display:inline-flex;align-items:center;min-height:26px;padding:0 10px;border-radius:999px;background:#c8d2e138;color:var(--c-text-secondary)}.settings-page .user-actions{flex-shrink:0;gap:8px}.settings-page .user-approve,.settings-page .user-reject,.settings-page .user-delete{min-height:30px;padding:0 12px}}.user-menu-wrap{position:relative;flex-shrink:0}.user-badge{min-height:44px;padding:6px 12px 6px 10px;border:1px solid rgba(255,255,255,.18);border-radius:18px;background:#ffffffeb;color:var(--c-text);display:flex;align-items:center;gap:10px;box-shadow:0 8px 24px #080f1e1f}.user-badge:hover{background:#fffffffa}.user-avatar-icon{width:24px;min-width:24px;height:24px;border-radius:999px;color:#29334ae0;display:inline-flex;align-items:center;justify-content:center}.user-badge-copy{display:grid;gap:1px;min-width:0;text-align:left}.user-badge-copy strong{font-size:14px;line-height:1.1;color:var(--c-text);font-weight:600}.user-badge-copy small{font-size:12px;line-height:1.2;color:var(--c-text-muted)}.user-menu-chevron{color:var(--c-text-muted);transition:transform .18s ease,color .18s ease}.user-menu-chevron.open{transform:rotate(180deg);color:var(--c-text-secondary)}.user-dropdown-menu{position:absolute;top:calc(100% + 10px);right:0;width:154px;padding:6px 0;border-radius:18px;background:var(--c-card);border:1px solid var(--c-border);box-shadow:0 18px 44px #0f172a24;overflow:hidden;z-index:60;transform-origin:top right;animation:dropdown-in .13s cubic-bezier(.16,1,.3,1)}.user-dropdown-header{display:grid;gap:2px;padding:8px 16px 10px;border-bottom:1px solid var(--c-border-light)}.user-dropdown-header strong{font-size:16px;font-weight:600;color:var(--c-text)}.user-dropdown-header span{font-size:12px;color:var(--c-text-muted)}.user-dropdown-item{width:100%;min-height:40px;padding:0 16px;justify-content:flex-start;gap:9px;border:0;border-radius:0;background:transparent;box-shadow:none;color:var(--c-text);font-size:13px;font-weight:500}.user-dropdown-item:hover{transform:none;background:var(--c-accent-light);color:var(--c-accent);box-shadow:none}.user-dropdown-item.danger{color:#ef4444;border-top:1px solid var(--c-border-light)}.user-dropdown-item.danger:hover{background:#ef444414;color:#dc2626}.add-menu-wrap{position:relative}.add-menu{position:absolute;top:100%;left:0;margin-top:6px;background:var(--c-card);backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px);border:1px solid var(--c-border);border-radius:var(--radius);box-shadow:0 16px 40px #0f172a1f,0 4px 10px #0f172a0d;min-width:150px;z-index:30;overflow:hidden;transform-origin:top left;animation:dropdown-in .13s cubic-bezier(.16,1,.3,1)}@keyframes menu-in{0%{opacity:0;transform:translateY(-6px) scale(.96)}to{opacity:1;transform:translateY(0) scale(1)}}@keyframes dropdown-in{0%{opacity:0;transform:translateY(-5px) scale(.985);filter:blur(1px)}to{opacity:1;transform:translateY(0) scale(1);filter:blur(0)}}@keyframes dropdown-up-in{0%{opacity:0;transform:translateY(5px) scale(.985);filter:blur(1px)}to{opacity:1;transform:translateY(0) scale(1);filter:blur(0)}}.add-menu-item{width:100%;justify-content:flex-start;border:0;border-radius:0;background:transparent;min-height:40px;padding:0 16px;font-size:13px;color:var(--c-text)}.add-menu-item:hover{background:var(--c-accent-light);color:var(--c-accent)}.empty-state-content{display:flex;flex-direction:column;align-items:center;gap:10px;color:var(--c-text-muted);padding:48px 20px}.empty-state-content p{margin:0;font-size:16px;font-weight:600;color:var(--c-text-secondary)}.empty-state-content span{font-size:13px;text-align:center}.batch-overlay{position:fixed;inset:0;background:#0f142366;display:grid;place-items:center;z-index:100;backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px)}.batch-dialog{background:var(--c-card);backdrop-filter:blur(24px);-webkit-backdrop-filter:blur(24px);border:1px solid var(--c-border);border-radius:18px;width:560px;max-width:95vw;max-height:85vh;display:flex;flex-direction:column;box-shadow:0 20px 52px #0f172a24,0 4px 12px #0f172a0d}.batch-header{display:flex;align-items:center;justify-content:space-between;padding:18px 22px;border-bottom:1px solid rgba(200,210,225,.3)}.batch-title{display:flex;align-items:center;gap:8px;font-weight:600;font-size:15px;color:var(--c-text)}.batch-body{flex:1;overflow-y:auto;padding:18px 22px;display:grid;gap:14px}.batch-controls{display:grid;gap:12px;grid-template-columns:repeat(2,minmax(0,1fr))}.batch-controls label{display:grid;gap:4px;font-size:12px;color:var(--c-text-secondary);font-weight:500;min-width:0}.batch-controls select,.batch-controls input[type=text],.batch-controls input[type=date]{height:36px;width:100%;box-sizing:border-box}.batch-controls input[type=date]{display:block;min-width:0;max-width:100%;padding:0 10px;line-height:36px;-webkit-appearance:none;appearance:none;text-align:left;overflow:hidden}.batch-controls input[type=date]::-webkit-date-and-time-value{display:flex;align-items:center;min-height:36px;line-height:36px;text-align:left}.batch-controls input[type=date]::-webkit-calendar-picker-indicator{margin:0}.batch-control-full{grid-column:1 / -1}.batch-source-row{display:flex;gap:8px;align-items:center;flex-wrap:nowrap}.batch-source-row .custom-select-wrap{width:120px;min-width:120px;display:flex;flex:0 0 120px}.batch-source-row .custom-select-trigger.batch-source-select{width:100%;min-height:36px;padding:0 12px}.batch-source-row input[type=text]{min-width:0;flex:1 1 auto}.batch-input-area label{display:grid;gap:4px;font-size:12px;color:var(--c-text-secondary);font-weight:500}.batch-input-textarea{min-height:164px;max-height:240px;overflow-y:auto;font-size:14px;font-family:SF Mono,Menlo,Consolas,monospace;line-height:1.6;resize:vertical}.batch-preview{background:var(--c-card-muted);border:1px solid var(--c-border);border-radius:var(--radius);padding:14px}.batch-preview-title{font-size:12px;font-weight:600;color:var(--c-text-secondary);margin-bottom:10px;text-transform:uppercase;letter-spacing:.04em}.batch-preview-list{display:grid;gap:6px;max-height:240px;overflow-y:auto;padding-right:2px}.batch-preview-item{display:flex;align-items:center;gap:8px;flex-wrap:wrap;padding:8px 12px;border-radius:var(--radius-sm);background:#ffffffd6;font-size:13px;transition:background .12s ease;border:1px solid transparent}.batch-preview-item:hover{background:#fff;border-color:var(--c-border-light)}.batch-preview-item.pending{background:var(--c-warning-light)}.batch-preview-name{font-weight:600;color:var(--c-text);margin-right:2px}.batch-preview-tag{font-size:11px;padding:3px 9px;border-radius:20px;background:var(--c-accent-light);color:var(--c-accent);border:1px solid var(--c-accent-border)}.batch-preview-tag.spec{background:#64748b1f;color:#475467;border-color:#94a3b82e}.batch-preview-tag.head{background:#f59e0b1f;color:#b45309;border-color:#f59e0b2e}.batch-preview-tag.unit-price{background:#3b82f61f;color:#2563eb;border-color:#3b82f62e}.batch-preview-tag.price{background:var(--c-success-light);color:var(--c-success);border-color:#10b9811f}.batch-preview-tag.stock{background:#6366f11c;color:#4f46e5;border-color:#6366f129}.batch-preview-category{margin-left:auto;font-size:12px;color:var(--c-text-secondary);min-width:0}.batch-preview-category.warn{color:var(--c-warning);font-weight:500}.batch-footer{display:flex;justify-content:flex-end;gap:8px;padding:14px 22px;border-top:1px solid var(--c-border-light)}.batch-dialog input:focus,.batch-dialog select:focus,.batch-dialog textarea:focus,.batch-dialog input:focus-visible,.batch-dialog select:focus-visible,.batch-dialog textarea:focus-visible{outline:none;box-shadow:none}.category .chevron-icon{transition:transform .15s ease}button:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible{outline:2px solid var(--c-accent);outline-offset:2px}.editor input:focus-visible,.editor select:focus-visible,.editor textarea:focus-visible{outline:none;box-shadow:none!important}.pagination{display:flex;align-items:center;justify-content:center;gap:6px;padding:14px 0;font-size:13px}.pagination-info{color:var(--c-text-muted);font-size:12px;margin:0 4px}.pagination button{min-height:32px;font-size:12px}.stats-panel{background:var(--c-card);backdrop-filter:blur(var(--glass-blur));-webkit-backdrop-filter:blur(var(--glass-blur));border:1px solid var(--c-border);border-radius:var(--radius);padding:18px;margin-bottom:18px;box-shadow:var(--glass-shadow)}.stats-panel-header{display:flex;align-items:center;gap:7px;font-weight:600;font-size:11px;color:var(--c-text-muted);text-transform:uppercase;letter-spacing:.06em;margin-bottom:14px}.stats-tabs{display:flex;gap:6px;margin-bottom:16px;flex-wrap:wrap}.stats-tabs button{padding:5px 12px;border-radius:16px;font-size:12px;background:var(--c-card-muted);border:1px solid var(--c-border);color:var(--c-text-secondary);cursor:pointer;transition:all .15s}.stats-tabs button:hover{background:var(--c-card)}.stats-tabs button.active{background:var(--c-accent);color:#fff;border-color:var(--c-accent)}.stats-section{margin-top:14px;padding-top:14px;border-top:1px solid var(--c-border-light)}.stats-section-title{font-size:13px;font-weight:600;color:var(--c-text-secondary);margin-bottom:10px;display:flex;align-items:center;gap:8px}.stats-ok{font-size:12px;font-weight:500;color:#16a34a;display:flex;align-items:center;gap:4px}.stats-warn{font-size:12px;font-weight:500;color:#dc2626;display:flex;align-items:center;gap:4px}.stats-sub{font-size:11px;font-weight:400;color:var(--c-text-muted)}.stats-section-toggle{cursor:pointer;width:100%;text-align:left;background:none;border:0;padding:0;margin-bottom:10px}.stats-section-toggle:hover{opacity:.8}.stats-empty-hint{font-size:12px;color:var(--c-text-muted);padding:8px 0}.stats-check-list{display:grid;gap:4px}.stats-check-item{border-radius:var(--radius-sm);overflow:hidden}.stats-check-header{display:flex;align-items:center;gap:8px;width:100%;padding:8px 10px;font-size:13px;color:var(--c-text);background:var(--c-card-muted);border:1px solid var(--c-border);border-radius:var(--radius-sm);cursor:pointer;transition:background .15s}.stats-check-header:hover{background:var(--c-card)}.stats-check-ok{color:#16a34a}.stats-check-badge{margin-left:auto;background:#dc2626;color:#fff;font-size:11px;font-weight:600;padding:1px 8px;border-radius:10px}.stats-check-detail{padding:6px 10px 10px}.stats-check-cat{margin-bottom:4px}.stats-check-cat-header{display:flex;align-items:center;gap:6px;width:100%;padding:5px 8px;font-size:12px;font-weight:500;color:var(--c-text-secondary);background:#ffffffbd;border:1px solid var(--c-border-light);border-radius:var(--radius-sm);cursor:pointer;transition:background .15s}.stats-check-cat-header:hover{background:#ffffffe6}.stats-check-cat-count{margin-left:auto;font-size:11px;color:var(--c-text-muted);background:#94a3b824;padding:1px 7px;border-radius:8px}.stats-check-products{display:flex;flex-wrap:wrap;gap:6px;padding:6px 8px 4px 28px}.stats-check-product{font-size:12px;color:var(--c-text-secondary);background:#ffffffd6;padding:3px 10px;border-radius:12px;border:1px solid var(--c-border-light);cursor:pointer;transition:all .15s}.stats-check-product:hover{background:var(--c-accent-light);color:var(--c-accent);border-color:var(--c-accent-border-strong)}.stats-profit-table{font-size:12px}.stats-profit-header{display:grid;grid-template-columns:1fr 80px 80px 70px;gap:8px;padding:6px 10px;color:var(--c-text-muted);font-weight:600;font-size:11px;border-bottom:1px solid rgba(200,210,225,.3)}.stats-profit-row{display:grid;grid-template-columns:1fr 80px 80px 70px;gap:8px;padding:6px 10px;color:var(--c-text-secondary);transition:background .15s;border-bottom:1px solid rgba(200,210,225,.1)}.stats-profit-row:hover{background:#ffffff4d}.stats-profit-row.low{background:#dc26260f}.stats-profit-name{color:var(--c-text);font-weight:500;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.stats-profit-warn{color:#dc2626;font-weight:600}.import-failures{background:var(--c-danger-light);border:1px solid rgba(239,68,68,.15);border-radius:var(--radius-sm);padding:10px 14px;margin-bottom:12px}.import-failure-item{font-size:12px;color:var(--c-danger);padding:2px 0}.import-row-editing{display:grid;grid-template-columns:1fr 1fr 100px 100px auto!important;gap:6px;background:var(--c-accent-light)!important}.import-edit-input,.import-edit-select{height:28px;font-size:12px;padding:0 6px}.import-edit-actions{display:flex;gap:4px}.login-screen{min-height:100vh;display:grid;place-items:center;background:radial-gradient(circle at top left,rgba(67,97,238,.06) 0%,transparent 32%),radial-gradient(circle at bottom right,rgba(67,97,238,.04) 0%,transparent 28%),linear-gradient(180deg,#f3f6fb,#f4f6f8,#edf2f7);padding:20px}.login-card{background:#fffffff5;backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px);border:1px solid var(--c-border);border-radius:20px;padding:36px 32px;width:100%;max-width:360px;box-shadow:0 12px 40px #00000014;text-align:center}.login-icon{width:64px;height:64px;margin:0 auto 16px;display:grid;place-items:center;background:var(--c-accent-light);border-radius:16px;color:var(--c-accent)}.login-icon.pending{background:linear-gradient(135deg,#d977061f,#f59e0b14);color:var(--c-warning)}.login-tabs{display:flex;gap:0;margin-bottom:20px;border:1px solid rgba(200,210,225,.4);border-radius:var(--radius-sm);overflow:hidden}.login-tabs button{flex:1;min-height:38px;border:0;border-radius:0;background:#ffffffe6;font-size:13px;color:var(--c-text-muted)}.login-tabs button.active{background:#4361ee1a;color:var(--c-accent);font-weight:600}.login-back-btn{width:100%;height:40px;font-size:13px;background:#fff9;border:1px solid rgba(200,210,225,.4);border-radius:var(--radius-sm);cursor:pointer;color:var(--c-text)}.login-card h2{margin:0 0 6px;font-size:18px;color:var(--c-text)}.login-subtitle{margin:0 0 24px;font-size:13px;color:var(--c-text-muted)}.login-card form{display:grid;gap:12px}.login-card form label{display:flex;align-items:center;gap:8px;background:#fffffff5;border:1px solid var(--c-border);border-radius:var(--radius-sm);padding:0 12px;height:44px;transition:border-color .15s}.login-card form label:focus-within{border-color:var(--c-accent);box-shadow:0 0 0 3px var(--c-accent-glow)}.login-card form label svg{color:var(--c-text-muted);flex-shrink:0}.login-card form label input{border:0;background:transparent;height:100%;font-size:14px;color:var(--c-text);outline:none}.login-card form label input:focus{box-shadow:none!important}.login-card form label input:-webkit-autofill,.login-card form label input:-webkit-autofill:hover,.login-card form label input:-webkit-autofill:focus{-webkit-box-shadow:0 0 0 1000px rgba(255,255,255,.9) inset!important;-webkit-text-fill-color:var(--c-text)!important;transition:background-color 5000s ease-in-out 0s}.login-card form button{width:100%;height:44px;font-size:14px;font-weight:600;background:var(--c-accent)!important;color:#fff;border:0;border-radius:var(--radius-sm);cursor:pointer;transition:opacity .15s}.login-card form button:hover{opacity:.9;transform:none}.login-card form button:active{opacity:.8}.login-card form button:disabled{opacity:.7;cursor:not-allowed}.login-error{font-size:13px;color:var(--c-danger);background:var(--c-danger-light);padding:8px 12px;border-radius:var(--radius-sm)}.hamburger-btn,.sidebar-overlay,.detail-overlay,.mobile-actions{display:none}.toolbar-actions-row{display:contents}.desktop-only{display:inline-flex}.category-nav{display:none}@media(max-width:1180px){.workspace,.workspace.detail-open{grid-template-columns:220px minmax(0,1fr)}.detail{grid-column:1 / -1;border-left:0;border-top:1px solid var(--c-border);max-height:50vh;position:relative}}@media(max-width:760px){:root{--glass-blur: 8px}.app-shell{padding-top:50px}.mobile-scroll-top-btn{display:inline-flex;align-items:center;justify-content:center;position:fixed;right:16px;bottom:calc(env(safe-area-inset-bottom,0px) + 72px);width:42px;height:42px;border-radius:14px;border:1px solid var(--c-accent-border);background:#ffffffe0;backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);color:var(--c-accent);box-shadow:0 10px 24px #0f172a1f;z-index:22}.mobile-scroll-top-btn:hover{background:#fffffff5}.hamburger-btn{display:flex;align-items:center;justify-content:center;width:40px;height:40px;padding:0;border:1px solid var(--c-border);background:#ffffffeb;border-radius:var(--radius-sm);color:var(--c-text);cursor:pointer;flex-shrink:0}.topbar{height:50px;padding:0 12px;align-items:center;gap:10px;flex-direction:row;position:fixed;top:0;left:0;right:0;z-index:40}.topbar-title{flex:1;min-width:0}.topbar-title h1{font-size:15px;margin:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.eyebrow{display:none}.topbar-actions{gap:6px;flex-shrink:0}.cloud-state{display:none}.desktop-only{display:none!important}.role-switch{height:36px;padding:0 8px}.user-badge{min-height:40px;width:40px;min-width:40px;padding:0;border-radius:14px;justify-content:center;gap:0}.user-avatar-icon{width:18px;min-width:18px;height:18px}.user-badge-copy,.user-menu-chevron{display:none}.user-dropdown-menu{width:min(168px,calc(100vw - 16px));right:0;top:calc(100% + 8px);border-radius:16px}.user-dropdown-header{padding:8px 14px 10px}.user-dropdown-header strong{font-size:15px}.user-dropdown-item{min-height:40px;padding:0 14px;font-size:14px}.workspace{height:auto;display:block;overflow-x:hidden}.workspace.detail-open{display:block;overflow-x:hidden}.sidebar{position:fixed;left:0;top:50px;bottom:0;z-index:30;width:154px;max-width:46vw;border-right:1px solid var(--c-border);border-bottom:0;padding:12px 10px;background:#fffffff5;backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px);transform:translate(-100%);transition:transform .25s cubic-bezier(.16,1,.3,1);overflow-y:auto;box-shadow:4px 0 20px #0f172a14}.sidebar.open{transform:translate(0)}.sidebar-collapse-btn{display:none}.mobile-actions{display:flex;flex-direction:column;gap:12px;margin-top:12px;padding-top:0;border-top:0;align-items:center}.sidebar-settings-btn,.mobile-action-btn{width:calc(100% - 16px);min-height:38px;margin-left:auto;margin-right:auto;justify-content:center;font-size:13px;font-weight:500;padding:0 10px;box-sizing:border-box}.sidebar-settings-btn{gap:6px;margin-top:12px;background:var(--c-accent-light)}.mobile-action-btn{background:var(--c-accent-light);border:1px solid var(--c-accent-border);border-radius:var(--radius-sm);color:var(--c-accent)}.mobile-action-btn:hover{background:var(--c-accent-soft)}.mobile-action-toggle{display:flex;align-items:center;justify-content:space-between;padding:0 10px 0 12px}.mobile-action-label{display:inline-flex;align-items:center;gap:6px}.mobile-action-sublist{display:flex;flex-direction:column;gap:12px;width:calc(100% - 16px);padding-left:0;align-items:center}.mobile-action-subitem{justify-content:flex-start;padding:0 12px;min-height:38px;font-size:12px;font-weight:500;width:100%;background:#ffffffeb;border-color:var(--c-border);color:var(--c-text)}.mobile-action-subitem:hover{background:#ffffffeb}.sidebar .category-editor,.sidebar .category-delete-btn,.sidebar .category-delete-btn.hidden-placeholder,.sidebar .sidebar-categories{display:none}.category-nav{display:flex;flex-direction:column;gap:4px;padding:6px 0 8px}.category-nav-status-row{display:flex;align-items:center;gap:8px}.category-nav-status-row .category-nav-status{flex:1;min-width:0}.category-nav-status .category-nav-root{font-size:11px;padding:3px 12px;border-radius:10px;border-color:var(--c-border);background:#ffffffe0;font-weight:500}.category-nav-status .category-nav-root.active{background:var(--c-brand);color:var(--c-brand-text);border-color:var(--c-brand)}.category-nav-status .category-nav-root.active:hover:not(:disabled){background:var(--c-brand);color:var(--c-brand-text);border-color:var(--c-brand);box-shadow:none}.category-nav-year-filter{flex-shrink:0;display:flex;align-items:center;min-width:96px;max-width:120px;height:30px;padding:0 10px;border:1px solid var(--c-border);border-radius:10px;background:#ffffffe0}.category-nav-year-filter .custom-select-wrap{width:100%;display:flex}.category-nav-year-filter .custom-select-trigger{width:100%;min-height:0;height:100%;padding:0;border:0;background:transparent;backdrop-filter:none;-webkit-backdrop-filter:none;box-shadow:none;font-size:11px;color:var(--c-text-secondary)}.category-nav-year-filter .custom-select-trigger:after{border-top-color:var(--c-text-muted)}.category-nav-year-filter .custom-select-trigger:hover:not(:disabled){background:transparent;box-shadow:none}.category-nav-roots{display:flex;gap:6px;overflow-x:auto;-webkit-overflow-scrolling:touch;scrollbar-width:none;padding-bottom:2px}.category-nav-roots::-webkit-scrollbar{display:none}.category-nav-root{inline-size:auto;flex-shrink:0;padding:5px 14px;border-radius:14px;font-size:12px;font-weight:600;border:1px solid var(--c-border);background:#ffffffeb;color:var(--c-text-secondary);cursor:pointer;white-space:nowrap;transition:all .15s ease}.category-nav-root.active{background:var(--c-accent-soft);border-color:var(--c-accent-border-strong);color:var(--c-accent)}.category-nav-root.active:hover:not(:disabled){background:var(--c-accent-soft);border-color:var(--c-accent-border-strong);color:var(--c-accent);box-shadow:none}.category-nav-children{display:flex;gap:5px;overflow-x:auto;-webkit-overflow-scrolling:touch;scrollbar-width:none}.category-nav-children::-webkit-scrollbar{display:none}.category-nav-child{inline-size:auto;flex-shrink:0;padding:3px 10px;border-radius:10px;font-size:11px;font-weight:500;border:1px solid var(--c-border);background:#ffffffe0;color:var(--c-text-muted);cursor:pointer;white-space:nowrap;transition:all .15s ease}.category-nav-child.active{background:var(--c-accent-soft);border-color:var(--c-accent-border);color:var(--c-accent);font-weight:600}.sidebar-overlay{display:block;position:fixed;inset:50px 0 0;z-index:25;background:#0000004d;opacity:0;pointer-events:none;touch-action:none;transition:opacity .2s ease}.sidebar-overlay.visible{opacity:1;pointer-events:auto}.detail-overlay{display:block;position:fixed;inset:0;z-index:45;background:#0000004d;opacity:0;pointer-events:none;transition:opacity .2s ease}.detail-overlay.visible{opacity:1;pointer-events:auto}.detail{border-left:0;border-top:0;max-height:80vh;overflow:hidden;display:flex;flex-direction:column;position:fixed;bottom:0;left:0;right:0;z-index:50;background:#fffffff5;backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px);border-radius:20px 20px 0 0;box-shadow:0 -12px 40px #0f172a1f;padding:0 18px;animation:slide-up .25s cubic-bezier(.16,1,.3,1)}.detail-header{position:sticky;top:0;z-index:2;background:#ffffffeb;backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);margin:0 -18px;padding:14px 18px 8px}.detail-close{width:44px;height:44px;font-size:18px}.editor{flex:1;min-height:0;max-width:none;overflow:hidden;display:flex;flex-direction:column;gap:0;padding-bottom:0}.editor-scroll{flex:1;min-height:0;overflow-y:auto;overflow-x:hidden;padding-bottom:16px}.editor-actions{position:fixed;left:12px;right:12px;bottom:calc(52px + env(safe-area-inset-bottom,0px));z-index:56;flex:none;margin:0;padding:10px 0 0;background:transparent;border:0;border-radius:0;box-shadow:none;display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:8px}.editor-actions:before{content:"";position:absolute;left:-12px;right:-12px;top:0;height:1px;background:var(--c-accent-border-strong)}.editor-actions:after{content:none;display:none}.editor-actions button{min-width:0}.editor-actions .danger{grid-column:1 / -1}.editor{padding-bottom:calc(120px + env(safe-area-inset-bottom,0px))}@keyframes slide-up{0%{transform:translateY(100%)}to{transform:translateY(0)}}.content{padding:12px;overflow-x:clip;overflow-y:visible}.toolbar{flex-direction:column;align-items:stretch;gap:0;position:sticky;top:50px;z-index:5;background:#f8fafcf5;backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);margin:0 -12px;padding:8px 12px}.searchbox{min-width:0;flex:auto;height:44px}.toolbar-actions-row,.year-filter{display:none}.table-quick-search{position:sticky;top:102px;z-index:4;margin:0 -12px 10px;padding:6px 12px;border-radius:0;background:#f8fafcf5;backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);border-left:0;border-right:0}.file-button{display:none}.table-wrap{border:0;background:transparent;max-height:none;border-radius:0;box-shadow:none}.product-table,.product-table thead,.product-table tbody{display:block;width:100%}.product-table tr{display:flex;flex-wrap:wrap;width:100%}.product-table td{display:block;width:100%}.product-table thead{display:none}.product-table tbody tr{-webkit-tap-highlight-color:transparent;margin-bottom:6px;border:1px solid rgba(147,197,253,.5);border-radius:var(--radius);background:#fff9;backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);overflow:hidden;padding:0 14px 6px;box-shadow:0 2px 8px #0000000a;display:flex;flex-wrap:wrap;align-items:baseline}.product-table tbody tr:hover td,.product-table tbody tr.selected td{background:transparent;box-shadow:none}.product-table tbody tr:hover td.sticky-col,.product-table tbody tr.selected td.sticky-col,.product-table tbody tr:hover td.sensitive,.product-table tbody tr.selected td.sensitive{background:transparent}.product-table tbody tr:nth-child(2n) td{background:transparent}.product-table tbody tr:nth-child(2n) td.sticky-col{background:transparent}.product-table td{border-bottom:0;white-space:normal;max-width:none;font-size:15px;padding:0}.product-table td.sticky-col{display:block;width:100%;padding:10px 14px;font-size:15px;font-weight:600;color:var(--c-text);background:transparent;border-left:3px solid var(--c-accent);border-bottom:1px solid rgba(200,210,225,.25)}.product-table td:not(.sticky-col){display:inline-flex!important;width:auto!important;align-items:center;gap:2px;padding:3px 10px 8px 0;font-size:15px;color:var(--c-text-secondary);background:transparent}.product-table td:not(.sticky-col):before{content:attr(data-label) "：";color:var(--c-text-muted);font-size:13px;font-weight:500;margin-left:14px}.product-table td:has(>em:only-child){display:none!important}.product-table td[data-label=分类],.product-table td[data-label=类型]{display:none!important}.product-table td:has(>input[type=checkbox]){display:none!important}.product-table th:has(>input[type=checkbox]){display:none}.batch-bar{display:none}.sticky-col{position:static}.product-table td[data-label=进货价],.product-table td[data-label=零售价],.product-table td[data-label=规格],.product-table td[data-label=单价],.product-table td[data-label=头数]{display:inline-block!important;margin:2px 4px 6px 14px;padding:3px 10px;border-radius:20px;font-size:14px;font-weight:500;border:none}.product-table td[data-label=进货价]:before,.product-table td[data-label=零售价]:before,.product-table td[data-label=规格]:before,.product-table td[data-label=单价]:before,.product-table td[data-label=头数]:before{margin-left:0;font-weight:500}.product-table td[data-label=进货价] em,.product-table td[data-label=零售价] em,.product-table td[data-label=规格] em,.product-table td[data-label=单价] em,.product-table td[data-label=头数] em{color:var(--c-text-muted)}.product-table td[data-label=进货价],.product-table td[data-label=进货价]:before{color:#15803d}.product-table td[data-label=进货价]{background:#bbf7d080!important;border:1px solid rgba(134,239,172,.6)}.product-table td[data-label=零售价],.product-table td[data-label=零售价]:before{color:#1d4ed8}.product-table td[data-label=零售价]{background:#bfdbfe80!important;border:1px solid rgba(147,197,253,.6)}.product-table td[data-label=规格],.product-table td[data-label=规格]:before{color:#c2410c}.product-table td[data-label=规格]{background:#ffedd599!important;border:1px solid rgba(253,186,116,.5)}.product-table td[data-label=单价],.product-table td[data-label=单价]:before{color:#0e7490}.product-table td[data-label=单价]{background:#cffafe99!important;border:1px solid rgba(103,232,249,.5)}.product-table td[data-label=头数],.product-table td[data-label=头数]:before{color:#a16207}.product-table td[data-label=头数]{background:#fef9c399!important;border:1px solid rgba(253,224,71,.5)}.icon-button{width:40px;min-height:40px}.category-delete-btn{width:36px;min-height:36px}.category-chevron{width:44px;min-height:44px}.category-chevron svg{width:18px;height:18px}input[type=checkbox]{width:20px;height:20px;min-width:20px}.quick-search-clear{min-height:36px;padding:0 12px}.pagination button{min-height:40px;padding:0 14px}.toast-close,.toast-undo{min-height:36px}.column-settings-btn{min-height:36px;width:36px}.panel-title,.category.child{font-size:13px}.category.child .category-count{font-size:12px}.cloud-state{font-size:12px;padding:0 8px}.two-col,.import-row{grid-template-columns:1fr}.batch-bar{flex-wrap:wrap;gap:6px}.stats-grid{grid-template-columns:repeat(2,1fr)}.confirm-dialog{min-width:0;width:90vw;max-width:400px;padding:22px}.batch-dialog{width:95vw;max-height:88vh}.batch-body{gap:12px;padding:16px}.batch-controls{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.batch-controls label{gap:6px}.batch-controls input[type=date]{min-width:0;max-width:100%;padding:0 8px;font-size:12px;line-height:40px;overflow:hidden}.batch-controls input[type=date]::-webkit-date-and-time-value{min-height:40px;line-height:40px}.batch-control-full{grid-column:1 / -1}.batch-source-row .custom-select-wrap{width:108px;min-width:108px;flex-basis:108px}.batch-source-row .custom-select-trigger.batch-source-select{min-height:40px}.batch-input-textarea{min-height:180px;max-height:260px}.batch-preview{padding:12px}.batch-preview-list{max-height:260px;gap:8px}.batch-preview-item{gap:6px;padding:10px}.batch-preview-name{max-width:100%}.batch-preview-category{width:100%;margin-left:0;font-size:11px}.batch-footer{padding:12px 16px}.settings-panel-header{display:block;margin-bottom:16px}.settings-panel-title-row,.settings-home-title-row{gap:8px}.settings-back-btn{width:34px;min-width:34px;height:34px;min-height:34px}.settings-mobile-back{display:inline-flex}.settings-module-card{padding:14px}.settings-page .rule-add-row,.settings-page .settings-rule-add-short{grid-template-columns:1fr}.editor{gap:10px;max-width:none;padding-top:6px}.editor-primary-section,.editor-compact-section{gap:0}.editor-primary-section{border-bottom:1px solid rgba(223,229,238,.9)}.editor-field-pair{grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:10px;border-bottom:0}.editor-compact-section{border-bottom:1px solid rgba(223,229,238,.9)}.editor-field{grid-template-columns:92px minmax(0,1fr);align-items:center;gap:10px;padding:9px 0;border-bottom:1px solid rgba(223,229,238,.9);border-radius:0;background:transparent}.editor-field-label{font-size:13px;line-height:1.35}.editor-primary-section .editor-field.is-primary-field{border-bottom:0}.editor-field-pair+.editor-field-pair{border-top:0}.editor-field-pair+.editor-field:not(.is-source-field):not(.is-textarea-field){border-top:1px solid rgba(223,229,238,.9)}.editor-field-control{gap:6px}.editor-field input,.editor-field select,.editor-field textarea{font-size:14px;min-height:40px}.editor-field input[type=date]{height:40px;padding:0 10px}.editor-field textarea{min-height:74px}.editor-compact-section .editor-field.is-source-field,.editor-compact-section .editor-field.is-textarea-field{grid-column:1 / -1}.editor-two-col .editor-field{grid-template-columns:52px minmax(0,1fr);padding:9px 0;border-bottom:0}.editor-two-col .editor-field-label{font-size:12px;white-space:nowrap}.editor-inline-add{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:6px}.price-input-wrap{height:40px;align-items:stretch}.price-input-wrap input{height:40px;min-height:40px}.price-input-wrap .custom-select-wrap{height:40px}.price-unit-suffix,.custom-select-trigger.price-unit-suffix,.price-input-wrap .custom-select-trigger.price-unit-suffix,.price-unit-fixed{height:40px;min-height:40px}.price-unit-fixed,.price-input-wrap .custom-select-trigger.price-unit-suffix{border-radius:0 var(--radius-sm) var(--radius-sm) 0}.form-section-title{font-size:14px}}.log-page{padding:16px 20px;overflow-y:auto;height:calc(100vh - 104px)}.log-page .log-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:16px;flex-wrap:wrap;gap:10px}.log-page .log-header h2{font-size:16px;font-weight:600;margin:0}.log-page .log-filters{display:flex;gap:8px;flex-wrap:wrap;align-items:center}.log-page .log-filters select{height:34px;font-size:13px;border-radius:var(--radius-sm);border:1px solid var(--c-border-strong);background:var(--c-surface);padding:0 10px}.log-page .log-name-search{height:34px;font-size:13px;padding:0 10px;border-radius:var(--radius-sm);border:1px solid var(--c-border-strong);background:var(--c-surface);width:160px}.log-page .log-name-search:focus{border-color:var(--c-accent);outline:none;box-shadow:0 0 0 3px var(--c-accent-glow)}.log-page .log-time-btns{display:flex;gap:2px}.log-page .log-time-btns button{min-height:30px;padding:4px 12px;font-size:12px;background:transparent;border:1px solid var(--c-border-strong);color:var(--c-text-secondary);cursor:pointer}.log-page .log-time-btns button:first-child{border-radius:var(--radius-sm) 0 0 var(--radius-sm)}.log-page .log-time-btns button:last-child{border-radius:0 var(--radius-sm) var(--radius-sm) 0}.log-page .log-time-btns button.active{background:var(--c-accent);color:#fff;border-color:var(--c-accent)}.log-table-wrap{overflow-x:auto}.log-table{width:100%;border-collapse:collapse;font-size:13px}.log-table th{text-align:left;padding:10px 12px;font-weight:600;color:var(--c-text-secondary);border-bottom:2px solid var(--c-border-strong);white-space:nowrap;font-size:12px}.log-table td{padding:10px 12px;border-bottom:1px solid var(--c-border-light);vertical-align:top}.log-table tr:hover td{background:#4361ee0a}.log-table .log-time{color:var(--c-text-muted);white-space:nowrap;font-size:12px}.log-table .log-device{font-size:12px;color:var(--c-text-muted);white-space:nowrap}.log-table .log-entity-name{font-weight:500}.log-action{font-weight:600;font-size:12px;padding:2px 8px;border-radius:4px;white-space:nowrap;display:inline-block}.log-action.action-create,.log-action.action-import,.log-action.action-batch_create{background:var(--c-success-light);color:var(--c-success)}.log-action.action-delete,.log-action.action-batch_delete{background:var(--c-danger-light);color:var(--c-danger)}.log-action.action-archive,.log-action.action-batch_archive{background:var(--c-warning-light);color:var(--c-warning)}.log-action.action-restore{background:var(--c-accent-light);color:var(--c-accent)}.log-action.action-update,.log-action.action-rename,.log-action.action-reorder{background:var(--c-purple-light);color:var(--c-purple)}.log-action.action-import_update{background:#3b82f61a;color:#2563eb}.log-action.action-batch_classify{background:var(--c-accent-light);color:var(--c-accent)}.log-detail-btn{font-size:12px;padding:2px 8px;min-height:24px;cursor:pointer;color:var(--c-accent);background:transparent;border:1px solid var(--c-accent);border-radius:var(--radius-sm)}.log-detail-btn:hover{background:var(--c-accent-light)}.log-detail{background:#00000008;border-radius:var(--radius-sm);padding:8px 12px;margin-top:6px}.log-detail-row{display:flex;align-items:center;gap:8px;font-size:12px;padding:3px 0}.log-detail-field{font-weight:600;color:var(--c-text-secondary);min-width:50px}.log-detail-before{color:var(--c-danger);text-decoration:line-through}.log-detail-arrow{color:var(--c-text-muted)}.log-detail-after{color:var(--c-success);font-weight:500}.log-pagination{display:flex;align-items:center;justify-content:center;gap:12px;margin-top:16px;padding:12px}.category-shell .category-root-button{padding-left:36px}.category-shell .category.child{padding-left:58px}.log-pagination button{min-height:32px;font-size:13px;padding:4px 16px}.log-pagination span{font-size:13px;color:var(--c-text-secondary)}.log-empty{text-align:center;padding:40px;color:var(--c-text-muted);font-size:14px}
