:root{color-scheme:light;--ink:#202f2c;--muted:#6d7974;--green:#23564a;--deep:#19483e;--pale:#eef5ef;--paper:#f8f6ef;--card:#fffefa;--line:#e4e8df;--gold:#e9ad72;--orange:#bc6e44;--shadow:0 12px 35px #1b473815;font-family:Inter,ui-sans-serif,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif}*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;background:var(--paper);color:var(--ink);line-height:1.48}button,input,select,textarea{font:inherit}button{cursor:pointer}button:disabled{opacity:.46;cursor:not-allowed}a{color:var(--green)}a:hover{text-decoration:none}input,select,textarea{background:white;border:1px solid #cdd7cf;border-radius:12px;padding:11px 12px;color:var(--ink);min-width:0;max-width:100%}input:focus,select:focus,textarea:focus,button:focus-visible{outline:3px solid #e0b27b;outline-offset:2px}textarea{resize:vertical}label{font-weight:650;font-size:.91rem;display:block;margin-bottom:5px}small,.muted{color:var(--muted)}h1,h2,h3,p{margin-top:0}h1{font-family:Georgia,serif;font-size:clamp(2rem,5vw,3.45rem);line-height:1.13;letter-spacing:-.035em}h2{font-family:Georgia,serif;letter-spacing:-.025em;font-size:1.8rem}h3{font-size:1.04rem}.app-shell{max-width:1320px;margin:auto;padding:0 24px 70px}.topbar{height:94px;display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid var(--line);gap:10px}.brand{display:flex;align-items:center;gap:13px;text-decoration:none;color:var(--ink)}.brand-mark{height:53px;width:53px;border-radius:15px;background:var(--green);display:grid;place-items:center;box-shadow:var(--shadow)}.brand-mark img{width:53px;height:53px}.brand-title{font:700 1.39rem Georgia,serif}.brand-subtitle{font-size:.71rem;color:var(--muted);letter-spacing:.06em;text-transform:uppercase}.top-actions{display:flex;align-items:center;gap:10px}.pill{background:#e8efe7;color:var(--green);border-radius:30px;padding:7px 12px;font-weight:650;font-size:.81rem}.btn{border:0;border-radius:12px;background:var(--green);color:white;padding:11px 17px;font-weight:700;white-space:nowrap;transition:transform .1s,background .16s}.btn:hover{background:var(--deep);transform:translateY(-1px)}.btn.secondary{background:#ebf0e8;color:var(--green)}.btn.secondary:hover{background:#dbe6db}.btn.ghost{background:transparent;color:var(--green);border:1px solid #bacec0}.btn.warn{background:#fff0e8;color:#924521}.btn.tiny{padding:7px 11px;font-size:.82rem;border-radius:9px}.tabs{display:flex;gap:8px;overflow-x:auto;white-space:nowrap;padding:18px 0 15px;border-bottom:1px solid var(--line)}.tab{border:0;background:transparent;border-radius:10px;padding:10px 14px;font-weight:700;color:#5d726b}.tab:hover,.tab.active{background:#e8eee7;color:var(--green)}.hero{background:linear-gradient(116deg,#e5eee3 0%,#f7f1e6 76%);border-radius:23px;padding:37px 38px;margin:25px 0;display:flex;justify-content:space-between;gap:18px;position:relative;overflow:hidden}.hero::after{content:'✦';position:absolute;font-size:200px;right:65px;top:-84px;color:#bfd5c244;transform:rotate(20deg);pointer-events:none}.eyebrow{font-size:.74rem;font-weight:850;text-transform:uppercase;letter-spacing:.15em;color:#8f603d}.hero p{max-width:530px;color:#5c7168;font-size:1.04rem;margin-bottom:0}.hero-right{z-index:1;display:flex;align-items:center}.metrics{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:15px;margin-bottom:22px}.metric,.panel,.meal-card,.recipe-card{border:1px solid var(--line);background:var(--card);box-shadow:0 3px 16px #264a2910;border-radius:18px}.metric{padding:19px 21px}.metric strong{font-size:1.8rem;color:var(--green);display:block}.metric small{font-size:.83rem}.two-col{display:grid;grid-template-columns:minmax(0,1.7fr) minmax(270px,1fr);gap:20px}.panel{padding:23px;margin-bottom:19px}.panel-header{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;margin-bottom:18px}.panel-header h2,.panel-header h3{margin:0}.button-row{display:flex;flex-wrap:wrap;gap:9px;align-items:center}.week-heading{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.week-heading span{font-weight:750}.meal-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:13px}.meal-card{padding:17px}.meal-card.today{border-color:#dca570}.meal-top{display:flex;justify-content:space-between;align-items:center;gap:8px;margin-bottom:8px}.day-tag{font-size:.77rem;font-weight:850;letter-spacing:.08em;color:var(--orange)}.recipe-title{font-family:Georgia,serif;font-size:1.18rem;margin-bottom:7px}.meal-meta{color:#67766f;font-size:.79rem}.meal-card select{width:100%;margin-top:12px;font-size:.87rem}.meal-emoji,.recipe-emoji{font-size:2.2rem;line-height:1.1}.recipe-emoji{font-size:2.8rem}.form-grid{display:grid;grid-template-columns:repeat(2, minmax(0,1fr));gap:14px}.form-grid .full{grid-column:1 / -1}.form-row{margin-bottom:15px}.form-row input,.form-row select,.form-row textarea{width:100%}.recipe-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px}.recipe-card{padding:20px;display:flex;flex-direction:column;gap:9px}.recipe-card h3{margin-bottom:0;font-family:Georgia,serif;font-size:1.22rem}.recipe-card .foot{margin-top:auto;display:flex;gap:8px;flex-wrap:wrap}.chip{display:inline-block;background:#f2ede2;color:#90603e;font-size:.77rem;font-weight:800;padding:4px 9px;border-radius:999px}.table-wrap{overflow:auto}.table{border-collapse:collapse;width:100%;min-width:550px;text-align:left}.table th{font-size:.74rem;letter-spacing:.08em;text-transform:uppercase;color:#6b7770;background:#f0f4ef}.table td,.table th{padding:12px;border-bottom:1px solid var(--line);vertical-align:middle}.table input[type=number]{width:95px;padding:8px}.table input[type=checkbox],input[type=checkbox]{accent-color:var(--green);width:18px;height:18px}.table .item-name{font-weight:730}.done .item-name{text-decoration:line-through;color:#89958f}.notice{padding:12px 15px;background:#f4ede0;border:1px solid #ecdfc7;border-radius:12px;color:#795b39;font-size:.9rem;margin:14px 0}.notice.green{background:#edf5ed;border-color:#d5e3d1;color:#376445}.empty{border:1px dashed #d1d9cf;border-radius:15px;text-align:center;padding:38px;color:#647369;background:#fafbf7}.progress{width:100%;height:9px;background:#e8ece6;border-radius:50px;overflow:hidden;margin:12px 0}.progress div{height:100%;background:var(--green);border-radius:50px}.soft-list{list-style:none;padding:0;margin:0}.soft-list li{display:flex;justify-content:space-between;align-items:center;padding:10px 0;border-bottom:1px solid var(--line);gap:12px}.soft-list li:last-child{border:0}.lined{border-top:1px solid var(--line);padding-top:18px;margin-top:18px}.small-form{display:flex;align-items:flex-end;gap:9px;flex-wrap:wrap}.small-form>div{flex:1;min-width:140px}.small-form input{width:100%}.settings-split{display:grid;grid-template-columns:1fr 1fr;gap:20px}.auth-layout{display:grid;grid-template-columns:1fr 1fr;gap:20px;align-items:start}.auth-message{padding:17px;background:#eef5ed;border-radius:12px;color:#426150;margin-top:15px}.helper{font-size:.81rem;color:var(--muted);margin-top:6px}.footer{font-size:.81rem;color:#6d7974;text-align:center;margin-top:37px}.toast{position:fixed;bottom:25px;left:50%;transform:translate(-50%,100px);background:#254d41;color:white;padding:12px 20px;border-radius:11px;box-shadow:var(--shadow);opacity:0;transition:.2s;z-index:100;max-width:90vw}.toast.show{transform:translate(-50%,0);opacity:1}.badge-online{color:#22624b}.badge-local{color:#865b39}.search{max-width:350px;width:100%}.recipe-details{padding:18px;border:1px solid var(--line);border-radius:13px;background:#fafbf8;margin-top:12px}.recipe-details ol{padding-left:22px}.recipe-details ul{padding-left:20px}details summary{cursor:pointer;font-weight:730}.info-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:10px}.info-grid>div{background:#f4f7f1;border-radius:12px;padding:14px}.cost-low{color:#176145;font-weight:850}.section-top{display:flex;justify-content:space-between;align-items:center;gap:12px;flex-wrap:wrap;margin:12px 0 20px}.print-only{display:none}@media(max-width:900px){.recipe-grid{grid-template-columns:repeat(2,1fr)}.two-col{grid-template-columns:1fr}.hero{padding:26px}.hero::after{right:0}}@media(max-width:620px){.app-shell{padding:0 12px 80px}.topbar{height:76px}.brand-title{font-size:1.16rem}.brand-subtitle{font-size:.59rem}.brand-mark,.brand-mark img{height:43px;width:43px}.pill{display:none}.hero{margin:18px 0;padding:23px;border-radius:16px}.hero-right{display:none}h1{font-size:2.2rem}.metrics{grid-template-columns:repeat(3,1fr);gap:8px}.metric{padding:13px}.metric strong{font-size:1.35rem}.metric small{font-size:.72rem}.meal-grid,.recipe-grid,.settings-split,.auth-layout,.form-grid{grid-template-columns:1fr}.panel{padding:16px}.tabs{gap:2px;padding-top:9px}.tab{padding:11px 10px;font-size:.88rem}.section-top{align-items:stretch}.search{max-width:none}}@media print{body{background:white}.topbar,.tabs,.btn,.footer,.hero-right,.no-print,.top-actions{display:none!important}.app-shell{padding:0}.panel,.metric,.meal-card{box-shadow:none;break-inside:avoid}.print-only{display:block}.table{min-width:0}h1{font-size:2.2rem}}

/* Price comparison provenance */
.price-entry{display:grid;gap:5px;min-width:115px}
.price-entry select{font-size:.75rem;padding:6px 8px;border-radius:8px}
.price-entry small{font-size:.68rem;white-space:nowrap}
.price-links{margin:0 0 18px}
.price-links .helper{margin:0 5px}

/* Membership cards */
.pricing-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:20px;margin-bottom:22px}.price-card{padding:30px}.price-card h2{margin:13px 0}.price-card .price-number{font-family:Georgia,serif;font-size:2.7rem;font-weight:750;color:var(--green)}.price-card .price-number small{font-family:inherit;font-size:1rem;font-weight:400}.price-card .btn{width:100%;margin-top:12px}.feature-list{padding-left:22px;line-height:2.05}.price-card.upcoming{background:#f4f5ee}@media(max-width:700px){.pricing-grid{grid-template-columns:1fr}.price-card{padding:22px}}
/* Kitchen equipment checklist */
.equipment-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:9px;margin:14px 0}.equipment-option{display:flex;align-items:center;gap:10px;margin:0;padding:12px;border:1px solid var(--line);border-radius:12px;background:#fafbf8;font-weight:650}.equipment-option input{flex:0 0 auto;margin:0;accent-color:var(--green)}@media(max-width:620px){.equipment-grid{grid-template-columns:1fr}}
.import-preview{margin-top:20px}.source-chip{display:inline-flex;gap:6px;align-items:center;margin-top:12px;padding:8px 11px;border-radius:999px;background:#f2f5ed;color:#52645c;font-size:.83rem}.source-chip a{color:var(--green);font-weight:700}.store-layout{display:grid;grid-template-columns:minmax(0,1.18fr) minmax(280px,.82fr);gap:20px;margin-top:20px}.map-embed{display:block;width:100%;min-height:430px;border:0;border-radius:14px;background:#eef1eb}.store-map{min-width:0}.store-results{max-height:610px;overflow:auto}.store-card{display:flex;align-items:flex-start;justify-content:space-between;gap:14px;padding:15px 0;border-bottom:1px solid var(--line)}.store-card:last-child{border-bottom:0}.store-card h3{margin:0 0 4px}.store-card .helper{margin:4px 0 0}.store-card .btn{flex:0 0 auto}@media(max-width:820px){.store-layout{grid-template-columns:1fr}.store-results{max-height:none}}@media(max-width:620px){.store-card{display:block}.store-card .btn{margin-top:10px}.map-embed{min-height:330px}}
.recipe-photo{width:100%;aspect-ratio:16/10;overflow:hidden;border-radius:14px;background:#eef1eb;margin-bottom:14px}.recipe-photo img{display:block;width:100%;height:100%;object-fit:cover}.recipe-photo-placeholder{display:flex;align-items:center;justify-content:center;background:linear-gradient(135deg,#e8eee4,#f5e8d2)}.recipe-photo-placeholder span{font-size:3.6rem;filter:drop-shadow(0 5px 8px rgba(35,86,74,.16))}.recipe-detail-image{min-width:260px;max-width:360px}.recipe-detail-image .recipe-photo{margin:0}.photo-credit{font-size:.72rem;color:#66766e;margin-top:6px;text-align:right}.photo-credit a{color:var(--green);font-weight:700}@media(max-width:620px){.recipe-detail-image{min-width:0;max-width:none;width:100%;margin-top:16px}.recipe-detail-image .recipe-photo{max-height:260px}}
.barcode-panel{margin:20px 0}.barcode-camera{position:relative;display:none;max-width:520px;aspect-ratio:4/3;margin:14px 0;border-radius:16px;overflow:hidden;background:#18231f}.barcode-camera.is-on{display:block}.barcode-camera video{display:block;width:100%;height:100%;object-fit:cover}.barcode-guide{position:absolute;left:15%;right:15%;top:35%;height:30%;border:2px solid #f6d49b;border-radius:12px;box-shadow:0 0 0 999px rgba(0,0,0,.24);color:#fff;text-align:center;padding-top:calc(30% + 18px);font-size:.82rem;text-shadow:0 1px 3px #000}.barcode-product{margin-top:18px;padding-top:18px;border-top:1px solid var(--line)}.barcode-product-head{display:flex;align-items:flex-start;gap:15px}.barcode-product-head img{width:90px;height:90px;object-fit:contain;border-radius:12px;background:#f5f6f1}.barcode-product-head h3{margin:0 0 5px}.barcode-ingredients{columns:2;column-gap:28px;margin:10px 0;padding-left:20px;line-height:1.55}.ingredient-details{margin-top:15px}.ingredient-details summary{cursor:pointer;font-weight:750;color:var(--green)}.bio-warning{margin:15px 0;padding:13px 15px;border:1px solid #e6b27a;border-radius:12px;background:#fff5e5;color:#864516;font-weight:650}.barcode-price-form{margin-top:16px}.barcode-pantry-check{display:flex;align-items:center;gap:8px;align-self:end;padding:10px 0;font-weight:650}.barcode-pantry-check input{margin:0;accent-color:var(--green)}@media(max-width:620px){.barcode-ingredients{columns:1}.barcode-product-head{align-items:center}.barcode-product-head img{width:72px;height:72px}}
.barcode-photo-button{display:inline-flex;align-items:center;cursor:pointer}.barcode-photo-input{display:none}
/* Full-screen scanner view */
.barcode-camera{position:fixed;inset:0;max-width:none;width:100%;height:100%;margin:0;border-radius:0;aspect-ratio:auto;z-index:1200;display:none;overflow:hidden;background:#050505;color:#fff}
.barcode-camera.is-on{display:block}
.barcode-camera video{position:absolute;inset:0;display:block;width:100%;height:100%;object-fit:cover;background:#050505}
.barcode-scan-shade{position:absolute;inset:0;background:linear-gradient(180deg,rgba(0,0,0,.48),transparent 22%,transparent 67%,rgba(0,0,0,.68));pointer-events:none}
.barcode-scan-header{position:absolute;top:0;left:0;right:0;display:flex;align-items:center;justify-content:space-between;padding:calc(16px + env(safe-area-inset-top)) 20px 16px;background:rgba(8,39,124,.9);font-size:1.12rem;letter-spacing:.01em}
.barcode-scan-header-actions{display:flex;align-items:center;gap:8px}.barcode-scan-icon{display:grid;place-items:center;width:42px;height:42px;border:0;border-radius:50%;background:transparent;color:#fff;font-size:2rem;line-height:1;cursor:pointer}.barcode-scan-icon:hover{background:rgba(255,255,255,.16)}.barcode-scan-header-actions .barcode-scan-icon{font-size:1.25rem}
.barcode-type-pill{position:absolute;top:calc(82px + env(safe-area-inset-top));left:50%;transform:translateX(-50%);border:1px solid rgba(0,0,0,.55);border-radius:999px;padding:11px 20px;background:#fff;color:#242424;font-size:1rem;font-weight:750;box-shadow:0 3px 10px rgba(0,0,0,.3);cursor:pointer;white-space:nowrap}
.barcode-scan-frame{position:absolute;left:14%;right:14%;top:35%;height:25%;min-height:150px;max-height:270px}.barcode-scan-frame span{position:absolute;width:45px;height:45px}.barcode-scan-frame span:nth-child(1){top:0;left:0;border-top:4px solid #fff;border-left:4px solid #fff}.barcode-scan-frame span:nth-child(2){top:0;right:0;border-top:4px solid #fff;border-right:4px solid #fff}.barcode-scan-frame span:nth-child(3){bottom:0;left:0;border-bottom:4px solid #fff;border-left:4px solid #fff}.barcode-scan-frame span:nth-child(4){right:0;bottom:0;border-right:4px solid #fff;border-bottom:4px solid #fff}.barcode-scan-frame b{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);font-size:3rem;font-weight:300;line-height:1;color:#fff;text-shadow:0 1px 8px rgba(0,0,0,.5)}
.barcode-scan-hint{position:absolute;top:calc(62% + 20px);left:20px;right:20px;margin:0;text-align:center;color:#fff;font-size:.95rem;font-weight:650;text-shadow:0 2px 4px rgba(0,0,0,.8)}
.barcode-scan-bottom{position:absolute;left:0;right:0;bottom:0;padding:18px 20px calc(22px + env(safe-area-inset-bottom));text-align:center;background:linear-gradient(transparent,rgba(0,0,0,.82) 28%)}.barcode-scan-bottom p{margin:18px 0 10px;color:#fff;font-size:.9rem}.barcode-scan-stop{border:1px solid rgba(255,255,255,.75);border-radius:999px;padding:9px 17px;background:rgba(255,255,255,.14);color:#fff;font-weight:700;cursor:pointer}
body.scanner-open{overflow:hidden}.barcode-scan-capture{display:inline-flex;align-items:center;cursor:pointer}
