:root{--yellow:#f5c95c;--coral:#f27d5d;--sky:#8fc6d8;--peach:#f9ddc6;--cream:#fff8ec;--cocoa:#453b34;--ink:#2d2825;--line:#eadfce;--mint:#dcefe7;--white:#fffdf9;--shadow:0 18px 45px rgba(69,59,52,.12)}*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;background:var(--cream);color:var(--ink);font-family:"DM Sans",Arial,sans-serif;font-size:16px}.is-hidden{display:none!important}button,input{font:inherit}button{cursor:pointer}.auth-screen{min-height:100vh;display:grid;grid-template-columns:minmax(320px,1.05fr) minmax(400px,.95fr);background:var(--white)}.auth-story{position:relative;overflow:hidden;padding:44px clamp(35px,7vw,112px);min-height:700px;color:var(--white);display:flex;flex-direction:column;background:linear-gradient(150deg,#8fc6d8 0%,#73b0c5 62%,#72acc0 100%)}.auth-story:before,.auth-story:after{content:"";position:absolute;border-radius:999px;background:rgba(255,255,255,.15)}.auth-story:before{height:300px;width:300px;top:-155px;right:-80px}.auth-story:after{height:210px;width:210px;bottom:-120px;left:-60px}.brand{font-family:Fredoka,sans-serif;font-size:1.42rem;font-weight:700;color:var(--cocoa);text-decoration:none;letter-spacing:-.03em;display:inline-flex;align-items:center;gap:5px}.brand-light{color:white;position:relative;z-index:1}.brand span:not(.brand-mark){font-family:"DM Sans";font-size:.63rem;letter-spacing:.12em;font-weight:700;align-self:flex-end;padding-bottom:2px}.brand-mark{display:inline-grid;place-items:center;border-radius:50%;width:28px;height:28px;background:var(--yellow);color:#fff;font-size:1.15rem}.story-copy{position:relative;z-index:1;max-width:490px;margin-top:clamp(70px,12vh,128px)}.eyebrow{margin:0 0 8px;font-size:.71rem;letter-spacing:.15em;font-weight:700;color:#7e7064}.eyebrow.coral,.coral{color:#d46347}.story-copy .eyebrow{color:rgba(255,255,255,.8)}h1,h2,h3{font-family:Fredoka,sans-serif;letter-spacing:-.035em;line-height:1.06;margin:0}h1{font-size:clamp(2.25rem,4.3vw,4.2rem)}h2{font-size:clamp(1.55rem,2.2vw,2.35rem)}.story-copy p:not(.eyebrow){font-size:1.08rem;line-height:1.65;max-width:400px;opacity:.94;margin:22px 0}.story-plate{width:clamp(270px,30vw,375px);aspect-ratio:1;position:absolute;right:clamp(26px,8vw,110px);bottom:36px;border-radius:50%;background:#f7d893;box-shadow:inset 0 0 0 12px rgba(255,255,255,.32),0 24px 0 rgba(68,111,128,.18);padding:15px;transform:rotate(-6deg)}.story-plate img{display:block;width:100%;height:100%;object-fit:cover;border-radius:50%;mix-blend-mode:multiply}.sun-ray{position:absolute;width:12px;height:31px;border-radius:99px;background:var(--yellow)}.ray-one{right:-16px;top:70px;transform:rotate(58deg)}.ray-two{right:34px;top:-28px}.ray-three{left:-22px;top:110px;transform:rotate(-56deg)}.story-note{position:relative;z-index:1;max-width:330px;margin-top:auto;font-size:.75rem;line-height:1.55;opacity:.88}.auth-panel{display:grid;place-items:center;padding:45px 28px;background:linear-gradient(145deg,#fffdf9,#fff8ec)}.auth-panel-inner{width:min(100%,430px)}.auth-panel h2{margin-bottom:12px}.muted{color:#71675f;line-height:1.55;margin:0}.auth-form{display:grid;gap:16px;margin:30px 0 18px}.field{font-size:.86rem;font-weight:700;color:var(--cocoa);display:grid;gap:7px}.field input,.search-box input{border:1.5px solid var(--line);border-radius:13px;background:#fff;padding:14px 15px;outline:none;transition:.18s}.field input:focus,.search-box input:focus{border-color:var(--sky);box-shadow:0 0 0 4px rgba(143,198,216,.2)}.button{border:0;border-radius:14px;padding:14px 17px;font-weight:700;display:inline-flex;align-items:center;justify-content:center;gap:10px;transition:transform .18s,box-shadow .18s}.button:hover{transform:translateY(-2px)}.button-primary{background:var(--coral);color:white;box-shadow:0 10px 20px rgba(242,125,93,.25)}.button-secondary{background:#f9eee1;color:var(--cocoa)}.text-button,.link-button{border:0;background:none;color:#bd583e;font-weight:700;padding:4px 0;text-align:left}.auth-footnote{font-size:.76rem;color:#7c7168;line-height:1.5;margin-top:28px;padding-top:20px;border-top:1px dashed var(--line)}.auth-footnote span{color:var(--coral);font-size:1rem}.form-message{font-size:.84rem;color:#be402b;margin:-5px 0 0;min-height:0}.app-shell{min-height:100vh}.topbar{height:76px;padding:0 clamp(20px,4vw,65px);display:flex;align-items:center;justify-content:space-between;background:rgba(255,253,249,.91);backdrop-filter:blur(14px);border-bottom:1px solid var(--line);position:sticky;top:0;z-index:10}.topbar-actions{display:flex;gap:10px;align-items:center}.shopping-button,.profile-button{border:0;background:none;display:flex;align-items:center;gap:7px;color:var(--cocoa)}.shopping-button{position:relative;padding:10px 11px;border-radius:12px;background:#fff2d3}.shopping-button b{display:grid;place-items:center;width:19px;height:19px;border-radius:50%;font-size:.68rem;background:var(--coral);color:#fff}.shopping-label{font-weight:700;font-size:.86rem}.profile-button{padding:3px 5px 3px 3px;border-radius:99px;background:#f4e9d9}.profile-button span{display:grid;place-items:center;width:34px;height:34px;border-radius:50%;background:var(--sky);color:#fff;font-weight:700}.profile-button small{font-weight:700;padding-right:5px}.app-layout{display:grid;grid-template-columns:238px minmax(0,1fr);max-width:1500px;margin:auto}.side-nav{min-height:calc(100vh - 76px);padding:30px 20px;border-right:1px solid var(--line);background:#fffaf2;position:sticky;top:76px}.nav-item{width:100%;border:0;background:none;display:flex;gap:14px;align-items:center;padding:12px 14px;border-radius:12px;color:#776b61;font-weight:700;text-align:left;margin-bottom:6px}.nav-item span{font-size:1.15rem}.nav-item.active,.nav-item:hover{background:#ffecbc;color:var(--cocoa)}.side-tip{display:flex;gap:9px;padding:15px 12px;background:#e5f4ef;border-radius:15px;margin:38px 2px 0;color:#41635b}.side-tip span{font-size:1.4rem}.side-tip p{font-size:.75rem;line-height:1.45;margin:0}.side-tip b{display:block;margin-bottom:3px}.dashboard{padding:clamp(30px,5vw,70px);max-width:1250px}.welcome-row{display:flex;justify-content:space-between;align-items:center;gap:20px}.welcome-row h1{font-size:clamp(2rem,3.2vw,3.1rem)}.welcome-row h1 span{color:var(--coral)}.day-chip{display:flex;align-items:center;gap:10px;border:1px solid var(--line);background:#fffdfa;border-radius:17px;padding:11px 16px}.day-chip>span{font-size:1.7rem;color:var(--yellow)}.day-chip small{font-size:.62rem;letter-spacing:.1em;font-weight:700;color:#887b6d;display:block}.day-chip b{font-size:.85rem}.safety-banner{margin:34px 0;display:flex;align-items:center;gap:12px;background:#fff1cf;border:1px solid #f3d995;border-radius:16px;padding:14px 16px}.safety-banner>span{font-size:1.25rem;color:#e7a339}.safety-banner p{font-size:.84rem;line-height:1.45;margin:0;flex:1}.safety-banner button{border:0;background:transparent;color:#a35b30;font-size:.78rem;font-weight:700;white-space:nowrap}.filter-section,.stock-section{padding:25px 0;border-bottom:1px solid var(--line)}.section-heading{display:flex;align-items:end;justify-content:space-between;gap:20px;margin-bottom:15px}.section-heading.compact{margin:21px 0 10px}.section-heading h2{font-size:1.5rem}.filter-pills,.stock-chips{display:flex;flex-wrap:wrap;gap:9px}.filter-pill,.stock-chip{border:1px solid var(--line);border-radius:999px;background:#fffdf9;color:#5e554e;padding:10px 14px;font-size:.83rem;font-weight:700}.filter-pill.active{background:var(--cocoa);border-color:var(--cocoa);color:#fff}.stock-chip.selected{background:#dff1eb;border-color:#86bda9;color:#35675c}.stock-chip:before{content:"+";margin-right:5px}.stock-chip.selected:before{content:"✓"}.match-summary{margin-top:17px;display:flex;align-items:center;gap:8px;font-size:.83rem;color:#5b665e}.match-dot{height:9px;width:9px;border-radius:50%;background:#6cad94}.catalog-section{padding:32px 0}.catalog-heading{align-items:center}.search-box{display:flex;align-items:center;gap:8px;background:#fff;border:1px solid var(--line);border-radius:13px;padding-left:13px;width:min(100%,250px);color:#9d8c7d}.search-box input{border:0;padding:11px 3px;width:100%;background:transparent}.search-box input:focus{box-shadow:none}.recipe-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(210px,1fr));gap:18px}.recipe-card{position:relative;display:flex;flex-direction:column;border:1px solid var(--line);border-radius:19px;background:#fffdf9;overflow:hidden;min-height:294px;transition:transform .2s,box-shadow .2s}.recipe-card:hover{transform:translateY(-4px);box-shadow:var(--shadow)}.recipe-image{height:135px;position:relative;background:linear-gradient(135deg,#fae6bf,#f6d08d);overflow:hidden}.recipe-image img{height:100%;width:100%;object-fit:cover;display:block}.recipe-image.no-photo:before{content:"";position:absolute;width:120px;height:120px;border-radius:50%;background:#f9ddc6;left:50%;top:55%;transform:translate(-50%,-50%);box-shadow:inset 0 0 0 8px rgba(255,255,255,.6)}.recipe-image.no-photo:after{content:"✦";font-size:2rem;position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);color:#e3a542}.recipe-card:nth-child(3n) .recipe-image.no-photo{background:linear-gradient(135deg,#dcefe7,#a4cbbf)}.recipe-card:nth-child(3n+1) .recipe-image.no-photo{background:linear-gradient(135deg,#f9ddc6,#f3b496)}.age-tag{position:absolute;top:10px;left:10px;border-radius:99px;background:rgba(255,255,255,.92);padding:5px 8px;font-size:.66rem;font-weight:700;color:#675c54}.match-tag{position:absolute;top:10px;right:10px;border-radius:99px;background:#e2f4eb;padding:5px 8px;font-size:.65rem;font-weight:700;color:#3c7763}.card-content{padding:14px 15px 16px;display:flex;flex-direction:column;flex:1}.card-content h3{font-size:1.08rem;line-height:1.17}.card-meta{margin:8px 0 15px;font-size:.75rem;color:#786e65}.card-actions{margin-top:auto;display:flex;justify-content:space-between;align-items:center;gap:6px}.detail-button{border:0;background:none;padding:6px 0;color:#a35e42;font-size:.77rem;font-weight:700}.add-button{border:0;border-radius:10px;background:var(--cocoa);color:#fff;padding:8px 10px;font-size:.74rem;font-weight:700}.empty-state{border:1px dashed #d5c8b8;border-radius:18px;padding:30px;text-align:center;color:#766c62}.drawer{position:fixed;z-index:30;right:0;top:0;height:100dvh;width:min(410px,100%);padding:28px;background:#fffdf9;box-shadow:-16px 0 45px rgba(56,44,33,.16);transform:translateX(105%);transition:transform .28s;display:flex;flex-direction:column}.drawer.open{transform:translateX(0)}.drawer-head{display:flex;justify-content:space-between;align-items:start}.icon-button{display:grid;place-items:center;border:0;border-radius:50%;height:35px;width:35px;background:#f3e9dc;color:var(--cocoa);font-size:1.45rem;line-height:1}.shopping-list{flex:1;margin:22px 0;overflow:auto}.shopping-group{margin:0 0 20px}.shopping-group h3{font-family:"DM Sans";font-size:.75rem;letter-spacing:.1em;color:#8a7a6d;text-transform:uppercase;margin:0 0 8px}.shopping-row{display:flex;justify-content:space-between;align-items:center;border-bottom:1px solid #f1e8dd;padding:11px 2px;font-size:.91rem}.shopping-row button{border:0;background:none;color:#b26d53;font-weight:700}.drawer-foot{display:grid;grid-template-columns:1fr 1.25fr;gap:10px}.backdrop{position:fixed;z-index:25;inset:0;background:rgba(50,42,35,.3)}.recipe-dialog{border:0;padding:0;max-width:min(630px,calc(100% - 30px));max-height:calc(100dvh - 35px);border-radius:23px;background:#fffdf9;color:var(--ink);box-shadow:var(--shadow)}.recipe-dialog::backdrop{background:rgba(50,42,35,.36)}.recipe-dialog>div{padding:0 30px 30px}.dialog-close{position:absolute;right:18px;top:18px;z-index:2}.dialog-hero{height:190px;margin:0 -30px 22px;overflow:hidden;background:#f9ddc6}.dialog-hero img{width:100%;height:100%;object-fit:cover}.dialog-age{font-size:.79rem;color:#a35e42;font-weight:700;margin:0 0 8px}.ingredient-list{display:flex;flex-wrap:wrap;gap:7px;margin:17px 0}.ingredient-list span{font-size:.78rem;padding:7px 9px;background:#f9eee1;border-radius:99px}.dialog-steps{font-size:.9rem;line-height:1.6;color:#645a53;padding-left:19px}.dialog-note{font-size:.78rem;line-height:1.5;color:#786e65;background:#e8f4ef;padding:12px;border-radius:12px}.dialog-actions{display:flex;gap:10px;margin-top:20px}.safety-dialog{padding:32px;max-width:550px}.safety-dialog h2{font-size:1.85rem;margin-bottom:18px}.safety-dialog ul{padding-left:19px;color:#5f554e;line-height:1.55;font-size:.91rem}.safety-dialog li+li{margin-top:10px}.toast{position:fixed;z-index:50;left:50%;bottom:25px;transform:translate(-50%,150%);background:var(--cocoa);color:#fff;border-radius:99px;padding:11px 16px;font-size:.84rem;font-weight:700;box-shadow:var(--shadow);transition:transform .25s}.toast.show{transform:translate(-50%,0)}
@media(max-width:850px){.auth-screen{grid-template-columns:1fr}.auth-story{min-height:365px;padding:28px 28px}.story-copy{margin-top:54px;max-width:55%}.story-copy h1{font-size:2.15rem}.story-copy p:not(.eyebrow){font-size:.93rem;margin:12px 0}.story-plate{width:230px;right:25px;bottom:-18px}.story-note{display:none}.auth-panel{padding:45px 25px}.app-layout{display:block}.side-nav{display:none}.dashboard{padding:34px 24px}.topbar{height:68px}.welcome-row{align-items:start}.day-chip{display:none}}@media(max-width:560px){.auth-story{min-height:325px}.story-copy{max-width:62%;margin-top:46px}.story-copy h1{font-size:1.8rem}.story-copy p:not(.eyebrow){font-size:.83rem}.story-plate{width:190px;right:-12px}.welcome-row h1{font-size:2rem}.safety-banner{align-items:start}.safety-banner button{white-space:normal}.section-heading{align-items:start;flex-direction:column}.catalog-heading{gap:12px}.search-box{width:100%}.recipe-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:11px}.recipe-card{min-height:270px;border-radius:15px}.recipe-image{height:105px}.card-content{padding:11px}.card-content h3{font-size:.95rem}.card-meta{font-size:.68rem;margin:7px 0 10px}.card-actions{flex-direction:column;align-items:stretch}.detail-button{text-align:left}.add-button{padding:7px}.shopping-label,.profile-button small{display:none}.safety-dialog{padding:26px 21px}.recipe-dialog>div{padding:0 20px 24px}.dialog-hero{margin:0 -20px 20px}.dialog-actions{flex-direction:column}}

/* Rincian resep terverifikasi terhadap dokumen sumber */
.recipe-dialog{overflow-y:auto}
.recipe-status{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin:14px 0}
.recipe-status b,.recipe-status span{border-radius:999px;padding:7px 10px;font-size:.74rem}
.recipe-status b{background:#fff0c9;color:#7b5624}.recipe-status span{background:#f2ece5;color:#645a53}
.nutrition-warning{font-size:.8rem;line-height:1.55;color:#704c33;background:#fff1dc;border-left:4px solid var(--coral);padding:12px 13px;border-radius:4px 12px 12px 4px}
.button-review{border:1px solid #9fcdbd;background:linear-gradient(135deg,#e5f5ef,#f4fbf8);color:#35685a;box-shadow:0 9px 20px rgba(77,145,120,.13)}
.local-review-note{margin:-7px 3px 0;color:#6d7d76;font-size:.72rem;line-height:1.45;text-align:center}

/* 2026-09 mobile catalog refresh: compact filters + ad-ready recipe cards */
.menu-promo{position:relative;min-height:238px;margin:22px 0 18px;border-radius:25px;overflow:hidden;background:#d59b3f;box-shadow:0 18px 38px rgba(104,72,45,.17)}
.menu-promo>img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;object-position:50% 49%;transform:scale(1.015)}
.menu-promo-shade{position:absolute;inset:0;background:linear-gradient(90deg,rgba(61,39,28,.8) 0%,rgba(61,39,28,.53) 42%,rgba(61,39,28,.04) 76%),linear-gradient(0deg,rgba(63,40,25,.2),transparent 58%)}
.menu-promo-copy{position:absolute;z-index:1;left:22px;top:50%;width:52%;transform:translateY(-50%);color:#fff}
.menu-promo-copy>span{display:inline-block;margin-bottom:9px;padding:6px 9px;border:1px solid rgba(255,255,255,.55);border-radius:999px;background:rgba(255,255,255,.15);font-size:.59rem;font-weight:800;letter-spacing:.11em;backdrop-filter:blur(6px)}
.menu-promo-copy h2{font-size:1.75rem;line-height:1.02;text-shadow:0 2px 18px rgba(41,25,17,.28)}
.menu-promo-copy p{margin:9px 0 0;font-size:.76rem;line-height:1.42;color:rgba(255,255,255,.9)}
.compact-filter-panel{margin:0 0 8px;padding:18px;border:1px solid rgba(173,116,72,.15);border-radius:22px;background:linear-gradient(135deg,rgba(255,255,255,.94),rgba(255,248,235,.95)),radial-gradient(circle at 10% 10%,rgba(245,201,92,.24),transparent 28%);box-shadow:0 10px 28px rgba(98,72,49,.07)}
.compact-filter-head{display:flex;align-items:end;justify-content:space-between;gap:14px;margin-bottom:13px}
.compact-filter-head .eyebrow{margin-bottom:4px}.compact-filter-head h2{font-size:1.35rem}
.filter-toolbar{display:grid;grid-template-columns:1fr 1fr;gap:9px}
.select-filter{position:relative;display:grid;gap:3px;min-width:0;padding:8px 30px 8px 11px;border:1px solid #e5d9c8;border-radius:14px;background:#fff;color:#75675d}
.select-filter:after{content:"⌄";position:absolute;right:10px;top:50%;transform:translateY(-22%);color:#b1674f;font-size:1.05rem;pointer-events:none}
.select-filter span{font-size:.57rem;line-height:1;text-transform:uppercase;letter-spacing:.09em;font-weight:800;color:#9a8878}
.select-filter select{width:100%;border:0;outline:0;appearance:none;background:transparent;color:#493f38;font-size:.76rem;font-weight:800;line-height:1.2}
.stock-toggle{grid-column:1/-1;min-height:50px;display:grid;grid-template-columns:32px 1fr 20px;align-items:center;gap:8px;padding:7px 11px;border:1px solid #b6d4c8;border-radius:15px;background:linear-gradient(135deg,#e4f3ed,#f6fbf8);color:#355f54;text-align:left}
.stock-toggle-icon{display:grid;place-items:center;width:30px;height:30px;border-radius:10px;background:#69a992;color:#fff;font-size:1.1rem}.stock-toggle small,.stock-toggle b{display:block}.stock-toggle small{font-size:.57rem;text-transform:uppercase;letter-spacing:.08em}.stock-toggle b{margin-top:1px;font-size:.77rem}.stock-chevron{font-size:1.2rem;transition:transform .2s}.stock-toggle[aria-expanded="true"] .stock-chevron{transform:rotate(180deg)}
.stock-panel{margin-top:12px;padding-top:12px;border-top:1px dashed #ddcfbd}.stock-panel-head{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:10px}.stock-panel-head p{margin:0;color:#73685f;font-size:.72rem;line-height:1.4}.stock-panel-head .link-button{font-size:.72rem;white-space:nowrap}
.nutrition-disclaimer{margin:-6px 0 14px;padding:9px 11px;border-radius:12px;background:#fff2db;color:#76533c;font-size:.68rem;line-height:1.4}.nutrition-disclaimer b{color:#b05d40}
.recipe-grid{align-items:stretch}
.recipe-card{--card-accent:#ef7c5f;--card-soft:#fff0e8;--card-deep:#934b37;border:0;background:radial-gradient(circle at 92% 2%,rgba(255,255,255,.92),transparent 24%),linear-gradient(145deg,#fff,var(--card-soft));box-shadow:0 10px 24px rgba(70,52,40,.11);isolation:isolate}
.recipe-card:before{content:"";position:absolute;z-index:-1;right:-28px;bottom:65px;width:90px;height:90px;border-radius:50%;background:repeating-radial-gradient(circle,rgba(255,255,255,.6) 0 2px,transparent 3px 8px);opacity:.46}
.theme-ayam{--card-accent:#ef765d;--card-soft:#fff0e5;--card-deep:#974533}.theme-ikan{--card-accent:#44a3aa;--card-soft:#e6f5f2;--card-deep:#286e75}.theme-daging{--card-accent:#b96876;--card-soft:#f8e9ee;--card-deep:#7e3e4c}.theme-telur{--card-accent:#e9aa32;--card-soft:#fff4d7;--card-deep:#8b5d0f}.theme-nabati{--card-accent:#64a86f;--card-soft:#eaf5e7;--card-deep:#3d7147}
.recipe-image{height:148px;background:var(--card-soft)}
.recipe-image:after{content:"";position:absolute;inset:0;box-shadow:inset 0 -55px 55px -35px rgba(31,23,18,.58);pointer-events:none}
.recipe-image img,.recipe-grid-visual{filter:saturate(1.12) contrast(1.04)}
.age-tag{z-index:2;top:8px;left:8px;border:1px solid rgba(255,255,255,.58);background:rgba(255,255,255,.9);box-shadow:0 4px 13px rgba(48,35,26,.12);font-size:.58rem}
.match-tag{z-index:2;top:8px;right:8px;font-size:.56rem}
.ingredient-peek{position:absolute;z-index:2;right:7px;top:41px;display:flex;flex-direction:column;gap:4px}.ingredient-peek span{display:grid;place-items:center;width:27px;height:27px;border:1px solid rgba(255,255,255,.75);border-radius:50%;background:rgba(255,253,249,.9);font-size:.85rem;box-shadow:0 4px 10px rgba(45,31,22,.18);backdrop-filter:blur(5px)}
.ingredient-ribbon{position:absolute;z-index:2;left:8px;right:39px;bottom:7px;display:grid;gap:1px;color:#fff;text-shadow:0 1px 4px rgba(34,24,19,.55)}
.ingredient-ribbon span{font-size:.49rem;line-height:1.1;text-transform:uppercase;letter-spacing:.08em;opacity:.84}.ingredient-ribbon b{font-size:.58rem;line-height:1.18;text-align:left;text-transform:capitalize}
.card-content{padding:11px 10px 10px}.card-category{margin:0 0 5px;color:var(--card-deep);font-size:.59rem;font-weight:800;text-transform:uppercase;letter-spacing:.07em}.card-content h3{min-height:3.45em;font-size:.94rem;line-height:1.15}
.nutrition-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:5px}.nutrition-grid>div{min-width:0;border-radius:9px;background:rgba(255,255,255,.72);padding:7px 4px 6px;text-align:center;box-shadow:inset 0 0 0 1px rgba(106,75,54,.045)}.nutrition-grid b,.nutrition-grid span{display:block;white-space:nowrap}.nutrition-grid b{color:var(--card-deep);font-size:.75rem;line-height:1.05}.nutrition-grid span{margin-top:3px;color:#81736a;font-size:.47rem;line-height:1.05}
.nutrition-grid-card{grid-template-columns:1fr 1fr;margin-top:9px}.nutrition-grid-card>div{display:grid;grid-template-columns:auto 1fr;align-items:end;gap:3px;text-align:left;padding-left:7px}.nutrition-grid-card span{margin:0 0 1px;overflow:hidden;text-overflow:ellipsis}
.nutrition-basis{margin:5px 0 8px;color:#8f7b6c;font-size:.52rem;text-align:center}
.card-actions{gap:7px}.detail-button{flex:1;min-height:34px;border-radius:10px;background:rgba(255,255,255,.74);padding:7px;color:var(--card-deep);text-align:center}.add-button{display:grid;place-items:center;flex:0 0 34px;width:34px;min-height:34px;padding:0;border-radius:10px;background:var(--card-accent);font-size:1rem;box-shadow:0 7px 14px color-mix(in srgb,var(--card-accent) 24%,transparent);transition:transform .18s ease,box-shadow .18s ease}.add-button.is-selected{box-shadow:inset 0 0 0 2px rgba(255,255,255,.82),0 7px 14px color-mix(in srgb,var(--card-accent) 28%,transparent)}.add-button:active{transform:scale(.92)}
.dialog-main-ingredients{display:grid;gap:3px;margin:13px 0;padding:11px 12px;border-radius:13px;background:#eff7f3}.dialog-main-ingredients span{font-size:.61rem;font-weight:800;text-transform:uppercase;letter-spacing:.1em;color:#60907f}.dialog-main-ingredients b{font-size:.84rem;text-transform:capitalize}.nutrition-grid-dialog{margin:10px 0 8px}.nutrition-grid-dialog>div{background:#fff2df;padding:10px 5px}.nutrition-grid-dialog b{font-size:1rem}.nutrition-grid-dialog span{font-size:.58rem}

@media(max-width:560px){
  .dashboard{padding:24px 16px 34px}.topbar{padding:0 16px}.welcome-row h1{font-size:1.85rem}.welcome-row .muted{font-size:.82rem}
  .safety-banner{margin:20px 0 18px;padding:12px}.safety-banner p{font-size:.72rem}.safety-banner button{font-size:.67rem}
  .menu-promo{min-height:230px;margin-top:0}.menu-promo-copy{left:18px;width:55%}.menu-promo-copy h2{font-size:1.55rem}.menu-promo-copy p{font-size:.69rem}
  .compact-filter-panel{padding:14px}.catalog-section{padding-top:24px}.catalog-heading{align-items:stretch}.catalog-heading h2{font-size:1.4rem}
  .recipe-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:11px}.recipe-card{min-height:385px;border-radius:18px}.recipe-image{height:140px}.card-content{padding:10px 9px}.card-content h3{font-size:.9rem;min-height:4.5em}.card-actions{margin-top:auto;flex-direction:row;align-items:center}.detail-button{text-align:center}.add-button{min-height:34px;padding:0}
  .stock-chip{min-height:37px;padding:8px 10px;font-size:.72rem}
  .nutrition-grid-dialog{grid-template-columns:repeat(2,1fr)}
}

@media(max-width:370px){
  .dashboard{padding-left:12px;padding-right:12px}.menu-promo-copy h2{font-size:1.4rem}.select-filter{padding-right:24px}.select-filter select{font-size:.7rem}
  .recipe-grid{gap:8px}.recipe-card{min-height:400px}.recipe-image{height:128px}.card-content h3{font-size:.84rem}.nutrition-grid-card>div{display:block;text-align:center;padding-left:4px}.nutrition-grid-card span{margin-top:2px}
}

/* Performa ponsel: browser hanya merender kartu yang mendekati viewport. */
.recipe-card{content-visibility:auto;contain-intrinsic-size:430px}

/* Profil makan tersimpan hanya di perangkat ini; panel tetap ringkas di ponsel. */
.profile-toggle{margin-top:9px;border-color:#d9c7e4;background:linear-gradient(135deg,#f8effb,#fff9fd);color:#69506f}
.profile-toggle .stock-toggle-icon{background:#aa79b4}.child-profile-panel{margin-top:12px;padding:14px;border-top:1px dashed #ddcfbd;background:linear-gradient(145deg,rgba(255,255,255,.72),rgba(254,247,255,.78));border-radius:16px}.profile-intro{display:flex;align-items:start;justify-content:space-between;gap:10px;margin-bottom:14px}.profile-intro .eyebrow{margin:0 0 4px}.profile-intro h3{font-size:1.02rem}.profile-intro .link-button{font-size:.72rem}.profile-group{padding:12px;border:1px solid #eadfec;border-radius:14px;background:rgba(255,255,255,.68)}.profile-group+.profile-group{margin-top:10px}.profile-group h4{margin:0;color:#4d3c50;font-size:.78rem}.profile-group p{margin:5px 0 9px;color:#766b73;font-size:.67rem;line-height:1.4}.profile-options,.profile-selected{display:flex;flex-wrap:wrap;gap:6px}.profile-option,.profile-chip{border:1px solid #e0d3e2;border-radius:999px;background:#fff;color:#6b586e;padding:7px 9px;font-size:.68rem;font-weight:800}.profile-option.selected{border-color:#c37073;background:#fff0ef;color:#96484b}.profile-add-row{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:7px;margin-top:9px}.profile-add-row select{min-width:0;border:1px solid #ddcfdf;border-radius:10px;background:#fff;color:#564759;padding:8px;font-size:.7rem;font-weight:700}.profile-add-button{border:0;border-radius:10px;background:#82618a;color:#fff;padding:8px 10px;font-size:.7rem;font-weight:800}.profile-selected{margin-top:9px}.profile-chip{display:inline-flex;align-items:center;gap:4px}.profile-chip span{font-size:.9rem;line-height:.7}.profile-chip.danger{border-color:#e9b8b5;background:#fff1ef;color:#a34b47}.profile-chip.liked{border-color:#b7dabb;background:#eff9ee;color:#3f7b49}.profile-empty{color:#978b94;font-size:.66rem}.profile-safety-note{margin:10px 1px 0;color:#75666f;font-size:.65rem;line-height:1.42}.profile-safety-note b{color:#a35355}
@media(max-width:560px){.child-profile-panel{padding:12px}.profile-group{padding:10px}.profile-option,.profile-chip{font-size:.65rem;padding:7px 8px}.profile-add-row select{font-size:.66rem}}
.recipe-grid-visual{background-image:none;transition:opacity .18s ease;opacity:.72}
.recipe-grid-visual.is-loaded{opacity:1}
.recipe-image img{background:linear-gradient(135deg,#fae6bf,#f6d08d)}
.load-more-recipes{display:flex;width:min(100%,340px);margin:20px auto 0;background:#fff0dc;color:#a45238;border:1px solid #f1d6ba}
.shopping-summary{margin:0 0 16px;padding:10px 12px;border-radius:12px;background:#fff1d8;color:#805338;font-size:.82rem;font-weight:800}
.shopping-ingredient{gap:12px;min-height:49px}.shopping-ingredient span{min-width:0;text-transform:capitalize}.shopping-ingredient button{flex:0 0 auto;border:1px solid #b9d8c7;border-radius:999px;background:#eaf6ef;color:#3d7359;padding:7px 10px;font-size:.71rem;white-space:nowrap}
.shopping-at-home{margin-top:23px;padding-top:17px;border-top:1px dashed #d7c9b9}.shopping-at-home .shopping-row span{color:#7d827c;text-decoration:line-through}.shopping-at-home .shopping-row button{border-color:#edcfbd;background:#fff4ea;color:#a65e41}.shopping-all-ready{padding:12px;border-radius:12px;background:#eaf6ef;color:#47745f;font-size:.78rem;line-height:1.45}.shopping-selected-menus{margin-top:24px}
.app-shell.has-selected-recipes{padding-bottom:130px}
.selected-actions{position:fixed;z-index:20;left:50%;bottom:calc(10px + env(safe-area-inset-bottom));transform:translateX(-50%);width:min(calc(100% - 24px),460px);padding:10px 11px 11px;border:1px solid #efd9bc;border-radius:18px;background:rgba(255,253,249,.97);box-shadow:0 15px 40px rgba(69,59,52,.2);-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px)}
.selected-history-trigger{display:block;width:100%;margin:0 0 8px;padding:2px;border:0;background:transparent;color:#86543e;font-size:.72rem;font-weight:800;text-align:center}.selected-history-trigger:focus-visible{outline:2px solid #e5ad66;outline-offset:3px;border-radius:7px}.selected-actions-buttons{display:grid;grid-template-columns:1fr 1fr;gap:8px}.selected-actions-buttons .button{min-width:0;min-height:48px;padding:8px 9px;font-size:.76rem;line-height:1.18;text-align:center;white-space:normal}.selected-actions-buttons .button-secondary{background:#e9f5ed;color:#356d53}.selected-actions-buttons .button-primary{box-shadow:none}
.drawer-head-actions{display:flex;align-items:center;gap:10px}.drawer-head-actions .link-button{font-size:.72rem;white-space:nowrap}
.history-dialog>div{padding-top:30px}.history-dialog h2{font-size:1.7rem}.history-intro{margin:10px 0 18px;color:#6d625a;font-size:.8rem;line-height:1.5}.history-list{display:grid;gap:9px}.history-row{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:10px;align-items:center;padding:12px;border:1px solid #eee0d1;border-radius:14px;background:#fffaf4}.history-row p{margin:0;color:#46372f;font-family:Fredoka,sans-serif;font-size:.91rem;line-height:1.15}.history-row span{display:block;margin-top:5px;color:#81736a;font-size:.64rem;line-height:1.3}.history-row-actions{display:flex;flex-direction:column;gap:5px}.history-row-actions button{border:0;border-radius:8px;background:#f5eadc;color:#80543c;padding:6px 8px;font-size:.65rem;font-weight:800}.history-row-actions button:last-child{background:#fff0ef;color:#ad554f}.history-clear-selection-button{display:flex;width:100%;margin-top:16px;background:#fff0ef;color:#a64b47;border:1px solid #f1c6c2}
@media(max-width:370px){.selected-actions-buttons .button{font-size:.69rem;padding:7px 6px}}
.dialog-section-title{font-family:"DM Sans",Arial,sans-serif;font-size:.82rem;letter-spacing:.09em;text-transform:uppercase;color:#806f62;margin:23px 0 10px}
.quantity-list{list-style:none;padding:0;margin:0;display:grid;gap:7px}
.quantity-list li{font-size:.86rem;line-height:1.45;background:#faf3e9;border:1px solid #f0e4d5;border-radius:11px;padding:9px 11px}
.serving-box,.pairing-box{font-size:.84rem;line-height:1.55;color:#5f554e;border-radius:12px;padding:12px 13px;margin:10px 0}
.serving-box{background:#fff7e4;border:1px solid #f1deb2}
.pairing-box{background:#f1f7f3;border:1px solid #dceadf}
.safety-card-grid{display:grid;grid-template-columns:1fr 1fr;gap:9px}
.safety-card-grid article{padding:12px;border-radius:13px;background:#f8f3ed;border:1px solid #ede3d8}
.safety-card-grid article b{display:block;font-size:.76rem;color:#9a563e;margin-bottom:5px}
.safety-card-grid article p{font-size:.77rem;line-height:1.48;color:#615750;margin:0}
@media(max-width:560px){.safety-card-grid{grid-template-columns:1fr}.recipe-dialog h2{font-size:1.55rem}.dialog-steps{font-size:.86rem}.quantity-list li{font-size:.82rem}}
