/* #### CORRESPONDE AL LOGIN DEL LAUNCHER DE APLICACIONES ### */   
/* ── Para efecto de particulas ──────── */
#particle-canvas {
    position: fixed;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    z-index: -1;
    background: #0F2043; /* Fondo base azul oscuro */
    display: block;
    cursor: default;
}
/* ── Region de LOGIN ──────── */
.center {
    width: 100%;
}

.login {
    background: rgba(15, 32, 67, 0.85); /* Más opaco para contraste con partículas */
    border-radius: 10px;
    backdrop-filter: blur(5px);
}

/* Viñeta: el centro queda limpio detrás de la tarjeta y el efecto vive en
   los bordes. Mismo z-index que el canvas, pero se pinta encima porque
   ::after va después en el DOM. */
body:has(#particle-canvas)::after {
  content: "";
  position: fixed;
  inset: 0;
  z-index: -1;
  pointer-events: none;
  background: radial-gradient(ellipse 55% 60% at 50% 50%,
              rgba(15, 32, 67, .85) 0%,
              rgba(15, 32, 67, .45) 55%,
              transparent 100%);
}

/* Quien desactivó las animaciones en el sistema ve el fondo navy estático */
@media (prefers-reduced-motion: reduce) {
  body:has(#particle-canvas) { background: #0F2043; }
  #particle-canvas,
  body:has(#particle-canvas)::after { display: none; }
}

/* #### CORRESPONDE AL HOME DEL LAUNCHER DE APLICACIONES ### */   
/* ── Contenedor principal + Variables encapsuladas ──────── */
.inth-launcher {
    --inth-dark:    #0F2043;
    --inth-orange:  #FF7200;
    --inth-blue:    #179DCA;
    --inth-pink:    #E72863;
    --inth-purple:  #A603FC;

    --inth-bg:      #F4F6FA;
    --inth-surface: #FFFFFF;
    --inth-border:  #E2E8F0;
    --inth-text:    #2D3748;
    --inth-muted:   #718096;

    --radius-card:  16px;
    --radius-icon:  14px;
    --shadow-card:  0 2px 12px rgba(15, 32, 67, 0.08);
    --shadow-hover: 0 8px 28px rgba(15, 32, 67, 0.16);
    --transition:   all 0.25s cubic-bezier(0.4, 0, 0.2, 1);

    padding: 8px 0 32px;
    font-family: inherit;
}

/* ── Bloque de Producto (grupo/sección) ─────────────────── */
.inth-product-block {
    margin-bottom: 40px;
}

/* Header del producto */
.inth-product-header {
    display: flex;
    align-items: center;
    gap: 12px;
    margin-bottom: 20px;
    padding-bottom: 12px;
    border-bottom: 2px solid var(--inth-border);
}

.inth-product-header-bar {
    width: 4px;
    height: 24px;
    border-radius: 4px;
    background: var(--inth-blue);
    flex-shrink: 0;
}

.inth-product-title {
    font-size: 0.78rem;
    font-weight: 700;
    letter-spacing: 0.1em;
    text-transform: uppercase;
    color: var(--inth-dark);
    margin: 0;
}

.inth-product-count {
    margin-left: auto;
    font-size: 0.72rem;
    color: var(--inth-muted);
    background: var(--inth-bg);
    border: 1px solid var(--inth-border);
    border-radius: 20px;
    padding: 2px 10px;
    font-weight: 500;
}

/* ── Grid de aplicaciones ───────────────────────────────── */
.inth-apps-grid {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(220px, 1fr));
    gap: 16px;
}

/* ── Card de aplicación ─────────────────────────────────── */
.inth-app-card {
    background: var(--inth-surface);
    border: 1px solid var(--inth-border);
    border-radius: var(--radius-card);
    padding: 24px 20px 20px;
    text-decoration: none !important;
    display: flex;
    flex-direction: column;
    align-items: flex-start;
    gap: 14px;
    cursor: pointer;
    position: relative;
    overflow: hidden;
    box-shadow: var(--shadow-card);
    transition: var(--transition);
    color: var(--inth-text);
}

/* Línea de acento superior (color dinámico via inline style) */
.inth-app-card::before {
    content: '';
    position: absolute;
    top: 0;
    left: 0;
    right: 0;
    height: 3px;
    background: var(--card-accent, var(--inth-blue));
    border-radius: var(--radius-card) var(--radius-card) 0 0;
    opacity: 0;
    transition: var(--transition);
}

/* Fondo suave al hover */
.inth-app-card::after {
    content: '';
    position: absolute;
    inset: 0;
    background: var(--card-accent, var(--inth-blue));
    opacity: 0;
    transition: var(--transition);
    pointer-events: none;
}

.inth-app-card:hover {
    transform: translateY(-4px);
    box-shadow: var(--shadow-hover);
    border-color: transparent;
    text-decoration: none !important;
    color: var(--inth-text);
}

.inth-app-card:hover::before {
    opacity: 1;
}

.inth-app-card:hover::after {
    opacity: 0.04;
}

/* ── Ícono ──────────────────────────────────────────────── */
.inth-app-icon-wrap {
    width: 52px;
    height: 52px;
    border-radius: var(--radius-icon);
    display: flex;
    align-items: center;
    justify-content: center;
    background: var(--card-accent-light, rgba(23, 157, 202, 0.12));
    flex-shrink: 0;
    transition: var(--transition);
    position: relative;
    z-index: 1;
}

.inth-app-card:hover .inth-app-icon-wrap {
    transform: scale(1.08);
}

.inth-app-icon-wrap .fa,
.inth-app-icon-wrap [class*="fa-"] {
    font-size: 1.5rem;
    color: var(--card-accent, var(--inth-blue));
}

/* ── Textos ─────────────────────────────────────────────── */
.inth-app-info {
    flex: 1;
    position: relative;
    z-index: 1;
}

.inth-app-name {
    font-size: 0.9rem;
    font-weight: 700;
    color: var(--inth-dark);
    margin: 0 0 6px;
    line-height: 1.3;
}

.inth-app-desc {
    font-size: 0.78rem;
    color: var(--inth-muted);
    margin: 0;
    line-height: 1.5;
    display: -webkit-box;
    -webkit-line-clamp: 2;
    -webkit-box-orient: vertical;
    overflow: hidden;
}

/* ── Flecha de navegación ───────────────────────────────── */
.inth-app-arrow {
    position: absolute;
    bottom: 18px;
    right: 18px;
    opacity: 0;
    transform: translateX(-6px);
    transition: var(--transition);
    z-index: 1;
    color: var(--card-accent, var(--inth-blue));
    font-size: 0.75rem;
}

.inth-app-card:hover .inth-app-arrow {
    opacity: 1;
    transform: translateX(0);
}

/* ── Estado vacío ───────────────────────────────────────── */
.inth-empty {
    text-align: center;
    padding: 60px 20px;
    color: var(--inth-muted);
}

.inth-empty .fa {
    font-size: 3rem;
    opacity: 0.3;
    display: block;
    margin-bottom: 16px;
}

.inth-empty p {
    font-size: 0.9rem;
    margin: 0;
}

/* ── Responsive ─────────────────────────────────────────── */
@media (max-width: 768px) {
    .inth-apps-grid {
        grid-template-columns: repeat(auto-fill, minmax(160px, 1fr));
        gap: 12px;
    }

    .inth-app-card {
        padding: 18px 16px 16px;
    }

    .inth-app-icon-wrap {
        width: 44px;
        height: 44px;
    }

    .inth-app-icon-wrap .fa,
    .inth-app-icon-wrap [class*="fa-"] {
        font-size: 1.25rem;
    }
}

@media (max-width: 480px) {
    .inth-apps-grid {
        grid-template-columns: 1fr 1fr;
    }
}
