:root{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light dark;--bg:var(--lightningcss-light,#f2f4ee)var(--lightningcss-dark,#121712);--surface:var(--lightningcss-light,#fff)var(--lightningcss-dark,#1b221c);--ink:var(--lightningcss-light,#1f2a22)var(--lightningcss-dark,#e4e9df);--on-ink:var(--lightningcss-light,#fff)var(--lightningcss-dark,#121712);--muted:var(--lightningcss-light,#6c766b)var(--lightningcss-dark,#9ba698);--line:var(--lightningcss-light,#dce0d6)var(--lightningcss-dark,#2f3931);--prot:var(--lightningcss-light,#b8412e)var(--lightningcss-dark,#e0664f);--carb:var(--lightningcss-light,#d9a13b)var(--lightningcss-dark,#e3b04f);--fat:var(--lightningcss-light,#5e7c3a)var(--lightningcss-dark,#8db265);--new:var(--lightningcss-light,#2f5d8a)var(--lightningcss-dark,#7aa7d8);--on-new:var(--lightningcss-light,#fff)var(--lightningcss-dark,#0f1a26);--warn-ink:var(--lightningcss-light,#b8412e)var(--lightningcss-dark,#ee8a75);--warn-bg:var(--lightningcss-light,#fbe9e5)var(--lightningcss-dark,#3b221d);--ok-bg:var(--lightningcss-light,#eef3e6)var(--lightningcss-dark,#202e1f);--season-ink:var(--lightningcss-light,#8a5e10)var(--lightningcss-dark,#e3b04f);--season-bg:var(--lightningcss-light,#fbf1dc)var(--lightningcss-dark,#3a2f17);--edited-bg:var(--lightningcss-light,#e6edf4)var(--lightningcss-dark,#1c2a38);--shadow:var(--lightningcss-light,#1f2a2229)var(--lightningcss-dark,#00000080);--serif:"Fraunces", Georgia, serif;--sans:"Manrope", system-ui, sans-serif}@media (prefers-color-scheme:dark){:root{--lightningcss-light: ;--lightningcss-dark:initial}}:root[data-theme=light]{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}:root[data-theme=dark]{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}*{box-sizing:border-box}html{background:var(--bg);color:var(--ink);font-family:var(--sans);-webkit-text-size-adjust:100%;font-size:16px;line-height:1.5}body{padding:0 max(clamp(16px, 4vw, 56px), env(safe-area-inset-right)) calc(80px + env(safe-area-inset-bottom)) max(clamp(16px, 4vw, 56px), env(safe-area-inset-left));margin:0}button{font-family:inherit}:focus-visible{outline:3px solid var(--carb);outline-offset:2px}header.top{max-width:1180px;padding:max(44px, calc(env(safe-area-inset-top) + 16px)) 0 20px;flex-wrap:wrap;justify-content:space-between;align-items:flex-end;gap:20px;margin:0 auto;display:flex}h1{font-family:var(--serif);letter-spacing:-.01em;font-variation-settings:"SOFT" 40, "opsz" 96;margin:0;font-size:clamp(34px,5vw,56px);font-weight:400;line-height:1}h1 small{font-family:var(--sans);color:var(--muted);letter-spacing:0;margin-top:10px;font-size:15px;font-weight:500;display:block}.top-right{justify-items:end;gap:10px;display:grid}.who{color:var(--muted);align-items:center;gap:10px;font-size:13.5px;display:flex}.theme-toggle{border:1px solid var(--line);background:var(--surface);color:var(--muted);font:600 12.5px var(--sans);cursor:pointer;border-radius:999px;align-items:center;gap:6px;padding:4px 10px 4px 8px;display:inline-flex}.theme-toggle:hover{border-color:var(--ink);color:var(--ink)}.link{color:var(--muted);font:600 13.5px var(--sans);cursor:pointer;background:0 0;border:0;padding:0;text-decoration:underline}.seg{border:1.5px solid var(--ink);background:var(--surface);border-radius:999px;padding:4px;display:inline-flex}.seg button,.seg a{font:600 17px var(--sans);color:var(--ink);cursor:pointer;background:0 0;border:0;border-radius:999px;padding:10px 24px;text-decoration:none}.seg button[aria-pressed=true],.seg a[aria-current=page]{background:var(--ink);color:var(--on-ink)}.meal-seg{margin-bottom:16px}.meal-seg button{padding:8px 20px;font-size:15px}.seg.small{padding:3px}.seg.small button{padding:7px 14px;font-size:14px}main{max-width:1180px;margin:0 auto}.profile{background:var(--surface);border:1px solid var(--line);border-radius:20px;grid-template-columns:1.3fr 1fr;align-items:center;gap:26px;padding:22px 26px;display:grid}.profile h2{font-family:var(--serif);margin:0 0 6px;font-size:22px;font-weight:500}.profile p{color:var(--muted);max-width:52ch;margin:0;font-size:14px}.nums{grid-template-columns:repeat(4,1fr);gap:12px;display:grid}.nums div{border-left:2px solid var(--line);padding-left:12px}.nums b{font-family:var(--serif);font-size:30px;font-weight:500;line-height:1;display:block}.nums span{color:var(--muted);font-size:13px}.bar{background:var(--line);border-radius:7px;height:14px;display:flex;overflow:hidden}.bar i{height:100%;display:block}.bar .p{background:var(--prot)}.bar .c{background:var(--carb)}.bar .f{background:var(--fat)}.legend{color:var(--muted);flex-wrap:wrap;gap:6px 18px;margin-top:8px;font-size:13px;display:flex}.legend i{vertical-align:-1px;border-radius:50%;width:10px;height:10px;margin-right:6px;display:inline-block}.toolbar{flex-wrap:wrap;align-items:center;gap:10px;margin:26px 0 18px;display:flex}.chip{border:1.5px solid var(--line);background:var(--surface);font:600 14px var(--sans);color:var(--ink);cursor:pointer;border-radius:999px;padding:8px 16px}.chip[aria-pressed=true]{border-color:var(--ink);background:var(--ink);color:var(--on-ink)}.toolbar .seg.small{margin-left:auto}.search{border:1.5px solid var(--line);font:500 15px var(--sans);background:var(--surface);color:var(--ink);border-radius:999px;min-width:240px;padding:9px 16px}.search:focus{border-color:var(--ink);outline:none}.count{color:var(--muted);margin-bottom:12px;font-size:14px}.grid{grid-template-columns:repeat(auto-fill,minmax(330px,1fr));gap:16px;display:grid}.card{background:var(--surface);border:1px solid var(--line);cursor:pointer;-webkit-touch-callout:none;touch-action:manipulation;border-radius:20px;flex-direction:column;gap:12px;padding:20px 22px 18px;display:flex;position:relative}.card.new{border-color:var(--new);box-shadow:inset 0 0 0 1px var(--new)}.card.dragging{opacity:.55;z-index:2;box-shadow:0 12px 30px var(--shadow);cursor:grabbing}.card h3{font-family:var(--serif);font-variation-settings:"SOFT" 30;margin:0;padding-right:70px;font-size:21px;font-weight:500;line-height:1.15}.kcal{text-align:right;line-height:1;position:absolute;top:18px;right:22px}.kcal b{font-family:var(--serif);font-size:26px;font-weight:500}.kcal span{color:var(--muted);margin-top:2px;font-size:11px;display:block}.tags{flex-wrap:wrap;gap:6px;display:flex}.tag{background:var(--bg);color:var(--muted);border-radius:999px;padding:3px 10px;font-size:12px;font-weight:700}.tag.new{background:var(--new);color:var(--on-new)}.tag.warn{background:var(--warn-bg);color:var(--warn-ink)}.tag.season{background:var(--season-bg);color:var(--season-ink)}.tag.edited{background:var(--edited-bg);color:var(--new)}.macro{grid-template-columns:repeat(3,1fr);gap:8px;font-size:13px;display:grid}.macro b{font-size:17px;font-weight:700;display:block}.macro small{color:var(--muted)}.bars{gap:4px;display:grid}.bars .bar{height:12px}.bars .bar.ref{opacity:.45;height:4px}.ing{columns:2;column-gap:18px;margin:0;padding:0;font-size:14.5px;line-height:1.55;list-style:none}.ing li{break-inside:avoid;border-bottom:1px dashed var(--line);justify-content:space-between;gap:8px;padding:2px 0;display:flex}.ing li span:last-child{color:var(--muted);white-space:nowrap;font-variant-numeric:tabular-nums}.note{color:var(--muted);border-left:3px solid var(--carb);white-space:pre-line;margin:0;padding-left:10px;font-size:13.5px}.how{white-space:pre-line;margin:0;font-size:14px;line-height:1.55}details summary{cursor:pointer;color:var(--muted);font-size:13.5px;font-weight:700;list-style:none}details summary::-webkit-details-marker{display:none}details summary:before{content:"+ "}details[open] summary:before{content:"– "}table{border-collapse:collapse;width:100%;margin-top:8px;font-size:13px}th,td{text-align:right;border-bottom:1px solid var(--line);padding:4px 6px}th:first-child,td:first-child{text-align:left}th{color:var(--muted);font-weight:700}.card-foot{justify-content:space-between;align-items:flex-end;gap:10px;margin-top:auto;display:flex}.card-foot details{flex:1;min-width:0}.fold>p{margin-top:8px}.fold>p+p{margin-top:6px}.empty{text-align:center;color:var(--muted);padding:60px 0}footer{color:var(--muted);border-top:1px solid var(--line);max-width:70ch;margin:60px auto 0;padding-top:20px;font-size:13.5px}.ed-name{width:100%;padding:6px 12px}.ed-rows{gap:8px;display:grid}.ed-row{grid-template-columns:1fr 88px 40px;align-items:center;gap:6px;display:grid}.ed-row input,.ed-name,.ed-text textarea{border:1.5px solid var(--line);font:500 16px var(--sans);color:var(--ink);background:var(--surface);border-radius:10px}.ed-row input{width:100%;min-width:0;padding:8px 10px}.ed-row input:focus,.ed-name:focus,.ed-text textarea:focus{border-color:var(--ink);outline:none}.view .ed-name{font:500 clamp(24px, 4.5vw, 34px)/1.15 var(--serif);resize:none;field-sizing:content;min-height:1.6em}.ed-row input[aria-invalid=true]{border-color:var(--warn-ink);background:var(--warn-bg)}.ed-row .g{text-align:right;font-variant-numeric:tabular-nums}.ed-row .unit{color:var(--muted);grid-column:1/-1;margin:-4px 0 0 4px;font-size:12px}.ed-row .unit:empty{display:none}.icon-btn,.ed-add{border:1px solid var(--line);background:var(--surface);cursor:pointer;height:40px;color:var(--muted);font:600 16px var(--sans);border-radius:10px}.icon-btn:hover,.ed-add:hover{border-color:var(--ink);color:var(--ink)}.ed-add{justify-self:start;padding:0 14px;font-size:14px}.ed-text{gap:8px;display:grid}.ed-text label{color:var(--muted);gap:3px;font-size:12.5px;font-weight:700;display:grid}.ed-text textarea{resize:vertical;min-height:52px;padding:8px 10px;font-size:15px}.warns{background:var(--warn-bg);color:var(--warn-ink);border-radius:12px;margin:0;padding:10px 12px 10px 28px;font-size:13.5px;font-weight:600}.warns.ok{background:var(--ok-bg);color:var(--fat);padding-left:12px;list-style:none}.btn{border:1.5px solid var(--ink);background:var(--surface);color:var(--ink);font:700 14px var(--sans);cursor:pointer;border-radius:999px;padding:9px 18px}.btn.primary{background:var(--ink);color:var(--on-ink)}.btn.quiet{border-color:var(--line);color:var(--muted)}.btn:disabled{opacity:.45;cursor:default}.ed-msg{color:var(--warn-ink);flex-basis:100%;font-size:13.5px;font-weight:600}.ed-msg:empty{display:none}.ed-hint{color:var(--muted);margin:0;font-size:12.5px}.combo{min-width:0;position:relative}.combo ul{z-index:20;background:var(--surface);border:1.5px solid var(--ink);max-height:260px;box-shadow:0 10px 24px var(--shadow);border-radius:12px;margin:0;padding:4px;list-style:none;position:absolute;top:calc(100% + 4px);left:0;right:0;overflow-y:auto}.combo li{cursor:pointer;border-radius:8px;padding:8px 10px;font-size:15px}.combo li[aria-selected=true]{background:var(--bg)}.combo li.none{color:var(--muted);cursor:default}dialog{color:var(--ink);background:var(--surface);border:0;padding:0}dialog::backdrop{background:#0a0e0b8c}.view{width:min(100% - 32px,860px);max-height:calc(100dvh - 48px);box-shadow:0 24px 60px var(--shadow);border-radius:24px}.view.new{box-shadow:inset 0 0 0 2px var(--new), 0 24px 60px var(--shadow)}.view-inner{gap:14px;padding:22px clamp(20px,4vw,40px) 32px;display:grid}.view-top{background:var(--surface);z-index:3;justify-content:space-between;align-items:center;gap:10px;margin:-6px -8px 0;padding:6px 8px;display:flex;position:sticky;top:0}.view.editing .view-top{border-bottom:1px solid var(--line);padding-bottom:10px}.view-mode{text-transform:uppercase;letter-spacing:.05em;color:var(--muted);font-size:13px;font-weight:700}.view .icon-btn{place-items:center;width:44px;height:44px;font-size:18px;display:grid}.view h2{font-family:var(--serif);font-variation-settings:"SOFT" 30;margin:0;font-size:clamp(28px,5vw,40px);font-weight:500;line-height:1.1}.view h3{font-family:var(--serif);margin:12px 0 0;font-size:22px;font-weight:500}.view-kcal{color:var(--muted);font-size:15px}.view-kcal b{font-family:var(--serif);color:var(--ink);font-size:30px;font-weight:500}.view-head{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;display:flex}.view-ing{grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:0 28px;margin:0;padding:0;list-style:none;display:grid}.view-ing label{border-bottom:1px dashed var(--line);cursor:pointer;grid-template-columns:26px 1fr auto;align-items:center;gap:12px;padding:12px 2px;font-size:19px;display:grid}.view-ing input{width:22px;height:22px;accent-color:var(--fat);margin:0}.view-ing .q{color:var(--muted);font-variant-numeric:tabular-nums;white-space:nowrap}.view-ing .done .name,.view-ing .done .q{color:var(--muted);opacity:.7;text-decoration:line-through}.note.big{font-size:17px}.how.big{font-size:19px;line-height:1.6}.week-nav{flex-wrap:wrap;align-items:center;gap:10px;margin-bottom:6px;display:flex}.week-nav h2{font-family:var(--serif);text-align:center;min-width:12ch;margin:0;font-size:28px;font-weight:500}.week-nav .icon-btn{width:44px;font-size:22px;line-height:1}.week{grid-template-columns:repeat(7,minmax(0,1fr));gap:10px;display:grid}.day{background:var(--surface);border:1px solid var(--line);border-radius:16px;flex-direction:column;gap:8px;padding:12px;display:flex}.day.today{border-color:var(--new);box-shadow:inset 0 0 0 1px var(--new)}.day.past{opacity:.72}.day h3{text-transform:capitalize;justify-content:space-between;align-items:center;gap:6px;margin:0;font-size:14px;font-weight:700;display:flex}.slot{border-radius:12px;min-height:92px}.slot.free{border:1.5px dashed var(--line);color:var(--muted);font:600 14px var(--sans);cursor:pointer;background:0 0}.slot.free:hover{border-color:var(--ink);color:var(--ink)}.slot.filled{background:var(--bg);flex-direction:column;display:flex;position:relative}.slot.filled.new{box-shadow:inset 3px 0 0 var(--new)}.slot-open{color:inherit;text-align:left;cursor:pointer;background:0 0;border:0;border-radius:12px;flex:1;align-content:start;gap:3px;padding:8px 10px 30px;display:grid}.slot-meal{text-transform:uppercase;letter-spacing:.04em;color:var(--muted);font-size:11px;font-weight:700}.slot-name{font-family:var(--serif);font-size:15.5px;font-weight:500;line-height:1.2}.slot-kcal{color:var(--muted);font-size:12.5px}.slot-actions{gap:4px;display:flex;position:absolute;bottom:6px;right:6px}.slot-actions button{border:1px solid var(--line);background:var(--surface);color:var(--muted);cursor:pointer;border-radius:8px;place-items:center;width:28px;height:26px;padding:0;font-size:13px;display:grid}.slot-actions button:hover{border-color:var(--ink);color:var(--ink)}.day-total{color:var(--muted);margin:auto 0 0;font-size:12px}.out-icon{vertical-align:-3px;flex:none}.slot.filled.out{background:var(--season-bg);box-shadow:inset 3px 0 0 var(--carb)}.slot.filled.out .slot-name{font-family:var(--sans);color:var(--season-ink);align-items:center;gap:6px;font-size:15px;font-weight:700;display:flex}.slot.filled.out.over{background:var(--warn-bg);box-shadow:inset 3px 0 0 var(--warn-ink)}.slot.filled.out.over .slot-name{color:var(--warn-ink)}.out-count{font-weight:700}.out-count.over{color:var(--warn-ink)}.out-alert{background:var(--warn-bg);color:var(--warn-ink);border:1.5px solid var(--warn-ink);border-radius:14px;align-items:flex-start;gap:12px;margin:0 0 14px;padding:12px 16px;display:flex}.out-alert .out-icon{width:22px;height:22px;margin-top:1px}.out-alert b{font-size:15px;display:block}.out-alert span{font-size:13.5px}.picker-out{grid-template-columns:1fr 1fr;gap:8px;display:grid}.picker-out button{border:1.5px solid var(--line);background:var(--season-bg);color:var(--season-ink);font:700 15px var(--sans);cursor:pointer;border-radius:12px;justify-content:center;align-items:center;gap:8px;padding:11px;display:flex}.picker-out button:hover,.picker-out button.current{border-color:var(--season-ink)}.picker-warn{color:var(--warn-ink);background:var(--warn-bg);border-radius:10px;margin:0;padding:8px 12px;font-size:13.5px;font-weight:600}.picker{width:min(100% - 32px,560px);max-height:min(720px,100dvh - 48px);box-shadow:0 24px 60px var(--shadow);border-radius:20px;padding:18px}.picker[open]{flex-direction:column;gap:12px;display:flex}.picker-head{justify-content:space-between;align-items:center;gap:10px;display:flex}.picker-head h2{font-family:var(--serif);margin:0;font-size:22px;font-weight:500}.picker-head h2:first-letter{text-transform:uppercase}.picker .icon-btn{flex:none;width:40px}.picker .search{width:100%;min-width:0}.picker-list{gap:6px;margin:0;padding:0;list-style:none;display:grid;overflow-y:auto}.picker-list button{text-align:left;border:1px solid var(--line);background:var(--surface);width:100%;color:var(--ink);cursor:pointer;font:inherit;border-radius:12px;gap:4px;padding:10px 12px;display:grid}.picker-list button:hover{border-color:var(--ink)}.picker-list button.current{border-color:var(--ink);box-shadow:inset 0 0 0 1px var(--ink)}.picker-name{font-family:var(--serif);font-size:17px;font-weight:500}.picker-meta{color:var(--muted);flex-wrap:wrap;align-items:center;gap:6px;font-size:13px;display:flex}.toast{left:50%;bottom:calc(24px + env(safe-area-inset-bottom));background:var(--ink);color:var(--on-ink);z-index:30;text-align:center;border-radius:999px;max-width:calc(100% - 32px);padding:10px 18px;font-size:14px;font-weight:600;position:fixed;transform:translate(-50%)}.login{place-items:center;min-height:100vh;padding:24px 0;display:grid}.login-box{background:var(--surface);border:1px solid var(--line);border-radius:20px;gap:16px;width:min(100%,400px);padding:32px 28px;display:grid}.login-box h1{font-size:40px}.login-logo{border-radius:18px}.login-box p{color:var(--muted);margin:0;font-size:14.5px}.google{justify-content:center;align-items:center;gap:10px;padding:12px 18px;font-size:15px;text-decoration:none;display:flex}.err{color:var(--warn-ink);margin:0;font-size:14px;font-weight:600}@media (width<=760px){.toolbar .seg.small{margin-left:0}.profile{grid-template-columns:1fr;gap:20px;padding:20px}.nums{gap:8px}.nums div{padding-left:8px}.nums b{white-space:nowrap;font-size:24px}.nums span{font-size:12px}.ing{columns:1}.search{flex:100%;min-width:0}.grid{grid-template-columns:1fr}.top-right{justify-items:start}.view{border-radius:0;width:100%;max-width:100%;height:100dvh;max-height:100dvh;margin:0}.view-inner{padding-top:max(14px, env(safe-area-inset-top));padding-bottom:calc(32px + env(safe-area-inset-bottom))}.view-ing label{font-size:18px}}@media (width<=1000px){.week{grid-template-columns:repeat(auto-fill,minmax(260px,1fr))}.day{grid-template-columns:1fr 1fr;display:grid}.day h3,.day-total{grid-column:1/-1}}@media (width<=560px){.day{grid-template-columns:1fr;align-content:start}.slot.free{min-height:52px}.slot.filled{min-height:0}.week-nav h2{flex:1 1 0;min-width:0;font-size:21px}.week-nav .chip{order:1}}@media (prefers-reduced-motion:no-preference){.card:not(.editing):not(.dragging):focus-within{transition:transform .15s;transform:translateY(-2px)}}
