:root{--bg: var(--tg-theme-bg-color, #ffffff);--bg2: var(--tg-theme-secondary-bg-color, #f2f4f1);--text: var(--tg-theme-text-color, #1b1f1a);--hint: var(--tg-theme-hint-color, #6f776d);--accent: var(--tg-theme-button-color, #3d8b3d);--accent-text: var(--tg-theme-button-text-color, #ffffff);--link: var(--tg-theme-link-color, #2f7a2f);--low: #d9534f;--mid: #e0a526;--ok: #3d9b4f;--over: #8e44ad;--radius: 14px;color-scheme:light dark}@media (prefers-color-scheme: dark){:root:not([data-tg]){--bg: var(--tg-theme-bg-color, #161a16);--bg2: var(--tg-theme-secondary-bg-color, #232823);--text: var(--tg-theme-text-color, #e9ede8);--hint: var(--tg-theme-hint-color, #98a196)}}*{box-sizing:border-box}html,body{margin:0;background:var(--bg2);color:var(--text)}body{font:15px/1.45 -apple-system,Segoe UI,Roboto,sans-serif;-webkit-font-smoothing:antialiased}button{font:inherit;color:inherit;cursor:pointer}input{font:inherit;color:var(--text);background:var(--bg);border:1px solid color-mix(in srgb,var(--hint) 40%,transparent);border-radius:10px;padding:10px 12px;width:100%;min-width:0}.app{max-width:640px;margin:0 auto;min-height:100vh;padding-bottom:84px}main{padding:12px 16px}h2{font-size:22px;margin:6px 0 10px}h3{font-size:16px;margin:18px 0 8px}p{margin:6px 0}.muted{color:var(--hint)}.small{font-size:13px}.center{text-align:center}.ok{color:var(--ok)}.warn{color:var(--mid)}.devbar{background:#333;color:#fff;font-size:12px;text-align:center;padding:4px}.card{background:var(--bg);border-radius:var(--radius);padding:12px 14px;margin:8px 0;border:0;width:100%;text-align:left;display:block}.card.error{color:var(--low)}.note{background:color-mix(in srgb,var(--mid) 15%,var(--bg));border-radius:10px;padding:8px 12px;font-size:13px;margin:8px 0}.disclaimer{font-size:12px;color:var(--hint);margin:16px 2px}.row{display:flex;gap:8px;align-items:center;flex-wrap:wrap;margin:8px 0}.row input{flex:1}.label{font-size:13px;color:var(--hint);margin:10px 0 4px;display:block}.field{display:flex;align-items:center;justify-content:space-between;gap:12px;margin:8px 0}.field input{max-width:120px;text-align:right}.primary,.secondary{border:0;border-radius:12px;padding:11px 16px;font-weight:600}.primary{background:var(--accent);color:var(--accent-text)}.secondary{background:var(--bg);color:var(--link)}.primary:disabled{opacity:.6}.wide{width:100%;margin:8px 0}.sticky{position:sticky;bottom:80px;box-shadow:0 4px 16px #00000026}.link{background:none;border:0;color:var(--link);padding:8px 0 0}.icon{background:none;border:0;color:var(--hint);font-size:20px;padding:0 4px;line-height:1}.chips{display:flex;flex-wrap:wrap;gap:6px;margin:8px 0}.chip{border:1px solid color-mix(in srgb,var(--hint) 35%,transparent);background:var(--bg);border-radius:999px;padding:6px 12px;font-size:14px}.chip.active{background:var(--accent);color:var(--accent-text);border-color:var(--accent)}.tag{display:inline-block;font-size:11px;background:var(--bg2);color:var(--hint);border-radius:6px;padding:2px 6px;margin-top:4px}.rings{display:grid;grid-template-columns:repeat(auto-fit,minmax(92px,1fr));gap:8px;background:var(--bg);border-radius:var(--radius);padding:12px 8px}.ring{display:flex;flex-direction:column;align-items:center;text-align:center}.ring-bg{fill:none;stroke:var(--bg2);stroke-width:8}.ring-fg{fill:none;stroke-width:8;stroke-linecap:round;transition:stroke-dasharray .4s}.ring-pct{font-size:16px;font-weight:700;fill:var(--text)}.ring-label{font-size:13px;margin-top:2px}.ring-value{font-size:11px;color:var(--hint)}.ring-fg.lvl-low{stroke:var(--low)}.ring-fg.lvl-mid{stroke:var(--mid)}.ring-fg.lvl-ok{stroke:var(--ok)}.ring-fg.lvl-over{stroke:var(--over)}.bar-row{margin:8px 0}.bar-head{display:flex;justify-content:space-between;gap:8px;font-size:14px}.bar{height:8px;background:var(--bg2);border-radius:4px;overflow:hidden;margin-top:3px}.bar-fill{height:100%;border-radius:4px}.bar-fill.lvl-low{background:var(--low)}.bar-fill.lvl-mid{background:var(--mid)}.bar-fill.lvl-ok{background:var(--ok)}.bar-fill.lvl-over{background:var(--over)}.meal,.ing{display:flex;justify-content:space-between;align-items:baseline;gap:10px;padding:6px 0;border-bottom:1px solid var(--bg2)}.meal:last-child,.ing:last-child{border-bottom:0}.meal span:first-child,.ing span:first-child{flex:1}.ing span:last-child{text-align:right;white-space:nowrap}.group{font-weight:600;margin-top:8px;font-size:14px}.steps{padding-left:32px}.steps li{margin:8px 0}.recipe-card{cursor:pointer}.recipe-title{font-weight:600;margin-bottom:2px}.macros,.stats{display:flex;justify-content:space-around;text-align:center}.macros div,.stats div{display:flex;flex-direction:column}.macros b,.stats b{font-size:18px}.macros span,.stats span{font-size:12px;color:var(--hint)}.cook .row span{margin-right:4px}.rate{margin-top:10px}.week-chart{display:flex;gap:6px;height:140px;align-items:flex-end}.week-col{flex:1;display:flex;flex-direction:column;align-items:center;height:100%}.week-bar-wrap{position:relative;flex:1;width:100%;display:flex;align-items:flex-end}.week-bar{width:100%;background:var(--accent);border-radius:6px 6px 2px 2px;min-height:2px}.week-target{position:absolute;left:-3px;right:-3px;border-top:2px dashed var(--hint)}.week-day{font-size:11px;color:var(--hint);margin-top:4px}.cat-head{display:flex;justify-content:space-between;width:100%;background:none;border:0;padding:2px 0;font-weight:600}.checks{display:grid;grid-template-columns:1fr 1fr;gap:4px 12px;margin-top:8px}.check{display:flex;align-items:center;gap:8px;font-size:14px;padding:4px 0}.check input{width:18px;height:18px;accent-color:var(--accent);flex:none}.link-box{display:flex;flex-direction:column;gap:2px;width:100%;background:var(--bg2);border:0;border-radius:10px;padding:10px;margin:10px 0;word-break:break-all;text-align:left}.tabs{position:fixed;bottom:0;left:0;right:0;display:flex;background:var(--bg);border-top:1px solid var(--bg2);padding:6px 4px calc(6px + env(safe-area-inset-bottom));max-width:640px;margin:0 auto}.tab{flex:1;background:none;border:0;display:flex;flex-direction:column;align-items:center;font-size:11px;color:var(--hint);padding:2px 0;min-width:0}.tab-icon{font-size:19px;line-height:1.2}.tab.active{color:var(--accent);font-weight:600}.spinner{width:28px;height:28px;margin:40px auto;border:3px solid var(--bg2);border-top-color:var(--accent);border-radius:50%;animation:spin .8s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}@media (max-width: 360px){.checks{grid-template-columns:1fr}}
