:root{
  --bg:#0d0f13;--bg2:#14171d;--card:#1a1e26;--card2:#212633;--line:#2c3242;
  --text:#eef1f6;--muted:#9aa3b2;--ember:#ff6b2c;--ember2:#ffa14e;--gold:#ffd166;
  --green:#4ade80;--blue:#60a5fa;--red:#f87171;--purple:#c084fc;
  --radius:16px;--shadow:0 8px 24px rgba(0,0,0,.35);
}
*{box-sizing:border-box;margin:0;padding:0}
html{-webkit-text-size-adjust:100%}
body{background:radial-gradient(1200px 600px at 80% -10%,#231a14 0%,var(--bg) 55%);color:var(--text);
  font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Helvetica,Arial,sans-serif;min-height:100vh}
.hidden{display:none!important}
button{font:inherit;cursor:pointer;color:inherit}
input,select,textarea{font:inherit;color:var(--text);background:var(--bg2);border:1px solid var(--line);
  border-radius:10px;padding:10px 12px;width:100%}
input:focus,select:focus,textarea:focus{outline:2px solid var(--ember);border-color:transparent}
label{font-size:.8rem;color:var(--muted);display:block;margin-bottom:4px}
a{color:var(--ember2)}

/* Landing */
.landing{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:24px}
.landing-inner{max-width:720px;text-align:center}
.logo-big{font-size:1.4rem;letter-spacing:.35em;color:var(--ember2);margin-bottom:18px;font-weight:800}
.landing h1{font-size:clamp(2rem,6vw,3.2rem);line-height:1.1;font-weight:800}
.ember{background:linear-gradient(90deg,var(--ember),var(--gold));-webkit-background-clip:text;background-clip:text;color:transparent}
.landing-sub{color:var(--muted);margin:18px auto 26px;max-width:560px;line-height:1.55}
.landing-feats{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:12px;margin-top:38px}
.feat{background:var(--card);border:1px solid rgba(255,107,44,.45);border-radius:var(--radius);padding:16px;text-align:left;
  box-shadow:0 0 18px rgba(255,107,44,.16),0 0 3px rgba(255,107,44,.45)}
.feat span{font-size:1.5rem;display:block;margin-bottom:6px}
.feat b{display:block;margin-bottom:4px}
.feat small{color:var(--muted);line-height:1.4;display:block}

/* App chrome */
.topbar{display:flex;justify-content:space-between;align-items:center;padding:14px 18px;
  border-bottom:1px solid var(--line);position:sticky;top:0;background:rgba(13,15,19,.85);backdrop-filter:blur(8px);z-index:20}
.logo{letter-spacing:.25em;color:var(--ember2)}
.top-right{display:flex;align-items:center;gap:14px}
.streak{background:linear-gradient(90deg,#2a1a10,#33200f);border:1px solid #4a2c15;color:var(--gold);
  padding:5px 12px;border-radius:999px;font-size:.82rem}
.signout{color:var(--muted);font-size:.85rem;text-decoration:none}
.tabs{display:flex;gap:8px;padding:12px 14px;overflow-x:auto;position:sticky;top:53px;z-index:19;
  background:rgba(13,15,19,.85);backdrop-filter:blur(8px);border-bottom:1px solid var(--line)}
.tab{background:var(--bg2);border:1px solid var(--line);color:var(--muted);padding:12px 18px;border-radius:14px;white-space:nowrap;font-size:1rem;font-weight:600}
.tab:hover{border-color:var(--ember)}
.tab.active{background:linear-gradient(135deg,#2a1a10,#33200f);color:var(--ember2);border-color:var(--ember);box-shadow:0 0 12px rgba(255,107,44,.28)}
main{max-width:980px;margin:0 auto;padding:20px 16px 90px}

/* Cards & layout */
.card{background:var(--card);border:1px solid rgba(255,107,44,.45);border-radius:var(--radius);padding:18px;margin-bottom:16px;
  box-shadow:0 0 18px rgba(255,107,44,.16),0 0 3px rgba(255,107,44,.45),inset 0 0 22px rgba(255,107,44,.05),var(--shadow);
  transition:box-shadow .25s,border-color .25s}
.card:hover{border-color:rgba(255,138,60,.7);box-shadow:0 0 26px rgba(255,107,44,.3),0 0 4px rgba(255,138,60,.65),inset 0 0 26px rgba(255,107,44,.07),var(--shadow)}
.card h2{font-size:1.05rem;margin-bottom:12px}
.card h2 small{color:var(--muted);font-weight:400;font-size:.8rem;margin-left:8px}
.grid2{display:grid;grid-template-columns:1fr 1fr;gap:16px}
.grid3{display:grid;grid-template-columns:repeat(3,1fr);gap:12px}
@media(max-width:720px){.grid2,.grid3{grid-template-columns:1fr}}
.row{display:flex;gap:10px;flex-wrap:wrap;align-items:flex-end}
.row>div{flex:1;min-width:110px}
.muted{color:var(--muted)}.small{font-size:.82rem}
.center{text-align:center}

/* Buttons */
.btn{border:1px solid var(--line);background:var(--card2);color:var(--text);padding:10px 16px;border-radius:12px;font-weight:600}
.btn:hover{border-color:var(--ember)}
.btn-primary{background:linear-gradient(90deg,var(--ember),#ff8a3c);border:none;color:#180a02}
.btn-primary:hover{filter:brightness(1.08)}
.btn-big{display:inline-block;font-size:1.05rem;padding:14px 28px;text-decoration:none;border-radius:14px}
.btn-ghost{background:transparent}
.btn-sm{padding:6px 10px;font-size:.82rem;border-radius:9px}
.btn-danger{color:var(--red)}
.chip{display:inline-block;background:var(--card2);color:var(--text);border:1px solid var(--line);border-radius:999px;
  padding:6px 12px;font-size:.82rem;margin:3px;cursor:pointer}
.chip:hover{border-color:var(--ember)}

/* Rings & stats */
.rings{display:flex;gap:18px;justify-content:space-around;flex-wrap:wrap}
.ring{position:relative;width:110px;text-align:center}
.ring svg{transform:rotate(-90deg)}
.ring .ring-label{position:absolute;top:38px;left:0;right:0;font-weight:800;font-size:1rem}
.ring .ring-sub{position:absolute;top:58px;left:0;right:0;font-size:.68rem;color:var(--muted)}
.ring .ring-name{margin-top:6px;font-size:.8rem;color:var(--muted)}
.stat{background:var(--card2);border:1px solid var(--line);border-radius:12px;padding:14px;text-align:center}
.stat b{font-size:1.5rem;display:block}
.stat span{color:var(--muted);font-size:.78rem}
.bar-wrap{background:var(--bg2);border-radius:999px;height:12px;overflow:hidden;margin-top:6px}
.bar-fill{height:100%;background:linear-gradient(90deg,var(--blue),#93c5fd);border-radius:999px;transition:width .4s}

/* Lists */
.food-item,.session{display:flex;justify-content:space-between;align-items:center;gap:10px;
  padding:10px 0;border-bottom:1px solid var(--line)}
.food-item:last-child,.session:last-child{border-bottom:none}
.food-macros{color:var(--muted);font-size:.78rem}
.pr-card{background:var(--card2);border:1px solid var(--line);border-radius:12px;padding:12px;margin-bottom:10px}
.pr-card .pr-top{display:flex;justify-content:space-between;align-items:baseline;gap:8px;flex-wrap:wrap}
.pr-num{color:var(--gold);font-weight:800}
.badge{background:#2a2010;border:1px solid #574019;color:var(--gold);font-size:.72rem;padding:3px 8px;border-radius:999px}
.badge-green{background:#0f2a18;border-color:#1d5c34;color:var(--green)}

/* Exercise library */
.ex-card{background:var(--card2);border:1px solid var(--line);border-radius:12px;padding:14px;margin-bottom:10px}
.ex-card summary{cursor:pointer;font-weight:700;list-style:none;display:flex;justify-content:space-between;gap:8px}
.ex-card summary::-webkit-details-marker{display:none}
.ex-cat{color:var(--muted);font-size:.75rem;font-weight:400}
.ex-body{margin-top:10px;font-size:.9rem;line-height:1.5}
.ex-body h4{margin:10px 0 4px;font-size:.82rem;color:var(--ember2);text-transform:uppercase;letter-spacing:.06em}
.ex-body ul{padding-left:18px}
.set-row{display:grid;grid-template-columns:1fr 1fr auto;gap:8px;margin-bottom:8px;align-items:center}

/* Coach */
.coach-out{line-height:1.6}
.coach-out h3{color:var(--ember2);margin:16px 0 6px}
.coach-out ul{padding-left:20px;margin:6px 0}
.coach-out p{margin:6px 0}
.spinner{display:inline-block;width:18px;height:18px;border:3px solid var(--line);border-top-color:var(--ember);border-radius:50%;animation:spin .8s linear infinite;vertical-align:middle}
@keyframes spin{to{transform:rotate(360deg)}}

.toast{position:fixed;bottom:20px;left:50%;transform:translateX(-50%);background:var(--card2);
  border:1px solid var(--ember);padding:12px 20px;border-radius:12px;z-index:99;box-shadow:var(--shadow);max-width:90vw;text-align:center}
.toast.pr{border-color:var(--gold);background:linear-gradient(90deg,#231607,#2a1c08);color:var(--gold);font-weight:700}
svg.chart{width:100%;height:auto;display:block}
.date-nav{display:flex;align-items:center;gap:10px;margin-bottom:12px}
.date-nav input{width:auto}
.divider{border-top:1px solid var(--line);margin:14px 0}

/* ===================== v1.4 ===================== */
.mode-toggle{display:flex;gap:8px;margin-bottom:14px}
.mode-btn{flex:1;background:var(--bg2);border:1px solid var(--line);color:var(--muted);padding:10px;border-radius:12px;font-weight:700}
.mode-btn.active{background:linear-gradient(90deg,#2a1a10,#33200f);border-color:var(--ember);color:var(--ember2)}
.mic-btn{flex:0 0 44px;height:44px;border-radius:50%;border:1px solid var(--line);background:var(--card2);color:var(--text);font-size:1.1rem}
.mic-btn:hover{border-color:var(--ember)}
.mic-btn.rec{background:var(--red);border-color:var(--red);animation:micpulse 1s ease-in-out infinite}
@keyframes micpulse{0%,100%{box-shadow:0 0 0 0 rgba(248,113,113,.5)}50%{box-shadow:0 0 0 10px rgba(248,113,113,0)}}
.ai-item{display:flex;align-items:center;gap:8px;padding:8px 10px;margin:6px 0;background:var(--card2);border:1px solid var(--line);border-radius:10px;cursor:pointer;flex-wrap:wrap}
.ai-item:hover{border-color:var(--ember)}
.ai-item input[type=checkbox]{width:auto;accent-color:var(--ember)}
.kcal-preview{margin:10px 0;color:var(--gold)}
#aiText{flex:1}

/* ===================== Static gradient glow ring (no animation) ===================== */
.card{position:relative;border:1px solid rgba(255,120,50,.55)}
@supports ((-webkit-mask-composite:xor) or (mask-composite:exclude)){
  .card::before{
    content:"";
    position:absolute;
    inset:0;
    border-radius:inherit;
    padding:1.6px;
    background:linear-gradient(135deg,#ff4d1a 0%,#ff8a3c 38%,#ffd166 68%,#ff7a2c 100%);
    -webkit-mask:linear-gradient(#000 0 0) content-box,linear-gradient(#000 0 0);
            mask:linear-gradient(#000 0 0) content-box,linear-gradient(#000 0 0);
    -webkit-mask-composite:xor;
            mask-composite:exclude;
    pointer-events:none;
  }
}
.card{box-shadow:0 0 22px rgba(255,107,44,.18),0 0 4px rgba(255,130,55,.45),inset 0 0 22px rgba(255,107,44,.05),var(--shadow)}
.card:hover{box-shadow:0 0 28px rgba(255,120,50,.28),0 0 6px rgba(255,150,70,.6),inset 0 0 24px rgba(255,107,44,.07),var(--shadow)}
/* feature cards on the landing use the same gradient ring */
.feat{position:relative;border:1px solid rgba(255,120,50,.5)}
@supports ((-webkit-mask-composite:xor) or (mask-composite:exclude)){
  .feat::before{
    content:"";position:absolute;inset:0;border-radius:inherit;padding:1.4px;
    background:linear-gradient(135deg,#ff4d1a,#ff8a3c,#ffd166,#ff7a2c);
    -webkit-mask:linear-gradient(#000 0 0) content-box,linear-gradient(#000 0 0);
            mask:linear-gradient(#000 0 0) content-box,linear-gradient(#000 0 0);
    -webkit-mask-composite:xor;mask-composite:exclude;pointer-events:none;
  }
}

/* ===================== v17 refresh — cleaner layout, same Fuel colors ===================== */
:root{--card:#171b23;--card2:#1f2430;--line:#262c3a;--radius:20px}
body{background:var(--bg);-webkit-font-smoothing:antialiased;letter-spacing:.005em}
body::before{content:"";position:fixed;inset:0;z-index:-1;pointer-events:none;background:
  radial-gradient(900px 480px at 85% -8%,rgba(255,107,44,.16) 0%,transparent 60%),
  radial-gradient(700px 420px at -10% 110%,rgba(255,161,78,.07) 0%,transparent 60%)}

/* Top bar */
.topbar{padding:12px 18px;padding-top:max(12px,env(safe-area-inset-top));background:rgba(13,15,19,.78);backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);border-bottom:1px solid rgba(255,255,255,.06)}
.logo{display:flex;align-items:center;font-size:.95rem;letter-spacing:.28em}
.logo b{font-weight:800;background:linear-gradient(90deg,var(--ember2),var(--gold));-webkit-background-clip:text;background-clip:text;color:transparent}
.signout{padding:6px 10px;border-radius:10px;border:1px solid rgba(255,255,255,.08);font-size:.78rem}
.signout:hover{color:var(--text);border-color:var(--ember)}
.streak{font-weight:600}

/* Tabs — icon + label */
.tab .ti{width:22px;height:22px;flex:0 0 auto;stroke:currentColor;fill:none;stroke-width:1.9;stroke-linecap:round;stroke-linejoin:round}
.tab{display:flex;align-items:center;gap:8px;transition:color .2s,background .2s,border-color .2s}

/* Phones & tablets: app-style bottom tab bar */
@media(max-width:899px){
  .tabs{position:fixed;top:auto;left:0;right:0;bottom:0;z-index:50;display:grid;grid-template-columns:repeat(6,1fr);gap:0;
    padding:6px 4px calc(6px + env(safe-area-inset-bottom));overflow:visible;
    background:rgba(13,15,19,.92);backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px);
    border-top:1px solid rgba(255,255,255,.07);border-bottom:none}
  .tab{flex-direction:column;gap:3px;justify-content:center;background:none;border:none;border-radius:12px;box-shadow:none;
    padding:7px 0 5px;font-size:.64rem;font-weight:600;color:var(--muted);min-width:0;letter-spacing:.01em}
  .tab .ti{width:23px;height:23px}
  .tab:hover{border:none;color:var(--text)}
  .tab.active{background:none;border:none;box-shadow:none;color:var(--ember2)}
  .tab.active .ti{filter:drop-shadow(0 0 6px rgba(255,107,44,.65))}
  .tab.active::after{content:"";position:absolute;top:-6px;left:50%;transform:translateX(-50%);width:28px;height:3px;border-radius:0 0 3px 3px;background:var(--ember);box-shadow:0 0 10px rgba(255,107,44,.8)}
  .tab{position:relative}
  main{padding:16px 14px calc(110px + env(safe-area-inset-bottom))}
  .toast{bottom:calc(92px + env(safe-area-inset-bottom))}
  .fa-fab{bottom:calc(86px + env(safe-area-inset-bottom))!important}
  .fa-nudge{bottom:calc(96px + env(safe-area-inset-bottom))!important}
  .pwa-install{bottom:calc(86px + env(safe-area-inset-bottom))!important}
}
/* Desktop: centered segmented tabs under the top bar */
@media(min-width:900px){
  .tabs{justify-content:center;gap:6px;padding:10px 14px;background:rgba(13,15,19,.7);backdrop-filter:blur(14px);border-bottom:1px solid rgba(255,255,255,.05)}
  .tab{padding:10px 18px;border-radius:999px;background:transparent;border:1px solid transparent;font-size:.95rem}
  .tab .ti{width:19px;height:19px}
  .tab:hover{background:rgba(255,255,255,.04);border-color:rgba(255,255,255,.08);color:var(--text)}
  .tab.active{background:linear-gradient(135deg,rgba(255,107,44,.2),rgba(255,161,78,.1));border-color:rgba(255,107,44,.55);box-shadow:0 0 18px rgba(255,107,44,.18)}
  main{max-width:1040px;padding:26px 22px 90px}
}

/* Panels fade in */
.panel{animation:panelIn .28s ease-out}
@keyframes panelIn{from{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}

/* Cards — calmer surfaces; the first card on each page keeps the ember ring */
.card{background:linear-gradient(180deg,rgba(255,255,255,.035),rgba(255,255,255,.008)),var(--card);
  border:1px solid rgba(255,255,255,.07);border-radius:var(--radius);padding:18px 18px 16px;margin-bottom:14px;
  box-shadow:0 12px 32px rgba(0,0,0,.32)}
.card:hover{border-color:rgba(255,255,255,.11);box-shadow:0 12px 32px rgba(0,0,0,.32)}
.card::before{content:none}
.panel>.card:first-child{border-color:rgba(255,120,50,.35);box-shadow:0 0 30px rgba(255,107,44,.14),0 12px 32px rgba(0,0,0,.35);
  background:radial-gradient(600px 220px at 90% -20%,rgba(255,107,44,.13),transparent 70%),linear-gradient(180deg,rgba(255,255,255,.04),rgba(255,255,255,.01)),var(--card)}
.panel>.card:first-child::before{content:""}
.card h2{font-size:1.02rem;font-weight:750;margin-bottom:14px;display:flex;align-items:baseline;flex-wrap:wrap;gap:4px 8px;letter-spacing:.01em}
.card h2 small{margin-left:0;font-size:.76rem}
details.card>summary{list-style:none}
details.card>summary::-webkit-details-marker{display:none}
details.card>summary::after{content:"›";float:right;color:var(--muted);font-size:1.3rem;line-height:1;transition:transform .2s}
details.card[open]>summary::after{transform:rotate(90deg)}

/* Stats */
.stat{background:linear-gradient(180deg,rgba(255,255,255,.04),rgba(255,255,255,.01)),var(--card2);border:1px solid rgba(255,255,255,.07);border-radius:16px;padding:16px 12px}
.stat b{font-size:1.6rem;font-weight:800;letter-spacing:-.01em}
.stat span{font-size:.74rem}
.grid2{gap:12px}
.grid2 .grid2{grid-template-columns:1fr 1fr}

/* Rings — tighter on phones so four fit in a row */
.ring .ring-label{font-weight:800}
@media(max-width:520px){
  .rings{display:grid;grid-template-columns:repeat(auto-fit,minmax(72px,1fr));gap:6px;justify-items:center}
  .ring{width:76px}
  .ring svg{width:76px;height:76px}
  .ring .ring-label{top:25px;font-size:.84rem}
  .ring .ring-sub{top:43px;font-size:.54rem}
  .ring .ring-name{font-size:.72rem;margin-top:4px}
}

/* Controls */
.btn{border-radius:12px;border:1px solid rgba(255,255,255,.09);background:rgba(255,255,255,.05);transition:filter .15s,border-color .15s,transform .1s}
.btn:active{transform:scale(.97)}
.btn-primary{background:linear-gradient(135deg,var(--ember),#ff8a3c);border:none;box-shadow:0 6px 18px rgba(255,107,44,.28)}
.btn-ghost{background:transparent;border-color:transparent}
.btn-ghost:hover{border-color:rgba(255,255,255,.1)}
.chip{background:rgba(255,255,255,.045);border:1px solid rgba(255,255,255,.09);padding:7px 13px;transition:border-color .15s,background .15s}
.chip:hover{background:rgba(255,107,44,.1);border-color:rgba(255,107,44,.5)}
input,select,textarea{background:#10131a;border:1px solid rgba(255,255,255,.09);border-radius:12px}
input:focus,select:focus,textarea:focus{outline:none;border-color:var(--ember);box-shadow:0 0 0 3px rgba(255,107,44,.18)}
label{font-weight:500}

/* Lists */
.food-item,.session{padding:12px 0;border-bottom:1px solid rgba(255,255,255,.055)}
.pr-card,.ex-card{background:rgba(255,255,255,.03);border:1px solid rgba(255,255,255,.07);border-radius:14px}
.date-nav{justify-content:flex-start}
.date-nav input{background:rgba(255,255,255,.04)}
.bar-wrap{height:10px;background:rgba(255,255,255,.06)}
.toast{z-index:1250;border-radius:14px;backdrop-filter:blur(10px)}

/* Keep the food picker above the floating AI button */
.fp{z-index:1100!important}
.fp-sheet-bg{z-index:1101!important}
.logo,.streak,.signout{white-space:nowrap}
@media(max-width:520px){
  .topbar{padding-left:14px;padding-right:14px}
  .logo{letter-spacing:.18em;font-size:.9rem}
  .top-right{gap:8px}
  .streak{padding:4px 10px;font-size:.74rem}
  .signout{padding:5px 8px;font-size:.72rem}
}
@media(max-width:380px){.streak .sk-txt{display:none}}
#tab-nutrition .date-nav{padding-right:54px;flex-wrap:wrap;gap:8px}
#tab-nutrition .date-nav input{flex:1;min-width:0;max-width:180px}
#nutriAddBtn{box-shadow:0 6px 20px rgba(255,107,44,.45)}
@media(max-width:520px){
  #tab-nutrition .date-nav{flex-wrap:nowrap}
  #tab-nutrition .date-nav input{max-width:none;padding:9px 10px}
  #tab-nutrition .date-nav .badge-green{display:none}
  #tab-nutrition .date-nav:has(.badge-green) input{border-color:rgba(74,222,128,.55);color:var(--green)}
}

/* ===================== v18 — Taste pass (redesign-skill audit) =====================
   Same Fuel palette + logo. Fixes: system font, loud secondary accents, flat surfaces,
   black shadows, spinner loading, missing focus/press states, glued nav bar. */
:root{
  --font:"Geist",ui-sans-serif,system-ui,-apple-system,"Segoe UI",sans-serif;
  --mono:"Geist Mono",ui-monospace,SFMono-Regular,Menlo,monospace;
  --ease:cubic-bezier(.32,.72,0,1);
  /* secondary data colors, desaturated so ember stays the only accent */
  --green:#7cc79a;--gold:#e3c07c;--purple:#b4a0de;--blue:#86aedc;--red:#eb8a8a;
  --shadow:0 18px 40px -18px rgba(2,4,10,.85);
  --r-lg:24px;--r-md:16px;--r-sm:12px;
}
html{scroll-behavior:smooth}
body{font-family:var(--font);font-weight:400;line-height:1.5;font-feature-settings:"ss01","cv11"}
h1,h2,h3{text-wrap:balance}
p{text-wrap:pretty}
.ring-label,.ring-sub,.stat b,.pr-num,.food-macros,.fp-sub,.fp-macros b,input[type=number],.streak b,svg.chart text{font-variant-numeric:tabular-nums}

/* Film grain — fixed, behind content, never on scrolling layers */
body::after{content:"";position:fixed;inset:0;z-index:-1;pointer-events:none;opacity:.05;mix-blend-mode:overlay;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='160' height='160'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.85' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E")}

/* Top bar */
.logo{font-weight:600;letter-spacing:.26em}
.logo b{font-weight:700}
.streak{display:inline-flex;align-items:center;gap:6px;background:rgba(255,107,44,.08);border:1px solid rgba(255,107,44,.28);color:var(--ember2);font-weight:500}
.streak b{font-weight:700;color:var(--text)}
.signout{font-weight:500}

/* Tabs: thinner icons; floating island bar on phones */
.tab .ti{stroke-width:1.6}
.tab{font-weight:500}
@media(max-width:899px){
  .tabs{left:12px;right:12px;bottom:calc(10px + env(safe-area-inset-bottom));padding:6px;border-radius:22px;
    border:1px solid rgba(255,255,255,.08);background:rgba(16,18,24,.82);
    box-shadow:0 20px 40px -12px rgba(0,0,0,.7),inset 0 1px 0 rgba(255,255,255,.05)}
  .tab{border-radius:16px;padding:8px 0 6px;transition:color .3s var(--ease),background .3s var(--ease)}
  .tab.active{background:rgba(255,107,44,.12);color:var(--ember2)}
  .tab.active::after{content:none}
  .tab.active .ti{filter:none}
  main{padding-bottom:calc(122px + env(safe-area-inset-bottom))}
  .toast{bottom:calc(104px + env(safe-area-inset-bottom))}
  .fa-fab{bottom:calc(98px + env(safe-area-inset-bottom))!important}
  .fa-nudge{bottom:calc(108px + env(safe-area-inset-bottom))!important}
  .pwa-install{bottom:calc(98px + env(safe-area-inset-bottom))!important}
}
@media(min-width:900px){
  .tab{transition:color .3s var(--ease),background .3s var(--ease),border-color .3s var(--ease)}
}

/* Panels */
.panel{animation:panelIn .5s var(--ease) both}
@keyframes panelIn{from{opacity:0;transform:translateY(10px)}to{opacity:1;transform:none}}

/* Cards: hairline + inner highlight + tinted shadow; varied radii */
.card{border-radius:var(--r-lg);border:1px solid rgba(255,255,255,.06);
  background:linear-gradient(180deg,rgba(255,255,255,.03),rgba(255,255,255,0) 40%),var(--card);
  box-shadow:inset 0 1px 0 rgba(255,255,255,.05),var(--shadow);padding:20px 20px 22px}
.card:hover{border-color:rgba(255,255,255,.09);box-shadow:inset 0 1px 0 rgba(255,255,255,.05),var(--shadow)}
.card h2{font-size:1.06rem;font-weight:600;letter-spacing:-.012em;margin-bottom:16px}
.card h2 small{font-weight:400;color:var(--muted);letter-spacing:0}
/* Hero card = double bezel (outer tray + machined inner plate) */
.panel>.card:first-child{border-color:rgba(255,120,50,.32);
  box-shadow:0 0 0 5px rgba(255,255,255,.022),0 0 0 6px rgba(255,255,255,.05),
    inset 0 1px 0 rgba(255,200,160,.08),0 28px 60px -24px rgba(255,90,30,.28),var(--shadow);
  margin:6px 6px 22px}
.panel>.card:first-child::before{opacity:.55}
@media(max-width:520px){.panel>.card:first-child{margin:6px 4px 20px}}

/* Skeleton instead of spinner for page loads */
.card.center:has(> .spinner){min-height:180px;color:transparent;user-select:none;
  background:linear-gradient(100deg,rgba(255,255,255,.025) 20%,rgba(255,255,255,.07) 40%,rgba(255,255,255,.025) 60%) 0 0/200% 100%,var(--card);
  animation:skel 1.4s linear infinite;border-color:rgba(255,255,255,.05);box-shadow:none}
.card.center:has(> .spinner) .spinner{display:none}
@keyframes skel{to{background-position:-200% 0,0 0}}

/* Stats: left-aligned, label under number */
.stat{text-align:left;padding:16px 16px 14px;border-radius:var(--r-md);box-shadow:inset 0 1px 0 rgba(255,255,255,.04)}
.stat b{font-size:1.75rem;font-weight:700;letter-spacing:-.03em;line-height:1.1;margin-bottom:4px}
.stat span{color:var(--muted);font-size:.76rem;line-height:1.35;display:block}

/* Rings */
.ring .ring-label{font-weight:700;letter-spacing:-.02em}
.ring .ring-name{font-weight:500}

/* Buttons: pill primary, press + hover physics */
.btn{font-weight:500;border-radius:var(--r-sm);transition:transform .25s var(--ease),background .25s var(--ease),border-color .25s var(--ease),filter .25s var(--ease),box-shadow .25s var(--ease)}
.btn:hover{background:rgba(255,255,255,.08)}
.btn:active{transform:scale(.98)}
.btn-primary{border-radius:999px;padding:11px 20px;font-weight:600;color:#1a0b02;
  box-shadow:0 10px 24px -10px rgba(255,107,44,.75),inset 0 1px 0 rgba(255,255,255,.28)}
.btn-primary:hover{background:linear-gradient(135deg,#ff7a3d,#ff9a52);transform:translateY(-1px);filter:none}
.btn-primary:active{transform:translateY(0) scale(.98)}
.btn-sm{border-radius:10px}
.btn-sm.btn-primary{padding:7px 14px}
.chip{font-weight:500;transition:background .25s var(--ease),border-color .25s var(--ease),transform .25s var(--ease)}
.chip:active{transform:scale(.97)}
:focus-visible{outline:2px solid var(--ember);outline-offset:2px}
input:focus-visible,select:focus-visible,textarea:focus-visible{outline:none}
input,select,textarea{border-radius:var(--r-sm);transition:border-color .25s var(--ease),box-shadow .25s var(--ease)}
label{color:var(--muted);font-size:.78rem;font-weight:500;letter-spacing:.01em}

/* Lists */
.food-item b,.session b{font-weight:600}
.food-macros{font-size:.76rem}
.pr-card,.ex-card{border-radius:var(--r-md)}
.badge{border-radius:8px;font-weight:500}

/* Nutrition search bar */
#fSearch{padding-left:44px!important;background:#10131a url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%239aa3b2' stroke-width='1.8' stroke-linecap='round'%3E%3Ccircle cx='11' cy='11' r='7'/%3E%3Cpath d='m20 20-3.5-3.5'/%3E%3C/svg%3E") 16px 50%/18px no-repeat}

/* Landing */
.landing h1{font-weight:700;letter-spacing:-.035em;line-height:1.02;font-size:clamp(2.3rem,7vw,4rem)}
.landing-sub{max-width:52ch;font-size:1.02rem}
.eyebrow{display:inline-block;margin-bottom:18px;padding:5px 12px;border-radius:999px;border:1px solid rgba(255,107,44,.3);background:rgba(255,107,44,.07);
  color:var(--ember2);font-size:.68rem;font-weight:500;letter-spacing:.2em;text-transform:uppercase}
.logo-big{font-weight:600}
.feat{border-radius:var(--r-md);box-shadow:inset 0 1px 0 rgba(255,255,255,.05),var(--shadow)}
.feat b{font-weight:600}

@media (prefers-reduced-motion:reduce){*,*::before,*::after{animation:none!important;transition:none!important;scroll-behavior:auto!important}}
@media(max-width:520px){
  .rings:has(> .ring:nth-child(4)){grid-template-columns:repeat(4,1fr);gap:2px}
  .rings:has(> .ring:nth-child(4)) .ring{width:68px}
  .rings:has(> .ring:nth-child(4)) .ring svg{width:68px;height:68px}
  .rings:has(> .ring:nth-child(4)) .ring .ring-label{top:21px;font-size:.78rem}
  .rings:has(> .ring:nth-child(4)) .ring .ring-sub{top:37px;font-size:.5rem}
}

/* ===================== v19 — MyFitnessPal-style diary, sheets, quick-log button ===================== */
/* Center + in the tab bar */
.tab-plus{display:flex;align-items:center;justify-content:center;background:none;border:none;padding:0;cursor:pointer}
.tab-plus span{width:48px;height:48px;border-radius:16px;display:flex;align-items:center;justify-content:center;
  background:linear-gradient(135deg,var(--ember),#ff8a3c);box-shadow:0 10px 22px -8px rgba(255,107,44,.8),inset 0 1px 0 rgba(255,255,255,.3);
  transition:transform .25s var(--ease)}
.tab-plus svg{width:24px;height:24px;stroke:#1a0b02;stroke-width:2.4;stroke-linecap:round;fill:none}
.tab-plus:active span{transform:scale(.94)}
@media(max-width:899px){.tabs:has(.tab-plus){grid-template-columns:repeat(3,1fr) 60px repeat(3,1fr)}}
@media(min-width:900px){.tab-plus span{width:40px;height:40px;border-radius:999px}.tab-plus{margin:0 6px}}

/* Bottom sheets */
.qs-bg{position:fixed;inset:0;z-index:1150;background:rgba(4,6,10,.62);display:flex;align-items:flex-end;justify-content:center;
  opacity:0;transition:opacity .25s var(--ease)}
.qs-bg.on{opacity:1}
.qs{width:100%;max-width:560px;max-height:90vh;overflow-y:auto;background:linear-gradient(180deg,rgba(255,255,255,.04),rgba(255,255,255,0) 30%),var(--card);
  border:1px solid rgba(255,255,255,.08);border-bottom:none;border-radius:26px 26px 0 0;padding:10px 20px calc(20px + env(safe-area-inset-bottom));
  box-shadow:0 -20px 50px -10px rgba(0,0,0,.6),inset 0 1px 0 rgba(255,255,255,.06);transform:translateY(100%);transition:transform .38s var(--ease)}
.qs-bg.on .qs{transform:none}
@media(min-width:900px){.qs-bg{align-items:center}.qs{border-radius:26px;border-bottom:1px solid rgba(255,255,255,.08);padding-bottom:22px}}
.qs-grab{width:38px;height:4px;border-radius:4px;background:rgba(255,255,255,.18);margin:2px auto 14px}
.qs h3{font-size:1.18rem;font-weight:600;letter-spacing:-.015em;margin-bottom:4px;padding-right:8px}
.qs-sub{color:var(--muted);font-size:.82rem;margin-bottom:16px}
.qs-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-top:6px}
.qs-grid label{display:flex;flex-direction:column;gap:6px;margin:0}
.qs-wide{grid-column:1/-1}
.qs-opt{color:var(--muted);font-weight:400}
.qs-grid input,.qs-grid select{font-size:1rem;padding:12px 14px}
.qs-check{display:flex!important;align-items:center;gap:8px;margin-top:14px;color:var(--muted)}
.qs-check input{width:auto;accent-color:var(--ember)}
.qs-actions{display:flex;gap:8px;margin-top:20px}
.qs-actions .btn{flex:1;padding:13px 12px}
.qs-actions .btn-danger{flex:0 0 auto}
.qs-macros{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;margin-top:16px}
.qs-macros div{background:rgba(255,255,255,.04);border:1px solid rgba(255,255,255,.06);border-radius:14px;padding:10px 4px;text-align:center}
.qs-macros b{display:block;font-size:1.1rem;font-weight:700;font-variant-numeric:tabular-nums}
.qs-macros span{font-size:.7rem;color:var(--muted)}
.qs-list button{display:block;width:100%;text-align:left;background:rgba(255,255,255,.04);border:1px solid rgba(255,255,255,.06);border-radius:16px;
  padding:14px 16px;margin-bottom:8px;transition:background .25s var(--ease),transform .25s var(--ease)}
.qs-list button:active{transform:scale(.99);background:rgba(255,107,44,.1)}
.qs-list span{display:block;font-weight:600}
.qs-list small{display:block;color:var(--muted);font-size:.78rem;margin-top:2px}
.qs-hub{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin-top:12px}
.qs-hub button{display:flex;flex-direction:column;align-items:center;gap:8px;padding:18px 6px 14px;border-radius:18px;
  background:rgba(255,255,255,.04);border:1px solid rgba(255,255,255,.07);transition:background .25s var(--ease),transform .25s var(--ease)}
.qs-hub button:active{transform:scale(.97);background:rgba(255,107,44,.12)}
.qs-hub svg{width:26px;height:26px;fill:none;stroke:var(--ember2);stroke-width:1.6;stroke-linecap:round;stroke-linejoin:round}
.qs-hub span{font-size:.8rem;font-weight:500}

/* Diary summary */
.dz-date{display:flex;align-items:center;justify-content:space-between;gap:8px}
.dz-arrow{width:40px;height:40px;border-radius:12px;border:1px solid rgba(255,255,255,.08);background:rgba(255,255,255,.04);display:flex;align-items:center;justify-content:center}
.dz-arrow svg{width:18px;height:18px;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}
.dz-arrow:disabled{opacity:.3;cursor:default}
.dz-day{position:relative;margin:0;padding:8px 16px;border-radius:12px;cursor:pointer;font-size:1.02rem;font-weight:600;color:var(--text)}
.dz-day input{position:absolute;inset:0;opacity:0;cursor:pointer;width:100%;padding:0}
.dz-eqlabel{text-align:center;color:var(--muted);font-size:.78rem;font-weight:500;margin:16px 0 10px;letter-spacing:.01em}
.dz-eq{display:flex;align-items:flex-start;justify-content:space-between;gap:4px}
.dz-eq>div{text-align:center;min-width:0;flex:1}
.dz-eq b{display:block;font-size:1.18rem;font-weight:700;letter-spacing:-.02em;font-variant-numeric:tabular-nums;line-height:1.2}
.dz-eq span{display:block;font-size:.68rem;color:var(--muted);margin-top:2px}
.dz-eq i{font-style:normal;color:var(--muted);padding-top:2px;flex:0 0 auto}
.dz-rem b{font-size:1.5rem;color:var(--ember2);margin-top:-4px}
.dz-rem.over b{color:var(--red)}
.dz-bar{height:8px;border-radius:8px;background:rgba(255,255,255,.06);margin-top:16px;overflow:hidden}
.dz-bar i{display:block;height:100%;border-radius:8px;background:linear-gradient(90deg,var(--ember),var(--ember2));transition:width .6s var(--ease)}
.dz-macros{display:grid;grid-template-columns:repeat(3,1fr);gap:14px;margin-top:18px}
.dz-mtop{display:flex;justify-content:space-between;align-items:baseline;gap:4px;margin-bottom:6px}
.dz-mtop span{font-size:.74rem;color:var(--muted);font-weight:500}
.dz-mtop b{font-size:.84rem;font-weight:600;font-variant-numeric:tabular-nums;white-space:nowrap}
.dz-mtop small{color:var(--muted);font-weight:400;font-size:.7rem}
.dz-mbar{height:5px;border-radius:5px;background:rgba(255,255,255,.06);overflow:hidden}
.dz-mbar i{display:block;height:100%;border-radius:5px;transition:width .6s var(--ease)}
@media(max-width:380px){.dz-macros{grid-template-columns:1fr;gap:10px}}

/* Search button */
.dz-search{display:flex;align-items:center;gap:12px;width:100%;margin:0 0 14px;padding:15px 18px;border-radius:999px;
  background:#10131a;border:1px solid rgba(255,255,255,.09);color:var(--muted);font-size:1rem;text-align:left;
  transition:border-color .25s var(--ease),background .25s var(--ease)}
.dz-search:hover{border-color:rgba(255,107,44,.5)}
.dz-search:active{transform:scale(.99)}
.dz-search svg{width:19px;height:19px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round}

/* Meal sections */
.dz-meal{padding:0;overflow:hidden}
.dz-meal header{display:flex;justify-content:space-between;align-items:baseline;padding:16px 18px 12px}
.dz-meal h3{font-size:1rem;font-weight:600;letter-spacing:-.01em}
.dz-kcal{font-weight:600;font-variant-numeric:tabular-nums}
.dz-kcal small{color:var(--muted);font-weight:400}
.dz-item{display:flex;align-items:center;gap:12px;width:100%;text-align:left;background:none;border:none;border-top:1px solid rgba(255,255,255,.05);
  padding:12px 18px;color:var(--text);transition:background .2s var(--ease)}
button.dz-item:active{background:rgba(255,255,255,.04)}
.dz-txt{flex:1;min-width:0}
.dz-name{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-weight:500;font-size:.95rem}
.dz-sub{display:block;color:var(--muted);font-size:.75rem;margin-top:2px;font-variant-numeric:tabular-nums}
.dz-cal{font-weight:600;font-variant-numeric:tabular-nums;flex:0 0 auto}
.dz-meal footer{display:flex;justify-content:space-between;align-items:center;border-top:1px solid rgba(255,255,255,.05);padding:4px 8px 4px 18px}
.dz-add{background:none;border:none;color:var(--ember2);font-weight:600;font-size:.86rem;padding:12px 0;letter-spacing:.01em}
.dz-more{width:44px;height:44px;border:none;background:none;border-radius:12px;display:flex;align-items:center;justify-content:center;color:var(--muted)}
.dz-more svg{width:20px;height:20px;fill:currentColor}
.dz-more:active{background:rgba(255,255,255,.05)}
.dz-wbar{margin:0 18px 14px;height:7px}
.dz-wbar i{background:linear-gradient(90deg,#5d8fd0,var(--blue))}
.dz-wbtns{display:flex;gap:8px;padding:0 18px 16px;flex-wrap:wrap}
.dz-wbtns button{flex:1;min-width:64px;padding:10px 6px;border-radius:12px;background:rgba(255,255,255,.045);border:1px solid rgba(255,255,255,.08);font-weight:500;font-size:.84rem;font-variant-numeric:tabular-nums}
.dz-wbtns button:active{transform:scale(.97);background:rgba(134,174,220,.15)}
.dz-wbtns button:last-child{flex:0 0 56px;color:var(--muted)}

/* Totals table */
.dz-totals table{width:100%;border-collapse:collapse;font-variant-numeric:tabular-nums;font-size:.84rem}
.dz-totals th,.dz-totals td{padding:8px 4px;text-align:right}
.dz-totals th:first-child{text-align:left;font-weight:500;color:var(--muted)}
.dz-totals thead th{font-size:.7rem;color:var(--muted);font-weight:500}
.dz-totals tbody tr{border-top:1px solid rgba(255,255,255,.05)}
.dz-remrow td{font-weight:700;color:var(--ember2)}
.dz-remrow th{color:var(--text)!important}
.dz-totals td.neg{color:var(--red)}

/* Dashboard remaining strip */
.dz-dash{padding:2px 0 16px;margin-bottom:12px;border-bottom:1px solid rgba(255,255,255,.06)}
.dz-dash .dz-eqlabel{text-align:left;margin:0 0 10px}
@media(max-width:899px){
  .tabs:has(.tab-plus){padding:6px 4px;grid-template-columns:repeat(3,1fr) 58px repeat(3,1fr)}
  .tabs:has(.tab-plus) .tab{font-size:.6rem;letter-spacing:0}
  .tabs:has(.tab-plus) .tab[data-tab="dashboard"] span{font-size:0}
  .tabs:has(.tab-plus) .tab[data-tab="dashboard"] span::after{content:"Home";font-size:.6rem}
}
@media(max-width:380px){.dz-macros{grid-template-columns:repeat(3,1fr);gap:10px}}
@media(max-width:340px){.dz-macros{grid-template-columns:1fr}}

/* ===================== v20 — cleaner dashboard, streak fix, split builder, exercise picker ===================== */
/* Top bar on phones: logo left, streak pill right; Sign out lives in Profile */
@media(max-width:520px){
  .topbar{gap:10px}
  .signout{display:none}
  .logo{letter-spacing:.16em;font-size:.86rem;min-width:0}
  .streak{height:30px;padding:0 11px;gap:5px;line-height:1;align-self:center}
  .streak svg{display:block;flex:0 0 auto}
  .streak b{font-size:.86rem;line-height:1}
  .streak .sk-txt{display:none}
}
.streak{display:inline-flex;align-items:center;justify-content:center;line-height:1}
.streak svg{display:block}

/* Dashboard */
.dash-cust{position:absolute;top:16px;right:16px;width:38px;height:38px;border-radius:12px;border:1px solid rgba(255,255,255,.08);
  background:rgba(255,255,255,.04);display:flex;align-items:center;justify-content:center;color:var(--muted);z-index:1}
.dash-cust svg{width:18px;height:18px;fill:none;stroke:currentColor;stroke-width:1.7;stroke-linecap:round}
.dash-cust:hover{color:var(--text);border-color:rgba(255,107,44,.4)}
#tab-dashboard>.card:first-child h2{padding-right:48px}
.dash-stats{display:grid;grid-template-columns:repeat(4,1fr);gap:8px}
.dash-stats>div{min-width:0}
.dash-stats b{display:block;font-size:1.3rem;font-weight:700;letter-spacing:-.02em;font-variant-numeric:tabular-nums;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.dash-stats span{display:block;font-size:.7rem;color:var(--muted);margin-top:2px}
@media(max-width:380px){.dash-stats{grid-template-columns:repeat(2,1fr);row-gap:14px}}
.dash-trend-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:12px}
.dash-trend-head h2{margin:0}
.seg{display:inline-flex;padding:3px;border-radius:12px;background:rgba(255,255,255,.05);border:1px solid rgba(255,255,255,.07)}
.seg button{border:none;background:none;padding:6px 12px;border-radius:9px;font-size:.78rem;font-weight:500;color:var(--muted);transition:background .25s var(--ease),color .25s var(--ease)}
.seg button.on{background:rgba(255,107,44,.16);color:var(--ember2)}
.dash-pr{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:11px 0;border-top:1px solid rgba(255,255,255,.05)}
.dash-pr:first-of-type{border-top:none;padding-top:0}
.dash-pr b{font-weight:600}
.dash-pr span{display:block;font-size:.74rem;color:var(--muted);margin-top:2px}
.dash-pr-r{display:flex;align-items:center;gap:10px;text-align:right}
.dash-pr-r svg{width:70px;height:28px}
.dash-pr-r b{font-variant-numeric:tabular-nums;white-space:nowrap}
.dash-pr-r small{display:block;font-size:.66rem;color:var(--muted);font-weight:400}
.dash-week h2,.dash-prs h2{margin-bottom:14px}

/* Selected chip state (builder) */
.chip.on{background:rgba(255,107,44,.16);border-color:rgba(255,107,44,.6);color:var(--ember2)}

/* Split builder */
.sb-q{margin-bottom:14px}
.sb-q label{margin-bottom:6px}
.sb-chips{display:flex;flex-wrap:wrap;gap:6px}
.sb-chips .chip{margin:0;padding:8px 14px}
.sb-chips[data-k="days"] .chip{min-width:44px;text-align:center}
.sb-out{margin-top:6px;border-top:1px solid rgba(255,255,255,.06);padding-top:16px}
.sb-head{display:flex;justify-content:space-between;align-items:flex-start;gap:12px;margin-bottom:12px}
.sb-head b{display:block;font-size:1.05rem;font-weight:600}
.sb-head span{display:block;font-size:.76rem;color:var(--muted);margin-top:2px}
.sb-day{background:rgba(255,255,255,.03);border:1px solid rgba(255,255,255,.06);border-radius:16px;padding:12px 14px;margin-bottom:10px}
.sb-dayhead{display:flex;align-items:center;gap:10px;margin-bottom:6px}
.sb-dow{font-size:.66rem;font-weight:600;letter-spacing:.1em;text-transform:uppercase;color:var(--ember2);background:rgba(255,107,44,.1);border-radius:6px;padding:3px 7px}
.sb-dayhead b{font-weight:600;font-size:.92rem}
.sb-ex{display:flex;justify-content:space-between;gap:10px;padding:6px 0;border-top:1px solid rgba(255,255,255,.04);font-size:.88rem}
.sb-ex:first-of-type{border-top:none}
.sb-ex small{color:var(--muted);font-variant-numeric:tabular-nums;white-space:nowrap}
.sb-note{margin:6px 0 14px;line-height:1.5}
.sb-actions{display:flex;gap:8px;flex-wrap:wrap}
.sb-actions .btn{flex:1;min-width:150px}

/* Exercise picker sheet */
.qs.xp{display:flex;flex-direction:column;max-height:86vh}
.xp-search{border-radius:999px;padding:12px 16px;margin-bottom:8px}
.xp-list{overflow-y:auto;flex:1;margin:0 -20px;padding:0 20px;min-height:200px}
.xp-sec{font-size:.7rem;font-weight:600;letter-spacing:.1em;text-transform:uppercase;color:var(--muted);padding:14px 0 6px}
.xp-row{display:flex;justify-content:space-between;align-items:center;width:100%;text-align:left;background:none;border:none;border-top:1px solid rgba(255,255,255,.05);
  padding:12px 2px;color:var(--text);font-size:.95rem}
.xp-row:active{background:rgba(255,255,255,.04)}
.xp-row small{color:var(--ember2);font-size:.76rem}
.exName[readonly]{cursor:pointer;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%239aa3b2' stroke-width='2' stroke-linecap='round'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E");
  background-repeat:no-repeat;background-position:right 12px center;background-size:16px;padding-right:36px}

/* ===================== v21 — phone-first app shell + accessibility ===================== */
:root{--col:480px;--gutter:max(16px,env(safe-area-inset-left))}
html{-webkit-tap-highlight-color:transparent;text-size-adjust:100%}
body{overscroll-behavior-y:none;overflow-x:hidden}
button,a,input,select,textarea,label,.chip,.tab,.tab-plus{touch-action:manipulation}

/* One phone-width column on every screen: a computer shows the same app as a phone */
#app{max-width:var(--col);margin:0 auto;min-height:100dvh;position:relative}
@media(min-width:520px){
  #app{border-left:1px solid rgba(255,255,255,.05);border-right:1px solid rgba(255,255,255,.05);
    box-shadow:0 0 80px rgba(0,0,0,.45);background:rgba(13,15,19,.55)}
}
main,main[class]{max-width:none;padding:14px max(14px,env(safe-area-inset-right)) calc(124px + env(safe-area-inset-bottom)) max(14px,env(safe-area-inset-left))}
.topbar{padding-left:max(16px,env(safe-area-inset-left));padding-right:max(16px,env(safe-area-inset-right))}
.signout{display:none}
.logo{letter-spacing:.16em;font-size:.88rem}
.streak .sk-txt{display:none}
.streak{height:32px;padding:0 12px;gap:6px}

/* Bottom tab bar on every screen size, sized to the column */
.tabs,.tabs:has(.tab-plus){position:fixed;top:auto;bottom:calc(10px + env(safe-area-inset-bottom));
  left:max(12px,calc(50% - var(--col)/2 + 12px));right:max(12px,calc(50% - var(--col)/2 + 12px));
  z-index:50;display:grid;grid-template-columns:repeat(3,1fr) 60px repeat(3,1fr);gap:0;justify-content:stretch;
  padding:6px 4px;border-radius:22px;border:1px solid rgba(255,255,255,.08);background:rgba(16,18,24,.88);
  backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px);box-shadow:0 20px 40px -12px rgba(0,0,0,.7),inset 0 1px 0 rgba(255,255,255,.05)}
.tabs .tab,.tabs:has(.tab-plus) .tab{flex-direction:column;gap:3px;justify-content:center;align-items:center;background:none;border:none;box-shadow:none;
  border-radius:16px;min-height:52px;padding:6px 0 5px;font-size:.66rem;font-weight:500;letter-spacing:-.01em;color:var(--muted);min-width:0}
.tabs .tab .ti{width:24px;height:24px}
.tabs .tab:hover{background:none;border:none;color:var(--text)}
.tabs .tab.active{background:rgba(255,107,44,.13);color:var(--ember2);border:none;box-shadow:none}
.tabs .tab.active::after{content:none}
.tabs .tab[data-tab="dashboard"] span{font-size:0}
.tabs .tab[data-tab="dashboard"] span::after{content:"Home";font-size:.66rem}
.tab-plus span{width:50px;height:50px;border-radius:17px}

/* Floating things stay inside the column */
.toast{bottom:calc(100px + env(safe-area-inset-bottom));max-width:min(440px,calc(100vw - 32px))}
.fa-fab{right:max(16px,calc(50% - var(--col)/2 + 16px))!important;bottom:calc(98px + env(safe-area-inset-bottom))!important}
.fa-nudge{right:max(84px,calc(50% - var(--col)/2 + 84px))!important;bottom:calc(108px + env(safe-area-inset-bottom))!important}
.fa-panel{left:max(0px,calc(50% - var(--col)/2))!important;right:max(0px,calc(50% - var(--col)/2))!important;width:auto!important;max-width:none!important;
  bottom:0!important;height:min(86dvh,720px)!important;max-height:none!important;border-radius:22px 22px 0 0!important}
.pwa-install{left:max(16px,calc(50% - var(--col)/2 + 16px))!important;bottom:calc(98px + env(safe-area-inset-bottom))!important}
.fp{left:max(0px,calc(50% - var(--col)/2))!important;right:max(0px,calc(50% - var(--col)/2))!important}
.qs{max-width:var(--col)}
.qs-bg{align-items:flex-end!important}
.qs{border-radius:26px 26px 0 0!important;border-bottom:none!important;padding-bottom:calc(20px + env(safe-area-inset-bottom))!important}

/* Layouts collapse to phone grids even on wide screens */
.grid2,.grid3{grid-template-columns:1fr 1fr}
.grid2 .grid2{grid-template-columns:1fr 1fr}
.row>div{min-width:min(110px,100%)}
.landing{padding:max(24px,env(safe-area-inset-top)) var(--gutter) max(24px,env(safe-area-inset-bottom))}
.landing-inner{max-width:var(--col)}
.landing-feats{grid-template-columns:1fr 1fr}

/* Touch targets: 44px minimum (Apple HIG / WCAG 2.5.5) */
.btn{min-height:44px}
.btn-sm{min-height:40px;padding:8px 12px}
.btn-ghost.btn-sm{min-width:40px}
.chip{min-height:38px;display:inline-flex;align-items:center;padding:8px 14px}
.dz-add{min-height:44px}
.mode-btn{min-height:46px}
input[type=checkbox]{min-width:22px;min-height:22px}
details>summary{min-height:44px;display:flex;align-items:center}
/* 16px text in fields stops iOS from zooming in on focus */
input,select,textarea,.fa-input,.xp-search{font-size:16px!important}
input,select{min-height:46px}
.set-row input{min-height:46px}

/* Readability */
.small,.muted.small{font-size:.84rem}
.food-macros,.dz-sub,.fp-sub{font-size:.78rem}
label{font-size:.82rem}
.card h2 small{font-size:.8rem}

/* Visible focus for keyboard / switch-control users */
:focus-visible{outline:2px solid var(--ember2);outline-offset:3px;border-radius:10px}
.tab:focus-visible,.tab-plus:focus-visible{outline-offset:-2px}

/* Screen-reader-only text */
.sr-only{position:absolute!important;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}

/* Diary swipe hint */
.dz-sum{touch-action:pan-y}
.dz-sum.swipe-l{animation:swl .28s var(--ease)}
.dz-sum.swipe-r{animation:swr .28s var(--ease)}
@keyframes swl{from{transform:translateX(18px);opacity:.6}to{transform:none;opacity:1}}
@keyframes swr{from{transform:translateX(-18px);opacity:.6}to{transform:none;opacity:1}}
.seg button{min-height:38px;padding:8px 14px}

/* ===================== v22 — research pass: Home "Today", live workout, water glasses, projection ===================== */
/* Home */
.hm-greet{padding:6px 4px 14px}
.hm-greet h1{font-size:1.45rem;font-weight:700;letter-spacing:-.025em;line-height:1.15}
.hm-greet span{display:block;color:var(--muted);font-size:.86rem;margin-top:3px}
.hm-hero{display:flex;flex-direction:column;align-items:center;text-align:center;padding-top:22px}
.hm-ring{position:relative;width:196px;height:196px;border:none;background:none;padding:0;border-radius:50%}
.hm-ring svg{width:100%;height:100%;display:block}
.hm-ring circle{transition:stroke-dashoffset .9s var(--ease)}
.hm-ring-c{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center}
.hm-ring-c b{font-size:2.3rem;font-weight:700;letter-spacing:-.04em;font-variant-numeric:tabular-nums;line-height:1}
.hm-ring-c span{color:var(--muted);font-size:.82rem;margin-top:6px}
.hm-eq{display:grid;grid-template-columns:repeat(3,1fr);width:100%;margin:14px 0 4px;gap:8px}
.hm-eq b{display:block;font-size:1.05rem;font-weight:600;font-variant-numeric:tabular-nums}
.hm-eq span{display:block;font-size:.72rem;color:var(--muted);margin-top:2px}
.hm-macros{width:100%;display:grid;grid-template-columns:repeat(3,1fr);gap:12px;margin:16px 0 18px;text-align:left}
.hm-mac>div:first-child{display:flex;justify-content:space-between;align-items:baseline;margin-bottom:6px;gap:4px}
.hm-mac span{font-size:.74rem;color:var(--muted);font-weight:500}
.hm-mac b{font-size:.86rem;font-weight:600;font-variant-numeric:tabular-nums;white-space:nowrap}
.hm-mac small{color:var(--muted);font-weight:400;font-size:.7rem}
.hm-log{width:100%}
.hm-tiles{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-bottom:14px}
.hm-tiles .card{margin:0;padding:16px}
.hm-th span{display:block;font-size:.76rem;color:var(--muted);font-weight:500}
.hm-th b{display:block;font-size:1.35rem;font-weight:700;letter-spacing:-.02em;font-variant-numeric:tabular-nums;margin-top:2px}
.hm-th small{font-size:.74rem;color:var(--muted);font-weight:400}
.hm-glasses{display:grid;grid-template-columns:repeat(4,1fr);gap:6px;margin-top:12px}
.hm-glass{height:44px;border:none;background:rgba(255,255,255,.035);border-radius:10px;display:flex;align-items:center;justify-content:center;padding:0;transition:transform .2s var(--ease),background .2s var(--ease)}
.hm-glass svg{width:20px;height:26px}
.hm-glass svg path:first-child{fill:none;stroke:rgba(255,255,255,.28);stroke-width:1.4;stroke-linejoin:round}
.hm-glass .fill{fill:transparent;transition:fill .25s var(--ease)}
.hm-glass.on{background:rgba(134,174,220,.14)}
.hm-glass.on svg path:first-child{stroke:var(--blue)}
.hm-glass.on .fill{fill:var(--blue)}
.hm-glass:active{transform:scale(.92)}
.hm-wt{display:flex;flex-direction:column}
.hm-rate{font-size:.8rem;color:var(--muted);margin:8px 0 12px;flex:1}
.hm-rate.down{color:var(--green)}
.hm-rate.up{color:var(--gold)}
.hm-wt .btn{width:100%}
.hm-work .hm-wh{display:flex;justify-content:space-between;align-items:flex-start;gap:10px}
.hm-work small{display:block;font-size:.72rem;color:var(--ember2);font-weight:600;letter-spacing:.08em;text-transform:uppercase}
.hm-work b{display:block;font-size:1.08rem;font-weight:600;margin-top:2px}
.hm-wl{list-style:none;margin:12px 0 14px;padding:0}
.hm-wl li{display:flex;justify-content:space-between;gap:10px;padding:9px 0;border-top:1px solid rgba(255,255,255,.05);font-size:.9rem}
.hm-wl li small{color:var(--muted);font-size:.78rem;font-variant-numeric:tabular-nums;letter-spacing:0;text-transform:none;font-weight:400}
.hm-start,.hm-work>.btn{width:100%}
.hm-legend{display:flex;gap:16px;margin-top:8px;font-size:.76rem;color:var(--muted)}
.hm-legend i{display:inline-block;vertical-align:middle;margin-right:6px}
.hm-legend .dot{width:7px;height:7px;border-radius:50%;background:var(--muted);opacity:.6}
.hm-legend .ln{width:16px;height:3px;border-radius:3px;background:var(--purple)}
@media(max-width:360px){.hm-ring{width:170px;height:170px}.hm-ring-c b{font-size:2rem}.hm-macros{grid-template-columns:1fr}}

/* Diary water glasses + projection */
.dz-glasses{grid-template-columns:repeat(auto-fill,minmax(36px,1fr));padding:0 18px 12px;margin-top:0}
.dz-proj{margin-top:16px;padding:14px 16px;border-radius:16px;background:linear-gradient(135deg,rgba(255,107,44,.1),rgba(255,161,78,.04));border:1px solid rgba(255,107,44,.22)}
.dz-proj small{display:block;font-size:.72rem;color:var(--ember2);font-weight:600;letter-spacing:.06em;text-transform:uppercase}
.dz-proj p{margin:4px 0 2px;font-size:.98rem}
.dz-proj b{font-variant-numeric:tabular-nums}
.dz-proj span{font-size:.76rem;color:var(--muted)}

/* Train: start card + muscle map */
.wk-start h2{margin-bottom:12px}
.wk-today{padding:14px;border-radius:16px;background:rgba(255,255,255,.035);border:1px solid rgba(255,255,255,.06);margin-bottom:12px}
.wk-today small{display:block;font-size:.72rem;color:var(--ember2);font-weight:600;letter-spacing:.06em;text-transform:uppercase}
.wk-today b{display:block;font-size:1.05rem;font-weight:600;margin:2px 0}
.wk-today span{font-size:.82rem;color:var(--muted)}
.wk-big{width:100%;margin-bottom:8px;min-height:50px}
.wk-live{display:flex;align-items:center;gap:12px;margin-bottom:12px}
.wk-live b{display:block;font-weight:600}
.wk-live span{font-size:.8rem;color:var(--muted)}
.wk-dot{width:12px;height:12px;border-radius:50%;background:var(--green);box-shadow:0 0 0 0 rgba(124,199,154,.6);animation:wkpulse 1.6s infinite}
@keyframes wkpulse{70%{box-shadow:0 0 0 10px rgba(124,199,154,0)}100%{box-shadow:0 0 0 0 rgba(124,199,154,0)}}
.wk-muscles{margin-top:16px;padding-top:14px;border-top:1px solid rgba(255,255,255,.06)}
.wk-muscles small{display:block;font-size:.74rem;color:var(--muted);margin-bottom:10px}
.wk-mgrid{display:grid;gap:8px}
.wk-m{display:grid;grid-template-columns:118px 1fr 26px;align-items:center;gap:10px;font-size:.84rem}
.wk-m i{height:8px;border-radius:8px;background:linear-gradient(90deg,var(--ember) var(--p),rgba(255,255,255,.06) var(--p))}
.wk-m b{text-align:right;font-variant-numeric:tabular-nums;font-weight:600}
.wk-m.zero span,.wk-m.zero b{color:var(--muted)}

/* Live workout screen */
.wk{position:fixed;top:0;bottom:0;left:max(0px,calc(50% - var(--col)/2));right:max(0px,calc(50% - var(--col)/2));z-index:1100;background:var(--bg);display:flex;flex-direction:column;animation:fpIn .22s var(--ease)}
.wk-head{display:flex;align-items:center;gap:10px;padding:10px 12px;padding-top:max(10px,env(safe-area-inset-top));border-bottom:1px solid rgba(255,255,255,.07);background:var(--bg2)}
.wk-icon{width:44px;height:44px;flex:0 0 44px;border:none;background:none;border-radius:12px;display:flex;align-items:center;justify-content:center;color:var(--muted)}
.wk-icon svg{width:22px;height:22px;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round}
.wk-exhead .wk-icon svg{fill:currentColor;stroke:none}
.wk-title{flex:1;min-width:0}
.wk-name{width:100%;background:none!important;border:none!important;padding:2px 0!important;min-height:0!important;font-weight:600;font-size:1.02rem!important;box-shadow:none!important}
.wk-clock{font-size:.8rem;color:var(--ember2);font-variant-numeric:tabular-nums;font-weight:600}
.wk-finish{min-height:42px;padding:8px 18px}
.wk-body{flex:1;overflow-y:auto;padding:12px 12px 160px;-webkit-overflow-scrolling:touch}
.wk-ex{background:var(--card);border:1px solid rgba(255,255,255,.06);border-radius:20px;padding:14px 12px 8px;margin-bottom:12px}
.wk-exhead{display:flex;justify-content:space-between;align-items:flex-start;gap:8px;padding:0 4px 8px}
.wk-exhead b{display:block;font-weight:600;color:var(--ember2)}
.wk-exhead span{display:block;font-size:.74rem;color:var(--muted);margin-top:2px}
.wk-grid{display:grid;grid-template-columns:34px 1fr 74px 64px 46px;gap:6px;align-items:center}
.wk-gh{font-size:.7rem;color:var(--muted);font-weight:600;letter-spacing:.06em;text-transform:uppercase;padding:0 0 6px}
.wk-gh span:nth-child(3),.wk-gh span:nth-child(4){text-align:center}
.wk-set{padding:4px 0;border-radius:12px;transition:background .25s var(--ease)}
.wk-set.done{background:rgba(124,199,154,.12)}
.wk-n{text-align:center;font-weight:600;font-variant-numeric:tabular-nums}
.wk-prev{font-size:.8rem;color:var(--muted);font-variant-numeric:tabular-nums}
.wk-set input{min-height:42px!important;padding:6px 4px!important;text-align:center;border-radius:10px!important;font-variant-numeric:tabular-nums}
.wk-set.done input{background:transparent;border-color:transparent}
.wk-check{width:44px;height:42px;border-radius:12px;border:1px solid rgba(255,255,255,.12);background:rgba(255,255,255,.04);display:flex;align-items:center;justify-content:center;color:var(--muted);padding:0}
.wk-check svg{width:20px;height:20px;fill:none;stroke:currentColor;stroke-width:2.6;stroke-linecap:round;stroke-linejoin:round}
.wk-set.done .wk-check{background:var(--green);border-color:var(--green);color:#06210f}
.wk-addset{width:100%;min-height:44px;margin-top:6px;border:none;border-radius:12px;background:rgba(255,255,255,.04);color:var(--text);font-weight:500}
.wk-addex{width:100%;min-height:50px;margin-top:4px;color:var(--ember2);font-weight:600}
.wk-cancel{width:100%;margin-top:10px}
.wk-rest{position:absolute;left:12px;right:12px;bottom:calc(12px + env(safe-area-inset-bottom));background:rgba(22,25,33,.96);border:1px solid rgba(255,107,44,.35);border-radius:20px;padding:10px 12px 12px;box-shadow:0 20px 40px -10px rgba(0,0,0,.7);backdrop-filter:blur(12px)}
.wk-rest-bar{height:5px;border-radius:5px;background:rgba(255,255,255,.08);overflow:hidden;margin-bottom:10px}
.wk-rest-bar i{display:block;height:100%;background:linear-gradient(90deg,var(--ember),var(--ember2));transition:width .25s linear}
.wk-rest-row{display:grid;grid-template-columns:56px 1fr 56px 64px;gap:8px;align-items:center;text-align:center}
.wk-rest-row button{min-height:44px;border-radius:12px;border:1px solid rgba(255,255,255,.1);background:rgba(255,255,255,.05);font-weight:600}
.wk-rest-row small{display:block;font-size:.7rem;color:var(--muted)}
.wk-rest-row b{font-size:1.5rem;font-weight:700;font-variant-numeric:tabular-nums;letter-spacing:-.02em}
.wk-skip{color:var(--ember2)}
.wk-done{text-align:center;padding-top:6px}
.wk-done-icon{width:64px;height:64px;border-radius:50%;margin:0 auto 12px;background:rgba(124,199,154,.16);display:flex;align-items:center;justify-content:center;color:var(--green)}
.wk-done-icon svg{width:30px;height:30px;fill:none;stroke:currentColor;stroke-width:2.6;stroke-linecap:round;stroke-linejoin:round}
.wk-sum{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin:16px 0}
.wk-sum div{background:rgba(255,255,255,.04);border-radius:14px;padding:12px 4px}
.wk-sum b{display:block;font-size:1.2rem;font-weight:700;font-variant-numeric:tabular-nums}
.wk-sum span{font-size:.72rem;color:var(--muted)}
.wk-prs{text-align:left;border-radius:16px;padding:12px 14px;background:rgba(227,192,124,.1);border:1px solid rgba(227,192,124,.3)}
.wk-prs small{display:block;font-size:.72rem;color:var(--gold);font-weight:600;letter-spacing:.06em;text-transform:uppercase;margin-bottom:6px}
.wk-prs div{display:flex;justify-content:space-between;gap:10px;padding:4px 0;font-size:.9rem}
.wk-prs span{color:var(--muted);font-variant-numeric:tabular-nums}
.hm-tiles{grid-template-columns:1fr}
.hm-tiles .hm-glasses{grid-template-columns:repeat(6,1fr)}
.hm-th{display:flex;justify-content:space-between;align-items:baseline;gap:10px}
.hm-th b{margin-top:0}
.hm-wt{display:grid!important;grid-template-columns:1fr auto;grid-template-areas:"th btn" "rate btn";align-items:center;column-gap:12px}
.hm-wt .hm-th{grid-area:th;display:block}
.hm-wt .hm-rate{grid-area:rate;margin:4px 0 0}
.hm-wt .btn{grid-area:btn;width:auto}
.dz-complete{width:100%;margin-top:16px}
.wk-m{grid-template-columns:136px 1fr 26px}.wk-m span{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}

/* ===================== v23 — centered button labels, simpler sign-in screen ===================== */
/* Every button (including link-buttons like "Create free account") centers its label both ways */
.btn{display:inline-flex;align-items:center;justify-content:center;text-align:center;gap:8px;line-height:1.2;text-decoration:none;vertical-align:middle}
a.btn{color:var(--text)}
a.btn.btn-primary{color:#1a0b02}
/* Sign-in screen */
.landing{min-height:100dvh}
.landing-inner{text-align:center;width:100%;max-width:400px}
.logo-big{margin-bottom:28px;font-size:1.05rem;letter-spacing:.3em}
.landing h1{font-size:clamp(2.2rem,9vw,3rem);margin-bottom:14px}
.landing-sub{margin:0 auto 30px;max-width:30ch;font-size:1.02rem;line-height:1.5}
.landing-cta{display:flex;flex-direction:column;gap:10px;width:100%;max-width:340px;margin:0 auto}
.landing-cta .btn-big{width:100%;min-height:54px;padding:14px 20px;font-size:1.05rem;border-radius:999px}
.landing-cta .btn-big:not(.btn-primary){background:rgba(255,255,255,.06);border:1px solid rgba(255,255,255,.12)}
.landing-note{margin-top:16px;font-size:.84rem;color:var(--muted)}
#landing:not(.hidden)~.fa-fab,#landing:not(.hidden)~.fa-nudge,#landing:not(.hidden)~.fa-panel,#landing:not(.hidden)~.fa-overlay{display:none!important}

/* ===================== v24 — micronutrients ===================== */
/* Nutrition facts (food page + edit panel) */
.nf{padding:4px 0 10px}
.nf-head,.nf-row{display:grid;grid-template-columns:1fr auto 48px;gap:10px;align-items:baseline}
.nf-head{font-size:.68rem;color:var(--muted);font-weight:600;letter-spacing:.06em;text-transform:uppercase;padding:2px 0 6px;border-bottom:1px solid rgba(255,255,255,.08)}
.nf-head span:nth-child(2),.nf-head span:nth-child(3){text-align:right}
.nf-row{padding:7px 0;border-bottom:1px solid rgba(255,255,255,.05);font-size:.88rem}
.nf-row b{font-weight:600;font-variant-numeric:tabular-nums;text-align:right}
.nf-row i{font-style:normal;color:var(--muted);font-variant-numeric:tabular-nums;text-align:right;font-size:.8rem}
.nf-row.lim span{color:var(--muted)}
.nf-none{color:var(--muted);font-size:.84rem;padding:4px 0 12px;line-height:1.45}
.qs-nf{margin-top:14px}
/* Quick add sanity check */
.qs-warn{margin-top:12px;padding:10px 12px;border-radius:12px;background:rgba(227,192,124,.1);border:1px solid rgba(227,192,124,.35);font-size:.84rem;color:var(--text);line-height:1.45}
.qs-warn button{margin-left:6px;border:none;background:none;color:var(--ember2);font-weight:600;padding:4px 2px;min-height:auto}
/* Daily nutrients */
.dz-nutr{padding:18px}
.nu-head{display:flex;justify-content:space-between;align-items:baseline;gap:10px;margin-bottom:12px}
.nu-head h3{font-size:1rem;font-weight:600}
.nu-cov{font-size:.74rem;color:var(--green)}
.nu-cov.partial{color:var(--gold)}
.nu-list{display:grid;gap:12px}
.nu-top{display:flex;justify-content:space-between;align-items:baseline;gap:8px;margin-bottom:5px}
.nu-top span{font-size:.88rem;font-weight:500}
.nu-top b{font-size:.86rem;font-weight:600;font-variant-numeric:tabular-nums;white-space:nowrap}
.nu-top small{color:var(--muted);font-weight:400;font-size:.74rem}
.nu-bar{height:6px;border-radius:6px;background:rgba(255,255,255,.06);overflow:hidden}
.nu-bar i{display:block;height:100%;border-radius:6px;background:linear-gradient(90deg,#5fae84,var(--green));transition:width .6s var(--ease)}
.nu-row em{display:block;font-style:normal;font-size:.7rem;color:var(--muted);margin-top:3px}
.nu-row.over .nu-bar i{background:linear-gradient(90deg,#d97070,var(--red))}
.nu-row.over em{color:var(--red)}
.nu-row.nodata span,.nu-row.nodata b{color:var(--muted)}
.nu-more{margin-top:12px;border-top:1px solid rgba(255,255,255,.06);padding-top:4px}
.nu-more summary{min-height:44px;display:flex;align-items:center;font-weight:600;color:var(--ember2);cursor:pointer;list-style:none}
.nu-more summary::-webkit-details-marker{display:none}
.nu-more[open] summary{margin-bottom:8px}
.nu-note{margin-top:12px;font-size:.76rem;color:var(--muted);line-height:1.45}
.nu-note span{color:var(--green)}

/* Day breakdown sheet (v25) */
.ddx-link{display:inline-flex;align-items:center;justify-content:center;gap:4px;min-height:44px;margin-top:6px;padding:6px 12px;border:none;background:none;color:var(--ember2);font-weight:600;font-size:.88rem}
.ddx-link svg{width:16px;height:16px;fill:none;stroke:currentColor;stroke-width:2.2;stroke-linecap:round;stroke-linejoin:round}
.hm-hero[data-detail],.dz-sum.ddx-tap{cursor:pointer}
.dz-sum .ddx-link{display:flex;width:100%;margin-top:8px}
.ddx-sec{padding:16px 0;border-top:1px solid rgba(255,255,255,.06)}
.ddx-sec:first-of-type{border-top:none;padding-top:4px}
.ddx-sec h4{font-size:.76rem;font-weight:600;letter-spacing:.06em;text-transform:uppercase;color:var(--muted);margin-bottom:12px}
.ddx-sec .nu-head h4{margin-bottom:0}
.ddx-eq{margin-top:0}
.ddx-note{margin-top:8px;font-size:.76rem;color:var(--muted)}
.ddx-split{display:flex;height:10px;border-radius:6px;overflow:hidden;gap:2px;margin-bottom:14px;background:rgba(255,255,255,.06)}
.ddx-split i{display:block;min-width:2px}
.ddx-mac{margin-bottom:14px}
.ddx-mac:last-child{margin-bottom:0}
.ddx-mtop{display:flex;justify-content:space-between;align-items:baseline;gap:8px;margin-bottom:6px}
.ddx-mtop span{display:flex;align-items:center;gap:8px;font-size:.92rem;font-weight:500}
.ddx-mtop span i{width:9px;height:9px;border-radius:50%}
.ddx-mtop b{font-variant-numeric:tabular-nums;font-weight:600}
.ddx-mtop small{color:var(--muted);font-weight:400;font-size:.76rem}
.ddx-msub{display:flex;justify-content:space-between;gap:8px;margin-top:4px;font-size:.72rem;color:var(--muted)}
.ddx-msub em{font-style:normal;color:var(--red)}
.ddx-meals{width:100%;border-collapse:collapse;font-variant-numeric:tabular-nums;font-size:.86rem}
.ddx-meals th,.ddx-meals td{padding:9px 4px;text-align:right;border-bottom:1px solid rgba(255,255,255,.05)}
.ddx-meals th:first-child{text-align:left;font-weight:500}
.ddx-meals thead th{font-size:.7rem;font-weight:600;color:var(--muted);text-transform:uppercase;letter-spacing:.05em}
.ddx-meals tr.empty td,.ddx-meals tr.empty th{color:var(--muted)}
.ddx-meals tr.tot th,.ddx-meals tr.tot td{font-weight:700;border-bottom:none}
.ddx-grp{font-size:.74rem;color:var(--muted);margin:14px 0 8px}
.ddx-grp:first-of-type{margin-top:12px}
.ddx-water i{background:linear-gradient(90deg,#5b8fc9,var(--blue))!important}
.ddx .qs-actions{margin-top:6px}
/* Day breakdown close button (v26) */
.ddx-head{position:sticky;top:-10px;z-index:3;display:flex;align-items:flex-start;justify-content:space-between;gap:12px;margin:0 -20px;padding:10px 20px 2px;background:var(--card)}
.ddx-head .qs-sub{margin-bottom:12px}
.ddx-x{flex:0 0 44px;width:44px;height:44px;margin:-6px -8px 0 0;display:grid;place-items:center;border-radius:50%;border:1px solid rgba(255,255,255,.1);background:rgba(255,255,255,.06);color:var(--text);padding:0}
.ddx-x svg{width:18px;height:18px;fill:none;stroke:currentColor;stroke-width:2.2;stroke-linecap:round}
.ddx-x:active{transform:scale(.94);background:rgba(255,255,255,.12)}
/* Water tracking (v27) */
.wt-card{padding:0!important;overflow:hidden}
.hm-tiles .wt-card{margin:0}
.wt-main{display:flex;align-items:center;gap:14px;width:100%;padding:16px 16px 12px;border:none;background:none;color:var(--text);text-align:left}
.wt-main>svg:last-child{width:18px;height:18px;flex:0 0 18px;fill:none;stroke:var(--muted);stroke-width:2;stroke-linecap:round;stroke-linejoin:round}
.wt-txt{flex:1;min-width:0;display:flex;flex-direction:column}
.wt-lbl{font-size:.76rem;color:var(--muted);font-weight:500}
.wt-txt b{font-size:1.45rem;font-weight:700;letter-spacing:-.02em;font-variant-numeric:tabular-nums;line-height:1.2}
.wt-txt b small{font-size:.78rem;font-weight:400;color:var(--muted);letter-spacing:0}
.wt-txt em{font-style:normal;font-size:.78rem;color:var(--blue);margin-top:1px}
.wt-card.done .wt-txt em{color:var(--green)}
.wt-gauge{width:56px;height:56px;flex:0 0 56px}
.wt-ring{fill:none;stroke:rgba(134,174,220,.28);stroke-width:2.2}
.wt-card.done .wt-ring,.wt-hero.done .wt-ring{stroke:var(--green)}
.wt-bowl{fill:rgba(134,174,220,.07)}
.wt-level{transition:transform .8s var(--ease)}
.wt-wave{fill:#6f9fd4;animation:wtWave 3.2s linear infinite}
.wt-wave.b{fill:#86aedc;opacity:.45;animation-duration:4.6s;animation-direction:reverse}
@keyframes wtWave{from{transform:translateX(0)}to{transform:translateX(-30px)}}
@media (prefers-reduced-motion:reduce){.wt-wave{animation:none}.wt-level{transition:none}}
.wt-quick{display:flex;gap:8px;padding:0 12px 14px}
.wt-quick button{flex:1;min-width:0;min-height:44px;display:flex;align-items:center;justify-content:center;gap:5px;padding:8px 4px;border-radius:12px;background:rgba(134,174,220,.08);border:1px solid rgba(134,174,220,.2);color:var(--text);font-weight:600;font-size:.82rem;font-variant-numeric:tabular-nums;white-space:nowrap;transition:transform .2s var(--ease),background .2s var(--ease)}
.wt-quick button svg,.wt-cups svg,.wt-undo-big svg,.wt-dot svg,.wt-log button svg{fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}
.wt-quick button svg{width:16px;height:16px;flex:0 0 16px;color:var(--blue)}
.wt-quick button:active{transform:scale(.95);background:rgba(134,174,220,.18)}
.wt-quick .wt-undo{flex:0 0 46px;background:rgba(255,255,255,.04);border-color:rgba(255,255,255,.08)}
.wt-quick .wt-undo svg{color:var(--muted)}
.wt-quick .wt-undo:disabled{opacity:.4}
@media(max-width:350px){.wt-quick button span{font-size:.76rem}.wt-quick button svg{display:none}.wt-quick .wt-undo svg{display:block}}
/* Water sheet */
.wt-hero{display:flex;flex-direction:column;align-items:center;padding:4px 0 14px}
.wt-big{position:relative;width:172px;height:172px}
.wt-gauge.lg{width:172px;height:172px}
.wt-bigtxt{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;pointer-events:none;text-shadow:0 1px 8px rgba(0,0,0,.45)}
.wt-bigtxt b{font-size:2.5rem;font-weight:700;letter-spacing:-.03em;font-variant-numeric:tabular-nums;line-height:1}
.wt-bigtxt span{font-size:.8rem;color:var(--text);opacity:.85;margin-top:4px}
.wt-left{margin-top:12px;font-size:.88rem;color:var(--muted)}
.wt-left b{color:var(--blue);font-weight:600}
.wt-hero.done .wt-left b{color:var(--green)}
.wt-cups{display:grid;grid-template-columns:repeat(4,1fr);gap:8px}
.wt-cups button{display:flex;flex-direction:column;align-items:center;gap:3px;padding:12px 4px 10px;min-height:84px;border-radius:14px;background:rgba(134,174,220,.07);border:1px solid rgba(134,174,220,.18);color:var(--text);transition:transform .2s var(--ease),background .2s var(--ease)}
.wt-cups button svg{width:26px;height:26px;color:var(--blue);margin-bottom:2px}
.wt-cups button b{font-size:.86rem;font-weight:600;font-variant-numeric:tabular-nums;white-space:nowrap}
.wt-cups button span{font-size:.68rem;color:var(--muted)}
.wt-cups button:active{transform:scale(.95);background:rgba(134,174,220,.16)}
.wt-cups button.on{border-color:var(--blue);background:rgba(134,174,220,.14)}
.wt-form{display:flex;gap:8px;align-items:flex-end;flex-wrap:wrap;margin-top:12px}
.wt-form label{flex:1;min-width:120px;font-size:.78rem;color:var(--muted);display:flex;flex-direction:column;gap:4px}
.wt-form input{width:100%}
.wt-form .btn{min-height:44px}
.wt-form .wt-wide{flex-basis:100%}
.wt-cupform label{min-width:80px}
.wt-undo-big{display:flex;align-items:center;justify-content:center;gap:8px;width:100%;margin-top:12px;min-height:44px}
.wt-undo-big svg{width:18px;height:18px}
.wt-undo-big:disabled{opacity:.45}
.wt-log{list-style:none;margin:0;padding:0}
.wt-log li{display:flex;align-items:center;gap:12px;padding:6px 0;border-bottom:1px solid rgba(255,255,255,.05)}
.wt-log li:last-child{border-bottom:none}
.wt-dot{width:34px;height:34px;flex:0 0 34px;border-radius:10px;display:grid;place-items:center;background:rgba(134,174,220,.1);color:var(--blue)}
.wt-dot svg{width:18px;height:18px}
.wt-lt{flex:1;display:flex;flex-direction:column}
.wt-lt b{font-weight:600;font-variant-numeric:tabular-nums}
.wt-lt small{font-size:.74rem;color:var(--muted)}
.wt-log button{width:44px;height:44px;flex:0 0 44px;border:none;background:none;color:var(--muted);display:grid;place-items:center;border-radius:12px;padding:0}
.wt-log button svg{width:16px;height:16px}
.wt-log button:active{background:rgba(255,255,255,.06);color:var(--red)}
.wt-week{position:relative;display:grid;grid-template-columns:repeat(7,1fr);gap:8px;height:100px;margin-bottom:24px}
.wt-goal-line{position:absolute;left:0;right:0;height:0;border-top:1.5px dashed rgba(124,199,154,.55);z-index:1;margin-top:0}
.wt-day{display:flex;flex-direction:column;align-items:center;height:100%}
.wt-col{flex:1;width:100%;max-width:26px;display:flex;align-items:flex-end;border-radius:7px;background:rgba(255,255,255,.04);overflow:hidden}
.wt-col i{display:block;width:100%;border-radius:7px;background:linear-gradient(180deg,#86aedc,#5b8fc9);transition:height .6s var(--ease)}
.wt-day.met .wt-col i{background:linear-gradient(180deg,#9fd8b5,#5fae84)}
.wt-day span{font-size:.7rem;color:var(--muted);position:absolute;bottom:-20px}
.wt-day{position:relative}
.wt-day.now span{color:var(--text);font-weight:600}
.wt-wstats{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin-top:12px;text-align:center}
.wt-wstats b{display:block;font-size:1rem;font-weight:700;font-variant-numeric:tabular-nums}
.wt-wstats span{font-size:.7rem;color:var(--muted)}
.wt-set{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:8px 0}
.wt-set b{display:block;font-size:.92rem;font-weight:600}
.wt-set span{font-size:.78rem;color:var(--muted)}
.wt-set .btn{min-height:40px;flex:0 0 auto}
.wt-sheet .wt-form+.wt-set{margin-top:8px}
/* Swipe to delete + undo (v28) */
.dz-sw{position:relative;overflow:hidden;max-height:140px;transition:max-height .24s var(--ease),opacity .2s var(--ease)}
.dz-sw.gone{max-height:0;opacity:0}
.dz-sw .dz-item{position:relative;z-index:1;background:var(--card);touch-action:pan-y;will-change:transform;user-select:none;-webkit-user-select:none}
.dz-swdel{position:absolute;top:1px;right:0;bottom:0;width:92px;z-index:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;border:none;border-radius:0;background:#d9534f;color:#fff;font-weight:600;font-size:.78rem;opacity:0;padding:0;transition:width .2s var(--ease)}
.dz-swdel svg{width:20px;height:20px;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}
.dz-swdel.full{width:100%;align-items:flex-end;padding-right:28px}
.dz-sw.open .dz-swdel{opacity:1}
.qs-list .qs-danger span{color:var(--red)}
.undo-bar{position:fixed;left:50%;bottom:calc(100px + env(safe-area-inset-bottom));z-index:1260;display:flex;align-items:center;gap:14px;max-width:min(440px,calc(100vw - 32px));width:max-content;padding:6px 6px 6px 16px;border-radius:14px;background:#252a36;border:1px solid rgba(255,255,255,.1);box-shadow:0 12px 30px rgba(0,0,0,.45);color:var(--text);font-size:.88rem;transform:translate(-50%,20px);opacity:0;pointer-events:none;transition:transform .3s var(--ease),opacity .25s var(--ease)}
.undo-bar.on{transform:translate(-50%,0);opacity:1;pointer-events:auto}
.undo-bar span{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:0}
.undo-bar button{flex:0 0 auto;min-height:40px;padding:0 14px;border:none;border-radius:10px;background:rgba(255,161,78,.14);color:var(--ember2);font-weight:700}
.undo-bar button:active{background:rgba(255,161,78,.24)}
.has-undo .fa-fab,.has-undo .fa-nudge{opacity:0!important;pointer-events:none!important;transition:opacity .2s}
/* Tell Fuel AI logger (v29) */
.al-bar{display:flex;align-items:center;gap:10px;width:100%;min-height:52px;margin:0 0 14px;padding:10px 10px 10px 16px;border-radius:16px;border:1px solid rgba(255,107,44,.35);background:linear-gradient(135deg,rgba(255,107,44,.12),rgba(255,161,78,.04));color:var(--text);text-align:left;transition:transform .2s var(--ease),background .2s var(--ease)}
.al-bar svg{width:20px;height:20px;flex:0 0 20px;fill:none;stroke:var(--ember2);stroke-width:1.8;stroke-linejoin:round}
.al-bar span{flex:1;min-width:0;color:var(--muted);font-size:.92rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.al-bar i{font-style:normal;flex:0 0 auto;padding:8px 12px;border-radius:11px;background:linear-gradient(135deg,var(--ember),var(--ember2));color:#1a0d05;font-weight:700;font-size:.82rem}
.al-bar:active{transform:scale(.98)}
.al-sheet svg{fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}
.al-day{margin-bottom:12px}
.al-box{position:relative}
.al-box textarea{width:100%;min-height:118px;resize:vertical;padding:14px 56px 14px 14px;border-radius:16px;font-size:1rem;line-height:1.45}
.al-mic{position:absolute;right:8px;bottom:10px;width:44px;height:44px;border-radius:50%;border:1px solid rgba(255,255,255,.12);background:rgba(255,255,255,.06);color:var(--text);display:grid;place-items:center;padding:0}
.al-mic svg{width:20px;height:20px}
.al-mic.rec{background:var(--red);border-color:var(--red);color:#fff;animation:alPulse 1.2s ease-in-out infinite}
@keyframes alPulse{0%,100%{box-shadow:0 0 0 0 rgba(235,138,138,.5)}50%{box-shadow:0 0 0 8px rgba(235,138,138,0)}}
@media (prefers-reduced-motion:reduce){.al-mic.rec{animation:none}}
.al-listen{margin-top:6px;font-size:.78rem;color:var(--red)}
.al-ex{display:flex;flex-wrap:wrap;gap:6px;margin:12px 0 14px}
.al-ex button{min-height:36px;padding:6px 11px;border-radius:999px;border:1px solid rgba(255,255,255,.1);background:rgba(255,255,255,.04);color:var(--muted);font-size:.78rem}
.al-ex button:active{background:rgba(255,255,255,.1);color:var(--text)}
.al-go{width:100%;min-height:50px;display:flex;align-items:center;justify-content:center;gap:8px;font-size:1rem}
.al-go svg{width:18px;height:18px}
.al-manual{margin-top:18px;padding-top:14px;border-top:1px solid rgba(255,255,255,.06)}
.al-manual p{font-size:.74rem;color:var(--muted);text-transform:uppercase;letter-spacing:.06em;font-weight:600;margin-bottom:10px}
.al-manual>div{display:grid;grid-template-columns:repeat(5,1fr);gap:6px}
.al-manual button{display:flex;flex-direction:column;align-items:center;gap:5px;min-height:64px;padding:8px 2px;border-radius:12px;border:1px solid rgba(255,255,255,.07);background:rgba(255,255,255,.035);color:var(--text);font-size:.68rem;font-weight:500}
.al-manual button svg{width:20px;height:20px;color:var(--ember2)}
.al-said{font-size:.86rem;color:var(--muted);font-style:italic;margin-bottom:6px;line-height:1.4}
.al-sec{padding:12px 0;border-top:1px solid rgba(255,255,255,.06)}
.al-sec h4{display:flex;align-items:center;gap:7px;font-size:.74rem;font-weight:600;letter-spacing:.06em;text-transform:uppercase;color:var(--muted);margin-bottom:8px}
.al-sec h4 svg{width:16px;height:16px;color:var(--ember2)}
.al-row{display:flex;align-items:center;gap:10px;padding:6px 0;transition:opacity .2s var(--ease)}
.al-row.off{opacity:.45}
.al-row.off .al-main b{text-decoration:line-through}
.al-tick{width:44px;height:44px;flex:0 0 44px;display:grid;place-items:center;border:none;background:none;padding:0;border-radius:12px}
.al-tick svg{width:24px;height:24px;padding:3px;border-radius:8px;background:var(--green);color:#0d1a12;stroke-width:2.6}
.al-row.off .al-tick svg{background:transparent;color:transparent;box-shadow:inset 0 0 0 2px rgba(255,255,255,.25)}
.al-main{flex:1;min-width:0;display:flex;flex-direction:column}
.al-main b{font-weight:600;font-size:.92rem;line-height:1.3}
.al-main span{font-size:.76rem;color:var(--muted);font-variant-numeric:tabular-nums;margin-top:1px}
.al-row select{flex:0 0 auto;width:auto;max-width:112px;min-height:40px;padding:6px 8px;font-size:.8rem}
.al-note{font-size:.76rem;color:var(--muted);line-height:1.45;margin:6px 0 4px}
.al-note b{color:var(--text)}
.al-done{display:flex;flex-direction:column;align-items:center;text-align:center;padding:10px 0 4px}
.al-ok{width:64px;height:64px;border-radius:50%;display:grid;place-items:center;background:rgba(124,199,154,.15);color:var(--green);margin-bottom:10px}
.al-ok svg{width:32px;height:32px;stroke-width:2.4}
.al-ok.warn{background:rgba(227,192,124,.15);color:var(--gold)}
.al-done h4{font-size:1.2rem;font-weight:700;margin-bottom:8px}
.al-done ul{list-style:none;margin:0;padding:0;display:grid;gap:4px;font-size:.9rem}
.al-pr{margin-top:10px;color:var(--gold);font-weight:600;font-size:.86rem}
.al-fail{margin-top:10px;color:var(--red);font-size:.84rem}
@media(max-width:350px){.al-manual>div{grid-template-columns:repeat(3,1fr)}}
/* Fuel AI tab button + no floating chat button (v30) */
.tab-plus{flex-direction:column;gap:2px}
.tab-plus span{width:44px!important;height:44px!important;border-radius:15px!important;position:relative}
.tab-plus svg{width:26px!important;height:26px!important}
.tab-plus svg .sp1{fill:#1a0b02;stroke:none}
.tab-plus svg .sp2{fill:#1a0b02;stroke:none;opacity:.75}
.tab-plus em{font-style:normal;font-size:.6rem;font-weight:700;letter-spacing:.01em;color:var(--ember2);line-height:1;white-space:nowrap}
@media(min-width:900px){.tab-plus span{width:40px!important;height:40px!important;border-radius:999px!important}}
.fa-fab,.fa-nudge{display:none!important}
/* Nutrition score (v31) */
.ns-card{display:flex;align-items:center;gap:14px;width:100%;padding:14px 16px!important;text-align:left;color:var(--text);cursor:pointer}
.hm-hero+.ns-card,.dz-sum+.ns-card{margin-top:0}
.ns-c-dial{position:relative;width:52px;height:52px;flex:0 0 52px}
.ns-c-dial i{position:absolute;inset:0;display:grid;place-items:center;font-style:normal;font-weight:800;font-size:1.05rem;font-variant-numeric:tabular-nums}
.ns-c-txt{flex:1;min-width:0;display:flex;flex-direction:column}
.ns-c-txt small{font-size:.74rem;color:var(--muted);font-weight:500}
.ns-c-txt b{font-size:1.08rem;font-weight:700;letter-spacing:-.01em}
.ns-c-txt em{font-style:normal;font-size:.76rem;color:var(--muted)}
.ns-chev{width:18px;height:18px;fill:none;stroke:var(--muted);stroke-width:2;stroke-linecap:round;stroke-linejoin:round;flex:0 0 18px}
.ns-dial .ns-track{fill:none;stroke:rgba(255,255,255,.08);stroke-width:10}
.ns-dial .ns-arc{fill:none;stroke-width:10;stroke-linecap:round;transition:stroke-dashoffset 1s var(--ease)}
.ns-dial.green .ns-arc{stroke:var(--green)}.ns-dial.yellow .ns-arc{stroke:var(--gold)}.ns-dial.red .ns-arc{stroke:var(--red)}.ns-dial.none .ns-arc{stroke:transparent}
.ns-card.green .ns-c-txt b{color:var(--green)}.ns-card.yellow .ns-c-txt b{color:var(--gold)}.ns-card.red .ns-c-txt b{color:var(--red)}
body.ns-open{overflow:hidden}
.ns-page{position:fixed;top:0;bottom:0;left:max(0px,calc(50% - var(--col)/2));right:max(0px,calc(50% - var(--col)/2));z-index:1150;background:var(--bg);display:flex;flex-direction:column;animation:fpIn .22s var(--ease)}
.ns-page.out{opacity:0;transition:opacity .2s}
.ns-head{display:flex;align-items:center;gap:8px;padding:10px 12px;padding-top:max(10px,env(safe-area-inset-top));border-bottom:1px solid rgba(255,255,255,.07);background:var(--bg2)}
.ns-head button{width:44px;height:44px;border:none;background:none;color:var(--text);display:grid;place-items:center;border-radius:12px;padding:0}
.ns-head button:disabled{opacity:.3}
.ns-head svg{width:22px;height:22px;fill:none;stroke:currentColor;stroke-width:2.2;stroke-linecap:round;stroke-linejoin:round}
.ns-title{flex:1;min-width:0;display:flex;flex-direction:column;align-items:center}
.ns-title b{font-size:1rem;font-weight:700}
.ns-title span{font-size:.76rem;color:var(--muted)}
.ns-nav{display:flex}
.ns-body{flex:1;overflow-y:auto;padding:18px 16px calc(28px + env(safe-area-inset-bottom));-webkit-overflow-scrolling:touch}
.ns-loading{display:grid;place-items:center;padding:80px 0}
.ns-err,.ns-muted{color:var(--muted);font-size:.84rem}
.ns-hero{display:flex;flex-direction:column;align-items:center;text-align:center;padding:6px 0 18px}
.ns-big{position:relative;width:210px;height:210px}
.ns-num{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center}
.ns-num b{font-size:4rem;font-weight:800;letter-spacing:-.04em;line-height:1;font-variant-numeric:tabular-nums}
.ns-num span{font-size:.8rem;color:var(--muted);margin-top:4px}
.ns-hero h2{margin-top:12px;font-size:1.35rem;font-weight:700;letter-spacing:-.02em}
.ns-hero.green h2{color:var(--green)}.ns-hero.yellow h2{color:var(--gold)}.ns-hero.red h2{color:var(--red)}
.ns-hero p{margin-top:4px;font-size:.86rem;color:var(--muted)}
.ns-zones{display:grid;grid-template-columns:33fr 33fr 34fr;gap:3px;width:min(260px,80%);height:6px;margin-top:16px}
.ns-zones i{border-radius:4px}.ns-zones .r{background:var(--red)}.ns-zones .y{background:var(--gold)}.ns-zones .g{background:var(--green)}
.ns-zl{display:flex;justify-content:space-between;width:min(260px,80%);margin-top:4px;font-size:.66rem;color:var(--muted);font-variant-numeric:tabular-nums}
.ns-tip{display:flex;gap:12px;align-items:flex-start;padding:14px 16px;border-radius:16px;background:rgba(255,161,78,.08);border:1px solid rgba(255,161,78,.25);margin-bottom:6px}
.ns-tip svg{width:22px;height:22px;flex:0 0 22px;fill:none;stroke:var(--ember2);stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round;margin-top:1px}
.ns-tip p{font-size:.9rem;line-height:1.45}
.ns-sec{padding:18px 0 4px}
.ns-sec h3{font-size:.74rem;font-weight:700;letter-spacing:.07em;text-transform:uppercase;color:var(--muted);margin-bottom:12px}
.ns-contrib{list-style:none;margin:0;padding:0;display:grid;gap:14px}
.ns-ct{display:flex;justify-content:space-between;align-items:baseline;gap:10px;margin-bottom:6px}
.ns-ct b{font-size:.94rem;font-weight:600}
.ns-ct span{font-size:.8rem;color:var(--muted);font-variant-numeric:tabular-nums;white-space:nowrap}
.ns-cbar{height:7px;border-radius:6px;background:rgba(255,255,255,.06);overflow:hidden}
.ns-cbar i{display:block;height:100%;border-radius:6px;transition:width .8s var(--ease)}
.ns-cbar.green i{background:var(--green)}.ns-cbar.yellow i{background:var(--gold)}.ns-cbar.red i{background:var(--red)}
.ns-cs{display:flex;justify-content:space-between;gap:10px;margin-top:4px;font-size:.74rem;color:var(--muted)}
.ns-cs em{font-style:normal;font-weight:600;color:var(--text);font-variant-numeric:tabular-nums}
.ns-foods{list-style:none;margin:0;padding:0}
.ns-foods li{display:flex;align-items:center;gap:12px;padding:9px 0;border-bottom:1px solid rgba(255,255,255,.05)}
.ns-foods li:last-child{border-bottom:none}
.ns-foods li>div{flex:1;min-width:0;display:flex;flex-direction:column}
.ns-foods b{font-size:.9rem;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ns-foods li>div span{font-size:.74rem;color:var(--muted)}
.ns-grade{width:34px;height:34px;flex:0 0 34px;border-radius:10px;display:grid;place-items:center;font-weight:800;font-size:1rem;color:#0d0f13}
.ns-foods .ns-grade{font-size:1rem;color:#0d0f13}
.ns-grade.gA{background:#5fcf8a}.ns-grade.gB{background:#a6d96a}.ns-grade.gC{background:var(--gold)}.ns-grade.gD{background:#f0a35e}.ns-grade.gE{background:var(--red)}.ns-grade.g\?{background:rgba(255,255,255,.12);color:var(--muted)}
.ns-nova{font-style:normal;flex:0 0 auto;font-size:.66rem;font-weight:600;padding:4px 7px;border-radius:999px;background:rgba(255,255,255,.06);color:var(--muted);white-space:nowrap}
.ns-nova.n1{color:var(--green);background:rgba(124,199,154,.12)}.ns-nova.n4{color:var(--red);background:rgba(235,138,138,.12)}
.ns-bars{display:grid;grid-template-columns:repeat(7,1fr);gap:6px}
.ns-bar{display:flex;flex-direction:column;align-items:center;gap:4px;border:none;background:none;color:var(--text);padding:4px 0;border-radius:10px;min-height:44px}
.ns-bar.on{background:rgba(255,255,255,.06)}
.ns-bv{font-size:.74rem;font-weight:700;font-variant-numeric:tabular-nums}
.ns-bc{width:22px;height:84px;border-radius:7px;background:rgba(255,255,255,.05);display:flex;align-items:flex-end;overflow:hidden}
.ns-bc i{display:block;width:100%;border-radius:7px;transition:height .6s var(--ease)}
.ns-bar.green .ns-bc i{background:var(--green)}.ns-bar.yellow .ns-bc i{background:var(--gold)}.ns-bar.red .ns-bc i{background:var(--red)}
.ns-bar.green .ns-bv{color:var(--green)}.ns-bar.yellow .ns-bv{color:var(--gold)}.ns-bar.red .ns-bv{color:var(--red)}.ns-bar.none .ns-bv{color:var(--muted)}
.ns-bl{font-size:.68rem;color:var(--muted)}
.ns-avg{margin-top:10px;text-align:center;font-size:.82rem;color:var(--muted)}
.ns-avg b.green{color:var(--green)}.ns-avg b.yellow{color:var(--gold)}.ns-avg b.red{color:var(--red)}
.ns-how{margin-top:18px;border-top:1px solid rgba(255,255,255,.06);padding-top:6px}
.ns-how summary{min-height:44px;display:flex;align-items:center;font-weight:600;color:var(--ember2);cursor:pointer;list-style:none}
.ns-how summary::-webkit-details-marker{display:none}
.ns-how div{font-size:.84rem;line-height:1.5;color:var(--text);display:grid;gap:8px}
.ns-how ul{margin:0;padding-left:18px}
@media (prefers-reduced-motion:reduce){.ns-dial .ns-arc,.ns-cbar i,.ns-bc i{transition:none}}
/* Meal photo scanning (v32) */
.al-wrap{display:flex;gap:8px;margin:0 0 14px}
.al-wrap .al-bar{margin:0;flex:1;min-width:0}
.al-cam{flex:0 0 52px;width:52px;min-height:52px;border-radius:16px;border:1px solid rgba(255,107,44,.35);background:linear-gradient(135deg,rgba(255,107,44,.12),rgba(255,161,78,.04));color:var(--ember2);display:grid;place-items:center;padding:0}
.al-cam svg{width:22px;height:22px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}
.al-cam:active{transform:scale(.96)}
.al-snap{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-bottom:10px}
.al-snap button{display:flex;align-items:center;justify-content:center;gap:8px;min-height:52px;border-radius:14px;border:1px solid rgba(255,161,78,.3);background:rgba(255,161,78,.07);color:var(--text);font-weight:600;font-size:.88rem}
.al-snap button svg{width:20px;height:20px;color:var(--ember2)}
.al-snap button:active{background:rgba(255,161,78,.16)}
.al-photo{position:relative;margin-bottom:10px;border-radius:16px;overflow:hidden;background:#000}
.al-photo img{display:block;width:100%;max-height:260px;object-fit:cover}
.al-photo button{position:absolute;top:8px;right:8px;width:40px;height:40px;border-radius:50%;border:none;background:rgba(0,0,0,.6);color:#fff;display:grid;place-items:center;padding:0;backdrop-filter:blur(6px)}
.al-photo button svg{width:18px;height:18px}
.al-photo.sm{display:flex;align-items:center;gap:12px;background:none;border-radius:0}
.al-photo.sm img{width:72px;height:72px;flex:0 0 72px;border-radius:12px;object-fit:cover}
.al-photo.sm p{font-size:.82rem;color:var(--muted);line-height:1.4}
/* Split editor (v33) */
.sp-open{width:100%;margin-top:12px;min-height:44px}
.sp-sum{font-size:.8rem;color:var(--muted);margin-bottom:10px}
.sp-day{border:1px solid rgba(255,255,255,.08);border-radius:16px;padding:10px 12px 8px;margin-bottom:10px;background:rgba(255,255,255,.02)}
.sp-day.rest{background:none;border-style:dashed}
.sp-dh{display:flex;align-items:center;gap:10px;min-height:44px}
.sp-dow{flex:0 0 auto;font-size:.72rem;font-weight:800;letter-spacing:.06em;text-transform:uppercase;color:var(--ember2);width:34px}
.sp-rest{flex:1;color:var(--muted);font-size:.88rem}
.sp-title{flex:1;min-width:0;padding:8px 10px;font-weight:600;font-size:.95rem;background:transparent;border:1px solid transparent;border-radius:10px}
.sp-title:hover,.sp-title:focus{border-color:var(--line);background:var(--bg2)}
.sp-clear{flex:0 0 auto;min-height:44px;padding:0 10px;border-radius:10px;border:1px solid rgba(255,255,255,.1);background:none;color:var(--muted);font-size:.74rem;font-weight:600}
.sp-ex{display:grid;grid-template-columns:1fr 84px;grid-template-areas:"name sets" "tools tools";gap:4px 8px;padding:8px 0;border-top:1px solid rgba(255,255,255,.05)}
.sp-name{grid-area:name;min-height:44px;text-align:left;border:none;background:none;color:var(--text);font-weight:600;font-size:.92rem;padding:0;line-height:1.25}
.sp-sets{grid-area:sets;min-height:44px;padding:6px 8px;text-align:center;font-variant-numeric:tabular-nums;font-size:.86rem}
.sp-tools{grid-area:tools;display:flex;justify-content:flex-end;gap:6px;margin-top:-2px}
.sp-tools button{width:44px;height:44px;border-radius:10px;border:1px solid rgba(255,255,255,.08);background:rgba(255,255,255,.03);color:var(--muted);display:grid;place-items:center;padding:0}
.sp-tools button:disabled{opacity:.3}
.sp-tools svg,.sp-add svg{width:16px;height:16px;fill:none;stroke:currentColor;stroke-width:2.2;stroke-linecap:round;stroke-linejoin:round}
.sp-tools [data-del]:active{color:var(--red)}
.sp-add{display:flex;align-items:center;gap:8px;width:100%;min-height:44px;margin-top:4px;padding:0 4px;border:none;background:none;color:var(--ember2);font-weight:600;font-size:.86rem;text-align:left}
.sp-actions{position:sticky;bottom:calc(-20px - env(safe-area-inset-bottom));background:var(--card);padding:12px 0 calc(8px + env(safe-area-inset-bottom));margin-bottom:calc(-20px - env(safe-area-inset-bottom));z-index:2}
.xp-own{background:rgba(255,161,78,.08)!important}
.xp-own span{color:var(--ember2);font-weight:700}
/* Split editor rows + start any split day (v34) */
.sp-ex{display:block;padding:10px 0 12px;border-top:1px solid rgba(255,255,255,.05)}
.sp-row1{display:flex;align-items:center;gap:6px}
.sp-row1 .sp-name{flex:1;min-width:0}
.sp-row1 .sp-tools{margin:0;flex:0 0 auto}
.sp-row2{display:flex;align-items:flex-end;gap:16px;margin-top:6px;flex-wrap:wrap}
.sp-field{display:flex;flex-direction:column;gap:4px}
.sp-field>span{font-size:.68rem;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--muted)}
.sp-step{display:flex;align-items:center;border:1px solid var(--line);border-radius:12px;background:var(--bg2);overflow:hidden}
.sp-step button{width:44px;height:44px;border:none;background:none;color:var(--text);font-size:1.2rem;font-weight:600;padding:0}
.sp-step button:disabled{opacity:.3}
.sp-step button:active{background:rgba(255,255,255,.06)}
.sp-step b{min-width:28px;text-align:center;font-size:1.05rem;font-variant-numeric:tabular-nums}
.sp-reps{display:flex;align-items:center;gap:6px}
.sp-reps input{width:56px;min-height:44px;padding:6px 4px;text-align:center;font-size:1rem;font-weight:600;font-variant-numeric:tabular-nums}
.sp-reps i{font-style:normal;font-size:.76rem;color:var(--muted)}
.sp-note input{width:120px;min-height:44px}
.wk-target{font-style:normal;color:var(--ember2);font-weight:600}
.wk-restnote{margin:-4px 0 12px}
.wk-split{display:grid;gap:8px;margin:14px 0 12px}
.wk-split>small{font-size:.7rem;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--muted)}
.wk-sday{display:flex;align-items:center;gap:12px;width:100%;min-height:56px;padding:8px 14px;border-radius:14px;border:1px solid rgba(255,255,255,.08);background:rgba(255,255,255,.03);color:var(--text);text-align:left}
.wk-sday.today{border-color:rgba(255,161,78,.5);background:rgba(255,161,78,.08)}
.wk-sday:active{transform:scale(.99);background:rgba(255,255,255,.06)}
.wk-sdow{flex:0 0 38px;font-size:.72rem;font-weight:800;letter-spacing:.06em;text-transform:uppercase;color:var(--ember2)}
.wk-stxt{flex:1;min-width:0;display:flex;flex-direction:column}
.wk-stxt b{font-weight:600;font-size:.95rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.wk-stxt small{font-size:.74rem;color:var(--muted)}
.wk-sday svg{width:18px;height:18px;flex:0 0 18px;fill:var(--ember2)}
.wk-grid{grid-template-columns:34px minmax(0,1fr) 74px 64px 46px}.wk-gh span{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}@media(max-width:350px){.wk-grid{grid-template-columns:28px minmax(0,1fr) 68px 56px 44px;gap:5px}}
/* Today's split up front (v35) */
.wk-today2{padding:14px 16px;border-radius:16px;background:rgba(255,161,78,.07);border:1px solid rgba(255,161,78,.3);margin-bottom:12px}
.wk-today2>small{display:block;font-size:.7rem;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--ember2)}
.wk-today2>b{display:block;font-size:1.3rem;font-weight:700;letter-spacing:-.02em;margin:2px 0 8px}
.wk-tlist{list-style:none;margin:0;padding:0}
.wk-tlist li{display:flex;justify-content:space-between;gap:10px;padding:7px 0;border-top:1px solid rgba(255,255,255,.06);font-size:.9rem}
.wk-tlist li span{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.wk-tlist li em{font-style:normal;flex:0 0 auto;color:var(--muted);font-variant-numeric:tabular-nums}
.wk-go{display:flex;align-items:center;justify-content:center;gap:8px;min-height:54px;font-size:1.02rem}
.wk-go svg{width:18px;height:18px;fill:currentColor}
.wk-set input::placeholder{color:rgba(238,241,246,.32);font-weight:500}
/* Cardio, sports & more (v36) */
.ac-card{padding:18px 16px!important}
.ac-head h2{margin:0}
.ac-head p{font-size:.82rem;color:var(--muted);margin-top:2px}
.ac-week{display:flex;align-items:flex-end;gap:14px;margin:14px 0 16px;padding:12px 14px;border-radius:16px;background:rgba(255,255,255,.03);border:1px solid rgba(255,255,255,.06)}
.ac-stats{display:grid;grid-template-columns:repeat(3,auto);gap:14px;flex:0 0 auto}
.ac-stats b{display:block;font-size:1.25rem;font-weight:800;letter-spacing:-.02em;font-variant-numeric:tabular-nums;line-height:1.1}
.ac-stats span{font-size:.66rem;color:var(--muted);white-space:nowrap}
.ac-bars{flex:1;min-width:0;display:grid;grid-template-columns:repeat(7,1fr);gap:4px;height:56px;padding-bottom:14px;position:relative}
.ac-bar{position:relative;display:flex;align-items:flex-end;justify-content:center;height:100%;border-radius:5px;background:rgba(255,255,255,.04)}
.ac-bar i{display:block;width:100%;border-radius:5px;background:linear-gradient(180deg,var(--ember2),var(--ember))}
.ac-bar span{position:absolute;bottom:-15px;font-size:.6rem;color:var(--muted)}
.ac-bar.now span{color:var(--text);font-weight:700}
.ac-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:8px}
.ac-tile{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:6px;min-height:78px;padding:10px 4px;border-radius:16px;border:1px solid color-mix(in srgb,var(--c) 30%,transparent);background:color-mix(in srgb,var(--c) 10%,transparent);color:var(--text);transition:transform .2s var(--ease),background .2s var(--ease)}
.ac-tile svg{width:26px;height:26px;fill:none;stroke:var(--c);stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}
.ac-tile span{font-size:.72rem;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%}
.ac-tile:active{transform:scale(.95);background:color-mix(in srgb,var(--c) 20%,transparent)}
.ac-more svg{fill:var(--c);stroke:none}
.ac-recent{margin-top:16px;padding-top:12px;border-top:1px solid rgba(255,255,255,.06)}
.ac-recent>small{display:block;font-size:.7rem;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--muted);margin-bottom:6px}
.ac-r{display:flex;align-items:center;gap:12px;padding:6px 0}
.ac-r>div{flex:1;min-width:0;display:flex;flex-direction:column}
.ac-r b{font-size:.92rem;font-weight:600}
.ac-r>div span{font-size:.74rem;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ac-ri{flex:0 0 38px;width:38px;height:38px;border-radius:12px;display:grid;place-items:center;background:color-mix(in srgb,var(--c) 14%,transparent)}
.ac-ri svg{width:20px;height:20px;fill:none;stroke:var(--c);stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}
.ac-ri.lg{flex-basis:48px;width:48px;height:48px;border-radius:14px}
.ac-ri.lg svg{width:26px;height:26px}
.ac-rep{display:flex;align-items:center;gap:6px;min-height:40px;padding:0 12px;border-radius:12px;border:1px solid rgba(255,255,255,.1);background:rgba(255,255,255,.04);color:var(--text);font-size:.78rem;font-weight:600}
.ac-rep svg{width:15px;height:15px;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}
.ac-sh{display:flex;align-items:center;gap:12px}
.ac-burn{text-align:center;padding:4px 0 14px}
.ac-burn b{display:block;font-size:2.4rem;font-weight:800;letter-spacing:-.03em;color:var(--ember2);font-variant-numeric:tabular-nums;line-height:1.05}
.ac-burn span{font-size:.78rem;color:var(--muted)}
.ac-q{padding:12px 0;border-top:1px solid rgba(255,255,255,.06)}
.ac-q>label{display:block;font-size:.72rem;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--muted);margin-bottom:8px}
.ac-q>label em{font-style:normal;text-transform:none;letter-spacing:0;font-weight:500}
.ac-chips{display:flex;flex-wrap:wrap;gap:6px;align-items:center}
.ac-chips button{min-height:40px;padding:0 13px;border-radius:999px;border:1px solid rgba(255,255,255,.1);background:rgba(255,255,255,.04);color:var(--text);font-size:.84rem;font-weight:600;font-variant-numeric:tabular-nums}
.ac-chips button.on{border-color:var(--ember2);background:rgba(255,161,78,.16);color:var(--ember2)}
.ac-chips input[type=date]{min-height:40px;flex:1;min-width:130px}
.ac-custom{display:flex;align-items:center;gap:8px;margin-top:8px}
.ac-custom input{width:90px;min-height:44px;text-align:center;font-size:1.05rem;font-weight:700}
.ac-custom span{color:var(--muted);font-size:.86rem}
.ac-int{display:grid;grid-template-columns:repeat(3,1fr);gap:6px}
.ac-int button{display:flex;flex-direction:column;gap:2px;min-height:64px;padding:8px;border-radius:14px;border:1px solid rgba(255,255,255,.1);background:rgba(255,255,255,.03);color:var(--text);text-align:left}
.ac-int button b{font-size:.86rem}
.ac-int button span{font-size:.66rem;color:var(--muted);line-height:1.25}
.ac-int button.on{border-color:var(--ember2);background:rgba(255,161,78,.12)}
.ac-dist{display:flex;align-items:center;gap:8px}
.ac-dist input{width:110px;min-height:44px;text-align:center;font-size:1.05rem;font-weight:700}
.ac-q>input{width:100%;min-height:44px}
.ac-search{margin-bottom:8px}
.ac-list .ac-li{display:flex;align-items:center;gap:12px}
.ac-list .ac-li .ac-ri{flex-basis:34px;width:34px;height:34px}
@media(max-width:350px){.ac-week{flex-direction:column;align-items:stretch}.ac-bars{height:48px}.ac-grid{grid-template-columns:repeat(3,1fr)}}
.ac-dist .seg button{min-height:44px;min-width:48px;font-size:.86rem}.ac-chips button{min-height:44px}.ac-chips input[type=date]{min-height:44px}
