:root{--petrol:#176E77;--blue:#5A9DB6;--olive:#7E9660;--sun:#EFC75E;--coral:#E58D75;--sage:#E8EFEA;--ivory:#F9F8F0;--ink:#183D49;--muted:#617C82;--line:#E0E9E3;--white:#fff;--shadow:0 10px 25px #234e4820;color-scheme:light}*{box-sizing:border-box}html,body{margin:0;min-height:100%;background:var(--ivory);color:var(--ink);font:15px/1.48 -apple-system,BlinkMacSystemFont,"Segoe UI",Arial,sans-serif}button,input,textarea,select{font:inherit}button{cursor:pointer;-webkit-tap-highlight-color:transparent}button:disabled{opacity:.45;cursor:not-allowed}button:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible{outline:2px solid var(--blue);outline-offset:3px}h1,h2,h3,p{margin:0}h1{font-size:26px;line-height:1.16;letter-spacing:-.7px}h2{font-size:19px;letter-spacing:-.3px;line-height:1.3}h3{font-size:15px;line-height:1.3}.eyebrow{text-transform:uppercase;letter-spacing:1.1px;color:var(--petrol);font-size:10px;font-weight:790}.subtle{color:var(--muted)}.tiny{font-size:11px}.small{font-size:13px}.mt{margin-top:16px}.page-head{margin-bottom:19px;display:grid;gap:5px}.app-shell{max-width:700px;min-height:100dvh;margin:auto;background:var(--ivory)}.topbar{height:69px;padding:12px 18px;display:flex;justify-content:space-between;align-items:center}.brand{background:none;border:0;color:var(--ink);display:flex;align-items:center;gap:9px;font-size:20px;font-weight:800;letter-spacing:-.6px;padding:0}.brand .accent{color:var(--petrol)}.brand img{height:39px;width:39px;object-fit:contain;border-radius:13px}.topcircle{width:39px;height:39px;border:0;border-radius:50%;background:var(--sage);display:grid;place-items:center;color:var(--petrol)}svg{width:20px;height:20px;stroke:currentColor;fill:none;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}.topcircle svg{width:21px}.main{padding:12px 18px 115px;min-height:60vh}.tabs{position:fixed;left:50%;bottom:0;transform:translateX(-50%);width:min(100%,700px);height:calc(76px + env(safe-area-inset-bottom));padding:9px 6px calc(7px + env(safe-area-inset-bottom));background:#fffffff5;backdrop-filter:blur(16px);border-top:1px solid var(--line);display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:1px;z-index:20}.tab{border:0;background:none;display:flex;flex-direction:column;align-items:center;gap:2px;color:#839797;font-size:10px;min-width:0;padding:0}.tab svg{width:21px;height:21px}.tab .tab-icon{padding:4px 17px;border-radius:20px;display:grid;place-items:center}.tab.current{color:var(--petrol);font-weight:760}.tab.current .tab-icon{background:var(--sage)}.card{background:white;border-radius:19px;border:1px solid var(--line);padding:15px}.card.soft{background:var(--sage);border-color:transparent}.card.sun{background:#fff3d9;border-color:transparent}.section{margin-top:25px}.section-head{display:flex;justify-content:space-between;align-items:center;gap:10px;margin-bottom:11px}.row{display:flex;align-items:center;gap:10px}.between{justify-content:space-between}.grow{flex:1;min-width:0}.stack{display:grid;gap:10px}.grid2{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.grid3{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}.pill{font-size:11px;font-weight:690;background:var(--sage);border-radius:30px;color:var(--petrol);padding:7px 11px}.chipbar{display:flex;gap:7px;overflow-x:auto;padding:3px 0 9px;scrollbar-width:none}.chipbar::-webkit-scrollbar{display:none}.chip{white-space:nowrap;border:1px solid var(--line);background:white;color:var(--ink);border-radius:30px;padding:9px 12px;font-size:12px;font-weight:690}.chip.active{background:var(--petrol);color:#fff;border-color:var(--petrol)}.btn{border:0;border-radius:14px;padding:12px 16px;font-weight:720;color:white;background:var(--petrol);min-height:43px}.btn.outline{background:white;border:1px solid #b8d1c8;color:var(--petrol)}.btn.soft{background:var(--sage);color:var(--petrol)}.btn.warn{background:#fff0d7;color:#966d20}.btn.sm{padding:8px 11px;min-height:34px;font-size:12px}.btn.full{width:100%}.icon-btn{height:35px;min-width:35px;background:var(--sage);border:0;border-radius:50%;color:var(--petrol);display:grid;place-items:center}.icon-btn svg{width:17px}.field,.textarea,select{background:white;border:1px solid var(--line);border-radius:13px;min-height:44px;padding:11px 12px;color:var(--ink);width:100%}.textarea{min-height:75px;resize:vertical}.form-row{display:grid;gap:6px;margin-bottom:13px}.form-row label{font-weight:710;font-size:12px}.forms2{display:grid;grid-template-columns:1fr 1fr;gap:10px}.notice{font-size:12px;line-height:1.5;background:#FFF3DC;border-radius:13px;padding:12px;color:#806026}.notice.ok{background:var(--sage);color:#3e6651}.notice.blue{background:#e4f0f4;color:#315a69}.stat{padding:13px;border-radius:16px;background:white}.stat b{font-size:24px;display:block}.stat small{color:var(--muted);font-size:11px}.photo{background:linear-gradient(135deg,#e2ebe4,#f2e8d6);border-radius:15px;position:relative;display:grid;place-items:center;overflow:hidden;aspect-ratio:1.15}.photo::before{content:'';display:block;position:absolute;width:62%;aspect-ratio:1;border:10px solid rgba(255,255,255,.82);border-radius:50%;background:radial-gradient(circle at 30% 25%,#88a764 0 17%,#d9b46e 18% 33%,#bc7654 34% 45%,#ead4ab 46% 65%,#9cba7c 66% 72%,#f6e3ac 73%);transform:rotate(-17deg);box-shadow:0 8px 20px #1e444025}.photo svg{position:absolute;z-index:1;bottom:10px;right:12px;width:26px;height:26px;opacity:.55;color:#fff}.photo .photo-note{position:absolute;bottom:8px;left:8px;background:#ffffffd9;color:#657b75;font-size:9px;letter-spacing:.2px;padding:4px 7px;border-radius:9px;z-index:2}.photo.cover{aspect-ratio:1.65}.photo.cover::before{width:41%}.photo.rose{background:linear-gradient(125deg,#eedde0,#faeecf)}.photo.blue{background:linear-gradient(130deg,#d4e7e9,#f1ecd9)}.photo.green{background:linear-gradient(130deg,#deebdc,#f3ebd0)}.photo.gold{background:linear-gradient(130deg,#f0e1c4,#f2d3b6)}.recipe-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.recipe-tile{border:1px solid var(--line);padding:6px;background:white;border-radius:18px;text-align:left;color:var(--ink);min-width:0}.recipe-tile .photo{border-radius:13px;aspect-ratio:1.05}.tile-name{font-size:13px;font-weight:730;line-height:1.25;margin:9px 4px 6px;min-height:34px;display:block}.tile-meta{font-size:11px;color:var(--muted);margin:0 4px 6px;display:flex;justify-content:space-between;gap:4px}.meal{background:white;border-radius:16px;border:1px solid var(--line);padding:11px;display:flex;align-items:center;gap:10px}.meal .photo{width:62px;aspect-ratio:1;flex:none;border-radius:11px}.meal .photo::before{border-width:5px}.meal strong{font-size:13px;line-height:1.3;display:block}.meal small{font-size:10px;color:var(--muted);display:block;margin:2px 0}.meal-controls{display:flex;align-items:center;gap:5px}.meal-controls .btn{padding:7px 8px;white-space:nowrap}.hero .photo{margin-bottom:14px}.hero-actions{display:flex;gap:7px;flex-wrap:wrap}.tag{border-radius:40px;padding:5px 9px;background:var(--sage);font-size:10px;color:var(--petrol);font-weight:720}.calendar{padding:14px 9px}.weekdays,.cal-grid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:4px}.weekdays{text-align:center;font-size:10px;color:var(--muted);font-weight:730;margin:14px 0 8px}.cal-day{display:grid;justify-items:center;align-content:center;gap:5px;min-height:44px;background:#f9f8f0;border:0;border-radius:11px;color:var(--ink);font-weight:750;padding:4px}.cal-day.sel{background:var(--petrol);color:white}.cal-day.today:not(.sel){outline:1.5px solid var(--petrol)}.cal-dot{width:4px;height:4px;border-radius:50%;background:var(--olive)}.cal-day.sel .cal-dot{background:white}.day-dots{display:flex;gap:3px}.seg{background:#e9eeeb;border-radius:12px;display:flex;padding:4px;gap:2px}.seg button{flex:1;border:0;padding:9px 3px;background:transparent;color:var(--muted);border-radius:10px;font-size:12px;font-weight:730}.seg button.current{background:white;color:var(--petrol);box-shadow:0 1px 3px #0011}.ing-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:17px 8px}.ing{text-align:center;min-width:0}.ing-icon{height:70px;display:grid;place-items:center;color:var(--olive)}.ing-icon svg{height:54px;width:54px;stroke-width:1.1;filter:drop-shadow(0 8px 6px #335b481a)}.ing-name{font-size:12px;font-weight:720;line-height:1.3}.ing-qty{font-size:12px;font-weight:760;color:var(--petrol)}.step{border:1px solid var(--line);border-radius:16px;background:white;overflow:hidden;margin-top:10px}.step>button{width:100%;display:flex;align-items:center;gap:10px;background:white;border:0;padding:13px;color:var(--ink);text-align:left}.step-number{background:var(--sage);border-radius:50%;width:30px;height:30px;flex:none;display:grid;place-items:center;color:var(--petrol);font-weight:800}.step-body{padding:0 15px 15px;font-size:14px;line-height:1.63}.step-body p{margin-bottom:8px}.shopping-item{display:flex;align-items:center;gap:9px;padding:11px;background:#fff;border:1px solid var(--line);border-radius:15px;margin-top:8px}.shopping-item .grow strong{font-size:13px;display:block}.shopping-item .grow small{color:var(--muted);font-size:11px}.shopping-item.checked .grow strong{text-decoration:line-through;color:#869d9b}.shopping-item input{accent-color:var(--petrol);height:20px;width:20px}.store-tag{border:0;background:var(--sage);color:var(--petrol);border-radius:10px;padding:6px 9px;font-size:10px;max-width:90px;white-space:nowrap}.pantry-item{display:flex;align-items:center;gap:11px;background:white;padding:12px;border:1px solid var(--line);border-radius:15px;margin:8px 0}.pantry-item .grow strong{display:block;font-size:13px}.pantry-item .grow small{display:block;color:var(--muted);font-size:11px}.pantry-item .grow .soon{color:#9b6b26}.overlay{position:fixed;inset:0;background:#102b2a80;z-index:30;display:flex;align-items:flex-end;justify-content:center}.sheet{width:min(100%,700px);background:var(--ivory);border-radius:25px 25px 0 0;max-height:93dvh;overflow-y:auto;padding:11px 17px calc(22px + env(safe-area-inset-bottom));box-shadow:0 -12px 35px #193a351f}.handle{width:42px;height:5px;border-radius:5px;background:#cbd6d0;margin:0 auto 15px}.sheet-head{display:flex;justify-content:space-between;align-items:flex-start;gap:8px;margin-bottom:18px}.sheet-head h2{font-size:22px}.sheet-head .icon-btn{flex:none}.picker-row{width:100%;display:flex;gap:11px;align-items:center;background:white;border:1px solid var(--line);border-radius:15px;padding:10px;text-align:left;margin:7px 0;color:var(--ink)}.picker-row .photo{width:65px;border-radius:10px;flex:none;aspect-ratio:1}.picker-row .grow b{display:block;font-size:13px}.picker-row .grow small{display:block;font-size:11px;color:var(--muted)}.toast{position:fixed;z-index:100;bottom:calc(90px + env(safe-area-inset-bottom));left:50%;transform:translateX(-50%);max-width:90vw;background:var(--ink);color:#fff;border-radius:15px;padding:12px 15px;box-shadow:var(--shadow);font-size:13px}.profile-row{width:100%;display:flex;align-items:center;gap:11px;border:1px solid var(--line);background:white;padding:15px 12px;border-radius:16px;color:var(--ink);text-align:left}.profile-row svg:last-child{margin-left:auto}.empty{text-align:center;padding:35px 15px;color:var(--muted)}.empty svg{height:40px;width:40px;color:var(--olive)}.empty h3{margin:9px;color:var(--ink)}.fineprint{font-size:11px;color:var(--muted);line-height:1.55}.searchline{display:flex;gap:8px}.searchline .field{flex:1;min-width:0}.inline-note{background:var(--sage);padding:11px;border-radius:14px;font-size:12px;color:var(--ink)}.toggleline{display:flex;align-items:center;gap:9px}.toggleline input{accent-color:var(--petrol);height:18px;width:18px}.rule{border:0;border-top:1px solid var(--line);margin:14px 0}.print-hidden{}@media(min-width:700px){.app-shell{box-shadow:0 0 35px #243f3c13}.topbar{padding-inline:24px}.main{padding-inline:25px}}@media(max-width:350px){.main{padding:10px 12px 120px}.meal .photo{width:50px}.meal-controls .btn{font-size:11px}}
/* Compatibility and iPhone-style components for the complete 450-recipe application */
:root{--petrol:#176E77;--cream:#F9F8F0;--text:#183D49}
.app-shell{background:var(--ivory)}.tabs{display:grid}.tab.current{color:var(--sea)}.tab.current .tab-icon{background:var(--sage)}.tab-icon svg{width:21px;height:21px;stroke:currentColor;fill:none;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}.icon-btn svg,.btn svg,.meal svg,.profile-row svg,.profile-link svg,.notice svg,.stat svg,.photo svg,.card svg,.chip svg,.pills svg,.picker-row svg{height:20px;width:20px;flex:none;stroke:currentColor;fill:none;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}
.page-head{margin:4px 0 18px}.page-head h1{margin:5px 0 6px}.page-head p{line-height:1.5}.subtle{color:var(--muted)}.tiny{font-size:10px}.small{font-size:13px}.mt{margin-top:15px}.fineprint{font-size:11px;color:var(--muted);line-height:1.6}.btn.sm{padding:9px 11px;min-height:36px;font-size:12px;border-radius:12px}.btn.soft{background:var(--sage);color:var(--sea)}.btn.warn{background:#fff2d6;color:#8d6c2e}.card.soft{background:var(--sage)}.card.sun{background:#fff2d6}.card.hero{padding:9px 9px 15px}.card.hero h2{font-size:21px;line-height:1.2}.row.between{justify-content:space-between}.grid2{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.forms2{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.grid3{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}.stat{background:#fff;border-radius:17px;padding:14px;display:grid;gap:7px}.stat b{font-size:24px;color:var(--sea)}.stat small{font-size:11px;color:var(--muted)}.section{margin:21px 0}.section-head{display:flex;justify-content:space-between;align-items:center;gap:8px;margin-bottom:12px}.section-head h2{font-size:18px}.meal{min-height:84px}.meal .photo{width:65px;min-width:65px;height:66px;flex:none;border-radius:13px}.meal .grow{min-width:0}.meal small{display:block;font-size:10px;color:var(--muted);margin-bottom:4px}.meal strong{display:block;font-size:12px;line-height:1.35}.meal-controls{display:flex;flex-direction:column;gap:6px;align-items:end}.meal-controls .icon-btn{width:30px;height:30px}.meal-controls .btn{padding:7px 8px;font-size:11px;min-height:31px}.photo{position:relative;overflow:hidden;display:grid;place-items:center;aspect-ratio:1.12/1;min-height:100px;border-radius:15px;background:linear-gradient(132deg,#d9eadf 0%,#e7eed9 42%,#f9e5c7 100%)}.photo.rose{background:linear-gradient(145deg,#f3dedb,#f9e6cf)}.photo.gold{background:linear-gradient(145deg,#f6ebc7,#e4e8cb)}.photo.blue{background:linear-gradient(145deg,#ddecf0,#e8ece0)}.photo.green{background:linear-gradient(145deg,#dce8d8,#f8e9cf)}.photo:before{content:'';height:67%;aspect-ratio:1;border:11px solid rgba(255,255,255,.89);border-radius:50%;background:radial-gradient(circle at 58% 43%,#eed5a0 0 16%,#82a166 17% 33%,#d6a16d 34% 47%,#81a46e 48% 58%,#ecca8d 59%);box-shadow:0 10px 18px rgba(72,92,68,.12),inset 0 0 0 4px #fff9;transform:rotate(-7deg)}.photo.cover{height:215px;aspect-ratio:auto;border-radius:17px}.photo.cover:before{height:78%}.photo-note{position:absolute;bottom:7px;left:7px;font-size:9px;background:#fffd;border-radius:13px;padding:5px 8px;color:#6e8580}.photo.cover .photo-note{bottom:10px;left:12px}
.recipe-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.recipe-tile{display:flex;flex-direction:column;text-align:left;border:1px solid var(--border);border-radius:18px;background:#fff;color:var(--ink);padding:7px;overflow:hidden;box-shadow:var(--shadow)}.recipe-tile .photo{width:100%;aspect-ratio:1/.88}.recipe-tile .tile-name{font-size:13px;font-weight:740;line-height:1.4;display:block;margin:10px 3px 5px;flex:1}.tile-meta{display:flex;align-items:center;justify-content:space-between;gap:4px;font-size:10px;color:var(--muted);padding:3px}.searchline{display:flex;gap:8px;margin-top:17px}.searchline input{flex:1}.chipbar{display:flex;gap:7px;overflow-x:auto;scrollbar-width:none;padding:2px 2px 10px}.chipbar::-webkit-scrollbar{display:none}.chip{padding:9px 13px}.seg{display:flex;gap:4px;background:var(--sage);padding:4px;border-radius:14px}.seg button{flex:1;padding:9px 5px;background:none;border:0;color:var(--muted);font-size:11px;font-weight:750;border-radius:11px}.seg button.current{background:#fff;color:var(--sea);box-shadow:0 1px 5px #176e7714}.calendar{padding:15px 10px}.cal-grid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:4px}.cal-day{border:0;background:var(--ivory);border-radius:11px;min-height:45px;color:var(--ink);display:flex;flex-direction:column;gap:5px;align-items:center;justify-content:center;font-size:13px;font-weight:700}.cal-day.sel{background:var(--sea);color:white}.cal-day.today:not(.sel){box-shadow:inset 0 0 0 1.5px var(--sea)}.day-dots{display:flex;gap:3px}.cal-dot{width:4px;height:4px;border-radius:100%;background:var(--olive)}.cal-dot:nth-child(2){background:var(--blue)}.cal-dot:nth-child(3){background:var(--sun)}.cal-day.sel .cal-dot{background:white}.weekdays{margin:15px 0 8px}.picker-row{display:flex;align-items:center;gap:12px;width:100%;border:1px solid var(--border);border-radius:16px;background:#fff;color:var(--ink);padding:10px;text-align:left;margin:9px 0}.picker-row .photo{width:72px;min-width:72px;height:70px;min-height:70px}.picker-row b{font-size:13px}.picker-row small{display:block;font-size:10px;color:var(--muted);margin-top:6px}.notice{background:#fff3d8;border-radius:15px;padding:13px;color:#7a612f;line-height:1.5;font-size:12px}.notice.ok{background:var(--sage);color:var(--sea)}.pill{display:inline-flex}.form-row{display:grid;gap:6px}.form-row label{font-size:12px;font-weight:680}.stack .form-row{margin-bottom:2px}.ingredient-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px 7px}.ingredient-card{text-align:center;display:flex;flex-direction:column;align-items:center;gap:6px}.ingredient-card .ingredient-icon{width:60px;height:68px;display:grid;place-items:center;color:var(--olive)}.ingredient-card .ingredient-icon svg{width:50px;height:50px;filter:drop-shadow(0 7px 5px #183d4920)}.ingredient-card strong{font-size:11px;line-height:1.3}.ingredient-card small{font-size:11px;color:var(--sea);font-weight:760}.recipe-step{border:1px solid var(--border);border-radius:15px;padding:10px;background:#fff}.recipe-step .step-button{background:transparent;border:0;width:100%;display:flex;align-items:center;gap:9px;text-align:left;padding:5px;color:var(--ink);font-weight:730}.recipe-step p{font-size:13px;line-height:1.65;margin:11px 4px}.step-body{padding:8px 5px 3px}.step-num{height:30px;min-width:30px;border-radius:100%;background:var(--sage);color:var(--sea);display:grid;place-items:center}.shopping-item{display:flex;align-items:center;gap:10px;padding:12px;border-radius:15px;background:#fff;border:1px solid var(--border);margin-top:8px}.shopping-item input[type=checkbox]{accent-color:var(--sea);width:19px;height:19px;flex:none}.shopping-item strong{font-size:13px}.shopping-item small{display:block;color:var(--muted);font-size:11px;margin-top:4px}.shopping-item.checked{opacity:.65}.shopping-item.checked strong{text-decoration:line-through}.store-tag{font-size:10px;color:var(--sea);background:var(--sage);border:0;border-radius:14px;padding:7px 8px;display:flex;align-items:center;gap:3px}.store-tag svg{width:11px;height:11px}.pantry-item{display:flex;align-items:center;gap:10px;padding:12px;background:#fff;border-radius:16px;border:1px solid var(--border)}.pantry-item strong{font-size:13px}.pantry-item small{display:block;font-size:11px;color:var(--muted);margin-top:5px}.profile-row{width:100%;border:1px solid var(--border);background:white;color:var(--ink);display:flex;align-items:center;gap:12px;padding:16px;border-radius:16px;text-align:left}.profile-row strong{font-size:13px}.profile-row small{font-size:11px}.toggleline{display:flex;align-items:center;gap:10px;padding:11px;background:white;border-radius:12px;border:1px solid var(--border);font-size:13px}.toggleline input{accent-color:var(--sea)}.sheet{background:var(--ivory)}.sheet-head{margin-bottom:16px}.sheet h3{font-size:15px}.sheet .section{margin:20px 0}.sheet .card{box-shadow:none}.empty{padding:25px 10px}.empty svg{height:35px;width:35px;stroke:var(--olive);fill:none;stroke-width:2}.pwa-update{z-index:100}.brand-logo{display:grid;place-items:center}
@media (max-width:360px){.recipe-grid{gap:8px}.meal .photo{width:55px;min-width:55px}.meal-controls .btn{font-size:10px;padding:6px}}
