:root{--fondo: #f4f6fb;--superficie: #ffffff;--superficie-alta: #edf1f9;--borde: #d8e0ee;--borde-sutil: #e7ecf5;--primario: #2563eb;--primario-fuerte: #1d4ed8;--primario-suave: rgba(37, 99, 235, .1);--primario-borde: rgba(37, 99, 235, .35);--texto: #0f1d33;--texto-suave: #5a6b85;--texto-tenue: #93a1b8;--exito: #15803d;--exito-suave: rgba(21, 128, 61, .12);--advertencia: #b45309;--advertencia-suave: rgba(180, 83, 9, .14);--peligro: #dc2626;--peligro-suave: rgba(220, 38, 38, .08);--gris-bloqueo: #64748b;--gris-bloqueo-suave: rgba(100, 116, 139, .14);--radio-md: 10px;--radio-lg: 14px;--sombra-tarjeta: 0 6px 14px rgba(23, 59, 122, .07)}*{box-sizing:border-box}body{margin:0;background:var(--fondo);color:var(--texto);font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,sans-serif;-webkit-font-smoothing:antialiased}button{font-family:inherit;cursor:pointer;border:none;background:none;color:inherit}input,select{font-family:inherit;font-size:15px;color:var(--texto);background:var(--superficie);border:1.5px solid var(--borde-sutil);border-radius:var(--radio-lg);padding:0 14px;height:46px;width:100%;outline:none}input:focus,select:focus{border-color:var(--primario);box-shadow:0 2px 10px #2563eb29}.boton{display:inline-flex;align-items:center;justify-content:center;gap:8px;height:46px;padding:0 20px;border-radius:var(--radio-lg);font-size:15px;font-weight:700;transition:transform .06s ease,opacity .12s ease}.boton:active{transform:scale(.97)}.boton:disabled{opacity:.45;cursor:not-allowed}.boton--primario{background:var(--primario);color:#fff;box-shadow:0 5px 12px #2563eb47}.boton--contorno{background:var(--superficie);border:1.5px solid var(--borde);color:var(--primario)}.boton--peligro{background:var(--peligro-suave);color:var(--peligro)}.boton--exito{background:var(--exito);color:#fff}.login{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:24px}.login__tarjeta{width:100%;max-width:400px;background:var(--superficie);border:1px solid var(--borde-sutil);border-radius:20px;box-shadow:var(--sombra-tarjeta);padding:36px 32px;display:flex;flex-direction:column;gap:16px}.login__marca{display:flex;flex-direction:column;align-items:center;gap:10px;margin-bottom:8px}.login__titulo{font-size:26px;font-weight:800;letter-spacing:-.6px;margin:0}.login__titulo em{color:var(--primario);font-style:normal}.login__lema{color:var(--texto-suave);font-size:14px;margin:0}.campo{display:flex;flex-direction:column;gap:7px}.campo label{font-size:13px;font-weight:600;color:var(--texto-suave);letter-spacing:.3px}.mensaje-error{color:var(--peligro);font-size:13px;font-weight:600;text-align:center;margin:0}.aviso-carga{color:var(--texto-tenue);font-size:12.5px;text-align:center;margin:0}.panel{max-width:1180px;margin:0 auto;padding:20px 24px 48px}.encabezado{display:flex;align-items:center;justify-content:space-between;gap:16px;flex-wrap:wrap;margin-bottom:18px}.encabezado__marca{display:flex;align-items:center;gap:10px}.encabezado__nombre{font-size:19px;font-weight:800;letter-spacing:-.4px}.encabezado__nombre em{color:var(--primario);font-style:normal}.encabezado__club{color:var(--texto-suave);font-size:13.5px;font-weight:600}.encabezado__acciones{display:flex;align-items:center;gap:10px}.selector-dia{display:flex;align-items:center;gap:8px;background:var(--superficie);border:1.5px solid var(--borde-sutil);border-radius:999px;padding:5px}.selector-dia__flecha{width:34px;height:34px;border-radius:50%;font-size:17px;font-weight:800;color:var(--primario);display:flex;align-items:center;justify-content:center}.selector-dia__flecha:hover{background:var(--primario-suave)}.selector-dia__fecha{font-size:14px;font-weight:700;min-width:150px;text-align:center;text-transform:capitalize}.chip-hoy{height:34px;padding:0 14px;border-radius:999px;background:var(--primario-suave);color:var(--primario);font-size:13px;font-weight:700}.boton-salir{height:38px;padding:0 14px;border-radius:var(--radio-md);color:var(--texto-suave);font-size:13.5px;font-weight:600;border:1px solid var(--borde-sutil);background:var(--superficie)}.leyenda{display:flex;align-items:center;gap:16px;flex-wrap:wrap;margin-bottom:14px;font-size:12.5px;font-weight:600;color:var(--texto-suave)}.leyenda__punto{display:inline-block;width:10px;height:10px;border-radius:3px;margin-right:6px;vertical-align:-1px}.grilla-envoltura{background:var(--superficie);border:1px solid var(--borde-sutil);border-radius:18px;box-shadow:var(--sombra-tarjeta);overflow-x:auto;padding:16px}.grilla{display:grid;gap:0 10px;min-width:560px}.grilla__hora{position:relative;font-size:11.5px;font-weight:600;color:var(--texto-tenue);text-align:right;padding-right:8px;transform:translateY(-6px)}.grilla__cancha-titulo{text-align:center;padding-bottom:10px}.grilla__cancha-nombre{font-size:14.5px;font-weight:800}.grilla__cancha-detalle{font-size:12px;color:var(--texto-suave);font-weight:600}.grilla__columna{position:relative;border-radius:var(--radio-md);background:repeating-linear-gradient(to bottom,var(--superficie-alta) 0,var(--superficie-alta) 1px,transparent 1px,transparent 56px)}.celda-libre{position:absolute;left:0;right:0;border-radius:6px}.celda-libre:hover{background:var(--primario-suave)}.bloque{position:absolute;left:3px;right:3px;border-radius:8px;padding:6px 9px;font-size:12px;font-weight:700;text-align:left;overflow:hidden;border:1.5px solid transparent;transition:filter .1s ease}.bloque:hover{filter:brightness(.96)}.bloque__titulo{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.bloque__detalle{display:block;font-weight:600;font-size:11px;opacity:.85;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.bloque--pendiente{background:var(--advertencia-suave);color:var(--advertencia);border-color:#b453094d}.bloque--confirmada,.bloque--pagada{background:var(--exito-suave);color:var(--exito);border-color:#15803d4d}.bloque--bloqueada{background:var(--gris-bloqueo-suave);color:var(--gris-bloqueo);border-color:#64748b4d}.estado-vacio{text-align:center;color:var(--texto-suave);padding:48px 20px;font-size:14.5px}.actualizado{text-align:right;color:var(--texto-tenue);font-size:12px;font-weight:600;margin-top:10px}.velo{position:fixed;inset:0;background:#0f1d3373;display:flex;align-items:center;justify-content:center;padding:20px;z-index:20}.modal{width:100%;max-width:440px;background:var(--superficie);border-radius:18px;box-shadow:0 18px 50px #0f1d3340;padding:24px;display:flex;flex-direction:column;gap:14px;max-height:90vh;overflow-y:auto}.modal__encabezado{display:flex;align-items:center;justify-content:space-between}.modal__titulo{font-size:18px;font-weight:800;margin:0}.modal__cerrar{width:34px;height:34px;border-radius:50%;background:var(--superficie-alta);font-size:16px;font-weight:700;color:var(--texto)}.modal__contexto{color:var(--texto-suave);font-size:13.5px;margin:-6px 0 0}.fila-doble{display:grid;grid-template-columns:1fr 1fr;gap:10px}.pestanas{display:flex;gap:8px}.pestana{flex:1;height:42px;border-radius:var(--radio-lg);border:1.5px solid var(--borde-sutil);background:var(--superficie);font-size:14px;font-weight:700;color:var(--texto-suave)}.pestana--activa{background:var(--primario-suave);border-color:var(--primario-borde);color:var(--primario)}.detalle-lista{display:flex;flex-direction:column;gap:9px;background:var(--superficie-alta);border-radius:var(--radio-lg);padding:14px 16px}.detalle-fila{display:flex;justify-content:space-between;gap:12px;font-size:14px}.detalle-fila dt{color:var(--texto-suave);font-weight:600}.detalle-fila dd{margin:0;font-weight:700;text-align:right}.insignia{display:inline-block;padding:3px 10px;border-radius:999px;font-size:12px;font-weight:800}.insignia--pendiente{background:var(--advertencia-suave);color:var(--advertencia)}.insignia--confirmada,.insignia--pagada{background:var(--exito-suave);color:var(--exito)}.insignia--bloqueada{background:var(--gris-bloqueo-suave);color:var(--gris-bloqueo)}.cargando-pantalla{min-height:100vh;display:flex;align-items:center;justify-content:center;color:var(--texto-suave);font-weight:600}.girador{width:22px;height:22px;border:3px solid var(--primario-suave);border-top-color:var(--primario);border-radius:50%;animation:girar .8s linear infinite;margin-right:10px}@keyframes girar{to{transform:rotate(360deg)}}
