/* Nuestro Menú — estilo iPhone primero.
   Concepto: tarjetas grandes con foto, anillos de colores por tema (comida coral, proteína ámbar,
   entreno verde, sueño índigo), títulos grandes como en iOS y barra de pestañas inferior. */
:root{
  --bg:#f3f4ef; --surface:#ffffff; --surface-2:#eef0ea; --line:#dfe3d9; --ink:#17201b; --muted:#66716a;
  --food:#ea5f3a; --food-soft:#fde5dd; --prot:#d9951c; --prot-soft:#fbefd6; --move:#2f9058; --move-soft:#dcf1e3;
  --sleep:#5866d6; --sleep-soft:#e3e6fb; --no:#c8452c; --no-soft:#f8ddd5;
  --accent:#17201b; --on-accent:#ffffff;
  --display:"Bricolage Grotesque","SF Pro Display",-apple-system,system-ui,sans-serif;
  --body:"Atkinson Hyperlegible",-apple-system,"SF Pro Text",system-ui,sans-serif;
  --mono:"IBM Plex Mono",ui-monospace,"SF Mono",Menlo,monospace;
  --r:22px; --r-sm:14px; --tab-h:64px; --blur:saturate(180%) blur(18px);
  color-scheme:light;
}
@media (prefers-color-scheme:dark){:root{
  --bg:#0d110f; --surface:#171d19; --surface-2:#1f2722; --line:#29332c; --ink:#eaf0e9; --muted:#9aa79d;
  --food:#ff7b55; --food-soft:#3a2018; --prot:#f0b54a; --prot-soft:#3a2d12; --move:#5cc785; --move-soft:#173322;
  --sleep:#8b96ff; --sleep-soft:#1e2244; --no:#ff8a6f; --no-soft:#3d1d15;
  --accent:#eaf0e9; --on-accent:#0d110f; color-scheme:dark}}

*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}
html{height:100%;background:var(--bg)}
body{margin:0;min-height:100%;background:var(--bg);color:var(--ink);font:16px/1.45 var(--body);
  -webkit-font-smoothing:antialiased;-webkit-text-size-adjust:100%;overscroll-behavior-y:none}
button,input,select,textarea{font:inherit;color:inherit}
button{cursor:pointer}
img{max-width:100%;display:block}
a{color:inherit}
:focus-visible{outline:3px solid var(--sleep);outline-offset:2px}
[hidden]{display:none!important}

/* ---------- estructura ---------- */
.app{max-width:760px;margin:0 auto;padding:
  calc(env(safe-area-inset-top,0px) + 14px) max(18px,env(safe-area-inset-right,0px))
  calc(var(--tab-h) + env(safe-area-inset-bottom,0px) + 28px) max(18px,env(safe-area-inset-left,0px));
  display:grid;gap:18px}
@media (min-width:900px){.app{max-width:1040px}}
.lt{display:flex;align-items:flex-end;justify-content:space-between;gap:12px;padding-top:6px}
.lt h1{font:800 34px/1.05 var(--display);letter-spacing:-.02em;margin:0}
.lt .sub{color:var(--muted);font-size:15px;margin-top:4px}
.eyebrow{font-size:13px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--muted)}
h2{font:800 22px/1.15 var(--display);letter-spacing:-.01em;margin:0}
h3{font:700 17px/1.25 var(--display);margin:0}
p{margin:0}
.muted{color:var(--muted)} .small{font-size:14px} .tiny{font-size:12.5px}
.num{font-family:var(--mono);font-variant-numeric:tabular-nums}
.stack{display:grid;gap:12px} .stack-lg{display:grid;gap:18px}
.row{display:flex;gap:10px;align-items:center;flex-wrap:wrap}
.spread{display:flex;gap:10px;align-items:center;justify-content:space-between;flex-wrap:wrap}
.grid2{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}
@media (min-width:900px){.grid-wide{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:18px;align-items:start}}

/* ---------- piezas ---------- */
.card{background:var(--surface);border-radius:var(--r);padding:16px;display:grid;gap:12px;min-width:0;
  box-shadow:0 1px 0 rgba(0,0,0,.03),0 8px 24px -18px rgba(20,30,20,.35)}
.card.flat{box-shadow:none;background:var(--surface-2)}
.btn{border:0;border-radius:14px;padding:13px 18px;font-weight:700;min-height:48px;background:var(--surface-2);display:inline-flex;align-items:center;justify-content:center;gap:8px}
.btn.main{background:var(--accent);color:var(--on-accent)}
.btn.block{width:100%}
.btn.ghost{background:transparent;color:var(--muted);padding-inline:8px}
.btn.sm{min-height:38px;padding:8px 13px;font-size:14px;border-radius:11px}
.btn:disabled{opacity:.45}
.chip{display:inline-flex;align-items:center;gap:6px;border-radius:999px;padding:5px 11px;font-size:13px;font-weight:700;background:var(--surface-2);white-space:nowrap}
.chip.food{background:var(--food-soft);color:var(--food)} .chip.prot{background:var(--prot-soft);color:var(--prot)}
.chip.move{background:var(--move-soft);color:var(--move)} .chip.sleep{background:var(--sleep-soft);color:var(--sleep)}
.chip.no{background:var(--no-soft);color:var(--no)}
.seg{display:flex;background:var(--surface-2);border-radius:12px;padding:3px;gap:3px}
.seg button{flex:1;border:0;background:transparent;border-radius:10px;padding:8px 10px;font-weight:700;font-size:14px;color:var(--muted);min-height:38px}
.seg button[aria-pressed="true"]{background:var(--surface);color:var(--ink);box-shadow:0 1px 4px rgba(0,0,0,.12)}
.field{display:grid;gap:6px}
.field label,.field .lbl{font-weight:700;font-size:14px}
input[type=text],input[type=number],input[type=date],input[type=password],select{width:100%;min-height:48px;border-radius:12px;border:1.5px solid var(--line);background:var(--surface);padding:10px 12px;font-size:17px}
.photo{position:relative;overflow:hidden;background:var(--surface-2);border-radius:var(--r-sm);aspect-ratio:4/3;max-width:100%}
.photo img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.photo .ph{position:absolute;inset:0;display:grid;place-items:center;font:800 34px var(--display);color:var(--muted)}
.banner{display:flex;gap:14px;align-items:center;border-radius:var(--r);padding:16px;background:var(--accent);color:var(--on-accent);border:0;text-align:left;width:100%}
.banner b{display:block;font:800 18px/1.2 var(--display)}
.banner .go{margin-left:auto;font-size:22px}
.empty{text-align:center;display:grid;gap:12px;justify-items:center;padding:24px 8px}
.progress{height:10px;border-radius:999px;background:var(--surface-2);overflow:hidden}
.progress>i{display:block;height:100%;border-radius:999px;background:var(--move)}

/* ---------- barra de pestañas ---------- */
.tabs{position:fixed;left:0;right:0;bottom:0;z-index:30;display:flex;justify-content:center;
  background:color-mix(in srgb,var(--surface) 82%,transparent);-webkit-backdrop-filter:var(--blur);backdrop-filter:var(--blur);
  border-top:1px solid var(--line);padding:6px max(10px,env(safe-area-inset-right,0px)) calc(4px + env(safe-area-inset-bottom,0px)) max(10px,env(safe-area-inset-left,0px))}
.tabs .in{display:flex;width:100%;max-width:640px}
.tabs button{flex:1;border:0;background:transparent;display:flex;flex-direction:column;align-items:center;gap:2px;font-size:11px;font-weight:700;color:var(--muted);padding:4px 0;min-height:52px;position:relative}
.tabs button svg{width:26px;height:26px}
.tabs button[aria-current="page"]{color:var(--ink)}
.tabs .dot{position:absolute;top:2px;left:calc(50% + 8px);min-width:18px;height:18px;border-radius:9px;background:var(--food);color:#fff;font-size:11px;display:grid;place-items:center;padding:0 5px}

/* ---------- inicio ---------- */
.who-switch{display:flex;gap:6px}
.avatar{width:40px;height:40px;border-radius:50%;border:0;display:grid;place-items:center;font:800 16px var(--display);background:var(--surface);color:var(--muted);box-shadow:0 1px 3px rgba(0,0,0,.12)}
.avatar[aria-pressed="true"]{background:var(--accent);color:var(--on-accent)}
.rings{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px;text-align:center}
.ring{display:grid;gap:4px;justify-items:center}
.ring svg{width:100%;max-width:84px;height:auto}
.ring b{font:700 15px var(--mono);font-variant-numeric:tabular-nums}
.ring span{font-size:12px;color:var(--muted);line-height:1.2}
.meal-row{display:grid;grid-template-columns:84px minmax(0,1fr);gap:12px;align-items:center}
.meal-row .photo{aspect-ratio:1/1;border-radius:16px}
.kpi{display:grid;gap:2px}
.kpi b{font:800 26px/1 var(--display)}
.spark{width:100%;height:70px;display:block}

/* ---------- calificar ---------- */
.deck{position:relative;touch-action:pan-y;user-select:none;-webkit-user-select:none}
.swipe{position:relative;background:var(--surface);border-radius:28px;overflow:hidden;box-shadow:0 18px 40px -24px rgba(0,0,0,.45);will-change:transform}
.swipe .photo{border-radius:0;aspect-ratio:auto;height:min(23vh,300px)}

.swipe .info{padding:14px 16px 16px}
.swipe .info{padding:14px 16px;display:grid;gap:8px}
.swipe h2{font-size:24px}
.swipe.fly{transition:transform .28s ease-in,opacity .28s;opacity:0}
.stamp{position:absolute;top:24px;z-index:3;font:800 30px var(--display);padding:4px 14px;border-radius:12px;border:4px solid currentColor;opacity:0;pointer-events:none;background:rgba(255,255,255,.85)}
.stamp.yes{left:20px;color:var(--move);rotate:-12deg}.stamp.no{right:20px;color:var(--no);rotate:12deg}.stamp.fav{left:50%;translate:-50% 0;color:var(--prot)}
.facts{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}
.fact{background:var(--surface-2);border-radius:14px;padding:10px;display:grid;gap:1px}
.fact b{font:700 18px var(--mono);line-height:1.2}
.fact span{font-size:12px;color:var(--muted)}
.votebar{position:fixed;left:50%;translate:-50% 0;bottom:calc(var(--tab-h) + env(safe-area-inset-bottom,0px) + 12px);z-index:26;width:min(380px,calc(100% - 24px));display:grid;grid-template-columns:.7fr 1fr 1.15fr 1fr;gap:12px;align-items:center;justify-items:center;padding:4px 10px}
.vbtn{width:68px;height:68px;border-radius:50%;border:0;display:grid;place-items:center;background:var(--surface);box-shadow:0 6px 16px -8px rgba(0,0,0,.35)}
.vbtn svg{width:30px;height:30px}
.vbtn.no{color:var(--no)} .vbtn.yes{color:var(--move);width:78px;height:78px} .vbtn.fav{color:var(--prot)}
.gallery{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:12px}
.tile{border:0;background:transparent;padding:0;text-align:left;display:grid;gap:6px}
.tile .photo{aspect-ratio:1/1}
.tile .photo::after{content:"";position:absolute;inset:0;border-radius:inherit;border:4px solid transparent;z-index:2}
.tile.v1 .photo::after{border-color:var(--move)} .tile.v2 .photo::after{border-color:var(--prot)} .tile.v-1 .photo::after{border-color:var(--no)} .tile.v-1 .photo{opacity:.5}
.tile b{font-size:14px;line-height:1.25}
.dots{display:flex;gap:8px;font-size:12px;color:var(--muted)}
.dots i{display:inline-block;width:9px;height:9px;border-radius:50%;background:var(--line);margin-right:4px}
.dots .d1 i{background:var(--move)} .dots .d2 i{background:var(--prot)} .dots .d-1 i{background:var(--no)}
.filters{display:flex;gap:6px;overflow-x:auto;padding-bottom:2px;scrollbar-width:none}
.filters::-webkit-scrollbar{display:none}
.filters button{flex:none;border:0;border-radius:999px;padding:8px 13px;font-weight:700;font-size:14px;background:var(--surface);min-height:38px}
.filters button[aria-pressed="true"]{background:var(--accent);color:var(--on-accent)}

/* ---------- semana ---------- */
.steps{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}
.step{border:0;border-radius:14px;padding:10px 8px;background:var(--surface);display:grid;gap:2px;text-align:left;min-height:58px}
.step b{font-size:14px}
.step span{font-size:12px;color:var(--muted)}
.step[aria-current="step"]{background:var(--accent);color:var(--on-accent)}
.step[aria-current="step"] span{color:inherit;opacity:.75}
.step.done span::before{content:"✓ "}
.sport-day{display:grid;grid-template-columns:44px minmax(0,1fr);gap:10px;align-items:start;padding:8px 0;border-top:1px solid var(--line)}
.sport-day:first-of-type{border-top:0}
.sport-day .d{font:800 15px var(--display);padding-top:8px}
.acts{display:flex;gap:6px;flex-wrap:wrap}
.acts button{border:1.5px solid var(--line);background:transparent;border-radius:999px;padding:6px 11px;font-size:13.5px;font-weight:700;min-height:36px}
.acts button[aria-pressed="true"]{background:var(--move-soft);border-color:var(--move);color:var(--move)}
.dish{display:grid;gap:0;overflow:hidden;padding:0}
.dish .photo{border-radius:0;aspect-ratio:16/9}
.dish .body{padding:14px 16px 16px;display:grid;gap:10px}
.dish .tagrow{position:absolute;left:12px;top:12px;display:flex;gap:6px;z-index:2}
.dish .tagrow .chip{background:rgba(255,255,255,.92);color:#17201b}
.why{display:flex;gap:10px;align-items:flex-start;background:var(--sleep-soft);border-radius:14px;padding:10px 12px;font-size:14.5px}
.why svg{flex:none;color:var(--sleep);margin-top:2px}
.portions{display:grid;gap:4px;font-size:14px}
.portions div{display:flex;justify-content:space-between;gap:8px;flex-wrap:wrap}
.acts-row{display:grid;grid-template-columns:1fr 1fr;gap:8px}
.dish.ok{box-shadow:0 0 0 3px var(--move)}
.alts{display:grid;gap:10px;border-top:1px dashed var(--line);padding-top:12px}
.alt{display:grid;grid-template-columns:64px minmax(0,1fr) auto;gap:10px;align-items:center}
.alt .photo{aspect-ratio:1/1;border-radius:12px}
.inline-select{display:grid;grid-template-columns:auto minmax(0,1fr);align-items:center;gap:8px;font-size:14px}
.inline-select select{min-height:38px;width:100%;min-width:0;font-size:15px;padding:6px 10px}
.day-h{display:flex;align-items:baseline;gap:10px;margin-top:6px}
.day-h h2{font-size:24px}
.shop-sec{display:grid;gap:2px}
.shop-sec h3{display:flex;justify-content:space-between;padding:6px 0;border-bottom:1px solid var(--line)}
.item{display:grid;grid-template-columns:30px minmax(0,1fr) auto;gap:10px;align-items:center;min-height:48px;cursor:pointer}
.item input{width:24px;height:24px;margin:0;accent-color:var(--move)}
.item.done span{text-decoration:line-through;color:var(--muted)}

/* ---------- progreso ---------- */
.chart{width:100%;height:auto;display:block;overflow:visible}
.chart text{font:600 11px var(--mono);fill:var(--muted)}
.legend{display:flex;gap:14px;flex-wrap:wrap;font-size:13px;color:var(--muted)}
.legend i{display:inline-block;width:12px;height:3px;border-radius:2px;margin-right:6px;vertical-align:middle}
.tip{display:grid;grid-template-columns:36px minmax(0,1fr);gap:12px;align-items:start}
.tip .ic{width:36px;height:36px;border-radius:12px;display:grid;place-items:center}

/* ---------- hojas modales ---------- */
.sheet-bg{position:fixed;inset:0;z-index:40;background:rgba(10,14,12,.4);display:flex;align-items:flex-end;justify-content:center}
.sheet{width:100%;max-width:560px;background:var(--bg);border-radius:24px 24px 0 0;padding:10px 18px calc(18px + env(safe-area-inset-bottom,0px));display:grid;gap:14px;max-height:90vh;overflow:auto}
.sheet .grab{width:40px;height:5px;border-radius:3px;background:var(--line);margin:0 auto 4px}
.toast{position:fixed;left:50%;translate:-50% 0;bottom:calc(var(--tab-h) + env(safe-area-inset-bottom,0px) + 18px);z-index:50;background:var(--ink);color:var(--bg);padding:11px 16px;border-radius:14px;font-weight:700;font-size:15px;max-width:90vw;text-align:center}
.fab{position:fixed;right:max(18px,env(safe-area-inset-right,0px));bottom:calc(var(--tab-h) + env(safe-area-inset-bottom,0px) + 16px);z-index:25;width:56px;height:56px;border-radius:50%;border:0;background:var(--accent);color:var(--on-accent);display:grid;place-items:center;box-shadow:0 10px 24px -10px rgba(0,0,0,.5)}
.fab svg{width:28px;height:28px}
@media (prefers-reduced-motion:no-preference){.card,.swipe{animation:in .22s ease-out}@keyframes in{from{opacity:.4;transform:translateY(6px)}to{opacity:1;transform:none}}}
.weekgrid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:6px}
.wday{border:0;border-radius:14px;background:var(--surface-2);min-height:84px;padding:8px 2px;display:grid;align-content:start;justify-items:center;gap:6px;text-align:center}
.wday b{font-size:12px;line-height:1.2;color:var(--muted)}
.wday.on{background:var(--move-soft)} .wday.on b{color:var(--move)}
.wday.light{background:var(--sleep-soft)} .wday.light b{color:var(--sleep)}
.acts.big button{min-height:48px;font-size:16px;padding:10px 16px}
.daystrip{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:6px}
.dstrip{border:0;border-radius:14px;background:var(--surface);padding:8px 2px;display:grid;justify-items:center;gap:3px;position:relative;min-height:70px}
.dstrip b{font-size:17px}
.dstrip.cur{background:var(--accent);color:var(--on-accent)}
.dstrip .pips{display:flex;gap:3px}
.dstrip .pips i{width:7px;height:7px;border-radius:50%;background:var(--line)}
.dstrip .pips i.ok{background:var(--move)}
.dstrip .bolt{position:absolute;top:5px;right:5px;color:var(--move)}
.dstrip.cur .bolt{color:var(--on-accent)}

/* ---------- v2: inicio, deporte, metas ---------- */
.nowrap{white-space:nowrap}
.linkbtn{border:0;background:none;padding:0;font:inherit;font-weight:700;color:var(--ink);text-decoration:underline;cursor:pointer}
.grid3{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}
.vbtn.undo{width:48px;height:48px;color:var(--muted)} .vbtn.undo svg{width:22px;height:22px} .vbtn:disabled{opacity:.35}
.bignum{display:flex;align-items:baseline;gap:10px;flex-wrap:wrap}
.bignum b{font:800 44px/1 var(--display);letter-spacing:-.02em}
.bignum span{color:var(--muted);font-size:15px}
.track{position:relative;height:12px;border-radius:999px;background:var(--surface-2);overflow:visible}
.track>i{display:block;height:100%;border-radius:999px;background:var(--food)}
.balance-card.good .track>i{background:var(--move)}
.track .mark{position:absolute;top:-4px;bottom:-4px;width:3px;border-radius:2px;background:var(--ink)}
.trio{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}
.trio>div{display:grid;gap:1px}
.trio b{font:700 19px var(--mono)}
.meal-block{display:grid;gap:8px;padding-bottom:12px;border-bottom:1px solid var(--line)}
.meal-block:last-of-type{border-bottom:0;padding-bottom:0}
.meal-row{text-decoration:none;color:inherit}
.cook{background:var(--surface-2);border-radius:14px;padding:12px 14px;display:grid;gap:8px}
.cook ul{margin:0;padding-left:18px;display:grid;gap:3px;font-size:14.5px}
.wk-row{display:grid;grid-template-columns:36px minmax(0,1fr) auto;gap:12px;align-items:center;padding:4px 0}
.wk-ic{width:36px;height:36px;border-radius:12px;display:grid;place-items:center;background:var(--move-soft);color:var(--move)}
.wk-ic.plan{background:var(--surface-2);color:var(--muted)}
.sleep-card .ic{width:34px;height:34px;border-radius:11px;display:grid;place-items:center;background:var(--sleep-soft);color:var(--sleep)}
.sleep-card.lvl-low{box-shadow:inset 4px 0 0 var(--no)} .sleep-card.lvl-mid{box-shadow:inset 4px 0 0 var(--prot)} .sleep-card.lvl-good{box-shadow:inset 4px 0 0 var(--move)}
.sday{display:grid;grid-template-columns:44px minmax(0,1fr) auto;gap:12px;align-items:center;padding:10px 0;border-top:1px solid var(--line)}
.sday:first-of-type{border-top:0}
.sday .d{display:grid;justify-items:center;line-height:1.1}
.sday .t{display:grid;gap:1px}
.sday .t span{color:var(--muted)}
.sday.s-done .t b{color:var(--move)} .sday.s-done .t span{color:var(--move)}
.sday.s-miss .t span{color:var(--no)}
.sday.s-rest .t b{color:var(--muted);font-weight:400}
.sday.s-today{background:var(--surface-2);border-radius:14px;padding-inline:8px;border-top-color:transparent}
.goal-hero{gap:16px}
.journey{display:grid;gap:8px}
.jtrack{position:relative;height:14px;border-radius:999px;background:var(--surface-2)}
.jtrack>i{display:block;height:100%;border-radius:999px;background:linear-gradient(90deg,var(--prot),var(--move))}
.jdot{position:absolute;top:50%;width:22px;height:22px;border-radius:50%;background:var(--surface);border:4px solid var(--move);translate:-50% -50%;box-shadow:0 2px 6px rgba(0,0,0,.2)}
.journey .now{color:var(--ink)}
.lean{display:grid;gap:3px;border-radius:14px;padding:12px 14px;background:var(--move-soft)}
.lean.bad{background:var(--no-soft)}
.mile{display:grid;gap:1px;border-radius:14px;padding:12px 14px;background:var(--surface-2)}
.mile b{font:800 26px var(--display)}
.goal-row{display:grid;grid-template-columns:30px minmax(0,1fr);gap:10px;align-items:start;padding:8px 0;border-top:1px solid var(--line)}
.goal-row:first-of-type{border-top:0}
.gcheck{width:28px;height:28px;border-radius:50%;display:grid;place-items:center;font-weight:800;background:var(--surface-2);color:var(--muted)}
.goal-row.ok .gcheck{background:var(--move);color:#fff}
.goal-row.no .gcheck{background:var(--no-soft);color:var(--no)}
.goal-row .progress.thin{height:6px;margin:6px 0 3px}
.goal-row.ok .progress>i{background:var(--move)} .goal-row.no .progress>i{background:var(--prot)}
.weeks-hist{display:grid;grid-template-columns:repeat(8,minmax(0,1fr));gap:6px}
.wh{border-radius:12px;background:var(--surface-2);padding:8px 2px;display:grid;justify-items:center;gap:2px}
.wh b{font-size:12px}
.wh.ok{background:var(--move-soft);color:var(--move)}

.steprow{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:4px;text-align:center}
.stepday{display:grid;justify-items:center;gap:2px}
.stepday svg{width:100%;max-width:42px;height:auto}
.stepday.fut{opacity:.45}
.item{display:grid;grid-template-columns:30px minmax(0,1fr) auto;gap:10px;align-items:center;min-height:48px}
.itemname{border:0;background:none;padding:6px 0;text-align:left;display:grid;gap:1px;font:inherit;color:inherit;min-height:44px;cursor:pointer}
.item.done .itemname span:first-child{text-decoration:line-through;color:var(--muted)}
.hv{width:24px;height:24px;border-radius:50%;display:grid;place-items:center;background:var(--move-soft);color:var(--move);font-weight:800;font-size:14px}
.week-goal{gap:14px}
.focus{border-radius:14px;padding:12px 14px;background:var(--prot-soft)}
.focus .eyebrow{color:var(--prot)}

/* ---------- v3 ---------- */
.okc{color:var(--move)} .warnc{color:var(--prot)}
.wday{position:relative}
.wday .st{font-weight:800;font-size:15px;line-height:1}
.wday.done{box-shadow:inset 0 0 0 2px var(--move)} .wday.done .st{color:var(--move)}
.wday.miss .st{color:var(--no)} .wday.today{outline:2px solid var(--ink);outline-offset:1px}
.disclosure{border:0;background:transparent;display:flex;justify-content:space-between;align-items:center;font-weight:700;color:var(--muted);padding:6px 4px;min-height:40px;width:100%}
.past{gap:0}
.pastrow{display:grid;grid-template-columns:52px minmax(0,1fr) auto;gap:10px;padding:8px 0;border-top:1px solid var(--line);align-items:center}
.pastrow:first-child{border-top:0}
.hrow{display:grid;gap:8px;padding:10px 0;border-top:1px solid var(--line)}
.hrow:first-of-type{border-top:0}
.hname{display:grid;gap:1px}
.hrow.have .hname b{color:var(--muted);text-decoration:line-through}
.tri{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:6px}
.tri button{border:1.5px solid var(--line);background:transparent;border-radius:11px;min-height:40px;font-size:13.5px;font-weight:700;padding:6px 4px;color:var(--muted)}
.tri button[aria-pressed="true"]{color:var(--ink);border-color:var(--ink);background:var(--surface-2)}
.hrow.have .tri button:nth-child(3)[aria-pressed="true"]{background:var(--move-soft);color:var(--move);border-color:var(--move)}
.hrow.part .tri button:nth-child(2)[aria-pressed="true"]{background:var(--prot-soft);color:var(--prot);border-color:var(--prot)}
.partf{display:grid;gap:6px;background:var(--surface-2);border-radius:12px;padding:10px 12px}
.partf input{min-height:42px}
.week-hero{gap:14px}
.hero-row{display:grid;grid-template-columns:128px minmax(0,1fr);gap:16px;align-items:center}
.hero-ring{width:128px;height:128px}
.ring-big{font:800 28px var(--display);fill:var(--ink)} .ring-sm{font:600 11px var(--body);fill:var(--muted)}
.hero-txt{display:grid;gap:4px}
.hero-txt>b{font:800 34px/1 var(--display)}
.hero-txt>span:first-of-type{color:var(--muted);font-size:14px}
.hero-foot{display:flex;justify-content:space-between;align-items:center;gap:8px;flex-wrap:wrap}
.week-hero.won{box-shadow:0 0 0 3px var(--move)}
.cat{display:grid;grid-template-columns:14px minmax(0,1fr);gap:12px;align-items:start;padding:8px 0}
.dotc{width:12px;height:12px;border-radius:50%;margin-top:5px;background:var(--move)}
.cat.fix .dotc{background:var(--prot)}
.body-row{display:grid;grid-template-columns:minmax(0,1fr) auto 64px 92px;gap:8px;align-items:baseline;padding:9px 0;border-top:1px solid var(--line)}
.body-row b{font:700 17px var(--mono)}
.body-row>span:last-child{text-align:right}
@media (max-width:380px){.body-row{grid-template-columns:minmax(0,1fr) auto 58px}.body-row>span:last-child{display:none}}

.ing-card{padding:22px 18px 22px;display:grid;justify-items:center;text-align:center;gap:6px;align-content:center}
.ing-emoji{font-size:64px;line-height:1;width:116px;height:116px;border-radius:50%;display:grid;place-items:center;background:var(--surface-2)}
.ing-card h2{font-size:26px}
.ing-need{font-size:17px}
.ing-need b{font:700 20px var(--mono)}
.vbtn .half{font:800 26px var(--display)}
.votebar.ing .vbtn.no svg{width:28px;height:28px}

/* v4 inicio compacto */
.balance-card.compact{gap:8px}
.balline{display:flex;align-items:baseline;gap:6px;flex-wrap:wrap;margin:0;font-size:15px;color:var(--muted)}
.balline b{font:800 30px/1 var(--display);letter-spacing:-.01em;color:var(--ink)}
.balline strong{color:var(--ink);letter-spacing:.06em;font-size:14px}
.balance-card.compact .track{height:8px}
.balmini b{color:var(--ink);font-weight:600}
.sleep-line{box-sizing:border-box;display:flex;align-items:center;gap:10px;width:100%;border:0;border-radius:16px;background:var(--surface);padding:10px 14px;text-align:left;font:inherit;color:var(--ink);box-shadow:inset 4px 0 0 var(--prot)}
.sleep-line.lvl-low{box-shadow:inset 4px 0 0 var(--no)} .sleep-line.lvl-good{box-shadow:inset 4px 0 0 var(--move)} .sleep-line.lvl-none{box-shadow:none}
.sleep-line .ic{width:28px;height:28px;flex:none;border-radius:9px;display:grid;place-items:center;background:var(--sleep-soft);color:var(--sleep)}
.sleep-line .sl-t{flex:1;min-width:0;font-weight:700;font-size:14px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.sleep-line .sl-go{flex:none;font-size:13px;color:var(--muted)}
.sleep-more{margin:-4px 4px 0;padding:10px 14px;border-radius:14px;background:var(--sleep-soft)}
.daytot{display:grid;grid-template-columns:1fr 1fr;gap:4px 12px;padding:10px 14px;border-radius:16px;background:var(--surface);margin-bottom:12px}
.daytot>div{display:grid}.daytot b{font:600 14px var(--mono)}.daytot p{grid-column:1/-1;margin:0}
.journey.v2{display:grid;gap:10px}
.jhead{margin:0;font-size:15px}
.jline{display:grid;grid-template-columns:auto 1fr auto;align-items:start;gap:10px;padding-bottom:22px}
.jend{display:grid;justify-items:center;font-size:18px;line-height:1}.jend b{font:600 13px var(--mono);margin-top:4px}
.jbar{position:relative;height:10px;margin-top:5px;border-radius:999px;background:var(--line);box-shadow:inset 0 0 0 1px rgba(0,0,0,.06)}
.jbar>i{display:block;height:100%;border-radius:999px;background:var(--move)}
.jbar .jdot{position:absolute;top:50%;width:18px;height:18px;border-radius:50%;background:var(--surface);border:4px solid var(--move);translate:-50% -50%;box-sizing:border-box}
.jbar .jnow{position:absolute;top:16px;translate:-50% 0;white-space:nowrap;font:700 12px var(--mono)}
/* v5 aprobación entre las dos, quién come, votación */
.dstrip .pips i.half{background:linear-gradient(90deg,var(--move) 50%,var(--line) 50%)}
.dstrip .pips i.vote{background:var(--prot)}
.who-row{display:flex;flex-wrap:wrap;align-items:center;gap:6px}
.who-chip{border:1.5px solid var(--line);background:var(--surface);color:var(--ink);border-radius:999px;padding:6px 12px;font:700 14px var(--body);min-height:36px}
.who-chip.on{border-color:var(--move);background:var(--move-soft);color:var(--ink)}
.who-chip.off{color:var(--muted);text-decoration:line-through;background:var(--surface-2)}
.card.away{display:grid;gap:8px}
.approvals{display:flex;flex-wrap:wrap;gap:4px 10px;margin:0}
.struck{text-decoration:line-through;color:var(--muted)}
.dish.voting{box-shadow:inset 0 0 0 2px var(--prot)}
.votebox{display:grid;gap:8px}
.vopt{display:grid;grid-template-columns:64px 1fr auto;gap:10px;align-items:center;text-align:left;border:1.5px solid var(--line);background:var(--surface);color:var(--ink);border-radius:16px;padding:8px;font:inherit}
.vopt .photo{width:64px;height:64px;border-radius:12px;aspect-ratio:auto}
.vopt .vtx{display:grid;gap:2px}
.vopt .vcheck{font-size:22px;color:var(--food);padding:0 6px}
.vopt.on{border-color:var(--food);background:var(--food-soft)}
.vopt[disabled]{opacity:.9}
.votebox details summary{cursor:pointer;color:var(--muted);padding:6px 0}
.votebox details[open]{display:grid;gap:8px}
.notif-list{display:grid}
.notif-row{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:10px 0;border-top:1px solid var(--line)}
.notif-row>span{display:grid}
.notif-row input{width:44px;height:26px;appearance:none;-webkit-appearance:none;border-radius:999px;background:var(--line);position:relative;flex:none;transition:background .15s}
.notif-row input::after{content:'';position:absolute;top:3px;left:3px;width:20px;height:20px;border-radius:50%;background:#fff;transition:left .15s;box-shadow:0 1px 3px rgba(0,0,0,.3)}
.notif-row input:checked{background:var(--move)}
.notif-row input:checked::after{left:21px}
.wday b.wicons{font-size:20px;line-height:1.15;display:grid;gap:2px;color:inherit}
.wlist{display:flex;flex-wrap:wrap;gap:6px 14px;margin:0}
.wlist span{white-space:nowrap}
.cat-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.cat-tile{display:grid;align-content:start;gap:4px;padding:12px;border-radius:18px;background:var(--move-soft)}
.cat-tile.fix{background:var(--prot-soft)}
.cat-tile .cat-ic{font-size:24px;line-height:1}
.cat-tile .chip{font-size:12px;padding:3px 8px}
.cat-tile b{font-size:16px;margin-top:4px}
.deck-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.deck-tile{display:grid;gap:4px;justify-items:start;text-align:left;border:0;border-radius:20px;background:var(--surface);padding:14px;font:inherit;color:var(--ink);box-shadow:0 8px 20px -16px rgba(0,0,0,.4)}
.deck-tile .dic{font-size:30px;line-height:1}
.deck-tile b{font-size:16px}
.deck-tile .dbar{width:100%;height:6px;border-radius:999px;background:var(--surface-2);overflow:hidden;margin-top:4px}
.deck-tile .dbar i{display:block;height:100%;background:var(--move)}
.deck-tile.done{opacity:.7}
/* Navegar días en Inicio */
.daynav{display:flex;align-items:center;gap:8px;margin:2px 0 10px}
.dn-arrow{width:44px;height:44px;border-radius:50%;border:0;background:var(--surface);color:var(--ink);font:700 24px/1 var(--body);box-shadow:0 1px 3px rgba(0,0,0,.08)}
.dn-arrow:disabled{opacity:.3}
.dn-date{flex:1;min-height:44px;border-radius:999px;border:0;background:var(--surface);color:var(--ink);font:800 14px var(--body);letter-spacing:.06em;text-transform:uppercase;box-shadow:0 1px 3px rgba(0,0,0,.08)}
.dn-caret{color:var(--muted);font-size:12px;margin-left:4px}
.daystrip{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:6px;margin:0 0 6px}
.dtile{display:flex;flex-direction:column;align-items:center;justify-content:space-between;gap:4px;min-height:88px;padding:10px 2px 8px;border-radius:var(--r-sm);border:1.5px solid var(--line);background:var(--surface);color:var(--ink)}
.dtile .dt-w{font:700 11px var(--body);color:var(--muted);text-transform:uppercase}
.dtile .dt-n{font:800 19px var(--display)}
.dtile .dt-v{font:700 10.5px var(--body);color:var(--muted);white-space:nowrap}
.dtile.good{border-color:var(--move);background:var(--move-soft)} .dtile.good .dt-v{color:var(--move)}
.dtile.mid{border-color:var(--food);background:var(--food-soft)} .dtile.mid .dt-v{color:var(--food)}
.dtile.bad{border-color:var(--no);background:var(--no-soft)} .dtile.bad .dt-v{color:var(--no)}
.dtile.fut{border-style:dashed}
.dtile.today .dt-w{color:var(--ink)}
.dtile.sel{outline:3px solid var(--accent);outline-offset:1px}
.dtile.off{opacity:.35}
.dt-legend{display:flex;flex-wrap:wrap;align-items:center;gap:4px 8px;margin:0 0 12px}
.dt-legend .lg{display:inline-block;width:10px;height:10px;border-radius:3px;border:1.5px solid var(--line);margin-right:-4px}
.dt-legend .lg.good{background:var(--move-soft);border-color:var(--move)} .dt-legend .lg.mid{background:var(--food-soft);border-color:var(--food)} .dt-legend .lg.bad{background:var(--no-soft);border-color:var(--no)}
.backtoday{display:block;margin:-4px 0 10px auto}
.lt > div:first-child{min-width:0}
.lt h1{font-size:clamp(26px,7.5vw,34px);overflow-wrap:anywhere}
.who-switch{flex-shrink:0}
.daynav{min-width:0} .dn-date{min-width:0;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;font-size:13px;letter-spacing:.03em;padding:0 10px}
.dn-arrow{flex-shrink:0}
.app > *, .card > *, .meal-row > div{min-width:0}
.wknav{display:flex;align-items:center;justify-content:space-between;gap:8px;margin:0 2px 8px}
.wknav button:disabled{opacity:.35}
.dtile.mid,.dt-legend .lg.mid{border-color:#d4a017;background:#fff3cf} .dtile.mid .dt-v{color:#8a6200}
@media (prefers-color-scheme:dark){:root:not([data-theme="light"]) .dtile.mid,:root:not([data-theme="light"]) .dt-legend .lg.mid{background:#3a2f10} :root:not([data-theme="light"]) .dtile.mid .dt-v{color:#f0c44c}}
.detect{border:1.5px dashed var(--line);border-radius:var(--r-sm);padding:10px 12px;margin:6px 0 10px;display:grid;gap:6px;background:var(--surface-2)}
.chipbtn{border:1.5px solid var(--line);background:var(--surface);color:var(--ink);border-radius:999px;padding:6px 12px;font:700 13px var(--body);min-height:36px}
.chipbtn.ghost{background:transparent;color:var(--muted)}
