:root{--primary: #FF6B35;--primary-2: #FF8F5E;--primary-3: #FFA06B;--primary-light: #FFF3E8;--primary-dark: #E55A25;--success: #34C759;--danger: #FF3B30;--danger-light: #FFE5E5;--warning: #FF9500;--text: #1A1A1A;--text-2: #666;--text-3: #999;--bg-page: #F7F6F4;--bg-card: #FFFFFF;--bg-soft: #FBFAF9;--border: #ECEAE6;--border-strong: #E0DCD6;--track: #F1ECE8;--r-sm: 8px;--r-md: 12px;--r-lg: 16px;--r-xl: 20px;--r-full: 999px;--shadow-sm: 0 1px 2px rgba(0, 0, 0, .04), 0 2px 8px rgba(0, 0, 0, .04);--shadow-md: 0 2px 12px rgba(0, 0, 0, .06);--shadow-orange: 0 8px 32px rgba(255, 107, 53, .22);--shadow-focus: 0 0 0 3px rgba(255, 107, 53, .18);--fs-display: 22px;--fs-h1: 17px;--fs-body: 14px;--fs-meta: 12px;--sp-1: 4px;--sp-2: 8px;--sp-3: 12px;--sp-4: 16px;--sp-5: 24px;--sp-6: 32px;--font: -apple-system, BlinkMacSystemFont, "SF Pro Display", "Segoe UI", "PingFang SC", "Microsoft YaHei", sans-serif}*{box-sizing:border-box;margin:0;padding:0}html,body,#root{height:100%}body{font-family:var(--font);color:var(--text);background:var(--bg-page);-webkit-font-smoothing:antialiased}a{color:inherit;text-decoration:none}.login-page{min-height:100vh;display:flex;align-items:center;justify-content:center;background:var(--bg-page);padding:24px;font-family:var(--font)}.login-card{width:100%;max-width:380px;background:var(--bg-card);border-radius:var(--r-xl);box-shadow:var(--shadow-md);padding:40px 32px;text-align:center}.login-brand{font-size:var(--fs-display);font-weight:800;color:var(--primary);margin-bottom:4px}.login-subtitle{font-size:var(--fs-body);color:var(--text-3);margin-bottom:28px}.login-qr-wrap{width:220px;height:220px;margin:0 auto 24px;background:var(--bg-soft);border-radius:var(--r-lg);border:1px solid var(--border);display:flex;align-items:center;justify-content:center;overflow:hidden}.login-qr-img{width:100%;height:100%;object-fit:contain}.login-qr-placeholder{display:flex;flex-direction:column;align-items:center;gap:8px;color:var(--text-3);font-size:12px;padding:16px}.login-qr-mock{width:160px;height:160px;border-radius:var(--r-md);background:linear-gradient(45deg,var(--primary) 25%,transparent 25%) -8px 0,linear-gradient(-45deg,var(--primary) 25%,transparent 25%) -8px 0,linear-gradient(45deg,transparent 75%,var(--primary) 75%),linear-gradient(-45deg,transparent 75%,var(--primary) 75%);background-size:16px 16px;background-color:var(--primary-light);opacity:.4}.login-hint{font-size:13px;color:var(--text-2);margin-bottom:16px;line-height:1.5}.login-status{font-size:14px;color:var(--primary);font-weight:600}.login-error{font-size:13px;color:var(--danger);margin-top:12px;line-height:1.5}.login-retry{margin-top:20px;padding:10px 24px;border-radius:var(--r-full);background:var(--primary);color:#fff;font-size:14px;font-weight:600;border:none;cursor:pointer;transition:opacity .2s}.login-retry:hover{opacity:.9}.login-loading-dot{width:32px;height:32px;border:3px solid var(--border);border-top-color:var(--primary);border-radius:50%;animation:login-spin .8s linear infinite}@keyframes login-spin{to{transform:rotate(360deg)}}.uom-picker-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#00000052;display:flex;align-items:center;justify-content:center;z-index:100}.uom-picker{width:380px;max-width:calc(100vw - 32px);max-height:70vh;background:var(--bg-card);border-radius:var(--r-lg);box-shadow:0 16px 48px #0003;display:flex;flex-direction:column;overflow:hidden}.uom-picker-header{display:flex;align-items:center;justify-content:space-between;padding:14px 16px;border-bottom:1px solid var(--border)}.uom-picker-title{font-size:15px;font-weight:700;color:var(--text)}.uom-picker-close{border:none;background:transparent;color:var(--text-3);font-size:16px;cursor:pointer;padding:4px 8px;border-radius:var(--r-sm)}.uom-picker-close:hover{background:var(--bg-page);color:var(--text)}.uom-picker-body{padding:12px 16px 16px;overflow-y:auto}.uom-picker-loading{padding:32px 0;text-align:center;color:var(--text-3);font-size:var(--fs-body)}.uom-section-label{display:flex;align-items:baseline;justify-content:space-between;font-size:var(--fs-meta);font-weight:700;color:var(--text-2);margin:8px 0}.uom-section-hint{font-weight:400;color:var(--text-3)}.uom-chip-grid{display:flex;flex-wrap:wrap;gap:8px}.uom-chip{padding:6px 14px;border-radius:var(--r-full);border:1px solid var(--border-strong);background:var(--bg-card);color:var(--text);font-size:var(--fs-body);cursor:pointer;transition:border-color .12s,background .12s,color .12s}.uom-chip:hover{border-color:var(--primary);color:var(--primary-dark)}.uom-chip--active{background:var(--primary-light);border-color:var(--primary);color:var(--primary-dark);font-weight:600}.uom-divider{height:1px;background:var(--border);margin:14px 0}.uom-add-row{display:flex;align-items:center;gap:8px;width:100%;padding:10px 12px;border:1px dashed var(--border-strong);border-radius:var(--r-md);background:transparent;color:var(--text-3);font-size:var(--fs-body);cursor:pointer;transition:color .12s,border-color .12s}.uom-add-row:hover{color:var(--primary);border-color:var(--primary)}.uom-add-icon{font-size:16px;font-weight:700}.uom-add-inline{display:flex;align-items:center;gap:8px}.uom-add-input{flex:1;padding:8px 12px;border:1px solid var(--border-strong);border-radius:var(--r-sm);font-size:var(--fs-body);outline:none}.uom-add-input:focus{border-color:var(--primary);box-shadow:var(--shadow-focus)}.uom-mini-btn{padding:8px 14px;border-radius:var(--r-sm);border:none;font-size:var(--fs-meta);font-weight:600;cursor:pointer;white-space:nowrap}.uom-mini-btn--cancel{background:var(--bg-page);color:var(--text-2)}.uom-mini-btn--confirm{background:var(--primary);color:#fff}.uom-mini-btn--confirm.uom-mini-btn--disabled,.uom-mini-btn--confirm:disabled{background:var(--border-strong);cursor:not-allowed}.uom-add-error{margin-top:8px;padding:6px 10px;background:var(--danger-light);color:var(--danger);border-radius:var(--r-sm);font-size:var(--fs-meta)}.manage{display:flex;min-height:100vh;background:var(--bg-page);font-family:var(--font)}.manage-sidebar{width:248px;flex-shrink:0;background:var(--bg-card);border-right:1px solid var(--border);display:flex;flex-direction:column;padding:16px 12px}.manage-brand{display:flex;align-items:center;gap:8px;padding:8px 12px 20px}.manage-brand-logo{width:28px;height:28px;border-radius:var(--r-sm);flex-shrink:0;object-fit:cover}.manage-brand-text{font-size:16px;font-weight:800;color:var(--text)}.manage-list-label{font-size:var(--fs-meta);color:var(--text-3);padding:0 12px 8px;font-weight:600;text-transform:uppercase;letter-spacing:.04em}.manage-list{flex:1;overflow-y:auto;display:flex;flex-direction:column;gap:2px}.manage-list-group{display:flex;flex-direction:column;gap:2px}.manage-list-group+.manage-list-group{margin-top:8px}.manage-group-label{font-size:var(--fs-meta);font-weight:700;letter-spacing:.04em;color:var(--text-3);padding:8px 12px 4px;font-variant-numeric:tabular-nums}.manage-new-list{margin-top:auto;color:var(--text-3);font-size:var(--fs-body);padding:8px 12px;border-radius:var(--r-sm);cursor:pointer;display:flex;align-items:center;gap:8px;transition:color .12s,background .12s}.manage-new-list:hover{color:var(--primary);background:var(--bg-page)}.manage-list-item{display:flex;align-items:center;gap:8px;padding:8px 12px;border-radius:var(--r-sm);cursor:pointer;font-size:var(--fs-body);color:var(--text-2);transition:background .12s}.manage-list-item:hover{background:var(--bg-page)}.manage-list-item--selected{background:var(--primary-light);color:var(--primary-dark);font-weight:600}.manage-list-item--selected .manage-list-dot{background:var(--primary)}.manage-list-dot{width:14px;height:14px;border-radius:50%;background:var(--border-strong);flex-shrink:0;display:flex;align-items:center;justify-content:center;color:#fff;font-size:9px;font-weight:800}.manage-list-dot--done{background:var(--success)}.manage-list-item--completed .manage-list-name{color:var(--text-3)}.manage-list-item--completed .manage-list-count--done{color:var(--success);font-weight:600}.manage-list-name{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.manage-list-count{font-size:var(--fs-meta);color:var(--text-3);font-variant-numeric:tabular-nums}.manage-main{flex:1;min-width:0;display:flex;flex-direction:column}.manage-topbar{display:flex;align-items:center;justify-content:space-between;padding:20px 32px 16px;gap:24px}.manage-topbar-left{min-width:0}.manage-title{font-size:var(--fs-display);font-weight:850;color:var(--text);line-height:1.2;display:flex;align-items:center;gap:8px}.manage-avatar-stack{display:inline-flex;align-items:center}.manage-avatar-stack-item{width:24px;height:24px;border-radius:50%;border:2px solid var(--bg-card);overflow:hidden;flex-shrink:0;display:flex;align-items:center;justify-content:center}.manage-avatar-stack-img{width:100%;height:100%;object-fit:cover}.manage-avatar-stack-fallback{width:100%;height:100%;display:flex;align-items:center;justify-content:center;background:var(--primary);color:#fff;font-size:10px;font-weight:700}.manage-avatar-stack-more{background:var(--border-strong);color:var(--text-2);font-size:10px;font-weight:700}.manage-meta{font-size:var(--fs-meta);color:var(--text-3);margin-top:4px;font-variant-numeric:tabular-nums}.manage-search-wrap{position:relative;flex:1;max-width:360px}.manage-search{width:100%;max-width:360px;padding:8px 14px 8px 34px;border-radius:var(--r-md);border:1px solid var(--border-strong);background:var(--bg-page);font-size:var(--fs-body);color:var(--text);outline:none;transition:border-color .12s,box-shadow .12s,background .12s}.manage-search:focus{border-color:var(--primary);box-shadow:var(--shadow-focus);background:var(--bg-card)}.manage-search-icon{position:absolute;left:11px;top:50%;transform:translateY(-50%);color:var(--text-3);font-size:16px;pointer-events:none}.manage-quickadd{margin:0 32px 12px;padding:10px 14px;background:var(--bg-soft);border-radius:var(--r-md);display:flex;align-items:center;gap:var(--sp-3)}.manage-quickadd-input-wrap{position:relative;flex:1}.manage-quickadd-input{width:100%;padding:8px 12px;border:1.5px dashed var(--border-strong);border-radius:var(--r-sm);background:transparent;font-size:var(--fs-body);color:var(--text);outline:none;transition:border-style .12s,border-color .12s,box-shadow .12s}.manage-quickadd-input:focus{border-style:solid;border-color:var(--primary);box-shadow:var(--shadow-focus)}.manage-suggestions{position:absolute;top:calc(100% + 4px);left:0;right:0;background:var(--bg-card);border:1px solid var(--border);border-radius:var(--r-md);box-shadow:var(--shadow-md);z-index:10;max-height:280px;overflow-y:auto;padding:4px}.manage-suggestion-item{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:8px 10px;border-radius:var(--r-sm);cursor:pointer}.manage-suggestion-item:hover{background:var(--primary-light)}.manage-suggestion-name{font-size:var(--fs-body);color:var(--text)}.manage-suggestion-meta,.manage-quickadd-hint{font-size:var(--fs-meta);color:var(--text-3);white-space:nowrap}.manage-qty-stepper{display:flex;align-items:center;gap:4px;flex-shrink:0}.manage-qty-btn{width:28px;height:28px;border-radius:var(--r-sm);border:1px solid var(--border-strong);background:var(--bg-card);color:var(--text-2);font-size:16px;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:border-color .12s,color .12s}.manage-qty-btn:hover{border-color:var(--primary);color:var(--primary)}.manage-qty-input{width:40px;height:28px;text-align:center;border:1px solid var(--border-strong);border-radius:var(--r-sm);font-size:var(--fs-body);color:var(--text);outline:none;font-variant-numeric:tabular-nums}.manage-qty-input:focus{border-color:var(--primary);box-shadow:var(--shadow-focus)}.manage-uom-trigger{height:28px;padding:0 12px;border-radius:var(--r-sm);border:1px solid var(--border-strong);background:var(--bg-card);color:var(--text-2);font-size:var(--fs-body);cursor:pointer;transition:border-color .12s,color .12s;white-space:nowrap}.manage-uom-trigger:hover{border-color:var(--primary);color:var(--primary)}.manage-add-btn{height:30px;padding:0 16px;border-radius:var(--r-md);border:none;background:var(--primary);color:#fff;font-size:var(--fs-body);font-weight:600;cursor:pointer;flex-shrink:0;transition:background .12s,opacity .12s}.manage-add-btn:hover:not(:disabled){background:var(--primary-dark)}.manage-add-btn:disabled{opacity:.4;cursor:not-allowed}.manage-reset-btn{padding:2px 8px;border-radius:var(--r-sm);border:1px solid var(--border-strong);background:transparent;color:var(--text-3);font-size:11px;cursor:pointer;margin-left:4px;flex-shrink:0;transition:color .12s,border-color .12s}.manage-reset-btn:hover{color:var(--primary);border-color:var(--primary)}.manage-item-actions{display:flex;align-items:center;gap:2px;flex-shrink:0;margin-left:8px;opacity:0;transition:opacity .12s}.manage-item:hover .manage-item-actions,.manage-item:focus-within .manage-item-actions{opacity:1}.manage-action{width:28px;height:28px;border:none;background:transparent;color:var(--text-3);cursor:pointer;display:flex;align-items:center;justify-content:center;border-radius:var(--r-sm);transition:color .12s,background .12s}.manage-action-edit:hover{color:var(--text);background:var(--bg-page)}.manage-action-delete:hover{color:var(--danger);background:var(--danger-light)}.manage-delete-btn{margin-left:auto;padding:4px 8px;border-radius:var(--r-sm);border:none;background:transparent;color:var(--text-3);font-size:16px;line-height:1;cursor:pointer;flex-shrink:0;transition:color .12s,background .12s}.manage-delete-btn:hover{color:var(--danger);background:var(--danger-light)}.manage-save-btn{width:28px;height:28px;border-radius:var(--r-sm);border:none;background:var(--success);color:#fff;font-size:14px;cursor:pointer;display:flex;align-items:center;justify-content:center;flex-shrink:0}.manage-save-btn:hover{opacity:.85}.manage-kbd{font-size:10px;font-weight:700;padding:1px 5px;border-radius:4px;background:var(--bg-card);border:1px solid var(--border);color:var(--text-2)}.manage-items{flex:1;overflow-y:auto;padding:0 32px 32px}.manage-items-state{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:80px 24px;color:var(--text-3);text-align:center}.manage-items-state-icon{font-size:48px;line-height:1;margin-bottom:16px}.manage-items-state-title{font-size:var(--fs-h1);font-weight:600;color:var(--text-2);margin-bottom:6px}.manage-items-state-desc{font-size:var(--fs-body);color:var(--text-3)}.manage-item{display:flex;align-items:center;gap:12px;padding:10px 12px;border-radius:var(--r-sm);border:1px solid transparent;transition:background .12s,border-color .12s,box-shadow .12s}.manage-item:hover{background:var(--bg-card);border-color:var(--border);box-shadow:var(--shadow-sm)}.manage-item--editing{background:var(--bg-card);border:1px solid var(--primary);box-shadow:var(--shadow-focus)}.manage-check{width:22px;height:22px;border-radius:50%;border:2px solid var(--border-strong);flex-shrink:0;cursor:pointer;display:flex;align-items:center;justify-content:center;background:var(--bg-card);transition:border-color .12s,background .12s}.manage-check:hover{border-color:var(--primary)}.manage-check--done{background:var(--success);border-color:var(--success);color:#fff;font-size:12px}.manage-item-info{flex:1;min-width:0;display:flex;align-items:baseline;gap:8px}.manage-item-name{min-width:0;font-size:var(--fs-body);color:var(--text);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;cursor:pointer}.manage-item--done .manage-item-name{color:var(--text-3);text-decoration:line-through}.manage-item-qty{font-size:var(--fs-meta);color:var(--text-3);background:var(--bg-soft);padding:2px 8px;border-radius:var(--r-full);font-variant-numeric:tabular-nums}.manage-completer{display:inline-flex;align-items:center;gap:4px;font-size:var(--fs-meta);color:var(--text-3);flex-shrink:0}.manage-completer-avatar{width:20px;height:20px;border-radius:50%;object-fit:cover;flex-shrink:0;background:var(--primary)}.manage-completer-avatar--fallback{display:inline-flex;align-items:center;justify-content:center;color:#fff;font-size:10px;font-weight:800}.manage-item-edit-input{flex:1;min-width:0;padding:4px 8px;border:1px solid var(--border-strong);border-radius:var(--r-sm);font-size:var(--fs-body);color:var(--text);outline:none}.manage-item-edit-input:focus{border-color:var(--primary)}.manage-divider{display:flex;align-items:center;gap:12px;margin:24px 12px 8px;font-size:var(--fs-meta);color:var(--text-3);font-weight:600}.manage-error{margin:0 32px 12px;padding:10px 14px;background:var(--danger-light);border-radius:var(--r-md);color:var(--danger);font-size:var(--fs-body);display:flex;align-items:center;justify-content:space-between}.manage-retry-btn{padding:4px 14px;border-radius:var(--r-full);background:var(--primary);color:#fff;border:none;font-size:var(--fs-meta);font-weight:600;cursor:pointer}.manage-spinner{width:28px;height:28px;border:3px solid var(--border);border-top-color:var(--primary);border-radius:50%;animation:manage-spin .8s linear infinite;margin-bottom:12px}@keyframes manage-spin{to{transform:rotate(360deg)}}.create-list-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#00000052;display:flex;align-items:center;justify-content:center;z-index:100}.create-list-dialog{width:320px;max-width:calc(100vw - 32px);background:var(--bg-card);border-radius:var(--r-lg);box-shadow:0 16px 48px #0003;padding:16px;display:flex;flex-direction:column;gap:12px}.create-list-header{display:flex;align-items:center;justify-content:space-between}.create-list-title{font-size:15px;font-weight:700;color:var(--text)}.create-list-close{border:none;background:transparent;color:var(--text-3);font-size:16px;cursor:pointer;padding:4px 8px;border-radius:var(--r-sm)}.create-list-close:hover{background:var(--bg-page);color:var(--text)}.create-list-input{width:100%;padding:10px 12px;border:1px solid var(--border-strong);border-radius:var(--r-md);font-size:var(--fs-body);color:var(--text);outline:none;transition:border-color .12s,box-shadow .12s}.create-list-input:focus{border-color:var(--primary);box-shadow:var(--shadow-focus)}.create-list-submit{height:38px;border-radius:var(--r-md);border:none;background:var(--primary);color:#fff;font-size:var(--fs-body);font-weight:600;cursor:pointer;transition:background .12s,opacity .12s}.create-list-submit:hover:not(:disabled){background:var(--primary-dark)}.create-list-submit:disabled{opacity:.4;cursor:not-allowed}
