@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}}

/* Flexible weeks and touch-first layout */
[hidden]{display:none!important}button,select,input{min-height:44px}button{touch-action:manipulation}button:focus-visible,a:focus-visible,summary:focus-visible{outline:3px solid #c46b3d;outline-offset:3px}
.account-menu{position:relative}.account-menu summary{cursor:pointer;padding:12px;list-style:none}.account-controls{position:absolute;right:0;top:48px;z-index:20;min-width:260px;background:#fffdf8;border:1px solid #ddd5c9;border-radius:16px;padding:20px;box-shadow:0 10px 40px #203b2920}.account-controls span{overflow-wrap:anywhere}
.weekbar{display:flex;gap:12px;align-items:end;flex-wrap:wrap;margin:24px 0}.weekbar label{display:grid;gap:6px;font-size:13px;font-weight:600}.weekbar select{min-width:180px}.weekbar>span{align-self:center;color:#657066;margin-right:auto}.daytop{display:flex;align-items:center;justify-content:space-between;gap:8px}.daytop .dayname{margin:0}.remove-day{padding:0!important;min-width:44px;font-size:23px;border:0;background:transparent}.day select{max-width:100%;width:100%;font-size:14px}.days{grid-template-columns:repeat(auto-fit,minmax(210px,1fr))}.dateword{margin-bottom:14px}#restoreday{margin-top:14px}#weekerror{color:#9d352c}#weekdialog{max-width:480px}#shopping{scroll-margin-top:20px}
@media(max-width:700px){
body{font-size:16px}header#appheader{padding:12px 16px;display:grid;grid-template-columns:1fr auto;gap:8px;height:auto}#appheader nav{grid-column:1/-1;grid-row:2;display:flex;overflow:auto;width:100%;gap:4px}#appheader nav button{flex:1;padding:10px 8px;white-space:nowrap;font-size:13px}.account-menu{grid-column:2;grid-row:1}.account-controls{width:min(300px,85vw)}#syncbar{padding:8px 16px;font-size:12px;flex-wrap:wrap}main{padding:0 16px!important}.hero{padding:26px 0!important;min-height:0!important}.hero h1{font-size:36px;line-height:1.12}.hero-art{display:none}.hero .eyebrow{font-size:10px}.hero p{font-size:15px}.section-head{align-items:start;gap:14px;flex-wrap:wrap}h2{font-size:25px}.portion{display:flex;align-items:center;gap:12px}.weekbar{gap:8px;padding:16px;background:#eeeede;border-radius:16px}.weekbar label{width:100%}.weekbar select{width:100%;font-size:18px}.weekbar>span{width:100%;font-size:13px;margin:2px 0 8px}.weekbar button{flex:1;padding:9px;font-size:13px}.days{grid-template-columns:1fr;gap:12px}.day{padding:18px;min-height:0}.day select{font-size:16px}.day label{display:flex;align-items:center;justify-content:space-between}.day label input{width:84px}.day>button{width:100%}.day .dateword{font-size:12px}.plan-actions{display:grid;grid-template-columns:1fr 1fr;gap:10px}.plan-actions #calculate{grid-column:1/-1;padding:16px}.plan-actions #summary{grid-column:1/-1}.filters{display:grid;grid-template-columns:1fr 1fr}.filters input{grid-column:1/-1;min-width:0}.filters select{min-width:0;width:100%}.cards{grid-template-columns:1fr}input,select,textarea{font-size:16px!important;max-width:100%}.shoprow{display:grid!important;grid-template-columns:32px minmax(0,1fr);gap:12px;padding:18px 0}.shoprow>input{grid-column:1;grid-row:1;width:24px;height:24px;min-height:24px}.shoprow>div:nth-child(2){grid-column:2}.shoprow .need,.shoprow .stock,.shoprow .buy{grid-column:2}.shoprow .stock{display:flex;align-items:center;gap:12px;justify-content:space-between}.shoprow .stock input{width:100px}.shoprow .buy{font-weight:600}.shoprow small{line-height:1.5}.productsrow{grid-template-columns:minmax(0,1fr) 28px 100px;gap:8px}.productsrow input{width:100%;min-width:0}dialog{width:calc(100% - 20px);max-height:calc(100dvh - 24px);margin:auto;border-radius:18px}.dialog-header{padding:12px 16px}.dialog-header h2{font-size:22px;overflow-wrap:anywhere}.dialog-content{padding:16px}.dialog-header .close{min-width:44px;flex-shrink:0}.formgrid{grid-template-columns:1fr 1fr}.ingredientedit{grid-template-columns:minmax(0,1fr) 75px 25px 44px;gap:5px}.ingredientedit select{min-width:0}.ingredientedit input{width:100%;min-width:0}.actions select{min-width:0;max-width:100%}footer{font-size:12px;padding-bottom:32px}#toast{max-width:calc(100vw - 32px);bottom:20px}
}
@media print{.weekbar button,.account-menu,#restoreday{display:none!important}}

.saved-week-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:22px;margin:24px 0}.saved-week-card{padding:24px;border:1px solid #deded1;background:#fffdf8;border-radius:20px;display:flex;flex-direction:column}.saved-week-head{display:flex;justify-content:space-between;align-items:center;gap:12px}.saved-week-head h3{font-size:23px;margin:0}.saved-week-card ol{list-style:none;padding:0;margin:20px 0;flex:1}.saved-week-card li{display:grid;grid-template-columns:72px minmax(0,1fr);gap:12px;padding:12px 0;border-top:1px solid #eeece2;font-size:14px}.saved-week-card li>span{color:#697366}.saved-week-card li strong{font-weight:500}.saved-week-card small{display:block;color:#697366;margin-top:4px}#appheader nav{flex-wrap:wrap}
@media(max-width:700px){.saved-week-grid{grid-template-columns:1fr}.saved-week-card{padding:20px}#appheader nav{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));overflow:visible}#appheader nav button{width:100%;white-space:normal}.weekbar #saveweek{flex-basis:100%}}

.chosen-date{display:flex;align-items:end;gap:10px;margin:10px 0}.chosen-date label{flex:1;min-width:0}.chosen-date input{width:100%;min-width:0}.chosen-date button{min-width:44px}.package-fields{display:grid;gap:8px;min-width:0}.package-fields input,.package-fields select{width:100%;min-width:0}.saved-week-head{flex-wrap:wrap}.saved-week-head h3{font-size:20px}.saved-week-card li{grid-template-columns:minmax(100px,1fr) 2fr}.weekbar select{max-width:100%}input[type=date]{font:inherit;min-height:46px;box-sizing:border-box}.shoprow .buy{line-height:1.5}#weekdialog{max-width:560px}.productsrow{grid-template-columns:minmax(0,1fr) 35px minmax(180px,1fr)}
@media(max-width:700px){.productsrow{grid-template-columns:minmax(0,1fr) 28px}.package-fields{grid-column:1/-1;grid-template-columns:1fr 1fr}.weekbar label{min-width:0}.weekbar select{min-width:0;width:100%}.saved-week-card li{grid-template-columns:1fr}.saved-week-card li>span{font-size:12px}.formgrid input[type=date]{max-width:100%}}

.plan-date-field{display:grid;gap:6px;flex:1;min-width:240px}.plan-date-field>span{font-size:13px;font-weight:600}.plan-date-field #weekselect{font:inherit;text-align:left;width:100%;background:#fffdf8;border:1px solid #c9cebf;padding:12px 16px;border-radius:12px}.drink-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px;margin:24px 0}.drink-card{padding:20px;border:1px solid #deded1;border-radius:16px;background:#fffdf8}.drink-card.selected{border-color:#48745a;background:#eff4ea}.drink-card h3{font-size:20px;margin:0 0 20px}.drink-fields{display:grid;grid-template-columns:1fr 1fr;gap:12px}.drink-fields label{font-size:13px;min-width:0}.drink-fields input,.drink-fields select{width:100%;min-width:0}.weekbar .plan-date-field{margin-right:auto}
@media(max-width:900px){.drink-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:700px){.plan-date-field{min-width:0;flex-basis:100%}.plan-date-field #weekselect{font-size:16px}.drink-grid{grid-template-columns:1fr}.drink-fields input,.drink-fields select{min-height:46px}#appheader nav{grid-template-columns:repeat(3,minmax(0,1fr))}#appheader nav button{font-size:12px}}

.plan-length{display:grid;gap:6px;font-size:13px;font-weight:600}.plan-length input{width:100px}.plan-date-field input[type=date]{width:100%;min-width:0;min-height:48px;padding:10px 14px;font-size:16px}.drink-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.drink-card>label{display:grid;gap:6px;margin:14px 0}.drink-card>label input,.drink-card>label select{width:100%;min-width:0}.drink-row-heading{display:flex;align-items:center;justify-content:space-between;gap:12px}.drink-row-heading h3{margin:0}.drink-row-heading button{font-size:13px}.drink-fields{margin-top:16px}
@media(max-width:700px){.drink-grid{grid-template-columns:1fr}.plan-date-field{flex-basis:calc(100% - 120px)}.plan-length{width:100px}.weekbar #weekdates{flex-basis:100%}}
