:root{color-scheme:light;--bg: #f6f7fa;--surface: #fff;--ink: #11181c;--muted: #5b6470;--line: #e3e7ee;--line-soft: #eef0f4;--hover: #f5f7fb;--radius: 12px;--control: 36px;--shadow: 0 1px 2px rgba(16, 24, 40, .05), 0 1px 3px rgba(16, 24, 40, .06);--accent: #0277d6;--dev-under: #0277d6;--dev-over: #d9480f;--warn: #e0a800;--error: #c62828;--ok: #2e7d32;--weekend: #7c5cd6;--chart-kcal: #f09a3e;--chart-protein: #8b4f24;--chart-fat: #7a8f1f;--chart-carbs: #f5c400;--chart-tape: #0f8b8d;--plan-1: #0f766e;--plan-2: #9d174d;--plan-3: #92400e;--plan-4: #4338ca;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;font-size:15px;line-height:1.5}:root.admin{--bg: #e9dff8;--line: #d8cbee;--accent: #6a3fc8}.admin .brand span{color:var(--accent)}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--ink)}.wrap{max-width:1100px;margin:0 auto;padding:32px 32px 64px}@media(max-width:760px){.wrap{padding:20px 16px 48px}}.wrap.narrow{max-width:380px;padding-top:15vh}.topbar{display:flex;align-items:center;justify-content:space-between;padding:12px 20px;background:var(--surface);border-bottom:1px solid var(--line)}.brand{display:inline-flex;align-items:center;gap:8px;font-size:15px;text-decoration:none;color:inherit}.brand img{display:block;height:24px}.brand-lg img{height:32px}.brand span{color:var(--muted);font-weight:500}.topbar-right{display:flex;align-items:center;gap:12px}h1{font-size:26px;line-height:1.25;margin:0 0 24px}h2{font-size:17px;margin:32px 0 12px}.page-head{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:16px;margin-bottom:24px}.page-head h1{margin:0}.back{display:inline-block;margin-bottom:12px;font-size:14px;text-decoration:none}.crumb{color:var(--muted);font-weight:400;text-decoration:none}.crumb:after{content:"/";margin:0 10px;color:var(--line)}.crumb:hover{color:var(--ink)}.with-avatar .crumb:after{margin-right:0}.tab-in{animation:tab-in .15s ease-out}@keyframes tab-in{0%{opacity:0}}.loading{animation:tab-in .15s ease-out .25s both;min-height:1.5em}.stale{opacity:.6;transition:opacity .15s}a{color:var(--accent)}a:hover{text-decoration:underline}:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.muted{color:var(--muted)}.error{color:var(--error);font-weight:600}.card{background:var(--surface);border-radius:var(--radius);box-shadow:var(--shadow);padding:20px;margin-bottom:16px}.stack{display:flex;flex-direction:column;gap:12px}.stack>h2,.stack>p{margin:0}.grow{flex:1}.row-between{display:flex;align-items:center;justify-content:space-between;gap:16px}.columns{display:grid;grid-template-columns:2fr 1fr;gap:32px;align-items:start}@media(max-width:760px){.columns{grid-template-columns:1fr}}label,.field{display:flex;flex-direction:column;gap:4px;font-size:13px;color:var(--muted)}input:not([type=checkbox]):not([type=radio]),select{font:inherit;height:var(--control);padding:0 12px;border:1px solid var(--line);border-radius:8px;background:var(--surface);color:inherit}input:focus,select:focus,textarea:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px color-mix(in srgb,var(--accent) 18%,transparent)}input:disabled{background:var(--hover)}button,a.button{font:inherit;font-weight:500;display:inline-flex;align-items:center;justify-content:center;height:var(--control);padding:0 16px;border:none;border-radius:8px;background:var(--accent);color:#fff;text-decoration:none;white-space:nowrap;cursor:pointer}button:hover:not(:disabled),a.button:hover{background:color-mix(in srgb,var(--accent) 88%,black)}button:disabled{opacity:.5;cursor:default}button.danger{background:var(--error);font-weight:600;height:40px;padding:0 20px}button.danger:hover:not(:disabled){background:color-mix(in srgb,var(--error) 85%,black)}dialog.confirm{border:none;border-radius:var(--radius);padding:0;width:min(440px,calc(100vw - 32px));box-shadow:0 12px 40px #10182840}dialog.confirm>div{padding:20px}dialog.confirm h2,dialog.confirm p{margin:0}dialog.confirm::backdrop{background:#10182873}.dialog-actions{display:flex;justify-content:flex-end;gap:12px;flex-wrap:wrap}.with-avatar{display:inline-flex;align-items:center;gap:10px}.avatar{display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;border-radius:50%;object-fit:cover;color:#fff;font-weight:600;line-height:1}.danger-zone{border:1px solid var(--error)}.danger-zone .row-between{flex-wrap:wrap}.danger-zone p{margin:2px 0 0}button.link{height:auto;font-weight:400;background:none;color:var(--accent);padding:2px 4px}button.link.flush{padding-left:0}button.link:hover:not(:disabled){background:none;text-decoration:underline}button.icon-button{width:30px;height:30px;padding:0;flex-shrink:0;background:none;color:var(--muted)}button.icon-button:hover:not(:disabled){background:color-mix(in srgb,var(--error) 10%,transparent);color:var(--error)}td.actions{white-space:nowrap}.datenav{display:flex;align-items:center;gap:6px}.datepick{position:relative}.datepick input[type=date]{position:absolute;inset:0;width:100%;height:100%;padding:0;border:0;opacity:0;pointer-events:none}table{width:100%;border-collapse:collapse;background:var(--surface);border-radius:var(--radius);box-shadow:var(--shadow);overflow:hidden}th,td{text-align:left;padding:10px 16px;border-bottom:1px solid var(--line-soft)}tbody tr:last-child td{border-bottom:none}tbody tr:hover td{background:var(--hover)}thead th{font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.5px;color:var(--muted);border-bottom-color:var(--line)}.num{text-align:right;font-variant-numeric:tabular-nums}code{font-family:ui-monospace,SF Mono,Menlo,monospace;font-size:13px}textarea{font:inherit;width:100%;padding:8px 12px;border:1px solid var(--line);border-radius:8px;background:var(--surface);color:inherit;resize:vertical;margin-bottom:8px}.small{font-size:12px}.inline-form{display:flex;align-items:center;gap:8px}.inline-form input{width:110px}.inline-form input[type=checkbox]{width:auto}.inline-form input.search{width:260px}.week{display:grid;grid-template-columns:repeat(7,1fr);gap:6px;margin:12px 0 4px}.week .day{display:flex;flex-direction:column;align-items:center;gap:2px;height:auto;padding:8px 4px;background:var(--surface);color:var(--ink);font-weight:400;border:1px solid var(--line);border-radius:10px}.week .day:hover:not(:disabled){background:var(--hover)}.week .day.selected{border-color:var(--accent);box-shadow:inset 0 0 0 1px var(--accent)}.week .day.empty .day-kcal{color:var(--muted)}.day-label{font-size:11px;color:var(--muted);text-transform:uppercase}.day-kcal{font-weight:600;font-variant-numeric:tabular-nums}.day-macros{font-size:11px;color:var(--muted);min-height:1.2em;font-variant-numeric:tabular-nums}.checklist{list-style:none;padding:0;margin:0}.check{flex-direction:row;align-items:center;gap:8px;padding:6px 0;font-size:14px;color:var(--ink);cursor:pointer}.check.consent{align-items:flex-start}.check.consent input{flex:none;margin-top:3px}.check.consent>span{flex:1 1 auto;min-width:0}.terms-gate{max-width:640px}tr.clickable{cursor:pointer}tr.clickable td a{color:inherit;font-weight:500;text-decoration:none}.meal-detail{display:flex;flex-direction:column;gap:6px}.meal-entries{list-style:none;display:flex;flex-direction:column;gap:2px;margin:0;padding:0}.meal-entries li{display:flex;justify-content:space-between;gap:12px;font-size:14px}.pot-photo{width:100%;aspect-ratio:16 / 9;max-height:120px;object-fit:cover;border-radius:8px}.pot-detail-free{font-weight:600;color:color-mix(in srgb,var(--warn) 70%,var(--ink))}.pot-portion{display:flex;align-items:baseline;gap:8px}.pot-times{font-size:20px;font-weight:600;color:var(--muted)}.resize-row{display:flex;align-items:center;gap:8px}button.pot-detail-link{align-self:flex-start;padding:0;font-size:13px}.tag{display:inline-block;margin-left:6px;padding:1px 6px;border-radius:6px;background:#eef2f8;color:var(--muted);font-size:11px}.shell{--bar: 53px;display:grid;grid-template-columns:220px 1fr;grid-template-rows:auto 1fr;grid-template-areas:"bar bar" "side main";min-height:100vh}.shell.nav-hidden{grid-template-areas:"bar bar" "main main"}.shell.nav-hidden .sidebar{display:none}.shell .wrap{grid-area:main;width:100%;min-width:0}.shell .wrap.wide{max-width:1600px}.nav-toggle{width:var(--control);padding:0;background:none;color:var(--ink);font-size:18px;border:none}.nav-toggle:hover{background:var(--hover)}.shell-bar{grid-area:bar;display:flex;align-items:center;gap:6px;position:sticky;top:0;z-index:20;height:var(--bar);padding:0 12px;background:var(--surface);border-bottom:1px solid var(--line)}.drawer-backdrop{display:none}.sidebar{grid-area:side;position:sticky;top:var(--bar);height:calc(100vh - var(--bar));display:flex;flex-direction:column;gap:24px;padding:14px 12px 20px;background:var(--surface);border-right:1px solid var(--line)}.sidebar nav{display:flex;flex-direction:column;gap:2px}.sidebar nav a{display:block;padding:8px 10px;border-radius:8px;color:var(--ink);text-decoration:none;font-size:14px}.sidebar nav a:hover{background:var(--hover);text-decoration:none}.sidebar nav a.active{background:color-mix(in srgb,var(--accent) 12%,transparent);color:var(--accent);font-weight:600}.sidebar-foot{margin-top:auto;display:flex;flex-direction:column;align-items:flex-start;gap:4px;padding:0 8px;overflow-wrap:anywhere}.nav-sub{display:flex;flex-direction:column;gap:1px;max-height:50vh;overflow-y:auto;margin:2px 0 4px 10px;padding-left:8px;border-left:1px solid var(--line)}.sidebar .nav-sub a{display:flex;align-items:center;gap:8px;padding:4px 10px;font-size:13px;white-space:nowrap}.sidebar .nav-sub a span:last-child{overflow:hidden;text-overflow:ellipsis}@media(max-width:760px){.shell,.shell.nav-hidden{grid-template-columns:1fr;grid-template-areas:"bar" "main"}.shell .sidebar{display:flex;position:fixed;left:0;z-index:40;width:min(280px,85vw);transform:translate(-100%);transition:transform .2s ease-out}.shell.drawer-open .sidebar{transform:none}.shell.drawer-open .drawer-backdrop{display:block;position:fixed;inset:0;z-index:39;top:var(--bar);background:#10182859}}.summary-label{font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.5px;color:var(--muted)}.summary-value{font-size:20px;font-weight:600;font-variant-numeric:tabular-nums}.tabs{overflow-x:auto;display:flex;gap:4px;margin-bottom:20px;border-bottom:1px solid var(--line)}.tabs a{padding:8px 14px;margin-bottom:-1px;border-bottom:2px solid transparent;color:var(--muted);text-decoration:none;font-weight:500}.tabs a:hover{color:var(--ink);text-decoration:none}.tabs a.active{color:var(--accent);border-bottom-color:var(--accent)}.segmented{display:inline-flex;align-self:flex-start;gap:2px;padding:2px;background:var(--line-soft);border-radius:10px}.segmented button,button.chip{height:30px;padding:0 12px;background:none;color:var(--ink);font-weight:400}.segmented button:hover:not(:disabled),button.chip:hover:not(:disabled){background:var(--hover)}.segmented button.on{background:var(--surface);box-shadow:var(--shadow);font-weight:600}button.chip{border:1px solid var(--line)}button.chip.on{border-color:var(--accent);color:var(--accent);font-weight:600}.card h2,.card .row-between h2{margin-top:0}.chart-controls{display:flex;flex-wrap:wrap;align-items:center;justify-content:flex-end;gap:8px}.chip-group{display:flex;flex-wrap:wrap;align-items:center;gap:6px;margin-bottom:8px}.chip-group>span{min-width:64px}.chart-controls .segmented{flex-wrap:wrap}.echart{height:380px;margin:8px 0;touch-action:pan-y}@media(max-width:760px){.echart{height:320px}}table.compact{box-shadow:none}table.compact th,table.compact td{padding:6px 8px}table.compact td.num{white-space:nowrap}details:not(.card){margin-top:24px}details summary{cursor:pointer;font-weight:600}details[open] summary{margin-bottom:12px}.over{color:var(--error);font-weight:600}.client-head{align-items:flex-start}.client-head h1{min-height:40px}.client-head p{margin:4px 0 0}.icon-link{display:inline-flex;align-items:center;gap:6px;white-space:nowrap;line-height:1;padding:6px;color:var(--muted);text-decoration:none}.icon-link span{font-size:20px}.icon-link:hover{color:var(--accent);text-decoration:none}.facts{display:grid;grid-template-columns:max-content 1fr;gap:6px 16px;margin:0}.notes-panel{display:none;position:fixed;z-index:20;flex-direction:column;gap:8px;background:var(--surface)}.notes-panel h2{margin:0}.notes-panel textarea{flex:1;resize:none;margin:0}.notes-toggle{position:fixed;z-index:19;box-shadow:var(--shadow)}@media(min-width:761px){.notes-panel.pinned{display:flex;top:69px;right:max(16px,calc(50% - 1062px));bottom:16px;width:320px;padding:16px;border-radius:var(--radius);box-shadow:0 4px 16px #1018281f}.shell.nav-hidden .notes-panel.pinned{right:max(16px,calc(50% - 952px))}.wrap.wide:has(.notes-panel.pinned){max-width:1936px;padding-right:368px}.notes-toggle{top:50%;right:0;height:auto;padding:12px 8px;border-radius:8px 0 0 8px;writing-mode:vertical-rl}.notes-toggle.pinned{display:none}}@media(max-width:760px){.notes-panel.overlay{display:flex;inset:0;padding:16px}.notes-toggle{right:16px;bottom:16px;border-radius:18px}}.week .day:disabled{opacity:.45}.week .day .tag{margin:2px 0 0}.week.calendar .day{border-color:var(--line)}.plan-strip{display:block;height:16px;padding:0 6px;overflow:hidden;border:none;border-radius:0;background:color-mix(in srgb,var(--plan) 16%,var(--surface));color:var(--plan);font-size:11px;font-weight:600;line-height:16px;text-align:left;white-space:nowrap;text-overflow:ellipsis}.plan-strip.starts{border-top-left-radius:4px;border-bottom-left-radius:4px}.plan-strip.ends{border-top-right-radius:4px;border-bottom-right-radius:4px}.week.calendar .plan-strip{align-self:end;min-width:0;margin-bottom:9px}.week.calendar .plan-strip.starts{margin-left:9px}.week.calendar .plan-strip.ends{margin-right:9px}.week.calendar .plan-strip:hover{background:color-mix(in srgb,var(--plan) 26%,var(--surface))}.week.calendar .plan-strip.new{pointer-events:none;background:repeating-linear-gradient(-45deg,color-mix(in srgb,var(--accent) 24%,var(--surface)) 0 3px,color-mix(in srgb,var(--accent) 10%,var(--surface)) 3px 6px);color:var(--accent)}.week-plans{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:8px}.week-plans.week-grid{display:grid}.plan-group{display:none}.week.calendar .day.today{box-shadow:inset 0 0 0 1px var(--ink);border-color:var(--ink)}.week.calendar .day.today .day-label{font-weight:700}.week.calendar .day.hidden{background:repeating-linear-gradient(-45deg,var(--line-soft) 0 4px,var(--surface) 4px 8px)}.kcal-bar{position:relative;display:flex;align-self:stretch;height:10px;margin:6px 4px 2px;border-radius:5px;background:var(--line-soft);overflow:hidden}.kcal-bar .solid{background:var(--accent)}.kcal-bar .light{background:color-mix(in srgb,var(--accent) 35%,transparent)}.kcal-bar .added,.swatch.added{background:repeating-linear-gradient(-45deg,var(--accent) 0 3px,color-mix(in srgb,var(--accent) 30%,transparent) 3px 6px)}.kcal-bar .tick{position:absolute;top:0;bottom:0;width:2px;margin-left:-2px;background:var(--ink)}.kcal-bar .overshoot{position:absolute;top:0;bottom:0;background:var(--error)}.legend{display:flex;flex-wrap:wrap;align-items:center;gap:4px 6px;margin:0}.swatch{display:inline-block;width:14px;height:8px;border-radius:3px}.week.calendar .day.ghost{background:color-mix(in srgb,var(--accent) 8%,var(--surface));border:1px dashed var(--accent)}.week.calendar .day.ghost.start{border-style:solid;box-shadow:inset 0 0 0 1px var(--accent)}.placing-bar{display:flex;flex-wrap:wrap;align-items:center;gap:8px 16px}.placing-actions{display:flex;gap:8px;margin-left:auto}.undo-bar{margin:0}.calendar-head{font-size:11px;color:var(--muted);text-transform:uppercase;text-align:center}.calendar-head.today{color:var(--ink);font-weight:700}@media(max-width:760px){.week.strip{grid-template-columns:repeat(4,minmax(0,1fr))}}.calendar-wrap{overflow-x:auto;padding:4px 4px 14px;margin:-4px -4px -14px}.week.calendar{grid-template-columns:repeat(7,minmax(92px,112px));margin:0 0 4px}.week.calendar .day{grid-row:var(--row);grid-column:var(--col);height:76px;justify-content:flex-start;overflow:hidden}.week.calendar .day.v-good,.week.strip .day.v-good,.week-day.v-good,.swatch.v-good{--v: var(--ok);--v-fill: 9%;--v-line: 36%}.week.calendar .day.v-changed,.week.strip .day.v-changed,.week-day.v-changed,.swatch.v-changed{--v: var(--warn);--v-fill: 6%;--v-line: 24%}.week.calendar .day.v-off,.week.strip .day.v-off,.week-day.v-off,.swatch.v-off{--v: var(--error);--v-fill: 10%;--v-line: 40%}.week.calendar .day.v-unconfirmed,.week.strip .day.v-unconfirmed,.week-day.v-unconfirmed,.swatch.v-unconfirmed{--v: var(--muted);--v-fill: 8%;--v-line: 30%}.week.calendar .day[class*=" v-"],.week.strip .day[class*=" v-"],.week-day[class*=" v-"]{background:color-mix(in srgb,var(--v) var(--v-fill),var(--surface));border-color:color-mix(in srgb,var(--v) var(--v-line),transparent)}.swatch[class*=" v-"]{background:color-mix(in srgb,var(--v) calc(var(--v-fill) * 4),var(--surface))}.week.calendar{position:relative;z-index:0}.weekend-band{position:absolute;inset:-4px -4px -14px;z-index:-1;grid-column:6 / 8;border-radius:14px;background:color-mix(in srgb,var(--weekend) 12%,transparent)}.plan-layout{display:flex;flex-wrap:wrap;align-items:flex-start;gap:16px;margin-bottom:16px}.plan-layout>.card,.plan-side>.card{margin-bottom:0}.calendar-card{width:fit-content;min-width:0;max-width:100%}.calendar-card>:not(.calendar-wrap){contain:inline-size}.calendar-more{align-self:center}.plan-side{flex:1 1 300px;max-width:480px;display:flex;flex-direction:column;gap:16px}.plan-summary{margin:0}.phone-only{display:none}@media(max-width:760px){.calendar-card{width:auto}.plan-side{max-width:none}.week.calendar{grid-template-columns:1fr}.week.calendar .day{grid-row:auto;grid-column:auto}.week.calendar .calendar-head,.week.calendar .weekend-band,.week.calendar .plan-strip{display:none}.plan-group{display:flex;align-items:baseline;justify-content:space-between;gap:8px;margin-top:8px;padding-left:8px;border-left:4px solid var(--plan);font-size:13px;font-weight:600}.plan-group.none{margin:4px 0;padding:0;border-left:none;border-top:1px solid var(--line)}.week.calendar .day{height:auto;flex-direction:row;gap:10px;padding:8px 12px}.week.calendar .day .day-label{width:72px;text-align:left}.week.calendar .day .kcal-bar{flex:1;margin:0}.phone-only{display:inline}}.sparkline{width:100%;height:28px;margin-top:4px}.flags ul{margin:0;padding-left:20px}.flags li+li{margin-top:4px}@media(max-width:760px){table.roster thead{display:none}table.roster tr{display:flex;flex-wrap:wrap;gap:4px 16px;padding:10px 16px;border-bottom:1px solid var(--line-soft)}table.roster tbody tr:last-child{border-bottom:none}table.roster td{padding:0;border:none}table.roster td:first-child{flex-basis:100%}table.roster td[data-label]:before{content:attr(data-label) " ";color:var(--muted);font-size:12px}}input[type=number]{appearance:textfield;-moz-appearance:textfield}input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.with-icon{display:inline-flex;align-items:center;gap:6px}.macro-icon{flex:none}.status-fit{contain:inline-size;margin:0}table.targets input{width:80px}.trend-tiles{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));grid-auto-flow:dense;gap:12px}.trend-tile.main{grid-column:span 2;grid-row:span 2}.trend-tile.main .summary-value{font-size:28px}.trend-tile.main .sparkline{flex:1 1 auto;height:auto;min-height:60px}@media(max-width:760px){.trend-tiles{grid-template-columns:repeat(2,minmax(0,1fr))}}.trend-tile{display:flex;flex-direction:column;gap:2px;padding:10px 12px;border:1px solid var(--line-soft);border-radius:var(--radius)}.trend-change{margin-left:8px;font-size:14px;font-weight:500}.trend-tile strong{font-size:20px;font-variant-numeric:tabular-nums}.row-cards{display:flex;flex-wrap:wrap;align-items:stretch;gap:16px}.row-cards>.card{flex:1 1 300px;margin-bottom:0}.row-cards>.stats{flex:0 1 auto;min-width:300px}.stat-grid{display:grid;grid-template-columns:1fr auto auto auto auto;align-items:baseline;row-gap:8px}.stat-label{grid-column:1;margin-right:24px}.stat-wide{grid-column:1 / 5;display:flex;align-items:baseline;justify-content:space-between}.stat-logged{align-items:center}.stat-logged .stat-label{display:flex;flex-direction:column}.stat-num{justify-self:end}.stat-estimate{grid-column:1 / -1;margin-top:-6px}.about-line{margin:-4px 0 12px}.stat-unit{justify-self:end;margin-left:4px}.stats .summary-value{font-size:16px}.weeks td.dev{border-radius:6px}.weeks td.under-1{background:color-mix(in srgb,var(--dev-under) 12%,var(--surface))}.weeks td.under-2{background:color-mix(in srgb,var(--dev-under) 26%,var(--surface))}.weeks td.over-1{background:color-mix(in srgb,var(--dev-over) 12%,var(--surface))}.weeks td.over-2{background:color-mix(in srgb,var(--dev-over) 26%,var(--surface))}.weeks .dir,.stats .dir{display:inline-block;width:12px;margin-left:3px;text-align:center}.weeks .dir .over,.stats .dir .over{fill:var(--dev-over)}.weeks .dir .under,.stats .dir .under{fill:var(--dev-under)}.weeks td.no-target,.weeks tr.thin{color:var(--muted)}.weeks tr.thin td.dev{opacity:.55}.weeks th small{display:block;font-size:11px;font-weight:400;color:var(--muted)}table.weeks{overflow:visible}.week-cell{position:relative;white-space:nowrap}.week-range{font-variant-numeric:tabular-nums}.weeks .week-range .from{display:inline-block;min-width:6ch;text-align:right}.weeks .week-range .to{display:inline-block;min-width:6ch}.weeks tr.open .week-cell{background-color:var(--line-soft)}.week-popover{position:absolute;z-index:10;top:100%;left:0;display:grid;gap:4px;width:260px;padding:10px 12px;background:var(--surface);border-radius:var(--radius);box-shadow:0 4px 16px #10182829;color:var(--ink);font-size:13px;font-variant-numeric:tabular-nums;white-space:nowrap}.week-popover .link{justify-self:start;margin-top:4px;padding:0}.warn-icon{margin-left:4px;vertical-align:-2px;fill:var(--warn)}p .warn-icon{margin:0}.week-grid{display:grid;grid-template-columns:96px repeat(var(--days, 7),minmax(130px,200px));gap:6px;min-width:min-content}.week-head,.week-footer{margin:0 -10px;padding:8px 10px;background:var(--surface);border-radius:var(--radius);box-shadow:var(--shadow)}.week-head{position:sticky;top:var(--bar);z-index:5;margin-bottom:6px}.week-footer{margin-top:12px}.week-footer.sticky{position:sticky;bottom:0;z-index:6}.week-head.stuck{border-top-left-radius:0;border-top-right-radius:0}.week-footer.stuck{border-bottom-left-radius:0;border-bottom-right-radius:0}.week-head,.week-footer{transition:box-shadow .15s}.week-head.stuck{box-shadow:0 6px 14px #10182829}.week-footer.stuck{box-shadow:0 -6px 14px #10182829}.week-footer .week-fridge-title{margin-top:0}.week-legend{margin-top:4px}.week-grid-row,.week-fridge-row{display:contents}.week-day{display:flex;flex-direction:column;align-items:stretch;gap:2px;padding:6px;background:var(--surface);color:var(--ink);text-align:center;border:1px solid var(--line);border-radius:10px}.week-day.hidden{opacity:.45}.week-day-label{font-size:11px;color:var(--muted);text-transform:uppercase}.week-day.today .week-day-label{color:var(--ink);font-weight:700}.week-day .kcal-bar{margin:4px 0 2px}.week-day-kcal{font-size:12px}.week-day-kcal.off{color:var(--error);font-weight:600}.week-day-kcal:not(.off) .week-day-target{color:var(--muted)}.week-day-macros{display:flex;justify-content:center;flex-wrap:wrap;gap:0 6px;font-size:11px;color:var(--muted);font-variant-numeric:tabular-nums}.week-cell-totals{display:flex;flex-wrap:wrap;gap:0 6px;margin-top:auto;padding:0 2px;font-size:10px;color:var(--muted);font-variant-numeric:tabular-nums}.week-cell-macros{display:inline-flex;gap:6px;white-space:nowrap}.week-cell-totals .nutri-macro,.week-day-macros .nutri-macro,.day-card .nutri-macro{gap:1px;font-size:inherit}.day-card .nutri-macro{margin-left:6px}.week-grid-label{display:flex;align-items:center;gap:6px;min-width:0;font-size:12px;color:var(--muted);overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.week-grid-cell{position:relative;display:flex;flex-direction:column;gap:4px;min-height:44px;padding:6px;background:var(--surface);border:1px solid var(--line);border-radius:10px}.week-grid-cell.today{border-color:var(--ink)}.week-day.flash,.week-grid-cell.flash{animation:day-flash 3s ease-in-out}@keyframes day-flash{0%,to{box-shadow:0 0 0 2px transparent}17%,55%{box-shadow:0 0 0 2px var(--accent);background:color-mix(in srgb,var(--accent) 12%,var(--surface))}}.week-item{display:grid;grid-template-columns:1fr auto;gap:0 6px;padding:3px 6px;font-size:12px;line-height:1.3;background:var(--hover);border-left:5px solid transparent;border-radius:6px;cursor:pointer}.week-item-name{overflow-wrap:anywhere}.week-item-amount{grid-column:1;color:var(--muted);font-size:11px}.week-item-mark{grid-column:2;grid-row:1 / span 2;align-self:center;font-size:11px;color:var(--muted)}.week-item.eaten .week-item-mark{color:var(--ok)}.week-item.pending{opacity:.6}.week-item.own{background:color-mix(in srgb,var(--warn) 10%,var(--surface))}.week-item.removed{background:none;color:var(--muted)}.week-item.removed .week-item-name{text-decoration:line-through}.legend-chip{padding:1px 6px;border-radius:6px;background:var(--hover)}.legend-chip.eaten b{font-weight:400;color:var(--ok)}.legend-chip.pending{opacity:.6}.legend-chip.own{background:color-mix(in srgb,var(--warn) 10%,var(--surface))}.legend-chip.removed{background:none;color:var(--muted);text-decoration:line-through}button.cell-add{justify-content:flex-start;height:auto;min-height:calc(12px * 1.3 + 11px * 1.3 + 6px);padding:3px 6px;font-size:12px;font-weight:400;line-height:1.3;text-align:left;color:var(--muted);background:transparent;border:1px dashed var(--line);border-radius:6px;visibility:hidden}button.cell-add:hover,button.cell-add[aria-expanded=true]{color:var(--accent);border-color:var(--accent);background:var(--hover)}.week-grid-cell:hover .cell-add,.cell-add:focus-visible{visibility:visible}@media(hover:none){.cell-add{visibility:visible}}.cell-popover{position:absolute;z-index:10;top:100%;left:0;display:flex;flex-direction:column;width:340px;max-height:min(70vh,560px);margin-top:4px;background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);box-shadow:0 12px 32px #1018282e;color:var(--ink);font-size:14px;white-space:normal;cursor:auto;transition:opacity .14s ease-out,transform .14s ease-out}@starting-style{.cell-popover{opacity:0;transform:translateY(4px) scale(.98)}}.cell-popover.right{left:auto;right:0}.item-anchor{position:relative}.cell-popover.beside{top:-6px;left:calc(100% + 8px);margin-top:0}.cell-popover.beside.right{left:auto;right:calc(100% + 8px)}.cell-popover.beside:before{content:"";position:absolute;top:14px;left:-7px;width:12px;height:12px;background:var(--surface);border-left:1px solid var(--line);border-bottom:1px solid var(--line);transform:rotate(45deg)}.cell-popover.beside.right:before{left:auto;right:-7px;transform:rotate(-135deg)}dialog.modal{border:none;padding:0;width:min(480px,calc(100vw - 32px));max-height:calc(100dvh - 32px);border-radius:14px;background:var(--surface);color:var(--ink);font-size:14px;box-shadow:0 16px 48px #10182847;transition:opacity .16s ease-out,transform .16s ease-out}dialog.modal[open]{display:flex;flex-direction:column}@starting-style{dialog.modal[open]{opacity:0;transform:translateY(8px) scale(.98)}}dialog.modal.tall{width:min(520px,calc(100vw - 32px));height:min(600px,calc(100dvh - 32px))}dialog.modal::backdrop{background:#10182873;transition:background .16s ease-out}@starting-style{dialog.modal[open]::backdrop{background:transparent}}@media(max-width:760px){dialog.modal,dialog.modal.tall{width:100%;max-width:100%;margin:auto 0 0;border-radius:16px 16px 0 0;max-height:88dvh;padding-bottom:env(safe-area-inset-bottom)}dialog.modal.tall{height:88dvh}@starting-style{dialog.modal[open]{transform:translateY(32px)}}}.surface-head{display:flex;align-items:flex-start;gap:2px;padding:12px 10px 4px 16px}.surface-title{display:flex;flex-direction:column;flex:1;min-width:0;padding-top:3px}.surface-title h2{margin:0;font-size:15px;font-weight:600;line-height:1.35;overflow-wrap:anywhere}button.icon-button.close:hover:not(:disabled){background:var(--hover);color:var(--ink)}.surface-body{display:flex;flex-direction:column;flex:1 1 auto;gap:14px;min-height:0;padding:8px 16px 16px;overflow-y:auto}.surface-foot{position:sticky;bottom:0;display:flex;align-items:center;justify-content:flex-end;gap:8px;margin:auto -16px 0;padding:12px 16px;background:var(--surface);border-top:1px solid var(--line-soft);border-radius:0 0 calc(var(--radius) - 1px) calc(var(--radius) - 1px)}dialog.modal .surface-foot{border-radius:0 0 14px 14px}.surface-foot.plain{border-top:none}@media(max-width:760px){dialog.modal .surface-foot{border-radius:0}}.surface-body:has(>.surface-foot,>form>.surface-foot){padding-bottom:0}form.contents{display:contents}.surface-body>p,.surface-body>form.contents>p{margin:0}.stack.tight{gap:8px}button.secondary{background:none;color:var(--ink);border:1px solid var(--line)}button.secondary:hover:not(:disabled){background:var(--hover)}.form-error{margin:0;color:var(--error);font-size:13px}.chips{display:flex;flex-wrap:wrap;gap:6px;font-size:12px}.nutri-line{display:flex;flex-wrap:wrap;align-items:baseline;gap:4px 14px;font-variant-numeric:tabular-nums}.nutri-kcal{color:var(--muted)}.nutri-kcal b{font-size:20px;font-weight:600;color:var(--ink)}.nutri-macros{display:inline-flex;gap:12px;white-space:nowrap}.nutri-macro{display:inline-flex;align-items:center;gap:3px;font-size:13px}.add-preview{display:flex;flex-direction:column;gap:4px;padding:10px 12px;background:var(--hover);border-radius:10px}.add-preview b.over{color:var(--dev-over)}.section-label{font-size:11px;font-weight:600;letter-spacing:.5px;text-transform:uppercase;color:var(--muted)}.skeleton{display:block;height:14px;border-radius:4px;background:linear-gradient(90deg,var(--line-soft) 25%,var(--hover) 50%,var(--line-soft) 75%);background-size:200% 100%;animation:shimmer 1.2s linear infinite}@keyframes shimmer{to{background-position:-200% 0}}.search-list{display:flex;flex-direction:column;flex:1;gap:4px;min-height:0}.search-field{position:relative;display:flex;align-items:center;gap:6px;height:var(--control);padding:0 12px;border:1px solid var(--line);border-radius:8px;background:var(--surface)}.search-field:focus-within{border-color:var(--accent);box-shadow:0 0 0 3px color-mix(in srgb,var(--accent) 18%,transparent)}.search-field input.search,.search-field input.search:focus{flex:1;min-width:0;height:100%;padding:0;border:none;box-shadow:none;background:none}.scope-chip{display:inline-flex;align-items:center;flex-shrink:0;max-width:55%;margin-left:-6px;padding:0 2px 0 8px;border-radius:6px;background:color-mix(in srgb,var(--accent) 10%,transparent);color:var(--accent);font-size:13px;font-weight:600}.scope-label{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.scope-chip button{width:22px;height:22px;padding:0;background:none;color:inherit;font-size:16px}.scope-chip button:hover:not(:disabled){background:color-mix(in srgb,var(--accent) 16%,transparent)}.thumb{display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;width:36px;height:36px;border-radius:8px;object-fit:cover;background:var(--line-soft);color:var(--muted)}img.thumb{opacity:0;transition:opacity .2s}img.thumb.loaded{opacity:1}.spinner{position:absolute;top:50%;right:36px;width:16px;height:16px;margin-top:-8px;border:2px solid var(--line);border-top-color:var(--accent);border-radius:50%;animation:spin .7s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.search-hint{margin:4px 2px 0}.pick-list{list-style:none;min-height:0;margin:0 -8px;padding:0;overflow-y:auto;-webkit-mask-image:linear-gradient(to bottom,transparent,#000 12px);mask-image:linear-gradient(to bottom,transparent,#000 12px)}.pick-group{padding:12px 8px 4px;font-size:11px;font-weight:600;letter-spacing:.5px;text-transform:uppercase;color:var(--muted)}button.pick-row{justify-content:flex-start;gap:10px;width:100%;height:auto;min-height:38px;padding:6px 8px;background:none;color:var(--ink);font-weight:400;text-align:left;white-space:normal}button.pick-row:hover:not(:disabled){background:none}button.pick-row.active,button.pick-row.active:hover:not(:disabled){background:color-mix(in srgb,var(--accent) 8%,transparent)}.pick-text{display:flex;flex-direction:column;flex:1;min-width:0}.pick-label{min-width:0;overflow-wrap:anywhere}.pick-meta .nutri-macro{gap:2px;font-size:inherit}.pick-meta{display:flex;flex-wrap:wrap;align-items:center;gap:0 8px;font-size:12px;color:var(--muted);font-variant-numeric:tabular-nums}.picked{display:flex;align-items:baseline;justify-content:space-between;gap:8px}.picked-name{font-weight:600;overflow-wrap:anywhere}.picked .link{padding:0}.amount-row{display:flex;flex-wrap:wrap;align-items:center;gap:8px}.amount-row input{width:96px}.amount-row select{flex:1;min-width:120px}.stepper{display:flex;align-items:center;gap:6px}.stepper button{width:var(--control);padding:0;font-size:18px;background:var(--surface);color:var(--ink);border:1px solid var(--line)}.stepper button:hover:not(:disabled){background:var(--hover)}.stepper input{width:64px;text-align:center;font-variant-numeric:tabular-nums}.stepper-unit{color:var(--muted)}.day-chips{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:4px}.day-chips .week-day{min-width:0;padding:6px 2px;font:inherit;cursor:pointer;overflow:hidden}.day-chips .week-day.selected{border-color:var(--ink);box-shadow:inset 0 0 0 1px var(--ink)}.day-summary{margin:8px 0 0}.day-card{display:flex;flex-direction:column;gap:4px;margin-top:10px;padding:10px 12px;background:var(--surface);border:1px solid var(--line);border-radius:10px}.day-card h3{margin:0;font-size:14px}.day-card .week-item{font-size:13px}.day-card button.cell-add{min-height:37.2px}.day-card .cell-add{visibility:visible}.week-item.linked{box-shadow:0 0 0 2px color-mix(in srgb,var(--ink) 25%,transparent)}.week-fridge-title{margin:16px 0 6px;font-size:13px}.week-fridge{row-gap:17px;padding-bottom:17px}.pot-span{align-self:center;height:3px;margin:0 -3px;opacity:.5}.pot-span.starts{margin-left:50%}.pot-span.ends{margin-right:50%}.pot-span.first:not(.starts){margin-left:0}.pot-span.last:not(.ends){margin-right:0}.pot-span.hit,.pot-link.hit{box-sizing:content-box;padding:8px 0;background-clip:content-box;cursor:pointer}.pot-span.first:not(.starts){-webkit-mask-image:linear-gradient(to right,transparent,#000 60%);mask-image:linear-gradient(to right,transparent,#000 60%)}.pot-span.last:not(.ends){-webkit-mask-image:linear-gradient(to left,transparent,#000 60%);mask-image:linear-gradient(to left,transparent,#000 60%)}.pot-span.first:not(.starts).last:not(.ends){-webkit-mask-image:linear-gradient(to right,transparent,#000 40%,#000 60%,transparent);mask-image:linear-gradient(to right,transparent,#000 40%,#000 60%,transparent)}.pot-meal{justify-self:center;z-index:1;padding:1px 8px;font-size:11px;font-weight:600;background:var(--surface);border:1.5px solid;border-radius:10px}.pot-name-wrap{position:relative;display:flex;min-width:0}.pot-name-wrap>.pot-free{position:absolute;right:-6px;bottom:-12px;z-index:2;padding:0 6px;font-size:10px}.pot-meal.pot-name{min-width:0;padding:3px 12px;font-size:13px;border-radius:12px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.pot-cell{display:flex;gap:3px;justify-self:center;align-items:center;max-width:100%;min-width:0;position:relative;z-index:1}.pot-link{flex-shrink:0;width:9px;height:3px;margin:0 -3px;opacity:.5}.week-fridge-row.free .pot-link{height:4px;opacity:1}.pot-cell>.pot-meal:not(.pot-name){flex-shrink:0;white-space:nowrap}.pot-free{flex-shrink:0;padding:1px 8px;font:inherit;font-size:11px;font-weight:600;white-space:nowrap;color:color-mix(in srgb,var(--warn) 55%,var(--ink));background:color-mix(in srgb,var(--warn) 18%,var(--surface));border:1.5px solid var(--warn);border-radius:10px}.pot-free.planned{background:var(--surface);border-style:dashed}button.pot-free,button.pot-meal{height:auto;cursor:pointer}button.pot-meal{display:block}button.pot-meal:hover:not(:disabled){background:var(--surface)}button.pot-free:hover:not(:disabled){background:color-mix(in srgb,var(--warn) 18%,var(--surface))}.week-fridge-row.linked .pot-meal{box-shadow:0 0 0 2px color-mix(in srgb,currentColor 25%,transparent)}.week-fridge-row.free>.pot-span{height:4px;opacity:1}.week-fridge-row.free .pot-name{color:#fff}.week-fridge-row.free .pot-free:not(.planned){color:#2b2000;background:var(--warn)}.week-fridge-row.free .pot-free.planned{color:color-mix(in srgb,var(--warn) 70%,var(--ink));border-width:2px}.week-fridge-row.linked>.pot-span,.week-fridge-row.linked .pot-link{opacity:1}.template-cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:12px}.template-card{position:relative;display:flex;flex-direction:column;gap:4px;margin:0}.template-card h2{margin:0;padding-right:32px;font-size:16px}.template-card-link{color:inherit}.template-card-link:after{content:"";position:absolute;inset:0}.template-card:hover{box-shadow:var(--shadow),0 0 0 1px var(--accent)}.template-card-actions{position:absolute;top:10px;right:10px;z-index:1;display:flex;gap:2px}.template-card-macros .nutri-macro{gap:2px;margin-right:8px;font-size:inherit;color:var(--muted)}.template-card-covers{display:flex;gap:4px;margin-top:6px}input.title-input{flex:1 1 auto;min-width:0;height:auto;padding:2px 6px;margin-left:-7px;font:inherit;font-size:24px;font-weight:700;background:none;border:1px solid transparent;border-radius:8px}input.title-input:hover{border-color:var(--line)}.template-head{gap:12px}.template-bar{margin-bottom:10px}.template-bar .nutri-macro{gap:2px;font-size:inherit}.template-day{position:relative}button.day-menu-button{position:absolute;top:2px;right:2px;width:26px;height:22px;font-size:16px;line-height:1}.cell-popover.menu{width:240px;text-align:left}.day-menu .row-between>button{flex:1}.week-item.dragging{opacity:.4}.week-grid-cell.drop{border-color:var(--accent);background:color-mix(in srgb,var(--accent) 5%,var(--surface))}.recipe-shelves{margin-bottom:16px}.recipe-shelves .chip{border:none;background:var(--surface);box-shadow:var(--shadow)}.recipe-shelves .chip-icon{margin-right:5px}.recipe-shelves .chip:hover:not(:disabled){background:var(--hover)}.recipe-shelves .chip.on,.recipe-shelves .chip.on:hover{background:var(--accent);color:#fff}.recipe-shelves .chip.on .tag{background:#ffffff38;color:#fff}.recipe-shelves .chip.new{background:none;box-shadow:none;border:1px dashed var(--line);color:var(--muted)}.recipe-shelf-head{margin-bottom:12px}input.shelf-name{font-size:18px;margin-left:0}.recipe-card{flex-direction:row;gap:12px}.recipe-card .thumb{width:56px;height:56px}.recipe-card .stack{min-width:0}button.icon-button.star:hover:not(:disabled),button.icon-button.star.on{background:none;color:var(--warn)}.recipe-entries{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:4px}.entry-row{display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:8px;padding:6px 4px 6px 0;border-top:2px solid transparent;border-bottom:1px solid var(--line-soft)}.entry-row.dragging{opacity:.4}.entry-row.drop,.entry-end.drop{border-top-color:var(--accent)}.entry-end{height:12px;border-top:2px solid transparent}.entry-handle{align-self:center;color:var(--muted);cursor:grab;letter-spacing:-4px;-webkit-user-select:none;user-select:none}.entry-body{display:flex;flex-direction:column;gap:4px;min-width:0}.entry-name{font-weight:600}.entry-text{margin:0;white-space:pre-wrap}.entry-body textarea{margin:0}.entry-head{display:flex;justify-content:space-between;align-items:baseline;gap:12px}.entry-head .nutri-line{flex-wrap:nowrap;gap:4px 10px;font-size:13px;color:var(--muted)}.entry-timer{flex-direction:row;align-items:center;gap:6px}.entry-timer input{width:64px}.photo-strip{display:flex;flex-wrap:wrap;gap:8px}.photo-tile{display:flex;flex-direction:column;align-items:center;gap:2px;width:96px;margin:0}.photo-tile img{width:96px;height:96px;object-fit:cover;border-radius:8px;background:var(--line-soft)}.photo-actions{display:flex;align-items:center;gap:4px}button.photo-add{justify-content:center;height:96px;background:none;color:var(--muted);border:1px dashed var(--line);border-radius:8px;font-weight:400}main.wrap.admin{max-width:none}.admin-nav{display:flex;flex-wrap:wrap;gap:16px;margin-bottom:20px}.admin .row-between,.admin .inline-form{flex-wrap:wrap}.admin .inline-form input.search{max-width:100%}.admin h1 .tag{vertical-align:middle}.table-scroll{overflow-x:auto}.table-scroll td{white-space:nowrap}.card h2:first-child{margin-top:0}.facts{display:grid;grid-template-columns:max-content 1fr;gap:6px 20px;margin:0}.facts dt{color:var(--muted)}.facts dd{margin:0;overflow-wrap:anywhere}@media(max-width:760px){.facts{grid-template-columns:1fr;gap:0}.facts dd{margin-bottom:8px}}.admin-actions{display:flex;flex-direction:column;align-items:flex-start;gap:8px}button.link.danger-text{color:var(--error)}.copy-field{display:inline-flex;flex-wrap:nowrap;max-width:100%;vertical-align:middle}.admin .copy-field input{flex:1 1 auto;min-width:0;width:420px}.raw{overflow-x:auto;font-size:12px;margin:0}tr.done td{opacity:.5}.plain-list{margin:0;padding-left:18px}
