/* ===== Panel de administración ===== */
body.panel { background: var(--fondo); }

/* Login */
.login { min-height: 100vh; display: grid; place-items: center; padding: 16px; background: var(--oscuro); border-top: 6px solid var(--acento); }
.login .marca { justify-content: center; color: var(--texto); }
.login .tarjeta { width: 100%; max-width: 380px; display: grid; gap: 1rem; }
.login .ayuda-login { margin: 0; text-align: center; font-size: .9rem; }
.login h1 { font-size: 1.35rem; text-transform: uppercase; text-align: center; }
.login .error-login { color: var(--error); font-size: .9rem; min-height: 1.2em; margin: 0; }

/* Estructura */
/* minmax(0, 1fr): sin esto, el menú horizontal (una fila de botones) ensancha la columna en el celular */
.app { display: grid; grid-template-columns: minmax(0, 1fr); min-height: 100vh; }
@media (min-width: 900px) { .app { grid-template-columns: 264px minmax(0, 1fr); } }

.lateral { background: var(--oscuro); color: var(--blanco); padding: 1rem 16px; display: flex; flex-direction: column; gap: 1rem; }
@media (min-width: 900px) { .lateral { position: sticky; top: 0; height: 100vh; padding: 1.5rem 1rem; } }
.lateral .marca { padding: 0 .4rem; min-width: 0; }
.lateral .marca-texto { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.cabecera-lateral { display: flex; align-items: center; justify-content: space-between; gap: .6rem; }
.btn-menu { display: none; align-items: center; gap: .45rem; flex-shrink: 0; border: 0; border-radius: 999px; padding: .5rem .9rem;
  background: rgba(255, 255, 255, .09); color: var(--blanco); font: inherit; font-size: .9rem; font-weight: 600; cursor: pointer; }
.btn-menu .ico-cerrar, .btn-menu[aria-expanded="true"] .ico-abrir { display: none; }
.btn-menu[aria-expanded="true"] .ico-cerrar { display: block; }
.btn-menu[aria-expanded="true"] { background: rgba(255, 255, 255, .18); }
/* Secciones + opciones de la cuenta. En la computadora ocupan el alto del menú lateral (la cuenta queda abajo) */
.navegacion { display: flex; flex-direction: column; gap: 1rem; flex: 1; min-height: 0; overflow-y: auto; }
.menu { display: flex; gap: .3rem; overflow-x: auto; margin: 0 -16px; padding: 0 16px; scrollbar-width: none; }
.menu::-webkit-scrollbar { display: none; }
@media (min-width: 900px) { .menu { flex-direction: column; margin: 0; padding: 0; overflow: visible; } }
.menu button {
  background: transparent; border: 0; color: var(--gris-sobre-oscuro); text-align: left; padding: .6rem .8rem; border-radius: 10px;
  cursor: pointer; font-weight: 600; white-space: nowrap; display: flex; align-items: center; gap: .6rem;
}
.menu button:hover { background: rgba(255,255,255,.06); color: var(--blanco); }
.menu button.activo { background: var(--acento); color: var(--blanco); }
.menu .ico { width: 18px; text-align: center; }
.menu .ico svg { display: block; margin: 0 auto; }
.lateral .salir { margin-top: auto; color: var(--gris-sobre-oscuro); background: transparent; border: 0; text-align: left; cursor: pointer; padding: .6rem .8rem; }
.lateral .usuario { font-size: .85rem; color: var(--gris-sobre-oscuro); padding: 0 .4rem; line-height: 1.3; }
.lateral .usuario strong { display: block; color: var(--blanco); }
.lateral .pie-lateral { margin-top: auto; display: flex; flex-direction: column; gap: .2rem; }
.lateral .pie-lateral button, .lateral .pie-lateral a { color: var(--gris-sobre-oscuro); background: transparent; border: 0; text-align: left; cursor: pointer; padding: .5rem .8rem; border-radius: 10px; font-size: .92rem; text-decoration: none; }
.lateral .pie-lateral button:hover, .lateral .pie-lateral a:hover { color: var(--blanco); background: rgba(255,255,255,.06); }
.banda-soporte { background: var(--aviso-fondo); color: #6b4a12; padding: .5rem 16px; font-size: .88rem; text-align: center; }
.banda-soporte a { color: #6b4a12; font-weight: 600; }
@media (max-width: 899px) {
  /* Celular: barra fija arriba con el nombre del club y el botón ☰ Menú, que abre secciones y cuenta */
  .lateral { position: sticky; top: 0; z-index: 40; padding: .75rem 16px; }
  .lateral .usuario { display: none; }
  .btn-menu { display: inline-flex; }
  .navegacion { display: none; position: absolute; left: 0; right: 0; top: 100%; gap: .4rem;
    max-height: calc(100dvh - 4.5rem); padding: .5rem 16px 1.2rem; background: var(--oscuro);
    border-top: 1px solid rgba(255, 255, 255, .08); box-shadow: 0 18px 30px rgba(0, 0, 0, .35); }
  .lateral.menu-abierto .navegacion { display: flex; }
  .menu { flex-direction: column; margin: 0; padding: 0; overflow: visible; }
  .menu button { padding: .8rem .9rem; font-size: 1.02rem; }
  .lateral .pie-lateral { margin-top: .3rem; padding-top: .6rem; border-top: 1px solid rgba(255, 255, 255, .1); }
  .lateral .pie-lateral button, .lateral .pie-lateral a { padding: .7rem .9rem; font-size: .98rem; }
}

.principal { padding: 1.5rem 16px 3rem; min-width: 0; }
@media (min-width: 900px) { .principal { padding: 2rem 2.5rem 3rem; } }
.encabezado { display: flex; align-items: flex-end; justify-content: space-between; gap: 1rem; flex-wrap: wrap; margin-bottom: 1.4rem; }
.encabezado h2 { font-size: 2rem; text-transform: uppercase; }
.encabezado p { margin: .2rem 0 0; color: var(--texto-suave); }

.caja { background: var(--blanco); border-radius: var(--radio); box-shadow: var(--sombra); padding: 1.2rem; margin-bottom: 1.2rem; }
.caja h3 { font-size: 1.3rem; margin-bottom: .8rem; text-transform: uppercase; }

.grilla-form { display: grid; gap: .9rem; grid-template-columns: 1fr; align-items: end; }
@media (min-width: 640px) { .grilla-form { grid-template-columns: repeat(2, 1fr); } }
@media (min-width: 1100px) { .grilla-form.cuatro { grid-template-columns: repeat(4, 1fr); } }
.grilla-form .ancho { grid-column: 1 / -1; }
.check { display: flex; align-items: center; gap: .5rem; font-weight: 600; font-size: .92rem; }
.campo input, .campo select, .campo textarea { padding: .6rem .75rem; }

/* Agenda */
.navegador-fecha { display: flex; align-items: center; gap: .5rem; flex-wrap: wrap; }
.navegador-fecha input { border: 1.5px solid var(--borde); border-radius: 10px; padding: .5rem .7rem; background: var(--blanco); }
.leyenda { display: flex; flex-wrap: wrap; gap: .4rem; margin-bottom: 1rem; }

.agenda { display: grid; gap: .5rem; }
.turno {
  display: grid; grid-template-columns: 92px 1fr auto; gap: .8rem; align-items: center;
  background: var(--blanco); border-radius: 12px; padding: .75rem 1rem; box-shadow: var(--sombra);
  border-left: 5px solid var(--borde);
}
.turno .hora { font-family: "Barlow Condensed", sans-serif; font-size: 1.35rem; font-weight: 700; line-height: 1; }
.turno .hora small { display: block; font-family: "Barlow", sans-serif; font-size: .75rem; color: var(--texto-suave); font-weight: 500; margin-top: .2rem; }
.turno .quien { min-width: 0; }
.turno .quien strong { display: block; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.turno .quien span { font-size: .85rem; color: var(--texto-suave); }
.turno.libre { border-left-color: var(--ok); }
.turno.reservado { border-left-color: var(--acento); }
.turno.fijo { border-left-color: #7c3aed; }
.turno.clase { border-left-color: #0e7490; }
.turno.suspendido { border-left-color: var(--oscuro); background: repeating-linear-gradient(-45deg, #fff, #fff 8px, #f3f3f3 8px, #f3f3f3 16px); }
.turno.pasado { opacity: .55; }
@media (max-width: 520px) {
  .turno { grid-template-columns: 56px minmax(0, 1fr) auto; gap: .6rem; padding: .65rem .75rem; }
  .turno .hora { font-size: 1.2rem; }
  .turno .btn { padding: .4rem .7rem; }
}
.etiqueta.fijo { background: #efe7fd; color: #6d28d9; }
.etiqueta.clase { background: #dff4f8; color: #0e7490; }
.dias-clase { border: 0; padding: 0; margin: 0; }
.dias-clase legend { padding: 0; margin-bottom: .35rem; font-weight: 600; font-size: .92rem; }
.dias-clase > div { display: flex; flex-wrap: wrap; gap: .4rem 1rem; }

/* Tablas */
.tabla-scroll { overflow-x: auto; margin: 0 -1.2rem; padding: 0 1.2rem; }
table { width: 100%; border-collapse: collapse; font-size: .92rem; }
th { text-align: left; font-size: .76rem; text-transform: uppercase; letter-spacing: .04em; color: var(--texto-suave); padding: .5rem .6rem; border-bottom: 1.5px solid var(--borde); white-space: nowrap; }
td { padding: .65rem .6rem; border-bottom: 1px solid var(--borde); vertical-align: top; }
tr:last-child td { border-bottom: 0; }
td .acciones-fila { display: flex; gap: .4rem; flex-wrap: wrap; }
.vacio { text-align: center; color: var(--texto-suave); padding: 1.5rem; }

/* En el celular, cada fila de estas tablas es una tarjeta: "etiqueta  valor" (data-label lo pone admin.js) */
@media (max-width: 639px) {
  .tabla-tarjetas thead { display: none; }
  .tabla-tarjetas, .tabla-tarjetas tbody, .tabla-tarjetas tr, .tabla-tarjetas td { display: block; }
  .tabla-tarjetas tr { padding: .9rem 0; border-bottom: 1px solid var(--borde); }
  .tabla-tarjetas tr:last-child { border-bottom: 0; }
  .tabla-tarjetas td { border: 0; padding: .15rem 0; display: grid; grid-template-columns: 6.5rem minmax(0, 1fr); gap: .6rem; justify-items: start; overflow-wrap: anywhere; }
  .tabla-tarjetas td::before { content: attr(data-label); font-size: .74rem; font-weight: 600; text-transform: uppercase; letter-spacing: .04em; color: var(--texto-suave); padding-top: .15rem; }
  .tabla-tarjetas td:first-child { display: block; font-size: 1.02rem; padding-bottom: .35rem; }
  .tabla-tarjetas td:last-child:not(:first-child) { display: block; padding-top: .55rem; }
  .tabla-tarjetas td:first-child::before, .tabla-tarjetas td:last-child::before, .tabla-tarjetas td.vacio::before { content: none; }
  .tabla-tarjetas td.vacio { display: block; }
  /* Reservas: lista larga, tarjetas más cortas. Email y origen se ven al tocar "Ver" */
  #tabla-reservas tr { position: relative; }
  #tabla-reservas td:nth-child(5), #tabla-reservas td:nth-child(6) { display: none; }
  #tabla-reservas td:last-child:not(:first-child) { position: absolute; top: .7rem; right: 0; padding: 0; }
}
.filtros { display: flex; gap: .6rem; flex-wrap: wrap; margin-bottom: 1rem; }
.filtros input, .filtros select { border: 1.5px solid var(--borde); border-radius: 10px; padding: .5rem .7rem; background: var(--blanco); }

/* Afectados */
.afectados { margin-top: .6rem; padding: .7rem .9rem; border-radius: 10px; background: var(--aviso-fondo); color: #7a5214; font-size: .88rem; }
.afectados ul { margin: .3rem 0 0; padding-left: 1.1rem; }

/* Observaciones */
.obs-lista { display: grid; gap: .6rem; }
.obs { background: var(--blanco); border-radius: 12px; padding: .9rem 1rem; box-shadow: var(--sombra); display: grid; grid-template-columns: 1fr auto; gap: .5rem; }
.obs p { margin: .35rem 0 0; white-space: pre-wrap; }
.obs .meta { font-size: .8rem; color: var(--texto-suave); display: flex; gap: .5rem; align-items: center; flex-wrap: wrap; }

/* Estadísticas */
.kpis { display: grid; grid-template-columns: repeat(auto-fill, minmax(170px, 1fr)); gap: .8rem; margin-bottom: 1.2rem; }
.kpi { background: var(--blanco); border-radius: var(--radio); box-shadow: var(--sombra); padding: 1rem 1.1rem; }
.kpi span { font-size: .8rem; color: var(--texto-suave); font-weight: 600; text-transform: uppercase; letter-spacing: .03em; }
.kpi strong { display: block; font-family: "Barlow Condensed", sans-serif; font-size: 2.1rem; line-height: 1.1; margin-top: .2rem; }
.kpi small { color: var(--texto-suave); }
.kpi.destacado { background: var(--oscuro); color: var(--blanco); }
.kpi.destacado span, .kpi.destacado small { color: var(--gris-sobre-oscuro); }
.kpi.destacado strong { color: var(--acento-sobre-oscuro); }

.graficos { display: grid; gap: 1.2rem; grid-template-columns: minmax(0, 1fr); }
@media (min-width: 1100px) { .graficos { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
.barras { display: grid; gap: .45rem; }
.barra { display: grid; grid-template-columns: 82px 1fr 92px; gap: .6rem; align-items: center; font-size: .88rem; }
.barra .pista { height: 12px; background: #eeeeee; border-radius: 99px; overflow: hidden; }
.barra .relleno { height: 100%; background: var(--acento); border-radius: 99px; min-width: 2px; transition: width .4s; }
.barra .valor { text-align: right; color: var(--texto-suave); font-variant-numeric: tabular-nums; }

/* Estadísticas */
.nota-privacidad { color: var(--texto-suave); font-size: .85rem; margin-top: .4rem; }
#est-historial tr.actual td { font-weight: 700; }
#est-historial td:not(:first-child), #est-historial th:not(:first-child) { text-align: right; }

/* Precios */
.con-signo { position: relative; }
.con-signo .signo { position: absolute; left: .8rem; top: 50%; transform: translateY(-50%); color: var(--texto-suave); font-weight: 600; pointer-events: none; }
.campo-precio input { padding-left: 1.7rem; font-size: 1.15rem; font-weight: 600; }
.nota-precios { color: var(--texto-suave); font-size: .9rem; margin: 1rem 0; }
.nota-precios:empty { display: none; }
.quitar-duracion { background: none; border: 0; padding: 0; color: var(--error); font-size: inherit; font-weight: 600; cursor: pointer; text-decoration: underline; }

/* Diálogo */
dialog { border: 0; border-radius: var(--radio); padding: 0; width: min(520px, calc(100% - 32px)); box-shadow: 0 20px 60px rgba(0, 0, 0, .3); }
dialog::backdrop { background: rgba(0, 0, 0, .5); }
dialog .cuerpo { padding: 1.4rem; display: grid; gap: .9rem; }
dialog h3 { font-size: 1.5rem; text-transform: uppercase; }
dialog .pie-dialogo { display: flex; justify-content: flex-end; gap: .5rem; flex-wrap: wrap; padding: 1rem 1.4rem; background: var(--fondo); }
.detalle { display: grid; gap: .4rem; font-size: .95rem; }
.detalle div { display: flex; justify-content: space-between; gap: 1rem; }
.detalle span:first-child { color: var(--texto-suave); }

/* Selector de cancha (chips) */
.chips { display: flex; gap: .4rem; flex-wrap: wrap; margin-bottom: 1rem; }
.chip { border: 1.5px solid var(--borde); background: var(--blanco); border-radius: 999px; padding: .4rem .9rem; cursor: pointer; font-weight: 600; font-size: .9rem; }
.chip:hover { border-color: var(--oscuro); }
.chip.activo { background: var(--oscuro); border-color: var(--oscuro); color: var(--blanco); }
.chip small { font-weight: 500; opacity: .7; margin-left: .3rem; }

/* Canchas */
.tarjetas-canchas { display: grid; gap: 1rem; grid-template-columns: repeat(auto-fill, minmax(min(100%, 320px), 1fr)); }
.tarjeta-cancha { background: var(--blanco); border-radius: var(--radio); box-shadow: var(--sombra); padding: 1.1rem 1.2rem; display: grid; gap: .5rem; align-content: start; }
.tarjeta-cancha.inactiva { opacity: .6; }
.tarjeta-cancha h3 { font-size: 1.4rem; text-transform: uppercase; display: flex; justify-content: space-between; gap: .5rem; align-items: center; }
.tarjeta-cancha .datos { font-size: .9rem; color: var(--texto-suave); display: grid; gap: .15rem; }
.tarjeta-cancha .precios-lista { display: flex; flex-wrap: wrap; gap: .4rem; }
.tarjeta-cancha .acciones-fila { display: flex; gap: .4rem; flex-wrap: wrap; margin-top: .3rem; }
.dias-check { display: flex; flex-wrap: wrap; gap: .4rem 1rem; }
.secreto { font-family: ui-monospace, monospace; font-size: 1.1rem; background: var(--acento-claro); padding: .5rem .8rem; border-radius: 8px; user-select: all; display: inline-block; }
.solo-admin.oculto-rol { display: none !important; }

/* Cobro online (Datos del club) */
.cuenta-mp { display: flex; align-items: center; gap: .6rem; flex-wrap: wrap; }
.nota-comision { margin: 0; font-size: .88rem; color: var(--texto-suave); }

/* Precios por franja del día (diálogo de precios de una cancha) */
.precios-duracion { border: 1.5px solid var(--borde); border-radius: 12px; padding: .7rem .9rem .5rem; margin: 0 0 .8rem; }
.precios-duracion legend { font-weight: 700; padding: 0 .3rem; }
.precios-duracion legend .quitar-duracion { font-weight: 400; margin-left: .4rem; }
.precios-franjas { display: grid; grid-template-columns: repeat(auto-fit, minmax(118px, 1fr)); gap: .6rem; }
.precios-franjas label small { display: block; font-weight: 400; color: var(--texto-suave); font-size: .78rem; }
.precios-franjas input::placeholder { color: #b5b5b5; }

/* Botón de WhatsApp para escribirle al cliente */
.btn-whatsapp { display: inline-flex; align-items: center; gap: .3rem; padding: .25rem .65rem; border-radius: 999px; background: #e7f8ee;
  color: #12733e; font-size: .82rem; font-weight: 600; text-decoration: none; white-space: nowrap; vertical-align: middle; }
.btn-whatsapp:hover { background: #d3f2df; }
.afectados-lista { margin: .4rem 0 0; padding-left: 1rem; font-size: .85rem; }
.afectados-lista li { margin: .3rem 0; }
.enlace-boton { background: none; border: 0; padding: 0; font: inherit; color: var(--acento-osc); text-decoration: underline; cursor: pointer; }
.cuerpo > .btn-whatsapp { justify-self: start; align-self: start; }

/* Cartel de confirmación al guardar precios */
.confirmacion-precios { text-align: center; display: grid; justify-items: center; gap: .4rem; }
.confirmacion-precios p { margin: 0; color: var(--texto-suave); }
.icono-ok { width: 56px; height: 56px; border-radius: 50%; display: grid; place-items: center; font-size: 1.6rem; font-weight: 700;
  background: var(--ok-fondo); color: var(--ok); }
.tabla-precios-guardados { width: 100%; border-collapse: collapse; font-size: .92rem; }
.tabla-precios-guardados th, .tabla-precios-guardados td { padding: .45rem .5rem; border-bottom: 1px solid var(--borde); text-align: right; }
.tabla-precios-guardados th:first-child, .tabla-precios-guardados td:first-child { text-align: left; }
.tabla-precios-guardados th small { display: block; font-weight: 400; color: var(--texto-suave); font-size: .75rem; }
.tabla-precios-guardados td { color: var(--texto-suave); }
.tabla-precios-guardados td.propio { color: var(--texto); font-weight: 700; }
