:root{--ground: #fbf7f8;--surface: #ffffff;--surface-2: #f4eef0;--ink: #2b1e26;--ink-soft: #6d5a63;--ink-faint: #9b8a92;--line: #e9dde2;--plum: #7a2e4e;--berry: #a8456a;--good: #3f7d5c;--warn: #b8761f;--bad: #b23b3b;--radius: 14px;--radius-lg: 20px;--tap: 44px;--gutter: 16px;--bar-height: calc(56px + env(safe-area-inset-bottom)) ;color-scheme:light dark}@media(prefers-color-scheme:dark){:root{--ground: #171215;--surface: #211a1f;--surface-2: #2c232a;--ink: #f3ecef;--ink-soft: #bba9b3;--ink-faint: #8b7a84;--line: #362b32;--plum: #d98fae;--berry: #e49ab7;--good: #6fbf93;--warn: #e0a85c;--bad: #e08080}}*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}html,body{margin:0;padding:0;height:100%}body{background:var(--ground);color:var(--ink);font-family:-apple-system,BlinkMacSystemFont,SF Pro Text,Segoe UI,system-ui,sans-serif;font-size:16px;line-height:1.45;overscroll-behavior-y:contain;-webkit-font-smoothing:antialiased}#app{min-height:100%;display:flex;flex-direction:column}button{font:inherit;color:inherit;border:0;background:none;cursor:pointer}input,select{font:inherit;font-size:16px;color:inherit}.screen{flex:1;padding:0 var(--gutter) calc(var(--bar-height) + 24px);max-width:680px;width:100%;margin:0 auto}.title{font-size:30px;line-height:1.15;font-weight:700;letter-spacing:-.02em;margin:18px 0 2px}.subtitle{color:var(--ink-faint);font-size:14px;margin-bottom:18px}.section-head{display:flex;align-items:baseline;justify-content:space-between;margin:26px 0 10px}.section-head h2{font-size:17px;font-weight:650;margin:0;letter-spacing:-.01em}.link{color:var(--berry);font-size:15px;padding:6px 0}.tiles{display:grid;grid-template-columns:repeat(2,1fr);gap:10px}.tile{position:relative;overflow:hidden;min-height:92px;padding:14px;border-radius:var(--radius-lg);background:linear-gradient(152deg,var(--plum),var(--berry));color:#fff;text-align:left;display:flex;flex-direction:column;justify-content:space-between;transition:transform .12s ease}.tile:after{content:"";position:absolute;top:-40%;right:40%;bottom:55%;left:-10%;background:radial-gradient(ellipse at top left,rgba(255,255,255,.42),transparent 70%);pointer-events:none}.tile:active{transform:scale(.97)}.tile--muted{background:var(--surface-2);color:var(--ink-faint)}.tile--muted:after{display:none}.tile-name{font-size:16px;font-weight:650;letter-spacing:-.01em}.tile-meta{font-size:13px;opacity:.85;font-variant-numeric:tabular-nums}.card{background:var(--surface);border-radius:var(--radius);border:1px solid var(--line);overflow:hidden}.row{display:flex;align-items:center;gap:12px;width:100%;min-height:var(--tap);padding:11px 14px;text-align:left;border-bottom:1px solid var(--line)}.row:last-child{border-bottom:0}.row:active{background:var(--surface-2)}.row-main{flex:1;min-width:0}.row-name{font-size:15px;font-weight:550;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.row-sub{font-size:13px;color:var(--ink-faint);font-variant-numeric:tabular-nums}.row-value{font-size:15px;font-variant-numeric:tabular-nums;text-align:right;white-space:nowrap}.swatch{width:10px;height:34px;border-radius:5px;flex:none;background:var(--line)}.swatch--ok{background:var(--good)}.swatch--low{background:var(--warn)}.swatch--out{background:var(--bad)}.bar{height:3px;border-radius:2px;background:var(--line);margin-top:5px;overflow:hidden}.bar span{display:block;height:100%;background:var(--good)}.bar span.low{background:var(--warn)}.bar span.out{background:var(--bad)}.alert{display:flex;gap:10px;align-items:flex-start;padding:12px 14px;border-radius:var(--radius);background:var(--surface);border:1px solid var(--line);border-left:3px solid var(--warn);margin-bottom:8px;font-size:14px}.alert--bad{border-left-color:var(--bad)}.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:var(--tap);padding:0 18px;border-radius:12px;background:var(--plum);color:#fff;font-size:16px;font-weight:600;width:100%}.btn:active{opacity:.85}.btn:disabled{opacity:.4}.btn--quiet{background:var(--surface-2);color:var(--ink)}.btn--ghost{background:none;color:var(--berry);border:1px solid var(--line)}.btn-row{display:flex;gap:10px;margin-top:14px}.tabbar{position:fixed;left:0;right:0;bottom:0;height:var(--bar-height);padding-bottom:env(safe-area-inset-bottom);display:flex;background:color-mix(in srgb,var(--surface) 94%,transparent);-webkit-backdrop-filter:saturate(180%) blur(18px);backdrop-filter:saturate(180%) blur(18px);border-top:1px solid var(--line);z-index:20}.tab{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;font-size:11px;color:var(--ink-faint);padding-top:6px}.tab.is-active{color:var(--berry)}.tab svg{width:22px;height:22px}.tab-badge{position:absolute;transform:translate(12px,-10px);min-width:16px;height:16px;padding:0 4px;border-radius:8px;background:var(--bad);color:#fff;font-size:10px;line-height:16px;text-align:center}.sheet-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#140a1066;z-index:30}.sheet{position:fixed;left:0;right:0;bottom:0;z-index:31;background:var(--surface);border-radius:20px 20px 0 0;padding:8px var(--gutter) calc(20px + env(safe-area-inset-bottom));max-height:86vh;overflow-y:auto;max-width:680px;margin:0 auto}.sheet-grip{width:36px;height:5px;border-radius:3px;background:var(--line);margin:6px auto 14px}.sheet h3{margin:0 0 4px;font-size:20px;letter-spacing:-.01em}.sheet-sub{color:var(--ink-faint);font-size:14px;margin:0 0 16px}.field{margin-bottom:14px}.field label{display:block;font-size:13px;color:var(--ink-soft);margin-bottom:6px}.field input,.field select{width:100%;min-height:var(--tap);padding:0 12px;border-radius:12px;border:1px solid var(--line);background:var(--ground)}.stepper{display:flex;align-items:center;gap:12px}.stepper button{width:52px;height:52px;border-radius:16px;background:var(--surface-2);font-size:24px;font-weight:500;display:flex;align-items:center;justify-content:center}.stepper button:active{background:var(--line)}.stepper-value{flex:1;text-align:center;font-size:30px;font-weight:650;font-variant-numeric:tabular-nums;letter-spacing:-.02em}.stepper-unit{font-size:15px;color:var(--ink-faint);font-weight:400}.toast{position:fixed;left:var(--gutter);right:var(--gutter);bottom:calc(var(--bar-height) + 10px);z-index:40;max-width:648px;margin:0 auto;background:var(--ink);color:var(--ground);border-radius:14px;padding:12px 14px;display:flex;align-items:center;gap:12px;font-size:15px;box-shadow:0 8px 24px #2b1e2638}.toast button{color:var(--berry);font-weight:600;margin-left:auto;padding:4px 2px}.empty{text-align:center;color:var(--ink-faint);padding:40px 20px;font-size:15px}.search{width:100%;min-height:var(--tap);padding:0 14px;border-radius:12px;border:1px solid var(--line);background:var(--surface);margin-bottom:12px}.chips{display:flex;gap:8px;overflow-x:auto;padding-bottom:10px;margin:0 calc(var(--gutter) * -1);padding-left:var(--gutter);padding-right:var(--gutter);scrollbar-width:none}.chips::-webkit-scrollbar{display:none}.chip{flex:none;padding:7px 14px;border-radius:999px;background:var(--surface);border:1px solid var(--line);font-size:14px;color:var(--ink-soft)}.chip.is-active{background:var(--plum);border-color:var(--plum);color:#fff}.stat-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:10px}.stat{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:14px}.stat-label{font-size:13px;color:var(--ink-faint)}.stat-value{font-size:22px;font-weight:650;font-variant-numeric:tabular-nums;letter-spacing:-.02em;margin-top:2px}.checkbox{width:26px;height:26px;border-radius:8px;border:1.5px solid var(--line);flex:none;display:flex;align-items:center;justify-content:center;color:transparent}.checkbox.is-on{background:var(--good);border-color:var(--good);color:#fff}.is-bought .row-name{text-decoration:line-through;color:var(--ink-faint)}@media(prefers-reduced-motion:reduce){*{transition:none!important;animation:none!important}}
