@font-face{font-family:"Young Serif";font-style:normal;font-display:swap;font-weight:400;src:url(/assets/young-serif-latin-400-normal-DIMmNPI9.woff2) format("woff2"),url(/assets/young-serif-latin-400-normal-D1tz0Z9s.woff) format("woff")}@font-face{font-family:Hanken Grotesk Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(data:font/woff2;base64,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) format("woff2-variations");unicode-range:U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Hanken Grotesk Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/hanken-grotesk-vietnamese-wght-normal-CHiFlh_0.woff2) format("woff2-variations");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Hanken Grotesk Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/hanken-grotesk-latin-ext-wght-normal-Dg-wlmqe.woff2) format("woff2-variations");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Hanken Grotesk Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/hanken-grotesk-latin-wght-normal-CaVRRdDk.woff2) format("woff2-variations");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}:root{color-scheme:light dark;--bg: oklch(.975 .011 78);--surface: oklch(.992 .008 84);--surface-2: oklch(.955 .015 76);--ink: oklch(.265 .021 50);--muted: oklch(.478 .028 56);--line: oklch(.895 .014 76);--line-2: oklch(.848 .02 74);--accent: oklch(.605 .15 42);--accent-ink: oklch(.985 .01 82);--olive: oklch(.52 .085 128);--olive-ink: oklch(.985 .01 120);--olive-text: oklch(.43 .085 128);--danger: oklch(.56 .16 28);--r-sm: 10px;--r: 14px;--r-lg: 20px;--space-2xs: 4px;--space-xs: 8px;--space-sm: 12px;--space-md: 16px;--space-lg: 24px;--space-xl: 32px;--shadow-sm: 0 1px 2px oklch(.3 .03 50 / .06);--shadow: 0 1px 2px oklch(.3 .03 50 / .05), 0 8px 24px -10px oklch(.3 .05 50 / .16);--font-display: "Young Serif", Georgia, "Times New Roman", serif;--font-body: "Hanken Grotesk Variable", "Hanken Grotesk", system-ui, -apple-system, sans-serif;--ease: cubic-bezier(.22, 1, .36, 1);accent-color:var(--accent)}@media(prefers-color-scheme:dark){:root{--bg: oklch(.205 .013 52);--surface: oklch(.245 .016 54);--surface-2: oklch(.29 .018 55);--ink: oklch(.93 .012 82);--muted: oklch(.712 .021 74);--line: oklch(.322 .017 55);--line-2: oklch(.382 .02 55);--accent: oklch(.705 .135 47);--accent-ink: oklch(.21 .03 44);--olive: oklch(.72 .088 128);--olive-ink: oklch(.21 .028 120);--olive-text: oklch(.78 .085 128);--danger: oklch(.705 .15 32);--shadow-sm: 0 1px 2px oklch(0 0 0 / .3);--shadow: 0 1px 2px oklch(0 0 0 / .3), 0 10px 28px -12px oklch(0 0 0 / .5)}}*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}html,body,#root{height:100%}body{margin:0;background:var(--bg);color:var(--ink);font:400 16px/1.5 var(--font-body);-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;padding:env(safe-area-inset-top) env(safe-area-inset-right) env(safe-area-inset-bottom) env(safe-area-inset-left)}::selection{background:color-mix(in oklab,var(--accent) 26%,transparent)}:where(button,input,a):focus-visible{outline:2px solid var(--accent);outline-offset:2px}button{font:600 15px/1 var(--font-body);background:var(--surface-2);color:var(--ink);border:1px solid var(--line-2);border-radius:var(--r);padding:12px 16px;cursor:pointer;transition:transform .12s var(--ease),background-color .2s ease,border-color .2s ease,color .2s ease}button:active{transform:translateY(1px) scale(.99)}button:disabled{opacity:.5;cursor:not-allowed}button.primary{background:var(--accent);color:var(--accent-ink);border-color:transparent;box-shadow:var(--shadow-sm)}button.ghost{background:transparent;border-color:var(--line-2)}button.ghost.subtle{color:var(--muted);border-color:var(--line)}button.link{background:none;border:none;color:var(--muted);padding:8px 10px;min-height:44px;display:inline-flex;align-items:center;justify-content:center;gap:5px;font-weight:500}button.link:hover{color:var(--ink)}button.icon-btn{background:transparent;border:1px solid var(--line-2);color:var(--muted);width:44px;height:44px;padding:0;flex:0 0 auto;display:grid;place-items:center;font-size:14px}button.icon-btn:hover{color:var(--ink);border-color:var(--line-2)}.toolbar{display:flex;flex-wrap:wrap;gap:10px;margin:0 0 16px}.toolbar button{min-height:44px}input[type=text],input[type=search],input[type=number],input[type=password]{font:400 16px/1.4 var(--font-body);background:var(--surface);border:1px solid var(--line-2);color:var(--ink);border-radius:var(--r);padding:13px 15px;outline:none;transition:border-color .2s ease,box-shadow .2s ease}input::placeholder{color:var(--muted)}input:focus{border-color:var(--accent);box-shadow:0 0 0 3px color-mix(in oklab,var(--accent) 18%,transparent)}input[type=number]{-moz-appearance:textfield;-webkit-appearance:textfield;appearance:textfield}input[type=number]::-webkit-outer-spin-button,input[type=number]::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}input[type=checkbox]{width:20px;height:20px;margin:0;flex:0 0 auto}.app{position:relative;z-index:1;max-width:680px;margin:0 auto;padding:20px 16px calc(120px + env(safe-area-inset-bottom))}.topbar{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:18px}.topbar:has(h1){align-items:baseline}.topbar h1{margin:0;font:400 clamp(26px,7vw,33px) / 1 var(--font-display);letter-spacing:.004em}.week-title{flex:1;background:none;border:none;padding:8px 10px;min-height:44px;font:400 clamp(17px,4.6vw,20px) / 1.2 var(--font-display);color:var(--ink);display:inline-flex;align-items:center;justify-content:center;gap:8px;letter-spacing:.004em}.week-title .caret{font-size:11px;color:var(--muted)}.week-title:hover .caret{color:var(--accent)}.who{display:flex;align-items:center;gap:10px;color:var(--muted);font-size:13px;flex:0 0 auto}.dot{width:8px;height:8px;border-radius:50%;background:var(--danger);box-shadow:0 0 0 3px color-mix(in oklab,var(--danger) 20%,transparent)}.dot.on{background:var(--olive);box-shadow:0 0 0 3px color-mix(in oklab,var(--olive) 22%,transparent)}.addbar{display:flex;gap:10px;margin-bottom:14px;position:sticky;top:0;z-index:5;padding:10px 0;background:linear-gradient(var(--bg) 72%,transparent)}.addbar input{flex:1}.section-title{display:flex;align-items:center;gap:9px;font:400 15px/1 var(--font-display);color:var(--ink);letter-spacing:.01em;margin:24px 2px 10px}.section-title:before{content:"";width:6px;height:6px;border-radius:50%;background:var(--accent);flex:0 0 auto}.completed-head{display:flex;align-items:center;justify-content:space-between}.list{background:var(--surface);border:1px solid var(--line);border-radius:var(--r-lg);box-shadow:var(--shadow-sm);overflow:hidden;animation:rise .42s var(--ease) both}.row{display:flex;align-items:center;gap:14px;padding:14px 16px;transition:opacity .25s ease,background-color .2s ease}.row+.row{border-top:1px solid var(--line)}.row .name{flex:1;min-width:0;overflow-wrap:anywhere}.row .qty{color:var(--muted);font-size:13px}.row .tappable{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:none;border:0;padding:4px 0;margin:-4px 0;font:inherit;color:inherit;text-align:left;cursor:text;border-radius:var(--r-sm);transition:background-color .15s ease}.row .qty.tappable{flex:0 0 auto;padding:4px 6px;margin:-4px 0}.row .tappable:active{background:color-mix(in oklab,var(--accent) 10%,transparent)}.row.editing{gap:8px;padding:8px 10px 8px 12px}.row.editing .edit-name{flex:1;min-width:0;padding:9px 11px}.row.editing .edit-qty{flex:0 0 88px;width:88px;padding:9px 11px}.row.done{opacity:.6}.row.completing{background:color-mix(in oklab,var(--olive) 9%,transparent)}.row.completing .name{color:var(--muted);text-decoration:line-through;text-decoration-color:color-mix(in oklab,var(--muted) 55%,transparent)}.check{position:relative;width:27px;height:27px;flex:0 0 auto;border-radius:50%;border:2px solid var(--line-2);background:transparent;color:transparent;display:grid;place-items:center;font-size:14px;cursor:pointer;padding:0;transition:background-color .2s ease,border-color .2s ease,transform .15s var(--ease)}.check:after{content:"";position:absolute;top:-9px;right:-9px;bottom:-9px;left:-9px}.check:active{transform:scale(.88)}.check.on{background:var(--olive);border-color:var(--olive);color:var(--olive-ink)}.empty{color:var(--muted);text-align:center;margin-top:64px;font-family:var(--font-display);font-size:18px;line-height:1.5}.empty span{display:block;margin-top:6px;font-family:var(--font-body);font-size:14px}.note{display:flex;align-items:center;justify-content:space-between;gap:10px;color:var(--olive-text);background:color-mix(in oklab,var(--olive) 9%,transparent);border:1px solid color-mix(in oklab,var(--olive) 24%,var(--line));border-radius:var(--r);padding:4px 6px 4px 14px;font-size:13.5px;margin:0 0 16px}.note button.link{min-height:36px;padding:6px 8px;color:var(--olive-text)}.chips{display:flex;flex-wrap:wrap;gap:7px}.chip{display:inline-flex;align-items:center;gap:6px;background:var(--surface-2);border:1px solid var(--line);border-radius:999px;padding:6px 12px;font-size:13px;color:var(--ink)}.chip.add{cursor:pointer;flex-direction:column;align-items:flex-start;gap:1px;background:color-mix(in oklab,var(--olive) 13%,var(--surface));border-color:color-mix(in oklab,var(--olive) 32%,var(--line));color:var(--olive-text);transition:transform .12s var(--ease)}.chip.add:active{transform:scale(.98)}.chip-x{background:none;border:none;color:var(--muted);padding:0;font-size:12px;cursor:pointer}.chip-meta{color:var(--olive-text);opacity:.72;font-size:11px}.days{animation:rise .42s var(--ease) both}.day{padding:18px 0 22px;border-bottom:1px solid var(--line)}.day:last-child{border-bottom:none}.day-head{display:flex;justify-content:space-between;align-items:baseline;margin-bottom:10px}.day-label{color:var(--muted);font-size:12px;text-transform:uppercase;letter-spacing:.08em;font-weight:600}.day-label b{color:var(--ink);font-size:15px;font-weight:700}.day-empty{display:flex;flex-wrap:wrap;gap:10px;align-items:center}.day-empty button{min-height:44px}.meal{background:var(--surface);border:1px solid var(--line);border-radius:var(--r);padding:12px;box-shadow:var(--shadow-sm);animation:rise .42s var(--ease) both}.meal.cooked{opacity:.72}.meal.eating-out{display:flex;justify-content:space-between;align-items:center;color:var(--muted);background:transparent;border-style:dashed;box-shadow:none}.meal-top{display:flex;gap:12px}.thumb{width:60px;height:60px;border-radius:12px;object-fit:cover;flex:0 0 auto}.thumb.placeholder{display:grid;place-items:center;background:var(--surface-2);font-size:26px}.meal-body{flex:1;min-width:0}.meal-title{font:400 18px/1.25 var(--font-display);margin-bottom:8px;display:flex;align-items:center;gap:8px;overflow-wrap:anywhere}.badge{font:600 11px/1 var(--font-body);color:var(--olive-ink);background:var(--olive);border-radius:999px;padding:3px 8px}.meal-actions{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:8px;margin-top:14px;padding-top:10px;border-top:1px solid var(--line)}.meal-actions-group{display:flex;align-items:center;gap:8px}.meal-actions .danger,.meal-actions .danger:hover{color:var(--danger)}.inline{display:flex;gap:10px;align-items:center}.inline input{flex:1;min-width:0}.inline.compact{margin-top:10px;gap:6px}.inline.compact input{padding:10px 12px}.add-meal{background:var(--surface);border:1px solid var(--line);border-radius:var(--r);padding:12px;box-shadow:var(--shadow-sm)}.add-meal .inline{margin:0}.saved{margin-top:14px;padding-top:12px;border-top:1px solid var(--line)}.saved-label{display:block;color:var(--muted);font-size:11px;text-transform:uppercase;letter-spacing:.08em;font-weight:600;margin-bottom:9px}.suggestions{margin-bottom:18px}.suggestions .section-title{margin-top:0}.panel{background:var(--surface);border:1px solid var(--line);border-radius:var(--r);padding:14px;margin-bottom:16px;box-shadow:var(--shadow-sm);animation:rise .3s var(--ease) both}.panel-head{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:12px}.panel-title{font:400 16px/1 var(--font-display)}.panel-hint{color:var(--muted);font-size:13.5px;margin:0}.calendar{background:var(--surface);border:1px solid var(--line);border-radius:var(--r-lg);padding:14px;margin-bottom:18px;box-shadow:var(--shadow);animation:rise .24s var(--ease) both}.calendar-head{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:12px}.calendar-month{font:400 17px/1 var(--font-display)}.calendar-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:3px}.calendar-dow{text-align:center;color:var(--muted);font-size:11px;font-weight:700;letter-spacing:.06em;padding-bottom:6px}.calendar-day{background:none;border:none;border-radius:var(--r-sm);color:var(--ink);font-size:14px;font-weight:500;padding:0;aspect-ratio:1;min-height:38px;display:grid;place-items:center}.calendar-day:hover{background:var(--surface-2)}.calendar-day.outside{color:var(--muted);opacity:.5}.calendar-day.in-week{background:color-mix(in oklab,var(--accent) 15%,transparent);color:var(--ink);opacity:1}.calendar-day.today{box-shadow:inset 0 0 0 2px var(--accent);font-weight:700}.calendar-foot{display:flex;justify-content:center;margin-top:8px;padding-top:8px;border-top:1px solid var(--line)}.lede{color:var(--muted);font-size:13.5px;line-height:1.55;margin:-8px 2px 16px}.library{display:flex;flex-direction:column;gap:12px}.lib-meal{background:var(--surface);border:1px solid var(--line);border-radius:var(--r);padding:14px;box-shadow:var(--shadow-sm)}.lib-meal.paused{background:var(--surface-2);opacity:.78}.lib-title{font:400 18px/1.25 var(--font-display);display:flex;align-items:center;gap:8px;overflow-wrap:anywhere}.lib-title .badge{background:var(--surface-2);color:var(--muted);border:1px solid var(--line-2)}.lib-meta{color:var(--muted);font-size:13px;margin:5px 0 10px}.lib-warn{color:var(--danger);font-size:13px;margin:10px 0 0}.form{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.field{display:flex;flex-direction:column;gap:5px;min-width:0}.field>span{color:var(--muted);font-size:11px;text-transform:uppercase;letter-spacing:.08em;font-weight:600}.field input{width:100%}.field input[type=checkbox]{width:20px}.field.wide{grid-column:1 / -1}.field-check{flex-direction:row;align-items:center;gap:10px;min-height:44px}.field-check>span{text-transform:none;letter-spacing:normal;font-size:14px;font-weight:400;color:var(--ink)}.panel-hint.err{color:var(--danger);margin-top:12px}.tabbar{position:fixed;left:50%;bottom:calc(10px + env(safe-area-inset-bottom));transform:translate(-50%);z-index:20;width:min(420px,calc(100% - 24px));display:grid;grid-template-columns:repeat(3,1fr);gap:4px;padding:6px;background:var(--surface);border:1px solid var(--line-2);border-radius:24px;box-shadow:0 1px 2px #3a2a2014,0 14px 34px -12px #42261659}.tabbar button{background:none;border:none;border-radius:18px;color:var(--muted);padding:6px 4px 7px;min-height:54px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;transition:color .2s ease}.tabbar button:active{transform:scale(.96)}.tab-icon{display:grid;place-items:center;width:56px;height:30px;border-radius:999px;transition:background-color .25s var(--ease),color .2s ease,transform .25s var(--ease)}.tab-label{font-size:11.5px;font-weight:600;letter-spacing:.02em}.tabbar button.on{color:var(--ink)}.tabbar button.on .tab-icon{background:color-mix(in oklab,var(--accent) 18%,var(--surface));color:var(--accent);transform:translateY(-1px)}.tabbar button.on .tab-label{font-weight:700}.login{position:relative;z-index:1;max-width:400px;margin:0 auto;min-height:100dvh;display:flex;flex-direction:column;justify-content:center;padding:0 28px 12vh;text-align:center;animation:rise .5s var(--ease) both}.login h1{font:400 clamp(30px,9vw,40px) / 1.05 var(--font-display);margin:0 0 6px}.login p{margin:2px 0 0}.login .users{display:flex;flex-direction:column;gap:12px;margin-top:22px}.login .users .primary{padding:16px;font-size:16px}.login .err{color:var(--danger);margin-top:14px;font-size:14px;min-height:18px}.login .toggle{margin-top:20px}.login .code{width:100%;margin-top:14px;text-align:center}@keyframes rise{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:none}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation:none!important;transition:none!important}}.panel .toolbar.confirm-actions{margin:14px 0 0}.progress{position:fixed;top:env(safe-area-inset-top);left:0;right:0;height:3px;z-index:50;overflow:hidden;opacity:0;pointer-events:none;transition:opacity .25s ease}.progress.on{opacity:1}.progress:before{content:"";position:absolute;top:0;bottom:0;width:40%;border-radius:999px;background:var(--accent);animation:progress-slide 1.1s var(--ease) infinite}@keyframes progress-slide{0%{left:-40%}to{left:100%}}.spinner{display:inline-block;width:1em;height:1em;flex:0 0 auto;border-radius:50%;border:2px solid currentColor;border-right-color:transparent;opacity:.8;animation:spin .7s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}button[aria-busy=true]{display:inline-flex;align-items:center;gap:8px}.loading{display:flex;align-items:center;justify-content:center;gap:10px;color:var(--muted);padding:48px 16px;font-size:14px}.meal.saving{opacity:.8}.chip.pending{opacity:.6}.thumb.placeholder{background:color-mix(in oklab,var(--accent) 12%,var(--surface-2));border:1px solid color-mix(in oklab,var(--accent) 18%,var(--line));font-size:30px;line-height:1}.thumb.placeholder.working{animation:breathe 1.4s ease-in-out infinite}@keyframes breathe{50%{opacity:.55;transform:scale(.96)}}.working-hint{display:inline-flex;align-items:center;gap:8px;color:var(--muted);font-size:13px;padding:6px 0}.guess-hint{color:var(--muted);font-size:12.5px;margin:8px 0 0}.chip-x:disabled{opacity:.4}button.ghost.on{background:color-mix(in oklab,var(--accent) 12%,transparent);border-color:color-mix(in oklab,var(--accent) 45%,var(--line-2))}.suggestions .inline{margin-bottom:12px}.suggestions .panel-hint{margin-bottom:10px}.thinking{display:flex;flex-wrap:wrap;align-items:center;gap:10px;color:var(--muted);font-size:13.5px}.thinking .chips{flex-basis:100%}.chip.skeleton{width:132px;height:30px;animation:breathe 1.4s ease-in-out infinite}.chip.skeleton:nth-child(2n){width:96px;animation-delay:.2s}.suggest-list{display:grid;gap:8px}button.suggestion{display:flex;align-items:center;gap:12px;width:100%;text-align:left;padding:10px 12px;background:var(--surface);border:1px solid var(--line);border-radius:var(--r);font-weight:400;line-height:1.3}button.suggestion:hover{border-color:color-mix(in oklab,var(--olive) 40%,var(--line))}.suggestion-icon{font-size:26px;width:44px;height:44px;display:grid;place-items:center;flex:0 0 auto;border-radius:12px;background:color-mix(in oklab,var(--accent) 10%,var(--surface-2))}.suggestion-body{flex:1;min-width:0;display:grid;gap:3px}.suggestion-title{font:400 15.5px/1.25 var(--font-display);display:flex;align-items:center;gap:8px;flex-wrap:wrap}.suggestion-meta{color:var(--muted);font-size:12.5px}.suggestion-add{color:var(--olive-text);font-size:22px;font-weight:600;flex:0 0 auto}.badge.new{background:var(--accent);color:var(--accent-ink)}.interests textarea{width:100%;margin-top:10px;font:400 16px/1.45 var(--font-body);background:var(--surface);border:1px solid var(--line-2);color:var(--ink);border-radius:var(--r);padding:11px 13px;resize:vertical;outline:none}.interests textarea:focus{border-color:var(--accent);box-shadow:0 0 0 3px color-mix(in oklab,var(--accent) 18%,transparent)}.interests .toolbar{margin:10px 0 0}.panel-status{color:var(--olive-text);font-size:13px;font-weight:600}[hidden]{display:none!important}svg{flex:0 0 auto}a.link{color:var(--muted);text-decoration:none;padding:8px 10px;min-height:44px;display:inline-flex;align-items:center;gap:5px;font:500 15px/1 var(--font-body);border-radius:var(--r)}a.link:hover,button.link:hover{color:var(--ink)}button.link.danger,a.link.danger{color:var(--danger)}button.icon-btn{border-radius:14px}button.icon-btn.quiet{border-color:transparent;border-radius:50%}button.icon-btn.quiet:hover{background:var(--surface-2)}.pagehead{display:flex;align-items:flex-end;justify-content:space-between;gap:12px;margin:6px 0 18px}.pagehead h1{margin:0;font:400 clamp(30px,8.4vw,38px) / 1.02 var(--font-display);letter-spacing:-.005em}.eyebrow{display:flex;align-items:center;gap:8px;margin:0 0 6px;color:var(--muted);font-size:12px;font-weight:600;letter-spacing:.08em;text-transform:uppercase}.pagehead-actions{display:flex;gap:8px;flex:0 0 auto}.pagehead .week-title{padding:0;min-height:0;justify-content:flex-start;font:400 clamp(30px,8.4vw,38px) / 1.02 var(--font-display)}.week-title .caret{color:var(--muted);transition:transform .25s var(--ease),color .2s ease}.week-title .caret.open{transform:rotate(180deg);color:var(--accent)}.dot{width:7px;height:7px}.pill{display:inline-flex;align-items:center;gap:8px;flex:0 0 auto;min-height:42px;padding:9px 15px 9px 13px;border-radius:999px;border:1px solid var(--line-2);background:var(--surface);color:var(--ink);font:600 14.5px/1 var(--font-body);white-space:nowrap;box-shadow:var(--shadow-sm)}.pill.primary{background:var(--accent);border-color:transparent;color:var(--accent-ink)}.pill.olive{background:color-mix(in oklab,var(--olive) 16%,var(--surface));border-color:color-mix(in oklab,var(--olive) 40%,var(--line));color:var(--olive-text)}.pill.on{background:color-mix(in oklab,var(--accent) 14%,var(--surface));border-color:color-mix(in oklab,var(--accent) 45%,var(--line-2));color:var(--accent)}.pill .count,.segmented .count{display:inline-grid;place-items:center;min-width:20px;height:20px;padding:0 6px;border-radius:999px;font-size:11.5px;font-weight:700;background:color-mix(in oklab,currentColor 16%,transparent)}.actions{display:flex;gap:8px;overflow-x:auto;scrollbar-width:none;margin:0 -16px 18px;padding:2px 16px 6px;-webkit-mask-image:linear-gradient(90deg,#000 calc(100% - 28px),transparent);mask-image:linear-gradient(90deg,#000 calc(100% - 28px),transparent)}.actions::-webkit-scrollbar{display:none}.segmented{display:flex;gap:4px;padding:4px;margin-bottom:4px;overflow-x:auto;scrollbar-width:none;background:var(--surface-2);border:1px solid var(--line);border-radius:999px}.segmented::-webkit-scrollbar{display:none}.segmented button{flex:1 0 auto;display:inline-flex;align-items:center;justify-content:center;gap:7px;min-height:40px;padding:8px 14px;border:none;border-radius:999px;background:transparent;color:var(--muted);font:600 14px/1 var(--font-body);white-space:nowrap}.segmented button.on{background:var(--surface);color:var(--ink);box-shadow:0 1px 2px #3a2a201a,0 2px 8px -4px #3e281b33}.segmented button.on .count{background:var(--accent);color:var(--accent-ink)}.segmented .segmented-add{flex:0 0 40px;padding:0}.segmented-input{flex:1 0 120px;min-height:40px;padding:8px 14px!important;border-radius:999px!important}.list-lede{margin:4px 2px 14px}.list-foot{display:flex;justify-content:center;margin-top:28px}.addbar button.primary{min-width:52px;padding:0 14px;display:grid;place-items:center}.addbar.search,.addbar.link-import{position:relative}.addbar.link-import{position:relative;top:auto;background:none;padding-top:0}.addbar.search{position:sticky}.addbar-icon{position:absolute;left:15px;top:50%;transform:translateY(-50%);color:var(--muted);pointer-events:none}.addbar.link-import .addbar-icon{transform:translateY(calc(-50% - 5px))}.addbar.search input,.addbar.link-import input{padding-left:44px}input[type=url]{font:400 16px/1.4 var(--font-body);background:var(--surface);border:1px solid var(--line-2);color:var(--ink);border-radius:var(--r);padding:13px 15px;outline:none;flex:1;min-width:0}input[type=url]:focus{border-color:var(--accent);box-shadow:0 0 0 3px color-mix(in oklab,var(--accent) 18%,transparent)}.section-title{margin:26px 4px 10px}.section-count{margin-left:auto;font:600 12px/1 var(--font-body);color:var(--muted)}.completed-head .section-title{flex:1}.row-x{min-height:36px;padding:6px;color:var(--muted);opacity:.7}.check.on{color:var(--olive-ink)}.empty{display:flex;flex-direction:column;align-items:center;gap:8px;color:var(--muted)}.empty svg{color:var(--olive);margin-bottom:4px}.day{display:grid;grid-template-columns:50px minmax(0,1fr);gap:0 12px;align-items:start;padding:14px 0}.day-head{flex-direction:column;align-items:center;justify-content:flex-start;gap:2px;margin:2px 0 0;padding:8px 0;border-radius:14px}.day-label{display:flex;flex-direction:column;align-items:center;gap:3px;font-size:11px;letter-spacing:.1em}.day-label b{font:400 24px/1 var(--font-display);letter-spacing:0}.day.today .day-head{background:color-mix(in oklab,var(--accent) 13%,transparent)}.day.today .day-label,.day.today .day-label b{color:var(--accent)}.today-tag{font-size:9.5px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--accent)}.day>:not(.day-head){grid-column:2}.day-empty{gap:4px;min-height:64px}button.slot{flex:1;display:inline-flex;align-items:center;justify-content:flex-start;gap:8px;min-height:56px;padding:0 16px;border:1.5px dashed var(--line-2);border-radius:var(--r);background:transparent;color:var(--muted);font-weight:600}button.slot:hover{border-color:color-mix(in oklab,var(--accent) 50%,var(--line-2));color:var(--accent)}.eating-out-label{display:inline-flex;align-items:center;gap:8px}.meal.eating-out{min-height:56px;padding:4px 6px 4px 16px}.meal{padding:12px 12px 4px;border-radius:var(--r-lg)}.thumb{width:64px;height:64px;border-radius:14px}.meal-actions{margin-top:10px;padding-top:4px}.meal-actions .link{min-height:40px;padding:6px 8px;font-size:14px}.chip-x{display:grid;place-items:center;width:18px;height:18px;margin-right:-4px;border-radius:50%}.chip-x:hover{background:color-mix(in oklab,var(--ink) 8%,transparent)}.guess-hint,.hint-row{display:flex;align-items:center;gap:6px}.picks{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:8px}button.pick{display:flex;align-items:center;gap:10px;padding:8px 10px;text-align:left;background:var(--surface);border:1px solid var(--line);border-radius:var(--r);font-weight:400}button.pick:hover{border-color:color-mix(in oklab,var(--olive) 45%,var(--line))}.pick-icon{display:grid;place-items:center;width:36px;height:36px;flex:0 0 auto;border-radius:10px;background:color-mix(in oklab,var(--accent) 10%,var(--surface-2));font-size:20px}.pick-body{display:grid;gap:2px;min-width:0}.pick-title{font:400 15px/1.2 var(--font-display);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.pick-meta{color:var(--muted);font-size:12px}.panel-title{display:inline-flex;align-items:center;gap:8px;font-size:18px}.panel-title svg{color:var(--accent)}.suggestion.skeleton{height:66px;border-radius:var(--r);background:var(--surface-2);border:1px solid var(--line);animation:breathe 1.4s ease-in-out infinite}.suggestion.skeleton:nth-child(2){animation-delay:.15s}.suggestion.skeleton:nth-child(3){animation-delay:.3s}.suggestion-add{display:grid;place-items:center;width:34px;height:34px;border-radius:50%;background:color-mix(in oklab,var(--olive) 14%,transparent)}.calendar-foot{flex-direction:column;align-items:center;gap:6px}.lib-head{display:flex;gap:12px;align-items:flex-start}.lib-icon{display:grid;place-items:center;width:48px;height:48px;flex:0 0 auto;border-radius:14px;background:color-mix(in oklab,var(--accent) 10%,var(--surface-2));border:1px solid color-mix(in oklab,var(--accent) 14%,var(--line));font-size:26px}.lib-meal{border-radius:var(--r-lg);padding:14px 14px 4px}.lib-meal .chips{margin-top:10px}.lib-meta{margin:4px 0 0}.footnote{color:var(--muted);font-size:12.5px;text-align:center;margin:28px 12px 0;line-height:1.5}.interests .panel-title{font-size:16px}.login-icon{width:72px;height:72px;border-radius:18px;margin:0 auto 18px;box-shadow:var(--shadow)}.meal-top{align-items:center}.meal .thumb{width:56px;height:56px}.meal-head{flex:1;min-width:0}.meal-head .meal-title{margin-bottom:4px}.meal-sub{display:flex;align-items:center;gap:8px;color:var(--muted);font-size:13px}.meal-sub .working-hint{padding:0}.meal-chips{margin-top:12px}.meal .inline.compact{margin-top:10px}.meal-actions{flex-wrap:nowrap;gap:0}.meal-actions-group{gap:0}.meal-actions .link{padding:6px 7px;gap:4px}details.interests summary{list-style:none;cursor:pointer;margin-bottom:0}details.interests summary::-webkit-details-marker{display:none}details.interests[open] summary{margin-bottom:10px}.interests-preview{color:var(--muted);font-size:13.5px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0;max-width:60%}
