/* ══════════════════════════════════════════════════════════════════
   GAMIFICACIÓN DTR — Fase A · ticks, racha, XP y nivel
   Marca: azul #004aad · estética premium (chips 12px/700, píldoras)
   ══════════════════════════════════════════════════════════════════ */

/* ── Tick de comida (junto al título en el acordeón) ── */
.nutri-meal-tick{
  display:inline-flex; align-items:center; justify-content:center;
  width:28px; height:28px; min-width:28px; border-radius:50%;
  border:2px solid #C9D4E3; background:#fff; color:transparent;
  font-size:15px; font-weight:900; line-height:1; cursor:pointer;
  margin-left:auto; margin-right:10px; transition:all .15s ease;
}
@media (hover:hover){ .nutri-meal-tick:hover{ border-color:#004aad; } }
.nutri-meal-tick.on{ background:#16a34a; border-color:#16a34a; color:#fff; }
.nutri-meal-tick.ro{ cursor:default; opacity:.45; }
.nutri-meal-tick.ro:hover{ border-color:#C9D4E3; }
.nutri-meal-tick.on.ro{ opacity:.8; }

/* ── Progreso del día (X/N comidas → día verde) ── */
.gami-day-progress{ display:flex; align-items:center; gap:10px; margin-top:8px; }
.gami-day-bar{ flex:1; height:8px; border-radius:999px; background:#E8EEF6; overflow:hidden; }
.gami-day-fill{ height:100%; border-radius:999px; background:#004aad; transition:width .25s ease; }
.gami-day-fill.green{ background:#16a34a; }
.gami-day-label{ font-size:12px; font-weight:700; color:#5B6B7F; white-space:nowrap; }
.gami-day-label.green{ color:#16a34a; }

/* ── Chip de racha (cabecera del día) — más grande y con fuego delante ── */
.gami-chip{
  display:inline-flex; align-items:center; gap:5px; padding:6px 14px;
  border-radius:999px; background:linear-gradient(135deg,#FFF3E6,#FFE4C4);
  border:1px solid #F5D5A8; color:#C2540A;
  font-size:13.5px; font-weight:800; letter-spacing:.2px;
  box-shadow:0 2px 8px rgba(194,84,10,.12);
}

/* ── Hero de nivel en Perfil ── */
.gami-hero{
  background:linear-gradient(135deg,#0A1A2F 0%,#004aad 100%);
  border-radius:16px; padding:20px 22px; color:#fff; margin:0 0 18px;
}
.gami-hero-level{ display:flex; align-items:center; gap:16px; }
.gami-level-badge{
  display:flex; flex-direction:column; align-items:center; justify-content:center;
  width:72px; height:72px; min-width:72px; border-radius:50%;
  background:rgba(255,255,255,.12); border:3px solid rgba(255,255,255,.85);
}
.gami-level-badge .n{ font-size:26px; font-weight:900; line-height:1; }
.gami-level-badge .t{ font-size:9px; font-weight:800; letter-spacing:1.5px; opacity:.85; }
.gami-hero-main{ flex:1; min-width:0; }
.gami-hero-title{ font-size:15px; font-weight:800; margin-bottom:8px; }
.gami-xp-bar{ height:10px; border-radius:999px; background:rgba(255,255,255,.18); overflow:hidden; }
.gami-xp-fill{ height:100%; border-radius:999px; background:#4ADE80; transition:width .3s ease; }
.gami-xp-label{ font-size:12px; margin-top:6px; opacity:.9; }
.gami-hero-stats{ display:flex; gap:10px; margin-top:14px; }
.gami-stat{
  flex:1; background:rgba(255,255,255,.10); border-radius:12px;
  padding:10px 8px; text-align:center;
}
.gami-stat .v{ display:block; font-size:17px; font-weight:900; }
.gami-stat .k{ display:block; font-size:10.5px; font-weight:700; opacity:.8; margin-top:2px; letter-spacing:.3px; }
.gami-hero-foot{ font-size:11.5px; line-height:1.5; opacity:.82; margin-top:12px; }

/* ── Check de entreno hecho (Mi Semana) ── */
.ms-sess-done{
  display:inline-flex; align-items:center; justify-content:center;
  width:30px; height:30px; min-width:30px; border-radius:50%;
  border:2px solid #C9D4E3; background:#fff; color:transparent;
  font-size:15px; font-weight:900; cursor:pointer; transition:all .15s ease;
}
.ms-sess-done:hover{ border-color:#004aad; }
.ms-sess-done.on{ background:#16a34a; border-color:#16a34a; color:#fff; }

/* ── Cierre del día (autogestión): entreno hecho + suplementación ──
   Pablo (16-ago): marcar al final del día qué ha hecho. Filas de un toque,
   pensadas para el pulgar en el móvil (44px de alto real). */
.ms-cierre.done{ border-left:3px solid #16a34a; }
.ms-cierre-row{
  display:flex; align-items:center; gap:12px; width:100%;
  padding:9px 10px; margin-bottom:6px; text-align:left;
  background:var(--card, #fff); border:1px solid #E4EAF1; border-radius:14px;
  font:inherit; color:inherit; cursor:pointer; transition:all .15s ease;
}
.ms-cierre-row:last-child{ margin-bottom:0; }
.ms-cierre-row:hover{ border-color:#004aad; }
.ms-cierre-row.on{ background:rgba(22,163,74,.07); border-color:rgba(22,163,74,.45); }
.ms-cierre-tick{
  display:inline-flex; align-items:center; justify-content:center; flex:none;
  width:26px; height:26px; border-radius:50%;
  border:2px solid #C9D4E3; background:#fff; color:#fff;
  font-size:14px; font-weight:900; transition:all .15s ease;
}
.ms-cierre-row.on .ms-cierre-tick{ background:#16a34a; border-color:#16a34a; }
.ms-cierre-txt{ flex:1; min-width:0; font-size:13.5px; font-weight:700; line-height:1.3; }
.ms-cierre-txt small{
  display:block; font-size:11.5px; font-weight:500; color:var(--text-2,#5A6B7E);
  margin-top:2px; overflow:hidden; text-overflow:ellipsis; white-space:nowrap;
}
.ms-cierre-row.on .ms-cierre-txt{ text-decoration:line-through; opacity:.65; }

/* ── Racha grande + 7 días (hub del perfil) ── */
.gami-streak-big{ font-size:17px; font-weight:900; margin-bottom:8px; }
.gami-streak-big b{ font-size:22px; }
.gami-streak-big.off{ font-size:13.5px; font-weight:700; opacity:.85; }
.gami-dots{ display:flex; gap:8px; justify-content:space-between; margin-top:14px; }
.gami-dot-day{ flex:1; display:flex; flex-direction:column; align-items:center; gap:2px;
  background:rgba(255,255,255,.08); border-radius:10px; padding:6px 2px; }
.gami-dot-day i{ font-style:normal; font-size:9.5px; font-weight:800; opacity:.7; }
.gami-dot-day b{ font-size:13px; }
.gami-dot-day.on{ background:rgba(74,222,128,.22); }
.gami-dot-day.today{ outline:2px solid rgba(255,255,255,.5); }
.gami-btn{ display:block; width:100%; margin-top:12px; padding:12px; border:none; border-radius:999px;
  background:#004aad; color:#fff; font-size:13.5px; font-weight:800; cursor:pointer; }
.gami-btn:hover{ filter:brightness(1.08); }
.gami-btn.light{ background:rgba(255,255,255,.92); color:#004aad; }
.gami-inp{ width:100%; padding:11px 14px; border:1.5px solid #C9D4E3; border-radius:12px; font-size:16px; } /* 16px mín: <16px = zoom raro de iOS al enfocar (alias liga, chat, etc.) */

/* ── Tarjetas del hub ── */
.gami-card{ background:#fff; border:1px solid #E3EAF3; border-radius:16px; padding:16px 18px; margin:0 0 14px; }
.gami-card-h{ font-size:14.5px; font-weight:900; color:#0A1A2F; margin-bottom:10px; display:flex; align-items:center; justify-content:space-between; gap:8px; flex-wrap:wrap; }
.gami-card-sub{ font-size:11px; font-weight:700; color:#7A8AA0; }
.gami-empty{ font-size:13px; color:#5B6B7F; line-height:1.5; }

/* Totales (grid estilo Strava) */
.gami-stats-grid{ display:grid; grid-template-columns:repeat(3,1fr); gap:10px; }
.gami-stat2{ display:flex; flex-direction:column; align-items:center; gap:2px; background:#F6F9FD; border-radius:12px; padding:12px 6px; }
.gami-stat2 .i{ font-size:16px; }
.gami-stat2 .v{ font-size:19px; font-weight:900; color:#0A1A2F; }
.gami-stat2 .k{ font-size:10.5px; font-weight:700; color:#7A8AA0; }

/* Medallas */
.gami-medals{ display:grid; grid-template-columns:repeat(auto-fill,minmax(96px,1fr)); gap:10px; }
.gami-medal{ display:flex; flex-direction:column; align-items:center; gap:3px; text-align:center;
  background:#F6F9FD; border-radius:12px; padding:12px 6px; opacity:.45; filter:grayscale(.9); }
.gami-medal.won{ opacity:1; filter:none; background:linear-gradient(160deg,#FFF8E6,#FFEFC2); border:1px solid #F2D98C; }
.gami-medal .ic{ font-size:26px; }
.gami-medal .nm{ font-size:11px; font-weight:800; color:#0A1A2F; }
.gami-medal .st{ font-size:9.5px; color:#8A97A8; line-height:1.25; }
.gami-medal.won .st{ color:#B08A1E; font-weight:800; }

/* Radar */
.gami-radar{ display:block; width:100%; max-width:340px; margin:0 auto; }
.gami-radar-ring{ fill:none; stroke:#E3EAF3; stroke-width:1; }
.gami-radar-spoke{ stroke:#E3EAF3; stroke-width:1; }
.gami-radar-curr{ fill:rgba(0,74,173,.22); stroke:#004aad; stroke-width:3; stroke-linejoin:round; }
.gami-radar-prev{ fill:none; stroke:#9AA8BC; stroke-width:1.8; stroke-dasharray:5 4; stroke-linejoin:round; }
.gami-radar-lbl{ font-size:12.5px; font-weight:800; fill:#33465E; }
.gami-radar-val{ font-size:11.5px; font-weight:900; fill:#004aad; }
.gami-radar-tip{ margin-top:8px; font-size:12.5px; color:#5B6B7F; background:#F6F9FD; border-radius:10px; padding:9px 12px; }

/* Liga */
.gami-liga-row{ display:flex; align-items:center; gap:10px; padding:8px 10px; border-radius:10px; font-size:13px; }
.gami-liga-row:nth-child(even){ background:#F9FBFE; }
.gami-liga-row.me{ background:#E8F0FE; font-weight:800; }
.gami-liga-row .pos{ width:28px; text-align:center; font-weight:900; }
.gami-liga-row .alias{ flex:1; min-width:0; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.gami-liga-row .lvl{ font-size:11px; font-weight:800; color:#7A8AA0; }
.gami-liga-row .xp{ font-weight:900; color:#004aad; }
.gami-liga-nav{ display:inline-flex; align-items:center; gap:6px; font-size:12px; color:#5B6B7F; }
.gami-liga-nav button{ border:1px solid #C9D4E3; background:#fff; border-radius:8px; width:24px; height:24px; cursor:pointer; font-weight:900; }
.gami-liga-join{ display:flex; gap:8px; margin-top:10px; flex-wrap:wrap; }
.gami-liga-join .gami-inp{ flex:1; min-width:180px; }
.gami-liga-join .gami-btn{ width:auto; margin:0; padding:11px 18px; }
.gami-liga-foot{ margin-top:10px; font-size:11px; color:#8A97A8; }
.gami-liga-foot a{ color:#8A97A8; }

/* Hero compacto (perfil) */
.gami-hero.compact{ padding:16px 18px; margin-bottom:14px; }

/* Gráficos de barras (semanas verdes / XP) */
.gami-bars{ display:block; width:100%; }
.gami-bar{ fill:#B9CCE6; }
.gami-bar.ok{ fill:#16a34a; }
.gami-bar-v{ font-size:10px; font-weight:900; fill:#33465E; }
.gami-bar-l{ font-size:9px; font-weight:700; fill:#8A97A8; }
.gami-goal-line{ stroke:#16a34a; stroke-width:1.5; stroke-dasharray:5 4; opacity:.6; }

/* Tablón del club */
.gami-feed-post{ padding:12px 0; border-bottom:1px solid #EEF3F9; }
.gami-feed-post:last-child{ border-bottom:none; }
.gami-feed-head{ display:flex; align-items:center; gap:10px; }
.gami-feed-avatar{ display:inline-flex; align-items:center; justify-content:center; width:34px; height:34px;
  min-width:34px; border-radius:50%; background:#004aad; color:#fff; font-weight:900; font-size:15px; }
.gami-feed-who{ flex:1; min-width:0; display:flex; flex-direction:column; }
.gami-feed-who b{ font-size:13.5px; color:#0A1A2F; }
.gami-feed-who small{ font-size:11px; color:#8A97A8; font-weight:700; }
.gami-feed-del{ border:none; background:transparent; color:#8FA0B4; cursor:pointer; font-weight:900; font-size:15px; position:relative; }
.gami-feed-del::after{ content:''; position:absolute; inset:-10px; }
.gami-feed-body{ margin:8px 0 0 44px; font-size:13.5px; color:#33465E; }
.gami-feed-img{ display:block; margin:10px 0 0 44px; max-width:calc(100% - 44px); border-radius:14px; }
.gami-feed-react{ margin:10px 0 0 44px; display:inline-flex; align-items:center; gap:5px;
  border:1.5px solid #C9D4E3; background:#fff; border-radius:999px; padding:6px 14px;
  font-size:13px; font-weight:800; color:#5B6B7F; cursor:pointer; transition:all .12s ease; }
.gami-feed-react.on{ border-color:#004aad; background:#E8F0FE; color:#004aad; }
.gami-checkin-banner.foto{ background:linear-gradient(135deg,#7A2E0E,#C2540A); }

/* ── Selector de módulo [Nutrición | Entrenamiento] ── */
.gami-module-switch{ display:flex; gap:6px; background:#EDF2F9; border-radius:999px;
  padding:4px; margin:0 0 14px; max-width:420px; }
.gami-module-btn{ flex:1; border:none; border-radius:999px; padding:10px 14px;
  background:transparent; font-size:13.5px; font-weight:800; color:#5B6B7F;
  cursor:pointer; transition:all .15s ease; white-space:nowrap; }
.gami-module-btn.active{ background:#fff; color:#004aad; box-shadow:0 1px 4px rgba(10,26,47,.12); }

/* ── Subtabs de Mi progreso: ESTÁTICAS, las 3 siempre a la vista ── */
.progress-subtabs{ display:flex !important; width:100%; gap:8px;
  overflow-x:visible !important; flex-wrap:nowrap; }
.progress-subtabs .progress-subtab{ flex:1 1 0; min-width:0; text-align:center;
  white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
@media (max-width:420px){
  .progress-subtabs .progress-subtab{ font-size:12px; padding-left:6px; padding-right:6px; }
}

/* ── Post-carrera (Club) ── */
.gami-carrera-card{ border-left:4px solid #C2540A; }
.gami-carrera-title{ font-size:16px; font-weight:900; color:#0A1A2F; margin-bottom:6px; }
.gami-carrera-actions{ display:flex; gap:8px; margin-top:10px; flex-wrap:wrap; }
.gami-carrera-actions .gami-btn{ flex:1; margin:0; min-width:150px; }
.gami-btn.ghost{ background:#fff; color:#004aad; border:1.5px solid #C9D4E3; }
.gami-checkin-banner.carrera{ background:linear-gradient(135deg,#5B21B6,#7C3AED); }
textarea.gami-inp{ border-radius:12px; resize:vertical; font-family:inherit; }
.gami-carrera-skip{ display:block; width:100%; margin-top:8px; border:none; background:transparent;
  color:#8A97A8; font-size:11.5px; font-weight:700; cursor:pointer; text-decoration:underline; }

/* Academy Onboarding: sus estilos viven en academy.css (20-ago). Estaban
   aquí y, al cargarse gamification.css DESPUÉS, pisaban a Academia. */

/* Candado de lecciones futuras (academia atleta) */
.academy-lesson-locked{ opacity:.55; }
.academy-lock-chip{ display:inline-flex; align-items:center; gap:4px; font-size:10.5px; font-weight:800;
  color:#7A8AA0; background:#EFF3F9; border-radius:999px; padding:3px 10px; }

/* Favorita del atleta (menú + swap) */
.nutri-fav-btn{ display:inline-flex; align-items:center; gap:6px; margin:10px 8px 0 0;
  padding:8px 14px; border:1.5px solid #E3B7C0; background:#fff; border-radius:999px;
  font-size:12.5px; font-weight:800; color:#B0455A; cursor:pointer; transition:all .15s ease; }
.nutri-fav-btn.on{ background:#FDECEF; border-color:#E8899B; }
.nutri-swap-opt.fav{ border-color:#E8899B; background:#FFF7F8; }

/* Banner del parte semanal (vista Nutrición) */
.gami-checkin-banner{ display:flex; align-items:center; gap:10px; flex-wrap:wrap;
  background:linear-gradient(135deg,#0A1A2F,#004aad); color:#fff; border-radius:14px;
  padding:12px 16px; margin:0 0 12px; }
.gami-checkin-banner .t{ flex:1; font-size:13px; min-width:200px; }
.gami-checkin-banner button{ border:none; border-radius:999px; background:#fff; color:#004aad;
  font-weight:800; font-size:12.5px; padding:9px 16px; cursor:pointer; }

/* ── Reto sorpresa (foto del plato) — mismo widget, en naranja (2-sep) ── */
.gami-foto-hero{ position:relative; overflow:hidden; isolation:isolate;
  background:linear-gradient(135deg,#7A2E0E 0%,#C2540A 100%); }
.gami-foto-hero::before{
  content:''; position:absolute; z-index:-1; width:240px; height:240px; border-radius:50%;
  top:-110px; right:-60px; filter:blur(22px);
  background:radial-gradient(circle, rgba(255,196,120,.5), rgba(255,196,120,0) 70%);
  animation:retoFloat 11s ease-in-out infinite;
}
.gami-foto-hero::after{
  content:''; position:absolute; z-index:-1; left:0; right:0; top:0; height:55%;
  background:linear-gradient(180deg, rgba(255,255,255,.13), rgba(255,255,255,0));
  pointer-events:none;
}
.gami-foto-hero .gami-hero-title{ display:flex; align-items:center; gap:7px; opacity:.92; }
.gami-foto-hero .gami-hero-title .dtr-ico{ width:15px; height:15px; }
.gami-foto-hero .gami-hero-title small{ font-size:11.5px; font-weight:700; opacity:.72;
  margin-left:auto; letter-spacing:.2px; }
.gami-level-badge.gami-foto-badge{ border-color:rgba(255,255,255,.75); background:rgba(255,255,255,.14); }
.gami-foto-badge .n{ font-size:28px; }
.gami-foto-hero .gami-btn.light{ color:#C2540A; }

/* ── Foto del plato: en el muro, en el modal de subida y a pantalla completa ── */
.gami-muro-foto{ display:block; margin-top:8px; max-width:250px; max-height:190px;
  border-radius:12px; border:1px solid #E3EAF3; object-fit:cover; cursor:pointer; }
.gami-foto-preview{ display:block; width:100%; max-height:280px; object-fit:cover;
  border-radius:14px; border:1px solid #E3EAF3; }
.gami-foto-full{ max-width:94vw; max-height:88dvh; border-radius:14px;
  box-shadow:0 20px 60px rgba(0,0,0,.5); }

/* Modal genérico gami */
.gami-modal-bg{ position:fixed; inset:0; background:rgba(10,26,47,.55); z-index:1200;
  display:flex; align-items:center; justify-content:center; padding:16px; }
.gami-modal{ background:#fff; border-radius:18px; width:100%; max-width:460px; max-height:90dvh;
  overflow-y:auto; overflow-x:hidden; box-sizing:border-box; padding:18px 20px; }
.gami-modal-head{ display:flex; align-items:flex-start; justify-content:space-between; gap:10px; margin-bottom:8px; }
.gami-modal-title{ font-size:17px; font-weight:900; color:#0A1A2F; }
.gami-modal-sub{ font-size:12px; color:#7A8AA0; font-weight:700; }
.gami-modal-x{ border:none; background:#F1F5FA; border-radius:50%; width:30px; height:30px; cursor:pointer; font-weight:900; color:#5B6B7F; }
.gami-modal-send{ display:block; width:100%; margin-top:14px; padding:13px; border:none; border-radius:999px;
  background:#004aad; color:#fff; font-size:14px; font-weight:900; cursor:pointer; }
.gami-modal-foot{ margin-top:10px; text-align:center; font-size:11px; color:#8A97A8; }
.gami-q{ margin:14px 0; }
.gami-q.miss .gami-q-title{ color:#C0392B; }
.gami-q-title{ font-size:13.5px; font-weight:800; color:#0A1A2F; margin-bottom:8px; }
.gami-q-opts{ display:flex; gap:8px; flex-wrap:wrap; }
.gami-q-opt{ flex:1; min-width:60px; padding:10px 8px; border:1.5px solid #C9D4E3; background:#fff;
  border-radius:12px; font-size:13px; font-weight:700; cursor:pointer; transition:all .12s ease; }
.gami-q-opt.on{ border-color:#004aad; background:#E8F0FE; color:#004aad; font-weight:900; }

/* ══════════ MEJORAS 29-jul (Entreno premium · chat · widgets · tema) ══════════ */

/* ── Entreno: resumen premium de Intraentreno ── */
.intra-entry-card{ background:linear-gradient(135deg,#0A1A2F 0%,#004aad 100%); border-radius:18px;
  padding:20px 22px; color:#fff; margin:0 0 16px; }
.intra-entry-head{ display:flex; align-items:center; gap:14px; }
.intra-entry-ic{ display:flex; align-items:center; justify-content:center; width:48px; height:48px;
  min-width:48px; border-radius:14px; background:rgba(255,255,255,.14); font-size:24px; }
.intra-entry-title{ font-size:17px; font-weight:900; }
.intra-entry-sub{ font-size:12.5px; opacity:.85; line-height:1.4; margin-top:2px; }
.intra-entry-chips{ display:flex; gap:8px; flex-wrap:wrap; margin-top:12px; }
.intra-entry-chip{ font-size:11.5px; font-weight:800; padding:5px 12px; border-radius:999px;
  background:rgba(255,255,255,.12); }
.intra-entry-chip.star{ background:rgba(255,214,102,.25); color:#FFE9A8; }
.intra-entry-btn{ display:block; width:100%; margin-top:14px; padding:12px; border:none;
  border-radius:999px; background:#fff; color:#004aad; font-size:14px; font-weight:900; cursor:pointer; }
.intra-entry-btn:hover{ filter:brightness(.96); }
.intra-entry-back{ display:inline-flex; margin:0 0 12px; border:1.5px solid #C9D4E3; background:#fff;
  border-radius:999px; padding:8px 16px; font-size:12.5px; font-weight:800; color:#33465E; cursor:pointer; }

/* Calendario Mi Semana más premium */
.ms-card{ border-radius:18px !important; border:1px solid #E3EAF3; box-shadow:0 4px 18px rgba(10,26,47,.06); }
.ms-nextgoal{ border-radius:16px !important; box-shadow:0 4px 14px rgba(10,26,47,.05); }

/* ── Chat del club ── */
.gami-chat-card{ padding-bottom:12px; }
.gami-chat-msgs{ max-height:52vh; min-height:220px; overflow-y:auto; padding:6px 2px; display:flex; flex-direction:column; gap:10px; }
.gami-chat-msg{ display:flex; gap:8px; align-items:flex-end; }
.gami-chat-msg.mine{ justify-content:flex-end; }
.gami-feed-avatar.sm{ width:26px; height:26px; min-width:26px; font-size:12px; }
.gami-chat-bubble{ max-width:78%; background:#F1F5FA; border-radius:14px 14px 14px 4px; padding:8px 12px; }
.gami-chat-msg.mine .gami-chat-bubble{ background:#E3EDFB; border-radius:14px 14px 4px 14px; }
.gami-chat-who{ font-size:11px; font-weight:800; color:#004aad; margin-bottom:2px; }
.gami-chat-text{ font-size:13.5px; color:#22344C; line-height:1.4; word-wrap:break-word; }
.gami-chat-time{ font-size:11px; color:#5A6B7E; margin-top:3px; text-align:right; }
.gami-chat-time a{ color:#5A6B7E; }
.gami-chat-hito{ background:linear-gradient(160deg,#FFF9EC,#FFF2D6); border:1px solid #F2DFA8;
  border-radius:14px; padding:12px 14px; }
.gami-chat-hito-head{ font-size:13px; color:#0A1A2F; display:flex; align-items:center; gap:6px; }
.gami-chat-hito-head small{ color:#A08A50; font-weight:700; margin-left:auto; }
.gami-chat-hito-body{ font-size:13.5px; color:#4A3F22; margin-top:6px; line-height:1.4; }
.gami-chat-hito .gami-feed-img{ margin:8px 0 0; max-width:100%; }
.gami-chat-hito .gami-feed-react{ margin:8px 0 0; }
.gami-chat-inputrow{ display:flex; gap:8px; margin-top:10px; }
.gami-chat-inputrow .gami-inp{ flex:1; }
.gami-chat-send{ width:44px; min-width:44px; border:none; border-radius:50%; background:#004aad;
  color:#fff; font-size:16px; cursor:pointer; }

/* ── Revisiones como widgets ── */
.rev-widgets{ display:grid; grid-template-columns:repeat(auto-fill,minmax(250px,1fr)); gap:14px; }
.rev-widget{ cursor:pointer; transition:transform .15s ease, box-shadow .15s ease; }
.rev-widget:hover{ transform:translateY(-2px); box-shadow:0 8px 22px rgba(10,26,47,.10); }
.rev-widget-head{ display:flex; align-items:center; justify-content:space-between; gap:8px; margin-bottom:10px; }
.rev-widget-date{ font-size:13.5px; font-weight:900; color:#0A1A2F; }
.rev-widget-stats{ display:flex; flex-direction:column; gap:6px; margin-bottom:12px; }
.rev-stat{ display:flex; align-items:center; gap:8px; font-size:13px; }
.rev-stat .k{ color:#7A8AA0; font-weight:700; min-width:72px; }
.rev-stat .v{ font-weight:900; color:#0A1A2F; }
.rev-delta{ font-size:11px; font-weight:800; padding:2px 8px; border-radius:999px; background:#EFF3F9; color:#5B6B7F; }
.rev-delta.down{ background:#E7F6EC; color:#1E9E5A; }
.rev-delta.up{ background:#FDEEEA; color:#D8443C; }
.rev-widget-actions{ display:flex; gap:8px; }

/* ── Nutrición: chevron SVG, swap oscuro, hecha, estrella favorita ── */
.nutri-chevron svg{ display:block; }
.nutri-hecha{ display:none; color:#16a34a; font-weight:800; font-size:11px !important; margin-top:2px; }
.nutri-hecha.on{ display:block; }
.nutri-actions-line{ display:flex; gap:10px; align-items:stretch; margin-top:10px; }
.nutri-actions-line .nutri-swap-btn{ flex:1; margin-top:0; }
.nutri-swap-btn.dark{ background:#0A1A2F; color:#fff; border:none; }
.nutri-swap-btn.dark:hover{ background:#004aad; color:#fff; }
.nutri-fav-star{ width:44px; min-width:44px; border-radius:10px; border:1.5px solid #D8E1EC;
  background:#fff; color:#C9D4E3; font-size:20px; cursor:pointer; transition:all .15s ease; }
.nutri-fav-star.on{ color:#F5B301; border-color:#F2D98C; background:#FFF8E6; }
/* :hover SOLO en dispositivos con ratón: en móvil el hover se queda "pegado"
   tras el toque y parecía que la favorita no se podía desmarcar. */
@media (hover:hover){
  .nutri-fav-star:hover{ border-color:#F5B301; color:#F5B301; }
}

/* ── Tema CLARO (Cuenta → Apariencia). El shell navy pasa a claro; el
   sidebar se queda navy (marca); las cards ya eran blancas. ── */
body[data-theme="light"]{ background:#F2F6FB; }
body[data-theme="light"] .main{ background:#F2F6FB; }
body[data-theme="light"] .view-title{ color:#0A1A2F; }
body[data-theme="light"] .view-sub{ color:#5A6B7E; }
body[data-theme="light"] .progress-subtab,
body[data-theme="light"] .nutri-day-tab,
body[data-theme="light"] .nutri-action-btn{
  border:1px solid #D8E1EC; background:#fff; color:#5A6B7E; }
body[data-theme="light"] .progress-subtab:hover,
body[data-theme="light"] .nutri-day-tab:hover,
body[data-theme="light"] .nutri-action-btn:hover{ background:#EDF3FA; color:#0A1A2F; }
body[data-theme="light"] .progress-subtab.active,
body[data-theme="light"] .nutri-day-tab.active,
body[data-theme="light"] .nutri-action-btn.active{ background:var(--blue,#2F7DD1); border-color:var(--blue,#2F7DD1); color:#fff; }
body[data-theme="light"] .gami-module-switch{ background:#E2EAF4; }

/* ── Chat estilo Telegram: tabs a lo ancho, sin zoom iOS, adjunto, lightbox ── */
.gami-club-tabs{ max-width:none; width:100%; margin-bottom:14px; }
.gami-chat-input{ font-size:16px !important; }  /* <16px = iOS hace zoom al enfocar */
.gami-chat-attach{ width:44px; min-width:44px; border:1.5px solid #C9D4E3; border-radius:50%;
  background:#fff; font-size:17px; cursor:pointer; }
.gami-chat-msgs{ max-height:56vh; }
.gami-feed-img{ cursor:zoom-in; max-height:280px; object-fit:cover; }
.gami-lightbox{ position:fixed; inset:0; z-index:1700; background:rgba(5,12,22,.92);
  display:flex; align-items:center; justify-content:center; padding:16px; cursor:zoom-out; }
.gami-lightbox img{ max-width:100%; max-height:92vh; border-radius:12px; }
.gami-liga-champ{ background:linear-gradient(160deg,#FFF8E6,#FFEFC2); border:1px solid #F2D98C;
  border-radius:12px; padding:10px 14px; font-size:12.5px; color:#5C4A12; margin-bottom:10px; }

/* ── Entreno premium (solo vista atleta v-intra) ── */
#v-intra .ms-card{ background:linear-gradient(180deg,#FFFFFF 0%,#F8FBFF 100%);
  border:1px solid #DCE6F2; box-shadow:0 8px 28px rgba(10,26,47,.09); }
#v-intra .ms-cal-head{ background:linear-gradient(135deg,#0A1A2F,#004aad); margin:-1px -1px 10px;
  border-radius:18px 18px 0 0; padding:14px 16px; }
#v-intra .ms-cal-month{ color:#fff; font-weight:900; }
#v-intra .ms-navbtn{ background:rgba(255,255,255,.14); border:none; color:#fff; border-radius:8px; }
#v-intra .ms-vbtn{ background:rgba(255,255,255,.12); border:none; color:rgba(255,255,255,.75); }
#v-intra .ms-vbtn.active{ background:#fff; color:#004aad; }
#v-intra .ms-import{ background:rgba(255,255,255,.12); border:none; color:#fff; }
#v-intra .ms-nextgoal{ background:linear-gradient(135deg,#0A1A2F 0%,#004aad 100%); color:#fff;
  border:none; box-shadow:0 10px 30px rgba(0,74,173,.25); }
#v-intra .ms-nextgoal .ms-nextgoal-k{ color:rgba(255,255,255,.7); }
#v-intra .ms-nextgoal .ms-nextgoal-title{ color:#fff; }
#v-intra .ms-nextgoal .ms-nextgoal-date{ color:rgba(255,255,255,.75); }
#v-intra .ms-nextgoal .ms-nextgoal-count{ color:#fff; }
#v-intra .ms-nextgoal-empty .ms-goal-add{ background:#fff; color:#004aad; border:none;
  border-radius:999px; padding:9px 16px; font-weight:900; cursor:pointer; }
.intra-video-btn{ text-decoration:none; background:#0A1A2F !important; }

/* ── Ajustes 29-jul tarde ── */
/* Chat perfectamente encajado: el input SIEMPRE visible sin hacer scroll
   (100dvh − cabecera de la vista − tabs − nav inferior − márgenes) */
.gami-chat-card{ display:flex; flex-direction:column; height:calc(100dvh - 372px); min-height:300px; }
@supports not (height: 100dvh){ .gami-chat-card{ height:calc(100vh - 372px); } }
.gami-chat-msgs{ flex:1; max-height:none; min-height:0; }
@media (min-width:900px){ .gami-chat-card{ height:calc(100dvh - 330px); } }

/* Vídeo Loom embebido (tasa de sudoración) */
.intra-video-wrap{ position:relative; width:100%; padding-top:56.25%; border-radius:14px; overflow:hidden; background:#0A1A2F; }
.intra-video-wrap iframe{ position:absolute; inset:0; width:100%; height:100%; }

/* Wizard intraentreno/sudoración: el botón Salir bajo el notch del iPhone */
.intra-wizard-top{ padding-top:calc(16px + env(safe-area-inset-top, 0px)) !important; }
.intra-wizard-exit{ padding:10px 14px; }

/* Toggle Hoy/Mes con contraste GARANTIZADO en ambos temas (vista Entreno).
   La cabecera del calendario es navy fijo, así que los botones van con
   !important para que ningún tema los deje blanco-sobre-blanco. */
#v-intra .ms-vbtn{ background:rgba(255,255,255,.22) !important; color:#fff !important;
  font-weight:800 !important; border:none !important; }
#v-intra .ms-vbtn.active{ background:#fff !important; color:#004aad !important; }
#v-intra .ms-navbtn{ background:rgba(255,255,255,.22) !important; color:#fff !important; border:none !important; }
#v-intra .ms-import{ background:rgba(255,255,255,.22) !important; color:#fff !important; border:none !important; }
#v-intra .ms-cell{ color:#22344C; }
#v-intra .ms-wd{ color:#7A8AA0; }
body[data-theme="light"] #v-intra .ms-cal-month{ color:#fff; }


/* Celebración de logro */
.gami-logro-pop{ text-align:center; max-width:360px; padding:26px 22px 18px; }
.gami-logro-burst{ font-size:56px; line-height:1; animation:gamiPop .5s cubic-bezier(.2,1.6,.4,1); }
@keyframes gamiPop{ 0%{ transform:scale(.2); opacity:0; } 100%{ transform:scale(1); opacity:1; } }
.gami-logro-title{ font-size:12px; font-weight:900; letter-spacing:1.4px; color:#C2540A; margin-top:10px; text-transform:uppercase; }
.gami-logro-name{ font-size:21px; font-weight:900; color:#0A1A2F; margin:4px 0 2px; }
.gami-logro-hint{ font-size:13px; color:#5B6B7F; margin-bottom:14px; }
.gami-logro-hint b{ color:#16a34a; }

/* Widget grande del entreno del día */
.ms-dsess-tap{ flex:1; min-width:0; cursor:pointer; }
.ms-sess-view{ padding:0 0 16px; overflow:hidden; }
.ms-sessview-hero{ background:linear-gradient(135deg,#0A1A2F,#004aad); color:#fff; padding:22px 20px; text-align:center; }
.ms-sessview-emoji{ font-size:40px; }
.ms-sessview-title{ font-size:19px; font-weight:900; margin-top:6px; }
.ms-sessview-date{ font-size:12.5px; opacity:.8; margin-top:2px; }
.ms-sessview-grid{ display:grid; grid-template-columns:1fr 1fr; gap:10px; padding:16px 18px 0; }
.ms-sessview-stat{ background:#F6F9FD; border-radius:12px; padding:10px 12px; display:flex; flex-direction:column; }
.ms-sessview-stat .k{ font-size:10.5px; font-weight:800; color:#7A8AA0; }
.ms-sessview-stat .v{ font-size:14.5px; font-weight:900; color:#0A1A2F; }
.ms-sessview-notes{ margin:12px 18px 0; background:#FFF8E6; border:1px solid #F2D98C; border-radius:12px; padding:10px 12px; font-size:13px; color:#5C4A12; }
.ms-sessview-actions{ display:flex; gap:10px; padding:16px 18px 0; }
.ms-sessview-actions .ms-btn-go{ flex:1; }

/* Tema claro: selector de semana y textos blancos de nutrición */
body[data-theme="light"] .nutri-week-switch-btn{ border:1px solid #D8E1EC; background:#fff; color:#5A6B7E; }
body[data-theme="light"] .nutri-week-switch-btn.active{ background:var(--blue,#2F7DD1); border-color:var(--blue,#2F7DD1); color:#fff; }
body[data-theme="light"] .nutri-week-switcher *{ text-shadow:none; }
body[data-theme="light"] .nutri-week-hint,
body[data-theme="light"] .nutri-week-sub{ color:#5A6B7E; }
body[data-theme="light"] .nutri-note-bell-sub{ color:#5A6B7E; }
body[data-theme="light"] .ms-foot{ color:#5A6B7E; }
body[data-theme="light"] .nutri-day-sub{ color:#5A6B7E; }

/* ── Ver TODO el progreso: fotos, forma, actividad, tienda ── */
.gami-fotos-compare{ display:flex; gap:10px; }
.gami-fotos-compare figure{ flex:1; margin:0; min-width:0; }
.gami-fotos-compare img{ width:100%; aspect-ratio:3/4; object-fit:cover; border-radius:12px; cursor:zoom-in; }
.gami-fotos-compare figcaption{ text-align:center; font-size:11px; font-weight:800; color:#5B6B7F; margin-top:6px; }
.gami-fotos-compare.solo figure{ max-width:56%; margin:0 auto; }
.gami-fotos-strip{ display:flex; gap:8px; overflow-x:auto; margin-top:10px; padding-bottom:4px; }
.gami-fotos-strip img{ height:84px; width:64px; object-fit:cover; border-radius:8px; cursor:zoom-in; flex:0 0 auto; }
.gami-line{ fill:none; stroke:#004aad; stroke-width:2.5; stroke-linejoin:round; stroke-linecap:round; }
.gami-line-dot{ fill:#fff; stroke:#004aad; stroke-width:2.5; }
.gami-activity{ max-height:300px; overflow-y:auto; }
.gami-act-row{ display:flex; align-items:center; gap:10px; padding:7px 4px; border-bottom:1px solid #F0F4F9; font-size:12.5px; }
.gami-act-row:last-child{ border-bottom:none; }
.gami-act-row .t{ flex:1; min-width:0; font-weight:700; color:#33465E; }
.gami-act-row .d{ color:#94A3B8; font-size:11px; white-space:nowrap; }
.gami-act-row b{ color:#16a34a; white-space:nowrap; }
.gami-saldo-chip{ font-size:11.5px; font-weight:900; background:#E8F0FE; color:#004aad; border-radius:999px; padding:4px 12px; }
.gami-reward-row{ display:flex; align-items:center; gap:12px; padding:10px 4px; border-bottom:1px solid #F0F4F9; }
.gami-reward-row:last-of-type{ border-bottom:none; }
.gami-reward-row .ic{ font-size:22px; }
.gami-reward-row .tx{ flex:1; min-width:0; font-size:13.5px; color:#0A1A2F; }
.gami-reward-row .tx small{ display:block; color:#7A8AA0; font-size:11.5px; }
.gami-reward-btn{ border:none; border-radius:999px; background:#004aad; color:#fff; font-weight:900;
  font-size:12.5px; padding:9px 16px; cursor:pointer; white-space:nowrap; }
.gami-reward-btn.off{ background:#E3EAF3; color:#94A3B8; cursor:not-allowed; }
.gami-canjes{ margin-top:12px; border-top:1.5px dashed #E3EAF3; padding-top:8px; }
.gami-canjes-h{ font-size:11px; font-weight:900; color:#7A8AA0; letter-spacing:.4px; margin-bottom:4px; }

/* ── Panel 360º del atleta (vista nutri/admin) ── */
.gami-360{ border-left:4px solid #004aad; }
.gami-360-chips{ display:flex; gap:8px; flex-wrap:wrap; margin:4px 0 8px; }
.gami-360-chip{ font-size:11.5px; font-weight:800; background:#F1F5FA; color:#33465E;
  border-radius:999px; padding:5px 12px; }
.gami-360-frio{ font-size:11px; font-weight:900; background:#FDEEEA; color:#D8443C;
  border-radius:999px; padding:4px 12px; }
.gami-360-fotos{ margin-top:10px; }

/* ── Tour de Carbs (onboarding asistido) ── */
/* El velo scrollea (no la card): así la mascota (que sobresale por arriba
   con top:-46px) NUNCA se corta y la card entera cabe en cualquier móvil. */
/* ── Parte semanal como asistente paginado (9-ago) ── */
.gami-wiz{ max-width:440px; }
.gami-wiz-bar{ height:6px; border-radius:99px; background:#e8eef7; overflow:hidden; margin:2px 0 16px; }
.gami-wiz-bar i{ display:block; height:100%; width:0; border-radius:99px;
  background:linear-gradient(90deg,#004aad,#4F9EE8); transition:width .35s cubic-bezier(.2,.7,.3,1); }
.gami-wiz-nav{ display:flex; align-items:center; justify-content:space-between; margin-top:10px; }
.gami-wiz-back{ border:none; background:transparent; color:#5b6b80; font-weight:700; font-size:13px; cursor:pointer; padding:8px 10px; border-radius:9px; }
.gami-wiz-back:hover{ background:#f1f5fa; }
.gami-wiz-count{ font-size:12px; font-weight:700; color:#8a97a8; }
.gami-wiz-extra{ display:inline-block; margin-left:6px; font-size:10.5px; font-weight:800; color:#004aad;
  background:#e8f0fc; border-radius:99px; padding:2px 8px; vertical-align:middle; }
.gami-wiz-in{ animation:gamiWizIn .3s cubic-bezier(.2,.7,.3,1); }
@keyframes gamiWizIn{ from{ opacity:0; transform:translateX(22px); } to{ opacity:1; transform:none; } }
/* En el asistente las opciones van en COLUMNA a todo el ancho: emoji + texto
   siempre legibles, nada de casillas apretadas con letras cortadas (9-ago). */
.gami-wiz-opts{ flex-direction:column; flex-wrap:nowrap; }
.gami-wiz-opts .gami-q-opt{ flex:none; display:block; width:100%; text-align:left; padding:13px 14px; font-size:14px; margin:0; }

/* Tour v2 (11-ago): FOCO por agujero. El velo oscuro es el box-shadow
   gigante del propio agujero (.carbs-tour-hole): lo señalado queda iluminado
   SIN tocar su z-index (los stacking contexts de la app enterraban el
   resaltado antiguo — el "no se ve nada" de Pablo). Carbs + bocadillo viajan
   por la pantalla en px con transición hasta plantarse AL LADO del foco. */
.carbs-tour-bg{ position:fixed; inset:0; z-index:1500; overflow:hidden; }
.carbs-tour-hole{ position:absolute; border-radius:14px;
  box-shadow:0 0 0 200vmax rgba(10,26,47,.62);
  outline:3px solid #4F9EE8; outline-offset:2px;
  transition:top .55s cubic-bezier(.45,0,.2,1), left .55s cubic-bezier(.45,0,.2,1),
    width .55s cubic-bezier(.45,0,.2,1), height .55s cubic-bezier(.45,0,.2,1),
    border-radius .55s cubic-bezier(.45,0,.2,1); }
.carbs-tour-hole.full{ outline:none; border-radius:50%; }
/* Seguimiento 1:1 mientras la página se desplaza: sin transición no hay
   efecto goma (el JS pone .noanim durante el scroll y la quita al parar). */
.carbs-tour-hole.noanim, .carbs-tour-hand.noanim, .carbs-tour-cardwrap.noanim{ transition:none; }
/* Comida de EJEMPLO del tour (v7): tarjeta FLOTANTE centrada sobre el velo —
   no se inserta en Nutrición, así no desplaza el contenido real de la app.
   Su tick lleva anillo propio (el contorno del foco queda bajo esta capa). */
.carbs-tour-demo{ position:fixed; z-index:1600; left:50%; transform:translateX(-50%);
  top:20%; width:min(366px, calc(100vw - 48px)); margin:0;
  box-shadow:0 18px 50px rgba(0,0,0,.45); pointer-events:none; }
.carbs-tour-demo-k{ font-size:10.5px; font-weight:800; letter-spacing:.08em;
  color:#8A97A8; margin-bottom:8px; }
.carbs-tour-demo .nutri-meal-tick{ box-shadow:0 0 0 3px #4F9EE8, 0 0 0 9px rgba(79,158,232,.28); }
/* Manita que apunta al elemento exacto, entre el foco y el bocadillo. */
.carbs-tour-hand{ position:fixed; z-index:1700; font-size:36px; line-height:1;
  pointer-events:none; filter:drop-shadow(0 4px 10px rgba(0,0,0,.5));
  transition:top .55s cubic-bezier(.45,0,.2,1), left .55s cubic-bezier(.45,0,.2,1); }
.carbs-tour-hand.up{ animation:carbsHandUp 1s ease-in-out infinite; }
.carbs-tour-hand.down{ animation:carbsHandDown 1s ease-in-out infinite; }
@keyframes carbsHandUp{ 50%{ transform:translateY(-7px); } }
@keyframes carbsHandDown{ 50%{ transform:translateY(7px); } }
/* Carbs + bocadillo: una pieza (capa 1700, por encima del velo) que el JS
   coloca en px junto al foco; la transición hace el "paseo" entre pasos. */
.carbs-tour-cardwrap{ position:fixed; z-index:1700;
  transition:top .55s cubic-bezier(.45,0,.2,1), left .55s cubic-bezier(.45,0,.2,1); }
/* 76px de hueco para la mascota (88px): solo muerde 12px de la tarjeta —
   con 52px se comía el título o los botones de su esquina (bug del 11-ago). */
.carbs-tour-cardwrap.bottom{ padding-top:76px; }   /* Carbs asoma por ARRIBA, hacia el foco */
.carbs-tour-cardwrap.top{ padding-bottom:76px; }   /* Carbs asoma por ABAJO, hacia el foco */
.carbs-tour-cardwrap.center{ padding-top:64px; }
.carbs-tour-card{ position:relative; background:#fff; border-radius:20px;
  padding:18px 20px 16px; text-align:left; box-shadow:0 18px 50px rgba(0,0,0,.35); }
.carbs-tour-cardwrap.center .carbs-tour-card{ text-align:center; padding-top:52px; }
.carbs-tour-mascota{ position:absolute; z-index:2; width:88px; height:88px;
  border-radius:50%; object-fit:cover; background:#0A1A2F; border:4px solid #fff;
  box-shadow:0 8px 20px rgba(0,0,0,.3); transition:transform .3s ease; }
.carbs-tour-cardwrap.bottom .carbs-tour-mascota{ top:0; }
.carbs-tour-cardwrap.top .carbs-tour-mascota{ bottom:0; }
.carbs-tour-cardwrap.m-left .carbs-tour-mascota{ left:10px; }
.carbs-tour-cardwrap.m-right .carbs-tour-mascota{ right:10px; }
.carbs-tour-cardwrap.center .carbs-tour-mascota{ top:0; left:50%; margin-left:-55px;
  width:110px; height:110px; }
.carbs-tour-title{ font-size:17px; font-weight:900; color:#0A1A2F; margin-bottom:7px; }
.carbs-tour-text{ font-size:13.5px; color:#44566E; line-height:1.55; }
.carbs-tour-dots{ display:flex; gap:5px; justify-content:center; margin:13px 0 4px; }
.carbs-tour-dots i{ width:6px; height:6px; border-radius:50%; background:#D8E1EC; }
.carbs-tour-dots i.on{ background:#004aad; width:16px; border-radius:999px; }
.carbs-tour-actions{ display:flex; gap:10px; margin-top:11px; }
.carbs-tour-skip{ flex:0 0 auto; border:none; background:transparent; color:#8A97A8;
  font-size:12.5px; font-weight:700; cursor:pointer; padding:12px 10px; }
.carbs-tour-next{ flex:1; border:none; border-radius:999px; background:#004aad; color:#fff;
  font-size:14px; font-weight:900; padding:13px; cursor:pointer; }

@media (max-width:640px){
  .gami-hero{ padding:16px; }
  .gami-hero-stats{ gap:8px; }
  .gami-level-badge{ width:60px; height:60px; min-width:60px; }
  .gami-level-badge .n{ font-size:22px; }
  .gami-stats-grid{ grid-template-columns:repeat(3,1fr); gap:8px; }
  .gami-medals{ grid-template-columns:repeat(3,1fr); }
  .gami-chat-bubble{ max-width:86%; }
}

/* ── Chat en modo teclado (móvil): pantalla completa estilo Telegram ──
   Al enfocar el input, el chat tapa TODO (incluido el nav inferior) y
   gamification.js lo encaja al visualViewport → el compositor queda
   pegado encima del teclado, sin huecos ni nav flotando. */
@media (max-width:900px){
  body.gami-chat-typing{ overflow:hidden; }
  body.gami-chat-typing .sidebar{ display:none !important; }
  body.gami-chat-typing .gami-chat-card{
    position:fixed; left:0; right:0; top:0; height:100dvh; z-index:1450;
    margin:0; border-radius:0; border:none; max-width:none;
    padding:10px 12px calc(10px + env(safe-area-inset-bottom,0px));
  }
  body.gami-chat-typing .gami-chat-card .gami-card-h{ margin-bottom:6px; }
}

/* ── Logro compartido en el chat: insignia centrada + comentario ────── */
.gami-chat-logro{ align-self:center; text-align:center; width:100%; max-width:340px;
  background:linear-gradient(160deg,#FFF8E6,#FFEFC2); border:1px solid #F2D98C;
  border-radius:16px; padding:14px 18px; }
.gami-chat-logro-badge{ font-size:42px; line-height:1; filter:drop-shadow(0 4px 10px rgba(140,100,0,.25)); }
.gami-chat-logro-name{ font-size:15px; font-weight:900; color:#5C4A12; margin-top:6px; }
.gami-chat-logro-sub{ font-size:12.5px; color:#7A651F; margin-top:3px; line-height:1.45; }
.gami-chat-logro-comment{ font-size:13.5px; color:#0A1A2F; margin-top:8px; font-style:italic; line-height:1.5; }
.gami-chat-logro-foot{ display:flex; align-items:center; justify-content:center; gap:10px; margin-top:9px; }
.gami-chat-logro-foot small{ color:#8A97A8; font-size:11px; }

/* ── Hoja de ruta personalizada — liquid glass claro (24-ago, Pablo) ── */
/* Antes era navy sólido y se solapaba con la tarjeta de nivel: ahora es
   cristal claro con acentos azules — respira al lado del hero oscuro. */
.gami-rmh{ cursor:pointer; position:relative; overflow:hidden; color:#0A1A2F;
  background:linear-gradient(135deg, rgba(255,255,255,.88) 0%, rgba(221,235,251,.72) 100%);
  border:1px solid rgba(255,255,255,.9);
  backdrop-filter:blur(14px); -webkit-backdrop-filter:blur(14px);
  box-shadow:0 10px 26px rgba(10,26,47,.10); transition:transform .15s ease, box-shadow .15s ease; }
@media (hover:hover){ .gami-rmh:hover{ transform:translateY(-2px); box-shadow:0 14px 32px rgba(10,26,47,.14); } }
.gami-rmh::after{ content:''; position:absolute; right:-60px; top:-60px; width:190px; height:190px;
  border-radius:50%; background:radial-gradient(circle,rgba(0,74,173,.10),transparent 70%); pointer-events:none; }
.gami-rmh-top{ display:flex; align-items:baseline; justify-content:space-between; gap:10px; }
.gami-rmh-kicker{ font-size:11px; font-weight:900; letter-spacing:.8px; text-transform:uppercase; color:#004aad; }
.gami-rmh-week{ font-size:11.5px; font-weight:800; color:#44566E; white-space:nowrap; }
.gami-rmh-main{ display:flex; align-items:center; gap:12px; margin:10px 0 14px; }
.gami-rmh-ic{ flex:none; width:46px; height:46px; border-radius:14px; display:flex; align-items:center; justify-content:center;
  font-size:26px; background:#fff; box-shadow:inset 0 0 0 1px #E3EAF3, 0 4px 10px rgba(10,26,47,.06); }
.gami-rmh-tit{ min-width:0; }
.gami-rmh-tit b{ display:block; font-size:20px; font-weight:900; letter-spacing:-.3px; line-height:1.15; color:#0A1A2F; }
.gami-rmh-tit small{ display:block; font-size:12.5px; color:#44566E; line-height:1.45; margin-top:3px; }
/* Stepper con flechas: ✓ verdes las pasadas, la actual encendida */
/* Stepper del hero: los pasos SIEMPRE en una fila, repartiendo el ancho.
   (31-ago) Sin etiquetas: en móvil 5 nombres no caben sin truncar. */
.gami-rmh-steps{ display:flex; align-items:center; gap:4px; flex-wrap:nowrap; }
.gami-rmh-step{ display:flex; flex-direction:column; align-items:center; gap:3px; flex:1 1 0; min-width:0; }
.gami-rmh-step small{ font-size:9.5px; font-weight:800; color:#8A97A8; max-width:64px;
  overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.gami-rmh-dot{ width:34px; height:34px; border-radius:50%; display:flex; align-items:center; justify-content:center;
  font-size:15px; font-weight:900; background:#fff; color:#8A97A8;
  box-shadow:inset 0 0 0 1.5px #DDE5EF; }
.gami-rmh-step.done .gami-rmh-dot{ background:#1FA05C; color:#fff; box-shadow:none; }
.gami-rmh-step.done small{ color:#44566E; }
.gami-rmh-step.now .gami-rmh-dot{ background:#004aad; color:#fff; box-shadow:0 0 0 3px rgba(0,74,173,.16); }
.gami-rmh-step.now small{ color:#004aad; }
.gami-rmh-arrow{ font-size:20px; font-weight:900; color:#C9D4E3; line-height:1; flex:none; }
.gami-rmh-steps.in-modal .gami-rmh-arrow{ transform:none; }
.gami-rmh-arrow.lit{ color:#004aad; }
.gami-rmh-bar{ height:7px; border-radius:999px; background:#E3EAF3; overflow:hidden; margin-top:12px; }
.gami-rmh-bar i{ display:block; height:100%; border-radius:999px; background:linear-gradient(90deg,#004aad,#4F9EE8); transition:width .4s ease; }
.gami-rmh-foot{ display:flex; align-items:baseline; justify-content:space-between; gap:10px; margin-top:11px;
  font-size:12.5px; color:#44566E; line-height:1.5; }
.gami-rmh-foot b{ color:#0A1A2F; }
.gami-rmh-more{ color:#004aad; font-weight:900; white-space:nowrap; }
.gami-rm-wait .gami-empty{ line-height:1.55; }
/* Stepper compacto dentro del modal (fondo blanco) */
.gami-rmh-steps.in-modal{ margin-top:10px; }
.gami-rmh-steps.in-modal .gami-rmh-dot{ width:30px; height:30px; font-size:13px;
  background:#EEF3FA; color:#8A97A8; box-shadow:inset 0 0 0 1.5px #DDE5EF; }
.gami-rmh-steps.in-modal .gami-rmh-step.done .gami-rmh-dot{ background:#1FA05C; color:#fff; box-shadow:none; }
.gami-rmh-steps.in-modal .gami-rmh-step.now .gami-rmh-dot{ background:#004aad; color:#fff; box-shadow:0 0 0 3px #C9DCF8; }
.gami-rmh-steps.in-modal .gami-rmh-arrow{ color:#C9D4E3; }
.gami-rmh-steps.in-modal .gami-rmh-arrow.lit{ color:#004aad; }

/* Modal del atleta: una TARJETA por fase, la actual marcada fuerte */
.gami-rm-modal{ max-width:520px; padding:0; }
.gami-rmm-sticky{ position:sticky; top:0; z-index:2; background:#fff; padding:18px 20px 12px;
  border-bottom:1px solid #EEF3F9; }
.gami-rmm-prog{ font-size:12.5px; color:#44566E; margin-top:8px; }
.gami-rmm-prog b{ color:#004aad; }
.gami-rmm-timeline{ display:flex; flex-direction:column; gap:0; padding:14px 20px 0; }
.gami-rmm-timeline.plain{ padding:0; }  /* dentro de la card del nutri */
.gami-rm-modal .gami-modal-foot{ padding:14px 20px calc(18px + env(safe-area-inset-bottom,0px)); margin:0; }

/* ── El VIAJE: nodos conectados con línea + flecha entre fases ─────── */
.gami-rmj-item{ display:flex; gap:12px; align-items:stretch; }
.gami-rmj-rail{ flex:none; width:40px; display:flex; flex-direction:column; align-items:center; }
.gami-rmj-node{ flex:none; width:40px; height:40px; border-radius:50%; display:flex; align-items:center; justify-content:center;
  font-size:18px; font-weight:900; background:#EEF3FA; color:#8A97A8; box-shadow:inset 0 0 0 2px #DDE5EF; }
.gami-rmj-item.done .gami-rmj-node{ background:#1FA05C; color:#fff; box-shadow:none; }
.gami-rmj-item.now .gami-rmj-node{ background:linear-gradient(135deg,#004aad,#4F9EE8); color:#fff;
  box-shadow:0 0 0 4px #C9DCF8; }
.gami-rmj-node.goal{ background:#0A1A2F; color:#fff; box-shadow:none; font-size:19px; }
.gami-rmj-line{ flex:1; width:3px; margin:4px 0 0; border-radius:999px; background:#E3EAF3; min-height:16px; }
.gami-rmj-item.done .gami-rmj-line{ background:#BFE6D0; }
.gami-rmj-item.now .gami-rmj-line{ background:linear-gradient(180deg,#9FC2EA,#E3EAF3); }
.gami-rmj-chev{ font-size:16px; font-weight:900; color:#B9CCE4; line-height:.6; margin:2px 0 4px; }
.gami-rmj-item.done .gami-rmj-chev{ color:#1FA05C; }

.gami-rmj-card{ flex:1; min-width:0; border:1px solid #E3EAF3; border-radius:16px; padding:13px 15px;
  background:#fff; margin-bottom:14px; }
/* Cada fase es un desplegable (24-ago): cabecera visible, detalle plegado. */
details.gami-rmj-card > summary{ cursor:pointer; user-select:none; list-style:none; }
details.gami-rmj-card > summary::-webkit-details-marker{ display:none; }
.gami-rmj-open{ font-size:12px; color:#8A97A8; margin-left:4px; display:inline-block; transition:transform .18s; }
details.gami-rmj-card[open] .gami-rmj-open{ transform:rotate(180deg); }
details.gami-rmj-card[open] > summary{ margin-bottom:2px; }
.gami-rmj-item.done .gami-rmj-card{ background:#FBFDFC; border-color:#DFF0E6; }
.gami-rmj-item.next .gami-rmj-card{ background:#FCFDFE; }
.gami-rmj-item.next .gami-rmj-title{ color:#7A8AA0; }
.gami-rmj-item.now .gami-rmj-card{ border:1.5px solid #9FC2EA; background:linear-gradient(180deg,#F4F9FF,#fff);
  box-shadow:0 10px 26px rgba(0,74,173,.12); }

.gami-rmj-top{ display:flex; align-items:center; gap:8px; flex-wrap:wrap; }
.gami-rmj-num{ font-size:10.5px; font-weight:900; letter-spacing:.6px; text-transform:uppercase; color:#8A97A8; }
.gami-rmj-item.now .gami-rmj-num{ color:#004aad; }
.gami-rmj-weeks{ font-size:11px; font-weight:800; color:#26405E; background:#EEF3FA; border-radius:999px; padding:2px 9px; }
.gami-rmj-item.now .gami-rmj-weeks{ background:#DCE9F9; color:#004aad; }
.gami-rmj-tag{ font-size:10.5px; font-weight:900; border-radius:999px; padding:3px 9px; white-space:nowrap; margin-left:auto; }
.gami-rmj-tag.done{ background:#E7F7EE; color:#157347; }
.gami-rmj-tag.next{ background:#F2F6FB; color:#8A97A8; }
.gami-rmj-title{ font-size:17px; font-weight:900; color:#0A1A2F; letter-spacing:-.2px; line-height:1.25; margin-top:6px; }
.gami-rmj-item.now .gami-rmj-title{ font-size:19px; }

/* Banda "AQUÍ ESTÁS" con su propia barra de progreso dentro de la fase */
.gami-rmj-aqui{ margin-top:9px; background:linear-gradient(135deg,#0A1A2F,#004aad); color:#fff;
  border-radius:12px; padding:9px 12px; font-size:12px; font-weight:900; letter-spacing:.3px; }
.gami-rmj-aquibar{ height:6px; border-radius:999px; background:rgba(255,255,255,.2); overflow:hidden; margin-top:7px; }
.gami-rmj-aquibar i{ display:block; height:100%; border-radius:999px; background:linear-gradient(90deg,#4F9EE8,#8FD3FF); }

.gami-rmj-sec{ margin-top:10px; }
.gami-rmj-sec b{ display:block; font-size:11px; font-weight:900; letter-spacing:.4px; text-transform:uppercase; color:#26405E; }
.gami-rmj-item.now .gami-rmj-sec b{ color:#004aad; }
.gami-rmj-sec p{ margin:4px 0 0; font-size:13.5px; color:#44566E; line-height:1.6; }
.gami-rmj-hitos{ margin:6px 0 0; padding:0; list-style:none; }
.gami-rmj-hitos li{ display:flex; gap:8px; align-items:flex-start; font-size:12.5px; color:#3C5468;
  line-height:1.55; padding:3px 0; }
.gami-rmj-hitos .ck{ flex:none; width:17px; height:17px; border-radius:50%; background:#E8F0FB; color:#004aad;
  font-size:13px; font-weight:900; display:flex; align-items:center; justify-content:center; margin-top:2px; }
.gami-rmj-item.done .gami-rmj-hitos .ck{ background:#E7F7EE; color:#157347; }

/* La meta al final del viaje */
.gami-rmj-item.goal{ align-items:center; }
.gami-rmj-goalcard{ flex:1; min-width:0; border-radius:16px; padding:14px 16px; color:#fff;
  background:linear-gradient(135deg,#0A1A2F,#004aad); box-shadow:0 10px 24px rgba(10,26,47,.18); }
.gami-rmj-goalk{ font-size:10.5px; font-weight:900; letter-spacing:.8px; text-transform:uppercase; color:#8FD3FF; }
.gami-rmj-goaltxt{ font-size:14.5px; font-weight:800; line-height:1.45; margin-top:3px; }

/* MÓVIL: hoja inferior a pantalla casi completa (nada de modal apretado) */
@media (max-width:640px){
  .gami-rm-bg{ padding:0; align-items:flex-end; }
  .gami-rm-modal{ max-width:none; width:100%; max-height:94dvh; border-radius:20px 20px 0 0; }
  .gami-rmm-sticky{ padding:16px 16px 11px; }
  .gami-rmm-timeline{ padding:12px 14px 0; gap:0; }
  .gami-rm-modal .gami-modal-foot{ padding:14px 16px calc(16px + env(safe-area-inset-bottom,0px)); }
  .gami-rmj-rail{ width:34px; }
  .gami-rmj-node{ width:34px; height:34px; font-size:15px; }
  .gami-rmj-card{ padding:12px 13px; margin-bottom:12px; }
  .gami-rmj-title{ font-size:15.5px; }
  .gami-rmj-item.now .gami-rmj-title{ font-size:17px; }
  .gami-rmh-tit b{ font-size:17.5px; }
  .gami-rmh-foot{ flex-direction:column; gap:4px; }
}

/* Panel del nutri (ficha → Menú → Hoja de ruta) — rediseño 30-jul */
.gami-rms{ padding:18px 20px; }
.gami-rms .gami-rms-warn{ font-size:12.5px; color:#8A6100; background:#FFF4D6; border-radius:10px;
  padding:9px 12px; margin:12px 0 0; line-height:1.45; }
.gami-rms .gami-rms-info{ font-size:12.5px; color:#0A3B6B; background:#E8F1FC; border-radius:10px;
  padding:9px 12px; margin:12px 0 0; line-height:1.45; }
/* Estado vacío: héroe centrado con un solo botón */
.gami-rms-hero{ text-align:center; padding:34px 24px; }
.gami-rms-hero-ic{ font-size:42px; }
.gami-rms-hero-t{ font-size:17px; font-weight:900; color:#0A1A2F; margin-top:10px; }
.gami-rms-hero-s{ font-size:13.5px; color:#5B6B7F; line-height:1.6; max-width:560px; margin:8px auto 0; }
.gami-rms-genbtn{ max-width:340px; margin:18px auto 0; }
/* Cabecera de estado */
.gami-rms-top{ display:flex; flex-direction:column; gap:8px; }
.gami-rms-toprow{ display:flex; align-items:center; justify-content:space-between; gap:8px; flex-wrap:wrap; }
.gami-rms-pill{ display:inline-block; align-self:flex-start; font-size:12px; font-weight:900;
  border-radius:999px; padding:6px 13px; }
.gami-rms-pill.on{ background:#E7F7EE; color:#157347; }
.gami-rms-pill.off{ background:#FFF4D6; color:#8A6100; }
.gami-rms-meta{ display:flex; flex-wrap:wrap; gap:6px; }
/* Etiquetas de sección y de campo */
.gami-rms-lbl{ font-size:11px; font-weight:900; letter-spacing:.6px; text-transform:uppercase;
  color:#7A8AA0; margin:16px 0 8px; }
.gami-rms-lbl small{ text-transform:none; letter-spacing:0; font-weight:700; }
.gami-rms-f{ display:flex; flex-direction:column; gap:4px; min-width:0; }
.gami-rms-f label{ font-size:11px; font-weight:800; color:#7A8AA0; }
/* Tarjeta por fase */
.gami-rms-fase{ border:1px solid #E3EAF3; border-radius:14px; padding:14px; margin-bottom:12px;
  display:flex; flex-direction:column; gap:10px; background:#FAFCFE; }
.gami-rms-fase-head{ display:flex; align-items:center; justify-content:space-between; }
.gami-rms-fase-n{ font-size:11px; font-weight:900; letter-spacing:.8px; color:#004aad;
  background:#E3EEFB; border-radius:999px; padding:4px 11px; }
.gami-rms-fase-row{ display:flex; gap:10px; }
.gami-rms-f-ico{ width:64px; flex:0 0 auto; }
.gami-rms-ico{ text-align:center; padding:9px 4px; }
.gami-rms-f-nombre{ flex:1; }
.gami-rms-nombre{ font-weight:800; }
.gami-rms-f-sem{ width:76px; flex:0 0 auto; }
.gami-rms-sem{ text-align:center; }
/* Mensaje */
.gami-rms-msg{ line-height:1.6; }
.gami-rms-msgview{ font-size:13.5px; color:#0A1A2F; line-height:1.65; background:#F7FAFD;
  border:1px solid #E3EAF3; border-radius:12px; padding:14px 16px; white-space:pre-wrap; }
/* Acciones */
.gami-rms-actions{ display:flex; flex-wrap:wrap; gap:8px; margin-top:14px; }
@media (max-width:640px){
  .gami-rms-fase-row{ flex-wrap:wrap; }
  .gami-rms-f-nombre{ flex:1 1 100%; order:-1; }
}

/* ── Mantenimiento en la ficha (tab Entreno del nutri) ──────────────── */
.mant-card{ border-left:4px solid #B57E10; margin-bottom:14px; padding:14px 16px; }
.mant-head{ font-size:14px; color:#0A1A2F; margin-bottom:10px; }
.mant-head small{ color:#7A8AA0; font-weight:600; margin-left:6px; }
.mant-chips{ display:flex; flex-direction:column; gap:6px; margin-bottom:12px; }
.mant-chip{ font-size:12.5px; font-weight:700; border-radius:10px; padding:8px 12px; line-height:1.4; }
.mant-chip.ok{ background:#E7F7EE; color:#157347; }
.mant-chip.warn{ background:#FFF4D6; color:#8A6100; }
.mant-chip.bad{ background:#FDECEA; color:#B3261E; }

/* ── Checklist "Primeros pasos" (día 1) ─────────────────────────────── */
.gami-chk-card{ border:1px solid #C9DBF2; background:linear-gradient(180deg,#F4F9FF,#fff); }
.gami-chk-bar{ height:8px; border-radius:999px; background:#E3EAF3; overflow:hidden; margin:10px 0 12px; }
.gami-chk-bar i{ display:block; height:100%; border-radius:999px; background:linear-gradient(90deg,#004aad,#4F9EE8); transition:width .4s ease; }
.gami-chk-row{ display:flex; align-items:center; gap:11px; padding:10px 10px; border-radius:12px; cursor:pointer; }
.gami-chk-row:hover{ background:#EDF4FC; }
.gami-chk-row.done{ cursor:default; opacity:.55; }
.gami-chk-row.done:hover{ background:transparent; }
.gami-chk-row.done .gami-chk-txt b{ text-decoration:line-through; }
.gami-chk-tick{ flex:0 0 auto; width:24px; height:24px; border-radius:50%; border:2px solid #B9CCE4;
  display:flex; align-items:center; justify-content:center; font-size:13px; font-weight:900; color:#fff; }
.gami-chk-row.done .gami-chk-tick{ background:#1FA05C; border-color:#1FA05C; }
.gami-chk-ico{ flex:0 0 auto; font-size:19px; }
.gami-chk-txt{ flex:1; min-width:0; display:flex; flex-direction:column; gap:1px; }
.gami-chk-txt b{ font-size:13.5px; color:#0A1A2F; }
.gami-chk-txt small{ font-size:11.5px; color:#5B6B7F; }
.gami-chk-xp{ flex:0 0 auto; font-size:11px; font-weight:900; color:#004aad; background:#E3EEFB;
  border-radius:999px; padding:4px 9px; }
.gami-chk-foot{ text-align:right; margin-top:6px; }
.gami-chk-foot a{ font-size:11.5px; color:#8A97A8; text-decoration:none; }

/* ── Modal "Tu objetivo" (vídeo primero, formulario después) ─────────── */
.gami-obj-frame{ position:relative; width:100%; aspect-ratio:16/9; border-radius:12px; overflow:hidden;
  background:#0A1A2F; margin-bottom:10px; }
.gami-obj-frame iframe{ position:absolute; inset:0; width:100%; height:100%; border:0; }
.gami-obj-videotxt{ font-size:13px; color:#44566E; line-height:1.55; margin-bottom:12px; }
.gami-obj-contexto{ font-size:12.5px; color:#44566E; background:#F2F6FB; border-radius:10px;
  padding:10px 12px; margin-bottom:12px; line-height:1.5; }
.gami-obj-label{ display:block; font-size:12px; font-weight:800; color:#0A1A2F; margin:10px 0 5px; }
.gami-obj-inp{ width:100%; box-sizing:border-box; border:1.5px solid #D8E1EC; border-radius:10px;
  padding:11px 12px; font-size:16px; font-family:inherit; color:#0A1A2F; background:#fff; } /* 16px = sin zoom iOS */
.gami-obj-inp:focus{ outline:none; border-color:#004aad; }
/* El date nativo de iOS trae ancho intrínseco y un valor interno con altura
   propia: sin esto se sale de la tarjeta y se estira a lo alto. */
input.gami-obj-inp[type="date"]{
  -webkit-appearance:none; appearance:none;
  display:block; box-sizing:border-box;
  width:100%; max-width:100%; min-width:0;
  height:48px; padding:0 12px; margin:0;
  line-height:normal; text-align:left;
}
input.gami-obj-inp[type="date"]::-webkit-date-and-time-value{
  height:auto; min-height:0; margin:0; padding:0; text-align:left;
}
input.gami-obj-inp[type="date"]::-webkit-datetime-edit{ padding:0; }
input.gami-obj-inp[type="date"]::-webkit-calendar-picker-indicator{ margin:0; padding:0; }
/* Red de seguridad: nada dentro del modal puede desbordar a lo ancho. */
.gami-obj-form, .gami-obj-video{ max-width:100%; min-width:0; }
.gami-modal input, .gami-modal textarea, .gami-modal select{ max-width:100%; box-sizing:border-box; }

/* ══ CLUB v2 (5-ago): fijado, Carbs en el chat, moderación y preguntas ══ */
/* Barra de mensaje fijado (arriba del chat, clic = ir al mensaje) */
.gami-chat-pinned{
  display:flex; align-items:center; gap:8px; padding:8px 12px; margin:0 0 8px;
  background:#FFF8E6; border:1px solid #F2E3B3; border-radius:10px;
  cursor:pointer; font-size:13px; color:#0A1A2F;
}
.gami-chat-pinned .pin-ic{ flex:none; }
.gami-chat-pinned .pin-txt{ flex:1; min-width:0; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.gami-chat-pinned .pin-off{ flex:none; border:0; background:none; cursor:pointer; color:#5B6B7F; font-size:14px; padding:2px 4px; }

/* Mensaje de sistema de Carbs (resumen dominical, pregunta de la semana) */
.gami-chat-carbs{ display:flex; gap:8px; align-items:flex-end; }
.gami-chat-carbs-avatar{ width:28px; height:28px; border-radius:50%; flex:none; background:#fff; }
.gami-chat-carbs-bubble{
  max-width:82%; background:#E8F0FE; border:1px solid #C9DCF8;
  border-radius:14px 14px 14px 4px; padding:8px 12px;
}
.gami-chat-carbs-bubble .gami-chat-who{ color:#004aad; }

/* Controles de moderación del equipo (fijar / borrar) */
.gami-msg-staffctl{ display:inline-flex; gap:2px; align-self:center; }
.gami-msg-staffctl button{
  border:0; background:none; cursor:pointer; font-size:13px;
  opacity:.45; padding:2px 3px;
}
@media (hover:hover){ .gami-msg-staffctl button:hover{ opacity:1; } }

/* Gestor de preguntas de la semana (pestaña del equipo) */
.gami-prompt-row{
  display:flex; align-items:center; gap:8px; padding:8px 4px;
  border-bottom:1px solid #EDF2F8; font-size:13px;
}
.gami-prompt-row .q{ flex:1; min-width:0; }
.gami-prompt-row small{ color:#5B6B7F; flex:none; }
.gami-prompt-row button{ border:0; background:none; cursor:pointer; font-size:14px; padding:2px 4px; }
.gami-prompt-row.off .q{ opacity:.4; text-decoration:line-through; }

/* Badge de no leídos en la pestaña Club (reusa .badge-count del nav) */
#nav-club .badge-count{ margin-left:auto; }

/* ════════════════════════════════════════════════════════════════════
   CAPA ESTÉTICA (6-ago) — celebraciones, targets táctiles y legibilidad
   ════════════════════════════════════════════════════════════════════ */

/* Confeti CSS puro (subida de nivel): 40 partículas que caen y giran */
.gami-confetti{ position:fixed; inset:0; pointer-events:none; z-index:10000; overflow:hidden; }
.gami-confetti i{ position:absolute; top:-16px; border-radius:2px; opacity:.95;
  animation-name:gamiConfettiFall; animation-timing-function:cubic-bezier(.2,.6,.4,1); animation-fill-mode:forwards; }
@keyframes gamiConfettiFall{
  0%{ transform:translateY(-20px) rotate(0deg); opacity:1; }
  100%{ transform:translateY(105vh) rotate(720deg); opacity:.6; }
}

/* Celebración de subida de nivel */
.gami-levelup{ text-align:center; }
.gami-lvl-burst{ width:96px; height:96px; margin:6px auto 10px; border-radius:50%;
  background:linear-gradient(135deg,#004aad,#2F7DD1); color:#fff; display:flex; flex-direction:column;
  align-items:center; justify-content:center; box-shadow:0 8px 28px rgba(0,74,173,.45);
  animation:gamiLvlPop .55s cubic-bezier(.2,1.6,.4,1); }
.gami-lvl-burst .n{ font-size:38px; font-weight:900; line-height:1; }
.gami-lvl-burst .t{ font-size:10px; font-weight:800; letter-spacing:2px; opacity:.85; }
@keyframes gamiLvlPop{ 0%{ transform:scale(.3); } 70%{ transform:scale(1.15); } 100%{ transform:scale(1); } }

/* Hero de racha: peligro, comodines a la vista y rescate */
.gami-streak-big.danger{ color:#FFC53D; animation:gamiDangerPulse 1.6s ease-in-out infinite; }
@keyframes gamiDangerPulse{ 0%,100%{ opacity:1; } 50%{ opacity:.65; } }
.gami-hero-freeze{ margin-top:8px; font-size:12px; font-weight:700; color:rgba(255,255,255,.85); }
.gami-hero-freeze small{ font-weight:600; color:rgba(255,255,255,.6); }
.gami-hero-rescue{ margin-top:10px; padding:8px 12px; border-radius:10px; font-size:12.5px;
  background:rgba(255,197,61,.16); border:1px solid rgba(255,197,61,.45); color:#FFE3A1; }

/* Día verde: pulso en la barra + emoji que despega */
.gami-day-progress{ position:relative; }
.gami-day-fill.green.celebrate{ animation:gamiGreenPulse .9s ease-in-out 2; }
@keyframes gamiGreenPulse{ 0%,100%{ filter:brightness(1); } 50%{ filter:brightness(1.45); } }
.gami-emoji-float{ position:absolute; right:8px; bottom:0; font-size:22px; pointer-events:none;
  animation:gamiEmojiUp 1.5s ease-out forwards; }
@keyframes gamiEmojiUp{ 0%{ transform:translateY(0) scale(.7); opacity:0; }
  20%{ opacity:1; } 100%{ transform:translateY(-46px) scale(1.25); opacity:0; } }

/* Tick de comida: la ACCIÓN central del sistema — pop al marcar y zona
   pulsable de 44px sin cambiar el tamaño visual */
.nutri-meal-tick{ position:relative; }
.nutri-meal-tick::after{ content:''; position:absolute; inset:-9px; border-radius:50%; }
.nutri-meal-tick.on{ animation:gamiTickPop .3s cubic-bezier(.2,1.8,.4,1); }
@keyframes gamiTickPop{ 0%{ transform:scale(.8); } 60%{ transform:scale(1.18); } 100%{ transform:scale(1); } }

/* Targets táctiles ≥44px en controles pequeños (zona ampliada invisible) */
.gami-liga-nav button{ position:relative; }
.gami-liga-nav button::after{ content:''; position:absolute; inset:-10px; }
.gami-modal-x{ position:relative; }
.gami-modal-x::after{ content:''; position:absolute; inset:-8px; border-radius:50%; }

/* Liga: podio real para el top 3 + racha en la fila */
.gami-liga-row.top1{ background:linear-gradient(90deg,rgba(255,197,61,.22),rgba(255,197,61,.05)); border:1px solid rgba(214,158,20,.35); font-weight:800; }
.gami-liga-row.top2{ background:linear-gradient(90deg,rgba(148,163,184,.22),rgba(148,163,184,.05)); border:1px solid rgba(148,163,184,.4); }
.gami-liga-row.top3{ background:linear-gradient(90deg,rgba(205,127,50,.18),rgba(205,127,50,.04)); border:1px solid rgba(205,127,50,.35); }
.gami-liga-row.top1 .pos,.gami-liga-row.top2 .pos,.gami-liga-row.top3 .pos{ font-size:16px; }
.gami-liga-row.me{ border:1.5px solid #004aad; }

/* Medallas: progreso hacia la siguiente ("34/50") + fila de objetivo */
.gami-medal .prog{ display:block; height:4px; border-radius:999px; background:#E4EBF4; margin:4px 6px 2px; overflow:hidden; }
.gami-medal .prog i{ display:block; height:100%; border-radius:999px; background:#004aad; }
.gami-next-medal{ margin:2px 0 10px; padding:8px 12px; border-radius:10px; font-size:12.5px;
  background:#EFF5FF; border:1px solid #C9DBF7; color:#1D3B66; }

/* Gráficos del atleta nuevo: invitación, no un gráfico a cero */
.gami-charts-empty{ padding:18px 14px; border-radius:12px; background:#F4F8FD; border:1px dashed #C9D4E3;
  font-size:13.5px; color:#33465E; line-height:1.5; text-align:center; }

/* ══════════ CLUB v3 (10-ago): muro de hitos + Telegram + ventajas ══════════ */
/* Tu posición en la liga, fija arriba de la card */
.gami-liga-mia{ margin:2px 0 10px; padding:9px 12px; border-radius:11px;
  background:linear-gradient(135deg,#EFF5FF,#E7F0FF); border:1px solid #C9DBF7;
  font-size:13px; color:#1D3B66; }

/* Muro de hitos: feed de solo lectura */
.gami-muro-row{ display:flex; align-items:flex-start; gap:9px; padding:8px 2px;
  border-bottom:1px solid #EEF2F7; font-size:13px; line-height:1.45; color:#33465E; }
.gami-muro-row:last-child{ border-bottom:none; }
.gami-muro-ico{ font-size:17px; flex-shrink:0; margin-top:-1px; }
.gami-muro-txt{ flex:1; min-width:0; }
.gami-muro-time{ color:#8CA0B8; font-size:11px; white-space:nowrap; margin-top:2px; }

/* Tarjeta Telegram */
.gami-tg-card{ background:linear-gradient(160deg,#F3FAFF,#EAF3FF); border:1px solid #C9DBF7; }

/* Ventajas + agenda (filas compartidas) */
.gami-perk-row{ display:flex; align-items:center; gap:10px; padding:9px 2px;
  border-bottom:1px solid #EEF2F7; font-size:13px; }
.gami-perk-row:last-child{ border-bottom:none; }
.gami-perk-row.off{ opacity:.5; }
.gami-perk-ico{ font-size:20px; flex-shrink:0; }
.gami-perk-txt{ flex:1; min-width:0; display:flex; flex-direction:column; gap:1px; color:#22334A; }
.gami-perk-txt small{ color:#7A8CA3; font-size:11.5px; overflow:hidden; text-overflow:ellipsis; }
.gami-perk-code{ border:1px dashed #9DB8DF; background:#F3F8FF; color:#004aad;
  font-weight:800; font-size:12px; padding:6px 10px; border-radius:9px; cursor:pointer;
  letter-spacing:.4px; white-space:nowrap; }
.gami-perk-code:active{ transform:scale(.96); }
.gami-perk-link{ font-size:12.5px; font-weight:800; color:#004aad; text-decoration:none; white-space:nowrap; }
.gami-perk-row button{ border:none; background:#F1F4F9; border-radius:8px; padding:6px 8px; cursor:pointer; font-size:13px; }

/* Formulario de alta del staff (ventajas / eventos) */
.gami-perk-form{ display:grid; grid-template-columns:1fr 1fr; gap:8px; margin-top:10px; }
.gami-perk-form .gami-inp{ width:100%; }
.gami-perk-form .gami-btn{ grid-column:1/-1; }

/* ══════════ CLUB v4 (18-ago): liga social — podio, avatares, muro vivo ══════ */
/* Avatares de iniciales con color estable (el color viene inline del JS) */
.gami-ava{ display:inline-flex; align-items:center; justify-content:center;
  border-radius:50%; color:#fff; font-weight:900; flex-shrink:0;
  width:34px; height:34px; font-size:13px; letter-spacing:.3px;
  box-shadow:inset 0 -2px 4px rgba(0,0,0,.18); user-select:none; }
.gami-ava.xs{ width:24px; height:24px; font-size:10px; }
.gami-ava.sm{ width:28px; height:28px; font-size:11px; }
.gami-ava.lg{ width:46px; height:46px; font-size:17px; border:2.5px solid #fff;
  box-shadow:0 2px 8px rgba(10,26,47,.25); }
.gami-ava.xl{ width:58px; height:58px; font-size:21px; }
.gami-ava.hueco{ background:#C7D3E4; color:#fff; }
/* Foto de perfil (24-ago): la imagen llena el círculo del avatar. */
.gami-ava.foto{ overflow:hidden; background:#E3EAF3; }
.gami-ava.foto img{ width:100%; height:100%; object-fit:cover; display:block; border-radius:inherit; }
/* Desplegable "ver toda la clasificación" (estilo segmentos de Strava).
   Abierta, el botón cambia a "Ocultar la lista" y se hace discreto (24-ago,
   Pablo: "el botón se queda ahí anclado por mucho que se abra la lista"). */
.gami-liga-todos{ margin-top:6px; }
.gami-liga-todos summary{
  list-style:none; cursor:pointer; user-select:none; text-align:center;
  font-size:12px; font-weight:800; color:#004aad; background:#EEF3FA;
  border-radius:10px; padding:9px 12px; margin-bottom:6px;
}
.gami-liga-todos summary::-webkit-details-marker{ display:none; }
.gami-liga-todos summary .abierto{ display:none; }
.gami-liga-todos[open] summary .cerrado{ display:none; }
.gami-liga-todos[open] summary .abierto{ display:inline; }
.gami-liga-todos[open] summary{
  background:transparent; color:#8A97A8; font-weight:700; padding:6px 12px;
}

/* Podio top-3: bloque navy premium, oro en el centro y más alto */
.gami-podio{ display:flex; align-items:flex-end; justify-content:center; gap:8px;
  margin:4px 0 12px; padding:16px 10px 0; border-radius:14px;
  background:linear-gradient(165deg,#0A1F3F,#004aad); overflow:hidden; }
.gami-podio-slot{ flex:1; max-width:110px; display:flex; flex-direction:column;
  align-items:center; gap:3px; text-align:center; cursor:pointer; min-width:0; }
.gami-podio-slot .medal{ font-size:19px; margin-bottom:-2px; }
.gami-podio-slot .name{ font-size:12px; font-weight:800; color:#fff; max-width:100%;
  overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.gami-podio-slot .pts{ font-size:10.5px; font-weight:800; color:#9DB8DF; white-space:nowrap; }
.gami-podio-slot .ped{ width:100%; border-radius:8px 8px 0 0; margin-top:6px;
  background:linear-gradient(180deg,rgba(255,255,255,.22),rgba(255,255,255,.06)); }
.gami-podio-slot.p1 .ped{ height:44px; background:linear-gradient(180deg,rgba(255,197,61,.6),rgba(255,197,61,.15)); }
.gami-podio-slot.p2 .ped{ height:28px; }
.gami-podio-slot.p3 .ped{ height:18px; }
.gami-podio-slot.p1 .medal{ font-size:24px; }
.gami-podio-slot.p1 .name{ font-size:13px; }
.gami-podio-slot.me .name{ color:#FFC53D; }
.gami-podio-slot.empty{ cursor:default; opacity:.65; }

/* Filas v4 de la liga: avatar + barra de XP relativa al líder + flechas */
.gami-liga-row.v4{ padding:9px 8px; font-size:13.5px; cursor:pointer; gap:9px; position:relative; }
.gami-liga-row.v4 .alias-wrap{ flex:1; min-width:0; display:flex; flex-direction:column; gap:3px; }
.gami-liga-row.v4 .alias{ flex:none; }
.gami-liga-row.v4 .alias .tu{ color:#004aad; font-weight:900; }
.gami-liga-row.v4 .alias .fire{ color:#E8590C; font-weight:800; }
.gami-liga-row.v4 .bar{ display:block; height:5px; border-radius:999px; background:#EAF0F8; overflow:hidden; }
.gami-liga-row.v4 .bar i{ display:block; height:100%; border-radius:999px;
  background:linear-gradient(90deg,#2F7DD1,#004aad); transition:width .5s ease; }
.gami-liga-row.v4.top1 .bar i{ background:linear-gradient(90deg,#FFC53D,#E8A200); }
.gami-liga-row.v4 .mov{ width:26px; flex-shrink:0; text-align:center; font-size:10.5px; font-weight:900; }
.gami-liga-row.v4 .mov.up{ color:#1E9E5A; }
.gami-liga-row.v4 .mov.down{ color:#D6455D; }
.gami-liga-row.v4 .mov.eq{ color:#B9C6D6; }
.gami-liga-row.v4 .mov.nuevo{ color:#7C3AED; }
.gami-liga-row.v4::after{ content:''; position:absolute; inset:-2px 0; } /* target táctil */
@media(hover:hover){ .gami-liga-row.v4:hover{ background:#F3F8FF; } }

/* Rey de la racha */
.gami-rey-card{ background:linear-gradient(160deg,#FFFBEF,#FFF4D6); border:1px solid #F0DFA8; }
.gami-rey-row{ display:flex; align-items:center; gap:10px; padding:7px 2px; font-size:13px; }
.gami-rey-row .ico{ font-size:20px; flex-shrink:0; }
.gami-rey-row .txt{ flex:1; min-width:0; color:#4A3F1F; display:flex; flex-direction:column; gap:1px; }
.gami-rey-row .txt b{ color:#2E2812; }
.gami-rey-row .txt small{ color:#8A7A45; font-size:11.5px; }
.gami-rey-row .n{ font-weight:900; color:#B4780A; font-size:15px; white-space:nowrap; }
.gami-rey-row.rec .n{ color:#7A6A35; }

/* Muro v4: hito con avatar + reacciones + comentarios */
.gami-muro-row.v4{ gap:10px; padding:10px 2px; }
.gami-muro-ava{ flex-shrink:0; cursor:pointer; }
.gami-muro-main{ flex:1; min-width:0; }
.gami-muro-actions{ display:flex; gap:6px; margin-top:6px; flex-wrap:wrap; }
.gami-react{ border:1px solid #DCE5F0; background:#F7FAFD; border-radius:999px;
  padding:5px 10px; font-size:13px; cursor:pointer; line-height:1;
  min-height:30px; position:relative; color:#33465E; }
.gami-react::after{ content:''; position:absolute; inset:-8px; border-radius:999px; } /* táctil 44px */
.gami-react b{ font-size:11px; font-weight:800; color:#5B6B7F; }
.gami-react.on{ background:#E8F0FE; border-color:#004aad; }
.gami-react.on b{ color:#004aad; }
.gami-react:active{ transform:scale(.92); }
@media(hover:hover){ .gami-react:hover{ border-color:#9DB8DF; } }
.gami-muro-cmts{ margin-top:8px; padding:8px 10px; background:#F7FAFD;
  border:1px solid #E8EEF6; border-radius:12px; }
.gami-cmt{ display:flex; align-items:flex-start; gap:8px; padding:5px 0; font-size:12.5px; }
.gami-cmt .body{ flex:1; min-width:0; color:#33465E; line-height:1.4; overflow-wrap:anywhere; }
.gami-cmt .body b{ color:#0A1A2F; }
.gami-cmt .body small{ color:#8CA0B8; font-size:10.5px; white-space:nowrap; }
.gami-cmt .del{ border:none; background:none; cursor:pointer; font-size:12px;
  opacity:.55; padding:2px 4px; position:relative; }
.gami-cmt .del::after{ content:''; position:absolute; inset:-8px; }
.gami-cmt-inputrow{ display:flex; gap:8px; margin-top:6px; align-items:center; }
.gami-cmt-inputrow .gami-inp{ flex:1; background:#fff; }

/* ── Reto colectivo del mes — ES el widget de nivel (2-sep-26) ──
   Pablo: "cópialo del widget del nivel". Así que la tarjeta reutiliza las
   MISMAS clases del hero (.gami-hero, .gami-level-badge, .gami-xp-bar,
   .gami-hero-stats, .gami-hero-foot): mismo degradado, mismo medallón de 72px,
   misma barra de 10px, mismas cajas. Aquí solo va lo que cambia: el medallón
   es un ANILLO con el % del club, el halo de cristal y el verde de conseguido. */
.gami-reto-card{ position:relative; overflow:hidden; isolation:isolate; }
.gami-reto-card .gami-hero-title{ display:flex; align-items:center; gap:7px; opacity:.92; }
.gami-reto-card .gami-hero-title .dtr-ico{ width:15px; height:15px; }
.gami-reto-card .gami-hero-title small{ font-size:11.5px; font-weight:700; opacity:.62;
  margin-left:auto; letter-spacing:.2px; }
/* Halo de cristal: le quita el plano al degradado, muy despacio. */
.gami-reto-card::before{
  content:''; position:absolute; z-index:-1; width:240px; height:240px; border-radius:50%;
  top:-110px; right:-60px; filter:blur(22px);
  background:radial-gradient(circle, rgba(122,205,255,.45), rgba(122,205,255,0) 70%);
  animation:retoFloat 11s ease-in-out infinite;
}
.gami-reto-card::after{
  content:''; position:absolute; z-index:-1; left:0; right:0; top:0; height:55%;
  background:linear-gradient(180deg, rgba(255,255,255,.13), rgba(255,255,255,0));
  pointer-events:none;
}
/* Medallón = anillo de progreso. Mismo tamaño y sitio que el del nivel. */
.gami-level-badge.gami-reto-badge{ position:relative; border:0; background:transparent; }
.gami-reto-badge::before{
  content:''; position:absolute; inset:0; border-radius:50%;
  background:conic-gradient(#4ADE80 var(--ring,0%), rgba(255,255,255,.20) 0);
  -webkit-mask:radial-gradient(circle, #0000 60%, #000 61%);
          mask:radial-gradient(circle, #0000 60%, #000 61%);
  animation:retoRing 1.2s cubic-bezier(.22,.61,.36,1) both;
}
.gami-reto-badge::after{
  content:''; position:absolute; inset:9px; border-radius:50%;
  background:rgba(255,255,255,.10); border:1px solid rgba(255,255,255,.22);
}
.gami-reto-badge .n, .gami-reto-badge .t{ position:relative; z-index:1; }
/* El número va DENTRO del anillo (disco interior de 43px / 36px en móvil), así que
   no puede llevar los 26px del nivel: a 20px cabe "47%" con aire y a 16px el "100%". */
.gami-reto-badge .n{ font-variant-numeric:tabular-nums; font-size:20px; letter-spacing:-.5px;
  display:inline-flex; align-items:baseline; justify-content:center; white-space:nowrap; }
.gami-reto-badge .n small{ font-size:10px; font-weight:800; margin-left:1px; letter-spacing:0; }
.gami-reto-badge.tres .n{ font-size:16px; letter-spacing:-.6px; }
.gami-reto-badge.tres .n small{ font-size:9px; }
@media (max-width:640px){
  .gami-reto-badge .n{ font-size:17px; }
  .gami-reto-badge .n small{ font-size:9px; }
  .gami-reto-badge.tres .n{ font-size:13px; }
  .gami-reto-badge.tres .n small{ font-size:8px; }
}
/* Barra: la del hero, con un destello que la recorre. */
.gami-reto-card .gami-xp-bar{ position:relative; }
.gami-reto-card .gami-xp-fill{ position:relative; box-shadow:0 0 12px rgba(74,222,128,.45);
  animation:retoFill 1.2s cubic-bezier(.22,.61,.36,1) both; }
.gami-reto-card .gami-xp-fill::after{ content:''; position:absolute; inset:0; border-radius:999px;
  background:linear-gradient(100deg, transparent 15%, rgba(255,255,255,.45) 50%, transparent 85%);
  animation:retoShine 3.2s ease-in-out infinite; }
/* Conseguido: el widget entero vira a verde. */
.gami-reto-card.done{ background:linear-gradient(135deg,#07281C 0%,#12905A 100%); }
.gami-reto-card.done::before{ background:radial-gradient(circle, rgba(141,240,188,.45), rgba(141,240,188,0) 70%); }
.gami-reto-card.done .gami-reto-badge::before{ background:conic-gradient(#EAFFF5 var(--ring,0%), rgba(255,255,255,.20) 0); }
.gami-reto-card.done .gami-xp-bar{ background:rgba(0,0,0,.22); }
.gami-reto-card.done .gami-xp-fill{ background:#EAFFF5; box-shadow:0 0 12px rgba(255,255,255,.45); }

@property --ring{ syntax:'<percentage>'; inherits:true; initial-value:0%; }
@keyframes retoRing{ from{ --ring:0%; } }
@keyframes retoFill{ from{ width:0; } to{ width:var(--pct,0%); } }
@keyframes retoShine{ 0%{ transform:translateX(-120%);} 55%,100%{ transform:translateX(120%);} }
@keyframes retoFloat{ 0%,100%{ transform:translate(0,0) scale(1);} 50%{ transform:translate(-16px,14px) scale(1.12);} }
@media (prefers-reduced-motion: reduce){
  .gami-reto-card::before, .gami-foto-hero::before, .gami-reto-badge::before,
  .gami-reto-card .gami-xp-fill, .gami-reto-card .gami-xp-fill::after{ animation:none; }
}

/* ── v4.1 (18-ago): próxima llamada + tablón del club ── */
.gami-cita-card{ background:linear-gradient(160deg,#F0F7FF,#E4EFFF); border:1px solid #C9DBF7; }
.gami-cita-card.hoy{ background:linear-gradient(160deg,#FFF6ED,#FFEBD6); border-color:#F2CFA0; }
.gami-cita{ display:flex; align-items:center; gap:14px; margin:4px 0 10px; }
.gami-cita-fecha{ width:64px; height:64px; border-radius:16px; background:#004aad; color:#fff;
  display:flex; flex-direction:column; align-items:center; justify-content:center; flex-shrink:0;
  box-shadow:0 6px 16px rgba(0,74,173,.28); }
.gami-cita-card.hoy .gami-cita-fecha{ background:#E8590C; box-shadow:0 6px 16px rgba(232,89,12,.3); }
.gami-cita-fecha b{ font-size:24px; line-height:1; }
.gami-cita-fecha span{ font-size:11px; font-weight:800; text-transform:uppercase; letter-spacing:.6px; opacity:.85; }
.gami-cita-main{ flex:1; min-width:0; }
.gami-cita-cuando{ display:inline-block; font-size:10.5px; font-weight:900; text-transform:uppercase;
  letter-spacing:.5px; color:#004aad; background:#fff; border:1px solid #C9DBF7;
  border-radius:999px; padding:2px 9px; margin-bottom:4px; }
.gami-cita-card.hoy .gami-cita-cuando{ color:#C2410C; border-color:#F2CFA0; }
.gami-cita-titulo{ font-size:15.5px; font-weight:900; color:#0A1A2F; line-height:1.25; }
.gami-cita-hora{ font-size:12.5px; color:#4A5D75; margin-top:2px; }
.gami-cita-hora::first-letter{ text-transform:uppercase; }   /* «Jueves, 12:33 · Preguntas y respuestas», no «Preguntas Y Respuestas» */
.gami-cita-btn{ display:block; text-align:center; text-decoration:none; margin-bottom:4px; }
.gami-tablon-card{ border:1px solid #DCE5F0; }
.gami-anuncio{ display:flex; align-items:flex-start; gap:11px; padding:10px 2px;
  border-bottom:1px solid #EEF2F7; }
.gami-anuncio:last-child{ border-bottom:none; }
.gami-anuncio.fijado{ background:linear-gradient(160deg,#FFFBEF,#FFF7DE); border:1px solid #F0DFA8;
  border-radius:12px; padding:10px 12px; margin-bottom:6px; }
.gami-anuncio-ico{ font-size:22px; flex-shrink:0; margin-top:-1px; }
.gami-anuncio-main{ flex:1; min-width:0; }
.gami-anuncio-t{ font-size:14px; font-weight:900; color:#0A1A2F; line-height:1.3; }
.gami-anuncio-t .pin{ font-size:11px; margin-right:4px; }
.gami-anuncio-b{ font-size:12.5px; color:#4A5D75; line-height:1.45; margin-top:2px; }

/* Mini-perfil (modal) */
.gami-perfil-pop{ padding:20px; }
.gami-perfil-head{ display:flex; align-items:center; gap:14px; margin-bottom:14px; }
.gami-perfil-name{ font-size:19px; font-weight:900; color:#0A1A2F; }
.gami-perfil-sub{ font-size:12px; color:#7A8AA0; font-weight:700; }
.gami-perfil-stats{ display:grid; grid-template-columns:repeat(4,1fr); gap:8px; margin-bottom:10px; }
.gami-perfil-stats .st{ background:#F4F8FD; border:1px solid #E5EDF6; border-radius:12px;
  padding:9px 4px; text-align:center; display:flex; flex-direction:column; gap:2px; }
.gami-perfil-stats .st b{ font-size:15px; color:#0A1A2F; }
.gami-perfil-stats .st small{ font-size:9.5px; font-weight:800; color:#7A8AA0; text-transform:uppercase; letter-spacing:.4px; }
.gami-perfil-lvlbar{ height:7px; border-radius:999px; background:#EAF0F8; overflow:hidden; }
.gami-perfil-lvlbar i{ display:block; height:100%; background:linear-gradient(90deg,#2F7DD1,#004aad); border-radius:999px; }
.gami-perfil-medal-h{ font-size:13px; font-weight:900; color:#0A1A2F; margin-bottom:8px; }
.gami-perfil-medals{ display:grid; grid-template-columns:repeat(auto-fill,minmax(86px,1fr)); gap:8px; margin-bottom:6px; }
.gami-perfil-medals .med{ background:linear-gradient(160deg,#FFF8E6,#FFEFC2); border:1px solid #F2D98C;
  border-radius:12px; padding:8px 4px; display:flex; flex-direction:column; align-items:center; gap:3px; text-align:center; }
.gami-perfil-medals .med i{ font-style:normal; font-size:21px; }
.gami-perfil-medals .med small{ font-size:9.5px; font-weight:800; color:#6B5A22; line-height:1.15; }
@media(max-width:520px){ .gami-perk-form{ grid-template-columns:1fr; } }

/* ── «Esta semana en el Club» (5-sep-26): tira Semana perfecta + compartir logro ── */
.gami-semana{ display:flex; align-items:center; gap:10px; margin:2px 0 10px; padding:9px 12px; border-radius:12px;
  background:linear-gradient(135deg,#F3F7FF,#EAF1FF); border:1px solid #C9DBF7; font-size:12.5px; color:#1D3B66; }
.gami-semana.ok{ background:linear-gradient(135deg,#FFF8E5,#FFF1C9); border-color:#F2D98B; color:#5A4A12; }
.gami-semana-ico{ font-size:20px; flex-shrink:0; }
.gami-semana-txt{ flex:1; min-width:0; line-height:1.4; }
.gami-semana-txt .t{ font-weight:900; font-size:11px; text-transform:uppercase; letter-spacing:.04em; opacity:.7; }
.gami-semana-txt .d b{ font-weight:800; }
.gami-semana-yo{ flex-shrink:0; font-weight:800; font-size:12px; padding:4px 9px; border-radius:999px;
  background:#fff; border:1px solid #C9DBF7; color:#004aad; white-space:nowrap; }
.gami-semana.ok .gami-semana-yo{ border-color:#F2D98B; color:#8A6A10; }
.gami-muro-share{ margin-top:10px; }
.gami-muro-del{ border:none; background:none; cursor:pointer; font-size:12px; opacity:.5; padding:0 4px;
  position:relative; vertical-align:middle; }
.gami-muro-del::after{ content:''; position:absolute; inset:-8px; }
.gami-hito-tipos{ display:flex; gap:6px; flex-wrap:wrap; margin:4px 0 10px; }
.gami-chip-sel{ border:1.5px solid #DCE5F0; background:#F7FAFD; border-radius:999px; padding:7px 12px;
  font-size:13px; font-weight:700; color:#33465E; cursor:pointer; min-height:34px; }
.gami-chip-sel.on{ background:#E8F0FE; border-color:#004aad; color:#004aad; }
.gami-chip-sel:active{ transform:scale(.95); }

/* ── Cabecera visual de «Esta semana en el Club» (5-sep-26, Pablo) ── */
.gami-semana-card{ padding-top:0; overflow:hidden; }
.gami-semana-head{ display:flex; align-items:center; gap:14px; margin:0 -18px 12px; padding:16px 18px;
  background:linear-gradient(135deg,#0A1A2F 0%,#004aad 100%); color:#fff; }
.gami-semana-head-ico{ font-size:34px; line-height:1; flex-shrink:0; filter:drop-shadow(0 4px 10px rgba(0,0,0,.35)); }
.gami-semana-head-txt{ min-width:0; }
.gami-semana-head-k{ font-size:10px; font-weight:800; letter-spacing:.14em; text-transform:uppercase; opacity:.7; }
.gami-semana-head-t{ font-size:19px; font-weight:900; letter-spacing:-.3px; line-height:1.15; margin-top:2px; }
.gami-semana-head-s{ font-size:12px; opacity:.85; margin-top:4px; }
.gami-semana-head-s b{ font-weight:900; color:#FFC53D; }

/* ── Racha: multiplicador a la vista (5-sep-26) ── */
.gami-mult{ display:inline-block; margin-left:6px; padding:2px 9px; border-radius:999px; font-size:12px; font-weight:900;
  background:rgba(255,197,61,.22); color:#FFD76A; border:1px solid rgba(255,197,61,.45); vertical-align:middle; }
.gami-mult-line{ font-size:12px; opacity:.9; margin:-4px 0 8px; }
.gami-mult-line b{ color:#FFD76A; }

/* ── Editor de la hoja de ruta: fases previsualizadas y arrastrables (5-sep-26) ── */
.gami-rms-timeline{ margin-bottom:10px; }
.gami-rms-fase.dragging{ opacity:.45; }
.gami-rms-fase.drop .gami-rms-card{ outline:2px dashed #004aad; outline-offset:2px; }
.gami-rms-card summary{ cursor:pointer; list-style:none; }
.gami-rms-card summary::-webkit-details-marker{ display:none; }
.gami-rms-card[open] .gami-rmj-open{ transform:rotate(180deg); }
.gami-rms-card[open] .gami-rms-preview{ display:none; }
.gami-rms-card .gami-rms-fase-row{ margin-top:12px; }
.gami-rms-card .gami-rms-f{ margin-top:8px; }
.gami-rms-grip{ cursor:grab; font-size:18px; line-height:1; color:#8A97A8; padding:0 6px 0 0; user-select:none; touch-action:none; }
.gami-rms-grip:active{ cursor:grabbing; }
.gami-rms-order{ margin-left:auto; display:flex; gap:4px; }
.gami-rms-order button{ border:1px solid #DCE5F0; background:#F7FAFD; border-radius:8px; width:28px; height:28px;
  font-size:11px; font-weight:900; color:#33465E; cursor:pointer; position:relative; }
.gami-rms-order button::after{ content:''; position:absolute; inset:-6px; }
.gami-rms-order button.off{ opacity:.3; pointer-events:none; }
.gami-rms-order button.del{ color:#B42318; }
.gami-rms-preview{ font-size:12px; color:#5B6B7F; margin-top:6px; }
.gami-rms-edit{ color:#004aad; font-weight:700; }
.gami-rms-timeline .gami-rmj-item.next .gami-rmj-title{ color:#0A1A2F; }
.gami-rango{ font-size:12px; margin-top:6px; opacity:.92; }
.gami-rango b{ color:#FFD76A; }
/* Arrastre de fases por puntero (5-sep tarde): la fase en vuelo se ve levantada */
.gami-rms-fase.dragging .gami-rms-card{ box-shadow:0 12px 30px rgba(10,26,47,.25); outline:2px solid #004aad; outline-offset:2px; transform:scale(1.01); }
.gami-rms-fase.dragging{ opacity:.9; }
body.gami-rms-dragging{ user-select:none; -webkit-user-select:none; cursor:grabbing; }
.gami-rms-grip{ font-size:22px; padding:2px 8px 2px 0; }
/* (5-sep tarde) La tarjeta VIEJA del editor (.gami-rms-fase: borde, padding 14px,
   columna) se colaba encima del viaje y separaba el nodo de la tarjeta con un
   hueco enorme. Dentro del viaje del editor, la fase es una fila limpia. */
.gami-rms-timeline .gami-rms-fase{ border:0; padding:0; margin:0; background:transparent;
  flex-direction:row; gap:12px; }
.gami-rms-timeline .gami-rmj-line{ min-height:10px; }
.gami-rms-timeline .gami-rmj-node{ background:#EEF3FA; color:#0A1A2F; box-shadow:none; }
.gami-rms-timeline .gami-rmj-card{ background:#fff; }
.gami-rms-timeline .gami-rmj-num{ color:#004aad; }
.gami-rms-timeline .gami-rmj-title{ color:#0A1A2F; }
.gami-rms-timeline .gami-rmj-top{ min-height:32px; }

/* Parte semanal: página numérica (gasto energético, 8-sep) */
.gami-wiz-num{display:flex;align-items:center;gap:10px;margin-top:12px}
.gami-wiz-num input{flex:1;min-width:0;font:inherit;font-size:22px;font-weight:800;padding:12px 14px;border:1.5px solid var(--line,#E2E8F0);border-radius:14px;background:var(--surface,#fff);color:inherit;text-align:center}
.gami-wiz-num input:focus{outline:none;border-color:var(--blue,#2F7DD1)}
.gami-wiz-num span{font-weight:800;color:var(--text-2,#64748B)}
.gami-wiz-hint{font-size:12px;color:var(--text-3,#94A3B8);margin-top:8px}
