/* Gym Manager — Frontend CSS (dark/técnico, basado en mockup FORJA) */
@import url('https://fonts.googleapis.com/css2?family=Bebas+Neue&family=Space+Mono:wght@400;700&family=Inter:wght@400;500;600;700;800&display=swap');

:root {
  --gm-bg:       #0a0a0a;
  --gm-bg-alt:   #121212;
  --gm-card:     #161616;
  --gm-line:     #2a2a2a;
  --gm-white:    #f5f5f5;
  --gm-grey:     #8a8a8a;
  --gm-red:      #ff2d4a;
  --gm-green:    #3ddc84;
  --gm-amber:    #f4a72b;
}

.gm-home, .gm-registro, .gm-cuenta, .gm-cuenta-login, .gm-cuenta-msg {
  background: var(--gm-bg);
  color: var(--gm-white);
  font-family: 'Inter', sans-serif;
  line-height: 1.5;
  overflow-x: hidden;
}
.gm-home *, .gm-registro *, .gm-cuenta * { box-sizing: border-box; }
.gm-home a, .gm-cuenta a { color: inherit; text-decoration: none; }

/* ── Typo ── */
.gm-home h1, .gm-home h2, .gm-home h3,
.gm-cuenta h2, .gm-cuenta h3 {
  font-family: 'Bebas Neue', sans-serif;
  letter-spacing: 1px;
  line-height: .95;
}
.gm-tag     { font-family: 'Space Mono', monospace; font-size: 11px; letter-spacing: 2px; text-transform: uppercase; color: var(--gm-red); }
.gm-mono    { font-family: 'Space Mono', monospace; }
.gm-grey    { color: var(--gm-grey); }
.gm-muted   { color: var(--gm-grey); font-size: 13px; }
.gm-accent  { color: var(--gm-red); }

/* ── Layout ── */
.gm-container { max-width: 1200px; margin: 0 auto; padding: 0 40px; }
.gm-section   { padding: 100px 0; border-bottom: 1px solid var(--gm-line); }
.gm-section__head { display: flex; justify-content: space-between; align-items: flex-end; margin-bottom: 56px; gap: 40px; }
.gm-section__head h2 { font-size: 52px; margin-top: 10px; }
.gm-section__head p  { color: var(--gm-grey); max-width: 340px; font-size: 14px; }

/* ── Buttons ── */
.gm-btn {
  display: inline-block;
  padding: 14px 28px;
  font-family: 'Space Mono', monospace;
  font-size: 12px;
  letter-spacing: 1.5px;
  text-transform: uppercase;
  border: 1px solid var(--gm-white);
  cursor: pointer;
  background: transparent;
  color: var(--gm-white);
  transition: all .2s;
  text-align: center;
}
.gm-btn--primary { background: var(--gm-white); color: var(--gm-red) !important; border-color: var(--gm-white); }
.gm-btn--primary:hover { background: var(--gm-red) !important; border-color: var(--gm-red) !important; color: #fff !important; }
.gm-btn--ghost:hover   { background: var(--gm-white); color: var(--gm-red) !important; }
.gm-btn--lg   { padding: 18px 36px; font-size: 13px; }
.gm-btn--sm   { padding: 8px 16px; font-size: 11px; }

/* ── Nav ── */
.gm-nav { position: sticky; top: 0; z-index: 50; background: rgba(10,10,10,.9); backdrop-filter: blur(8px); border-bottom: 1px solid var(--gm-line); }
.gm-nav__inner { max-width: 1200px; margin: 0 auto; padding: 20px 40px; display: flex; align-items: center; justify-content: space-between; gap: 16px; }
.gm-nav__logo  { font-family: 'Bebas Neue', sans-serif; font-size: 26px; letter-spacing: 3px; white-space: nowrap; flex-shrink: 0; }
.gm-nav__logo span { color: var(--gm-red); }
.gm-nav__links { display: flex; gap: 32px; font-family: 'Space Mono', monospace; font-size: 12px; letter-spacing: 1px; text-transform: uppercase; }
.gm-nav__links a { color: var(--gm-grey); transition: color .2s; }
.gm-nav__links a:hover { color: var(--gm-white); }
.gm-nav__cta  { display: flex; align-items: center; gap: 16px; flex-shrink: 0; }
.gm-status    { font-family: 'Space Mono', monospace; font-size: 11px; color: var(--gm-grey); display: flex; align-items: center; gap: 6px; white-space: nowrap; }
.gm-dot       { width: 7px; height: 7px; border-radius: 50%; background: var(--gm-green); box-shadow: 0 0 8px var(--gm-green); flex-shrink: 0; }

/* ── Hero ── */
.gm-hero {
  display: grid;
  grid-template-columns: 1fr 1fr;
  min-height: calc(100vh - 66px);
  border-bottom: 1px solid var(--gm-line);
}

/* Columna imagen */
.gm-hero__img-col {
  position: relative;
  overflow: hidden;
  background: #060606;
}
.gm-hero__photo {
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: center 15%;
  display: block;
  filter: brightness(.82) contrast(1.08);
}
.gm-hero__photo-placeholder {
  width: 100%; height: 100%;
  background: repeating-linear-gradient(0deg,#1a1a1a 0,#1a1a1a 1px,transparent 1px,transparent 40px),
              repeating-linear-gradient(90deg,#1a1a1a 0,#1a1a1a 1px,transparent 1px,transparent 40px);
}

/* Badge esquina inferior-izquierda */
.gm-hero__badge {
  position: absolute;
  bottom: 36px; left: 36px;
  background: rgba(10,10,10,.88);
  border: 1px solid var(--gm-line);
  padding: 18px 22px;
  max-width: 270px;
  backdrop-filter: blur(4px);
}
.gm-hero__badge-tag {
  font-family: 'Space Mono', monospace;
  font-size: 10px; color: var(--gm-red);
  letter-spacing: 2px; text-transform: uppercase;
  display: block; margin-bottom: 10px;
}
.gm-hero__badge-title {
  font-family: 'Bebas Neue', sans-serif;
  font-size: 22px; font-style: italic;
  display: block; line-height: 1.1; margin-bottom: 12px;
}
.gm-hero__badge-bar { height: 2px; width: 52px; background: var(--gm-red); }

/* Columna texto */
.gm-hero__text-col {
  display: flex; flex-direction: column;
  justify-content: center;
  padding: 80px 80px 80px 72px;
}
.gm-hero__title { font-size: 108px; line-height: .88; margin: 16px 0 28px; }
.gm-hero__sub   { color: var(--gm-grey); font-size: 16px; margin: 0 0 40px; max-width: 400px; line-height: 1.65; }
.gm-hero__actions { display: flex; gap: 14px; flex-wrap: wrap; }

/* Bar (mi cuenta) */
.gm-bar      { height: 4px; background: var(--gm-line); margin-top: 10px; position: relative; border-radius: 2px; }
.gm-bar span { position: absolute; left: 0; top: 0; height: 100%; background: var(--gm-red); border-radius: 2px; transition: width .5s; }

/* ── Stats ── */
.gm-stats-strip { display: grid; grid-template-columns: repeat(4,1fr); border-bottom: 1px solid var(--gm-line); border-top: 1px solid var(--gm-line); }
.gm-stat { padding: 36px 40px; border-right: 1px solid var(--gm-line); }
.gm-stat:last-child { border-right: none; }
.gm-stat__num   { font-family: 'Bebas Neue', sans-serif; font-size: 44px; color: var(--gm-red); display: block; }
.gm-stat__label { font-family: 'Space Mono', monospace; font-size: 11px; color: var(--gm-grey); letter-spacing: 1px; text-transform: uppercase; margin-top: 6px; display: block; }

/* ── Programs ── */
.gm-programs { display: grid; grid-template-columns: repeat(4,1fr); border: 1px solid var(--gm-line); }
.gm-program  { padding: 32px 26px; border-right: 1px solid var(--gm-line); border-bottom: 1px solid var(--gm-line); }
.gm-program:nth-child(4n) { border-right: none; }
.gm-program__id { font-family: 'Space Mono', monospace; font-size: 10px; letter-spacing: 2px; color: var(--gm-grey); text-transform: uppercase; margin-bottom: 18px; display: block; }
.gm-program h3 { font-family: 'Bebas Neue', sans-serif; font-size: 36px; line-height: .92; margin-bottom: 12px; letter-spacing: 1px; }
.gm-program p  { color: var(--gm-grey); font-size: 13px; margin-bottom: 20px; min-height: 60px; }
.gm-program__meta { display: flex; justify-content: space-between; font-family: 'Space Mono', monospace; font-size: 11px; color: var(--gm-grey); border-top: 1px solid var(--gm-line); padding-top: 14px; }
.gm-program__meta span:first-child { color: var(--gm-white); font-weight: 700; }
.gm-program__meta span:first-child em { color: var(--gm-red); font-style: normal; }
.gm-section__counter { font-family: 'Space Mono', monospace; font-size: 11px; color: var(--gm-grey); letter-spacing: 1px; text-transform: uppercase; white-space: nowrap; align-self: flex-end; }

/* ── Access ── */
.gm-access { display: grid; grid-template-columns: .9fr 1.1fr; gap: 60px; align-items: center; }
.gm-access h2 { font-size: 52px; margin: 10px 0 20px; }
.gm-feature-list { margin-top: 20px; }
.gm-feature      { display: flex; gap: 16px; padding: 18px 0; border-bottom: 1px solid var(--gm-line); }
.gm-feature:last-child { border-bottom: none; }
.gm-feature__num { font-family: 'Space Mono', monospace; color: var(--gm-red); font-size: 13px; padding-top: 2px; }
.gm-feature h4   { font-size: 15px; font-weight: 700; margin-bottom: 4px; }
.gm-feature p    { color: var(--gm-grey); font-size: 13px; }
.gm-access-card  { border: 1px solid var(--gm-line); background: var(--gm-card); padding: 30px; }
.gm-access-rows  { margin-top: 16px; }
.gm-access-row   { display: flex; justify-content: space-between; align-items: center; padding: 14px 0; border-bottom: 1px solid var(--gm-line); font-family: 'Space Mono', monospace; font-size: 13px; }
.gm-access-row:last-child { border-bottom: none; }
.gm-pill         { padding: 4px 10px; font-size: 10px; letter-spacing: 1px; text-transform: uppercase; font-family: 'Space Mono', monospace; }
.gm-pill--ok     { background: rgba(61,220,132,.12); color: var(--gm-green); border: 1px solid rgba(61,220,132,.3); }
.gm-pill--warn   { background: rgba(255,45,74,.12);  color: var(--gm-red);   border: 1px solid rgba(255,45,74,.3);  }

/* ── Pricing ── */
.gm-pricing { display: grid; grid-template-columns: repeat(3,1fr); gap: 24px; }
.gm-plan    { border: 1px solid var(--gm-line); background: var(--gm-card); padding: 36px 30px; position: relative; }
.gm-plan--featured { background: var(--gm-white); color: #000; border-color: var(--gm-white); }
.gm-plan--featured .gm-grey { color: #555; }
.gm-plan--featured .gm-btn  { border-color: #000; }
.gm-plan--featured .gm-btn--primary { background: #000 !important; border-color: #000 !important; color: var(--gm-red) !important; }
.gm-plan--featured .gm-btn--primary:hover { background: var(--gm-red) !important; border-color: var(--gm-red) !important; color: #fff !important; }
.gm-plan__badge { position: absolute; top: -1px; right: -1px; background: var(--gm-red); color: #fff; font-family: 'Space Mono', monospace; font-size: 10px; letter-spacing: 1px; padding: 6px 12px; }
.gm-plan__price { font-family: 'Bebas Neue', sans-serif; font-size: 52px; margin: 16px 0 4px; }
.gm-plan__period { font-family: 'Space Mono', monospace; font-size: 11px; color: var(--gm-grey); text-transform: uppercase; display: block; margin-bottom: 16px; }
.gm-plan__desc  { font-size: 13px; color: var(--gm-grey); margin-bottom: 20px; }
.gm-plan .gm-btn { width: 100%; }

/* ── App teaser ── */
.gm-app-teaser { display: grid; grid-template-columns: 1fr 1fr; gap: 60px; align-items: center; }
.gm-app-teaser h2 { font-size: 52px; margin: 10px 0 20px; }
.gm-phone-card { border: 1px solid var(--gm-line); background: var(--gm-card); padding: 26px; }
.gm-phone-rows { margin-top: 14px; }
.gm-phone-row  { display: flex; justify-content: space-between; padding: 12px 0; border-bottom: 1px solid var(--gm-line); font-size: 13px; }
.gm-phone-row:last-child { border-bottom: none; }

/* ── Registro ── */
.gm-registro { padding: 60px 20px; }
.gm-registro__title { font-family: 'Bebas Neue', sans-serif; font-size: 42px; margin-bottom: 30px; }
.gm-form { max-width: 680px; }
.gm-form__row { display: grid; grid-template-columns: 1fr 1fr; gap: 16px; margin-bottom: 16px; }
.gm-form__row label { display: flex; flex-direction: column; gap: 6px; font-size: 13px; color: var(--gm-grey); }
.gm-input, .gm-select {
  background: var(--gm-card); border: 1px solid var(--gm-line); color: var(--gm-white);
  padding: 12px 14px; font-family: 'Inter', sans-serif; font-size: 14px;
  width: 100%; transition: border-color .2s;
}
.gm-input:focus, .gm-select:focus { outline: none; border-color: var(--gm-red); }
.gm-select option { background: var(--gm-card); }
#gm-registro-msg { margin-bottom: 20px; }
#gm-registro-msg.success { color: var(--gm-green); font-family: 'Space Mono', monospace; font-size: 13px; }
#gm-registro-msg.error   { color: var(--gm-red);   font-family: 'Space Mono', monospace; font-size: 13px; }

/* ── Cuenta (mi cuenta) ── */
.gm-cuenta { padding: 40px 20px 80px; max-width: 1100px; margin: 0 auto; min-height: 100vh; }
.gm-cuenta__header { margin-bottom: 30px; }
.gm-cuenta__header-top { display: flex; justify-content: space-between; align-items: flex-start; gap: 20px; flex-wrap: wrap; }
.gm-cuenta__header h2 { font-size: 38px; }
.gm-cuenta__grid { display: grid; grid-template-columns: 1fr 1fr; gap: 20px; }
.gm-panel { border: 1px solid var(--gm-line); background: var(--gm-card); }
.gm-panel__head { padding: 14px 20px; border-bottom: 1px solid var(--gm-line); font-family: 'Space Mono', monospace; font-size: 11px; letter-spacing: 1px; text-transform: uppercase; color: var(--gm-grey); }
.gm-memb-info { padding: 20px; }
.gm-memb-stat { text-align: center; margin-bottom: 20px; }
.gm-memb-stat__num   { display: block; font-family: 'Bebas Neue', sans-serif; font-size: 72px; color: var(--gm-red); line-height: 1; }
.gm-memb-stat__label { font-family: 'Space Mono', monospace; font-size: 11px; color: var(--gm-grey); text-transform: uppercase; }
.gm-dl { display: grid; grid-template-columns: max-content 1fr; gap: 6px 16px; padding: 0 20px 20px; font-size: 13px; }
.gm-dl dt { color: var(--gm-grey); font-family: 'Space Mono', monospace; font-size: 11px; text-transform: uppercase; align-self: center; }
.gm-dl dd { margin: 0; }

/* Clases */
.gm-clases-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(200px,1fr)); gap: 16px; padding: 20px; }
.gm-clase-card  { border: 1px solid var(--gm-line); padding: 20px; }
.gm-clase-card__nombre { font-weight: 700; font-size: 15px; margin-bottom: 6px; }
.gm-clase-card__fecha  { font-family: 'Space Mono', monospace; font-size: 11px; color: var(--gm-grey); margin-bottom: 6px; }
.gm-clase-card__cupo   { font-size: 12px; color: var(--gm-grey); margin-bottom: 12px; }
.gm-clase-actions { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; }
.gm-clase-actions .gm-badge--ok { padding: 10px 20px; font-size: 12px; }
.gm-cancelar-btn  { border-color: var(--gm-red); color: var(--gm-red) !important; background: transparent; }
.gm-cancelar-btn:hover { background: var(--gm-red) !important; color: #fff !important; }

/* Badges */
.gm-badge         { display: inline-block; padding: 3px 8px; font-family: 'Space Mono', monospace; font-size: 10px; letter-spacing: 1px; text-transform: uppercase; }
.gm-badge--ok     { background: rgba(61,220,132,.12); color: var(--gm-green); border: 1px solid rgba(61,220,132,.3); }
.gm-badge--warn   { background: rgba(244,167,43,.12);  color: var(--gm-amber); border: 1px solid rgba(244,167,43,.3); }
.gm-badge--err    { background: rgba(255,45,74,.12);   color: var(--gm-red);   border: 1px solid rgba(255,45,74,.3); }
.gm-badge--info   { background: rgba(100,150,255,.12); color: #7ab0ff;          border: 1px solid rgba(100,150,255,.3); }
.gm-badge--dark   { background: rgba(255,255,255,.06); color: var(--gm-grey);  border: 1px solid var(--gm-line); }

/* Tables */
.gm-table { width: 100%; border-collapse: collapse; font-size: 13px; }
.gm-table th { text-align: left; padding: 10px 12px; font-family: 'Space Mono', monospace; font-size: 10px; letter-spacing: 1px; text-transform: uppercase; color: var(--gm-grey); border-bottom: 1px solid var(--gm-line); }
.gm-table td { padding: 12px; border-bottom: 1px solid var(--gm-line); }
.gm-table tr:last-child td { border-bottom: none; }

/* ── Fase 2: Checkout badge ── */
.gm-badge--open { background: rgba(61,220,132,.12); color: var(--gm-green); border: 1px solid rgba(61,220,132,.3); }

/* ── Notificaciones portal ── */
.gm-notif-list { list-style: none; margin: 0; padding: 0; }
.gm-notif-item { padding: 12px 0; border-bottom: 1px solid var(--gm-line); }
.gm-notif-item:last-child { border-bottom: none; }
.gm-notif-item--new { border-left: 3px solid var(--gm-amber); padding-left: 12px; }
.gm-notif-title { font-weight: 600; font-size: 14px; margin-bottom: 4px; }
.gm-notif-msg   { font-size: 13px; color: var(--gm-grey); margin-bottom: 6px; }
.gm-notif-date  { font-size: 11px; color: var(--gm-grey); }

/* ── Código de referido ── */
.gm-referido-code { display: flex; align-items: center; gap: 12px; margin: 12px 0;
  background: var(--gm-card); border: 1px solid var(--gm-line); border-radius: 6px; padding: 10px 16px; }
.gm-referido-code .gm-mono { font-size: 22px; letter-spacing: 3px; color: var(--gm-green); }

/* ── Encuestas ── */
.gm-encuesta-item { padding: 12px 0; border-bottom: 1px solid var(--gm-line); }
.gm-encuesta-item:last-child { border-bottom: none; }
.gm-estrellas { display: flex; gap: 6px; margin: 8px 0; }
.gm-estrella { font-size: 24px; cursor: pointer; color: var(--gm-line); transition: color .15s; }
.gm-estrella:hover,
.gm-estrella--on { color: var(--gm-amber); }

/* ── Responsive ── */
@media (max-width: 900px) {
  /* Nav mobile */
  .gm-nav__inner  { padding: 12px 16px; }
  .gm-nav__logo   { font-size: 18px; letter-spacing: 1.5px; }
  .gm-nav__links  { display: none; }
  .gm-status      { display: none; }
  .gm-nav__cta    { gap: 0; }
  .gm-nav__cta .gm-btn { padding: 8px 14px; font-size: 10px; letter-spacing: 1px; }

  /* Hero mobile: imagen más alta para ver más al atleta */
  .gm-hero { grid-template-columns: 1fr; min-height: auto; }
  .gm-hero__img-col { height: 80vw; min-height: 300px; max-height: 520px; }
  .gm-hero__badge   { bottom: 16px; left: 16px; padding: 12px 14px; max-width: 200px; }
  .gm-hero__badge-tag { font-size: 9px; }
  .gm-hero__badge-title { font-size: 16px; }
  .gm-hero__text-col { padding: 36px 20px 56px; }
  .gm-hero__title { font-size: 60px; margin-bottom: 16px; }
  .gm-hero__sub   { font-size: 14px; margin-bottom: 28px; }

  /* Programs: texto más pequeño para que quepa en 2 columnas */
  .gm-programs { grid-template-columns: repeat(2,1fr); }
  .gm-program  { padding: 20px 16px; }
  .gm-program:nth-child(4n) { border-right: 1px solid var(--gm-line); }
  .gm-program:nth-child(2n) { border-right: none; }
  .gm-program h3 { font-size: 22px; word-break: break-word; hyphens: auto; }
  .gm-program__id { font-size: 9px; margin-bottom: 10px; }

  .gm-access, .gm-app-teaser { grid-template-columns: 1fr; }
  .gm-stats-strip { grid-template-columns: repeat(2,1fr); }
  .gm-pricing { grid-template-columns: 1fr; }
  .gm-container { padding: 0 20px; }
  .gm-section   { padding: 60px 0; }
  .gm-section__head { flex-direction: column; align-items: flex-start; }
  .gm-cuenta__grid { grid-template-columns: 1fr; }
  .gm-form__row { grid-template-columns: 1fr; }
}
