/* ====================================   
/* 			css/estilos_generales.css
/* 			VARIABLES Y ESTILOS BASE 
/* ==================================== */
:root {
	/* Colores principales */
	--color-primario: #005BAB; 
	--color-secundario: #F8981D;
	--color-gris-claro: #f8f9fa;
	--color-gris-oscuro: #495057;
	
	/* Sombras */
	--sombra-card: 0 2px 8px rgba(0,0,0,0.08);
	--sombra-card-hover: 0 10px 20px rgba(0,0,0,0.15);
	--sombra-boton: 0 2px 5px rgba(0,0,0,0.2);
	
	/* Compatibilidad con Bootstrap */
	--bs-primary: var(--color-primario);
	--bs-primary-rgb: var(--color-primario);
	--bs-secondary: var(--color-secundario);
	--bs-light: var(--color-gris-claro);
	--bs-dark: var(--color-gris-oscuro);
}

/* Reset y estilos base */
* {
	margin: 0;
	padding: 0;
	box-sizing: border-box;
	font-family: 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, 'Open Sans', 'Helvetica Neue', sans-serif;
}

body {
	margin: 0;
	padding-top: 85px;
	background-color: #fff;
}

/* ============ COMPONENTES REUTILIZABLES ============ */
/* Cards Grid - Sistema responsive */
.cards-grid {
	display: grid;
	gap: 1.5rem;
	padding: 1rem;
}

/* Card personalizada */
.custom-card {
	position: relative;
	border-radius: 1rem;
	overflow: hidden;
	transition: all 0.3s ease;
	background: white;
	/*box-shadow: var(--sombra-card);*/
	display: flex;
	flex-direction: column;
	height: 100%;
	border: none; /* Anula bordes de Bootstrap */
}

.custom-card:hover {
	/*transform: translateY(-5px);*/
	box-shadow: var(--sombra-card-hover);
}

.card-link-wrapper {
	display: block;
	text-decoration: none !important;
	color: inherit;
}

/* Contenedor de imagen responsive */
.card-image-container {
	position: relative;
	width: 100%;
	padding-top: 100%;
	overflow: hidden;
}

.card-image-container img {
	position: absolute;
	top: 0;
	left: 0;
	width: 100%;
	height: 100%;
	object-fit: cover;
	border-radius: 14px;
}

/* Badges y elementos superpuestos */
.card-badge-container {
	position: absolute;
	top: 10px;
	left: 5px;
	display: flex;
	align-items: center;
	gap: 8px;
	z-index: 2;
}

.venue-badge-btn {
	display: inline-block;
	padding: 0.35rem 0.8rem;
	background-color: var(--color-primario);
	color: white !important;
	border-radius: 50px;
	font-size: 0.75rem;
	font-weight: 600;
	text-decoration: none !important;
	box-shadow: none !important;
	transition: all 0.2s ease;
	white-space: nowrap;
	border: none;
}

.heart-icon {
	color: white;
	font-size: 1.2rem;
	text-shadow: 0 0 5px rgba(0,0,0,0.5);
	cursor: pointer;
	transition: all 0.2s ease;
}

.heart-icon.favorited {
	color: red;
}

/* Cuerpo de la card */
.card-body {
	padding: 1rem;
	flex-grow: 1;
	display: flex;
	flex-direction: column;
}

.venue-category {
	color: var(--color-gris-oscuro);
	font-size: 0.7rem;
	letter-spacing: 0.5px;
	margin-bottom: 0.25rem;
	text-transform: uppercase;
	font-weight: 600;
}

.card-title {
	font-weight: bold;
	margin-bottom: 0.25rem;
	font-size: 1rem;
	color: #333;
	line-height: 1.3;
	display: -webkit-box;
	-webkit-line-clamp: 2;
	-webkit-box-orient: vertical;
	overflow: hidden;
}

.venue-city, .venue-subtitle {
	color: var(--color-gris-oscuro);
	font-size: 0.85rem;
	margin-bottom: 0.5rem;
}

.card-price {
	color: #333;
	font-size: 0.9rem;
	font-weight: 500;
	margin-top: auto;
	margin-bottom: 0;
}

/* ============ COMPONENTES ESPECIALES ============ */
/* Tours locales */
.local-tour-card-container {
	position: relative;
	height: 100%;
	padding-top: 100%;
	background-size: cover;
	background-position: center;
	border-radius: 10px;
	overflow: hidden;
	display: flex;
	align-items: flex-end;
}

.local-tour-content-overlay {
	width: 100%;
	padding: 20px;
	background: linear-gradient(to top, rgba(0,0,0,0.8) 0%, transparent 100%);
	text-align: centro;
	z-index: 1;
}

/* Eventos VIP */
.vip-event-card-container {
	position: relative;
	height: 300px;
	background-size: cover;
	background-position: center;
	border-radius: 10px;
	overflow: hidden;
	box-shadow: 0 4px 8px rgba(0,0,0,0.1);
	transition: transform 0.3s ease;
}

.vip-badge {
	position: absolute;
	top: 15px;
	right: 15px;
	background-color: #ffc107;
	color: #333;
	padding: 3px 10px;
	border-radius: 12px;
	font-weight: bold;
	font-size: 0.8rem;
	text-transform: uppercase;
}

/* Botón flotante */
#topBtn {
	display: none;
	position: fixed;
	bottom: 60px;
	right: 30px;
	z-index: 99;
	border: none;
	outline: none;
	background-color: var(--color-primario);
	color: white;
	cursor: pointer;
	padding: 10px 15px;
	border-radius: 10px;
	font-size: 18px;
	transition: background-color 0.3s ease;
}

#topBtn:hover {
	background-color: var(--color-secundario);
}

/* ============ RESPONSIVE DESIGN ============ */
/* Móvil - Scroll horizontal */
@media (max-width: 767.98px) {
	body { 
		padding-top: 0; 
	}

	.cards-grid {
		display: flex !important;
		overflow-x: auto;
		gap: 14px;
		padding: 0 1rem 8px 1rem;
		scroll-snap-type: x mandatory;
		-webkit-overflow-scrolling: touch;
		scrollbar-width: none;
	}
	
	.cards-grid::-webkit-scrollbar { 
		display: none; 
	}

	.custom-card {
		flex: 0 0 85%;
		scroll-snap-align: start;
		margin-bottom: 0 !important;
	}

	.custom-card:hover {
		transform: none;
		box-shadow: var(--sombra-card);
	}

	/* Ajustes para móviles pequeños */
	@media (max-width: 400px) {
		.venue-badge-btn {
			font-size: 0.65rem;
			padding: 0.3rem 0.6rem;
		}
	}
}

/* Tablet + desktop medio: hasta 1535 px → 4 columnas */
@media (min-width: 768px) and (max-width: 1535px) {
	body {
		padding-top: 120px;
	}
	
	.cards-grid {
		grid-template-columns: repeat(4, 1fr);
		padding: 0 30px;
	}
}

/* Desktop grande de verdad: desde 1536 px → 7 columnas */
@media (min-width: 1536px) {
	.cards-grid {
		grid-template-columns: repeat(7, 1fr);
	}
}

/* Ajustes finos para 768–1599 (incluye 125%) */
@media (min-width: 768px) and (max-width: 1599px) {
	.custom-card {
		border-radius: 0.8rem;
	}
		
	.venue-badge-btn {
		font-size: 0.7rem;
		padding: 0.3rem 0.7rem;
	}
		
	.card-body {
		padding: 0.8rem;
	}
}

/* ============ UTILIDADES ADICIONALES ============ */
/* Loading spinner */
.loading-spinner {
	display: none;
	text-align: center;
	padding: 20px;
	grid-column: 1 / -1;
}

/* Category block */
.category-block { 
	position: relative; 
}

.more-btn {
	position: absolute;
	top: 17px;
	right: 30px;
	transform: translateY(-50%);
}


/* Sobreescritura de estilos Bootstrap para consistencia */
.btn-primary {
	background-color: var(--color-primario);
	border-color: var(--color-primario);
}

.btn-primary:hover {
	background-color: #004a8c;
	border-color: #004a8c;
}

.navbar {
	box-shadow: 0 2px 10px rgba(0,0,0,0.1);
}

/* Efectos hover compatibles con Bootstrap */
.venue-badge-btn:hover,
.heart-icon:hover {
	transform: translateY(-2px);
	box-shadow: var(--sombra-boton);
}

/* Título de cualquier sección en thing.php */
.category-block > a.text-dark.text-decoration-none {
  color: var(--color-primario) !important;      /* estado normal */
  text-decoration: none;
}

.category-block > a.text-dark.text-decoration-none:hover,
.category-block > a.text-dark.text-decoration-none:focus {
  color: var(--color-secundario) !important;    /* hover/focus */
}

/* Asegurar que el <h2> herede el color del <a> */
.category-block > a.text-dark.text-decoration-none h2 {
  color: inherit !important;
}

/* Botón "More": fondo primario, hover/active secundario, texto siempre blanco */
.btn.more-btn.btn-primary,
.btn.more-btn.btn-primary:visited {
  background-color: var(--color-primario) !important;
  border-color: var(--color-primario) !important;
  color: #fff !important;
}

/* Hover + focus */
.btn.more-btn.btn-primary:hover,
.btn.more-btn.btn-primary:focus,
.btn.more-btn.btn-primary:focus-visible {
  background-color: var(--color-secundario) !important;
  border-color: var(--color-secundario) !important;
  color: #fff !important;
}

/* Active (click sostenido) y .active */
.btn.more-btn.btn-primary:active,
.btn.more-btn.btn-primary.active,
.show > .btn.more-btn.btn-primary.dropdown-toggle {
  background-color: var(--color-secundario) !important;
  border-color: var(--color-secundario) !important;
  color: #fff !important;
}

/* Si viene de un .btn-check (Bootstrap) */
.btn-check:checked + .btn.more-btn.btn-primary,
.btn-check:active + .btn.more-btn.btn-primary {
  background-color: var(--color-secundario) !important;
  border-color: var(--color-secundario) !important;
  color: #fff !important;
}

/* Asegurar el icono siempre en blanco */
.more-btn i { color: currentColor !important; }

/* Tu posición del botón */
.more-btn {
  position: absolute;
  top: 17px;
  right: 30px;
  transform: translateY(-50%);
}

/* --- FIX unificado "More" (PC + móvil) --- */

/* nunca subrayar el botón, en ningún estado */
.category-block a.more-btn,
.category-block a.more-btn:link,
.category-block a.more-btn:visited,
.category-block a.more-btn:hover,
.category-block a.more-btn:focus,
.category-block a.more-btn:active{
  text-decoration: none !important;
}

/* botón consistente (usa tu .btn.btn-primary) */
.more-btn{
  display: inline-flex;
  align-items: center;
  gap: .35rem;
  font-weight: 600;
  line-height: 1;
  border-radius: .5rem;
  padding: .45rem .85rem;
  font-size: clamp(.90rem, .85rem + .15vw, .98rem);
}

/* icono acompaña al texto */
.more-btn i{ font-size: .85em; line-height: 1; transform: translateY(.5px); }

/* En móviles, ajusta tamaño y posición fina si lo necesitas */
@media (max-width: 767.98px){
  .more-btn{
    top: 20px;               /* pequeño ajuste vertical si el título cambia de altura */
    right: 16px;             /* un poco más hacia adentro */
    transform: translateY(-50%);
    padding: .42rem .78rem;  /* compacto */
  }
}

/* Si tienes reglas genéricas que subrayan <a> dentro de .category-block,
   limita el subrayado solo al título, no al botón */
.category-block > a:not(.more-btn):hover{
  text-decoration: underline;
}
