:root{--porcelain: #FBFBF8;--linen: #F1F0EA;--ink: #2B2E2A;--basil: #3E6B4F;--basil-dk: #2E5340;--plum: #6E4A73;--plum-lt: #F0E7F1;--sage-lt: #E4EDE6;--gray: #6E7370;--line: #DEDDD4;--radius: 14px;--shadow: 0 1px 2px rgba(43, 46, 42, .08), 0 6px 18px rgba(43, 46, 42, .07);--display: "Fraunces", serif;--body: "Nunito Sans", sans-serif}*{box-sizing:border-box;margin:0;padding:0}html,body{background:var(--porcelain);color:var(--ink);font-family:var(--body);font-size:16px;-webkit-font-smoothing:antialiased}#root{min-height:100dvh;display:flex;flex-direction:column}h1,h2,h3,.display{font-family:var(--display);font-weight:600;letter-spacing:-.01em}button{font-family:var(--body);cursor:pointer;border:none}button:focus-visible,a:focus-visible,input:focus-visible{outline:3px solid var(--plum);outline-offset:2px}@media (prefers-reduced-motion: reduce){*,*:before,*:after{animation:none!important;transition:none!important}}.plate{display:inline-block;width:34px;height:34px;border-radius:50%;background:linear-gradient(100deg,var(--basil) 0 38%,var(--plum) 38% 100%);border:3px solid #fff;box-shadow:0 0 0 1.5px var(--line);vertical-align:middle}.plate.lg{width:72px;height:72px;border-width:5px}.portion-bar{display:flex;height:10px;border-radius:5px;overflow:hidden;margin:10px 0 6px}.portion-bar .glp{background:var(--basil)}.portion-bar .fam{background:var(--plum)}.portion-legend{display:flex;justify-content:space-between;font-size:.78rem;color:var(--gray)}.portion-legend .glp-dot:before,.portion-legend .fam-dot:before{content:"";display:inline-block;width:9px;height:9px;border-radius:50%;margin-right:5px}.portion-legend .glp-dot:before{background:var(--basil)}.portion-legend .fam-dot:before{background:var(--plum)}.topbar{background:var(--porcelain);border-bottom:1px solid var(--line);padding:calc(env(safe-area-inset-top) + 14px) 18px 12px;display:flex;align-items:center;gap:10px;position:sticky;top:0;z-index:20}.topbar .brand{font-family:var(--display);font-weight:700;font-size:1.3rem;color:var(--basil-dk)}main{flex:1;padding:20px 16px calc(env(safe-area-inset-bottom) + 84px);max-width:640px;width:100%;margin:0 auto}.bottomnav{position:fixed;bottom:0;left:0;right:0;background:#fff;border-top:1px solid var(--line);display:flex;padding-bottom:env(safe-area-inset-bottom);z-index:20}.bottomnav button{flex:1;background:none;color:var(--gray);font-weight:700;font-size:.75rem;padding:11px 4px 13px;border-top:3px solid transparent}.bottomnav button.active{color:var(--basil-dk);border-top-color:var(--basil)}.bottomnav .icon{display:block;font-size:1.25rem;margin-bottom:2px}.card{background:#fff;border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);padding:18px;margin-bottom:14px}.btn{display:block;width:100%;background:var(--basil);color:#fff;font-weight:700;font-size:1.02rem;padding:15px;border-radius:var(--radius)}.btn:active{background:var(--basil-dk)}.btn.plum{background:var(--plum)}.btn.ghost{background:none;border:2px solid var(--line);color:var(--ink)}.btn:disabled{opacity:.5;cursor:default}input,select,textarea{width:100%;padding:13px 14px;border:1.5px solid var(--line);border-radius:10px;font-family:var(--body);font-size:1rem;background:#fff;margin-bottom:12px}label{display:block;font-weight:700;font-size:.82rem;color:var(--gray);margin-bottom:5px}.eyebrow{font-weight:700;font-size:.75rem;text-transform:uppercase;letter-spacing:.1em;color:var(--basil);margin-bottom:6px}.pagetitle{font-size:1.65rem;margin-bottom:14px;color:var(--ink)}.chiprow{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:14px}.chip{padding:9px 15px;border-radius:999px;border:1.5px solid var(--line);background:#fff;font-weight:600;font-size:.9rem;color:var(--ink)}.chip.on{background:var(--sage-lt);border-color:var(--basil);color:var(--basil-dk)}.meal{border-left:4px solid var(--basil)}.meal h3{font-size:1.15rem;margin-bottom:4px}.meal .why{font-size:.88rem;color:var(--gray);line-height:1.5}.meal .macros{font-size:.8rem;color:var(--basil-dk);font-weight:700;margin-top:8px}.daytab-row{display:flex;gap:6px;overflow-x:auto;padding-bottom:6px;margin-bottom:14px}.daytab{padding:8px 14px;border-radius:10px;background:#fff;border:1.5px solid var(--line);font-weight:700;font-size:.85rem;white-space:nowrap}.daytab.on{background:var(--basil);border-color:var(--basil);color:#fff}.grocery-cat{margin-bottom:4px}.grocery-cat h3{font-size:1rem;color:var(--basil-dk);margin:12px 0 6px}.grocery-item{display:flex;align-items:center;gap:10px;padding:9px 2px;border-bottom:1px solid var(--linen);font-size:.95rem}.grocery-item input[type=checkbox]{width:20px;height:20px;margin:0;accent-color:var(--basil)}.grocery-item.done span{text-decoration:line-through;color:var(--gray)}.empty{text-align:center;color:var(--gray);padding:44px 20px;line-height:1.5}.banner{background:linear-gradient(115deg,var(--sage-lt),var(--plum-lt));border-radius:var(--radius);padding:18px;margin-bottom:16px}.badge{font-weight:800;font-size:.7rem;text-transform:uppercase;letter-spacing:.04em;padding:4px 9px;border-radius:6px;background:var(--plum-lt);color:var(--plum)}.auth-wrap{max-width:400px;margin:8vh auto 0;padding:0 8px}.auth-logo{text-align:center;margin-bottom:24px}.auth-logo .display{font-size:2.1rem;color:var(--basil-dk);margin-top:10px}.auth-logo p{color:var(--gray);margin-top:6px}.msg{text-align:center;font-size:.9rem;color:var(--gray);margin-top:10px}.msg.err{color:#c24848}
