:root{font-family:Inter,system-ui,Avenir,Helvetica,Arial,sans-serif;line-height:1.5;font-weight:400;color-scheme:light;background-color:#fff;font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;-webkit-text-size-adjust:100%;overscroll-behavior:none;--color-primary: #2563EB;--color-primary-dim: #1D4ED8;--color-danger: #DC2626;--color-warning: #D97706;--color-success: #16A34A;--color-surface: #FFFFFF;--color-surface-2: #F4F6F8;--color-border: #E2E8F0;--color-text-primary: #111827;--color-text-secondary: #6B7280;--space-1: 4px;--space-2: 8px;--space-3: 12px;--space-4: 16px;--space-5: 20px;--space-6: 24px;--space-8: 32px;--space-10: 40px;--radius-sm: 6px;--radius-md: 10px;--radius-lg: 16px;--radius-xl: 20px;--text-xs: .6875rem;--text-sm: .8125rem;--text-base: 1rem;--text-lg: 1.125rem;--text-xl: 1.25rem;--shadow-sm: 0 1px 3px rgba(0,0,0,.08), 0 1px 2px rgba(0,0,0,.06);--shadow-md: 0 4px 12px rgba(0,0,0,.1);--shadow-lg: 0 8px 24px rgba(0,0,0,.12);--transition-fast: .12s ease;--transition-base: .2s ease}a{font-weight:500;color:var(--color-primary);text-decoration:inherit}a:hover{color:var(--color-primary-dim)}body{margin:0;padding:0;min-width:320px;min-height:100vh;min-height:100dvh}h1{font-size:3.2em;line-height:1.1}button{border-radius:var(--radius-sm);border:1px solid transparent;padding:.6em 1.2em;font-size:1em;font-weight:500;font-family:inherit;cursor:pointer;transition:border-color var(--transition-fast),transform var(--transition-fast)}button:active{transform:scale(.97)}button:focus-visible{outline:2px solid var(--color-primary);outline-offset:2px}input:focus-visible,select:focus-visible,textarea:focus-visible{outline:2px solid var(--color-primary);outline-offset:2px}@keyframes spin{to{transform:rotate(360deg)}}.loading-spinner-ring{display:inline-block;width:20px;height:20px;border:2px solid var(--color-border);border-top-color:var(--color-primary);border-radius:50%;animation:spin .7s linear infinite}@keyframes page-fade-in{0%{opacity:0}to{opacity:1}}.app__main>*{animation:page-fade-in .15s ease}.app{display:flex;flex-direction:column;height:100dvh;max-width:100%;margin:0;padding:0;overflow:hidden}.app__main{flex:1;overflow-y:auto;overflow-x:hidden;-webkit-overflow-scrolling:touch;position:relative}.app__navigation{display:flex;background:var(--color-surface);border-top:1px solid var(--color-border);padding:10px 0 calc(env(safe-area-inset-bottom) + 10px);flex-shrink:0}.nav-button{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:6px 4px;background:none;border:none;border-radius:var(--radius-md);text-decoration:none;color:var(--color-text-secondary);font-size:var(--text-sm);font-weight:500;transition:color var(--transition-base),transform var(--transition-fast);cursor:pointer;min-height:48px;outline:none;position:relative;-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent;-webkit-user-drag:none;-khtml-user-drag:none;-moz-user-drag:none;-o-user-drag:none;user-drag:none}.nav-button:active{transform:scale(.93)}.nav-button:hover{color:var(--color-text-primary);text-decoration:none}.nav-button--active{color:var(--color-primary)}.nav-button--active:before{content:"";position:absolute;top:0;left:50%;transform:translate(-50%);width:28px;height:3px;background:var(--color-primary);border-radius:0 0 3px 3px}.nav-button--active:hover{color:var(--color-primary-dim)}.nav-button__icon{display:flex;align-items:center;justify-content:center;width:24px;height:24px;margin-bottom:3px}.nav-button__text{font-size:var(--text-xs);font-weight:500;letter-spacing:.01em}#root{max-width:100%;margin:0;padding:0;text-align:left}.camera-core,.camera-core__container{position:relative;width:100%;height:100%}.camera-core__video{width:100%;height:100%;object-fit:cover;background:#000}.camera-core__loading{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);display:flex;flex-direction:column;align-items:center;gap:1rem;color:#fff;z-index:10}.camera-core__loading-spinner{width:40px;height:40px;border:4px solid rgba(255,255,255,.3);border-top:4px solid white;border-radius:50%;animation:spin 1s linear infinite}.camera-core__loading-text{font-size:1rem;text-align:center}.camera-core__overlay{position:absolute;top:0;left:0;right:0;bottom:0;pointer-events:none;z-index:5}.camera-core__overlay>*{pointer-events:auto}.shared-camera-layout{position:relative;height:100%;width:100%;background:#000;overflow:hidden}.shared-camera-layout__video-container{position:absolute;top:0;left:0;right:0;bottom:0;z-index:1}.shared-camera-layout__camera{width:100%;height:100%}.shared-camera-layout__video{width:100%;height:100%;object-fit:cover}.shared-camera-layout__content{position:relative;height:100%;width:100%;z-index:2;pointer-events:none}.shared-camera-layout__content>*{pointer-events:auto}.camera-feed__controls{position:absolute;top:10px;right:10px;z-index:1001}.camera-feed__controls.is-hidden{display:none}.camera-feed__stock-button{background:#000000a6;color:#fff;border:1px solid rgba(255,255,255,.25);padding:7px 14px;border-radius:var(--radius-xl);cursor:pointer;font-size:var(--text-sm);font-weight:500;transition:background var(--transition-fast),border-color var(--transition-fast),transform var(--transition-fast)}.camera-feed__stock-button:hover{background:#000000d9;border-color:#ffffff73}.camera-feed__stock-button:active{transform:scale(.97)}.camera-controls__label{display:block;margin-bottom:.5rem;font-weight:500;color:var(--color-text-primary)}.camera-controls__select{width:100%;padding:.5rem;border:1px solid var(--color-border);border-radius:var(--radius-sm);background:var(--color-surface);color:var(--color-text-primary);font-size:var(--text-sm)}.camera-controls__select option{color:var(--color-text-primary);background:var(--color-surface)}.camera-controls__scan-controls{margin-bottom:1rem}.camera-controls__start-button,.camera-controls__stop-button{padding:.75rem 1.5rem;border:none;border-radius:var(--radius-md);font-size:var(--text-base);font-weight:600;cursor:pointer;transition:background var(--transition-fast),transform var(--transition-fast);min-height:44px}.camera-controls__start-button:active,.camera-controls__stop-button:active{transform:scale(.97)}.camera-controls__start-button{background:var(--color-primary);color:#fff}.camera-controls__start-button:hover:not(:disabled){background:var(--color-primary-dim)}.camera-controls__start-button:disabled{background:var(--color-text-secondary);cursor:not-allowed;opacity:.5}.camera-controls__stop-button{background:var(--color-danger);color:#fff}.camera-controls__stop-button:hover{background:#b91c1c}.camera-controls__error{padding:1rem;background:#dc262614;border:1px solid rgba(220,38,38,.2);border-radius:var(--radius-md);color:var(--color-danger);margin-bottom:1rem}.camera-controls__error-message{margin-bottom:.5rem;font-weight:500}.camera-controls__retry-button{padding:.5rem 1rem;background:var(--color-danger);color:#fff;border:none;border-radius:var(--radius-sm);cursor:pointer;font-size:var(--text-sm);transition:background var(--transition-fast)}.camera-controls__retry-button:hover{background:#b91c1c}.camera-controls__loading{display:flex;flex-direction:column;align-items:center;gap:1rem;padding:2rem;color:var(--color-text-secondary)}.camera-controls__loading-spinner{width:36px;height:36px;border:3px solid var(--color-border);border-top:3px solid var(--color-primary);border-radius:50%;animation:spin .7s linear infinite}.camera-controls__loading-text{font-size:var(--text-base);text-align:center}.camera-controls__permission-request{display:flex;flex-direction:column;align-items:center;padding:1rem;background:var(--color-surface-2);border-radius:var(--radius-md);border:1px solid var(--color-border);text-align:center}.camera-controls__permission-button{padding:.75rem 1.5rem;background:var(--color-primary);color:#fff;border:none;border-radius:var(--radius-lg);font-size:var(--text-base);font-weight:600;cursor:pointer;transition:background var(--transition-fast),transform var(--transition-fast);min-width:140px;min-height:44px}.camera-controls__permission-button:hover:not(:disabled){background:var(--color-primary-dim)}.camera-controls__permission-button:active{transform:scale(.97)}.camera-controls__permission-button:disabled{background:var(--color-text-secondary);cursor:not-allowed;opacity:.5}.camera-overlay{background:#000000b3;padding:1rem;border-radius:var(--radius-md);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border:1px solid rgba(255,255,255,.2)}.camera-overlay .camera-controls__label{color:#fff;margin-bottom:.5rem}.camera-overlay .camera-controls__select{background:#ffffffe6;border:1px solid rgba(255,255,255,.3);color:var(--color-text-primary)}.camera-overlay .camera-controls__start-button{background:var(--color-primary);color:#fff;border:1px solid rgba(255,255,255,.3)}.camera-overlay .camera-controls__start-button:hover:not(:disabled){background:var(--color-primary-dim)}.stock-overlay{background:#000c;color:#fff;border-radius:var(--radius-md);flex:1 1 auto;min-height:0;display:flex;flex-direction:column;justify-content:space-between;padding:var(--space-3)}.stock-overlay__header{display:flex;justify-content:space-between;align-items:center;margin-bottom:var(--space-4)}.stock-overlay__header h3{margin:0;font-size:var(--text-xs);font-weight:600;letter-spacing:.06em;text-transform:uppercase;color:#fff9}.stock-overlay__hide-button{background:transparent;color:#fff9;border:1px solid rgba(255,255,255,.3);padding:4px 10px;border-radius:var(--radius-xl);font-size:var(--text-xs);cursor:pointer;transition:background var(--transition-fast),border-color var(--transition-fast)}.stock-overlay__hide-button:hover{background:#ffffff1a;border-color:#ffffff80}.stock-overlay__content{display:grid;grid-template-columns:repeat(var(--stock-columns, 3),1fr);gap:.75rem}.stock-overlay__item{background:#ffffff1a;padding:var(--space-3);border-radius:var(--radius-md);border-left:3px solid #4CAF50;min-height:56px;display:flex;flex-direction:column;justify-content:center;box-shadow:var(--shadow-sm)}.stock-overlay__item-name{font-weight:500;margin-bottom:4px;font-size:var(--text-sm)}.stock-overlay__item-details{display:flex;justify-content:space-between;font-size:var(--text-xs);opacity:.8}.stock-overlay__item-amount{color:#4caf50;font-weight:500}.stock-overlay__loading,.stock-overlay__error,.stock-overlay__empty{display:flex;flex-direction:column;justify-content:center;align-items:center;height:100%;font-size:1.1rem;opacity:.8;text-align:center}.stock-overlay__error{color:#f44336}.stock-overlay__error-message{margin-bottom:15px}.stock-overlay__retry-button{background:#fff3;color:#fff;border:1px solid rgba(255,255,255,.3);padding:8px 16px;border-radius:var(--radius-xl);cursor:pointer;font-size:var(--text-sm);transition:all var(--transition-fast)}.stock-overlay__retry-button:hover{background:#ffffff4d}.stock-overlay__empty-message{font-size:1.2rem;margin-bottom:8px}.stock-overlay__empty-submessage{font-size:var(--text-sm);opacity:.7}.stock-overlay__footer{display:flex;justify-content:end}.stock-overlay__button-group{display:flex;align-items:center;justify-content:center;gap:.5rem}.stock-overlay__clear-failed-button{transition:background var(--transition-fast),opacity var(--transition-fast)}.stock-overlay__clear-failed-button:hover{background:#c82333!important}.stock-overlay__debug-clear-button{transition:background var(--transition-fast),opacity var(--transition-fast)}.stock-overlay__debug-clear-button:hover{background:#5a6268!important;opacity:1!important}.stock-overlay__queue-status{margin-top:.5rem;text-align:center;font-size:var(--text-xs);color:#ffffff80;font-style:italic}@media (max-width: 768px){.stock-overlay{padding:var(--space-3)}.stock-overlay__item{padding:10px}}.product-image{border-radius:8px;overflow:hidden;background:#ffffff1a;display:flex;align-items:center;justify-content:center;flex-shrink:0}.product-image__img{width:100%;height:100%;object-fit:cover;border-radius:8px}.product-image__placeholder{font-size:2rem;color:#fff9}.product-image__loading{animation:spin 1s linear infinite}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.product-image--small{width:40px;height:40px}.product-image--small .product-image__placeholder{font-size:1rem}.product-image--medium{width:80px;height:80px}.product-image--medium .product-image__placeholder{font-size:2rem}.product-image--large{width:120px;height:120px}.product-image--large .product-image__placeholder{font-size:3rem}@media (max-width: 480px){.product-image--medium{width:60px;height:60px}.product-image--medium .product-image__placeholder{font-size:1.5rem}.product-image--large{width:80px;height:80px}.product-image--large .product-image__placeholder{font-size:2rem}}.scanned-item-display{background:radial-gradient(circle at top left,rgba(255,255,255,.16),transparent 42%),linear-gradient(145deg,#0e1218f5,#18202aeb);border-radius:var(--radius-lg);padding:1.25rem;color:#fff;-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);border:1px solid rgba(255,255,255,.14);box-shadow:0 22px 48px #00000047;max-width:400px;margin:0 auto}.scanned-item-display--no-stock{background:radial-gradient(circle at top left,rgba(251,191,36,.18),transparent 42%),linear-gradient(145deg,#2b1c09f5,#472b0deb);border-color:#fbbf2447}.scanned-item-display__content{display:flex;flex-direction:column;gap:1rem}.scanned-item-display__status-row{display:flex}.scanned-item-display__status-badge{display:inline-flex;align-items:center;min-height:2rem;padding:.35rem .75rem;border-radius:999px;font-size:.76rem;font-weight:700;letter-spacing:.04em;text-transform:uppercase}.scanned-item-display__status-badge--success{background:#22c55e2e;color:#bbf7d0;border:1px solid rgba(134,239,172,.24)}.scanned-item-display__status-badge--warning{background:#fbbf242e;color:#fde68a;border:1px solid rgba(253,224,71,.28)}.scanned-item-display__header{display:flex;align-items:flex-start;gap:1rem}.scanned-item-display__product-info{flex:1;min-width:0}.scanned-item-display__product-name{margin:0 0 .5rem;font-size:var(--text-lg);font-weight:600;color:#fff;line-height:1.3}.scanned-item-display__message{margin:0 0 .75rem;font-size:var(--text-sm);line-height:1.45;color:#ffffffd1}.scanned-item-display__details{display:flex;flex-direction:column;gap:.5rem}.scanned-item-display__location,.scanned-item-display__stock{font-size:var(--text-sm);color:#ffffffd1;display:flex;align-items:center;gap:.5rem;min-height:2.5rem;padding:.65rem .85rem;border-radius:var(--radius-md);background:#ffffff14;border:1px solid rgba(255,255,255,.1)}.scanned-item-display__detail-icon{flex-shrink:0}.scanned-item-display__stock--empty{color:#fde68a;background:#fbbf241f;border-color:#fbbf2433}.scanned-item-display__actions{display:flex;gap:.75rem}.scanned-item-display__clear-button,.scanned-item-display__consume-button{flex:1;padding:.75rem 1rem;border-radius:var(--radius-lg);font-size:var(--text-base);font-weight:600;cursor:pointer;transition:background var(--transition-fast),transform var(--transition-fast),border-color var(--transition-fast);min-height:48px;border:1px solid transparent}.scanned-item-display__clear-button{background:#ffffff1f;color:#fff;border:1px solid rgba(255,255,255,.3)}.scanned-item-display__clear-button:hover{background:#ffffff40}.scanned-item-display__consume-button{background:linear-gradient(135deg,#22c55e,#15803d);color:#fff;white-space:nowrap;box-shadow:inset 0 1px #ffffff2e}.scanned-item-display__consume-button:disabled{background:#ffffff1f;color:#ffffff80;border-color:#ffffff1f;cursor:not-allowed;box-shadow:none}.scanned-item-display__consume-button:hover:not(:disabled){background:#15803d}.scanned-item-display__consume-button:active:not(:disabled){transform:scale(.97)}.scanned-item-display__barcode{font-size:var(--text-xs);color:#ffffff80;text-align:center;padding-top:.5rem;border-top:1px solid rgba(255,255,255,.1);font-family:monospace}@media (max-width: 480px){.scanned-item-display{padding:1rem;max-width:100%;margin:0 1rem}}.barcode-not-found{background:radial-gradient(circle at top left,rgba(248,113,113,.22),transparent 42%),linear-gradient(145deg,#400e11f5,#7f1d1deb);border-radius:var(--radius-lg);padding:1.5rem;color:#fff;-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);border:1px solid rgba(255,255,255,.18);box-shadow:0 22px 48px #0000004d;width:min(26rem,calc(100vw - 2rem));max-width:400px;margin:0;text-align:center;box-sizing:border-box}.barcode-not-found__content{display:flex;flex-direction:column;align-items:center;gap:1rem;width:100%}.barcode-not-found__status-row{width:100%;display:flex}.barcode-not-found__status-badge{display:inline-flex;align-items:center;min-height:2rem;padding:.35rem .75rem;border-radius:999px;font-size:.76rem;font-weight:700;letter-spacing:.04em;text-transform:uppercase;background:#ffffff24;color:#fee2e2;border:1px solid rgba(255,255,255,.16)}.barcode-not-found__icon{display:flex;align-items:center;justify-content:center;width:52px;height:52px;background:#ffffff1f;border-radius:50%;border:1px solid rgba(255,255,255,.14);box-shadow:inset 0 1px #ffffff14}.barcode-not-found__message{margin:0;font-size:var(--text-sm);color:#ffffffe0;line-height:1.5}.barcode-not-found__barcode{font-size:var(--text-xs);color:#ffffffc2;font-family:monospace;background:#ffffff1a;padding:.7rem 1rem;border-radius:var(--radius-md);word-break:break-all;border:1px solid rgba(255,255,255,.12)}.barcode-not-found__clear-button{padding:.75rem 1.5rem;background:#ffffff1f;color:#fff;border:1px solid rgba(255,255,255,.3);border-radius:var(--radius-lg);font-size:var(--text-base);font-weight:500;cursor:pointer;transition:background var(--transition-fast),transform var(--transition-fast),border-color var(--transition-fast);min-height:44px;width:100%}.barcode-not-found__clear-button:hover{background:#fff3}.barcode-not-found__clear-button:active{transform:scale(.97)}@media (max-width: 480px){.barcode-not-found{padding:1rem;width:min(100%,calc(100vw - 2rem));max-width:none;margin:0}}.undo-button{color:#fff;font-weight:600;font-size:var(--text-base);border:none;border-radius:var(--radius-lg);padding:.75rem 1.5rem;box-shadow:var(--shadow-md);transition:background var(--transition-fast),opacity var(--transition-fast),transform var(--transition-fast)}.undo-button--enabled{background:var(--color-success);cursor:pointer;opacity:1}.undo-button--enabled:hover{background:#15803d}.undo-button--enabled:active{transform:scale(.97)}.undo-button--disabled{background:#ffffff40;border:1px solid rgba(255,255,255,.3);cursor:not-allowed;opacity:.5}.camera-feed__overlays{position:absolute;top:0;left:0;right:0;bottom:0;pointer-events:none;z-index:20;display:flex;flex-direction:column;align-items:stretch;gap:8px}.camera-feed__overlays>*{pointer-events:auto;position:static}.camera-feed__scanned-item{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);z-index:25;max-width:90%}.camera-feed__barcode-not-found{position:absolute;top:50%;left:0;right:0;margin:0 auto;transform:translateY(-50%);z-index:25;width:min(26rem,calc(100vw - 2rem));max-width:calc(100vw - 2rem)}.camera-feed__undo-footer{display:flex;justify-content:flex-end}.camera-feed__barcode-row{display:flex;align-items:center;justify-content:center;color:#fff;font-size:1.1rem;font-weight:500;background:#000000b3;padding:12px 20px;border-radius:var(--radius-md);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);z-index:10;pointer-events:none;margin-left:20px;margin-right:20px;margin-bottom:8px;align-self:stretch}.camera-feed__bottom-controls{pointer-events:auto;margin:auto 12px 12px;align-self:stretch;display:flex;justify-content:space-between;align-items:flex-end;gap:12px}.camera-feed__bottom-left,.camera-feed__bottom-center,.camera-feed__bottom-right{display:flex;gap:12px}.camera-feed__pick-product-button{background:var(--color-primary);color:#fff;border:none;padding:12px 20px;border-radius:var(--radius-lg);cursor:pointer;font-size:var(--text-base);font-weight:600;transition:background var(--transition-fast),transform var(--transition-fast);box-shadow:var(--shadow-md)}.camera-feed__pick-product-button:hover{background:var(--color-primary-dim)}.camera-feed__pick-product-button:active{transform:scale(.97)}.camera-feed__overlays:before,.camera-feed__overlays:after{content:"";position:absolute;pointer-events:none;z-index:1}.camera-feed__overlays:before{top:50%;left:50%;transform:translate(-50%,-50%);width:200px;height:140px;border:2px solid transparent;border-radius:4px;background:linear-gradient(#fff,#fff) top left / 18px 3px no-repeat,linear-gradient(#fff,#fff) top left / 3px 18px no-repeat,linear-gradient(#fff,#fff) top right / 18px 3px no-repeat,linear-gradient(#fff,#fff) top right / 3px 18px no-repeat,linear-gradient(#fff,#fff) bottom left / 18px 3px no-repeat,linear-gradient(#fff,#fff) bottom left / 3px 18px no-repeat,linear-gradient(#fff,#fff) bottom right / 18px 3px no-repeat,linear-gradient(#fff,#fff) bottom right / 3px 18px no-repeat;opacity:.75}.camera-feed__permission-request{display:contents}.camera-overlay .camera-controls__permission-button{background:var(--color-primary);border:1px solid rgba(255,255,255,.3)}.camera-overlay .camera-controls__permission-button:hover:not(:disabled){background:var(--color-primary-dim)}.camera-feed__device-selector{display:contents}.product-picker{display:block;flex:1 1 auto;max-width:100%}.product-picker__field{flex:1 1 auto}.product-picker__label{color:var(--color-text-primary);font-weight:500;font-size:var(--text-sm)}.product-picker__input,.product-picker__select{width:100%;padding:.5rem;border:1px solid var(--color-border);border-radius:var(--radius-sm);font-size:var(--text-base);background:var(--color-surface);color:var(--color-text-primary);transition:border-color var(--transition-fast);box-sizing:border-box}.product-picker__input:focus,.product-picker__select:focus{outline:2px solid var(--color-primary);outline-offset:2px;border-color:var(--color-primary)}.product-picker__list{max-height:300px;overflow-y:auto;border:1px solid var(--color-border);border-radius:var(--radius-md);margin-top:6px;box-shadow:var(--shadow-sm)}.product-picker__item{padding:7px 10px;cursor:pointer;border-bottom:1px solid var(--color-border);transition:background var(--transition-fast)}.product-picker__item:last-child{border-bottom:none}.product-picker__item:hover{background-color:var(--color-surface-2)}.product-picker__item--new{background-color:#2563eb0d;color:var(--color-primary);font-weight:500}.product-picker__item--new:hover{background-color:#2563eb1a}.product-picker__name{font-weight:500;color:var(--color-text-primary);display:flex;align-items:center;gap:6px;font-size:var(--text-sm)}.product-picker__description{font-size:var(--text-xs);color:var(--color-text-secondary);margin-top:2px}.product-picker__stock{font-size:var(--text-xs);color:var(--color-success);font-weight:500}.product-picker__badge{font-size:.65rem;padding:1px 5px;border-radius:var(--radius-sm);font-weight:600}.product-picker__badge--parent{background-color:#2563eb1a;color:var(--color-primary)}.product-picker__badge--has-children{background-color:#7c3aed1a;color:#7c3aed}.manual-product-picker{position:fixed;top:0;left:0;right:0;bottom:0;background:#000000bf;display:flex;align-items:center;justify-content:center;z-index:1000;padding:1rem}.manual-product-picker__content{background:var(--color-surface);border-radius:var(--radius-xl);max-width:500px;width:100%;max-height:80vh;overflow:hidden;box-shadow:var(--shadow-lg);display:flex;flex-direction:column;position:relative;z-index:1001}.manual-product-picker__header{display:flex;justify-content:space-between;align-items:center;padding:1rem 1.25rem;border-bottom:1px solid var(--color-border);flex-shrink:0;background:var(--color-surface)}.manual-product-picker__header h3{margin:0;font-size:var(--text-lg);font-weight:600;color:var(--color-text-primary)}.manual-product-picker__close-btn{background:none;border:none;font-size:1.5rem;cursor:pointer;color:var(--color-text-secondary);padding:.25rem;border-radius:var(--radius-sm);transition:background var(--transition-fast);line-height:1}.manual-product-picker__close-btn:hover{background:var(--color-surface-2);color:var(--color-text-primary)}.manual-product-picker__search-section{padding:1rem 1.25rem;border-bottom:1px solid var(--color-border);flex-shrink:0;background:var(--color-surface);position:relative}.manual-product-picker__product-section{padding:1rem 1.25rem;flex:1;overflow-y:auto}.manual-product-picker__selected-product{margin-bottom:1.25rem}.manual-product-picker__selected-product-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:.75rem}.manual-product-picker__selected-product-header h4{margin:0;font-size:var(--text-base);font-weight:600;color:var(--color-text-primary)}.manual-product-picker__clear-product-btn{background:none;border:none;font-size:1.25rem;cursor:pointer;color:var(--color-text-secondary);padding:.25rem;border-radius:var(--radius-sm);transition:background var(--transition-fast);line-height:1}.manual-product-picker__clear-product-btn:hover{background:var(--color-surface-2);color:var(--color-text-primary)}.manual-product-picker__product-info{display:flex;flex-direction:column;gap:.25rem}.manual-product-picker__product-row{display:flex;align-items:flex-start;gap:1rem}.manual-product-picker__product-image{flex-shrink:0}.manual-product-picker__product-details{display:flex;flex-direction:column;gap:.25rem;flex:1}.manual-product-picker__product-name{font-weight:500;color:var(--color-text-primary)}.manual-product-picker__product-description{font-size:var(--text-sm);color:var(--color-text-secondary)}.manual-product-picker__stock-info{margin-top:.25rem}.manual-product-picker__stock-amount{font-size:var(--text-sm);color:var(--color-success);font-weight:500}.manual-product-picker__stock-empty{font-size:var(--text-sm);color:var(--color-danger);font-weight:500}.manual-product-picker__amount-section{margin-bottom:1.25rem}.manual-product-picker__amount-label{font-weight:500;color:var(--color-text-primary);margin-bottom:.5rem}.manual-product-picker__amount-row{display:flex;align-items:stretch;gap:.75rem}.manual-product-picker__amount-row .purchase-controls__amount-container{flex:1}.manual-product-picker__all-btn{background:var(--color-primary);color:#fff;border:none;padding:.5rem 1rem;border-radius:var(--radius-sm);font-size:var(--text-sm);font-weight:500;cursor:pointer;transition:background var(--transition-fast);flex-shrink:0;display:flex;align-items:center;justify-content:center}.manual-product-picker__all-btn:hover:not(:disabled){background:var(--color-primary-dim)}.manual-product-picker__all-btn:disabled{background:var(--color-text-secondary);cursor:not-allowed;opacity:.5}.manual-product-picker__actions{display:flex;gap:.75rem;justify-content:flex-end}.manual-product-picker__consume-btn{background:var(--color-danger);color:#fff;border:none;padding:.75rem 1.5rem;border-radius:var(--radius-md);font-weight:600;cursor:pointer;transition:background var(--transition-fast),transform var(--transition-fast);min-height:44px}.manual-product-picker__consume-btn:hover{background:#b91c1c}.manual-product-picker__consume-btn:active{transform:scale(.97)}.manual-product-picker__cancel-btn{background:transparent;color:var(--color-text-secondary);border:1px solid var(--color-border);padding:.75rem 1.5rem;border-radius:var(--radius-md);font-weight:500;cursor:pointer;transition:background var(--transition-fast);min-height:44px}.manual-product-picker__cancel-btn:hover{background:var(--color-surface-2)}@media (max-width: 600px){.manual-product-picker{padding:.5rem}.manual-product-picker__content{max-height:90vh}.manual-product-picker__header,.manual-product-picker__search-section,.manual-product-picker__product-section{padding:1rem}.manual-product-picker__actions{flex-direction:column}.manual-product-picker__consume-btn,.manual-product-picker__cancel-btn{width:100%}}.camera-feed{position:absolute;top:0;left:0;right:0;bottom:0;pointer-events:none}.camera-feed>*{pointer-events:auto}.camera-feed__loading{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);background:#000c;color:#fff;padding:1rem 2rem;border-radius:8px;font-size:1rem;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);z-index:10}.camera-feed__error{color:#ff6b6b;margin:8px 0;font-weight:700;background:#dc3545e6;border:1px solid rgba(220,53,69,.3);padding:8px 16px;border-radius:4px;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}.camera-feed__error .camera-controls__error-message{margin-bottom:.5rem}.camera-feed__error .camera-controls__retry-button{background:#fff3;border:1px solid rgba(255,255,255,.3);color:#fff;padding:.5rem 1rem;border-radius:4px;cursor:pointer}.camera-feed__error .camera-controls__retry-button:hover{background:#ffffff4d}.camera-feed__scanning-disabled{position:absolute;top:0;left:0;right:0;bottom:0;background:#0000004d;display:flex;align-items:center;justify-content:center;z-index:5;pointer-events:none}.camera-feed__scanning-disabled-content{background:#000c;color:#fff;padding:.75rem 1.5rem;border-radius:1rem;font-size:.9rem;font-weight:500;border:1px solid rgba(255,255,255,.2);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}.purchase-controls{position:absolute;bottom:0;left:0;right:0;background:var(--color-surface);border-top:1px solid var(--color-border);border-radius:var(--radius-xl) var(--radius-xl) 0 0;padding:.75rem;max-height:99vh;overflow-y:auto;z-index:1000;box-shadow:var(--shadow-lg);color:var(--color-text-primary)}.purchase-controls__header{display:flex;justify-content:space-between;align-items:center;margin-bottom:.5rem;padding-bottom:.5rem;border-bottom:1px solid #e9ecef}.purchase-controls__product-info{display:flex;flex-direction:column;align-items:flex-start;gap:.125rem;flex:1}.purchase-controls__current-stock{font-size:.875rem;color:#6c757d;font-weight:500;margin-top:.125rem}.purchase-controls__product-image{flex-shrink:0}.purchase-controls__product-image--placeholder{width:150px;height:75px;display:flex;align-items:center;justify-content:center;background:#f8f9fa;border:1px solid #dee2e6;border-radius:.375rem;font-size:2.5rem;color:#6c757d}.external-product-image{width:150px;height:75px;border-radius:.375rem;overflow:hidden;position:relative;display:flex;align-items:center;justify-content:center;background:#f8f9fa;border:1px solid #dee2e6}.external-product-image__img{width:100%;height:100%;object-fit:cover}.external-product-image__img--loading{opacity:0}.external-product-image__placeholder{position:absolute;top:0;left:0;width:100%;height:100%;display:flex;align-items:center;justify-content:center;background:#f8f9fa;font-size:1.25rem;color:#6c757d}.external-product-image__loading{animation:pulse 1.5s ease-in-out infinite}@keyframes pulse{0%,to{opacity:1}50%{opacity:.5}}.purchase-controls__header h3{margin:0;font-size:1rem;font-weight:600;color:#212529}.purchase-controls__close{background:transparent;border:none;font-size:1.25rem;color:#6c757d;cursor:pointer;padding:.25rem;line-height:1}.purchase-controls__close:hover{color:#495057}.purchase-controls__form{display:flex;flex-direction:column;gap:.5rem;width:100%;box-sizing:border-box}.purchase-controls__field{display:flex;flex-direction:column;align-items:stretch;gap:.5rem;width:100%;box-sizing:border-box}.purchase-controls__field label{font-weight:500;color:#495057;font-size:.8rem;min-width:80px;flex-shrink:0}.purchase-controls__field--vertical{flex-direction:column;align-items:flex-start;gap:.25rem}.purchase-controls__field--vertical label{min-width:auto;font-size:.8rem}.purchase-controls__field--vertical>*:not(label){width:100%}.purchase-controls__amount-row{display:flex;align-items:center;gap:.75rem;min-width:0}.purchase-controls__amount-section{display:flex;flex-direction:column;gap:.25rem;flex:1;min-width:0;overflow:hidden}.purchase-controls__amount-unit{font-size:.8125rem;color:#6c757d;font-weight:500}.purchase-controls__amount-label{font-weight:500;color:#495057;font-size:.875rem;flex-shrink:0}.purchase-controls__amount-container{display:flex;align-items:center;border:1px solid var(--color-border);border-radius:var(--radius-sm);overflow:hidden;background:var(--color-surface);flex:1;min-width:0}.purchase-controls__amount-buttons{display:flex;flex-direction:column;border-left:1px solid #ced4da}.purchase-controls__amount-btn{background:var(--color-surface-2);border:none;padding:.25rem;font-size:1rem;font-weight:600;color:var(--color-primary);cursor:pointer;transition:background var(--transition-fast);min-width:2.5rem;display:flex;align-items:center;justify-content:center;border-radius:0}.purchase-controls__amount-btn:first-child{border-bottom:1px solid #ced4da}.purchase-controls__amount-btn:hover:not(:disabled){background:#e9ecef;color:#212529}.purchase-controls__amount-btn:active:not(:disabled){background:#dee2e6}.purchase-controls__amount-btn:disabled{background:#f8f9fa;color:#adb5bd;cursor:not-allowed}.purchase-controls__amount-input{flex:1;border:none;padding:.5rem;text-align:center;font-size:1rem;background:#fff;color:#212529;min-width:0}.purchase-controls__amount-input:focus{outline:none;background:#f8f9fa}.purchase-controls__amount-input::-webkit-outer-spin-button,.purchase-controls__amount-input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}.purchase-controls__amount-input[type=number]{-webkit-appearance:textfield;appearance:textfield;-moz-appearance:textfield}.purchase-controls__location-select,.purchase-controls__product-group-select,.purchase-controls__parent-product-select{padding:.5rem;border:1px solid #ced4da;border-radius:.375rem;font-size:1rem;background:#fff;color:#212529;flex:1;min-width:0;width:100%}.purchase-controls__text-input{padding:.5rem;border:1px solid #ced4da;border-radius:.375rem;font-size:1rem;background:#fff;color:#212529;flex:1;min-width:0}.purchase-controls__location-select:focus,.purchase-controls__product-group-select:focus,.purchase-controls__parent-product-select:focus{outline:2px solid var(--color-primary);outline-offset:2px;border-color:var(--color-primary)}.purchase-controls__location-select option,.purchase-controls__product-group-select option,.purchase-controls__parent-product-select option{color:#212529;background:#fff}.purchase-controls__purchase-button{background:#28a745;color:#fff;border:none;padding:.75rem 1.5rem;border-radius:.5rem;font-size:1rem;font-weight:500;cursor:pointer;transition:background-color .2s ease;margin-top:.5rem}.purchase-controls__purchase-button:hover:not(:disabled){background:#218838}.purchase-controls__purchase-button:disabled{background:#6c757d;cursor:not-allowed;color:#fff}.purchase-controls__parent-product-picker{position:relative;display:flex;align-items:center;gap:8px;flex:1}.purchase-controls__clear-parent{background:#ef4444;color:#fff;border:none;border-radius:50%;width:28px;height:28px;padding:0;aspect-ratio:1 / 1;display:flex;align-items:center;justify-content:center;cursor:pointer;font-size:18px;line-height:1;flex-shrink:0}.purchase-controls__clear-parent:hover{background:#dc2626}.purchase-controls__selected-parent{background:#f3f4f6;border:1px solid #d1d5db;border-radius:.375rem;padding:.5rem;font-size:.875rem;color:#374151;flex:1}.purchase-controls__toggle{display:flex;gap:12px;flex-wrap:wrap}.purchase-controls__parent-group{display:flex;flex-direction:column;gap:8px;width:100%;max-width:100%;box-sizing:border-box;padding:8px;border:1px solid #e5e7eb;border-radius:8px;background:#fafafa}.purchase-controls__toggle-option{display:flex;align-items:center;gap:6px;padding:6px 10px;border:1px solid #d1d5db;border-radius:8px;background:#fff;cursor:pointer;user-select:none;-webkit-user-select:none;-ms-user-select:none;-webkit-tap-highlight-color:transparent;line-height:1.2}.purchase-controls__toggle-option input[type=radio]{pointer-events:none}.purchase-controls__toggle-option:active{transform:translateY(.5px)}.purchase-controls__toggle-option.active{background:#eef2ff;border-color:#6366f1;color:#1f2937;box-shadow:inset 0 0 0 1px #6366f1}.purchase-controls__ai-loading{margin-top:.5rem;padding:.5rem;background:#e3f2fd;border:1px solid #bbdefb;border-radius:.375rem;font-size:.875rem;color:#1976d2;display:flex;align-items:center;gap:.5rem}.purchase-controls__ai-suggestion{margin-top:.5rem;padding:.5rem;background:#fef3c7;border:1px solid #fcd34d;border-radius:.375rem;font-size:.875rem;color:#92400e;display:flex;align-items:flex-start;justify-content:space-between;gap:.5rem}.purchase-controls__ai-suggestion-copy{display:flex;flex-direction:column;gap:.125rem}.purchase-controls__ai-suggestion-copy strong{font-size:.875rem}.purchase-controls__ai-suggestion-copy span{color:#78350f}.purchase-controls__ai-dismiss{border:1px solid #d97706;background:#fff7ed;color:#9a3412;border-radius:999px;padding:.25rem .625rem;font-size:.75rem;font-weight:600;cursor:pointer;flex-shrink:0}.purchase-controls__ai-dismiss:hover{background:#ffedd5}.purchase-controls__ai-error{margin-top:.5rem;padding:.5rem;background:#ffebee;border:1px solid #ffcdd2;border-radius:.375rem;font-size:.875rem;color:#c62828;display:flex;align-items:center;gap:.5rem}.purchase-controls__ai-suggest-btn{margin-top:.5rem;padding:.5rem 1rem;background:#f3e5f5;border:1px solid #e1bee7;border-radius:.375rem;font-size:.875rem;color:#7b1fa2;cursor:pointer;transition:all .2s ease}.purchase-controls__ai-suggest-btn:hover:not(:disabled){background:#e1bee7;border-color:#ba68c8}.purchase-controls__ai-suggest-btn:disabled{opacity:.6;cursor:not-allowed}.expiry-picker{background:#fff;border:1px solid #dee2e6;border-radius:.25rem;padding:.875rem;color:#212529;width:100%;box-sizing:border-box}.expiry-picker__selected{display:flex;justify-content:space-between;align-items:center;gap:.5rem;padding:.5rem;background:#f8f9fa;border-radius:.25rem;font-size:.875rem;color:#212529}.expiry-picker__selected-actions{display:flex;gap:.25rem;flex-shrink:0}.expiry-picker__ai-result,.expiry-picker__ai-error{margin-bottom:.75rem;padding:.625rem .75rem;border-radius:.375rem;font-size:.85rem}.expiry-picker__ai-result{background:#ecfdf5;border:1px solid #a7f3d0;color:#166534}.expiry-picker__ai-error{background:#fef2f2;border:1px solid #fecaca;color:#991b1b}.expiry-picker__clear{background:transparent;border:none;color:#6c757d;cursor:pointer;font-size:.875rem;padding:.25rem .5rem;border-radius:.25rem;transition:all .2s ease}.expiry-picker__clear:hover{color:#495057;background:#e9ecef}.expiry-picker__title{display:flex;justify-content:space-between;align-items:center;margin-bottom:.75rem;font-weight:600;font-size:.875rem;color:#212529}.expiry-picker__quick-days{display:flex;gap:.375rem;margin-bottom:.75rem;flex-wrap:wrap}.expiry-picker__years{display:grid;grid-template-columns:repeat(auto-fit,minmax(80px,1fr));gap:.5rem}.expiry-picker__months{display:grid;grid-template-columns:repeat(auto-fit,minmax(100px,1fr));gap:.5rem}.expiry-picker__days{display:grid;grid-template-columns:repeat(7,1fr);gap:.25rem}.expiry-picker__year,.expiry-picker__month,.expiry-picker__day,.expiry-picker__quick-day{padding:.45rem;border:1px solid #dee2e6;background:#fff;border-radius:.25rem;cursor:pointer;transition:all .2s ease;font-size:.875rem;text-align:center;color:#212529;height:2.5rem;display:flex;align-items:center;justify-content:center}.expiry-picker__year:hover,.expiry-picker__month:hover,.expiry-picker__day:hover,.expiry-picker__quick-day:hover{background:#e9ecef;border-color:#adb5bd;color:#212529}.expiry-picker__year:active,.expiry-picker__month:active,.expiry-picker__day:active,.expiry-picker__quick-day:active{background:#007bff;color:#fff}.expiry-picker__back,.expiry-picker__clear{background:transparent;border:none;color:#6c757d;cursor:pointer;font-size:.875rem;padding:.25rem .5rem}.expiry-picker__back:hover,.expiry-picker__clear:hover{color:#495057}.expiry-picker__never-overdue{font-size:1.75rem;line-height:1;display:flex;align-items:center;justify-content:center;height:2.5rem;overflow:hidden}.expiry-picker__camera-btn{width:2.5rem;padding:0;flex:0 0 auto;background:#eff6ff;border-color:#bfdbfe;color:#1d4ed8}.expiry-picker__camera-btn:hover:not(:disabled){background:#dbeafe;border-color:#93c5fd;color:#1e40af}.expiry-picker__camera-btn:disabled{opacity:.8;cursor:wait}.expiry-picker__camera-icon{width:1.2rem;height:1.2rem}.expiry-picker__camera-loading{font-size:.9rem;font-weight:700;letter-spacing:.05em}@media (max-width: 520px){.expiry-picker__selected{flex-direction:column;align-items:flex-start}.expiry-picker__selected-actions{width:100%;justify-content:flex-end}.expiry-picker{padding:.75rem}.expiry-picker__quick-days{gap:.25rem;margin-bottom:.625rem}}.barcode-not-found{background:#dc2626eb;border-radius:var(--radius-lg);padding:1.5rem;color:#fff;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border:1px solid rgba(255,255,255,.2);max-width:350px;margin:0 auto;text-align:center}.barcode-not-found__content{display:flex;flex-direction:column;align-items:center;gap:1rem}.barcode-not-found__icon{display:flex;align-items:center;justify-content:center;width:52px;height:52px;background:#ffffff26;border-radius:50%}.barcode-not-found__title{margin:0;font-size:var(--text-lg);font-weight:600;color:#fff}.barcode-not-found__message{margin:0;font-size:var(--text-sm);color:#ffffffe6;line-height:1.4}.barcode-not-found__barcode{font-size:var(--text-xs);color:#ffffffb3;font-family:monospace;background:#0003;padding:.5rem 1rem;border-radius:var(--radius-sm);word-break:break-all}.barcode-not-found__actions{display:flex;gap:.75rem;width:100%}.barcode-not-found__clear-button,.barcode-not-found__manual-button{flex:1;padding:.75rem 1rem;border-radius:var(--radius-lg);font-size:var(--text-base);font-weight:600;cursor:pointer;transition:background var(--transition-fast),transform var(--transition-fast);min-height:44px;border:1px solid rgba(255,255,255,.3)}.barcode-not-found__clear-button{background:#ffffff2e;color:#fff}.barcode-not-found__clear-button:hover{background:#ffffff47}.barcode-not-found__manual-button{background:#ffffffeb;color:var(--color-danger);font-weight:700}.barcode-not-found__manual-button:hover{background:#fff}.barcode-not-found__clear-button:active,.barcode-not-found__manual-button:active{transform:scale(.97)}@media (max-width: 480px){.barcode-not-found{padding:1rem;max-width:100%;margin:0 1rem}.barcode-not-found__actions{flex-direction:column;gap:.5rem}}.expiry-capture-overlay{position:absolute;top:0;right:0;bottom:0;left:0;z-index:2000;display:flex;flex-direction:column;justify-content:space-between;pointer-events:auto}.expiry-capture-overlay__frame{position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none;display:flex;align-items:center;justify-content:center}.expiry-capture-overlay__mask{position:absolute;top:0;right:0;bottom:0;left:0;border-radius:18px;box-shadow:0 0 0 9999px #20202094}.expiry-capture-overlay__window{position:relative;--expiry-capture-max-width: 80vw;--expiry-capture-max-height: 80vh;width:min(var(--expiry-capture-max-width),calc(var(--expiry-capture-max-height) * 16 / 9));max-width:var(--expiry-capture-max-width);max-height:var(--expiry-capture-max-height);aspect-ratio:16 / 9;border:2px solid rgba(255,255,255,.92);border-radius:18px;overflow:visible}.expiry-capture-overlay__preview{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;object-fit:cover;border-radius:16px}.expiry-capture-overlay__corner{position:absolute;width:28px;height:28px;border-color:#93c5fd;border-style:solid;border-width:0}.expiry-capture-overlay__corner--tl{top:12px;left:12px;border-top-width:4px;border-left-width:4px;border-top-left-radius:12px}.expiry-capture-overlay__corner--tr{top:12px;right:12px;border-top-width:4px;border-right-width:4px;border-top-right-radius:12px}.expiry-capture-overlay__corner--bl{bottom:12px;left:12px;border-bottom-width:4px;border-left-width:4px;border-bottom-left-radius:12px}.expiry-capture-overlay__corner--br{right:12px;bottom:12px;border-right-width:4px;border-bottom-width:4px;border-bottom-right-radius:12px}.expiry-capture-overlay__header{margin:16px auto 0;text-align:center;max-width:min(360px,calc(100% - 32px))}.expiry-capture-overlay__title{font-size:1rem;font-weight:700}.expiry-capture-overlay__subtitle{margin-top:.25rem;font-size:.85rem;color:#ffffffe0}.expiry-capture-overlay__actions{display:flex;justify-content:center;gap:12px;padding:0 16px 108px}.expiry-capture-overlay__button{min-width:120px;padding:.85rem 1rem;border-radius:999px;border:1px solid rgba(255,255,255,.28);font-size:1rem;font-weight:700;cursor:pointer}.expiry-capture-overlay__button--secondary{background:#0f172ac7;color:#fff}.expiry-capture-overlay__button--primary{background:#2563eb;color:#fff;border-color:#2563eb}.expiry-capture-overlay__button:disabled{opacity:.72;cursor:wait}@media (max-width: 640px){.expiry-capture-overlay__actions{padding-bottom:92px}.expiry-capture-overlay__button{min-width:104px}.expiry-capture-overlay__window{--expiry-capture-max-width: 80vw;--expiry-capture-max-height: 80vh}}.purchase-feed{position:absolute;top:0;left:0;right:0;bottom:0;pointer-events:none;display:flex;flex-direction:column}.purchase-feed>*{pointer-events:auto}.purchase-feed__barcode{position:absolute;bottom:4rem;left:50%;transform:translate(-50%);background:#000c;color:#fff;padding:.5rem 1rem;border-radius:var(--radius-sm);font-family:Courier New,monospace;font-size:var(--text-sm);z-index:10}.purchase-feed__barcode-not-found{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);z-index:20}.purchase-feed--expiry-capture .purchase-controls,.purchase-feed--expiry-capture .purchase-feed__barcode-not-found,.purchase-feed--expiry-capture .purchase-feed__barcode{pointer-events:none;opacity:0;visibility:hidden}.purchase-feed__bottom-controls{pointer-events:auto;margin:auto 12px 12px;align-self:stretch;display:flex;flex-direction:column;align-items:center;gap:8px;z-index:10}.purchase-feed__bottom-controls--hidden,.purchase-feed--expiry-capture .purchase-feed__bottom-controls{visibility:hidden;pointer-events:none}.purchase-feed__scan-controls{background:#000000b3;padding:1rem;border-radius:var(--radius-md);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}.purchase-feed__scan-controls .camera-controls__start-button{background:var(--color-primary);color:#fff;border:1px solid rgba(255,255,255,.3);padding:8px 16px;border-radius:var(--radius-sm);cursor:pointer;font-size:var(--text-sm);transition:all var(--transition-fast)}.purchase-feed__scan-controls .camera-controls__start-button:hover:not(:disabled){background:var(--color-primary-dim)}.purchase-feed__scan-controls .camera-controls__start-button:disabled{background:#ffffff4d;color:#ffffffb3;cursor:not-allowed}.purchase-feed__scan-hint{color:#ffffffbf;font-size:var(--text-sm);text-align:center;pointer-events:none}.purchase-feed__manual-button{background:var(--color-primary);color:#fff;border:none;min-width:160px;height:44px;padding:0 var(--space-6);border-radius:var(--radius-xl);cursor:pointer;font-size:var(--text-base);font-weight:600;display:inline-flex;align-items:center;justify-content:center;box-shadow:var(--shadow-md);transition:background var(--transition-fast),transform var(--transition-fast)}.purchase-feed__manual-button:hover:not(:disabled){background:var(--color-primary-dim)}.purchase-feed__manual-button:active{transform:scale(.97)}.purchase-feed--expiry-capture .purchase-feed__manual-button{pointer-events:none}.grocery-list{max-width:600px;margin:0 auto;position:relative}.grocery-list__global-loading{position:fixed;top:1rem;right:1rem;z-index:1000}.grocery-list__loading-dot{width:8px;height:8px;background-color:var(--color-primary);border-radius:50%;animation:pulse 1.5s ease-in-out infinite}@keyframes pulse{0%,to{opacity:1;transform:scale(1)}50%{opacity:.5;transform:scale(1.2)}}.grocery-list__title{font-size:1.75rem;font-weight:600;color:#212529;margin-bottom:1.5rem;text-align:center}.grocery-list__content{background:#fff;padding:.125rem;box-shadow:0 2px 4px #0000001a}.grocery-list__toggle{display:flex;align-items:center;gap:.5rem;cursor:pointer;font-size:var(--text-sm);color:var(--color-text-primary)}.grocery-list__toggle input[type=checkbox]{width:16px;height:16px;cursor:pointer;accent-color:var(--color-primary)}.grocery-list__toggle-label{cursor:pointer}.grocery-list__placeholder{color:#6c757d;text-align:center;margin-bottom:1rem;font-size:1rem}.grocery-list__loading,.grocery-list__error,.grocery-list__empty{text-align:center;padding:2rem;color:#6c757d}.grocery-list__error{color:#dc3545}.grocery-list__retry-button,.grocery-list__refresh-button,.grocery-list__clear-button,.grocery-list__add-button{padding:0 1rem;border-radius:var(--radius-md);cursor:pointer;font-size:var(--text-sm);font-weight:500;transition:background var(--transition-fast),transform var(--transition-fast);white-space:nowrap;height:40px;display:inline-flex;align-items:center}.grocery-list__retry-button,.grocery-list__refresh-button{background:transparent;color:var(--color-primary);border:1.5px solid var(--color-primary)}.grocery-list__retry-button:hover,.grocery-list__refresh-button:hover{background:#2563eb12}.grocery-list__add-button{background:var(--color-primary);color:#fff;border:none;font-weight:600}.grocery-list__add-button:hover{background:var(--color-primary-dim)}.grocery-list__clear-button{background:transparent;color:var(--color-text-secondary);border:1.5px solid var(--color-border)}.grocery-list__clear-button:hover{background:var(--color-surface-2)}.grocery-list__clear-button:disabled{opacity:.4;cursor:not-allowed}.grocery-list__groups{display:flex;flex-direction:column;gap:.25rem}.grocery-list__group{background:#f8f9fa;border-radius:.5rem;border:1px solid #dee2e6;overflow:hidden}.grocery-list__group-title{background:var(--color-surface-2);margin:0;padding:.25rem .5rem;font-size:var(--text-xs);font-weight:600;color:var(--color-text-secondary);letter-spacing:.05em;text-transform:uppercase;border-bottom:1px solid var(--color-border)}.grocery-list__items{display:flex;flex-direction:column}.grocery-list__item{display:flex;align-items:center;justify-content:space-between;padding:.2rem .5rem;min-height:36px;background:#fff;border-bottom:1px solid var(--color-border);transition:background-color var(--transition-base)}.grocery-list__item:last-child{border-bottom:none}.grocery-list__item:hover{background:#f8f9fa}.grocery-list__item--done{opacity:.6;background:#f8f9fa}.grocery-list__item--done .grocery-list__item-name{text-decoration:line-through;color:#6c757d}.grocery-list__item--done .grocery-list__item-details{color:#adb5bd}.grocery-list__item--done .grocery-list__item-amount{background:#6c757d;color:#fff}.grocery-list__item--done .grocery-list__item-note{color:#adb5bd}.grocery-list__item-content{flex:1;display:flex;align-items:center;gap:.75rem}.grocery-list__item-name{font-weight:500;color:#212529;font-size:.875rem}.grocery-list__item-details{display:flex;align-items:center;gap:.5rem;font-size:.75rem;color:#6c757d}.grocery-list__item-amount{background:#2563eb1a;color:var(--color-primary);padding:2px 8px;border-radius:var(--radius-sm);font-weight:600;font-size:var(--text-xs);min-width:2rem;text-align:center;flex-shrink:0}.grocery-list__item-note{color:#6c757d;font-style:italic}.grocery-list__done-button{background:var(--color-success);color:#fff;border:none;width:1.75rem;height:1.75rem;border-radius:50%;cursor:pointer;font-size:.75rem;display:flex;align-items:center;justify-content:center;transition:background-color var(--transition-base),transform var(--transition-fast);margin-left:.5rem}.grocery-list__done-button:hover{background:#218838}.grocery-list__undo-button{background:#6c757d;color:#fff;border:none;width:1.75rem;height:1.75rem;border-radius:50%;cursor:pointer;font-size:.75rem;display:flex;align-items:center;justify-content:center;transition:background-color .2s ease;margin-left:.5rem}.grocery-list__undo-button:hover{background:#5a6268}.grocery-list__aisle-button-small{background:transparent;color:var(--color-text-secondary);border:1.5px solid var(--color-border);width:1.75rem;height:1.75rem;border-radius:50%;cursor:pointer;font-size:.625rem;font-weight:600;display:flex;align-items:center;justify-content:center;transition:background var(--transition-fast),border-color var(--transition-fast);margin-left:.25rem;flex-shrink:0}.grocery-list__aisle-button-small:hover{background:var(--color-surface-2);border-color:var(--color-text-secondary)}.grocery-list__aisle-picker-overlay{position:fixed;top:0;left:0;right:0;bottom:0;background:#00000080;display:flex;align-items:center;justify-content:center;z-index:1000}.grocery-list__aisle-picker{background:#fff;border-radius:.5rem;padding:1.5rem;max-width:90vw;width:300px;box-shadow:0 4px 6px #0000001a}.grocery-list__aisle-picker-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:1rem}.grocery-list__aisle-picker-header h4{margin:0;font-size:1rem;color:#212529}.grocery-list__aisle-picker-close{background:none;border:none;font-size:1.5rem;cursor:pointer;color:#6c757d;padding:0;width:2rem;height:2rem;display:flex;align-items:center;justify-content:center}.grocery-list__aisle-picker-close:hover{color:#212529}.grocery-list__aisle-picker-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:.5rem}.grocery-list__aisle-button{background:#f8f9fa;border:1px solid #dee2e6;color:#495057;padding:.75rem;border-radius:.25rem;cursor:pointer;font-size:1rem;font-weight:600;transition:all .2s ease}.grocery-list__aisle-button:hover{background:#e9ecef;border-color:#adb5bd}.grocery-list__aisle-button--selected{background:#007bff;color:#fff;border-color:#007bff}.grocery-list__aisle-button--selected:hover{background:#0056b3;border-color:#0056b3}.grocery-list__actions{margin-top:.75rem;display:flex;flex-direction:column;gap:.625rem;padding:.75rem 1rem;background:var(--color-surface-2);border-radius:var(--radius-md);border:1px solid var(--color-border)}.grocery-list__actions-row{display:flex;justify-content:space-between;align-items:center;gap:.75rem}.grocery-list__buttons-group{display:flex;gap:.5rem;flex-wrap:wrap}.grocery-list__floating-undo{position:fixed;z-index:1000;transform:translate(-50%,-50%);display:flex;align-items:center;gap:.5rem;background:var(--color-success);color:#fff;border-radius:var(--radius-lg);padding:.5rem;box-shadow:var(--shadow-md);animation:grocery-list__floating-undo-appear .25s cubic-bezier(.34,1.56,.64,1)}.grocery-list__floating-undo-button{background:none;border:none;color:#fff;font-size:var(--text-sm);font-weight:600;cursor:pointer;padding:.25rem .5rem;border-radius:var(--radius-sm);transition:background var(--transition-fast)}.grocery-list__floating-undo-button:hover{background:#fff3}.grocery-list__floating-undo-dismiss{background:none;border:none;color:#ffffffb3;font-size:1rem;cursor:pointer;padding:.25rem;border-radius:var(--radius-sm);transition:background var(--transition-fast);display:flex;align-items:center;justify-content:center;width:1.5rem;height:1.5rem}.grocery-list__floating-undo-dismiss:hover{background:#fff3;color:#fff}@keyframes grocery-list__floating-undo-appear{0%{opacity:0;transform:translate(-50%,-50%) scale(.75)}to{opacity:1;transform:translate(-50%,-50%) scale(1)}}@keyframes grocery-list__floating-undo-disappear{0%{opacity:1;transform:translate(-50%,-50%) scale(1)}to{opacity:0;transform:translate(-50%,-50%) scale(.75)}}.grocery-list__floating-undo--disappearing{animation:grocery-list__floating-undo-disappear .2s ease-in forwards}.add-item-modal-overlay{position:fixed;top:0;left:0;right:0;bottom:0;background-color:#00000080;display:flex;justify-content:center;align-items:center;z-index:1000;padding:20px}.add-item-modal{background:var(--color-surface);border-radius:var(--radius-xl);width:100%;max-width:500px;max-height:90vh;overflow:hidden;display:flex;flex-direction:column;box-shadow:0 10px 25px #0003}.add-item-modal__header{display:flex;justify-content:space-between;align-items:center;padding:16px 20px;border-bottom:1px solid #e5e7eb;background-color:#f9fafb}.add-item-modal__header h2{margin:0;font-size:1.25rem;font-weight:600;color:#111827}.add-item-modal__close{background:none;border:none;font-size:24px;cursor:pointer;color:#6b7280;width:32px;height:32px;display:flex;align-items:center;justify-content:center;border-radius:4px}.add-item-modal__close:hover{background-color:#f3f4f6;color:#374151}.add-item-modal__body{flex:1;overflow-y:auto;padding:16px}.add-item-modal__field{margin-bottom:12px}.add-item-modal__field label{display:block;margin-bottom:4px;font-weight:500;color:#374151;font-size:14px}.add-item-modal__search-input,.add-item-modal__input,.add-item-modal__select{width:100%;padding:.5rem;border:1px solid #ced4da;border-radius:.375rem;font-size:1rem;background:#fff;color:#212529;transition:border-color .2s,box-shadow .2s;box-sizing:border-box}.add-item-modal__search-input:focus,.add-item-modal__input:focus,.add-item-modal__select:focus{outline:2px solid var(--color-primary);outline-offset:2px;border-color:var(--color-primary)}.add-item-modal__select option{color:#212529;background:#fff}.add-item-modal__product-list{max-height:min(300px,calc(100vh - 400px));overflow-y:auto;border:1px solid #e5e7eb;border-radius:6px;margin-top:8px}@supports (height: 100dvh){.add-item-modal__product-list{max-height:min(300px,calc(100dvh - 400px))}}.add-item-modal--keyboard-open .add-item-modal__product-list{max-height:min(300px,calc(100vh - 250px))}@supports (height: 100dvh){.add-item-modal--keyboard-open .add-item-modal__product-list{max-height:min(300px,calc(100dvh - 250px))}}@supports (height: 100svh){.add-item-modal__product-list{max-height:min(300px,calc(100svh - 250px))}.add-item-modal--keyboard-open .add-item-modal__product-list{max-height:min(300px,calc(100svh - 200px))}}.add-item-modal__product-item{padding:6px 10px;cursor:pointer;border-bottom:1px solid #f3f4f6;transition:background-color .2s}.add-item-modal__product-item:last-child{border-bottom:none}.add-item-modal__product-item:hover{background-color:#f9fafb}.add-item-modal__product-item.selected{background-color:#eff6ff;border-color:#dbeafe}.add-item-modal__new-product-option{background-color:#f0f9ff;color:#0369a1;font-weight:500}.add-item-modal__new-product-option:hover{background-color:#e0f2fe}.add-item-modal__product-name{font-weight:500;color:#111827;display:flex;align-items:center;gap:6px;font-size:.85rem}.add-item-modal__product-description{font-size:.75rem;color:#6b7280;margin-top:2px}.add-item-modal__product-stock{font-size:.7rem;color:#059669;font-weight:500}.add-item-modal__no-stock-badge{background-color:#e0f2fe;color:#0369a1;font-size:.65rem;padding:1px 4px;border-radius:8px;font-weight:500}.add-item-modal__new-product-form{background-color:#f8fafc;padding:12px;border-radius:6px;margin-top:8px}.add-item-modal__new-product-form h3{margin:0 0 12px;font-size:1rem;color:#374151}.add-item-modal__checkbox-field{display:flex;align-items:center}.add-item-modal__checkbox-field label{display:flex;align-items:center;margin-bottom:0;cursor:pointer;font-weight:400}.add-item-modal__checkbox-field input[type=checkbox]{margin-right:8px;width:auto}.add-item-modal__amount-container{display:flex;align-items:center;border:1px solid #ced4da;border-radius:.375rem;overflow:hidden;background:#fff;flex:1;min-width:0}.add-item-modal__amount-input{flex:1;border:none;padding:.5rem;text-align:center;font-size:1rem;background:#fff;color:#212529;min-width:0}.add-item-modal__amount-input:focus{outline:none;background:#f8f9fa}.add-item-modal__amount-input::-webkit-outer-spin-button,.add-item-modal__amount-input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}.add-item-modal__amount-input[type=number]{-moz-appearance:textfield}.add-item-modal__amount-buttons{display:flex;flex-direction:column;border-left:1px solid #ced4da}.add-item-modal__amount-btn{background:var(--color-surface-2);border:none;padding:.25rem;font-size:1rem;font-weight:600;color:var(--color-primary);cursor:pointer;transition:all .2s ease;min-width:2.5rem;display:flex;align-items:center;justify-content:center;border-radius:0}.add-item-modal__amount-btn:first-child{border-bottom:1px solid #ced4da}.add-item-modal__amount-btn:hover:not(:disabled){background:#e9ecef;color:#212529}.add-item-modal__amount-btn:active:not(:disabled){background:#dee2e6}.add-item-modal__amount-btn:disabled{background:#f8f9fa;color:#adb5bd;cursor:not-allowed}.add-item-modal__footer{display:flex;justify-content:flex-end;gap:12px;padding:16px 20px;border-top:1px solid #e5e7eb;background-color:#f9fafb}.add-item-modal__cancel-btn,.add-item-modal__add-btn{padding:10px 20px;border-radius:6px;font-weight:500;cursor:pointer;transition:all .2s;font-size:14px}.add-item-modal__cancel-btn{background:#fff;border:1px solid #d1d5db;color:#374151}.add-item-modal__cancel-btn:hover{background-color:#f9fafb;border-color:#9ca3af}.add-item-modal__add-btn{background-color:var(--color-primary);border:1px solid var(--color-primary);color:#fff}.add-item-modal__add-btn:hover:not(:disabled){background-color:var(--color-primary-dim);border-color:var(--color-primary-dim)}.add-item-modal__add-btn:disabled{background-color:#9ca3af;border-color:#9ca3af;cursor:not-allowed}@media (max-width: 640px){.add-item-modal-overlay{padding:10px}.add-item-modal{max-width:none;width:100%;max-height:95vh}.add-item-modal__header,.add-item-modal__body,.add-item-modal__footer{padding-left:16px;padding-right:16px}.add-item-modal__amount-container{flex-direction:row}.add-item-modal__amount-buttons{flex-direction:column;border-left:1px solid #ced4da;border-top:none}.add-item-modal__amount-btn{width:40px;height:30px;min-width:40px}.add-item-modal__amount-btn:first-child{border-bottom:1px solid #ced4da;border-right:none}.add-item-modal__parent-product-picker{flex:1}}.add-item-modal__parent-product-picker{position:relative;display:flex;align-items:center;gap:8px;flex:1}.add-item-modal__clear-parent{background:#ef4444;color:#fff;border:none;border-radius:50%;width:28px;height:28px;padding:0;aspect-ratio:1 / 1;display:flex;align-items:center;justify-content:center;cursor:pointer;font-size:18px;line-height:1;flex-shrink:0}.add-item-modal__clear-parent:hover{background:#dc2626}.add-item-modal__selected-parent{background:#f3f4f6;border:1px solid #d1d5db;border-radius:.375rem;padding:.5rem;font-size:.875rem;color:#374151;flex:1}.recipe-list-item{border-bottom:1px solid var(--color-border);cursor:pointer;transition:background-color var(--transition-fast)}.recipe-list-item:hover{background-color:var(--color-surface-2)}.recipe-list-item:active{background-color:var(--color-border)}.recipe-list-item__content{display:flex;justify-content:space-between;align-items:center;padding:.3rem 1rem;min-height:36px}.recipe-list-item__name{font-size:var(--text-sm);font-weight:500;color:var(--color-text-primary);flex:1}.recipe-list-item__status{display:flex;align-items:center;gap:6px;font-size:var(--text-sm)}.recipe-list-item__dot{width:8px;height:8px;border-radius:50%;flex-shrink:0}.recipe-list-item__text{white-space:nowrap;font-weight:500}.recipe-list{background-color:#fff}.recipe-list__container{padding:0}.recipe-suggestions{background:#fff;padding:12px 16px;border-bottom:1px solid #e9ecef}.recipe-suggestions__header{margin:0}.recipe-suggestions__title{margin:0;font-size:var(--text-lg);font-weight:600;color:var(--color-text-primary)}.recipe-suggestions__button{-webkit-appearance:none;-moz-appearance:none;appearance:none;border:1px solid var(--color-primary);background:var(--color-primary);color:#fff;padding:8px 14px;border-radius:var(--radius-md);cursor:pointer;font-size:var(--text-sm);font-weight:500;transition:background var(--transition-fast)}.recipe-suggestions__button:hover:not([disabled]){background:var(--color-primary-dim);border-color:var(--color-primary-dim)}.recipe-suggestions__button[disabled]{opacity:.6;cursor:not-allowed}.recipe-suggestions__toggle{-webkit-appearance:none;-moz-appearance:none;appearance:none;border:1px solid var(--color-border);background:var(--color-surface-2);color:var(--color-text-secondary);width:32px;height:32px;padding:0;border-radius:var(--radius-sm);cursor:pointer;display:flex;align-items:center;justify-content:center;transition:background var(--transition-fast)}.recipe-suggestions__toggle:hover{background:var(--color-border)}.recipe-suggestions__items{margin-top:12px}.recipe-ingredient-item{border-bottom:1px solid var(--color-border);padding:.5rem 0;display:block;cursor:pointer;transition:background var(--transition-fast)}.recipe-ingredient-item:last-child{border-bottom:none}.recipe-ingredient-item:focus-within{outline:2px solid var(--color-primary);outline-offset:2px}.recipe-ingredient-item__content{display:flex;justify-content:space-between;align-items:flex-start;gap:1rem}.recipe-ingredient-item__selector{display:flex;align-items:center;padding-top:.125rem}.recipe-ingredient-item__selector input{width:1rem;height:1rem;margin:0;accent-color:var(--color-primary)}.recipe-ingredient-item__info{flex:1}.recipe-ingredient-item__name{font-weight:500;color:var(--color-text-primary);margin-bottom:.25rem}.recipe-ingredient-item__amount{font-size:var(--text-sm);color:var(--color-text-secondary)}.recipe-ingredient-item__variable{color:var(--color-text-secondary);font-style:italic;opacity:.75}.recipe-ingredient-item__stock{display:flex;align-items:center;gap:.5rem;font-size:var(--text-sm);white-space:nowrap}.recipe-ingredient-item__status{font-size:1rem}.recipe-ingredient-item__cart-icon{font-size:.9rem}.recipe-ingredient-item__cart-icon--partial{opacity:.85}.recipe-ingredient-item__stock-amount{color:var(--color-text-secondary)}.recipe-ingredient-item__coverage{margin-top:.4rem;margin-left:1.75rem;font-size:var(--text-xs);color:var(--color-warning)}.recipe-ingredient-item__consume-preview{margin-top:.4rem;margin-left:1.75rem;font-size:var(--text-xs);font-weight:600;color:var(--color-text-secondary)}.recipe-ingredient-item__note{margin-top:.5rem;font-size:var(--text-xs);color:var(--color-text-secondary);font-style:italic;padding-left:1rem;border-left:2px solid var(--color-border)}.recipe-ingredient-item--available{background-color:#16a34a0a}.recipe-ingredient-item--covered{background-color:#2563eb0a}.recipe-ingredient-item--partial{background-color:#d977060d}.recipe-ingredient-item--unavailable{background-color:#dc262608}.recipe-detail{display:flex;flex-direction:column;min-height:100%;background-color:var(--color-surface)}.recipe-detail__header{padding:var(--space-4);border-bottom:1px solid var(--color-border);background-color:var(--color-surface-2)}.recipe-detail__back-button{background:none;border:none;color:var(--color-primary);font-size:var(--text-sm);font-weight:500;cursor:pointer;padding:.5rem 0;margin-bottom:.5rem;display:flex;align-items:center;gap:4px;transition:opacity var(--transition-fast)}.recipe-detail__back-button:hover{opacity:.75}.recipe-detail__title{margin:0 0 .5rem;font-size:var(--text-xl);font-weight:700;color:var(--color-text-primary)}.recipe-detail__servings{font-size:var(--text-sm);color:var(--color-text-secondary)}.recipe-detail__main{flex:1;padding:var(--space-4)}.recipe-detail__section-title{margin:0 0 .75rem;font-size:var(--text-xs);font-weight:600;text-transform:uppercase;letter-spacing:.05em;color:var(--color-text-secondary)}.recipe-detail__ingredients-list{margin-bottom:2rem}.recipe-detail__actions{border-top:1px solid var(--color-border);padding-top:1rem}.recipe-detail__action-buttons{display:flex;flex-direction:column;gap:.75rem}.recipe-detail__action-button{padding:.875rem 1rem;border:none;border-radius:var(--radius-lg);font-size:var(--text-base);font-weight:600;cursor:pointer;transition:background var(--transition-fast),transform var(--transition-fast);min-height:48px}.recipe-detail__action-button:active{transform:scale(.97)}.recipe-detail__action-button--add-to-list{background-color:var(--color-primary);color:#fff}.recipe-detail__action-button--add-to-list:hover{background-color:var(--color-primary-dim)}.recipe-detail__action-button--consume{background-color:var(--color-success);color:#fff}.recipe-detail__action-button--consume:hover:not(.recipe-detail__action-button--disabled){background-color:#15803d}.recipe-detail__action-button--cancel{background-color:var(--color-surface-2);color:var(--color-text-primary);border:1px solid var(--color-border)}.recipe-detail__action-button--cancel:hover{background-color:var(--color-surface)}.recipe-detail__action-button--disabled{background-color:var(--color-surface-2);color:var(--color-text-secondary);border:1px solid var(--color-border);cursor:not-allowed;opacity:.7}.recipe-page{display:flex;flex-direction:column;min-height:100%;background-color:var(--color-surface-2)}.recipe-page__header{background-color:var(--color-surface);padding:var(--space-5) var(--space-4) var(--space-3);border-bottom:1px solid var(--color-border)}.recipe-page__title{margin:0;font-size:var(--text-xl);font-weight:600;color:var(--color-text-primary);display:flex;align-items:center}.recipe-page__main{flex:1;display:flex;flex-direction:column}.recipe-page__loading,.recipe-page__error{display:flex;align-items:center;justify-content:center;height:100%;padding:2rem;text-align:center}.recipe-page__loading-spinner{display:flex;justify-content:center;align-items:center;padding:2rem}.loading-spinner{font-size:var(--text-lg);color:var(--color-text-secondary)}.recipe-page__error h2{color:var(--color-danger);margin-bottom:.5rem}.recipe-page__error p{color:var(--color-text-secondary);margin:0}.qr-scanner{display:flex;flex-direction:column;gap:1rem;width:100%;max-width:500px;margin:0 auto}.qr-scanner__container{position:relative;width:100%;aspect-ratio:4/3;border-radius:8px;overflow:hidden;background:#000}.qr-scanner__camera{width:100%;height:100%}.qr-scanner__controls{display:flex;flex-direction:column;gap:1rem}.qr-scanner__device-selector,.qr-scanner__scan-controls,.qr-scanner__error{margin-bottom:0}.login-page{min-height:100vh;display:flex;align-items:center;justify-content:center;background:linear-gradient(135deg,#2563eb,#7c3aed);padding:20px}.login-page__container{background:var(--color-surface);border-radius:var(--radius-xl);box-shadow:var(--shadow-lg);padding:40px;max-width:500px;width:100%}.login-page__title{text-align:center;margin:0 0 30px;color:var(--color-text-primary);font-size:1.75rem;font-weight:700}.login-page__content{display:flex;flex-direction:column;gap:24px}.login-page__description{text-align:center;color:var(--color-text-secondary);line-height:1.6;margin:0}.login-page__description code{background:var(--color-surface-2);padding:3px 7px;border-radius:var(--radius-sm);font-family:monospace;color:var(--color-danger)}.login-page__qr-section{display:flex;flex-direction:column;gap:16px}.login-page__camera-scanner{width:100%}.login-page__video{width:100%;height:100%;object-fit:cover}.login-page__manual-button{background:var(--color-primary);color:#fff;border:none;padding:12px 24px;border-radius:var(--radius-lg);font-size:var(--text-base);font-weight:600;cursor:pointer;transition:background var(--transition-fast),transform var(--transition-fast);width:100%}.login-page__manual-button:hover{background:var(--color-primary-dim)}.login-page__manual-button:active{transform:scale(.97)}.login-page__divider{text-align:center;position:relative;margin:16px 0}.login-page__divider:before{content:"";position:absolute;top:50%;left:0;right:0;height:1px;background:var(--color-border)}.login-page__divider span{background:var(--color-surface);padding:0 16px;color:var(--color-text-secondary);font-size:var(--text-sm);position:relative}.login-page__error{background:#dc262614;color:var(--color-danger);padding:12px;border-radius:var(--radius-md);border:1px solid rgba(220,38,38,.2);text-align:center;font-size:var(--text-sm)}.login-page__success{background:#16a34a14;color:var(--color-success);padding:12px;border-radius:var(--radius-md);border:1px solid rgba(22,163,74,.2);text-align:center;font-size:var(--text-sm)}.login-page__manual-form{display:flex;flex-direction:column;gap:16px}.login-page__form-group{display:flex;flex-direction:column;gap:8px}.login-page__form-label{font-weight:500;color:var(--color-text-primary);font-size:var(--text-sm)}.login-page__form-input{padding:12px;border:1px solid var(--color-border);border-radius:var(--radius-sm);font-size:var(--text-base);transition:border-color var(--transition-fast),outline var(--transition-fast);background:var(--color-surface);color:var(--color-text-primary)}.login-page__form-input:focus{outline:2px solid var(--color-primary);outline-offset:2px;border-color:var(--color-primary)}.login-page__form-input::placeholder{color:var(--color-text-secondary);opacity:.7}.login-page__form-actions{display:flex;gap:12px;margin-top:8px}.login-page__cancel-button,.login-page__submit-button{flex:1;padding:12px;border:none;border-radius:var(--radius-lg);font-size:var(--text-base);font-weight:600;cursor:pointer;transition:background var(--transition-fast),transform var(--transition-fast)}.login-page__cancel-button{background:var(--color-surface-2);color:var(--color-text-secondary);border:1px solid var(--color-border)}.login-page__cancel-button:hover:not(:disabled){background:var(--color-border)}.login-page__submit-button{background:var(--color-success);color:#fff}.login-page__submit-button:hover:not(:disabled){background:#15803d}.login-page__cancel-button:active,.login-page__submit-button:active{transform:scale(.97)}.login-page__cancel-button:disabled,.login-page__submit-button:disabled{opacity:.5;cursor:not-allowed}.pwa-status-container{width:100%}.pwa-status-grid{display:flex;flex-direction:column;gap:12px}.pwa-status-item{display:flex;justify-content:space-between;align-items:center;padding:12px 16px;background:#f8f9fa;border-radius:8px;border:1px solid #e9ecef}.pwa-status-item--full{justify-content:center;margin-top:8px}.pwa-status-label{font-weight:500;color:#495057;font-size:14px}.pwa-status-value{font-weight:600;font-size:14px;display:flex;align-items:center;gap:4px}.pwa-status-value--success{color:#198754}.pwa-status-value--warning{color:#fd7e14}.pwa-status-value--info{color:#0d6efd}.pwa-install-button{background:#0d6efd;color:#fff;border:none;padding:12px 24px;border-radius:8px;cursor:pointer;font-size:14px;font-weight:600;transition:all .2s ease;display:flex;align-items:center;gap:8px}.pwa-install-button:hover{background:#0b5ed7;transform:translateY(-1px);box-shadow:0 4px 12px #0d6efd4d}.pwa-install-button:active{background:#0a58ca;transform:translateY(0)}@media (max-width: 768px){.pwa-status-item{flex-direction:column;align-items:flex-start;gap:8px}.pwa-status-value{align-self:flex-end}}.settings-page{background:#f8f9fa;min-height:100%;display:flex;flex-direction:column}.settings-page__container{max-width:600px;margin:0 auto;background:var(--color-surface);flex:1}.settings-page__title{background:var(--color-surface);color:var(--color-text-primary);margin:0;padding:var(--space-5) var(--space-4) var(--space-2);font-size:var(--text-xl);font-weight:700;border-bottom:1px solid var(--color-border)}.settings-page__content{padding:1.5rem}.settings-page__section{margin-bottom:2rem}.settings-page__section:last-child{margin-bottom:0}.settings-page__section-title{font-size:var(--text-xs);font-weight:600;color:var(--color-text-secondary);text-transform:uppercase;letter-spacing:.06em;margin:0 0 .75rem}.settings-page__config-info{background:var(--color-surface-2);border-radius:var(--radius-md);padding:1rem}.settings-page__section-plain{width:100%}.settings-page__config-item{display:flex;justify-content:space-between;align-items:center;padding:.5rem 0;border-bottom:1px solid var(--color-border)}.settings-page__config-item:last-child{border-bottom:none}.settings-page__config-item--stacked{flex-direction:column;align-items:flex-start;gap:.375rem;padding:.625rem 0}.settings-page__row-label{font-size:var(--text-xs);font-weight:600;color:var(--color-text-secondary);text-transform:uppercase;letter-spacing:.04em}.settings-page__config-label{font-weight:500;color:var(--color-text-primary);font-size:var(--text-sm)}.settings-page__config-value{font-family:monospace;color:var(--color-text-secondary);font-size:var(--text-xs);word-break:break-all;text-align:right;flex:1;overflow:hidden}.settings-page__config-value a{font-family:system-ui,sans-serif;font-size:var(--text-sm);color:var(--color-primary)}.settings-page__config-value--full{max-width:100%;width:100%;text-align:left;font-family:inherit;color:inherit}.settings-page__input{width:100%;max-width:100%;padding:.5rem .75rem;border:1px solid var(--color-border);border-radius:var(--radius-sm);font-size:var(--text-sm);background:var(--color-surface);color:var(--color-text-primary);box-sizing:border-box;display:block}.settings-page__picker-list{margin-top:.5rem;border:1px solid var(--color-border);border-radius:var(--radius-sm);background:var(--color-surface);max-height:240px;overflow:auto;box-shadow:var(--shadow-sm)}.settings-page__picker-item,.settings-page__picker-new{padding:.5rem .75rem;cursor:pointer;font-size:var(--text-sm)}.settings-page__picker-item:hover,.settings-page__picker-new:hover{background:var(--color-surface-2)}.settings-page__input:focus{outline:2px solid var(--color-primary);outline-offset:2px;border-color:var(--color-primary)}.settings-page__actions{display:grid;grid-template-columns:1fr;gap:.75rem}.settings-page__action-button{display:flex;align-items:center;gap:.75rem;padding:0 1rem;height:48px;border-radius:var(--radius-md);font-size:var(--text-base);font-weight:500;cursor:pointer;transition:background var(--transition-fast),transform var(--transition-fast);text-align:left;width:100%;min-width:0}.settings-page__action-button--primary{background:transparent;color:var(--color-primary);border:1.5px solid var(--color-primary)}.settings-page__action-button--primary:hover{background:#2563eb12}.settings-page__action-button--warning{background:transparent;color:var(--color-warning);border:1.5px solid var(--color-warning)}.settings-page__action-button--warning:hover{background:#d9770612}.settings-page__action-button--danger{background:transparent;color:var(--color-danger);border:1.5px solid var(--color-danger)}.settings-page__action-button--danger:hover{background:#dc262612}.settings-page__action-button--quiet{background:transparent;color:var(--color-text-secondary);border:1.5px solid var(--color-border)}.settings-page__action-button--quiet:hover{background:var(--color-surface-2)}.settings-page__action-button:disabled{opacity:.5;cursor:not-allowed;background:#e9ecef!important;color:#6c757d!important}.settings-page__action-button:disabled:hover{background:#e9ecef!important;color:#6c757d!important}.settings-page__action-icon{font-size:1.25rem;flex-shrink:0}.settings-page__action-text{flex:1}.settings-page__about{background:#f8f9fa;border-radius:8px;padding:1rem}.settings-page__about-text{margin:0 0 .5rem;color:#6c757d;font-size:.9rem;line-height:1.5}.settings-page__about-text:last-child{margin-bottom:0}.settings-page__pwa-info{background:#f8f9fa;border-radius:8px;padding:1rem}.settings-page__pwa-status{width:100%}.settings-page__ai-note{margin:0 0 1rem;color:#6c757d;font-size:.9rem;line-height:1.5}@media (min-width: 768px){.settings-page{padding:2rem}}@media (min-width: 520px){.settings-page__actions{grid-template-columns:repeat(2,minmax(0,1fr))}.settings-page__action-button{width:100%}.settings-page__actions>:last-child:nth-child(odd){grid-column:2}}.settings-page__excluded-list{display:flex;flex-wrap:wrap;gap:8px;padding:4px 0}.settings-page__excluded-item{display:inline-flex;align-items:center;gap:6px;padding:4px 10px;border:1px solid #ced4da;border-radius:999px;background:#f1f3f5;color:#343a40;font-size:.9rem}.settings-page__excluded-name{line-height:1}.settings-page__excluded-remove{border:none;background:transparent;color:#6c757d;cursor:pointer;padding:0 4px;line-height:1;font-size:.9rem}.settings-page__excluded-remove:hover{color:#212529}
