:root{--brand:#ff7a1a;--brand-strong:#f2620c;--brand-deep:#c2410c;--brand-soft:#ffe6cf;--brand-softer:#fff3e6;--accent:#ffb020;--bg:#fff8f0;--surface:#fff;--surface-2:#fff6ec;--ink:#2b1d14;--ink-2:#6b5a4e;--ink-3:#a08f82;--line:#f1e2d3;--line-strong:#e6d2bf;--fresh:#23894d;--fresh-bg:#e2f5e9;--warn:#b86e00;--warn-bg:#ffefc7;--expired:#cf3324;--expired-bg:#fde3df;--fridge:#2f8fd3;--freezer:#5b6fe0;--room:#d98a1c;--radius:1rem;--radius-sm:.7rem;--shadow:0 1px 2px #783c0a0f, 0 6px 18px #783c0a12;--font-scale:1;--tabbar-h:4.1rem;--font-system:-apple-system, BlinkMacSystemFont, "Apple SD Gothic Neo", "Malgun Gothic", "Noto Sans KR", system-ui, sans-serif;--font-body:"NanumSquareRound", var(--font-system);--font-display:"Jua", var(--font-body);--display-weight:400}:root[data-font=clean]{--font-body:"Pretendard Variable", Pretendard, var(--font-system);--font-display:var(--font-body);--display-weight:800}:root[data-font=system]{--font-body:var(--font-system);--font-display:var(--font-body);--display-weight:800}*{box-sizing:border-box}html{font-size:calc(16px * var(--font-scale));-webkit-text-size-adjust:100%}body{background:var(--bg);color:var(--ink);font-family:var(--font-body);-webkit-font-smoothing:antialiased;-webkit-tap-highlight-color:transparent;overscroll-behavior-y:none;margin:0;font-size:1rem;line-height:1.5}h1,h2,h3,p{margin:0}button,input,select,textarea{font:inherit;color:inherit}button{cursor:pointer;background:0 0;border:0;padding:0}a{color:var(--brand-deep)}:focus-visible{outline:2px solid var(--brand);outline-offset:2px}.emoji{font-family:Apple Color Emoji,Segoe UI Emoji,Noto Color Emoji,sans-serif}input[type=search]::-webkit-search-cancel-button{display:none}.app{min-height:100dvh}html:not(.app-ready) .app{opacity:0}html.app-entering .app{animation:.5s both app-fade}html.app-entering .page>:not(.fab){animation:.55s cubic-bezier(.22,1,.36,1) both app-rise}@keyframes app-fade{0%{opacity:0}}@keyframes app-rise{0%{transform:translateY(14px)}}@media (prefers-reduced-motion:reduce){html.app-entering .app,html.app-entering .page>*{animation:none}}.sidebar{display:none}.topbar{z-index:20;padding:calc(.55rem + env(safe-area-inset-top)) 1rem .55rem;background:color-mix(in srgb, var(--bg) 92%, transparent);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);align-items:center;gap:.6rem;display:flex;position:sticky;top:0}.topbar img{width:2rem;height:2rem}.brand-name{font-family:var(--font-display);font-weight:var(--display-weight);color:var(--brand-deep);font-size:1.3rem;line-height:1.2}.brand-sub{color:var(--ink-3);font-size:.72rem;font-weight:600}.grow{flex:1;min-width:0}.main{padding-bottom:calc(var(--tabbar-h) + env(safe-area-inset-bottom) + 1.5rem)}.page{max-width:68rem;margin:0 auto;padding:.5rem 1rem 1rem}.tabbar{z-index:30;height:calc(var(--tabbar-h) + env(safe-area-inset-bottom));padding-bottom:env(safe-area-inset-bottom);background:var(--surface);border-top:1px solid var(--line);display:flex;position:fixed;bottom:0;left:0;right:0;box-shadow:0 -4px 16px #783c0a0f}.tabbar a{color:var(--ink-3);flex-direction:column;flex:1;justify-content:center;align-items:center;gap:.15rem;font-size:.74rem;font-weight:700;text-decoration:none;display:flex}.tabbar a svg{width:1.5rem;height:1.5rem}.tabbar a.active{color:var(--brand-strong)}.tabbar a.active .tab-ico{background:var(--brand-soft)}.tab-ico{border-radius:999px;place-items:center;width:3.4rem;height:1.9rem;transition:background .15s;display:grid}@media (width>=900px){.app{display:flex}.topbar,.tabbar{display:none}.sidebar{background:var(--surface);border-right:1px solid var(--line);flex-direction:column;flex:none;gap:.3rem;width:14.5rem;height:100dvh;padding:1.2rem .9rem;display:flex;position:sticky;top:0}.sidebar-brand{align-items:center;gap:.6rem;padding:0 .5rem 1rem;display:flex}.sidebar-brand img{width:2.6rem;height:2.6rem}.sidebar a.nav{border-radius:var(--radius-sm);color:var(--ink-2);align-items:center;gap:.7rem;padding:.7rem .8rem;font-weight:700;text-decoration:none;display:flex}.sidebar a.nav svg{width:1.3rem;height:1.3rem}.sidebar a.nav:hover{background:var(--surface-2)}.sidebar a.nav.active{background:var(--brand-soft);color:var(--brand-deep)}.sidebar-mascot{text-align:center;color:var(--ink-3);margin-top:auto;font-size:.8rem;font-weight:600}.sidebar-mascot img{width:6.2rem;margin:0 auto .4rem;display:block}.main{flex:1;min-width:0;padding-bottom:2rem}.page{padding:1.5rem 2rem}}.page-head{flex-wrap:wrap;align-items:center;gap:.6rem;margin-bottom:.9rem;display:flex}.page-title{font-family:var(--font-display);font-size:1.6rem;font-weight:var(--display-weight);line-height:1.25}.section-title{align-items:center;gap:.4rem;margin:1.3rem 0 .6rem;font-size:1.02rem;font-weight:800;display:flex}.section-title .count{color:var(--ink-3);font-size:.88rem;font-weight:700}.muted{color:var(--ink-2)}.faint{color:var(--ink-3)}.small{font-size:.84rem}.tiny{font-size:.75rem}.row-flex{align-items:center;gap:.5rem;display:flex}.wrap{flex-wrap:wrap}.stack{flex-direction:column;gap:.75rem;display:flex}.card{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);padding:1rem}.btn{white-space:nowrap;background:var(--surface);border:1px solid var(--line-strong);min-height:2.75rem;color:var(--ink);border-radius:.8rem;justify-content:center;align-items:center;gap:.4rem;padding:0 1rem;font-size:.95rem;font-weight:700;text-decoration:none;transition:transform 80ms,background .15s;display:inline-flex}.btn:active{transform:scale(.97)}.btn svg{flex:none;width:1.1rem;height:1.1rem}.btn-primary{background:linear-gradient(180deg, #ff8424, var(--brand-strong));color:#fff;border-color:#0000;box-shadow:0 4px 12px #f2620c47}.btn-soft{background:var(--brand-soft);color:var(--brand-deep);border-color:#0000}.btn-ghost{color:var(--ink-2);background:0 0;border-color:#0000}.btn-danger{background:var(--expired-bg);color:var(--expired);border-color:#0000}.btn-sm{border-radius:.65rem;min-height:2.2rem;padding:0 .7rem;font-size:.85rem}.btn-block{width:100%}.btn:disabled{opacity:.45;cursor:not-allowed}.spin{animation:.9s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}.icon-btn{width:min(2.6rem,46px);height:min(2.6rem,46px);color:var(--ink-2);border-radius:.8rem;flex:none;place-items:center;display:inline-grid}.icon-btn:hover{background:var(--surface-2)}.icon-btn svg{width:1.25rem;height:1.25rem}.icon-btn.sm{width:min(2.1rem,40px);height:min(2.1rem,40px)}.icon-btn.brand{background:var(--brand);color:#fff}.input,.textarea{border:1px solid var(--line-strong);background:var(--surface);border-radius:.75rem;width:100%;min-height:2.75rem;padding:.55rem .8rem;font-size:1rem}.textarea{resize:vertical;min-height:4.5rem;line-height:1.5}.input:focus,.textarea:focus{border-color:var(--brand);box-shadow:0 0 0 3px var(--brand-soft);outline:none}.select-btn{border:1px solid var(--line-strong);background:var(--surface);text-align:left;border-radius:.75rem;align-items:center;gap:.4rem;width:100%;min-width:0;min-height:2.75rem;padding:.5rem .65rem .5rem .8rem;font-size:1rem;transition:border-color .15s,box-shadow .15s;display:flex}.select-btn:hover{border-color:var(--brand)}.select-btn:focus-visible,.select-btn.open{border-color:var(--brand);box-shadow:0 0 0 3px var(--brand-soft);outline:none}.select-btn:disabled{opacity:.45;cursor:not-allowed;border-color:var(--line-strong)}.select-btn svg{width:1.05rem;height:1.05rem;color:var(--ink-3);flex:none;transition:transform .18s}.select-btn.open>svg:last-child{color:var(--brand-strong);transform:rotate(180deg)}.select-btn .lead{color:var(--brand-strong)}.select-value{text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;overflow:hidden}.pop-scrim{z-index:300;position:fixed;inset:0}.popover{background:var(--surface);border:1px solid var(--line-strong);border-radius:1rem;flex-direction:column;animation:.14s pop-in;display:flex;position:fixed;overflow:hidden;box-shadow:0 2px 6px #783c0a14,0 16px 40px #783c0a38}.popover:focus{outline:none}.pop-title{font-family:var(--font-display);font-weight:var(--display-weight);padding:.95rem 1.1rem .4rem;font-size:1.1rem}.pop-scrim.compact{background:#2b1d146b;align-items:flex-end;animation:.16s fade-in;display:flex}.pop-scrim.compact .popover{width:100%;max-height:84dvh;padding-bottom:env(safe-area-inset-bottom);border:0;border-radius:1.3rem 1.3rem 0 0;animation:.2s slide-up;position:static}@keyframes pop-in{0%{opacity:0;transform:translateY(-4px)scale(.98)}}.opt-list{grid-template-columns:repeat(var(--cols,1), minmax(0, 1fr));overscroll-behavior:contain;gap:.15rem;padding:.35rem;display:grid;overflow-y:auto}.opt-group{color:var(--ink-3);grid-column:1/-1;padding:.55rem .6rem .2rem;font-size:.74rem;font-weight:800}.opt{text-align:left;border-radius:.65rem;align-items:center;gap:.5rem;min-width:0;min-height:2.5rem;padding:.35rem .7rem;font-weight:600;display:flex}.opt:hover,.opt:focus-visible{background:var(--brand-softer);outline:none}.opt[aria-selected=true]{background:var(--brand-soft);color:var(--brand-deep);font-weight:800}.opt-label{flex:1;min-width:0}.opt .hint{color:var(--ink-3);font-size:.76rem;font-weight:500;display:block}.opt .check{width:1.05rem;height:1.05rem;color:var(--brand-strong);flex:none}.opt-list.grid .opt{text-align:center;justify-content:center;padding:.35rem .2rem}.opt-list.grid .opt[aria-selected=true]{background:linear-gradient(180deg, #ff8f2e, var(--brand-strong));color:#fff}.cal-head{background:linear-gradient(135deg, #ff9a3c, var(--brand-strong));color:#fff;align-items:center;gap:.3rem;padding:.55rem .5rem .55rem .7rem;display:flex}.cal-head img{filter:drop-shadow(0 2px 3px #7828004d);width:2.1rem;height:auto;margin-bottom:-.2rem}.cal-title{font-family:var(--font-display);font-weight:var(--display-weight);color:#fff;border-radius:.6rem;padding:.15rem .5rem;font-size:1.2rem}.cal-nav{color:#fff;border-radius:50%;place-items:center;width:2.2rem;height:2.2rem;display:grid}.cal-nav svg{width:1.2rem;height:1.2rem}.cal-title:hover,.cal-nav:hover{background:#fff3}.cal-week,.cal-grid{grid-template-columns:repeat(7,minmax(0,1fr));justify-items:center;display:grid}.cal-week{color:var(--ink-3);padding:.6rem .6rem .1rem;font-size:.74rem;font-weight:800}.cal-grid{row-gap:.1rem;padding:.2rem .6rem .6rem}.cal-week .sun,.cal-day.sun{color:var(--expired)}.cal-week .sat,.cal-day.sat{color:var(--fridge)}.cal-day{aspect-ratio:1;font-variant-numeric:tabular-nums;border-radius:50%;place-items:center;width:min(100%,2.6rem);font-weight:700;display:grid;position:relative}.cal-day:hover,.cal-day:focus-visible{background:var(--brand-soft);outline:none}.cal-day.out{opacity:.38;font-weight:500}.cal-day.today:after{content:"";background:var(--brand);border-radius:50%;width:.3rem;height:.3rem;position:absolute;bottom:14%}.cal-day.on{background:linear-gradient(180deg, #ff8f2e, var(--brand-strong));color:#fff;opacity:1;box-shadow:0 3px 9px #f2620c61}.cal-day.on.today:after{background:#fff}.cal-day:disabled{opacity:.2;cursor:not-allowed;background:0 0}.cal-months{grid-template-columns:repeat(4,minmax(0,1fr));gap:.35rem;padding:.8rem .7rem;display:grid}.cal-month{border-radius:.75rem;min-height:2.7rem;font-weight:700}.cal-month:hover{background:var(--brand-soft)}.cal-month.on{background:linear-gradient(180deg, #ff8f2e, var(--brand-strong));color:#fff}.cal-foot{border-top:1px solid var(--line);background:var(--surface-2);flex-wrap:wrap;gap:.3rem;padding:.55rem .6rem .7rem;display:flex}.cal-foot .chip{min-height:1.95rem;padding:0 .65rem;font-size:.8rem}.field{flex-direction:column;gap:.3rem;min-width:0;display:flex}.field>span,.field-label{color:var(--ink-2);font-size:.82rem;font-weight:700}.field-hint{color:var(--ink-3);font-size:.78rem}.grid-2{grid-template-columns:1fr 1fr;gap:.7rem;display:grid}.grid-3{grid-template-columns:repeat(3,1fr);gap:.6rem;display:grid}.search{flex:1;min-width:10rem;position:relative}.search svg.lead{width:1.15rem;height:1.15rem;color:var(--ink-3);pointer-events:none;position:absolute;top:50%;left:.75rem;transform:translateY(-50%)}.search .input{background:var(--surface);border-radius:999px;padding-left:2.4rem;padding-right:2.4rem}.search .clear{position:absolute;top:50%;right:.3rem;transform:translateY(-50%)}.chips{scrollbar-width:none;gap:.4rem;padding:.15rem 0 .4rem;display:flex;overflow-x:auto}.chips::-webkit-scrollbar{display:none}.chips.wrap{overflow:visible}@media (width>=900px){.chips{flex-wrap:wrap;overflow:visible}}.chip{border:1px solid var(--line-strong);background:var(--surface);min-height:2.2rem;color:var(--ink-2);white-space:nowrap;border-radius:999px;flex:none;align-items:center;gap:.35rem;padding:0 .8rem;font-size:.88rem;font-weight:700;display:inline-flex}.chip svg{width:1.05rem;height:1.05rem}.chip .n{color:var(--ink-3);font-size:.76rem}.chip.on{background:var(--brand);border-color:var(--brand);color:#fff}.chip.on .n{color:#ffffffd9}.chip.dashed{color:var(--brand-deep);border-style:dashed}.seg{background:var(--brand-softer);border:1px solid var(--line);scrollbar-width:none;border-radius:.8rem;gap:.15rem;max-width:100%;padding:.2rem;display:inline-flex;overflow-x:auto}.seg::-webkit-scrollbar{display:none}.seg.block{display:flex}.seg.block button{flex:1}.seg button{min-height:2.15rem;color:var(--ink-2);white-space:nowrap;border-radius:.62rem;justify-content:center;align-items:center;gap:.3rem;padding:0 .7rem;font-size:.86rem;font-weight:700;display:inline-flex}.seg button svg{width:1.05rem;height:1.05rem}.seg button.on{background:var(--surface);color:var(--brand-deep);box-shadow:0 1px 3px #783c0a26}.stepper{border:1px solid var(--line-strong);background:var(--surface);border-radius:.8rem;align-items:center;display:inline-flex;overflow:hidden}.stepper button{width:min(2.6rem,46px);height:min(2.6rem,46px);color:var(--brand-deep);place-items:center;display:grid}.stepper button:active{background:var(--brand-soft)}.stepper button svg{width:1.1rem;height:1.1rem}.stepper .value{white-space:nowrap;text-align:center;font-variant-numeric:tabular-nums;min-width:3.8rem;padding:0 .2rem;font-weight:800}.badge{white-space:nowrap;background:var(--surface-2);color:var(--ink-2);border-radius:999px;align-items:center;gap:.2rem;padding:.1rem .5rem;font-size:.74rem;font-weight:800;display:inline-flex}.badge svg{width:.85rem;height:.85rem}.badge.fresh{background:var(--fresh-bg);color:var(--fresh)}.badge.warn{background:var(--warn-bg);color:var(--warn)}.badge.expired{background:var(--expired-bg);color:var(--expired)}.badge.brand{background:var(--brand-soft);color:var(--brand-deep)}.badge.fridge{background:color-mix(in srgb, var(--fridge) 14%, white);color:var(--fridge)}.badge.freezer{background:color-mix(in srgb, var(--freezer) 14%, white);color:var(--freezer)}.badge.room{background:color-mix(in srgb, var(--room) 16%, white);color:#9a5d08}.empty{text-align:center;color:var(--ink-2);flex-direction:column;align-items:center;gap:.5rem;padding:1.6rem 1rem;display:flex}.empty img{width:6.5rem;height:auto}.empty strong{color:var(--ink);font-size:1.02rem}.notice{border-radius:var(--radius-sm);background:var(--brand-softer);color:var(--ink-2);gap:.5rem;padding:.7rem .8rem;font-size:.84rem;display:flex}.notice svg{width:1.1rem;height:1.1rem;color:var(--brand-strong);flex:none;margin-top:.1rem}.notice.warn{background:var(--warn-bg);color:#7a4a00}.notice.warn svg{color:var(--warn)}.sheet-backdrop{z-index:100;background:#2b1d1473;justify-content:center;align-items:flex-end;animation:.18s fade-in;display:flex;position:fixed;inset:0}.sheet{background:var(--surface);border-radius:1.3rem 1.3rem 0 0;flex-direction:column;width:100%;max-width:36rem;max-height:94dvh;animation:.22s slide-up;display:flex;box-shadow:0 -10px 40px #2b1d1440}.sheet.wide{max-width:46rem}.sheet:focus{outline:none}.link-btn{color:var(--brand-deep);text-underline-offset:2px;font-weight:700;text-decoration:underline}.sheet-head{border-bottom:1px solid var(--line);align-items:center;gap:.5rem;padding:.8rem .6rem .8rem 1.1rem;display:flex}.sheet-head h2{text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;font-size:1.1rem;font-weight:800;overflow:hidden}.sheet-body{overscroll-behavior:contain;flex:1;padding:1rem 1.1rem;overflow-y:auto}.sheet-foot{padding:.75rem 1.1rem calc(.75rem + env(safe-area-inset-bottom));border-top:1px solid var(--line);gap:.5rem;display:flex}.sheet-foot .btn{flex:1}@media (width>=700px){.sheet-backdrop{align-items:center;padding:1.5rem}.sheet{border-radius:1.3rem;max-height:88dvh}.sheet-foot{padding-bottom:.75rem}}@keyframes fade-in{0%{opacity:0}}@keyframes slide-up{0%{opacity:0;transform:translateY(1.5rem)}}.toasts{left:0;right:0;top:calc(env(safe-area-inset-top) + .8rem);z-index:200;pointer-events:none;flex-direction:column;align-items:center;gap:.4rem;padding:0 1rem;display:flex;position:fixed}.toast{color:#fff;pointer-events:auto;background:#3a2a20;border-radius:.9rem;align-items:center;gap:.8rem;max-width:100%;padding:.65rem 1rem;font-size:.9rem;font-weight:600;animation:.2s drop-in;display:flex;box-shadow:0 8px 24px #2b1d144d}@keyframes drop-in{0%{opacity:0;transform:translateY(-1rem)}}.toast button{color:var(--accent);white-space:nowrap;font-weight:800}.ing-icon{--c:var(--ink-3);width:var(--s,2.6rem);height:var(--s,2.6rem);background:color-mix(in srgb, var(--c) 13%, white);border-radius:28%;flex:none;place-items:center;line-height:1;display:grid}.ing-icon .emoji{font-size:calc(var(--s,2.6rem) * .58)}.ing-icon .letters{font-size:calc(var(--s,2.6rem) * .34);color:color-mix(in srgb, var(--c) 82%, black);letter-spacing:-.04em;font-weight:800}.summary{grid-template-columns:repeat(3,1fr);gap:.5rem;margin-bottom:.8rem;display:grid}.summary button{border-radius:var(--radius-sm);text-align:left;border:2px solid #0000;flex-direction:column;align-items:flex-start;padding:.6rem .8rem;display:flex}.summary button b{font-variant-numeric:tabular-nums;font-size:1.4rem;font-weight:800;line-height:1.2}.summary button span{font-size:.8rem;font-weight:700}.summary .fresh{background:var(--fresh-bg);color:var(--fresh)}.summary .warn{background:var(--warn-bg);color:var(--warn)}.summary .expired{background:var(--expired-bg);color:var(--expired)}.summary button.on{border-color:currentColor}.box{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);margin-bottom:.9rem;overflow:hidden}.box-head{align-items:center;gap:.6rem;padding:.7rem .6rem .7rem .9rem;display:flex}.boxes{position:relative}.drag-handle{width:min(1.7rem,30px);height:2.4rem;color:var(--ink-3);cursor:grab;touch-action:none;border-radius:.5rem;flex:none;place-items:center;margin:0 -.25rem 0 -.45rem;display:grid}.drag-handle:hover{background:var(--surface-2);color:var(--ink-2)}.drag-handle svg{width:1.15rem;height:1.15rem}.boxes.sorting{-webkit-user-select:none;user-select:none}.boxes.sorting .box-body{display:none}.boxes.sorting .box{transition:transform .18s;position:relative}.boxes.sorting .box[data-dragging]{z-index:5;border-color:var(--brand);cursor:grabbing;transition:none;box-shadow:0 16px 36px #783c0a47}.boxes.sorting .drag-handle{cursor:grabbing}.box-placeholder{border:2px dashed var(--brand);border-radius:var(--radius);background:var(--brand-soft);color:var(--brand-deep);pointer-events:none;place-items:center;font-size:.85rem;font-weight:700;transition:top .18s;display:grid;position:absolute;left:0;right:0}.box-ico{color:#fff;border-radius:.75rem;flex:none;place-items:center;width:min(2.4rem,44px);height:min(2.4rem,44px);display:grid}.box-ico svg{width:1.3rem;height:1.3rem}.box-ico.fridge{background:var(--fridge)}.box-ico.freezer{background:var(--freezer)}.box-ico.room{background:var(--room)}.box-name{font-size:1.05rem;font-weight:800}.box-name,.box-head .tiny{white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.box-body{padding:0 .8rem .8rem}.box-empty{border:1.5px dashed var(--line-strong);border-radius:var(--radius-sm);text-align:center;color:var(--ink-3);width:100%;padding:.9rem;font-size:.88rem}.tiles{grid-template-columns:repeat(auto-fill,minmax(5.4rem,1fr));gap:.5rem;display:grid}.tiles.large{grid-template-columns:repeat(auto-fill,minmax(8.2rem,1fr))}.tile{border-radius:var(--radius-sm);background:var(--surface-2);text-align:center;border:1.5px solid #0000;flex-direction:column;align-items:center;gap:.25rem;min-width:0;padding:.7rem .3rem .5rem;display:flex;position:relative}.tile:hover{border-color:var(--line-strong)}.tile.warn{background:#fff8e3}.tile.expired{background:#fff0ee}.tile .name{text-overflow:ellipsis;white-space:nowrap;width:100%;font-size:.86rem;font-weight:700;overflow:hidden}.tile .qty{color:var(--ink-2);font-size:.76rem}.tile .dot{position:absolute;top:.4rem;right:.4rem}.tiles.large .tile{padding:1rem .5rem .7rem}.tiles.large .tile .name{font-size:.98rem}.rows{flex-direction:column;display:flex}.row{border-top:1px solid var(--line);text-align:left;align-items:center;gap:.7rem;width:100%;min-width:0;padding:.6rem .2rem;display:flex}.rows>.row:first-child{border-top:0}.row .title{text-overflow:ellipsis;white-space:nowrap;font-weight:700;overflow:hidden}.row .meta{color:var(--ink-2);overflow-wrap:anywhere;font-size:.8rem}.row .right{color:var(--ink-2);flex-direction:column;flex:none;align-items:flex-end;gap:.2rem;font-size:.82rem;display:flex}.pick-grid{grid-template-columns:repeat(auto-fill,minmax(4.7rem,1fr));gap:.4rem;display:grid}.pick{border-radius:var(--radius-sm);border:1.5px solid #0000;flex-direction:column;align-items:center;gap:.25rem;min-width:0;padding:.55rem .2rem .45rem;display:flex;position:relative}.pick:hover{background:var(--surface-2)}.pick.on{border-color:var(--brand);background:var(--brand-softer)}.pick span.name{text-align:center;text-overflow:ellipsis;white-space:nowrap;width:100%;font-size:.8rem;font-weight:700;overflow:hidden}.pick .mark{background:var(--brand);color:#fff;border-radius:50%;place-items:center;width:1.2rem;height:1.2rem;display:grid;position:absolute;top:.2rem;right:.2rem}.pick .mark svg{width:.8rem;height:.8rem}.pick .edit{width:1.5rem;height:1.5rem;color:var(--ink-3);opacity:0;border-radius:50%;place-items:center;display:grid;position:absolute;top:.1rem;left:.1rem}.pick:hover .edit,.pick .edit:focus-visible{opacity:1}.pick .edit svg{width:.85rem;height:.85rem}@media (hover:none){.pick .edit{display:none}}.recipe-grid{grid-template-columns:repeat(auto-fill,minmax(min(17rem,100%),1fr));gap:.7rem;display:grid}.recipe-card{border-radius:var(--radius);background:var(--surface);border:1px solid var(--line);box-shadow:var(--shadow);color:inherit;gap:.8rem;min-width:0;padding:.85rem;text-decoration:none;display:flex;position:relative}.recipe-card:hover{border-color:var(--brand)}.cat-ico{background:var(--brand-soft);width:min(3.2rem,58px);height:min(3.2rem,58px);color:var(--brand-deep);border-radius:.9rem;flex:none;place-items:center;display:grid}.cat-ico svg{width:1.7rem;height:1.7rem}.cat-ico.sm{border-radius:.6rem;width:2rem;height:2rem}.cat-ico.sm svg{width:1.15rem;height:1.15rem}.recipe-card .title{text-overflow:ellipsis;white-space:nowrap;padding-right:1.6rem;font-size:1.02rem;font-weight:800;overflow:hidden}.recipe-card .meta{color:var(--ink-2);flex-wrap:wrap;align-items:center;gap:.25rem .6rem;margin-top:.15rem;font-size:.8rem;display:flex}.recipe-card .meta span{align-items:center;gap:.2rem;display:inline-flex}.recipe-card .meta svg{width:.9rem;height:.9rem}.have{align-items:center;gap:.5rem;margin-top:.45rem;font-size:.78rem;font-weight:700;display:flex}.have .bar{background:var(--line);border-radius:999px;flex:1;height:.4rem;overflow:hidden}.have .bar i{background:var(--fresh);border-radius:999px;height:100%;display:block}.have.partial .bar i{background:var(--accent)}.have.all{color:var(--fresh)}.fav{width:2rem;height:2rem;color:var(--line-strong);place-items:center;display:grid;position:absolute;top:.45rem;right:.45rem}.fav svg{width:1.15rem;height:1.15rem}.fav.on{color:var(--accent)}.fav.on svg{fill:currentColor}.fab{right:1.1rem;bottom:calc(var(--tabbar-h) + env(safe-area-inset-bottom) + 1rem);z-index:25;border-radius:999px;min-height:3.2rem;padding:0 1.2rem;position:fixed;box-shadow:0 8px 22px #f2620c66}@media (width>=900px){.fab{display:none}}.only-desktop{display:none}@media (width>=900px){.only-desktop{display:inline-flex}}.detail-head{align-items:center;gap:.3rem;margin:0 -.4rem .4rem;display:flex}.hero{align-items:center;gap:.9rem;margin-bottom:.8rem;display:flex}.hero h1{font-family:var(--font-display);font-size:1.7rem;font-weight:var(--display-weight);line-height:1.25}.facts{flex-wrap:wrap;gap:.4rem;margin-top:.4rem;display:flex}.fact{background:var(--surface);border:1px solid var(--line);color:var(--ink-2);border-radius:999px;align-items:center;gap:.3rem;padding:.25rem .6rem;font-size:.82rem;font-weight:700;display:inline-flex}.fact svg{width:.95rem;height:.95rem;color:var(--brand-strong)}.detail-grid{grid-template-columns:minmax(0,1fr);gap:.9rem;display:grid}@media (width>=900px){.detail-grid{grid-template-columns:minmax(19rem,24rem) minmax(0,1fr);align-items:start}}.servings-bar{border-radius:var(--radius-sm);background:var(--brand-softer);flex-wrap:wrap;align-items:center;gap:.6rem;margin-bottom:.6rem;padding:.7rem .8rem;display:flex}.mult-row{grid-template-columns:repeat(4,minmax(0,1fr));gap:.3rem;width:100%;display:grid}.mult-row .chip{justify-content:center;padding:0 .2rem}.ing-row{border-top:1px solid var(--line);align-items:center;gap:.6rem;min-width:0;padding:.5rem 0;display:flex}.ing-row:first-child{border-top:0}.ing-row .nm{font-weight:700}.ing-row .amt{background:var(--surface-2);font-variant-numeric:tabular-nums;text-align:right;border-radius:.55rem;flex:none;margin-left:auto;padding:.25rem .55rem;font-weight:800}.ing-row .amt small{color:var(--ink-3);font-size:.7rem;font-weight:600;display:block}button.amt:hover{background:var(--brand-soft)}.stock-dot{background:var(--line-strong);border-radius:50%;flex:none;width:.6rem;height:.6rem}.stock-dot.ok{background:var(--fresh)}.stock-dot.short,.stock-dot.unknown{background:var(--accent)}.stock-dot.missing{background:var(--expired)}.step{border-top:1px solid var(--line);gap:.8rem;padding:.85rem 0;display:flex}.step:first-child{border-top:0}.step-no{background:var(--brand);color:#fff;border-radius:50%;flex:none;place-items:center;width:1.9rem;height:1.9rem;font-size:.9rem;font-weight:800;display:grid}.step-text{white-space:pre-wrap;word-break:break-word}.tags{flex-wrap:wrap;gap:.3rem;margin-bottom:.35rem;display:flex}.tag{background:var(--surface-2);color:var(--ink-2);white-space:nowrap;border-radius:.5rem;align-items:center;gap:.25rem;padding:.15rem .5rem;font-size:.78rem;font-weight:800;display:inline-flex}.tag svg{width:.9rem;height:.9rem}.tag.vessel{color:#235f95;background:#e8f1fb}.tag.move{color:#5a3fae;background:#efe9fb}.tag.heat-low{color:#9a6400;background:#fff1cf}.tag.heat-medium{color:#b4490a;background:#ffe0c2}.tag.heat-high{color:#b72a1c;background:#fdd5cf}.tag.time{color:#1f7a45;background:#e6f4ea}.use-chip{border:1px solid var(--line-strong);color:var(--ink-2);background:var(--surface);border-radius:999px;align-items:center;gap:.25rem;padding:.12rem .5rem;font-size:.78rem;font-weight:700;display:inline-flex}.use-chip b{color:var(--brand-deep)}.cost-total{flex-wrap:wrap;align-items:baseline;gap:.5rem;display:flex}.cost-total b{font-variant-numeric:tabular-nums;font-size:1.5rem;font-weight:800}.kv{border-top:1px dashed var(--line);justify-content:space-between;gap:.8rem;padding:.35rem 0;font-size:.9rem;display:flex}.kv:first-child{border-top:0}.kv>span:last-child:not(:only-child){font-variant-numeric:tabular-nums;white-space:nowrap;font-weight:700}.actions{grid-template-columns:repeat(3,1fr);gap:.5rem;display:grid}.actions .btn{white-space:normal;flex-direction:column;gap:.2rem;min-height:3.6rem;padding:.4rem .3rem;font-size:.82rem;line-height:1.2}.actions .btn svg{width:1.3rem;height:1.3rem}.check-row{border-top:1px solid var(--line);text-align:left;align-items:center;gap:.7rem;width:100%;padding:.65rem .2rem;display:flex}.check-row:first-child{border-top:0}.checkbox{border:2px solid var(--line-strong);color:#0000;border-radius:.5rem;flex:none;place-items:center;width:1.6rem;height:1.6rem;display:grid}.checkbox svg{width:1rem;height:1rem}.check-row.done .checkbox{background:var(--fresh);border-color:var(--fresh);color:#fff}.check-row.done .nm{color:var(--ink-3);text-decoration:line-through}.progress{background:var(--line);border-radius:999px;height:.5rem;overflow:hidden}.progress i{background:linear-gradient(90deg, var(--accent), var(--brand));border-radius:999px;height:100%;transition:width .25s;display:block}.edit-card{border:1px solid var(--line);border-radius:var(--radius-sm);background:var(--surface);padding:.7rem}.edit-ing{grid-template-columns:auto 1fr auto;align-items:center;gap:.5rem .6rem;display:grid}.edit-ing .controls{grid-column:1/-1;grid-template-columns:minmax(4rem,1fr) minmax(5rem,1fr) auto;gap:.4rem;display:grid}.edit-ing .note,.edit-ing .weight-hint{grid-column:1/-1}.weight-hint{color:var(--ink-2);background:var(--surface-2);text-align:left;border-radius:.5rem;justify-self:start;align-items:center;gap:.3rem;padding:.2rem .55rem;font-size:.78rem;font-weight:700;display:inline-flex}.weight-hint svg{flex:none;width:.9rem;height:.9rem}.weight-hint.unknown{background:var(--warn-bg);color:#7a4a00}@media (width>=700px){.edit-ing{grid-template-columns:auto minmax(6rem,1fr) minmax(16rem,2fr) auto}.edit-ing .controls{grid-column:auto}.edit-ing .note,.edit-ing .weight-hint{grid-column:2/4}}.step-edit-grid{grid-template-columns:1fr 6rem;gap:.6rem;margin-top:.6rem;display:grid}.step-edit-grid .heat-field{order:1;grid-column:1/-1}@media (width>=700px){.step-edit-grid{grid-template-columns:1.3fr 1.6fr .7fr}.step-edit-grid .heat-field{order:0;grid-column:auto}}.vessel-pick{grid-template-columns:1fr 4.2rem;gap:.3rem;display:grid}.sticky-save{bottom:calc(var(--tabbar-h) + env(safe-area-inset-bottom));z-index:15;background:color-mix(in srgb, var(--bg) 94%, transparent);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border-top:1px solid var(--line);gap:.5rem;margin:1rem -1rem 0;padding:.7rem 1rem;display:flex;position:sticky}.sticky-save .btn{flex:1}@media (width>=900px){.sticky-save{border-radius:var(--radius);border:1px solid var(--line);margin:1rem 0 0;bottom:0}}.bookmark{border-radius:var(--radius);background:var(--surface);border:1px solid var(--line);gap:.8rem;min-width:0;padding:.7rem;display:flex}.bookmark .thumb{aspect-ratio:16/9;object-fit:cover;background:var(--surface-2);width:7rem;color:var(--ink-3);border-radius:.6rem;flex:none;place-items:center;display:grid}.bookmark a.t{color:var(--ink);-webkit-line-clamp:2;-webkit-box-orient:vertical;font-weight:800;text-decoration:none;display:-webkit-box;overflow:hidden}.week-nav{align-items:center;gap:.3rem;max-width:100%;display:flex}.week-label{text-align:center;white-space:nowrap;flex:1;min-width:min(9.5rem,40vw);font-weight:800}.day{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);margin-bottom:.6rem;overflow:hidden}.day.today{border-color:var(--brand);box-shadow:0 0 0 2px var(--brand-soft)}.day.past{opacity:.7}.day-head{text-align:left;background:var(--surface-2);align-items:center;gap:.5rem;width:100%;padding:.6rem .5rem .6rem .9rem;display:flex}.day-head .d{white-space:nowrap;font-weight:800}.day-head .sun{color:var(--expired)}.day-head .sat{color:var(--fridge)}.day-slots{padding:.3rem .6rem .6rem}.slot{align-items:flex-start;gap:.5rem;padding:.35rem .2rem;display:flex}.slot-name{width:2.6rem;color:var(--ink-3);flex:none;padding-top:.4rem;font-size:.8rem;font-weight:800}.slot-meals{flex-wrap:wrap;flex:1;gap:.35rem;min-width:0;display:flex}.meal{background:var(--brand-soft);max-width:100%;min-height:2.1rem;color:var(--brand-deep);border-radius:.65rem;align-items:center;gap:.35rem;padding:0 .6rem;font-size:.86rem;font-weight:700;display:inline-flex}.meal span.t{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.meal.lack{background:var(--warn-bg);color:#7a4a00}.meal.done{background:var(--fresh-bg);color:var(--fresh)}.meal svg{flex:none;width:.95rem;height:.95rem}.slot-adds{flex-wrap:wrap;gap:.3rem;padding:.35rem .2rem 0;display:flex}.slot-add{border:1.5px dashed var(--line-strong);min-height:2rem;color:var(--ink-3);white-space:nowrap;border-radius:.65rem;flex:1;justify-content:center;align-items:center;gap:.15rem;padding:0 .5rem;font-size:.8rem;font-weight:700;display:inline-flex}.slot-add:hover{border-color:var(--brand);color:var(--brand-deep)}.slot-add svg{width:.9rem;height:.9rem}@media (width>=1100px){.week-grid{grid-template-columns:repeat(7,minmax(0,1fr));align-items:start;gap:.5rem;display:grid}.week-grid .day{margin:0}.week-grid .day-head{flex-wrap:wrap;gap:.25rem;padding:.5rem .6rem}.week-grid .day-head .grow{display:none}.week-grid .day-head .d{flex:1}.week-grid .day-head>svg{order:-1;margin-left:auto}.week-grid .day-head .d{order:-2}.week-grid .slot{flex-direction:column;gap:.15rem}.week-grid .slot-name{width:auto;padding-top:0}.week-grid .meal{width:100%}.week-grid .slot-add{flex-basis:40%}}.setting{border-top:1px solid var(--line);align-items:center;gap:.8rem;padding:.7rem 0;display:flex}.setting:first-of-type{border-top:0}.font-preview{border-radius:var(--radius-sm);background:var(--surface-2);margin-top:.6rem;padding:.8rem}.icon-grid{grid-template-columns:repeat(auto-fill,minmax(3rem,1fr));gap:.35rem;display:grid}.icon-grid button{aspect-ratio:1;color:var(--ink-2);background:var(--surface-2);border:1.5px solid #0000;border-radius:.7rem;place-items:center;display:grid}.icon-grid button svg{width:1.5rem;height:1.5rem}.icon-grid button.on{border-color:var(--brand);background:var(--brand-soft);color:var(--brand-deep)}.print-sheet{border-radius:var(--radius);max-width:50rem;box-shadow:var(--shadow);color:#1d1410;background:#fff;margin:0 auto;padding:2rem}.print-head{border-bottom:3px solid var(--brand);align-items:center;gap:1rem;margin-bottom:1.1rem;padding-bottom:.9rem;display:flex}.print-head img{width:3rem}.print-head h1{font-family:var(--font-display);font-size:1.8rem;font-weight:var(--display-weight)}.print-cols{grid-template-columns:15rem 1fr;gap:1.6rem;display:grid}@media (width<=640px){.print-cols{grid-template-columns:1fr}.print-sheet{padding:1.1rem}}.print-sheet h2{color:var(--brand-deep);margin-bottom:.4rem;font-size:1.05rem;font-weight:800}.print-table{border-collapse:collapse;width:100%;font-size:.92rem}.print-table td{vertical-align:top;border-bottom:1px solid #eee2d6;padding:.3rem 0}.print-table td:last-child{text-align:right;white-space:nowrap;padding-left:.6rem;font-weight:700}.print-step{break-inside:avoid;border-bottom:1px solid #eee2d6;gap:.7rem;padding:.5rem 0;display:flex}.print-step .n{color:var(--brand-deep);flex:none;width:1.4rem;font-weight:800}.print-step .t{color:#6b5a4e;font-size:.82rem;font-weight:700}@media print{@page{size:A4;margin:14mm}html{font-size:11pt}body{background:#fff}.no-print,.sidebar,.topbar,.tabbar,.toasts{display:none!important}.main{padding:0}.page{max-width:none;padding:0}.print-sheet{box-shadow:none;border-radius:0;max-width:none;padding:0}.print-cols{grid-template-columns:15rem 1fr}}
