@import url('https://fonts.googleapis.com/css2?family=DM+Sans:wght@400;500;600;700&family=Manrope:wght@400;600;700;800&display=swap');
:root{--ink:#20392c;--green:#326243;--paper:#f7f6ee;--line:#d9ded0;--muted:#687265}*{box-sizing:border-box}body{margin:0;background:var(--paper);color:var(--ink);font:15px 'DM Sans',sans-serif}header{padding:24px 5%;border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;background:#fcfcf6}.brand{font:800 34px Manrope,sans-serif;letter-spacing:-2px;color:var(--ink);text-decoration:none}.brand span{color:#c98042}nav{display:flex;gap:8px}button,.filebutton{background:white;border:1px solid var(--line);color:var(--ink);border-radius:8px;padding:11px 16px;cursor:pointer;font:600 14px 'DM Sans',sans-serif}button:hover,.filebutton:hover{border-color:var(--green);background:#eef2e9}nav button{border:0;background:transparent}nav button.active{background:#e6eddf}nav span{font-size:11px;padding:2px 5px;background:#d2ddc7;border-radius:4px}main{max-width:1400px;margin:auto;padding:0 5%}.hero{display:flex;align-items:center;justify-content:space-between;min-height:325px;padding:40px 0}.eyebrow{font-size:11px;font-weight:700;letter-spacing:2px;color:var(--green);margin:0 0 12px}h1{font:800 clamp(36px,4.3vw,62px)/1.08 Manrope,sans-serif;letter-spacing:-2px;margin:0 0 18px}h2{font:700 27px Manrope,sans-serif;letter-spacing:-.8px;margin:0 0 12px}h3{font:700 18px Manrope,sans-serif}.hero p:not(.eyebrow){color:var(--muted);line-height:1.6}.hero-art{width:300px;height:240px;position:relative;display:grid;place-items:center;background:#e2e8d7;border-radius:50% 50% 35% 55%;transform:rotate(-8deg)}.plate{width:180px;height:180px;background:#fbfaf1;border:15px solid #eff0e3;box-shadow:5px 9px 0 #c9d3b9;border-radius:50%;position:relative;display:grid;place-items:center}.food{font-size:67px;position:absolute;left:15px;top:42px}.leaf{font-size:69px;position:absolute;right:10px;top:15px}.lemon{font-size:47px;position:absolute;right:20px;bottom:10px}.art-label{position:absolute;bottom:5px;background:#fffaf0;padding:10px 15px;font-size:12px;transform:rotate(8deg);box-shadow:0 3px 10px #0001}.section-head{display:flex;align-items:center;justify-content:space-between;gap:20px}.muted{color:var(--muted);font-size:13px;line-height:1.6}.portion{display:flex;gap:10px;align-items:center;font-size:13px}.portion input{width:65px}.days{display:grid;grid-template-columns:repeat(7,1fr);gap:10px;margin:24px 0}.day{background:#fffef7;border:1px solid var(--line);border-radius:12px;padding:15px 12px;min-width:0}.day.selected{border-top:4px solid var(--green);padding-top:12px}.day .dayname{font-weight:700;margin:0 0 6px}.day .dateword{font-size:11px;color:var(--muted);margin-bottom:16px}.day select{font-size:12px;padding:8px 4px;margin-bottom:12px;width:100%}.day input{width:58px;padding:7px}.day label{font-size:11px;display:flex;justify-content:space-between;align-items:center}.day button{margin-top:12px;width:100%;font-size:11px;padding:8px}.actions{display:flex;gap:10px;align-items:center;flex-wrap:wrap;margin:22px 0 35px}.primary{background:var(--green);color:white;border-color:var(--green)}.primary:hover{background:#264f35;color:white}.primary span{padding-left:15px}input,select,textarea{border:1px solid var(--line);background:white;color:var(--ink);border-radius:7px;padding:11px;font:inherit}input:focus,select:focus,textarea:focus,button:focus-visible{outline:2px solid #7d9c6c;outline-offset:2px}.filters{display:flex;gap:12px;margin:20px 0}.filters input{flex:1}.cards{display:grid;grid-template-columns:repeat(3,1fr);gap:16px}.card{background:#fffef7;border:1px solid var(--line);border-radius:12px;padding:22px}.card .tag{font-size:10px;letter-spacing:1px;text-transform:uppercase;color:var(--green)}.card h3{margin:14px 0 9px}.card button{width:100%;margin-top:12px}.card p{min-height:35px}.shopgroup{margin-top:26px}.shopgroup h3{font-size:14px;border-bottom:1px solid var(--line);padding-bottom:12px}.shoprow{display:grid;grid-template-columns:28px 1.5fr 1fr 130px 1.4fr;gap:12px;align-items:center;padding:15px 10px;border-bottom:1px solid #e5e7dd}.shoprow input[type=number]{width:95px;padding:7px}.shoprow label{font-size:11px}.shoprow .buy{font-size:13px;color:var(--green)}.shoprow.done{opacity:.5}.shoprow small{display:block;color:var(--muted);font-size:11px;margin-top:4px}.productsrow{display:grid;grid-template-columns:1fr 50px 180px;gap:15px;padding:15px;border-bottom:1px solid var(--line);align-items:center}.productsrow small{display:block;color:var(--muted);font-size:12px}.productsrow input{width:100%}footer{padding:45px 0 30px;margin-top:45px;border-top:1px solid var(--line);font-size:12px;color:var(--muted);line-height:1.8}footer a{color:var(--green)}dialog{border:0;border-radius:16px;padding:35px;max-width:700px;width:calc(100% - 30px);max-height:90vh;color:var(--ink);background:#fffef8;box-shadow:0 20px 100px #0003}dialog::backdrop{background:#20392c88}.close{float:right;padding:4px 12px;font-size:24px;border:0;background:transparent}dialog label{display:block;font-size:13px;margin:13px 0}dialog label input,dialog label textarea,dialog label select{width:100%;margin-top:6px}.formgrid{display:grid;grid-template-columns:1fr 1fr;gap:0 15px}.ingredientedit{display:grid;grid-template-columns:1fr 90px 35px 40px;gap:7px;margin:10px 0;align-items:center;min-width:0}.ingredientedit select{width:100%;min-width:0}.ingredientedit input{width:100%}.ingredientedit button{padding:8px}.detailingredients{padding-left:20px;line-height:1.9}.steps{line-height:1.7;padding-left:22px}.steps li{margin-bottom:12px}#toast{position:fixed;bottom:20px;left:50%;transform:translateX(-50%);background:var(--ink);color:white;border-radius:8px;padding:12px 20px;display:none;z-index:10}[hidden]{display:none!important}@media(max-width:1050px){.days{grid-template-columns:repeat(4,1fr)}.hero-art{width:250px}.cards{grid-template-columns:repeat(2,1fr)}}@media(max-width:650px){header{align-items:flex-start;gap:12px;flex-direction:column;padding:18px 5%}nav{gap:2px;flex-wrap:wrap}nav button{font-size:12px;padding:8px}.hero{min-height:280px}.hero-art{display:none}.days{grid-template-columns:repeat(2,1fr)}.section-head{align-items:flex-start;flex-direction:column}.cards{grid-template-columns:1fr}.filters{flex-wrap:wrap}.filters input{flex-basis:100%}.shoprow{grid-template-columns:25px 1fr 100px;gap:8px}.shoprow .need{grid-column:2}.shoprow .stock{grid-column:3;grid-row:1 / span 2}.shoprow .buy{grid-column:2 / span 2}.productsrow{grid-template-columns:1fr 35px 110px;padding:12px 0}.ingredientedit{grid-template-columns:1fr 65px 25px 30px;font-size:12px}.ingredientedit select{padding:7px}dialog{padding:20px}.formgrid{grid-template-columns:1fr}h2{font-size:24px}}@media print{header,.hero,.actions,#days,.portion,.filters,footer,button,.stock{display:none!important}main{padding:0}.shoprow{grid-template-columns:25px 1.5fr 1fr 1.4fr}.tab:not(#plan){display:none!important}#shopping{display:block!important}.shoprow.done{display:none}.shopgroup{break-inside:avoid}}

/* The header stays outside the scrollable content, including on small screens. */
dialog{padding:0;overflow:hidden;max-height:90vh;max-height:90dvh}
.dialog-header{height:56px;display:flex;justify-content:flex-end;align-items:center;padding:6px 15px;border-bottom:1px solid var(--line);background:#fffef8}
.dialog-header .close{float:none;min-width:44px;min-height:44px;line-height:1}
.dialog-content{padding:25px 35px 35px;max-height:calc(90vh - 56px);max-height:calc(90dvh - 56px);overflow-y:auto;overscroll-behavior:contain;scrollbar-gutter:stable}
body:has(dialog[open]){overflow:hidden}
@media(max-width:650px){.dialog-content{padding:20px}}

/* Keep the title and close button in the same fixed dialog header. */
dialog[open]{display:flex;flex-direction:column}
.dialog-header{height:auto;min-height:72px;flex-shrink:0;justify-content:space-between;gap:16px;padding:14px 22px}
.dialog-header h2{font-size:23px;line-height:1.3;margin:0;min-width:0;overflow-wrap:anywhere}
.dialog-header .close{flex-shrink:0;align-self:flex-start}
.dialog-content{flex:0 1 auto;min-height:0;max-height:none}
@media(max-width:650px){.dialog-header{padding:12px 16px;gap:10px}.dialog-header h2{font-size:20px}}

/* Cloudflare account and persistence UI; original cards, layout and dialogs retained. */
.account-gate{min-height:100vh;display:grid;place-items:center;padding:24px}.gate-card{width:min(420px,100%);padding:30px;background:#fffef7;border:1px solid var(--line);border-radius:16px}.gate-card h1{font-size:40px}.logodot{color:#c98042}.gate-card label{display:block;margin:16px 0}.gate-card label input{display:block;width:100%;margin-top:7px}.gate-card button.primary{width:100%}.gate-card p{line-height:1.6}.account-controls{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.account-controls #accountemail{font-size:11px;overflow-wrap:anywhere}.account-controls button{font-size:11px;padding:8px}.account-controls #adminlabel{font-size:11px;color:var(--green)}#syncbar{background:#e8efe4;border-bottom:1px solid var(--line);padding:10px 5%;display:flex;gap:12px;align-items:center;flex-wrap:wrap;font-size:13px}#syncbar button{padding:6px 9px;font-size:12px}#syncstatus[data-kind=error],#syncstatus[data-kind=conflict]{color:#a02e29;font-weight:700}#syncstatus[data-kind=pending]{color:#775a08}.legacy-note{padding:16px;margin-top:12px;background:#edf0e3;border:1px solid var(--line);border-radius:8px}.legacy-note button{display:block;margin-top:12px}@media(max-width:700px){.account-controls{width:100%}.account-controls #accountemail{flex-basis:100%}}@media print{#syncbar{display:none!important}}
