:root{--paper:#f8f5ee;--card:#fffdf8;--ink:#243b31;--muted:#767d70;--green:#325747;--line:#dedfd4;--accent:#cb6c43;--soft:#e8eddf;--danger:#a33f36;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif;color:var(--ink);background:var(--paper)}
*{box-sizing:border-box}body{margin:0}a{color:inherit}button,input,select,textarea{font:inherit}button,.button{border:1px solid transparent;border-radius:8px;padding:.8rem 1rem;cursor:pointer;text-decoration:none;display:inline-flex;justify-content:center;align-items:center;gap:.5rem;font-weight:600;line-height:1.2}button:disabled{opacity:.5;cursor:wait}.primary{background:var(--green);color:var(--primary-ink)}.secondary{background:var(--card);border-color:var(--line);color:var(--ink)}.quiet{background:transparent;color:var(--green);padding:.5rem}.danger{color:var(--danger)}button:hover,.button:hover{filter:brightness(.96)}button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible{outline:3px solid var(--accent);outline-offset:3px}h1,h2,h3,p{margin-top:0}h1,h2,h3{font-family:Georgia,'Times New Roman',serif;font-weight:400}h1{font-size:clamp(2.4rem,4.8vw,4.1rem);line-height:1.06;letter-spacing:-.035em;margin-bottom:1.2rem}h2{font-size:1.7rem;line-height:1.15}h3{font-size:1.4rem}p{line-height:1.65}.muted{color:var(--muted)}.small{font-size:.83rem;line-height:1.6}.eyebrow{font-size:.65rem;letter-spacing:.16em;font-weight:700;text-transform:uppercase;color:var(--green);margin-bottom:1rem}.wordmark{font-family:Georgia,serif;font-size:1.5rem;text-decoration:none;white-space:nowrap}.wordmark span{color:var(--accent);padding-left:.3rem}.topbar{max-width:1440px;margin:auto;display:flex;align-items:center;gap:2rem;padding:1.6rem 3rem;border-bottom:1px solid var(--line)}.private-label{margin-left:auto;color:var(--muted);font-size:.6rem;letter-spacing:.2em}nav{max-width:1440px;margin:auto;padding:0 3rem;display:flex;gap:2.4rem;border-bottom:1px solid var(--line);overflow-x:auto}nav a{white-space:nowrap;display:block;padding:1.2rem 0;text-decoration:none;color:var(--muted);font-size:.87rem;border-bottom:2px solid transparent}nav a.active{border-color:var(--green);color:var(--green);font-weight:600}main{max-width:1300px;margin:auto;padding:3.8rem 2rem;min-height:70vh}footer{text-align:center;color:var(--muted);font-size:.75rem;border-top:1px solid var(--line);padding:2rem}.page-head{display:flex;align-items:flex-end;justify-content:space-between;gap:2rem;margin-bottom:2.7rem}.page-head p:last-child{max-width:500px;margin-bottom:0}.actions{display:flex;gap:.7rem;flex-wrap:wrap;align-items:center}.filters{display:flex;gap:.8rem;border-bottom:1px solid var(--line);padding-bottom:1.4rem;margin-bottom:2rem}.filters input{max-width:440px;flex:1}.filters select{max-width:240px}input:not([type=checkbox]),select,textarea{border:1px solid var(--line);border-radius:8px;padding:.8rem .9rem;background:var(--card);color:var(--ink);width:100%;min-width:0}input[type=checkbox]{width:19px;height:19px;accent-color:var(--green);flex-shrink:0;margin:3px 0}textarea{resize:vertical;line-height:1.6}label{display:flex;flex-direction:column;gap:.45rem;font-size:.87rem;font-weight:500}label .muted{font-weight:400}.recipe-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:1.5rem}.recipe-card{text-decoration:none;background:var(--card);border:1px solid var(--line);border-radius:12px;overflow:hidden;transition:transform .15s,box-shadow .15s}.recipe-card:hover{transform:translateY(-3px);box-shadow:0 8px 24px #243b310d}.card-image{height:210px;position:relative}.card-image img{width:100%;height:100%;object-fit:cover}.placeholder{display:grid;place-items:center;background:radial-gradient(ellipse at 70% 20%,var(--wash),transparent 65%),var(--soft);color:var(--placeholder-ink)}.placeholder>span{font-size:5rem;font-weight:200}.heart{position:absolute;right:1rem;top:1rem;background:var(--card);padding:.35rem .6rem;border-radius:50%;color:var(--accent)}.card-body{padding:1.4rem}.card-body .eyebrow{margin-bottom:.6rem}.card-body h2{font-size:1.6rem;margin-bottom:.7rem}.card-body p.muted{font-size:.85rem;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;min-height:2.8em}.card-body .small{border-top:1px solid var(--line);display:block;padding-top:1rem}.empty{grid-column:1/-1;text-align:center;padding:4rem 1rem;border:1px dashed var(--line);border-radius:12px;width:100%}.empty h2{margin-top:1rem}.empty-icon{font-size:3.5rem;color:var(--accent)}.empty p{margin-bottom:0}.back{display:inline-block;text-decoration:none;font-size:.8rem;color:var(--muted);margin-bottom:2.4rem}.detail-heading{display:flex;justify-content:space-between;gap:2rem;align-items:center}.detail-heading h1{font-size:clamp(2.3rem,4.5vw,3.7rem);max-width:800px}.lead{font-size:1.05rem;max-width:650px}.detail-photo{width:250px;height:210px;object-fit:cover;border-radius:12px}.recipe-actions{padding:1.4rem 0;border-bottom:1px solid var(--line)}.recipe-meta{display:flex;align-items:center;gap:2rem;padding:1.5rem 0;color:var(--muted);font-size:.9rem}.recipe-meta label{flex-direction:row;align-items:center}.recipe-meta input{width:85px}.recipe-columns{display:grid;grid-template-columns:1fr 1.5fr;gap:4rem;margin:1.2rem 0 2.5rem}.section-heading{display:flex;justify-content:space-between;align-items:center;gap:.5rem}.section-heading h2{margin-bottom:.8rem}.checklist{list-style:none;padding:0}.checklist li{border-bottom:1px solid var(--line);padding:.85rem 0}.checklist label,.steps label{display:flex;flex-direction:row;align-items:flex-start;gap:.8rem;line-height:1.6;cursor:pointer}.checklist input:checked+span,.steps input:checked+span{opacity:.45;text-decoration:line-through}.steps{list-style:none;padding:0}.steps li{margin-bottom:1.6rem}.steps b{display:block;text-transform:uppercase;font-size:.65rem;letter-spacing:.08em;color:var(--muted);margin-bottom:.4rem}.steps label{font-size:1rem;font-weight:400}.notes{background:var(--soft);padding:1.7rem;border-radius:12px}.notes p:last-child{white-space:pre-wrap;margin:0}.source{overflow-wrap:anywhere;font-size:.8rem;color:var(--muted);margin-top:1.5rem}.danger-zone{border-top:1px solid var(--line);padding-top:1rem;margin-top:2rem}.cooking .topbar,.cooking nav,.cooking footer,.cooking .back,.cooking .detail-photo,.cooking .recipe-actions button:not([data-action=cook]),.cooking .danger-zone{display:none}.cooking .checklist label,.cooking .steps label{font-size:1.3rem}.cooking main{padding-top:2rem}.week-controls{display:flex;gap:1rem;align-items:center;margin-bottom:1.5rem}.week-controls h2{margin:0}.week-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:1rem;margin-bottom:1.5rem}.day-card{background:var(--card);border:1px solid var(--line);border-radius:10px;padding:1.1rem;min-height:200px;display:flex;flex-direction:column}.day-card.today{border-color:var(--green);box-shadow:inset 0 3px var(--green)}.day-card h2{font-size:1.4rem}.day-card .eyebrow{margin-bottom:.4rem}.add-meal{margin-top:auto;justify-content:flex-start}.planned{background:var(--soft);border-radius:6px;padding:.7rem;position:relative;margin-bottom:.7rem;padding-right:1.6rem}.planned a{display:block;text-decoration:none;line-height:1.4}.planned button{position:absolute;top:.4rem;right:.2rem}.shopping-panel{max-width:760px}.inline-form{display:flex;gap:.6rem;margin-bottom:2rem}.inline-form input{flex:1}.shopping-item{display:flex;align-items:center;justify-content:space-between;gap:1rem}.shopping-item label{flex:1}.settings-grid{display:grid;grid-template-columns:1fr 1fr;gap:1.5rem}.panel{border:1px solid var(--line);background:var(--card);border-radius:12px;padding:2rem}.panel h3{margin-top:2rem}.panel form{display:grid;gap:1rem}.panel pre{overflow:auto;background:var(--soft);padding:1rem;border-radius:8px}.login-wrap{min-height:100vh;display:grid;place-items:center;padding:2rem;background:radial-gradient(ellipse at 95% 0,var(--login-wash),transparent 60%),var(--paper)}.login-card{max-width:470px;width:100%}.login-card .wordmark{margin-bottom:4rem}.login-card h1{font-size:3.5rem}.login-card label{margin:2rem 0 1rem}.login-card .primary{width:100%}#login-error{color:var(--danger);margin-top:1rem}dialog{border:1px solid var(--line);border-radius:16px;background:var(--paper);color:var(--ink);padding:2rem;max-width:720px;width:calc(100% - 2rem);max-height:90vh;box-shadow:0 24px 100px #0003}dialog::backdrop{background:#16291fa8;backdrop-filter:blur(3px)}dialog form{display:grid;gap:1.2rem}.dialog-heading{display:flex;align-items:center;justify-content:space-between;gap:1rem}.dialog-heading h2{margin:0}.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:1rem}.dialog-heading .quiet{font-size:1.1rem}#toast{position:fixed;bottom:1.5rem;left:50%;transform:translateX(-50%);background:var(--ink);color:var(--paper);padding:1rem 1.5rem;border-radius:10px;box-shadow:0 8px 40px #0003;z-index:1000;max-width:90vw;width:max-content;line-height:1.5;font-size:.9rem}[hidden]{display:none!important}
.import-review{padding:1.2rem;border:1px solid var(--line);border-left:4px solid var(--accent);border-radius:8px;background:var(--soft)}.import-review h3{margin-bottom:.6rem}.import-review ul{padding-left:1.2rem;font-size:.85rem;line-height:1.6}.import-review pre{white-space:pre-wrap;overflow-wrap:anywhere;max-height:18rem;overflow:auto;font:inherit;font-size:.85rem;line-height:1.6}.import-confirm{flex-direction:row;align-items:flex-start;padding:1rem;background:var(--soft);border-radius:8px;line-height:1.5}summary{cursor:pointer;font-weight:600;margin-bottom:.8rem}#import-error{color:var(--danger);margin:0}#import-error:empty{display:none}
.ingredient-choices{border:0;padding:0;min-width:0}.ingredient-choices legend{font-weight:600;margin-bottom:1rem}.ingredient-options li{padding:.7rem;border-radius:6px}.ingredient-options li:has(input:checked){background:var(--soft)}.ingredient-options input:checked+span{opacity:1;text-decoration:none;font-weight:600}.ingredient-options span{overflow-wrap:anywhere}#ingredient-picker-error{color:var(--danger);margin:0}#ingredient-picker-error:empty{display:none}#ingredient-picker-recipe{margin:0;overflow-wrap:anywhere}
#scan-dialog>.dialog-heading{margin-bottom:1rem}#scan-results{margin-top:1.7rem;padding-top:1.2rem;border-top:1px solid var(--line)}#scan-results h3{margin-bottom:.7rem}#scan-error{color:var(--danger);margin-top:1rem}#scan-error:empty{display:none}
@media(max-width:950px){.page-head{align-items:flex-start;flex-direction:column}.recipe-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.week-grid{grid-template-columns:repeat(3,minmax(0,1fr))}.recipe-columns{gap:2rem}.detail-photo{width:180px;height:180px}.topbar{padding:1.3rem 2rem}nav{padding:0 2rem;gap:2rem}.private-label{display:none}.topbar .quiet{margin-left:auto}}
@media(max-width:620px){main{padding:2rem 1.2rem}.topbar{padding:1.2rem}.wordmark{font-size:1.3rem}nav{padding:0 1.2rem;gap:1.5rem}nav a{font-size:.8rem}.filters{flex-wrap:wrap}.filters input{flex-basis:100%;max-width:none}.filters select{flex:1;max-width:none}.recipe-grid{grid-template-columns:1fr}.card-image{height:220px}.recipe-columns,.settings-grid{grid-template-columns:1fr;gap:1.5rem}.week-grid{grid-template-columns:1fr 1fr}.week-controls{flex-wrap:wrap;gap:.6rem}.week-controls h2{font-size:1.3rem}.detail-heading{flex-direction:column;align-items:stretch}.detail-photo{width:100%;height:220px}.recipe-meta{flex-wrap:wrap;gap:1rem}.recipe-actions{gap:.5rem}.recipe-actions button{font-size:.8rem}.section-heading h2{font-size:1.5rem}.section-heading .quiet{font-size:.75rem}dialog{padding:1.4rem}.form-grid{grid-template-columns:1fr 1fr}.login-card h1{font-size:3rem}.login-card .wordmark{margin-bottom:3rem}.panel{padding:1.4rem}}
@media print{body{background:white;color:black}.topbar,nav,footer,.back,.recipe-actions,.danger-zone,#toast,.recipe-meta input,.section-heading button{display:none!important}main{padding:0}.recipe-columns{grid-template-columns:1fr 1.5fr;gap:2rem}.recipe-detail h1{font-size:2.5rem}.notes{background:none;border:1px solid #ddd}.steps li,.checklist li{break-inside:avoid}.detail-photo{max-height:150px}input[type=checkbox]{display:none}}
