:root{--bg:#0c2420;--bg-raised:#123029;--bg-sunken:#0a1e1a;--line:#1e463c;--text:#eaf6f0;--text-dim:#93b5aa;--accent:#58e3a1;--accent-dim:#2f8f66;--warn:#f0b46a;--danger:#ef7d7d;--protein:#6fb9ff;--carbs:#f5c86b;--fat:#f58bb0;--creature-body:#7ae5a8;--creature-shade:#4fc98a;--creature-leaf:#3dd17e;--creature-ink:#10302b;--creature-shine:#fff;--creature-blush:#ff9ec4;--creature-crumb:#e8c07a;--poop:#a8734d;--poop-light:#c08a5f;--poop-stink:#9db08a;--radius:18px;--radius-sm:12px;--tabbar:68px;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}*{box-sizing:border-box}html,body{background:var(--bg);color:var(--text);-webkit-text-size-adjust:100%;overscroll-behavior-y:none;margin:0;padding:0;font-family:ui-rounded,SF Pro Rounded,system-ui,-apple-system,Segoe UI,sans-serif}body{min-height:100dvh}button,input,select,textarea{font:inherit;color:inherit}h1,h2,h3{letter-spacing:-.01em;margin:0;font-weight:650}.app{max-width:520px;padding:max(16px, env(safe-area-inset-top)) 16px calc(var(--tabbar) + 24px + env(safe-area-inset-bottom));margin:0 auto}.screen-title{margin-bottom:14px;font-size:1.45rem}.card{background:var(--bg-raised);border:1px solid var(--line);border-radius:var(--radius);padding:16px}.card+.card{margin-top:14px}.muted{color:var(--text-dim)}.small{font-size:.85rem}.row{align-items:center;gap:10px;display:flex}.spread{justify-content:space-between;align-items:center;gap:10px;display:flex}.creature-stage{justify-items:center;gap:6px;padding:10px 0 4px;display:grid}.creature-yard{justify-items:center;width:100%;display:grid;position:relative}.creature{width:min(62vw,230px);height:auto;display:block;overflow:visible}.creature-button{cursor:pointer;touch-action:manipulation;-webkit-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent;background:0 0;border:none;border-radius:24px;padding:0}.creature__body{transform-origin:111px 188px;animation:3.6s ease-in-out infinite breathe}.creature__sprout{transform-origin:111px 62px;animation:4.3s ease-in-out infinite sway}@keyframes breathe{0%,to{transform:scale(1)translateY(0)}50%{transform:scale(1.025,.975)translateY(3px)}}@keyframes sway{0%,to{transform:rotate(-5deg)}50%{transform:rotate(5deg)}}.creature--proud .creature__body,.creature--strong .creature__body{animation:1.1s ease-in-out infinite bounce}@keyframes bounce{0%,to{transform:translateY(0)scale(1)}30%{transform:translateY(-14px)scale(.97,1.03)}55%{transform:translateY(0)scale(1.04,.96)}}.creature--asleep .creature__body,.creature--sleepy .creature__body{animation-duration:5.4s}.creature__zzz text{animation:3s ease-in-out infinite drift}.creature__zzz text:last-child{animation-delay:1.2s}.creature--waking .creature__body{animation:4s ease-in-out infinite nod}@keyframes nod{0%,60%,to{transform:rotate(0)translateY(0)}75%,85%{transform:rotate(3deg)translateY(5px)scale(1.02,.97)}}.creature--perky .creature__body{animation:1.7s ease-in-out infinite hop}@keyframes hop{0%,45%,to{transform:translateY(0)scale(1)}20%{transform:translateY(-8px)scale(.98,1.02)}32%{transform:translateY(0)scale(1.03,.97)}}.creature--peckish .creature__body{animation:2.2s ease-in-out infinite rock}@keyframes rock{0%,to{transform:rotate(-3deg)}50%{transform:rotate(3deg)}}.creature--dreamy .creature__body{animation:7s ease-in-out infinite rock}.creature__dream{animation:4s ease-in-out infinite daydream}@keyframes daydream{0%,to{opacity:.95;transform:translateY(0)}50%{opacity:.75;transform:translateY(-5px)}}.creature--playful .creature__body{animation:1.3s ease-in-out infinite wiggle}@keyframes wiggle{0%,to{transform:rotate(-6deg)translateY(0)}25%{transform:rotate(0)translateY(-7px)}50%{transform:rotate(6deg)translateY(0)}75%{transform:rotate(0)translateY(-7px)}}.creature--cozy .creature__body{animation-duration:5.4s}@keyframes drift{0%{opacity:0;transform:translateY(6px)}40%{opacity:1}to{opacity:0;transform:translateY(-14px)}}.creature--eating .creature__body{animation:2.8s ease-in-out chew-body}.creature__food{opacity:0;transform-origin:111px 136px;animation:2.8s ease-in forwards food-flies-in}.creature__chew{transform-origin:111px 136px;animation:2.8s ease-in-out forwards chew}.creature__crumbs circle{opacity:0;animation:2.8s ease-out forwards crumb}.creature__crumbs circle:nth-child(2){--crumb-x:12px;animation-delay:.2s}.creature__crumbs circle:nth-child(3){--crumb-x:5px;animation-delay:.45s}@keyframes food-flies-in{0%{opacity:0;transform:translate(80px,-125px)rotate(-30deg)scale(1.1)}8%{opacity:1}30%{opacity:1;transform:translateY(-28px)rotate(10deg)scale(.9)}38%{opacity:1;transform:translate(0)rotate(0)scale(.35)}40%,to{opacity:0;transform:translate(0)scale(.2)}}@keyframes chew{0%,38%{transform:scale(1)}44%{transform:scale(.8,.15)}52%{transform:scale(.7,.6)}60%{transform:scale(.8,.15)}68%{transform:scale(.7,.6)}76%{transform:scale(.8,.15)}84%{transform:scale(.7,.6)}92%,to{transform:scale(.8,.15)}}@keyframes chew-body{0%,38%{transform:translateY(0)scale(1)}25%{transform:translateY(-5px)scale(.98,1.03)}44%,60%,76%{transform:translateY(2px)scale(1.04,.96)}52%,68%,84%{transform:translateY(0)scale(.99,1.01)}92%{transform:translateY(-8px)scale(.96,1.05)}to{transform:translateY(0)scale(1)}}@keyframes crumb{0%,42%{opacity:0;transform:translate(0)}48%{opacity:1}70%,to{opacity:0;transform:translate(var(--crumb-x,-12px), 22px)}}.creature--sipping .creature__body{animation:2.6s ease-in-out sip-body}.creature__drink{opacity:0;transform-origin:111px 136px;animation:2.6s ease-in-out forwards drink-tips-up}.creature__sip{transform-origin:111px 136px;animation:2.6s ease-in-out forwards sip}@keyframes drink-tips-up{0%{opacity:0;transform:translate(85px,-110px)rotate(15deg)}8%{opacity:1}25%{opacity:1;transform:translate(30px,-2px)rotate(-30deg)scale(.9)}50%{opacity:1;transform:translate(29px,-5px)rotate(-42deg)scale(.9)}78%{opacity:1;transform:translate(28px,-7px)rotate(-50deg)scale(.9)}to{opacity:0;transform:translate(85px,-60px)rotate(15deg)scale(.8)}}@keyframes sip{0%,25%,78%,to{transform:scale(1)}35%,53%,71%{transform:scale(.6,1.25)}44%,62%{transform:scale(1.1,.8)}}@keyframes sip-body{0%,25%,78%,to{transform:translateY(0)scale(1)}35%,53%,71%{transform:translateY(-3px)scale(.98,1.03)}44%,62%{transform:translateY(1px)scale(1.02,.98)}}.creature--pooping .creature__body{animation:1.4s ease-in-out strain}@keyframes strain{0%,to{transform:scale(1)}15%,45%{transform:scale(1.05,.93)rotate(-2deg)}30%,60%{transform:scale(1.05,.93)rotate(2deg)}80%{transform:translateY(-8px)scale(.97,1.03)}}.creature--thanks .creature__body{animation:.8s ease-in-out 2 bounce}.creature--giggle .creature__body{animation:.35s ease-in-out 4 giggle}@keyframes giggle{0%,to{transform:rotate(-4deg)scale(1.02,.98)}50%{transform:rotate(4deg)scale(.98,1.02)}}.creature--jump{transform-origin:50% 100%;animation:1.1s cubic-bezier(.3,.7,.4,1) jump}@keyframes jump{0%,to{transform:translateY(0)scale(1)}15%{transform:translateY(0)scale(1.14,.84)}50%{transform:translateY(-60px)scale(.92,1.1)}82%{transform:translateY(0)scale(1.14,.86)}}.creature--spin{transform-origin:50% 55%;animation:1.2s ease-in-out spin}@keyframes spin{to{transform:rotate(360deg)}}.creature--hearts .creature__body{animation:.95s ease-in-out 2 bounce}.creature__hearts text{opacity:0;animation:1.9s ease-out forwards heart-floats}.creature__hearts text:nth-child(2){animation-delay:.25s}.creature__hearts text:nth-child(3){animation-delay:.5s}@keyframes heart-floats{0%{opacity:0;transform:translateY(16px)}25%{opacity:1}to{opacity:0;transform:translateY(-34px)}}.creature--wink .creature__body{animation:1.5s ease-in-out lean}@keyframes lean{0%,to{transform:rotate(0)}25%,70%{transform:rotate(7deg)}}.creature--boop .creature__body{animation:1s cubic-bezier(.3,1.6,.6,1) boop}@keyframes boop{0%,to{transform:scale(1)}18%{transform:scale(1.14,.82)}45%{transform:scale(.94,1.08)}}.creature--dizzy .creature__body{animation:1.3s ease-in-out 2 reel}@keyframes reel{0%,to{transform:rotate(-8deg)translate(-6px)}50%{transform:rotate(8deg)translate(6px)}}.creature__stars{transform-origin:111px 54px;animation:1.3s linear 2 circle-head}@keyframes circle-head{to{transform:rotate(360deg)}}.creature--startled .creature__body{animation:1.7s ease-out startled}@keyframes startled{0%,to{transform:translateY(0)scale(1)}10%{transform:translateY(-16px)scale(.95,1.06)}24%{transform:translateY(0)scale(1.05,.95)}36%{transform:translateY(0)scale(1)}}.poop{z-index:1;cursor:pointer;-webkit-tap-highlight-color:transparent;background:0 0;border:none;width:48px;height:48px;margin-left:-24px;padding:0;animation:.5s cubic-bezier(.3,1.6,.6,1) plop;position:absolute}.poop svg{width:100%;height:100%;display:block;overflow:visible}.poop__stink{animation:2.4s ease-in-out infinite stink}.poop--leaving svg{animation:.45s ease-in forwards poop-leaves}.poop__sparkle{place-items:center;font-size:1.7rem;animation:.45s ease-out forwards sparkle;display:grid;position:absolute;inset:0}@keyframes plop{0%{opacity:0;transform:translateY(-22px)scale(.5,1.2)}60%{opacity:1;transform:translateY(0)scale(1.15,.85)}to{transform:translateY(0)scale(1)}}@keyframes stink{0%,to{opacity:.25;transform:translateY(3px)}50%{opacity:.9;transform:translateY(-2px)}}@keyframes poop-leaves{to{opacity:0;transform:translateY(-16px)scale(.2)rotate(40deg)}}@keyframes sparkle{0%{opacity:0;transform:scale(.4)}50%{opacity:1;transform:scale(1.2)}to{opacity:0;transform:scale(1.4)translateY(-10px)}}@media (prefers-reduced-motion:reduce){.creature__body,.creature--eating .creature__body,.creature--sipping .creature__body,.creature--pooping .creature__body,.creature--thanks .creature__body,.creature--waking .creature__body,.creature--perky .creature__body,.creature--peckish .creature__body,.creature--dreamy .creature__body,.creature--playful .creature__body,.creature--giggle .creature__body,.creature--jump,.creature--spin,.creature--hearts .creature__body,.creature--wink .creature__body,.creature--boop .creature__body,.creature--dizzy .creature__body,.creature--startled .creature__body,.creature__dream,.creature__stars,.creature__sprout,.creature__zzz text,.creature__chew,.creature__crumbs circle,.creature__food,.creature__drink,.creature__sip,.poop,.poop__stink,.poop--leaving svg,.poop__sparkle{animation:none}.creature__hearts text{opacity:1;animation:none}}.creature-says{background:var(--bg-raised);border:1px solid var(--line);text-align:center;border-radius:999px;padding:9px 18px;font-size:.95rem}.creature-name{letter-spacing:.08em;text-transform:uppercase;color:var(--text-dim);font-size:.8rem}.ring-wrap{place-items:center;display:grid;position:relative}.ring{transform:rotate(-90deg)}.ring__track{stroke:var(--bg-sunken)}.ring__value{stroke:var(--accent);stroke-linecap:round;transition:stroke-dasharray .5s}.ring__over{stroke:var(--warn)}.ring-centre{justify-items:center;line-height:1.1;display:grid;position:absolute}.ring-centre b{font-size:1.75rem;font-weight:700}.macros{grid-template-columns:repeat(3,1fr);gap:10px;margin-top:14px;display:grid}.macro{background:var(--bg-sunken);border-radius:var(--radius-sm);text-align:center;padding:10px}.macro b{font-size:1.1rem;display:block}.macro-bar{background:#ffffff18;border-radius:999px;height:5px;margin-top:7px;overflow:hidden}.macro-bar span{border-radius:999px;height:100%;transition:width .5s;display:block}.ring-percent{color:var(--accent);margin-top:3px;font-size:.85rem;font-weight:700}.macro-percent{margin-top:5px;font-size:.85rem;font-weight:700;display:block}.nutrient-row__top{justify-content:space-between;gap:12px;display:flex}.nutrient-bar{margin-top:5px}.nutrient-over{color:var(--warn)}.entry{border-bottom:1px solid var(--line);align-items:center;gap:12px;padding:12px 0;display:flex}.entry:last-child{border-bottom:none}.entry__icon{background:var(--bg-sunken);border-radius:12px;flex:none;place-items:center;width:40px;height:40px;font-size:1.2rem;display:grid}.entry__main{flex:1;min-width:0}.entry__name{text-overflow:ellipsis;white-space:nowrap;font-weight:600;overflow:hidden}.entry__delete{color:var(--text-dim);cursor:pointer;background:0 0;border:none;border-radius:10px;padding:8px;font-size:1.1rem}.entry__delete:active{background:var(--bg-sunken);color:var(--danger)}.button{background:var(--accent);color:#06241a;cursor:pointer;-webkit-tap-highlight-color:transparent;border:1px solid #0000;border-radius:14px;justify-content:center;align-items:center;gap:8px;min-height:46px;padding:0 18px;font-weight:650;text-decoration:none;display:inline-flex}.button:active{transform:scale(.98)}.button:disabled{opacity:.5;cursor:default}.button--quiet{background:var(--bg-sunken);color:var(--text);border-color:var(--line)}.button--full{width:100%}.button-grid{grid-template-columns:1fr 1fr;gap:10px;display:grid}.field{margin-bottom:12px;display:block}.field>span{color:var(--text-dim);margin-bottom:5px;font-size:.82rem;display:block}.input{border:1px solid var(--line);background:var(--bg-sunken);border-radius:12px;width:100%;min-height:46px;padding:10px 13px;font-size:16px}.input:focus{outline:2px solid var(--accent-dim);outline-offset:1px}.field-row{grid-template-columns:1fr 1fr;gap:10px;display:grid}.macro-goals{grid-template-columns:repeat(3,1fr);gap:10px;display:grid}.macro-total{margin:0 0 12px}.macro-total--off{color:var(--warn)}.chips{flex-wrap:wrap;gap:8px;display:flex}.chip{border:1px solid var(--line);background:var(--bg-sunken);color:var(--text);cursor:pointer;-webkit-tap-highlight-color:transparent;border-radius:999px;padding:9px 14px}.chip[aria-pressed=true]{background:var(--accent);border-color:var(--accent);color:#06241a;font-weight:650}.tabbar{z-index:10;padding:8px 10px calc(8px + env(safe-area-inset-bottom));background:color-mix(in srgb, var(--bg-raised) 92%, transparent);border-top:1px solid var(--line);-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);justify-content:space-around;gap:4px;display:flex;position:fixed;bottom:0;left:0;right:0}.tab{max-width:120px;color:var(--text-dim);-webkit-tap-highlight-color:transparent;border-radius:12px;flex:1;justify-items:center;gap:2px;padding:6px 4px;font-size:.72rem;text-decoration:none;display:grid}.tab span:first-child{font-size:1.3rem;line-height:1}.tab[aria-current=page]{color:var(--accent)}.notice{border-radius:var(--radius-sm);border:1px solid var(--line);background:var(--bg-sunken);padding:12px 14px;font-size:.9rem}.notice--bad{border-color:color-mix(in srgb, var(--danger) 45%, var(--line));color:#ffd9d9}.notice--warn{border-color:color-mix(in srgb, var(--warn) 45%, var(--line))}.empty{text-align:center;color:var(--text-dim);padding:26px 10px}.spinner{border:2px solid #ffffff35;border-top-color:var(--text);border-radius:50%;width:18px;height:18px;animation:.8s linear infinite spin}.scanner-video{aspect-ratio:3/4;object-fit:cover;border-radius:var(--radius);background:#000;width:100%}.scanner-frame{border-radius:var(--radius);position:relative;overflow:hidden}.scanner-frame:after{content:"";border:3px solid var(--accent);pointer-events:none;border-radius:14px;position:absolute;inset:22% 8%;box-shadow:0 0 0 100vmax #0a1e1a66}.photo-preview{border-radius:var(--radius);width:100%;display:block}.day-nav{justify-content:space-between;align-items:center;margin-bottom:10px;display:flex}.day-nav button{background:var(--bg-raised);border:1px solid var(--line);color:var(--text);cursor:pointer;border-radius:12px;width:38px;height:38px}.day-nav button:disabled{opacity:.35;cursor:default}.nutrient-group{color:var(--text-dim);letter-spacing:.04em;text-transform:uppercase;margin:14px 0 8px;font-size:.8rem;font-weight:600}.nutrient-fields{grid-template-columns:1fr 1fr;align-items:end;gap:0 10px;display:grid}.full-nutrition{border-top:1px solid var(--line);margin-top:16px;padding-top:12px}.full-nutrition summary{color:var(--accent);cursor:pointer;padding:6px 0;font-weight:600}.nutrient-row{border-bottom:1px solid var(--line);padding:8px 0}.nutrient-row b{white-space:nowrap;font-weight:600}.signin{text-align:center;min-height:100dvh;padding-bottom:env(safe-area-inset-bottom);flex-direction:column;justify-content:center;align-items:center;gap:4px;display:flex}.signin__creature{width:190px;max-width:60vw}.signin__creature .creature{width:100%}.signin__title{margin:10px 0 0;font-size:1.5rem}.signin__blurb{color:var(--text-dim);margin:0 0 18px}.signin__form{width:100%;max-width:320px}.signin__note{border-radius:var(--radius-sm);background:var(--bg-raised);border:1px solid var(--line);max-width:320px;color:var(--text-dim);margin:0 0 16px;padding:12px 14px;font-size:.93rem;line-height:1.45}.signin__note--warn{border-color:var(--warn);color:var(--text)}
