:root{--g:#16a34a;--bg:#f2f4f3;--card:#fff;--ink:#1c2321;--mut:#6b7470;--line:#e3e7e5;--p:#2563eb;--c:#d97706;--f:#db2777;--nav:62px;--sb:env(safe-area-inset-bottom)}
*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}
html,body{margin:0;background:var(--bg);color:var(--ink);font:16px/1.3 -apple-system,BlinkMacSystemFont,"SF Pro Text",system-ui,sans-serif;overscroll-behavior-y:none}
.hidden{display:none!important}
button,input,select{font:inherit;color:inherit}
input,select{width:100%;min-height:44px;padding:8px 10px;border:1px solid var(--line);border-radius:10px;background:#fff;font-size:16px}
label{display:block;font-size:13px;color:var(--mut)}
label input,label select{margin-top:3px;color:var(--ink)}
.btn{min-height:44px;padding:0 10px;white-space:nowrap;border:0;border-radius:12px;background:#e7ece9;font-weight:600;display:inline-flex;align-items:center;justify-content:center;gap:6px;text-decoration:none;color:var(--ink)}
.btn.primary{background:var(--g);color:#fff}.btn.big{width:100%;min-height:52px;font-size:18px;margin-top:10px}
.btn.small{min-height:36px;font-size:14px}.btn.ghost{background:none;width:100%;color:var(--mut)}
.icon{width:44px;height:44px;border:0;background:none;font-size:26px;flex:none}
.card{background:var(--card);border-radius:14px;padding:10px 12px;margin:8px 10px}
.row{display:flex;gap:8px;align-items:center;justify-content:space-between}.row>.btn{flex:1}
.pad{padding:8px 12px}.muted{color:var(--mut);font-size:14px;margin:4px 0}.err{color:#b91c1c}
.grid2{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin:6px 0}
.grid4{display:grid;grid-template-columns:repeat(4,1fr);gap:6px;margin:6px 0}
.offscreen{position:absolute;left:-999px;width:1px;height:1px;opacity:0}
.page{min-height:100vh;display:flex;align-items:center;justify-content:center}
.loginCard{width:320px;display:flex;flex-direction:column;gap:10px;padding:20px}.loginCard h1{margin:0 0 6px;color:var(--g)}
.view{padding-bottom:calc(var(--nav) + var(--sb) + 10px)}
/* day bar */
.daybar,.titlebar{position:sticky;top:0;z-index:5;background:var(--bg);display:flex;align-items:center;justify-content:space-between;padding:calc(env(safe-area-inset-top) + 2px) 4px 0;height:calc(46px + env(safe-area-inset-top))}
.titlebar{padding-left:14px;padding-right:12px}.titlebar h2{margin:0;font-size:20px}.titlebar select{width:auto;min-height:36px}
.daylabel{border:0;background:none;font-size:18px;font-weight:700;min-height:44px;flex:1}
/* totals */
.totals{margin-top:2px;padding:10px 12px 8px}
.kcalrow{display:flex;justify-content:space-between;align-items:baseline}
.kcalrow b{font-size:28px;letter-spacing:-.5px}.kcalrow small{color:var(--mut);font-size:14px}
.bar{height:8px;border-radius:4px;background:#e8ecea;overflow:hidden;margin:5px 0 7px}.bar i{display:block;height:100%;background:var(--g);border-radius:4px}
.bar.over i{background:#dc2626}
.macros{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}
.macros div{font-size:13px;color:var(--mut)}.macros b{color:var(--ink);font-size:15px}
.macros .bar{height:5px;margin:3px 0 0}
.m-p .bar i{background:var(--p)}.m-c .bar i{background:var(--c)}.m-f .bar i{background:var(--f)}
/* meals */
.meal{background:var(--card);border-radius:14px;margin:8px 10px;overflow:hidden}
.mealhead{display:flex;align-items:center;padding:0 4px 0 12px;min-height:46px;border-bottom:1px solid var(--line)}
.mealhead h3{margin:0;font-size:16px;flex:1;text-transform:capitalize}.mealhead span{color:var(--mut);font-size:14px;margin-right:2px}
.mealhead .icon{font-size:22px;color:var(--g)}.mealhead .more{font-size:13px;color:var(--mut);width:48px}
.entry{display:flex;align-items:center;padding:7px 4px 7px 12px;border-bottom:1px solid var(--line);min-height:48px}
.entry:last-child{border-bottom:0}.entry .nm{flex:1;min-width:0}
.entry .nm div{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-size:15px}
.entry .nm small{color:var(--mut);font-size:12px}.entry .kc{font-weight:600;font-size:15px;margin:0 4px}
.entry .del{width:40px;height:40px;border:0;background:none;color:#b0b7b3;font-size:18px}
.emptymeal{padding:8px 12px;color:var(--mut);font-size:14px}
.dayActions{display:flex;gap:8px;margin:8px 10px}.dayActions .btn{flex:1}
/* nav */
.bottomnav{position:fixed;left:0;right:0;bottom:0;z-index:10;display:flex;background:rgba(255,255,255,.96);backdrop-filter:blur(8px);border-top:1px solid var(--line);height:calc(var(--nav) + var(--sb));padding-bottom:var(--sb)}
.bottomnav button{flex:1;border:0;background:none;font-size:11px;color:var(--mut);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:1px}
.bottomnav i{font-style:normal;font-size:22px;line-height:1}.bottomnav button.on{color:var(--g);font-weight:600}
.bottomnav .fab i{width:46px;height:34px;border-radius:12px;background:var(--g);color:#fff;display:flex;align-items:center;justify-content:center;font-size:22px}
.bottomnav .fab{color:var(--ink);font-weight:600}.bottomnav .fab.scan i{background:#1c2321}
/* sheets */
.sheet{position:fixed;inset:0;z-index:20;background:var(--bg);overflow-y:auto;padding-bottom:calc(20px + var(--sb));animation:up .18s ease-out}
@keyframes up{from{transform:translateY(30px);opacity:.4}}
.sheethead{position:sticky;top:0;z-index:2;background:var(--bg);display:flex;align-items:center;gap:6px;padding:calc(env(safe-area-inset-top) + 4px) 8px 4px 2px}
.sheethead h3{margin:0;flex:1;font-size:18px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.sheethead input{flex:1}.star{color:#eab308}
.chips{display:flex;gap:6px;padding:4px 12px;overflow-x:auto}
.chips button{flex:1;min-height:38px;border:1px solid var(--line);background:#fff;border-radius:19px;font-size:14px;padding:0 8px;text-transform:capitalize}
.chips button.on{background:var(--g);border-color:var(--g);color:#fff;font-weight:600}
.tabs{display:flex;margin:4px 12px 0;border-bottom:1px solid var(--line)}
.tabs button{flex:1;border:0;background:none;min-height:40px;color:var(--mut);font-weight:600}.tabs button.on{color:var(--g);box-shadow:inset 0 -3px 0 var(--g)}
.list{list-style:none;margin:0;padding:0 10px}
.list li{display:flex;align-items:center;background:#fff;border-radius:12px;margin:6px 0;min-height:56px;padding:4px 4px 4px 12px}
.list .nm{flex:1;min-width:0}.list .nm div{font-size:15px;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.list .nm small{color:var(--mut);font-size:12px}
.list .one{min-width:52px;height:44px;border:0;border-radius:10px;background:var(--g);color:#fff;font-size:22px;font-weight:700;margin-left:6px}
.stepper{display:flex;margin-top:3px}.stepper button{width:44px;min-height:44px;border:1px solid var(--line);background:#fff;font-size:22px}
.stepper button:first-child{border-radius:10px 0 0 10px}.stepper button:last-child{border-radius:0 10px 10px 0}
.stepper input{margin:0;border-radius:0;border-left:0;border-right:0;text-align:center;min-width:0}
.macrobox{display:grid;grid-template-columns:repeat(4,1fr);background:#fff;border-radius:12px;padding:10px 4px;margin:8px 0;text-align:center}
.macrobox b{display:block;font-size:20px}.macrobox small{color:var(--mut);font-size:12px}
.macrobox .k b{color:var(--g)}
.seg{display:flex;margin:3px 0 6px;border:1px solid var(--line);border-radius:10px;overflow:hidden;background:#fff}
.seg button{flex:1;border:0;background:none;min-height:44px;font-size:14px;color:var(--ink);display:flex;align-items:center;justify-content:center;gap:4px}
.seg button.on{background:#dcfce7;font-weight:600}.seg input{width:56px;min-height:32px;padding:2px 4px;text-align:center}
.kcalcalc{font-size:22px;font-weight:700;color:var(--g);white-space:nowrap}
label.inline{display:flex;align-items:center;gap:6px;white-space:nowrap}label.inline input{width:90px;margin:0}
.servrow{display:grid;grid-template-columns:1fr 84px 40px;gap:6px;margin:6px 0}.servrow button{border:0;background:none;font-size:18px;color:var(--mut)}
#foodForm>input,#foodForm .grid2,#quickForm>input{margin:6px 0}
.notice{background:#fef9c3;border-radius:10px;padding:8px 10px;font-size:14px}
.bignum{display:flex;align-items:center;gap:8px;font-size:22px;justify-content:center;margin:20px 0}.bignum input{font-size:40px;text-align:center;width:180px;min-height:64px}
#reader{width:100%;max-width:420px;margin:0 auto;background:#000;min-height:220px}
#reader video{border-radius:0}
.chartbox{position:relative;height:190px}
.toast{position:fixed;left:50%;transform:translateX(-50%);bottom:calc(var(--nav) + var(--sb) + 12px);z-index:40;background:#1c2321;color:#fff;padding:10px 16px;border-radius:12px;font-size:15px;max-width:90%}
@media (max-height:700px){.kcalrow b{font-size:24px}.mealhead{min-height:44px}.entry{min-height:46px;padding-top:5px;padding-bottom:5px}}
.small{font-size:12px}
.meter{height:5px;border-radius:3px;background:var(--line);overflow:hidden;margin:6px 0 2px}.meter i{display:block;height:100%;width:0;transition:width .2s}
#pwForm input,#inviteForm input,#linkCard input{margin:6px 0}
.adminlist{list-style:none;margin:6px 0 0;padding:0}
.adminlist li{border-top:1px solid var(--line);padding:8px 0}
.adminlist .top{display:flex;align-items:center;gap:6px}.adminlist .top b{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis}
.adminlist .acts{display:flex;gap:6px;margin-top:6px;flex-wrap:wrap}.adminlist .acts .btn{flex:1;min-height:38px;font-size:14px}
.tag{font-size:11px;font-weight:700;text-transform:uppercase;padding:2px 7px;border-radius:8px;background:#e7ece9;color:var(--mut)}
.tag.admin{background:#dcfce7;color:#15803d}.tag.off{background:#fee2e2;color:#b91c1c}
.btn.danger{background:#fee2e2;color:#b91c1c}
