/* Nota: el fondo global ahora se aplica a `.qv-layout` para cubrir todo el contenido. */

/* Badge / rarity (general) - use auto width, no wrapping */
.card-rarity-badge {
	position: absolute;
	top: 0;
	left: 0;
	display: inline-block;
	padding: 6px 12px;
	width: auto;
	max-width: 100%;
	white-space: nowrap;
	text-align: center;
	font-weight: 700;
	color: white;
	font-size: 0.75rem;
	border-bottom-right-radius: 8px;
	border-top-left-radius: inherit;
	z-index: 5;
	text-transform: uppercase;
}

.rarity-rare .card-rarity-badge {
	background: linear-gradient(180deg, #2fd1ff, #1589b7);
	box-shadow: 0 0 8px rgba(47,209,255,0.6);
}

.rarity-epic .card-rarity-badge {
	background: linear-gradient(180deg, #bf5bff, #7d2ecb);
	box-shadow: 0 0 8px rgba(191,91,255,0.6);
}

.rarity-legendary .card-rarity-badge {
	background: linear-gradient(180deg, #ffae21, #d27a00);
	box-shadow: 0 0 8px rgba(255,174,33,0.6);
}

/* Ensure cards are positioned relative so badges sit correctly */
.card { position: relative; }
/* QuantumVault - estilos globales mínimos para nuevo header y home */

@import url('https://fonts.googleapis.com/css2?family=Montserrat:wght@300;400;600;700&display=swap');

:root {
	--qv-bg: #191c22;
	/* Nueva sugerencia: azul profundo con matiz púrpura para sensación cósmica */
	--qv-header-bg: #0b1230;
	--qv-header-height: 76px; /* altura estimada de header (incluye margen) */
	--qv-panel-height: 60px;  /* altura de la barra de panel (ligeramente reducida) */
	--qv-panel-offset: -6px; /* ajuste fino: mueve la barra ligeramente hacia arriba (usar px) */
	--qv-accent: #66f0ff;
}

html, body {
    height: 100%;
    min-height: 100%;
}

/* Layout wrapper to keep footer at the bottom without position:fixed */
.qv-layout {
    min-height: 100vh;
    display: flex;
    flex-direction: column;
    /* Fondo global: base lineal + foco radial centrado + halo superior.
       Intensidad baja, tonos azul profundo y cian suave, sin imágenes ni fixed. */
    background:
        radial-gradient(800px 420px at 50% 48%, rgba(0,200,255,0.06), rgba(0,200,255,0.02) 30%, rgba(0,200,255,0.00) 60%),
        radial-gradient(1200px 260px at 50% 14%, rgba(102,240,255,0.04), rgba(102,240,255,0.00) 45%),
        linear-gradient(180deg, #040616 0%, #07122a 45%, #020814 100%);
    background-repeat: no-repeat;
    background-size: cover;
    background-position: center;
}

.qv-layout .qv-main {
	/* main area grows to fill available space so footer stays at bottom */
    flex: 1 0 auto;
    background-color: transparent;
}

body {
    margin: 0;

    /* Gradient trasladado a .qv-layout; body mantiene color base */
    background-color: #020814;

    color: #ffffff;
    font-family: 'Montserrat', sans-serif;
}


.qv-header .navbar-brand {
	font-weight: 700;
	letter-spacing: 0.5px;
}

/* Asegurar buen contraste en botones personalizados */
.qv-header .btn[style] {
	font-weight: 700;
	padding: .45rem .85rem;
	border-radius: .35rem;
}

/* Colores accesibles y estados */
.qv-btn-register,
.qv-btn-login {
    position: relative;
    background: #1a1a1a; /* same base as rewards button */
    color: #ffffff;
    font-weight: 600;
    border: none;
    border-radius: 12px;
    cursor: pointer;
    overflow: hidden;
    text-align: center;
    z-index: 1;
    /* keep existing padding/width from header to preserve size/position */
}

.qv-btn-register::before,
.qv-btn-login::before {
    content: "";
    position: absolute;
    inset: 0;
    padding: 3px; /* animated border thickness */
    border-radius: inherit;
    background: linear-gradient(90deg, #ff0099, #00e5ff, #ff0099, #00e5ff);
    background-size: 300% 100%;
    animation: movingBorder 3s linear infinite;
    -webkit-mask: linear-gradient(#000 0 0) content-box, linear-gradient(#000 0 0);
    -webkit-mask-composite: xor;
            mask-composite: exclude;
    pointer-events: none;
}

/* Reusable readonly input style for profile (visually blocked, no focus). */
.qv-input-readonly {
    background-color: rgba(255,255,255,0.03);
    border-color: rgba(255,255,255,0.06);
    color: rgba(255,255,255,0.9);
    cursor: default;
    box-shadow: none;
}
.qv-input-readonly:focus {
    outline: none;
    box-shadow: none;
}

.qv-btn-register:hover,
.qv-btn-login:hover,
.qv-btn-register:focus,
.qv-btn-login:focus {
    transform: translateY(-2px);
    outline: none;
    box-shadow: none;
    color: #ffffff;
}

.qv-btn-register:disabled,
.qv-btn-login:disabled {
    opacity: 0.5;
    cursor: not-allowed;
}

.qv-btn-register:disabled::before,
.qv-btn-login:disabled::before {
    animation: none;
    background: #555;
}

.qv-btn-logout {
	/* kept as legacy if used elsewhere */
	background: #dc2626;
	border-color: #dc2626;
	color: #ffffff;
}
.qv-btn-logout-alt {
	background: transparent;
	color: #e8ecff;
	border: 1px solid rgba(255,255,255,0.06);
	padding: .35rem .6rem;
	border-radius: .35rem;
	font-weight: 600;
	transition: all .18s ease;
}
.qv-btn-logout-alt span[aria-hidden] { font-size: 1.05rem; line-height:1; }
.qv-btn-logout-alt:hover,
.qv-btn-logout-alt:focus {
	transform: translateY(-1px);
	/* hover azul eléctrico */
	box-shadow: 0 0 8px rgba(102,240,255,0.4);
	border-color: rgba(102,240,255,0.5);
	color: #ffb867;
	text-shadow: 0 0 6px rgba(255,184,103,0.35);
	outline: none;
}

/* Quitar subrayado al pasar el mouse sobre el enlace Perfil (btn estilo logout-alt) */
.qv-header a.qv-btn-logout-alt:hover,
.qv-header a.qv-btn-logout-alt:focus {
	text-decoration: none;
}

/* (Logout button keeps its original visual rules; no extra header pill copied here.) */

/* Search box in header */
.qv-search .form-control {
	background: rgba(255,255,255,0.02);
	border: 1px solid rgba(102,240,255,0.1);
	color: #e8ecff;
}
.qv-search .form-control:focus {
	background: rgba(255,255,255,0.04);
	border-color: rgba(102,240,255,0.25);
	box-shadow: 0 0 8px rgba(102,240,255,0.2);
	color: #e8ecff;
}
.qv-search .btn-outline-light {
	border-color: rgba(102,240,255,0.2);
	color: #e8ecff;
}
.qv-search .btn-outline-light:hover {
	border-color: rgba(102,240,255,0.5);
	color: #ffb867;
	background: rgba(102,240,255,0.08);
}

/* Items grid (cards like marketplaces) */
.items-grid { display:grid; grid-template-columns: repeat(auto-fill, minmax(200px,1fr)); gap:18px; }
.item-card { overflow:hidden; border-radius:10px; transition:transform .18s ease, box-shadow .18s ease; position:relative; }
.item-card .media { height:160px; background:linear-gradient(180deg, rgba(255,255,255,0.02), rgba(0,0,0,0.06)); display:flex; align-items:center; justify-content:center; }
.item-card .meta { padding:12px; background:transparent; }
.item-card .price { position:absolute; top:8px; right:8px; background:rgba(0,0,0,0.45); padding:6px 8px; border-radius:6px; font-weight:700; }
.item-card:hover { transform:translateY(-6px); box-shadow: 0 18px 40px rgba(59,130,246,0.08); }

/* Panel (dashboard) cards - Futurista, estilo gaming */
.panel-grid { display:grid; grid-template-columns: repeat(auto-fill, minmax(220px,1fr)); gap:20px; }
.panel-card {
	background: linear-gradient(180deg, rgba(255,255,255,0.02), rgba(0,0,0,0.03));
	border: 1px solid rgba(102,240,255,0.04);
	border-radius: 12px;
	padding: 18px;
	position: relative;
	overflow: hidden;
	transition: transform .18s ease, box-shadow .18s ease;
	display: flex;
	flex-direction: column;
	height: 100%;
	min-height: 220px; /* altura mínima para dar presencia a las tarjetas */
}
.qv-panel-card {
	/* Compatible con markup clásico: .card.bg-secondary.text-light.shadow */
	background: linear-gradient(180deg, rgba(255,255,255,0.02), rgba(0,0,0,0.03));
	border: 1px solid rgba(102,240,255,0.04);
	border-radius: 12px;
	padding: 0; /* usamos .card-body para padding */
	position: relative;
	overflow: hidden;
	transition: transform .18s ease, box-shadow .18s ease;
	display: flex;
	flex-direction: column;
	aspect-ratio: 1 / 1; /* mantener formato cuadrado */
	min-height: 220px; /* mínimo para mayor presencia */
}
.qv-panel-card .card-body {
	padding: 18px;
	display: flex;
	flex-direction: column;
}
.qv-panel-card .card-title { font-weight: 800; color: #ffffff; letter-spacing: 0.6px; margin-bottom:6px; }
.qv-panel-card .card-text { color: rgba(255,255,255,0.7); font-size: .95rem; margin-bottom: 12px; }
.qv-panel-card .card-cta { margin-top: auto; }
.qv-panel-card:hover { transform: translateY(-8px); box-shadow: 0 22px 50px rgba(102,240,255,0.06); }

.panel-card .pc-title { font-weight: 800; color: #ffffff; letter-spacing: 0.6px; margin-bottom:6px; }
.panel-card .pc-desc { color: rgba(255,255,255,0.7); font-size: .95rem; }
.panel-card .pc-cta { margin-top: auto; }
.panel-card .pc-icon { position: absolute; right: 14px; top: 12px; font-size: 48px; opacity: 0.10; }
.panel-card:hover { transform: translateY(-8px); box-shadow: 0 22px 50px rgba(102,240,255,0.06); }

/* Consolidated header styles: main header + panel
   - .qv-header (barra principal): pegada al top, sin margen superior
   - .qv-header-panel (barra secundaria/panel): mantiene sus estilos y margen (12px desktop, 8px mobile)
*/
.qv-header {
    background-color: var(--qv-bg-alt);
    padding: 15px 25px;
    border-bottom: 1px solid var(--qv-border);
    margin-top: 0;
    position: relative;
    top: 0;
}

.qv-header-panel {
    width: 100%;
    padding: 18px 28px;
    margin-top: 2rem; /* separación en escritorio */
    margin-bottom: 30px;
    border-radius: 18px;
    background: linear-gradient(135deg, rgba(10, 20, 40, 0.75), rgba(30, 10, 60, 0.75));
    backdrop-filter: blur(10px);
    border: 1.5px solid rgba(102, 240, 255, 0.35);
    display: flex;
    justify-content: space-between;
    align-items: center;
    gap: 30px;
    box-shadow: 0 0 24px rgba(102, 240, 255, 0.30);
    color: white;
    position: relative;
    transition: box-shadow 0.3s ease, transform 0.2s ease;
}

.qv-header-panel::before {
    content: '';
    position: absolute;
    top: 0;
    left: 12%;
    right: 12%;
    height: 1px;
    background: linear-gradient(90deg, transparent 0%, rgba(102, 240, 255, 0.15) 25%, rgba(102, 240, 255, 0.20) 50%, rgba(102, 240, 255, 0.15) 75%, transparent 100%);
    border-radius: 18px 18px 0 0;
    pointer-events: none;
}

.qv-header-panel:hover {
    box-shadow: 0 0 28px rgba(102, 240, 255, 0.40);
    transform: translateY(-2px);
}

.qv-header-section-title {
    font-size: 2.1rem;
    font-weight: 800;
    letter-spacing: 0.04em;
}

.qv-header-section-title .qv-section-title-text {
    display: inline-block;
    background: linear-gradient(180deg, #ffffff 0%, #f5f5f5 40%, #e8e8e8 100%);
    -webkit-background-clip: text;
    -webkit-text-fill-color: transparent;
    background-clip: text;
    font-weight: 800;
    color: #ffffff;
    text-shadow: 0 0 8px rgba(102, 240, 255, 0.50);
    transition: text-shadow 0.3s ease;
}

.qv-header-panel:hover .qv-header-section-title .qv-section-title-text {
    text-shadow: 0 0 12px rgba(102, 240, 255, 0.70);
}

.qv-header-collector {
    display: flex;
    align-items: center;
    gap: 10px;
    font-size: 1.1rem;
    color: #ffffff;
}

.qv-header-collector i { color: #66f0ff; font-size: 1.3rem; }

@media (max-width: 767.98px) {
    .qv-header-panel { padding-top: 0; }
}

@media (max-width: 576px) {
    .qv-header-panel {
        flex-direction: column;
        gap: 16px;
        padding: 18px 20px;
        margin-top: 1.5rem; /* mantener separación menor en móviles */
    }

    .qv-header-section-title { font-size: 1.6rem; width: 100%; justify-content: center; }

    .qv-header-collector,
    .qv-header-cargas { width: 100%; justify-content: center; }
}

.qv-user-info {
    display: flex;
    align-items: center;
    gap: 6px;
}

.qv-user-label {
    color: #99b3cc;
    font-weight: 600;
    letter-spacing: 0.02em;
}

.qv-user-name {
    color: #66f0ff;
    font-weight: 600;
    letter-spacing: 0.02em;
}

.qv-header-collector:hover .qv-user-name {
    color: #ffffff;
}
    /* Ensure .qv-user-name keeps the same color in all interaction states.
       NOTE: using `pointer-events` on the child alone cannot stop a parent
       selector like `.qv-header-collector:hover .qv-user-name` from applying.
       The safe CSS approach below fixes the color by targeting the same
       specificity selectors without using `!important` or changing HTML/JS.
    */
    .qv-user-name { color: #66f0ff; }
    .qv-user-name:hover,
    .qv-user-name:focus,
    .qv-user-name:active { color: #66f0ff; }

    /* Match parent hover selectors to keep color stable when parent is hovered */
    .qv-header-collector:hover .qv-user-name,
    .qv-header-collector:focus .qv-user-name,
    .qv-header-collector:active .qv-user-name { color: #66f0ff; }

.qv-header-cargas-label {
    color: #99b3cc;
    font-weight: 600;
    letter-spacing: 0.02em;
    font-size: 1.1rem;
}

.qv-header-cargas-value {
    color: #66f0ff;
    font-weight: 600;
    text-shadow: 0 0 6px rgba(102, 240, 255, 0.50);
    letter-spacing: 0.02em;
    font-size: 1.1rem;
}

.qv-header-cargas i {
    font-size: 1.5rem;
    color: #ffd38a;
}

.qv-cargas-buy {
    padding: 6px 15px;
    border: none;
    background: linear-gradient(135deg, #6a11cb 0%, #2575fc 100%);
    color: #ffffff;
    border-radius: 6px;
    font-weight: 600;
    box-shadow: 0 4px 12px rgba(106,17,203,0.35), 0 2px 6px rgba(0,0,0,0.25);
    transition: all .3s ease;
    cursor: pointer;
    position: relative;
    overflow: hidden;
}

.qv-cargas-buy::before {
    content: '';
    position: absolute;
    top: 0;
    left: -100%;
    width: 100%;
    height: 100%;
    background: linear-gradient(90deg, transparent, rgba(255,255,255,0.3), transparent);
    transition: left 0.5s ease;
}

.qv-cargas-buy:hover::before {
    left: 100%;
}

.qv-cargas-buy:hover {
    background: linear-gradient(135deg, #7c1fd4 0%, #3a88ff 100%);
    box-shadow: 0 6px 18px rgba(106,17,203,0.55), 0 3px 10px rgba(37,117,252,0.35);
    transform: translateY(-2px);
}

.qv-cargas-buy:disabled {
    opacity: 0.5;
    cursor: not-allowed;
    transform: none;
}

.qv-cargas-buy:disabled:hover {
    background: linear-gradient(135deg, #6a11cb 0%, #2575fc 100%);
    box-shadow: 0 4px 12px rgba(106,17,203,0.35), 0 2px 6px rgba(0,0,0,0.25);
    transform: none;
}

/* === PANEL CARDS (LOS 4 CUADROS GRANDES) === */
.panel-box {
	width: 100%;
	height: 220px;
	border-radius: 12px;
	overflow: hidden;
	position: relative;
	cursor: pointer;
	transition: transform 0.2s ease;
	box-shadow: 0 4px 12px rgba(0, 0, 0, 0.3);
}

.panel-box:hover {
	transform: scale(1.02);
	box-shadow: 0 6px 20px rgba(0, 150, 255, 0.4);
}

.panel-box-image {
	width: 100%;
	height: 100%;
	position: relative;
}

.panel-box-image img {
	width: 100%;
	height: 100%;
	object-fit: cover;
	display: block;
}

.panel-box-title {
	position: absolute;
	bottom: 0;
	width: 100%;
	background: rgba(0,0,0,0.55);
	color: #fff;
	font-size: 16px;
	font-weight: 600;
	text-align: center;
	padding: 10px 0;
}

/* Responsive para móviles - MEJORADO */
@media (max-width: 576px) {
    .qv-header-panel {
        flex-direction: column;
        gap: 16px;
        padding: 18px 20px;
        margin-top: 8px; /* mantener separación menor en móviles */
    }
    
    .qv-header-section-title {
        font-size: 1.6rem;
        width: 100%;
        justify-content: center;
    }
    
    .qv-header-collector,
    .qv-header-cargas {
        width: 100%;
        justify-content: center;
    }
}

@media (max-width: 576px) {
    .panel-card, .qv-panel-card { min-height: 180px; }
}

/* Badge / rarity */
.rarity-common{ border-left:4px solid rgba(255,255,255,0.04); }
/* .rarity-rare{ border-left:4px solid #3b82f6; } */
.rarity-epic{ border-left:4px solid #7b38ed; }
.rarity-legend{ border-left:4px solid #ffb86b; }

/* Footer spacing guard so fixed header doesn't overlap */
main.container { padding-bottom: 48px; background-color: transparent; }

/* Keyboard focus: subtle glow */
.qv-header .nav-link:focus {
	outline: none;
	box-shadow: 0 8px 22px rgba(102,240,255,0.05);
}

/* Quitar subrayado del brand link (si algún estilo por defecto lo impone) */
.qv-header .navbar-brand,
.qv-header .navbar-brand:hover,
.qv-header .navbar-brand:focus {
    text-decoration: none !important;
}

/* Menu items: clean, text-only (keep Bootstrap structure `.nav-link`) */
.qv-header .nav-link {
    position: relative;
    transition: transform .18s ease, color .18s ease;
    color: #ffffff; /* default: blanco */
    background: transparent;
    padding: .35rem .6rem;
    font-weight: 600;
    text-decoration: none;
    will-change: transform, color;
    transform: translateZ(0);
    backface-visibility: hidden;
    border: none;
    border-radius: 0;
    box-shadow: none;
    text-shadow: none;
}

.qv-header .nav-link:hover,
.qv-header .nav-link:focus {
    transform: translateY(-2px) translateZ(0);
    outline: none;
    border-color: transparent;
    box-shadow: none;
    text-shadow: none;
    color: #ffb867; /* hover color requested */
}

/* Make spacing between nav items clearer */
.qv-header .nav-item { margin: 0 6px; }

/* Active: strong glow only on current page */
.qv-header .nav-link.active {
    color: #ffb867;
    border-color: transparent;
    box-shadow: none;
    text-shadow: none;
    font-weight: 700;
}

    /* More specific selectors to ensure active color wins over hover rules */
    .qv-header .navbar-nav > .nav-item > a.nav-link.active,
    .qv-header .navbar-nav > .nav-item > a.nav-link.active:hover,
    .qv-header .navbar-nav > .nav-item > a.nav-link.active:focus {
        color: #ffb867;
        background: transparent;
        border: none;
        box-shadow: none;
        text-shadow: none;
    }

    /* Remove redundant selector for text-light — nav items no longer use that class */

    /* Toggler contrast */

/* Ensure active nav link keeps the highlight color even on hover/focus */
.qv-header .nav-link.active,
.qv-header .nav-link.active:hover,
.qv-header .nav-link.active:focus {
    color: #ffb867;
}

/* Toggler contrast */
.qv-header .navbar-toggler {
	border-color: rgba(102,240,255,0.2);
}
.qv-header .navbar-toggler:focus {
	box-shadow: 0 0 0 3px rgba(102,240,255,0.15);
}
.qv-header .navbar-toggler-icon {
	filter: brightness(1.2);
}

/* Dropdown menus */
.qv-header .dropdown-menu {
	background: #0d111c;
	border: 1px solid rgba(102,240,255,0.15);
	box-shadow: 0 8px 24px rgba(0,0,0,0.4);
	border-radius: 8px;
	padding: 8px 0;
	margin-top: 8px;
}
.qv-header .dropdown-item {
	color: #e8ecff;
	padding: 8px 16px;
	transition: all .18s ease;
	font-weight: 500;
}
.qv-header .dropdown-item:hover,
.qv-header .dropdown-item:focus {
	background: rgba(102,240,255,0.12);
	color: #ffb867;
	text-shadow: 0 0 6px rgba(102,240,255,0.3);
	outline: none;
}
.qv-header .dropdown-divider {
	border-top: 1px solid rgba(102,240,255,0.1);
}

/* Hero placeholder */
.hero img { max-width: 100%; border-radius: 6px; }

/* Ajustes responsivos: reducir padding-top en pantallas pequeñas */
@media (max-width: 576px) {
    body { padding-top: 0; }
}

/* Footer global (layout) */
.qv-footer {
	color: #fff;
	background: transparent; /* que se vea el fondo global */
	padding: 15px 0; /* espacio vertical reducido */
	border-top: 1px solid rgba(255,255,255,0.08);
}
.card-futuristic {
	position: relative;
	border-radius: 16px;
	overflow: hidden;
	/* fondo de la sección */
	background-size: cover;
	background-position: center;
	background-repeat: no-repeat;
	border-radius: inherit; /* garantizar coherencia con la card */
}

/* Borde externo animado */
.card-futuristic::before {
	content: "";
	position: absolute;
	inset: 0; /* cover whole element */
	padding: 2px; /* border thickness (reducido) */
	border-radius: inherit;
	background: linear-gradient(
		120deg,
		#00ecff,
		#6c5ce7,
		#00ff9d,
		#0077ff,
		#00ecff
	);
	background-size: 400% 400%;
	/* mask the center so only the border band shows */
	-webkit-mask: linear-gradient(#000 0 0) content-box, linear-gradient(#000 0 0);
	-webkit-mask-composite: xor;
	mask-composite: exclude;
	pointer-events: none;
	animation: rgbBorder 3.2s linear infinite;
	z-index: 2;
}


/* Contenido por encima */
.card-futuristic > * {
	position: relative;
	z-index: 3;
}

@keyframes rgbBorder {
	0%   { background-position: 0% 50%; }
	50%  { background-position: 100% 50%; }
	100% { background-position: 0% 50%; }
}

/* Section-specific background images (place image files in /assets/images/sections/) */
.card-futuristic.section-rewards   { background-image: url('../images/sections/rewards.webp'); }
.card-futuristic.section-boxes     { background-image: url('../images/sections/boxes.webp'); }
.card-futuristic.section-inventory { background-image: url('../images/sections/inventory.webp'); }
.card-futuristic.section-showcase  { background-image: url('../images/sections/showcase.webp'); }

/* Fallback: subtle dark overlay on very small screens to keep text readable */
@media (max-width: 576px) {
	.card-futuristic .card-body { background: linear-gradient(180deg, rgba(0,0,0,0.35), rgba(0,0,0,0.18)); }
}

/* Card title bar (superpuesta) */
.card-futuristic .card-title-bar {
	position: absolute;
	top: 12px;
	left: 12px;
	right: 12px;
	height: 64px; /* ampliada para dos líneas */
	padding: 8px 12px;
	background: rgba(40, 30, 80, 0.65);
	backdrop-filter: blur(4px);
	display: flex;
	align-items: center;
	justify-content: center;
	text-align: center;
	color: #fff;
	z-index: 6;
	border-radius: 10px;
}

/* Ensure card content doesn't sit under the title bar (aumentado) */
.card-futuristic .card-body {
	padding-top: 86px; /* espacio para la barra más alta + padding interior */
}

.card-futuristic .card-title-wrapper {
	display:flex;
	flex-direction:column;
	align-items:center;
	gap:2px;
}
.card-futuristic .card-title {
	font-weight:700;
	font-size:1.02rem;
}
.card-futuristic .card-subtitle {
	font-size:0.86rem;
	opacity:0.92;
}

/* Nuevo estilo de botones de acceso */
.card-button {
	background: linear-gradient(120deg, #0bd0ff, #7966ff);
	border: 1px solid rgba(255,255,255,0.3);
	border-radius: 8px;
	color: #fff !important;
	font-weight: 600;
	padding: 10px 16px;
	transition: 0.25s ease;
}
.card-button:hover {
	box-shadow: 0 0 12px rgba(0, 200, 255, 0.6);
	filter: brightness(1.18);
}
/* Remove underline on buttons */
.card-button,
.card-button:hover {
	text-decoration: none !important;
}

/* Increase minimum height so the enlarged title bar doesn't crowd content */
.card-futuristic {
	min-height: 360px;
}
.qv-footer .qv-footer-inner {
	display:flex;
	align-items:center;
	justify-content:space-between;
	gap:12px;
}
.qv-footer .qv-footer-link { color: #fff; opacity: 0.92; text-decoration: none; }
.qv-footer .qv-footer-link:hover { color: var(--qv-accent); text-decoration: none; }
.qv-footer .qv-footer-brand .navbar-brand { font-weight:700; color:#fff; }

/* Footer brand: quitar subrayado y añadir icono similar al header */
/* Clases específicas para el modal #marketModal (sin !important) */
#marketModal .market-modal-close,
#marketModal .market-modal-close:focus,
#marketModal .market-modal-close:hover {
    color: #fff;                     /* X en blanco */
    filter: invert(100%);            /* en caso de icono SVG interno */
    background-color: transparent;   /* quitar fondo */
    border: none;                    /* quitar borde */
    padding: 0;                      /* ajuste */
    width: 1.5rem;                   /* tamaño */
    height: 1.5rem;                  /* tamaño */
    opacity: 1;                      /* visibilidad */
    cursor: pointer;                 /* comportamiento */
    display: inline-flex;
    align-items: center;
    justify-content: center;
}

#marketModal .market-modal-close {
    position: absolute;              /* esquina superior derecha */
    top: 1rem;
    right: 1rem;
    background-size: 0.6rem 0.6rem;
}

/* Forzar color en SVG/path/pseudo-elementos dentro del botón (scoped al id) */
#marketModal .market-modal-close svg,
#marketModal .market-modal-close path,
#marketModal .market-modal-close::before,
#marketModal .market-modal-close::after {
    fill: #fff;
    color: #fff;
}
/* Botón de cierre específico para #deleteModal (scoped) */
#deleteModal .delete-modal-close,
#deleteModal .delete-modal-close:focus,
#deleteModal .delete-modal-close:hover {
    position: absolute;
    top: 1rem;
    right: 1rem;
    width: 1.5rem;
    height: 1.5rem;
    background-color: transparent;
    border: none;
    padding: 0;
    filter: invert(100%);
    cursor: pointer;
    display: inline-flex;
    align-items: center;
    justify-content: center;
}

#deleteModal .delete-modal-close svg,
#deleteModal .delete-modal-close path,
#deleteModal .delete-modal-close::before,
#deleteModal .delete-modal-close::after {
    fill: #fff;
    color: #fff;
}
.qv-footer .qv-footer-brand .navbar-brand,
.qv-footer .qv-footer-brand .navbar-brand:hover,
.qv-footer .qv-footer-brand .navbar-brand:focus {
	text-decoration: none !important;
}

/* Igualar apariencia de #marketModal a #qvLoginModal / #qvRegisterModal
   usando clases específicas (sin !important). */
#marketModal .market-modal-content {
    background: linear-gradient(135deg, rgba(16, 20, 30, 0.95), rgba(26, 32, 48, 0.95));
    border: 1px solid rgba(130, 170, 255, 0.35);
    border-radius: 1rem;
    box-shadow: 0 12px 32px rgba(0, 0, 0, 0.35);
    color: #e8ecff;
    overflow: hidden;
    --bs-bg-opacity: 1;
    background-color: rgba(var(--bs-dark-rgb),var(--bs-bg-opacity))!important;
}

/* Header / Body / Footer clases específicas que imitan paddings/bordes del resto */
#marketModal .market-modal-header {
    padding: 0.75rem 1rem; /* similar a otros modales */
    border-bottom: 1px solid rgba(255,255,255,0.06);
    display: flex;
    align-items: center;
    justify-content: space-between;
}

/* Título específico para #marketModal (evita estilos inline) */
#marketModal .market-modal-title {
    color: #ffffff;
    font-weight: 800;
    font-size: 1.125rem;
    letter-spacing: .2px;
}

#marketModal .market-modal-body {
    padding: 1rem;
    color: inherit;
}

#marketModal .market-modal-footer {
    padding: 0.75rem 1rem;
    border-top: 1px solid rgba(255,255,255,0.06);
    display: flex;
    justify-content: space-between;
    align-items: center;
}
.qv-footer .qv-footer-brand .navbar-brand::after {
	content: '';
	display: inline-block;
	width: 140px;
	height: 100px;
	margin-left: 8px;
	margin-top: -25px;
	margin-bottom: -25px;
	background-image: url('../images/logo.png');
	background-repeat: no-repeat;
	background-position: center;
	background-size: contain;
	vertical-align: middle;
	border-radius: 4px;
	box-shadow: 0 6px 14px rgba(0,0,0,0.08);
}
/* Desktop: centrar el footer (elementos alineados en el medio) */
@media (min-width: 768px) {
	.qv-footer .qv-footer-inner { justify-content: center; }
	.qv-footer .qv-footer-meta { margin-left: 12px; }
}

/* Mobile: stack vertical */
@media (max-width: 767px) {
	.qv-footer .qv-footer-inner { flex-direction: column; align-items: center; text-align:center; }
	.qv-footer .qv-footer-links { order: 2; }
	.qv-footer .qv-footer-meta { order: 3; }
	.qv-footer .qv-footer-brand { order: 1; }
}

/* ------------------------------
   Estilos específicos para /boxes
   ------------------------------ */
.box-card {
	background: #121826;
	border-radius: 12px;
	border: 1px solid rgba(255,255,255,0.06);
	padding: 0;
	position: relative;
	overflow: hidden;
	box-shadow: 0 6px 20px rgba(0,0,0,0.45);
}

.box-card .card-body {
	background: rgba(255,255,255,0.02);
	border-radius: 10px;
	padding: 18px;
	padding-top: 60px; /* espacio superior para que el contenido no quede bajo el estandarte */
	backdrop-filter: blur(3px);
	box-shadow: inset 0 0 12px rgba(0,0,0,0.35);
	position: relative;
}

/* badge (estandarte) - esquina superior izquierda (específico para box-card) */
.box-card .card-rarity-badge {
	position: absolute;
	top: 0;
	left: 0;
	display: inline-block;
	padding: 6px 12px;
	width: auto;
	max-width: 100%;
	white-space: nowrap;
	text-align: center;
	font-weight: 700;
	color: #fff;
	font-size: 0.78rem;
	border-bottom-right-radius: 8px;
	border-top-left-radius: inherit;
	z-index: 6;
	text-transform: uppercase;
	letter-spacing: 0.6px;
}

.rarity-rare .card-rarity-badge {
	background: linear-gradient(180deg, #2fd1ff, #1589b7);
	box-shadow: 0 0 10px rgba(47,209,255,0.45);
}
.rarity-epic .card-rarity-badge {
	background: linear-gradient(180deg, #bf5bff, #7d2ecb);
	box-shadow: 0 0 10px rgba(191,91,255,0.45);
}
.rarity-legendary .card-rarity-badge {
	background: linear-gradient(180deg, #ffae21, #d27a00);
	box-shadow: 0 0 10px rgba(255,174,33,0.45);
}

/* hide legacy img if present */
.box-card img.card-img-top { display: none; }

/* Inner text styles for box cards */
.box-card .card-body p,
.box-card .card-body li {
	color: #d6e2ff;
	font-size: 0.92rem;
	letter-spacing: 0.3px;
}

.box-card .card-body h5 {
	color: #ffffff;
	font-weight: 700;
	text-shadow: 0 0 8px rgba(255,255,255,0.4);
}

.box-card .list-group-item {
	background: transparent;
	border: 1px solid rgba(255,255,255,0.08);
	border-radius: 6px;
	margin-bottom: 4px;
	padding: 6px 10px;
}

.custom-list-group.mb-2 {
    background: rgba(0,0,0,0.25);
    border-radius: 12px;
    padding: 0;
    overflow: hidden;
    box-shadow: 0 4px 12px rgba(0,0,0,0.4);
}

.custom-list-group.mb-2 li {
    background: rgba(255,255,255,0.03);
    color: #fff8dc;
    border-bottom: 1px solid rgba(255,255,255,0.1);
    display: flex;
    justify-content: space-between;
    align-items: center;
    padding: 10px 14px;
    font-weight: 500;
    transition: background 0.3s ease, transform 0.2s ease;
}

.custom-list-group.mb-2 li:hover {
    background: rgba(255, 255, 255, 0.15);
    transform: translateY(-1px);
}

.custom-list-group.mb-2 li .badge {
    background: #fff;
    color: #111;
    font-weight: 600;
}

.box-card .card-body .badge {
	background: linear-gradient(180deg,#0bd0ff,#7966ff);
	padding: 4px 8px;
	font-weight: 600;
	border-radius: 6px;
}

/* Costo - badge premium dentro de la tarjeta */
.box-card .box-cost {
	display: inline-block;
	/* default fallback gradient (overridden per-rareza abajo) */
	background: linear-gradient(120deg, #ff9a2e, #ffd75a);
	padding: 6px 14px;
	border-radius: 8px;
	font-weight: 700;
	color: #111;
	box-shadow: 0 0 12px rgba(255,160,50,0.35);
	letter-spacing: 0.5px;
	margin-bottom: 10px;
	text-transform: uppercase;
}
.box-card.rarity-rare .box-cost {
	background: linear-gradient(180deg, #2fd1ff, #1589b7);
	color: #fff;
	box-shadow: 0 0 12px rgba(47,209,255,0.18);
}
.box-card.rarity-epic .box-cost {
	background: linear-gradient(180deg, #bf5bff, #7d2ecb);
	color: #fff;
	box-shadow: 0 0 12px rgba(191,91,255,0.18);
}
.box-card.rarity-legendary .box-cost {
	background: linear-gradient(180deg, #ffae21, #d27a00);
	color: #111;
	box-shadow: 0 0 12px rgba(255,174,33,0.18);
}

/* Fix stray/malformed CSS and ensure box meta layout */
.box-card .box-card-meta { display: flex; flex-direction: column; justify-content: center; gap: 4px; }
.box-card-meta h6 { 
	margin: 0; 
	color: #ffffff; 
	font-size: 0.98rem;
	font-weight: 700;
}
.box-card-meta .item-date {
	color: #ffffff; /* fecha en blanco */
	opacity: 0.92;
	font-size: 0.86rem;
}

.box-card .box-card-body {
	min-height: 72px; /* menos alto para reducir espacio vertical */
	padding-top: 12px;
}

@media (max-width: 576px) {
	.box-card-media img { height: 140px; }
	.box-card-meta { min-height: 52px; }
}

/* Delete icon button positioned bottom-right of the card */
.box-card { position: relative; }
.box-card .delete-form { position: absolute; right: 10px; bottom: 10px; margin: 0; }
.box-card .btn-delete {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 36px;
	height: 36px;
	border-radius: 8px;
	background: rgba(220,53,69,0.95);
	border: none;
	color: #fff;
	padding: 0;
}
.box-card .btn-delete:hover { filter: brightness(1.05); box-shadow: 0 8px 20px rgba(220,53,69,0.18); }

/* Showcase form positioned bottom-left */
.box-card .showcase-form { display: inline-block; }
.box-card-body .showcase-form { position: relative; }

/* Make search input background white and readable */
.inventory-search { background: #ffffff !important; color: #000000 !important; }
.inventory-search::placeholder { color: #555 !important; }
.inventory-search:focus {
    background-color: #ffffff !important;
    color: #000000 !important;
    border-color: #6c63ff; /* opcional, color del borde en focus */
    box-shadow: none !important; /* evita el brillo azul de Bootstrap */
}
/* Botones de filtro/búsqueda minimalistas */
.inv-btn {
    background: transparent !important;
    border: 1px solid rgba(255, 255, 255, 0.9) !important;
    color: #ffffff !important;
    padding: 0.25rem 0.6rem;
    border-radius: 4px;
    line-height: 1.2;
}
.inv-btn:hover,
.inv-btn:focus {
    border-color: rgba(255, 255, 255, 0.7) !important;
    color: rgba(255, 255, 255, 0.85) !important;
    background: transparent !important;
    text-decoration: none !important;
    box-shadow: none !important;
}
.inv-btn:active {
    background: transparent !important;
    border-color: rgba(255, 255, 255, 0.6) !important;
    color: rgba(255, 255, 255, 0.8) !important;
}
/* ======================================
   Estilos para Inventario - Box Card
   ====================================== */

/* Animación de resplandor para legendarios */
@keyframes legendary-glow {
    0% {
        box-shadow: 0 0 0 0 rgba(255, 174, 33, 0.6), inset 0 0 0 0 rgba(255, 174, 33, 0);
    }
    50% {
        box-shadow: 0 0 20px 4px rgba(255, 174, 33, 0.4), inset 0 0 20px 0 rgba(255, 174, 33, 0.05);
    }
    100% {
        box-shadow: 0 0 0 0 rgba(255, 174, 33, 0), inset 0 0 0 0 rgba(255, 174, 33, 0);
    }
}

.inventory .box-card {
    background-color: rgba(0, 0, 0, 0.85);
    border-radius: 8px;
    overflow: hidden;
    display: flex;
    flex-direction: column;
    height: 100%;
    border: 1px solid rgba(255, 255, 255, 0.1);
    transition: transform 0.2s, box-shadow 0.2s;
    position: relative;
}

.inventory .box-card:hover {
    transform: translateY(-2px);
    box-shadow: 0 8px 16px rgba(0, 0, 0, 0.3);
}

/* Animación de resplandor para ítems legendarios */
.inventory .box-card.rarity-legendary {
    /* Mantiene el borde dorado constante */
    border: 1px solid rgba(255, 174, 33, 0.25);
    /* Aplica animación de pulso en el glow externo */
    animation: legendary-glow 3s ease-in-out infinite;
}

/* Borde delgado y discreto para ítems épicos */
.inventory .box-card.rarity-epic {
    /* Borde púrpura constante, delgado (1px) y discreto */
    border: 1px solid rgba(191, 91, 255, 0.25);
    /* Sin animación: el borde es fijo y elegante */
}

/* Bandera de rareza - Pegada al borde superior izquierdo */
.inventory .box-card .card-rarity-badge {
    position: absolute;
    top: 0;
    left: 0;
    z-index: 20;
    padding: 0.35rem 0.6rem;
    border-radius: 0 0 6px 0;
    font-size: 0.75rem;
    font-weight: 600;
    text-transform: uppercase;
    margin: 0;
}

/* Mantener colores de rareza en bandera */
.inventory .box-card.rarity-rare .card-rarity-badge {
    background: linear-gradient(180deg, #2fd1ff, #1589b7);
    box-shadow: 0 0 8px rgba(47, 209, 255, 0.6);
    color: #fff;
}

.inventory .box-card.rarity-epic .card-rarity-badge {
    background: linear-gradient(180deg, #bf5bff, #7d2ecb);
    box-shadow: 0 0 8px rgba(191, 91, 255, 0.6);
    color: #fff;
}

.inventory .box-card.rarity-legendary .card-rarity-badge {
    background: linear-gradient(180deg, #ffae21, #d27a00);
    box-shadow: 0 0 8px rgba(255, 174, 33, 0.6);
    color: #111;
}

.inventory .box-card.rarity-common .card-rarity-badge {
    background: rgba(200, 200, 200, 0.8);
    box-shadow: 0 0 8px rgba(200, 200, 200, 0.4);
    color: #111;
}

/* Contenedor de imagen - Fijo, sin crecer */
.inventory .box-card .card-img-wrapper {
    height: 220px;
    width: 100%;
    display: flex;
    align-items: center;
    justify-content: center;
    background: linear-gradient(135deg, rgba(0, 0, 0, 0.3), rgba(0, 0, 0, 0.1));
    overflow: hidden;
    flex-shrink: 0;
    position: relative;
}

.inventory .box-card .card-img-wrapper img {
    width: 100%;
    height: 100%;
    object-fit: contain;
    display: block;
}

/* Línea divisora elegante entre imagen y contenido */
.inventory .box-card .card-img-wrapper::after {
    content: '';
    position: absolute;
    bottom: 0;
    left: 0;
    right: 0;
    height: 1px;
    background: linear-gradient(
        90deg,
        transparent 0%,
        rgba(255, 255, 255, 0.2) 25%,
        rgba(255, 255, 255, 0.3) 50%,
        rgba(255, 255, 255, 0.2) 75%,
        transparent 100%
    );
}

/* Contenedor de contenido - Crece dinámicamente */
.inventory .box-card .card-content {
    padding: 0.75rem;
    display: flex;
    flex-direction: column;
    flex: 1;
    overflow: hidden;
}

/* Título del item */
.inventory .box-card .item-title {
    font-weight: 600;
    color: #ffffff;
    margin: 0 0 0.25rem 0;
    font-size: 0.9rem;
    word-break: break-word;
}

/* Fecha de obtención */
.inventory .box-card .item-date {
    font-size: 0.75rem;
    color: #b0b0b0;
    margin: 0 0 0.4rem 0;
    display: block;
}

/* Descripción - Pegada debajo de la fecha, color discreto */
.inventory .box-card .item-desc {
    flex: 1;
    background-color: rgba(0, 0, 0, 0.3);
    border-radius: 3px;
    padding: 0.4rem;
    margin: 0;
    font-size: 0.8rem;
    color: rgba(255, 255, 255, 0.7);
    line-height: 1.25;
    word-break: break-word;
    white-space: pre-wrap;
    overflow-y: auto;
    max-height: 120px;
}

.inventory .box-card .item-desc:empty {
    display: none;
}

/* Scrollbar personalizado */
.inventory .box-card .item-desc::-webkit-scrollbar {
    width: 4px;
}

.inventory .box-card .item-desc::-webkit-scrollbar-track {
    background: rgba(255, 255, 255, 0.05);
    border-radius: 2px;
}

.inventory .box-card .item-desc::-webkit-scrollbar-thumb {
    background: rgba(255, 255, 255, 0.3);
    border-radius: 2px;
}

.inventory .box-card .item-desc::-webkit-scrollbar-thumb:hover {
    background: rgba(255, 255, 255, 0.5);
}

/* Botones al final */
.inventory .box-card .card-actions {
    display: flex;
    justify-content: space-between;
    align-items: center;
    gap: 0.4rem;
    flex-shrink: 0;
    margin-top: auto;
    padding-top: 0.5rem;
    border-top: 1px solid rgba(255, 255, 255, 0.1);
}

.inventory .box-card .btn-delete {
    background: transparent;
    border: none;
    color: #fff;
    padding: 0.25rem;
    cursor: pointer;
    transition: color 0.2s, transform 0.2s;
}

.inventory .box-card .btn-delete:hover {
    color: #ff6b6b;
    transform: scale(1.1);
}

/* Botón Agregar a Vitrina - Moderno y consistente */
.inventory .box-card .btn-outline-primary {
    border-color: #0dcaf0;
    color: #0dcaf0;
    background-color: transparent;
    padding: 0.3rem 0.6rem;
    font-size: 0.8rem;
    font-weight: 500;
    border-radius: 4px;
    transition: all 0.2s ease;
}

.inventory .box-card .btn-outline-primary:hover,
.inventory .box-card .btn-outline-primary:focus {
    background-color: #0dcaf0;
    border-color: #0dcaf0;
    color: #ffffff;
    outline: none;
    box-shadow: 0 0 8px rgba(13, 202, 240, 0.3);
}

.inventory .box-card .btn-outline-primary:active {
    transform: scale(0.98);
}

/* Botón Deshabilitado (En vitrina) */
.inventory .box-card .btn-secondary {
    background-color: rgba(108, 117, 125, 0.6);
    border-color: rgba(108, 117, 125, 0.4);
    color: rgba(255, 255, 255, 0.7);
    padding: 0.3rem 0.6rem;
    font-size: 0.8rem;
    font-weight: 500;
    border-radius: 4px;
    cursor: pointer;
}

/* Estado activo (vitrina) visual sutil */
.inventory .box-card .vitrine-active {
    background-color: rgba(108, 117, 125, 0.35);
    border-color: rgba(255, 255, 255, 0.25);
    color: rgba(255, 255, 255, 0.85);
}
.inventory .box-card .vitrine-active:hover,
.inventory .box-card .vitrine-active:focus {
    background-color: rgba(108, 117, 125, 0.45);
    border-color: rgba(255, 255, 255, 0.35);
    color: #ffffff;
}

/* ==============================
   Inventario: estilos del botón vitrina (toggle)
   ============================== */
/* Estado: Agregar a Vitrina (no activo) */
.inventory .box-card .showcase-btn:not(.vitrine-active) {
    background: transparent;
    border: 1px solid #4caf50; /* verde */
    color: #4caf50;
}
.inventory .box-card .showcase-btn:not(.vitrine-active):hover,
.inventory .box-card .showcase-btn:not(.vitrine-active):focus {
    background: transparent;
    border-color: rgba(76, 175, 80, 0.8);
    color: rgba(76, 175, 80, 0.95);
    box-shadow: none;
}

/* Estado: En vitrina (activo) */
.inventory .box-card .showcase-btn.vitrine-active {
    background: #4caf50;
    border: 1px solid #4caf50;
    color: #ffffff;
}
.inventory .box-card .showcase-btn.vitrine-active:hover,
.inventory .box-card .showcase-btn.vitrine-active:focus {
    background: #4caf50;
    border-color: #4caf50;
    color: #ffffff;
    box-shadow: none;
}

/* Botón Abrir: estilo inspirado en las badges de porcentaje (lista de probabilidades)
   - apariencia compacta, con buen contraste en tema oscuro
   - layout centrado, con borde sutil y ligeramente elevado
*/
.btn-open {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	gap: 8px;
	width: 100%;
	padding: 10px 12px;
	border-radius: 10px;
	background: rgba(255,255,255,0.92);
	color: #111;
	font-weight: 800;
	border: 1px solid rgba(0,0,0,0.08);
	text-transform: uppercase;
	box-shadow: 0 6px 18px rgba(0,0,0,0.28);
	transition: transform .14s ease, box-shadow .14s ease, filter .14s ease;
}
.btn-open:hover { transform: translateY(-2px); box-shadow: 0 18px 36px rgba(0,0,0,0.36); filter: brightness(1.02); }

/* Optionally adapt button color slightly per rarity (subtle border/glow) */
.box-card.rarity-rare .btn-open { border-color: rgba(47,209,255,0.18); box-shadow: 0 8px 22px rgba(47,209,255,0.06); }
.box-card.rarity-epic .btn-open { border-color: rgba(191,91,255,0.18); box-shadow: 0 8px 22px rgba(191,91,255,0.06); }
.box-card.rarity-legendary .btn-open { border-color: rgba(255,174,33,0.12); box-shadow: 0 8px 22px rgba(255,174,33,0.04); }

/* ======================================
   Estilos para alertas (qvShowAlert)
   ====================================== */
.qv-alert {
    position: fixed;
    top: 84px;
    left: 50%;
    transform: translateX(-50%) scale(0.96);
    display: inline-flex;
    align-items: center;
    justify-content: center;
    padding: 12px 20px;
    font-size: 15px;
    font-weight: 500;
    color: #ffffff;
    white-space: nowrap;
    border-radius: 8px;
    border: 1px solid #1e7e34;
    background-color: #28a745;
    box-shadow: 0 4px 16px rgba(0,0,0,0.2);
    z-index: 9999;
    opacity: 0;
    transition: opacity 0.35s ease-out, transform 0.35s ease-out;
    pointer-events: auto;
}

.qv-alert.show {
    opacity: 1;
    transform: translateX(-50%) scale(1);
}

.qv-alert-success {
    background-color: #28a745;
    border-color: #1e7e34;
}

.qv-alert-danger {
    background-color: #dc3545;
    border-color: #bd2130;
}

.qv-alert-warning {
    background-color: #ffc107;
    border-color: #e0a800;
    color: #333333;
}

.qv-alert-info {
    background-color: #17a2b8;
    border-color: #117a8b;
}
.btn-abrir-moving-border {
    position: relative;
    width: 100%;
    padding: 14px 0;
    background: #1a1a1a;
    color: #fff;
    font-weight: 600;
    border-radius: 12px;
    font-size: 16px;
    border: none;
    cursor: pointer;
    overflow: hidden;
    text-align: center;
    z-index: 1;
}

/* Borde animado */
.btn-abrir-moving-border::before {
    content: "";
    position: absolute;
    inset: 0;
    padding: 3px;
    border-radius: inherit;
    background: linear-gradient(
        90deg,
        #ff0099,
        #00e5ff,
        #ff0099,
        #00e5ff
    );
    background-size: 300% 100%;         /* Necesario para movimiento */
    animation: movingBorder 3s linear infinite;
    
    /* "truco" para que solo se vea el borde */
    -webkit-mask: 
        linear-gradient(#000 0 0) content-box, 
        linear-gradient(#000 0 0);
    -webkit-mask-composite: xor;
            mask-composite: exclude;
}

/* Animación del borde */
@keyframes movingBorder {
    0%   { background-position: 0% 50%; }
    100% { background-position: 300% 50%; }
}

/* Hover */
.btn-abrir-moving-border:hover:not(:disabled) {
    transform: translateY(-2px);
}

/* Disabled */
.btn-abrir-moving-border:disabled {
    opacity: 0.5;
    cursor: not-allowed;
}

.btn-abrir-moving-border:disabled::before {
    animation: none;
    background: #555;
}

/* ==============================
   Dashboard Boxes (unificado - cian eléctrico)
   ============================== */
/* Contenedor principal de cada caja con borde delgado en cian y halo animado */
.dashboard-box {
    border: 1px solid rgba(0,224,255,0.7); /* borde cian más delgado */
    border-radius: 12px;
    position: relative;
    overflow: hidden;
    cursor: pointer;
    transition: transform 0.3s ease;
    box-shadow: 0 2px 8px rgba(0,0,0,0.12), 0 0 6px rgba(0,224,255,0.08);
    animation: border-pulse 2s infinite ease-in-out;
    will-change: box-shadow, border-color, transform;
}

/* Halo animado y respirante usando pseudo-elemento con cian */
.dashboard-box::before {
    content: '';
    position: absolute;
    inset: -3px;
    border-radius: 14px;
    background: conic-gradient(
        from 0deg,
        rgba(0,224,255,0.22),
        rgba(0,224,255,0.5),
        rgba(0,224,255,0.22),
        rgba(0,224,255,0.12)
    );
    opacity: 0.18;
    pointer-events: none;
    filter: blur(6px);
    animation: halo-rotate 6s linear infinite, halo-breath 2s ease-in-out infinite;
    transform-origin: 50% 50%;
    z-index: 0;
}

.dashboard-box:hover::before {
    opacity: 0.45;
    filter: blur(10px);
}

/* Hover: elevación y glow, mantiene zoom de imagen */
.dashboard-box:hover {
    transform: translateY(-5px);
    box-shadow: 0 0 30px rgba(0,224,255,0.45), 0 8px 24px rgba(0,0,0,0.28);
}

/* Imagen dentro del contenedor (mantener zoom en hover) */
.dashboard-box-img {
    display: block;
    width: 100%;
    transition: transform 0.3s ease;
    position: relative;
    z-index: 1;
}

.dashboard-box:hover .dashboard-box-img {
    transform: scale(1.05);
}

/* Contenedor de textos dentro de la caja (legible, posición igual) */
.dashboard-box-info {
    position: absolute;
    bottom: 0;
    left: 0;
    width: 100%;
    background: rgba(0,0,0,0.65);
    border-top: 1px solid rgba(0,224,255,0.12);
    color: #fff;
    text-align: center;
    padding: 10px;
    box-sizing: border-box;
    pointer-events: none;
    font-weight: 500;
    z-index: 2;
}

.dashboard-box-title {
    margin: 0;
    font-size: 1.1rem;
    font-weight: bold;
    text-shadow: 0 1px 2px rgba(0,0,0,0.5);
}

.dashboard-box-subtitle {
    margin: 0;
    font-size: 0.9rem;
    opacity: 0.9;
    text-shadow: 0 1px 1px rgba(0,0,0,0.4);
}

/* Animaciones: palpitación del borde y halo rotante + respiración */
@keyframes border-pulse {
    0% {
        border-color: rgba(0,224,255,0.35);
        box-shadow: 0 6px 14px rgba(0,0,0,0.12), 0 0 6px rgba(0,224,255,0.08);
    }
    50% {
        border-color: rgba(0,224,255,1);
        box-shadow: 0 6px 18px rgba(0,0,0,0.16), 0 0 18px rgba(0,224,255,0.45);
    }
    100% {
        border-color: rgba(0,224,255,0.35);
        box-shadow: 0 6px 14px rgba(0,0,0,0.12), 0 0 6px rgba(0,224,255,0.08);
    }
}

@keyframes halo-rotate {
    0% { transform: rotate(0deg); }
    100% { transform: rotate(360deg); }
}

@keyframes halo-breath {
    0%, 100% { transform: scale(1); opacity: 0.18; }
    50% { transform: scale(1.06); opacity: 0.45; }
}

/* (revert) Se eliminan reglas de .box-item y .box-item-content */

/* ==============================
   Recompensas Diarias - Diseño Compacto
   ============================== */
.daily-rewards-section {
    max-width: 1200px;
    margin: 0 auto;
    padding: 20px 0;
}

/* Contenedor de alerta centrado */
.reward-alert-container {
    display: flex;
    justify-content: center;
    margin-bottom: 30px;
}

.reward-alert {
    max-width: 600px;
    text-align: center;
    border-radius: 12px;
    padding: 16px 24px;
    font-weight: 500;
    box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);
}

/* Cards de recompensas */
.reward-card {
    background: rgba(0, 0, 0, 0.45);
}
.qv-btn-logout-alt {
    background: transparent; /* no button background */
    color: #e8ecff;
    border: none; /* remove square border */
    padding: .35rem .6rem; /* keep spacing for alignment */
    border-radius: 0;
    font-weight: 600;
    transition: transform .18s ease, color .18s ease;
}
.qv-btn-logout-alt span[aria-hidden] { font-size: 1.05rem; line-height:1; }
.qv-btn-logout-alt:hover,
.qv-btn-logout-alt:focus {
    transform: translateY(-2px);
    color: #ffb867; /* hover color */
    box-shadow: none;
    border-color: transparent;
    text-shadow: none;
    outline: none;
}

/* Ensure links using this variant do not get underlined on hover */
.qv-header a.qv-btn-logout-alt:hover,
.qv-header a.qv-btn-logout-alt:focus {
    text-decoration: none;
}

/* Bell / notification button: minimal icon-only appearance */
.qv-bell-btn {
    background: transparent;
    border: none;
    padding: .25rem .45rem; /* small padding to keep click area */
    border-radius: 0;
    color: inherit;
}
.qv-bell-btn:hover,
.qv-bell-btn:focus {
    transform: translateY(-2px);
    color: #ffb867;
    box-shadow: none;
    outline: none;
}

/* Keep profile/logout visually highlighted when 'active' class is present */
.qv-header a.qv-btn-logout-alt.active,
.qv-header a.qv-btn-logout-alt.active:hover,
.qv-header a.qv-btn-logout-alt.active:focus {
    color: #ffb867;
    transform: none;
}

.reward-card-body {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    height: 100%;
    min-height: 180px;
    padding: 24px 20px;
    text-align: center;
}

.reward-card-title {
    font-size: 0.95rem;
    font-weight: 600;
    color: rgba(255, 255, 255, 0.7);
    text-transform: uppercase;
    letter-spacing: 0.5px;
    margin-bottom: 16px;
}

.reward-card-number {
    font-size: 3.5rem;
    font-weight: 700;
    color: #ffffff;
    line-height: 1;
    text-shadow: 0 2px 8px rgba(0, 0, 0, 0.3);
}

/* Colores especiales para números */
.reward-card-number.reward-gained {
    color: #4ade80;
}

.reward-card-number.reward-total {
    color: #60a5fa;
}

/* Responsive para móvil */
@media (max-width: 768px) {
    .reward-card {
        min-height: 160px;
    }
    
    .reward-card-body {
        min-height: 160px;
        padding: 20px 16px;
    }
    
    .reward-card-number {
        font-size: 3rem;
    }
    
    .reward-alert {
        max-width: 100%;
        font-size: 0.95rem;
    }
}

@media (max-width: 576px) {
    .reward-card-number {
        font-size: 2.75rem;
    }
}

/* ==============================
   Texto de rareza legendaria (boxes)
   ============================== */
.rarity-text-legendary {
    color: #ffae21 !important;
    font-weight: 700;
    text-shadow: 0 0 8px rgba(255, 174, 33, 0.4);
}

/* ==============================
   Portal: rareza colors moved to boxes-portal.css (consolidated)
   ============================== */

/* ==============================
   Botón volver (flecha) en barra de cargas
   ============================== */
.qv-header-cargas {
    display: flex;
    align-items: center;
    gap: 10px;
}

.qv-cargas-back {
    background: none;
    border: none;
    color: #66f0ff;
    font-size: 18px;
    cursor: pointer;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    box-shadow: none;
    transition: filter 0.2s ease, color 0.2s ease;
    backdrop-filter: none;
    -webkit-backdrop-filter: none;
    flex-shrink: 0;
    position: relative;
    padding: 0;
    width: auto;
    height: auto;
    border-radius: 0;
}

.qv-cargas-back:hover {
    filter: brightness(1.3);
    color: #66f0ff;
}

.qv-cargas-back i {
    pointer-events: none;
    font-size: 16px;
    color: #66f0ff;
}

/* Override puntual para layout del header según nueva especificación */
/* (removed duplicate .qv-header-panel override; consolidated earlier) */

/* Grupo izquierda: flecha + título con menor separación */
.qv-header-left {
    display: flex;
    align-items: center;
    gap: 15px; /* separación ligeramente mayor */
}



/* ==============================
   Icono animado de energía (pantalla de eliminación)
   ============================== */
.qv-delete-info {
    display: flex;
    align-items: center;
    gap: 18px;
    font-size: 0.92rem;
}

/* Contenedor del bullet */
.qv-delete-bullet {
    width: 28px;
    height: 28px;
    position: relative;
    flex-shrink: 0;
    
    /* ESTO es clave para evitar desalineación */
    display: flex;
    justify-content: center;
    align-items: center;
}

/* Capas internas */
.qv-energy-circle,
.qv-energy-pulse {
    position: absolute;
    top: 50%;
    left: 50%;
    transform: translate(-50%, -50%); /* centra ambos */
    border-radius: 50%;
    pointer-events: none;
}

/* Círculo rotando */
.qv-energy-circle {
    position: absolute;
    inset: 0; /* ocupa todo el contenedor de 28x28 */
    margin: auto;

    width: 24px;
    height: 24px;

    border: 2px solid #4cc9f0;
    border-radius: 50%;

    animation: qv-rotate 2.5s linear infinite;
    box-shadow: 0 0 10px #4cc9f0;

    pointer-events: none;
}

/* Pulso */
.qv-energy-pulse {
    width: 14px;
    height: 14px;
    background: rgba(76,201,240,0.4);
    animation: qv-pulse 1.6s ease-out infinite;
}

@keyframes qv-rotate {
    0% { transform: rotate(0deg) scale(1); }
    100% { transform: rotate(360deg) scale(1); }
}

@keyframes qv-pulse {
    0% { opacity: 0.8; transform: translate(-50%, -50%) scale(1); }
    100% { opacity: 0; transform: translate(-50%, -50%) scale(3); }
}

/* Estilo título sección header (Futurista: Plata pulida + Glow cian) */
.qv-header-section-title.infinitymix-style {
    text-transform: uppercase;
}

.qv-header-section-title.infinitymix-style .qv-section-title-text {
    display: inline-block;
    background: linear-gradient(180deg, #ffffff 0%, #f5f5f5 40%, #e8e8e8 100%);
    -webkit-background-clip: text;
    -webkit-text-fill-color: transparent;
    background-clip: text;
    font-weight: 800;
    text-shadow: 0 0 8px rgba(102, 240, 255, 0.50);
    position: relative;
}

/* ========================================
   HOME PAGE STYLES
   Container: .home-container
   ======================================== */

.home-container {
    margin-top: 20px;
    padding: 0 20px;
}

.home-container-inner {
    max-width: 1200px;
    margin: 0 auto;
}

.home-container .qv-hero-banner {
    background: linear-gradient(135deg, rgba(15, 23, 42, 0.95) 0%, rgba(17, 24, 39, 0.95) 100%), url('data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1200 400"><defs><pattern id="grid" width="40" height="40" patternUnits="userSpaceOnUse"><path d="M 40 0 L 0 0 0 40" fill="none" stroke="rgba(102, 240, 255, 0.1)" stroke-width="0.5"/></pattern></defs><rect width="1200" height="400" fill="url(%23grid)"/></svg>');
    background-size: cover, 40px 40px;
    background-position: center, 0 0;
    border-radius: 12px;
    /* reduce top padding so content sits higher */
    padding: 20px 40px;
    margin-bottom: 20px;
    display: flex;
    align-items: flex-start; /* allow content to start near top */
    gap: 40px;
    min-height: 380px;
    overflow: hidden;
    position: relative;
    z-index: 0;
    /* Hacer que el banner sobresalga ligeramente y quede centrado (115%) */
    width: 115%;
    max-width: none;
    margin-left: -7.5%;
    margin-right: -7.5%;
    /* initial subtle glow, will increase on hover */
    box-shadow: 0 0 8px rgba(102, 240, 255, 0.15), inset 0 0 12px rgba(255,255,255,0.02);
    transition: box-shadow 0.35s ease;
    margin-top: 50px;
}
.home-container .qv-hero-banner:hover {
    /* no vertical movement on hover; only increase glow */
    box-shadow: 0 0 20px rgba(102, 240, 255, 0.45), inset 0 0 18px rgba(255,255,255,0.04);
}

/* -----------------------------
   Overrides / styles requested for HERO BANNER
   ----------------------------- */
.qv-hero-banner {
    width: 115%;
    margin-left: -7.5%;
    margin-right: -7.5%;
    background-size: cover;
    background-position: center;
    background-repeat: no-repeat;
    position: relative;
    z-index: 0;
    overflow: hidden;
    border-radius: 12px;
    box-shadow: 0 0 35px rgba(102, 240, 255, 0.25);
    /* Fixed height requested */
    height: 380px;
    min-height: 380px;
}

/* Overlay suave */
.qv-hero-banner::before {
    content: "";
    position: absolute;
    inset: 0;
    background: rgba(0, 0, 0, 0.15);
    border-radius: inherit;
    pointer-events: none;
    z-index: 1;
}
/* Use flex layout of the banner to push content to the left and side-text to the right */
.home-container .qv-hero-banner {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
}

/* Consolidated hero content rule (single definition) */
.home-container .qv-hero-content {
    position: relative;
    z-index: 2;
    flex: 1 1 auto;
    color: #fff;
    display: block;
    text-align: left;
    padding-top: 48px;
    padding-left: 30px;
    padding-right: 30px;
    box-sizing: border-box;
}

/* Side text block on the right */
.qv-hero-side-text {
    position: relative;
    z-index: 2;
    flex: 0 0 300px;
    text-align: right;
    color: #ffffff;
    font-size: 1.2rem;
    line-height: 1.25;
    padding-top: 48px;
    word-break: break-word;
}

/* Subtitle styling */
.home-container .qv-hero-subtitle {
    font-size: 1.05rem;
    color: #ffffff;
    margin: 0 0 24px 0;
    font-weight: 300;
    text-shadow: 0 0 6px rgba(102, 240, 255, 0.18);
}

/* Subtle pulsating glow */
@keyframes qv-pulse-glow {
    0% { box-shadow: 0 0 30px rgba(102,240,255,0.22), inset 0 0 30px rgba(255,255,255,0.03); }
    50% { box-shadow: 0 0 42px rgba(102,240,255,0.30), inset 0 0 36px rgba(255,255,255,0.05); }
    100% { box-shadow: 0 0 30px rgba(102,240,255,0.22), inset 0 0 30px rgba(255,255,255,0.03); }
}
.home-container .qv-hero-banner {
    /* no pulsing animation; keep a stable subtle glow */
    transition: box-shadow 0.35s ease;
    box-shadow: 0 0 20px rgba(102, 240, 255, 0.28);
}

/* Hover: no lift, only increase glow */
.home-container .qv-hero-banner:hover {
    box-shadow: 0 0 24px rgba(102,240,255,0.50), inset 0 0 18px rgba(255,255,255,0.04);
}

.home-container .qv-hero-content {
    flex: 1;
    z-index: 2;
    color: #fff;
}

/* cleaned duplicate title/subtitle block removed */

.home-container .qv-hero-title {
    font-size: clamp(1.8rem, 3.2vw, 2.6rem);
    font-weight: 700;
    margin-top: -8px;
    margin-bottom: 20px;
    color: #ffffff;
    line-height: 1.05;
    max-width: 62%;
    display: block;
}

.home-container .qv-hero-subtitle {
    font-size: 1.05rem;
    color: #e8e8e8;
    margin-bottom: 24px; /* increased gap to button */
    font-weight: 500;
    white-space: nowrap;
}


.home-container .qv-hero-button {
    display: inline-block;
    padding: 12px 26px;
    background: #023c4280;
    color: #ffffff;
    border: 1px solid rgba(102, 240, 255, 0.5);
    border-radius: 8px;
    font-weight: 600;
    font-size: 1.12rem;
    margin-top: 40px;
    cursor: pointer;
    text-decoration: none;
    transition: background 0.28s ease, border-color 0.28s ease, box-shadow 0.28s ease;
}

.home-container .qv-hero-button:hover {
    background: rgb(5 59 74 / 80%);
    border-color: rgba(102, 240, 255, 0.65);
    box-shadow: 0 6px 18px rgba(0, 200, 255, 0.08);
    color: #ffffff;
}

/* Darker background for panel link buttons */
.home-container .qv-hero-button[href*="panel"],
.home-container .qv-hero-button[data-bs-target="#qvLoginModal"] {
    background: #023c4280;
}

.home-container .qv-hero-button[href*="panel"]:hover,
.home-container .qv-hero-button[data-bs-target="#qvLoginModal"]:hover {
    background: rgb(5 59 74 / 80%);
}

/* Sección Cómo funciona */
.home-container .qv-how-section {
    margin-top: 56px;
    margin-bottom: 60px;
}

.home-container .how-it-works {
    margin-top: 56px;
}

.home-container .qv-section-title {
    font-size: 2rem;
    font-weight: 700;
    margin-bottom: 40px;
    text-align: center;
    color: #f1f5f9;
}

/* Responsive: Ajustes para tablet (<=768px) y móvil (<=480px) del hero sin afectar escritorio */
@media (max-width: 768px) {
    .qv-hero-banner {
        /* permitir altura flexible y stack para evitar solapamientos */
        height: auto;
        min-height: 320px;
        display: flex;
        flex-direction: column;
        align-items: center;
        justify-content: center;
        padding: 18px;
    }

    .home-container .qv-hero-content {
        padding-top: 36px;
        padding-bottom: 20px;
        padding-left: 20px;
        padding-right: 20px;
        text-align: center;
        max-width: 100%;
    }

    .qv-hero-side-text {
        padding-top: 12px;
        padding-bottom: 12px;
        flex: 0 0 auto;
        width: 100%;
        text-align: center;
        font-size: 1rem;
        line-height: 1.25;
        margin-top: 8px;
    }

    .home-container .qv-hero-title {
        font-size: 1.8rem !important;
        max-width: 100%;
        margin-bottom: 12px;
    }

    .home-container .qv-hero-subtitle {
        font-size: 1rem;
        white-space: normal;
        margin-bottom: 14px;
    }

    .home-container .qv-hero-button {
        margin-top: 18px;
        padding: 10px 20px;
        font-size: 1rem;
    }

    .home-container .qv-how-section {
        margin-top: 40px;
    }
}

@media (max-width: 480px) {
    .qv-hero-banner {
        min-height: 240px;
        padding: 12px;
        border-radius: 8px;
    }

    .home-container .qv-hero-content {
        padding-top: 20px;
        padding-bottom: 12px;
        padding-left: 12px;
        padding-right: 12px;
    }

    .qv-hero-side-text {
        display: block;
        padding-top: 8px;
        padding-bottom: 8px;
        font-size: 0.95rem;
        line-height: 1.2;
    }

    .home-container .qv-hero-title {
        font-size: 1.4rem !important;
        margin-bottom: 8px;
    }

    .home-container .qv-hero-subtitle {
        font-size: 0.95rem;
    }

    .home-container .qv-hero-button {
        margin-top: 12px;
        padding: 10px 16px;
        font-size: 0.95rem;
    }

    .home-container .qv-how-section {
        margin-top: 28px;
        margin-bottom: 60px;
    }
}

/* Desktop-only adjustment: bajar ligeramente la imagen de fondo del hero
   para que no tape la sección "Inicio el portal". Afecta solo pantallas >=769px. */
@media (min-width: 769px) {
    .qv-hero-banner {
        /* Mover el punto focal de la imagen hacia abajo para que no corte la parte superior del portal */
        background-position: center calc(50% + 64px) !important;
        /* fallback para navegadores que no soporten calc en background-position */
        background-position-y: calc(56% + 64px) !important;
        /* alternativa basada en porcentaje si se prefiere un valor fijo */
        /* background-position: center 40% !important; */
    }
}

.home-container .qv-how-grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
    gap: 30px;
    margin-bottom: 60px;
}

.home-container .qv-how-card {
    background: rgb(15 21 30 / 90%);
    border: 1px solid rgba(102, 240, 255, 0.15);
    border-radius: 12px;
    padding: 40px 30px;
    text-align: center;
    transition: all 0.3s ease;
    cursor: pointer;
    box-shadow: 0 4px 12px rgba(0, 0, 0, 0.3);
}

.home-container .qv-how-card:hover {
    border-color: rgba(102, 240, 255, 0.25);
    box-shadow: 0 8px 24px rgba(0, 0, 0, 0.4);
    background: rgba(35, 45, 60, 0.9);
}

.home-container .qv-how-icon {
    font-size: 3rem;
    margin-bottom: 15px;
    display: block;
}

.home-container .qv-how-card h3 {
    font-size: 1.3rem;
    color: #66f0ff;
    margin-bottom: 10px;
    font-weight: 600;
}

.home-container .qv-how-card p {
    color: #cbd5e1;
    font-size: 0.95rem;
    line-height: 1.6;
}

/* Compact variant for the "¿Cómo funciona?" cards
   Purpose: reduce vertical height and icon size only for the three cards
   in the home how-section without touching global .qv-how-card styles used
   elsewhere. We avoid !important and use the section-scoped selector so
   other cards on the site remain unaffected. */
.home-container .qv-how-card.qv-how-card--compact {
    padding: 18px 20px; /* reduced vertical padding */
    border-radius: 10px;
}

.home-container .qv-how-card.qv-how-card--compact .qv-how-icon {
    font-size: 1.8rem; /* smaller icon */
    margin-bottom: 8px;
}

.home-container .qv-how-card.qv-how-card--compact h3 {
    font-size: 1.05rem;
    margin-bottom: 6px;
}

.home-container .qv-how-card.qv-how-card--compact p {
    font-size: 0.9rem;
    line-height: 1.35;
    margin-bottom: 0;
}

/* Keep hover effects for clickable compact cards (qv-clickable), but reduce
   intensity so layout doesn't jump too much when hovered. Non-clickable
   cards (qv-static / is-static) will not show hover because pointer-events
   or classes control that separately. */
.home-container .qv-how-card.qv-how-card--compact.qv-clickable:hover {
    transform: translateY(-2px);
    box-shadow: 0 6px 18px rgba(0,0,0,0.32);
}

/* Sección Cajas destacadas */
.home-container .qv-featured-section {
    margin-bottom: 60px;
}

.home-container .qv-featured-grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));
    gap: 25px;
}

.home-container .qv-featured-card {
    background: rgba(25, 35, 50, 0.9);
    border: 1px solid rgba(102, 240, 255, 0.15);
    border-radius: 12px;
    overflow: hidden;
    transition: all 0.3s ease;
    display: flex;
    flex-direction: column;
    height: 100%;
    box-shadow: 0 4px 12px rgba(0, 0, 0, 0.3);
}

.home-container .qv-featured-card:hover {
    border-color: rgba(102, 240, 255, 0.25);
    box-shadow: 0 8px 24px rgba(0, 0, 0, 0.4);
    background: rgba(35, 45, 60, 0.9);
}

.home-container .qv-featured-card-image {
    width: 100%;
    height: 200px;
    background: linear-gradient(135deg, rgba(102, 240, 255, 0.1) 0%, rgba(167, 139, 250, 0.1) 100%);
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 3rem;
    color: rgba(102, 240, 255, 0.3);
}

.home-container .qv-featured-card-body {
    padding: 25px;
    flex: 1;
    display: flex;
    flex-direction: column;
}

.home-container .qv-featured-card-title {
    font-size: 1.2rem;
    color: #f1f5f9;
    margin-bottom: 10px;
    font-weight: 600;
}

.home-container .qv-featured-card-text {
    color: #cbd5e1;
    font-size: 0.9rem;
    margin-bottom: 20px;
    flex: 1;
    line-height: 1.5;
}

.home-container .qv-featured-card-button {
    align-self: flex-start;
    padding: 8px 20px;
    background: rgba(102, 240, 255, 0.2);
    border: 1px solid rgba(102, 240, 255, 0.4);
    color: #66f0ff;
    border-radius: 6px;
    font-weight: 600;
    cursor: pointer;
    transition: all 0.3s ease;
    text-decoration: none;
    font-size: 0.9rem;
}

.home-container .qv-featured-card-button:hover {
    background: rgba(102, 240, 255, 0.4);
    border-color: rgba(102, 240, 255, 0.8);
    color: #fff;
}

/* Responsive Home */
@media (max-width: 768px) {
    .home-container .qv-hero-banner {
        flex-direction: column;
        padding: 40px 20px;
        min-height: auto;
    }

    .home-container .qv-hero-title {
        font-size: 2rem;
    }

    .home-container .qv-hero-subtitle {
        font-size: 1rem;
    }

    .home-container .qv-hero-visual {
        flex: 0 0 250px;
    }

    .home-container .qv-portal-circle {
        width: 250px;
        height: 250px;
        font-size: 3rem;
    }

    .home-container .qv-section-title {
        font-size: 1.5rem;
    }

    .home-container .qv-how-grid {
        grid-template-columns: 1fr;
    }

    .home-container .qv-featured-grid {
        grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
    }
}

/* ========================================
   PRELOADER GLOBAL (simple spinner)
   ======================================== */

/* Mobile/tablet: centrar la imagen de fondo del hero para <=768px */
@media (max-width: 768px) {
    .qv-hero-banner {
        background-position: center center !important;
        background-position-y: center !important;
    }
}

#preloader {
    position: fixed;
    inset: 0;
    display: flex;
    align-items: center;
    justify-content: center;
    background: #000000; /* full-screen dark background while loading */
    z-index: 999999;
    transition: opacity 0.4s ease, visibility 0.4s ease;
}

#preloader.hidden {
    opacity: 0;
    visibility: hidden;
}

/* Simple, isolated spinner for the preloader */
.simple-preloader-spinner {
    width: 64px;
    height: 64px;
    border-radius: 50%;
    box-sizing: border-box;
    border: 2px solid #333; /* darker border */
    border-top-color: #66f0ff; /* bright cyan on top */
    animation: simple-spinner-rotate 1s linear infinite;
    will-change: transform;
}

@keyframes simple-spinner-rotate {
    0%   { transform: rotate(0deg); }
    100% { transform: rotate(360deg); }
}

/* Responsive adjustments: keep spinner proportional */
@media (max-width: 576px) {
    .simple-preloader-spinner { width: 56px; height: 56px; }
}
@media (min-width: 1200px) {
    .simple-preloader-spinner { width: 80px; height: 80px; }
}

/* Apply Login modal visual to the profile form (visual only, no HTML changes)
   Target the form by its action attribute to limit scope to /controllers/user/profile_update.php
*/
form[action*="controllers/user/profile_update.php"] {
    display: block;
    box-sizing: border-box;
    /* Pull the form outward so its styled background fills the card area */
    margin: -1.25rem;
    padding: 1rem 1.25rem;
    background: linear-gradient(135deg, rgba(16,20,30,0.95), rgba(26,32,48,0.95));
    border: 1px solid rgba(130,170,255,0.35);
    border-radius: 1rem;
    box-shadow: 0 12px 32px rgba(0,0,0,0.35);
    color: #e8ecff;
    position: relative;
    z-index: 0;
}

/* Typography and small text inside the profile form */
form[action*="controllers/user/profile_update.php"] p,
form[action*="controllers/user/profile_update.php"] .small,
form[action*="controllers/user/profile_update.php"] .form-text {
    color: #bcd8ff;
}

/* Inputs: match modal input styles */
form[action*="controllers/user/profile_update.php"] .form-control {
    background: rgba(255,255,255,0.02);
    border: 1px solid rgba(130,170,255,0.12);
    color: #e8ecff;
    padding: .5rem .75rem;
    border-radius: .5rem;
    transition: box-shadow .16s ease, border-color .16s ease;
}

form[action*="controllers/user/profile_update.php"] .form-control:focus {
    border-color: rgba(130,170,255,0.5);
    box-shadow: 0 10px 30px rgba(130,170,255,0.06);
    outline: none;
}

/* Stronger specificity for readonly inputs in profile form to appear blocked
   without being disabled. Targets only inputs with the helper class. */
form[action*="controllers/user/profile_update.php"] .form-control.qv-input-readonly {
    background-color: rgba(255,255,255,0.03);
    border-color: rgba(255,255,255,0.06);
    color: rgba(255,255,255,0.9);
    cursor: default;
    box-shadow: none;
}

form[action*="controllers/user/profile_update.php"] .form-control.qv-input-readonly:focus,
form[action*="controllers/user/profile_update.php"] .form-control.qv-input-readonly:active {
    border-color: rgba(255,255,255,0.06);
    box-shadow: none;
    outline: none;
}

/* Attribute-based readonly styling for profile form inputs.
   Targets only controls inside the profile update form and uses
   the [readonly] attribute so it applies even without a helper class.
   Visual: more muted background, softer border, dimmer text; no focus glow.
*/
form[action*="controllers/user/profile_update.php"] .form-control[readonly],
form[action*="controllers/user/profile_update.php"] input[readonly].form-control,
form[action*="controllers/user/profile_update.php"] textarea[readonly].form-control {
    background-color: rgba(255,255,255,0.01);
    border-color: rgba(255,255,255,0.04);
    color: rgba(255,255,255,0.65);
    cursor: default;
    box-shadow: none;
}

form[action*="controllers/user/profile_update.php"] .form-control[readonly]:focus,
form[action*="controllers/user/profile_update.php"] input[readonly].form-control:focus,
form[action*="controllers/user/profile_update.php"] textarea[readonly].form-control:focus {
    border-color: rgba(255,255,255,0.04);
    box-shadow: none;
    outline: none;
}

/* Inputs helpers */
form[action*="controllers/user/profile_update.php"] .input-group-text {
    background: rgba(255,255,255,0.02);
    border: 1px solid rgba(130,170,255,0.08);
    color: #d7e8ff;
    border-radius: .45rem;
}

/* Alerts / invalid feedback inside the profile form */
form[action*="controllers/user/profile_update.php"] .alert {
    background: rgba(255,255,255,0.02);
    border: 1px solid rgba(255,255,255,0.03);
    color: #f4f9ff;
}

form[action*="controllers/user/profile_update.php"] .invalid-feedback {
    color: #ffb4a6;
}

/* Buttons inside the form: match modal button look */
form[action*="controllers/user/profile_update.php"] .btn {
    border-radius: .6rem;
    padding: .5rem .85rem;
    font-weight: 700;
}

form[action*="controllers/user/profile_update.php"] .btn:hover {
    transform: translateY(-2px);
}

/* Keep layout intact: ensure spacing of form fields remains natural */
form[action*="controllers/user/profile_update.php"] .mb-3 { margin-bottom: 1rem; }


/* ===========================
   Modal styling (Login / Register)
   Reproduce visual of: <div class="mb-5 p-4 rounded-4" style="background: linear-gradient(135deg, rgba(16,20,30,0.95), rgba(26,32,48,0.95)); border: 1px solid rgba(130,170,255,0.35); box-shadow: 0 12px 32px rgba(0,0,0,0.35);">
   Scoped to `#qvLoginModal` and `#qvRegisterModal` to avoid global modal changes.
   =========================== */

#qvLoginModal .modal-content,
#qvRegisterModal .modal-content {
    background: linear-gradient(135deg, rgba(16,20,30,0.95), rgba(26,32,48,0.95));
    border: 1px solid rgba(130,170,255,0.35);
    border-radius: 1rem; /* rounded-4 feel */
    box-shadow: 0 12px 32px rgba(0,0,0,0.35);
    color: #e8ecff;
    overflow: hidden;
}

/* Reusable auth modal class to apply same visual to other auth dialogs */
.qv-auth-modal {
    background: linear-gradient(135deg, rgba(16,20,30,0.95), rgba(26,32,48,0.95));
    border: 1px solid rgba(130,170,255,0.35);
    border-radius: 1rem;
    box-shadow: 0 12px 32px rgba(0,0,0,0.35);
    color: #e8ecff;
    overflow: hidden;
}

/* Header / Title / Body / Footer spacing to match p-4 */
#qvLoginModal .modal-content .modal-header,#marketModal .market-modal-close
#qvRegisterModal .modal-content .modal-header,
.qv-auth-modal .modal-header {
    padding: 1rem 1.25rem;
    border-bottom: none;
    background: transparent;
}

#qvLoginModal .modal-content .modal-title,
#qvRegisterModal .modal-content .modal-title,
.qv-auth-modal .modal-title {
    color: #ffffff;
    font-weight: 800;
    font-size: 1.125rem;
    letter-spacing: .2px;
}

#qvLoginModal .modal-content .modal-body,
#qvRegisterModal .modal-content .modal-body,
.qv-auth-modal .modal-body {
    padding: 1rem 1.25rem 1.25rem 1.25rem; /* p-4 equivalent feel */
    color: #d7e8ff;
    font-size: .98rem;
}

#qvLoginModal .modal-content .modal-footer,
#qvRegisterModal .modal-content .modal-footer,
.qv-auth-modal .modal-footer {
    padding: .75rem 1.25rem 1rem 1.25rem;
    border-top: none;
    background: transparent;
}

/* Typography / small text */
#qvLoginModal .modal-content p,
#qvRegisterModal .modal-content p,
.qv-auth-modal p,
#qvLoginModal .modal-content .small,
#qvRegisterModal .modal-content .small,
.qv-auth-modal .small,
#qvLoginModal .modal-content .form-text,
#qvRegisterModal .modal-content .form-text,
.qv-auth-modal .form-text {
    color: #bcd8ff;
}

/* Inputs and input-group */
#qvLoginModal .modal-content .form-control,
#qvRegisterModal .modal-content .form-control,
.qv-auth-modal .form-control {
    background: rgba(255,255,255,0.02);
    border: 1px solid rgba(130,170,255,0.12);
    color: #e8ecff;
    padding: .5rem .75rem;
    border-radius: .5rem;
    transition: box-shadow .16s ease, border-color .16s ease;
}

#qvLoginModal .modal-content .form-control:focus,
#qvRegisterModal .modal-content .form-control:focus,
.qv-auth-modal .form-control:focus {
    border-color: rgba(130,170,255,0.5);
    box-shadow: 0 10px 30px rgba(130,170,255,0.06);
    outline: none;
}

#qvLoginModal .modal-content .input-group-text,
#qvRegisterModal .modal-content .input-group-text,
.qv-auth-modal .input-group-text {
    background: rgba(255,255,255,0.02);
    border: 1px solid rgba(130,170,255,0.08);
    color: #d7e8ff;
    border-radius: .45rem;
}

/* Progress bars and small boxes inside modals */
#qvLoginModal .modal-content .progress,
#qvRegisterModal .modal-content .progress,
.qv-auth-modal .progress {
    background: rgba(255,255,255,0.03);
    border-radius: .5rem;
    height: 10px;
    overflow: hidden;
    border: 1px solid rgba(255,255,255,0.02);
}

#qvLoginModal .modal-content .progress .progress-bar,
#qvRegisterModal .modal-content .progress .progress-bar,
.qv-auth-modal .progress .progress-bar {
    background: linear-gradient(90deg, rgba(130,170,255,0.45), rgba(80,130,255,0.55));
    box-shadow: 0 6px 18px rgba(80,130,255,0.05) inset;
}

/* Badges, mini boxes */
#qvLoginModal .modal-content .badge,
#qvRegisterModal .modal-content .badge,
.qv-auth-modal .badge {
    background: rgba(130,170,255,0.12);
    color: #d7e8ff;
}

/* Alerts / feedback inside modal */
#qvLoginModal .modal-content .alert,
#qvRegisterModal .modal-content .alert,
.qv-auth-modal .alert {
    background: rgba(255,255,255,0.02);
    border: 1px solid rgba(255,255,255,0.03);
    color: #f4f9ff;
}

/* Invalid feedback */
#qvLoginModal .modal-content .invalid-feedback,
#qvRegisterModal .modal-content .invalid-feedback,
.qv-auth-modal .invalid-feedback {
    color: #ffb4a6;
}

/* Buttons: keep Bootstrap colors but match radius and hover dynamics */
#qvLoginModal .modal-content .btn,
#qvRegisterModal .modal-content .btn,
.qv-auth-modal .btn {
    border-radius: .6rem;
    padding: .5rem .85rem;
    font-weight: 700;
}

#qvLoginModal .modal-content .btn:hover,
#qvRegisterModal .modal-content .btn:hover,
.qv-auth-modal .btn:hover {
    transform: translateY(-2px);
}

/* Close button visual */
#qvLoginModal.modal .modal-content .btn-close,
#qvRegisterModal.modal .modal-content .btn-close,
.qv-auth-modal .btn-close {
    /* ensure Bootstrap close icon uses white and is not overridden */
    --bs-btn-close-color: #ffffff;
    color: #ffffff; /* currentColor used by the SVG close icon */
    filter: brightness(1.05) contrast(0.95);
    opacity: 1;
}

/* Highest-specificity selectors for close X to override Bootstrap without !important */
html body #qvLoginModal.modal .modal-dialog .modal-content .modal-header .btn-close.btn-close-white,
html body #qvRegisterModal.modal .modal-dialog .modal-content .modal-header .btn-close.btn-close_white,
html body #qvLoginModal.modal .modal-dialog .modal-content .modal-header .qv-modal-close,
html body #qvRegisterModal.modal .modal-dialog .modal-content .modal-header .qv-modal-close,
html body .qv-auth-modal.modal .modal-dialog .modal-content .modal-header .qv-modal-close,
html body .qv-auth-modal.modal .modal-dialog .modal-content .modal-header .btn-close {
    --bs-btn-close-color: #ffffff;
    color: #ffffff;
    fill: #ffffff;
    opacity: 1;
}

/* Additional scoped rule to ensure the Bootstrap close icon appears white
   inside auth modals. Uses filter as a fallback and targets only .qv-auth-modal. */
.qv-auth-modal .modal-header .btn-close,
.qv-auth-modal .modal-header .btn-close.qv-modal-close {
    --bs-btn-close-color: #ffffff;
    color: #ffffff;
    filter: invert(1) saturate(0) brightness(1);
    background-size: 0.6rem 0.6rem;
}

/* Ensure .qv-modal-close uses a white SVG as background so it's visible */
html body #qvLoginModal.modal .modal-dialog .modal-content .modal-header .qv-modal-close,
html body #qvRegisterModal.modal .modal-dialog .modal-content .modal-header .qv-modal-close,
html body .qv-auth-modal.modal .modal-dialog .modal-content .modal-header .qv-modal-close {
    background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23ffffff'><path d='M4.646 4.646a.5.5 0 0 1 .708 0L8 7.293l2.646-2.647a.5.5 0 0 1 .708.708L8.707 8l2.647 2.646a.5.5 0 0 1-.708.708L8 8.707l-2.646 2.647a.5.5 0 0 1-.708-.708L7.293 8 4.646 5.354a.5.5 0 0 1 0-.708z'/></svg>");
    background-repeat: no-repeat;
    background-position: center;
    /* Increase only the internal SVG size so the cross appears larger without resizing the button */
    background-size: 1.6rem 1.6rem;
}

/* Apply claim-reward animated-border styles to modal primary submit buttons
   Scoped to avoid affecting other buttons site-wide. Targets both button and input submit. */
html body #qvLoginModal.modal .modal-dialog .modal-content .modal-footer button[type="submit"],
html body #qvLoginModal.modal .modal-dialog .modal-content .modal-footer input[type="submit"],
html body #qvRegisterModal.modal .modal-dialog .modal-content .modal-footer button[type="submit"],
html body #qvRegisterModal.modal .modal-dialog .modal-content .modal-footer input[type="submit"] {
    position: relative;
    display: inline-block;
    width: 100%; /* match claim button full width behaviour */
    padding: 12px 0;
    background: #1a1a1a;
    color: #fff;
    font-weight: 600;
    border-radius: 12px;
    font-size: 16px;
    border: none;
    cursor: pointer;
    overflow: hidden;
    text-align: center;
    z-index: 1;
}

/* Animated border pseudo-element copied from .btn-abrir-moving-border */
html body #qvLoginModal.modal .modal-dialog .modal-content .modal-footer button[type="submit"]::before,
html body #qvLoginModal.modal .modal-dialog .modal-content .modal-footer input[type="submit"]::before,
html body #qvRegisterModal.modal .modal-dialog .modal-content .modal-footer button[type="submit"]::before,
html body #qvRegisterModal.modal .modal-dialog .modal-content .modal-footer input[type="submit"]::before {
    content: "";
    position: absolute;
    inset: 0;
    padding: 3px;
    border-radius: inherit;
    background: linear-gradient(
        90deg,
        #ff0099,
        #00e5ff,
        #ff0099,
        #00e5ff
    );
    background-size: 300% 100%;
    animation: movingBorder 3s linear infinite;
    -webkit-mask: 
        linear-gradient(#000 0 0) content-box, 
        linear-gradient(#000 0 0);
    -webkit-mask-composite: xor;
            mask-composite: exclude;
}

/* Hover and disabled behaviour reuse */
#qvLoginModal.modal .modal-content button[type="submit"]:hover:not(:disabled),
#qvLoginModal.modal .modal-content input[type="submit"]:hover:not(:disabled),
#qvRegisterModal.modal .modal-content button[type="submit"]:hover:not(:disabled),
#qvRegisterModal.modal .modal-content input[type="submit"]:hover:not(:disabled),
html body #qvLoginModal.modal .modal-dialog .modal-content .modal-footer button[type="submit"]:hover:not(:disabled),
html body #qvLoginModal.modal .modal-dialog .modal-content .modal-footer input[type="submit"]:hover:not(:disabled),
html body #qvRegisterModal.modal .modal-dialog .modal-content .modal-footer button[type="submit"]:hover:not(:disabled),
html body #qvRegisterModal.modal .modal-dialog .modal-content .modal-footer input[type="submit"]:hover:not(:disabled) {
    transform: translateY(-2px);
}

#qvLoginModal.modal .modal-content button[type="submit"]:disabled,
#qvLoginModal.modal .modal-content input[type="submit"]:disabled,
#qvRegisterModal.modal .modal-content button[type="submit"]:disabled,
#qvRegisterModal.modal .modal-content input[type="submit"]:disabled,
html body #qvLoginModal.modal .modal-dialog .modal-content .modal-footer button[type="submit"]:disabled,
html body #qvLoginModal.modal .modal-dialog .modal-content .modal-footer input[type="submit"]:disabled,
html body #qvRegisterModal.modal .modal-dialog .modal-content .modal-footer button[type="submit"]:disabled,
html body #qvRegisterModal.modal .modal-dialog .modal-content .modal-footer input[type="submit"]:disabled {
    opacity: 0.5;
    cursor: not-allowed;
}

html body #qvLoginModal.modal .modal-dialog .modal-content .modal-footer button[type="submit"]:disabled::before,
html body #qvLoginModal.modal .modal-dialog .modal-content .modal-footer input[type="submit"]:disabled::before,
html body #qvRegisterModal.modal .modal-dialog .modal-content .modal-footer button[type="submit"]:disabled::before,
html body #qvRegisterModal.modal .modal-dialog .modal-content .modal-footer input[type="submit"]:disabled::before {
    animation: none;
    background: #555;
}

/* Also apply the animated-border to the header modal action buttons (IDs), which are type=button with inline colors */
html body #qvRegisterModal.modal .modal-dialog .modal-content button#qvRegisterModalSubmit {
    /* copy .select-user-btn core styles to match Login button */
    padding: 8px 18px !important;
    border: none !important;
    background: linear-gradient(135deg, #6a11cb 0%, #2575fc 100%) !important;
    color: #ffffff !important;
    border-radius: 6px !important;
    font-weight: 600 !important;
    font-size: 0.85rem !important;
    letter-spacing: 0.5px !important;
    text-transform: uppercase !important;
    box-shadow: 0 4px 12px rgba(106,17,203,0.35), 0 2px 6px rgba(0,0,0,0.25) !important;
    transition: all .3s ease !important;
    cursor: pointer !important;
    position: relative !important;
    overflow: hidden !important;
    z-index: 2;
    transform: none !important;
}

html body #qvRegisterModal.modal .modal-dialog .modal-content button#qvRegisterModalSubmit::before {
    content: '';
    position: absolute;
    top: 0;
    left: -100%;
    width: 100%;
    height: 100%;
    background: linear-gradient(90deg, transparent, rgba(255,255,255,0.3), transparent);
    transition: left 0.5s ease;
    pointer-events: none;
    z-index: 1;
}

html body #qvRegisterModal.modal .modal-dialog .modal-content button#qvRegisterModalSubmit:hover::before {
    left: 100%;
}

html body #qvRegisterModal.modal .modal-dialog .modal-content button#qvRegisterModalSubmit:hover {
    background: linear-gradient(135deg, #7c1fd4 0%, #3a88ff 100%) !important;
    box-shadow: 0 6px 18px rgba(106,17,203,0.55), 0 3px 10px rgba(37,117,252,0.35) !important;
    transform: translateY(-2px) !important;
}

html body #qvRegisterModal.modal .modal-dialog .modal-content button#qvRegisterModalSubmit:disabled {
    opacity: 0.6 !important;
    cursor: not-allowed !important;
}

/* Responsive adjustments */
@media (max-width: 576px) {
    #qvLoginModal .modal-content,
    #qvRegisterModal .modal-content { margin: 12px; }
    #qvLoginModal .modal-content .modal-body,
    #qvRegisterModal .modal-content .modal-body { padding: 12px; }
}

/* Apply .select-user-btn visual to the Login modal action button (#qvLoginModalSubmit)
   Scoped and specific to override inline styles where necessary. */
html body #qvLoginModal.modal .modal-dialog .modal-content button#qvLoginModalSubmit,
html body .modal-dialog .modal-content.qv-auth-modal button.qv-auth-primary-btn {
    /* copy .select-user-btn core styles */
    padding: 8px 18px !important;
    border: none !important;
    background: linear-gradient(135deg, #6a11cb 0%, #2575fc 100%) !important;
    color: #ffffff !important;
    border-radius: 6px !important;
    font-weight: 600 !important;
    font-size: 0.85rem !important;
    letter-spacing: 0.5px !important;
    text-transform: uppercase !important;
    box-shadow: 0 4px 12px rgba(106,17,203,0.35), 0 2px 6px rgba(0,0,0,0.25) !important;
    transition: all .3s ease !important;
    cursor: pointer !important;
    position: relative !important;
    overflow: hidden !important;
    z-index: 2; /* ensure content sits above the shimmer pseudo-element */
}

/* pseudo-element shimmer like .select-user-btn */
html body #qvLoginModal.modal .modal-dialog .modal-content button#qvLoginModalSubmit::before,
html body .modal-dialog .modal-content.qv-auth-modal button.qv-auth-primary-btn::before {
    /* exact shimmer from .select-user-btn */
    content: '';
    position: absolute;
    top: 0;
    left: -100%;
    width: 100%;
    height: 100%;
    background: linear-gradient(90deg, transparent, rgba(255,255,255,0.3), transparent);
    transition: left 0.5s ease;
    pointer-events: none;
    z-index: 1; /* below text (button has z-index:2) */
}

/* On hover, slide the shimmer across the full button (left animation identical to .select-user-btn) */
html body #qvLoginModal.modal .modal-dialog .modal-content button#qvLoginModalSubmit:hover::before,
html body .modal-dialog .modal-content.qv-auth-modal button.qv-auth-primary-btn:hover::before {
    left: 100%;
}

/* hover state matches .select-user-btn */
html body #qvLoginModal.modal .modal-dialog .modal-content button#qvLoginModalSubmit:hover,
html body .modal-dialog .modal-content.qv-auth-modal button.qv-auth-primary-btn:hover {
    /* match .select-user-btn hover: stronger gradient, enhanced shadow, slight lift */
    background: linear-gradient(135deg, #7c1fd4 0%, #3a88ff 100%) !important;
    box-shadow: 0 6px 18px rgba(106,17,203,0.55), 0 3px 10px rgba(37,117,252,0.35) !important;
    transform: translateY(-2px) !important;
}

/* Note: login button hover transform handled by its own rules (do not forcibly reset here) */

/* keep disabled appearance consistent */
html body #qvLoginModal.modal .modal-dialog .modal-content button#qvLoginModalSubmit:disabled,
html body .modal-dialog .modal-content.qv-auth-modal button.qv-auth-primary-btn:disabled {
    opacity: 0.6 !important;
    cursor: not-allowed !important;
}

/* Apply exactly the same visual of #qvLoginModalSubmit to the profile form "Guardar cambios" button
   Target the specific button inside the profile form to avoid affecting other .btn elements. */
html body form[action*="controllers/user/profile_update.php"] .d-grid > button.btn {
    /* reset potentially interfering properties */
    background: none !important;
    background-image: none !important;
    border: none !important;
    box-shadow: none !important;
    animation: none !important;
    transform: none !important;
    -webkit-transform: none !important;
    transition: none !important;
    position: relative !important;
    overflow: hidden !important;
    z-index: 2 !important;
    cursor: pointer !important;
    /* now apply the exact styles from #qvLoginModalSubmit */
    padding: 8px 18px !important;
    background: linear-gradient(135deg, #6a11cb 0%, #2575fc 100%) !important;
    color: #ffffff !important;
    border-radius: 6px !important;
    font-weight: 600 !important;
    font-size: 0.85rem !important;
    letter-spacing: 0.5px !important;
    text-transform: uppercase !important;
    box-shadow: 0 4px 12px rgba(106,17,203,0.35), 0 2px 6px rgba(0,0,0,0.25) !important;
    transition: all .3s ease !important;
}

/* shimmer pseudo-element for the profile save button (matches login button) */
html body form[action*="controllers/user/profile_update.php"] .d-grid > button.btn::before {
    content: '';
    position: absolute;
    top: 0;
    left: -100%;
    width: 100%;
    height: 100%;
    background: linear-gradient(90deg, transparent, rgba(255,255,255,0.3), transparent);
    transition: left 0.5s ease;
    pointer-events: none;
    z-index: 1;
}

html body form[action*="controllers/user/profile_update.php"] .d-grid > button.btn:hover::before {
    left: 100%;
}

html body form[action*="controllers/user/profile_update.php"] .d-grid > button.btn:hover {
    background: linear-gradient(135deg, #7c1fd4 0%, #3a88ff 100%) !important;
    box-shadow: 0 6px 18px rgba(106,17,203,0.55), 0 3px 10px rgba(37,117,252,0.35) !important;
    transform: translateY(-2px) !important;
}

html body form[action*="controllers/user/profile_update.php"] .d-grid > button.btn:disabled {
    opacity: 0.6 !important;
    cursor: not-allowed !important;
}

/* (Custom market select arrow removed — native select arrow will display) */


.qv-how-icon {
  font-size: 2.2rem;
  margin-bottom: .5rem;
  color: currentColor;   /* hereda el color del título */
  opacity: 0.75;         /* un poco más suave que el texto */
}

.qv-how-card {
  text-align: center;
  padding: 1.5rem 1.25rem;
  border-radius: 1rem;
  background: var(--qv-card-bg);
  color: inherit;        /* asegura herencia correcta */
}

.qv-how-card p {
  font-size: .95rem;
  line-height: 1.4;
}

.qv-clickable {
  cursor: pointer;
  transition: transform .2s ease, box-shadow .2s ease;
}

.qv-clickable:hover {
  transform: translateY(-3px); /* más sutil que antes */
  box-shadow: 0 8px 24px rgba(0,0,0,.15);
}

/* El icono “cobra vida” solo en cards clickeables */
.qv-clickable:hover .qv-how-icon {
  opacity: 1;
}

.qv-static {
  cursor: default;
}

/* ===============================
   NUEVOS OBJETOS DISPONIBLES - HOME
================================ */

.qv-new-items-wrapper {
  background: rgb(15 21 30 / 90%); /* igual que las 3 cajas de arriba */
  border-radius: 1rem;           
  box-shadow: 0 4px 12px rgba(0,0,0,.05); /* sutil */
  padding: 2.5rem 1rem;
  margin-top: 1rem;
  border: 1px solid rgba(102, 240, 255, 0.15);
}

.qv-new-items-container {
  text-align: center;
}

.qv-new-items-title {
  font-size: 1.5rem;
  margin-bottom: 1.5rem;
  font-weight: 700;
  color: #ffffff;
}

.qv-new-items-list {
  display: flex;
  flex-wrap: wrap;
  justify-content: center; /* si hay pocas fotos se centran */
  gap: 1rem;
}

.qv-new-item {
  width: 160px; /* caja un poco más grande */
  display: flex;
  flex-direction: column;
  align-items: center;
}

/* Wrapper para imagen con borde separado */
.qv-new-item-image-wrapper {
  width: 100%;
  padding: 4px; /* espacio entre imagen y borde */
  border-radius: 0.5rem;
  border: 1px solid rgba(102, 240, 255, 0.15); /* borde uniforme */
  box-sizing: border-box;
  transition: transform .15s ease, box-shadow .15s ease, border-color .15s ease;
}

.qv-new-item-image-wrapper img {
  width: 100%;
  border-radius: 0.45rem; /* mantiene bordes redondeados dentro del wrapper */
  display: block;
  object-fit: cover;
  transition: transform .15s ease, box-shadow .15s ease;
}

.qv-new-item:hover .qv-new-item-image-wrapper img {
  transform: scale(1.05);
  box-shadow: 0 8px 20px rgba(0,0,0,.25);
  border-color: rgba(102, 240, 255, 0.25);
}

.qv-new-item-name {
  display: block;
  margin-top: .5rem;
  font-size: .9rem;
  font-weight: 500;
  color: var(--qv-text);
  text-align: center;
  word-break: break-word;
}

/* Rarity text debajo del nombre */
.qv-new-item-rarity {
  display: block;
  margin-top: 0.25rem;
  font-size: .8rem;
  font-weight: 600;
  text-align: center;
  border: none;       /* elimina cualquier borde */
  padding-left: 0;    /* elimina espacio extra */
}

/* Eliminar pseudo-elementos que generen barras o símbolos */
.qv-new-item-rarity::before,
.qv-new-item-rarity::after {
  content: none !important;
  display: inline !important;
}

/* Colores según rareza */
.qv-new-item-rarity.rarity-common    { color: #8a8a8a; }    /* gris */
.qv-new-item-rarity.rarity-rare      { color: #2fd1ff; }    /* azul */
.qv-new-item-rarity.rarity-epic      { color: #a335ee; }    /* morado */
.qv-new-item-rarity.rarity-legendary { color: #ffd700; }    /* dorado */
.qv-new-item-rarity.rarity-mythic    { color: #ff5050; }    /* rojo intenso */

/* ===========================
   noticia como funciona
   =========================== */
.how-it-works {
  color: #fff;
  padding: 2rem;
  text-align: center;
  font-family: Arial, sans-serif;
  border-radius: 12px;
}

.how-it-works h2 {
  font-size: 2rem;
  margin-bottom: 1rem;
}

.how-it-works-main-img {
  width: 100%;            /* se ajusta al ancho del contenedor */
  max-width: 720px;       /* no se haga demasiado grande en desktop */
  height: auto;           /* mantiene proporción, no se recorta */
  display: block;
  margin: 0 auto 2rem auto; /* centra la imagen con espacio debajo */
  border-radius: 12px;
  box-shadow: 0 0 15px rgba(255,255,255,0.3);
  max-height: 300px;      /* limita la altura del contenedor */
}

.how-it-works-steps {
  display: flex;
  flex-wrap: wrap;
  justify-content: center;
  gap: 1rem;
}

.how-it-works-step {
  flex: 1 1 180px;
  background: #162447;
  padding: 1rem;
  border-radius: 12px;
  box-shadow: 0 0 10px rgba(0,0,0,0.5);
  text-align: center;       /* centra todo dentro del paso */
  display: flex;
  flex-direction: column;   /* asegura que número, título y párrafo estén en columna */
  align-items: center;      /* centra horizontalmente */
}

.step-number {
  font-size: 2rem;          /* número más grande */
  font-weight: bold;
  margin-bottom: 0.5rem;
  display: block;           /* garantiza que esté en bloque */
  text-align: center;
}

.how-it-works-step h3 {
  margin: 0 0 0.5rem 0;
  font-size: 1.2rem;
  line-height: 1.3;
}

.how-it-works-step p {
  font-size: 0.95rem;
  margin: 0.5rem 0 0 0;
}

.how-it-works-btn {
  display: inline-block;
  margin-top: 2rem;
  padding: 0.75rem 2rem;
  background: #e43f5a; /* color base */
  color: #fff;          /* texto blanco */
  text-decoration: none; /* sin subrayado */
  font-weight: bold;
  border-radius: 8px;
  box-shadow: 0 0 10px rgba(228,63,90,0.5);
  transition: 0.3s;
}

.how-it-works-btn:hover,
.how-it-works-btn:focus {
  background: #ff2d55; /* rojo más intenso en hover */
  color: #fff;         /* mantener texto blanco */
  text-decoration: none; /* sin subrayado */
}

.how-it-works-welcome {
  background: #23395d;
  color: #fff;
  padding: 1.5rem 2rem;
  border-radius: 12px;
  margin-top: 2rem;
  box-shadow: 0 0 10px rgba(0,0,0,0.3);
  text-align: center;
}

.how-it-works-welcome h3 {
  font-size: 1.6rem; /* título más grande */
  margin-bottom: 0.5rem;
}

.how-it-works-welcome p {
  font-size: 1rem;
  line-height: 1.5;
  margin: 0;
}

@media(max-width:768px) {
  .how-it-works-step {
    flex: 1 1 100%;
  }
}

/* Server time: use tabular/monospaced numerals to avoid layout shift when seconds change */
.server-time {
        font-variant-numeric: tabular-nums;
        font-feature-settings: "tnum";
}