:root { color-scheme: light; font-family: Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif; color: #17231c; background: #f3f7f4; --green-950:#0c2e20; --green-800:#15573b; --green-600:#24845a; --green-100:#e4f3ea; --line:#dce7e0; --muted:#607067; }
* { box-sizing: border-box; }
body { margin: 0; min-height: 100vh; background: radial-gradient(circle at 10% 0%, #e0f1e7 0, transparent 32rem), #f3f7f4; }
body.is-loading { cursor: progress; }
a { color: #176b45; }
.topbar { position: sticky; top: 0; z-index: 20; display: grid; grid-template-columns: auto 1fr auto; gap: 2rem; align-items: center; padding: .8rem max(4vw, 1rem); background: rgba(12,46,32,.96); color: white; box-shadow: 0 8px 30px rgba(12,46,32,.12); backdrop-filter: blur(14px); }
.topbar a, .link-button { color: white; text-decoration: none; }
.topbar nav { display: flex; gap: .3rem; align-items: center; }
.primary-nav a { display:flex; align-items:center; gap:.38rem; padding: .48rem .68rem; border-radius: 10px; color: #d8e8df; }
.primary-nav a:hover { background: rgba(255,255,255,.1); color: white; }
.nav-icon { display:grid; place-items:center; width:24px; height:24px; border-radius:7px; background:rgba(255,255,255,.08); color:#d8f26f; font-size:.95rem; }
.topbar form { margin: 0; }
.brand { display: flex; align-items: center; gap: .7rem; font-size: 1.05rem; font-weight: 850; line-height: 1.1; }
.brand small { color: #a9c9b7; font-size: .62rem; font-weight: 500; }
.brand-mark { display: grid; place-items: center; width: 38px; height: 38px; border-radius: 12px 12px 12px 4px; background: linear-gradient(135deg,#59c887,#d8f26f); color: #0c2e20; font-size: 1.2rem; box-shadow: inset 0 0 0 1px rgba(255,255,255,.3); }
.account-nav { display: flex; align-items: center; gap: .7rem; }
.user-chip { display: grid; place-items: center; width: 34px; height: 34px; border-radius: 50%; background: #2f7352; font-weight: 800; }
.link-button { background: none; padding: 0; }
.container { width: min(1240px, 92vw); margin: 2rem auto 4rem; }
.heading-row { display: flex; justify-content: space-between; align-items: center; gap: 1rem; }
.dashboard-hero { display: flex; justify-content: space-between; align-items: end; gap: 2rem; padding: clamp(1.5rem,4vw,3rem); margin-bottom: 1.2rem; border-radius: 24px; color: white; background: linear-gradient(125deg,#0c3525 0%,#176b45 65%,#2b8e62 100%); box-shadow: 0 18px 45px rgba(17,84,56,.18); overflow: hidden; position: relative; }
.dashboard-hero::after { content:""; position:absolute; width:260px; height:260px; border-radius:50%; right:-80px; top:-130px; background:rgba(217,243,166,.14); }
.dashboard-hero > * { position:relative; z-index:1; }
.dashboard-hero h1 { max-width: 720px; margin: .25rem 0 .6rem; font-size: clamp(1.8rem,4vw,3.25rem); line-height: 1.05; letter-spacing: -.04em; }
.dashboard-hero p { margin-bottom: 0; color: #d7e8de; }
.quick-actions { display:flex; flex-wrap:wrap; justify-content:flex-end; gap:.6rem; min-width:280px; }
.button-light { background:white; color:#15573b; }
.button-ghost { background:rgba(255,255,255,.12); border:1px solid rgba(255,255,255,.22); }
.cards { display: grid; grid-template-columns: repeat(3, 1fr); gap: 1rem; margin: 1.5rem 0; }
.card, .panel, .mini-card { background: rgba(255,255,255,.94); border: 1px solid var(--line); border-radius: 16px; box-shadow: 0 8px 26px rgba(20,61,43,.055); }
.card { padding: 1.2rem; display: flex; align-items:center; gap: 1rem; }
.card > div { display:grid; gap:.15rem; }
.card strong { font-size: 2rem; }
.card.warning { border-color: #efb78d; }
.stat-icon { display:grid; place-items:center; flex:0 0 auto; width:48px; height:48px; border-radius:14px; font-size:1.35rem; font-weight:900; }
.stat-icon.green { background:#e3f4e9; color:#176b45; }.stat-icon.blue { background:#e4f0f8; color:#286a96; }.stat-icon.orange { background:#fff0df; color:#b65c1f; }
.panel { padding: 1.25rem; margin: 1rem 0; }
.section-panel { padding:1.4rem; }
.section-panel h2 { margin-top:0; }
.dashboard-grid { display:grid; grid-template-columns:1fr 1fr; gap:1rem; }
.narrow { max-width: 460px; margin-inline: auto; }
.setup-panel { margin-top: 6vh; }
.eyebrow { color: #176b45; font-size: .8rem; font-weight: 800; letter-spacing: .08em; text-transform: uppercase; }
.errorlist { color: #9b2c2c; padding-left: 1.2rem; }
.helptext { display: block; color: #5a6a61; font-size: .85rem; margin-top: .3rem; }
.recipe-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(150px, 1fr)); gap: 1rem; }
.mini-card { padding: .8rem; display: grid; gap: .4rem; }
.mini-card img { width: 100%; height: 110px; object-fit: cover; border-radius: 9px; }
button, .button { display: inline-block; border: 0; border-radius: 10px; padding: .72rem 1rem; background: #176b45; color: white; font: inherit; font-weight: 750; text-decoration: none; cursor: pointer; transition: transform .15s ease, box-shadow .15s ease, background .15s ease; }
button:hover, .button:hover { transform: translateY(-1px); box-shadow:0 6px 15px rgba(23,107,69,.15); }
input, select, textarea { width: 100%; padding: .7rem; border: 1px solid #b9c9c0; border-radius: 8px; background: white; }
.form-grid > div { margin-bottom: 1rem; }
.form-grid label { display: block; font-weight: 700; margin-bottom: .3rem; }
.form-actions { display: flex; gap: 1rem; align-items: center; }
.capture-panel { max-width: 820px; margin-inline: auto; }
.voice-capture { padding: 1rem; margin: 1rem 0 1.4rem; border: 1px solid #b8d8c7; border-radius: 12px; background: #eef8f2; }
.voice-actions { display: flex; flex-wrap: wrap; gap: .7rem; }
.voice-button { font-size: 1.05rem; }
.button-secondary { background: #52665a; }
.voice-status { margin-bottom: 0; color: #415249; }
.voice-transcript { font-weight: 700; margin-bottom: 0; }
.minimal-fields { display: grid; grid-template-columns: minmax(0, 2fr) minmax(100px, .7fr) minmax(130px, 1fr); gap: 1rem; }
.minimal-fields > div, .details-grid > div { margin-bottom: 1rem; }
.additional-fields { border: 1px solid #d4e1da; border-radius: 10px; margin: 1.2rem 0; }
.additional-fields summary { cursor: pointer; padding: 1rem; font-weight: 800; color: #176b45; }
.details-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 0 1rem; padding: .25rem 1rem 1rem; }
.wide-field { grid-column: 1 / -1; }
.messages { margin-bottom: 1rem; }
.message { padding: .8rem 1rem; border-radius: 9px; background: #e8f4ed; }
.message.warning { background: #fff2df; }
.suggestion-notice { border-color: #a9c8b7; }
.suggestion-list { display: grid; gap: .8rem; }
.suggestion-list div { padding-bottom: .8rem; border-bottom: 1px solid #e5ece8; }
.suggestion-list dt { font-weight: 800; }
.suggestion-list dd { margin: .3rem 0 0; }
.privacy-note { color: #5a6a61; font-size: .9rem; }
.review-actions { display: flex; flex-wrap: wrap; gap: .7rem; }
.button-danger { background: #9b2c2c; }
.recipe-filters { display: grid; grid-template-columns: 1.5fr 1.15fr .9fr 1.05fr 1fr auto auto; gap: .75rem; align-items: end; }
.recipe-filters label { display: block; font-weight: 700; margin-bottom: .3rem; }
.recipe-card-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(230px, 1fr)); gap: 1rem; }
.recipe-card-grid.compact { grid-template-columns: repeat(auto-fill, minmax(180px, 1fr)); }
.recipe-card { overflow: hidden; background: white; border: 1px solid #dce7e0; border-radius: 14px; }
.recipe-card > img { width: 100%; height: 150px; object-fit: cover; }
.recipe-card-media { position:relative; height:150px; overflow:hidden; background:linear-gradient(135deg,#e6f2eb,#cfe2d7); }.recipe-card-media > img { width:100%; height:100%; object-fit:cover; transition:transform .25s ease; }.recipe-image-placeholder { display:grid; place-items:center; width:100%; height:100%; color:#176b45; font-size:2.4rem; }.recipe-card-actions { position:absolute; inset:auto .55rem .55rem .55rem; display:flex; justify-content:flex-end; gap:.3rem; opacity:0; transform:translateY(8px); transition:.18s ease; }.recipe-card:hover .recipe-card-actions,.recipe-card:focus-within .recipe-card-actions { opacity:1; transform:none; }.recipe-card:hover .recipe-card-media > img { transform:scale(1.035); }.recipe-card-actions form { margin:0; }.recipe-card-actions a,.recipe-card-actions button { display:grid; place-items:center; width:38px; height:38px; padding:0; border:1px solid rgba(255,255,255,.65); border-radius:10px; background:rgba(20,42,31,.82); color:white; text-decoration:none; font-size:1.05rem; cursor:pointer; backdrop-filter:blur(8px); }.recipe-card-actions .danger { background:rgba(139,42,36,.9); }.card-rating-icons { display:flex; gap:.06rem; margin-top:.45rem; }.card-rating-icons span { filter:grayscale(1); opacity:.18; font-size:.86rem; }.card-rating-icons span.active { filter:none; opacity:1; }
.recipe-card-body { padding: 1rem; }
.recipe-card-body h2 { margin-top: 0; }
.recipe-group { margin:1.8rem 0; }.recipe-group-heading { display:flex; justify-content:space-between; align-items:end; margin-bottom:.8rem; }.recipe-group-heading h2 { margin:.1rem 0; font-size:1.5rem; }.recipe-group-heading p { margin:0; }
.availability-ready { color:#176b45; font-weight:800; }
.availability-pill { display:inline-flex; align-items:center; gap:.4rem; width:max-content; padding:.28rem .58rem; border-radius:99px; font-size:.78rem; font-weight:850; }.availability-pill i,.availability-light { display:block; width:.65rem; height:.65rem; border-radius:50%; box-shadow:0 0 0 3px rgba(255,255,255,.55); }.availability-pill.green,.recipe-availability-summary.green { color:#12613d; background:#dcf4e5; }.availability-pill.green i,.recipe-availability-summary.green .availability-light { background:#1d9a5d; }.availability-pill.yellow,.recipe-availability-summary.yellow { color:#775400; background:#fff0bf; }.availability-pill.yellow i,.recipe-availability-summary.yellow .availability-light { background:#e2a900; }.availability-pill.red,.recipe-availability-summary.red { color:#8d3028; background:#ffe2de; }.availability-pill.red i,.recipe-availability-summary.red .availability-light { background:#d94b3d; }.availability-pill.neutral,.recipe-availability-summary.neutral { color:var(--muted); background:#edf1ef; }.availability-pill.neutral i,.recipe-availability-summary.neutral .availability-light { background:#87958d; }.recipe-availability-summary { display:flex; align-items:center; gap:.8rem; width:max-content; max-width:100%; padding:.75rem 1rem; margin:1rem 0; border-radius:13px; }.recipe-availability-summary .availability-light { width:1rem; height:1rem; }.recipe-availability-summary small { margin:0; color:inherit; }.recipe-availability-summary strong { display:block; margin-top:.08rem; }
.badge { display: inline-block; padding: .2rem .5rem; border-radius: 99px; background: #e1f1e8; color: #176b45; font-size: .8rem; }
.recipe-editor { max-width: 820px; margin-inline: auto; }
.structured-editor { max-width:980px; }.structured-editor h2 { margin-top:.2rem; }.editor-grid { display:grid; grid-template-columns:1fr 1fr; gap:1rem; }.editor-grid.three-columns { grid-template-columns:repeat(3,1fr); }.editor-grid label,.editor-field label { display:block; font-weight:750; margin-bottom:.35rem; }.editor-field { margin-top:1rem; }.nutrition-editor { grid-template-columns:repeat(4,1fr); }
.recipe-detail-grid { display: grid; grid-template-columns: minmax(0, 2fr) minmax(280px, 1fr); gap: 1rem; align-items: start; }
.recipe-hero { width: 100%; max-height: 380px; object-fit: cover; border-radius: 10px; }
.allergen-warning { padding: .8rem; border-left: 4px solid #c2692d; background: #fff2df; }
.ingredient-list { list-style: none; padding: 0; }
.ingredient-list li { display: flex; justify-content: space-between; gap: 1rem; padding: .55rem 0; border-bottom: 1px solid #e5ece8; }
.ingredient-list .available span { color: #176b45; }
.ingredient-list .missing span { color: #9b2c2c; }
.recipe-page { max-width:1120px; margin:auto; }.recipe-page-header { display:grid; grid-template-columns:minmax(0,1.1fr) minmax(320px,.9fr); gap:2rem; align-items:center; margin-bottom:1rem; }.recipe-title-block h1 { font-size:clamp(2.2rem,5vw,4rem); line-height:1; letter-spacing:-.045em; margin:.25rem 0 1rem; }.recipe-lead { font-size:1.08rem; line-height:1.65; color:var(--muted); }.recipe-page-image { width:100%; height:min(54vw,480px); object-fit:cover; border-radius:24px; box-shadow:0 18px 45px rgba(17,84,56,.16); }.recipe-rating-summary { display:flex; gap:.7rem; align-items:center; margin:1rem 0; }.recipe-rating-summary strong { color:#b65c1f; font-size:1.1rem; }.recipe-facts { display:grid; grid-template-columns:repeat(5,1fr); gap:1px; overflow:hidden; margin:1.5rem 0; border:1px solid var(--line); border-radius:16px; background:var(--line); }.recipe-facts div { padding:1rem; background:white; }.recipe-facts small { margin:0 0 .25rem; }.recipe-content-grid { display:grid; grid-template-columns:minmax(0,1.65fr) minmax(280px,.75fr); gap:1.2rem; align-items:start; }.recipe-section { padding:clamp(1.2rem,3vw,2rem); }.recipe-section h2 { font-size:2rem; margin:.2rem 0 1.2rem; }.ingredient-scale { padding:1rem; border-radius:12px; background:#edf7f1; }.ingredient-scale form > div { display:grid; grid-template-columns:90px auto auto; gap:.5rem; align-items:center; }.ingredient-scale label { display:block; font-weight:750; margin-bottom:.4rem; }.ingredient-group-title { margin:1.5rem 0 .2rem; color:#176b45; }.structured-ingredients li { display:grid; grid-template-columns:110px 1fr auto; justify-content:start; }.structured-ingredients .ingredient-amount { color:#176b45; font-weight:800; }.structured-ingredients small { grid-column:2 / -1; }.instruction-steps { list-style:none; padding:0; counter-reset:steps; }.instruction-steps li { position:relative; padding:0 0 1.5rem 3.4rem; border-left:2px solid #cfe2d7; margin-left:1.1rem; }.instruction-steps li::before { content:counter(list-item); position:absolute; left:-1.15rem; top:0; display:grid; place-items:center; width:2.2rem; height:2.2rem; border-radius:50%; background:#176b45; color:white; font-weight:900; }.instruction-steps span { color:#176b45; font-weight:800; font-size:.82rem; text-transform:uppercase; }.instruction-steps p { line-height:1.7; }.recipe-tip { margin:1rem 0; padding:1.3rem 1.5rem; border-radius:16px; background:#fff3d7; border-left:5px solid #e3a936; }.recipe-tip span { font-weight:900; color:#8b5a00; }.recipe-sidebar { position:sticky; top:92px; }.nutrition-panel dl { margin:0; }.nutrition-panel dl div { display:flex; justify-content:space-between; gap:1rem; padding:.65rem 0; border-bottom:1px solid var(--line); }.nutrition-panel dt { color:var(--muted); }.nutrition-panel dd { margin:0; font-weight:850; }.recipe-source { padding:1rem 0 2rem; color:var(--muted); }
.recipe-rating-summary { flex-wrap:wrap; }.rating-pots { display:flex; gap:.08rem; }.rating-pots span { filter:grayscale(1); opacity:.22; font-size:1.15rem; }.rating-pots span.active { filter:none; opacity:1; }.pot-rating fieldset { display:flex; flex-direction:row-reverse; justify-content:flex-end; gap:.25rem; border:0; padding:0; margin:0 0 1rem; }.pot-rating input { position:absolute; opacity:0; pointer-events:none; }.pot-rating label { display:grid; place-items:center; width:46px; padding:.4rem .25rem; border:1px solid var(--line); border-radius:10px; cursor:pointer; filter:grayscale(1); opacity:.45; transition:.15s ease; }.pot-rating label span { font-size:1.35rem; }.pot-rating label small { margin:0; }.pot-rating label:hover,.pot-rating label:hover ~ label,.pot-rating input:checked ~ label { filter:none; opacity:1; background:#fff4df; border-color:#e8b25c; transform:translateY(-2px); }.sr-only { position:absolute; width:1px; height:1px; padding:0; margin:-1px; overflow:hidden; clip:rect(0,0,0,0); white-space:nowrap; border:0; }.ingredient-scale form > div { grid-template-columns:90px auto 1fr; }.auto-scale-status { color:var(--muted); font-size:.85rem; }
.instructions { line-height: 1.6; }
.recipe-note { padding: .7rem 0; border-bottom: 1px solid #e5ece8; }
.shopping-list { list-style: none; padding: 0; margin: 0; }
.shopping-list li { display: flex; gap: .8rem; align-items: center; padding: .55rem 0; border-bottom: 1px solid #e5ece8; }
.shopping-list form { margin: 0; }
.shopping-list button { padding: .35rem .6rem; }
.shopping-heading { margin-bottom:1rem; }
.shopping-list-large li { min-height:58px; padding:.8rem .2rem; }
.shopping-list-large li > span:last-child { flex:1; }
.shopping-list-large .checked { color:var(--muted); text-decoration:line-through; }
.print-checkbox,.print-only { display:none; }
.completed-shopping summary { cursor:pointer; font-weight:800; }
.empty-shopping-item { color:var(--muted); }
.header-actions { display: flex; flex-wrap: wrap; gap: .7rem; }
.icon-button { display:inline-flex; align-items:center; justify-content:center; gap:.45rem; }.icon-button > span:first-child { font-size:1.1rem; line-height:1; }
.modern-filters { padding:1rem; border-color:#cfe0d6; background:linear-gradient(135deg,rgba(255,255,255,.98),rgba(237,247,241,.95)); }.modern-filters label { display:flex; align-items:center; gap:.35rem; color:#294a3a; }.modern-filters label span { color:#176b45; font-size:1.1rem; }.modern-filters input,.modern-filters select { border-color:#c9dcd1; min-height:44px; }.filter-button { display:flex; align-items:center; justify-content:center; gap:.35rem; min-height:44px; }
.view-switch { display:inline-flex; gap:.3rem; padding:.3rem; margin-bottom:.3rem; border:1px solid var(--line); border-radius:12px; background:white; }.view-switch a { display:flex; align-items:center; gap:.4rem; padding:.62rem .9rem; border-radius:9px; color:var(--muted); text-decoration:none; font-weight:750; }.view-switch a.active { background:#176b45; color:white; box-shadow:0 5px 14px rgba(23,107,69,.18); }.shopping-section-heading { display:flex; align-items:center; gap:.6rem; }.modern-shopping-list li { display:grid; grid-template-columns:auto minmax(95px,.35fr) minmax(180px,1fr) auto; }.shopping-amount { color:#176b45; font-weight:850; }.shopping-name small { margin-top:.18rem; }.row-actions { display:flex; align-items:center; gap:.25rem; }.row-actions form { margin:0; }.row-icon { display:grid; place-items:center; width:36px; height:36px; padding:0; border:1px solid var(--line); border-radius:9px; background:#f7faf8; color:#176b45; text-decoration:none; font-size:1rem; cursor:pointer; list-style:none; }.inline-edit { position:relative; }.inline-edit summary::-webkit-details-marker { display:none; }.inline-edit[open] > summary { background:#176b45; color:white; }.inline-edit > form { position:absolute; z-index:10; right:0; top:44px; display:grid; grid-template-columns:1fr 90px; gap:.65rem; width:min(440px,85vw); padding:1rem; border:1px solid var(--line); border-radius:14px; background:white; box-shadow:0 18px 45px rgba(20,61,43,.2); }.inline-edit label { font-size:.8rem; font-weight:750; }.inline-edit label:nth-of-type(3) { grid-column:1 / -1; }.inline-edit button { align-self:end; }.danger-icon { color:#9b2c2c; background:#fff6f4; }.check-icon { border-radius:50%; background:white; color:#176b45; border:2px solid #7fba98; }.source-group-list { display:grid; gap:1rem; }.shopping-source-group { overflow:hidden; border:1px solid var(--line); border-radius:14px; }.shopping-source-group > header { display:flex; align-items:center; gap:.8rem; padding:.85rem 1rem; background:#edf7f1; }.shopping-source-group > header > span { display:grid; place-items:center; width:36px; height:36px; border-radius:10px; background:#176b45; color:white; }.shopping-source-group h2 { margin:0; font-size:1.08rem; }.shopping-source-group header small { margin:0; }.shopping-source-group .shopping-list { padding:0 1rem; }.shopping-source-group li { display:grid; grid-template-columns:auto 110px 1fr auto; }
.import-layout { display: grid; grid-template-columns: minmax(280px, .8fr) minmax(0, 1.4fr); gap: 1rem; align-items: start; }
.import-form > div { margin-bottom: 1rem; }
.import-form label, .preview-recipe label { display: block; font-weight: 700; margin: .8rem 0 .3rem; }
.import-preview { min-height: 420px; }
.empty-state { min-height: 360px; display: grid; place-content: center; justify-items: center; text-align: center; color: #607067; }
.empty-state > span { display: grid; place-items: center; width: 60px; height: 60px; border-radius: 18px; background: #e5f4eb; color: #176b45; font-size: 2rem; }
.compact-empty { min-height: 220px; grid-column: 1 / -1; }
.preview-recipe { border: 1px solid #dce7e0; border-radius: 12px; padding: .5rem 1rem 1rem; margin: 1rem 0; }
.preview-recipe summary { cursor: pointer; padding: .7rem 0; font-weight: 800; }
.duplicate-import-notice { display:flex; gap:.75rem; align-items:flex-start; padding:.85rem; margin:.35rem 0 .8rem; border:1px solid #e4c86f; border-radius:12px; background:#fff8dc; }.duplicate-import-notice > span { display:grid; place-items:center; flex:0 0 auto; width:34px; height:34px; border-radius:50%; background:#e2a900; color:white; font-weight:900; }.duplicate-import-notice p { margin:.2rem 0 0; }.import-action-choice { display:grid; gap:.45rem; padding:.75rem; margin:0 0 .8rem; border:1px solid var(--line); border-radius:10px; }.import-action-choice legend { padding:0 .35rem; font-weight:800; }.import-action-choice label { display:flex; align-items:center; gap:.55rem; margin:0; }.import-action-choice input { width:auto; }
.import-preview-image { width: min(100%, 420px); max-height: 260px; object-fit: cover; border-radius: 12px; display: block; margin: .4rem 0 1rem; }
.history-list { display: grid; gap: .5rem; }
.history-list a { display: flex; justify-content: space-between; gap: 1rem; padding: .7rem; border-radius: 9px; background: #f5f8f6; text-decoration: none; }
.htmx-indicator { display: none; }
.htmx-request .htmx-indicator, .htmx-request.htmx-indicator { display: inline; }
.meal-plan-heading form { margin: 0; }
.week-navigation { display: flex; justify-content: space-between; gap: 1rem; padding: .8rem 0 1rem; }
.week-grid { display: grid; grid-template-columns: repeat(7, minmax(180px, 1fr)); gap: .8rem; overflow-x: auto; padding-bottom: 1rem; }
.day-column { min-width: 180px; background: #f8faf9; border: 1px solid #dce7e0; border-radius: 16px; overflow: hidden; }
.day-column > header { display: flex; justify-content: space-between; padding: .9rem; background: #eaf4ee; }
.meal-slot { padding: .8rem; border-top: 1px solid #dce7e0; }
.meal-slot label { display: block; font-size: .75rem; font-weight: 800; text-transform: uppercase; color: #607067; margin-bottom: .35rem; }
.meal-slot.filled { background: white; }
.serving-row { display: grid; grid-template-columns: 60px 1fr auto; align-items: center; gap: .3rem; margin-top: .4rem; }
.serving-row button { padding: .45rem; }
.settings-saved { color:var(--muted); font-size:.85rem; }
.settings-form { display:grid; gap:.3rem; }
.settings-section { display:grid; grid-template-columns:minmax(210px,.55fr) minmax(0,1.45fr); gap:2rem; }
.settings-intro { display:flex; gap:.9rem; align-items:flex-start; }
.settings-intro > span { display:grid; place-items:center; flex:0 0 auto; width:38px; height:38px; border-radius:12px; background:var(--green-100); color:var(--green-800); font-weight:900; }
.settings-intro h2 { margin:.15rem 0 .3rem; }.settings-intro p { color:var(--muted); margin:0; }
.settings-grid { display:grid; grid-template-columns:1fr 1fr; gap:1rem; }
.settings-grid label { display:block; margin-bottom:.3rem; font-weight:750; }
.checkbox-field { display:flex; gap:.6rem; align-items:center; padding:.8rem; border:1px solid var(--line); border-radius:10px; }
.checkbox-field input { width:auto; }.checkbox-field label { margin:0; }
.sticky-settings-actions { position:sticky; bottom:1rem; z-index:5; display:flex; justify-content:flex-end; gap:.7rem; padding:1rem; border:1px solid var(--line); border-radius:14px; background:rgba(255,255,255,.94); box-shadow:0 10px 30px rgba(20,61,43,.12); backdrop-filter:blur(10px); }
.ai-mode-options { margin:.45rem 0 .35rem; display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:.55rem; }
.ai-mode-options > div > label { display:flex; align-items:center; gap:.5rem; min-height:54px; padding:.7rem .8rem; border:1px solid var(--line); border-radius:12px; background:#f8fbf7; cursor:pointer; }
.ai-mode-options input { width:auto; margin:0; }
.ai-mode-options label:has(input:checked) { border-color:var(--accent); background:#edf7e9; box-shadow:0 0 0 2px rgba(78,125,45,.12); }
.ai-usage-grid { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:.7rem; margin-top:1.2rem; }
.ai-usage-grid article { display:flex; flex-direction:column; gap:.25rem; padding:1rem; border:1px solid #dbe7d5; border-radius:14px; background:linear-gradient(145deg,#fbfdf9,#f0f7ed); }
.ai-usage-grid article > span,.ai-usage-grid small { color:var(--muted); }
.ai-usage-grid strong { font-size:1.35rem; color:#23452f; }
.ai-usage-grid .usage-warning { border-color:#e3ad45; background:#fff8e8; }
.settings-note { margin:.75rem 0 0; font-size:.82rem; color:var(--muted); }
.usage-history { margin-top:.8rem; border-top:1px solid var(--line); padding-top:.75rem; }
.usage-history summary { cursor:pointer; font-weight:700; }
.usage-history-list { display:grid; gap:.35rem; margin-top:.6rem; }
.usage-history-list > div { display:flex; justify-content:space-between; gap:1rem; padding:.55rem .7rem; border-radius:9px; background:#f7f8f5; font-size:.86rem; }
.capture-methods { display:grid; grid-template-columns:1fr 1fr; gap:.8rem; }
.capture-method { display:grid; grid-template-columns:auto 1fr; gap:.7rem; align-items:center; padding:1rem; border:1px solid #dce9df; border-radius:18px; background:linear-gradient(145deg,#fbfdf9,#eef7ee); }
.capture-method-icon { display:grid; place-items:center; width:48px; height:48px; border-radius:15px; color:#155e3d; background:white; box-shadow:0 7px 20px rgba(20,61,43,.08); font-size:1.5rem; }
.capture-method strong,.capture-method small { display:block; }.capture-method small { color:var(--muted); }
.capture-method input[type=file],.capture-method input[type=text] { grid-column:1/-1; }
.capture-method > button,.capture-inline-actions { grid-column:1/-1; }
.capture-inline-actions { display:flex; gap:.5rem; }.capture-inline-actions button { flex:1; }
.barcode-scanner { grid-column:1/-1; display:grid; grid-template-columns:minmax(220px,1fr) minmax(180px,.55fr); gap:1rem; align-items:center; padding:1rem; border-radius:18px; color:white; background:#112b21; }
.barcode-scanner[hidden] { display:none; }.barcode-scanner video { width:100%; max-height:360px; border-radius:14px; background:#07130e; object-fit:cover; }.barcode-scanner small { display:block; margin:.35rem 0 1rem; color:#c9ddd2; }
.capture-analysis { grid-column:1/-1; padding:1rem; border:1px solid #badbc5; border-radius:18px; background:#f1faf3; }.capture-analysis[hidden] { display:none; }
.capture-analysis-heading { display:flex; gap:.65rem; align-items:center; }.capture-analysis-heading > span { display:grid; place-items:center; width:38px; height:38px; border-radius:12px; color:white; background:#247750; }.capture-analysis-heading strong,.capture-analysis-heading small { display:block; }.capture-analysis-heading small { color:var(--muted); }
.capture-analysis p { margin:.65rem 0; }.capture-warning { padding:.55rem .7rem; border-radius:9px; color:#7b5700; background:#fff2ca; }
#analysis-sources { display:grid; gap:.35rem; margin-top:.65rem; }#analysis-sources > a,.retailer-links a { color:#176b45; font-size:.88rem; }.retailer-links { display:flex; flex-wrap:wrap; gap:.45rem; margin-top:.35rem; }.retailer-links a { padding:.35rem .55rem; border-radius:99px; background:#deefe3; text-decoration:none; }
.table-wrap { overflow-x: auto; }
table { width: 100%; border-collapse: collapse; }
th, td { padding: .8rem; text-align: left; border-bottom: 1px solid #e5ece8; vertical-align: top; }
small { display: block; color: #5a6a61; margin-top: .25rem; }
.actions { display: flex; gap: .4rem; }
.actions form { margin: 0; }
.actions button { min-width: 2.5rem; }
.layout-picker { display:flex; align-items:center; gap:.25rem; padding:.25rem; min-height:44px; border:1px solid #c9dcd1; border-radius:10px; background:white; }.layout-picker button { display:grid; place-items:center; width:36px; height:34px; padding:0; border:0; border-radius:8px; color:var(--muted); background:transparent; font-size:1.2rem; }.layout-picker button.active { color:white; background:#176b45; box-shadow:0 4px 12px rgba(23,107,69,.2); }.icon-button-only { width:46px; padding:.65rem; }.layout-list { grid-template-columns:1fr; }.layout-list .recipe-card { display:grid; grid-template-columns:180px 1fr; }.layout-list .recipe-card-media { height:100%; min-height:140px; }.layout-compact { grid-template-columns:repeat(auto-fill,minmax(175px,1fr)); gap:.65rem; }.layout-compact .recipe-card-media { height:95px; }.layout-compact .recipe-card-body { padding:.75rem; }.layout-compact .recipe-card-body h2 { font-size:1rem; margin-bottom:.35rem; }.layout-compact .recipe-card-body small { font-size:.72rem; }.availability-group-icon { display:inline-grid; place-items:center; width:1.55rem; height:1.55rem; margin-right:.4rem; border-radius:50%; color:white; font-size:.9rem; vertical-align:.15rem; }.availability-group-icon.green { background:#1d9a5d; }.availability-group-icon.yellow { background:#e2a900; }.availability-group-icon.red { background:#d94b3d; }.availability-group-icon.neutral { background:#87958d; }
.availability-pill i { display:grid; place-items:center; color:white; font-style:normal; font-size:.62rem; line-height:1; }.availability-pill.prominent { padding:.48rem .72rem; font-size:.84rem; }.recipe-page-header { grid-template-columns:minmax(0,1.45fr) minmax(240px,.55fr); gap:1.25rem; align-items:stretch; }.recipe-page-header.without-image { grid-template-columns:1fr; }.recipe-title-block { align-self:center; }.recipe-title-block h1 { font-size:clamp(1.8rem,3.6vw,2.8rem); line-height:1.05; margin:.2rem 0 .65rem; }.recipe-page-image { height:280px; border-radius:18px; }.recipe-kicker-row,.recipe-toolbar,.recipe-section-heading,.ingredient-actions { display:flex; align-items:center; gap:.55rem; }.recipe-kicker-row { justify-content:space-between; }.recipe-toolbar { flex-wrap:wrap; margin-top:1rem; }.toolbar-separator { width:1px; height:28px; background:var(--line); }.recipe-toolbar .icon-button,.ingredient-actions .icon-button,.recipe-section-heading > .icon-button,.preparation-capture > .icon-button { display:grid; place-items:center; width:40px; height:40px; padding:0; border:1px solid var(--line); border-radius:11px; background:#f7faf8; color:#176b45; text-decoration:none; font-size:1.15rem; cursor:pointer; list-style:none; }.recipe-toolbar .icon-button:hover,.ingredient-actions .icon-button:hover,.recipe-section-heading > .icon-button:hover { color:white; background:#176b45; }.recipe-section-heading { justify-content:space-between; align-items:flex-start; margin-bottom:.8rem; }.recipe-section-heading h2 { margin:.2rem 0 0; }.ingredient-actions { justify-content:flex-end; flex-wrap:wrap; }.ingredient-actions form { margin:0; }.compact-rating { display:flex; align-items:center; gap:.3rem; }.compact-rating fieldset { margin:0; gap:.08rem; }.compact-rating label { width:32px; height:32px; padding:0; border:0; background:transparent; }.compact-rating label span { font-size:1.12rem; }.rating-save-state { color:#176b45; font-weight:900; }.preparation-capture { position:relative; }.preparation-capture summary::-webkit-details-marker { display:none; }.preparation-capture[open] > summary { color:white; background:#176b45; }.preparation-capture > form { position:absolute; z-index:20; right:0; top:48px; width:min(430px,85vw); padding:1rem; border:1px solid var(--line); border-radius:14px; background:white; box-shadow:0 18px 45px rgba(20,61,43,.2); }.preparation-capture form > label { display:block; margin-bottom:.75rem; font-weight:750; }.preparation-capture select,.preparation-capture textarea { margin-top:.25rem; }.taste-picker { display:flex; align-items:center; gap:.3rem; padding:0; margin:0 0 .8rem; border:0; }.taste-picker legend { margin-bottom:.35rem; font-weight:750; }.taste-picker input { position:absolute; opacity:0; }.taste-picker label { display:grid; place-items:center; width:42px; height:40px; border:1px solid var(--line); border-radius:10px; font-size:1.3rem; cursor:pointer; filter:grayscale(1); opacity:.55; }.taste-picker input:checked + label,.taste-picker label:hover { filter:none; opacity:1; border-color:#e8b25c; background:#fff4df; }.preparation-timeline { display:grid; gap:.55rem; }.preparation-timeline article { display:grid; grid-template-columns:42px 1fr; gap:.75rem; padding:.75rem; border-radius:12px; background:#f5f8f6; }.history-icon { display:grid; place-items:center; width:42px; height:42px; border-radius:11px; background:white; font-size:1.25rem; }.preparation-timeline small { margin-top:.15rem; }.preparation-timeline p { margin:.4rem 0 0; }.empty-hint { color:var(--muted); }
.detail-layout-switch { display:inline-flex; gap:.2rem; padding:.2rem; border:1px solid var(--line); border-radius:10px; background:white; }.detail-layout-switch a { display:grid; place-items:center; width:34px; height:32px; border-radius:8px; color:var(--muted); text-decoration:none; font-size:1.05rem; }.detail-layout-switch a.active { color:white; background:#176b45; }.detail-layout-switch.floating { position:fixed; z-index:15; right:1.5rem; bottom:1.5rem; padding:.35rem; box-shadow:0 12px 28px rgba(20,61,43,.2); }
.page-view-switch { position:fixed; z-index:16; right:1.35rem; top:88px; display:inline-flex; gap:.25rem; padding:.35rem; border:1px solid var(--line); border-radius:12px; background:rgba(255,255,255,.94); box-shadow:0 10px 26px rgba(20,61,43,.16); backdrop-filter:blur(10px); }.page-view-switch a { display:grid; place-items:center; width:38px; height:36px; border-radius:9px; color:var(--muted); text-decoration:none; font-size:1.15rem; }.page-view-switch a.active { color:white; background:#176b45; }
.layout-magazine { grid-template-columns:repeat(12,1fr); }.layout-magazine .recipe-card { grid-column:span 4; }.layout-magazine .recipe-card:first-child { grid-column:span 8; grid-row:span 2; }.layout-magazine .recipe-card:first-child .recipe-card-media { height:315px; }.layout-magazine .recipe-card:first-child .recipe-card-body h2 { font-size:1.65rem; }.layout-magazine .recipe-card:not(:first-child) .recipe-card-media { height:130px; }
.food-shelf-section { margin:1.5rem 0; padding:1.35rem; overflow:hidden; border:1px solid #dbe8df; border-radius:22px; background:linear-gradient(135deg,#fff 0%,#f1f7f2 65%,#fff7e7 100%); box-shadow:0 12px 32px rgba(20,61,43,.07); }.food-shelf { display:grid; grid-template-columns:repeat(auto-fit,minmax(125px,1fr)); gap:.75rem; }.food-tile { min-width:0; overflow:hidden; border:1px solid rgba(33,94,66,.12); border-radius:15px; color:inherit; background:rgba(255,255,255,.9); text-decoration:none; transition:.2s ease; }.food-tile:hover { transform:translateY(-3px); box-shadow:0 10px 24px rgba(20,61,43,.11); }.food-tile-visual { display:grid; place-items:center; height:92px; overflow:hidden; background:radial-gradient(circle at 50% 35%,#fff 0,#e9f4ec 65%); font-size:2.65rem; }.food-tile-visual img { width:100%; height:100%; object-fit:cover; }.food-tile-copy { padding:.7rem; }.food-tile-copy strong,.food-tile-copy small,.food-tile-copy time { display:block; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }.food-tile-copy strong { font-size:.92rem; }.food-tile-copy time { margin-top:.35rem; color:#b65c1f; font-size:.72rem; font-weight:750; }.food-tile-empty { display:grid; place-items:center; min-height:148px; padding:1rem; text-align:center; border-style:dashed; color:#176b45; }.food-tile-empty > span { font-size:2rem; }
.food-db-heading { align-items:flex-end; }.food-db-layout { display:grid; grid-template-columns:minmax(330px,.75fr) minmax(0,1.25fr); gap:1rem; align-items:start; }.food-db-search { max-width:none; margin:0 0 1rem; border:1px solid var(--line); }.food-db-list { display:grid; gap:.4rem; max-height:70vh; overflow:auto; }.food-db-row { display:grid; grid-template-columns:38px minmax(0,1fr) auto; gap:.65rem; align-items:center; padding:.7rem; border:1px solid transparent; border-radius:12px; color:inherit; text-decoration:none; }.food-db-row:hover,.food-db-row.active { border-color:#bdd8c8; background:#edf6f0; }.food-db-avatar { display:grid; place-items:center; width:38px; height:38px; border-radius:11px; color:#176b45; background:#dff0e5; font-weight:900; }.food-db-row strong,.food-db-row small { display:block; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }.food-db-meta { color:var(--muted); font-size:.78rem; white-space:nowrap; }.food-db-editor { position:sticky; top:88px; }.food-db-editor .heading-row { margin-bottom:1rem; }.food-db-editor .icon-button { display:grid; place-items:center; width:40px; height:40px; padding:0; text-decoration:none; }.errorlist { color:#a63232; }
.fresh-hero { display:flex; justify-content:space-between; gap:2rem; align-items:center; padding:clamp(1.5rem,4vw,3.2rem); border-radius:26px; color:white; background:radial-gradient(circle at 85% 15%,rgba(255,217,125,.35),transparent 30%),linear-gradient(135deg,#123c2b,#1c7550); }.fresh-hero h1 { max-width:720px; margin:.2rem 0 .7rem; font-size:clamp(2.3rem,5vw,4.5rem); line-height:.95; letter-spacing:-.045em; }.fresh-hero p { max-width:650px; color:#dcebe3; font-size:1.05rem; }.fresh-hero .eyebrow { color:#ffd77c; }.fresh-hero-actions { display:flex; gap:.5rem; }.fresh-hero-actions .icon-button { width:46px; height:46px; padding:0; color:white; border:1px solid rgba(255,255,255,.35); border-radius:13px; background:rgba(255,255,255,.1); text-decoration:none; }.fresh-search { display:flex; align-items:center; gap:.5rem; max-width:620px; padding:.45rem .65rem; margin-top:1.2rem; border-radius:13px; color:#176b45; background:white; }.fresh-search input { border:0; padding:.55rem; }.fresh-section { margin:2rem 0; }.fresh-heading { display:flex; justify-content:space-between; gap:1rem; align-items:end; margin-bottom:1rem; }.fresh-heading h2 { margin:.15rem 0 0; font-size:clamp(1.55rem,3vw,2.25rem); }.daily-idea-grid { display:grid; grid-template-columns:repeat(auto-fill,minmax(230px,1fr)); gap:1rem; }.daily-idea-card { overflow:hidden; border:1px solid var(--line); border-radius:17px; background:white; transition:.2s ease; }.daily-idea-card:hover { transform:translateY(-3px); box-shadow:0 14px 32px rgba(20,61,43,.12); }.daily-image { position:relative; display:grid; place-items:center; height:165px; overflow:hidden; color:#176b45; background:linear-gradient(135deg,#e7f2eb,#c9dfd1); text-decoration:none; font-size:2.5rem; }.daily-image img { width:100%; height:100%; object-fit:cover; }.daily-image em { position:absolute; top:.65rem; left:.65rem; display:grid; place-items:center; width:38px; height:38px; border-radius:11px; background:rgba(255,255,255,.9); font-style:normal; box-shadow:0 5px 15px rgba(0,0,0,.12); }.daily-idea-card > div { padding:1rem; }.daily-idea-card h3 { margin:.25rem 0 .7rem; }.daily-idea-card h3 a { color:inherit; text-decoration:none; }.category-chip-grid { display:grid; grid-template-columns:repeat(auto-fill,minmax(190px,1fr)); gap:.7rem; }.category-chip-grid a { display:grid; grid-template-columns:38px 1fr; column-gap:.7rem; align-items:center; padding:.85rem; border:1px solid var(--line); border-radius:13px; color:inherit; background:white; text-decoration:none; }.category-chip-grid a > span { grid-row:1 / span 2; display:grid; place-items:center; width:38px; height:38px; border-radius:11px; color:#176b45; background:#e4f2e9; }.category-chip-grid small { margin:0; }.fresh-dashboard-grid { display:grid; grid-template-columns:1fr 1fr; gap:1rem; }.compact-fresh { padding:1.2rem; border:1px solid var(--line); border-radius:17px; background:white; }.fresh-expiring { display:grid; grid-template-columns:1fr 1fr; gap:.6rem; }.fresh-expiring article { display:flex; gap:.6rem; align-items:center; }.fresh-expiring img,.fresh-expiring article > span { display:grid; place-items:center; width:44px; height:44px; border-radius:10px; object-fit:cover; color:#b65c1f; background:#fff1df; }.fresh-shopping { list-style:none; padding:0; margin:0; }.fresh-shopping li { display:grid; grid-template-columns:auto 1fr auto; gap:.6rem; padding:.6rem 0; border-bottom:1px solid var(--line); }
.magazine-recipe { max-width:1180px; margin:auto; }.magazine-hero { display:grid; grid-template-columns:1fr 1fr; min-height:410px; overflow:hidden; border-radius:24px; color:white; background:#173f2e; }.magazine-copy { align-self:center; padding:clamp(1.5rem,4vw,3.5rem); }.magazine-copy h1 { margin:.3rem 0 1rem; font-size:clamp(2.2rem,5vw,4.2rem); line-height:.98; letter-spacing:-.045em; }.magazine-copy p { color:#dcebe3; line-height:1.65; }.magazine-copy .eyebrow { color:#ffd77c; }.magazine-photo { display:grid; place-items:center; min-height:350px; color:#176b45; background:#dcebe3; font-size:4rem; }.magazine-photo img { width:100%; height:100%; object-fit:cover; }.magazine-toolbar { display:flex; gap:.4rem; align-items:center; flex-wrap:wrap; margin-top:1rem; }.magazine-toolbar .icon-button,.magazine-ingredients .icon-button { display:grid; place-items:center; width:40px; height:40px; padding:0; border:1px solid rgba(255,255,255,.35); border-radius:10px; color:white; background:rgba(255,255,255,.12); text-decoration:none; }.magazine-facts { display:flex; gap:1px; align-items:stretch; margin:-1.2rem auto 1.5rem; position:relative; z-index:2; width:min(92%,900px); overflow:hidden; border-radius:14px; background:var(--line); box-shadow:0 12px 30px rgba(20,61,43,.13); }.magazine-facts > span { flex:1; padding:.85rem 1rem; background:white; }.magazine-facts small { margin:0; }.magazine-facts .availability-pill { border-radius:0; justify-content:center; }.magazine-content { display:grid; grid-template-columns:minmax(300px,.8fr) minmax(0,1.2fr); gap:1.2rem; align-items:start; }.magazine-ingredients,.magazine-steps { padding:clamp(1.2rem,3vw,2rem); border:1px solid var(--line); border-radius:18px; background:white; }.magazine-ingredients { position:sticky; top:90px; }.magazine-steps > h2,.magazine-ingredients h2 { margin:.15rem 0 1.2rem; font-size:2rem; }.magazine-steps ol { list-style:none; padding:0; }.magazine-steps li { display:grid; grid-template-columns:40px 1fr; gap:.8rem; padding:.8rem 0; border-bottom:1px solid var(--line); }.magazine-steps li > span { display:grid; place-items:center; width:36px; height:36px; border-radius:50%; color:white; background:#176b45; font-weight:900; }.magazine-steps li p { margin:.25rem 0; line-height:1.65; }.magazine-lower { margin:1.5rem 0; }.nutrition-stripe { display:flex; gap:1px; align-items:stretch; overflow:hidden; border-radius:16px; background:var(--line); }.nutrition-stripe h2 { flex:1.4; margin:0; padding:1.2rem; color:white; background:#176b45; }.nutrition-stripe span { flex:1; padding:1rem; text-align:center; background:white; }.nutrition-stripe strong { display:block; font-size:1.25rem; }.magazine-tags { display:flex; flex-wrap:wrap; gap:.45rem; align-items:center; margin-top:1rem; }.magazine-tags a,.magazine-tags span { padding:.35rem .65rem; border-radius:99px; color:#176b45; background:#e4f2e9; text-decoration:none; }.cook-layout .magazine-copy p,.cook-layout .magazine-lower,.cook-layout .related-section { display:none; }.cook-layout .magazine-hero { min-height:230px; grid-template-columns:1.5fr .5fr; }.cook-layout .magazine-photo { min-height:230px; }.cook-layout .magazine-content { grid-template-columns:minmax(280px,.65fr) minmax(0,1.35fr); }
.nutrition-dialog { width:min(680px,94vw); max-height:90vh; padding:0; overflow:auto; border:0; border-radius:18px; box-shadow:0 25px 70px rgba(0,0,0,.3); }.nutrition-dialog::backdrop { background:rgba(20,30,25,.58); backdrop-filter:blur(3px); }.nutrition-dialog > header { position:sticky; top:0; z-index:2; display:flex; justify-content:space-between; align-items:center; padding:1rem 1.3rem; border-bottom:1px solid var(--line); background:white; }.nutrition-dialog > header h2 { margin:0; }.nutrition-dialog > header button { width:40px; height:40px; padding:0; color:#17231c; background:transparent; font-size:1.8rem; }.nutrition-loading,#nutrition-calculator-body { padding:1.3rem; }.nutrition-portions { display:grid; grid-template-columns:54px 1fr 54px; margin:1rem 0 1.3rem; overflow:hidden; border:2px solid #5f9f20; border-radius:10px; }.nutrition-portions button { border-radius:0; padding:.65rem; font-size:1.35rem; }.nutrition-portions label { display:flex; align-items:center; justify-content:center; gap:.35rem; }.nutrition-portions input { width:62px; border:0; padding:.6rem 0; text-align:right; font-size:1.05rem; }.nutrition-result-list { display:grid; gap:.65rem; }.nutrition-result-list details { border:1px solid var(--line); }.nutrition-result-list summary { display:grid; grid-template-columns:42px 1fr auto 20px; align-items:center; gap:.6rem; padding:.85rem; cursor:pointer; list-style:none; }.nutrition-result-list summary::-webkit-details-marker { display:none; }.nutrition-result-icon { font-size:1.3rem; text-align:center; }.nutrition-result-list details > div { padding:0 .9rem .8rem 3.9rem; }.nutrition-coverage { padding:.65rem .8rem; border-radius:9px; color:#176b45; background:#e5f4eb; font-weight:800; }.nutrition-missing { padding:.7rem; border:1px solid #e4c86f; border-radius:10px; background:#fff8dc; }.nutrition-disclaimer { margin:1.2rem .4rem .3rem; color:var(--muted); text-align:center; font-style:italic; line-height:1.5; }
.recipe-toolbar form { margin:0; }.recipe-toolbar .icon-button.danger { color:#9b2c2c; background:#fff6f4; }
@media (max-width: 1100px) { .recipe-filters { grid-template-columns:repeat(3,1fr); }.recipe-filters .filter-button { width:100%; } }
@media (max-width: 860px) { .fresh-hero { align-items:flex-start; flex-direction:column; }.fresh-dashboard-grid,.magazine-hero,.magazine-content,.cook-layout .magazine-hero,.cook-layout .magazine-content,.food-db-layout { grid-template-columns:1fr; }.food-db-editor { position:static; }.magazine-photo { min-height:260px; max-height:360px; }.magazine-ingredients { position:static; }.magazine-facts { flex-wrap:wrap; }.magazine-facts > span { min-width:45%; }.nutrition-stripe { flex-wrap:wrap; }.nutrition-stripe h2 { flex-basis:100%; }.fresh-expiring { grid-template-columns:1fr; } }
@media (max-width: 860px) { .layout-magazine { grid-template-columns:1fr 1fr; }.layout-magazine .recipe-card,.layout-magazine .recipe-card:first-child { grid-column:span 1; grid-row:auto; }.layout-magazine .recipe-card:first-child .recipe-card-media { height:180px; }.page-view-switch { position:static; width:max-content; margin:0 0 .75rem auto; } }
@media (max-width: 720px) { .layout-magazine { grid-template-columns:1fr; }.layout-list .recipe-card-media { min-height:120px; }.recipe-card-actions { opacity:1; transform:none; } }
@media (max-width: 860px) { .topbar { grid-template-columns:1fr auto; gap:.7rem; }.primary-nav { grid-column:1 / -1; order:3; overflow-x:auto; }.dashboard-hero { align-items:flex-start; flex-direction:column; }.quick-actions { justify-content:flex-start; min-width:0; }.dashboard-grid,.settings-section,.recipe-page-header,.recipe-content-grid { grid-template-columns:1fr; }.recipe-sidebar { position:static; }.recipe-facts { grid-template-columns:repeat(3,1fr); }.recipe-page-image { height:240px; }.ingredient-actions { justify-content:flex-start; } }
@media (max-width: 720px) { .cards, .minimal-fields, .details-grid, .recipe-filters, .recipe-detail-grid, .import-layout,.settings-grid,.editor-grid,.editor-grid.three-columns,.nutrition-editor,.ai-usage-grid,.capture-methods,.barcode-scanner { grid-template-columns: 1fr; } .ai-mode-options { grid-template-columns:1fr 1fr; }.wide-field { grid-column: auto; } .heading-row { align-items: flex-start; flex-direction: column; } .topbar { align-items: center; } .brand small,.account-nav .link-button { display:none; }.container { width:min(94vw,1240px); margin-top:1rem; }.dashboard-hero { border-radius:18px; }.cards { gap:.7rem; }.card { padding:1rem; }.sticky-settings-actions { flex-direction:column; }.recipe-facts { grid-template-columns:1fr 1fr; }.recipe-page-image { height:220px; }.structured-ingredients li { grid-template-columns:80px 1fr; }.structured-ingredients .availability-pill { grid-column:2; }.layout-list .recipe-card { grid-template-columns:100px 1fr; }.layout-list .recipe-card > img { min-height:120px; }.modern-shopping-list li { grid-template-columns:auto 1fr auto; }.modern-shopping-list .shopping-amount { grid-column:2; }.modern-shopping-list .shopping-name { grid-column:2; }.modern-shopping-list .row-actions { grid-column:3; grid-row:1 / span 2; }.shopping-source-group li { grid-template-columns:auto 85px 1fr auto; }.primary-nav a { flex:0 0 auto; } }
.inventory-hero { display:flex; justify-content:space-between; gap:1.5rem; align-items:end; padding:clamp(1.4rem,4vw,2.6rem); margin-bottom:1rem; border-radius:24px; color:white; background:radial-gradient(circle at 85% 15%,rgba(255,209,112,.35),transparent 28%),linear-gradient(135deg,#123c2b,#287650); box-shadow:0 18px 42px rgba(17,74,49,.16); }.inventory-hero h1 { margin:.15rem 0 .45rem; font-size:clamp(2.2rem,5vw,3.7rem); }.inventory-hero p { max-width:680px; margin:0; color:#dceee4; }.inventory-hero .eyebrow { color:#ffd77c; }.inventory-hero .button { flex:0 0 auto; color:#155e3d; background:white; }.inventory-summary { grid-template-columns:repeat(4,1fr); }.inventory-panel { margin-top:1rem; }.inventory-search { display:flex; align-items:center; gap:.55rem; min-width:min(100%,420px); padding:.15rem .7rem; border:1px solid var(--line); border-radius:12px; background:#f7faf8; }.inventory-search input { width:100%; border:0; background:transparent; }.inventory-search input:focus { outline:0; }
@media (max-width:860px) { .inventory-summary { grid-template-columns:1fr 1fr; } }
@media (max-width:720px) { .inventory-hero { align-items:flex-start; flex-direction:column; border-radius:18px; }.inventory-search { min-width:100%; } }
@media (max-width:480px) { .inventory-summary { grid-template-columns:1fr; } }
@media print { body { background:white; }.topbar,.messages,.no-print { display:none !important; }.container { width:100%; margin:0; }.panel { border:0; box-shadow:none; padding:0; }.shopping-heading { display:none; }.print-only,.print-checkbox { display:block; }.print-title { border-bottom:2px solid #17231c; margin-bottom:1rem; }.shopping-list-large li { break-inside:avoid; }.shopping-list-large small { color:#444; }.recipe-page-header { grid-template-columns:1.2fr .8fr; }.recipe-page-image { height:280px; }.recipe-content-grid { grid-template-columns:1fr; }.recipe-sidebar { position:static; }.instruction-steps li { break-inside:avoid; } }

/* Receipt summary, compact rows and floating icon actions · 0.18.4 */
.receipt-actions { display:flex; flex-wrap:wrap; gap:.4rem; align-items:center; }
.receipt-icon { display:grid; place-items:center; width:42px; height:42px; flex:0 0 42px; padding:0; border:1px solid #d2e2d8; border-radius:12px; color:#176b45; background:#f5faf7; text-decoration:none; transition:background .15s,color .15s; }
.receipt-icon:hover { color:white; background:#176b45; }
.receipt-icon:focus-visible { outline:3px solid #dfa72f; outline-offset:3px; }
.receipt-card { display:flex; justify-content:space-between; align-items:center; gap:1rem; padding:1rem; margin-top:.6rem; border:1px solid var(--line); border-radius:15px; background:#fafcfb; }
.receipt-card-copy { min-width:0; overflow-wrap:anywhere; }
.receipt-card h3 { margin:0 0 .3rem; font-size:1rem; }
.receipt-card p { margin:.25rem 0; }
.receipt-card small { display:block; color:var(--muted); margin-top:.25rem; }
.receipt-edit-grid { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:1rem; margin:1rem 0; }
.receipt-edit-grid label { display:block; font-weight:650; margin-bottom:.3rem; }
.receipt-save-actions { margin:1rem 0; }
.receipt-save-actions .button { display:inline-flex; align-items:center; gap:.5rem; }
.receipt-history { padding:.6rem 0; border-bottom:1px solid var(--line); }
.receipt-history p { margin:.3rem 0; overflow-wrap:anywhere; }
.receipt-overview { display:grid; grid-template-columns:repeat(auto-fit,minmax(175px,1fr)); gap:.65rem; margin:0 0 1rem; }
.receipt-overview-card { display:flex; align-items:center; gap:.75rem; min-width:0; padding:.85rem; border:1px solid #dce9e0; border-radius:15px; background:linear-gradient(145deg,#fff,#f5faf6); }
.receipt-overview-icon { display:grid; place-items:center; flex:0 0 40px; height:40px; border-radius:12px; color:#176b45; background:#e6f3ea; font-size:1.2rem; }
.receipt-overview-card > div { display:grid; gap:.05rem; min-width:0; }
.receipt-overview-card small,.receipt-overview-card > div > span { color:var(--muted); font-size:.75rem; }
.receipt-overview-card > div > strong { font-size:1.25rem; line-height:1.2; font-variant-numeric:tabular-nums; }
.receipt-top-merchants { grid-column:span 2; align-items:flex-start; }
.receipt-merchant-total { display:flex; justify-content:space-between; gap:.5rem; align-items:baseline; }
.receipt-merchant-total > strong { overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.receipt-merchant-total > span { flex:0 0 auto; color:var(--muted); font-size:.75rem; white-space:nowrap; }
.receipt-search { display:grid; grid-template-columns:minmax(200px,1fr) auto; gap:.35rem .6rem; align-items:end; margin-bottom:.7rem; }
.receipt-search label { grid-column:1 / -1; font-size:.82rem; font-weight:650; }
.receipt-search button { min-height:42px; }
.receipt-list { display:grid; gap:.25rem; }
.receipt-list-row { position:relative; display:grid; grid-template-columns:minmax(260px,1fr) minmax(100px,auto) minmax(75px,auto); gap:.7rem; align-items:center; min-height:50px; padding:.28rem 3.35rem .28rem .55rem; border-bottom:1px solid #e9efeb; border-radius:10px; transition:background .16s ease,box-shadow .16s ease; }
.receipt-list-row:hover,.receipt-list-row:focus-within { background:#f2f8f4; box-shadow:inset 3px 0 #58a67a; }
.receipt-list-main { display:flex; gap:.75rem; align-items:center; min-width:0; }
.receipt-list-main time { min-width:76px; color:var(--muted); font-size:.83rem; font-variant-numeric:tabular-nums; }
.receipt-list-merchant { display:flex; align-items:baseline; gap:.5rem; min-width:0; overflow:hidden; color:inherit; text-decoration:none; white-space:nowrap; }
.receipt-list-merchant strong { overflow:hidden; text-overflow:ellipsis; font-size:.93rem; }
.receipt-list-merchant span { overflow:hidden; text-overflow:ellipsis; color:var(--muted); font-size:.78rem; }
.receipt-list-progress { color:var(--muted); font-size:.8rem; white-space:nowrap; }
.receipt-list-total { text-align:right; font-size:.9rem; font-variant-numeric:tabular-nums; white-space:nowrap; }
.receipt-list-row .receipt-actions { position:absolute; z-index:2; top:50%; right:.4rem; flex-wrap:nowrap; gap:.25rem; padding:.22rem; border:1px solid rgba(207,224,214,.9); border-radius:13px; background:rgba(255,255,255,.96); box-shadow:0 5px 15px rgba(20,61,43,.14); opacity:0; pointer-events:none; transform:translate(6px,-50%) scale(.96); transition:opacity .16s ease,transform .16s ease; }
.receipt-list-row:hover .receipt-actions,.receipt-list-row:focus-within .receipt-actions { opacity:1; pointer-events:auto; transform:translate(0,-50%) scale(1); }
.receipt-list-row .receipt-icon { width:34px; height:34px; flex-basis:34px; border-radius:10px; }
.receipt-list-row .receipt-icon:focus-visible { outline-offset:1px; }
.receipt-search input { min-width:0; }
.receipt-upload-panel { display:grid; grid-template-columns:minmax(200px,.7fr) minmax(0,1.3fr); gap:1.2rem; align-items:start; padding:1rem; margin-top:.75rem; border:1px solid #dce9e0; border-radius:17px; background:linear-gradient(145deg,#fff,#f7fbf8); }
.receipt-upload-panel h2 { display:flex; align-items:center; gap:.5rem; margin:.15rem 0 .4rem; font-size:1.05rem; }
.receipt-upload-panel h2 svg { color:#176b45; }
.receipt-upload-panel p { margin:.35rem 0; color:var(--muted); font-size:.86rem; }
.receipt-file-input { position:absolute; width:1px; height:1px; overflow:hidden; clip-path:inset(50%); white-space:nowrap; }
.receipt-file-input:focus-visible + .receipt-file-picker { outline:3px solid #dfa72f; outline-offset:3px; }
.receipt-file-picker { display:flex; align-items:center; gap:.75rem; min-height:68px; padding:.8rem 1rem; border:1px dashed #9dbda9; border-radius:14px; color:#244a35; background:#f2f8f4; cursor:pointer; transition:border-color .16s,background .16s,transform .16s; }
.receipt-file-picker:hover { border-color:#176b45; background:#eaf5ee; transform:translateY(-1px); }
.receipt-file-picker-icon,.receipt-file-picker-arrow { display:grid; place-items:center; width:42px; height:42px; flex:0 0 42px; border-radius:12px; color:#176b45; background:#deefe4; }
.receipt-file-picker-icon svg { width:23px; height:23px; }
.receipt-file-picker > span:nth-child(2) { display:grid; gap:.15rem; min-width:0; }
.receipt-file-picker strong { font-size:.9rem; }
.receipt-file-picker small { color:var(--muted); font-size:.75rem; }
.receipt-file-picker-arrow { width:32px; height:32px; flex-basis:32px; margin-left:auto; font-size:1.35rem; }
.receipt-file-selection { max-height:210px; overflow:auto; padding:.55rem .7rem; margin:.45rem 0; border:1px solid #e2ebe5; border-radius:10px; color:#43564a; background:white; font-size:.78rem; }.receipt-file-selection-summary { display:block; margin-bottom:.35rem; color:#245f3d; }.receipt-file-selection-list { display:grid; gap:.2rem; padding:0; margin:0; list-style:none; }.receipt-file-selection-list li { display:flex; justify-content:space-between; gap:.7rem; align-items:center; min-width:0; padding:.3rem .4rem; border-radius:7px; background:#f7faf8; }.receipt-file-selection-list li span { min-width:0; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }.receipt-file-selection-list li small { flex:0 0 auto; color:var(--muted); }
.receipt-text-mode { margin:.6rem 0; }
.receipt-text-mode summary { color:#356547; font-size:.83rem; cursor:pointer; }
.receipt-text-mode label { display:block; margin:.5rem 0 .2rem; font-weight:650; }
.receipt-text-mode textarea { width:100%; }
.receipt-upload-footer { display:flex; justify-content:space-between; align-items:center; gap:.75rem; margin-top:.65rem; }
.receipt-upload-footer > small { color:var(--muted); font-size:.72rem; }
.receipt-import-button { display:inline-flex; align-items:center; gap:.5rem; white-space:nowrap; }
.receipt-import-button svg { width:19px; height:19px; }
@media (max-width:700px) { .receipt-upload-panel { grid-template-columns:1fr; gap:.7rem; padding:.8rem; }.receipt-upload-footer { align-items:flex-start; flex-direction:column; }.receipt-import-button { align-self:stretch; justify-content:center; }.receipt-list-row { grid-template-columns:minmax(0,1fr) auto; gap:.3rem .5rem; padding:.55rem .25rem; }.receipt-list-main { grid-column:1; grid-row:1; }.receipt-list-progress { grid-column:1; grid-row:2; margin-left:84px; }.receipt-list-total { grid-column:2; grid-row:1; }.receipt-list-row .receipt-actions { position:static; grid-column:2; grid-row:2; justify-self:end; opacity:1; pointer-events:auto; transform:none; box-shadow:none; }.receipt-list-merchant { flex-direction:column; align-items:flex-start; gap:0; white-space:normal; }.receipt-edit-grid { grid-template-columns:1fr; }.receipt-card { align-items:flex-start; flex-direction:column; }.receipt-card > .receipt-actions { align-self:flex-end; } }
@media (max-width:520px) { .receipt-top-merchants { grid-column:1 / -1; }.receipt-merchant-total { align-items:flex-start; flex-direction:column; gap:0; } }
@media (hover:none) and (min-width:701px) { .receipt-list-row .receipt-actions { opacity:1; pointer-events:auto; transform:translate(0,-50%); } }
@media print { .receipt-actions { display:none !important; } }

/* Inventory layouts, MHD and import/export actions · 0.17.0 */
.inventory-hero-actions { display:flex; gap:.45rem; align-items:center; }.inventory-action-icon { display:grid; place-items:center; width:44px; height:44px; padding:0; border:1px solid rgba(255,255,255,.42); border-radius:12px; color:white; background:rgba(255,255,255,.11); text-decoration:none; font-size:1.2rem; line-height:1; cursor:pointer; }.inventory-action-icon:hover { color:#155e3d; background:white; transform:translateY(-1px); }.inventory-action-icon.primary { color:#155e3d; background:white; font-size:1.6rem; }.inventory-tools { display:flex; gap:.7rem; align-items:center; }.inventory-layout-switch { display:inline-flex; gap:.2rem; padding:.25rem; border:1px solid var(--line); border-radius:11px; background:#f7faf8; }.inventory-layout-switch a { display:grid; place-items:center; width:36px; height:34px; border-radius:8px; color:var(--muted); text-decoration:none; font-size:1.08rem; }.inventory-layout-switch a:hover,.inventory-layout-switch a.active { color:white; background:#176b45; }.inventory-card-grid { display:grid; grid-template-columns:repeat(auto-fill,minmax(270px,1fr)); gap:.8rem; }.inventory-item-card { position:relative; display:grid; grid-template-columns:76px 1fr; min-width:0; overflow:hidden; border:1px solid #dbe7df; border-radius:16px; background:white; transition:.18s ease; }.inventory-item-card:hover { border-color:#acd0ba; box-shadow:0 10px 24px rgba(20,61,43,.09); transform:translateY(-2px); }.inventory-item-visual { display:grid; place-items:center; min-height:124px; overflow:hidden; background:linear-gradient(145deg,#edf7f0,#dcecdf); font-size:2.15rem; }.inventory-item-visual img,.inventory-list-avatar img,.inventory-edit-visual img { width:100%; height:100%; object-fit:cover; }.inventory-item-copy { min-width:0; padding:.85rem .85rem .65rem; }.inventory-item-title { display:flex; justify-content:space-between; gap:.55rem; align-items:start; }.inventory-item-title h3 { margin:0; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; font-size:1rem; }.inventory-item-title strong { flex:0 0 auto; color:#176b45; font-size:.86rem; }.inventory-item-title small { margin:.1rem 0 0; }.inventory-item-meta { display:flex; flex-wrap:wrap; gap:.35rem .7rem; margin:.55rem 0; color:var(--muted); font-size:.75rem; }.expiry-pill { display:flex; gap:.35rem; align-items:center; width:max-content; max-width:100%; padding:.26rem .48rem; border-radius:8px; color:#526058; background:#eef2ef; font-size:.7rem; }.expiry-pill time { font-weight:750; }.expiry-pill small { margin:0; }.expiry-pill.ok { color:#176b45; background:#e5f4eb; }.expiry-pill.soon { color:#885100; background:#fff2cd; }.expiry-pill.expired { color:#a62d2d; background:#ffe7e3; }.inventory-row-actions { display:flex; gap:.25rem; align-items:center; }.inventory-item-card > .inventory-row-actions { grid-column:1 / -1; justify-content:flex-end; padding:.4rem .55rem; border-top:1px solid #e7eee9; background:#fafcfb; }.inventory-row-actions form { margin:0; }.inventory-row-actions button,.inventory-row-actions a { display:grid; place-items:center; width:30px; height:30px; padding:0; border:1px solid #d8e4dc; border-radius:8px; color:#176b45; background:white; text-decoration:none; font-weight:900; line-height:1; }.inventory-row-actions button:hover,.inventory-row-actions a:hover { color:white; background:#176b45; }.inventory-list-rows { display:grid; gap:.35rem; }.inventory-list-row { display:grid; grid-template-columns:46px minmax(150px,1.4fr) minmax(90px,.6fr) minmax(110px,.7fr) minmax(130px,.8fr) auto; gap:.65rem; align-items:center; padding:.45rem .55rem; border:1px solid #e0e9e3; border-radius:12px; background:white; }.inventory-list-avatar { display:grid; place-items:center; width:44px; height:44px; overflow:hidden; border-radius:10px; background:#e8f3ec; font-size:1.35rem; }.inventory-list-name { min-width:0; }.inventory-list-name strong,.inventory-list-name small { display:block; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }.inventory-list-quantity { color:#176b45; font-size:.85rem; }.inventory-list-location { color:var(--muted); font-size:.8rem; }.inventory-compact-table th,.inventory-compact-table td { padding:.48rem .6rem; }.inventory-compact-table td:first-child { white-space:nowrap; }.inventory-compact-table td small { display:inline; margin-left:.35rem; }.compact-food-icon { display:inline-grid; place-items:center; width:28px; height:28px; margin-right:.35rem; border-radius:8px; background:#eaf4ed; }.expiry-dot { display:inline-block; width:8px; height:8px; margin-right:.35rem; border-radius:50%; background:#9ca59f; }.expiry-dot.ok { background:#27905c; }.expiry-dot.soon { background:#e39b1c; }.expiry-dot.expired { background:#d7473d; }.inventory-empty { padding:3rem 1rem; text-align:center; color:var(--muted); }.inventory-empty > span { font-size:3rem; }.inventory-empty h3 { margin:.5rem 0 .2rem; color:#17231c; }.inventory-edit-heading { display:flex; gap:1rem; align-items:center; margin-bottom:1.25rem; }.inventory-edit-heading h1 { margin:.1rem 0 .25rem; }.inventory-edit-heading p { margin:0; }.inventory-edit-visual { display:grid; place-items:center; flex:0 0 78px; width:78px; height:78px; overflow:hidden; border-radius:18px; color:#176b45; background:linear-gradient(145deg,#edf7f0,#d8eadf); font-size:2rem; }.inventory-editor,.inventory-import-panel { max-width:900px; margin:auto; }.inventory-edit-main { padding:1rem; border:1px solid #dce8e0; border-radius:14px; background:#f7faf8; }.inventory-print-header { margin-bottom:1rem; border-bottom:2px solid #17231c; }
.receipt-panel { max-width:1180px; margin:auto; }.receipt-dropzone { display:grid; place-items:center; gap:.5rem; padding:2.2rem; border:2px dashed #b9d5c4; border-radius:18px; text-align:center; background:#f4faf6; }.receipt-dropzone > span { font-size:3rem; }.receipt-dropzone input { max-width:420px; }.receipt-result-summary { display:flex; gap:.8rem; align-items:flex-start; padding:1rem; margin-bottom:1rem; border-radius:14px; color:#176b45; background:#e8f5ec; }.receipt-result-summary > span { display:grid; place-items:center; width:38px; height:38px; border-radius:50%; color:white; background:#24865a; font-weight:900; }.receipt-result-summary strong,.receipt-result-summary small { display:block; }.receipt-result-summary p { margin:.35rem 0 0; color:#47584d; }.receipt-review-list { display:grid; gap:.55rem; }.receipt-review-row { display:grid; grid-template-columns:36px minmax(180px,1.4fr) minmax(100px,.8fr) 85px 105px 100px minmax(110px,.8fr) minmax(110px,.8fr); gap:.45rem; align-items:end; padding:.65rem; border:1px solid #dce8e0; border-radius:13px; background:#fafcfb; }.receipt-review-row label { min-width:0; font-size:.7rem; }.receipt-review-row input,.receipt-review-row select { padding:.48rem; font-size:.8rem; }.receipt-review-row small { margin:.15rem 0 0; font-size:.65rem; }.receipt-include { align-self:center; }.receipt-include input { position:absolute; opacity:0; }.receipt-include span { display:grid; place-items:center; width:30px; height:30px; border:1px solid #bfd3c6; border-radius:8px; color:#8da096; background:white; cursor:pointer; }.receipt-include input:checked + span { color:white; border-color:#176b45; background:#176b45; }.approval-note { padding:.75rem; border-radius:10px; color:#76520e; background:#fff5d9; }
@media (max-width:1050px) { .receipt-review-row { grid-template-columns:36px repeat(3,1fr); }.receipt-review-row > label:nth-last-child(-n+4) { grid-column:auto; } }
@media (max-width:720px) { .receipt-review-row { grid-template-columns:36px 1fr 1fr; }.receipt-review-row > div { grid-column:2 / -1; }.receipt-review-row .receipt-include { grid-row:1 / 3; } }

@media (max-width:900px) { .inventory-list-row { grid-template-columns:46px 1fr auto auto; }.inventory-list-location { display:none; }.inventory-list-row .expiry-pill { grid-column:2 / 4; }.inventory-list-row .inventory-row-actions { grid-column:4; grid-row:1 / 3; } }

@media (max-width:720px) { .inventory-hero { align-items:flex-start; flex-direction:column; border-radius:18px; }.inventory-search { min-width:100%; }.inventory-tools { width:100%; align-items:stretch; flex-direction:column; }.inventory-layout-switch { width:max-content; }.inventory-card-grid { grid-template-columns:1fr; }.inventory-list-row { grid-template-columns:42px 1fr auto; }.inventory-list-row .inventory-list-quantity { grid-column:2; }.inventory-list-row .expiry-pill { grid-column:2; }.inventory-list-row .inventory-row-actions { grid-column:3; grid-row:1 / 4; flex-direction:column; }.inventory-compact-wrap { margin:0 -.6rem; }.inventory-edit-heading { align-items:flex-start; }.inventory-edit-visual { flex-basis:60px; width:60px; height:60px; } }

@media print { body { background:white; }.topbar,.messages,.no-print,.inventory-hero,.inventory-summary { display:none !important; }.container { width:100%; margin:0; }.panel { border:0; box-shadow:none; padding:0; }.shopping-heading { display:none; }.print-only,.print-checkbox { display:block; }.print-title { border-bottom:2px solid #17231c; margin-bottom:1rem; }.shopping-list-large li { break-inside:avoid; }.shopping-list-large small { color:#444; }.recipe-page-header { grid-template-columns:1.2fr .8fr; }.recipe-page-image { height:280px; }.recipe-content-grid { grid-template-columns:1fr; }.recipe-sidebar { position:static; }.instruction-steps li { break-inside:avoid; }.inventory-card-grid { grid-template-columns:1fr 1fr; }.inventory-item-card { break-inside:avoid; box-shadow:none; }.inventory-item-visual { min-height:90px; }.inventory-panel { margin:0; } }

/* Merchant views · 0.18.5 */
.merchant-page{max-width:1180px;margin:auto}.merchant-heading{display:flex;justify-content:space-between;gap:1rem;align-items:center;margin-bottom:1rem}.merchant-heading h1{margin:.15rem 0 .3rem}.merchant-heading p{margin:0;color:var(--muted)}.merchant-heading .eyebrow{color:#508168;font-size:.72rem;font-weight:800;letter-spacing:.11em;text-transform:uppercase}.merchant-search{display:flex;align-items:center;gap:.55rem;padding:.35rem;border:1px solid #dce8e0;border-radius:13px;background:#f8fbf9}.merchant-search>span{padding-left:.55rem;color:#57816a;font-size:1.45rem}.merchant-search input{flex:1;min-width:0;border:0;outline:0;background:transparent}.merchant-toolbar{display:flex;justify-content:space-between;align-items:center;gap:.8rem;margin:1rem 0 .6rem;color:var(--muted);font-size:.82rem}.merchant-toolbar .inventory-layout-switch svg{width:19px;height:19px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}.merchant-list,.merchant-details-list{display:grid;gap:.35rem}.merchant-row{display:grid;grid-template-columns:38px minmax(150px,1fr) minmax(170px,1.2fr) 76px minmax(95px,.55fr) 16px;gap:.7rem;align-items:center;min-height:54px;padding:.45rem .65rem;border:1px solid #e2ebe5;border-radius:11px;color:inherit;background:white;text-decoration:none;transition:.16s ease}.merchant-row:hover,.merchant-detail-row:hover,.merchant-tile:hover{border-color:#afd0bc;background:#fbfefc;box-shadow:0 6px 18px rgba(20,61,43,.07);transform:translateY(-1px)}.merchant-mark{display:grid;place-items:center;width:36px;height:36px;border-radius:10px;color:#176b45;background:#eaf4ed}.merchant-mark svg,.merchant-tile-icon svg{width:20px;height:20px;fill:none;stroke:currentColor;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round}.merchant-row-name{min-width:0}.merchant-row-name strong,.merchant-row-name small{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.merchant-row-name small,.merchant-row-address{color:var(--muted);font-size:.76rem}.merchant-row-address{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.merchant-row-receipts{color:var(--muted);font-size:.78rem;white-space:nowrap}.merchant-row-total{text-align:right;font-size:.85rem;white-space:nowrap}.merchant-row-arrow{color:#799184;text-align:right;font-size:1.3rem}.merchant-detail-row{display:grid;grid-template-columns:minmax(145px,1fr) minmax(180px,1.3fr) minmax(95px,.6fr) minmax(135px,.8fr) 16px;gap:.8rem;align-items:center;padding:.7rem;border:1px solid #e2ebe5;border-radius:12px;color:inherit;text-decoration:none;background:white;transition:.16s ease}.merchant-detail-row>span:not(.merchant-row-arrow){min-width:0;overflow-wrap:anywhere}.merchant-detail-row small{display:block;margin-bottom:.15rem;color:var(--muted);font-size:.7rem}.merchant-detail-title strong,.merchant-detail-title small{display:block}.merchant-tiles{display:grid;grid-template-columns:repeat(auto-fill,minmax(225px,1fr));gap:.7rem}.merchant-tile{display:flex;min-width:0;flex-direction:column;padding:.9rem;border:1px solid #e2ebe5;border-radius:15px;color:inherit;background:white;text-decoration:none;transition:.16s ease}.merchant-tile-icon{display:grid;place-items:center;width:40px;height:40px;margin-bottom:.65rem;border-radius:12px;color:#176b45;background:#eaf4ed}.merchant-tile-chain{color:#548169;font-size:.72rem;font-weight:750;text-transform:uppercase;letter-spacing:.06em}.merchant-tile>strong{margin:.15rem 0 .3rem;font-size:1rem}.merchant-tile-address{flex:1;min-height:2.4em;color:var(--muted);font-size:.8rem}.merchant-tile-footer{display:flex;justify-content:space-between;gap:.5rem;align-items:center;margin-top:.8rem;padding-top:.6rem;border-top:1px solid #edf1ee;font-size:.78rem}.merchant-tile-footer span{color:var(--muted)}.merchant-empty{padding:2.5rem 1rem;text-align:center;color:var(--muted)}.merchant-empty>span{color:#6f9a7e;font-size:2.2rem}.merchant-empty h2{margin:.3rem 0;color:#25352b;font-size:1.1rem}.merchant-empty p{margin:0}@media(max-width:760px){.merchant-heading{align-items:flex-start;flex-direction:column}.merchant-heading .button{align-self:flex-start}.merchant-row{grid-template-columns:34px minmax(0,1fr) auto 14px;gap:.45rem}.merchant-mark{width:32px;height:32px}.merchant-row-address{grid-column:2;grid-row:2}.merchant-row-name{grid-column:2;grid-row:1}.merchant-row-receipts{display:none}.merchant-row-total{grid-column:3;grid-row:1/3}.merchant-row-arrow{grid-column:4;grid-row:1/3}.merchant-detail-row{grid-template-columns:minmax(0,1fr) auto 14px;gap:.45rem .65rem}.merchant-detail-title{grid-column:1}.merchant-detail-row>span:nth-child(2){grid-column:1}.merchant-detail-row>span:nth-child(3){grid-column:2;grid-row:1}.merchant-detail-row>span:nth-child(4){grid-column:2;grid-row:2}.merchant-detail-row>.merchant-row-arrow{grid-column:3;grid-row:1/3}.merchant-search{flex-wrap:wrap}.merchant-search input{flex-basis:calc(100% - 4rem)}.merchant-search button{width:100%}.merchant-toolbar{align-items:flex-start}}

/* Receipt page refinement · 0.18.6 */
.toast-stack{position:fixed;z-index:2000;top:5.5rem;right:1rem;display:grid;gap:.45rem;width:min(520px,calc(100vw - 2rem));pointer-events:none}.toast-message{display:grid;grid-template-columns:1fr auto;gap:.8rem;align-items:center;padding:.72rem .8rem;border:1px solid #b8d8c3;border-radius:13px;color:#194d31;background:rgba(236,248,240,.97);box-shadow:0 12px 28px rgba(20,61,43,.18);font-size:.88rem;line-height:1.35;pointer-events:auto;animation:toast-in .18s ease-out}.toast-message.info{color:#244d69;border-color:#b9d4e7;background:rgba(239,247,253,.97)}.toast-message.warning{color:#74510c;border-color:#ead18d;background:rgba(255,248,222,.98)}.toast-message.error{color:#7d2925;border-color:#e8b4af;background:rgba(255,239,237,.98)}.toast-close{display:grid;place-items:center;width:30px;height:30px;border:0;border-radius:8px;color:inherit;background:transparent;font-size:1.3rem;cursor:pointer}.toast-close:hover{background:rgba(0,0,0,.07)}.toast-message.toast-hiding{opacity:0;transform:translateY(-6px);transition:opacity .2s ease,transform .2s ease}@keyframes toast-in{from{opacity:0;transform:translateY(-8px)}to{opacity:1;transform:translateY(0)}}
.receipt-upload-panel{display:block;padding:.75rem .9rem;margin-top:.6rem}.receipt-upload-heading{display:flex;align-items:center;gap:.8rem;margin-bottom:.45rem}.receipt-upload-heading h2{margin:0;white-space:nowrap}.receipt-upload-heading p{margin:0;font-size:.78rem}.receipt-upload-form{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:.35rem .65rem;align-items:center}.receipt-upload-form .receipt-file-picker{min-height:54px;padding:.45rem .65rem}.receipt-upload-form .receipt-file-picker-icon{width:34px;height:34px;flex-basis:34px}.receipt-upload-form .receipt-file-picker-arrow{width:28px;height:28px;flex-basis:28px}.receipt-upload-form .receipt-file-selection,.receipt-upload-form .receipt-text-mode,.receipt-upload-form .receipt-upload-footer{grid-column:1/-1}.receipt-upload-form .receipt-file-selection:has(ul){max-height:145px}.receipt-upload-footer{margin-top:.15rem}
.receipt-list-heading{display:flex;justify-content:space-between;align-items:center;gap:1rem;margin-bottom:.45rem}.receipt-list-heading h2{display:flex;gap:.5rem;align-items:center;margin:0}.receipt-list-heading h2 svg{width:22px;color:#176b45}.receipt-search{display:flex;align-items:center;gap:.4rem;min-width:min(440px,55%);margin:0;padding:.25rem;border:1px solid #dce8e0;border-radius:11px;background:#fbfdfb}.receipt-search>span{padding-left:.45rem;color:#58816a;font-size:1.2rem}.receipt-search input{flex:1;padding:.48rem .35rem;border:0;outline:0;background:transparent}.receipt-search button{display:grid;place-items:center;min-width:38px;min-height:36px;padding:.35rem}.receipt-search button svg{width:18px;height:18px}.receipt-group-switch{display:flex;flex-wrap:wrap;gap:.25rem;padding:.25rem;margin-bottom:.45rem;border:1px solid #e5ece7;border-radius:11px;background:#f7faf8}.receipt-group-switch a{display:inline-flex;align-items:center;gap:.3rem;min-height:34px;padding:.3rem .55rem;border-radius:8px;color:#5c6e62;text-decoration:none;font-size:.75rem}.receipt-group-switch a svg{width:16px;height:16px}.receipt-group-switch a.active,.receipt-group-switch a:hover{color:white;background:#176b45}.receipt-date-group{margin:.45rem 0 .65rem}.receipt-date-group h3{display:flex;justify-content:space-between;align-items:center;margin:.25rem 0 .2rem;padding:.3rem .45rem;border-radius:8px;color:#315c40;background:#edf5ef;font-size:.82rem}.receipt-date-group h3 small{color:#617467;font-size:.7rem;font-weight:500}.receipt-list{display:grid;gap:.2rem}.receipt-list-row{grid-template-columns:minmax(360px,1fr) minmax(100px,auto) minmax(75px,auto);min-height:58px}.receipt-list-main{gap:.7rem}.receipt-list-dates{display:grid;grid-template-columns:auto auto;gap:.18rem .5rem;min-width:156px;color:#5e7064;font-size:.68rem;font-variant-numeric:tabular-nums}.receipt-list-dates span{display:flex;gap:.28rem;align-items:center;white-space:nowrap}.receipt-list-dates small{width:54px;color:#87958b;font-size:.65rem}.receipt-list-merchant{flex:1}.receipt-list-row .receipt-actions{right:.35rem}
@media(max-width:760px){.toast-stack{top:5.5rem;right:.6rem;width:calc(100vw - 1.2rem)}.receipt-upload-heading{align-items:flex-start;flex-direction:column;gap:.15rem}.receipt-upload-form{grid-template-columns:1fr}.receipt-upload-form .receipt-file-picker,.receipt-upload-form .receipt-upload-footer{grid-column:1}.receipt-upload-footer{align-items:stretch;flex-direction:column}.receipt-upload-footer .button{width:100%;justify-content:center}.receipt-list-heading{align-items:stretch;flex-direction:column}.receipt-search{min-width:100%}.receipt-group-switch{overflow-x:auto;flex-wrap:nowrap}.receipt-group-switch a{flex:0 0 auto}.receipt-list-row{grid-template-columns:minmax(0,1fr) auto;gap:.3rem .5rem;min-height:70px;padding:.45rem 3rem .45rem .35rem}.receipt-list-main{grid-column:1;grid-row:1;align-items:flex-start;flex-direction:column;gap:.2rem}.receipt-list-dates{grid-template-columns:auto auto;min-width:0}.receipt-list-dates small{width:auto}.receipt-list-progress{grid-column:1;grid-row:2;margin-left:0}.receipt-list-total{grid-column:2;grid-row:1}.receipt-list-row .receipt-actions{right:.2rem}}
