:root{--font-display: "Spline Sans", Inter, ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";--font-mono: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;--sp-half: 2px;--sp-1: 4px;--sp-2: 8px;--sp-3: 16px;--sp-4: 24px;--sp-5: 32px;--sp-6: 64px;--max-content: 800px;--tabbar-h: 64px;--text: #000000;--bg: #ffffff;--bg-element: #f0f0f3;--bg-selected: #e0e1e6;--text-secondary: #60646c;--primary: #208aef;--danger: #f7554c;--warn: #e0621d;--success-toast: #2e7d4f;--error-toast: #c93c33;--qty-low: #f7c94c33;--qty-out: #f7554c33}@media(prefers-color-scheme:dark){:root{--text: #ffffff;--bg: #000000;--bg-element: #212225;--bg-selected: #2e3135;--text-secondary: #b0b4ba}}*{box-sizing:border-box}html,body,#root{height:100%}body{margin:0;font-family:var(--font-display);background:var(--bg);color:var(--text);font-size:16px;line-height:1.5;-webkit-font-smoothing:antialiased;-webkit-tap-highlight-color:transparent}button{font-family:inherit;cursor:pointer;border:none;background:none;color:inherit}input,textarea{font-family:inherit}a{color:inherit}.t-subtitle{font-size:32px;line-height:44px;font-weight:600;margin:0}.t-title{font-size:48px;line-height:52px;font-weight:600;margin:0}.t-small{font-size:14px;line-height:20px;font-weight:500}.t-small-bold{font-size:14px;line-height:20px;font-weight:700}.t-secondary{color:var(--text-secondary)}.t-code{font-family:var(--font-mono);font-size:12px;font-weight:500;word-break:break-all}.t-link{font-size:14px;color:var(--text-secondary);text-decoration:none;cursor:pointer}.t-link-primary{font-size:14px;color:var(--primary);text-decoration:none;cursor:pointer}.app-shell{min-height:100dvh;display:flex;flex-direction:column;align-items:center}.page{width:100%;max-width:var(--max-content);flex:1;display:flex;flex-direction:column;padding:0 var(--sp-3);padding-bottom:calc(var(--tabbar-h) + env(safe-area-inset-bottom,0px))}.page-header{display:flex;align-items:baseline;justify-content:space-between;gap:var(--sp-3);padding:var(--sp-3) 0;padding-top:calc(var(--sp-3) + env(safe-area-inset-top,0px))}.header-actions{display:flex;align-items:center;gap:var(--sp-2)}.list{flex:1;overflow-y:auto;display:flex;flex-direction:column;gap:var(--sp-2);padding-bottom:var(--sp-3)}.section-header{margin-top:var(--sp-3);color:var(--text-secondary);font-size:14px;font-weight:700}.empty{text-align:center;margin-top:var(--sp-5);color:var(--text-secondary);font-size:14px}.row{display:flex;align-items:center;gap:var(--sp-3);background:var(--bg-element);border-radius:var(--sp-3);padding:var(--sp-3)}.row-main{flex:1;display:flex;flex-direction:column;gap:var(--sp-half);min-width:0}.row-text{flex:1;min-width:0}.card{background:var(--bg-element);border-radius:var(--sp-3);padding:var(--sp-3);display:flex;flex-direction:column;gap:var(--sp-2)}.thumbnail{width:36px;height:36px;border-radius:var(--sp-2);background:#7f7f7f26;object-fit:cover;flex-shrink:0;cursor:zoom-in}.checked-text{text-decoration:line-through;color:var(--text-secondary)}.checkbox{width:22px;height:22px;border-radius:11px;border:2px solid var(--text-secondary);display:flex;align-items:center;justify-content:center;flex-shrink:0}.checkbox.on{background:var(--text);border-color:var(--text);color:var(--bg);font-size:13px;font-weight:700}.btn{border-radius:var(--sp-3);padding:12px var(--sp-3);display:inline-flex;align-items:center;justify-content:center;gap:var(--sp-2);font-weight:500;transition:opacity .15s ease}.btn:disabled{opacity:.4;cursor:default}.btn-primary{background:var(--text);color:var(--bg)}.btn-accent{background:var(--primary);color:#fff}.btn-element{background:var(--bg-element);color:var(--text)}.btn-block{width:100%}.btn-sm{border-radius:var(--sp-2);padding:var(--sp-1) var(--sp-2);font-size:14px;font-weight:500}.icon-btn{border-radius:var(--sp-3);width:48px;height:48px;display:flex;align-items:center;justify-content:center;flex-shrink:0}.delete-x{padding:0 var(--sp-1);opacity:.6;color:var(--text-secondary);font-weight:700;font-size:14px}.delete-x:hover{opacity:1}.input{width:100%;background:var(--bg-element);color:var(--text);border-radius:var(--sp-3);padding:12px var(--sp-3);font-size:16px;border:none;outline:none}.input:focus-visible{outline:2px solid var(--primary);outline-offset:1px}.input::placeholder{color:var(--text-secondary)}textarea.input{resize:vertical;min-height:60px;line-height:1.4}.chips-row{display:flex;align-items:center;gap:var(--sp-2)}.chips-label{width:72px;flex-shrink:0;color:var(--text-secondary);font-size:14px}.chips{display:flex;gap:var(--sp-2);overflow-x:auto;scrollbar-width:none;padding-bottom:2px}.chips::-webkit-scrollbar{display:none}.chips.wrap{flex-wrap:wrap;overflow:visible}.chip{white-space:nowrap;border-radius:var(--sp-3);padding:var(--sp-1) var(--sp-3);border:1px solid transparent;background:var(--bg-element);color:var(--text-secondary);font-size:14px;font-weight:500;flex-shrink:0}.chip.active{background:var(--bg-selected);border-color:var(--text);color:var(--text);font-weight:700}.add-bar{display:flex;flex-direction:column;gap:var(--sp-2);padding:var(--sp-2) 0}.add-row{display:flex;gap:var(--sp-2)}.qty-badge{border-radius:var(--sp-2);padding:var(--sp-1) var(--sp-3);min-width:56px;text-align:center;font-size:14px;font-weight:700;background:var(--bg-selected)}.expiry-warn{color:var(--warn)!important}.tabbar{position:fixed;bottom:0;left:0;right:0;height:calc(var(--tabbar-h) + env(safe-area-inset-bottom,0px));padding-bottom:env(safe-area-inset-bottom,0px);background:color-mix(in srgb,var(--bg) 88%,transparent);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);border-top:1px solid var(--bg-element);display:flex;justify-content:center;z-index:100}.tabbar-inner{width:100%;max-width:var(--max-content);display:flex}.tab{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;color:var(--text-secondary);font-size:11px;font-weight:600;text-decoration:none;padding-top:var(--sp-1)}.tab .tab-icon{font-size:20px;line-height:1}.tab.active{color:var(--text)}.backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#00000080;display:flex;justify-content:center;align-items:flex-end;z-index:200}.sheet{width:100%;max-width:var(--max-content);background:var(--bg);border-top-left-radius:var(--sp-4);border-top-right-radius:var(--sp-4);padding:var(--sp-3);padding-bottom:calc(var(--sp-3) + env(safe-area-inset-bottom,0px));max-height:85vh;overflow-y:auto;display:flex;flex-direction:column;gap:var(--sp-3)}.sheet-header{display:flex;align-items:center;justify-content:space-between}.viewer-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#000000e0;display:flex;flex-direction:column;align-items:center;justify-content:center;z-index:300;cursor:zoom-out}.viewer-img{max-width:90%;max-height:60%;border-radius:12px;object-fit:contain}.viewer-title{color:#fff;margin-top:16px}.viewer-hint{color:#ffffff80;margin-top:4px;font-size:14px}.toast{position:fixed;top:calc(var(--sp-2) + env(safe-area-inset-top,0px));left:50%;transform:translate(-50%);max-width:85%;border-radius:var(--sp-3);padding:var(--sp-2) var(--sp-3);color:#fff;text-align:center;font-size:14px;z-index:400;animation:toast-in .18s ease}.toast.success{background:var(--success-toast)}.toast.error{background:var(--error-toast)}@keyframes toast-in{0%{opacity:0;transform:translate(-50%,-6px)}to{opacity:1;transform:translate(-50%)}}.chart{display:flex;align-items:flex-end;height:140px;gap:var(--sp-2)}.chart-col{flex:1;display:flex;flex-direction:column;align-items:center;height:100%}.chart-value{font-size:10px;line-height:14px;color:var(--text-secondary)}.chart-track{flex:1;width:100%;display:flex;justify-content:flex-end;flex-direction:column;align-items:center}.chart-bar{width:70%;border-radius:var(--sp-1);min-height:2px;background:var(--text)}.chart-bar.empty{background:var(--bg-selected)}.chart-label{font-size:10px;line-height:14px;color:var(--text-secondary)}.center-screen{min-height:100dvh;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:var(--sp-5);gap:var(--sp-3);text-align:center}.inline{display:flex;align-items:center;gap:var(--sp-2)}.spinner{width:22px;height:22px;border:2px solid var(--text-secondary);border-top-color:transparent;border-radius:50%;animation:spin .7s linear infinite}.spinner.on-dark{border-color:#fff;border-top-color:transparent}@keyframes spin{to{transform:rotate(360deg)}}@media(prefers-reduced-motion:reduce){*{animation-duration:.001ms!important;transition-duration:.001ms!important}}@media(min-width:840px){.page{padding-left:var(--sp-4);padding-right:var(--sp-4)}}
