:root{--bg: #f6f7f4;--card: #ffffff;--ink: #1c2420;--muted: #6b7671;--accent: #166534;--accent-ink: #ffffff;--line: #e2e6e1;--warn: #b45309;--danger: #b91c1c;--shop: #0f4c81;--shop-bg: #eaf1f8;--shop-line: #c3d7e8;--scrim: rgba(28, 36, 32, .45);--radius: .8rem;--tap: 44px}*{box-sizing:border-box;margin:0}html,body,#root{height:100%}body{font-family:system-ui,-apple-system,Segoe UI,sans-serif;background:var(--bg);color:var(--ink);-webkit-tap-highlight-color:transparent}button{font:inherit;cursor:pointer}input,select{font:inherit}ul{list-style:none;padding:0}:focus-visible{outline:2px solid var(--accent);outline-offset:2px;border-radius:.3rem}.app{display:flex;flex-direction:column;height:100%}.app main{flex:1;overflow-y:auto;overflow-x:hidden}.login{height:100%;display:flex;flex-direction:column;justify-content:center;gap:.8rem;padding:2rem;max-width:22rem;margin:0 auto}.login h1{text-align:center;margin-bottom:1rem}.login input{padding:.8rem;border:1px solid var(--line);border-radius:.6rem;font-size:1.1rem}.login button{padding:.9rem;border:none;border-radius:.6rem;background:var(--accent);color:var(--accent-ink);font-size:1.1rem;font-weight:600}.error{color:var(--danger);text-align:center;padding:.4rem 0}.notice{color:#065f46;background:#ecfdf5;border:1px solid #a7f3d0;border-radius:.5rem;text-align:center;padding:.5rem;margin-bottom:.6rem;font-size:.9rem}.receipt-row{padding:.5rem 0;border-top:1px solid var(--line);font-size:.9rem}.receipt-row:first-of-type{border-top:none}.receipt-row.discount{display:flex;gap:.5rem;color:var(--muted);font-style:italic}.receipt-row strong{font-variant-numeric:tabular-nums;white-space:nowrap}.receipt-pick{width:100%;margin-top:.3rem;padding:.5rem;border:1px solid var(--line);border-radius:.5rem;background:var(--card);color:var(--ink);font-size:.85rem}.loading{padding:2rem;text-align:center;color:var(--muted)}.muted{color:var(--muted);font-size:.85rem}.tiny{font-size:.78rem;line-height:1.4}.warn{color:var(--warn)}.row{display:flex;align-items:center;gap:.6rem}.row .grow,.grow{flex:1;min-width:0}.empty{padding:2rem 1rem;text-align:center;line-height:1.5}.card{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);padding:.9rem;margin-bottom:.8rem}.card.winner{border-color:var(--accent);box-shadow:0 0 0 2px var(--accent)}.btn{padding:.7rem 1rem;border:none;border-radius:.6rem;background:var(--accent);color:var(--accent-ink);font-weight:600;min-height:var(--tap)}.btn.secondary{background:var(--card);color:var(--ink);border:1px solid var(--line)}.btn.danger{background:var(--danger);color:#fff}.btn.full{width:100%}.btn.tiny{padding:.35rem .6rem;min-height:0;font-size:.8rem}.btn:disabled{opacity:.45;cursor:default}.field{display:flex;flex-direction:column;gap:.25rem;margin-bottom:.9rem}.field label{font-size:.85rem;font-weight:600}.field input,.field select{padding:.7rem;border:1px solid var(--line);border-radius:.5rem;background:var(--card);color:var(--ink);min-height:var(--tap)}.field input:disabled,.field select:disabled{background:var(--bg);color:var(--muted)}.price-input{font-variant-numeric:tabular-nums;font-size:1.15rem}.promo-badge{background:#fef3c7;color:#92400e;border-radius:.3rem;font-size:.7rem;padding:.1rem .3rem;margin-left:.3rem;white-space:nowrap}.banner{background:#ecfdf5;border:1px solid #a7f3d0;color:#065f46;padding:.8rem;border-radius:var(--radius);margin-bottom:1rem}h2{font-size:1.15rem;margin-bottom:.8rem}h3{font-size:.95rem;margin:1rem 0 .4rem;color:var(--muted);text-transform:uppercase;letter-spacing:.03em}.listview{min-height:100%;display:flex;flex-direction:column;padding:0 1rem calc(5.5rem + env(safe-area-inset-bottom))}.app-head{position:sticky;top:0;z-index:4;display:flex;align-items:center;gap:.5rem;padding:.9rem 0 .7rem;margin:0 -1rem .6rem;padding-inline:1rem;background:var(--bg);border-bottom:1px solid transparent;transition:background .16s ease,border-color .16s ease}.app-head h1{flex:1;font-size:1.2rem;min-width:0}.head-btn{display:inline-flex;align-items:center;gap:.3rem;min-height:var(--tap);min-width:var(--tap);padding:0 .6rem;border:1px solid var(--line);border-radius:2rem;background:var(--card);color:var(--ink);font-size:1.05rem}.head-btn-label{font-size:.8rem;font-weight:600}.head-btn.on{background:var(--shop);border-color:var(--shop);color:#fff}.listview.shopping{background:var(--shop-bg)}.listview.shopping .app-head{background:var(--shop-bg);border-bottom-color:var(--shop-line)}.shop-bar{display:flex;align-items:center;gap:.6rem;padding:.5rem 0 .8rem}.shop-bar .chip{display:inline-flex;align-items:center;gap:.3rem;padding:.35rem .7rem;border-radius:2rem;background:var(--card);border:1px solid var(--shop-line);color:var(--shop);font-weight:600;min-height:var(--tap)}.shop-bar .chip select{border:none;background:none;color:inherit;font-weight:600;padding:.2rem 0;max-width:9rem}.shop-bar .progress{margin-left:auto;font-variant-numeric:tabular-nums;color:var(--shop);font-weight:700}.rows{flex:1}.entry{padding:.65rem .2rem;border-bottom:1px solid var(--line)}.entry .grow>div:first-child{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.entry.checked{opacity:.45;text-decoration:line-through}.entry .qty{display:flex;align-items:center;gap:.3rem}.entry .qty button{width:2.1rem;height:2.1rem;border-radius:50%;border:1px solid var(--line);background:var(--card);font-size:1.1rem;flex:none}.entry .qty span{min-width:1.1rem;text-align:center;font-variant-numeric:tabular-nums}.entry .btn.secondary{min-width:var(--tap);padding:.5rem}.price{border:none;background:none;color:inherit;padding:.4rem .2rem;font-variant-numeric:tabular-nums;font-weight:600;white-space:nowrap;border-bottom:1px dashed var(--line);min-height:var(--tap)}.price .est{color:var(--muted);font-weight:400;margin-left:.15rem}.shoprow{gap:.4rem;padding:.35rem 0;border-bottom:1px solid var(--shop-line);transition:opacity .16s ease}.shoprow .check{border:none;background:none;padding:.5rem .4rem .5rem 0;min-width:var(--tap);min-height:var(--tap);flex:none}.shoprow .box{width:1.6rem;height:1.6rem;border:2px solid var(--shop);border-radius:50%;display:inline-flex;align-items:center;justify-content:center;color:#fff;font-size:1rem;line-height:1}.shoprow-main{display:flex;align-items:center;gap:.7rem;flex:1;min-width:0;border:none;background:none;text-align:left;color:inherit;font-size:1.05rem;padding:.5rem 0;min-height:var(--tap)}.shoprow-main .grow{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.qty-badge{font-variant-numeric:tabular-nums;font-weight:700;color:var(--shop);margin-right:.3rem}.size{color:var(--muted);font-weight:400;font-variant-numeric:tabular-nums}.shoprow.done{opacity:.45}.shoprow.done .box{background:var(--shop)}.shoprow.done .shoprow-main{text-decoration:line-through}.thumb{width:36px;height:36px;object-fit:contain;flex:none}.thumb-fallback{width:36px;text-align:center;font-size:1.4rem;flex:none}.actions{position:fixed;bottom:0;left:0;right:0;z-index:3;display:flex;gap:.6rem;align-items:center;padding:.7rem 1rem calc(.7rem + env(safe-area-inset-bottom));background:var(--card);border-top:1px solid var(--line)}.listview.shopping .actions{border-top-color:var(--shop-line)}.actions-note{margin:0 auto;text-align:center}.compare-strip{margin-bottom:.8rem}.strip-head{width:100%;display:flex;align-items:center;gap:.5rem;padding:.8rem;background:#ecfdf5;border:1px solid #a7f3d0;color:#065f46;border-radius:var(--radius);font-size:.95rem;text-align:left;min-height:var(--tap)}.strip-toggle{display:inline-flex;align-items:center;gap:.25rem;flex:none;padding:.3rem .6rem;border-radius:2rem;background:#065f461a;font-size:.8rem;font-weight:600}.strip-toggle .chev{font-size:.65rem}.compare-strip.open .strip-head{border-bottom-left-radius:0;border-bottom-right-radius:0}.strip-body{border:1px solid #a7f3d0;border-top:none;border-radius:0 0 var(--radius) var(--radius);padding:.8rem;background:var(--card)}.strip-close{margin-top:.4rem}table.lines{width:100%;border-collapse:collapse;font-size:.9rem;margin-top:.6rem}table.lines td{padding:.3rem .2rem;border-top:1px solid var(--line)}table.lines td:last-child{text-align:right;white-space:nowrap;font-variant-numeric:tabular-nums}.estimated{font-style:italic;color:var(--muted)}.nodata{padding:.4rem .2rem}.chain-row{width:100%;border:none;background:none;color:inherit;text-align:left;padding:0;min-height:var(--tap)}.chain-total{text-align:right;white-space:nowrap;font-variant-numeric:tabular-nums}.chain-row .chev{color:var(--muted);flex:none;font-size:.7rem}.promo-badge.warn-badge{background:#fee2e2;color:#991b1b}.chain-status{padding:.55rem 0;border-top:1px solid var(--line)}.chain-status:first-of-type{border-top:none}.chain-status .tiny{margin-top:.15rem}.tips{margin-bottom:.8rem}.tips-head{width:100%;display:flex;align-items:center;gap:.5rem;padding:.7rem .8rem;background:var(--card);border:1px solid var(--line);border-radius:var(--radius);color:var(--ink);text-align:left;min-height:var(--tap)}.tips-head .chev{margin-left:auto;color:var(--muted)}.tip-list{border:1px solid var(--line);border-top:none;border-radius:0 0 var(--radius) var(--radius);background:var(--card);margin:-.4rem 0 0;padding:.2rem .6rem .4rem}.tip{display:flex;align-items:center;gap:.5rem;padding:.55rem 0;border-top:1px solid var(--line);font-size:.9rem}.tip:first-child{border-top:none}.tip-icon{flex:none}.tip-actions{display:flex;gap:.3rem;flex:none}.scrim{position:fixed;top:0;right:0;bottom:0;left:0;z-index:20;background:var(--scrim);display:flex;align-items:flex-end;justify-content:center;animation:fade .14s ease-out}.sheet{width:100%;max-width:32rem;max-height:94vh;display:flex;flex-direction:column;background:var(--bg);border-radius:1rem 1rem 0 0;box-shadow:0 -8px 32px #1c242038;animation:rise .2s cubic-bezier(.2,.9,.3,1)}.sheet-head{display:flex;align-items:center;gap:.6rem;flex:none;padding:.9rem 1rem;border-bottom:1px solid var(--line)}.sheet-close{border:1px solid var(--line);background:var(--card);color:var(--ink);width:var(--tap);height:var(--tap);border-radius:50%;font-size:1rem;flex:none}.sheet-body{flex:1;overflow-y:auto;padding:1rem}.sheet-foot{flex:none;display:flex;gap:.6rem;padding:.8rem 1rem calc(.8rem + env(safe-area-inset-bottom));background:var(--card);border-top:1px solid var(--line)}.sheet-foot .btn{flex:1}@keyframes fade{0%{opacity:0}to{opacity:1}}@keyframes rise{0%{transform:translateY(14%)}to{transform:translateY(0)}}@media(prefers-reduced-motion:reduce){.scrim,.sheet{animation:none}.app-head,.shoprow{transition:none}}.segmented{display:flex;gap:.25rem;padding:.25rem;margin-bottom:1rem;background:var(--card);border:1px solid var(--line);border-radius:2rem}.segmented button{flex:1;padding:.55rem;border:none;border-radius:2rem;background:none;color:var(--muted);font-weight:600;min-height:40px}.segmented button.active{background:var(--accent);color:var(--accent-ink)}.staples{display:grid;grid-template-columns:repeat(3,1fr);gap:.6rem}.staple{position:relative;display:flex;flex-direction:column;align-items:center;gap:.3rem;padding:.7rem .4rem;background:var(--card);border:1px solid var(--line);border-radius:var(--radius);color:var(--ink);font-size:.75rem;text-align:center;min-height:5.5rem}.staple img{width:48px;height:48px;object-fit:contain}.staple .icon{font-size:2rem;line-height:48px}.staple .pname{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.browse{padding-bottom:.5rem}.browse-head{margin-bottom:1rem}.browse-head input{padding:.7rem;border:1px solid var(--line);border-radius:.6rem;min-width:0;min-height:var(--tap);background:var(--card);color:var(--ink)}.sticky-head{position:sticky;top:-1rem;z-index:5;background:var(--bg);padding:.5rem 0;margin:-.5rem 0 .5rem}.browse section h3{margin-top:1.2rem}.type-row{display:flex;align-items:center;gap:.6rem;width:100%;text-align:left;background:var(--card);border:1px solid var(--line);border-radius:.6rem;color:var(--ink);padding:.6rem .7rem;margin-bottom:.35rem;font-size:.9rem;min-height:var(--tap)}.type-row img{width:36px;height:36px;object-fit:contain;flex:none}.type-row .icon{font-size:1.6rem;width:36px;text-align:center;flex:none}.type-row .grow,.variant-row .grow{display:flex;flex-direction:column;min-width:0}.type-row .pname,.variant-row .grow>span:first-child{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.type-row strong{text-align:right;white-space:nowrap;font-variant-numeric:tabular-nums}.type-row .chev{color:var(--muted);flex:none}.variant-list{display:flex;flex-direction:column;gap:.3rem;margin:.1rem 0 .7rem;padding-left:1rem}.variant-row{position:relative;display:flex;align-items:center;gap:.6rem;padding:.55rem .7rem;background:var(--card);border:1px solid var(--line);border-radius:.6rem;color:var(--ink);text-align:left;font-size:.85rem;min-height:var(--tap)}.variant-row.wide{width:100%;margin-bottom:.35rem}.variant-row img{width:28px;height:28px;object-fit:contain;flex:none}.variant-row .icon{font-size:1.4rem;width:28px;text-align:center;flex:none}.variant-row strong{white-space:nowrap;font-variant-numeric:tabular-nums}.variant-divider{padding:.4rem 0 .2rem;font-size:.8rem}.unit-price{font-variant-numeric:tabular-nums;opacity:.75;white-space:nowrap}.best-badge{background:var(--accent);color:#fff;border-radius:.3rem;padding:0 .35rem;font-size:.7rem;flex:none}.added-badge{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;align-items:center;justify-content:center;background:#166534e0;color:#fff;border-radius:.6rem;font-weight:700}.viewfinder{position:relative;width:100%;aspect-ratio:4 / 3;background:#0d1210;border-radius:var(--radius);overflow:hidden;margin-bottom:1rem}.viewfinder video{width:100%;height:100%;object-fit:cover;display:block}.viewfinder-frame{position:absolute;left:8%;right:8%;top:34%;bottom:34%;border:2px solid rgba(255,255,255,.9);border-radius:.4rem;box-shadow:0 0 0 100vmax #00000047}.viewfinder-note{position:absolute;left:0;right:0;bottom:.5rem;text-align:center;color:#fff;font-size:.8rem;text-shadow:0 1px 3px rgba(0,0,0,.8)}.pick-none{margin-top:.8rem}.pick-none .btn{width:100%}.pad-display{font-size:2.4rem;font-weight:700;font-variant-numeric:tabular-nums;text-align:center;padding:1rem 0 .6rem;letter-spacing:-.01em}.pad{display:grid;grid-template-columns:repeat(3,1fr);gap:.5rem;margin-bottom:1rem}.pad-key{padding:.9rem 0;border:1px solid var(--line);border-radius:.6rem;background:var(--card);color:var(--ink);font-size:1.35rem;font-variant-numeric:tabular-nums;min-height:3.2rem}.pad-key:disabled{opacity:.3}.scan-note{padding:.4rem 0 .2rem}.scan-card{border-style:dashed}.scan-card strong{display:block;margin-bottom:.5rem}.scan-actions{margin-bottom:.4rem}.scan-actions .btn{padding:.7rem .5rem}.capture{display:flex;flex-direction:column;gap:.5rem}.capture .viewfinder{margin-bottom:0;aspect-ratio:3 / 2}code{font-size:.85em;background:var(--bg);border:1px solid var(--line);border-radius:.25rem;padding:0 .2rem}.more summary{padding:.6rem 0;font-weight:600;cursor:pointer}.item-editor{padding:.5rem 0 .5rem .6rem;border-left:3px solid var(--line)}.match-row{margin:.5rem 0}.manual-row{padding:.45rem 0;border-top:1px solid var(--line)}.manual-row .btn{padding:.4rem .6rem;min-height:36px}
