:root{--paper:#fbfaf8;--card:#fff;--ink:#1c1b19;--ink-soft:#5d5a54;--ink-faint:#6e6a64;--line:#ddd9d1;--line-strong:#c6c1b7;--accent:#60405f;--accent-dark:#472f47;--accent-soft:#f1eaf1;--secondary:#647759;--secondary-dark:#4b5e43;--secondary-soft:#edf1e9;--radius:3px}.print-frame,.print-frame>thead,.print-frame>tbody,.print-frame>tfoot,.print-frame>*>tr,.print-frame>*>tr>td{text-align:left;vertical-align:top;width:auto;font-weight:inherit;border:0;padding:0;display:block}@media print{.print-frame{border-collapse:collapse;width:100%;display:table}.print-frame>thead{display:table-header-group}.print-frame>tbody{display:table-row-group}.print-frame>tfoot{display:table-footer-group}.print-frame>*>tr{display:table-row}.print-frame>*>tr>td{display:table-cell}}:root{--focus:var(--accent)}*{box-sizing:border-box}[hidden]{display:none!important}html,body{height:100%}html{-webkit-text-size-adjust:100%}button,a,input,select,textarea,label,.day,.chip,.tab,[role=menuitem]{touch-action:manipulation}*{-webkit-tap-highlight-color:transparent}.day-hit,.course-row,.drawer,.place-bar,.suggestions li{-webkit-user-select:none;user-select:none;-webkit-touch-callout:none}.drawer input{-webkit-user-select:auto;user-select:auto;-webkit-touch-callout:default}body.is-dragging{-webkit-user-select:none;user-select:none}body{background:var(--paper);min-height:100%;color:var(--ink);-webkit-font-smoothing:antialiased;flex-direction:column;margin:0;font:15px/1.45 -apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,sans-serif;display:flex}:focus-visible{outline:2px solid var(--focus);outline-offset:2px}.btn{font:inherit;background:var(--card);color:var(--ink);border:1px solid var(--line-strong);border-radius:var(--radius);cursor:pointer;align-items:center;gap:7px;padding:7px 13px;font-size:14px;display:inline-flex}.icon{flex:none;width:16px;height:16px}.btn:hover{background:#f2efe9}.btn:active{background:#e7e2d9}.btn-primary{background:var(--accent);border-color:var(--accent);color:#fff}.btn-primary:hover{background:var(--accent-dark)}.btn-primary:active{background:color-mix(in srgb, var(--accent-dark) 88%, #000)}.btn-quiet{color:var(--ink-soft);border-color:var(--line);background:0 0}.btn-quiet:hover{color:var(--ink);background:#f2efe9}.field{flex-direction:column;gap:5px;margin-bottom:14px;display:flex}.field label{color:var(--ink-soft);letter-spacing:.02em;font-size:13px}.field .hint{color:var(--ink-faint)}.field input{font:inherit;border:1px solid var(--line-strong);border-radius:var(--radius);color:var(--ink);background:#fff;min-width:0;padding:9px 11px}.field input:focus{border-color:var(--accent)}.setup{width:100%;max-width:460px;margin:0 auto;padding:clamp(28px,7vh,80px) 20px 48px}.setup-card{background:var(--card);border:1px solid var(--line);border-radius:calc(var(--radius) * 2);padding:26px 26px 20px}.setup-title{letter-spacing:-.01em;margin:0;font-size:22px;font-weight:600}.setup-sub{color:var(--ink-soft);text-wrap:pretty;margin:6px 0 0;font-size:14px;line-height:1.5}.setup-form{border-top:1px solid var(--line);margin-top:20px;padding-top:20px}.date-range{gap:12px;display:flex}.date-range .field{flex:1 1 0;min-width:0;margin-bottom:0}.setup .field input{min-height:44px}.setup-length{color:var(--ink-soft);margin:12px 0 0;font-size:13px}.setup-length:empty{display:none}.presets{gap:8px;margin-top:14px;display:flex}.chip{min-height:38px;font:inherit;white-space:nowrap;background:var(--card);color:var(--ink-soft);border:1px solid var(--line-strong);cursor:pointer;border-radius:999px;flex:1 1 0;padding:4px 8px;font-size:13px}.chip:hover{color:var(--ink);background:#f2efe9}.chip:active{background:#e7e2d9}.chip.is-current{background:var(--accent-soft);border-color:var(--accent);color:var(--accent)}.suggest-btn{width:100%;font:inherit;text-align:left;background:var(--accent-soft);color:var(--accent-dark);border:1px solid color-mix(in srgb, var(--accent) 35%, var(--card));border-radius:var(--radius);cursor:pointer;margin-top:14px;padding:11px 32px 11px 12px;font-size:13px;display:block;position:relative}.suggest-btn:after{content:"→";position:absolute;top:50%;right:12px;transform:translateY(-50%)}.suggest-btn:hover{background:color-mix(in srgb, var(--accent-soft) 92%, var(--accent))}.setup-note{text-wrap:pretty;border-radius:var(--radius);border:1px solid;margin:14px 0 0;padding:10px 12px;font-size:13px;line-height:1.5}.setup-error{color:#a3352c;background:#fcf1ef;border-color:#eccfc9}.setup-warning{color:var(--ink-soft);background:var(--paper);border-color:var(--line)}.setup-actions{gap:10px;margin-top:22px;display:flex}.setup-actions .btn{justify-content:center;min-height:44px;padding:9px 18px}.setup-foot{border-top:1px solid var(--line);flex-direction:column;align-items:flex-start;gap:10px;margin-top:22px;padding-top:16px;display:flex}.setup-foot p{color:var(--ink-faint);margin:0;font-size:12px;line-height:1.5}.link-btn{font:inherit;color:var(--accent);cursor:pointer;background:0 0;border:0;align-items:center;gap:6px;padding:0;font-size:13px;display:inline-flex}.link-btn span{text-underline-offset:3px;text-decoration:underline}.link-btn .icon{width:14px;height:14px}.link-btn:hover{color:var(--accent-dark)}.planner{width:100%;max-width:1700px;margin:0 auto;padding:14px 22px 48px}.plan-header{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:10px 20px;margin-bottom:14px;display:flex}.plan-title{flex-wrap:wrap;align-items:center;gap:10px 18px;min-width:0;display:flex}@media screen{.plan-title h1{clip-path:inset(50%);white-space:nowrap;width:1px;height:1px;margin:0;position:absolute;overflow:hidden}}.plan-brand{border-right:1px solid var(--line);color:var(--ink-soft);white-space:nowrap;align-items:center;gap:6px;padding-right:18px;font-size:13px;font-weight:600;text-decoration:none;display:inline-flex}.plan-brand .icon{width:15px;height:15px;color:var(--accent)}.plan-brand:hover{color:var(--accent)}.plan-range{letter-spacing:-.01em;margin:0;font-size:21px;font-weight:600}.plan-range-row{flex-wrap:wrap;align-items:center;gap:14px;display:flex}.plan-controls{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.btn-icon{padding:8px}.btn-icon .icon{width:18px;height:18px}.menu.plan-more{display:none}.notice-bar{border:1px solid var(--line);border-radius:var(--radius);background:var(--card);flex-wrap:wrap;align-items:baseline;gap:10px 18px;margin:-4px 0 18px;padding:10px 12px;font-size:13px;display:flex}.notice-bar p{color:var(--ink-soft);flex:380px;margin:0}.notice-bar strong{color:var(--ink)}.notice-bar .link-btn{white-space:nowrap;margin-left:auto}.support-link{color:var(--accent);text-underline-offset:3px;white-space:nowrap;font-weight:600}.support-link:hover{color:var(--accent-dark)}.app-site-foot{border-top:1px solid var(--line);width:100%;margin-top:auto}.app-site-foot-inner{flex-wrap:wrap;align-items:center;gap:14px 28px;max-width:1700px;margin:0 auto;padding:26px 22px 34px;display:flex}.app-foot-brand{color:var(--ink);align-items:center;gap:7px;font-weight:600;text-decoration:none;display:inline-flex}.app-foot-brand .icon{color:var(--accent)}.app-site-foot nav{flex-wrap:wrap;gap:18px;display:flex}.app-site-foot nav a{color:var(--ink-soft);font-size:14px;text-decoration:none}.app-site-foot a:hover{color:var(--accent)}.app-site-foot p{color:var(--ink-soft);margin:0 0 0 auto;font-size:13px}body.print-support-open .app-foot-support{display:none}.menu{display:inline-flex;position:relative}.menu .caret{width:14px;height:14px;color:var(--ink-soft);flex:none;margin-left:-1px}.menu-list{z-index:20;background:var(--card);border:1px solid var(--line-strong);border-radius:var(--radius);min-width:178px;padding:4px;position:absolute;top:calc(100% + 4px);right:0;box-shadow:0 8px 22px #0000001f}.menu-list button{width:100%;font:inherit;text-align:left;border-radius:var(--radius);color:var(--ink);cursor:pointer;white-space:nowrap;background:0 0;border:0;padding:7px 10px;font-size:14px;display:block}.menu-list button:hover{background:#f2efe9}.menu-list button small{color:var(--ink-faint);margin-top:1px;font-size:12px;display:block}.menu-list button.menu-action{align-items:center;gap:9px;padding-left:9px;display:flex}.menu-rule{border:0;border-top:1px solid var(--line);margin:4px 0}.menu-list button[aria-checked]{padding-right:26px}.menu-list button[aria-checked=true]:before{content:"✓";color:var(--accent);position:absolute;right:9px}.menu-list button{position:relative}.menu-list.menu-floating{z-index:70;position:fixed}.weekdays{z-index:5;background:var(--paper);border-bottom:1px solid var(--line-strong);grid-template-columns:repeat(7,1fr);gap:0;padding:6px 0;display:grid;position:sticky;top:0}.weekdays span{letter-spacing:.01em;color:var(--ink-faint);padding-left:11px;font-size:12px}.weeks{flex-direction:column;gap:26px;margin-top:18px;display:flex}.week{break-inside:avoid;page-break-inside:avoid}.print-attribution{display:none}.week-label{letter-spacing:.01em;color:var(--ink-soft);margin:0 0 6px;font-size:12px}.week-grid{border-top:1px solid var(--line);border-left:1px solid var(--line);grid-template-columns:repeat(7,1fr);display:grid}.day{border-right:1px solid var(--line);border-bottom:1px solid var(--line);background:var(--card);min-height:118px;position:relative}.day-content{z-index:2;pointer-events:none;flex-direction:column;gap:4px;height:100%;padding:9px 10px 10px;display:flex;position:relative}.day-hit{z-index:1;cursor:pointer;background:0 0;border:0;border-radius:0;width:100%;height:100%;padding:0;position:absolute;inset:0}.day:has(.day-hit:focus-visible){box-shadow:inset 0 0 0 2px var(--focus)}.day-head{flex-direction:column;gap:0;display:flex}.day.filled .day-head{padding-right:30px}.dow{letter-spacing:.01em;font-size:11px;font-weight:600}.dnum{color:var(--ink-faint);font-size:11px}.day-head .abbr{display:none}.course-row{pointer-events:auto;isolation:isolate;cursor:grab;border-radius:6px;margin-top:2px;position:relative}.course-row+.course-row{margin-top:5px}body.is-dragging .course-row{cursor:grabbing}.course{color:var(--ink-faint);letter-spacing:.01em;font-size:11px;display:block}.meal{overflow-wrap:anywhere;font-size:15px;font-weight:500;line-height:1.3}.course-row:not(.is-dinner) .meal{color:var(--ink-soft);font-size:13px;font-weight:400}@media screen and (min-width:761px){.day{min-height:120px}.day-content{gap:5px;padding:10px}.day-head{margin-bottom:1px}.course-row,.course-row+.course-row{margin-top:0}.course-row{background:var(--card);border:1px solid color-mix(in srgb, var(--line) 70%, var(--card));padding:5px 24px 6px 8px}.meal{font-size:14px;line-height:1.3}.meal-more{top:1px;right:0}.course-row:has(.meal-more:focus-visible){box-shadow:0 0 0 2px var(--focus);border-color:#0000}}@media screen and (min-width:761px) and (max-width:1100px){.day-content{padding:7px 6px}.day.today .today-pill{top:7px;right:6px}.course-row{padding:4px 22px 5px 6px}.meal-more{right:-1px}}@media screen and (min-width:761px) and (hover:hover){.course-row:hover{box-shadow:0 0 0 2px var(--accent);border-color:#0000}}.meal-more{width:24px;height:24px;color:var(--ink-faint);cursor:pointer;opacity:0;background:0 0;border:0;border-radius:4px;justify-content:center;align-items:center;padding:0;display:inline-flex;position:absolute;top:-3px;right:-5px}.meal-more .icon{width:16px;height:16px}.course-row:hover .meal-more,.meal-more:focus-visible,.meal-more[aria-expanded=true]{opacity:1}.meal-more:hover{color:var(--ink);background:#1c1b1912}@media (pointer:coarse){.meal-more{opacity:1}}body.is-dragging .meal-more{visibility:hidden}.secondary{flex-direction:column;align-items:flex-start;gap:3px;margin-top:auto;display:flex}.note{color:var(--ink-soft);overflow-wrap:anywhere;font-size:12px}.recipe{pointer-events:auto;color:var(--accent);border-bottom:1px solid #0000;font-size:12px;text-decoration:none}.recipe:hover{border-bottom-color:var(--accent)}@media (hover:none){.day-hit:active{background:#1c1b190d}}.add-hint{color:var(--ink-faint);opacity:0;margin-top:2px;font-size:13px}.day:focus-within .add-hint{opacity:1}@media (hover:hover){.day-hit:hover+.day-content .add-hint{opacity:1}}.edit-hint{color:var(--ink-faint);opacity:0;font-size:11px;position:absolute;top:8px;right:9px}.day.filled:has(.day-hit:focus-visible) .edit-hint{opacity:1}@media (hover:hover){.day.filled .day-hit:hover~.edit-hint{opacity:1}}.empty-day,.add-row,.row-chevron,.planned-tag{display:none}.today-pill{letter-spacing:.02em;background:var(--secondary);color:#fff;white-space:nowrap;border-radius:999px;padding:2px 6px 3px;font-size:10px;font-weight:600;line-height:1}.day.today .today-pill{position:absolute;top:10px;right:10px}.day.today .edit-hint{display:none}.day.today .day-head{padding-right:44px}.note-icon{vertical-align:-1px;width:12px;height:12px;color:var(--ink-faint);margin-right:4px}.day.out{background:repeating-linear-gradient(-45deg,#f6f4f0,#f6f4f0 6px,#f2efe9 6px 12px)}.day.out .dow,.day.out .dnum{color:#6f6c67;font-weight:400}.day-qr{display:none}.drag-preview{background:var(--card);border:1px solid var(--line-strong);color:var(--ink);border-radius:6px;flex-direction:column;gap:2px;padding:9px 12px;font-size:15px;font-weight:500;line-height:1.3;display:flex;transform:rotate(2.5deg);box-shadow:0 6px 16px #1c1b192e}.drag-preview-title{overflow-wrap:anywhere}.drag-preview-detail{color:var(--ink-faint);font-size:12px;font-weight:400}.drop-slot{min-height:var(--drag-height,36px);background:color-mix(in srgb, var(--ink) 7%, transparent);color:var(--ink-faint);border-radius:6px;justify-content:center;align-items:center;font-size:12px;font-weight:500;display:flex}.course-row.will-swap{box-shadow:0 0 0 2px var(--accent);border-color:#0000}.course-row.will-swap:after{content:"Swaps";background:var(--accent);color:#fff;border-radius:999px;padding:2px 6px;font-size:11px;font-weight:600;line-height:1.2;position:absolute;top:2px;right:2px}.day.drop-target .add-hint,.day.drop-target .empty-day{display:none}@media (prefers-reduced-motion:no-preference){.drop-slot{animation:.14s ease-out slot-open}@keyframes slot-open{0%{opacity:0;transform:scaleY(.6)}}}.course-row.dragging,.lib-row.dragging{background:color-mix(in srgb, var(--ink) 7%, transparent);box-shadow:none;border-color:#0000}body.is-dragging .day:not(.out){background:var(--card)}body.is-dragging .day.drop-target:not(.out){background:color-mix(in srgb, var(--accent-soft) 65%, var(--card))}.day.drop-target:after{content:"";z-index:0;border:2px solid var(--accent);pointer-events:none;border-radius:7px;position:absolute;inset:3px}@media (prefers-reduced-motion:no-preference){.course-row.just-moved:before{content:"";z-index:-1;border-radius:inherit;background:color-mix(in srgb, var(--accent) 22%, transparent);pointer-events:none;animation:1s ease-out forwards meal-flash;position:absolute;inset:0}@keyframes meal-flash{to{opacity:0}}}.tabs{border-bottom:1px solid var(--line);margin:0 0 12px;display:flex}.tab{font:inherit;text-align:center;color:var(--ink-soft);cursor:pointer;background:0 0;border:0;border-bottom:2px solid #0000;flex:1 1 0;margin-bottom:-1px;padding:7px 4px 8px;font-size:13px}.tab:hover{color:var(--ink)}.tab[aria-selected=true]{color:var(--ink);border-bottom-color:var(--accent);font-weight:600}.tab-tick{vertical-align:-2px;width:13px;height:13px;color:var(--secondary);stroke-width:2.75px;margin-left:5px;display:none}.tab.has-meal .tab-tick{display:inline-block}.drawer{z-index:40;background:var(--card);border-left:1px solid var(--line-strong);flex-direction:column;width:300px;height:100dvh;display:flex;position:fixed;top:0;right:0}.drawer-head{border-bottom:1px solid var(--line);justify-content:space-between;align-items:center;gap:8px;padding:14px 12px 12px 16px;display:flex}.drawer-title{margin:0;font-size:14px;font-weight:600}.drawer-body{padding:12px 16px calc(18px + env(safe-area-inset-bottom,0px));overscroll-behavior:contain;flex:auto;overflow-y:auto}.drawer-body input[type=search]{font:inherit;border:1px solid var(--line-strong);border-radius:var(--radius);width:100%;color:var(--ink);background:#fff;padding:7px 9px;font-size:14px}.drawer-hint{color:var(--ink-faint);margin:14px 0 0;font-size:12px}.hint-touch{display:none}@media (pointer:coarse){.hint-pointer{display:none}.hint-touch{display:inline}}.icon-btn{font:inherit;color:var(--ink-soft);cursor:pointer;border-radius:var(--radius);background:0 0;border:0;padding:2px 6px;font-size:20px;line-height:1}.icon-btn:hover{color:var(--ink);background:#f2efe9}body.library-open{padding-right:300px}.library-list{margin:10px 0 0;padding:0;list-style:none}.lib-row{border-bottom:1px solid var(--line);cursor:grab;border-radius:6px;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:8px;margin:0 -6px;padding:0 6px;display:grid}@media (hover:hover){.lib-row:hover{box-shadow:inset 0 0 0 2px var(--accent);border-bottom-color:#0000}}.lib-pick{min-width:0;font:inherit;text-align:left;color:var(--ink);cursor:inherit;background:0 0;border:0;flex:auto;padding:8px 2px;font-size:14px}.lib-pick:hover{color:var(--accent)}.lib-meal{overflow-wrap:anywhere}.lib-site{color:var(--accent);white-space:nowrap;flex:none;font-size:12px;text-decoration:none}.lib-site:hover{text-decoration:underline}.lib-actions{align-items:center;gap:6px;display:flex}.lib-edit{border-radius:var(--radius);color:var(--ink-faint);cursor:pointer;background:0 0;border:0;align-items:center;padding:6px;display:inline-flex}.lib-edit .icon{width:14px;height:14px}.lib-edit:hover,.lib-edit:focus-visible{color:var(--ink);background:#f2efe9}@media (pointer:coarse){.lib-edit{padding:11px 10px}.lib-edit .icon{width:16px;height:16px}}.place-bar{left:50%;bottom:calc(20px + env(safe-area-inset-bottom,0px));z-index:60;background:var(--ink);color:#fff;border-radius:999px;align-items:center;gap:12px;padding:10px 12px 10px 16px;font-size:14px;display:flex;position:fixed;transform:translate(-50%);box-shadow:0 6px 20px #00000040}.place-bar .btn-quiet{color:#fff;border-color:#fff6;padding:4px 10px}.place-bar .btn-quiet:hover{color:#fff;background:#ffffff24}body[data-placing=on] .day:not(.out){background:var(--accent-soft)}body[data-placing=on] .day:not(.out):hover{background:color-mix(in srgb, var(--accent-soft) 92%, var(--accent))}body[data-placing=on] .day-hit{cursor:copy}body[data-placing=on] .day-hit:active{background:color-mix(in srgb, var(--accent) 14%, transparent);box-shadow:inset 0 0 0 2px var(--accent)}.day.just-placed{background:color-mix(in srgb, var(--accent-soft) 70%, var(--accent) 8%)}@media (prefers-reduced-motion:no-preference){.day.just-placed{animation:1.4s ease-out forwards day-landed}@keyframes day-landed{0%{background:color-mix(in srgb, var(--accent) 22%, transparent)}to{background:var(--card)}}}.visually-hidden{clip-path:inset(50%);white-space:nowrap;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.suggest-anchor{flex-direction:column;display:flex;position:relative}.suggestions{z-index:30;background:var(--card);border:1px solid var(--line-strong);border-radius:var(--radius);max-height:214px;margin:0;padding:4px;list-style:none;position:absolute;top:calc(100% + 4px);left:0;right:0;overflow-y:auto;box-shadow:0 8px 22px #0000001f}.suggestions li{border-radius:var(--radius);cursor:pointer;justify-content:space-between;align-items:baseline;gap:10px;padding:7px 9px;font-size:14px;display:flex}.suggestions li[aria-selected=true],.suggestions li:hover{background:var(--accent-soft)}.sug-meal{overflow-wrap:anywhere}.sug-site{color:var(--ink-faint);white-space:nowrap;font-size:12px}.field-note{color:var(--ink-faint);margin:2px 0 0;font-size:12px}.dialog{border:1px solid var(--line-strong);overscroll-behavior:contain;background:var(--card);width:min(370px,100vw - 32px);max-height:calc(100dvh - 32px);color:var(--ink);border-radius:5px;padding:14px 16px;overflow-y:auto;box-shadow:0 12px 34px #00000029}.dialog::backdrop{background:#1c1b1947}.dialog-title{margin:0 0 12px;font-size:15px;font-weight:600}.dialog .field{margin-bottom:10px}.dialog .field-toggle{width:-moz-fit-content;width:fit-content;margin:0 0 12px;display:flex}.dialog-title+.field-toggle{margin:-4px 0 14px}.form-rule{border:0;border-top:1px solid var(--line);margin:2px 0 10px}.dialog-actions{align-items:center;gap:8px;margin-top:14px;display:flex}.dialog-actions #f-remove,.dialog-actions #lib-edit-remove{margin-left:auto}.form-error{color:#a3352c;margin:7px 0 0}.dialog-onboarding{width:min(500px,100vw - 32px);padding:24px 26px 22px}.onboarding-title{letter-spacing:-.02em;margin:0 0 8px;font-size:22px;line-height:1.2}.onboarding-copy{color:var(--ink-soft);margin:0 0 20px;font-size:14px;line-height:1.5}.onboarding-add{flex-direction:column;align-items:flex-start;gap:11px;display:flex}.onboarding-add .field{align-self:stretch;margin:0}.onboarding-add .btn{min-height:40px}.onboarding-add .form-error{margin:0}.onboarding-actions{margin-top:26px}.onboarding-meals{border-top:1px solid var(--line);margin:18px 0 0;padding:0;list-style:none}.onboarding-meals:empty{display:none}.onboarding-meals li{border-bottom:1px solid var(--line);align-items:center;gap:12px;padding:9px 2px;display:flex}.onboarding-meals li>span{overflow-wrap:anywhere;flex:auto;min-width:0}.onboarding-meals .onboarding-site{color:var(--ink-faint);white-space:nowrap;flex:none;font-size:12px}.onboarding-meals .link-btn{color:var(--ink-faint);flex:none}.library-toast{left:50%;bottom:calc(20px + env(safe-area-inset-bottom,0px));z-index:80;color:#fff;background:var(--ink);border-radius:10px;align-items:center;gap:9px;width:max-content;max-width:calc(100vw - 28px);padding:10px 16px 10px 12px;font-size:14px;display:flex;position:fixed;transform:translate(-50%);box-shadow:0 6px 20px #00000038}.library-toast[hidden]{display:none}.toast-icon{color:#a9c79a;stroke-width:2.5px;width:18px;height:18px}.toast-text{overflow-wrap:anywhere;flex-direction:column;gap:1px;min-width:0;display:flex}.toast-text strong{font-weight:600}.toast-text small{color:#ffffffb8;font-size:12px}.sync-status{color:var(--ink-faint);white-space:nowrap;font-size:12px}.sync-status[data-status=offline]{color:#a3352c}.dialog-share{width:min(420px,100vw - 32px)}.share-copy{color:var(--ink-soft);text-wrap:pretty;margin:0 0 12px;font-size:14px;line-height:1.55}.share-warn{color:var(--ink-soft);background:var(--paper);border:1px solid var(--line);border-radius:var(--radius);text-wrap:pretty;margin:0;padding:10px 12px;font-size:13px;line-height:1.5}.share-link-row{align-items:stretch;gap:8px;display:flex}.share-link-row input{flex:auto;min-width:0;font-size:13px}.share-link-row .btn{white-space:nowrap;flex:none}.share-qr{border:1px solid var(--line);border-radius:var(--radius);background:#fff;width:168px;margin:6px auto 8px;padding:8px}.share-qr svg{width:100%;height:auto;display:block}.dialog-share .field-note{text-align:center}.dialog-actions #share-stop{margin-left:auto}.library-fab{display:none}@keyframes fab-in{0%{opacity:0;transform:translateY(8px)}}@media screen and (max-width:480px){.setup{padding:24px 14px 40px;padding-left:max(14px, env(safe-area-inset-left));padding-right:max(14px, env(safe-area-inset-right))}.setup-card{border-radius:var(--radius);padding:22px 18px 18px}.date-range,.setup-actions{flex-direction:column}.setup-actions .btn{width:100%}.dialog-onboarding{padding:21px 18px 18px}.onboarding-add{align-items:stretch}.onboarding-add .btn{justify-content:center}.onboarding-actions .btn{justify-content:center;width:100%}.library-toast{left:10px;right:10px;bottom:calc(10px + env(safe-area-inset-bottom,0px));width:auto;max-width:none;transform:none}}@media screen and (max-width:900px){body.library-open{padding-right:0}:root{--sheet-h:min(62dvh, 460px)}body.library-open .planner{padding-bottom:calc(var(--sheet-h) + 24px)}.drawer{width:auto;height:var(--sheet-h);border-left:0;border-top:1px solid var(--line-strong);border-radius:10px 10px 0 0;transition:transform .18s;inset:auto 0 0;box-shadow:0 -8px 26px #00000024}body[data-placing=on] .drawer,body[data-drag=library] .drawer{transform:translateY(100%)}.place-bar{border-radius:8px;bottom:12px;left:12px;right:12px;transform:none}body.library-open .library-toast{bottom:calc(var(--sheet-h) + 10px)}}@media (prefers-reduced-motion:reduce){.drawer{transition:none}}@media screen and (max-width:760px){.plan-header{margin-bottom:14px;display:block;position:relative}.plan-title{display:block}.plan-brand{border-right:0;min-height:40px;margin-right:52px;padding-right:0}.plan-range{font-size:21px}.plan-range-row{flex-wrap:nowrap;gap:8px;margin-bottom:12px}.plan-range-row .plan-range{flex:auto;min-width:0}.menu.plan-more{display:inline-flex;position:absolute;top:0;right:0}#btn-change-dates,.menu-backup,#btn-clear{display:none}.plan-controls{flex-wrap:nowrap;justify-content:flex-end}#btn-print{background:var(--accent);border-color:var(--accent);color:#fff}#btn-print:hover{background:var(--accent-dark)}#btn-print .caret{color:#fffc}.planner{padding:14px 10px 40px;padding-left:max(10px, env(safe-area-inset-left));padding-right:max(10px, env(safe-area-inset-right))}.app-site-foot-inner{padding:24px 10px 84px;padding-left:max(10px, env(safe-area-inset-left));padding-right:max(10px, env(safe-area-inset-right))}.app-site-foot p{width:100%;margin-left:0}.weekdays{display:none}.week-label{margin-bottom:9px}.week-grid{border:0;flex-direction:column;grid-template-columns:1fr;gap:10px;display:flex}.day{border:1px solid var(--line);border-radius:var(--radius);min-height:0}.day.out{display:none}.day{--day-pad:12px;--row-line:color-mix(in srgb, var(--line) 50%, var(--card))}.day-content{padding:0 var(--day-pad);flex-direction:column;align-items:stretch;gap:0}.day-head .full{display:none}.day-head .abbr{display:inline}.edit-hint,.add-hint{display:none}.day-head{width:auto;margin:0 calc(-1 * var(--day-pad));padding:10px var(--day-pad);flex-direction:row;align-items:baseline;gap:8px}.dow{font-size:14px;font-weight:600}.dnum{color:var(--ink-faint);white-space:nowrap;font-size:14px}.day.filled .day-head,.day.today .day-head{padding-right:var(--day-pad)}.day.today .today-pill{align-self:center;margin-left:auto;position:static}.planned-tag{background:var(--secondary-soft);color:var(--secondary-dark);white-space:nowrap;border-radius:999px;align-self:center;align-items:center;gap:4px;margin-left:auto;padding:3px 8px 3px 6px;font-size:12px;font-weight:500;line-height:1;display:inline-flex}.planned-tag .icon{stroke-width:2.5px;width:13px;height:13px}.day.today .planned-tag~.today-pill{margin-left:0}.secondary{border-top:1px solid var(--row-line);margin:0;padding:9px 0 10px}.secondary:empty{display:none}.note{gap:8px;font-size:13px;display:flex}.note-icon{width:15px;height:15px;margin:1px 0 0}.course-row{border-top:1px solid var(--row-line);flex-wrap:wrap;align-items:baseline;gap:4px 10px;min-width:0;margin-top:0;padding:11px 0;display:flex}.course-row+.course-row{margin-top:0}.course-row:hover{background:0 0}.course{order:3;margin-left:auto;font-size:12px;display:inline}.recipe{order:2}.row-chevron{color:var(--ink-faint);order:4;align-self:center;margin-left:auto;display:block}.course~.row-chevron{margin-left:0}.meal-more{opacity:1;order:5;align-self:center;width:36px;height:36px;margin:-8px -8px -8px -4px;position:static}.course-row{border-radius:0}.course-row:active,.course-row.dragging,.course-row.will-swap,.course-row.just-moved{border-top-color:#0000;border-radius:6px}.course-row:active{background:#1c1b190d;box-shadow:0 0 0 6px #1c1b190d}.course-row.dragging{box-shadow:0 0 0 6px color-mix(in srgb, var(--ink) 7%, transparent)}.course-row.will-swap{background:color-mix(in srgb, var(--accent) 7%, var(--card));box-shadow:0 0 0 4px color-mix(in srgb, var(--accent) 7%, var(--card)), 0 0 0 6px var(--accent)}.course-row.will-swap:after{order:2;align-self:center;position:static}.course-row.just-moved:before{inset:0 -6px}.drop-slot{min-height:var(--drag-height,44px);margin:8px 0}.meal,.course-row:not(.is-dinner) .meal{min-width:0;color:var(--ink);flex:1 1 0;order:1;margin-top:0;font-size:16px;font-weight:500}.add-row{pointer-events:auto;border-top:1px solid var(--row-line);color:var(--ink-soft);cursor:pointer;align-items:center;gap:10px;padding:10px 0;font-size:14px;display:flex}.add-row .icon{width:18px;height:18px;color:var(--secondary)}.empty-day{text-align:center;flex-direction:column;align-items:center;gap:6px;padding:2px 0 12px;display:flex}.empty-day-icon{width:26px;height:26px;color:var(--line-strong)}.empty-day-title{color:var(--ink-soft);margin:0;font-size:14px}.empty-day-btn{background:var(--accent-soft);color:var(--accent);border-radius:6px;justify-content:center;align-self:stretch;align-items:center;gap:7px;margin-top:4px;padding:10px 12px;font-size:14px;font-weight:500;display:flex}.day-hit:active+.day-content .empty-day-btn{background:color-mix(in srgb, var(--accent-soft) 85%, var(--accent))}.library-fab:not([hidden]){right:max(12px, env(safe-area-inset-right));bottom:calc(14px + env(safe-area-inset-bottom,0px));z-index:30;min-height:48px;font:inherit;color:#fff;background:var(--accent);cursor:pointer;border:0;border-radius:999px;align-items:center;gap:8px;padding:0 18px 0 15px;font-size:15px;font-weight:500;animation:.16s ease-out fab-in;display:inline-flex;position:fixed;box-shadow:0 6px 18px #00000038}.library-fab .icon{width:18px;height:18px}.library-fab:active{background:var(--accent-dark)}body.library-open .library-fab,body[data-placing=on] .library-fab,body.is-dragging .library-fab{display:none}}@media (prefers-reduced-motion:reduce){.library-fab{animation:none!important}}@media (pointer:coarse){.field input,.drawer-body input[type=search],.share-link-row input{font-size:16px}.btn,.chip,.tab,.menu-list button,.icon-btn,.lib-pick{min-height:44px}.add-hint{opacity:1}.recipe{margin:-9px -3px;padding:9px 3px}.menu-list{z-index:70;min-width:0;padding:6px 8px calc(8px + env(safe-area-inset-bottom,0px));border-width:1px 0 0;border-radius:14px 14px 0 0;position:fixed;inset:auto 0 0;box-shadow:0 -10px 30px #0000002e}.menu-list button{padding:12px 14px;font-size:16px}.menu-list button[aria-checked]{padding-right:34px}.menu-list button[aria-checked=true]:before{right:14px}body.menu-open:after{content:"";z-index:65;background:#1c1b1947;position:fixed;inset:0}}@media print{@page{size:A4 landscape;margin:9mm}:root{--card:#fff;--line:#999}body{background:#fff;font-size:9pt;display:block}.no-print,.day-hit,.add-hint,.edit-hint,.recipe,.today-pill,.note-icon,.meal-more,.drop-slot,.drawer,.place-bar{display:none!important}body.library-open{padding-right:0}.planner{max-width:none;padding:0}.weeks{margin-top:0;display:block}.day,.week-label,.plan-header{break-inside:avoid;page-break-inside:avoid}.week-label{break-after:avoid;page-break-after:avoid}.plan-header{border-bottom:1px solid #333;flex-wrap:nowrap;align-items:baseline;gap:3mm;margin-bottom:2.5mm;padding-bottom:1.2mm;display:flex}.plan-title{align-items:baseline;gap:3mm;min-width:0;display:flex}.plan-title h1{color:#444;margin:0;font-size:7.5pt}.plan-range-row{flex-wrap:nowrap;gap:0}.plan-range{font-size:11pt}.week+.week{margin-top:2mm}.week-label{color:#444;letter-spacing:0;margin-bottom:2px;font-size:8pt}.week-grid{border-color:#999}.day{-webkit-print-color-adjust:exact;-moz-print-color-adjust:exact;print-color-adjust:exact;background:#fff;border-color:#999;min-height:20mm}.day.out{background:#fafafa}.day.out .dow,.day.out .dnum{color:#737373}.day-content{gap:2px;padding:4px 5px 5px}.day-qr{width:10mm;margin:2px 0 0;display:block}.day-qr svg{width:100%;height:auto;display:block}[data-qr=on][data-print-mode=flow] .day{min-height:26mm}.dow,.dnum{white-space:nowrap}.dow{font-size:7.5pt}.dnum{color:#555;font-size:7.5pt}.meal{margin-top:0;font-size:9pt;font-weight:600;line-height:1.25}.course{color:#555;margin-right:3px;font-size:7pt;display:inline}.course-row .meal{display:inline}.course-row+.course-row{margin-top:2px}.course-row:not(.is-dinner) .meal{color:#222;font-size:8pt;font-weight:500}.day-qr{margin-top:2px}.note{color:#333;font-size:7.5pt}[data-print-mode=week] .week{break-after:page;page-break-after:always}[data-print-mode=week] .week:last-child{break-after:auto;page-break-after:auto}[data-print-mode=week] .week-grid{display:block}[data-print-mode=week] .week-label{color:#222;margin-bottom:3mm;font-size:12pt;font-weight:600}[data-print-mode=week] .day{min-height:21.5mm}[data-print-mode=week] .day-content{flex-flow:wrap;align-items:baseline;gap:1mm 5mm;padding:2mm 4mm}[data-print-mode=week] .day-head{flex-direction:row;flex:0 0 50mm;align-items:baseline;gap:2mm}[data-print-mode=week] .course-row{flex:1 1 0;align-items:baseline;gap:3mm;min-width:0;margin-top:0;display:flex}[data-print-mode=week] .course-row.is-dinner{flex:2 1 0}[data-print-mode=week] .secondary{flex:1 0 100%;margin:0 0 0 55mm}[data-print-mode=week] .day-qr{width:12mm;margin:0 0 0 auto}[data-print-mode=week] .dow{font-size:9.5pt}[data-print-mode=week] .dnum{font-size:8pt}[data-print-mode=week] .meal{font-size:11.5pt}[data-print-mode=week] .course{font-size:8pt}[data-print-mode=week] .course-row:not(.is-dinner) .meal{font-size:9.5pt}[data-print-mode=week] .note{font-size:8pt;line-height:1.2}.secondary{margin-top:4px}[data-print-mode=weeks4] .weeks>.week:nth-child(4n+1):not(:first-child){break-before:page;page-break-before:always}[data-print-mode=weeks4] .day-qr{display:none}[data-print-mode=weeks4] .day{min-height:31mm}[data-print-mode=weeks4] .day-content{gap:1px;padding:2px 3px 3px}[data-print-mode=weeks4] .dow,[data-print-mode=weeks4] .dnum{font-size:7pt}[data-print-mode=weeks4] .meal{font-size:8.5pt;line-height:1.15}[data-print-mode=weeks4] .course-row:not(.is-dinner) .meal{font-size:7.5pt}[data-print-mode=weeks4] .course-row+.course-row{margin-top:1px}[data-print-mode=weeks4] .note{font-size:6.5pt;line-height:1.15}[data-print-mode=weeks4] .secondary{margin-top:1px}.print-attribution{color:#555;justify-content:flex-end;align-items:center;gap:2.5mm;padding-top:2mm;font-size:8pt;display:flex}.print-attribution strong{color:#222}.print-attribution-qr{width:10mm;display:block}.print-attribution-qr svg{width:100%;height:auto;display:block}.dialog{display:none!important}}
