/* Layout: móvil primero (una columna, barra inferior); en escritorio, barra lateral fija + contenido centrado.
   Dirección: casi negro, tarjetas de bajo contraste, rojo solo para acción y progreso, serif para títulos. */
:root {
  --bg: #000000;
  --surface: #0E0E10;
  --surface-2: #161618;
  --line: #2a2a2e;
  --line-strong: #3d3d43;
  --ink: #FFFFFF;
  --ink-2: #D6D6DB;
  --muted: #A9A9B4;
  --brand: #E5173F;
  --accent: #E5173F;
  --accent-ink: #FFFFFF;
  --accent-soft: rgba(229, 23, 63, .16);
  --accent-line: rgba(229, 23, 63, .45);
  --ok: #3CC48B;
  --ok-soft: rgba(60, 196, 139, .12);
  --warn: #E7A64A;
  --warn-soft: rgba(231, 166, 74, .12);
  --font-display: -apple-system, BlinkMacSystemFont, "SF Pro Display", "SF Pro Text", system-ui, "Inter", Roboto, "Segoe UI", sans-serif;
  --font-body: -apple-system, BlinkMacSystemFont, "SF Pro Text", system-ui, "Inter", Roboto, "Segoe UI", sans-serif;
  --radius: 14px;
  --radius-sm: 10px;
  --tabbar-h: 64px;
  --barra: rgba(0,0,0,.9);
  --barra-top: rgba(0,0,0,.84);
  --msg-mio: #2A0B13;
  --brillo: #1A1A1E;
  --shadow: 0 1px 0 rgba(255,255,255,.03) inset, 0 12px 32px -18px rgba(0,0,0,.8);
  color-scheme: dark;
}

* { box-sizing: border-box; }
html, body { min-height: 100%; }
body { margin: 0; background: var(--bg); color: var(--ink); font-family: var(--font-body); font-size: 15px; line-height: 1.5; -webkit-font-smoothing: antialiased; -webkit-tap-highlight-color: transparent; }
button, input, textarea, select { font: inherit; color: inherit; }
a { color: var(--ink); }
:focus-visible { outline: 2px solid var(--accent); outline-offset: 2px; }
.num, input { font-variant-numeric: tabular-nums; }

/* ---------- Estructura ---------- */
.shell { min-height: 100vh; }
.main { max-width: 640px; margin: 0 auto; padding-inline: 16px; padding-block: 0 calc(var(--tabbar-h) + 32px + env(safe-area-inset-bottom, 0px)); }
.main.has-timer { padding-bottom: calc(var(--tabbar-h) + 118px + env(safe-area-inset-bottom, 0px)); }
.top { position: sticky; top: env(safe-area-inset-top, 0px); z-index: 20; background: var(--barra-top); backdrop-filter: blur(14px); -webkit-backdrop-filter: blur(14px); border-bottom: 1px solid var(--line); margin-inline: -16px; padding: 12px 16px; display: grid; grid-template-columns: 44px 1fr 44px; align-items: center; }
.wordmark { text-align: center; font-family: var(--font-display); font-size: 17px; letter-spacing: .32em; font-weight: 500; text-transform: uppercase; white-space: nowrap; }
.wordmark span { color: var(--accent); }
.icon-btn { width: 40px; height: 40px; border-radius: 50%; border: 1px solid var(--line); background: var(--surface); display: grid; place-items: center; cursor: pointer; color: var(--ink-2); }
.icon-btn svg { width: 18px; height: 18px; stroke: currentColor; fill: none; stroke-width: 1.8; }
.icon-btn:hover { border-color: var(--line-strong); color: var(--ink); }
.top .right { justify-self: end; }

.page { display: flex; flex-direction: column; gap: 16px; padding-top: 22px; }
.crumb { font-size: 11px; letter-spacing: .16em; text-transform: uppercase; color: var(--muted); font-weight: 600; }
.crumb b { color: var(--ink-2); font-weight: 600; }
h1, h2, h3 { margin: 0; text-wrap: balance; }
h1 { font-family: var(--font-display); font-weight: 700; font-size: 30px; line-height: 1.1; letter-spacing: -.025em; }
h2 { font-family: var(--font-display); font-weight: 700; font-size: 22px; line-height: 1.15; letter-spacing: -.02em; }
h3 { font-size: 12px; letter-spacing: .14em; text-transform: uppercase; color: var(--muted); font-weight: 600; }
.sub { color: var(--muted); font-size: 14px; margin: 0; }
.muted { color: var(--muted); }
.small { font-size: 13px; }

/* ---------- Superficies ---------- */
.card { background: var(--surface); border: 1px solid var(--line); border-radius: var(--radius); padding: 16px; display: flex; flex-direction: column; gap: 14px; min-width: 0; box-shadow: var(--shadow); }
.list { display: flex; flex-direction: column; gap: 10px; }
.row { display: flex; align-items: center; gap: 12px; min-width: 0; }
.row > .grow { flex: 1; min-width: 0; }
.metrics { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 10px; }
.metric { background: var(--surface); border: 1px solid var(--line); border-radius: var(--radius); padding: 14px; display: flex; flex-direction: column; gap: 4px; min-width: 0; }
.metric .l { font-size: 11px; letter-spacing: .12em; text-transform: uppercase; color: var(--muted); font-weight: 600; }
.metric .v { font-size: 28px; font-weight: 600; letter-spacing: -.02em; font-variant-numeric: tabular-nums; line-height: 1.1; }
.metric .d { font-size: 12px; color: var(--muted); }
.metric .d.up { color: var(--ok); } .metric .d.down { color: var(--accent); }

.pill { display: inline-flex; align-items: center; gap: 6px; border-radius: 999px; padding: 3px 10px; font-size: 11px; font-weight: 600; letter-spacing: .06em; text-transform: uppercase; white-space: nowrap; border: 1px solid var(--line); color: var(--muted); }
.pill.ok { color: var(--ok); border-color: transparent; background: var(--ok-soft); }
.pill.live { color: var(--accent); border-color: transparent; background: var(--accent-soft); }
.pill.warn { color: var(--warn); border-color: transparent; background: var(--warn-soft); }
.dot { width: 6px; height: 6px; border-radius: 50%; background: currentColor; }

.btn { border: 0; background: var(--accent); color: var(--accent-ink); font-weight: 600; letter-spacing: .02em; border-radius: var(--radius-sm); padding: 13px 18px; font-size: 15px; cursor: pointer; display: inline-flex; align-items: center; justify-content: center; gap: 8px; transition: transform .12s ease, filter .12s ease; }
.btn:hover { filter: brightness(1.08); }
.btn:active { transform: scale(.98); }
.btn.ghost { background: transparent; color: var(--ink); border: 1px solid var(--line-strong); }
.btn.small { padding: 8px 12px; font-size: 13px; }
.btn svg { width: 16px; height: 16px; stroke: currentColor; fill: none; stroke-width: 2; }
.link { background: none; border: 0; padding: 0; color: var(--muted); cursor: pointer; font-size: 14px; display: inline-flex; gap: 6px; align-items: center; }
.link:hover { color: var(--ink); }

/* ---------- Selector de semana ---------- */
.seg { display: grid; grid-auto-flow: column; grid-auto-columns: 1fr; gap: 4px; background: var(--surface); border: 1px solid var(--line); border-radius: 12px; padding: 4px; }
.seg button { border: 0; background: transparent; border-radius: 9px; padding: 8px 4px; cursor: pointer; display: flex; flex-direction: column; align-items: center; gap: 1px; color: var(--muted); }
.seg button b { font-size: 13px; font-weight: 600; color: var(--ink-2); }
.seg button small { font-size: 11px; }
.seg button[aria-pressed="true"] { background: var(--surface-2); box-shadow: 0 0 0 1px var(--line-strong) inset; }
.seg button[aria-pressed="true"] b { color: var(--ink); }

/* ---------- Días ---------- */
.day { display: grid; grid-template-columns: 44px 1fr auto; gap: 14px; align-items: center; text-align: left; width: 100%; cursor: pointer; background: var(--surface); border: 1px solid var(--line); border-radius: var(--radius); padding: 16px; transition: border-color .15s ease, background .15s ease; }
.day:hover { border-color: var(--line-strong); background: var(--surface-2); }
.day .n { font-family: var(--font-display); font-weight: 700; font-size: 26px; color: var(--ink-2); text-align: center; }
.day .t b { display: block; font-size: 16px; font-weight: 600; text-transform: uppercase; }
.day .t span { font-size: 13px; color: var(--muted); }
.track { height: 3px; background: var(--line); border-radius: 3px; overflow: hidden; margin-top: 10px; }
.track i { display: block; height: 100%; background: var(--accent); border-radius: 3px; }
.track.ok i { background: var(--ok); }

/* ---------- Sesión ---------- */
.session-head { display: flex; flex-direction: column; gap: 10px; }
.session-progress { display: flex; align-items: center; gap: 10px; font-size: 13px; color: var(--muted); }
.session-progress .track { flex: 1; margin: 0; }

.ex { padding: 0; gap: 0; overflow: hidden; }
.ex-top { padding: 16px; display: flex; flex-direction: column; gap: 12px; }
.ex-label { display: flex; align-items: center; justify-content: space-between; gap: 10px; }
.ex-label .idx { font-size: 11px; letter-spacing: .16em; text-transform: uppercase; color: var(--muted); font-weight: 600; }
.ex h2 { text-transform: none; }
.ex .meta { font-size: 13px; color: var(--muted); display: flex; flex-wrap: wrap; gap: 6px 14px; }
.video { position: relative; display: flex; align-items: center; gap: 12px; text-decoration: none; background: var(--surface-2); border: 1px solid var(--line); border-radius: 12px; padding: 10px; overflow: hidden; }
.video .thumb { width: 96px; aspect-ratio: 16/9; max-width: 100%; border-radius: 8px; background: #000 center/cover no-repeat; display: grid; place-items: center; flex: none; position: relative; }
.video .thumb::after { content: ""; position: absolute; inset: 0; border-radius: 8px; background: linear-gradient(180deg, rgba(0,0,0,.05), rgba(0,0,0,.45)); }
.video .play { position: relative; z-index: 1; width: 30px; height: 22px; border-radius: 6px; background: var(--accent); display: grid; place-items: center; }
.video .play::before { content: ""; border-left: 9px solid #fff; border-top: 6px solid transparent; border-bottom: 6px solid transparent; margin-left: 2px; }
.video b { display: block; font-size: 14px; font-weight: 600; color: var(--ink); }
.video span { font-size: 12px; color: var(--muted); }
.key { display: grid; grid-template-columns: 18px 1fr; gap: 10px; background: var(--surface-2); border: 1px solid var(--line); border-radius: 12px; padding: 12px; font-size: 14px; color: var(--ink-2); }
.key svg { width: 18px; height: 18px; stroke: var(--accent); fill: none; stroke-width: 1.8; margin-top: 1px; }
.key b { display: block; font-size: 11px; letter-spacing: .14em; text-transform: uppercase; color: var(--accent); font-weight: 600; margin-bottom: 2px; }

.set { border-top: 1px solid var(--line); padding: 16px; display: flex; flex-direction: column; gap: 12px; transition: background .2s ease; }
.set.active { background: transparent; }
.set-head { display: grid; grid-template-columns: 30px 1fr auto; gap: 12px; align-items: start; }
.badge { width: 28px; height: 28px; border-radius: 50%; display: grid; place-items: center; font-size: 13px; font-weight: 600; background: var(--surface-2); border: 1px solid var(--line-strong); color: var(--ink-2); }
.set.active .badge { background: var(--accent); border-color: var(--accent); color: var(--accent-ink); }
.set.done .badge { background: var(--ok-soft); border-color: transparent; color: var(--ok); }
.presc b { display: block; font-size: 15px; font-weight: 600; }
.presc details summary { list-style: none; cursor: pointer; font-size: 13px; color: var(--muted); margin-top: 2px; }
.presc details summary::-webkit-details-marker { display: none; }
.presc details summary::after { content: " · ver cómo"; color: var(--ink-2); }
.presc details[open] summary::after { content: " · ocultar"; }
.presc details p { margin: 8px 0 0; font-size: 14px; color: var(--ink-2); }
.verdict { font-size: 11px; font-weight: 600; letter-spacing: .06em; text-transform: uppercase; white-space: nowrap; }
.verdict.up { color: var(--ok); } .verdict.same { color: var(--muted); } .verdict.down { color: var(--warn); }

.last { display: flex; align-items: center; gap: 10px; font-size: 13px; color: var(--muted); background: var(--accent-soft); border-radius: 10px; padding: 8px 12px; }
.last svg { width: 16px; height: 16px; stroke: var(--accent); fill: none; stroke-width: 1.8; flex: none; }
.last b { color: var(--ink); font-weight: 600; font-variant-numeric: tabular-nums; }
.last.none { background: var(--surface-2); }
.last.none svg { stroke: var(--muted); }

.inputs { display: grid; grid-template-columns: 1.15fr 1fr; gap: 8px; }
.stepper { background: var(--surface-2); border: 1px solid var(--line); border-radius: 12px; padding: 8px 8px 6px; display: flex; flex-direction: column; gap: 2px; min-width: 0; transition: border-color .15s ease; }
.stepper:focus-within { border-color: var(--line-strong); box-shadow: 0 0 0 3px var(--accent-soft); }
.stepper label { font-size: 10px; letter-spacing: .14em; text-transform: uppercase; color: var(--muted); font-weight: 600; padding-left: 4px; }
.stepper .ctl { display: flex; align-items: center; gap: 4px; }
.stepper input { width: 100%; min-width: 0; border: 0; background: transparent; font-size: 26px; font-weight: 600; letter-spacing: -.02em; padding: 2px 4px; outline: none; text-align: left; }
.stepper input::placeholder { color: var(--muted); opacity: .65; }
.stepper .pm { flex: none; width: 28px; height: 28px; border-radius: 50%; border: 1px solid var(--line-strong); background: transparent; color: var(--ink-2); cursor: pointer; font-size: 16px; line-height: 1; display: grid; place-items: center; }
.stepper .pm:active { background: var(--line); }
.note-in { width: 100%; border: 1px solid var(--line); background: var(--surface-2); border-radius: 10px; padding: 11px 12px; font-size: 14px; outline: none; }
.note-in:focus { border-color: var(--line-strong); }
.set-actions { display: flex; align-items: center; justify-content: space-between; gap: 10px; }
.saved { font-size: 12px; color: var(--muted); display: inline-flex; align-items: center; gap: 6px; }
.saved.ok { color: var(--ok); }

.rest-line { border-top: 1px solid var(--line); padding: 12px 16px; display: flex; align-items: center; justify-content: space-between; gap: 10px; font-size: 13px; color: var(--muted); background: var(--surface); }

.qgrid { display: grid; grid-template-columns: 1fr 1fr; gap: 10px; }
.qgrid .wide { grid-column: 1 / -1; }
.field { display: flex; flex-direction: column; gap: 5px; min-width: 0; }
.field label { font-size: 11px; letter-spacing: .1em; text-transform: uppercase; color: var(--muted); font-weight: 600; }
.field input, .field textarea { width: 100%; border: 1px solid var(--line); background: var(--surface-2); border-radius: 10px; padding: 11px 12px; font-size: 15px; outline: none; min-width: 0; }
.field input:focus, .field textarea:focus { border-color: var(--line-strong); box-shadow: 0 0 0 3px var(--accent-soft); }
.field textarea { resize: vertical; min-height: 44px; }
details.fold > summary { list-style: none; cursor: pointer; display: flex; align-items: center; justify-content: space-between; gap: 10px; }
details.fold > summary h3 { flex: 1; }
details.fold > summary::-webkit-details-marker { display: none; }
details.fold > summary::after { content: "+"; color: var(--muted); font-size: 20px; line-height: 1; }
details.fold[open] > summary::after { content: "–"; }

/* ---------- Temporizador de descanso ---------- */

/* ---------- Dieta ---------- */
.kcal { display: flex; align-items: baseline; gap: 10px; flex-wrap: wrap; }
.kcal .big { font-size: 40px; font-weight: 600; letter-spacing: -.03em; font-variant-numeric: tabular-nums; }
.kcal .u { color: var(--muted); font-size: 14px; }
.notice { display: grid; grid-template-columns: 18px 1fr; gap: 10px; border: 1px solid var(--line); border-radius: 12px; padding: 12px 14px; font-size: 13px; color: var(--ink-2); background: var(--surface); }
.notice svg { width: 18px; height: 18px; stroke: var(--accent); fill: none; stroke-width: 1.8; }
.meal-head { display: flex; align-items: baseline; justify-content: space-between; gap: 10px; flex-wrap: wrap; }
.formula { display: flex; flex-wrap: wrap; gap: 6px; }
.formula span { font-size: 11px; letter-spacing: .08em; text-transform: uppercase; font-weight: 600; color: var(--ink-2); border: 1px solid var(--line); border-radius: 999px; padding: 3px 9px; }
.cat { display: flex; flex-direction: column; gap: 8px; padding-top: 12px; border-top: 1px solid var(--line); }
.cat h4 { margin: 0; display: flex; align-items: center; gap: 8px; font-size: 12px; letter-spacing: .12em; text-transform: uppercase; font-weight: 600; color: var(--ink-2); }
.cat h4 i { width: 6px; height: 6px; border-radius: 50%; background: var(--accent); }
.cat h4 small { margin-left: auto; color: var(--muted); font-weight: 500; letter-spacing: .04em; }
.opts { display: flex; flex-direction: column; margin: 0; padding: 0; list-style: none; }
.opts li { display: grid; grid-template-columns: 74px 1fr; gap: 12px; padding: 8px 0; border-bottom: 1px dashed var(--line); font-size: 14px; color: var(--ink-2); }
.opts li:last-child { border-bottom: 0; }
.opts .q { font-weight: 600; color: var(--ink); font-variant-numeric: tabular-nums; white-space: nowrap; }
.opts li.free { grid-template-columns: 1fr; }
.kv { display: grid; grid-template-columns: minmax(96px, 32%) 1fr; gap: 10px 14px; font-size: 14px; margin: 0; }
.kv dt { color: var(--muted); font-size: 12px; letter-spacing: .06em; text-transform: uppercase; font-weight: 600; padding-top: 2px; }
.kv dd { margin: 0; color: var(--ink-2); }

/* ---------- Progreso ---------- */
.chart svg { width: 100%; height: auto; display: block; overflow: visible; }
.chart .axis { fill: var(--muted); font-size: 10px; font-family: var(--font-body); }
.chart .grid { stroke: var(--line); stroke-width: 1; }
.chart .goal { stroke: var(--ok); stroke-width: 1; stroke-dasharray: 4 4; }
.chart .goal-l { fill: var(--ok); font-size: 10px; font-family: var(--font-body); font-weight: 600; }
.chart .line { fill: none; stroke: var(--accent); stroke-width: 2; stroke-linejoin: round; stroke-linecap: round; }
.chart .pt { fill: var(--bg); stroke: var(--accent); stroke-width: 1.6; }
.chart .pt.end { fill: var(--accent); }
.chart .hit { fill: transparent; cursor: pointer; }
.tip { font-size: 13px; color: var(--muted); min-height: 20px; }
.tip b { color: var(--ink); }
.table-wrap { overflow-x: auto; margin-inline: -4px; }
table.t { border-collapse: collapse; width: 100%; font-size: 13px; font-variant-numeric: tabular-nums; }
table.t th, table.t td { padding: 9px 6px; border-bottom: 1px solid var(--line); text-align: left; white-space: nowrap; }
table.t th { font-size: 10px; letter-spacing: .12em; text-transform: uppercase; color: var(--muted); font-weight: 600; }
table.t td:first-child { white-space: normal; min-width: 130px; color: var(--ink-2); }
table.t .up { color: var(--ok); font-weight: 600; }
table.t tr:last-child td { border-bottom: 0; }

/* ---------- Coach ---------- */
.client { display: grid; grid-template-columns: 40px 1fr auto; gap: 12px; align-items: center; width: 100%; text-align: left; background: var(--surface); border: 1px solid var(--line); border-radius: var(--radius); padding: 12px 14px; cursor: pointer; transition: border-color .15s ease, background .15s ease; }
.client:hover { border-color: var(--line-strong); background: var(--surface-2); }
.avatar { width: 40px; height: 40px; border-radius: 50%; display: grid; place-items: center; font-weight: 600; font-size: 14px; background: var(--surface-2); border: 1px solid var(--line-strong); color: var(--ink-2); }
.client b { display: block; font-size: 15px; font-weight: 600; }
.client span.s { font-size: 13px; color: var(--muted); }
.activity { display: flex; flex-direction: column; }
.activity .it { display: grid; grid-template-columns: 34px 1fr auto; gap: 12px; align-items: center; padding: 10px 0; border-bottom: 1px solid var(--line); }
.activity .it:last-child { border-bottom: 0; }
.activity .ic { width: 34px; height: 34px; border-radius: 50%; display: grid; place-items: center; background: var(--surface-2); border: 1px solid var(--line); }
.activity .ic svg { width: 16px; height: 16px; stroke: var(--ink-2); fill: none; stroke-width: 1.8; }
.activity .ic.alert { background: var(--accent-soft); border-color: transparent; }
.activity .ic.alert svg { stroke: var(--accent); }
.activity b { display: block; font-size: 14px; font-weight: 600; }
.activity span { font-size: 12px; color: var(--muted); }
.activity time { font-size: 12px; color: var(--muted); white-space: nowrap; }
.banner { display: flex; align-items: center; gap: 12px; border: 1px solid var(--line); background: var(--surface); border-radius: 12px; padding: 10px 12px; font-size: 13px; color: var(--muted); margin-top: 14px; }
.banner b { color: var(--ink); }
.banner .btn { margin-left: auto; }

/* ---------- Hoja de instrucciones ---------- */
.sheet-bg { position: fixed; inset: 0; background: rgba(0,0,0,.6); z-index: 40; display: flex; justify-content: center; align-items: flex-end; }
.sheet { background: var(--surface); border: 1px solid var(--line-strong); border-radius: 20px 20px 0 0; width: min(640px, 100%); max-height: 86vh; overflow-y: auto; padding: 20px 18px calc(24px + env(safe-area-inset-bottom, 0px)); display: flex; flex-direction: column; gap: 14px; }
.sheet .grab { width: 40px; height: 4px; border-radius: 4px; background: var(--line-strong); align-self: center; }
.sheet details { border-top: 1px solid var(--line); padding-top: 12px; }
.sheet details summary { font-weight: 600; font-size: 15px; }
.sheet .qa { margin-top: 10px; display: flex; flex-direction: column; gap: 10px; font-size: 14px; color: var(--ink-2); }
.sheet .qa b { color: var(--ink); display: block; margin-bottom: 2px; }
.sheet .qa p { margin: 0; white-space: pre-line; }

/* ---------- Barra de navegación ---------- */
.tabbar { position: fixed; left: 0; right: 0; bottom: 0; z-index: 25; background: var(--barra); backdrop-filter: blur(14px); -webkit-backdrop-filter: blur(14px); border-top: 1px solid var(--line); padding-bottom: env(safe-area-inset-bottom, 0px); }
.tabbar nav { max-width: 640px; margin: 0 auto; display: grid; grid-auto-flow: column; grid-auto-columns: 1fr; height: var(--tabbar-h); }
.tabbar button { border: 0; background: none; cursor: pointer; display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 4px; font-size: 11px; font-weight: 500; color: var(--muted); }
.tabbar button svg { width: 21px; height: 21px; stroke: currentColor; fill: none; stroke-width: 1.7; }
.tabbar button[aria-current="page"] { color: var(--ink); }
.tabbar button[aria-current="page"] svg { stroke: var(--accent); }
.side-brand { display: none; }

/* ---------- Login ---------- */
.login { min-height: 92vh; display: flex; flex-direction: column; justify-content: center; gap: 28px; max-width: 420px; margin: 0 auto; }
.login .wordmark { font-size: 22px; }
.login .tag { text-align: center; color: var(--muted); font-size: 12px; letter-spacing: .3em; text-transform: uppercase; margin-top: 8px; }
.msg { font-size: 13px; color: var(--muted); min-height: 18px; }

.empty { text-align: center; padding: 32px 16px; color: var(--muted); }
.toast { position: fixed; left: 50%; transform: translateX(-50%); top: calc(env(safe-area-inset-top, 0px) + 70px); background: var(--surface-2); border: 1px solid var(--line-strong); color: var(--ink); padding: 9px 16px; border-radius: 999px; font-size: 13px; z-index: 50; }
.demo-bar { display: flex; gap: 8px; align-items: center; justify-content: center; font-size: 12px; color: var(--muted); padding: 8px 0 0; }
.demo-bar select { background: var(--surface); border: 1px solid var(--line); border-radius: 8px; padding: 4px 8px; font-size: 12px; }

/* ---------- Escritorio ---------- */
@media (min-width: 1024px) {
  .shell { display: grid; grid-template-columns: 240px 1fr; }
  .tabbar { position: sticky; top: 0; height: 100vh; border-top: 0; border-right: 1px solid var(--line); background: var(--surface); padding: 24px 14px; }
  .tabbar nav { height: auto; grid-auto-flow: row; grid-auto-columns: auto; gap: 4px; }
  .tabbar button { flex-direction: row; justify-content: flex-start; gap: 12px; padding: 11px 12px; border-radius: 10px; font-size: 14px; }
  .tabbar button[aria-current="page"] { background: var(--accent-soft); }
  .side-brand { display: block; font-family: var(--font-display); letter-spacing: .3em; font-size: 15px; text-transform: uppercase; padding: 4px 12px 28px; }
  .side-brand span { color: var(--accent); }
  .side-brand small { display: block; font-family: var(--font-body); letter-spacing: .2em; font-size: 10px; color: var(--muted); margin-top: 6px; }
  .main { max-width: 760px; padding-bottom: 48px; }
  .main.has-timer { padding-bottom: 118px; }
  .top { grid-template-columns: 44px 1fr 44px; }
  .top .wordmark { visibility: hidden; }
  .timer { bottom: 20px; left: calc(50% + 120px); }
  .page { padding-top: 32px; }
  h1 { font-size: 36px; }
}
@media (max-width: 380px) {
  h1 { font-size: 28px; }
  .metrics { grid-template-columns: 1fr 1fr; }
  .stepper input { font-size: 22px; }

}
@media (prefers-reduced-motion: reduce) {
  * { transition: none !important; }
}

/* ---------- Hoy ---------- */
.weigh { border-color: var(--line-strong); background: linear-gradient(180deg, var(--accent-soft), var(--surface) 60%); }
.weigh.done { background: var(--surface); border-color: var(--line); }
.weigh-in { display: flex; align-items: baseline; gap: 10px; border-bottom: 2px solid var(--line-strong); padding-bottom: 6px; }
.weigh-in:focus-within { border-color: var(--accent); }
.weigh-in input { flex: 1; min-width: 0; border: 0; background: transparent; outline: none; font-size: 56px; font-weight: 600; letter-spacing: -.03em; padding: 0; }
.weigh-in input::placeholder { color: var(--muted); opacity: .65; }
.weigh-in span { font-size: 18px; color: var(--muted); }
.ic-inline { width: 20px; height: 20px; stroke: var(--accent); fill: none; stroke-width: 1.7; }
.cardio { display: flex; flex-direction: column; gap: 8px; }
.client .avatar svg { width: 18px; height: 18px; stroke: var(--accent); fill: none; stroke-width: 1.7; }

/* ---------- Chat ---------- */
.chat { display: flex; flex-direction: column; gap: 8px; padding-bottom: 8px; }
.day-sep { align-self: center; font-size: 11px; letter-spacing: .12em; text-transform: uppercase; color: var(--muted); padding: 8px 0 2px; }
.msg { max-width: 82%; padding: 10px 12px 6px; border-radius: 16px; display: flex; flex-direction: column; gap: 2px; }
.msg p { margin: 0; font-size: 15px; white-space: pre-line; overflow-wrap: anywhere; }
.msg time { align-self: flex-end; font-size: 10px; color: var(--muted); }
.msg.them { align-self: flex-start; background: var(--surface-2); border: 1px solid var(--line); border-bottom-left-radius: 4px; }
.msg.me { align-self: flex-end; background: var(--msg-mio); border: 1px solid var(--accent-line); border-bottom-right-radius: 4px; }
.msg.adj { border-color: var(--accent-line); }
.msg .tag { font-size: 10px; letter-spacing: .14em; text-transform: uppercase; color: var(--accent); font-weight: 600; }
.composer { position: sticky; bottom: calc(var(--tabbar-h) + 8px + env(safe-area-inset-bottom, 0px)); display: flex; gap: 8px; align-items: flex-end; background: var(--surface); border: 1px solid var(--line-strong); border-radius: 16px; padding: 8px; }
.composer textarea { flex: 1; min-width: 0; border: 0; background: transparent; resize: none; outline: none; font-size: 15px; padding: 8px; max-height: 140px; }
.composer .btn { padding: 10px 14px; }
@media (min-width: 1024px) { .composer { bottom: 16px; } }
.prop-wrap { border-color: rgba(231,166,74,.4); }
.prop { display: flex; flex-direction: column; gap: 10px; padding-top: 12px; border-top: 1px solid var(--line); }
.prop:first-of-type { border-top: 0; padding-top: 0; }

/* ---------- Objetivo ---------- */
.objective h2 { font-size: 22px; }
.goal-row { display: grid; grid-template-columns: auto 1fr auto; gap: 10px; align-items: center; font-size: 13px; color: var(--muted); }
.goal-row .track { margin: 0; height: 6px; }
.track.goal i { background: var(--ok); }

/* ---------- Cierre de semana ---------- */
.weekclose { border-color: rgba(60,196,139,.35); }
.scale { display: grid; grid-auto-flow: column; grid-auto-columns: 1fr; gap: 4px; }
.scale button { border: 1px solid var(--line); background: var(--surface-2); color: var(--ink-2); border-radius: 8px; padding: 9px 0; font-size: 13px; font-weight: 600; cursor: pointer; font-variant-numeric: tabular-nums; }
.scale button.on { background: var(--accent); border-color: var(--accent); color: var(--accent-ink); }
.dots { display: inline-flex; gap: 2px; margin: 0 6px 0 2px; vertical-align: middle; }
.dots i { width: 6px; height: 6px; border-radius: 50%; background: var(--line-strong); }
.dots i.on { background: var(--ink-2); }

/* ---------- Dieta desplegable ---------- */
details.meal { padding: 0; }
details.meal > summary { list-style: none; cursor: pointer; display: grid; grid-template-columns: 30px 1fr 20px; gap: 12px; align-items: center; padding: 14px 16px; }
details.meal > summary::-webkit-details-marker { display: none; }
details.meal > summary h2 { font-size: 20px; }
details.meal > summary .sub { font-size: 12px; }
details.meal .chev { color: var(--muted); font-size: 20px; transition: transform .2s ease; }
details.meal[open] .chev { transform: rotate(90deg); }
details.meal.next { border-color: var(--accent-line); }
details.meal.next > summary .sub { color: var(--accent); font-weight: 600; }
details.meal.done > summary h2 { color: var(--muted); }
details.meal.done .badge { background: var(--ok-soft); border-color: transparent; color: var(--ok); }
details.meal.next .badge { background: var(--accent); border-color: var(--accent); color: var(--accent-ink); }
.meal-body { padding: 0 16px 16px; display: flex; flex-direction: column; gap: 12px; border-top: 1px solid var(--line); }
.meal-body .formula { padding-top: 12px; }
.meal-progress { display: flex; align-items: center; gap: 10px; }
.meal-progress .track { flex: 1; margin: 0; }

/* ---------- Vídeo ---------- */
.video .thumb { background: linear-gradient(135deg, #1C1C21, #0E0E11); overflow: hidden; }
.video .thumb img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; }
.rest-line { gap: 12px; flex-wrap: wrap; }
.private { border-color: rgba(231,166,74,.35); }

/* ---------- Accesos rápidos en la ficha ---------- */
.quick { display: grid; grid-template-columns: repeat(4, 1fr); gap: 8px; }
.qbtn { display: flex; flex-direction: column; align-items: center; gap: 6px; padding: 12px 4px; border: 1px solid var(--line); background: var(--surface-2); border-radius: 12px; cursor: pointer; font-size: 12px; color: var(--ink-2); font-weight: 500; }
.qbtn:hover { border-color: var(--line-strong); color: var(--ink); }
.qbtn svg { width: 20px; height: 20px; stroke: var(--accent); fill: none; stroke-width: 1.7; }
.activity .it .ic svg { width: 16px; height: 16px; }

/* ---------- Registro en un toque ---------- */
.chips { display: flex; gap: 6px; flex-wrap: wrap; }
.chips.quick { display: grid; grid-template-columns: repeat(3, 1fr); gap: 6px; }
.chips.quick .chip { display: flex; flex-direction: column; align-items: center; gap: 1px; padding: 8px 4px; border-radius: 12px; min-width: 0; }
.chips.quick .chip b { font-size: 15px; font-weight: 600; color: var(--ink); white-space: nowrap; }
.chips.quick .chip span { font-size: 10px; letter-spacing: .06em; text-transform: uppercase; color: var(--muted); font-weight: 600; }
.chips.quick .chip.main { background: var(--accent); border-color: var(--accent); }
.chips.quick .chip.main b, .chips.quick .chip.main span { color: var(--accent-ink); }
.chips.quick .chip.main span { opacity: .85; }
.or { text-align: center; font-size: 11px; letter-spacing: .08em; text-transform: uppercase; color: var(--muted); margin-top: -2px; }
.chips.wide { display: grid; grid-template-columns: repeat(4, 1fr); }
.chip { border: 1px solid var(--line-strong); background: var(--surface-2); color: var(--ink-2); border-radius: 999px; padding: 9px 12px; font-size: 13px; font-weight: 600; cursor: pointer; font-variant-numeric: tabular-nums; white-space: nowrap; }
.chip:active { transform: scale(.97); }
.chip.main { border-color: var(--accent); color: var(--accent); background: var(--accent-soft); }
.chip:hover { border-color: var(--ink-2); color: var(--ink); }

/* ---------- Navegación por ejercicio ---------- */
.exnav { display: flex; gap: 6px; align-items: center; justify-content: center; flex-wrap: wrap; padding: 2px 0; }
.dot-nav { min-width: 30px; height: 30px; border-radius: 9px; border: 1px solid var(--line-strong); background: transparent; cursor: pointer; padding: 0 6px; display: grid; place-items: center; color: var(--muted); font-size: 13px; font-weight: 700; font-variant-numeric: tabular-nums; }

.dot-nav.ok { color: var(--ok); border-color: color-mix(in srgb, var(--ok) 50%, var(--line)); }
.dot-nav.on { border-color: var(--accent); background: var(--accent); color: var(--accent-ink); }
.dot-nav.on::before { background: var(--accent); width: 8px; height: 8px; }
.dot-nav.flag::before { content: none; }
.dot-nav.flag svg { width: 12px; height: 12px; stroke: currentColor; fill: none; stroke-width: 2; }
.dot-nav.flag.on { color: var(--accent); }
.exbar { position: sticky; bottom: calc(var(--tabbar-h) + 10px + env(safe-area-inset-bottom, 0px)); display: grid; grid-template-columns: auto 1fr; gap: 8px; z-index: 15; }
.exbar .btn { width: 100%; box-shadow: 0 10px 24px -12px rgba(0,0,0,.9); }
.exbar .btn.ghost { background: var(--surface); }
@media (min-width: 1024px) { .exbar { bottom: 16px; } }

/* ---------- Final de sesión ---------- */
.finish-top { display: flex; align-items: center; gap: 12px; }
.finish-top svg { width: 28px; height: 28px; stroke: var(--muted); fill: none; stroke-width: 1.6; flex: none; }
.finish.ok { border-color: rgba(60,196,139,.4); background: linear-gradient(180deg, rgba(60,196,139,.07), var(--surface) 60%); }
.finish.ok .finish-top svg { stroke: var(--ok); }

/* ---------- Sin conexión / instalar ---------- */
.syncbar { display: flex; align-items: center; gap: 10px; background: var(--warn-soft); border: 1px solid rgba(231,166,74,.35); color: var(--ink-2); border-radius: 12px; padding: 10px 12px; font-size: 13px; margin-top: 12px; }
.syncbar svg { width: 18px; height: 18px; stroke: var(--warn); fill: none; stroke-width: 1.8; flex: none; }
.install { border-style: dashed; }

.scale.ten { grid-auto-columns: 1fr; gap: 3px; }
.scale.ten button { padding: 10px 0; font-size: 12px; }

/* ---------- Arranque ---------- */
.splash { min-height: 90vh; display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 10px; }
.splash .wordmark { font-size: 20px; }
.spin { display: inline-block; width: 14px; height: 14px; border-radius: 50%; border: 2px solid var(--line-strong); border-top-color: var(--accent); animation: sp .7s linear infinite; }
.spin.big { width: 22px; height: 22px; margin-top: 18px; }
@keyframes sp { to { transform: rotate(360deg) } }
@media (prefers-reduced-motion: reduce) { .spin { animation-duration: 2s } }

/* ---------- Esqueleto de carga ---------- */
.sk { background: linear-gradient(90deg, var(--surface-2) 25%, var(--brillo) 37%, var(--surface-2) 63%); background-size: 400% 100%; border-radius: 6px; animation: shimmer 1.4s ease infinite; }
.card .sk + .sk { margin-top: 10px; }
.session-head .sk + .sk { margin-top: 10px; }
@keyframes shimmer { 0% { background-position: 100% 0 } 100% { background-position: 0 0 } }
@media (prefers-reduced-motion: reduce) { .sk { animation: none } }

/* ---------- Estado de guardado ---------- */
.savechip { position: fixed; z-index: 60; left: 50%; transform: translateX(-50%); top: calc(env(safe-area-inset-top, 0px) + 12px); display: inline-flex; align-items: center; gap: 8px; padding: 8px 14px; border-radius: 999px; font-size: 13px; font-weight: 600; background: var(--surface-2); border: 1px solid var(--line-strong); color: var(--ink-2); box-shadow: 0 10px 24px -14px #000; transition: opacity .25s ease, transform .25s ease; }
.savechip svg { width: 15px; height: 15px; stroke: currentColor; fill: none; stroke-width: 2.4; }
.savechip.ok { color: var(--ok); border-color: rgba(60,196,139,.4); }
.savechip.err { color: var(--warn); border-color: rgba(231,166,74,.45); }
.savechip.out { opacity: 0; transform: translateX(-50%) translateY(-6px); pointer-events: none; }

/* ---------- Error ---------- */
.errbox { border-color: rgba(231,166,74,.4); }
.errhead { display: flex; align-items: center; gap: 12px; }
.errhead svg { width: 26px; height: 26px; stroke: var(--warn); fill: none; stroke-width: 1.7; flex: none; }

/* ---------- Estados vacíos ---------- */
.empty-state { align-items: center; text-align: center; padding: 30px 20px; }
.empty-art { width: 56px; height: 56px; border-radius: 50%; display: grid; place-items: center; background: var(--surface-2); border: 1px solid var(--line); }
.empty-art svg { width: 24px; height: 24px; stroke: var(--muted); fill: none; stroke-width: 1.6; }
.empty-state h2 { font-size: 20px; }
.empty-state .sub { max-width: 34ch; }

/* ---------- Login ---------- */
.login-brand { text-align: center; }
.pw { position: relative; }
.pw input { padding-right: 46px; }
.pw-eye { position: absolute; right: 6px; top: 50%; transform: translateY(-50%); width: 34px; height: 34px; border: 0; background: none; cursor: pointer; display: grid; place-items: center; color: var(--muted); }
.pw-eye svg { width: 18px; height: 18px; stroke: currentColor; fill: none; stroke-width: 1.7; }
.msg.err { color: var(--warn); }
.login .link { align-self: center; }

/* ---------- Onboarding ---------- */
.onb { min-height: 88vh; display: flex; flex-direction: column; align-items: center; justify-content: center; text-align: center; gap: 14px; }
.onb h1 { font-size: 30px; }
.onb .sub { max-width: 32ch; }
.onb-dots { display: flex; gap: 6px; }
.onb-dots i { width: 7px; height: 7px; border-radius: 50%; background: var(--line-strong); }
.onb-dots i.on { background: var(--accent); width: 20px; border-radius: 4px; }
.onb-art { width: 92px; height: 92px; border-radius: 50%; display: grid; place-items: center; background: var(--accent-soft); border: 1px solid rgba(227,38,54,.3); margin: 8px 0; }
.onb-art svg { width: 38px; height: 38px; stroke: var(--accent); fill: none; stroke-width: 1.5; }
.onb-bar { display: grid; grid-template-columns: 1fr 1fr; gap: 10px; width: 100%; max-width: 340px; margin-top: 18px; }
.onb-bar .btn.ghost:empty { visibility: hidden; }

/* ---------- Fotos ---------- */
.ph-row { display: grid; grid-template-columns: repeat(3, 1fr); gap: 8px; }
.ph { margin: 0; display: flex; flex-direction: column; gap: 6px; cursor: pointer; min-width: 0; }
.ph img { width: 100%; aspect-ratio: 3/4; object-fit: cover; border-radius: 10px; background: var(--surface-2); border: 1px solid var(--line); display: block; }
.ph figcaption { font-size: 11px; color: var(--muted); text-align: center; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.ph figcaption b { color: var(--ink); display: block; }
.cmp { display: grid; grid-template-columns: 1fr 1fr; gap: 10px; }
.cmp .ph img { aspect-ratio: 3/4; }
.dropzone { display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 6px; min-height: 200px; border: 1px dashed var(--line-strong); border-radius: 14px; background: var(--surface-2); cursor: pointer; padding: 16px; text-align: center; overflow: hidden; }
.dropzone.has { padding: 0; border-style: solid; min-height: 0; }
.dropzone img { width: 100%; max-height: 420px; object-fit: contain; display: block; border-radius: 13px; }
.dz-art { width: 56px; height: 56px; border-radius: 50%; display: grid; place-items: center; background: var(--surface); border: 1px solid var(--line); }
.dz-art svg { width: 24px; height: 24px; stroke: var(--accent); fill: none; stroke-width: 1.6; }
.dropzone b { font-size: 15px; }
.chips.wide3 { display: grid; grid-template-columns: repeat(3, 1fr); gap: 6px; }
.chips.wide3 .chip { justify-content: center; text-align: center; padding: 10px 6px; }

/* ---------- Gráficas ---------- */
.chart .raw { fill: var(--muted); opacity: .55; }
.chart .val { fill: var(--ink); font-size: 11px; font-weight: 600; font-family: var(--font-body); }
.chart .bar { fill: var(--line-strong); }
.chart .bar.now { fill: var(--accent); }
.legend { display: flex; gap: 14px; flex-wrap: wrap; font-size: 12px; color: var(--muted); }
.legend span { display: inline-flex; align-items: center; gap: 6px; }
.lg { width: 14px; height: 2px; background: var(--accent); border-radius: 2px; }
.lg.dot { width: 6px; height: 6px; border-radius: 50%; background: var(--muted); }
.lg.goal { background: repeating-linear-gradient(90deg, var(--ok) 0 4px, transparent 4px 8px); height: 2px; }
.meter { display: flex; flex-direction: column; gap: 5px; }
.meter + .meter { padding-top: 12px; border-top: 1px solid var(--line); }
.meter-top { display: flex; align-items: baseline; justify-content: space-between; font-size: 14px; }
.meter-top b { font-size: 16px; }
.meter .track { margin: 0; height: 6px; }
.meter .sub { font-size: 12px; }

/* ---------- Dieta: qué comer ahora ---------- */
.plate { background: var(--accent-soft); border: 1px solid var(--accent-line); border-radius: 12px; padding: 12px 14px; }
.plate-h { font-size: 11px; letter-spacing: .14em; text-transform: uppercase; color: var(--accent); font-weight: 600; margin-bottom: 6px; }
.plate-l { margin: 0; padding: 0; list-style: none; display: flex; flex-direction: column; gap: 3px; }
.plate-l li { font-size: 15px; color: var(--ink); padding-left: 14px; position: relative; }
.plate-l li::before { content: ""; position: absolute; left: 0; top: .62em; width: 5px; height: 5px; border-radius: 50%; background: var(--accent); }
.plate-l b { font-variant-numeric: tabular-nums; }
.opts.pick li { grid-template-columns: 74px 1fr 20px; cursor: pointer; border-radius: 8px; padding: 8px 6px; margin-inline: -6px; border-bottom: 1px dashed var(--line); }
.opts.pick li.free { grid-template-columns: 1fr 20px; }
.opts.pick li.on { background: var(--surface-2); border-bottom-color: transparent; }
.opts.pick li.on .q, .opts.pick li.on span { color: var(--ink); }
.opts.pick li:hover { background: var(--surface-2); }
.tick-o { color: var(--ok); font-weight: 700; text-align: right; }
.exname { background: none; border: 0; padding: 0; text-align: left; cursor: pointer; display: flex; flex-direction: column; gap: 2px; width: 100%; }
.exname h2 { color: var(--ink); }


/* ---------- logo de marca ---------- */
.logo{display:inline-flex;align-items:center;justify-content:center;width:var(--logo,48px);height:var(--logo,48px);color:var(--brand,#FFDA00);flex:0 0 auto}
.logo svg{width:100%;height:100%;display:block}
.logo.tiny{--logo:34px}
.splash .logo{margin-bottom:14px}
.login-brand .logo{margin:0 auto 10px}
@media (min-width: 900px) {
  .side-brand { display: flex; flex-direction: column; align-items: flex-start; gap: 6px; }
  .side-brand small { color: var(--muted); font-size: 11px; letter-spacing: .14em; text-transform: uppercase; }
}

/* Modo claro. Se activa con [data-tema="claro"] o si el movil lo pide y no hay eleccion. */
@media (prefers-color-scheme: light) {
  :root:not([data-tema="oscuro"]) {
    --bg: #F2F2F7; --surface: #FFFFFF; --surface-2: #F2F2F7; --line: #E5E5EA; --line-strong: #D1D1D6;
    --ink: #0B0B0F; --ink-2: #3A3A3F; --muted: #6E6E73;
    --brand: #E5173F; --accent: #D9123A; --accent-ink: #FFFFFF; --accent-soft: rgba(217,18,58,.10);
    --accent-line: rgba(217,18,58,.35);
    --ok: #1F9D5B; --ok-soft: rgba(31,157,91,.12); --warn: #B5700E; --warn-soft: rgba(181,112,14,.12);
    --barra: rgba(242,242,247,.92); --barra-top: rgba(242,242,247,.86);
    --msg-mio: #FDE7EC; --brillo: #E9E9EE;
    --shadow: 0 1px 2px rgba(0,0,0,.04), 0 8px 24px -16px rgba(0,0,0,.25);
    color-scheme: light;
  }
}
:root[data-tema="claro"] {
    --bg: #F2F2F7; --surface: #FFFFFF; --surface-2: #F2F2F7; --line: #E5E5EA; --line-strong: #D1D1D6;
  --ink: #0B0B0F; --ink-2: #3A3A3F; --muted: #6E6E73;
  --brand: #E5173F; --accent: #D9123A; --accent-ink: #FFFFFF; --accent-soft: rgba(217,18,58,.10);
  --accent-line: rgba(217,18,58,.35);
  --ok: #1F9D5B; --ok-soft: rgba(31,157,91,.12); --warn: #B5700E; --warn-soft: rgba(181,112,14,.12);
  --barra: rgba(242,242,247,.92); --barra-top: rgba(242,242,247,.86);
  --msg-mio: #FDE7EC; --brillo: #E9E9EE;
  --shadow: 0 1px 2px rgba(0,0,0,.04), 0 8px 24px -16px rgba(0,0,0,.25);
  color-scheme: light;
}

/* ---------- panel del entrenador ---------- */
.coach-seg { margin: 0 0 18px; }
.coach-seg button b { font-weight: 600; font-size: 14px; }

.bloque { margin-bottom: 26px; }
.bloque-h { display: flex; align-items: center; gap: 10px; margin: 0 0 10px; }
.bloque-h b { margin-left: auto; font-variant-numeric: tabular-nums; color: var(--muted); font-size: 13px; }
.et { display: inline-flex; align-items: center; gap: 7px; font-size: 11.5px; font-weight: 700;
      letter-spacing: .09em; text-transform: uppercase; color: var(--muted); }
.et svg { width: 15px; height: 15px; fill: none; stroke: currentColor; stroke-width: 1.9; stroke-linecap: round; stroke-linejoin: round; }
.et.manual { color: var(--ink-2); }
.et.auto { color: var(--ok); }

.av { display: flex; align-items: flex-start; gap: 12px; background: var(--surface);
      border: 1px solid var(--line); border-left: 3px solid var(--line-strong);
      border-radius: var(--radius-sm); padding: 12px 14px; margin-bottom: 7px; }
.av.urge { border-left-color: var(--accent); }
.av.medio { border-left-color: var(--warn); }
.av.ok { border-left-color: var(--ok); }
.av-m { flex: 0 0 auto; display: grid; place-items: center; width: 26px; height: 26px; border-radius: 8px;
        background: var(--surface-2); color: var(--muted); }
.av-m svg { width: 15px; height: 15px; fill: none; stroke: currentColor; stroke-width: 1.9; stroke-linecap: round; stroke-linejoin: round; }
.av.urge .av-m { background: var(--accent-soft); color: var(--accent); }
.av.medio .av-m { background: var(--warn-soft); color: var(--warn); }
.av.ok .av-m { background: var(--ok-soft); color: var(--ok); }
.av-t { flex: 1 1 auto; min-width: 0; }
.av-t b { display: block; font-size: 14.5px; font-weight: 600; }
.av-t span { display: block; font-size: 13px; color: var(--muted); margin-top: 2px; }
.av .btn { flex: 0 0 auto; align-self: center; }

.buscador { margin-bottom: 12px; }
.buscador input { width: 100%; background: var(--surface); border: 1px solid var(--line);
                  border-radius: var(--radius-sm); padding: 11px 14px; color: var(--ink); }
.buscador input::placeholder { color: var(--muted); }

.crm-row { display: flex; flex-direction: column; gap: 9px; width: 100%; text-align: left;
           background: var(--surface); border: 1px solid var(--line); border-radius: var(--radius-sm);
           padding: 12px 13px; margin-bottom: 7px; cursor: pointer; }
.crm-row:hover { border-color: var(--line-strong); }
.crm-cab { display: flex; align-items: center; gap: 11px; }
.crm-main { flex: 1 1 auto; min-width: 0; }
.crm-main > b { display: block; font-size: 15px; font-weight: 600; overflow: hidden;
                text-overflow: ellipsis; white-space: nowrap; }
.crm-sub { display: block; font-size: 12.5px; color: var(--muted); margin-top: 1px; }
.crm-datos { display: grid; grid-template-columns: 1fr 1fr; gap: 8px; }
.dato { display: block; background: var(--surface-2); border-radius: 8px; padding: 7px 9px; min-width: 0; }
.dato i { display: block; font-style: normal; font-size: 10px; letter-spacing: .09em;
          text-transform: uppercase; color: var(--muted); }
.dato b { display: block; font-size: 13.5px; font-weight: 600; font-variant-numeric: tabular-nums; margin-top: 1px; }
.dato u { display: block; text-decoration: none; font-size: 11.5px; color: var(--muted); }
.dato.mal b, .dato.mal u { color: var(--accent); }
.chips { display: flex; flex-wrap: wrap; gap: 5px; }
.chip { font-size: 10.5px; font-weight: 600; letter-spacing: .03em; text-transform: uppercase;
        padding: 3px 7px; border-radius: 999px; background: var(--surface-2); color: var(--muted); }
.chip.urge { background: var(--accent-soft); color: var(--accent); }
.chip.medio { background: var(--warn-soft); color: var(--warn); }
.chip.auto { background: var(--ok-soft); color: var(--ok); }
.chip.manual { background: var(--accent-soft); color: var(--accent); }
.trend { font-variant-numeric: tabular-nums; }
.trend.baja { color: var(--ok); }
.trend.sube { color: var(--warn); }

.ent-row { display: flex; align-items: center; gap: 12px; background: var(--surface);
           border: 1px solid var(--line); border-radius: var(--radius-sm); padding: 11px 13px; margin-bottom: 7px; }
.ent-row.urge { border-color: color-mix(in srgb, var(--accent) 45%, var(--line)); }
.ent-dia { flex: 0 0 48px; text-align: center; }
.ent-dia b { display: block; font-family: var(--font-display); font-weight: 700; font-size: 22px; line-height: 1;
             font-variant-numeric: tabular-nums; }
.ent-dia span { display: block; font-size: 10.5px; color: var(--muted); text-transform: uppercase; letter-spacing: .06em; }
.ent-main { flex: 1 1 auto; min-width: 0; }
.ent-main b { display: block; font-size: 14.5px; font-weight: 600; }
.ent-main span { display: block; font-size: 12.5px; color: var(--muted); }
.metric .v.mal { color: var(--accent); }

@media (max-width: 420px) {
  .av { flex-wrap: wrap; }
  .av .btn { margin-left: auto; }
}

.head-row { display: flex; align-items: flex-start; justify-content: space-between; gap: 12px; }
.head-row h1 { flex: 1 1 auto; min-width: 0; }
.btn.tema { flex: 0 0 auto; width: 38px; height: 38px; padding: 0; display: grid; place-items: center; margin-top: 6px; }
.btn.tema svg { width: 17px; height: 17px; fill: none; stroke: currentColor; stroke-width: 1.8; stroke-linecap: round; stroke-linejoin: round; }

.o-bien { display: flex; align-items: center; gap: 10px; margin: 14px 0 10px; color: var(--muted); font-size: 12px; }
.o-bien::before, .o-bien::after { content: ""; flex: 1; height: 1px; background: var(--line); }
.btn.google { display: flex; align-items: center; justify-content: center; gap: 10px;
              background: var(--surface); color: var(--ink); border: 1px solid var(--line-strong); }
.btn.google:hover { border-color: var(--muted); }
.btn.google svg { width: 18px; height: 18px; flex: 0 0 auto; }

/* ---- Ajuste de dieta a mano (ficha del coach) ---- */
.card.tarea { border-left: 3px solid var(--accent); }
.pill.tu { color: var(--accent); border-color: transparent; background: var(--accent-soft); }
.aj-fila { display: grid; gap: 14px; grid-template-columns: 1fr; margin: 14px 0 12px; }
@media (min-width: 560px) { .aj-fila { grid-template-columns: 180px 1fr; } }
.aj-campo { display: flex; flex-direction: column; gap: 6px; }
.aj-campo > span { font-size: 12px; font-weight: 600; letter-spacing: .04em; text-transform: uppercase; color: var(--muted); }
.aj-campo small { color: var(--muted); font-size: 12px; line-height: 1.35; }
.aj-campo.full { margin-top: 12px; }
.aj-campo select, .aj-campo textarea { width: 100%; background: var(--surface-2); color: var(--ink);
  border: 1px solid var(--line-strong); border-radius: 10px; padding: 11px 12px; font: inherit; }
.aj-campo textarea { line-height: 1.5; resize: vertical; }
.aj-campo select:focus-visible, .aj-campo textarea:focus-visible, .aj-step input:focus-visible { outline: 2px solid var(--accent); outline-offset: 1px; }
.aj-step input { text-align: center; }
.aj-pv { margin-top: 16px; padding-top: 14px; border-top: 1px solid var(--line); }
.aj-nums { display: flex; align-items: center; gap: 12px; flex-wrap: wrap; font-size: 14px; color: var(--muted); }
.aj-nums b { color: var(--ink); font-size: 20px; font-variant-numeric: tabular-nums; }
.aj-nums .fl { color: var(--accent); font-size: 18px; }
.aj-det { margin: 10px 0 0; color: var(--ink); font-size: 14px; }
.aj-aviso { margin: 10px 0 0; color: var(--warn); font-size: 14px; }
.aj-btns { display: flex; gap: 10px; flex-wrap: wrap; margin-top: 14px; }
.aj-btns .btn { flex: 1 1 auto; }
.aj-btns .btn.ghost { flex: 0 0 auto; }

/* ---- Grafica de peso ---- */
.chips.rango { margin: 0 0 10px; gap: 6px; }
.chips.rango .chip { font-size: 12px; padding: 5px 11px; }
.chart .val { paint-order: stroke; stroke: var(--bg); stroke-width: 3px; stroke-linejoin: round; }
.pista { margin: -2px 0 12px; color: var(--muted); font-size: 13px; line-height: 1.4; }

/* ---- Marca: emblema + nombre debajo ---- */
.marca { display: flex; flex-direction: column; align-items: center; gap: 12px; text-align: center; }
.marca-txt b { display: block; font-family: var(--font-display); font-weight: 600; font-size: 24px;
                letter-spacing: .18em; text-transform: uppercase; line-height: 1; color: var(--ink); }
.marca-txt small { display: block; margin-top: 7px; font-size: 10px; letter-spacing: .34em;
                   text-transform: uppercase; color: var(--muted); }
.marca.chica { flex-direction: row; align-items: center; gap: 10px; text-align: left; }
.marca.chica .marca-txt b { font-size: 15px; letter-spacing: .14em; }
.marca.chica .marca-txt small { margin-top: 3px; font-size: 9px; letter-spacing: .22em; }
@media (max-width: 420px) { .marca-txt b { font-size: 22px; } }

/* ---- Registro de pesos ---- */
.pdatos { display: grid; grid-template-columns: repeat(2, 1fr); gap: 10px; margin: 14px 0 16px; }
@media (min-width: 560px) { .pdatos { grid-template-columns: repeat(4, 1fr); } }
.pdato { background: var(--surface-2); border: 1px solid var(--line); border-radius: 12px; padding: 10px 12px; }
.pdato .l { display: block; font-size: 10px; letter-spacing: .08em; text-transform: uppercase; color: var(--muted); }
.pdato b { display: block; margin: 3px 0 1px; font-size: 19px; font-variant-numeric: tabular-nums; }
.pdato .d { display: block; font-size: 11px; color: var(--muted); }
.pdato.main { border-color: var(--accent); background: var(--accent-soft); }
.pdato.main b { color: var(--accent); }
.pdato.baja b { color: var(--ok); }
.pdato.sube b { color: var(--warn); }
.preg-wrap { max-height: 420px; overflow: auto; border: 1px solid var(--line); border-radius: 12px; -webkit-overflow-scrolling: touch; }
.preg { width: 100%; border-collapse: collapse; font-size: 14px; }
.preg thead th { position: sticky; top: 0; z-index: 1; background: var(--surface-2); text-align: left;
  font-size: 10px; letter-spacing: .07em; text-transform: uppercase; color: var(--muted);
  font-weight: 600; padding: 9px 10px; border-bottom: 1px solid var(--line); white-space: nowrap; }
.preg td { padding: 9px 10px; border-bottom: 1px solid var(--line); vertical-align: top; }
.preg td:first-child { white-space: nowrap; }
.preg tbody tr:last-child td { border-bottom: 0; }
.preg td.num { font-variant-numeric: tabular-nums; white-space: nowrap; }
.preg td.nota { color: var(--muted); font-size: 13px; white-space: normal; min-width: 90px; }
.preg .baja { color: var(--ok); font-weight: 600; }
.preg .sube { color: var(--warn); font-weight: 600; }

/* ---- Ficha editable ---- */
.fgrid { display: grid; grid-template-columns: 1fr; gap: 13px; margin: 14px 0; }
@media (min-width: 560px) { .fgrid { grid-template-columns: 1fr 1fr; } .fcampo.ancho { grid-column: 1 / -1; } }
.fcampo { display: flex; flex-direction: column; gap: 5px; }
.fcampo > span { font-size: 11px; font-weight: 600; letter-spacing: .05em; text-transform: uppercase; color: var(--muted); }
.fcampo input, .fcampo select, .fcampo textarea { width: 100%; background: var(--surface-2); color: var(--ink);
  border: 1px solid var(--line-strong); border-radius: 10px; padding: 10px 12px; font: inherit; }
.fcampo textarea { resize: vertical; line-height: 1.45; }
.fcampo small { color: var(--muted); font-size: 11.5px; line-height: 1.35; }
.fcampo input:focus-visible, .fcampo select:focus-visible, .fcampo textarea:focus-visible { outline: 2px solid var(--accent); outline-offset: 1px; }
.fcheck { display: flex; align-items: center; gap: 10px; font-size: 14px; margin: 4px 0 14px; cursor: pointer; }
.fcheck input { width: 18px; height: 18px; accent-color: var(--accent); }

/* ---- Cuenta atrás y siguiente bloque ---- */
.cuenta { display: flex; align-items: center; gap: 16px; margin: 12px 0 4px; }
.cuenta-n { flex: 0 0 auto; width: 74px; text-align: center; background: var(--accent-soft);
  border: 1px solid var(--accent); border-radius: 14px; padding: 10px 6px; }
.cuenta-n b { display: block; font-size: 30px; line-height: 1; color: var(--accent); font-variant-numeric: tabular-nums; }
.cuenta-n span { display: block; font-size: 11px; color: var(--muted); margin-top: 2px; }
.cuenta-txt { min-width: 0; }
.cuenta-txt > b { display: block; font-size: 15px; }
.cuenta-txt > span { display: block; color: var(--muted); font-size: 13px; margin: 2px 0 8px; }
.sig { margin-top: 14px; padding: 13px 14px; border-radius: 12px; background: var(--surface-2); border: 1px solid var(--line); }
.sig p { margin: 0; }
.sig.ok { border-color: var(--ok); background: var(--ok-soft); }
.sig.urge { border-color: var(--warn); background: var(--warn-soft); }
.sig .aj-btns { margin-top: 12px; }

/* ---- Ver lo que ve el cliente ---- */
.card.espejo { border-left: 3px solid var(--accent); }
.card.espejo .quick { margin-top: 12px; }
.banner.espejo-bar { display: flex; align-items: center; gap: 10px; flex-wrap: wrap;
  background: var(--accent-soft); border-color: var(--accent); color: var(--ink); }
.banner.espejo-bar .ic-inline { width: 17px; height: 17px; color: var(--accent); }
.exlist { margin: 0; padding-left: 20px; display: grid; gap: 8px; }
.exlist li { line-height: 1.35; }
.exlist li b { display: block; font-weight: 600; }
.exlist li span { color: var(--muted); font-size: 13px; }
/* el stepper del ajuste va en una fila: - [numero] + */
.stepper.aj-step { flex-direction: row; align-items: center; gap: 8px; padding: 6px 8px; }
.stepper.aj-step .st { flex: none; width: 34px; height: 34px; border-radius: 50%; border: 1px solid var(--line-strong);
  background: transparent; color: var(--ink); cursor: pointer; font-size: 19px; line-height: 1; display: grid; place-items: center; }
.stepper.aj-step .st:active { background: var(--line); }
.stepper.aj-step input { text-align: center; font-size: 24px; -moz-appearance: textfield; }
.stepper.aj-step input::-webkit-outer-spin-button,
.stepper.aj-step input::-webkit-inner-spin-button { -webkit-appearance: none; margin: 0; }
/* contacto dentro de la fila del cliente */
.crm-contacto { display: flex; flex-wrap: wrap; gap: 6px 18px; font-size: 13px; color: var(--ink-2, var(--ink)); }
.crm-contacto .cto { display: inline-flex; align-items: center; gap: 7px; min-width: 0; }
.crm-contacto .ic-inline { width: 15px; height: 15px; color: var(--muted); flex: 0 0 auto; }
.crm-contacto u { text-decoration: none; color: var(--muted); font-style: italic; }
.crm-contacto u.falta { color: var(--warn); font-style: normal; }
.busca-n { margin: -4px 0 10px; }
.cab-cto a { color: var(--ink-2, var(--ink)); text-decoration: none; border-bottom: 1px solid var(--line-strong); }
.cab-cto a:hover { color: var(--accent); border-color: var(--accent); }
.cab-cto .falta { color: var(--warn); }
/* ---- Material del cliente ---- */
.mat { display: grid; grid-template-columns: 1fr; gap: 8px; margin: 14px 0; }
@media (min-width: 560px) { .mat { grid-template-columns: 1fr 1fr; } }
.mat-i { display: flex; align-items: flex-start; gap: 10px; padding: 9px 11px; border-radius: 10px;
  border: 1px solid var(--line); background: var(--surface-2); cursor: pointer; }
.mat-i input { width: 18px; height: 18px; margin-top: 1px; accent-color: var(--warn); flex: 0 0 auto; }
.mat-i b { display: block; font-size: 14px; font-weight: 600; }
.mat-i small { display: block; color: var(--muted); font-size: 12px; line-height: 1.3; }
.mat-i.no { border-color: var(--warn); background: var(--warn-soft); }
.mat-i.no b { text-decoration: line-through; text-decoration-color: var(--warn); }
.exlist em.cambio { display: block; font-style: normal; font-size: 12px; color: var(--accent); }

/* ---- Temporizador de descanso: barra del tema, legible, sin tapar ---- */
/* Temporizador: una pastilla pequeña con anillo de cuenta atrás. Se arrastra por la pantalla. */
.timer { position: fixed; z-index: 30; left: 50%; transform: translateX(-50%);
  bottom: calc(var(--tabbar-h) + 74px + env(safe-area-inset-bottom, 0px));
  display: flex; align-items: center; gap: 10px; padding: 6px 8px 6px 6px; max-width: calc(100% - 16px);
  background: var(--surface); color: var(--ink); border: 1px solid var(--line-strong); border-radius: 999px;
  box-shadow: 0 14px 34px -14px rgba(0,0,0,.7), var(--shadow); touch-action: none; user-select: none; cursor: grab; }
.timer.drag { cursor: grabbing; box-shadow: 0 22px 44px -16px rgba(0,0,0,.8); }
.t-ring { --p: 0; width: 48px; height: 48px; border-radius: 50%; flex: none; display: grid; place-items: center;
  background: conic-gradient(var(--accent) calc(var(--p) * 1%), var(--line) 0); position: relative; }
.t-ring::before { content: ""; position: absolute; inset: 4px; border-radius: 50%; background: var(--surface); }
.t-clock { position: relative; font-size: 13px; font-weight: 700; font-variant-numeric: tabular-nums; letter-spacing: -.02em; }
.timer.done .t-ring { background: var(--ok); animation: t-pop .5s ease; }
.timer.done .t-clock { color: var(--ok); }
.t-txt { display: flex; flex-direction: column; min-width: 0; line-height: 1.15; }
.t-lbl { font-size: 12px; font-weight: 600; }
.t-next { font-size: 11px; color: var(--muted); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; max-width: 120px; }
.t-acts { display: flex; gap: 4px; flex: none; }
.t-acts button { height: 36px; min-width: 36px; padding: 0 8px; border-radius: 999px; border: 1px solid transparent;
  background: var(--surface-2); color: var(--ink); font: inherit; font-weight: 600; font-size: 12px; cursor: pointer;
  display: inline-flex; align-items: center; justify-content: center; }
.t-acts button svg { width: 14px; height: 14px; stroke: currentColor; fill: none; stroke-width: 2.2; }
.t-acts .t-skip { background: transparent; color: var(--muted); }
.t-acts .t-skip:hover { color: var(--ink); }
@keyframes t-pop { 0% { transform: scale(1); } 40% { transform: scale(1.18); } 100% { transform: scale(1); } }
@media (max-width: 400px) { .t-next { display: none; } }
@media (min-width: 1024px) { .timer { bottom: 20px; left: calc(50% + 120px); } }

/* ---- Segmentado de secciones (Progreso) ---- */
.seg { display: grid; grid-auto-flow: column; grid-auto-columns: 1fr; gap: 4px; padding: 4px;
  background: var(--surface-2); border: 1px solid var(--line); border-radius: 12px; margin: 0 0 18px; }
.seg button { height: 40px; border: 0; border-radius: 9px; background: transparent; color: var(--muted);
  font: inherit; font-size: 14px; font-weight: 600; cursor: pointer; display: inline-flex; align-items: center; justify-content: center; gap: 6px; }
.seg button small { font-size: 11px; font-weight: 600; color: var(--muted); }
.seg button.on { background: var(--surface); color: var(--ink); box-shadow: var(--shadow); }
.seg button.on small { color: var(--accent); }
.seg button:focus-visible { outline: 2px solid var(--accent); outline-offset: -2px; }

/* ---- Héroe de peso: la tendencia manda ---- */
.phero { padding: 6px 2px 18px; }
.phero-n { display: flex; align-items: baseline; gap: 8px; }
.phero-v { font-family: var(--font-display); font-weight: 700; font-size: 60px; line-height: 1; letter-spacing: -.02em; color: var(--ink); font-variant-numeric: tabular-nums; }
.phero-u { font-size: 20px; color: var(--muted); }
.phero-l { margin-top: 6px; font-size: 15px; font-weight: 600; }
.phero-l .muted { font-weight: 400; }
.phero-sub { margin-top: 4px; font-size: 13px; color: var(--muted); }
.phero-sub b { color: var(--ink); font-weight: 600; }
.pchips { display: flex; gap: 8px; margin-top: 14px; flex-wrap: wrap; }
.pchip { display: inline-flex; flex-direction: column; align-items: flex-start; gap: 1px; padding: 8px 12px; border-radius: 10px;
  border: 1px solid var(--line); background: var(--surface); font-size: 11px; color: var(--muted); min-width: 84px; }
.pchip b { font-size: 16px; color: var(--ink); font-variant-numeric: tabular-nums; }
.pchip.baja b { color: var(--ok); }
.pchip.sube b { color: var(--warn); }
.bloque-p { margin: 0 0 18px; }
.bloque-p h3 { margin: 0 0 10px; }
.fold-body { padding-top: 6px; }

/* ---- Hoy: peso + tendencia, sesión, filas ---- */
.hoy-peso { display: grid; grid-template-columns: 1.15fr 1fr; gap: 14px; align-items: stretch;
  padding: 16px; border-radius: 16px; background: var(--surface); border: 1px solid var(--line); margin-bottom: 14px; }
.hoy-peso-in { display: flex; flex-direction: column; gap: 8px; min-width: 0; }
.hoy-peso-l { font-size: 13px; font-weight: 600; }
.hoy-peso-l b { color: var(--accent); font-weight: 600; }
.hoy-peso .weigh-in { margin: 0; }
.hoy-peso .weigh-in input { font-size: 34px; height: 52px; }
.hoy-peso .btn { height: 44px; padding: 0 16px; }
.hoy-peso .pista { margin: 0; font-size: 12px; }
.hoy-peso .pista b { color: var(--accent); }
.hoy-peso-v { font-family: var(--font-display); font-size: 40px; line-height: 1; font-weight: 700; letter-spacing: -.02em; font-variant-numeric: tabular-nums; }
.hoy-peso-v small, .hoy-tend-v small { font-family: var(--font-body); font-size: 14px; color: var(--muted); margin-left: 4px; }
.hoy-peso.hecho .link { align-self: flex-start; padding: 0; font-size: 13px; }
.hoy-tend { display: flex; flex-direction: column; gap: 3px; padding-left: 14px; border-left: 1px solid var(--line); min-width: 0; }
.hoy-tend-l { font-size: 12px; color: var(--muted); }
.hoy-tend-v { font-family: var(--font-display); font-size: 30px; line-height: 1.05; font-weight: 700; letter-spacing: -.02em; color: var(--ink); font-variant-numeric: tabular-nums; }
.hoy-tend-d { font-size: 12px; color: var(--muted); }
.hoy-tend-d.baja { color: var(--ok); font-weight: 600; }
.hoy-tend-d.sube { color: var(--warn); font-weight: 600; }
.hoy-tend-g { font-size: 12px; color: var(--muted); margin-top: auto; }
@media (max-width: 360px) { .hoy-peso { grid-template-columns: 1fr; } .hoy-tend { border-left: 0; padding-left: 0; border-top: 1px solid var(--line); padding-top: 10px; } }

.hoy-sesion { display: flex; align-items: center; gap: 14px; width: 100%; text-align: left; padding: 14px 16px;
  border-radius: 16px; border: 1px solid var(--line); background: var(--surface); color: var(--ink); box-shadow: var(--shadow), inset 3px 0 0 var(--accent);
  font: inherit; cursor: pointer; margin-bottom: 18px; }
.hoy-sesion.quieta { border-color: var(--line); background: var(--surface); cursor: default; }
.hoy-sesion-n { font-family: var(--font-display); font-weight: 700; font-size: 28px; width: 40px; text-align: center; color: var(--ink); flex: 0 0 auto; }
.hoy-sesion-t { flex: 1; min-width: 0; display: flex; flex-direction: column; gap: 2px; }
.hoy-sesion-t b { font-size: 16px; }
.hoy-sesion-t span { font-size: 13px; color: var(--muted); }
.hoy-sesion-cta { flex: 0 0 auto; background: var(--accent); color: var(--accent-ink); font-weight: 700; font-size: 14px;
  padding: 10px 14px; border-radius: 10px; }

.hoy-filas { display: flex; flex-direction: column; border: 1px solid var(--line); border-radius: 16px; background: var(--surface); overflow: hidden; margin-bottom: 16px; }
.hoy-fila { display: flex; align-items: center; gap: 12px; width: 100%; text-align: left; padding: 13px 14px;
  background: transparent; border: 0; border-bottom: 1px solid var(--line); color: var(--ink); font: inherit; cursor: pointer; min-height: 56px; }
.hoy-fila:last-child { border-bottom: 0; }
.hoy-fila:disabled { cursor: default; }
.hoy-fila-ic { width: 20px; height: 20px; color: var(--muted); flex: 0 0 auto; }
.hoy-fila-ic svg { width: 20px; height: 20px; fill: none; stroke: currentColor; stroke-width: 1.8; }
.hoy-fila-t { flex: 1; min-width: 0; display: flex; flex-direction: column; }
.hoy-fila-t b { font-size: 14px; font-weight: 600; }
.hoy-fila-t span { font-size: 12px; color: var(--muted); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.hoy-fila-d { font-size: 14px; font-weight: 600; font-variant-numeric: tabular-nums; white-space: nowrap; }
.hoy-fila .chev { color: var(--muted); }
.hoy-rev { color: var(--muted); font-size: 13px; margin: 0 2px 16px; line-height: 1.5; }

/* ---- Sesión de entreno: tabla de series ---- */
.ex { margin-bottom: 20px; }
.ex-top { margin-bottom: 10px; }
.ex-label { display: flex; align-items: center; justify-content: space-between; font-size: 12px; color: var(--muted); margin-bottom: 2px; }
.ex-label .idx { font-weight: 600; color: var(--muted); }
.ex-h { font-family: var(--font-display); font-weight: 700; font-size: 22px; line-height: 1.15; letter-spacing: -.02em; margin: 0 0 8px; }
.ex-acts { display: flex; flex-wrap: wrap; gap: 6px; }
.ex-act { display: inline-flex; align-items: center; gap: 6px; height: 34px; padding: 0 11px; border-radius: 999px;
  border: 1px solid var(--line-strong); background: var(--surface); color: var(--ink); font: inherit; font-size: 13px; font-weight: 600;
  text-decoration: none; cursor: pointer; }
.ex-act svg { width: 15px; height: 15px; fill: none; stroke: currentColor; stroke-width: 1.8; }
.ex-act[aria-expanded="true"] { border-color: var(--accent); color: var(--accent); }
.ex-key { margin: 10px 0 0; padding: 12px 14px; border-radius: 12px; background: var(--accent-soft); border: 1px solid var(--accent-line); font-size: 14px; line-height: 1.5; white-space: pre-line; }

.set-cab, .set-row { display: grid; grid-template-columns: 34px 1fr 72px 64px 48px; gap: 8px; align-items: center; }
.set-cab { font-size: 11px; color: var(--muted); padding: 0 4px 6px; }
.set-cab span:nth-child(3), .set-cab span:nth-child(4) { text-align: center; }
.set { padding: 10px 4px; border-top: 1px solid var(--line); }
.set.done { opacity: .78; }
.set.active { background: transparent; box-shadow: inset 3px 0 0 var(--accent); padding-left: 10px; margin-left: -6px; border-radius: 0; }
.set-head { display: flex; align-items: center; gap: 10px; margin-bottom: 6px; }
.set-head .badge { width: 26px; height: 26px; font-size: 12px; }
.set-meta { display: flex; align-items: center; gap: 8px; min-width: 0; font-size: 13px; color: var(--muted); }
.set-meta b { color: var(--ink); font-weight: 600; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.set-row { grid-template-columns: 34px 1fr 72px 64px 48px; }
.set-row > :first-child { grid-column: 2; }
.prev-cell { display: flex; gap: 6px; min-width: 0; }
.prev { display: flex; flex-direction: column; align-items: flex-start; gap: 0; min-width: 0; padding: 6px 9px; border-radius: 9px;
  border: 1px solid var(--line); background: var(--surface-2); color: var(--ink); font: inherit; cursor: pointer; text-align: left; height: 44px; justify-content: center; }
.prev small { font-size: 10px; color: var(--muted); line-height: 1; white-space: nowrap; }
.prev b { font-size: 13px; font-weight: 600; white-space: nowrap; line-height: 1.2; }
.prev.mas { align-items: center; font-weight: 700; font-size: 13px; padding: 0 10px; color: var(--ink); border-color: var(--line-strong); }
.prev.none { cursor: default; border-style: dashed; }
.cell { display: flex; flex-direction: column; gap: 0; }
.cell span { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); }
.cell input { width: 100%; height: 44px; text-align: center; font-size: 17px; font-weight: 600; border-radius: 9px;
  border: 1px solid var(--line-strong); background: var(--surface); color: var(--ink); padding: 0 6px; font-variant-numeric: tabular-nums; }
.cell input::placeholder { color: var(--muted); font-weight: 400; }
.cell input:focus-visible { outline: 2px solid var(--accent); outline-offset: 1px; }
.tick { width: 48px; height: 44px; border-radius: 9px; border: 1px solid var(--line-strong); background: var(--surface); color: var(--muted); cursor: pointer; display: grid; place-items: center; }
.tick svg { width: 20px; height: 20px; fill: none; stroke: currentColor; stroke-width: 2.4; }
.tick.on { background: var(--ok); border-color: var(--ok); color: #fff; }
.set-mas { margin: 6px 0 0 42px; }
.set-mas summary { font-size: 12px; color: var(--muted); cursor: pointer; list-style: none; display: inline-flex; align-items: center; gap: 6px; }
.set-mas summary::before { content: ""; width: 6px; height: 6px; border-right: 1.5px solid currentColor; border-bottom: 1.5px solid currentColor; transform: rotate(-45deg); transition: transform .15s; }
.set-mas[open] summary::before { transform: rotate(45deg); }
.set-mas .how { margin: 8px 0; font-size: 13px; color: var(--ink-2, var(--ink)); line-height: 1.5; }
.set-mas .note-in { margin-top: 6px; }
.rest-line { display: flex; align-items: center; gap: 12px; flex-wrap: wrap; padding: 12px 4px 0; border-top: 1px solid var(--line); font-size: 13px; color: var(--muted); }
.rest-line b { color: var(--ink); }
.rest-line .btn.small svg { width: 15px; height: 15px; margin-right: 6px; fill: none; stroke: currentColor; stroke-width: 1.8; }
.rest-line .link.small { margin-left: auto; font-size: 12px; }
@media (max-width: 360px) { .set-cab, .set-row { grid-template-columns: 30px 1fr 64px 56px 44px; gap: 6px; } .prev.mas { display: none; } }

/* ---------- Tabla de control (solo en escritorio) ----------
   En el móvil se ve la lista de tarjetas; a partir de 1024px, la tabla densa estilo hoja de control. */
.ctab-wrap { display: none; }
.chip.ok { background: var(--ok-soft); color: var(--ok); border-color: transparent; }
.chip.urge, .chip.medio, .chip.auto, .chip.manual { border-color: transparent; }
u.falta { color: var(--warn); text-decoration: none; }
@media (min-width: 1024px) {
  .main.ancha { max-width: 1320px; }
  .main.ancha #listaClientes { display: none; }
  .ctab-wrap { display: block; margin-top: 4px; }
  .ctab-res { display: flex; gap: 22px; flex-wrap: wrap; font-size: 13px; color: var(--muted); padding: 2px 2px 12px; }
  .ctab-res b { color: var(--ink); font-size: 15px; margin-right: 4px; font-variant-numeric: tabular-nums; }
  .ctab-res .urge b { color: var(--accent); }
  .ctab { width: 100%; border-collapse: separate; border-spacing: 0; background: var(--surface); border: 1px solid var(--line); border-radius: var(--radius); overflow: hidden; font-size: 13.5px; box-shadow: var(--shadow); }
  .ctab th { text-align: left; font-weight: 500; font-size: 12px; color: var(--muted); padding: 0; border-bottom: 1px solid var(--line-strong); background: var(--surface-2); white-space: nowrap; }
  .ctab th button { all: unset; cursor: pointer; display: block; padding: 11px 12px; width: 100%; box-sizing: border-box; }
  .ctab th button:hover { color: var(--ink); }
  .ctab th button i { font-style: normal; color: var(--accent); margin-left: 5px; }
  .ctab th[aria-sort="ascending"] button, .ctab th[aria-sort="descending"] button { color: var(--ink); }
  .ctab td { padding: 10px 12px; border-bottom: 1px solid var(--line); vertical-align: middle; line-height: 1.3; }
  .ctab tbody tr:last-child td { border-bottom: 0; }
  .ctab tbody tr { cursor: pointer; transition: background .12s; }
  .ctab tbody tr:hover { background: var(--brillo); }
  .ctab tbody tr:focus-visible { outline: 2px solid var(--accent); outline-offset: -2px; }
  .ctab td b { font-weight: 600; color: var(--ink); font-variant-numeric: tabular-nums; }
  .ctab td small { display: block; font-size: 12px; color: var(--muted); margin-top: 2px; }
  .ctab td small.urge { color: var(--accent); }
  .ctab td small.medio { color: var(--warn); }
  .ctab td.num { font-variant-numeric: tabular-nums; }
  .ctab .c-nombre b { font-size: 14px; }
  .ctab .c-nombre .chips { margin-top: 5px; gap: 4px; }
  .ctab .chip { padding: 4px 9px; font-size: 12px; cursor: default; text-transform: none; letter-spacing: 0; }
  .ctab td { white-space: nowrap; }
  .ctab td.c-nombre { white-space: normal; }
  .ctab .chip:hover { border-color: transparent; }
  .ctab .trend.baja { color: var(--ok); }
  .ctab .trend.sube { color: var(--warn); }
  .ctab .celda-edit { all: unset; cursor: text; display: block; padding: 4px 6px; margin: -4px -6px; border-radius: 8px; min-width: 56px; }
  .ctab .celda-edit:hover { background: var(--accent-soft); outline: 1px dashed var(--accent-line); }
  .ctab .celda-edit .muted { font-size: 12px; }
  .ctab .c-acts { white-space: nowrap; text-align: right; }
  .ctab .c-acts .ic { all: unset; cursor: pointer; display: inline-grid; place-items: center; width: 34px; height: 34px; border-radius: 10px; color: var(--muted); vertical-align: middle; margin-right: 6px; }
  .ctab .c-acts .ic:hover { background: var(--accent-soft); color: var(--accent); }
  .ctab .c-acts .ic svg { width: 18px; height: 18px; stroke: currentColor; fill: none; stroke-width: 1.7; }
  .ctab .c-acts .btn { vertical-align: middle; }
  .main.ancha .buscador { max-width: 420px; }
}
@media (min-width: 1024px) {
  .ctab .dias.ok { color: var(--ok); }
  .ctab .dias.medio { color: var(--warn); }
  .ctab .dias.urge { color: var(--accent); }
  .ctab tr.fila-vencida td:first-child { box-shadow: inset 3px 0 0 var(--accent); }
  .ctab tfoot td { border-top: 1px solid var(--line-strong); background: var(--surface-2); padding: 9px 12px; font-size: 13px; }
  .ctab-pie { margin: 10px 2px 0; font-size: 12px; }
}

/* ---------- Mayúsculas: alimentos, comidas, nombres de ejercicio y explicaciones (como en sus hojas) ---------- */
.opts li, .meal summary h2, .cat h4, .ex-h, .ex-key, .how, .sheet .qa p, .sheet .qa b, .sheet details summary,
.exlist li b, .hoy-sesion b, .day .t b, .set-mas .how { text-transform: uppercase; }
.opts li, .ex-key, .how, .sheet .qa p { letter-spacing: .01em; font-size: 13px; line-height: 1.45; }
.ex-h, .meal summary h2 { letter-spacing: 0; }

/* ---------- Sesión: cabecera del ejercicio con miniatura, series más claras, animación al completar ---------- */
.ex-media { display: flex; align-items: center; gap: 12px; }
.ex-thumb { position: relative; flex: none; width: 112px; height: 63px; border-radius: 10px; overflow: hidden; background: var(--surface-2); display: grid; place-items: center; border: 1px solid var(--line); }
.ex-thumb img { width: 100%; height: 100%; object-fit: cover; display: block; }
.ex-play { position: absolute; inset: 0; display: grid; place-items: center; background: linear-gradient(180deg, rgba(0,0,0,.05), rgba(0,0,0,.35)); }
.ex-play svg { width: 26px; height: 26px; stroke: #fff; fill: rgba(0,0,0,.35); stroke-width: 1.6; filter: drop-shadow(0 1px 2px rgba(0,0,0,.5)); }
.ex-media .ex-acts { flex-direction: column; align-items: flex-start; gap: 6px; }
.set-n { font-size: 12px; font-weight: 700; letter-spacing: .04em; text-transform: uppercase; color: var(--muted); }
.set.active .set-n { color: var(--ink); }
.set.done .set-n { color: var(--ok); }
.set-meta b { font-weight: 500; color: var(--ink-2); }
.pre-card h2 { margin: 2px 0 6px; }
.dot-nav.pre svg { width: 14px; height: 14px; stroke: currentColor; fill: none; stroke-width: 1.9; }
.dot-nav.ok { animation: dot-ok .4s ease; }
@keyframes dot-ok { 0% { transform: scale(.8); } 60% { transform: scale(1.15); } 100% { transform: scale(1); } }
.ex { position: relative; }
.ex-burst { position: absolute; inset: 0; display: grid; place-content: center; justify-items: center; gap: 8px; pointer-events: none;
  background: color-mix(in srgb, var(--surface) 82%, transparent); backdrop-filter: blur(2px); border-radius: var(--radius);
  animation: burst 1.5s ease forwards; z-index: 3; }
.ex-burst span { width: 64px; height: 64px; border-radius: 50%; background: var(--ok); display: grid; place-items: center; animation: t-pop .5s ease; }
.ex-burst span svg { width: 32px; height: 32px; stroke: #fff; fill: none; stroke-width: 2.6; }
.ex-burst b { font-size: 15px; }
@keyframes burst { 0% { opacity: 0; } 12% { opacity: 1; } 80% { opacity: 1; } 100% { opacity: 0; } }
.tick.on { animation: t-pop .35s ease; }
/* Transición suave entre pantallas */
.page { animation: page-in .18s ease-out; }
@keyframes page-in { from { opacity: 0; transform: translateY(4px); } to { opacity: 1; transform: none; } }
@media (prefers-reduced-motion: reduce) { .page, .tick.on, .dot-nav.ok, .ex-burst span, .timer.done .t-ring { animation: none; } }
/* Recordatorio del peso */
.aviso-peso { display: flex; align-items: center; gap: 10px; width: 100%; margin: 10px 0 -6px; padding: 10px 14px; border-radius: 12px; border: 1px solid var(--accent-line); background: var(--accent-soft); color: var(--ink); font: inherit; font-size: 13px; cursor: pointer; text-align: left; }
.aviso-peso .ic-inline { color: var(--accent); }
.aviso-peso span { flex: 1; }
.aviso-peso b { color: var(--ink); text-decoration: underline; text-underline-offset: 3px; }
.aviso-chip { display: inline-flex; align-items: center; gap: 6px; margin-top: 10px; white-space: nowrap; padding: 0; border: 0; background: none; color: var(--muted); font: inherit; font-size: 12px; cursor: pointer; }
.aviso-chip svg { width: 14px; height: 14px; fill: none; stroke: currentColor; stroke-width: 1.8; }
.aviso-chip.on { color: var(--ok); }
.aviso-edit { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; margin-top: 10px; font-size: 12px; color: var(--muted); }
.aviso-edit input { height: 34px; border-radius: 8px; border: 1px solid var(--line-strong); background: var(--surface); color: var(--ink); padding: 0 8px; }
.seg-scroll { overflow-x: auto; scrollbar-width: none; -webkit-overflow-scrolling: touch; }
.seg-scroll::-webkit-scrollbar { display: none; }
.seg-scroll button { flex: 0 0 auto; padding-inline: 12px; font-size: 13px; }
.av-btn { width: 100%; text-align: left; cursor: pointer; font: inherit; color: inherit; }
.av-btn .chev { margin-left: auto; color: var(--muted); font-size: 18px; align-self: center; }

/* Temporizador debajo de la serie que acabas de marcar */
.timer.inline { position: static; transform: none; left: auto; bottom: auto; width: auto; max-width: none; margin: 8px 0 2px 42px;
  border-radius: 12px; box-shadow: none; background: var(--surface-2); border-color: var(--line); cursor: default; touch-action: auto; }
.timer.inline .t-next { max-width: none; }
.timer.inline .t-ring { width: 42px; height: 42px; }

/* ---------- Serie con bloques: tarjeta, − / + y botón completar ---------- */
.ex .set { border: 1px solid var(--line); border-radius: 20px; background: var(--surface); padding: 16px; margin: 0 0 12px; display: flex; flex-direction: column; gap: 12px; box-shadow: none; }
.ex .set.active { box-shadow: none; margin-left: 0; padding-left: 16px; border-color: var(--line-strong); }
.ex .set.done { opacity: 1; }
.ex .set .set-head { margin: 0; gap: 12px; }
.ex .set .badge { width: 30px; height: 30px; font-size: 14px; }
.ex .set.active .badge { background: var(--accent); border-color: var(--accent); color: var(--accent-ink); }
.ex .set .set-n { font-size: 15px; letter-spacing: .02em; color: var(--ink); }
.ex .set .verdict { margin-left: auto; }
.set-spec { margin: 0; font-size: 19px; font-weight: 700; letter-spacing: -.01em; line-height: 1.2; color: var(--ink); text-transform: uppercase; }
.ex .set .how { margin: -4px 0 0; font-size: 13px; line-height: 1.5; color: var(--muted); text-transform: uppercase; }
.prev-box { display: flex; flex-direction: column; align-items: flex-start; gap: 3px; width: 100%; text-align: left; cursor: pointer;
  padding: 12px 14px; border-radius: 14px; border: 1px solid var(--line); background: var(--surface-2); color: var(--ink); }
.prev-box small { font-size: 11px; letter-spacing: .1em; text-transform: uppercase; color: var(--muted); }
.prev-box b { font-size: 15px; font-weight: 600; }
.prev-box:active { background: var(--line); }
.hoy-l { margin: 4px 0 -4px; font-size: 11px; font-weight: 700; letter-spacing: .14em; text-transform: uppercase; color: var(--muted); }
.blk { display: flex; flex-direction: column; gap: 8px; }
.blk-l { margin: 0; font-size: 12px; letter-spacing: .08em; text-transform: uppercase; color: var(--muted); }
.blk-row { display: grid; grid-template-columns: 1fr 1fr; gap: 10px; }
.blk-row.one { grid-template-columns: 1fr; }
.stp { display: flex; align-items: center; justify-content: space-between; height: 58px; padding: 0 6px; border-radius: 18px;
  border: 1px solid var(--line-strong); background: var(--bg); transition: border-color .15s ease, transform .12s ease; min-width: 0; }
.stp:focus-within { border-color: var(--ink-2); }
.stp.pop { animation: stp-pop .16s ease; }
@keyframes stp-pop { 50% { transform: scale(1.03); } }
.stp-b { flex: none; width: 44px; height: 44px; border: 0; border-radius: 14px; background: transparent; color: var(--ink-2); font-size: 28px; line-height: 1; cursor: pointer; display: grid; place-items: center; }
.stp-b:active { background: var(--line); }
.stp-v { flex: 1; min-width: 0; display: flex; align-items: baseline; justify-content: center; gap: 4px; cursor: text; }
.stp-v input { width: 100%; min-width: 0; max-width: 78px; border: 0; background: transparent; outline: none; padding: 0; text-align: right;
  font-size: 26px; font-weight: 600; letter-spacing: -.02em; color: var(--ink); }
.stp-v input::placeholder { color: var(--muted); opacity: .55; }
.stp-v span { flex: none; width: 30px; font-size: 12px; letter-spacing: .06em; text-transform: uppercase; color: var(--muted); }
.ex .set .note-in { height: 46px; border-radius: 14px; padding: 0 14px; }
.set-go { width: 100%; height: 54px; border: 0; border-radius: 16px; cursor: pointer; background: var(--accent); color: var(--accent-ink);
  font-size: 15px; font-weight: 700; letter-spacing: .08em; text-transform: uppercase; transition: transform .1s ease, background .2s ease; }
.set-go:active { transform: scale(.985); }
.set-go.on { background: var(--ok-soft); color: var(--ok); }
.ex .set > .timer.inline { margin: 0; }
@media (prefers-reduced-motion: reduce) { .stp.pop { animation: none; } }
.stp { padding: 0 4px; }
.stp-b { width: 36px; height: 40px; font-size: 24px; }
.stp-v { gap: 2px; }
.stp-v input { font-size: 24px; max-width: none; }
.stp-v span { width: 24px; font-size: 11px; letter-spacing: .03em; }

/* ---------- versión compacta ---------- */
.ex .set { padding: 12px; gap: 8px; margin-bottom: 10px; border-radius: 18px; }
.ex .set.active { padding-left: 12px; }
.ex .set .set-head { gap: 10px; }
.ex .set .badge { width: 26px; height: 26px; font-size: 13px; }
.ex .set .set-meta { flex: 1; min-width: 0; display: flex; align-items: baseline; justify-content: space-between; gap: 10px; }
.ex .set .set-n { font-size: 14px; }
.set-spec { margin: 0; font-size: 14px; font-weight: 600; letter-spacing: 0; color: var(--ink-2); text-align: right; text-transform: uppercase; }
.ex .set .verdict { margin-left: 0; flex: none; }
.prev-box { flex-direction: row; align-items: baseline; gap: 8px; padding: 8px 12px; border-radius: 12px; flex-wrap: wrap; }
.prev-box small { font-size: 10px; }
.prev-box b { font-size: 13px; font-weight: 600; }
.blk { display: grid; grid-template-columns: 1fr 1fr; gap: 8px; }
.blk-l { grid-column: 1 / -1; margin-bottom: -2px; font-size: 11px; letter-spacing: .1em; }
.stp { height: 46px; border-radius: 14px; padding: 0 3px; }
.stp-b { width: 32px; height: 38px; font-size: 22px; border-radius: 10px; }
.stp-v input { font-size: 20px; }
.stp-v span { width: 22px; font-size: 10px; }
.ex .set .note-in { height: 38px; font-size: 14px; border-radius: 12px; }
.set-info summary { font-size: 12px; color: var(--muted); cursor: pointer; list-style: none; padding: 2px 0; }
.set-info summary::-webkit-details-marker { display: none; }
.set-info summary::after { content: " ▾"; }
.set-info[open] summary::after { content: " ▴"; }
.ex .set .how { margin: 6px 0 0; font-size: 12px; }
.set-go { height: 46px; border-radius: 14px; font-size: 13px; }

/* con el teclado abierto no hay barras fijas tapando la casilla */
body.teclado .tabbar, body.teclado .exbar, body.teclado #restTimer:not(.inline) { display: none !important; }
body.teclado .main { padding-bottom: 45vh; }
.stp-v input, .note-in { scroll-margin: 35vh 0; }

/* la explicación de la serie, siempre visible: roja en oscuro, dorada en claro */
.ex .set .how { margin: 0; font-size: 13px; line-height: 1.45; font-weight: 600; color: var(--accent); text-transform: uppercase; }

/* ---------- cabecera del ejercicio: más equilibrada y premium ---------- */
.ex-top { gap: 14px; padding: 4px 2px 0; margin-bottom: 14px; }
.ex-label .idx { font-size: 11px; letter-spacing: .14em; }
.ex-h { font-size: 24px; line-height: 1.12; margin: 0; letter-spacing: -.015em; }
.ex-media { display: grid; grid-template-columns: 128px 1fr; gap: 10px; align-items: stretch; }
.ex-thumb { width: 128px; height: auto; min-height: 72px; aspect-ratio: 16 / 9; border-radius: 14px; border: 0; box-shadow: 0 0 0 1px var(--line); }
.ex-play { background: rgba(0,0,0,.28); }
.ex-play svg { width: 30px; height: 30px; }
.ex-media .ex-acts { display: grid; grid-auto-rows: 1fr; gap: 8px; align-items: stretch; }
.ex-media:not(:has(.ex-thumb)) { grid-template-columns: 1fr; }
.ex-media:not(:has(.ex-thumb)) .ex-acts { grid-template-columns: 1fr 1fr; grid-auto-rows: 40px; }
.ex-act { height: auto; min-height: 34px; width: 100%; padding: 0 12px; border-radius: 12px; border: 0; background: var(--surface-2); box-shadow: 0 0 0 1px var(--line);
  justify-content: flex-start; gap: 9px; font-size: 13px; font-weight: 600; color: var(--ink); }
.ex-act svg { width: 16px; height: 16px; color: var(--muted); flex: none; }
.ex-act:active { background: var(--line); }
.ex-act[aria-expanded="true"] { box-shadow: 0 0 0 1px var(--accent); color: var(--ink); }
.ex-act[aria-expanded="true"] svg { color: var(--accent); }

/* números del 1 al 8: círculos iguales, repartidos por todo el ancho */
.exnav { display: flex; flex-wrap: nowrap; justify-content: space-between; gap: 6px; overflow-x: auto; scrollbar-width: none; padding: 4px 2px 8px; margin: 0 -2px; }
.exnav::-webkit-scrollbar { display: none; }
.dot-nav { flex: none; width: 34px; min-width: 34px; height: 34px; padding: 0; border: 0; border-radius: 50%; background: var(--surface-2); box-shadow: 0 0 0 1px var(--line);
  color: var(--muted); font-size: 14px; font-weight: 600; transition: background .2s ease, color .2s ease, box-shadow .2s ease; }
.dot-nav.ok { background: var(--ok-soft); color: var(--ok); box-shadow: none; }
.dot-nav.on { background: var(--accent); color: var(--accent-ink); box-shadow: 0 0 0 4px var(--accent-soft); }
.dot-nav.flag.on, .dot-nav.pre.on { color: var(--accent-ink); }
.dot-nav svg { width: 15px; height: 15px; }

/* ---- Hoy: peso compacto, cardio completo, siguiente entrenamiento ---- */
.hoy-peso { display: flex; flex-direction: column; gap: 8px; grid-template-columns: none; padding: 12px 14px; margin-bottom: 12px; }
.hoy-peso-top { display: flex; align-items: baseline; justify-content: space-between; gap: 10px; }
.hoy-tend-mini { display: inline-flex; align-items: baseline; gap: 6px; font-size: 12px; color: var(--muted); white-space: nowrap; }
.hoy-tend-mini b { color: var(--ink); font-size: 13px; font-variant-numeric: tabular-nums; }
.hoy-tend-mini em { font-style: normal; font-weight: 700; }
.hoy-tend-mini em.baja { color: var(--ok); } .hoy-tend-mini em.sube { color: var(--warn); }
.hoy-peso-row { display: flex; align-items: center; gap: 10px; }
.hoy-peso-row .weigh-in { flex: 1; min-width: 0; align-items: center; padding-bottom: 2px; }
.hoy-peso .weigh-in input { font-size: 26px; height: 40px; }
.hoy-peso .btn { height: 40px; padding: 0 18px; flex: 0 0 auto; }
.hoy-peso-pie { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 4px 10px; }
.hoy-peso-pie .pista { font-size: 11.5px; color: var(--muted); }
.hoy-peso-pie .aviso-chip { margin-top: 0; font-size: 11.5px; padding: 0; min-height: 0; background: none; border: 0; }
.hoy-peso.hecho .hoy-peso-row { justify-content: space-between; }

.hoy-cardio { display: flex; align-items: flex-start; gap: 12px; width: 100%; text-align: left; padding: 13px 14px; margin-bottom: 12px;
  border-radius: 16px; border: 1px solid var(--line); background: var(--surface); color: var(--ink); font: inherit; cursor: pointer; }
.hoy-cardio .hoy-fila-ic { margin-top: 2px; }
.hoy-cardio-t { flex: 1; min-width: 0; display: flex; flex-direction: column; gap: 3px; }
.hoy-cardio-t b { font-size: 14px; font-weight: 700; }
.hoy-cardio-t span { font-size: 12.5px; line-height: 1.4; color: var(--muted); text-transform: uppercase; letter-spacing: .02em; white-space: normal; overflow: visible; text-overflow: clip; overflow-wrap: anywhere; }
.hoy-cardio .chev { color: var(--muted); align-self: center; }

.hoy-sesion { padding: 14px 16px; margin-bottom: 16px; }
.hoy-sesion .hoy-sesion-k { font-size: 11px; font-weight: 700; letter-spacing: .1em; text-transform: uppercase; color: var(--accent); }
.hoy-sesion-t b { font-size: 18px; line-height: 1.15; }
.hoy-sesion-m { font-size: 13.5px !important; color: var(--ink) !important; opacity: .8; line-height: 1.35; }

/* ---- Entreno: semanas y días, más limpio ---- */
.seg { margin-bottom: 10px; }
.seg button { height: auto; padding: 7px 4px; gap: 0; }
.seg button b { font-size: 12px; font-weight: 700; letter-spacing: .06em; text-transform: uppercase; }
.seg button small { font-size: 11px; text-transform: uppercase; letter-spacing: .04em; }
.list .day { display: flex; align-items: center; gap: 10px; padding: 11px 14px; }
.list { gap: 8px; }
.day .t { flex: 1; min-width: 0; display: flex; flex-direction: column; gap: 1px; }
.day .t small { font-size: 11px; font-weight: 700; letter-spacing: .08em; text-transform: uppercase; color: var(--accent); }
.day .t b { font-size: 17px; line-height: 1.15; }
.day .t > span { font-size: 12px; color: var(--muted); }
.day .t .track { margin-top: 6px; height: 3px; }
.day .pill { flex: 0 0 auto; }
.list .day { position: relative; }
.list .day .pill { position: absolute; top: 11px; right: 14px; }
.day .t small, .day .t b { padding-right: 96px; }
.fold-mini { margin-top: 8px; font-size: 13px; color: var(--muted); }
.fold-mini summary { cursor: pointer; padding: 6px 0; }

.login-card{text-align:center}.login-card h2{font-size:24px;line-height:1.2;margin-bottom:6px}.login-card .sub{margin:0 auto 18px;max-width:32ch}.login-card .link{display:block;margin:14px auto 0;max-width:30ch;font-size:13px;line-height:1.4;text-align:center}.login-card .msg{margin-top:12px}
.login-card .msg{text-align:center;min-height:0}.login-card .msg:empty{display:none}

/* Bienvenida: todo en la misma posición en las 3 pantallas, título en una línea, un solo botón centrado */
.onb{justify-content:flex-start;padding-top:18vh;gap:0}
.onb-dots{margin-bottom:26px}.onb-art{margin:0 0 22px}
.onb h1{font-size:26px;white-space:nowrap;margin:0 0 12px}
.onb .sub{min-height:6.4em;margin:0}
.onb-bar{display:flex;justify-content:center;margin-top:8px}
.onb-bar .btn{width:100%;max-width:260px}
/* Acceso */
.login{min-height:100dvh}
.empty-state-wrap{min-height:80vh;display:flex;align-items:center}

/* Hoy (revisión): cabecera, peso, tendencia y cardio */
.hoy-head{gap:2px}.hoy-tema{display:flex;justify-content:flex-end}
.hoy-head h1{margin:2px 0 0}.hoy-head .crumb{margin-top:2px}
.hoy-peso>.hoy-peso-l{font-size:15px;font-weight:700}
.hoy-peso .pista{font-size:12px;color:var(--muted)}
.hoy-tend-linea{display:flex;align-items:baseline;gap:8px;flex-wrap:wrap;padding-top:10px;border-top:1px solid var(--line);font-size:13px;color:var(--muted)}
.hoy-tend-linea b{color:var(--ink);font-variant-numeric:tabular-nums}.hoy-tend-linea em{font-style:normal;font-weight:700}
.hoy-tend-linea em.baja,.hoy-tend-grande em.baja{color:var(--ok)}.hoy-tend-linea em.sube,.hoy-tend-grande em.sube{color:var(--warn)}
.hoy-peso.hecho{align-items:center;text-align:center;gap:4px;padding:14px 14px 18px}
.hoy-peso.hecho .hoy-peso-top{width:100%}
.hoy-peso-hecho{display:flex;align-items:center;justify-content:center;gap:10px}
.hoy-peso-hecho .chulo{font-style:normal;width:26px;height:26px;border-radius:50%;display:grid;place-items:center;background:var(--ok);color:#fff;font-size:15px;font-weight:700}
.hoy-tend-grande{display:flex;flex-direction:column;align-items:center;gap:2px;width:100%;margin-top:12px;padding-top:14px;border-top:1px solid var(--line)}
.hoy-tend-grande span{font-size:12px;color:var(--muted);letter-spacing:.04em;text-transform:uppercase;font-weight:600}
.hoy-tend-grande b{font-family:var(--font-display);font-size:52px;line-height:1.05;font-weight:700;letter-spacing:-.03em;font-variant-numeric:tabular-nums}
.hoy-tend-grande b small{font-family:var(--font-body);font-size:16px;color:var(--muted);margin-left:5px}
.hoy-tend-grande em{font-style:normal;font-size:14px;font-weight:700;color:var(--muted)}
.hoy-tend-grande i{font-style:normal;font-size:12px;color:var(--muted);margin-top:2px}
@keyframes hoyPop{0%{transform:scale(.94);opacity:.4}55%{transform:scale(1.03)}100%{transform:scale(1);opacity:1}}
@keyframes hoyChulo{0%{transform:scale(0)}70%{transform:scale(1.25)}100%{transform:scale(1)}}
@keyframes hoyNum{from{opacity:0;transform:translateY(10px)}to{opacity:1;transform:none}}
.hoy-peso.hecho.nuevo{animation:hoyPop .5s ease-out}.hoy-peso.hecho.nuevo .chulo{animation:hoyChulo .5s .15s both}
.hoy-peso.hecho.nuevo .hoy-tend-grande b{animation:hoyNum .6s .25s both}
@media (prefers-reduced-motion:reduce){.hoy-peso.hecho.nuevo,.hoy-peso.hecho.nuevo *{animation:none!important}}
/* cardio */
.hoy-cardio{display:block;padding:0;cursor:default;box-shadow:var(--shadow),inset 3px 0 0 var(--accent)}
.hoy-cardio-go{display:flex;align-items:flex-start;gap:12px;width:100%;text-align:left;padding:13px 14px 10px;background:none;border:0;color:var(--ink);font:inherit;cursor:pointer}
.hoy-cardio-t b{color:var(--accent);text-transform:uppercase;letter-spacing:.08em;font-size:13px}
.cardio-cuenta{padding:2px 14px 14px}
.cardio-cuenta-t{display:flex;justify-content:space-between;align-items:baseline;margin-bottom:8px;font-size:13px;color:var(--muted)}
.cardio-cuenta-t b{color:var(--ink);font-variant-numeric:tabular-nums;font-size:15px}
.cardio-chips{display:flex;flex-direction:column;gap:8px}
.cardio-chip{display:flex;align-items:center;gap:10px;width:100%;padding:10px 12px;border-radius:12px;border:1px solid var(--line);background:var(--surface-2,var(--surface));color:var(--ink);font:inherit;font-size:14px;font-weight:600;text-align:left;cursor:pointer}
.cardio-chip i{font-style:normal;width:22px;height:22px;border-radius:50%;border:1.5px solid var(--line-strong);display:grid;place-items:center;font-size:13px;color:#fff;flex:0 0 auto}
.cardio-chip.on{border-color:var(--ok)}.cardio-chip.on i{background:var(--ok);border-color:var(--ok)}
.cardio-chip:disabled{opacity:.7;cursor:default}
.cardio-cuenta .pista{margin:8px 0 0;font-size:12px;color:var(--muted)}

/* Antes de empezar */
.pre-card .pre-t{font-size:28px;line-height:1.1;margin:0 0 14px;text-align:center}
.scale.yn{grid-auto-flow:column;gap:10px}
.scale.yn button{padding:14px 0;font-size:15px;border-radius:14px}
.scale.yn button.on{background:var(--accent);border-color:var(--accent);color:var(--accent-ink)}
.scale.ten{gap:5px}
.scale.ten button{border-radius:50%;aspect-ratio:1;padding:0;display:grid;place-items:center;font-size:13px}
.scale.ten button.on{background:var(--accent);border-color:var(--accent);color:var(--accent-ink)}
/* Ejercicio: una serie cada vez */
.ex-act{justify-content:center;text-align:center;text-transform:uppercase;letter-spacing:.06em;font-size:12px;font-weight:700;box-shadow:0 0 0 1.5px var(--accent)}
.ex-act svg{color:var(--accent)}
.set-steps{display:flex;justify-content:center;gap:10px;margin:14px 0 12px}
.set-step{width:36px;height:36px;border-radius:50%;border:1.5px solid var(--line-strong);background:transparent;color:var(--muted);font:inherit;font-weight:700;font-size:14px;cursor:pointer;display:grid;place-items:center}
.set-step.on{border-color:var(--accent);color:var(--ink);box-shadow:0 0 0 3px var(--accent-soft)}
.set-step.ok{background:var(--ok);border-color:var(--ok);color:#fff}
.set-viewport{overflow:hidden}
@keyframes serieIn{from{transform:translateX(48px);opacity:0}to{transform:none;opacity:1}}
.ex .set.slide{animation:serieIn .38s cubic-bezier(.2,.8,.2,1)}
@media (prefers-reduced-motion:reduce){.ex .set.slide{animation:none}}
.timer.inline{border-radius:999px;margin:0;padding:6px 10px 6px 6px}
.ex .set > .timer.inline{border-radius:999px}

/* Entreno: semana automática */
.semana-cab{display:flex;flex-wrap:wrap;align-items:baseline;justify-content:space-between;gap:4px 12px;margin:2px 0 14px}
.semana-t{display:flex;flex-direction:column;gap:2px}.semana-t b{font-size:18px}.semana-t span{font-size:13px;color:var(--muted)}
.semana-cab .link.small{padding:0;font-size:13px}
.semana-cab .seg{width:100%;margin-top:10px}
.aviso-orden{margin:8px 0 0;padding:8px 12px;border-radius:12px;background:var(--accent-soft);color:var(--accent);font-size:13px;font-weight:600}

/* Bloques: fondo difuminado y ventana al centro */
.sheet-bg{background:rgba(0,0,0,.5);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}
.sheet-bg.modal{align-items:center;padding:18px}
.sheet.sheet-modal{border-radius:22px;width:min(380px,100%);max-height:70vh;padding:18px;gap:10px;animation:modalIn .26s cubic-bezier(.2,.8,.2,1)}
.sheet.sheet-modal h2{font-size:18px}
.sheet.sheet-modal .table-wrap{font-size:13px}
@keyframes modalIn{from{opacity:0;transform:scale(.94)}to{opacity:1;transform:none}}
.sheet{gap:18px;padding-top:22px}
.sheet details{border-top:1px solid var(--line);padding:16px 0 4px}
.sheet details summary{font-size:16px;padding-bottom:6px}
.sheet .qa{gap:16px;line-height:1.55;margin-top:12px}
.sheet .qa b{font-size:15px;margin-bottom:4px}
@media (prefers-reduced-motion:reduce){.sheet.sheet-modal{animation:none}}
/* frase al completar serie */
.frase-ok{position:fixed;left:50%;top:calc(env(safe-area-inset-top,0px) + 74px);transform:translateX(-50%);z-index:60;max-width:calc(100% - 32px);padding:11px 18px;border-radius:999px;background:var(--surface);border:1px solid var(--line-strong);box-shadow:0 12px 30px -12px rgba(0,0,0,.7);font-size:14px;font-weight:600;text-align:center;animation:fraseIn .35s cubic-bezier(.2,.8,.2,1)}
@keyframes fraseIn{from{opacity:0;transform:translate(-50%,-10px)}to{opacity:1;transform:translate(-50%,0)}}
@media (prefers-reduced-motion:reduce){.frase-ok{animation:none}}
/* siguiente ejercicio: fijo abajo, solo en la última serie */
.exbar.exfijo{position:fixed;left:0;right:0;bottom:calc(var(--tabbar-h) + env(safe-area-inset-bottom,0px));display:block;padding:12px 16px 12px;background:linear-gradient(to top,var(--bg) 70%,transparent);z-index:20}
.exbar.exfijo .btn{display:flex;flex-direction:column;align-items:center;gap:1px;height:auto;min-height:56px;padding:10px 16px;border-radius:16px;margin:0 auto;max-width:560px}
.exbar.exfijo .btn.ghost{background:var(--accent);color:var(--accent-ink);border-color:var(--accent)}
.exbar-k{font-size:11px;letter-spacing:.12em;text-transform:uppercase;opacity:.85;font-weight:700}
.exbar-n{font-size:16px;font-weight:700}
.ex{padding-bottom:110px}
.ex .set{margin-bottom:16px;gap:16px}
.ex .how{color:var(--ink-2);font-size:13px;line-height:1.5}
.ex .set{border-color:var(--line-strong)}
/* final de sesión */
.finish{padding:22px 18px;text-align:center}
.fin-k{margin:0 0 4px;font-size:12px;letter-spacing:.14em;text-transform:uppercase;color:var(--muted);font-weight:700}
.fin-t{font-size:26px;line-height:1.2;margin:0 0 16px;font-weight:700}
.fin-t span{color:var(--accent);font-size:40px;font-variant-numeric:tabular-nums}
.fin-bar{display:flex;gap:4px;height:10px;margin:0 0 20px}
.fin-bar i{display:block;border-radius:6px;background:var(--line);overflow:hidden}
.fin-bar b{display:block;height:100%;background:var(--accent);border-radius:6px}
.finish.ok .fin-bar b{background:var(--ok)}
.fin-rows{margin:0;display:flex;flex-direction:column;gap:0;text-align:left}
.fin-rows>div{display:grid;grid-template-columns:1fr auto;column-gap:12px;padding:14px 2px;border-top:1px solid var(--line)}
.fin-rows dt{font-size:15px;font-weight:600}.fin-rows dd{margin:0;font-size:20px;font-weight:700;font-variant-numeric:tabular-nums;text-align:right}
.fin-rows dd.d{grid-column:1/-1;text-align:left;font-size:12px;font-weight:400;color:var(--muted);margin-top:-2px}
.post-card h3{margin-bottom:16px;font-size:18px}
.qgrid.q1{grid-template-columns:1fr;gap:22px}
.post-card .field label{font-size:14px;font-weight:600;margin-bottom:10px;display:block}
.post-card .field input,.post-card .field textarea{border-radius:14px}

/* Temporizador debajo de la serie: minimalista y redondo */
.timer.inline{touch-action:pan-y;cursor:grab;padding:8px 14px 8px 8px;gap:12px;background:var(--surface-2);border-radius:999px}
.timer.inline .t-ring{width:52px;height:52px}
.timer.inline .t-ring::before{inset:3px}
.timer.inline .t-clock{font-size:15px}
.timer.inline .t-lbl{font-size:13px}
.timer.inline .t-next{max-width:130px}
.timer.inline .t-acts [data-t="menos"]{display:none}
.timer.inline .t-acts{margin-left:auto}
.sheet summary{text-transform:none}
.sheet .qa p{text-transform:none}

/* Perfil, cardio compacto, peso en mayúsculas */
.hoy-peso>.hoy-peso-l{text-transform:uppercase;letter-spacing:.08em;font-size:13px}
.cardio-chips{flex-direction:row;flex-wrap:wrap}
.cardio-chip{flex:1 1 calc(50% - 4px);min-width:0;padding:9px 10px}
.cardio-chip span{display:flex;flex-direction:column;line-height:1.2}
.cardio-chip small{font-size:12px;font-weight:500;color:var(--muted)}
.cardio-cuenta .pista{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-size:11.5px}
.perfil-mail{margin:0;color:var(--muted)}
.perfil-card{display:flex;flex-direction:column;gap:14px;margin-top:20px}
.tema-seg{display:grid;grid-template-columns:1fr 1fr}
.perfil-salir{display:flex;align-items:center;justify-content:center;gap:8px;margin-top:4px;color:var(--accent);border-color:var(--accent)}
.perfil-salir svg{width:18px;height:18px;stroke:currentColor;fill:none;stroke-width:1.8}
.top,.top{display:flex;align-items:center;gap:10px;justify-content:flex-start}
.top .right{margin-left:auto}
@media (min-width:1024px){.top{display:flex}}

/* Dieta */
.kcal-card{text-align:center;padding:22px 16px}
.kcal-grande{display:flex;flex-direction:column;align-items:center;gap:0}
.kcal-grande .big{font-size:56px;line-height:1;letter-spacing:-.03em;font-weight:700}
.kcal-grande .u{font-size:15px;color:var(--muted);margin-top:2px}
.agua{margin:10px 0 0;font-size:14px;font-weight:600}
.kcal-card .meal-progress{margin-top:14px}
.importante{margin:0;padding:11px 14px;border-radius:14px;background:var(--accent-soft);color:var(--ink);font-size:13.5px}
.importante b{color:var(--accent)}
.compra-btn{display:flex;align-items:center;gap:12px;width:100%;padding:11px 14px;border-radius:16px;border:1px solid var(--line);background:var(--surface);color:var(--ink);font:inherit;text-align:left;cursor:pointer}
.compra-ic{font-size:22px}.compra-t{flex:1;display:flex;flex-direction:column;line-height:1.25}
.compra-t b{font-size:14px}.compra-t small{font-size:12px;color:var(--muted)}
.compra-btn .chev{color:var(--muted)}
.opts.pick li.on{background:var(--ok-soft);box-shadow:inset 0 0 0 1.5px var(--ok);border-bottom-color:transparent}
.opts.pick li.on .q,.opts.pick li.on span{color:var(--ink)}
.opts.pick li.on .tick-o{color:var(--ok);font-weight:700}
.cat h4 small.ok-t{color:var(--ok);font-weight:700}
.hecha-btn{letter-spacing:.1em;font-weight:700;width:100%}
.nota-comida{margin:0;font-size:13px;color:var(--muted)}
.reglas{display:flex;flex-direction:column;gap:12px}
.regla-trampa{margin:0;font-size:14px}.regla-trampa b{color:var(--accent)}
.regla-h{margin:0;font-size:12px;letter-spacing:.12em;text-transform:uppercase;color:var(--muted)}
.se-puede{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:8px}
.se-puede li{display:flex;flex-direction:column;font-size:14px}.se-puede span{font-size:12.5px;color:var(--muted)}
.supl{list-style:none;margin:10px 0 0;padding:0;display:flex;flex-direction:column;gap:10px}
.supl li{display:flex;flex-direction:column;gap:1px;font-size:14px}.supl span{font-size:12.5px;color:var(--muted)}
.chips-comida{display:flex;flex-wrap:wrap;gap:8px;margin-top:10px}
.chip-comida{padding:8px 12px;border-radius:999px;border:1px solid var(--line-strong);background:var(--surface-2);color:var(--ink);font:inherit;font-size:13px;cursor:pointer;text-align:left}
.chip-comida.on{background:var(--ok-soft);border-color:var(--ok);font-weight:700}
.compra-res{margin-top:6px;padding:14px;border-radius:16px;background:var(--surface-2)}
.compra-res h4{margin:0 0 8px;font-size:12px;letter-spacing:.12em;text-transform:uppercase;color:var(--muted)}
.compra-res ul{list-style:none;margin:0;padding:0}.compra-res li{display:flex;justify-content:space-between;gap:12px;padding:8px 0;border-top:1px solid var(--line);font-size:14px}.compra-res li:first-child{border-top:0}

/* Hoy: cardio en filas, botones en mayúsculas */
.hoy-cardio-go{align-items:center}
.hoy-cardio-t{flex-direction:row;align-items:baseline;gap:10px;flex-wrap:wrap}
.hoy-cardio-t span{font-size:13px;text-transform:none;letter-spacing:0;color:var(--ink-2);font-weight:600}
.cardio-filas{display:flex;flex-direction:column;gap:0}
.cardio-fila{display:flex;align-items:center;gap:12px;width:100%;padding:11px 2px;border:0;border-top:1px solid var(--line);background:none;color:var(--ink);font:inherit;font-size:12.5px;font-weight:700;letter-spacing:.06em;text-align:left;cursor:pointer}
.cardio-fila i{font-style:normal;width:20px;height:20px;border-radius:50%;border:1.5px solid var(--line-strong);display:grid;place-items:center;font-size:12px;color:#fff;flex:0 0 auto}
.cardio-fila.on i{background:var(--ok);border-color:var(--ok)}.cardio-fila.on{color:var(--ok)}
.cardio-fila:disabled{opacity:.7;cursor:default}
.hoy-peso .btn,.hoy-sesion-cta{text-transform:uppercase;letter-spacing:.08em;font-weight:700}
/* Entreno */
.top{position:sticky}
.top-t{position:absolute;left:0;right:0;text-align:center;pointer-events:none;font-size:14px;font-weight:700;letter-spacing:.14em}
.semana-cab{display:block;text-align:center;margin:6px 0 18px}
.semana-g{font-size:22px;line-height:1.2;letter-spacing:.04em;margin:0 0 6px;font-weight:800}
.semana-s{margin:0;font-size:14px;color:var(--muted)}.semana-s b{color:var(--ink)}
.semana-s.viendo{margin-top:8px;color:var(--accent);font-weight:600}
.sem-dots{display:flex;justify-content:center;gap:10px;margin-top:14px}
.sem-dot{width:40px;height:40px;border-radius:50%;border:1.5px solid var(--line-strong);background:transparent;color:var(--muted);font:inherit;font-weight:700;font-size:15px;cursor:pointer}
.sem-dot.pas{color:var(--ink-2)}
.sem-dot.hoy{background:var(--ok);border-color:var(--ok);color:#fff}
.sem-dot.ver:not(.hoy){border-color:var(--accent);color:var(--ink);box-shadow:0 0 0 3px var(--accent-soft)}
.ses-h{font-size:24px;text-transform:uppercase;letter-spacing:.02em;margin:0}
.ses-m{margin:2px 0 6px;font-size:13px;color:var(--muted)}
.dot-nav{min-width:26px;height:26px;padding:0 4px;font-size:12px;border-radius:8px}
.exnav{gap:5px}
.ex-h{text-transform:uppercase;letter-spacing:.02em}
.ex-play{flex-direction:column;gap:4px;align-content:center;justify-items:center}
.ex-play svg{width:38px;height:38px;stroke:var(--accent);fill:rgba(255,255,255,.9);stroke-width:1.6}
.ex-play em{font-style:normal;font-size:10px;font-weight:700;color:#fff;text-shadow:0 1px 3px rgba(0,0,0,.8);text-align:center;line-height:1.15;padding:0 6px}
.rest-pill{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:16px;border:1px solid var(--line-strong);border-radius:20px;background:var(--surface);margin-bottom:12px}
.rest-t{font-size:13px;font-weight:700;letter-spacing:.08em}
.rest-go{display:inline-flex;align-items:center;gap:6px;height:38px;padding:0 14px;border-radius:999px;border:0;background:var(--accent);color:var(--accent-ink);font:inherit;font-size:12px;font-weight:700;letter-spacing:.08em;cursor:pointer}
.rest-go svg{width:15px;height:15px;fill:none;stroke:currentColor;stroke-width:1.8}
.timer .t-lbl,.timer .t-next{text-transform:uppercase;letter-spacing:.06em}

/* ---- Dieta, ronda 2 ---- */
.kcal-grande{flex-direction:row;align-items:baseline;justify-content:center;gap:8px}
.kcal-grande .big{font-size:46px}.kcal-grande .u{font-size:14px;margin:0}
.comido{margin:8px 0 0;text-align:center;font-size:14px;color:var(--muted)}.comido b{color:var(--ink);font-size:16px}
.meal-progress{margin-top:12px}
.agua-box{display:flex;align-items:center;gap:10px;margin-top:14px;padding:12px;border-radius:16px;background:rgba(56,152,236,.12)}
.agua-box.ok{background:rgba(52,199,130,.16)}
.agua-ic{font-size:26px;line-height:1}
.agua-t{flex:1;min-width:0;display:flex;flex-direction:column;gap:6px;font-size:14px}
.agua-t .track{height:6px;border-radius:6px;background:rgba(127,127,127,.25);overflow:hidden}.agua-t .track i{display:block;height:100%;background:#3898ec;transition:width .3s}
.agua-box.ok .track i{background:var(--ok,#34c782)}
.agua-b{width:38px;height:38px;border-radius:50%;border:1px solid var(--line);background:var(--surface);color:var(--ink);font-size:20px;line-height:1;cursor:pointer}
.agua-b.mas{background:#3898ec;border-color:#3898ec;color:#fff}.agua-b:disabled{opacity:.35}
.agua-h{margin:6px 0 0;font-size:12px;color:var(--muted);text-align:center}
.session-head h1{font-size:28px}
.meal summary h2,.cat h4{text-transform:uppercase;letter-spacing:.04em}
.se-puede b{letter-spacing:.03em}
.sheet-logo{display:flex;justify-content:center;padding:4px 0 10px}
.compra-res{background:var(--accent-soft);border:1px solid var(--accent)}
.compra-res h4{color:var(--accent);font-weight:700}
.compra-res li b{color:var(--accent)}
.agua-t{text-align:left;font-size:13.5px}.agua-t b{font-weight:600}
/* ---- Ronda 3 ---- */
.top.centro{justify-content:center}
.top.centro .right{margin-left:0}
.top .icon-btn.right svg{width:22px;height:22px;stroke:var(--accent)}
.hoy-cardio-t span{text-transform:uppercase;letter-spacing:.04em}
.cardio-pista{margin:8px 0 6px;font-size:12.5px;color:var(--muted);text-transform:none}
.ses-l{display:flex;align-items:baseline;justify-content:space-between;gap:12px}
.ses-l .ses-h{font-size:26px;flex:none}
.ses-l .ses-m{margin:0;font-size:12.5px;color:var(--muted);text-align:right;line-height:1.25}
.ex-vid{display:flex;flex-direction:column;gap:6px;align-items:stretch}
.ex-vid .ex-thumb{width:100%}
.ex-vid .yt{position:absolute;right:6px;bottom:6px;width:32px;height:23px;line-height:0;filter:drop-shadow(0 1px 3px rgba(0,0,0,.5))}
.ex-vid .yt svg{width:100%;height:100%}
.ex-cap{font-size:11px;color:var(--muted);text-align:center;line-height:1.2}
.ex-thumb .ex-play{display:none}
/* botones tipo píldora (iPhone) */
.ex-act{border-radius:999px;background:var(--surface-2);box-shadow:0 0 0 1.5px var(--accent);min-height:38px}
.rest-pill{border-radius:999px;padding:12px 14px 12px 20px}
.rest-pill.run{padding:6px}
.rest-pill.run > .rest-t,.rest-pill.run > .rest-go{display:none}
.rest-pill > .timer.inline{flex:1;margin:0;background:transparent;padding:0}
.ex h2.ex-h{text-transform:uppercase}

/* ---- Ronda 4: Hoy panel, Perfil tarjetas, sesión limpia ---- */
.racha{display:inline-flex;align-items:center;gap:6px;margin-top:8px;padding:6px 12px 6px 8px;border-radius:999px;background:var(--accent-soft);color:var(--accent);font-size:12.5px;font-weight:700;width:fit-content}
.racha svg{width:16px;height:16px;fill:var(--accent);stroke:none}
.anillos{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;padding:14px 6px;border-radius:20px;background:var(--surface);border:1px solid var(--line)}
.anillos:has(> :nth-child(2):last-child){grid-template-columns:repeat(2,1fr)}
.anillo{position:relative;display:flex;flex-direction:column;align-items:center;gap:2px;background:none;border:0;color:var(--ink);font:inherit;cursor:pointer;padding:0}
.anillo svg{width:76px;height:76px;transform:rotate(-90deg)}
.anillo .an-bg{fill:none;stroke:rgba(127,127,127,.18);stroke-width:6}
.anillo .an-fg{fill:none;stroke:var(--accent);stroke-width:6;stroke-linecap:round;transition:stroke-dashoffset .6s ease}
.anillo.agua .an-fg{stroke:#3898ec}.anillo.ok .an-fg{stroke:var(--ok,#34c782)}
.anillo .an-v{position:absolute;top:28px;font-weight:700;font-size:14px;letter-spacing:-.01em}
.anillo .an-l{margin-top:4px;font-size:11px;letter-spacing:.12em;text-transform:uppercase;color:var(--ink-2);font-weight:700}
.anillo .an-s{font-size:11px;color:var(--muted);text-align:center;line-height:1.2}
.sem-tira{display:grid;grid-template-columns:repeat(7,1fr);gap:6px;padding:0 4px}
.sem-tira span{display:flex;flex-direction:column;align-items:center;gap:5px;font-size:11px;color:var(--muted)}
.sem-tira span b{font-weight:600}
.sem-tira span i{width:26px;height:26px;border-radius:50%;border:1.5px solid var(--line-strong);display:grid;place-items:center;font-style:normal;font-size:12px;font-weight:700}
.sem-tira span.on i{background:var(--ok,#34c782);border-color:var(--ok,#34c782);color:#fff}
.sem-tira span.hoy i{border-color:var(--accent);box-shadow:0 0 0 2px rgba(229,23,63,.25)}
.pasos-q{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-top:12px;padding-top:12px;border-top:1px solid var(--line);font-size:13.5px}
.seg.mini{padding:3px;gap:2px}.seg.mini button{padding:6px 14px;font-size:13px;min-width:0}
.obs-row .note-in{display:none}.obs-row.open .note-in{display:block}.obs-row.open .obs-btn{display:none}
.obs-btn{display:inline-flex;align-items:center;gap:6px;background:none;border:0;color:var(--muted);font:inherit;font-size:12.5px;padding:4px 0;cursor:pointer}
.obs-btn svg{width:14px;height:14px;fill:none;stroke:currentColor;stroke-width:1.8}
.scale.caras{display:flex;gap:8px;justify-content:space-between}
.scale.caras button{flex:1;height:48px;border-radius:14px;font-size:24px;line-height:1;filter:grayscale(.6);opacity:.75}
.scale.caras button.on{filter:none;opacity:1;background:var(--accent-soft);box-shadow:0 0 0 1.5px var(--accent)}
.cardio-l li{text-transform:none;letter-spacing:0;font-size:14px}
.ptiles{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.ptile{display:flex;flex-direction:column;align-items:flex-start;gap:2px;padding:16px;border-radius:20px;background:var(--surface);border:1px solid var(--line);color:var(--ink);font:inherit;text-align:left;cursor:pointer;min-height:120px}
.ptile:active{background:var(--surface-2)}
.ptile-ic{width:32px;height:32px;border-radius:10px;background:var(--accent-soft);display:grid;place-items:center;margin-bottom:8px}
.ptile-ic svg{width:18px;height:18px;fill:none;stroke:var(--accent);stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}
.ptile-l{font-size:11px;letter-spacing:.14em;text-transform:uppercase;color:var(--muted);font-weight:700}
.ptile-v{font-size:26px;line-height:1.05;letter-spacing:-.02em;font-weight:700}.ptile-v small{font-size:12px;margin-left:3px;color:var(--muted);font-weight:600;letter-spacing:0}
.ptile-s{font-size:12px;color:var(--muted);line-height:1.25;margin-top:4px}.ptile-s em{font-style:normal;font-weight:600}.ptile-s em.baja{color:var(--ok,#34c782)}.ptile-s em.sube{color:#e6a23c}

/* ===== Pasada de diseño (iOS): motion, tamaños, Hoy, iconos ===== */
.page{animation:none}
.page.izq{animation:pageIzq .26s cubic-bezier(.2,.8,.2,1)}
.page.der{animation:pageDer .26s cubic-bezier(.2,.8,.2,1)}
@keyframes pageIzq{from{opacity:0;transform:translateX(22px)}to{opacity:1;transform:none}}
@keyframes pageDer{from{opacity:0;transform:translateX(-22px)}to{opacity:1;transform:none}}
.btn,.ptile,.anillo,.cardio-fila,.day,.hoy-sesion,.ex-act,.rest-go,.tabbar nav button,.set-step,.dot-nav,.opts.pick li,.chip-comida,.seg button,.scale button,.agua-b,.compra-btn,.icon-btn,.hecha-btn,.sem-dots button{transition:transform .14s cubic-bezier(.2,.8,.2,1),background-color .18s,box-shadow .18s,color .18s,opacity .18s}
.btn:active,.ptile:active,.anillo:active,.cardio-fila:active,.day:active,.hoy-sesion:active,.ex-act:active,.rest-go:active,.set-step:active,.dot-nav:active,.opts.pick li:active,.chip-comida:active,.scale button:active,.agua-b:active,.compra-btn:active,.icon-btn:active,.hecha-btn:active{transform:scale(.965)}
.tabbar nav button:active{transform:scale(.92)}
.tabbar nav button[aria-current] svg{animation:tabPop .3s cubic-bezier(.2,.8,.2,1)}
@keyframes tabPop{40%{transform:scale(1.18)}}
.sheet{animation:sheetUp .32s cubic-bezier(.2,.8,.2,1)}
@keyframes sheetUp{from{transform:translateY(40px);opacity:0}to{transform:none;opacity:1}}
.sheet-bg{animation:fadeIn .2s ease}
@keyframes fadeIn{from{opacity:0}to{opacity:1}}
.cardio-fila.on i,.opts.pick li.on .tick-o{animation:dot-ok .3s cubic-bezier(.2,.8,.2,1)}
.anillo .an-fg{stroke-dasharray:var(--c);stroke-dashoffset:var(--o);animation:ringIn .9s cubic-bezier(.2,.8,.2,1) both}
@keyframes ringIn{from{stroke-dashoffset:var(--c)}}
@media (prefers-reduced-motion:reduce){.page,.sheet,.sheet-bg,.anillo .an-fg,.tabbar nav button[aria-current] svg{animation:none}}

h1{font-size:28px;letter-spacing:-.03em}
.crumb{font-size:11.5px;letter-spacing:.12em}
.hoy-head h1{font-size:30px}
.kcal-grande .big,.phero-v,.hoy-peso-v,.hoy-tend-grande b{font-weight:800;letter-spacing:-.035em}

.semana-card{padding:16px 14px 14px}
.semana-h{display:flex;align-items:baseline;justify-content:space-between;margin-bottom:12px}
.semana-h h3{margin:0;font-size:12px;letter-spacing:.14em;text-transform:uppercase;color:var(--muted)}
.anillos{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:6px;padding:0;border:0;background:none;border-radius:0}
.anillos:has(> :nth-child(2):last-child){grid-template-columns:repeat(2,minmax(0,1fr))}
.anillos:has(> :only-child){grid-template-columns:minmax(0,1fr)}
.anillo{min-width:0}
.anillo svg{width:72px;height:72px}
.anillo .an-v{top:26px;font-size:15px;font-weight:800}
.anillo .an-l{font-size:10.5px}
.semana-frase{margin:12px 0 0;text-align:center;font-size:14px;color:var(--ink-2)}
.sem-tira{margin-top:14px;padding:0}
.sem-tira span i{width:28px;height:28px}
.sem-tira span i svg{width:14px;height:14px;fill:none;stroke:#fff;stroke-width:2.4}
.hoy-cardio-go{cursor:default;align-items:center}
.hoy-cardio-t{flex-direction:column;gap:2px;align-items:flex-start}
.hoy-cardio-t span{font-size:15px;font-weight:600;color:var(--ink);text-transform:none;letter-spacing:0}
.pasos-q{flex-direction:column;align-items:stretch;gap:8px;margin:0 14px;padding:12px 0}
.pasos-q span{font-size:13.5px;color:var(--ink-2)}
.seg.mini button{padding:9px 0;font-size:14px}
.cardio-fila{font-size:12px;letter-spacing:.04em;white-space:normal;line-height:1.3}
.cardio-fila span{flex:1;min-width:0}
.hoy-sesion{padding:16px 14px}
.hoy-sesion-cta{white-space:nowrap}
.racha svg.fill{fill:var(--accent);stroke:none}

.rest-pill{flex-wrap:wrap;row-gap:10px;padding:12px 12px 12px 18px}
.rest-t{flex:1 1 150px;line-height:1.25}
.rest-go{flex:0 0 auto}
.rest-pill.run{padding:8px 10px}
.timer.inline .t-ring{width:58px;height:58px}
.timer.inline .t-clock{font-size:17px;font-weight:800;letter-spacing:-.02em}
.timer.inline .t-lbl{font-size:12px;letter-spacing:.12em;font-weight:700}
.timer.inline .t-next{display:none}
.timer.inline .t-acts button{width:40px;height:40px}
.ex-act{white-space:normal;line-height:1.15;padding:6px 10px}
.hoy-peso-row{flex-wrap:wrap;row-gap:10px}
.btn{white-space:nowrap}

.scale.caras button{filter:none;opacity:1;padding:0;color:var(--muted);background:var(--surface-2)}
.scale.caras button svg{width:30px;height:30px;fill:none;stroke:currentColor;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round}
.scale.caras button svg .ojo{fill:currentColor;stroke:none}
.scale.caras button.on{color:var(--accent);background:var(--accent-soft);box-shadow:0 0 0 1.5px var(--accent)}

.objetivo{display:flex;flex-direction:column;gap:10px}
.obj-h{display:flex;align-items:center;gap:8px}.obj-h h3{margin:0;font-size:12px;letter-spacing:.14em;text-transform:uppercase;color:var(--muted);flex:1}
.obj-h svg{width:18px;height:18px;fill:none;stroke:var(--accent);stroke-width:1.8}
.obj-t{margin:0;font-size:17px;font-weight:600;line-height:1.3}
.obj-meta{display:flex;gap:18px;flex-wrap:wrap}.obj-meta span{display:flex;flex-direction:column}.obj-meta small{font-size:11px;letter-spacing:.08em;text-transform:uppercase;color:var(--muted)}.obj-meta b{font-size:16px}
.objetivo .track{height:6px}

.reglas summary h3{font-size:12px;letter-spacing:.14em;text-transform:uppercase;margin:0}
.fold summary{list-style:none;display:flex;align-items:center;justify-content:space-between;cursor:pointer}
.fold summary::-webkit-details-marker{display:none}
.fold summary::after{content:'+';font-size:18px;color:var(--muted);transition:transform .2s}
.fold[open] summary::after{transform:rotate(45deg)}

/* ===== Ronda 5: Hoy mínimo, Entreno gráfico, Dieta en dos widgets, Mi gimnasio, cierre semanal ===== */
.anillos-top{padding:2px 0 0}
.anillos-top .anillos{gap:4px}
.anillos-top .anillo svg{width:84px;height:84px}
.anillos-top .anillo .an-v{top:31px;font-size:17px}
.anillos-top .semana-frase{margin:10px 0 0;font-size:13.5px;color:var(--muted)}
.hoy-peso{padding:12px 14px}
.hoy-peso .weigh-in input{font-size:28px;height:44px}
.hoy-peso .btn{height:40px;padding:0 14px;font-size:14px}
.hoy-peso-l{font-size:11.5px;letter-spacing:.12em;text-transform:uppercase;color:var(--muted)}
.hoy-peso .pista{display:none}
.hoy-peso .hoy-tend-linea{margin-top:8px;padding-top:8px;border-top:1px solid var(--line);font-size:13px}
.hoy-peso.hecho{padding:12px 14px}
.hoy-peso-v{font-size:32px}
.hoy-tend-grande b{font-size:24px}
.hoy-cardio.compacta .hoy-cardio-go{padding:12px 14px;gap:10px}
.hoy-cardio.compacta .hoy-cardio-t b{font-size:11.5px}
.hoy-cardio.compacta .hoy-cardio-t span{font-size:14px}
.pasos-seg{margin-left:auto;flex:0 0 auto;min-width:112px}
.cardio-pista.arriba{margin:-6px 14px 8px 46px;font-size:11.5px}
.hoy-cardio.compacta .cardio-cuenta{padding:10px 14px 12px;border-top:1px solid var(--line)}
.hoy-cardio.compacta .cardio-cuenta-t{margin-bottom:8px;font-size:12.5px}
.cardio-pills{display:flex;flex-wrap:wrap;gap:8px}
.cardio-pill{display:inline-flex;align-items:center;gap:7px;padding:8px 12px 8px 8px;border-radius:999px;border:1.5px solid var(--line-strong);background:none;color:var(--ink);font:inherit;font-size:12px;font-weight:700;letter-spacing:.06em;cursor:pointer;transition:transform .14s,background-color .18s,border-color .18s}
.cardio-pill i{width:20px;height:20px;border-radius:50%;border:1.5px solid var(--line-strong);display:grid;place-items:center;font-style:normal}
.cardio-pill i svg{width:12px;height:12px;fill:none;stroke:#fff;stroke-width:2.6}
.cardio-pill.on{background:var(--ok-soft);border-color:var(--ok);color:var(--ok)}
.cardio-pill.on i{background:var(--ok);border-color:var(--ok)}
.cardio-pill:active{transform:scale(.96)}
.hoy-tarea{display:flex;align-items:center;gap:12px;width:100%;padding:12px 14px;border-radius:16px;border:1px dashed var(--accent-line);background:var(--accent-soft);color:var(--ink);font:inherit;text-align:left;cursor:pointer}
.hoy-tarea-t{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px}
.hoy-tarea-t b{font-size:14px}.hoy-tarea-t span{font-size:12.5px;color:var(--muted)}
.hoy-tarea .hoy-fila-ic svg{stroke:var(--accent)}

/* Entreno: cabecera gráfica */
.sem-segs{display:grid;grid-template-columns:repeat(4,1fr);gap:6px;margin:14px 0 12px}
.sem-seg{position:relative;height:34px;border-radius:10px;border:0;background:var(--surface-2);overflow:hidden;color:var(--muted);font:inherit;font-size:13px;font-weight:700;cursor:pointer;padding:0}
.sem-seg i{position:absolute;inset:0 auto 0 0;background:var(--line-strong);transition:width .6s cubic-bezier(.2,.8,.2,1)}
.sem-seg.pas i{background:var(--ok)}.sem-seg.hoy i{background:var(--accent)}
.sem-seg span{position:relative}
.sem-seg.pas,.sem-seg.hoy{color:#fff}
.sem-seg.ver{box-shadow:0 0 0 2px var(--ink)}
.sem-stats{display:grid;grid-template-columns:1fr 1fr;gap:8px}
.sem-stats div{display:flex;flex-direction:column;align-items:center;padding:10px;border-radius:14px;background:var(--surface);border:1px solid var(--line)}
.sem-stats b{font-size:20px;letter-spacing:-.02em}.sem-stats span{font-size:11px;letter-spacing:.08em;text-transform:uppercase;color:var(--muted)}
.sem-dots{display:none}

/* Dieta */
.dieta-top{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.dieta-top .card{padding:14px 12px;display:flex;flex-direction:column;gap:6px;min-width:0}
.dt-l{font-size:11px;letter-spacing:.14em;text-transform:uppercase;color:var(--muted)}
.dieta-top .kcal-grande{justify-content:flex-start;gap:6px;flex-wrap:wrap}
.dieta-top .kcal-grande .big{font-size:30px}.dieta-top .kcal-grande .u{font-size:12px}
.dieta-top .comido{margin:0;text-align:left;font-size:12.5px}
.dieta-top .meal-progress{margin-top:4px}
.agua-card .track{height:6px;border-radius:6px;background:rgba(127,127,127,.22);overflow:hidden}.agua-card .track i{display:block;height:100%;background:#3898ec}
.agua-card.ok .track i{background:var(--ok)}
.agua-btns{display:flex;gap:6px;margin-top:2px}
.agua-btns .agua-b{height:34px;width:34px;border-radius:10px;font-size:18px}
.agua-btns .agua-b.mas{width:auto;flex:1;font-size:13px;font-weight:700;letter-spacing:.04em}
.compra-btn.chica{padding:10px 14px}.compra-btn.chica .compra-t b{font-size:14px}
.dieta-sec{margin:6px 0 -6px;font-size:11.5px;letter-spacing:.16em;text-transform:uppercase;color:var(--muted)}
.meal summary h2{font-size:20px}
.crudo{margin:0 0 10px;padding:8px 10px;border-radius:10px;background:var(--accent-soft);color:var(--ink-2);font-size:12.5px}
.crudo::before{content:'';display:inline-block;width:6px;height:6px;border-radius:50%;background:var(--accent);margin-right:8px;vertical-align:middle}
.reglas-l,.supl{list-style:none;margin:10px 0 0;padding:0;display:flex;flex-direction:column;gap:12px}
.reglas-l li,.supl li{display:flex;flex-direction:column;gap:2px;font-size:14px}
.reglas-l li b,.supl li b{letter-spacing:.04em}
.reglas-l li span,.supl li span{font-size:13px;color:var(--ink-2);line-height:1.45}
.supl-g{margin:14px 0 0;font-size:11px;letter-spacing:.14em;text-transform:uppercase;color:var(--accent)}
.supl-g:first-of-type{margin-top:10px}

/* Mi gimnasio */
.gim-cab{display:flex;flex-direction:column;gap:8px}
.gim-cab .track{height:6px}
.gim-g summary h3{margin:0;font-size:12px;letter-spacing:.14em;text-transform:uppercase}
.gim-g summary .gim-c{margin-left:auto;margin-right:10px}
.gim-l{display:flex;flex-direction:column;margin-top:6px}
.gim-i{display:flex;align-items:center;gap:10px;padding:10px 0;border-top:1px solid var(--line)}
.gim-i:first-child{border-top:0}
.gim-ic{width:40px;height:40px;border-radius:12px;background:var(--surface-2);display:grid;place-items:center;flex:none}
.gim-ic svg{width:24px;height:24px;fill:none;stroke:var(--ink-2);stroke-width:1.6;stroke-linecap:round;stroke-linejoin:round}
.gim-i.si .gim-ic{background:var(--ok-soft)}.gim-i.si .gim-ic svg{stroke:var(--ok)}
.gim-i.no .gim-ic svg{stroke:var(--muted);opacity:.55}.gim-i.no .gim-t b{color:var(--muted)}
.gim-t{flex:1;min-width:0;display:flex;flex-direction:column}
.gim-t b{font-size:14px;line-height:1.2}.gim-t small{font-size:11.5px;color:var(--muted)}
.gim-i .seg.mini{flex:0 0 auto;width:104px}
.gim-i .seg.mini button{padding:7px 0;font-size:13px}
.gim-i .seg.mini button[aria-pressed="true"]{background:var(--ink);color:var(--bg)}
.gim-i.si .seg.mini button[aria-pressed="true"]{background:var(--ok);color:#fff}

/* Cierre semanal: ejercicios */
.scale.yn{display:grid;grid-template-columns:1fr 1fr}
.wc-motivos{display:flex;flex-direction:column;gap:8px;margin-top:10px}
.wc-m{display:flex;flex-direction:column;gap:6px;padding:10px;border-radius:12px;background:var(--surface-2)}
.wc-m b{font-size:13.5px}
.wc-m .seg.mini button{font-size:12px;padding:7px 4px}
.chip-comida.on{background:var(--accent);color:#fff;border-color:var(--accent)}

/* Coach: lo que sabemos */
.sab-h{margin:12px 0 6px;font-size:11px;letter-spacing:.14em;text-transform:uppercase;color:var(--muted)}
.sab-l{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:8px}
.sab-l li{display:flex;align-items:center;gap:10px;justify-content:space-between}
.sab-l li div{display:flex;flex-direction:column;min-width:0}.sab-l li span{font-size:12.5px;color:var(--muted)}
.sab-l li.res{opacity:.55}.sab-l li.res b{text-decoration:line-through}
.sab-chips{display:flex;flex-wrap:wrap;gap:6px}
.chip.no{background:var(--warn-soft);color:var(--warn);border:0;padding:5px 10px;border-radius:999px;font-size:12px;font-weight:600}

/* fotos de máquinas */
.gim-ic{position:relative;overflow:hidden;border:0;padding:0;cursor:pointer;width:56px;height:56px;border-radius:12px;background:var(--surface-2)}
.gim-ic img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;background:#fff}
.gim-ic svg{width:26px;height:26px}
.gim-i.no .gim-ic img{opacity:.45;filter:grayscale(1)}
.gim-ic::after{content:'';position:absolute;right:3px;bottom:3px;width:14px;height:14px;border-radius:50%;background:rgba(0,0,0,.55) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23fff' stroke-width='2.4' stroke-linecap='round'%3E%3Ccircle cx='11' cy='11' r='6'/%3E%3Cpath d='M20 20l-4.5-4.5'/%3E%3C/svg%3E") center/9px no-repeat}
.foto-bg{align-items:center}
.foto-sheet{max-width:420px;padding:10px 10px 14px;gap:10px;align-items:center;text-align:center}
.foto-sheet img{width:100%;max-height:60vh;object-fit:contain;border-radius:14px;background:#fff}
.foto-sheet .foto-sin{display:none;flex-direction:column;align-items:center;gap:8px;padding:30px 0;color:var(--muted)}
.foto-sheet .foto-sin svg{width:48px;height:48px;fill:none;stroke:var(--muted);stroke-width:1.4}
.foto-sheet.sin img{display:none}.foto-sheet.sin .foto-sin{display:flex}
.foto-t{display:flex;flex-direction:column;gap:2px}.foto-t b{font-size:17px}.foto-t span{font-size:13px;color:var(--muted)}

/* ronda 6 */
.anillos-top{padding-top:6px}
.punto-vivo{display:inline-block;width:8px;height:8px;border-radius:50%;background:var(--accent);margin-right:8px;vertical-align:middle;box-shadow:0 0 0 0 rgba(229,23,63,.6);animation:latido 1.6s ease-out infinite}
@keyframes latido{0%{box-shadow:0 0 0 0 rgba(229,23,63,.55)}70%{box-shadow:0 0 0 8px rgba(229,23,63,0)}100%{box-shadow:0 0 0 0 rgba(229,23,63,0)}}
@media (prefers-reduced-motion:reduce){.punto-vivo{animation:none}}
.dieta-head{align-items:center;text-align:center}
.dieta-head h1{font-size:22px;letter-spacing:.08em}
.meal{border:1.5px solid var(--accent-line);box-shadow:none}
.meal.next{border-color:var(--accent)}
.meal.done{border-color:var(--line);background:var(--surface)}
.meal summary .badge{background:var(--accent);color:#fff}
.meal.done summary .badge{background:var(--ok)}
.dieta-sec{color:var(--accent)}

/* ===== CRM del entrenador (escritorio) ===== */
.main.ancha .page{gap:18px}
@media (min-width:1024px){
  .main:has(.crm-cols){max-width:1320px}
  .main:has(.crm-cols) .metrics{grid-template-columns:repeat(6,minmax(0,1fr))}
  .crm-cols{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px;align-items:start}
}
.crm-col{background:var(--surface);border:1px solid var(--line);border-radius:18px;padding:14px;display:flex;flex-direction:column;gap:8px}
.crm-col .bloque-h{margin-bottom:4px}
.crm-col .av{background:var(--surface-2)}
.pan-sub{margin:6px 0 2px;font-size:11px;letter-spacing:.12em;text-transform:uppercase;color:var(--muted)}
.pan-sub.mal{color:var(--accent)}
.pan-row{display:flex;align-items:center;gap:10px;padding:8px 10px;border-radius:12px;background:var(--surface-2)}
.pan-row.urge{box-shadow:inset 3px 0 0 var(--accent)}
.pan-row .ent-dia{min-width:38px;text-align:center}.pan-row .ent-dia b{font-size:18px;display:block;line-height:1}.pan-row .ent-dia span{font-size:10px;color:var(--muted);letter-spacing:.06em;text-transform:uppercase}
.pan-row .ent-main{flex:1;min-width:0;display:flex;flex-direction:column}.pan-row .ent-main b{font-size:14px}.pan-row .ent-main span{font-size:12px;color:var(--muted)}
.pan-row .chip{font-size:11px}
.metric .v.mal{color:var(--accent)}
.ctab.act{width:100%;border-collapse:collapse;font-size:13px}
.ctab.act th{font-size:10.5px;letter-spacing:.1em;text-transform:uppercase;color:var(--muted);text-align:left;padding:8px 10px;border-bottom:1px solid var(--line);white-space:nowrap}
.ctab.act td{padding:10px;border-bottom:1px solid var(--line);vertical-align:middle}
.ctab.act td.num{font-variant-numeric:tabular-nums;white-space:nowrap}
.ctab.act td small{display:block;font-size:11px;color:var(--muted)}
.ctab.act td.nom{min-width:170px}.ctab.act td.nom b{display:inline-block;vertical-align:middle}
.ctab.act tr.fila-cli{cursor:pointer}.ctab.act tr.fila-cli:hover td{background:var(--surface-2)}
.sem{display:inline-block;width:9px;height:9px;border-radius:50%;margin-right:8px;vertical-align:middle;background:var(--line-strong)}
.sem.verde{background:var(--ok)}.sem.ambar{background:var(--warn)}.sem.rojo{background:var(--accent)}
.mini-track{height:3px;border-radius:3px;background:var(--line);margin-top:4px;overflow:hidden;min-width:48px}.mini-track i{display:block;height:100%;background:var(--ok)}
.ctab.act .mal{color:var(--accent);font-weight:700}
.ctab.act .baja{color:var(--ok)}.ctab.act .sube{color:var(--warn)}
.pill.mini{font-size:10px;padding:2px 6px}
.cita{max-width:220px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-size:11.5px;color:var(--ink-2);margin-top:2px}
.atajos{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}
.atajo{display:flex;flex-direction:column;align-items:flex-start;gap:0;padding:10px 12px;border-radius:12px;border:1px solid var(--line);background:var(--surface);color:var(--ink);font:inherit;cursor:pointer;text-align:left}
.atajo .n{font-size:20px;font-weight:700}.atajo .t{font-size:12px;font-weight:600}.atajo .d{font-size:11px;color:var(--muted)}
@media (max-width:1023px){.ctab.act{font-size:12px}.ctab.act th,.ctab.act td{padding:8px 6px}}


/* ===== Ronda 7: tema claro con más cuerpo, anillos, pasos de la semana, campanita, sesión, temporizador, dieta, perfil, Mi gimnasio ===== */
@media (prefers-color-scheme: light) {
  :root:not([data-tema="oscuro"]) {
    --bg: #F4F4F6; --surface: #FFFFFF; --surface-2: #EEEEF1; --line: #E1E1E6; --line-strong: #C9C9D0;
    --ink: #0A0A0C; --ink-2: #2C2C31; --muted: #6B6B74; --accent: #E11D48; --brand: #E11D48;
    --accent-soft: rgba(225,29,72,.10); --accent-line: rgba(225,29,72,.38);
    --shadow: 0 1px 3px rgba(0,0,0,.06), 0 1px 2px rgba(0,0,0,.04), 0 10px 24px -18px rgba(0,0,0,.18);
  }
}
:root[data-tema="claro"] {
  --bg: #F4F4F6; --surface: #FFFFFF; --surface-2: #EEEEF1; --line: #E1E1E6; --line-strong: #C9C9D0;
  --ink: #0A0A0C; --ink-2: #2C2C31; --muted: #6B6B74; --accent: #E11D48; --brand: #E11D48;
  --accent-soft: rgba(225,29,72,.10); --accent-line: rgba(225,29,72,.38);
  --shadow: 0 1px 3px rgba(0,0,0,.06), 0 1px 2px rgba(0,0,0,.04), 0 10px 24px -18px rgba(0,0,0,.18);
}
h1,.ses-h,.semana-g,.ex-h{font-weight:800}
.hoy-head h1{font-size:30px;letter-spacing:-.02em}
.btn{box-shadow:0 1px 2px rgba(0,0,0,.12)}
.pill{border-color:var(--line-strong);color:var(--ink-2)}
.tabbar button[aria-current="page"]{color:var(--accent)}
.tabbar button[aria-current="page"] svg{stroke:var(--accent)}
/* anillos con más presencia */
.anillo svg{width:84px;height:84px}
.anillo .an-bg{stroke:var(--line-strong);stroke-width:7.5;opacity:.9}
.anillo .an-fg{stroke-width:7.5}
.anillo .an-v{top:31px;font-size:16px;font-weight:800}
.anillo .an-l{color:var(--ink)}
/* selector de semana: el número se lee siempre */
.sem-seg{background:var(--surface);box-shadow:0 0 0 1.5px var(--line-strong) inset;color:var(--ink-2);height:38px;font-size:15px}
.sem-seg i{background:var(--surface-2)}
.sem-seg.pas i{background:var(--ok)}.sem-seg.hoy i{background:var(--accent)}
.sem-seg.pas,.sem-seg.hoy{color:#fff}
.sem-seg.ver{box-shadow:0 0 0 2.5px var(--accent) inset}
.sem-seg.ver:not(.hoy):not(.pas){color:var(--accent)}
/* pasos de la semana */
.pasos-sem{padding:0 14px 12px}
.pasos-dias{display:grid;grid-template-columns:repeat(7,1fr);gap:6px}
.pdia{display:flex;flex-direction:column;align-items:center;gap:5px;background:none;border:0;padding:0;font:inherit;color:var(--muted);cursor:pointer}
.pdia i{width:34px;height:34px;border-radius:50%;display:grid;place-items:center;background:var(--surface-2);box-shadow:0 0 0 1.5px var(--line-strong) inset;color:#fff;font-size:14px;font-weight:800;font-style:normal;transition:transform .15s,background .2s}
.pdia i svg{width:16px;height:16px;stroke:#fff;fill:none;stroke-width:2.6}
.pdia span{font-size:11px;font-weight:700;letter-spacing:.06em}
.pdia.si i{background:var(--ok);box-shadow:none}.pdia.no i{background:var(--accent);box-shadow:none}
.pdia.hoy span{color:var(--ink)}.pdia.hoy i{box-shadow:0 0 0 2px var(--ink) inset}
.pdia.si.hoy i,.pdia.no.hoy i{box-shadow:0 0 0 2px var(--ink)}
.pdia:disabled{opacity:.45;cursor:default}.pdia:active i{transform:scale(.92)}
/* campanita */
.hoy-head-row{display:flex;align-items:center;justify-content:space-between;gap:10px}
.campana{position:relative;width:42px;height:42px;border-radius:50%;border:1px solid var(--line-strong);background:var(--surface);color:var(--ink);display:grid;place-items:center;cursor:pointer;box-shadow:var(--shadow)}
.campana svg{width:21px;height:21px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}
.campana b{position:absolute;top:-4px;right:-4px;min-width:19px;height:19px;padding:0 5px;border-radius:999px;background:var(--accent);color:#fff;font-size:11px;font-weight:800;display:grid;place-items:center;box-shadow:0 0 0 2px var(--bg)}
.campana.con{animation:campana-pop .5s ease}
@keyframes campana-pop{0%{transform:scale(1)}40%{transform:scale(1.12) rotate(-8deg)}70%{transform:rotate(6deg)}100%{transform:scale(1)}}
.avisos-l{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:10px}
.aviso{border:1px solid var(--line);border-left:3px solid var(--accent);border-radius:14px;padding:12px 14px;background:var(--surface-2)}
.aviso.leido{border-left-color:var(--line-strong);opacity:.75}.aviso.vacio{border-left-color:var(--line);color:var(--muted);text-align:center}
.aviso-t{font-size:14.5px;line-height:1.45}
.aviso-f{display:flex;justify-content:space-between;gap:10px;margin-top:8px;font-size:12px;color:var(--muted)}
.aviso-f .link{font-size:12px;padding:0}
/* X de cerrar siempre a mano en las hojas */
.sheet .sheet-top{position:sticky;top:-20px;z-index:3;background:var(--surface);padding:6px 0 10px;margin-top:-6px;align-items:flex-start}
.sheet .sheet-top h2{font-size:18px;letter-spacing:.02em;line-height:1.2}
.x-cerrar{flex:none;width:36px;height:36px;border-radius:50%;border:1px solid var(--line-strong);background:var(--surface-2);color:var(--ink);font-size:15px;font-weight:700;display:grid;place-items:center;cursor:pointer}
.x-cerrar:active{background:var(--line)}
/* sesión: nombre del día y músculos seguidos */
.ses-l{justify-content:flex-start}
.ses-l .ses-h{flex:1;font-size:24px;line-height:1.2}
.ses-l .ses-h .ses-m{font-size:13px;color:var(--muted);letter-spacing:.02em;text-transform:none;font-weight:600;white-space:normal;text-align:left}
/* nombre del ejercicio en una sola línea */
.ex-h{white-space:nowrap;overflow:hidden;display:block}
/* vídeo + dos pastillas a la misma altura */
.ex-media{grid-template-columns:1fr 1fr;align-items:stretch}
.ex-vid{display:flex;flex-direction:column;gap:5px;min-height:0}
.ex-vid .ex-thumb{flex:1;min-height:0;height:auto;aspect-ratio:auto;width:100%}
.ex-vid .ex-thumb img{height:100%}
.ex-media .ex-acts{display:grid;grid-auto-rows:1fr;gap:8px}
.ex-act{min-height:38px;padding:4px 8px;font-size:11px;letter-spacing:.05em}
.ex-vid .yt{inset:0;margin:auto;right:auto;bottom:auto;width:44px;height:31px}
/* observación siempre abierta */
.obs-row .note-in{display:block}.obs-row .obs-btn{display:none}
.obs-in{min-height:50px;padding:13px 14px;font-size:14px;border-radius:14px;background:var(--surface);border:1.5px dashed var(--line-strong)}
.obs-in:focus{border-style:solid;border-color:var(--accent)}
.obs-in::placeholder{color:var(--muted)}
/* temporizador: más reloj, botones separados */
.timer.inline{gap:14px;padding:10px 14px 10px 10px}
.timer.inline .t-ring{width:72px;height:72px;background:conic-gradient(var(--accent) calc(var(--p) * 1%), var(--line-strong) 0);box-shadow:0 0 0 3px var(--surface),0 0 0 4px var(--line)}
.timer.inline .t-ring::before{inset:5px;background:var(--surface);background-image:repeating-conic-gradient(from -1.5deg,var(--line-strong) 0 3deg,transparent 3deg 30deg);-webkit-mask:radial-gradient(circle,transparent 60%,#000 61%);mask:radial-gradient(circle,transparent 60%,#000 61%)}
.timer.inline .t-ring::after{content:"";position:absolute;inset:5px;border-radius:50%;background:var(--surface);z-index:0}
.timer.inline .t-ring::before{z-index:1}
.timer.inline .t-clock{z-index:2;font-size:19px;font-weight:800}
.timer.inline .t-acts{gap:10px}
.timer.inline .t-acts button{width:42px;height:42px;background:var(--surface);box-shadow:0 0 0 1.5px var(--line-strong) inset;font-size:12.5px}
.timer.inline .t-acts button[data-t="pause"]{background:var(--accent);color:#fff;box-shadow:none}
.timer.inline .t-acts .t-skip{box-shadow:none;margin-left:2px}
.timer.done.inline .t-ring{background:var(--ok)}
/* dieta: calorías y agua alineadas a la izquierda */
.dieta-top .card{align-items:flex-start;text-align:left}
.dieta-top .kcal-grande{justify-content:flex-start;width:100%}
.dieta-top .kcal-card .track,.dieta-top .agua-card .track{width:100%}
.reglas-l li span{text-transform:uppercase}
.regla-nota{display:block;margin-top:6px;font-size:11.5px;color:var(--muted);line-height:1.35}
/* perfil: etapas */
.etapas{display:flex;flex-direction:column;gap:8px}
.etapa{display:flex;align-items:center;gap:10px;padding:11px 14px;border-radius:14px;border:1.5px solid var(--line);color:var(--muted);font-size:14px;font-weight:600;letter-spacing:.02em;text-transform:uppercase}
.etapa i{width:22px;height:22px;border-radius:50%;flex:none;box-shadow:0 0 0 1.5px var(--line-strong) inset;display:grid;place-items:center;font-style:normal}
.etapa i svg{width:13px;height:13px;stroke:#fff;fill:none;stroke-width:3}
.etapa.on{border-color:var(--accent);color:var(--ink);background:var(--accent-soft)}
.etapa.on i{background:var(--accent);box-shadow:none}
/* Mi gimnasio: todo en mayúsculas, sí verde, no rojo */
.gim-cab .sub{text-transform:uppercase;font-size:12.5px;letter-spacing:.03em;line-height:1.45}
.gim-g summary h3{text-transform:uppercase}
.gim-t b{text-transform:uppercase;font-size:13px;letter-spacing:.02em}
.gim-t small{text-transform:uppercase;font-size:10.5px;letter-spacing:.03em}
.gim-i .seg.mini button[data-has="1"][aria-pressed="true"]{background:var(--ok);color:#fff;box-shadow:none}
.gim-i .seg.mini button[data-has="0"][aria-pressed="true"]{background:var(--accent);color:#fff;box-shadow:none}
.gim-i .seg.mini button[aria-pressed="true"] b{color:#fff}
.gim-i.no .gim-ic img{opacity:.6;filter:none}
.pasos-sem .cardio-pista.arriba{margin:10px 0 0;font-size:11.5px;text-align:center}
.ex-vid .yt{display:block;position:absolute;left:50%;top:50%;right:auto;bottom:auto;margin:0;transform:translate(-50%,-50%)}
.chips-comida button,.chips-comida .chip{text-transform:uppercase;font-size:12px;letter-spacing:.03em}
.foto-origen{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.dropzone.chica{min-height:140px;padding:14px 10px}
.dropzone.chica b{font-size:14px}.dropzone.chica .sub{font-size:12px}

/* ---------- Fundador: contabilidad y conexiones (solo ordenador) ---------- */
.aviso-pc { display: none; text-align: center; padding: 28px 18px; }
@media (max-width: 1023px) { .solo-pc { display: none; } .aviso-pc { display: block; } }
.conta-bar { display: flex; align-items: center; gap: 14px; flex-wrap: wrap; margin: 4px 0 18px; }
.conta-bar .seg { max-width: 360px; }
.conta-bar .per { display: flex; gap: 6px; align-items: center; margin-left: auto; }
.conta-bar .per select { height: 36px; border-radius: 10px; border: 1px solid var(--line-strong); background: var(--surface-2); color: var(--ink); padding: 0 10px; font-weight: 600; }
.conta-bar .chip { text-transform: none; letter-spacing: 0; font-size: 13px; padding: 7px 12px; }
.kpis { grid-template-columns: repeat(5, minmax(0, 1fr)); margin-bottom: 22px; }
.kpis3 { grid-template-columns: repeat(3, minmax(0, 1fr)); margin: 14px 0; }
.metric .v.mal { color: var(--accent); }
.ctab td small { display: block; color: var(--muted); font-size: 11.5px; margin-top: 2px; }
.ctab tr.sel td { background: var(--accent-soft); }
.ajustes-conta .btn { margin-top: 4px; }
.ajustes-conta .fgrid { grid-template-columns: repeat(3, 1fr); }
.conx-grid { display: grid; grid-template-columns: minmax(0, 1.5fr) minmax(0, 1fr); gap: 18px; align-items: start; }
.conx { margin-bottom: 16px; }
.conx .row-btns { display: flex; gap: 8px; flex-wrap: wrap; margin: 12px 0; }
.conx .kv dd.mal { color: var(--accent); }
.pasos-meta { margin: 14px 0 6px; font-size: 13px; color: var(--ink-2); }
.pasos-meta summary { cursor: pointer; font-weight: 600; color: var(--ink); }
.pasos-meta ol { margin: 10px 0 0 18px; padding: 0; display: grid; gap: 6px; line-height: 1.45; }
.prox { list-style: none; margin: 10px 0 0; padding: 0; display: grid; gap: 10px; }
.prox li { display: grid; grid-template-columns: 1fr auto; gap: 2px 8px; align-items: center; }
.prox li span:nth-child(2) { grid-row: 2; color: var(--muted); font-size: 12.5px; grid-column: 1; }
.prox li .chip { grid-row: 1 / span 2; grid-column: 2; }
.solo-pc .ctab th { padding: 10px 14px; text-align: left; }
.solo-pc .ctab td { padding-left: 14px; padding-right: 14px; }
.solo-pc .ctab th.num, .solo-pc .ctab td.num { text-align: right; }
.hoy-acc{display:flex;align-items:center;gap:10px}

/* Cierre semanal: pantalla aparte, una pregunta por vez */
.cierre-full { position: fixed; inset: 0; z-index: 55; background: var(--bg); display: flex; flex-direction: column; padding: calc(env(safe-area-inset-top, 0px) + 12px) 16px calc(env(safe-area-inset-bottom, 0px) + 16px); overflow-y: auto; }
.cz-top { display: flex; align-items: center; gap: 12px; max-width: 560px; width: 100%; margin: 0 auto; }
.cz-barra { flex: 1; height: 6px; border-radius: 99px; background: var(--surface-2); overflow: hidden; }
.cz-barra i { display: block; height: 100%; background: var(--accent); border-radius: 99px; transition: width .25s ease; }
.cz-cuerpo { max-width: 560px; width: 100%; margin: 0 auto; padding: 28px 0 8px; display: flex; flex-direction: column; gap: 16px; flex: 1; }
.cz-cuerpo h2 { font-size: 26px; line-height: 1.15; margin: 0; }
.cz-n { font-size: 11px; letter-spacing: .14em; text-transform: uppercase; color: var(--muted); font-weight: 700; }
.cz-ops { display: grid; gap: 10px; margin-top: 6px; }
.cz-op { min-height: 60px; border-radius: 16px; border: 1px solid var(--line-strong); background: var(--surface); color: var(--ink); font: inherit; font-size: 18px; font-weight: 700; cursor: pointer; box-shadow: var(--shadow); }
.cz-op:active { transform: scale(.98); }
.cz-op.on { background: var(--accent); border-color: var(--accent); color: #fff; }
.cz-sub { margin: 6px 0 -4px; font-size: 12px; letter-spacing: .12em; text-transform: uppercase; color: var(--muted); font-weight: 700; }
.cz-mots { display: grid; gap: 8px; }
.cz-mot { min-height: 48px; border-radius: 14px; border: 1px solid var(--line-strong); background: var(--surface); color: var(--ink); font: inherit; font-weight: 600; cursor: pointer; }
.cz-mot.on { background: var(--accent-soft); border-color: var(--accent); color: var(--accent); }
.cz-cuerpo textarea { width: 100%; border-radius: 16px; border: 1px solid var(--line-strong); background: var(--surface); color: var(--ink); font: inherit; font-size: 16px; padding: 14px; resize: none; }
.cz-ej { margin-top: 0; }
.cz-pie { position: sticky; bottom: -16px; margin: 6px -16px -16px; padding: 12px 16px calc(env(safe-area-inset-bottom, 0px) + 16px); background: var(--bg); border-top: 1px solid var(--line); display: grid; gap: 8px; }
.cz-pie .cz-sub { margin: 0; }
.cz-mots { grid-template-columns: repeat(3, 1fr); }
.cz-mot { font-size: 12.5px; padding: 6px; }

/* Entreno: semana y "te toca ahora" */
.semana-g { text-align: center; }
.semana-f { text-align: center; margin: 2px 0 0; font-size: 13px; color: var(--muted); font-weight: 600; text-transform: uppercase; letter-spacing: .06em; }
.sem-segs { gap: 8px; }
.sem-seg { height: auto; min-height: 84px; padding: 8px 4px 10px; display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 1px; background: var(--surface); box-shadow: 0 0 0 1.5px var(--line-strong) inset; color: var(--ink-2); border-radius: 14px; overflow: hidden; }
.sem-seg em { font-style: normal; font-size: 9.5px; letter-spacing: .14em; font-weight: 700; color: var(--muted); }
.sem-seg b { font-size: 26px; line-height: 1.05; font-weight: 800; }
.sem-seg small { font-size: 9.5px; letter-spacing: .12em; font-weight: 800; }
.sem-seg u { text-decoration: none; font-size: 10.5px; color: var(--muted); font-weight: 600; margin-top: 1px; }
.sem-seg i { position: absolute; inset: auto auto 0 0; height: 5px; background: var(--line-strong); }
.sem-seg.pas { background: var(--ok-soft); color: var(--ok); box-shadow: 0 0 0 1.5px var(--ok) inset; }
.sem-seg.pas i { background: var(--ok); }
.sem-seg.hoy { background: var(--accent); color: #fff; box-shadow: none; }
.sem-seg.hoy em, .sem-seg.hoy u { color: rgba(255,255,255,.85); }
.sem-seg.hoy i { background: rgba(255,255,255,.95); }
.sem-seg.fut { background: var(--surface-2); box-shadow: none; color: var(--muted); }
.sem-seg.ver { outline: 2.5px solid var(--ink); outline-offset: 2px; box-shadow: none; }
.sem-seg.ver:not(.hoy):not(.pas) { color: var(--ink); }
.semana-vuelve { display: block; margin: 4px auto 0; font-weight: 700; color: var(--accent); }
.lista-t { margin: 18px 2px 8px; font-size: 12px; letter-spacing: .12em; text-transform: uppercase; color: var(--muted); font-weight: 700; }
.toca { display: flex; flex-direction: column; gap: 3px; width: 100%; text-align: left; margin-top: 14px; padding: 16px 18px; border-radius: 18px; border: 0; background: var(--accent); color: #fff; font: inherit; cursor: pointer; box-shadow: 0 8px 22px -10px var(--accent); }
.toca:active { transform: scale(.99); }
.toca-k { font-size: 11px; letter-spacing: .16em; font-weight: 800; opacity: .9; }
.toca b { font-size: 21px; line-height: 1.15; }
.toca > span:not(.toca-k):not(.toca-go) { font-size: 13.5px; opacity: .92; }
.toca-go { margin-top: 8px; font-size: 13px; letter-spacing: .12em; font-weight: 800; }
.toca.hecho { background: var(--ok-soft); color: var(--ok); box-shadow: none; cursor: default; }
.toca.hecho b { font-size: 16px; }
.day.next { box-shadow: 0 0 0 2px var(--accent) inset; }
.day.hecho { opacity: .72; }
.pill.ahora { background: var(--accent); color: #fff; border-color: var(--accent); }

/* ===== Entreno · versión minimalista ===== */
.semana-cab { margin: 8px 0 14px; text-align: center; }
.semana-g { font-size: 26px; font-weight: 700; letter-spacing: -.02em; text-transform: none; margin: 0; }
.semana-g span { color: var(--muted); font-weight: 500; }
.semana-f { margin: 2px 0 0; font-size: 13.5px; font-weight: 500; text-transform: none; letter-spacing: 0; color: var(--muted); }
.sem-segs { display: grid; grid-template-columns: repeat(4, 1fr); gap: 4px; margin: 16px auto 0; padding: 4px; max-width: 320px; background: var(--surface-2); border-radius: 999px; }
.sem-seg { all: unset; box-sizing: border-box; position: relative; height: 38px; display: flex; flex-direction: column; align-items: center; justify-content: center; border-radius: 999px; cursor: pointer; color: var(--muted); -webkit-tap-highlight-color: transparent; transition: background .2s, color .2s; }
.sem-seg b { font-size: 16px; font-weight: 700; line-height: 1; }
.sem-seg i { position: absolute; bottom: 5px; width: 4px; height: 4px; border-radius: 50%; background: transparent; }
.sem-seg.pas i { background: var(--ok); }
.sem-seg.hoy i { background: var(--accent); }
.sem-seg.ver { background: var(--surface); color: var(--ink); box-shadow: 0 1px 3px rgba(0,0,0,.12); outline: 0; }
.sem-seg.hoy:not(.ver) { color: var(--accent); }
.sem-prog { display: flex; align-items: center; gap: 12px; margin: 18px 4px 0; }
.sem-prog .track { flex: 1; height: 4px; }
.sem-prog span { font-size: 12.5px; color: var(--muted); font-weight: 600; white-space: nowrap; }
.semana-vuelve { margin-top: 12px; font-size: 13px; }
.toca { flex-direction: row; align-items: center; justify-content: space-between; gap: 12px; margin-top: 4px; padding: 16px 18px; border-radius: 18px; box-shadow: none; }
.toca-t { display: flex; flex-direction: column; gap: 2px; min-width: 0; }
.toca-k { font-size: 12px; letter-spacing: 0; font-weight: 600; opacity: .8; text-transform: none; }
.toca b { font-size: 18px; font-weight: 700; text-transform: none; letter-spacing: -.01em; }
.toca b::first-letter { text-transform: uppercase; }
.toca-m { font-size: 12.5px; opacity: .85; text-transform: lowercase; }
.toca-m::first-letter { text-transform: uppercase; }
.toca-go { margin: 0; flex: none; font-size: 13px; letter-spacing: 0; font-weight: 700; padding: 8px 14px; border-radius: 999px; background: rgba(255,255,255,.2); }
.toca.hecho { background: var(--surface-2); color: var(--ink-2); }
.toca.hecho .toca-k { color: var(--ok); opacity: 1; }
.lista-t { margin: 22px 4px 8px; font-size: 12.5px; font-weight: 600; letter-spacing: 0; text-transform: none; color: var(--muted); }
.list { gap: 8px; }
.list .day { border: 1px solid var(--line); box-shadow: none; padding: 14px 16px; border-radius: 16px; }
.day.next { box-shadow: none; border-color: var(--accent); }
.day .t small { text-transform: none; letter-spacing: 0; font-size: 12px; font-weight: 600; }
.day .t b { font-size: 16px; font-weight: 700; text-transform: none; }
.day .t b::first-letter { text-transform: uppercase; }
.day .t > span { font-size: 12.5px; text-transform: lowercase; }
.day .t > span::first-letter { text-transform: uppercase; }
.day.hecho .t b { color: var(--muted); }
.day .pill { font-size: 11px; }
.sem-seg i { left: calc(50% - 2px); }
.day .t b, .toca b { text-transform: lowercase; }
.day .t b::first-letter, .toca b::first-letter { text-transform: uppercase; }
.semana-cab { margin: 0 0 12px; }
.sem-prog { margin-top: 14px; }
.lista-t { margin: 18px 4px 6px; }
.list .day { padding: 12px 16px; }
.day .t .track { margin-top: 8px; }
.toca { margin-top: 0; }
:root[data-theme="dark"] .sem-seg.ver { background: var(--line-strong); color: #fff; box-shadow: none; }
@media (prefers-color-scheme: dark) { :root:not([data-theme="light"]) .sem-seg.ver { background: var(--line-strong); color: #fff; box-shadow: none; } }

/* ===== Entreno · pasos, mayúsculas y animaciones ===== */
.paso { display: flex; align-items: center; justify-content: center; gap: 8px; margin: 0 0 8px; font-size: 12px; font-weight: 800; letter-spacing: .14em; text-transform: uppercase; color: var(--muted); }
.paso em { font-style: normal; display: inline-grid; place-items: center; width: 20px; height: 20px; border-radius: 50%; background: var(--accent); color: #fff; font-size: 11px; letter-spacing: 0; }
.paso2 { margin-top: 26px; }
.semana-cab { margin: 6px 0 4px; }
.semana-g { all: unset; box-sizing: border-box; display: block; width: 100%; text-align: center; cursor: pointer; font-size: 26px; font-weight: 800; letter-spacing: .02em; text-transform: uppercase; -webkit-tap-highlight-color: transparent; }
.semana-g span { color: var(--muted); font-weight: 600; }
.semana-g.ir { color: var(--accent); }
.semana-g.ir::after { content: " ↺"; font-size: 20px; }
.semana-g:active { transform: scale(.97); }
.semana-f { margin: 4px 0 0; font-size: 11.5px; font-weight: 700; letter-spacing: .1em; text-transform: uppercase; color: var(--muted); }
.sem-seg { height: 50px; gap: 3px; }
.sem-seg b { font-size: 18px; }
.sem-seg small { font-size: 9.5px; font-weight: 800; letter-spacing: .12em; min-height: 11px; color: var(--accent); }
.sem-seg.pas small { color: var(--ok); }
.sem-seg i { display: none; }
.sem-seg.hoy:not(.ver) { color: var(--accent); animation: semPulso 2s ease-out infinite; }
.sem-seg.ver { animation: semPop .35s cubic-bezier(.2,.9,.3,1.3); }
@keyframes semPulso { 0% { box-shadow: 0 0 0 0 color-mix(in srgb, var(--accent) 55%, transparent); } 70%, 100% { box-shadow: 0 0 0 12px transparent; } }
@keyframes semPop { from { transform: scale(.85); } to { transform: scale(1); } }
.sem-prog span { font-size: 11.5px; font-weight: 800; letter-spacing: .1em; }
.toca-k, .lista-t { text-transform: uppercase; letter-spacing: .12em; font-weight: 800; font-size: 11px; }
.toca b, .day .t b { text-transform: uppercase; }
.toca b::first-letter, .day .t b::first-letter { text-transform: none; }
.toca-m, .day .t > span, .day .t small { text-transform: uppercase; letter-spacing: .04em; }
.toca-m::first-letter, .day .t > span::first-letter { text-transform: none; }
.toca-go { text-transform: uppercase; letter-spacing: .1em; font-size: 12px; animation: tocaFlecha 1.6s ease-in-out infinite; }
@keyframes tocaFlecha { 0%, 100% { transform: translateX(0); } 50% { transform: translateX(4px); } }
.toca { animation: subir .45s cubic-bezier(.2,.8,.2,1) both; }
.lista-t { text-align: center; margin: 16px 0 8px; }
.list .day { animation: subir .45s cubic-bezier(.2,.8,.2,1) both; }
.list .day:nth-child(2) { animation-delay: .05s; } .list .day:nth-child(3) { animation-delay: .1s; }
.list .day:nth-child(4) { animation-delay: .15s; } .list .day:nth-child(5) { animation-delay: .2s; } .list .day:nth-child(6) { animation-delay: .25s; }
.day.next { animation: subir .45s cubic-bezier(.2,.8,.2,1) both, diaLate 2.2s ease-in-out .6s infinite; }
@keyframes subir { from { opacity: 0; transform: translateY(10px); } to { opacity: 1; transform: none; } }
@keyframes diaLate { 0%, 100% { box-shadow: 0 0 0 0 color-mix(in srgb, var(--accent) 35%, transparent); } 50% { box-shadow: 0 0 0 5px transparent; } }
@media (prefers-reduced-motion: reduce) { .sem-seg, .toca, .toca-go, .list .day, .day.next { animation: none !important; } }
.sem-seg.pas, .sem-seg.fut, .sem-seg.hoy { background: transparent; box-shadow: none; outline: 0; }
.sem-seg.ver, .sem-seg.hoy.ver, .sem-seg.pas.ver { background: var(--surface); color: var(--ink); box-shadow: 0 1px 3px rgba(0,0,0,.12); }
.sem-seg.hoy:not(.ver) { color: var(--accent); }
:root[data-theme="dark"] .sem-seg.ver { background: var(--line-strong); color: #fff; box-shadow: none; }
@media (prefers-color-scheme: dark) { :root:not([data-theme="light"]) .sem-seg.ver { background: var(--line-strong); color: #fff; box-shadow: none; } }
.paso2 { margin-top: 22px; }
.orden-av { display: flex; flex-direction: column; gap: 10px; text-align: center; padding: 4px 0 6px; }
.orden-av p { margin: 0 0 6px; font-size: 15px; line-height: 1.45; color: var(--ink-2); }
.orden-av .btn { width: 100%; text-transform: uppercase; letter-spacing: .06em; }
.orden-av .link { text-transform: uppercase; letter-spacing: .08em; font-size: 12px; font-weight: 700; padding: 8px; }
.sheet-modal h2 { text-transform: uppercase; }

/* ===== Barra por trozos (entreno, comidas, agua) ===== */
.segbar { display: flex; gap: 5px; padding: 4px; border: 2.5px solid var(--accent); border-radius: 999px; background: var(--surface); width: 100%; box-sizing: border-box; }
.segbar i { flex: 1; height: 14px; min-width: 0; border-radius: 999px; background: var(--surface-2); transition: background .3s; }
.segbar i.on { background: var(--accent); animation: segIn .5s cubic-bezier(.2,.9,.3,1.3) both; animation-delay: calc(var(--k) * 80ms); }
.segbar.ok { border-color: var(--ok); }
.segbar.ok i.on { background: var(--ok); }
.segbar.agua { border-color: #3898ec; }
.segbar.agua i { height: 12px; }
.segbar.agua i.on { background: #3898ec; }
.segbar.agua.ok { border-color: var(--ok); } .segbar.agua.ok i.on { background: var(--ok); }
@keyframes segIn { from { transform: scaleX(.2); opacity: .2; } to { transform: none; opacity: 1; } }
.sem-prog2 { margin: 16px 2px 0; text-align: center; }
.sem-prog2 p { margin: 8px 0 0; font-size: 12px; font-weight: 800; letter-spacing: .12em; color: var(--ink-2); text-transform: uppercase; }
@media (prefers-reduced-motion: reduce) { .segbar i.on { animation: none; } }

/* ===== Dieta · mismo estilo que Entreno ===== */
.dieta-head h1 { text-transform: uppercase; }
.dieta-head .crumb { text-transform: uppercase; letter-spacing: .12em; font-weight: 700; }
.dieta-top { grid-template-columns: 1fr; gap: 10px; margin-top: 4px; }
.dieta-top .card { padding: 16px 18px; border-radius: 20px; gap: 10px; align-items: stretch; text-align: left; }
.dt-l { font-size: 11.5px !important; font-weight: 800; letter-spacing: .14em; text-transform: uppercase; color: var(--muted); }
.dieta-top .kcal-grande { width: 100%; justify-content: flex-start; gap: 8px; align-items: baseline; flex-wrap: nowrap; }
.dieta-top .kcal-grande .big { font-size: 34px; font-weight: 800; letter-spacing: -.02em; }
.dieta-top .kcal-grande .u { font-size: 12px; font-weight: 800; letter-spacing: .12em; color: var(--muted); text-transform: uppercase; }
.dieta-top .comido { margin: 0; font-size: 11.5px; font-weight: 800; letter-spacing: .1em; text-transform: uppercase; color: var(--ink-2); }
.dieta-top .comido b { color: var(--accent); }
.agua-btns { display: flex; gap: 8px; }
.agua-b { border-radius: 999px; font-weight: 800; letter-spacing: .08em; text-transform: uppercase; font-size: 12.5px; }
.compra-btn.chica { border-radius: 18px; border-width: 1.5px; }
.compra-btn.chica .compra-t b { text-transform: uppercase; letter-spacing: .08em; font-size: 12.5px; font-weight: 800; }
.paso.paso2 { margin: 24px 0 10px; }
.meal.card { border-radius: 20px; border-width: 1.5px; }
.meal summary .badge { width: 34px; height: 34px; border-radius: 50%; display: inline-grid; place-items: center; font-weight: 800; flex: none; }
.meal summary h2 { font-size: 17px; font-weight: 800; letter-spacing: .04em; text-transform: uppercase; }
.meal summary .sub { font-size: 11px; font-weight: 800; letter-spacing: .1em; text-transform: uppercase; color: var(--muted); }
.meal.next summary .sub { color: var(--accent); }
.meal.done summary .sub { color: var(--ok); }
.meal.done summary .badge { background: var(--ok); }
.meal.next { border-color: var(--accent); }
.cat h4 { font-size: 12px; font-weight: 800; letter-spacing: .12em; }
.opts.pick li { border-radius: 14px; }
.opts.pick li.on { box-shadow: 0 0 0 2px var(--accent) inset; background: color-mix(in srgb, var(--accent) 8%, transparent); }
.tick-o { flex: none; width: 24px; height: 24px; border-radius: 50%; border: 2px solid var(--line-strong); display: inline-grid; place-items: center; font-size: 13px; color: #fff; text-align: center; }
.tick-o.on { background: var(--accent); border-color: var(--accent); color: #fff !important; }
.opts.pick li.on .tick-o { color: #fff; }
.hecha-btn { border-radius: 999px; text-transform: uppercase; letter-spacing: .1em; font-weight: 800; }
.fold summary h3 { font-size: 12px; font-weight: 800; letter-spacing: .12em; }

/* ===== Perfil minimalista ===== */
.perfil-cab { display: flex; flex-direction: column; align-items: center; text-align: center; gap: 4px; margin: 10px 0 18px; }
.avatar { width: 92px; height: 92px; border-radius: 50%; display: grid; place-items: center; font-size: 32px; font-weight: 800; letter-spacing: .02em; color: var(--accent); background: color-mix(in srgb, var(--accent) 10%, var(--surface)); border: 3px solid var(--accent); box-shadow: 0 0 0 6px color-mix(in srgb, var(--accent) 12%, transparent); margin-bottom: 10px; }
.perfil-cab h1 { margin: 0; font-size: 26px; font-weight: 800; letter-spacing: .06em; text-transform: uppercase; }
.perfil-cab .perfil-mail { margin: 0; font-size: 13px; color: var(--muted); }
.verperfil { margin-top: 12px; padding: 10px 22px; border-radius: 999px; border: 2px solid var(--accent); background: transparent; color: var(--accent); font: inherit; font-size: 12.5px; font-weight: 800; letter-spacing: .12em; cursor: pointer; transition: transform .14s, background .2s, color .2s; }
.verperfil:active { transform: scale(.96); background: var(--accent); color: #fff; }
.pstats { display: grid; grid-template-columns: repeat(3, 1fr); gap: 0; border: 1.5px solid var(--line-strong); border-radius: 20px; overflow: hidden; background: var(--surface); }
.pstats div { display: flex; flex-direction: column; align-items: center; gap: 3px; padding: 14px 6px; }
.pstats div + div { border-left: 1.5px solid var(--line); }
.pstats b { font-size: 19px; font-weight: 800; letter-spacing: -.01em; }
.pstats span { font-size: 9.5px; font-weight: 800; letter-spacing: .12em; color: var(--muted); }
.plista { display: flex; flex-direction: column; gap: 8px; }
.prow { display: flex; align-items: center; gap: 12px; width: 100%; text-align: left; padding: 13px 14px; border-radius: 18px; border: 1.5px solid var(--line); background: var(--surface); color: var(--ink); font: inherit; cursor: pointer; transition: transform .14s, border-color .2s; }
.prow:active { transform: scale(.98); border-color: var(--accent); }
.prow-ic { flex: none; width: 38px; height: 38px; border-radius: 50%; display: grid; place-items: center; background: color-mix(in srgb, var(--accent) 12%, transparent); color: var(--accent); }
.prow-ic svg { width: 19px; height: 19px; }
.prow-t { flex: 1; min-width: 0; display: flex; flex-direction: column; gap: 2px; }
.prow-t b { font-size: 13.5px; font-weight: 800; letter-spacing: .08em; }
.prow-t small { font-size: 11.5px; color: var(--muted); font-weight: 500; }
.prow-v { font-size: 18px; font-weight: 800; white-space: nowrap; }
.prow-v small { font-size: 11px; color: var(--muted); font-weight: 700; margin-left: 3px; }
.prow .chev { color: var(--muted); }
.perfil-salir2 { display: block; margin: 26px auto 8px; background: none; border: 0; color: var(--muted); font: inherit; font-size: 11.5px; font-weight: 800; letter-spacing: .14em; cursor: pointer; padding: 10px; }
.toca-hoy { margin: 4px 0 0; }
.prow-ic svg { fill: none; stroke: var(--accent); stroke-width: 1.8; stroke-linecap: round; stroke-linejoin: round; }

/* ===== Dieta · categorías de colores, elegida en verde ===== */
.cat { --c: var(--muted); gap: 6px; padding-top: 14px; }
.cat.c-carb { --c: #d97706; } .cat.c-prot { --c: #7c3aed; } .cat.c-gras { --c: #0284c7; }
.cat.c-fruta { --c: #db2777; } .cat.c-verd { --c: #0d9488; } .cat.c-leche { --c: #4f46e5; }
.cat h4 { justify-content: flex-start; gap: 8px; }
.cat h4 > span { display: inline-flex; align-items: center; gap: 7px; padding: 5px 12px 5px 10px; border-radius: 999px; background: color-mix(in srgb, var(--c) 14%, transparent); color: var(--c); font-size: 11.5px; font-weight: 800; letter-spacing: .12em; }
.cat h4 > i { display: none; }
.cat h4 > span::before { content: ""; width: 8px; height: 8px; border-radius: 50%; background: var(--c); }
.cat h4 small { margin-left: auto; font-size: 10.5px; font-weight: 800; letter-spacing: .12em; color: var(--muted); }
.cat h4 small.ok-t { color: var(--ok); }
.opts.pick li { border-left: 3px solid color-mix(in srgb, var(--c) 45%, transparent); border-radius: 12px; padding-left: 10px; margin-inline: 0; }
.opts.pick li.on { border-left-color: var(--ok); background: var(--ok-soft); box-shadow: 0 0 0 2px var(--ok) inset; }
.tick-o.on { background: var(--ok); border-color: var(--ok); }
.meal.next { border-color: var(--accent); }
.meal.next summary .sub { color: var(--accent); }
.meal summary .sub.prog { color: var(--ok); }
.meal.done summary h2 { color: var(--ink-2); }
.meal.done summary .sub { color: var(--ok); }
.meal.done summary .badge { background: var(--ok); color: #fff; }
.meal.done .meal-body { opacity: .92; }
.opts.pick { gap: 6px; }
.opts.pick li { border: 1.5px solid var(--line); border-left-width: 1.5px; border-bottom: 1.5px solid var(--line); background: var(--surface); padding: 10px 12px; border-radius: 14px; margin: 0 0 6px; }
.opts.pick li.on { border-color: var(--ok); background: var(--ok-soft); box-shadow: none; }
.opts.pick li:hover { background: var(--surface-2); }
.opts.pick li.on:hover { background: var(--ok-soft); }
.cat h4 > span { box-shadow: inset 0 0 0 1.5px color-mix(in srgb, var(--c) 35%, transparent); }
.opts.pick li { align-items: center; }

/* ===== Pulido general ===== */
.session-head h1 { text-transform: uppercase; font-weight: 800; letter-spacing: .02em; }
.session-head .crumb { text-transform: uppercase; letter-spacing: .12em; font-weight: 700; }
.hoy-head h1 { text-transform: none; letter-spacing: -.02em; }
.btn { text-transform: uppercase; letter-spacing: .08em; font-weight: 800; }
.btn.small { letter-spacing: .06em; }
.pre-t { text-transform: uppercase; letter-spacing: .04em; font-weight: 800; font-size: 22px; }
.set-mas .how, .set .how, p.how { margin: 8px 0; padding: 10px 12px; border-radius: 12px; background: var(--surface-2); color: var(--ink-2); font-size: 12px; line-height: 1.5; font-weight: 600; letter-spacing: .02em; }
p.how, .set .how, .set-mas .how { color: var(--ink-2) !important; }
.pre-t { font-size: 18px; }
.cz-cuerpo h1, .cz-cuerpo h2 { text-transform: uppercase; letter-spacing: .02em; font-weight: 800; }
.cz-op { text-transform: uppercase; letter-spacing: .08em; font-weight: 800; font-size: 14px; }
.cz-n { text-transform: uppercase; letter-spacing: .14em; font-weight: 800; }
.pre-card .pre-t { font-size: 20px; margin-bottom: 16px; }
.exbar > span:empty { display: none; }
.exbar > .btn:only-child, .exbar > .btn:last-child:not(.ghost) { flex: 1; }
.exbar { display: flex; gap: 10px; }
.exbar > .btn { flex: 1; }

/* ===== Hoy · cardio claro y contrastado ===== */
.hc { background: var(--surface); border: 1.5px solid var(--line-strong); border-radius: 20px; padding: 14px 16px 6px; margin-bottom: 12px; box-shadow: var(--shadow); }
.hc-h { display: flex; align-items: center; gap: 10px; padding-bottom: 10px; }
.hc-h b { font-size: 13px; font-weight: 800; letter-spacing: .14em; color: var(--accent); }
.hc-b { padding: 12px 0 14px; border-top: 1.5px solid var(--line); }
.hc-k { display: flex; align-items: center; gap: 8px; margin: 0 0 6px; font-size: 12px; font-weight: 800; letter-spacing: .14em; color: var(--ink); }
.hc-k em { font-style: normal; display: inline-grid; place-items: center; width: 20px; height: 20px; border-radius: 50%; background: var(--accent); color: #fff; font-size: 11px; letter-spacing: 0; }
.hc-v { margin: 0 0 10px; font-size: 32px; line-height: 1; font-weight: 800; letter-spacing: -.02em; color: var(--ink); }
.hc-v.sm { font-size: 14px; letter-spacing: .02em; text-transform: uppercase; line-height: 1.4; }
.hc-v small { display: block; margin-top: 6px; font-size: 12px; font-weight: 800; letter-spacing: .1em; color: var(--ink-2); }
.hc-how { margin: 10px 0 0; font-size: 11.5px; font-weight: 800; letter-spacing: .06em; line-height: 1.5; color: var(--ink-2); text-transform: uppercase; }
.hc-how b.ok { color: var(--ok); } .hc-how b.no { color: var(--accent); }
.hc .segbar { margin: 4px 0 10px; }
.hc .cardio-pills { margin-top: 2px; }
.cardio-pill { text-transform: uppercase; font-weight: 800; letter-spacing: .08em; font-size: 12.5px; }
.hc .pasos-sem { margin: 0; }

/* ===== Aviso obligatorio en la campana ===== */
.campana.urge { border-color: var(--accent); animation: campanaLate 1.6s ease-in-out infinite; }
.campana.urge svg { color: var(--accent); }
@keyframes campanaLate { 0%, 100% { box-shadow: 0 0 0 0 color-mix(in srgb, var(--accent) 55%, transparent); } 60% { box-shadow: 0 0 0 11px transparent; } }
.aviso.obligatorio { border: 2px solid var(--accent); background: color-mix(in srgb, var(--accent) 7%, var(--surface)); animation: oblLate 2.4s ease-in-out infinite; }
@keyframes oblLate { 0%, 100% { box-shadow: 0 0 0 0 color-mix(in srgb, var(--accent) 30%, transparent); } 50% { box-shadow: 0 0 0 6px transparent; } }
.aviso.obligatorio .aviso-t { font-size: 13.5px; font-weight: 700; letter-spacing: .02em; line-height: 1.5; text-transform: uppercase; }
.aviso.obligatorio .aviso-t b { color: var(--accent); display: block; margin-bottom: 4px; letter-spacing: .06em; }
.obl-track { margin: 10px 0 4px; height: 8px; }
.obl-prog { font-size: 11.5px; font-weight: 800; letter-spacing: .1em; color: var(--ink-2); }
.obl-prog b { color: var(--accent); font-size: 14px; }
.obl-nota { margin: 8px 0 0; font-size: 11px; font-weight: 800; letter-spacing: .08em; color: var(--ink-2); line-height: 1.5; }
@media (prefers-reduced-motion: reduce) { .campana.urge, .aviso.obligatorio { animation: none; } }

/* ===== Errores de uso: temblor, toast rojo, parpadeo de pendientes ===== */
.toast.err { background: #b91c1c; color: #fff; font-weight: 800; letter-spacing: .04em; text-transform: uppercase; font-size: 12.5px; text-align: center; max-width: 88vw; }
.shake { animation: shake .6s cubic-bezier(.36,.07,.19,.97) both; }
@keyframes shake { 10%, 90% { transform: translateX(-2px); } 20%, 80% { transform: translateX(5px); } 30%, 50%, 70% { transform: translateX(-9px); } 40%, 60% { transform: translateX(9px); } }
.shake { outline: 2px solid #ef4444; outline-offset: 2px; border-radius: 14px; }
.hoy-peso.pend { border: 2px solid var(--accent); animation: oblLate 2.4s ease-in-out infinite; }
.hoy-peso-l, .hoy-peso .pista { text-transform: uppercase; letter-spacing: .1em; font-weight: 800; }
.hoy-peso .pista { font-size: 11px; color: var(--ink-2); }
.hoy-peso .pista b { color: var(--accent); }
.prev-box { border: 1.5px solid var(--accent); background: color-mix(in srgb, var(--accent) 7%, var(--surface)); border-radius: 14px; padding: 10px 12px; gap: 3px; }
.prev-box small { color: var(--ink-2); font-weight: 800; letter-spacing: .1em; }
.prev-box b { font-size: 17px; font-weight: 800; color: var(--ink); }
.prev-box em { font-style: normal; font-size: 10.5px; font-weight: 800; letter-spacing: .1em; color: var(--accent); }
.prev-vacio { margin: 0 0 8px; font-size: 11px; font-weight: 800; letter-spacing: .1em; color: var(--muted); text-align: center; }
.set-go { text-transform: uppercase; letter-spacing: .08em; font-weight: 800; }
@media (prefers-reduced-motion: reduce) { .hoy-peso.pend { animation: none; } }
.toast.err { border-radius: 16px; padding: 12px 18px; line-height: 1.4; }
.semana-frase { text-transform: uppercase; letter-spacing: .06em; font-weight: 800; font-size: 11.5px; color: var(--ink-2); }

/* ===== Contraste en oscuro y rótulos en mayúsculas ===== */
.tabbar nav button span { text-transform: uppercase; letter-spacing: .08em; font-weight: 800; font-size: 10px; }
.poner { display: inline-block; padding: 3px 9px; border-radius: 999px; border: 1.5px dashed var(--accent); color: var(--accent); font-size: 10.5px; font-weight: 800; letter-spacing: .08em; }
.pill { text-transform: uppercase; letter-spacing: .06em; font-weight: 800; font-size: 10.5px; }
.chip { text-transform: uppercase; letter-spacing: .06em; font-weight: 800; }
.ctab th, .ctabla th, table th { text-transform: uppercase; letter-spacing: .08em; font-weight: 800; color: var(--ink-2); }
.kpis .k b, .kpi b { font-weight: 800; }
@media (min-width: 900px) {
  .tabbar nav button span { font-size: 12.5px; letter-spacing: .1em; }
  .tabbar nav button[aria-current] { box-shadow: inset 3px 0 0 var(--accent); }
}
.side-back { display: none; }
@media (min-width: 900px) {
  .side-back { display: block; margin: 0 14px 10px; padding: 10px 12px; border-radius: 12px; border: 1.5px solid var(--accent); background: transparent; color: var(--accent); font: inherit; font-size: 11px; font-weight: 800; letter-spacing: .1em; cursor: pointer; text-align: left; }
  .side-back:hover { background: color-mix(in srgb, var(--accent) 12%, transparent); }
}
.seg button, .segs button, .qbtn span, .ficha-tabs button { text-transform: uppercase; letter-spacing: .06em; font-weight: 800; font-size: 11.5px; }
/* Hoy · cardio más ligero */
.hc-k { justify-content: flex-start; font-weight: 700; letter-spacing: .1em; }
.hc-k .hc-n { margin-left: auto; font-weight: 600; letter-spacing: .06em; color: var(--ink-2); font-size: 12px; }
.hc-how { font-weight: 500; font-size: 11px; letter-spacing: .05em; white-space: nowrap; margin: 6px 0 0; }
.hc-how b { font-weight: 700; }
.hc-h b { font-weight: 700; }
.cardio-pill { font-weight: 600; }

/* ===== Auditoría final · pantalla de inicio ===== */
/* Cabecera más baja */
.top { min-height: 44px; padding-block: 6px; }

.hoy-head h1 { font-size: 26px; margin: 0; }
.hoy-head .crumb { margin-top: 0; font-size: 11px; }
.hoy-head { padding-bottom: 6px; }
.hoy-acc .campana { width: 40px; height: 40px; }

/* Tira de aviso obligatorio bajo el saludo */
.tira-aviso { display: flex; align-items: center; gap: 8px; width: 100%; margin: 0 0 10px; padding: 9px 12px; border-radius: 12px; border: 1.5px solid var(--accent); background: color-mix(in srgb, var(--accent) 9%, var(--surface)); color: var(--accent); font: inherit; font-size: 11px; font-weight: 700; letter-spacing: .08em; text-align: left; cursor: pointer; }
.tira-aviso .punto-vivo { margin: 0; flex: none; }
.tira-aviso span { flex: 1; min-width: 0; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.tira-aviso b { flex: none; font-weight: 700; }
.tira-aviso:active { transform: scale(.99); }

/* Peso pendiente: borde fino, sin brillo. Pista visible. */
.hoy-peso.pend { border: 1.5px solid var(--accent); animation: none; box-shadow: none; }
.hoy-peso .pista { display: block; font-size: 11px; font-weight: 600; letter-spacing: .06em; color: var(--ink-2); line-height: 1.5; }
.hoy-peso .pista b { color: var(--accent); font-weight: 700; }
.hoy-peso > .hoy-peso-l { font-weight: 700; font-size: 12px; letter-spacing: .1em; color: var(--ink); }
.weigh-in input::placeholder { color: var(--muted); opacity: .9; }
.hoy-peso .weigh-in input { font-size: 30px; }
.hoy-peso .hoy-tend-linea { font-weight: 600; }

/* Línea de «hecho» (peso guardado, semana de entrenos completa) */
.hecho-linea { display: grid; grid-template-columns: auto 1fr auto; grid-template-areas: "c t go" "c d go"; align-items: center; column-gap: 10px; row-gap: 2px; width: 100%; margin: 0 0 10px; padding: 11px 14px; border-radius: 16px; border: 1.5px solid var(--line-strong); background: var(--surface); color: var(--ink); font: inherit; text-align: left; cursor: pointer; }
.hecho-linea .chulo { grid-area: c; font-style: normal; width: 26px; height: 26px; border-radius: 50%; display: grid; place-items: center; background: var(--ok); color: #fff; font-size: 14px; font-weight: 700; }
.hecho-linea .hl-t { grid-area: t; font-size: 11.5px; font-weight: 600; letter-spacing: .08em; color: var(--ink-2); }
.hecho-linea .hl-t b { color: var(--ink); font-weight: 700; font-variant-numeric: tabular-nums; }
.hecho-linea .hl-d { grid-area: d; font-size: 11px; font-weight: 500; letter-spacing: .06em; color: var(--muted); }
.hecho-linea .hl-d b { color: var(--ink-2); font-weight: 700; }
.hecho-linea .hl-d em { font-style: normal; font-weight: 700; } .hecho-linea .hl-d em.baja { color: var(--ok); } .hecho-linea .hl-d em.sube { color: var(--warn); }
.hecho-linea .hl-go { grid-area: go; font-size: 10.5px; font-weight: 700; letter-spacing: .1em; color: var(--muted); }
.hecho-linea.nuevo { animation: hoyPop .5s ease-out; }

/* Cardio: sin cabecera, números neutros, barra gris */
.hc { padding: 2px 16px 4px; }
.hc-b:first-child { border-top: 0; }
.hc-k { font-weight: 700; color: var(--ink); }
.hc-k em { background: var(--ink); color: var(--bg); }
.hc-k .hc-n { font-weight: 600; color: var(--ink-2); }
.hc-k .hc-n.ok { color: var(--ok); font-weight: 700; }
.hc .segbar { border-color: var(--line-strong); }
.hc-ok { padding: 12px 0; }
.hc-ok .chulo { font-style: normal; width: 20px; height: 20px; border-radius: 50%; display: grid; place-items: center; background: var(--ok); color: #fff; font-size: 11px; font-weight: 700; }
.hc-how { font-weight: 500; color: var(--ink-2); }
.hc-how b { font-weight: 700; }
.cardio-pill { font-weight: 600; }
/* Días pasados sin marcar: ámbar. Futuros: apagados. */
.pdia span { color: var(--ink-2); font-weight: 600; }
.pdia:not(.si):not(.no):not(.fut):not(.hoy) i { box-shadow: 0 0 0 1.5px var(--warn) inset; background: var(--warn-soft); }
.pdia:not(.si):not(.no):not(.fut):not(.hoy) i::before { content: "–"; color: var(--warn); font-weight: 700; font-size: 14px; }
.pdia:not(.si):not(.no):not(.fut):not(.hoy) span { color: var(--warn); }
.pdia.fut { opacity: .35; }
.pdia.fut i { background: var(--surface-2); box-shadow: 0 0 0 1.5px var(--line-strong) inset; }
.pdia.hoy:not(.si):not(.no) i { background: var(--surface-2); box-shadow: 0 0 0 2px var(--ink) inset; }
.pdia.hoy:not(.si):not(.no) i::before { content: ""; }
.pdia:disabled { opacity: .35; }

/* Resumen: anillos sin frase; banda de día completo */
.semana-frase { display: none; }
.anillos-top { padding-top: 4px; }
.anillo .an-l { font-weight: 600; color: var(--ink-2); }
.dia-completo { display: flex; align-items: center; gap: 12px; margin: 4px 0 12px; padding: 14px 16px; border-radius: 16px; background: var(--ok); color: #fff; }
.dia-completo .chulo { font-style: normal; width: 30px; height: 30px; border-radius: 50%; display: grid; place-items: center; background: rgba(255,255,255,.22); font-size: 16px; font-weight: 700; flex: none; }
.dia-completo span { display: flex; flex-direction: column; gap: 2px; }
.dia-completo b { font-size: 14px; letter-spacing: .12em; }
.dia-completo small { font-size: 11px; letter-spacing: .08em; opacity: .9; font-weight: 600; }
.dia-completo.nuevo { animation: hoyPop .5s ease-out; }

/* Cliente nuevo: plan en camino */
.plan-camino { margin: 0 0 12px; padding: 16px; border-radius: 18px; background: var(--surface); border: 1.5px solid var(--line-strong); }
.plan-camino .pc-k { display: block; font-size: 11px; font-weight: 700; letter-spacing: .14em; color: var(--accent); margin-bottom: 6px; }
.plan-camino b { display: block; font-size: 17px; line-height: 1.3; font-weight: 700; letter-spacing: -.01em; }
.plan-camino p { margin: 8px 0 10px; font-size: 13px; color: var(--ink-2); }
.plan-camino ol { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 8px; }
.plan-camino li { display: flex; align-items: center; gap: 10px; font-size: 12px; font-weight: 600; letter-spacing: .06em; color: var(--ink); }
.plan-camino li em { font-style: normal; display: inline-grid; place-items: center; width: 22px; height: 22px; border-radius: 50%; background: var(--ink); color: var(--bg); font-size: 11px; font-weight: 700; flex: none; }
.plan-camino .link-fuerte { background: none; border: 0; padding: 0; font: inherit; font-weight: 700; letter-spacing: .06em; color: var(--accent); cursor: pointer; text-align: left; }

/* Panel de avisos: formato único */
.aviso.obligatorio { animation: none; border-width: 1.5px; }
.aviso.obligatorio .aviso-t { text-transform: none; font-weight: 500; font-size: 14px; letter-spacing: 0; }
.aviso.obligatorio .aviso-t b { text-transform: uppercase; font-size: 12px; letter-spacing: .1em; font-weight: 700; margin-bottom: 6px; }
.aviso-x { display: block; color: var(--ink-2); }
.obl-prog { font-weight: 600; }
.obl-nota { font-weight: 500; letter-spacing: .02em; text-transform: none; color: var(--muted); font-size: 12px; }

/* Negrita solo donde hace falta */
.crumb { font-weight: 600; }
.toca-k { font-weight: 600; }
.toca-go { font-weight: 700; }
.tabbar .tab-l, .tabbar span { font-weight: 600; }
.anillo .an-v { font-weight: 700; }
.login .link { color: var(--ink-2); }
/* Contraste oscuro: un tono más */
:root { --muted: #B3B3BE; }
@media (prefers-color-scheme: light) { :root:not([data-tema="oscuro"]) { --muted: #66666E; } }
:root[data-tema="claro"] { --muted: #66666E; }
.tira-aviso { margin-bottom: 4px; }
.tira-aviso + .toca, .tira-aviso + .plan-camino { margin-top: 6px; }

/* ===== Auditoría final · Entreno, Dieta, Perfil ===== */
/* Entreno · ejercicio */
.set-mas .how, .set .how, p.how, .ex .set .how { text-transform: none !important; font-weight: 500 !important; font-size: 12.5px; letter-spacing: 0; color: var(--ink-2) !important; background: var(--surface-2); padding: 9px 12px; }
.set-mas .how::first-letter, .set .how::first-letter, p.how::first-letter { text-transform: uppercase; }
.ex-key { text-transform: none; font-size: 13px; line-height: 1.5; color: var(--ink-2); }
.ex-label { text-transform: uppercase; letter-spacing: .1em; font-size: 11px; font-weight: 600; }
.ex-label .muted.small { font-size: 11px; letter-spacing: .1em; color: var(--ink-2); }
.ex-media { grid-template-columns: 112px 1fr; gap: 8px; }
.ex-vid .ex-thumb { max-height: 72px; }
.ex-vid .ex-sub, .ex-vid > span, .ex-vid small { font-size: 10.5px; }
.ex-act { min-height: 34px; padding: 4px 8px; font-size: 10.5px; font-weight: 700; letter-spacing: .06em; text-transform: uppercase; }
.prev-vacio { font-weight: 600; font-size: 10.5px; }
.prev-box small, .prev-box em { font-weight: 600; }
.set-go { font-weight: 700; }
.rest-pill .rest-t { font-weight: 600; font-size: 12px; }
.pre-t { font-size: 20px; letter-spacing: .02em; }
.pre-s { margin: -4px 0 12px; text-align: center; font-size: 11px; font-weight: 600; letter-spacing: .1em; color: var(--muted); text-transform: uppercase; }
.scale.yn button, .scale button { text-transform: uppercase; font-weight: 600; letter-spacing: .04em; }
.qgrid label, .field label { text-transform: uppercase; letter-spacing: .1em; font-size: 11px; font-weight: 600; color: var(--ink-2); }
.fin-k { text-transform: uppercase; letter-spacing: .12em; font-size: 11px; font-weight: 600; }
.fin-t { text-transform: none; }
.fin-rows dt { text-transform: uppercase; letter-spacing: .08em; font-size: 11px; font-weight: 600; }
.post-card h3 { text-transform: uppercase; letter-spacing: .1em; font-size: 12px; font-weight: 700; }
.exbar-k { text-transform: uppercase; letter-spacing: .1em; font-size: 10.5px; font-weight: 600; }
/* Entreno · lista */
.day .t small { font-weight: 600; letter-spacing: .1em; }
.day .t b { font-weight: 700; }
.day .t > span { font-weight: 500; color: var(--muted); }
.pill { font-weight: 700; letter-spacing: .08em; }
/* Dieta */
.dieta-top.compacta { display: grid; grid-template-columns: 1fr 1fr; gap: 10px; margin-bottom: 14px; }
.dieta-top.compacta .card { margin: 0; padding: 12px 12px 10px; }
.dieta-top.compacta .dt-l { font-size: 10.5px; letter-spacing: .12em; font-weight: 600; color: var(--ink-2); }
.dieta-top.compacta .kcal-grande .big { font-size: 26px; }
.dieta-top.compacta .kcal-grande .u { font-size: 10.5px; font-weight: 600; letter-spacing: .08em; }
.dieta-top.compacta .comido { font-size: 10.5px; font-weight: 600; letter-spacing: .06em; margin: 6px 0 4px; }
.dieta-top.compacta .segbar { padding: 3px; gap: 3px; border-width: 2px; } .dieta-top.compacta .segbar i { height: 9px; } .dieta-top.compacta .segbar.agua { gap: 2px; }
.dieta-top.compacta .agua-btns { margin-top: 8px; gap: 6px; }
.dieta-top.compacta .agua-b { height: 34px; font-size: 12px; }
.dieta-top.compacta .agua-b.mas { font-weight: 700; letter-spacing: .08em; }
.dieta-top.compacta:not(:has(.agua-card)) { grid-template-columns: 1fr; }
.compra-btn.chica { margin: 0 0 12px; }
.compra-btn .compra-t { display: flex; flex-direction: column; gap: 2px; }
.compra-btn .compra-t b { font-size: 12px; letter-spacing: .1em; font-weight: 700; }
.compra-btn .compra-t small { font-size: 11.5px; color: var(--muted); font-weight: 500; text-transform: none; letter-spacing: 0; }
.meal summary .meal-s, .meal-estado { font-weight: 600; }
.cat .elige { font-weight: 600; }
/* Perfil */
.pstats b { font-weight: 700; }
.pstats span { font-weight: 600; }
.pstats-vacio { display: block; width: 100%; margin: 12px 0 16px; padding: 12px 14px; border-radius: 14px; border: 1.5px dashed var(--line-strong); background: transparent; color: var(--ink-2); font: inherit; font-size: 11.5px; font-weight: 600; letter-spacing: .08em; text-align: center; cursor: pointer; }
.pstats-vacio b { color: var(--accent); font-weight: 700; }
.perfil-mail { font-size: 12px; color: var(--muted); }
.prow-t b { font-weight: 700; }
.prow-t small { font-weight: 500; }
.prow-v { font-weight: 700; }
.prow-v small { font-weight: 500; text-transform: uppercase; font-size: 10.5px; letter-spacing: .06em; }
.gim-cab .sub { text-transform: none; font-size: 13.5px; line-height: 1.5; color: var(--ink-2); font-weight: 500; letter-spacing: 0; }
.gim-cab .sub b { color: var(--ink); font-weight: 700; }
.gim-n { display: block; margin-top: 8px; font-size: 11px; letter-spacing: .08em; font-weight: 600; color: var(--ink-2); text-transform: uppercase; }
.gim-n b { color: var(--accent); font-weight: 700; } .gim-n.ok b { color: var(--ok); }
.gim-grupo summary h3, .gim-grupo summary b { font-weight: 700; }
.gim-item .si-no button { font-weight: 700; letter-spacing: .08em; }
.opts li b, .kcal .u, .cardio .u { font-weight: 600; }
.cardio .kcal .big { font-weight: 700; }

/* ===== Versión final · bloque 1 ===== */
.login-que { list-style: none; margin: 18px auto 0; padding: 0; max-width: 340px; display: flex; flex-direction: column; gap: 10px; }
.login-que li { display: flex; align-items: center; gap: 10px; font-size: 11.5px; font-weight: 600; letter-spacing: .08em; color: var(--ink-2); }
.login-que li i { font-style: normal; display: inline-grid; place-items: center; width: 22px; height: 22px; border-radius: 50%; border: 1.5px solid var(--accent); color: var(--accent); font-size: 11px; font-weight: 700; flex: none; }
.onb-hora { display: flex; flex-direction: column; align-items: center; gap: 6px; margin: 6px 0 4px; }
.onb-hora label { font-size: 11px; letter-spacing: .12em; font-weight: 600; color: var(--muted); }
.onb-hora select { font: inherit; font-size: 22px; font-weight: 700; padding: 8px 16px; border-radius: 14px; border: 1.5px solid var(--line-strong); background: var(--surface); color: var(--ink); }
.onb-bar.dos { display: flex; flex-direction: column; gap: 8px; width: 100%; max-width: 320px; }
.onb-bar.dos .btn { width: 100%; }
.racha.grande { margin-top: 8px; padding: 8px 14px 8px 10px; font-size: 11.5px; font-weight: 600; letter-spacing: .1em; gap: 6px; }
.racha.grande b { font-size: 18px; font-weight: 800; letter-spacing: 0; line-height: 1; }
.racha.grande svg { width: 18px; height: 18px; }
.resumen-sem { margin: 0 0 12px; padding: 14px 16px; border-radius: 18px; background: var(--surface); border: 1.5px solid var(--line-strong); }
.rs-k { margin: 0 0 10px; font-size: 11px; font-weight: 700; letter-spacing: .14em; color: var(--accent); }
.rs-g { display: flex; flex-wrap: wrap; gap: 8px 18px; }
.rs-g span { display: flex; flex-direction: column; gap: 2px; font-size: 10px; font-weight: 600; letter-spacing: .1em; color: var(--ink-2); }
.rs-g span b { font-size: 22px; font-weight: 800; letter-spacing: -.02em; color: var(--ink); line-height: 1; }
.rs-g span.baja b { color: var(--ok); } .rs-g span.sube b { color: var(--warn); }
.rs-f { margin: 12px 0 0; font-size: 11px; font-weight: 600; letter-spacing: .08em; color: var(--muted); }
/* Títulos con el peso del logo */
.hoy-head h1, .session-head h1, .ses-h, .dieta-head h1, .perfil-cab h1, .pre-t, .login h2, .onb h1 { font-weight: 800; letter-spacing: -.02em; }
.toca b, .fin-t { font-weight: 800; }
/* ===== Versión final · bloque 2 (Entreno) ===== */
.stp { position: relative; }
.stp-discos { position: absolute; right: 44px; top: -10px; width: 22px; height: 22px; border-radius: 50%; border: 1.5px solid var(--line-strong); background: var(--surface); color: var(--ink-2); font: inherit; font-size: 11px; display: grid; place-items: center; cursor: pointer; padding: 0; }
.stp-discos svg { width: 13px; height: 13px; }
.discos-kg { display: flex; align-items: center; justify-content: center; gap: 18px; margin: 4px 0 16px; }
.discos-kg b { font-size: 40px; font-weight: 800; letter-spacing: -.02em; } .discos-kg b small { font-size: 13px; margin-left: 4px; color: var(--muted); font-weight: 600; }
.discos-fila { padding: 12px 0; border-top: 1px solid var(--line); }
.discos-fila.main { border-top: 0; padding-top: 0; }
.discos-h { display: flex; justify-content: space-between; gap: 10px; align-items: baseline; font-size: 11px; letter-spacing: .1em; font-weight: 700; }
.discos-h .ok { color: var(--ok); font-weight: 600; } .discos-h .warn { color: var(--warn); font-weight: 600; } .discos-h .muted { font-weight: 600; }
.discos-l { display: flex; flex-wrap: wrap; gap: 6px; margin-top: 10px; }
.discos-l i { font-style: normal; display: grid; place-items: center; border-radius: 50%; background: var(--ink); color: var(--bg); font-weight: 800; font-size: 13px; width: 48px; height: 48px; }
.discos-l i.d25 { width: 56px; height: 56px; } .discos-l i.d20 { width: 54px; height: 54px; } .discos-l i.d15 { width: 50px; height: 50px; }
.discos-l i.d5 { width: 42px; height: 42px; font-size: 12px; } .discos-l i.d2_5 { width: 38px; height: 38px; font-size: 11px; } .discos-l i.d1_25 { width: 34px; height: 34px; font-size: 10px; }
.discos-n { margin: 14px 0 0; font-size: 12.5px; color: var(--muted); line-height: 1.5; }
.ex-burst.pr { background: var(--accent); color: #fff; }
.ex-burst.pr svg { fill: #fff; stroke: none; }
/* ===== Versión final · bloque 3 (Dieta) ===== */
.racion-row { display: flex; align-items: center; justify-content: space-between; gap: 10px; margin: 12px 0 2px; }
.racion-row > span { font-size: 11px; letter-spacing: .12em; font-weight: 600; color: var(--muted); }
.racion-seg { display: flex; gap: 4px; padding: 3px; border-radius: 999px; background: var(--surface-2); }
.racion-seg button { min-width: 44px; height: 32px; border: 0; border-radius: 999px; background: transparent; color: var(--ink-2); font: inherit; font-size: 13px; font-weight: 700; cursor: pointer; }
.racion-seg button.on { background: var(--ink); color: var(--bg); }
.hecha-row { display: flex; gap: 8px; margin-top: 10px; }
.hecha-row .btn { flex: 1; }
.hecha-row .libre-btn { flex: 0 0 auto; }
.meal.done .sub { color: var(--ok); }
/* ===== Versión final · bloque 4 (Perfil) ===== */
a.prow { text-decoration: none; color: inherit; }
.plan-dl { margin: 0; display: flex; flex-direction: column; gap: 0; }
.plan-dl div { display: flex; justify-content: space-between; gap: 12px; padding: 11px 0; border-bottom: 1px solid var(--line); }
.plan-dl div:last-child { border-bottom: 0; }
.plan-dl dt { font-size: 11px; letter-spacing: .12em; font-weight: 600; color: var(--muted); }
.plan-dl dd { margin: 0; font-size: 14px; font-weight: 700; text-align: right; }
.plan-card .sub { margin: 10px 0 0; font-size: 12.5px; }
.plan-bloque .pb-row { display: flex; justify-content: space-between; align-items: baseline; gap: 10px; margin: 6px 0 10px; }
.plan-bloque .pb-row b { font-size: 16px; font-weight: 800; text-transform: uppercase; }
.plan-bloque .pb-row span { font-size: 11px; letter-spacing: .1em; font-weight: 600; color: var(--ink-2); }
.plan-bloque .pb-f { margin: 10px 0 0; font-size: 11px; letter-spacing: .08em; font-weight: 600; color: var(--muted); }
.plan-bloque .pb-f em { font-style: normal; color: var(--ink); }
.logros .segbar { margin: 8px 0 14px; }
.logros-l { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; }
.logros-l li { display: flex; align-items: center; gap: 12px; padding: 10px 0; border-bottom: 1px solid var(--line); font-size: 11.5px; letter-spacing: .08em; font-weight: 600; color: var(--muted); }
.logros-l li:last-child { border-bottom: 0; }
.logros-l li i { font-style: normal; width: 24px; height: 24px; border-radius: 50%; display: grid; place-items: center; border: 1.5px solid var(--line-strong); font-size: 12px; font-weight: 700; flex: none; }
.logros-l li.ok { color: var(--ink); }
.logros-l li.ok i { background: var(--ok); border-color: var(--ok); color: #fff; }
.logros .sub { margin: 12px 0 0; font-size: 12.5px; }
.med-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 12px 8px; margin-top: 8px; }
.med-grid div { display: flex; flex-direction: column; gap: 2px; }
.med-grid b { font-size: 22px; font-weight: 800; letter-spacing: -.02em; } .med-grid b small { font-size: 11px; margin-left: 2px; color: var(--muted); font-weight: 600; }
.med-grid span { font-size: 10px; letter-spacing: .1em; font-weight: 600; color: var(--muted); }
.med-grid em { font-style: normal; font-size: 11px; font-weight: 700; color: var(--muted); } .med-grid em.baja { color: var(--ok); } .med-grid em.sube { color: var(--warn); }
.med-in { display: grid; grid-template-columns: 1fr 1fr; gap: 10px; margin: 8px 0 12px; }
.med-in label { display: flex; flex-direction: column; gap: 4px; position: relative; }
.med-in label span { font-size: 10px; letter-spacing: .1em; font-weight: 600; color: var(--muted); }
.med-in input { font: inherit; font-size: 20px; font-weight: 700; padding: 8px 34px 8px 10px; border-radius: 12px; border: 1.5px solid var(--line-strong); background: var(--surface); color: var(--ink); width: 100%; box-sizing: border-box; }
.med-in label small { position: absolute; right: 10px; bottom: 11px; font-size: 11px; color: var(--muted); font-weight: 600; }
.med-tabla { width: 100%; border-collapse: collapse; margin-top: 6px; font-size: 12.5px; font-variant-numeric: tabular-nums; }
.med-tabla th { font-size: 10px; letter-spacing: .1em; color: var(--muted); font-weight: 600; text-align: right; padding: 6px 4px; }
.med-tabla th:first-child, .med-tabla td:first-child { text-align: left; }
.med-tabla td { padding: 7px 4px; border-top: 1px solid var(--line); text-align: right; }
.aj-sec .dt-l { margin-bottom: 8px; }
.aj-row { display: flex; flex-direction: column; gap: 10px; }
.aj-t b { display: block; font-size: 13px; letter-spacing: .06em; font-weight: 700; }
.aj-t small { display: block; margin-top: 3px; font-size: 12px; color: var(--muted); line-height: 1.4; }
.aj-acts { display: flex; gap: 8px; align-items: center; flex-wrap: wrap; }
.aj-acts input[type=time] { font: inherit; font-size: 16px; font-weight: 700; padding: 7px 10px; border-radius: 12px; border: 1.5px solid var(--line-strong); background: var(--surface); color: var(--ink); }
.aj-pasos { list-style: none; margin: 4px 0 8px; padding: 0; display: flex; flex-direction: column; gap: 8px; }
.aj-pasos li { display: flex; gap: 10px; align-items: flex-start; font-size: 13.5px; line-height: 1.45; color: var(--ink-2); }
.aj-pasos li em { font-style: normal; display: inline-grid; place-items: center; width: 22px; height: 22px; border-radius: 50%; background: var(--ink); color: var(--bg); font-size: 11px; font-weight: 700; flex: none; margin-top: 1px; }
.aj-links { display: flex; flex-wrap: wrap; gap: 8px 16px; margin: 12px 0; }
.aj-links a { font-size: 11px; letter-spacing: .1em; font-weight: 600; color: var(--ink-2); text-decoration: none; border-bottom: 1px solid var(--line-strong); padding-bottom: 2px; }
.aj-ver { text-align: center; font-size: 10px; letter-spacing: .14em; color: var(--muted); font-weight: 600; margin: 8px 0 24px; }
.perfil-salir2 { text-transform: uppercase; letter-spacing: .1em; font-weight: 700; }
.aj-pasos li { display: block; padding-left: 32px; position: relative; }
.aj-pasos li em { position: absolute; left: 0; top: 1px; }
.prow-v.chico, .plista .prow[data-prog="plan"] .prow-v { font-size: 12px; letter-spacing: .06em; }

/* ===== Ajustes finales de color: más sobrio y profesional ===== */
:root {
  --bg: #050506; --surface: #101013; --surface-2: #18181C; --line: #26262B; --line-strong: #36363D;
  --ink: #F5F5F7; --ink-2: #CFCFD6; --muted: #9C9CA8;
  --brand: #E0163C; --accent: #E0163C; --accent-soft: rgba(224, 22, 60, .14); --accent-line: rgba(224, 22, 60, .4);
  --ok: #2FBF83; --ok-soft: rgba(47, 191, 131, .12); --warn: #D9A24A; --warn-soft: rgba(217, 162, 74, .12);
  --barra: rgba(5,5,6,.92); --barra-top: rgba(5,5,6,.86);
  --shadow: 0 1px 0 rgba(255,255,255,.025) inset, 0 10px 28px -20px rgba(0,0,0,.9);
}
@media (prefers-color-scheme: light) {
  :root:not([data-tema="oscuro"]) {
    --bg: #F3F3F5; --surface: #FFFFFF; --surface-2: #ECECEF; --line: #E2E2E7; --line-strong: #CBCBD2;
    --ink: #0E0E11; --ink-2: #34343B; --muted: #6A6A74; --accent: #D4123A; --brand: #D4123A;
    --accent-soft: rgba(212,18,58,.09); --accent-line: rgba(212,18,58,.34);
    --ok: #1E9A5A; --warn: #A8690D;
    --shadow: 0 1px 2px rgba(16,16,20,.05), 0 8px 22px -16px rgba(16,16,20,.16);
  }
}
:root[data-tema="claro"] {
  --bg: #F3F3F5; --surface: #FFFFFF; --surface-2: #ECECEF; --line: #E2E2E7; --line-strong: #CBCBD2;
  --ink: #0E0E11; --ink-2: #34343B; --muted: #6A6A74; --accent: #D4123A; --brand: #D4123A;
  --accent-soft: rgba(212,18,58,.09); --accent-line: rgba(212,18,58,.34);
  --ok: #1E9A5A; --warn: #A8690D;
  --shadow: 0 1px 2px rgba(16,16,20,.05), 0 8px 22px -16px rgba(16,16,20,.16);
}
/* Tarjetas: borde más fino y sombra suave en vez de bordes gruesos */
.card, .hc, .hecho-linea, .plan-camino, .resumen-sem, .day, .prow, .meal { border-width: 1px; border-color: var(--line); box-shadow: var(--shadow); }
.hoy-peso.pend { border-width: 1.5px; }
.toca { box-shadow: 0 14px 30px -18px color-mix(in srgb, var(--accent) 70%, transparent); }
.tabbar { border-top: 1px solid var(--line); }
.segbar { border-width: 2px; }
/* Pastilla «en crudo» centrada */
.crudo { display: flex; align-items: center; justify-content: center; gap: 8px; text-align: center; padding: 9px 12px; border-radius: 12px; font-weight: 600; font-size: 12px; letter-spacing: .02em; }
.crudo::before { margin: 0; flex: none; }
/* Fila de plan larga */
.plista .prow .prow-t b { line-height: 1.2; }
.plista .prow[data-prog="plan"] .prow-v { font-size: 20px; }
.plista .prow[data-prog="plan"] .prow-v small { font-size: 10px; }
/* G de Google original, sin reborde */
.btn.google svg, .btn.google svg path { stroke: none !important; stroke-width: 0 !important; }
.btn.google svg { width: 20px; height: 20px; background: none; border: 0; box-shadow: none; border-radius: 0; padding: 0; }
