:root{--bg:#f1f3ef;--surface:#fff;--ink:#19211c;--muted:#6b766f;--faint:#9aa39d;--line:#dee3dc;--accent:#2c5a3b;--accent-soft:#e7efe8;--warn:#8e5a12;--warn-soft:#f5ebda;--radius:14px;--radius-sm:10px;--track:#e4e8e1;--text-xs:11px;--text-sm:12.5px;--text-md:14.5px;--text-lg:17px;--text-xl:20px;color:var(--ink);background:var(--bg);-webkit-font-smoothing:antialiased;font-family:Zen Kaku Gothic New,Noto Sans CJK JP,Hiragino Sans,Yu Gothic UI,sans-serif;line-height:1.6}*{box-sizing:border-box}body{background:var(--bg);margin:0}button,input,textarea{font-family:inherit}.screen{max-width:480px;margin:0 auto;padding:15px 18px 28px}.heading{font-size:var(--text-md);margin:22px 0 9px;font-weight:700}.sect{font-size:var(--text-sm);letter-spacing:.04em;margin:3px 0 9px;font-weight:700}.buy-list+.sect{margin-top:21px}.section-heading{font-size:var(--text-xs);color:var(--accent);letter-spacing:.06em;margin:20px 0 9px;font-weight:700}.subheading{font-size:var(--text-xs);color:var(--faint);letter-spacing:.06em;margin:14px 0 6px}.cat{font-size:var(--text-xs);color:var(--faint);letter-spacing:.06em;margin:16px 0 7px}.empty{font-size:var(--text-sm);color:var(--muted)}.app-header{justify-content:space-between;align-items:baseline;max-width:480px;margin:0 auto;padding:17px 18px 11px;display:flex}.wordmark{letter-spacing:.06em;font-size:16px;font-weight:700}.today{color:var(--faint);font-size:11.5px}.tabbar{z-index:1;background:var(--bg);border-bottom:1px solid var(--line);gap:22px;padding:0 max(18px,50% - 222px);display:flex;position:sticky;top:0}.tab{color:var(--muted);cursor:pointer;background:0 0;border:none;border-bottom:2px solid #0000;margin-bottom:-1px;padding:10px 1px;font-size:14px}.tab-current{color:var(--ink);border-bottom-color:var(--accent);font-weight:700}.mode-switch{background:var(--track);border-radius:9px;margin-bottom:15px;padding:2.5px;display:inline-flex}.mode-button{font-size:var(--text-sm);color:var(--muted);cursor:pointer;background:0 0;border:none;border-radius:7px;padding:5px 15px}.mode-button-on{color:var(--ink);background:var(--surface);font-weight:700;box-shadow:0 1px 1.5px #19211c1a}.card{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);margin-bottom:11px}.card-main{text-align:left;width:100%;font:inherit;color:inherit;border-radius:var(--radius);cursor:pointer;background:0 0;border:none;padding:16px 16px 13px;display:block}.card-main>span{display:block}.card-featured .card-main{padding:17px 17px 15px}.card-main>.status{font-size:var(--text-xs);letter-spacing:.02em;border-radius:6px;margin-bottom:12px;padding:4px 9px;font-weight:700;display:inline-block}.status-ok{color:var(--accent);background:var(--accent-soft)}.status-buy{color:var(--muted);background:#edefeb}.card-title{font-size:var(--text-md);font-weight:700;line-height:1.45}.card-featured .card-title{font-size:var(--text-lg);line-height:1.4}.card-ingredients{font-size:var(--text-sm);color:var(--muted);margin-top:2px}.card-main>.dishes{flex-direction:column;display:flex}.dish{align-items:baseline;gap:11px;padding:4px 0;display:flex}.role{color:var(--accent);letter-spacing:.06em;flex:0 0 30px;padding-top:1px;font-size:10.5px;font-weight:700}.dish-name{font-size:var(--text-md);font-weight:700;line-height:1.45}.card-featured .dish-name{font-size:var(--text-lg);letter-spacing:.01em;line-height:1.4}.card-main>.card-rule{background:var(--line);height:1px;margin:12px 0 10px}.card-featured .card-main>.card-rule{margin:14px 0 11px}.card-main>.card-info{align-items:baseline;gap:16px;display:flex}.num{letter-spacing:.01em;font-size:15px;font-weight:700}.card-featured .num{font-size:var(--text-lg)}.unit{font-size:var(--text-xs);color:var(--muted);margin-left:1.5px}.unit-before{margin:0 1.5px 0 0}.why{color:var(--muted);margin-top:9px;font-size:12px;line-height:1.5}.why-alert{color:var(--warn)}.why-alert:before{content:"";vertical-align:2px;background:var(--warn);border-radius:50%;width:5px;height:5px;margin-right:6px;display:inline-block}.card-footer{border-top:1px dashed var(--line);margin:0 16px;padding:10px 0 13px}.add-buy{font-size:var(--text-sm);color:var(--accent);background:var(--surface);border:1px solid var(--accent);cursor:pointer;border-radius:999px;padding:6px 12px;font-weight:700}.add-buy:hover{background:var(--accent-soft)}.add-buy:disabled{color:var(--faint);border-color:var(--line);cursor:default;background:0 0;font-weight:400}.more-candidates{margin:15px 0 20px}.pager,.more-position{text-align:center;color:var(--faint);margin:0 0 8px;font-size:11.5px}.pager{margin-top:22px}.more-wrapped{font-size:var(--text-sm);text-align:center;color:var(--ink);margin:0 0 6px}.more-button{text-align:center;width:100%;color:var(--accent);background:var(--surface);border:1px solid var(--accent);border-radius:var(--radius-sm);cursor:pointer;padding:12px;font-size:13.5px;font-weight:700;display:block}.ask{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);margin-bottom:15px;padding:12px 15px}.ask-question{font-size:var(--text-md);margin:0 0 10px;font-weight:700}.ask-buttons{gap:8px;display:flex}.ask-buttons button{font-size:var(--text-md);color:var(--ink);background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-sm);cursor:pointer;flex:1;padding:8px}.ask-buttons button:first-child{color:var(--accent);border-color:var(--accent);font-weight:700}.made-message{font-size:var(--text-sm);color:var(--accent);background:var(--accent-soft);border-radius:var(--radius-sm);margin:0 0 12px;padding:9px 12px}.ai-consult{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);margin:8px 0 20px;padding:14px 15px 15px}.ai-consult .heading{margin:0 0 4px}.ai-note{font-size:var(--text-sm);color:var(--muted);margin:0 0 10px}.ai-conditions{flex-wrap:wrap;gap:7px;margin-bottom:12px;display:flex}.ai-condition{font-size:var(--text-sm);color:var(--ink);background:var(--surface);border:1px solid var(--line);cursor:pointer;border-radius:9px;padding:5px 11px}.ai-condition-on{color:var(--accent);background:var(--accent-soft);border-color:var(--accent);font-weight:700}.ai-copy{width:100%;color:var(--ink);background:var(--bg);border:1px solid var(--line);border-radius:var(--radius-sm);cursor:pointer;padding:11px;font-size:13.5px;font-weight:700;display:block}.ai-result{margin:12px 0 0}.ai-text{width:100%;font-size:var(--text-sm);border:1px solid var(--line);border-radius:var(--radius-sm);margin-top:8px;padding:8px;display:block}.buy-list{margin-bottom:4px}.buy-box{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);margin:0 0 5px;padding:5px 15px;list-style:none}.buy-row{border-bottom:1px solid var(--line);align-items:center;gap:11px;padding:11px 0;display:flex}.buy-row:last-child{border-bottom:none}.buy-item{cursor:pointer;flex:1;align-items:center;gap:11px;display:flex}.buy-check{appearance:none;cursor:pointer;border:1.5px solid #c3cbc2;border-radius:5px;flex:0 0 18px;width:18px;height:18px;margin:0}.buy-check:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.buy-name{font-size:var(--text-md);font-weight:700;display:block}.buy-for{font-size:var(--text-xs);color:var(--faint);margin-top:2px;display:block}.buy-note{font-size:var(--text-xs);color:var(--faint);margin:4px 0 0}.remove-x{color:#bcc4bc;cursor:pointer;background:0 0;border:none;margin-left:auto;padding:4px 6px;font-size:16px;line-height:1}.chip-hint{font-size:var(--text-xs);color:var(--faint);margin:0 0 2px}.chips{flex-wrap:wrap;gap:7px;display:flex}.chip-wrap{position:relative}.chip{color:var(--ink);background:var(--surface);border:1px solid var(--line);cursor:pointer;border-radius:9px;align-items:baseline;gap:7px;padding:7px 11px;font-size:13.5px;display:inline-flex}.chip-days{color:var(--faint);font-size:10.5px}.chip-soon{background:var(--warn-soft);border-color:#e6d3b4}.chip-soon .chip-days{color:var(--warn);font-weight:700}.chip-open{border-color:var(--accent);box-shadow:0 0 0 1px var(--accent)}.chip-menu{z-index:2;white-space:nowrap;background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-sm);gap:6px;padding:6px;display:flex;position:absolute;top:calc(100% + 5px);left:0;box-shadow:0 6px 18px #19211c24}.chip-menu-right{left:auto;right:0}.chip-menu-item{font-size:var(--text-sm);color:var(--accent);background:var(--accent-soft);cursor:pointer;border:none;border-radius:8px;padding:6px 12px;font-weight:700}.chip-menu-remove{color:var(--muted);background:var(--track)}.shopping-note{font-size:var(--text-sm);color:var(--muted);margin:0 0 8px}.shopping-items{flex-wrap:wrap;gap:7px;display:flex}.shopping-item{color:var(--ink);background:var(--surface);border:1px solid var(--line);cursor:pointer;border-radius:9px;padding:7px 11px;font-size:13.5px}.shopping-item-note{margin-left:6px;font-size:10.5px}.shopping-item-stock{border:1.5px solid var(--accent)}.shopping-item-bought{color:#fff;background:var(--accent);border-color:var(--accent)}.shopping-item-remove{color:var(--faint);background:var(--track);text-decoration:line-through}.shopping-actions{background:var(--bg);padding:12px 0;position:sticky;bottom:0}.shopping-actions .made{margin:0}.back{font-size:var(--text-sm);color:var(--muted);cursor:pointer;background:0 0;border:none;padding:4px 0}.detail-title{font-size:var(--text-xl);margin:8px 0 0;font-weight:700;line-height:1.4}.card-meta{font-size:var(--text-sm);color:var(--muted);margin:2px 0 12px}.meal-availability{font-size:var(--text-sm);color:var(--muted);margin:-6px 0 6px}.meal-can-make{color:var(--accent)}.meal-note{font-size:var(--text-xs);color:var(--faint);margin:-28px 0 40px}.ingredients{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);margin:0;padding:4px 15px;list-style:none}.ingredients li{font-size:var(--text-md);border-bottom:1px solid var(--line);align-items:baseline;gap:8px;padding:9px 0;display:flex}.ingredients li:last-child{border-bottom:none}.amount{font-size:var(--text-sm);color:var(--muted)}.mark{font-size:var(--text-xs);margin-left:auto}.mark-have{color:var(--accent);font-weight:700}.mark-staple{color:var(--faint)}.detail-buy{text-align:right;margin-top:10px}.steps{font-size:var(--text-md);background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);margin:0;padding:12px 15px 12px 34px}.steps li{margin-bottom:8px;line-height:1.7}.steps li:last-child{margin-bottom:0}.made{color:#fff;background:var(--accent);border-radius:var(--radius-sm);cursor:pointer;border:none;width:100%;margin:24px 0 40px;padding:14px;font-size:15px;font-weight:700;display:block}.made:disabled{color:var(--faint);background:var(--track);cursor:default}.recipe-image{background:#f7f1e6;flex-shrink:0;display:block;overflow:hidden}.recipe-image img{object-fit:contain;width:100%;height:100%;display:block}.detail-image{border-radius:var(--radius);width:100%;height:180px;margin-top:8px}.reflection{font-size:var(--text-sm);color:var(--accent);background:var(--accent-soft);border-radius:var(--radius);padding:12px 15px}.reflection p{margin:0}.reflection p+p{margin-top:6px}.history{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);margin:0;padding:2px 15px;list-style:none}.history li{font-size:var(--text-md);border-bottom:1px solid var(--line);justify-content:space-between;align-items:center;padding:9px 0;display:flex}.history li:last-child{border-bottom:none}.remove{color:#bcc4bc;cursor:pointer;background:0 0;border:none;padding:4px 6px;font-size:16px;line-height:1}.backup{border-top:1px solid var(--line);margin:36px 0 40px;padding-top:14px}.backup-note{font-size:var(--text-sm);color:var(--muted);margin:0 0 12px}.backup-buttons{gap:8px;display:flex}.backup-button{text-align:center;color:var(--ink);background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-sm);cursor:pointer;flex:1;padding:10px 0;font-size:13.5px}.backup .ask,.backup-result{margin:12px 0 0}.backup-error{font-size:var(--text-sm);color:var(--warn);background:var(--warn-soft);border-radius:var(--radius-sm);margin:12px 0 0;padding:9px 12px}.intro{font-size:var(--text-sm);color:var(--muted);background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);margin-bottom:18px;padding:14px 16px;line-height:1.7}.intro p{margin:0}.intro p+p{margin-top:4px}.intro-lead{font-size:var(--text-md);color:var(--ink);margin-bottom:6px;font-weight:600}
