/* ==========================================================================
   public.css - Sistema de diseno del sitio publico
   CER Management Group LLC | Virtual Classroom
   --------------------------------------------------------------------------
   Paleta tomada del logo oficial:
       navy   #14284B   texto de marca, fondos oscuros
       blue   #016599   color de accion, enlaces, acentos
       light  #0B7FBF   hover y degradados
       sky    #9FD3EE   detalles sobre fondo oscuro

   Se carga despues de layout.css. Solo aplica a las vistas publicas: todo
   cuelga de prefijos .pub-* o de .public-page, asi que no toca las pantallas
   privadas.
   ========================================================================== */

:root {
    --cer-navy:       #14284B;
    --cer-navy-soft:  #1D3A6B;
    --cer-blue:       #016599;
    --cer-blue-light: #0B7FBF;
    --cer-sky:        #9FD3EE;
    --cer-sky-bg:     #EAF3F9;
    --cer-ink:        #1B2733;
    --cer-muted:      #5C6B7A;
    --cer-line:       #DCE5EC;
    --cer-bg:         #F5F8FA;
    --cer-white:      #FFFFFF;
    --cer-radius:     14px;
    --cer-shadow:     0 6px 24px rgba(20, 40, 75, .08);
    --cer-shadow-lg:  0 14px 40px rgba(20, 40, 75, .14);
}


/* --------------------------------------------------------------------------
   Tipografia
   -------------------------------------------------------------------------- */

.public-page {
    font-family: 'Inter', system-ui, -apple-system, 'Segoe UI', Arial, sans-serif;
    color: var(--cer-ink);
    line-height: 1.65;
}

.public-page h1,
.public-page h2,
.public-page h3,
.public-page h4,
.public-page h5,
.pub-title,
.pub-hero-title {
    font-family: 'Barlow Condensed', 'Inter', system-ui, sans-serif;
    font-weight: 700;
    letter-spacing: .01em;
    color: var(--cer-navy);
    line-height: 1.15;
}

.pub-eyebrow {
    display: inline-block;
    font-family: 'Barlow Condensed', sans-serif;
    font-weight: 700;
    font-size: .95rem;
    letter-spacing: .18em;
    text-transform: uppercase;
    color: var(--cer-blue);
    margin-bottom: .5rem;
}

.pub-hero-title { font-size: clamp(2.1rem, 5.2vw, 3.6rem); text-transform: uppercase; }
.pub-title      { font-size: clamp(1.7rem, 3.6vw, 2.5rem); }
.pub-subtitle   { font-size: clamp(1.15rem, 2.2vw, 1.4rem); font-weight: 600; }

.pub-lead {
    font-size: 1.08rem;
    color: var(--cer-muted);
    max-width: 62ch;
}

.pub-rule {
    width: 64px;
    height: 4px;
    border: 0;
    border-radius: 2px;
    background: linear-gradient(90deg, var(--cer-blue), var(--cer-sky));
    margin: 1rem 0 1.5rem;
    opacity: 1;
}
.pub-rule.center { margin-left: auto; margin-right: auto; }


/* --------------------------------------------------------------------------
   Secciones
   -------------------------------------------------------------------------- */

.pub-section       { padding: clamp(2.5rem, 6vw, 4.5rem) 0; }
.pub-section.tight { padding: clamp(1.8rem, 4vw, 3rem) 0; }
.pub-section.alt   { background: var(--cer-sky-bg); }
.pub-section.white { background: var(--cer-white); }


/* --------------------------------------------------------------------------
   Hero
   -------------------------------------------------------------------------- */

.pub-hero {
    position: relative;
    overflow: hidden;
    color: var(--cer-white);
    background:
        radial-gradient(1200px 500px at 85% -10%, rgba(11,127,191,.55), transparent 60%),
        linear-gradient(135deg, var(--cer-navy) 0%, #16325E 55%, var(--cer-blue) 130%);
    padding: clamp(2.75rem, 7vw, 5rem) 0;
}

/* Trama geometrica sutil, sin imagenes externas */
.pub-hero::after {
    content: "";
    position: absolute;
    inset: 0;
    background-image:
        linear-gradient(rgba(255,255,255,.05) 1px, transparent 1px),
        linear-gradient(90deg, rgba(255,255,255,.05) 1px, transparent 1px);
    background-size: 42px 42px;
    pointer-events: none;
}

.pub-hero > .container { position: relative; z-index: 1; }
.pub-hero .pub-hero-title { color: var(--cer-white); }
.pub-hero .pub-eyebrow    { color: var(--cer-sky); }
.pub-hero .pub-lead       { color: rgba(255,255,255,.86); }

.pub-hero-tag {
    display: inline-flex;
    align-items: center;
    gap: .5rem;
    font-family: 'Barlow Condensed', sans-serif;
    font-weight: 700;
    letter-spacing: .16em;
    text-transform: uppercase;
    color: var(--cer-sky);
    background: rgba(255,255,255,.08);
    border: 1px solid rgba(159,211,238,.35);
    border-radius: 999px;
    padding: .35rem 1rem;
    font-size: .85rem;
}

.pub-hero-art {
    background: rgba(255,255,255,.06);
    border: 1px solid rgba(255,255,255,.14);
    border-radius: var(--cer-radius);
    padding: 1.25rem;
    backdrop-filter: blur(2px);
}


/* --------------------------------------------------------------------------
   Botones
   -------------------------------------------------------------------------- */

.btn-cer,
.btn-cer-outline,
.btn-cer-light {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: .55rem;
    font-family: 'Barlow Condensed', sans-serif;
    font-weight: 700;
    font-size: 1.05rem;
    letter-spacing: .09em;
    text-transform: uppercase;
    padding: .7rem 1.6rem;
    border-radius: 8px;
    border: 2px solid transparent;
    cursor: pointer;
    transition: all .18s ease;
    text-decoration: none;
}

.btn-cer {
    background: var(--cer-blue);
    border-color: var(--cer-blue);
    color: var(--cer-white);
}
.btn-cer:hover,
.btn-cer:focus {
    background: var(--cer-blue-light);
    border-color: var(--cer-blue-light);
    color: var(--cer-white);
    text-decoration: none;
    transform: translateY(-1px);
    box-shadow: var(--cer-shadow);
}

.btn-cer-outline {
    background: transparent;
    border-color: var(--cer-blue);
    color: var(--cer-blue);
}
.btn-cer-outline:hover {
    background: var(--cer-blue);
    color: var(--cer-white);
    text-decoration: none;
}

.btn-cer-light {
    background: var(--cer-white);
    border-color: var(--cer-white);
    color: var(--cer-navy);
}
.btn-cer-light:hover {
    background: var(--cer-sky);
    border-color: var(--cer-sky);
    color: var(--cer-navy);
    text-decoration: none;
}

.btn-cer.block,
.btn-cer-outline.block { width: 100%; }


/* --------------------------------------------------------------------------
   Tarjetas de contenido
   -------------------------------------------------------------------------- */

.pub-card {
    background: var(--cer-white);
    border: 1px solid var(--cer-line);
    border-radius: var(--cer-radius);
    padding: 1.75rem;
    transition: transform .18s ease, box-shadow .18s ease;
}

/* Igualar alturas SOLO en grillas donde la tarjeta es hija unica de su columna.
   Si se pone height:100% en la clase base, una tarjeta que convive con otros
   elementos dentro de una columna estirada por Bootstrap (align-items:stretch)
   crece hasta la altura completa de la columna y se desborda. */
.pub-card.fill { height: 100%; }
.pub-card:hover {
    transform: translateY(-3px);
    box-shadow: var(--cer-shadow);
}

.pub-card-icon {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 54px;
    height: 54px;
    border-radius: 12px;
    font-size: 1.5rem;
    margin-bottom: 1rem;
    background: var(--cer-sky-bg);
    color: var(--cer-blue);
}
.pub-card-icon.navy  { background: var(--cer-navy); color: var(--cer-sky); }
.pub-card-icon.blue  { background: var(--cer-blue); color: var(--cer-white); }
.pub-card-icon.light { background: var(--cer-sky); color: var(--cer-navy); }

.pub-card h3,
.pub-card h4 { font-size: 1.35rem; margin-bottom: .5rem; }
.pub-card p  { color: var(--cer-muted); margin-bottom: 0; }


/* --------------------------------------------------------------------------
   Pasos numerados
   -------------------------------------------------------------------------- */

.pub-step { position: relative; padding-left: 4.25rem; margin-bottom: 2rem; }

.pub-step-num {
    position: absolute;
    left: 0;
    top: 0;
    width: 52px;
    height: 52px;
    border-radius: 50%;
    display: flex;
    align-items: center;
    justify-content: center;
    font-family: 'Barlow Condensed', sans-serif;
    font-weight: 700;
    font-size: 1.5rem;
    color: var(--cer-white);
    background: linear-gradient(135deg, var(--cer-navy), var(--cer-blue));
}

.pub-step h4 { font-size: 1.2rem; margin-bottom: .25rem; }
.pub-step p  { color: var(--cer-muted); margin-bottom: 0; }


/* --------------------------------------------------------------------------
   Listas con check
   -------------------------------------------------------------------------- */

.pub-list { list-style: none; padding-left: 0; margin: 0; }

.pub-list li {
    position: relative;
    padding-left: 2rem;
    margin-bottom: .85rem;
    color: var(--cer-ink);
}

.pub-list li::before {
    content: "\F26E";              /* bi-check-circle-fill */
    font-family: "bootstrap-icons";
    position: absolute;
    left: 0;
    top: .05rem;
    color: var(--cer-blue);
    font-size: 1.1rem;
}

.pub-list.on-dark li          { color: rgba(255,255,255,.9); }
.pub-list.on-dark li::before  { color: var(--cer-sky); }


/* --------------------------------------------------------------------------
   Metricas
   -------------------------------------------------------------------------- */

.pub-stat { text-align: center; padding: 1rem .5rem; }

.pub-stat-num {
    font-family: 'Barlow Condensed', sans-serif;
    font-weight: 700;
    font-size: clamp(2.2rem, 5vw, 3rem);
    line-height: 1;
    color: var(--cer-blue);
    display: block;
}

.pub-stat-label {
    font-size: .9rem;
    text-transform: uppercase;
    letter-spacing: .1em;
    color: var(--cer-muted);
    margin-top: .35rem;
    display: block;
}

.pub-hero .pub-stat-num   { color: var(--cer-sky); }
.pub-hero .pub-stat-label { color: rgba(255,255,255,.7); }


/* --------------------------------------------------------------------------
   Planes
   -------------------------------------------------------------------------- */

.plan-card {
    background: var(--cer-white);
    border: 1px solid var(--cer-line);
    border-radius: var(--cer-radius);
    overflow: hidden;
    height: 100%;
    display: flex;
    flex-direction: column;
    transition: transform .18s ease, box-shadow .18s ease;
}
.plan-card:hover { transform: translateY(-4px); box-shadow: var(--cer-shadow-lg); }

.plan-card-head {
    background: linear-gradient(135deg, var(--cer-navy), var(--cer-blue));
    color: var(--cer-white);
    padding: 1.5rem 1.25rem;
    text-align: center;
}
.plan-card-head h3 {
    color: var(--cer-white);
    font-size: 1.4rem;
    margin: 0;
    text-transform: uppercase;
    letter-spacing: .04em;
}

.plan-card-body { padding: 1.5rem 1.5rem .5rem; flex: 1 1 auto; }
.plan-card-foot { padding: 1rem 1.5rem 1.75rem; text-align: center; }

.plan-feature {
    display: flex;
    align-items: baseline;
    justify-content: space-between;
    gap: 1rem;
    padding: .6rem 0;
    border-bottom: 1px dashed var(--cer-line);
}
.plan-feature:last-child { border-bottom: 0; }
.plan-feature .label { color: var(--cer-ink); }
.plan-feature .qty {
    font-family: 'Barlow Condensed', sans-serif;
    font-weight: 700;
    font-size: 1.25rem;
    color: var(--cer-blue);
    white-space: nowrap;
}

.plan-badge {
    display: inline-block;
    background: var(--cer-sky);
    color: var(--cer-navy);
    font-family: 'Barlow Condensed', sans-serif;
    font-weight: 700;
    letter-spacing: .12em;
    text-transform: uppercase;
    font-size: .78rem;
    padding: .2rem .7rem;
    border-radius: 999px;
    margin-bottom: .5rem;
}


/* --------------------------------------------------------------------------
   Formularios
   -------------------------------------------------------------------------- */

.pub-form-card {
    background: var(--cer-white);
    border: 1px solid var(--cer-line);
    border-radius: var(--cer-radius);
    box-shadow: var(--cer-shadow);
    padding: clamp(1.5rem, 4vw, 2.5rem);
}

.pub-label {
    font-family: 'Barlow Condensed', sans-serif;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: .1em;
    font-size: .9rem;
    color: var(--cer-navy);
    margin-bottom: .3rem;
    display: block;
}

.pub-form-card .form-control {
    border: 1px solid var(--cer-line);
    border-radius: 8px;
    padding: .65rem .9rem;
    height: auto;
    color: var(--cer-ink);
}
.pub-form-card .form-control:focus {
    border-color: var(--cer-blue);
    box-shadow: 0 0 0 .2rem rgba(1,101,153,.15);
}

.pub-captcha {
    display: flex;
    align-items: center;
    gap: 1rem;
    flex-wrap: wrap;
    background: var(--cer-sky-bg);
    border: 1px dashed var(--cer-line);
    border-radius: 10px;
    padding: .85rem;
    margin-bottom: .75rem;
}
.pub-captcha img { border-radius: 6px; }

.pub-alert {
    border-radius: 10px;
    padding: .8rem 1rem;
    font-size: .95rem;
    margin-bottom: 1rem;
    border: 1px solid transparent;
    /* Un token de 64 caracteres o una URL larga no deben desbordar la tarjeta
       en pantalla chica: se parten donde haga falta. */
    overflow-wrap: anywhere;
    word-break: break-word;
}
.pub-alert.ok   { background: #E9F7EF; border-color: #BFE6CE; color: #1E6B41; }
.pub-alert.err  { background: #FDECEC; border-color: #F6C6C6; color: #A32222; }
.pub-alert.warn { background: #FFF6E5; border-color: #F0D9A8; color: #7A5A12; }
.pub-alert.info { background: var(--cer-sky-bg); border-color: var(--cer-line); color: var(--cer-muted); }
.pub-alert.info i { color: var(--cer-blue); }
.pub-alert i    { margin-right: .4rem; }
.pub-alert a    { overflow-wrap: anywhere; }

/* Codigo en linea dentro del sitio publico (rutas de archivo, tokens) */
.public-page code {
    background: rgba(20,40,75,.06);
    border-radius: 4px;
    padding: .1rem .35rem;
    font-size: .88em;
    overflow-wrap: anywhere;
}


/* --------------------------------------------------------------------------
   Pantallas de autenticacion (login, recuperar, definir contrasena)
   -------------------------------------------------------------------------- */

.pub-auth {
    background: var(--cer-sky-bg);
    min-height: 70vh;
}

.pub-auth-note {
    color: var(--cer-muted);
    margin-bottom: 1.25rem;
}

.pub-auth-link {
    color: var(--cer-blue);
}

/* El bloque de la tarjeta nunca debe forzar scroll horizontal */
.pub-form-card { overflow-wrap: break-word; }


/* --------------------------------------------------------------------------
   Bloque de contacto / CTA final
   -------------------------------------------------------------------------- */

.pub-cta {
    background: linear-gradient(135deg, var(--cer-navy), var(--cer-blue));
    color: var(--cer-white);
    border-radius: var(--cer-radius);
    padding: clamp(1.75rem, 5vw, 3rem);
    text-align: center;
}
.pub-cta h2 { color: var(--cer-white); }
.pub-cta p  { color: rgba(255,255,255,.85); max-width: 60ch; margin: 0 auto 1.5rem; }

.pub-contact-item {
    display: flex;
    align-items: flex-start;
    gap: .85rem;
    margin-bottom: 1.1rem;
}
.pub-contact-item i {
    color: var(--cer-blue);
    font-size: 1.15rem;
    margin-top: .15rem;
}
.pub-contact-item a { color: var(--cer-ink); }
.pub-contact-item a:hover { color: var(--cer-blue); }


/* --------------------------------------------------------------------------
   Paginas legales
   -------------------------------------------------------------------------- */

.pub-legal {
    background: var(--cer-white);
    border: 1px solid var(--cer-line);
    border-radius: var(--cer-radius);
    padding: clamp(1.5rem, 4vw, 3rem);
}
.pub-legal h2 { font-size: 1.4rem; margin-top: 2rem; }
.pub-legal h2:first-of-type { margin-top: 0; }
.pub-legal p  { color: var(--cer-muted); }
.pub-legal a  { color: var(--cer-blue); }


/* --------------------------------------------------------------------------
   Imagenes
   -------------------------------------------------------------------------- */

.pub-img {
    width: 100%;
    border-radius: var(--cer-radius);
    box-shadow: var(--cer-shadow);
    object-fit: cover;
}
.pub-img.tall { max-height: 430px; }


/* --------------------------------------------------------------------------
   Ajustes moviles
   -------------------------------------------------------------------------- */

@media (max-width: 767.98px) {
    .pub-step      { padding-left: 3.5rem; }
    .pub-step-num  { width: 42px; height: 42px; font-size: 1.2rem; }
    .btn-cer,
    .btn-cer-outline,
    .btn-cer-light { width: 100%; }
    .pub-hero      { text-align: center; }
    .pub-hero .pub-lead { margin-left: auto; margin-right: auto; }
    .pub-rule      { margin-left: auto; margin-right: auto; }
}
