body { display: flex; flex-direction: column; min-height: 100vh; }
.barra-sup { display: flex; justify-content: space-between; align-items: center; gap: 1rem; padding: .6rem 1rem;
  background: var(--superficie); border-bottom: 1px solid var(--borde); position: sticky; top: 0; z-index: 5; }
.marca { display: inline-flex; align-items: center; gap: .5rem; color: var(--texto); text-decoration: none; font-size: 1.05rem; }
.menu { display: flex; gap: .3rem; flex-wrap: wrap; justify-content: flex-end; }
.menu a, .menu button { min-height: 40px; padding: .4rem .7rem; border-radius: 8px; text-decoration: none; color: var(--texto); border: 0; background: transparent; }
.menu a[aria-current="page"] { background: var(--superficie-2); font-weight: 700; }
.contenido { flex: 1; width: min(68rem, 100%); margin: 0 auto; padding: 1rem; }
.pie { text-align: center; color: var(--texto-2); font-size: .9rem; padding: 1.5rem 1rem; }

.heroe { padding: 2.2rem 1.4rem; border-radius: 18px; color: #fff; margin-bottom: 1.4rem;
  background: linear-gradient(135deg, #0b57d0 0%, #0f8a5f 100%); }
.heroe h1 { font-size: clamp(1.7rem, 4vw, 2.6rem); margin-bottom: .4rem; }
.heroe p { font-size: 1.1rem; margin: 0 0 1rem; opacity: .95; }
.heroe input { max-width: 30rem; border: 0; }
.ventajas { display: grid; grid-template-columns: repeat(auto-fit, minmax(14rem, 1fr)); gap: 1rem; margin: 1.4rem 0; }
.ventajas .tarjeta h3 { font-size: 1.05rem; }
.rejilla-ent { display: grid; grid-template-columns: repeat(auto-fill, minmax(16rem, 1fr)); gap: 1rem; }
.ent { display: block; text-decoration: none; color: var(--texto); border-top: 6px solid var(--c, var(--primario)); }
.ent:hover { box-shadow: 0 6px 24px rgba(20, 34, 46, .12); }
.cab-ent { display: flex; justify-content: space-between; align-items: center; gap: 1rem; flex-wrap: wrap; margin-bottom: 1rem; }
.inst { display: grid; grid-template-columns: repeat(auto-fill, minmax(17rem, 1fr)); gap: 1rem; }
.inst .tarjeta { display: flex; flex-direction: column; gap: .4rem; }
.inst .tarjeta .btn-primario { margin-top: auto; align-self: flex-start; }
.mapa-pub { height: 360px; margin: 1rem 0; }

.dias { display: flex; gap: .4rem; overflow-x: auto; padding-bottom: .4rem; margin-bottom: 1rem; }
.dias button { flex: none; flex-direction: column; min-width: 4.4rem; padding: .4rem .6rem; line-height: 1.15; }
.dias button[aria-pressed="true"] { background: var(--primario); color: var(--sobre-primario); border-color: var(--primario); }
.dias small { font-size: .78rem; }
.pistas { display: grid; gap: 1rem; }
.pista h3 { margin: 0 0 .5rem; font-size: 1.05rem; }
.huecos { display: grid; grid-template-columns: repeat(auto-fill, minmax(6.4rem, 1fr)); gap: .4rem; }
.hueco { flex-direction: column; align-items: flex-start; gap: 0; line-height: 1.2; padding: .45rem .6rem; }
.hueco b { font-size: 1rem; }
.hueco small { font-size: .8rem; }
.hueco.libre { border-color: var(--libre); background: color-mix(in srgb, var(--libre) 9%, var(--superficie)); }
.hueco.mia { border-color: var(--pagada); background: color-mix(in srgb, var(--pagada) 14%, var(--superficie)); }
.hueco:disabled { background: var(--superficie-2); }
.leyenda-pub { margin: .2rem 0 1rem; }

.reloj { font-size: 1.6rem; font-variant-numeric: tabular-nums; font-weight: 700; }
.reservas { display: grid; gap: .8rem; }
.reserva { display: grid; grid-template-columns: 1fr auto; gap: .4rem 1rem; align-items: center; }
.reserva h3 { margin: 0; font-size: 1.05rem; }
.estado { font-weight: 700; }
.estado.confirmada { color: var(--acento); } .estado.retenida { color: var(--aviso); } .estado.cancelada, .estado.caducada { color: var(--texto-2); }
.saldo { font-size: 2.2rem; font-weight: 800; font-variant-numeric: tabular-nums; }
.carnet { max-width: 22rem; margin: 0 auto; text-align: center; }
.carnet canvas { width: 100%; max-width: 280px; image-rendering: pixelated; background: #fff; padding: 10px; border-radius: 12px; }
.pin { font-size: 1.6rem; letter-spacing: .3rem; font-weight: 800; }
.barra-tiempo { height: 6px; background: var(--superficie-2); border-radius: 3px; overflow: hidden; }
.barra-tiempo i { display: block; height: 100%; background: var(--primario); transition: width 1s linear; }
.formu { max-width: 28rem; }
.error { color: var(--peligro); min-height: 1.2em; }
.menores { display: grid; gap: .4rem; }
.menu a, .menu button { white-space: nowrap; }
@media (max-width: 520px) {
  .barra-sup { padding: .5rem .75rem; gap: .5rem; }
  .marca span { display: none; }
  .menu { flex-wrap: nowrap; gap: .1rem; }
  .menu a, .menu button { padding: .4rem .5rem; font-size: .95rem; }
}
.tarjeta table td { overflow-wrap: anywhere; }
