:root{--ink:#171b19;--muted:#68716b;--paper:#f7f7f2;--line:#dfe3dc;--green:#16843f;--soft:#e9f4e8;--card:#fff}*{box-sizing:border-box}body,html{background:#e9ece6}body{margin:0;color:var(--ink);font:16px/1.35 ui-rounded,Avenir Next,SF Pro Rounded,sans-serif}button,input{font:inherit}button{cursor:pointer}button:disabled{cursor:wait;opacity:.65}.app{min-height:100dvh;max-width:560px;margin:auto;background:var(--paper);padding:calc(18px + env(safe-area-inset-top)) 18px calc(90px + env(safe-area-inset-bottom))}header{display:flex;align-items:center;justify-content:space-between;gap:12px;margin:8px 2px 20px}h1{font-size:32px;line-height:1.08;font-weight:800}h1,h2{margin:0;letter-spacing:0}h2{font-size:18px}.new-title{font-size:26px}.header-spacer{width:44px}.icon-button{width:44px;height:44px;border:1px solid var(--line);background:var(--card);color:var(--ink);border-radius:50%;display:grid;place-items:center;font-size:25px}.store-button{width:100%;min-height:56px;gap:8px;border:1px solid var(--line);background:var(--card);border-radius:8px;padding:8px 12px;margin-bottom:24px}.store-button,.store-pill{display:flex;align-items:center}.store-pill{gap:10px;font-weight:750;flex:1 1}.store-pill select{border:0;background:transparent;color:#1679e8;font-weight:800;font-size:17px;max-width:130px}.store-mark{width:32px;height:32px;display:grid;place-items:center;color:#174f91;background:#f6dd27;border-radius:50%;font-size:13px;font-weight:900}.order-button,.store-add,.store-go{border:0;background:transparent;color:var(--green);font-weight:800}.store-go{font-size:28px;line-height:1}.order-button{margin-right:8px}.list-toolbar{position:-webkit-sticky;position:sticky;top:0;z-index:8;background:var(--paper);padding:4px 0 10px;transition:transform .22s ease,opacity .18s ease}.list-toolbar.hidden{transform:translateY(calc(-100% - 8px));opacity:0;pointer-events:none}.list-toolbar.shown{transform:translateY(0);opacity:1}.list-toolbar .store-button{margin-bottom:8px}.list-search{height:46px;display:flex;align-items:center;gap:10px;padding:0 14px;border:1px solid var(--line);border-radius:9px;background:#fff;color:var(--green)}.list-search span{font-size:22px}.list-search input{border:0;outline:0;width:100%;background:transparent;color:var(--ink);font-size:16px}.list{display:grid;grid-gap:22px;gap:22px}.category{animation:up .28s ease both}.category-heading{display:flex;align-items:center;gap:10px;min-height:42px;padding:0 3px 6px}.category-image{width:34px;height:34px;object-fit:cover;border-radius:10px;background:#e4e8e2}.count{margin-left:auto;color:var(--muted);font-size:13px;font-weight:700;white-space:nowrap}.product-stack{overflow:hidden;border:1px solid var(--line);border-radius:8px;background:var(--card)}.product{display:flex;align-items:center;min-height:60px;padding:8px 12px 8px 14px;border:0;border-bottom:1px solid var(--line);background:transparent;color:var(--ink);width:100%;text-align:left;touch-action:manipulation}.product:last-child{border-bottom:0}.product-name{flex:1 1;font-weight:650}.product-note{display:block;color:var(--muted);font-size:12px;font-weight:500;margin-top:2px}.check{flex:0 0 30px;width:30px;height:30px;margin-left:12px;border:2px solid #aab2aa;border-radius:50%;display:grid;place-items:center;transition:.2s ease;font-size:17px}.product.done{color:#8a918b;background:#fbfcf9}.product.done .product-name{text-decoration:line-through}.product.done .check{background:var(--green);border-color:var(--green);color:white}.finish-fab{position:fixed;z-index:15;right:max(22px,calc((100vw - 560px)/2 + 22px));bottom:88px;width:58px;height:58px;border:0;background:var(--green);color:#fff;box-shadow:0 5px 18px #16843f66;font-size:27px;font-weight:800;place-items:center}.finish-fab,.finish-fab small{border-radius:50%;display:grid}.finish-fab small{position:absolute;right:-5px;top:-5px;min-width:21px;height:21px;place-items:center;background:#fff;color:var(--green);border:1px solid var(--green);font-size:11px}.state{margin:34px 0;color:var(--muted);text-align:center}.quick-add{position:fixed;z-index:14;right:max(22px,calc((100vw - 560px)/2 + 22px));bottom:88px;min-height:52px;padding:0 20px;border:0;border-radius:28px;background:var(--green);color:#fff;box-shadow:0 5px 18px #16843f55;font-size:25px;font-weight:800;display:flex;align-items:center;gap:7px}.quick-add span{font-size:15px}.context-action{position:fixed;z-index:15;right:max(22px,calc((100vw - 560px)/2 + 22px));bottom:calc(18px + env(safe-area-inset-bottom));min-height:54px;padding:0 20px;border:0;border-radius:28px;background:var(--green);color:#fff;box-shadow:0 7px 20px #16843f55;font-size:25px;font-weight:800;display:flex;align-items:center;gap:8px}.context-action span{font-size:15px}.clear-button{width:100%;border:0;color:var(--green);background:transparent;font-weight:800;padding:22px 0 8px;font-size:16px}.sort-sheet{position:fixed;z-index:30;inset:0;overflow:auto;background:var(--paper);padding:calc(20px + env(safe-area-inset-top)) 18px calc(22px + env(safe-area-inset-bottom))}.sort-sheet-header{display:flex;align-items:center;justify-content:space-between;gap:14px;margin-bottom:18px}.sort-sheet-header h2{font-size:24px}.sort-sheet-header p{margin:3px 0 0;color:var(--muted);font-size:13px}.sort-done{width:auto;min-height:44px;margin:0;padding:0 16px;font-size:14px}.order-panel{border:1px solid var(--line);border-radius:12px;background:#fff;overflow:hidden}.sort-row{display:flex;align-items:center;gap:12px;min-height:66px;padding:8px 12px;border-bottom:1px solid var(--line);background:#fff;touch-action:pan-y}.sort-row:last-child{border:0}.sort-row img{width:42px;height:42px;object-fit:cover;border-radius:11px}.sort-row strong{flex:1 1}.sort-row.dragging{opacity:.55;box-shadow:0 12px 26px #1b2e2030;border-radius:12px}.drag-handle{width:44px;height:44px;border:0;border-radius:10px;background:#f0f4ee;color:#6b756e;font-size:25px;line-height:1;display:grid;place-items:center;padding:0 0 2px;touch-action:none}.bottom-nav{position:fixed;z-index:10;left:50%;bottom:0;transform:translateX(-50%);width:min(560px,100%);padding:9px 18px calc(10px + env(safe-area-inset-bottom));display:grid;grid-template-columns:repeat(2,1fr);background:rgba(255,255,252,.94);border-top:1px solid var(--line);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px)}.nav-button{border:0;color:#748078;background:transparent;min-height:54px;display:grid;place-items:center;grid-gap:2px;gap:2px;font-weight:700;font-size:12px}.nav-symbol{font-size:25px;line-height:22px}.nav-button.active{color:var(--green)}.catalog-intro{margin:-9px 0 17px;color:var(--muted);font-size:14px}.search-wrap{position:relative;margin-bottom:20px}.search{width:100%;height:54px;border:2px solid var(--green);border-radius:8px;padding:0 42px 0 44px;background:white;outline:0;font-size:17px}.search-mark{position:absolute;left:16px;top:13px;color:var(--green);font-size:24px}.clear-search{position:absolute;right:10px;top:9px;border:0;border-radius:50%;width:36px;height:36px;color:#fff;background:#a5ada6}.catalog-groups{display:grid;grid-gap:24px;gap:24px}.catalog-category h2{padding-bottom:5px}.catalog-row{display:flex;align-items:center;gap:12px;min-height:62px;padding:8px 4px;border-bottom:1px solid var(--line)}.catalog-row img{width:42px;height:42px;object-fit:cover;border-radius:10px}.catalog-row strong{display:block}.catalog-row span{color:var(--muted);font-size:12px}.catalog-on-list{background:#f7fbf6}.add-small{border:2px solid var(--green);background:white;width:34px;height:34px;border-radius:50%;font-size:24px;line-height:20px}.add-small,.catalog-added{margin-left:auto;color:var(--green)}.catalog-added{display:flex;align-items:center;gap:6px;font-size:12px;font-weight:850;white-space:nowrap;border:0;background:transparent;padding:0}.catalog-added b{display:grid;place-items:center;width:28px;height:28px;color:white;background:var(--green);border-radius:50%;font-size:16px}.catalog-added span{color:var(--green);font-weight:850}.new-row{margin-top:18px;display:flex;align-items:center;gap:12px;width:100%;padding:15px;border:1px dashed #8fbe9c;border-radius:8px;color:var(--green);font-weight:800;background:#fcfffb;text-align:left}.new-row .add-small{margin-left:0}.catalog-search-bar{position:-webkit-sticky;position:sticky;top:0;z-index:8;background:var(--paper);padding:4px 0 1px;transition:transform .22s ease,opacity .18s ease}.catalog-search-bar.hidden{transform:translateY(calc(-100% - 8px));opacity:0;pointer-events:none}.catalog-search-bar.shown{transform:translateY(0);opacity:1}.swipe-wrap{position:relative;overflow:hidden;border-bottom:1px solid var(--line)}.swipe-wrap .catalog-row{position:relative;z-index:1;margin:0;padding-left:4px;background:var(--paper);transition:transform .2s ease;border:0}.swipe-wrap.open .catalog-row{transform:translateX(-96px)}.delete-product{position:absolute;inset:0 0 0 auto;width:96px;border:0;background:#d94141;color:#fff;font-weight:850;font-size:14px}.catalog-category .swipe-wrap:last-child{border-bottom:0}.form-label{display:block;font-weight:750;margin:22px 0 8px}.text-input{width:100%;border:1px solid #bfc7be;background:white;min-height:56px;border-radius:8px;padding:0 15px;font-size:17px;outline-color:var(--green)}.category-picker{display:grid;grid-template-columns:repeat(3,1fr);grid-gap:8px;gap:8px}.category-choice{border:1px solid var(--line);border-radius:8px;padding:8px 5px;background:white;min-height:102px;text-align:center;color:var(--ink);font-size:11px;font-weight:750}.category-choice img{display:block;height:54px;width:54px;object-fit:cover;border-radius:12px;margin:0 auto 5px}.category-choice.selected{border:2px solid var(--green);background:var(--soft)}.preview{display:flex;align-items:center;gap:13px;padding:12px;margin-top:14px;border:1px dashed #b6bdb5;border-radius:8px;color:var(--muted);font-size:13px}.preview img{width:56px;height:56px;object-fit:cover;border-radius:14px}.primary{width:100%;min-height:56px;border:0;background:var(--green);font-weight:850;margin-top:24px;font-size:17px}.primary,.toast{border-radius:8px;color:white}.toast{position:fixed;z-index:20;left:50%;bottom:94px;transform:translate(-50%,15px);background:#203128;padding:11px 15px;opacity:0;pointer-events:none;transition:.25s;font-weight:700;font-size:14px;white-space:nowrap}.toast.show{opacity:1;transform:translate(-50%)}@keyframes up{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}@media (min-width:561px){body{padding:22px}.app{min-height:calc(100dvh - 44px);border-radius:12px;box-shadow:0 8px 40px rgba(42,57,44,.1)}.bottom-nav{bottom:22px;border:1px solid var(--line);border-radius:12px}}.add-small,.check{display:grid;place-items:center;line-height:1;padding:0 0 2px}