/* ==========================================================================
   HACK ACADEMY — Estilos globais
   Paleta: Preto + Amarelo + Branco (identidade Ecossistema HACK BRASIL)
   ========================================================================== */

:root{
  --ha-black: #101010;
  --ha-black-soft: #1C1C1C;
  --ha-yellow: #FFC800;
  --ha-yellow-dark: #E0A800;
  --ha-yellow-light: #FFF3CC;
  --ha-gray: #64748B;
}

*{
  scroll-behavior: smooth;
}

body{
  font-family: 'Poppins', sans-serif;
  color: #101010;
  background-color: #FFFFFF;
}

.font-display{
  font-family: 'Poppins', sans-serif;
}

/* Scrollbar */
::-webkit-scrollbar{ width: 10px; }
::-webkit-scrollbar-track{ background: #F1F5F9; }
::-webkit-scrollbar-thumb{ background: var(--ha-yellow); border-radius: 10px; }
::-webkit-scrollbar-thumb:hover{ background: var(--ha-yellow-dark); }

/* Utility gradients */
.gradient-hero{
  background: linear-gradient(135deg, #050505 0%, #1a1a1a 55%, #0a0a0a 100%);
  position: relative;
}
.gradient-hero::before{
  content: '';
  position: absolute;
  inset: 0;
  background: radial-gradient(circle at 85% 20%, rgba(255,200,0,0.18) 0%, rgba(255,200,0,0) 55%);
  pointer-events: none;
}

.gradient-text{
  background: linear-gradient(90deg, var(--ha-yellow), var(--ha-yellow-dark));
  -webkit-background-clip: text;
  background-clip: text;
  color: transparent;
}

/* Legado de nomes de classe (brand-blue/brand-green) remapeados para a nova
   identidade preto & amarelo, mantendo compatibilidade com o HTML existente. */
.text-brand-blue{ color: var(--ha-black); }
.text-brand-green{ color: var(--ha-yellow-dark); }
.bg-brand-blue{ background-color: var(--ha-black); }
.bg-brand-green{ background-color: var(--ha-yellow); }

/* Novas classes explícitas amarelo/preto */
.text-brand-yellow{ color: var(--ha-yellow-dark); }
.bg-brand-yellow{ background-color: var(--ha-yellow); }
.text-brand-dark{ color: var(--ha-black); }
.bg-brand-dark{ background-color: var(--ha-black); }
.text-brand-yellow-dark{ color: var(--ha-yellow-dark); }
.hover\:text-brand-yellow-dark:hover{ color: var(--ha-yellow-dark); }
.hover\:text-brand-yellow:hover{ color: var(--ha-yellow); }
.hover\:bg-brand-yellow:hover{ background-color: var(--ha-yellow); }

/* Cards */
.course-card{
  transition: transform .25s ease, box-shadow .25s ease;
  border: 1px solid #EEF2F7;
}
.course-card:hover{
  transform: translateY(-6px);
  box-shadow: 0 20px 40px -12px rgba(16,16,16,0.18);
}

.link-underline{
  position: relative;
}
.link-underline::after{
  content: '';
  position: absolute;
  left: 0; bottom: -4px;
  width: 0%; height: 2px;
  background: var(--ha-yellow);
  transition: width .25s ease;
}
.link-underline:hover::after{ width: 100%; }

.nav-link.active{
  color: var(--ha-black);
  font-weight: 700;
  position: relative;
}
.nav-link.active::after{
  content: '';
  position: absolute;
  left: 0; right: 0; bottom: -22px;
  height: 3px;
  background: var(--ha-yellow);
  border-radius: 2px;
}

/* Buttons */
.btn-primary{
  background-color: var(--ha-black);
  color: var(--ha-yellow);
  transition: background-color .2s ease, transform .2s ease, color .2s ease;
}
.btn-primary:hover{
  background-color: #000;
  color: var(--ha-yellow);
  transform: translateY(-2px);
}
.btn-accent{
  background-color: var(--ha-yellow);
  color: var(--ha-black);
  transition: background-color .2s ease, transform .2s ease;
}
.btn-accent:hover{
  background-color: var(--ha-yellow-dark);
  transform: translateY(-2px);
}
.btn-outline{
  border: 2px solid #fff;
  color: #fff;
  transition: all .2s ease;
}
.btn-outline:hover{
  background-color: var(--ha-yellow);
  border-color: var(--ha-yellow);
  color: var(--ha-black);
}

/* Badges */
.badge{
  display: inline-flex;
  align-items: center;
  font-size: 0.75rem;
  font-weight: 600;
  padding: 0.25rem 0.65rem;
  border-radius: 999px;
}
.badge-blue{ background: var(--ha-black); color: var(--ha-yellow); }
.badge-green{ background: var(--ha-yellow); color: var(--ha-black); }
.badge-yellow{ background: var(--ha-yellow); color: var(--ha-black); }
.badge-dark{ background: var(--ha-black); color: var(--ha-yellow); }

/* Fade in animation */
.fade-in-up{
  animation: fadeInUp .6s ease both;
}
@keyframes fadeInUp{
  from{ opacity: 0; transform: translateY(16px); }
  to{ opacity: 1; transform: translateY(0); }
}

/* Loading skeleton */
.skeleton{
  background: linear-gradient(90deg, #F1F5F9 25%, #E2E8F0 37%, #F1F5F9 63%);
  background-size: 400% 100%;
  animation: skeleton-loading 1.4s ease infinite;
}
@keyframes skeleton-loading{
  0%{ background-position: 100% 50%; }
  100%{ background-position: 0 50%; }
}

/* Mobile menu */
#mobile-menu{
  transition: max-height .3s ease;
  overflow: hidden;
}

/* Progress bar */
.progress-track{
  background: #E2E8F0;
  border-radius: 999px;
  overflow: hidden;
  height: 10px;
}
.progress-fill{
  background: linear-gradient(90deg, var(--ha-black), var(--ha-yellow));
  height: 100%;
  border-radius: 999px;
}

/* Certificado — gerado 100% programaticamente em PDF (jsPDF), sem captura de HTML/CSS.
   A pré-visualização em tela é o próprio PDF exibido em um iframe. */
.cert-preview-wrap{
  border-radius: 0.75rem;
  overflow: hidden;
  border: 1px solid #E2E8F0;
  background: #F8FAFC;
}
.cert-pdf-preview{
  width: 100%;
  height: 480px;
  border: 0;
  display: block;
}
@media (max-width: 640px){
  .cert-pdf-preview{ height: 360px; }
}

/* Logo lockup */
.logo-icon{
  background: linear-gradient(145deg, #FFD23F, var(--ha-yellow) 60%, var(--ha-yellow-dark));
  display: flex;
  align-items: center;
  justify-content: center;
  color: var(--ha-black);
}

/* Desafio HACK — Simulado virtual */
.quiz-option-letter{
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 28px;
  height: 28px;
  min-width: 28px;
  border-radius: 8px;
  background: var(--ha-black);
  color: var(--ha-yellow);
  font-weight: 700;
  font-size: 0.8rem;
}
.quiz-option:disabled{
  cursor: default;
}
.quiz-option-correct{
  border-color: #16A34A !important;
  background: #F0FDF4 !important;
}
.quiz-option-correct .quiz-option-letter{
  background: #16A34A;
  color: #fff;
}
.quiz-option-wrong{
  border-color: #EF4444 !important;
  background: #FEF2F2 !important;
}
.quiz-option-wrong .quiz-option-letter{
  background: #EF4444;
  color: #fff;
}

/* ==========================================================================
   Sala de Aula — visualizador de slides, material complementar e certificado
   ========================================================================== */

/* Visualizador de slides (PDF) em destaque, foco principal da página */
.slide-viewer-frame{
  position: relative;
  width: 100%;
  background: #0a0a0a;
  border-radius: 1.25rem;
  overflow: hidden;
  box-shadow: 0 25px 50px -12px rgba(16,16,16,0.35);
  border: 3px solid var(--ha-black);
}
.slide-viewer-frame iframe{
  width: 100%;
  height: 78vh;
  min-height: 460px;
  border: 0;
  display: block;
  background: #fff;
}
@media (max-width: 768px){
  .slide-viewer-frame iframe{ height: 60vh; min-height: 360px; }
}

/* Visualizador de slides em canvas (avança com clique) */
.slide-canvas-wrap{
  width: 100%;
  height: 78vh;
  min-height: 460px;
  display: flex;
  align-items: center;
  justify-content: center;
  background: #0a0a0a;
  cursor: pointer;
  position: relative;
  user-select: none;
}
.slide-canvas-wrap canvas{
  max-width: 100%;
  max-height: 100%;
  background: #fff;
  box-shadow: 0 0 40px rgba(0,0,0,0.4);
}
.slide-loading{
  position: absolute;
  inset: 0;
  display: flex;
  align-items: center;
  justify-content: center;
  background: #0a0a0a;
}
.slide-loading.hidden{ display: none; }
@media (max-width: 768px){
  .slide-canvas-wrap{ height: 60vh; min-height: 360px; }
}

.slide-nav-btn{
  position: absolute;
  top: 50%;
  transform: translateY(-50%);
  width: 46px;
  height: 46px;
  border-radius: 999px;
  background: rgba(16,16,16,0.55);
  color: var(--ha-yellow);
  border: 2px solid var(--ha-yellow);
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 1rem;
  transition: background .2s ease, transform .2s ease;
  z-index: 5;
}
.slide-nav-btn:hover{ background: var(--ha-yellow); color: var(--ha-black); }
.slide-nav-btn:disabled{ opacity: 0.25; cursor: default; pointer-events: none; }
.slide-nav-prev{ left: 16px; }
.slide-nav-next{ right: 16px; }

.slide-counter{
  position: absolute;
  bottom: 14px;
  right: 16px;
  background: rgba(16,16,16,0.65);
  color: #fff;
  font-size: 0.75rem;
  font-weight: 600;
  padding: 4px 12px;
  border-radius: 999px;
  z-index: 5;
}

/* Capa do material complementar em formato A4, miniatura */
.material-a4-cover{
  display: flex;
  align-items: center;
  gap: 1.25rem;
}
.material-a4-thumb{
  width: 96px;
  aspect-ratio: 1 / 1.4142; /* proporção A4 */
  background: linear-gradient(160deg, #fff 0%, #F4F4F4 100%);
  border: 2px solid var(--ha-black);
  border-radius: 6px;
  position: relative;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  flex-shrink: 0;
  box-shadow: 0 10px 20px -8px rgba(16,16,16,0.25);
  transition: transform .2s ease;
}
.material-a4-cover:hover .material-a4-thumb{
  transform: translateY(-4px) rotate(-1deg);
}
.material-a4-thumb::before{
  content: '';
  position: absolute;
  top: 8px; left: 8px; right: 8px;
  height: 3px;
  background: var(--ha-yellow);
  border-radius: 2px;
}
.material-a4-thumb::after{
  content: '';
  position: absolute;
  top: 16px; left: 8px; right: 8px;
  height: 2px;
  background: #E2E8F0;
  box-shadow: 0 6px 0 #E2E8F0, 0 12px 0 #E2E8F0, 0 18px 0 #E2E8F0, 0 24px 0 #E2E8F0;
}
.material-a4-thumb i{
  color: var(--ha-black);
  font-size: 1.5rem;
  margin-top: auto;
  margin-bottom: 6px;
  z-index: 1;
}
.material-a4-thumb .a4-pdf-tag{
  background: var(--ha-black);
  color: var(--ha-yellow);
  font-size: 0.55rem;
  font-weight: 800;
  letter-spacing: .05em;
  padding: 1px 6px;
  border-radius: 3px;
  margin-bottom: 6px;
  z-index: 1;
}

/* Bloqueio de seção (Desafio HACK) até concluir os slides */
.classroom-locked{
  position: relative;
  filter: blur(0.5px);
  opacity: 0.55;
  pointer-events: none;
  user-select: none;
}
.classroom-lock-overlay{
  position: absolute;
  inset: 0;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  text-align: center;
  background: rgba(255,255,255,0.75);
  border-radius: 1rem;
  z-index: 10;
  padding: 1.5rem;
}

/* Selo de status: teoria concluída / aprovado */
.status-pill{
  display: inline-flex;
  align-items: center;
  gap: .4rem;
  font-size: 0.8rem;
  font-weight: 700;
  padding: 0.4rem 0.9rem;
  border-radius: 999px;
}
.status-pill-pending{ background: #F1F5F9; color: #64748B; }
.status-pill-done{ background: #F0FDF4; color: #16A34A; }

/* Barra de aprovação fixa no topo da sala de aula quando certificado liberado */
.approved-banner{
  background: linear-gradient(90deg, #101010, #1a1a1a);
  border: 1px solid var(--ha-yellow);
}
