:root{--c-bg:#fff8ef;--c-surface:#fff;--c-surface-2:#fff1e0;--c-ink:#2b2118;--c-ink-soft:#5f4f42;--c-line:#f0dcc6;--c-primary:#c2410c;--c-primary-ink:#fff;--c-primary-soft:#ffe4d2;--c-success:#2f7d4f;--c-success-soft:#dcf3e3;--c-warning:#8a5a00;--c-warning-soft:#fff0c2;--c-info:#2858b8;--c-info-soft:#e1eaff;--c-danger:#b42318;--c-danger-soft:#fde4e1;--c-slot-breakfast:#fff1c2;--c-slot-lunchbox:#fde4ef;--c-slot-lunch:#ffe1d4;--c-slot-snack:#dff4e0;--c-slot-dinner:#e3e8ff;--c-tosia:#ffd6e7;--c-maks:#d3ecff;--font-sans:"Nunito", ui-rounded, "SF Pro Rounded", "Segoe UI Variable Text", "Segoe UI", system-ui, sans-serif;--fs-xs:.8125rem;--fs-sm:.9375rem;--fs-md:1.0625rem;--fs-lg:1.25rem;--fs-xl:1.625rem;--fs-2xl:2.125rem;--fw-regular:500;--fw-bold:750;--fw-black:850;--sp-1:4px;--sp-2:8px;--sp-3:12px;--sp-4:16px;--sp-5:20px;--sp-6:24px;--sp-8:32px;--sp-10:40px;--r-sm:10px;--r-md:16px;--r-lg:24px;--r-pill:999px;--shadow-1:0 1px 2px #5c341214, 0 2px 8px #5c34120f;--shadow-2:0 6px 24px #5c341224;--touch:44px;--touch-lg:56px;--focus-ring:0 0 0 3px #fff, 0 0 0 6px #2858b8;--ease-bounce:cubic-bezier(.34, 1.56, .64, 1)}*,:before,:after{box-sizing:border-box}html{-webkit-text-size-adjust:100%}body{background:var(--c-bg);color:var(--c-ink);font-family:var(--font-sans);font-size:var(--fs-md);font-weight:var(--fw-regular);margin:0;line-height:1.45}h1,h2,p{margin:0}h1{font-size:var(--fs-xl);font-weight:var(--fw-black);line-height:1.15}h2{font-size:var(--fs-lg);font-weight:var(--fw-bold)}a{color:inherit}button,input,select{font:inherit;color:inherit}:focus-visible{box-shadow:var(--focus-ring);border-radius:var(--r-sm);outline:none}.visually-hidden{clip:rect(0 0 0 0);white-space:nowrap;width:1px;height:1px;overflow:hidden;position:absolute!important}.muted{color:var(--c-ink-soft)}.small{font-size:var(--fs-sm)}.stack{gap:var(--sp-4);display:grid}.row{align-items:center;gap:var(--sp-2);display:flex}.row.wrap{flex-wrap:wrap}.center{min-height:100dvh;padding:var(--sp-6);place-items:center;display:grid}.splash{font-size:4rem;animation:1.2s ease-in-out infinite pulse}.eyebrow{font-size:var(--fs-xs);text-transform:uppercase;letter-spacing:.08em;font-weight:var(--fw-bold);color:var(--c-primary)}.btn{justify-content:center;align-items:center;gap:var(--sp-2);min-height:var(--touch);padding:0 var(--sp-5);border-radius:var(--r-pill);font-weight:var(--fw-bold);cursor:pointer;transition:transform .15s var(--ease-bounce), background .15s;border:2px solid #0000;text-decoration:none;display:inline-flex}.btn:active:not(:disabled){transform:scale(.96)}.btn:disabled{opacity:.55;cursor:not-allowed}.btn-primary{background:var(--c-primary);color:var(--c-primary-ink)}.btn-primary:hover:not(:disabled){background:#a3360a}.btn-soft{background:var(--c-primary-soft);color:#8a2e07}.btn-ghost{border-color:var(--c-line);color:var(--c-ink);background:0 0}.btn-ghost:hover:not(:disabled){background:var(--c-surface-2)}.btn-google{background:var(--c-surface);color:#1f1f1f;border-color:#dadce0;width:100%}.btn-sm{min-height:var(--touch);padding:0 var(--sp-3);font-size:var(--fs-sm)}.btn-lg{min-height:var(--touch-lg);font-size:var(--fs-lg)}.btn-xl{min-height:64px;font-size:var(--fs-lg);width:100%}.icon-btn{min-width:var(--touch);min-height:var(--touch);border-radius:var(--r-pill);cursor:pointer;font-size:var(--fs-lg);background:0 0;border:none}.icon-btn:hover{background:#0000000f}.card{background:var(--c-surface);border-radius:var(--r-lg);box-shadow:var(--shadow-1);padding:var(--sp-4);border:1px solid var(--c-line)}.pill{align-items:center;gap:var(--sp-1);padding:var(--sp-1) var(--sp-3);border-radius:var(--r-pill);font-size:var(--fs-sm);font-weight:var(--fw-bold);white-space:nowrap;display:inline-flex}.pill-neutral{color:var(--c-ink);background:#efe7dd}.pill-warning{background:var(--c-warning-soft);color:var(--c-warning)}.pill-success{background:var(--c-success-soft);color:var(--c-success)}.pill-info{background:var(--c-info-soft);color:var(--c-info)}.tag{padding:2px var(--sp-2);border-radius:var(--r-pill);border:1px solid var(--c-line);font-size:var(--fs-xs);font-weight:var(--fw-bold);color:var(--c-ink-soft);background:#ffffffbf;display:inline-block}.tag-kids{background:var(--c-success-soft);color:var(--c-success);border-color:#0000}.tag-protein{background:var(--c-info-soft);color:var(--c-info);border-color:#0000}.protein{font-size:var(--fs-xs);font-weight:var(--fw-bold);color:var(--c-info)}.banner{justify-content:space-between;align-items:center;gap:var(--sp-3);padding:var(--sp-3) var(--sp-4);border-radius:var(--r-md);font-weight:var(--fw-bold);display:flex}.banner-danger{background:var(--c-danger-soft);color:var(--c-danger)}.banner-info{background:var(--c-info-soft);color:var(--c-info)}.banner-success{background:var(--c-success-soft);color:var(--c-success)}.banner-warning{background:var(--c-warning-soft);color:var(--c-warning)}.avatar{background:var(--c-surface-2);border-radius:50%;flex:none;place-items:center;display:inline-grid}.avatar-sm{width:28px;height:28px;font-size:16px}.avatar-md{width:48px;height:48px;font-size:28px}.avatar-lg{width:96px;height:96px;font-size:60px}.avatar-xl{width:120px;height:120px;font-size:76px}.avatar-tosia{background:var(--c-tosia)}.avatar-maks{background:var(--c-maks)}.avatar-marcin{background:var(--c-info-soft)}.avatar-ania{background:var(--c-warning-soft)}.app{min-height:100dvh;padding-bottom:calc(80px + env(safe-area-inset-bottom))}.topbar{z-index:20;justify-content:space-between;align-items:center;gap:var(--sp-3);padding:var(--sp-2) var(--sp-4);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border-bottom:1px solid var(--c-line);background:#fff8efeb;display:flex;position:sticky;top:0}.brand{align-items:center;gap:var(--sp-2);min-height:var(--touch);font-weight:var(--fw-black);font-size:var(--fs-lg);text-decoration:none;display:flex}.brand-text{display:none}.topbar-right{align-items:center;gap:var(--sp-2);display:flex}.week-select{min-height:var(--touch);border-radius:var(--r-pill);border:1px solid var(--c-line);padding:0 var(--sp-3);background:var(--c-surface)}.user-btn{align-items:center;gap:var(--sp-2);min-height:var(--touch);padding:0 var(--sp-2);border:1px solid var(--c-line);border-radius:var(--r-pill);background:var(--c-surface);cursor:pointer;font-weight:var(--fw-bold);display:flex}.user-name{display:none}.demo-ribbon{background:var(--c-warning-soft);color:var(--c-warning);text-align:center;font-size:var(--fs-xs);font-weight:var(--fw-bold);padding:var(--sp-1) var(--sp-3)}.tabbar{z-index:20;background:var(--c-surface);border-top:1px solid var(--c-line);padding:var(--sp-1) var(--sp-1) calc(var(--sp-1) + env(safe-area-inset-bottom));justify-content:space-around;display:flex;position:fixed;inset:auto 0 0;box-shadow:0 -4px 20px #5c341214}.tab{border-radius:var(--r-md);min-width:0;min-height:60px;font-size:min(var(--fs-xs), 2.8vw);font-weight:var(--fw-bold);color:var(--c-ink-soft);flex-direction:column;flex:1;justify-content:center;align-items:center;text-decoration:none;display:flex;position:relative}.tab-label{text-overflow:ellipsis;white-space:nowrap;max-width:100%;overflow:hidden}.tab-emoji{transition:transform .2s var(--ease-bounce);font-size:24px;line-height:1.1}.tab.is-active{color:var(--c-primary);background:var(--c-primary-soft)}.tab.is-active .tab-emoji{transform:scale(1.15)}.content{max-width:1200px;padding:var(--sp-4);margin:0 auto}.login{max-width:520px;padding:var(--sp-8) var(--sp-4);gap:var(--sp-6);margin:0 auto;display:grid}.login-hero{text-align:center;gap:var(--sp-2);display:grid}.login-logo{font-size:64px}.login-hero h1{font-size:var(--fs-2xl)}.login-hero p{font-size:var(--fs-lg);color:var(--c-ink-soft)}.login-parents{gap:var(--sp-3);display:grid}.demo-logins{gap:var(--sp-2);display:grid}.demo-logins .btn{flex:1}.pin-card{gap:var(--sp-3);text-align:center;justify-items:center;display:grid}.pin-dots{gap:var(--sp-3);display:flex}.pin-dots span{border:2px solid var(--c-primary);border-radius:50%;width:18px;height:18px}.pin-dots .is-filled{background:var(--c-primary)}.pin-dots.is-error span{border-color:var(--c-danger)}.pin-dots.is-error{animation:.4s shake}@keyframes shake{25%{transform:translate(-8px)}75%{transform:translate(8px)}}.pin-pad{gap:var(--sp-3);grid-template-columns:repeat(3,72px);display:grid}.pin-key{border:2px solid var(--c-line);background:var(--c-surface);width:72px;height:72px;font-size:var(--fs-xl);font-weight:var(--fw-bold);cursor:pointer;border-radius:50%}.pin-key:active:not(:disabled){background:var(--c-primary-soft)}.pin-key-action{color:var(--c-ink-soft);background:0 0;border-color:#0000}.profiles{max-width:880px;padding:var(--sp-8) var(--sp-4);gap:var(--sp-6);justify-items:center;margin:0 auto;display:grid}.profiles-head{text-align:center;gap:var(--sp-2);display:grid}.profiles-head h1{font-size:var(--fs-2xl)}.profile-grid{gap:var(--sp-4);grid-template-columns:repeat(2,1fr);width:100%;margin:0;padding:0;list-style:none;display:grid}.profile-tile{justify-items:center;gap:var(--sp-2);width:100%;padding:var(--sp-6) var(--sp-3);border-radius:var(--r-lg);background:var(--c-surface);box-shadow:var(--shadow-1);cursor:pointer;transition:transform .2s var(--ease-bounce);border:3px solid #0000;display:grid}.profile-tile:hover:not(:disabled),.profile-tile:focus-visible{transform:translateY(-4px)}.profile-tile.is-active{border-color:var(--c-primary)}.profile-name{font-size:var(--fs-xl);font-weight:var(--fw-black)}.profiles-actions{justify-content:center;gap:var(--sp-3);flex-wrap:wrap;display:flex}.hero-card{gap:var(--sp-3);background:linear-gradient(135deg, #fff 0%, var(--c-surface-2) 100%);display:grid}.hero-title{font-size:var(--fs-xl)}.tone-success{background:linear-gradient(135deg, #fff 0%, var(--c-success-soft) 100%)}.tone-info{background:linear-gradient(135deg, #fff 0%, var(--c-info-soft) 100%)}.kid-hint{font-size:var(--fs-lg);font-weight:var(--fw-bold)}.day-strip{gap:var(--sp-1);grid-template-columns:repeat(7,minmax(44px,1fr));display:grid}.day-chip{border-radius:var(--r-md);background:var(--c-surface);border:1px solid var(--c-line);min-height:56px;transition:transform .15s var(--ease-bounce);align-content:center;justify-items:center;text-decoration:none;display:grid}.day-chip:hover{transform:translateY(-2px)}.day-chip-name{font-weight:var(--fw-black)}.day-chip-date{font-size:var(--fs-xs);color:var(--c-ink-soft)}.day-chip.is-active{background:var(--c-primary);border-color:var(--c-primary);color:var(--c-primary-ink)}.day-chip.is-active .day-chip-date{color:var(--c-primary-ink)}.week-grid{gap:var(--sp-3);display:grid}.day-card{align-content:start;gap:var(--sp-3);transition:transform .15s var(--ease-bounce), box-shadow .15s;display:grid;position:relative}.day-card:hover{box-shadow:var(--shadow-2);transform:translateY(-2px)}.day-card-head{justify-content:space-between;align-items:baseline;display:flex}.day-card-link{color:inherit;text-decoration:none}.day-card-link:after{content:"";border-radius:var(--r-lg);position:absolute;inset:0}.day-card:has(.day-card-link:focus-visible){outline:3px solid var(--c-primary);outline-offset:2px}.recipe-chip{z-index:1;justify-content:center;align-items:center;gap:var(--sp-1);min-width:var(--touch);min-height:var(--touch);padding:0 var(--sp-3);border-radius:var(--r-pill);background:var(--c-primary-soft);color:#8a2e07;font-size:var(--fs-sm);font-weight:var(--fw-bold);flex:none;text-decoration:none;display:inline-flex;position:relative}.recipe-name-link{z-index:1;color:inherit;text-underline-offset:3px;-webkit-text-decoration:underline dotted;text-decoration:underline dotted;position:relative}.library-text .btn{justify-self:start}.day-card-list{gap:var(--sp-2);margin:0;padding:0;list-style:none;display:grid}.slot-row{align-items:center;gap:var(--sp-3);padding:var(--sp-2) var(--sp-3);border-radius:var(--r-md);display:flex}.slot-row-emoji{flex:none;font-size:28px}.meal-photo{object-fit:cover;border-radius:var(--r-md);background:#f4ebdf;flex:none;display:block}.slot-row-emoji.meal-photo{border-radius:var(--r-sm);width:44px;height:44px}.slot-row-text{flex:1;min-width:0;display:grid}.slot-row-label{font-size:var(--fs-xs);text-transform:uppercase;letter-spacing:.06em;font-weight:var(--fw-bold);color:var(--c-ink-soft)}.slot-row-meal{font-weight:var(--fw-bold)}.for-whom{font-size:var(--fs-xs);color:var(--c-ink-soft)}.slot-row.is-skipped{background:repeating-linear-gradient(-45deg,#faf3ea,#faf3ea 8px,#f4ebdf 8px 16px)}.slot-row.is-skipped .slot-row-meal{color:var(--c-ink-soft);font-style:italic}.slot-breakfast{background:var(--c-slot-breakfast)}.slot-lunchbox{background:var(--c-slot-lunchbox)}.slot-lunch{background:var(--c-slot-lunch)}.slot-snack{background:var(--c-slot-snack)}.slot-dinner{background:var(--c-slot-dinner)}.day-head{align-items:baseline;gap:var(--sp-3);flex-wrap:wrap;display:flex}.slot-card{gap:var(--sp-3);border:none;display:grid}.slot-card-head{justify-content:space-between;align-items:baseline;display:flex}.tile-grid{gap:var(--sp-3);display:grid}.meal-tile{align-items:stretch;gap:var(--sp-2);flex-wrap:wrap;display:flex}.meal-tile .macro-details{flex-basis:100%}.tile-actions{align-self:center;gap:var(--sp-2);flex-direction:column;flex:none;display:flex}.tile-actions .btn{width:var(--touch-lg);padding:0}.tile-actions .btn-label{display:none}.meal-tile-main{column-gap:var(--sp-3);row-gap:var(--sp-1);text-align:left;min-width:0;min-height:84px;padding:var(--sp-3) var(--sp-4);border-radius:var(--r-md);cursor:pointer;transition:transform .2s var(--ease-bounce), border-color .15s, background .15s;background:#ffffffd9;border:3px solid #0000;flex:1 1 0;grid-template-columns:auto 1fr;grid-template-areas:"emoji name""emoji meta""emoji macro""emoji extra""emoji changed";align-items:center;display:grid;position:relative}.meal-tile-main:hover:not(:disabled){transform:translateY(-2px)}.meal-tile-main:disabled{cursor:default}.meal-tile.is-selected .meal-tile-main{border-color:var(--c-success);background:var(--c-surface);box-shadow:var(--shadow-2);animation:pop .35s var(--ease-bounce)}.meal-tile:not(.is-selected) .meal-tile-main{opacity:.88}.meal-tile-emoji{grid-area:emoji;font-size:44px;line-height:1}.meal-tile-emoji.meal-photo{width:72px;height:72px}.meal-tile-name{overflow-wrap:break-word;min-width:0;font-weight:var(--fw-bold);font-size:var(--fs-md);grid-area:name}.meal-tile-meta{gap:var(--sp-1);flex-wrap:wrap;grid-area:meta;display:flex}.meal-tile-main .protein{grid-area:extra}.meal-tile-main .macro-short{grid-area:macro}.macro-short{font-size:var(--fs-xs);font-weight:var(--fw-bold);color:var(--c-ink-soft);font-variant-numeric:tabular-nums}.macro-details{font-size:var(--fs-xs);color:var(--c-ink-soft)}.macro-details summary{min-height:var(--touch);padding:0 var(--sp-2);align-items:center;gap:var(--sp-1);font-weight:var(--fw-bold);cursor:pointer;list-style:none;display:flex}.macro-details summary::-webkit-details-marker{display:none}.macro-details summary:before{content:"▸";transition:transform .15s}.macro-details[open] summary:before{transform:rotate(90deg)}.macro-details>:not(summary){margin:var(--sp-1) var(--sp-2) var(--sp-2)}.macro-table{border-collapse:collapse;width:100%;font-size:var(--fs-xs);font-variant-numeric:tabular-nums}.macro-table th,.macro-table td{padding:var(--sp-1) var(--sp-2);border-bottom:1px solid var(--c-line)}.macro-table th{text-align:left}.macro-table td,.macro-table thead th:not(:first-child){text-align:right;white-space:nowrap}.macro-table abbr{text-decoration:none}.day-macros{gap:var(--sp-2);display:grid}.day-macros h2{font-size:var(--fs-md)}.changed-inline{align-items:center;gap:var(--sp-1);font-size:var(--fs-xs);font-weight:var(--fw-bold);color:var(--c-ink-soft);grid-area:changed;display:inline-flex}.tile-check{background:var(--c-success);color:#fff;width:32px;height:32px;font-weight:var(--fw-black);box-shadow:var(--shadow-1);border-radius:50%;place-items:center;display:grid;position:absolute;top:-10px;right:-10px}.meal-tile .btn-ghost{background:#fff9;justify-self:start}.role-child .meal-tile-main{border-radius:var(--r-lg);min-height:112px}.role-child .meal-tile-emoji{font-size:64px}.role-child .meal-tile-emoji.meal-photo{width:88px;height:88px}.slot-actions{justify-content:flex-end;display:flex}.slot-actions .btn-ghost{background:#fff9}.optional-slot{gap:var(--sp-3);display:grid}.optional-meal{align-items:center;gap:var(--sp-3);padding:var(--sp-3) var(--sp-4);border-radius:var(--r-md);background:#ffffffd9;display:flex}.optional-slot.is-off .optional-meal{opacity:.7}.optional-slot .row{flex-wrap:wrap}.switch{align-items:center;gap:var(--sp-3);min-height:var(--touch);padding:var(--sp-1) var(--sp-4) var(--sp-1) var(--sp-1);border-radius:var(--r-pill);border:2px solid var(--c-line);background:var(--c-surface);font-weight:var(--fw-bold);cursor:pointer;display:inline-flex}.switch-knob{border-radius:var(--r-pill);background:#d6cabd;width:52px;height:32px;transition:background .2s;position:relative}.switch-knob:after{content:"";width:26px;height:26px;box-shadow:var(--shadow-1);transition:transform .25s var(--ease-bounce);background:#fff;border-radius:50%;position:absolute;top:3px;left:3px}.switch.is-on .switch-knob{background:var(--c-success)}.switch.is-on .switch-knob:after{transform:translate(20px)}.sheet-backdrop{z-index:50;background:#2b211873;justify-content:center;align-items:flex-end;animation:.2s fade;display:flex;position:fixed;inset:0}.sheet{background:var(--c-bg);border-radius:var(--r-lg) var(--r-lg) 0 0;width:100%;max-width:640px;max-height:85dvh;padding:var(--sp-4) var(--sp-4) calc(var(--sp-6) + env(safe-area-inset-bottom));animation:slide-up .3s var(--ease-bounce);overflow:auto}.sheet-head{margin-bottom:var(--sp-3);justify-content:space-between;align-items:center;display:flex}.swap-grid{gap:var(--sp-3);grid-template-columns:repeat(auto-fill,minmax(150px,1fr));display:grid}.swap-tile{justify-items:center;gap:var(--sp-2);text-align:center;padding:var(--sp-4) var(--sp-3);border-radius:var(--r-md);border:2px solid var(--c-line);background:var(--c-surface);cursor:pointer;min-height:140px;transition:transform .2s var(--ease-bounce);display:grid}.swap-tile:hover{border-color:var(--c-primary);transform:translateY(-3px)}.swap-tile .meal-tile-emoji{font-size:48px}.swap-tile>*{grid-area:auto}.swap-tile .meal-tile-emoji.meal-photo{aspect-ratio:4/3;width:100%;height:auto}.celebrate{z-index:60;pointer-events:none;place-items:center;display:grid;position:fixed;inset:0}.celebrate-card{justify-items:center;gap:var(--sp-2);padding:var(--sp-6) var(--sp-8);background:var(--c-surface);border-radius:var(--r-lg);box-shadow:var(--shadow-2);font-size:var(--fs-xl);font-weight:var(--fw-black);animation:celebrate 1.3s var(--ease-bounce) forwards;display:grid}.celebrate-emoji{font-size:72px;animation:.6s ease-in-out 2 wiggle}.confetti{font-size:32px;animation:1.1s ease-out forwards confetti;position:absolute;top:50%;left:50%}.confetti-0{--dx:-140px;--dy:-160px}.confetti-1{--dx:140px;--dy:-170px}.confetti-2{--dx:-170px;--dy:40px}.confetti-3{--dx:170px;--dy:60px}.confetti-4{--dx:-40px;--dy:180px}.confetti-5{--dx:60px;--dy:-220px}.filters{gap:var(--sp-3);display:grid}.search{min-height:var(--touch);padding:0 var(--sp-4);border-radius:var(--r-pill);border:2px solid var(--c-line);background:var(--c-surface)}.chips{gap:var(--sp-2);padding-bottom:var(--sp-1);display:flex;overflow-x:auto}.chip{min-height:var(--touch);padding:0 var(--sp-4);border-radius:var(--r-pill);border:2px solid var(--c-line);background:var(--c-surface);font-weight:var(--fw-bold);cursor:pointer;flex:none}.chip.is-active{background:var(--c-ink);border-color:var(--c-ink);color:#fff}.library-grid{gap:var(--sp-3);display:grid}.library-card{gap:var(--sp-3);border:none;align-items:flex-start;display:flex}.library-emoji{font-size:44px;line-height:1}.library-emoji.meal-photo{width:72px;height:72px}.photo-credit{font-size:var(--fs-xs);color:var(--c-ink-soft);justify-self:start}.library-text{gap:var(--sp-2);display:grid}.library-text h2{font-size:var(--fs-md)}.stepper{gap:var(--sp-1);grid-template-columns:repeat(4,1fr);margin:0;padding:0;list-style:none;display:grid;position:relative}.step{justify-items:center;gap:var(--sp-1);text-align:center;font-size:var(--fs-xs);font-weight:var(--fw-bold);color:var(--c-ink-soft);display:grid}.step-dot{background:var(--c-surface);border:2px solid var(--c-line);border-radius:50%;place-items:center;width:44px;height:44px;font-size:20px;display:grid}.step.is-done .step-dot{background:var(--c-success);border-color:var(--c-success);color:#fff}.step.is-current .step-dot{border-color:var(--c-primary);box-shadow:0 0 0 4px var(--c-primary-soft)}.step.is-current{color:var(--c-ink)}.approval-cards{gap:var(--sp-3);grid-template-columns:1fr 1fr;display:grid}.approval-card{align-items:center;gap:var(--sp-3);display:flex}.approval-card.is-done{border-color:var(--c-success);background:var(--c-success-soft)}.approval-name{font-weight:var(--fw-black);font-size:var(--fs-lg)}.ok-text{color:var(--c-success);font-weight:var(--fw-bold)}.approval-action{gap:var(--sp-3);display:grid}.stats{gap:var(--sp-2);margin-top:var(--sp-3);grid-template-columns:repeat(3,1fr);display:grid}.stat{text-align:center;padding:var(--sp-3) var(--sp-1);background:var(--c-surface-2);border-radius:var(--r-md);justify-items:center;display:grid}.stat-value{font-size:var(--fs-xl);font-weight:var(--fw-black)}.stat-label{font-size:var(--fs-xs);color:var(--c-ink-soft)}.change-list{margin:var(--sp-3) 0 0;gap:var(--sp-2);padding:0;list-style:none;display:grid}.change-list li{align-items:center;gap:var(--sp-2);padding:var(--sp-2) 0;border-bottom:1px dashed var(--c-line);flex-wrap:wrap;display:flex}.change-who{font-weight:var(--fw-black)}.change-what a{font-weight:var(--fw-bold);color:var(--c-primary)}.tag-dislike{background:var(--c-danger-soft);color:var(--c-danger);border-color:#0000}.report-badges{gap:var(--sp-1);flex-wrap:wrap;display:inline-flex}.slot-row-text .report-badges{margin-top:var(--sp-1)}.report-badge{padding:1px var(--sp-2) 1px 1px;border-radius:var(--r-pill);border:2px solid #0000;align-items:center;gap:2px;font-size:16px;line-height:1;display:inline-flex}.report-badge .avatar-sm{width:24px;height:24px;font-size:14px}.report-badge.tone-warning,.report-btn.tone-warning.is-on{background:var(--c-warning-soft)}.report-badge.tone-danger,.report-btn.tone-danger.is-on{background:var(--c-danger-soft)}.report-badge.tone-love,.report-btn.tone-love.is-on{background:#fde4ec}.report-badge.is-new{border-color:var(--c-warning)}.report-bar{gap:var(--sp-1);display:grid}.meal-tile .report-bar{flex-basis:100%}.report-buttons{gap:var(--sp-1);grid-template-columns:repeat(3,1fr);display:grid}.report-btn{min-height:var(--touch-lg);padding:var(--sp-1);border-radius:var(--r-md);border:2px solid var(--c-line);font-size:var(--fs-xs);font-weight:var(--fw-bold);cursor:pointer;transition:transform .15s var(--ease-bounce);background:#ffffffb3;flex-direction:column;justify-content:center;align-items:center;line-height:1.2;display:flex}.report-btn>span{font-size:22px}.report-btn:active:not(:disabled){transform:scale(.94)}.report-btn.is-on{border-color:currentColor}.report-btn.tone-warning.is-on{color:var(--c-warning)}.report-btn.tone-danger.is-on{color:var(--c-danger)}.report-btn.tone-love.is-on{color:#b0124f}.report-btn:disabled{cursor:default;opacity:.7}.report-form{gap:var(--sp-4);display:grid}.report-form label{gap:var(--sp-1);font-weight:var(--fw-bold);display:grid}.report-form textarea{font:inherit;padding:var(--sp-3);border-radius:var(--r-md);border:2px solid var(--c-line);resize:vertical}.report-meal{align-items:center;gap:var(--sp-3);display:flex}.report-link{font-weight:var(--fw-bold);color:var(--c-warning);justify-self:start}.tab-count{border-radius:var(--r-pill);background:var(--c-danger);color:#fff;min-width:20px;height:20px;font-size:12px;font-weight:var(--fw-black);place-items:center;padding:0 5px;display:grid;position:absolute;top:2px;right:calc(50% - 26px)}.report-list{margin:var(--sp-3) 0 0;gap:var(--sp-3);padding:0;list-style:none;display:grid}.report-card{gap:var(--sp-3);border-left:6px solid var(--c-line);display:grid}.report-card.tone-warning{border-left-color:var(--c-warning)}.report-card.tone-danger{border-left-color:var(--c-danger)}.report-card.tone-love{border-left-color:#e0457b}.report-head{align-items:center;gap:var(--sp-3);display:flex}.report-title{flex:1;min-width:0}.report-comment{padding:var(--sp-2) var(--sp-3);border-radius:var(--r-md);background:var(--c-surface-2);font-style:italic}.report-where{gap:var(--sp-2);margin:0;padding:0;list-style:none;display:grid}.report-where li{gap:var(--sp-1);display:grid}.report-where a{font-weight:var(--fw-bold);color:var(--c-primary)}.shop-compare{gap:var(--sp-3);grid-template-columns:1fr 1fr;display:grid}.shop-card{gap:var(--sp-1);text-align:left;cursor:pointer;border:3px solid var(--c-line);font:inherit;display:grid}.shop-card.is-active{border-color:var(--c-primary);box-shadow:var(--shadow-2)}.shop-name{font-weight:var(--fw-bold)}.shop-total{font-size:var(--fs-xl);font-weight:var(--fw-black)}.shop-breakdown{gap:0 var(--sp-2);color:var(--c-ink-soft);grid-template-columns:auto 1fr;margin:0;display:grid}.shop-breakdown dd{text-align:right;white-space:nowrap;margin:0}.badge-cheaper{padding:2px var(--sp-2);border-radius:var(--r-pill);background:var(--c-success);color:#fff;font-size:var(--fs-xs);font-weight:var(--fw-bold);justify-self:start}.shop-group{gap:var(--sp-2);display:grid}.shop-list{margin:0;padding:0;list-style:none}.shop-row{align-items:center;gap:var(--sp-3);min-height:52px;padding:var(--sp-1) 0;border-bottom:1px solid var(--c-line);cursor:pointer;display:flex}.shop-list li:last-child .shop-row{border-bottom:none}.shop-row input{width:24px;height:24px;accent-color:var(--c-success);flex:none}.shop-product{flex:1;min-width:0;display:grid}.shop-product-name{font-weight:var(--fw-bold)}.shop-price{font-weight:var(--fw-bold);white-space:nowrap}.is-home .shop-product-name,.is-home .shop-price{color:var(--c-ink-soft);text-decoration:line-through}@keyframes pop{0%{transform:scale(.94)}60%{transform:scale(1.03)}to{transform:scale(1)}}@keyframes pulse{50%{transform:scale(1.1)}}@keyframes fade{0%{opacity:0}}@keyframes slide-up{0%{transform:translateY(40%)}}@keyframes celebrate{0%{opacity:0;transform:scale(.4)}20%{opacity:1;transform:scale(1.08)}80%{opacity:1;transform:scale(1)}to{opacity:0;transform:scale(.9)}}@keyframes wiggle{25%{transform:rotate(-12deg)}75%{transform:rotate(12deg)}}@keyframes confetti{0%{opacity:1;transform:translate(-50%,-50%)scale(.4)}to{transform:translate(calc(-50% + var(--dx)), calc(-50% + var(--dy))) scale(1.2) rotate(40deg);opacity:0}}@media (prefers-reduced-motion:reduce){*,:before,:after{transition-duration:.01ms!important;animation-duration:.01ms!important}}@media (width>=640px){.brand-text,.user-name{display:inline}.tile-grid{grid-template-columns:repeat(3,1fr)}.meal-tile{flex-direction:column}.tile-actions{flex-flow:wrap;align-self:start}.tile-actions .btn{width:auto;padding:0 var(--sp-3)}.tile-actions .btn-label{display:inline}.meal-tile .macro-details,.meal-tile .report-bar{flex-basis:auto}.report-list{grid-template-columns:repeat(2,1fr);align-items:start}.meal-tile-main{flex:none;grid-template-columns:1fr;grid-template-areas:"emoji""name""meta""macro""extra""changed";align-content:start;justify-items:start;min-height:200px}.library-emoji.meal-photo{width:96px;height:96px}.meal-tile-main .meal-tile-emoji.meal-photo{aspect-ratio:16/10;justify-self:stretch;width:100%;height:auto}.role-child .meal-tile-main{min-height:240px}.role-child .meal-tile-name{font-size:var(--fs-lg)}.week-grid,.library-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.profile-grid{grid-template-columns:repeat(4,1fr)}}@media (width>=900px){.app{padding-bottom:var(--sp-8)}.tabbar{top:61px;justify-content:center;gap:var(--sp-2);border-top:none;border-bottom:1px solid var(--c-line);box-shadow:none;background:var(--c-bg);padding:var(--sp-2);position:sticky;inset:auto}.tab{gap:var(--sp-2);min-height:var(--touch);padding:0 var(--sp-5);font-size:var(--fs-md);border-radius:var(--r-pill);flex-direction:row;flex:none}.tab-emoji{font-size:20px}.tab-count{position:static}.content{padding:var(--sp-6)}.hero-card{grid-template-columns:1fr auto;align-items:center}.week-grid{grid-template-columns:repeat(4,minmax(0,1fr))}.week-grid .recipe-chip{padding:0}.week-grid .recipe-chip .btn-label{display:none}.library-grid{grid-template-columns:repeat(3,1fr)}.day-strip{max-width:720px}.sheet-backdrop{align-items:center}.sheet{border-radius:var(--r-lg)}}.back-link{align-items:center;gap:var(--sp-2);min-height:var(--touch);font-weight:var(--fw-bold);color:var(--c-ink-soft);justify-self:start;display:inline-flex}.recipe-head{gap:var(--sp-4);display:grid}.recipe-photo{font-size:64px;line-height:1}.recipe-photo.meal-photo{aspect-ratio:16/10;border-radius:var(--r-md);width:100%;height:auto}.recipe-title{gap:var(--sp-3);align-content:start;display:grid}.recipe-times{gap:var(--sp-2) var(--sp-4);flex-wrap:wrap;margin:0;padding:0;list-style:none;display:flex}.recipe-ingredients,.recipe-steps,.recipe-kids ul{margin:var(--sp-3) 0 0;padding-left:var(--sp-6);gap:var(--sp-2);font-size:var(--fs-md);display:grid}.recipe-steps li::marker{font-weight:var(--fw-bold)}.recipe-kids{background:var(--c-success-soft)}@media (width>=640px){.recipe-head{grid-template-columns:minmax(240px,1fr) 2fr;align-items:start}}.cooking{z-index:70;background:var(--c-bg);outline:none;flex-direction:column;display:flex;position:fixed;inset:0}.cooking-head,.cooking-nav{align-items:center;gap:var(--sp-3);padding:var(--sp-3) var(--sp-4);background:var(--c-surface);flex:none;display:flex}.cooking-head{border-bottom:1px solid var(--c-line);justify-content:space-between}.cooking-head h2{font-size:var(--fs-lg)}.cooking-body{align-content:start;gap:var(--sp-4);padding:var(--sp-4);flex:1;display:grid;overflow-y:auto}.cooking-step{gap:var(--sp-3);padding:var(--sp-5);border-radius:var(--r-lg);background:var(--c-surface);box-shadow:var(--shadow-1);display:grid}.cooking-progress{font-weight:var(--fw-bold);color:var(--c-primary)}.cooking-text{font-size:var(--fs-xl);line-height:1.4}.cooking-ingredients ul{margin:var(--sp-2) 0 0;gap:var(--sp-1);padding:0;list-style:none;display:grid}.cooking-check{align-items:center;gap:var(--sp-3);min-height:var(--touch);font-size:var(--fs-md);cursor:pointer;display:flex}.cooking-check input{width:24px;height:24px;accent-color:var(--c-success);flex:none}.cooking-check.is-checked span{color:var(--c-ink-soft);text-decoration:line-through}.cooking-nav{border-top:1px solid var(--c-line);flex-wrap:wrap}.cooking-nav .btn-xl{flex:1;width:auto}.cooking-note{flex-basis:100%}@media (width>=900px){.cooking-body{padding:var(--sp-6);grid-template-columns:2fr 1fr;align-items:start}.cooking-text{font-size:var(--fs-2xl)}}@media print{.topbar,.tabbar,.demo-ribbon,.banner,.no-print,.cooking{display:none!important}body,.app,.content{background:#fff;padding:0}.recipe .card{box-shadow:none;border:1px solid #ccc}.recipe .card :is(h1,h2){break-after:avoid}.recipe-ingredients li,.recipe-steps li,.recipe-kids li{break-inside:avoid}.recipe-head{grid-template-columns:1fr}.recipe-photo.meal-photo{max-width:320px}.recipe-kids{background:#fff}}
