:root{--bg:#fff;--surface:#f4f6f9;--surface-2:#e8ecf1;--sheet:#fff;--field:#f0f3f7;--sep:#0f172a14;--text:#111827;--muted:#6b7280;--faint:#9ca3af;--accent:#007aff;--cal:#007aff;--pro:#5ac8fa;--ok:#22a447;--over:#ff3b30;--track:#e3e8ee;--press:#0f172a0d;--tabbar-h:58px;--radius:22px;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}*{box-sizing:border-box}html,body{background:var(--bg);color:var(--text);-webkit-font-smoothing:antialiased;-webkit-text-size-adjust:100%;overscroll-behavior-y:none;margin:0;font-family:-apple-system,BlinkMacSystemFont,SF Pro Text,system-ui,Segoe UI,Roboto,sans-serif}body{min-height:100dvh}button{font:inherit;color:inherit;cursor:pointer;-webkit-tap-highlight-color:transparent;touch-action:manipulation;-webkit-user-select:none;user-select:none}button:disabled{opacity:.4}input{font:inherit}svg{display:block}.app{max-width:560px;min-height:100dvh;padding-top:calc(env(safe-area-inset-top) + 4px);padding-bottom:calc(var(--tabbar-h) + env(safe-area-inset-bottom) + 28px);margin:0 auto}.screen{padding:0 16px}.screen-head{padding:14px 4px 18px}.screen-head h1{letter-spacing:-.025em;margin:0;font-size:34px;font-weight:700;line-height:1.1}.screen-head .sub{color:var(--muted);margin-top:4px;font-size:15px}.card{background:var(--surface);border-radius:var(--radius);margin-bottom:14px;padding:18px}.hair{background:var(--sep);height:1px;margin:18px 0}.group-title{letter-spacing:-.01em;margin:30px 4px 10px;font-size:20px;font-weight:700}.metric-top{justify-content:space-between;align-items:baseline;font-size:15px;display:flex}.metric-label{color:var(--muted);font-weight:500}.metric-status{color:var(--muted);font-variant-numeric:tabular-nums;font-weight:500}.metric-status.ok{color:var(--ok)}.metric-status.over{color:var(--over)}.metric-value{letter-spacing:-.03em;font-variant-numeric:tabular-nums;margin-top:2px;font-size:34px;font-weight:700;line-height:1.15}.metric-value small{color:var(--muted);letter-spacing:0;margin-left:6px;font-size:15px;font-weight:500}.bar{background:var(--track);border-radius:99px;height:8px;margin-top:12px;position:relative}.bar-fill{background:var(--bar-color);border-radius:99px;transition:width .4s;position:absolute;top:0;bottom:0;left:0}.bar.over .bar-fill{background:var(--over)}.bar-mark{background:var(--text);opacity:.45;border-radius:1px;width:2px;position:absolute;top:-3px;bottom:-3px}.plan{justify-content:space-between;align-items:center;gap:14px;display:flex}.plan-main b{font-size:17px;font-weight:600;display:block}.plan-main span{color:var(--muted);margin-top:3px;font-size:15px;line-height:1.35;display:block}.plan-main em{color:var(--text);font-style:normal;font-weight:600}.stepper{background:var(--surface-2);border-radius:14px;flex:none;display:flex;overflow:hidden}.step-btn{background:0 0;border:0;place-items:center;width:48px;height:44px;display:grid}.step-btn svg{width:20px;height:20px}.step-btn+.step-btn{border-left:1px solid var(--sep)}.step-btn:active{background:var(--press)}.btn{border:0;border-radius:16px;justify-content:center;align-items:center;gap:8px;width:100%;height:56px;font-size:17px;font-weight:600;display:flex}.btn svg{width:20px;height:20px}.btn.primary{background:var(--accent);color:#fff}.btn.primary:active{opacity:.85}.btn.secondary{background:var(--surface-2)}.btn.text-danger{color:var(--over);background:0 0;height:50px;margin-top:6px;font-weight:500}.link-btn{height:52px;color:var(--accent);background:0 0;border:0;align-items:center;gap:6px;padding:0 2px;font-size:16px;font-weight:600;display:flex}.link-btn svg{width:18px;height:18px}.icon-btn{background:var(--field);width:34px;height:34px;color:var(--muted);border:0;border-radius:50%;place-items:center;display:grid}.icon-btn svg{width:16px;height:16px}.list{background:var(--surface);border-radius:var(--radius);overflow:hidden}.list-row{text-align:left;background:0 0;border:0;align-items:center;gap:12px;width:100%;min-height:66px;padding:12px 16px;display:flex;position:relative}.list-row+.list-row:before{content:"";background:var(--sep);height:1px;position:absolute;top:0;left:72px;right:0}.list-row:active{background:var(--press)}.thumb{background:var(--surface-2);width:44px;height:44px;color:var(--muted);border-radius:12px;flex:none;place-items:center;display:grid;overflow:hidden}.thumb svg{width:20px;height:20px}.thumb img{object-fit:cover;width:100%;height:100%}.row-main{flex:1;min-width:0}.row-title{white-space:nowrap;text-overflow:ellipsis;font-size:17px;font-weight:600;overflow:hidden}.row-sub{color:var(--muted);margin-top:2px;font-size:14px}.row-end{text-align:right;font-variant-numeric:tabular-nums;flex:none}.row-end b{font-size:16px;font-weight:600;display:block}.row-end span{color:var(--muted);font-size:14px}.list-empty{text-align:center;color:var(--muted);padding:24px 16px;font-size:15px}.tabbar{z-index:20;-webkit-backdrop-filter:saturate(180%)blur(20px);border-top:1px solid var(--sep);padding-bottom:env(safe-area-inset-bottom);background:#ffffffdb;justify-content:center;display:flex;position:fixed;bottom:0;left:0;right:0}.tab{max-width:140px;height:var(--tabbar-h);color:var(--faint);letter-spacing:.01em;background:0 0;border:0;flex-direction:column;flex:1;justify-content:center;align-items:center;gap:3px;font-size:10px;font-weight:600;display:flex}.tab.active{color:var(--accent)}.tab svg{width:24px;height:24px}.offline-pill{top:calc(env(safe-area-inset-top) + 6px);z-index:60;background:var(--surface-2);color:var(--text);white-space:nowrap;border-radius:99px;padding:6px 12px;font-size:12px;font-weight:600;position:fixed;left:50%;transform:translate(-50%)}.sheet-backdrop{inset:0 0 var(--kb,0px) 0;z-index:50;background:#0f172a52;justify-content:center;align-items:flex-end;animation:.18s ease-out fade;display:flex;position:fixed}.sheet{width:100%;max-width:560px;max-height:calc(var(--vvh,100dvh) * .94);background:var(--sheet);padding-bottom:env(safe-area-inset-bottom);border-radius:24px 24px 0 0;flex-direction:column;animation:.26s cubic-bezier(.2,.8,.2,1) up;display:flex;box-shadow:0 -8px 30px #0f172a1f}.sheet-grab{background:#0f172a26;border-radius:3px;width:36px;height:5px;margin:8px auto 0}.sheet-head{justify-content:space-between;align-items:center;padding:10px 20px 6px;display:flex}.sheet-head h2{margin:0;font-size:20px;font-weight:700}.sheet-body{overscroll-behavior:contain;padding:10px 20px 20px;overflow:auto}@keyframes up{0%{opacity:0;transform:translateY(48px)}to{opacity:1;transform:none}}@keyframes fade{0%{opacity:0}to{opacity:1}}.field{min-width:0;margin-bottom:14px;display:block}.field>span{color:var(--muted);margin:0 0 6px 2px;font-size:13px;font-weight:500;display:block}.field-row{gap:12px;display:flex}.field-row .field{flex:1}.input{background:var(--field);width:100%;min-width:0;height:52px;color:var(--text);appearance:none;border:1px solid #0000;border-radius:14px;outline:none;padding:0 14px;font-size:17px}.input:focus{border-color:var(--accent)}.input::placeholder{color:var(--faint)}.input.big{font-variant-numeric:tabular-nums;height:64px;font-size:26px;font-weight:700}.error{color:var(--over);margin:-2px 2px 12px;font-size:14px}.strip-wrap{margin-bottom:16px}.strip-head{justify-content:space-between;align-items:baseline;margin:0 4px 10px;display:flex}.strip-head h2{margin:0;font-size:17px;font-weight:600}.text-link{color:var(--accent);background:0 0;border:0;padding:4px 0 4px 12px;font-size:15px;font-weight:500}.strip{scroll-snap-type:x proximity;scrollbar-width:none;-webkit-overflow-scrolling:touch;gap:10px;margin:0 -16px;padding:0 16px 2px;scroll-padding:0 16px;display:flex;overflow-x:auto}.strip::-webkit-scrollbar{display:none}.saved-card{background:var(--surface);text-align:left;scroll-snap-align:start;border:0;border-radius:18px;flex-direction:column;flex:none;justify-content:space-between;gap:8px;width:150px;min-height:88px;padding:12px 14px;display:flex}.saved-card:active{background:var(--surface-2)}.saved-card b{-webkit-line-clamp:2;-webkit-box-orient:vertical;font-size:15px;font-weight:600;line-height:1.25;display:-webkit-box;overflow:hidden}.saved-card span{color:var(--muted);font-variant-numeric:tabular-nums;font-size:13px}.saved-card.add{border:1.5px dashed var(--surface-2);color:var(--accent);background:0 0;justify-content:center}.saved-card.add svg{width:20px;height:20px}.saved-card.add span{color:var(--accent);font-weight:500;line-height:1.3}.chips{gap:8px;display:flex}.chip{background:var(--surface-2);font-variant-numeric:tabular-nums;border:0;border-radius:12px;flex:1;height:42px;font-size:15px;font-weight:600}.chip.on{background:var(--accent);color:#fff}.toast{left:12px;right:12px;bottom:calc(var(--tabbar-h) + env(safe-area-inset-bottom) + 12px);z-index:40;max-width:536px;box-shadow:0 12px 32px #0f172a2e, 0 0 0 1px var(--sep);background:#fff;border-radius:18px;margin:0 auto;padding:14px;animation:.24s cubic-bezier(.2,.8,.2,1) up;position:fixed}.toast-top{justify-content:space-between;align-items:center;gap:10px;margin-bottom:10px;font-size:15px;display:flex}.toast-top span{text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.toast-undo{color:var(--accent);background:0 0;border:0;flex:none;padding:6px 0 6px 12px;font-size:15px;font-weight:600}.row-tap{text-align:left;background:0 0;border:0;flex:1;align-items:center;gap:12px;min-width:0;padding:0;display:flex}.pill{background:var(--accent);color:#fff;border:0;border-radius:99px;flex:none;height:36px;padding:0 16px;font-size:15px;font-weight:600}.pill:active{opacity:.85}.hint{color:var(--muted);margin:0 2px 14px;font-size:14px;line-height:1.4}.toggle-row{justify-content:space-between;align-items:center;gap:12px;min-height:52px;margin-bottom:10px;font-size:16px;display:flex}.switch{appearance:none;background:var(--surface-2);cursor:pointer;border-radius:99px;flex:none;width:51px;height:31px;margin:0;transition:background .2s;position:relative}.switch:after{content:"";background:#fff;border-radius:50%;width:27px;height:27px;transition:transform .2s;position:absolute;top:2px;left:2px;box-shadow:0 2px 4px #0003}.switch:checked{background:var(--ok)}.switch:checked:after{transform:translate(20px)}.actions-row{gap:10px;display:flex}.actions-row .btn{width:auto;padding:0 18px}.actions-row .btn.grow{flex:1}.photo-frame{background:var(--surface);border-radius:18px;min-height:120px;margin-bottom:14px;position:relative;overflow:hidden}.photo-frame img{object-fit:cover;width:100%;max-height:260px;display:block}.photo-loading{height:200px;color:var(--muted);place-items:center;display:grid}.photo-overlay{-webkit-backdrop-filter:blur(4px);background:#ffffffc7;flex-direction:column;justify-content:center;align-items:center;gap:12px;font-weight:600;display:flex;position:absolute;inset:0}.spinner{border:3px solid var(--surface-2);border-top-color:var(--accent);border-radius:50%;width:34px;height:34px;animation:.8s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}.input.area{resize:none;height:auto;min-height:76px;padding:12px 14px;font-family:inherit;line-height:1.35}.text-link-btn{color:var(--accent);background:0 0;height:48px;margin-top:4px;font-weight:500}.banner{color:#7a4b00;background:#fff6e5;border-radius:14px;justify-content:space-between;align-items:center;gap:10px;margin-bottom:14px;padding:12px 14px;font-size:14px;line-height:1.35;display:flex}.banner .text-link{flex:none;padding:4px 0}.key-prompt{margin:-4px 0 18px}.key-prompt .input{margin-bottom:10px;font-size:16px}.key-prompt .hint{margin-top:8px}.review-head{align-items:center;gap:14px;margin-bottom:16px;display:flex}.review-photo{object-fit:cover;border-radius:16px;flex:none;width:92px;height:92px}.review-totals{flex-wrap:wrap;align-items:baseline;gap:2px 16px;display:flex}.review-totals b{letter-spacing:-.02em;font-variant-numeric:tabular-nums;font-size:28px;font-weight:700}.review-totals b.pro{color:var(--text)}.review-totals span{color:var(--muted);font-size:14px}.review-range{color:var(--muted);flex-basis:100%;margin-top:2px;font-size:13px}.items{flex-direction:column;gap:10px;display:flex}.item{background:var(--surface);border-radius:18px;padding:12px}.item-top{align-items:center;gap:8px;display:flex}.item-name{min-width:0;height:40px;color:var(--text);background:0 0;border:0;border-radius:8px;outline:none;flex:1;padding:0 4px;font-size:17px;font-weight:600}.item-name:focus{background:var(--field)}.item-meta{color:var(--muted);flex-wrap:wrap;align-items:center;gap:4px 10px;margin:0 4px 10px;font-size:14px;display:flex}.conf{background:var(--surface-2);border-radius:99px;padding:2px 8px;font-size:12px;font-weight:600}.conf.high{color:#1c7c39;background:#e3f6e8}.conf.medium{color:#8a5a00;background:#fff4dc}.conf.low{color:#b3261e;background:#ffe7e5}.item-nums{gap:10px;display:flex}.item-num{flex:1;align-items:center;gap:8px;min-width:0;display:flex}.item-num .input{font-variant-numeric:tabular-nums;background:#fff;height:46px;font-weight:600}.item-num span{color:var(--muted);flex:none;font-size:13px}.item-range{color:var(--muted);margin:8px 4px 0;font-size:12px}.qty-row{gap:6px;margin-top:10px;display:flex}.qty-row .chip{background:#fff;place-items:center;height:38px;font-size:14px;display:grid}.qty-row .chip.on{background:var(--accent)}.qty-row .chip svg{width:16px;height:16px}.sheet-cta{background:linear-gradient(#fff0,#fff 24%);margin:6px -20px -18px;padding:12px 20px 18px;position:sticky;bottom:-18px}.segmented{background:var(--surface-2);border-radius:10px;flex:none;padding:2px;display:flex}.segmented button{height:34px;color:var(--muted);background:0 0;border:0;border-radius:8px;padding:0 14px;font-size:14px;font-weight:600}.segmented button.on{color:var(--text);background:#fff;box-shadow:0 1px 3px #0f172a1f}.group-row.stack{flex-direction:column;align-items:stretch;gap:8px;padding:12px 16px}.stack-top{justify-content:space-between;align-items:center;display:flex}.group-row.stack .input{background:#fff;height:46px;font-size:16px}.saved-note{color:var(--ok);font-size:13px;font-weight:600}.check-btn{padding-left:0}.check{text-align:right;font-size:14px}.check.ok{color:var(--ok)}.check.bad{color:var(--over)}.head-row{justify-content:space-between;align-items:flex-start;display:flex}.head-row .text-link{margin-top:8px;font-size:17px}.supp-progress{color:var(--muted);margin:-6px 4px 12px;font-size:15px}.supp-progress b{color:var(--text)}.supp-row{min-height:64px}.supp-row:disabled{opacity:1}.check-circle{color:#fff;border:2px solid #c7cdd6;border-radius:50%;flex:none;place-items:center;width:30px;height:30px;margin:0 7px;transition:background .15s,border-color .15s;display:grid}.check-circle svg{stroke-width:3px;width:18px;height:18px}.supp-row.done .check-circle{background:var(--ok);border-color:var(--ok)}.supp-row.done .row-title{color:var(--muted)}.move-btns{flex:none;gap:6px;display:flex}.move-btns .icon-btn{width:40px;height:40px;color:var(--text)}.move-btns .icon-btn svg{width:20px;height:20px}.group-label{color:var(--muted);margin:26px 16px 8px;font-size:13px;font-weight:600}.screen-head+.group-label{margin-top:4px}.group{background:var(--surface);border-radius:var(--radius);overflow:hidden}.group-row{justify-content:space-between;align-items:center;gap:12px;min-height:56px;padding:8px 16px;font-size:17px;display:flex;position:relative}.group-row+.group-row:before{content:"";background:var(--sep);height:1px;position:absolute;top:0;left:16px;right:0}.group-row .value{color:var(--muted);text-align:right;font-size:15px}.row-input{align-items:center;display:flex}.input.inline{text-align:right;font-variant-numeric:tabular-nums;border-radius:10px;width:92px;height:40px;padding:0 12px;font-size:17px}.unit{width:34px;color:var(--muted);margin-left:8px;font-size:15px}.group-foot{color:var(--muted);margin:8px 16px 0;font-size:13px;line-height:1.45}
