*,:before,:after{box-sizing:border-box;margin:0;padding:0}:root{--primary:#16a34a;--primary-light:#4ade80;--primary-dark:#14532d;--accent:#f59e0b;--bg:#f0fdf4;--bg-card:#fff;--text:#1a1a2e;--text-secondary:#64748b;--border:#dcfce7;--border-elevated:#bbf7d0;--shadow:0 1px 3px #0000000f;--shadow-lg:0 4px 16px #0000001a;--radius:14px;--radius-sm:10px;--radius-xs:7px;--font:-apple-system, BlinkMacSystemFont, "Segoe UI", "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", sans-serif;--bg-setting:#fff;--bg-setting-card:#fafdfb;--bg-setting-sidebar:#f8faf9;--bg-setting-input:#fafbfc;--border-setting:#e2e8f0;--text-setting:#1a1a2e}[data-theme=dark]{--bg:#0f172a;--bg-card:#1e293b;--text:#e2e8f0;--text-secondary:#94a3b8;--border:#334155;--border-elevated:#475569;--shadow:0 1px 3px #0000004d;--shadow-lg:0 4px 16px #0006;--bg-setting:#1e293b;--bg-setting-card:#0f172a;--bg-setting-sidebar:#172033;--bg-setting-input:#334155;--border-setting:#334155;--text-setting:#e2e8f0}[data-compact=true]{--radius:8px;--radius-sm:6px;--radius-xs:4px}[data-compact=true] .app-main{gap:12px;padding:12px 16px}[data-compact=true] .upload-module,[data-compact=true] .kanban-module{padding:14px 16px}html{font-size:var(--font-size-base,16px)}body{font-family:var(--font);background:var(--bg);color:var(--text);-webkit-font-smoothing:antialiased;min-height:100vh;line-height:1.6;transition:background .3s,color .3s}#root{min-height:100vh}.app{flex-direction:column;min-height:100vh;display:flex}.app-header{color:#fff;z-index:100;background:linear-gradient(135deg,#14532d,#16a34a,#22c55e);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:8px;padding:12px 24px;display:flex}.header-left{flex-wrap:wrap;align-items:center;gap:12px;display:flex}.header-logo{object-fit:contain;background:#fff3;border-radius:8px;flex-shrink:0;width:36px;height:36px;padding:3px}.header-logo-placeholder{flex-shrink:0;font-size:1.5rem;line-height:1}.header-titles{flex-wrap:wrap;align-items:baseline;gap:10px;display:flex}.header-titles h1{font-size:var(--font-size-heading,1.3rem);margin:0;font-weight:700}.header-sub{opacity:.85;background:#ffffff29;border-radius:20px;padding:2px 10px;font-size:.78rem}.header-date{opacity:.9;font-size:.82rem}.app-nav{background:var(--bg-card);border-bottom:2px solid var(--border);z-index:99;-webkit-overflow-scrolling:touch;gap:2px;padding:0 24px;display:flex;position:sticky;top:0;overflow-x:auto;box-shadow:0 1px 4px #0000000a}.nav-item{cursor:pointer;color:var(--text-secondary);font-size:.9rem;font-weight:500;font-family:var(--font);white-space:nowrap;background:0 0;border:none;border-bottom:3px solid #0000;flex-shrink:0;align-items:center;gap:7px;padding:14px 20px;transition:all .2s;display:flex;position:relative}.nav-item:hover{color:var(--accent-primary,#16a34a);background:var(--bg)}.nav-item.active{color:var(--accent-primary,#16a34a);border-bottom-color:var(--accent-primary,#16a34a);background:var(--accent-light,#dcfce7);font-weight:700}.nav-icon{font-size:1.1rem}.nav-label{font-size:.87rem}.app-main{flex-direction:column;flex:1;width:100%;max-width:1400px;margin:0 auto;padding:20px 24px;display:flex}.page-container{flex-direction:column;gap:24px;animation:.25s pageIn;display:flex;overflow:hidden}@keyframes pageIn{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:translateY(0)}}.app-footer{text-align:center;color:var(--text-secondary);border-top:1px solid var(--border);background:var(--bg-card);padding:14px;font-size:.78rem}.upload-module{background:var(--bg-card);border-radius:var(--radius);box-shadow:var(--shadow);border:1px solid var(--border);padding:22px 24px}.upload-header{align-items:center;gap:10px;margin-bottom:6px;display:flex}.upload-header h2{color:var(--primary-dark);font-size:1.1rem}.upload-desc{color:var(--text-secondary);margin-bottom:16px;font-size:.82rem}.upload-textarea{border-radius:var(--radius-sm);width:100%;font-size:.9rem;font-family:var(--font);resize:vertical;min-height:130px;color:var(--text);background:#fafdfb;border:2px dashed #bbf7d0;outline:none;padding:14px;line-height:1.7;transition:border-color .2s}.upload-textarea:focus{border-color:var(--primary)}.upload-textarea::placeholder{color:#a8d8b9;font-size:.82rem}.upload-actions{flex-wrap:wrap;gap:10px;margin-top:12px;display:flex}.btn-parse,.btn-upload-img,.btn-confirm,.btn-toggle-edit{border-radius:var(--radius-xs);cursor:pointer;font-size:.85rem;font-weight:600;font-family:var(--font);border:none;align-items:center;gap:5px;padding:10px 18px;transition:all .2s;display:inline-flex}.btn-parse{background:var(--primary);color:#fff}.btn-parse:hover:not(:disabled){background:var(--primary-dark)}.btn-parse:disabled{opacity:.5;cursor:not-allowed}.btn-upload-img{color:var(--primary);border:1.5px solid var(--primary);background:#fff}.btn-upload-img:hover{background:#f0fdf4}.btn-confirm{color:#fff;background:#166534}.btn-confirm:hover{background:#14532d;box-shadow:0 2px 8px #1665344d}.btn-toggle-edit{color:#b45309;background:#fff;border:1.5px solid #fde68a}.btn-toggle-edit.active{background:#fef3c7;border-color:#f59e0b}.upload-result{border:1px solid var(--border-elevated);border-radius:var(--radius-sm);background:#f9fefb;margin-top:18px;overflow:hidden}.result-header{border-bottom:1px solid var(--border-elevated);background:#ecfdf5;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:10px;padding:12px 16px;display:flex}.result-header h3{color:var(--primary-dark);flex-wrap:wrap;align-items:center;gap:10px;font-size:.95rem;display:flex}.result-stats{color:#16a34a;background:#dcfce7;border-radius:12px;padding:2px 10px;font-size:.75rem;font-weight:500}.result-actions{gap:8px;display:flex}.result-list{flex-direction:column;gap:12px;max-height:400px;padding:12px 16px;display:flex;overflow-y:auto}.result-order{border-radius:var(--radius-xs);background:#fff;border:1px solid #e2e8f0;padding:12px 14px}.result-customer{border-bottom:1px solid #f1f5f9;justify-content:space-between;align-items:center;margin-bottom:8px;padding-bottom:8px;display:flex}.result-customer strong{color:var(--primary-dark);font-size:.925rem}.result-date{color:var(--text-secondary);font-size:.78rem}.result-items{flex-wrap:wrap;gap:6px;display:flex}.result-item{background:#f0fdf4;border:1px solid #dcfce7;border-radius:6px;align-items:center;gap:5px;padding:4px 10px;font-size:.82rem;display:flex}.result-item em{color:var(--primary);margin-left:2px;font-style:normal;font-weight:600}.edit-input{font-size:.875rem;font-family:var(--font);background:#fffef5;border:1px solid #fde68a;border-radius:4px;outline:none;width:140px;padding:4px 8px}.edit-input-sm{font-size:.78rem;font-family:var(--font);border:1px solid #e2e8f0;border-radius:4px;outline:none;padding:3px 6px}.edit-input-sm.name{width:70px}.edit-input-sm.qty{width:50px}.edit-input-sm.unit{width:40px}.btn-del-item{color:#ef4444;cursor:pointer;background:0 0;border:none;padding:0 3px;font-size:.85rem;line-height:1}.kanban-module{background:var(--bg-card);border-radius:var(--radius);box-shadow:var(--shadow);border:1px solid var(--border-elevated);border-top:4px solid var(--primary);padding:14px 20px;overflow:hidden}.kanban-header{align-items:center;gap:10px;margin-bottom:8px;display:flex}.kanban-header h2{color:var(--primary-dark);font-size:1rem}.date-filter{margin-bottom:8px}.date-tabs{flex-wrap:wrap;align-items:center;gap:6px;display:flex}.date-tab{cursor:pointer;color:var(--text-secondary);font-size:.8rem;font-family:var(--font);background:#fff;border:1.5px solid #e2e8f0;border-radius:18px;padding:6px 14px;transition:all .2s;position:relative}.date-tab.active{background:var(--primary);color:#fff;border-color:var(--primary);font-weight:700}.date-tab.today{border-color:var(--primary-light)}.date-tab:hover:not(.active){border-color:var(--primary-light);background:#f0fdf4}.today-dot{background:var(--accent);border-radius:50%;width:6px;height:6px;position:absolute;top:4px;right:6px}.date-tab.active .today-dot{background:#fff}.no-data-hint{color:#94a3b8;padding:4px 0;font-size:.82rem}.kanban-empty{text-align:center;color:#94a3b8;padding:40px 20px}.empty-icon{margin-bottom:12px;font-size:3rem}.kanban-empty p{font-size:.95rem}.empty-sub{color:#cbd5e1;margin-top:4px;font-size:.82rem!important}.stats-inline{border-radius:var(--radius-sm);background:#f0fdf4;border:1px solid #bbf7d0;flex-wrap:wrap;align-items:center;gap:4px;margin-bottom:8px;padding:6px 12px;display:flex}.stat-pill{align-items:baseline;gap:6px;padding:4px 8px;display:flex}.stat-val{color:var(--primary-dark);font-size:1.2rem;font-weight:800}.stat-lbl{color:#16a34a;font-size:.68rem;font-weight:600}.stat-pill.accent .stat-val{color:#dc2626}.stat-pill.accent .stat-lbl{color:#991b1b}.stat-divider{background:#bbf7d0;width:1px;height:28px}.progress-wrap{align-items:center;gap:10px;margin-bottom:8px;display:flex}.progress-bar{background:#e5e7eb;border-radius:3px;flex:1;height:6px;overflow:hidden}.progress-fill{background:linear-gradient(90deg,#22c55e,#16a34a);border-radius:4px;height:100%;transition:width .4s}.progress-text{color:var(--primary-dark);text-align:right;min-width:36px;font-size:.78rem;font-weight:700}.product-table-section{margin-bottom:10px}.product-table-section h3{color:var(--primary-dark);border-bottom:2px solid #f0fdf4;margin-bottom:6px;padding-bottom:4px;font-size:.85rem}.unified-table-wrap{border:1px solid var(--border);border-radius:var(--radius-sm);overflow:visible}.unified-table{border-collapse:collapse;table-layout:auto;width:100%;font-size:.75rem}.unified-table thead{background:#f0fdf4}.unified-table th{text-align:left;color:var(--primary-dark);white-space:nowrap;border-bottom:2px solid #bbf7d0;padding:6px 8px;font-size:.75rem;font-weight:400}.unified-table td{vertical-align:middle;color:var(--text);border-bottom:1px solid #f0fdf4;padding:5px 8px;font-size:.75rem}.unified-table tbody tr:last-child td{border-bottom:none}.unified-table tbody tr:hover{background:#f9fefb}.unified-table tbody tr.row-done{opacity:.7;background:#f0fdf4}.col-total em{color:#94a3b8;margin-left:2px;font-size:.75rem;font-style:normal}.qty-control{align-items:center;gap:6px;display:inline-flex}.qty-btn{cursor:pointer;width:26px;height:26px;color:var(--text-secondary);background:#fff;border:1.5px solid #d1d5db;border-radius:50%;justify-content:center;align-items:center;font-family:inherit;font-size:.9rem;font-weight:700;line-height:1;transition:all .15s;display:flex}.qty-btn:hover:not(:disabled){border-color:var(--primary);color:var(--primary);background:#f0fdf4}.qty-btn:disabled{opacity:.3;cursor:not-allowed}.qty-val{text-align:center;min-width:24px;color:var(--text);font-size:.9rem;font-weight:700}.qty-val.complete{color:#16a34a}.remain-badge{white-space:nowrap;border-radius:8px;padding:2px 8px;font-size:.75rem;font-weight:400;display:inline-block}.remain-badge.many{color:#dc2626;background:#fef2f2}.remain-badge.few{color:#ea580c;background:#fff7ed}.remain-badge.zero{color:#16a34a;background:#f0fdf4}.customer-section h3{color:var(--primary-dark);border-bottom:2px solid #f0fdf4;margin-bottom:8px;padding-bottom:4px;font-size:.85rem}.customer-list{grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:10px;display:grid}.customer-card{border-radius:var(--radius-sm);background:#fff;border:1.5px solid #e2e8f0;transition:box-shadow .2s,border-color .2s;overflow:hidden}.customer-card:hover{border-color:var(--primary-light);box-shadow:0 3px 12px #16a34a14}.cust-header{background:#fafdfb;border-bottom:1px solid #f0fdf4;justify-content:space-between;align-items:center;padding:8px 12px 6px;display:flex}.cust-name{color:var(--text);align-items:center;gap:10px;font-size:.95rem;font-weight:700;display:flex}.cust-avatar{background:var(--primary);color:#fff;border-radius:50%;justify-content:center;align-items:center;width:32px;height:32px;font-size:.85rem;font-weight:700;display:flex}.cust-stats{gap:8px;display:flex}.cust-stat{color:var(--text-secondary);background:#f1f5f9;border-radius:10px;padding:3px 8px;font-size:.72rem}.cust-stat.highlight{color:#166534;background:#dcfce7;font-weight:600}.cust-items{flex-direction:column;gap:3px;padding:6px 12px;display:flex}.cust-item{align-items:center;gap:8px;padding:2px 0;font-size:.8rem;display:flex}.cust-item-name{color:var(--text);flex-shrink:0;min-width:70px}.cust-item-remain{color:#64748b;white-space:nowrap;flex-shrink:0;margin-left:8px;font-size:.73rem;font-weight:700}.cust-item.item-done .cust-item-name{color:#ea580c}.cust-item-progress-fill.orange{background:linear-gradient(90deg,#f97316,#ea580c)}.btn-edit-cust.done-icon{color:#ea580c;opacity:1;background:#fff7ed;border-color:#fed7aa}.cust-item.zero-qty{opacity:.55}.cust-item.zero-qty .cust-item-name{color:#94a3b8;text-decoration:line-through}.cust-item.zero-qty .cust-item-progress-wrap{opacity:.5}.btn-edit-cust.zero-icon{color:#94a3b8;cursor:default;opacity:1;background:#f1f5f9;border-color:#e2e8f0}.cust-item-name.zero-text{color:#94a3b8;text-decoration:line-through}.cust-item-zero-badge{color:#94a3b8;white-space:nowrap;background:#f1f5f9;border-radius:8px;margin-left:auto;padding:2px 10px;font-size:.73rem;font-weight:600}.customer-card.complete{border-color:#fed7aa}.cust-name.done .cust-avatar{color:#fff;background:#f97316}.cust-name.done .cust-name-clickable{color:#ea580c;cursor:pointer;text-decoration:none;transition:filter .15s}.cust-name.done .cust-name-clickable:hover{filter:brightness(1.2);text-underline-offset:3px;-webkit-text-decoration:underline #f97316;text-decoration:underline #f97316}.cust-done-tag{color:#ea580c;white-space:nowrap;background:#fff7ed;border:1px solid #fed7aa;border-radius:10px;padding:2px 8px;font-size:.7rem;font-weight:700}.cust-delivered-tag{color:#16a34a;white-space:nowrap;background:#f0fdf4;border:1px solid #bbf7d0;border-radius:10px;padding:2px 8px;font-size:.7rem;font-weight:700}.cust-item-progress-wrap{flex:1;align-items:center;gap:6px;min-width:0;display:flex}.cust-item-progress{background:#e5e7eb;border-radius:3px;flex:1;min-width:40px;height:6px;overflow:hidden}.cust-item-progress-fill{background:linear-gradient(90deg,#22c55e,#16a34a);border-radius:3px;min-width:2px;height:100%;transition:width .4s}.cust-item-qty{color:var(--primary-dark);white-space:nowrap;flex-shrink:0;font-size:.85rem;font-weight:700}.cust-item-qty em{color:#94a3b8;margin-left:3px;font-size:.73rem;font-style:normal;font-weight:400}.done-count{color:#16a34a;white-space:nowrap;font-size:.75rem;font-weight:400}.done-count:not(.done){color:#94a3b8}.btn-edit-cust{cursor:pointer;opacity:.5;background:0 0;border:1px solid #0000;border-radius:6px;flex-shrink:0;justify-content:center;align-items:center;width:26px;height:26px;padding:0;font-size:.82rem;transition:all .15s;display:inline-flex}.btn-edit-cust:hover{opacity:1;border-color:var(--primary-light);background:#f0fdf4}.cust-checkbox{background:#fafdfb;border-top:1px solid #f0fdf4;align-items:center;gap:8px;padding:10px 16px;display:flex}.cust-checkbox input[type=checkbox]{width:16px;height:16px;accent-color:var(--primary);cursor:pointer}.cust-checkbox label{color:var(--text-secondary);cursor:pointer;font-size:.78rem}.section-badge{color:#b45309;background:#fef3c7;border-radius:12px;padding:3px 10px;font-size:.7rem;font-weight:600}.section-badge.green{color:#166534;background:#dcfce7}.model-badge{color:#6d28d9;background:#ede9fe;border-radius:12px;margin-left:auto;padding:3px 10px;font-size:.7rem;font-weight:600}.ai-hint{color:#94a3b8;margin-top:4px;font-size:.75rem;display:block}.ai-hint code{background:#f1f5f9;border-radius:3px;padding:1px 5px;font-size:.72rem}.ai-toggle-bar{border-radius:var(--radius-xs);background:#f5f3ff;border:1px solid #ede9fe;align-items:center;gap:10px;margin-bottom:12px;padding:8px 12px;display:flex}.ai-toggle{cursor:pointer;color:#6d28d9;align-items:center;gap:6px;font-size:.82rem;font-weight:600;display:flex}.ai-toggle input[type=checkbox]{appearance:none;cursor:pointer;background:#cbd5e1;border-radius:11px;width:38px;height:22px;transition:background .2s;position:relative}.ai-toggle input[type=checkbox]:after{content:"";background:#fff;border-radius:50%;width:18px;height:18px;transition:transform .2s;position:absolute;top:2px;left:2px}.ai-toggle input[type=checkbox]:checked{background:#7c3aed}.ai-toggle input[type=checkbox]:checked:after{transform:translate(16px)}.ai-sub-hint{color:#a78bfa;font-size:.73rem}.ai-meta-bar{background:#fafafe;border-bottom:1px solid #ede9fe;flex-wrap:wrap;gap:8px;padding:8px 16px;font-size:.75rem;display:flex}.ai-meta-item{color:#5b21b6;background:#f5f3ff;border-radius:8px;align-items:center;gap:3px;padding:3px 8px;font-weight:500;display:inline-flex}.ai-meta-warning{color:#b45309;cursor:help;background:#fef3c7;border-radius:8px;align-items:center;gap:3px;padding:3px 8px;font-weight:500;animation:2s infinite pulse;display:inline-flex}.ai-error-detail{border-radius:0 0 var(--radius-sm) var(--radius-sm);background:#fef2f2;border:1px solid #fecaca;gap:12px;margin:0 1px;padding:12px 16px;display:flex}.ai-error-detail .error-icon{flex-shrink:0;margin-top:2px;font-size:1.2rem}.ai-error-detail .error-content strong{color:#dc2626;margin-bottom:4px;font-size:.85rem;display:block}.ai-error-detail .error-content p{color:#b91c1c;font-size:.8rem;line-height:1.6}.btn-goto-settings{color:#fff;cursor:pointer;font-size:.8rem;font-family:var(--font);background:#dc2626;border:none;border-radius:6px;margin-top:8px;padding:6px 14px;transition:all .2s}.btn-goto-settings:hover{background:#b91c1c}@keyframes pulse{0%,to{opacity:1}50%{opacity:.5}}.spinner{border:2px solid #ffffff4d;border-top-color:#fff;border-radius:50%;width:14px;height:14px;animation:.6s linear infinite spin;display:inline-block}@keyframes spin{to{transform:rotate(360deg)}}.toast{background:var(--primary-dark);color:#fff;z-index:1000;border-radius:25px;padding:12px 26px;font-size:.88rem;animation:.3s toastIn;position:fixed;bottom:30px;left:50%;transform:translate(-50%);box-shadow:0 4px 16px #0003}@keyframes toastIn{0%{opacity:0;transform:translate(-50%)translateY(20px)}to{opacity:1;transform:translate(-50%)translateY(0)}}@media (width<=900px){.customer-list{grid-template-columns:1fr}.stats-inline{justify-content:center;gap:2px}.stat-pill{padding:4px 6px}.stat-divider{margin:0 2px}.unified-table{font-size:.72rem}}@media (width<=768px){.unified-table{font-size:.7rem}.stats-inline{flex-wrap:wrap;gap:2px 8px;padding:8px 12px}.stat-val{font-size:1.15rem}.app-header{padding:10px 14px}.header-titles h1{font-size:1rem}.app-nav{gap:0;padding:0 8px}.nav-item{padding:12px 14px;font-size:.82rem}.nav-icon{font-size:1rem}.nav-label{font-size:.8rem}.app-main{padding:12px}.page-container{gap:16px}.upload-module,.kanban-module{padding:16px}.upload-actions{flex-direction:column}.btn-parse,.btn-upload-img,.btn-confirm,.btn-toggle-edit{justify-content:center;width:100%}.result-header{flex-direction:column;align-items:flex-start}.result-actions{width:100%}.btn-confirm,.btn-toggle-edit{flex:1}}@media (width<=480px){.nav-item{padding:10px}.nav-label{font-size:.75rem}.overview-bar{grid-template-columns:1fr 1fr}.ov-value{font-size:1.4rem}.customer-card{font-size:.85rem}.cust-header{flex-direction:column;align-items:flex-start;gap:8px}}.kanban-date{color:#94a3b8;margin-left:auto;font-size:.82rem;font-weight:500}.modal-overlay{z-index:300;background:#0006;justify-content:center;align-items:center;padding:16px;animation:.15s fadeIn;display:flex;position:fixed;inset:0}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}.modal-dialog{background:#fff;border-radius:14px;width:100%;max-width:420px;animation:.2s slideUp;overflow:hidden;box-shadow:0 20px 50px #0000002e}@keyframes slideUp{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}.modal-header{background:#f0fdf4;border-bottom:1px solid #bbf7d0;justify-content:space-between;align-items:center;padding:16px 20px;display:flex}.modal-header h3{color:var(--primary-dark);margin:0;font-size:1rem}.modal-close{cursor:pointer;color:#64748b;background:#0000000d;border:none;border-radius:50%;justify-content:center;align-items:center;width:32px;height:32px;font-size:.95rem;transition:background .15s;display:flex}.modal-close:hover{background:#0000001a}.modal-body{flex-direction:column;gap:16px;padding:20px;display:flex}.modal-field{flex-direction:column;gap:8px;display:flex}.modal-field label{color:var(--text-secondary);font-size:.8rem;font-weight:600}.modal-field-hint{color:#94a3b8;margin-top:-2px;font-size:.73rem}.modal-qty-row{align-items:center;gap:8px;display:flex}.modal-qty-row.small .qty-btn{width:28px;height:28px;font-size:.8rem}.modal-qty-row.small .modal-qty-input{width:50px;padding:6px 4px}.modal-qty-input{text-align:center;border:1.5px solid #e2e8f0;border-radius:7px;outline:none;width:72px;padding:8px 6px;font-family:inherit;font-size:.9rem;font-weight:700;transition:border-color .2s}.modal-qty-input:focus{border-color:var(--primary);box-shadow:0 0 0 2px #dcfce7}.modal-side-by-side{border-bottom:1px solid #f0fdf4;grid-template-columns:1fr 1fr;gap:14px;margin-bottom:8px;padding-bottom:8px;display:grid}.modal-field.side-left{background:#fafdfb;border:1px solid #f0fdf4;border-radius:8px;padding:12px 14px}.modal-field.side-right{background:#f5f3ff;border:1px solid #ede9fe;border-radius:8px;padding:12px 14px}.info-remain{color:var(--text);margin:4px 0 2px;font-size:1.4rem;font-weight:800}.info-remain.done{color:#16a34a}.info-remain.few{color:#ea580c}.info-remain.many{color:#dc2626}.modal-adjust-row{background:#fafdfb;border:1px solid #f0fdf4;border-radius:8px;flex-direction:column;gap:8px;margin-bottom:8px;padding:10px 12px;display:flex}.modal-entry-label{color:var(--text);font-size:.84rem;font-weight:700}.modal-entry-cur-qty{color:#94a3b8;font-size:.76rem}.modal-adjust-actions{gap:12px;display:flex}.adjust-group{flex:1;align-items:center;gap:4px;display:flex}.adjust-group.sub .adjust-btn,.adjust-group.sub .adjust-input{border-color:#fecaca}.adjust-group.add .adjust-btn,.adjust-group.add .adjust-input{border-color:#bbf7d0}.adjust-btn{cursor:pointer;width:26px;height:26px;color:var(--text-secondary);background:#fff;border:1.5px solid #e2e8f0;border-radius:50%;justify-content:center;align-items:center;font-family:inherit;font-size:.85rem;font-weight:700;line-height:1;transition:all .15s;display:flex}.adjust-btn:hover:not(:disabled){background:#f0fdf4}.adjust-btn:disabled{opacity:.3;cursor:not-allowed}.adjust-input{text-align:center;border:1.5px solid #e2e8f0;border-radius:6px;outline:none;width:48px;padding:5px 3px;font-family:inherit;font-size:.83rem;font-weight:700;transition:border-color .2s}.adjust-input:focus{box-shadow:0 0 0 2px #f0fdf4}.adjust-input:disabled{opacity:.4;background:#f1f5f9}.adjust-hint{color:#94a3b8;text-align:center;min-width:14px;font-size:.7rem;font-weight:600}.adjust-group.sub .adjust-hint{color:#dc2626}.adjust-group.add .adjust-hint{color:#16a34a}.modal-footer{background:#fafdfb;border-top:1px solid #f0fdf4;justify-content:flex-end;gap:10px;padding:14px 20px;display:flex}.btn-cancel{cursor:pointer;color:var(--text-secondary);background:#fff;border:1px solid #e2e8f0;border-radius:8px;padding:9px 20px;font-family:inherit;font-size:.85rem;transition:background .15s}.btn-cancel:hover{background:#f1f5f9}.btn-save:hover{filter:brightness(1.1)}.history-section{margin-top:12px}.history-toggle{border-radius:var(--radius-sm);cursor:pointer;width:100%;color:var(--text);background:#fafdfb;border:1px solid #e2e8f0;align-items:center;gap:8px;padding:12px 16px;font-family:inherit;font-size:.88rem;font-weight:600;transition:background .15s;display:flex}.history-toggle:hover{background:#f0fdf4}.history-badge{background:var(--primary);color:#fff;border-radius:10px;padding:1px 8px;font-size:.7rem;font-weight:700}.history-arrow{color:#94a3b8;margin-left:auto;font-size:.9rem;transition:transform .2s}.history-arrow.up{transform:rotate(180deg)}.history-list{border-radius:0 0 var(--radius-sm) var(--radius-sm);border:1px solid #e2e8f0;border-top:none;max-height:320px;overflow-y:auto}.history-empty{text-align:center;color:#94a3b8;padding:28px;font-size:.82rem}.history-entry{background:#fff;border-bottom:1px solid #f1f5f9;padding:12px 16px;transition:background .1s}.history-entry:last-child{border-bottom:none}.history-entry:hover{background:#fafdfb}.history-entry.delivery{background:#fffbeb;border-left:3px solid #f97316}.history-entry.delivery:hover{background:#fff7ed}.history-meta{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:4px;margin-bottom:6px;display:flex}.history-product{color:var(--primary-dark);align-items:center;gap:6px;font-size:.85rem;font-weight:700;display:flex}.history-customer{color:var(--text-secondary);background:#f1f5f9;border-radius:6px;padding:1px 7px;font-size:.73rem;font-weight:600}.history-biz-date{color:#92400e;white-space:nowrap;cursor:help;background:#fef3c7;border-radius:5px;padding:1px 6px;font-size:.7rem;font-weight:500}.history-time{color:#94a3b8;font-family:monospace;font-size:.72rem}.history-details{flex-direction:column;gap:3px;display:flex}.history-detail{color:var(--text-secondary);font-size:.78rem;line-height:1.5}.history-panel{border-radius:0 0 var(--radius-sm) var(--radius-sm);border:1px solid #e2e8f0;border-top:none;overflow:hidden}.log-toolbar{background:#fafdfb;border-bottom:1px solid #f0fdf4;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:8px;padding:10px 12px;display:flex}.log-filter-group{background:#f1f5f9;border-radius:16px;gap:4px;padding:2px;display:flex}.log-filter-btn{cursor:pointer;color:var(--text-secondary);font-size:.78rem;font-weight:500;font-family:var(--font);white-space:nowrap;background:0 0;border:none;border-radius:14px;padding:4px 14px;transition:all .15s}.log-filter-btn:hover{color:var(--text);background:#fff9}.log-filter-btn.active{color:var(--primary);background:#fff;font-weight:700;box-shadow:0 1px 3px #0000001a}.log-toolbar-right{align-items:center;gap:6px;display:flex}.log-sort-btn{cursor:pointer;color:var(--text-secondary);font-size:.75rem;font-family:var(--font);white-space:nowrap;background:#fff;border:1px solid #e2e8f0;border-radius:14px;padding:5px 12px;transition:background .15s}.log-sort-btn:hover{background:#f8fafc}.log-clear-btn{cursor:pointer;color:#dc2626;font-size:.75rem;font-family:var(--font);white-space:nowrap;background:#fff;border:1px solid #fecaca;border-radius:14px;padding:5px 12px;transition:all .15s}.log-clear-btn:hover:not(:disabled){background:#fef2f2}.log-clear-btn:disabled{opacity:.4;cursor:not-allowed}.log-list-body{max-height:420px;overflow-y:auto}.history-date-header{z-index:2;background:#f8faf9;justify-content:space-between;align-items:center;padding:10px 16px 6px;display:flex;position:sticky;top:0}.history-date-label{color:var(--primary-dark);font-size:.8rem;font-weight:800}.history-date-count{color:#94a3b8;background:#e2e8f0;border-radius:8px;padding:1px 8px;font-size:.7rem}.log-type-badge{white-space:nowrap;border-radius:5px;flex-shrink:0;padding:1px 7px;font-size:.7rem;font-weight:700}.log-type-badge.edit{color:#16a34a;background:#dcfce7}.log-type-badge.delivery{color:#d97706;background:#fffbeb}.settings-page{background:var(--bg-setting,#fff);border-radius:var(--radius);box-shadow:var(--shadow);border:1px solid var(--border);flex-direction:column;min-height:70vh;display:flex;overflow:hidden}.settings-topbar{border-bottom:1px solid var(--border-setting,#e2e8f0);background:var(--bg-setting-card,#fafdfb);justify-content:space-between;align-items:center;padding:16px 24px;display:flex}.settings-topbar h2{color:var(--text-setting,#1a1a2e);font-size:1.15rem}.topbar-actions{align-items:center;gap:12px;display:flex}.config-version{background:var(--accent-light,#dcfce7);color:var(--accent-dark,#14532d);border-radius:10px;padding:2px 8px;font-size:.72rem;font-weight:600}.btn-close{border:1px solid var(--border-setting,#e2e8f0);background:var(--bg-setting,#fff);cursor:pointer;width:32px;height:32px;color:var(--text-secondary,#64748b);border-radius:50%;justify-content:center;align-items:center;font-size:1rem;transition:all .2s;display:flex}.btn-close:hover{color:#ef4444;background:#fef2f2;border-color:#fecaca}.settings-body{flex:1;display:flex;overflow:hidden}.settings-sidebar{border-right:1px solid var(--border-setting,#e2e8f0);background:var(--bg-setting-sidebar,#f8faf9);flex-direction:column;width:200px;min-width:200px;display:flex}.settings-sidebar nav{flex-direction:column;flex:1;gap:2px;padding:12px 8px;display:flex}.sidebar-item{cursor:pointer;color:var(--text-secondary,#64748b);background:0 0;border:none;border-radius:8px;align-items:center;gap:10px;padding:10px 14px;font-family:inherit;font-size:.88rem;transition:all .15s;display:flex;position:relative}.sidebar-item:hover{background:var(--accent-light,#dcfce7);color:var(--accent-primary,#16a34a)}.sidebar-item.active{background:var(--accent-light,#dcfce7);color:var(--accent-dark,#14532d);font-weight:600}.sidebar-icon{font-size:1.1rem}.active-indicator{background:var(--accent-primary,#16a34a);border-radius:2px;width:3px;height:20px;position:absolute;top:50%;right:0;transform:translateY(-50%)}.sidebar-footer{border-top:1px solid var(--border-setting,#e2e8f0);padding:12px 16px}.sidebar-info{flex-direction:column;gap:2px;display:flex}.info-label{color:#94a3b8;font-size:.68rem}.info-value{color:var(--text-secondary,#64748b);font-size:.72rem}.settings-content{background:var(--bg-setting,#fff);flex:1;padding:20px 24px;overflow-y:auto}.settings-panel{animation:.2s fadePanel}@keyframes fadePanel{0%{opacity:0;transform:translate(8px)}to{opacity:1;transform:translate(0)}}.panel-title{color:var(--text-setting,#1a1a2e);margin-bottom:4px;font-size:1.05rem}.panel-desc{color:#94a3b8;margin-bottom:20px;font-size:.82rem}.form-group{margin-bottom:18px}.form-group label:not(.switch){color:var(--text-setting,#1a1a2e);margin-bottom:6px;font-size:.84rem;font-weight:600;display:block}.sub-label{color:var(--text-secondary,#64748b)!important;font-size:.76rem!important;font-weight:500!important}.form-group input[type=text],.form-group input[type=email],.form-group input[type=number],.form-group input[type=password],.form-group textarea,.form-group select{border:1.5px solid var(--border-setting,#e2e8f0);background:var(--bg-setting-input,#fafbfc);width:100%;color:var(--text-setting,#1a1a2e);border-radius:8px;outline:none;padding:10px 12px;font-family:inherit;font-size:.88rem;transition:border-color .2s,box-shadow .2s}.form-group input:focus,.form-group textarea:focus,.form-group select:focus{border-color:var(--accent-primary,#16a34a);box-shadow:0 0 0 3px var(--accent-light,#dcfce7)}.field-hint{color:#94a3b8;margin-top:4px;font-size:.73rem;display:block}.field-desc{color:var(--text-secondary,#64748b);margin:4px 0;font-size:.78rem}.field-error{color:#ef4444;margin-top:4px;font-size:.75rem;display:block}.form-row-inline{grid-template-columns:1fr 1fr;gap:12px;display:grid}.toggle-group{background:var(--bg-setting-card,#fafdfb);border:1px solid var(--border-setting,#e2e8f0);border-radius:10px;padding:14px}.toggle-row{justify-content:space-between;align-items:center;gap:16px;display:flex}.toggle-row label:first-child{font-size:.88rem;font-weight:600}.switch{flex-shrink:0;width:44px;height:26px;position:relative}.switch input{display:none}.switch-slider{cursor:pointer;background:#cbd5e1;border-radius:13px;transition:background .25s;position:absolute;inset:0}.switch-slider:after{content:"";background:#fff;border-radius:50%;width:20px;height:20px;transition:transform .25s;position:absolute;top:3px;left:3px;box-shadow:0 1px 3px #00000026}.switch input:checked+.switch-slider{background:var(--accent-primary,#16a34a)}.switch input:checked+.switch-slider:after{transform:translate(18px)}.radio-group{grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:8px;display:grid}.radio-card{border:1.5px solid var(--border-setting,#e2e8f0);cursor:pointer;border-radius:10px;align-items:flex-start;gap:10px;padding:12px 14px;transition:all .2s;display:flex}.radio-card:hover{border-color:var(--accent-primary,#16a34a)}.radio-card.checked{border-color:var(--accent-primary,#16a34a);background:var(--accent-light,#dcfce7)}.radio-card input[type=radio]{display:none}.radio-content{flex-direction:column;gap:2px;display:flex}.radio-content strong{font-size:.85rem}.radio-content span{color:var(--text-secondary,#64748b);font-size:.73rem}.checkbox-list{flex-direction:column;gap:8px;display:flex}.checkbox-item{cursor:pointer;align-items:center;gap:10px;padding:6px 0;font-size:.86rem;display:flex}.checkbox-item input[type=checkbox]{width:17px;height:17px;accent-color:var(--accent-primary,#16a34a)}.slider-group{align-items:center;gap:14px;display:flex}.slider-group input[type=range]{height:6px;accent-color:var(--accent-primary,#16a34a);border-radius:3px;flex:1}.slider-value{text-align:right;min-width:70px;color:var(--accent-primary,#16a34a);font-size:.95rem;font-weight:700}.theme-grid{grid-template-columns:repeat(3,1fr);gap:10px;display:grid}.theme-card{border:2px solid var(--border-setting,#e2e8f0);cursor:pointer;background:var(--bg-setting,#fff);border-radius:12px;flex-direction:column;align-items:center;gap:6px;padding:16px 12px;font-family:inherit;font-size:.84rem;transition:all .2s;display:flex;position:relative}.theme-card:hover{border-color:var(--accent-primary,#16a34a)}.theme-card.active{border-color:var(--accent-primary,#16a34a);background:var(--accent-light,#dcfce7)}.theme-icon{font-size:1.6rem}.theme-check{color:var(--accent-primary,#16a34a);font-size:.85rem;font-weight:700;position:absolute;top:6px;right:8px}.color-grid{flex-wrap:wrap;gap:12px;display:flex}.color-swatch{cursor:pointer;color:#fff;border:3px solid #0000;border-radius:50%;justify-content:center;align-items:center;width:40px;height:40px;font-size:.8rem;font-weight:700;transition:all .2s;display:flex}.color-swatch:hover{transform:scale(1.15)}.color-swatch.active{border-color:var(--text-setting,#1a1a2e);box-shadow:0 0 0 3px var(--bg-setting,#fff), 0 0 0 5px currentColor}.accent-preview{flex-wrap:wrap;gap:12px;margin-top:8px;display:flex}.accent-name{color:#94a3b8;font-size:.72rem}.accent-name.active{color:var(--accent-primary,#16a34a);font-weight:600}.font-grid{gap:8px;display:flex}.font-card{border:1.5px solid var(--border-setting,#e2e8f0);cursor:pointer;background:var(--bg-setting,#fff);border-radius:10px;flex-direction:column;align-items:center;gap:4px;width:64px;padding:12px 8px;font-family:inherit;transition:all .2s;display:flex}.font-card:hover{border-color:var(--accent-primary,#16a34a)}.font-card.active{border-color:var(--accent-primary,#16a34a);background:var(--accent-light,#dcfce7)}.font-sample{color:var(--text-setting,#1a1a2e);font-weight:700}.font-label{color:var(--text-secondary,#64748b);font-size:.7rem}.logo-upload{margin-top:4px}.logo-placeholder{border:2px dashed var(--border-setting,#e2e8f0);cursor:pointer;width:80px;height:80px;color:var(--text-secondary,#64748b);border-radius:12px;justify-content:center;align-items:center;font-size:.8rem;transition:all .2s;display:flex}.logo-placeholder:hover{border-color:var(--accent-primary,#16a34a);background:var(--accent-light,#dcfce7)}.logo-preview{align-items:center;gap:10px;display:flex}.logo-preview img{object-fit:cover;border:1px solid var(--border-setting,#e2e8f0);border-radius:10px;width:60px;height:60px}.btn-sm{color:#ef4444;cursor:pointer;background:#fff;border:1px solid #fecaca;border-radius:6px;padding:5px 12px;font-family:inherit;font-size:.78rem}.settings-bottombar{border-top:1px solid var(--border-setting,#e2e8f0);background:var(--bg-setting-card,#fafdfb);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:10px;padding:14px 24px;display:flex}.bottombar-left{flex-wrap:wrap;align-items:center;gap:12px;display:flex}.dirty-badge{color:#d97706;font-size:.78rem;font-weight:600;animation:2s infinite pulse}.error-badge{color:#ef4444;font-size:.75rem;font-weight:600}.bottombar-right{gap:8px;display:flex}.btn-reset{border:1px solid var(--border-setting,#e2e8f0);background:var(--bg-setting,#fff);cursor:pointer;color:var(--text-secondary,#64748b);border-radius:8px;padding:8px 16px;font-family:inherit;font-size:.84rem;transition:all .2s}.btn-reset:hover{color:#ef4444;background:#fef2f2;border-color:#fecaca}.btn-discard{border:1px solid var(--border-setting,#e2e8f0);background:var(--bg-setting,#fff);cursor:pointer;color:var(--text-secondary,#64748b);border-radius:8px;padding:8px 16px;font-family:inherit;font-size:.84rem;transition:all .2s}.btn-discard:disabled{opacity:.4;cursor:not-allowed}.btn-save{background:var(--accent-primary,#16a34a);color:#fff;cursor:pointer;border:none;border-radius:8px;padding:8px 22px;font-family:inherit;font-size:.85rem;font-weight:600;transition:all .2s}.btn-save:hover:not(:disabled){filter:brightness(1.1);box-shadow:0 2px 8px #00000026}.btn-save:disabled{opacity:.4;cursor:not-allowed}.save-toast{background:var(--accent-dark,#14532d);color:#fff;z-index:300;border-radius:25px;padding:12px 26px;font-size:.88rem;animation:.3s toastSlide;position:fixed;bottom:30px;left:50%;transform:translate(-50%);box-shadow:0 4px 16px #0003}@keyframes toastSlide{0%{opacity:0;transform:translate(-50%)translateY(20px)}to{opacity:1;transform:translate(-50%)translateY(0)}}.provider-grid{flex-direction:column;gap:6px;display:flex}.provider-card{border:1.5px solid var(--border-setting,#e2e8f0);background:var(--bg-setting,#fff);cursor:pointer;text-align:left;border-radius:10px;align-items:center;gap:12px;padding:12px 14px;font-family:inherit;transition:all .2s;display:flex;position:relative}.provider-card:hover{border-color:var(--accent-primary,#16a34a)}.provider-card.active{border-color:var(--accent-primary,#16a34a);background:var(--accent-light,#dcfce7)}.provider-icon{flex-shrink:0;font-size:1.4rem}.provider-info{flex-direction:column;flex:1;gap:1px;display:flex}.provider-info strong{color:var(--text-setting,#1a1a2e);font-size:.88rem}.provider-info span{color:var(--text-secondary,#64748b);font-size:.73rem}.provider-check{color:var(--accent-primary,#16a34a);font-size:.9rem;font-weight:700}.get-key-link{color:var(--accent-primary,#16a34a);opacity:.7;margin-left:8px;font-size:.73rem;font-weight:400;text-decoration:none}.get-key-link:hover{opacity:1;text-decoration:underline}.key-input-wrap{position:relative}.key-input-wrap input{padding-right:36px!important}.key-status{font-size:.9rem;position:absolute;top:50%;right:10px;transform:translateY(-50%)}.key-status.valid{color:#16a34a}.key-status.empty{color:#cbd5e1}.params-grid{grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:10px;display:grid}.param-card{border:1px solid var(--border-setting,#e2e8f0);background:var(--bg-setting-card,#fafdfb);border-radius:8px;padding:12px 14px}.param-label{color:var(--text-secondary,#64748b);margin-bottom:6px;font-size:.76rem;font-weight:600;display:block}.param-card input[type=number]{border:1.5px solid var(--border-setting,#e2e8f0);background:var(--bg-setting-input,#fafbfc);width:100%;color:var(--text-setting,#1a1a2e);border-radius:6px;outline:none;padding:8px 10px;font-family:inherit;font-size:.85rem}.param-card input[type=number]:focus{border-color:var(--accent-primary,#16a34a)}.test-area{flex-direction:column;gap:8px;display:flex}.btn-test{background:var(--accent-primary,#16a34a);color:#fff;cursor:pointer;border:none;border-radius:8px;align-self:flex-start;align-items:center;gap:6px;padding:10px 18px;font-family:inherit;font-size:.85rem;font-weight:600;transition:all .2s;display:inline-flex}.btn-test:hover:not(:disabled){filter:brightness(1.1)}.btn-test:disabled{opacity:.6;cursor:not-allowed}.test-result{border-radius:8px;padding:10px 14px;font-size:.82rem;line-height:1.6}.test-success{color:#166534;background:#f0fdf4;border:1px solid #bbf7d0}.test-failed{color:#991b1b;background:#fef2f2;border:1px solid #fecaca}.test-testing{color:#5b21b6;background:#f5f3ff;border:1px solid #ddd6fe}.engine-status{background:var(--bg-setting-card,#fafdfb);border:1px solid var(--border-setting,#e2e8f0);border-radius:10px;margin-top:20px;padding:16px}.status-header{color:var(--text-setting,#1a1a2e);margin-bottom:12px;font-size:.82rem;font-weight:600}.status-grid{grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:10px;display:grid}.status-item{background:var(--bg-setting,#fff);border:1px solid var(--border-setting,#e2e8f0);border-radius:6px;padding:8px 10px}.status-label{color:#94a3b8;margin-bottom:3px;font-size:.68rem;display:block}.status-value{color:var(--text-setting,#1a1a2e);font-size:.8rem;font-weight:600}.status-value.online{color:#16a34a}.status-value.offline{color:#94a3b8}.product-form{background:var(--bg-setting-card,#fafdfb);border:1px solid var(--border-setting,#e2e8f0);border-radius:10px;margin-bottom:16px;padding:14px 16px}.product-form-row{flex-wrap:wrap;align-items:flex-end;gap:10px;display:flex}.product-field{flex-direction:column;gap:4px;display:flex}.name-field{flex:2;min-width:160px}.unit-field,.cat-field{flex:1;min-width:100px}.btn-field{align-items:flex-end;gap:6px;padding-bottom:0;display:flex}.rule-hint{color:#94a3b8;margin-left:4px;font-size:.68rem;font-weight:400}.product-field input,.product-field select{border:1.5px solid var(--border-setting,#e2e8f0);background:var(--bg-setting-input,#fafbfc);color:var(--text-setting,#1a1a2e);border-radius:7px;outline:none;padding:9px 10px;font-family:inherit;font-size:.85rem;transition:border-color .2s}.product-field input:focus,.product-field select:focus{border-color:var(--accent-primary,#16a34a);box-shadow:0 0 0 2px var(--accent-light,#dcfce7)}.product-field .field-error{color:#ef4444;margin-top:2px;font-size:.72rem}.btn-add-product{background:var(--accent-primary,#16a34a);color:#fff;cursor:pointer;white-space:nowrap;border:none;border-radius:7px;padding:9px 18px;font-family:inherit;font-size:.84rem;font-weight:600;transition:filter .2s}.btn-add-product:hover{filter:brightness(1.1)}.btn-cancel-product{border:1px solid var(--border-setting,#e2e8f0);background:var(--bg-setting,#fff);cursor:pointer;color:var(--text-secondary,#64748b);white-space:nowrap;border-radius:7px;padding:9px 14px;font-family:inherit;font-size:.84rem}.btn-cancel-product:hover{background:#f1f5f9}.product-toolbar{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:10px;margin-bottom:12px;display:flex}.toolbar-left{align-items:center;display:flex}.product-count{color:var(--text-secondary,#64748b);font-size:.82rem}.product-count strong{color:var(--accent-primary,#16a34a);font-size:.95rem}.toolbar-right{align-items:center;gap:8px;display:flex}.search-input{border:1.5px solid var(--border-setting,#e2e8f0);background:var(--bg-setting-input,#fafbfc);color:var(--text-setting,#1a1a2e);border-radius:7px;outline:none;width:180px;padding:8px 12px;font-family:inherit;font-size:.83rem;transition:border-color .2s}.search-input:focus{border-color:var(--accent-primary,#16a34a)}.filter-select{border:1.5px solid var(--border-setting,#e2e8f0);background:var(--bg-setting-input,#fafbfc);color:var(--text-setting,#1a1a2e);border-radius:7px;outline:none;padding:8px 10px;font-family:inherit;font-size:.83rem}.product-empty{text-align:center;color:#94a3b8;padding:48px 20px}.product-table-wrap{border:1px solid var(--border-setting,#e2e8f0);border-radius:10px;overflow:hidden}.product-table{border-collapse:collapse;width:100%;font-size:.84rem}.product-table thead{background:var(--bg-setting-card,#fafdfb)}.product-table th{text-align:left;color:var(--text-secondary,#64748b);border-bottom:1.5px solid var(--border-setting,#e2e8f0);white-space:nowrap;padding:10px 14px;font-size:.78rem;font-weight:600}.product-table tbody tr{border-bottom:1px solid var(--border-setting,#e2e8f0);transition:background .15s}.product-table tbody tr:last-child{border-bottom:none}.product-table tbody tr:hover{background:var(--bg-setting-card,#fafdfb)}.product-table tbody tr.row-editing{background:#fef3c7}.product-table td{vertical-align:middle;padding:10px 14px}.product-name{color:var(--text-setting,#1a1a2e);font-weight:600}.badge-unit,.badge-cat{border-radius:5px;padding:3px 8px;font-size:.76rem;font-weight:500;display:inline-block}.badge-unit{color:#6d28d9;background:#ede9fe}.badge-cat{color:#1e40af;background:#dbeafe}.cell-time{color:var(--text-secondary,#64748b);white-space:nowrap;font-size:.78rem}.cell-actions{gap:6px;display:flex}.btn-action{border:1px solid var(--border-setting,#e2e8f0);background:var(--bg-setting,#fff);cursor:pointer;border-radius:6px;justify-content:center;align-items:center;width:30px;height:30px;font-size:.85rem;transition:all .15s;display:flex}.btn-action.edit:hover{background:#eff6ff;border-color:#93c5fd}.btn-action.delete:hover{background:#fef2f2;border-color:#fecaca}@media (width<=768px){.product-form-row{flex-direction:column;gap:8px}.name-field,.unit-field,.cat-field,.btn-field{flex:none;min-width:100%}.btn-field{flex-direction:row;gap:8px}.btn-add-product,.btn-cancel-product{text-align:center;flex:1;justify-content:center}.product-toolbar{flex-direction:column;align-items:stretch}.toolbar-right{flex-direction:column}.search-input{width:100%}.product-table-wrap{overflow-x:auto}.product-table{min-width:500px;font-size:.8rem}.settings-page{border-radius:var(--radius-sm);min-height:50vh}.settings-body{flex-direction:column}.settings-sidebar{border-right:none;border-bottom:1px solid var(--border-setting,#e2e8f0);flex-shrink:0;width:100%;min-width:100%}.settings-sidebar nav{flex-flow:row;gap:4px;padding:8px;overflow-x:auto}.sidebar-item{white-space:nowrap;padding:8px 12px;font-size:.8rem}.sidebar-item .sidebar-icon{font-size:.95rem}.active-indicator{width:20px;height:3px;inset:auto auto 0 50%;transform:translate(-50%)}.sidebar-footer{display:none}.settings-content{flex:auto;padding:16px}.theme-grid{grid-template-columns:repeat(3,1fr)}.form-row-inline{grid-template-columns:1fr}.settings-bottombar{flex-direction:column;align-items:stretch}.bottombar-right{justify-content:flex-end}.radio-group{grid-template-columns:1fr}}@media (width<=480px){.settings-topbar{padding:12px 16px}.settings-content{padding:12px}.settings-bottombar{padding:12px 16px}.theme-grid{grid-template-columns:1fr 1fr 1fr;gap:6px}.theme-card{padding:12px 8px;font-size:.76rem}.bottombar-right{flex-wrap:wrap}.btn-save{flex:1}}.dm-page{padding:8px 0}.dm-summary{grid-template-columns:repeat(3,1fr);gap:12px;margin-bottom:20px;display:grid}.dm-stat-card{background:var(--bg-setting-card,#f8fafc);border:1px solid var(--border-setting,#e2e8f0);text-align:center;border-radius:10px;flex-direction:column;gap:4px;padding:16px;display:flex}.dm-stat-val{color:var(--text-setting,#1a1a2e);font-size:1.4rem;font-weight:800}.dm-stat-label{color:#94a3b8;font-size:.78rem;font-weight:500}.dm-section{background:var(--bg-setting-card,#fafdfb);border:1px solid var(--border-setting,#f0fdf4);border-radius:10px;margin-bottom:14px;padding:18px 20px}.dm-section h3{color:var(--text-setting,#1a1a2e);margin:0 0 6px;font-size:.95rem}.dm-section h4{color:var(--text-secondary,#64748b);margin:0 0 8px;font-size:.84rem}.dm-desc{color:var(--text-secondary,#64748b);margin:0 0 12px;font-size:.82rem;line-height:1.6}.dm-desc strong{color:#dc2626}.dm-hint{color:#94a3b8;vertical-align:middle;margin-left:12px;font-size:.78rem}.dm-sub{border-top:1px solid var(--border-setting,#e2e8f0);margin-top:12px;padding-top:12px}.dm-empty{color:#cbd5e1;text-align:center;padding:16px;font-size:.82rem}.btn-dm-primary{background:var(--primary);color:#fff;cursor:pointer;font-size:.86rem;font-weight:600;font-family:var(--font);border:none;border-radius:7px;padding:9px 22px;transition:filter .15s}.btn-dm-primary:hover{filter:brightness(1.1)}.btn-dm-secondary{color:var(--primary);border:1.5px solid var(--primary);cursor:pointer;font-size:.86rem;font-weight:600;font-family:var(--font);background:#fff;border-radius:7px;align-items:center;gap:6px;padding:9px 22px;transition:background .15s;display:inline-flex}.btn-dm-secondary:hover{background:#f0fdf4}.btn-dm-danger{color:#fff;cursor:pointer;font-size:.86rem;font-weight:600;font-family:var(--font);background:#dc2626;border:none;border-radius:7px;padding:9px 22px;transition:filter .15s}.btn-dm-danger:hover:not(:disabled){filter:brightness(1.15)}.btn-dm-danger:disabled{opacity:.4;cursor:not-allowed}.btn-dm-cancel{cursor:pointer;font-size:.86rem;font-family:var(--font);color:var(--text-secondary,#64748b);background:#fff;border:1px solid #e2e8f0;border-radius:7px;padding:9px 22px;transition:background .15s}.btn-dm-cancel:hover{background:#f1f5f9}.dm-table{border:1px solid var(--border-setting,#e2e8f0);border-radius:7px;overflow:hidden}.dm-row{border-bottom:1px solid #f1f5f9;grid-template-columns:115px 1fr 60px 65px;gap:6px;padding:7px 10px;font-size:.78rem;display:grid}.dm-row:last-child{border-bottom:none}.dm-head{background:var(--bg-setting,#f8fafc);color:var(--text-secondary,#64748b);text-transform:uppercase;font-size:.72rem;font-weight:700}.dm-mono{color:var(--text-secondary,#64748b);font-family:monospace}.dm-fname{text-overflow:ellipsis;white-space:nowrap;color:var(--primary-dark,#1b4332);overflow:hidden}.dm-confirm{background:#fff;border:1px solid #fecaca;border-radius:8px;flex-direction:column;gap:10px;margin-top:12px;padding:14px;display:flex}.dm-warn{color:#991b1b;background:#fef2f2;border-radius:6px;padding:8px 12px;font-size:.82rem;line-height:1.6}.dm-warn.danger{font-weight:600}.dm-check{color:var(--text-secondary,#64748b);cursor:pointer;align-items:center;gap:8px;font-size:.82rem;display:flex}.dm-check input[type=checkbox]{width:15px;height:15px;accent-color:var(--primary)}.dm-input-row{color:var(--text-secondary,#64748b);align-items:center;gap:8px;font-size:.82rem;display:flex}.dm-confirm-input{font-size:.83rem;font-family:var(--font);border:1.5px solid #fecaca;border-radius:6px;outline:none;width:120px;padding:6px 10px}.dm-confirm-input:focus{border-color:#dc2626}.dm-confirm-btns{justify-content:flex-end;gap:8px;display:flex}.dm-modes{gap:10px;margin-bottom:12px;display:flex}.dm-mode{border:2px solid var(--border-setting,#e2e8f0);cursor:pointer;color:var(--text-secondary,#64748b);border-radius:7px;align-items:center;gap:6px;padding:8px 14px;font-size:.83rem;font-weight:500;transition:all .2s;display:flex}.dm-mode:hover{border-color:var(--primary-light)}.dm-mode.active{border-color:var(--primary);color:var(--primary-dark);background:#f0fdf4;font-weight:600}.dm-mode input[type=radio]{accent-color:var(--primary)}.dm-date-row{color:var(--text-secondary,#64748b);align-items:center;gap:10px;margin-bottom:12px;font-size:.82rem;display:flex}.dm-date-row input[type=date]{border:1.5px solid var(--border-setting,#e2e8f0);font-family:var(--font);border-radius:6px;outline:none;padding:6px 10px;font-size:.83rem}.dm-date-row input[type=date]:focus{border-color:var(--primary-light)}.dm-clean-preview{color:var(--text-secondary,#64748b);white-space:nowrap;background:#fffbeb;border:1px solid #fde68a;border-radius:14px;padding:4px 10px;font-size:.8rem}.dm-clean-preview.total{color:#991b1b;background:#fef2f2;border-color:#fecaca;margin-top:6px}.dm-clean-preview strong{color:var(--primary-dark,#1b4332)}.dm-clean-preview.total strong{color:#dc2626}.dm-category-list{flex-direction:column;gap:8px;margin-bottom:12px;display:flex}.dm-cat-hint{color:var(--text-secondary,#64748b);margin:0 0 4px;font-size:.8rem}.dm-cat-item{border:2px solid var(--border-setting,#e2e8f0);cursor:pointer;background:#fff;border-radius:8px;align-items:center;gap:10px;padding:10px 14px;font-size:.85rem;transition:all .2s;display:flex}.dm-cat-item:hover{border-color:var(--primary-light,#40916c);background:#fafdfb}.dm-cat-item.checked{border-color:var(--primary);background:#f0fdf4;box-shadow:0 0 0 2px #dcfce7}.dm-cat-item input[type=checkbox]{width:16px;height:16px;accent-color:var(--primary);flex-shrink:0}.dm-cat-icon{flex-shrink:0;font-size:1.1rem}.dm-cat-label{color:var(--text-setting,#1a1a2e);font-weight:600}.dm-cat-count{color:var(--text-secondary,#94a3b8);white-space:nowrap;background:#f1f5f9;border-radius:10px;margin-left:auto;padding:2px 10px;font-size:.78rem}.dm-cat-item.checked .dm-cat-count{color:#16a34a;background:#dcfce7}.dm-cat-mark{color:var(--primary);flex-shrink:0;font-size:1rem;font-weight:700}.dm-log-toggle{cursor:pointer;width:100%;color:var(--text-setting,#1a1a2e);font-size:.9rem;font-weight:600;font-family:var(--font);background:0 0;border:none;align-items:center;gap:6px;padding:0;display:flex}.dm-log-count{background:var(--primary);color:#fff;border-radius:8px;padding:1px 7px;font-size:.68rem}.dm-log-list{border:1px solid var(--border-setting,#e2e8f0);border-radius:7px;max-height:320px;margin-top:10px;overflow:hidden auto}.dm-log-row{border-bottom:1px solid #f1f5f9;grid-template-columns:95px 70px 1fr 24px;align-items:center;gap:6px;padding:6px 10px;font-size:.76rem;display:grid}.dm-log-row:last-child{border-bottom:none}.dm-log-row.fail{background:#fef2f2}.dm-log-action{color:var(--text-setting,#1a1a2e);font-weight:600}.dm-log-mark{text-align:center;font-size:.78rem;font-weight:700}.dm-log-mark.success{color:#16a34a}.dm-log-mark.fail{color:#dc2626}.dm-toast{background:var(--primary-dark);color:#fff;z-index:1000;border-radius:20px;padding:10px 24px;font-size:.85rem;animation:.3s dmToastIn;position:fixed;bottom:30px;left:50%;transform:translate(-50%);box-shadow:0 4px 16px #0003}@keyframes dmToastIn{0%{opacity:0;transform:translate(-50%)translateY(16px)}to{opacity:1;transform:translate(-50%)translateY(0)}}
