/* =====================================================================
   Gymbro · Estilos
   Mobile-first. Tema oscuro cálido con un color por grupo muscular.
   ===================================================================== */

:root {
  /* Base */
  --bg: #15110E;           /* carbón cálido */
  --superficie: #1F1915;   /* tarjetas */
  --superficie-2: #2A221D; /* chips, barras */
  --linea: #3A302A;
  --texto: #F6EFE7;        /* tiza */
  --texto-suave: #A99E93;

  /* Acentos */
  --brasa: #FF5A1F;        /* empuje */
  --acero: #5B9BFF;        /* tirón */
  --dorado: #F5B82E;       /* pierna */
  --ambar: #FFB020;
  --ok: #5BD98A;
  --peligro: #FF6B6B;

  --grupo: var(--brasa);

  /* Tipografía */
  --f-titulo: "Barlow Condensed", "Arial Narrow", Impact, system-ui, sans-serif;
  --f-cuerpo: Barlow, system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;

  /* Métricas */
  --appbar-h: 56px;
  --radio: 18px;
  --radio-s: 12px;
  --z-appbar: 30;
  --z-tabs: 20;
  --z-toast: 50;
}

[data-grupo="empuje"] { --grupo: var(--brasa); }
[data-grupo="tiron"]  { --grupo: var(--acero); }
[data-grupo="pierna"] { --grupo: var(--dorado); }

*, *::before, *::after { box-sizing: border-box; }

html {
  color-scheme: dark;
  -webkit-text-size-adjust: 100%;
  scroll-padding-top: calc(var(--appbar-h) + 80px);
}

body {
  margin: 0;
  min-height: 100dvh;
  background: var(--bg);
  color: var(--texto);
  font: 400 16px/1.5 var(--f-cuerpo);
  -webkit-font-smoothing: antialiased;
  padding-bottom: env(safe-area-inset-bottom);
}

button { font: inherit; color: inherit; cursor: pointer; }
:focus-visible { outline: 2px solid var(--grupo); outline-offset: 2px; }

/* ---------- Barra superior ---------- */
.appbar {
  position: sticky;
  top: 0;
  z-index: var(--z-appbar);
  height: var(--appbar-h);
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 0 16px;
  background: color-mix(in srgb, var(--bg) 88%, transparent);
  backdrop-filter: blur(14px);
  -webkit-backdrop-filter: blur(14px);
  border-bottom: 1px solid var(--linea);
}

.marca {
  display: inline-flex;
  align-items: center;
  gap: 10px;
  text-decoration: none;
  color: var(--texto);
  font: 800 26px/1 var(--f-titulo);
  text-transform: uppercase;
  letter-spacing: .04em;
}
.marca__icono { color: var(--brasa); }

.btn-icono {
  width: 44px;
  height: 44px;
  display: grid;
  place-items: center;
  border: 1px solid var(--linea);
  border-radius: 12px;
  background: var(--superficie);
  color: var(--texto);
  transition: border-color .2s, background .2s;
}
.btn-icono:hover { border-color: var(--texto-suave); background: var(--superficie-2); }
.appbar__acciones { display: flex; gap: 8px; }
.btn-icono--texto {
  width: auto;
  padding: 0 12px;
  font: 800 16px/1 var(--f-titulo);
  letter-spacing: .04em;
  color: var(--brasa);
}

/* ---------- Contenedor ---------- */
.contenedor {
  max-width: 1040px;
  margin: 0 auto;
}

/* Resplandor ambiental: sigue el color del día activo (data-grupo en <html>) */
body::before {
  content: "";
  position: fixed;
  z-index: -1;
  inset: 0 0 auto 0;
  height: 70vh;
  background: radial-gradient(60% 55% at 25% 12%, color-mix(in srgb, var(--grupo) 26%, transparent), transparent 70%);
  pointer-events: none;
}

/* ---------- Hero del día ---------- */
.hero {
  position: relative;
  padding: 28px 16px 10px;
}

.hero__dia {
  margin: 0;
  font: 600 14px/1 var(--f-cuerpo);
  color: var(--texto-suave);
}
.hero__titulo {
  margin: 8px 0 6px;
  font: 800 clamp(56px, 15vw, 92px)/.9 var(--f-titulo);
  letter-spacing: -.01em;
  text-transform: uppercase;
  color: var(--grupo);
  text-wrap: balance;
}
.hero__musculos {
  margin: 0;
  font: 600 20px/1.2 var(--f-titulo);
  color: var(--texto);
}
.hero__musculos span { color: var(--texto-suave); margin: 0 6px; }
.hero__frase {
  margin: 10px 0 18px;
  max-width: 46ch;
  color: var(--texto-suave);
}

.hero__meta {
  display: flex;
  align-items: center;
  gap: 12px;
  flex-wrap: wrap;
  font: 600 14px/1 var(--f-cuerpo);
  color: var(--texto-suave);
}
.hero__meta .sep { width: 1px; height: 14px; background: var(--linea); }
.progreso {
  flex: 1 1 120px;
  height: 6px;
  border-radius: 3px;
  background: var(--superficie-2);
  overflow: hidden;
}
.progreso > i {
  display: block;
  height: 100%;
  width: 0;
  border-radius: inherit;
  background: linear-gradient(90deg, var(--grupo), var(--ambar));
  transition: width .35s ease-out;
}
.hero__hechos { color: var(--texto); }
.hero__hechos--completo { color: var(--ok); }
.hero__acciones {
  display: flex;
  align-items: stretch;
  gap: 10px;
  margin-top: 18px;
}
.btn--empezar {
  flex: 1 1 auto;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 10px;
  min-height: 62px;
  padding-inline: 20px;
  border: 0;
  background: var(--grupo);
  color: #17110C;
  font: 800 22px/1 var(--f-titulo);
  letter-spacing: .03em;
  text-transform: uppercase;
  box-shadow: 0 8px 26px color-mix(in srgb, var(--grupo) 35%, transparent);
}
.btn--empezar svg { width: 22px; height: 22px; }
.btn--empezar:hover { filter: brightness(1.06); }
.btn-icono--compartir { flex: 0 0 auto; width: 62px; height: 62px; border-radius: var(--radio-s); }

/* ---------- Tabs de días ---------- */
.tabs {
  position: sticky;
  top: var(--appbar-h);
  z-index: var(--z-tabs);
  display: flex;
  gap: 8px;
  padding: 10px 16px 12px;
  overflow-x: auto;
  scroll-snap-type: x proximity;
  scrollbar-width: none;
  background: var(--bg);
  -webkit-overflow-scrolling: touch;
}
.tabs::-webkit-scrollbar { display: none; }

.tab {
  flex: 0 0 auto;
  scroll-snap-align: start;
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  gap: 4px;
  min-width: 132px;
  min-height: 56px;
  padding: 8px 14px 9px;
  border-radius: 14px;
  border: 1px solid var(--linea);
  background: var(--superficie);
  text-align: left;
  transition: border-color .2s, background .2s;
}
.tab:hover { border-color: color-mix(in srgb, var(--grupo) 60%, var(--linea)); }
.tab strong {
  display: inline-flex;
  align-items: center;
  gap: 7px;
  font: 700 21px/1 var(--f-titulo);
  text-transform: uppercase;
  letter-spacing: .02em;
}
.tab .punto {
  width: 8px;
  height: 8px;
  border-radius: 50%;
  background: var(--grupo);
  box-shadow: 0 0 0 3px color-mix(in srgb, var(--grupo) 22%, transparent);
}
.tab small {
  font: 500 12px/1 var(--f-cuerpo);
  color: var(--texto-suave);
}
.tab[aria-selected="true"] {
  border-color: var(--grupo);
  background: color-mix(in srgb, var(--grupo) 16%, var(--superficie));
}
.tab[aria-selected="true"] small { color: var(--texto); }

/* ---------- Lista de ejercicios ---------- */
.lista {
  display: grid;
  gap: 12px;
  padding: 6px 16px 28px;
}
.lista:focus-visible { outline: none; }

.ej {
  position: relative;
  display: grid;
  gap: 14px;
  padding: 16px;
  border-radius: var(--radio);
  border: 1px solid var(--linea);
  background: var(--superficie);
  transition: border-color .25s;
}
.ej--hecho { border-color: color-mix(in srgb, var(--grupo) 55%, var(--linea)); }

.ej__top {
  display: flex;
  align-items: flex-start;
  gap: 12px;
}
.ej__num {
  flex: 0 0 auto;
  min-width: 26px;
  padding-top: 1px;
  font: 700 28px/1 var(--f-titulo);
  color: var(--grupo);
  font-variant-numeric: tabular-nums;
}
.ej__tit { flex: 1 1 auto; min-width: 0; }
.ej__nombre {
  margin: 0;
  font: 700 22px/1.1 var(--f-titulo);
  text-wrap: balance;
}
.ej__nota {
  margin: 4px 0 0;
  font-size: 14px;
  color: var(--texto-suave);
}

.ej__hecho {
  flex: 0 0 auto;
  width: 44px;
  height: 44px;
  margin: -4px -4px 0 0;
  display: grid;
  place-items: center;
  border-radius: 50%;
  border: 2px solid var(--linea);
  background: transparent;
  color: transparent;
  transition: background .2s, border-color .2s, color .2s;
}
.ej__hecho:hover { border-color: var(--grupo); color: color-mix(in srgb, var(--grupo) 60%, transparent); }
.ej--hecho .ej__hecho {
  background: var(--grupo);
  border-color: var(--grupo);
  color: var(--bg);
}

/* Objetivos fijos */
.specs {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  margin: 0;
  padding: 0;
  list-style: none;
}
.chip {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  min-height: 36px;
  padding: 6px 12px;
  border-radius: 999px;
  border: 1px solid transparent;
  background: var(--superficie-2);
  font: 500 14px/1 var(--f-cuerpo);
  color: var(--texto-suave);
}
.chip b {
  font: 700 17px/1 var(--f-titulo);
  color: var(--texto);
  letter-spacing: .02em;
}

/* Descanso: un solo botón grande que arranca y detiene el contador */
.descanso {
  position: relative;
  overflow: hidden;
  --pct: 0%;
  width: 100%;
  min-height: 56px;
  display: flex;
  align-items: center;
  gap: 12px;
  padding: 8px 14px;
  border-radius: var(--radio-s);
  border: 1px solid color-mix(in srgb, var(--grupo) 45%, var(--linea));
  background: color-mix(in srgb, var(--grupo) 10%, var(--superficie-2));
  color: var(--texto);
  text-align: left;
  transition: border-color .2s, background .2s, color .2s;
}
.descanso::before {
  content: "";
  position: absolute;
  inset: 0 auto 0 0;
  width: var(--pct);
  background: color-mix(in srgb, var(--grupo) 28%, transparent);
  transition: width .25s linear;
  pointer-events: none;
}
.descanso > * { position: relative; }
.descanso:hover { border-color: var(--grupo); background: color-mix(in srgb, var(--grupo) 16%, var(--superficie-2)); }
.descanso__icono {
  flex: 0 0 auto;
  width: 40px;
  height: 40px;
  display: grid;
  place-items: center;
  border-radius: 50%;
  background: var(--grupo);
  color: #17110C;
}
.descanso__txt { display: grid; gap: 3px; min-width: 0; }
.descanso__rotulo {
  font: 700 20px/1 var(--f-titulo);
  letter-spacing: .02em;
  font-variant-numeric: tabular-nums;
}
.descanso__detalle {
  display: inline-flex;
  align-items: center;
  gap: 5px;
  font: 500 13px/1.2 var(--f-cuerpo);
  color: var(--texto-suave);
}
.descanso__detalle svg { color: var(--grupo); }
.descanso.activo { border-color: var(--grupo); }
.descanso.listo { border-color: var(--ok); }
.descanso.listo::before { background: color-mix(in srgb, var(--ok) 30%, transparent); }
.descanso.listo .descanso__icono { background: var(--ok); }
.descanso.fin {
  background: var(--grupo);
  border-color: var(--grupo);
  color: #17110C;
}
.descanso.fin::before { display: none; }
.descanso.fin .descanso__detalle { color: color-mix(in srgb, #17110C 70%, transparent); }
.descanso.fin .descanso__icono { background: #17110C; color: var(--grupo); }

/* Una fila por serie */
.series { display: grid; gap: 6px; }
.series__cab, .serie {
  display: grid;
  grid-template-columns: 44px minmax(0, 1fr) minmax(0, 1fr);
  gap: 8px;
  align-items: center;
}
.series__cab span {
  padding: 0 4px;
  font: 500 12px/1 var(--f-cuerpo);
  color: var(--texto-suave);
}
.series__cab span:first-child { text-align: center; }
.serie__n {
  display: grid;
  place-items: center;
  height: 44px;
  border-radius: 10px;
  background: var(--superficie-2);
  font: 700 18px/1 var(--f-titulo);
  color: var(--grupo);
}
.serie input {
  width: 100%;
  min-width: 0;
  min-height: 44px;
  padding: 6px 12px;
  border-radius: 10px;
  border: 1px solid var(--linea);
  background: var(--bg);
  color: var(--texto);
  font: 600 20px/1 var(--f-titulo);
  letter-spacing: .02em;
  text-align: center;
  appearance: textfield;
  -moz-appearance: textfield;
  transition: border-color .2s;
}
.serie input::-webkit-outer-spin-button,
.serie input::-webkit-inner-spin-button { -webkit-appearance: none; margin: 0; }
.serie input::placeholder { color: color-mix(in srgb, var(--texto-suave) 50%, transparent); }
.serie input:hover { border-color: var(--texto-suave); }
.serie input:focus-visible {
  outline: 2px solid var(--grupo);
  outline-offset: 0;
  border-color: var(--grupo);
}

/* Cardio: tarjeta de cierre y sus campos */
.ej--cardio {
  background: color-mix(in srgb, var(--grupo) 7%, var(--superficie));
  border-style: dashed;
}
.ej--cardio.ej--hecho { border-style: solid; }
.ej__tipo {
  margin: 0 0 2px;
  font: 600 13px/1 var(--f-cuerpo);
  color: var(--grupo);
}
.campos {
  display: grid;
  grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
  gap: 10px;
}
.campo { min-width: 0; }
.campo label {
  display: block;
  margin-bottom: 6px;
  font: 500 13px/1 var(--f-cuerpo);
  color: var(--texto-suave);
}
.campo input {
  width: 100%;
  min-width: 0;
  min-height: 48px;
  padding: 6px 12px;
  border-radius: var(--radio-s);
  border: 1px solid var(--linea);
  background: var(--bg);
  color: var(--texto);
  font: 600 21px/1 var(--f-titulo);
  letter-spacing: .02em;
  text-align: center;
  appearance: textfield;
  -moz-appearance: textfield;
  transition: border-color .2s;
}
.campo input::-webkit-outer-spin-button,
.campo input::-webkit-inner-spin-button { -webkit-appearance: none; margin: 0; }
.campo input::placeholder { color: color-mix(in srgb, var(--texto-suave) 50%, transparent); }
.campo input:hover { border-color: var(--texto-suave); }
.campo input:focus-visible {
  outline: 2px solid var(--grupo);
  outline-offset: 0;
  border-color: var(--grupo);
}

/* Nota libre */
.nota input {
  width: 100%;
  min-width: 0;
  min-height: 40px;
  padding: 6px 12px;
  border-radius: 10px;
  border: 1px dashed var(--linea);
  background: transparent;
  color: var(--texto);
  font: 400 15px/1.3 var(--f-cuerpo);
  transition: border-color .2s;
}
.nota input::placeholder { color: color-mix(in srgb, var(--texto-suave) 70%, transparent); }
.nota input:hover { border-color: var(--texto-suave); }
.nota input:focus-visible {
  outline: none;
  border-style: solid;
  border-color: var(--grupo);
}
.visualmente-oculto {
  position: absolute;
  width: 1px;
  height: 1px;
  overflow: hidden;
  clip: rect(0 0 0 0);
  white-space: nowrap;
}

/* Técnica (desplegable) y video */
.ej__pie { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; }
.btn-detalle--video { color: var(--grupo); border-color: color-mix(in srgb, var(--grupo) 55%, var(--linea)); }
.btn-detalle--cambiar { color: var(--texto); border-color: color-mix(in srgb, var(--grupo) 55%, var(--linea)); }
.btn-detalle--cambiar svg { color: var(--grupo); }
.btn-detalle--progreso { color: var(--texto); border-color: color-mix(in srgb, var(--dorado) 55%, var(--linea)); }
.btn-detalle--progreso svg { color: var(--dorado); }
.btn-detalle--progreso:hover { background: color-mix(in srgb, var(--dorado) 14%, transparent); }
.btn-detalle--video:hover { background: color-mix(in srgb, var(--grupo) 14%, transparent); }
.btn-detalle {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  min-height: 40px;
  padding: 6px 12px 6px 14px;
  border-radius: 999px;
  border: 1px solid var(--linea);
  background: transparent;
  color: var(--texto-suave);
  font: 600 14px/1 var(--f-cuerpo);
  transition: border-color .2s, color .2s;
}
.btn-detalle:hover { border-color: var(--grupo); color: var(--texto); }
.btn-detalle svg { transition: transform .2s; }
.btn-detalle[aria-expanded="true"] svg { transform: rotate(180deg); }

/* Modal de video */
.dlg--video {
  width: min(96vw, 860px);
  background: var(--bg);
}
.video { padding: 12px 14px 14px; }
.video__cab {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  margin-bottom: 10px;
}
.video__titulo {
  margin: 0;
  font: 700 22px/1.1 var(--f-titulo);
  text-wrap: balance;
}
.media {
  display: grid;
  place-items: center;
  aspect-ratio: 16 / 9;
  border-radius: 12px;
  overflow: hidden;
  background: #000;
}
.media img, .media video, .media iframe {
  display: block;
  width: 100%;
  height: 100%;
  border: 0;
  object-fit: contain;
}
/* Videos verticales (Shorts): el modal se angosta y el video ocupa el alto */
.dlg--video-vertical { width: min(96vw, 440px); }
.media--vertical {
  aspect-ratio: 9 / 16;
  max-height: min(78vh, 720px);
  margin: 0 auto;
}

/* ---------- Estado / pie ---------- */
.estado {
  max-width: 1040px;
  margin: 0 auto;
  padding: 8px 16px 28px;
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 6px 10px;
  font-size: 13px;
  color: var(--texto-suave);
}
.estado__punto {
  width: 8px;
  height: 8px;
  border-radius: 50%;
  background: var(--ok);
  box-shadow: 0 0 0 3px color-mix(in srgb, var(--ok) 20%, transparent);
}
.estado__punto--aviso { background: var(--ambar); box-shadow: 0 0 0 3px color-mix(in srgb, var(--ambar) 20%, transparent); }
.estado__aviso { color: var(--ambar); }

/* ---------- Toast (capa superior, encima de los modales) ---------- */
.toast {
  position: fixed;
  inset: auto;
  left: 50%;
  bottom: calc(24px + env(safe-area-inset-bottom));
  z-index: var(--z-toast);
  width: max-content;
  max-width: 92vw;
  height: auto;
  margin: 0;
  border: 0;
  overflow: visible;
  transform: translate(-50%, 12px);
  padding: 10px 16px;
  border-radius: 999px;
  background: var(--texto);
  color: var(--bg);
  font: 600 14px/1.3 var(--f-cuerpo);
  text-align: center;
  opacity: 0;
  pointer-events: none;
  transition: opacity .2s, transform .2s;
}
.toast.visible { opacity: 1; transform: translate(-50%, 0); }
.toast[hidden] { display: none; }
.toast:not(:popover-open) { display: none; }

/* ---------- Aviso de fin de descanso (capa superior) ---------- */
.aviso {
  position: fixed;
  inset: auto;
  left: 50%;
  top: calc(var(--appbar-h) + 12px + env(safe-area-inset-top));
  z-index: var(--z-toast);
  width: min(92vw, 520px);
  height: auto;
  margin: 0;
  border: 0;
  overflow: visible;
  display: flex;
  align-items: center;
  gap: 14px;
  padding: 16px 18px;
  border-radius: 16px;
  background: var(--grupo);
  color: var(--bg);
  box-shadow: 0 14px 40px rgba(0, 0, 0, .45);
  cursor: pointer;
  opacity: 0;
  transform: translate(-50%, -16px);
  transition: opacity .25s, transform .25s;
}
.aviso.visible { opacity: 1; transform: translate(-50%, 0); }
.aviso:not(.visible) { pointer-events: none; }
.aviso[hidden] { display: none; }
.aviso:not(:popover-open) { display: none; }
.aviso p {
  flex: 1;
  margin: 0;
  font: 700 21px/1.2 var(--f-titulo);
}
.aviso small {
  font: 500 12px/1 var(--f-cuerpo);
  opacity: .75;
  white-space: nowrap;
}

/* ---------- Diálogo de progreso ---------- */
.dlg {
  width: min(92vw, 440px);
  padding: 0;
  border: 1px solid var(--linea);
  border-radius: var(--radio);
  background: var(--superficie);
  color: var(--texto);
}
.dlg::backdrop { background: rgba(0, 0, 0, .6); backdrop-filter: blur(4px); }
.dlg__cuerpo { padding: 20px 20px 22px; }
.dlg__cab {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  margin-bottom: 14px;
}
.dlg__titulo {
  margin: 0;
  font: 700 30px/1 var(--f-titulo);
  text-transform: uppercase;
}
.dlg__sub {
  margin: 22px 0 6px;
  font: 700 20px/1 var(--f-titulo);
  text-transform: uppercase;
  letter-spacing: .02em;
}
.dlg__texto { margin: 0 0 14px; color: var(--texto-suave); font-size: 15px; }
.dlg__acciones { display: grid; gap: 8px; }
.btn-icono--sm { width: 36px; height: 36px; border-radius: 10px; }

.stats {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 8px;
  margin-bottom: 14px;
}
.stat {
  display: grid;
  gap: 4px;
  padding: 12px 8px;
  border-radius: 12px;
  background: var(--superficie-2);
  text-align: center;
}
.stat b {
  font: 800 30px/1 var(--f-titulo);
  color: var(--grupo);
}
.stat b small { font-size: 16px; color: var(--texto-suave); }
.stat span { font: 500 12px/1.2 var(--f-cuerpo); color: var(--texto-suave); }

.cal__cab, .cal__grid {
  display: grid;
  grid-template-columns: repeat(7, minmax(0, 1fr));
  gap: 6px;
}
.cal__cab span {
  margin-bottom: 2px;
  text-align: center;
  font: 600 11px/1 var(--f-cuerpo);
  color: var(--texto-suave);
}
.cal__dia {
  position: relative;
  aspect-ratio: 1;
  display: grid;
  place-items: center;
  border-radius: 10px;
  background: var(--superficie-2);
  font: 500 13px/1 var(--f-cuerpo);
  color: var(--texto-suave);
}
.cal__dia--futuro { opacity: .35; }
.cal__dia--hoy { outline: 2px solid var(--texto); outline-offset: -2px; color: var(--texto); }
.cal__dia--entrenado {
  background: color-mix(in srgb, var(--grupo) 30%, var(--superficie-2));
  color: var(--texto);
  font-weight: 700;
}
.cal__dia--entrenado::after {
  content: "";
  position: absolute;
  bottom: 4px;
  width: 6px;
  height: 6px;
  border-radius: 50%;
  background: var(--grupo);
}
.cal__leyenda { margin: 12px 0 0; font-size: 14px; color: var(--texto-suave); }

/* Lista de estado (avisos, pantalla, sin conexión, espacio) */
.checks {
  margin: 0;
  padding: 0;
  list-style: none;
  display: grid;
  gap: 8px;
}
.check {
  display: flex;
  gap: 10px;
  align-items: flex-start;
  padding: 10px 12px;
  border-radius: 12px;
  background: var(--superficie-2);
}
.check__punto {
  flex: 0 0 auto;
  width: 8px;
  height: 8px;
  margin-top: 6px;
  border-radius: 50%;
  background: var(--ambar);
  box-shadow: 0 0 0 3px color-mix(in srgb, var(--ambar) 20%, transparent);
}
.check--ok .check__punto {
  background: var(--ok);
  box-shadow: 0 0 0 3px color-mix(in srgb, var(--ok) 20%, transparent);
}
.check__cuerpo { display: grid; gap: 3px; min-width: 0; }
.check__cuerpo b { font: 600 14px/1.3 var(--f-cuerpo); color: var(--texto); }
.check__cuerpo span { font-size: 13px; line-height: 1.4; color: var(--texto-suave); }
.btn--mini {
  min-height: 36px;
  margin-top: 6px;
  padding: 6px 12px;
  font-size: 14px;
  justify-self: start;
}

.btn {
  min-height: 46px;
  padding: 10px 16px;
  border-radius: var(--radio-s);
  border: 1px solid var(--brasa);
  background: var(--brasa);
  color: #1A0D06;
  font: 600 16px/1 var(--f-cuerpo);
  transition: filter .2s, background .2s, border-color .2s;
}
.btn:hover { filter: brightness(1.08); }
.btn--sec {
  background: var(--superficie-2);
  border-color: var(--linea);
  color: var(--texto);
}
.btn--sec:hover { border-color: var(--texto-suave); filter: none; }
.btn--peligro { color: var(--peligro); }

/* ---------- Botones grandes y selectores ---------- */
.btn--grande {
  flex: 1 1 auto;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 8px;
  min-height: 56px;
  font: 700 20px/1 var(--f-titulo);
  letter-spacing: .02em;
  text-transform: uppercase;
  background: var(--grupo);
  border-color: var(--grupo);
}
.btn:disabled { opacity: .45; cursor: not-allowed; filter: none; }
.campo select {
  width: 100%;
  min-height: 48px;
  padding: 6px 12px;
  border-radius: var(--radio-s);
  border: 1px solid var(--linea);
  background: var(--bg);
  color: var(--texto);
  font: 500 15px/1.3 var(--f-cuerpo);
}
.campo select:focus-visible { outline: 2px solid var(--grupo); outline-offset: 0; border-color: var(--grupo); }
.campo--ancho { grid-column: 1 / -1; }
.campo__et {
  display: block;
  margin-bottom: 6px;
  font: 500 13px/1 var(--f-cuerpo);
  color: var(--texto-suave);
}
.chip--btn { cursor: pointer; transition: border-color .2s, background .2s, color .2s; }
.chip--btn:hover { border-color: var(--brasa); }
.chip--btn.activo { border-color: var(--brasa); background: color-mix(in srgb, var(--brasa) 18%, var(--superficie-2)); color: var(--texto); }

/* ---------- Modo entrenamiento ---------- */
.dlg--entreno {
  position: fixed;
  inset: 0;
  width: 100vw;
  height: 100dvh;
  max-width: none;
  max-height: none;
  margin: 0;
  padding: 0;
  border: 0;
  border-radius: 0;
  background: var(--bg);
  overflow: hidden;
}
.dlg--entreno::backdrop { background: var(--bg); }
body.sin-scroll { overflow: hidden; }
.entreno {
  display: grid;
  grid-template-rows: auto minmax(0, 1fr) auto;
  height: 100dvh;
}
.entreno__cab {
  display: flex;
  align-items: center;
  gap: 12px;
  padding: calc(10px + env(safe-area-inset-top)) 16px 10px;
  border-bottom: 1px solid var(--linea);
  background: var(--superficie);
}
.entreno__info { flex: 1 1 auto; min-width: 0; display: grid; gap: 8px; }
.entreno__dia { margin: 0; font: 600 14px/1 var(--f-cuerpo); color: var(--texto-suave); }
.entreno__reloj {
  margin: 0;
  font: 700 26px/1 var(--f-titulo);
  font-variant-numeric: tabular-nums;
  color: var(--grupo);
}
.entreno__cuerpo {
  overflow-y: auto;
  padding: 16px;
  -webkit-overflow-scrolling: touch;
}
.entreno__cuerpo .ej { max-width: 640px; margin: 0 auto; }
.entreno__cuerpo .ej__nombre { font-size: 28px; }
.entreno__cuerpo .serie input { min-height: 52px; font-size: 24px; }
.entreno__pie {
  display: flex;
  gap: 8px;
  padding: 12px 16px calc(12px + env(safe-area-inset-bottom));
  border-top: 1px solid var(--linea);
  background: var(--superficie);
}
.entreno__pie .btn--sec { padding-inline: 14px; }

.resumen-sesion {
  max-width: 640px;
  margin: 0 auto;
  display: grid;
  gap: 16px;
  text-align: center;
}
.resumen-sesion__titulo {
  margin: 8px 0 0;
  font: 800 clamp(44px, 11vw, 72px)/.95 var(--f-titulo);
  text-transform: uppercase;
  color: var(--grupo);
  text-wrap: balance;
}
.resumen-sesion__sub { margin: 0; color: var(--texto-suave); }
.resumen-sesion__lista {
  margin: 0;
  padding: 0;
  list-style: none;
  display: grid;
  gap: 6px;
  text-align: left;
}
.resumen-sesion__lista li {
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: 12px;
  padding: 10px 14px;
  border-radius: 12px;
  background: var(--superficie);
  border: 1px solid var(--linea);
}
.resumen-sesion__lista li.hecho { border-color: color-mix(in srgb, var(--grupo) 50%, var(--linea)); }
.resumen-sesion__lista b { font: 700 18px/1 var(--f-titulo); white-space: nowrap; }
.resumen-sesion__racha { margin: 0; font: 600 16px/1.3 var(--f-cuerpo); }

/* ---------- Calculadora de 1RM ---------- */
.rm__form {
  display: grid;
  grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
  gap: 10px;
  margin-bottom: 10px;
}
.rm__resultado { margin-top: 14px; display: grid; gap: 12px; }
.rm__hero {
  display: grid;
  gap: 4px;
  padding: 16px;
  border-radius: 14px;
  text-align: center;
  background: color-mix(in srgb, var(--brasa) 14%, var(--superficie-2));
}
.rm__hero span { font: 500 13px/1 var(--f-cuerpo); color: var(--texto-suave); }
.rm__hero b { font: 800 56px/1 var(--f-titulo); color: var(--brasa); }
.rm__hero small { font-size: 13px; color: var(--texto-suave); }
.rm__nota { margin: 0; font-size: 14px; color: var(--texto-suave); }

.tabla-scroll { overflow-x: auto; }
.tabla { width: 100%; border-collapse: collapse; font-size: 14px; }
.tabla th, .tabla td { padding: 8px 6px; border-bottom: 1px solid var(--linea); text-align: right; white-space: nowrap; }
.tabla th { font: 600 12px/1 var(--f-cuerpo); color: var(--texto-suave); }
.tabla th:first-child, .tabla td:first-child { text-align: left; }
.tabla td { font: 600 15px/1.2 var(--f-titulo); letter-spacing: .02em; }
.tabla--rm td:first-child { color: var(--texto-suave); }
.tabla__borrar {
  width: 32px;
  height: 32px;
  border-radius: 8px;
  border: 1px solid var(--linea);
  background: transparent;
  color: var(--texto-suave);
  font-size: 13px;
}
.tabla__borrar:hover { color: var(--peligro); border-color: var(--peligro); }

/* ---------- Compartir ---------- */
.dlg--compartir { width: min(92vw, 420px); }
.compartir__img {
  display: block;
  width: 100%;
  max-height: 58vh;
  object-fit: contain;
  border-radius: 12px;
  background: #000;
  margin-bottom: 12px;
  min-height: 120px;
}

/* ---------- Tu cuerpo ---------- */
.dlg--cuerpo { width: min(96vw, 640px); }
.dlg__cab--fija {
  position: sticky;
  top: 0;
  z-index: 2;
  margin: -20px -20px 14px;
  padding: 16px 20px 10px;
  background: var(--superficie);
  border-bottom: 1px solid var(--linea);
}
.cuerpo__sec + .cuerpo__sec { margin-top: 8px; }
.cuerpo__sec .dlg__sub:first-child { margin-top: 12px; }
.cuerpo__sec--pie { margin-top: 24px; display: grid; gap: 8px; }
.cuerpo__nota { margin: 10px 0 0; font-size: 13px; color: var(--texto-suave); }
.perfil, .medidas {
  display: grid;
  grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
  gap: 10px;
}
.medidas { grid-template-columns: repeat(auto-fill, minmax(130px, 1fr)); margin-bottom: 12px; }
.medidas[hidden] { display: none; }
.medicion {
  display: flex;
  flex-wrap: wrap;
  align-items: flex-end;
  gap: 10px;
  margin-bottom: 12px;
}
.campo--peso { flex: 1 1 150px; }
.campo--peso input { font-size: 24px; }
.btn-detalle--lapiz { min-height: 48px; }
.btn-detalle--lapiz small { font-weight: 500; color: var(--texto-suave); }
.campo--error { border-color: var(--peligro) !important; box-shadow: 0 0 0 3px color-mix(in srgb, var(--peligro) 25%, transparent); }
.seg { display: flex; gap: 6px; }
.seg__btn {
  flex: 1;
  min-height: 46px;
  border-radius: var(--radio-s);
  border: 1px solid var(--linea);
  background: var(--bg);
  color: var(--texto-suave);
  font: 600 15px/1 var(--f-cuerpo);
  transition: border-color .2s, background .2s, color .2s;
}
.seg__btn.activo {
  border-color: var(--brasa);
  background: color-mix(in srgb, var(--brasa) 16%, var(--bg));
  color: var(--texto);
}
.seg__btn small {
  display: block;
  margin-top: 4px;
  font: 600 12px/1 var(--f-titulo);
  letter-spacing: .03em;
  color: var(--texto-suave);
}
.seg__btn.activo small { color: var(--brasa); }
.ritmo__desc { margin: 8px 0 0; font-size: 13px; line-height: 1.4; color: var(--texto-suave); }
.numero__aviso { color: var(--ambar); }

/* Pestañas internas del panel Tu cuerpo */
.subtabs {
  position: sticky;
  top: 62px;
  z-index: 1;
  display: flex;
  gap: 6px;
  padding: 4px 0 10px;
  background: var(--superficie);
}
.subtab {
  flex: 1;
  min-height: 44px;
  border-radius: var(--radio-s);
  border: 1px solid var(--linea);
  background: var(--superficie-2);
  color: var(--texto-suave);
  font: 700 16px/1 var(--f-titulo);
  text-transform: uppercase;
  letter-spacing: .03em;
  transition: border-color .2s, background .2s, color .2s;
}
.subtab.activo {
  border-color: var(--brasa);
  background: color-mix(in srgb, var(--brasa) 16%, var(--superficie-2));
  color: var(--texto);
}
.modo-kcal { margin: 12px 0; }
.campo--kcal { margin-top: 10px; }
.ciclo { margin-top: 10px; }
.ciclo .numero { gap: 6px; }
.ciclo .macro { grid-template-columns: 84px minmax(0, 1fr) 52px; font-size: 13px; }
.ciclo .macro strong { font-size: 14px; }
@media (max-width: 520px) {
  .numeros.ciclo { grid-template-columns: minmax(0, 1fr); }
}
.numeros {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 8px;
}
.numero {
  display: grid;
  gap: 4px;
  align-content: start;
  padding: 12px;
  border-radius: 12px;
  background: var(--superficie-2);
}
.numero b { font: 800 30px/1 var(--f-titulo); color: var(--brasa); }
.numero b small { font-size: 15px; color: var(--texto-suave); font-weight: 600; }
.numero span { font-size: 13px; line-height: 1.35; color: var(--texto-suave); }
.numero--ancho { grid-column: 1 / -1; }
.numero--destacado { background: color-mix(in srgb, var(--brasa) 14%, var(--superficie-2)); }
.numero__titulo { font: 600 14px/1 var(--f-cuerpo); color: var(--texto); }
.macros { display: grid; gap: 8px; margin: 6px 0 4px; }
.macro {
  display: grid;
  grid-template-columns: 110px minmax(0, 1fr) 60px;
  align-items: center;
  gap: 10px;
  font-size: 14px;
  color: var(--texto);
}
.macro i { display: block; height: 8px; border-radius: 4px; background: var(--superficie); overflow: hidden; }
.macro i b { display: block; height: 100%; border-radius: 4px; }
.macro strong { text-align: right; font: 700 16px/1 var(--f-titulo); }

.metricas { display: flex; flex-wrap: wrap; gap: 6px; margin-bottom: 10px; }
.grafico { position: relative; margin-bottom: 8px; }
.grafico svg { display: block; width: 100%; height: auto; }
.grafico__grid { stroke: var(--linea); stroke-width: 1; }
.grafico__eje { fill: var(--texto-suave); font: 500 12px var(--f-cuerpo); }
.grafico__linea { fill: none; stroke: var(--brasa); stroke-width: 2; stroke-linejoin: round; stroke-linecap: round; }
.grafico__punto { fill: var(--brasa); stroke: var(--superficie); stroke-width: 2; }
.grafico__etiqueta { fill: var(--texto); font: 700 14px var(--f-titulo); }
.grafico__cruz { stroke: var(--texto-suave); stroke-width: 1; stroke-dasharray: 3 3; }
.grafico__tip {
  position: absolute;
  z-index: 1;
  padding: 6px 10px;
  border-radius: 8px;
  background: var(--texto);
  color: var(--bg);
  font: 600 13px/1 var(--f-cuerpo);
  white-space: nowrap;
  pointer-events: none;
  transform: translate(-50%, calc(-100% - 12px));
}
.grafico__resumen { margin: 0 0 12px; font-size: 14px; color: var(--texto-suave); }
.grafico__resumen b { color: var(--texto); }
.grafico__resumen .baja { color: var(--ok); }
.grafico__resumen .sube { color: var(--ambar); }

/* ---------- Catálogo: miniatura en la tarjeta, ficha y selector ---------- */
.ej__mini {
  flex: 0 0 auto;
  width: 60px;
  height: 60px;
  padding: 0;
  border-radius: 12px;
  border: 1px solid var(--linea);
  background: #fff;
  overflow: hidden;
}
.ej__mini img { display: block; width: 100%; height: 100%; object-fit: cover; }
.ej__variante {
  margin: 4px 0 0;
  font-size: 13px;
  color: var(--grupo);
}
.ej__variante span { color: var(--texto-suave); }
.dlg--ficha { width: min(96vw, 520px); }
.dlg--selector { width: min(96vw, 720px); }
.ficha__cab { display: flex; align-items: flex-start; gap: 10px; margin-bottom: 12px; }
.ficha__tit { flex: 1 1 auto; min-width: 0; }
.ficha__nombre { margin: 0; font: 700 26px/1.1 var(--f-titulo); text-wrap: balance; }
.ficha__en { margin: 2px 0 0; font-size: 13px; color: var(--texto-suave); }
.ficha__gif {
  aspect-ratio: 1;
  max-height: 46vh;
  margin: 0 auto 12px;
  border-radius: 14px;
  overflow: hidden;
  background: #fff;
}
.ficha__gif img { display: block; width: 100%; height: 100%; object-fit: contain; }
.ficha__sec { margin: 10px 0 0; font-size: 14px; color: var(--texto-suave); }
.ficha__pasos { margin: 0; padding: 0 0 0 20px; display: grid; gap: 6px; font-size: 15px; }
.ficha__pasos li::marker { color: var(--grupo); font-weight: 700; }
.ficha__variante { margin: 12px 0 0; font-size: 14px; color: var(--texto-suave); }
.ficha__variante b { color: var(--texto); }
.atribucion { margin: 12px 0 0; font-size: 12px; color: color-mix(in srgb, var(--texto-suave) 70%, transparent); text-align: right; }
.selector__filtros { display: grid; gap: 10px; margin-bottom: 10px; }
.selector__conteo { margin: 0 0 8px; font-size: 13px; color: var(--texto-suave); }
.selector__barra {
  display: flex;
  align-items: center;
  gap: 8px;
  margin: 4px 0 10px;
}
.selector__barra .seg { flex: 1 1 auto; }
.seg--sm .seg__btn { min-height: 40px; font-size: 14px; }
.selector__buscar {
  width: 100%;
  min-height: 46px;
  margin-bottom: 10px;
  padding: 6px 12px;
  border-radius: var(--radio-s);
  border: 1px solid var(--brasa);
  background: var(--bg);
  color: var(--texto);
  font: 500 16px/1.3 var(--f-cuerpo);
}
.selector__buscar:focus-visible { outline: 2px solid var(--brasa); outline-offset: 0; }
.btn-icono--activo { border-color: var(--brasa); color: var(--brasa); }
.selector__aviso {
  margin: 4px 0 0;
  padding: 22px 16px;
  border-radius: 14px;
  border: 1px dashed var(--linea);
  text-align: center;
  color: var(--texto-suave);
  font-size: 15px;
}
.selector__grilla {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(140px, 1fr));
  gap: 10px;
}
.tarjeta-ej {
  display: grid;
  gap: 6px;
  padding: 8px;
  border-radius: 14px;
  border: 1px solid var(--linea);
  background: var(--superficie-2);
  color: var(--texto);
  text-align: left;
  transition: border-color .2s, background .2s;
}
.tarjeta-ej:hover { border-color: var(--grupo); }
.tarjeta-ej--actual { border-color: var(--grupo); background: color-mix(in srgb, var(--grupo) 14%, var(--superficie-2)); }
.tarjeta-ej img { display: block; width: 100%; aspect-ratio: 1; height: auto; border-radius: 10px; background: #fff; object-fit: cover; }
.tarjeta-ej__nombre { font: 600 14px/1.25 var(--f-cuerpo); }
.tarjeta-ej__equipo { font-size: 12px; color: var(--texto-suave); }

/* ---------- Perfil inicial (cuestionario): 11 escenas en 3 etapas ----------
   Una luz radial única que cambia de tono por escena, número de capítulo
   tenue de fondo, títulos condensados con una palabra encendida, todo
   centrado. Las fotos se revelan en duotono y se "encienden" al elegirse;
   si faltan, el dato ocupa su lugar (clases --sin). */
@property --tono { syntax: '<color>'; inherits: true; initial-value: #FF5A1F; }
@property --luz-x { syntax: '<percentage>'; inherits: true; initial-value: 80%; }
@property --luz-k { syntax: '<percentage>'; inherits: true; initial-value: 34%; }

.dlg--perfil {
  position: fixed;
  inset: 0;
  width: 100vw;
  height: 100vh;
  height: 100dvh;
  max-width: none;
  max-height: none;
  margin: 0;
  padding: 0;
  border: 0;
  border-radius: 0;
  background: var(--bg);
}
.dlg--perfil::backdrop { background: var(--bg); }

/* Contenedor a todo el ancho (".perfil" ya se usa en la pestaña Tu cuerpo).
   La luz y el número ocupan la pantalla entera; el contenido va en una columna de 640 px. */
.cuestionario {
  --tono: var(--brasa);
  --luz-x: 80%;
  --luz-k: 34%;
  --tinta: #1A0D06;
  --dur: 320ms;
  --curva: cubic-bezier(.2, .7, .2, 1);
  --ancho-ctrl: 440px;
  --columna: 640px;
  position: relative;
  isolation: isolate;
  display: grid;
  grid-template-rows: auto minmax(0, 1fr) auto;
  height: 100vh;
  height: 100dvh;
  padding-inline: 20px;
  overflow: hidden;
  text-align: center;
  transition: --tono 600ms ease, --luz-x 600ms ease, --luz-k 600ms ease;
}
/* Tono y posición de la luz por escena: brasa = identidad y plan, ámbar = números,
   cobre → dorado = cuerpo (de dónde estás a dónde vas), acero = cuidado, brasa plena = cierre */
.cuestionario[data-escena="1"]  { --luz-x: 80%; }
.cuestionario[data-escena="2"]  { --luz-x: 20%; }
.cuestionario[data-escena="3"]  { --tono: var(--ambar); --luz-x: 80%; }
.cuestionario[data-escena="4"]  { --luz-x: 20%; }
.cuestionario[data-escena="4"][data-tono="ganar"] { --tono: var(--dorado); }     /* la luz toma el color del objetivo elegido */
.cuestionario[data-escena="4"][data-tono="mantener"] { --tono: var(--acero); }
.cuestionario[data-escena="5"]  { --tono: #D9481A; --luz-x: 50%; --luz-k: 40%; }
.cuestionario[data-escena="6"]  { --tono: var(--dorado); --luz-x: 80%; }
.cuestionario[data-escena="7"]  { --luz-x: 20%; }
.cuestionario[data-escena="8"]  { --tono: var(--ambar); --luz-x: 80%; }
.cuestionario[data-escena="9"]  { --luz-x: 20%; }
.cuestionario[data-escena="10"] { --tono: var(--acero); --luz-x: 50%; }
.cuestionario[data-escena="11"] { --luz-x: 50%; --luz-k: 44%; }

.cuestionario::before {
  content: "";
  position: absolute;
  inset: 0;
  z-index: -3;
  background:
    radial-gradient(70% 45% at var(--luz-x) 8%, color-mix(in srgb, var(--tono) var(--luz-k), transparent), transparent 70%),
    var(--bg);
  pointer-events: none;
}
/* Grano fino sobre toda la escena: tapa el bandeado del degradado y une las fotos con el fondo */
.cuestionario::after {
  content: "";
  position: absolute;
  inset: 0;
  z-index: -1;
  opacity: .05;
  mix-blend-mode: overlay;
  pointer-events: none;
  background: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='160' height='160'><filter id='g'><feTurbulence type='fractalNoise' baseFrequency='.9' numOctaves='2' stitchTiles='stitch'/><feColorMatrix values='0 0 0 0 0  0 0 0 0 0  0 0 0 0 0  0 0 0 .6 0'/></filter><rect width='100%' height='100%' filter='url(%23g)'/></svg>");
}
/* Foto de portada a sangre, solo en la bienvenida: continuidad con la pantalla de acceso */
.cuestionario__fondo {
  position: absolute;
  inset: 0;
  z-index: -2;
  background: center 30% / cover no-repeat;
  opacity: .34;
  filter: grayscale(1) contrast(1.1) brightness(.7);
  mix-blend-mode: luminosity;
  -webkit-mask-image: linear-gradient(180deg, #000 15%, transparent 80%);
  mask-image: linear-gradient(180deg, #000 15%, transparent 80%);
  pointer-events: none;
}
/* Número de capítulo: enorme, tenue, pegado al borde derecho de la columna */
.escena__num {
  position: absolute;
  top: 40px;
  right: -.04em;
  z-index: -1;
  font: 800 clamp(180px, 56vw, 320px)/.8 var(--f-titulo);
  letter-spacing: -.05em;
  font-variant-numeric: tabular-nums;
  color: color-mix(in srgb, var(--texto) 6%, transparent);
  -webkit-mask-image: linear-gradient(180deg, #000 30%, transparent 95%);
  mask-image: linear-gradient(180deg, #000 30%, transparent 95%);
  pointer-events: none;
  user-select: none;
  animation: entra-num var(--dur) var(--curva) both;
}
.cuestionario[data-escena="1"] .escena__num { display: none; } /* en la bienvenida ya está la foto */
.escena__num--sale { animation: sale-num 200ms ease-in both; }
[data-dir="atras"] .escena__num { animation-name: entra-num-atras; }
[data-dir="atras"] .escena__num--sale { animation-name: sale-num; }

/* Cabecera: volver · progreso en tres tramos · más tarde */
.perfil__cab {
  display: grid;
  grid-template-columns: 44px minmax(0, 1fr) 44px;
  align-items: center;
  gap: 14px;
  width: 100%;
  max-width: var(--columna);
  margin-inline: auto;
  padding: calc(10px + env(safe-area-inset-top)) 0 6px;
  min-height: 60px;
}
.btn-icono--fantasma { background: transparent; border-color: transparent; color: var(--texto-suave); }
.btn-icono--fantasma:hover { background: color-mix(in srgb, var(--texto) 6%, transparent); border-color: transparent; color: var(--texto); }
.btn-icono--fantasma:disabled { visibility: hidden; }
.perfil__progreso { padding-inline: 8px; }
.progreso-actos { display: grid; grid-template-columns: 3fr 3fr 4fr; gap: 6px; height: 3px; }
.progreso-actos i { position: relative; display: block; border-radius: 2px; background: var(--linea); overflow: hidden; }
.progreso-actos i::before { content: ""; position: absolute; inset: 0; background: var(--brasa); transform-origin: left; transform: scaleX(var(--p, 0)); transition: transform 500ms var(--curva); }

/* Cuerpo: la escena queda centrada y, si desborda, hace scroll con un fundido al pie que avisa */
.perfil__cuerpo {
  position: relative;
  display: flex;
  flex-direction: column;
  min-height: 0;
  overflow: hidden auto;
  scrollbar-width: none;
}
.perfil__cuerpo::-webkit-scrollbar { display: none; }
.perfil__cuerpo--desborda:not(.perfil__cuerpo--fin) {
  -webkit-mask-image: linear-gradient(180deg, #000 calc(100% - 40px), transparent);
  mask-image: linear-gradient(180deg, #000 calc(100% - 40px), transparent);
}
.escena {
  width: 100%;
  max-width: var(--columna);
  margin: auto;
  display: grid;
  justify-items: center;
  gap: 14px;
  padding: 16px 0 20px;
  animation: entra var(--dur) var(--curva) both;
}
.escena--sale { animation: sale 200ms ease-in both; pointer-events: none; }
[data-dir="atras"] .escena { animation-name: entra-atras; }
[data-dir="atras"] .escena--sale { animation-name: sale-atras; }
.escena > * { animation: sube var(--dur) var(--curva) both; animation-delay: calc(var(--i, 0) * 60ms); }
.escena > :nth-child(2) { --i: 1; }
.escena > :nth-child(3) { --i: 2; }
.escena > :nth-child(4) { --i: 3; }
@keyframes entra { from { opacity: 0; transform: translateX(28px); } }
@keyframes sale { to { opacity: 0; transform: translateX(-28px); } }
@keyframes entra-atras { from { opacity: 0; transform: translateX(-28px); } }
@keyframes sale-atras { to { opacity: 0; transform: translateX(28px); } }
@keyframes entra-num { from { opacity: 0; transform: translateX(40px); } }
@keyframes entra-num-atras { from { opacity: 0; transform: translateX(-40px); } }
@keyframes sale-num { to { opacity: 0; } }
@keyframes sube { from { opacity: 0; transform: translateY(10px); } }

/* Texto */
.perfil__eyebrow { margin: 0; font: 600 13px/1.2 var(--f-cuerpo); letter-spacing: .16em; text-transform: uppercase; color: var(--brasa); }
.perfil__eyebrow--saludo { font: 600 17px/1.3 var(--f-cuerpo); letter-spacing: 0; text-transform: none; }
.saludo__marca { display: inline-block; white-space: nowrap; } /* la marca y el emoji bajan juntos de línea */
.marca-saludo { font: 800 1.7em/1 var(--f-titulo); text-transform: uppercase; letter-spacing: .03em; color: var(--texto); vertical-align: -.08em; }
.perfil__titulo {
  margin: 0;
  max-width: 13ch;
  padding-top: .06em;
  font: 800 clamp(42px, 11.5vw, 72px)/.94 var(--f-titulo);
  text-transform: uppercase;
  letter-spacing: -.01em;
  text-wrap: balance;
  overflow-wrap: anywhere;
}
.perfil__titulo:focus-visible { outline: 0; } /* recibe el foco al cambiar de escena, sin anillo */
.perfil__titulo--largo { font-size: clamp(34px, 9.5vw, 56px); }
.perfil__titulo em { font-style: normal; color: var(--brasa); }
.perfil__titulo [aria-hidden] { font-size: .58em; vertical-align: .08em; } /* el emoji del cierre, más chico que la palabra */
.perfil__sub { margin: 0; max-width: 34ch; color: var(--texto-suave); font-size: clamp(16px, 4.2vw, 18px); line-height: 1.45; text-wrap: pretty; }
.perfil__paso { width: 100%; display: grid; justify-items: center; gap: 14px; margin-top: 6px; }
.perfil__nota { margin: 0; font-size: 12px; color: var(--texto-suave); letter-spacing: .04em; }
.perfil__pista { margin: 0; font-size: 13px; color: var(--texto-suave); letter-spacing: .04em; }
.perfil__error { margin: 0; padding: 10px 14px; border-radius: 10px; background: color-mix(in srgb, var(--peligro) 16%, var(--superficie-2)); font: 500 14px/1.35 var(--f-cuerpo); }

/* Campos sin caja: solo una línea inferior que se enciende con el foco */
.linea-input {
  width: 100%;
  max-width: var(--ancho-ctrl);
  min-height: 72px;
  padding: 0 8px;
  border: 0;
  border-bottom: 2px solid var(--linea);
  border-radius: 0;
  background: transparent;
  color: var(--texto);
  text-align: center;
  font: 800 clamp(32px, 9vw, 44px)/1 var(--f-titulo);
  letter-spacing: .01em;
  transition: border-color .2s;
}
.linea-input::placeholder { color: color-mix(in srgb, var(--texto) 32%, transparent); }
.linea-input:focus-visible { outline: 0; border-color: var(--brasa); }
.cifras { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 8px; width: 100%; max-width: var(--ancho-ctrl); }
.cifra { display: grid; justify-items: center; gap: 8px; min-width: 0; }
.cifra__input {
  width: 100%;
  min-width: 0;
  min-height: 76px;
  padding: 0 4px;
  border: 0;
  border-bottom: 2px solid var(--linea);
  border-radius: 0;
  background: transparent;
  color: var(--texto);
  text-align: center;
  font: 800 clamp(36px, 10vw, 52px)/1 var(--f-titulo);
  font-variant-numeric: tabular-nums;
  appearance: textfield;
  -moz-appearance: textfield;
  transition: border-color .2s;
}
.cifra__input::-webkit-inner-spin-button, .cifra__input::-webkit-outer-spin-button { -webkit-appearance: none; margin: 0; }
.cifra__input::placeholder { color: color-mix(in srgb, var(--texto) 32%, transparent); }
.cifra__input:focus-visible { outline: 0; border-color: var(--brasa); }
.cifra--error .cifra__input { border-color: var(--peligro); }
.cifra label { font: 600 12px/1 var(--f-cuerpo); letter-spacing: .12em; text-transform: uppercase; color: var(--texto-suave); }

/* Menú tipográfico (objetivo, experiencia, lugar): líneas separadas por filetes, sin cajas */
.menu { width: 100%; max-width: var(--ancho-ctrl); display: grid; }
.menu__item {
  position: relative;
  display: grid;
  justify-items: center;
  gap: 5px;
  min-height: 76px;
  padding: 14px 12px;
  border: 0;
  border-top: 1px solid var(--linea);
  background: transparent;
  color: var(--texto);
  transition: transform 80ms ease, background .2s;
}
.menu__item:last-child { border-bottom: 1px solid var(--linea); }
.menu__item b { font: 700 clamp(24px, 6.5vw, 30px)/1 var(--f-titulo); text-transform: uppercase; letter-spacing: .02em; transition: color .2s; }
.menu__item small { font: 400 14px/1.35 var(--f-cuerpo); color: var(--texto-suave); max-width: 32ch; }
.menu__item::after {
  content: "";
  position: absolute;
  left: 50%;
  bottom: -1px;
  width: 56px;
  height: 2px;
  background: var(--brasa);
  transform: translateX(-50%) scaleX(0);
  transition: transform 260ms var(--curva);
}
.menu__item:active { transform: scale(.98); }
.menu__item.activa { background: color-mix(in srgb, var(--brasa) 5%, transparent); }
.menu__item.activa b { color: var(--brasa); }
.menu__item.activa::after { transform: translateX(-50%) scaleX(1); }
@media (hover: hover) {
  .menu__item:hover { background: color-mix(in srgb, var(--texto) 3%, transparent); }
  .menu__item:hover b { color: var(--brasa); }
}

/* Tarjetas foto (sexo, cuerpo que buscás): duotono en reposo, a color al elegir */
.fotos { width: 100%; max-width: var(--ancho-ctrl); display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 10px; }
.fotos--sexo { max-width: 380px; }
.foto {
  position: relative;
  isolation: isolate;
  aspect-ratio: 3 / 4;
  padding: 0;
  overflow: hidden;
  border: 0;
  border-radius: 14px;
  background: color-mix(in srgb, var(--tono) 45%, var(--superficie));
  color: var(--texto);
  text-align: center;
  transition: transform 80ms ease, box-shadow .2s;
}
.foto img {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: center 18%;
  filter: grayscale(1) contrast(1.1) brightness(.8);
  mix-blend-mode: luminosity;
  transition: filter 300ms ease, transform 600ms var(--curva);
}
.foto::before { /* grano */
  content: "";
  position: absolute;
  inset: 0;
  z-index: 1;
  opacity: .1;
  mix-blend-mode: overlay;
  pointer-events: none;
  background: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='160' height='160'><filter id='g'><feTurbulence type='fractalNoise' baseFrequency='.9' numOctaves='2' stitchTiles='stitch'/><feColorMatrix values='0 0 0 0 0  0 0 0 0 0  0 0 0 0 0  0 0 0 .6 0'/></filter><rect width='100%' height='100%' filter='url(%23g)'/></svg>");
}
.foto::after { content: ""; position: absolute; inset: 0; z-index: 1; background: linear-gradient(180deg, transparent 45%, rgba(21, 17, 14, .92)); pointer-events: none; }
.foto__pie { position: absolute; inset: auto 10px 12px; z-index: 2; display: grid; gap: 3px; justify-items: center; }
.foto__nombre { font: 700 clamp(20px, 5.5vw, 26px)/1 var(--f-titulo); text-transform: uppercase; }
.foto__rango { font: 600 13px/1 var(--f-cuerpo); color: var(--brasa); letter-spacing: .04em; font-variant-numeric: tabular-nums; }
.foto__desc { font: 400 12px/1.3 var(--f-cuerpo); color: var(--texto-suave); font-style: normal; }
.foto__cifra { display: none; font: 800 clamp(40px, 11vw, 56px)/1 var(--f-titulo); color: var(--brasa); letter-spacing: -.02em; font-variant-numeric: tabular-nums; }
.foto__cifra i { font-style: normal; font-size: .5em; vertical-align: top; }
.foto:active { transform: scale(.98); }
.foto.activa { box-shadow: inset 0 0 0 2px var(--brasa), 0 0 32px -6px color-mix(in srgb, var(--brasa) 60%, transparent); } /* el único resplandor del sistema */
.foto.activa img { filter: none; mix-blend-mode: normal; transform: scale(1.03); }
/* Sin foto: placa oscura (independiente de la luz) y el dato ocupa el lugar de la imagen */
.foto.foto--sin { background: color-mix(in srgb, var(--tono) 8%, var(--superficie)); box-shadow: inset 0 0 0 1px var(--linea); }
.foto.foto--sin.activa { background: color-mix(in srgb, var(--brasa) 14%, var(--superficie)); box-shadow: inset 0 0 0 2px var(--brasa), 0 0 32px -6px color-mix(in srgb, var(--brasa) 60%, transparent); }
.foto--sin img, .foto--sin::after { display: none; }
.foto--sin .foto__pie { inset: 0; align-content: center; gap: 6px; padding: 12px; }
.foto--sin .foto__cifra { display: block; }
.foto--sin .foto__rango { display: none; }
.foto--sin.foto--palabra .foto__nombre { font-size: clamp(34px, 9.5vw, 44px); }

/* Cuerpo hoy: retrato fundido al fondo (cuando exista la serie) + dato héroe + regla que se rellena */
[data-paso="grasa"] { gap: 10px; }
.retrato {
  position: relative;
  display: block;
  width: min(56vw, 220px);
  aspect-ratio: 3 / 4;
  overflow: hidden;
  -webkit-mask-image: radial-gradient(ellipse 70% 85% at 50% 45%, #000 55%, transparent 100%);
  mask-image: radial-gradient(ellipse 70% 85% at 50% 45%, #000 55%, transparent 100%);
}
.retrato img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; object-position: center top; opacity: 0; transition: opacity 320ms ease; }
.retrato img.visible { opacity: 1; }
.dato { display: grid; justify-items: center; gap: 4px; }
.dato b { font: 800 clamp(64px, 20vw, 110px)/1 var(--f-titulo); letter-spacing: -.03em; font-variant-numeric: tabular-nums; }
.dato--sin-foto b { font-size: clamp(96px, 30vw, 160px); }
.dato b i { font-style: normal; font-size: .45em; color: var(--brasa); vertical-align: top; margin-left: .06em; }
.dato > span { font: 600 15px/1 var(--f-cuerpo); color: var(--brasa); letter-spacing: .1em; text-transform: uppercase; }
.dato p { margin: 4px 0 0; color: var(--texto-suave); font-size: 15px; max-width: 30ch; min-height: 1.4em; }
.regla { width: 100%; max-width: var(--ancho-ctrl); display: grid; grid-template-columns: 44px minmax(0, 1fr) 44px; gap: 8px; align-items: center; }
.regla .btn-icono { font: 700 26px/1 var(--f-titulo); }
.regla input {
  -webkit-appearance: none;
  appearance: none;
  width: 100%;
  height: 56px;
  margin: 0;
  cursor: pointer;
  background: linear-gradient(90deg, var(--brasa) 0 var(--p, 50%), var(--linea) var(--p, 50%) 100%) center / calc(100% - 6px) 4px no-repeat;
}
.regla input::-webkit-slider-runnable-track { height: 56px; background: transparent; }
.regla input::-webkit-slider-thumb {
  -webkit-appearance: none;
  width: 6px;
  height: 44px;
  margin-top: 6px;
  border-radius: 3px;
  background: var(--brasa);
  box-shadow: 0 0 18px color-mix(in srgb, var(--brasa) 70%, transparent);
}
.regla input::-moz-range-track { height: 56px; background: transparent; }
.regla input::-moz-range-thumb { width: 6px; height: 44px; border: 0; border-radius: 3px; background: var(--brasa); box-shadow: 0 0 18px color-mix(in srgb, var(--brasa) 70%, transparent); }
.regla input:focus-visible { outline: 0; }
.regla input:focus-visible::-webkit-slider-thumb { box-shadow: 0 0 0 3px var(--bg), 0 0 0 5px var(--brasa); }

/* Segmentos (días, minutos) */
.grupo-seg { display: grid; gap: 8px; justify-items: center; width: 100%; max-width: var(--ancho-ctrl); }
.grupo-seg h3 { margin: 0; font: 600 12px/1 var(--f-cuerpo); letter-spacing: .14em; text-transform: uppercase; color: var(--texto-suave); }
.grupo-seg .lectura { margin: 0; min-height: 1.4em; font-size: 15px; color: var(--texto-suave); }
.segmentos { display: flex; gap: 6px; width: 100%; }
.segmento {
  flex: 1 1 0;
  min-width: 0;
  min-height: 64px;
  padding: 6px 2px;
  display: grid;
  align-content: center;
  justify-items: center;
  gap: 3px;
  border: 1px solid var(--linea);
  border-radius: 12px;
  background: transparent;
  color: var(--texto);
  transition: background .2s, border-color .2s, color .2s, transform 80ms ease;
}
.segmento b { font: 700 clamp(22px, 6vw, 28px)/1 var(--f-titulo); font-variant-numeric: tabular-nums; }
.segmento span { font: 600 11px/1 var(--f-cuerpo); letter-spacing: .06em; text-transform: uppercase; color: var(--texto-suave); }
.segmento--texto { min-height: 52px; }
.segmento--texto b { font-size: clamp(17px, 4.8vw, 20px); text-transform: uppercase; letter-spacing: .04em; }
.segmento:active { transform: scale(.96); }
.segmento.activa { background: var(--brasa); border-color: var(--brasa); color: var(--tinta); }
.segmento.activa span { color: var(--tinta); }
.sintesis { margin: 0; min-height: 1.3em; font: 700 17px/1.3 var(--f-titulo); text-transform: uppercase; letter-spacing: .03em; color: var(--texto-suave); font-variant-numeric: tabular-nums; }
.sintesis b { color: var(--texto); }

/* Chips (zonas a cuidar) */
.chips { display: flex; flex-wrap: wrap; justify-content: center; gap: 8px; max-width: 420px; }
.chip-zona {
  min-height: 50px;
  padding: 0 20px;
  border: 1px solid var(--linea);
  border-radius: 999px;
  background: transparent;
  color: var(--texto);
  font: 700 18px/1 var(--f-titulo);
  text-transform: uppercase;
  letter-spacing: .04em;
  transition: background .2s, border-color .2s, color .2s, transform 80ms ease;
}
.chip-zona:active { transform: scale(.96); }
.chip-zona.activa { background: var(--brasa); border-color: var(--brasa); color: var(--tinta); }

/* Resumen */
.perfil__resumen { display: grid; gap: 18px; width: 100%; max-width: var(--ancho-ctrl); justify-items: center; }
.antes-despues { display: grid; grid-template-columns: minmax(0, 1fr) 28px minmax(0, 1fr); align-items: center; gap: 12px; width: 100%; }
.antes-despues > div { display: grid; justify-items: center; gap: 6px; }
.antes-despues .retrato { width: min(34vw, 140px); margin-bottom: 4px; }
.cifra-r { font: 800 clamp(44px, 13vw, 64px)/1 var(--f-titulo); letter-spacing: -.03em; font-variant-numeric: tabular-nums; }
.cifra-r i { font-style: normal; font-size: .45em; color: var(--brasa); vertical-align: top; margin-left: .04em; }
.antes-despues > div:last-child .cifra-r { color: var(--brasa); }
.antes-despues > div > span { font: 600 12px/1.2 var(--f-cuerpo); letter-spacing: .1em; text-transform: uppercase; color: var(--texto-suave); }
.flecha { position: relative; width: 28px; height: 2px; background: var(--brasa); }
.flecha::after { content: ""; position: absolute; right: -1px; top: -5px; width: 10px; height: 10px; border: 2px solid var(--brasa); border-left: 0; border-bottom: 0; transform: rotate(45deg); }
.perfil__estimacion { margin: 0; max-width: 36ch; padding: 12px 14px; border-radius: 12px; background: color-mix(in srgb, var(--brasa) 12%, var(--superficie-2)); font-size: 16px; line-height: 1.45; }
.perfil__estimacion b { color: var(--brasa); font-weight: 600; }
.perfil__lista { list-style: none; margin: 0; padding: 0; width: 100%; }
.perfil__lista li { display: flex; justify-content: space-between; align-items: baseline; gap: 16px; padding: 12px 0; border-top: 1px solid var(--linea); font-size: 15px; text-align: left; }
.perfil__lista li:last-child { border-bottom: 1px solid var(--linea); }
.perfil__lista li span { color: var(--texto-suave); flex: 0 0 auto; }
.perfil__lista li b { font: 700 17px/1.2 var(--f-titulo); text-transform: uppercase; letter-spacing: .02em; text-align: right; }

/* Pie: una sola acción (vacío en las escenas que avanzan solas, para que nada salte) */
.perfil__pie {
  display: grid;
  align-content: center;
  width: 100%;
  max-width: var(--columna);
  margin-inline: auto;
  min-height: 96px;
  padding: 8px 0 calc(12px + env(safe-area-inset-bottom));
}
.perfil__pie .btn--grande {
  width: 100%;
  max-width: var(--ancho-ctrl);
  margin: 0 auto;
  min-height: 60px;
  border-radius: 14px;
  background: var(--brasa);
  border-color: var(--brasa);
  color: var(--tinta);
  font: 700 20px/1 var(--f-titulo);
  text-transform: uppercase;
  letter-spacing: .06em;
  transition: transform 80ms ease, filter .2s;
}
.perfil__pie .btn--grande:active { transform: scale(.98); }

@media (prefers-reduced-motion: reduce) {
  .cuestionario { transition: none; }
  .foto img, .retrato img, .menu__item::after, .progreso-actos i::before { transition: none; }
  .retrato img { opacity: 1; }
  .retrato img:not(.visible) { display: none; }
}
/* Teléfonos bajos (≤ 700 px de alto): que el paso 6 y el 5 entren sin cortar */
@media (max-height: 700px) {
  .perfil__titulo { font-size: clamp(36px, 10vw, 56px); }
  .escena { gap: 10px; padding: 10px 0 14px; }
  .fotos--4 .foto { aspect-ratio: 4 / 5; }
  .retrato { width: min(50vw, 190px); }
  .dato--sin-foto b { font-size: clamp(80px, 24vw, 120px); }
  .perfil__pie { min-height: 84px; }
}
@media (min-width: 720px) {
  .cuestionario { padding-inline: 32px; }
  .escena { gap: 18px; }
  .escena__num { font-size: 360px; right: calc(50% - (var(--columna) / 2) - .04em); }
}
@media (min-width: 900px) {
  .fotos--4 { grid-template-columns: repeat(4, minmax(0, 1fr)); max-width: 600px; }
  .fotos--4 .foto__cifra { font-size: 36px; white-space: nowrap; }
  .fotos--4 .foto__nombre { font-size: 20px; }
}

/* ---------- Mis rutinas (lista y editor) ---------- */
.rutinas { display: grid; gap: 10px; margin-bottom: 14px; }
.rutina { display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: 8px 12px; padding: 12px 14px; border-radius: 14px; border: 1px solid var(--linea); background: var(--superficie); }
.rutina--activa { border-color: var(--brasa); }
.rutina__tit { display: grid; gap: 2px; min-width: 0; }
.rutina__tit b { font: 700 20px/1.1 var(--f-titulo); }
.rutina__tit span { font-size: 13px; color: var(--texto-suave); }
.rutina__activa { align-self: start; padding: 6px 10px; border-radius: 999px; background: var(--brasa); color: #1A0D06; font: 700 12px/1 var(--f-cuerpo); letter-spacing: .06em; text-transform: uppercase; }
.rutina__acciones { grid-column: 1 / -1; display: flex; flex-wrap: wrap; gap: 8px; }
.btn--chico { min-height: 36px; padding: 6px 12px; font-size: 14px; align-self: start; }
.btn-detalle--peligro { color: var(--peligro); }
.btn-icono--peligro { color: var(--peligro); }
.editor { display: grid; gap: 12px; }
.editor__check { display: flex; align-items: center; gap: 10px; font-size: 15px; }
.editor__check input { width: 20px; height: 20px; accent-color: var(--brasa); }
.editor__dias { display: flex; flex-wrap: wrap; gap: 6px; }
.chip-dia { min-height: 38px; padding: 0 14px; border-radius: 999px; border: 1px solid var(--linea); background: var(--superficie); color: var(--texto); font: 600 14px/1 var(--f-cuerpo); }
.chip-dia.activa { background: var(--brasa); border-color: var(--brasa); color: #1A0D06; }
.chip-dia--mas { border-style: dashed; color: var(--texto-suave); }
.editor__dia { display: grid; gap: 10px; padding: 12px; border-radius: 14px; border: 1px solid var(--linea); background: var(--superficie); }
.editor__fila { display: grid; grid-template-columns: minmax(0, 2fr) minmax(0, 1fr); gap: 10px; }
.editor__fila .campo select { width: 100%; min-height: 48px; padding: 6px 10px; border-radius: var(--radio-s); border: 1px solid var(--linea); background: var(--bg); color: var(--texto); font: 500 15px var(--f-cuerpo); }
.editor__ejs { list-style: none; margin: 0; padding: 0; display: grid; gap: 8px; }
.editor__ej { display: grid; gap: 8px; padding: 10px; border-radius: 12px; background: var(--superficie-2); border: 1px solid var(--linea); }
.editor__ej-cab { display: flex; align-items: center; justify-content: space-between; gap: 8px; }
.editor__ej-cab b { font: 700 16px/1.2 var(--f-titulo); min-width: 0; }
.editor__ej-btns { display: flex; gap: 4px; flex: 0 0 auto; }
.editor__ej-campos { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 6px; }
.editor__ej-campos label { display: grid; gap: 3px; font: 500 11px/1 var(--f-cuerpo); color: var(--texto-suave); letter-spacing: .06em; text-transform: uppercase; }
.editor__ej-campos input { min-width: 0; min-height: 40px; padding: 4px 8px; border-radius: 10px; border: 1px solid var(--linea); background: var(--bg); color: var(--texto); font: 600 15px var(--f-cuerpo); text-align: center; }
.editor__nota { grid-column: 1 / -1; }
.editor__nota input { text-align: left; font-weight: 500; }
.editor__dia-acciones { display: flex; flex-wrap: wrap; gap: 8px; align-items: center; }
.editor__error { margin: 0; padding: 10px 12px; border-radius: 10px; background: color-mix(in srgb, var(--peligro) 16%, var(--superficie-2)); font-size: 14px; }
.dlg__acciones--fijas { position: sticky; bottom: 0; padding-top: 10px; background: linear-gradient(180deg, transparent, var(--superficie) 30%); }
@media (max-width: 480px) { .editor__fila { grid-template-columns: minmax(0, 1fr); } .editor__ej-campos { grid-template-columns: repeat(2, minmax(0, 1fr)); } }

/* ---------- Pantalla de carga (primera sincronización en el dispositivo) ---------- */
.carga { position: fixed; inset: 0; z-index: 1000; display: grid; place-content: center; justify-items: center; gap: 18px; padding: 24px; background: var(--bg); text-align: center; }
.carga[hidden] { display: none; }
.carga__marca { margin: 0; font: 800 34px/1 var(--f-titulo); text-transform: uppercase; letter-spacing: .04em; }
.carga__anillo { width: 44px; height: 44px; border-radius: 50%; border: 4px solid var(--linea); border-top-color: var(--brasa); animation: carga-gira 900ms linear infinite; }
.carga--error .carga__anillo { animation: none; border-color: var(--peligro); }
.carga__texto { margin: 0; max-width: 34ch; color: var(--texto-suave); font-size: 16px; line-height: 1.45; }
@keyframes carga-gira { to { transform: rotate(360deg); } }
.cuenta__msg--aviso { background: color-mix(in srgb, var(--ambar) 16%, var(--superficie-2)); }

/* ---------- Mi equipo ---------- */
.eq__lista { display: grid; gap: 8px; margin-bottom: 12px; }
.eq__item { display: grid; grid-template-columns: minmax(0, 1fr) auto auto; gap: 6px 14px; align-items: center; padding: 12px 14px; border-radius: 14px; border: 1px solid var(--linea); background: var(--superficie); color: var(--texto); text-align: left; }
.eq__item--alumno { cursor: pointer; }
.eq__item--alumno:hover { border-color: var(--brasa); }
.eq__item--pendiente { opacity: .7; }
.eq__tit { display: grid; gap: 2px; min-width: 0; }
.eq__tit b { font: 700 18px/1.15 var(--f-titulo); }
.eq__tit span { font-size: 13px; color: var(--texto-suave); }
.eq__datos { display: grid; justify-items: center; gap: 2px; }
.eq__datos b { font: 700 17px/1 var(--f-titulo); font-variant-numeric: tabular-nums; white-space: nowrap; }
.eq__datos span { font-size: 11px; color: var(--texto-suave); letter-spacing: .06em; text-transform: uppercase; }
.eq__acciones { grid-column: span 2; display: flex; gap: 8px; justify-content: flex-end; }
.eq__form { display: grid; gap: 10px; margin-bottom: 14px; }
.eq__form--fila { grid-template-columns: minmax(0, 1fr) auto; align-items: end; }
.eq__resultado { margin: 0 0 12px; padding: 10px 12px; border-radius: 10px; background: color-mix(in srgb, var(--brasa) 12%, var(--superficie-2)); font-size: 14px; line-height: 1.5; word-break: break-all; }
.eq__enlace { color: var(--brasa); }
.eq__progreso { list-style: none; margin: 0; padding: 0; display: grid; gap: 8px; }
.eq__progreso li { display: grid; grid-template-columns: minmax(0, 1fr) auto auto; gap: 6px 14px; align-items: center; padding: 10px 12px; border-radius: 12px; background: var(--superficie); }
.eq__sube { color: var(--ok); font-style: normal; } .eq__baja { color: var(--peligro); font-style: normal; } .eq__igual { color: var(--texto-suave); font-style: normal; }
@media (max-width: 480px) { .eq__item, .eq__progreso li { grid-template-columns: minmax(0, 1fr) auto; } .eq__item .eq__datos:last-child { grid-column: 2; } .eq__acciones { grid-column: 1 / -1; } }

/* ---------- Progreso por ejercicio ---------- */
.prog__eyebrow { margin: 0 0 2px; font: 600 12px/1.2 var(--f-cuerpo); letter-spacing: .12em; text-transform: uppercase; color: var(--texto-suave); }
.prog__alerta { color: var(--ambar); }
.prog__ok { color: var(--ok); }
.prog__chips { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 8px; margin: 4px 0 12px; }
.prog__chip { display: grid; gap: 2px; padding: 10px 12px; border-radius: 12px; background: var(--superficie-2); border: 1px solid var(--linea); }
.prog__chip b { font: 800 26px/1 var(--f-titulo); font-variant-numeric: tabular-nums; }
.prog__chip b i { font: 700 14px/1 var(--f-titulo); font-style: normal; color: var(--texto-suave); }
.prog__chip span { font-size: 12px; color: var(--texto-suave); }
.prog__chip--mejor { border-color: color-mix(in srgb, var(--dorado) 55%, var(--linea)); }
.prog__chip--mejor b { color: var(--dorado); }
.prog__grafico { display: block; width: 100%; height: auto; color: var(--grupo, var(--brasa)); margin: 4px 0 10px; }
.prog__valor { font: 700 11px var(--f-cuerpo); fill: var(--texto); }
.prog__fecha { font: 500 10px var(--f-cuerpo); fill: var(--texto-suave); }
.prog__sugerencia { display: grid; gap: 4px; padding: 12px 14px; border-radius: 12px; background: color-mix(in srgb, var(--brasa) 12%, var(--superficie-2)); }
.prog__sugerencia b { font: 700 18px/1.2 var(--f-titulo); }
.prog__sugerencia span { font-size: 14px; color: var(--texto-suave); line-height: 1.4; }
.prog__lista { list-style: none; margin: 0; padding: 0; display: grid; gap: 4px; }
.prog__lista li { display: grid; grid-template-columns: 62px minmax(0, 1fr); gap: 2px 10px; padding: 8px 10px; border-radius: 10px; background: var(--superficie); font-size: 14px; }
.prog__lista li span { color: var(--texto-suave); grid-row: span 2; align-self: center; }
.prog__lista li b { font: 700 16px/1.2 var(--f-titulo); }
.prog__lista li em { font-style: normal; font-size: 12px; color: var(--texto-suave); }
.prog__origen { margin: 12px 0 0; font-size: 12px; color: var(--texto-suave); }

/* ---------- Pantalla de acceso ---------- */
.dlg--acceso {
  position: fixed;
  inset: 0;
  width: 100vw;
  height: 100dvh;
  max-width: none;
  max-height: none;
  margin: 0;
  padding: 0;
  border: 0;
  border-radius: 0;
  background: #0E0B09;
  overflow: hidden;
}
.dlg--acceso::backdrop { background: #0E0B09; }
.acceso {
  position: relative;
  height: 100dvh;
  display: flex;
  flex-direction: column;
  justify-content: center;
  padding: calc(24px + env(safe-area-inset-top)) 0 calc(24px + env(safe-area-inset-bottom));
}
.acceso__fondo {
  position: absolute;
  inset: 0;
  background: #0E0B09 center 30% / cover no-repeat;
  opacity: 0;
  transform: scale(1.04);
  transition: opacity 1.4s ease, transform 6s ease-out;
}
.acceso__fondo.visible { opacity: 1; transform: scale(1); }
.acceso__velo {
  position: absolute;
  inset: 0;
  background:
    radial-gradient(70% 50% at 20% 15%, color-mix(in srgb, var(--brasa) 45%, transparent), transparent 70%),
    linear-gradient(180deg, rgba(14, 11, 9, .35) 0%, rgba(14, 11, 9, .2) 35%, rgba(14, 11, 9, .88) 70%, #0E0B09 100%);
}
.acceso__contenido {
  position: relative;
  width: 100%;
  max-width: 560px;
  margin: 0 auto;
  padding: 0 22px;
  display: grid;
  gap: 10px;
}
.acceso__velo {
  background:
    radial-gradient(70% 50% at 20% 15%, color-mix(in srgb, var(--brasa) 45%, transparent), transparent 70%),
    linear-gradient(180deg, rgba(14, 11, 9, .55) 0%, rgba(14, 11, 9, .35) 30%, rgba(14, 11, 9, .8) 60%, #0E0B09 100%);
}
.acceso__marca {
  position: relative;
  margin: 0 0 clamp(20px, 5vh, 44px);
  display: flex;
  justify-content: center;
  align-items: center;
  gap: 14px;
  font: 800 clamp(48px, 13vw, 72px)/1 var(--f-titulo);
  text-transform: uppercase;
  letter-spacing: .06em;
  color: var(--texto);
  text-shadow: 0 6px 30px rgba(0, 0, 0, .6);
}
.acceso__marca svg { color: var(--brasa); width: .75em; height: .75em; filter: drop-shadow(0 6px 20px rgba(0, 0, 0, .6)); }
.proximamente, .pie-app {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  margin: 8px auto 0;
  padding: 8px 14px;
  border-radius: 999px;
  border: 1px solid rgba(255, 255, 255, .18);
  background: rgba(255, 255, 255, .06);
  color: var(--texto-suave);
  font: 600 13px/1 var(--f-cuerpo);
  letter-spacing: .02em;
}
.proximamente { justify-self: center; }
.pie-app { display: flex; width: max-content; margin: 0 auto 32px; border-color: var(--linea); background: var(--superficie); }
.acceso__eyebrow {
  margin: 0;
  font: 600 14px/1 var(--f-cuerpo);
  letter-spacing: .12em;
  text-transform: uppercase;
  color: var(--brasa);
}
.acceso__titulo {
  margin: 0;
  font: 800 clamp(48px, 13vw, 84px)/.92 var(--f-titulo);
  text-transform: uppercase;
  letter-spacing: -.01em;
  color: var(--texto);
  text-wrap: balance;
}
.acceso__sub { margin: 4px 0 8px; max-width: 42ch; color: var(--texto-suave); font-size: 16px; }
.acceso__acciones { display: grid; gap: 10px; }
.acceso__acciones .btn--grande { background: var(--brasa); border-color: var(--brasa); }
.acceso__acciones .btn--sec { background: rgba(255, 255, 255, .06); border-color: rgba(255, 255, 255, .25); color: var(--texto); }
.estado { padding-bottom: 12px; }
/* ---------- Cuenta ---------- */
.btn-icono--conectado { position: relative; border-color: var(--ok); }
.btn-icono--conectado::after {
  content: "";
  position: absolute;
  top: 6px;
  right: 6px;
  width: 8px;
  height: 8px;
  border-radius: 50%;
  background: var(--ok);
}
.cuenta__form { display: grid; gap: 10px; margin-top: 12px; }
.cuenta__form input {
  width: 100%;
  min-height: 48px;
  padding: 6px 12px;
  border-radius: var(--radio-s);
  border: 1px solid var(--linea);
  background: var(--bg);
  color: var(--texto);
  font: 500 16px/1.3 var(--f-cuerpo);
}
.cuenta__form input:focus-visible { outline: 2px solid var(--brasa); outline-offset: 0; border-color: var(--brasa); }
.btn--google { display: inline-flex; align-items: center; justify-content: center; gap: 10px; }
.cuenta__enlace {
  justify-self: center;
  min-height: 40px;
  border: 0;
  background: none;
  color: var(--texto-suave);
  font: 500 14px/1 var(--f-cuerpo);
  text-decoration: underline;
}
.cuenta__msg { margin: 0; padding: 10px 12px; border-radius: 10px; font-size: 14px; }
.cuenta__msg--ok { background: color-mix(in srgb, var(--ok) 16%, var(--superficie-2)); color: var(--texto); }
.cuenta__msg--error { background: color-mix(in srgb, var(--peligro) 16%, var(--superficie-2)); color: var(--texto); }
.cuenta__nota { margin: 14px 0 0; font-size: 13px; color: var(--texto-suave); }
.cuenta__usuario { display: flex; align-items: center; gap: 12px; margin-bottom: 12px; }
.cuenta__usuario div { display: grid; gap: 2px; min-width: 0; }
.cuenta__usuario b { font: 600 16px/1.3 var(--f-cuerpo); overflow-wrap: anywhere; }
.cuenta__usuario span { font-size: 13px; color: var(--texto-suave); }
.cuenta__punto { flex: 0 0 auto; width: 10px; height: 10px; border-radius: 50%; background: var(--ambar); }
.cuenta__punto.ok { background: var(--ok); }
code { font: 500 13px/1.4 ui-monospace, Consolas, monospace; color: var(--texto); }

/* ---------- Pantallas angostas ---------- */
@media (max-width: 379px) {
  .serie input { font-size: 18px; padding-inline: 8px; }
  .chip { padding-inline: 10px; }
  .series__cab, .serie { grid-template-columns: 36px minmax(0, 1fr) minmax(0, 1fr); }
  .serie__n { height: 44px; }
}

/* ---------- Escritorio ---------- */
@media (min-width: 720px) {
  .hero { padding: 40px 24px 14px; }
  .tabs { padding-inline: 24px; }
  .lista { padding-inline: 24px; gap: 14px; }
  .estado { padding-inline: 24px; }
}
@media (min-width: 900px) {
  .lista { grid-template-columns: 1fr 1fr; }
  .hero__titulo { font-size: 96px; }
}

/* ---------- Movimiento reducido ---------- */
@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after { transition-duration: 0s !important; animation: none !important; }
}
