/* ===========================================================================
   ACADEMIA — data-driven (boas-vindas · módulos · vista de módulo)
   =========================================================================== */
.ac{ min-height:100vh; min-height:100dvh; background:var(--bg-base,#070A0F); color:var(--text-hi,#ECF1F8); }

/* Cabeçalho */
.ac-cabeca{ display:flex; align-items:center; justify-content:space-between; gap:16px;
  padding:16px 22px; border-bottom:1px solid var(--line,#1C242F);
  position:sticky; top:0; background:rgba(7,10,15,.86); backdrop-filter:blur(8px); z-index:30; }
.ac-marca{ display:flex; align-items:center; gap:12px; }
.ac-logo{ font-size:1.5rem; color:var(--accent,#00E6A0); }
.ac-titulo{ font-weight:700; }.ac-titulo span{ color:var(--accent,#00E6A0); }
.ac-sub{ font-size:.8rem; color:var(--text-mid,#9AA7B8); }
.ac-acoes-topo{ display:flex; align-items:center; gap:14px; }
.ac-voltar{ font-size:.86rem; color:var(--text-mid,#9AA7B8); text-decoration:none; white-space:nowrap; }
.ac-voltar:hover{ color:var(--text-hi,#ECF1F8); }
.ac-sair{ font-size:.86rem; color:var(--text-lo,#5E6C7E); text-decoration:none; }
.ac-sair:hover{ color:var(--text-mid,#9AA7B8); }

.ac-corpo{ max-width:1040px; margin:0 auto; padding:26px 22px 48px; }
.ac-voltar-bloco{ display:inline-block; margin-bottom:16px; }

/* Boas-vindas */
.ac-hero{ display:flex; align-items:center; justify-content:space-between; gap:20px;
  padding:22px 24px; border:1px solid var(--accent-line,rgba(0,230,160,.40)); border-radius:var(--r-lg,16px);
  background:linear-gradient(135deg, rgba(0,230,160,.08), transparent); margin-bottom:14px; }
.ac-hero h1{ font-size:clamp(1.4rem,3vw,1.7rem); margin-bottom:6px; letter-spacing:-.01em; }
.ac-hero p{ color:var(--text-mid,#9AA7B8); font-size:.92rem; max-width:62ch; }
.ac-hero-prog{ text-align:center; flex-shrink:0; }
.ac-anel{ width:84px; height:84px; }
.ac-anel circle{ fill:none; stroke-width:7; }
.ac-anel-base{ stroke:rgba(255,255,255,.08); }
.ac-anel-frente{ stroke:var(--temp,#B79BFF); stroke-linecap:round; transform:rotate(-90deg); transform-origin:center; transition:stroke-dashoffset .6s ease; }
.ac-anel-num{ font-size:1.05rem; font-weight:700; margin-top:2px; }
.ac-anel-rot{ font-size:.72rem; color:var(--text-lo,#5E6C7E); }
.ac-aviso{ font-size:.82rem; color:var(--text-lo,#5E6C7E); margin-bottom:22px; }
.ac-aviso-mod{ margin-top:22px; }

/* Grelha de módulos */
.ac-sec-tit{ font-size:.95rem; font-weight:700; margin:0 0 12px; }
.ac-modulos{ display:grid; grid-template-columns:repeat(3,1fr); gap:14px; }
.mod{ border:1px solid var(--line,#1C242F); border-radius:var(--r-lg,16px); background:rgba(255,255,255,.02);
  padding:18px; display:flex; flex-direction:column; gap:10px; cursor:pointer; transition:border-color .15s, transform .15s; }
.mod:hover{ border-color:var(--accent-line,rgba(0,230,160,.40)); transform:translateY(-2px); }
.mod.brev{ opacity:.66; cursor:default; }
.mod.brev:hover{ transform:none; border-color:var(--line,#1C242F); }
.mod-top{ display:flex; align-items:center; justify-content:space-between; }
.mod-ic{ width:42px; height:42px; border-radius:12px; display:grid; place-items:center; font-size:1.3rem;
  background:rgba(0,230,160,.08); border:1px solid var(--accent-line,rgba(0,230,160,.40)); }
.mod-nome{ font-size:1.05rem; font-weight:700; }
.mod-sub{ font-size:.84rem; color:var(--text-mid,#9AA7B8); line-height:1.45; flex:1; }
.mod-pe{ display:flex; align-items:center; justify-content:space-between; font-size:.82rem; color:var(--text-lo,#5E6C7E);
  border-top:1px solid var(--line,#1C242F); padding-top:11px; margin-top:2px; }
.mod-cont{ color:var(--accent,#00E6A0); font-weight:600; }
.mod-cta{ color:var(--accent,#00E6A0); }
.mod-pe-brev{ color:var(--amber,#FFC24B); }

.selo{ font-size:.66rem; padding:2px 9px; border-radius:var(--r-pill,999px); letter-spacing:.04em; white-space:nowrap; }
.selo.pro{ background:rgba(183,155,255,.14); color:var(--temp,#B79BFF); border:1px solid rgba(183,155,255,.35); }
.selo.free{ background:rgba(255,255,255,.04); color:var(--text-lo,#5E6C7E); border:1px solid var(--line,#1C242F); }
.selo.brev{ background:rgba(255,194,75,.12); color:var(--amber,#FFC24B); border:1px solid rgba(255,194,75,.35); }
.selo-mini{ font-size:.6rem; padding:1px 6px; vertical-align:middle; }

/* Vista de módulo */
.mv-cab{ display:flex; align-items:center; gap:14px; margin-bottom:18px; }
.mv-ic{ width:50px; height:50px; border-radius:14px; display:grid; place-items:center; font-size:1.6rem;
  background:rgba(0,230,160,.08); border:1px solid var(--accent-line,rgba(0,230,160,.40)); flex-shrink:0; }
.mv-cab h1{ font-size:1.4rem; }
.mv-cab p{ color:var(--text-mid,#9AA7B8); font-size:.88rem; }
.mv-grupos{ display:grid; grid-template-columns:1.4fr 1fr; gap:16px; }
.mv-grupo{ border:1px solid var(--line,#1C242F); border-radius:var(--r-lg,16px); background:rgba(255,255,255,.015); padding:16px; }
.mv-grupo h3{ font-size:.78rem; letter-spacing:.1em; text-transform:uppercase; color:var(--text-lo,#5E6C7E); margin-bottom:12px; }

.licao-item{ display:flex; align-items:center; gap:12px; padding:11px 12px; border:1px solid var(--line,#1C242F);
  border-radius:var(--r-md,12px); background:rgba(255,255,255,.02); margin-bottom:8px; text-decoration:none; color:inherit; transition:border-color .15s, background .15s; }
.licao-item:hover{ border-color:var(--accent-line,rgba(0,230,160,.40)); background:rgba(0,230,160,.04); }
.licao-n{ width:26px; height:26px; border-radius:50%; display:grid; place-items:center; font-size:.78rem; font-weight:700;
  flex-shrink:0; background:rgba(255,255,255,.05); color:var(--text-mid,#9AA7B8); }
.licao-item.feita .licao-n{ background:var(--accent,#00E6A0); color:#04130D; }
.licao-txt{ flex:1; min-width:0; }
.licao-tt{ display:block; font-size:.92rem; font-weight:600; }
.licao-st{ display:block; font-size:.74rem; color:var(--text-lo,#5E6C7E); }
.licao-ck{ color:var(--accent,#00E6A0); font-size:.95rem; }
.licao-seta{ color:var(--text-lo,#5E6C7E); }

.treino-card{ display:flex; align-items:center; gap:11px; padding:12px; border:1px solid var(--line,#1C242F);
  border-radius:var(--r-md,12px); background:rgba(255,255,255,.02); margin-bottom:9px; text-decoration:none; color:inherit; cursor:pointer; transition:border-color .15s; }
.treino-card:hover{ border-color:var(--accent-line,rgba(0,230,160,.40)); }
.treino-ic{ width:34px; height:34px; border-radius:9px; display:grid; place-items:center; font-size:1rem; flex-shrink:0;
  background:rgba(183,155,255,.1); color:var(--temp,#B79BFF); }
.treino-tt{ display:block; font-size:.9rem; font-weight:600; }
.treino-st{ display:block; font-size:.74rem; color:var(--text-lo,#5E6C7E); }
.teste-card{ border:1px solid rgba(255,194,75,.3); border-radius:var(--r-md,12px); background:rgba(255,194,75,.05); padding:13px; margin-top:4px; }
.teste-card .treino-ic{ background:rgba(255,194,75,.12); color:var(--amber,#FFC24B); }
.teste-card-link{ border:none; background:none; margin:0; padding:0; }
.teste-card-link:hover{ border:none; }
.teste-card.bloqueado{ opacity:.6; }
.teste-card.aberto{ border-color:rgba(255,194,75,.55); }

/* Estados vazios / erro / skeleton */
.ac-vazio{ text-align:center; padding:50px 20px; color:var(--text-mid,#9AA7B8); }
.ac-vazio-ic{ font-size:2.4rem; margin-bottom:10px; }
.ac-vazio-txt{ color:var(--text-lo,#5E6C7E); font-size:.86rem; }
.ac-erro{ color:var(--pa,#FF5C66); padding:20px 0; }
.ac-skeleton{ height:150px; border-radius:var(--r-lg,16px);
  background:linear-gradient(90deg, rgba(255,255,255,.03), rgba(255,255,255,.07), rgba(255,255,255,.03));
  background-size:200% 100%; animation:ac-sk 1.4s infinite; }
@keyframes ac-sk{ from{ background-position:200% 0; } to{ background-position:-200% 0; } }

/* Modal */
.ac-modal{ position:fixed; inset:0; background:rgba(0,0,0,.6); display:flex; align-items:center; justify-content:center; z-index:60; padding:20px; }
.ac-modal-caixa{ position:relative; width:100%; max-width:520px; background:var(--bg-sunken,#05070B);
  border:1px solid var(--line-strong,#2A3441); border-radius:var(--r-xl,22px); padding:24px; }
.ac-modal-x{ position:absolute; top:14px; right:14px; width:32px; height:32px; border-radius:8px;
  border:1px solid var(--line,#1C242F); background:rgba(255,255,255,.03); color:var(--text-mid,#9AA7B8); cursor:pointer; }
.ac-modal-cab h2{ font-size:1.2rem; margin-bottom:2px; }
.ac-modal-cab p{ color:var(--text-mid,#9AA7B8); font-size:.86rem; margin-bottom:16px; }
.ac-modal-info p{ color:var(--text-mid,#9AA7B8); font-size:.9rem; line-height:1.6; margin-bottom:10px; }
.ac-modal-nota{ color:var(--amber,#FFC24B); }

/* Toast */
.ac-toast{ position:fixed; bottom:24px; left:50%; transform:translateX(-50%); z-index:80;
  background:var(--bg-sunken,#05070B); border:1px solid var(--line-strong,#2A3441); color:var(--text-hi,#ECF1F8);
  padding:11px 18px; border-radius:var(--r-pill,999px); font-size:.86rem; box-shadow:0 8px 30px rgba(0,0,0,.5); transition:opacity .3s; }
.ac-toast.sai{ opacity:0; }

@media (max-width:760px){
  .ac-modulos{ grid-template-columns:1fr; }
  .mv-grupos{ grid-template-columns:1fr; }
  .ac-hero{ flex-direction:column; align-items:flex-start; }
}
@media (prefers-reduced-motion: reduce){
  .ac-skeleton, .ac-anel-frente{ animation:none; transition:none; }
}

/* --- Modal de treino/teste: scroll + quiz (v83) --- */
.ac-modal-caixa{ max-height:90vh; overflow-y:auto; }
.ac-quiz{ margin-top:4px; }
.ac-quiz-vazio{ color:var(--text-mid,#9AA7B8); font-size:.92rem; line-height:1.6; padding:8px 0 6px; }

/* ===========================================================================
   CONCLUSÃO DE MÓDULO — medalha nos cartões, parabéns e mini-certificado
   =========================================================================== */

/* --- Detalhe sob o anel de progresso global --- */
.ac-anel-det { margin-top: 3px; font-size: 10.5px; color: var(--text-lo); text-align: center; }

/* --- Cartão do módulo: medalha + barra de progresso --- */
.mod { position: relative; }
.mod.concluido { border-color: var(--accent-line); }
.mod-medalha {
  position: absolute; top: -10px; right: 14px; z-index: 2;
  display: inline-flex; align-items: center; gap: 6px;
  padding: 4px 11px 4px 8px; border-radius: 999px;
  background: var(--accent-soft); border: 1px solid var(--accent-line);
  backdrop-filter: blur(4px);
}
.mod-medalha-ic { font-size: 14px; line-height: 1; }
.mod-medalha-txt {
  font-family: var(--font-mono); font-size: 9.5px; letter-spacing: .1em;
  text-transform: uppercase; color: var(--accent); font-weight: 600;
}
.mod-prog { display: flex; align-items: center; gap: 9px; margin: 10px 0 2px; }
.mod-prog-barra {
  flex: 1; height: 5px; border-radius: 999px; overflow: hidden;
  background: var(--surface-3, rgba(255,255,255,0.07));
}
.mod-prog-barra i { display: block; height: 100%; border-radius: 999px; background: var(--accent); transition: width .4s ease; }
.mod-prog-txt { font-family: var(--font-mono); font-size: 10px; color: var(--text-lo); flex-shrink: 0; }

/* --- Faixa "já realizado" dentro do módulo --- */
.mv-concluido {
  display: flex; align-items: center; justify-content: space-between; gap: 16px; flex-wrap: wrap;
  margin: 0 0 18px; padding: 14px 18px; border-radius: 14px;
  background: var(--accent-soft); border: 1px solid var(--accent-line);
}
.mv-conc-esq { display: flex; align-items: center; gap: 13px; }
.mv-conc-med { font-size: 28px; line-height: 1; }
.mv-conc-tit {
  font-family: var(--font-mono); font-size: 11px; letter-spacing: .12em;
  text-transform: uppercase; color: var(--accent); font-weight: 600;
}
.mv-conc-sub { font-size: 13px; color: var(--text-mid); margin-top: 2px; }
.mv-conc-acoes { display: flex; gap: 9px; flex-wrap: wrap; }

/* --- Painel de parabéns no fim do teste final --- */
.ac-parabens { text-align: center; padding: 6px 0 14px; }
.ac-parabens-med { font-size: 46px; line-height: 1; margin-bottom: 6px; }
.ac-parabens-tit { margin: 0 0 4px; font-size: 20px; color: var(--text-hi); }
.ac-parabens-pont {
  margin: 0 0 10px; font-family: var(--font-mono); font-size: 12px;
  letter-spacing: .08em; color: var(--accent);
}
.ac-parabens-txt {
  margin: 0 auto; max-width: 460px; font-size: 13.5px; line-height: 1.6; color: var(--text-mid);
}

/* --- Mini-certificado (pré-visualização do PDF) --- */
.ac-minicert {
  margin: 18px auto 0; max-width: 430px; padding: 18px 20px;
  background: linear-gradient(160deg, rgba(0,230,160,0.07), rgba(255,255,255,0.02));
  border: 1px solid var(--accent-line); border-radius: 13px; text-align: center;
}
.ac-minicert-topo { display: flex; flex-direction: column; gap: 3px; margin-bottom: 12px; }
.ac-minicert-marca {
  font-family: var(--font-mono); font-size: 9.5px; letter-spacing: .24em; color: var(--accent);
}
.ac-minicert-rot {
  font-family: var(--font-mono); font-size: 8.5px; letter-spacing: .16em;
  text-transform: uppercase; color: var(--text-lo);
}
.ac-minicert-nome { font-size: 19px; font-weight: 700; color: var(--text-hi); }
.ac-minicert-mod { margin-top: 5px; font-size: 13.5px; color: var(--accent); font-weight: 600; }
.ac-minicert-pe {
  display: flex; justify-content: space-between; gap: 12px; margin-top: 14px; padding-top: 10px;
  border-top: 1px solid var(--accent-line);
  font-family: var(--font-mono); font-size: 9.5px; color: var(--text-lo);
}
.ac-cert-acoes {
  display: flex; flex-direction: column; align-items: center; gap: 9px; margin-top: 16px;
}
.ac-cert-estado { font-size: 12.5px; color: var(--text-lo); }
.ac-cert-nota {
  margin: 0; max-width: 420px; font-size: 11.5px; line-height: 1.5;
  color: var(--text-lo); text-align: center;
}

@media (max-width: 640px){
  .mv-concluido { flex-direction: column; align-items: flex-start; }
  .mv-conc-acoes { width: 100%; }
  .mv-conc-acoes .btn { flex: 1; text-align: center; }
  .ac-minicert { padding: 15px 16px; }
  .ac-minicert-nome { font-size: 17px; }
}

/* Lição reservada ao Pro: explicação e saída, em vez de página vazia */
.lic-pro {
  text-align: center; padding: 44px 22px;
  background: var(--surface-2); border: 1px dashed var(--line-strong);
  border-radius: 15px;
}
.lic-pro-ic {
  width: 52px; height: 52px; margin: 0 auto 14px;
  display: flex; align-items: center; justify-content: center;
  background: var(--accent-soft); border: 1px solid var(--accent-line);
  border-radius: 14px; font-size: 22px;
}
.lic-pro-tit { margin: 0 0 8px; font-size: 19px; color: var(--text-hi); }
.lic-pro-txt { margin: 0 auto 20px; max-width: 420px; font-size: 13.5px; line-height: 1.6; color: var(--text-lo); }
.lic-pro-acoes { display: flex; gap: 10px; justify-content: center; flex-wrap: wrap; }
