:root {
  --ifrn: #2f9e41;
  --ifrn-esc: #1f7a30;
  --ifrn-claro: #e8f5ea;
  --ifrn-verm: #cd191e;
}
body { background: #f4f6f5; }
[data-bs-theme="dark"] body { background: #16191a; }

.nav-ifrn { background: linear-gradient(90deg, var(--ifrn-esc), var(--ifrn)); box-shadow: 0 2px 6px rgba(0,0,0,.12); }
.logo-if { width: 38px; height: 38px; border-radius: 10px; display: grid; place-items: center; background: #fff; color: var(--ifrn); font-size: 1.35rem; }
.brand-sub { font-size: .7rem; opacity: .8; font-weight: 400; }
.avatar { width: 34px; height: 34px; border-radius: 50%; object-fit: cover; border: 2px solid rgba(255,255,255,.6); }

.btn-ifrn { --bs-btn-color:#fff; --bs-btn-bg:var(--ifrn); --bs-btn-border-color:var(--ifrn);
  --bs-btn-hover-color:#fff; --bs-btn-hover-bg:var(--ifrn-esc); --bs-btn-hover-border-color:var(--ifrn-esc);
  --bs-btn-active-bg:var(--ifrn-esc); --bs-btn-active-border-color:var(--ifrn-esc); --bs-btn-disabled-bg:var(--ifrn); --bs-btn-disabled-border-color:var(--ifrn); }
.nav-pills .nav-link.active { background: var(--ifrn); }
a { color: var(--ifrn-esc); }

.card { border: 0; border-radius: 14px; }
.card-header { background: transparent; border-bottom: 1px solid rgba(0,0,0,.06); }
.stat .stat-n { font-size: 2rem; font-weight: 700; color: var(--ifrn-esc); line-height: 1; }

.aula-card { border-top: 4px solid var(--ifrn); transition: transform .15s, box-shadow .15s; }
.aula-card.finalizada { border-top-color: #9aa3a0; }
.aula-card:hover { transform: translateY(-2px); box-shadow: 0 6px 18px rgba(0,0,0,.08); }

.card-livre { border-left: 4px solid #0dcaf0; }
.card-material { border-left: 4px solid #0d6efd; }
.icone-livre, .icone-material { width: 46px; height: 46px; border-radius: 12px; display: grid; place-items: center; font-size: 1.4rem; flex-shrink: 0; }
.icone-livre { background: #e3f8fc; color: #0a8aa3; }
.icone-material { background: #e7f0ff; color: #0d6efd; }
.alert-material { background: #e7f0ff; border: 0; color: #0b3d91; }

.enunciado-box { white-space: normal; border-left: 4px solid var(--ifrn); }
.tabela-alunos { max-height: 560px; overflow: auto; }

/* Login */
.login-wrap { min-height: 80vh; display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 1rem; }
.login-card { width: 100%; max-width: 430px; overflow: hidden; }
.login-top { background: linear-gradient(135deg, var(--ifrn-esc), var(--ifrn)); color: #fff; text-align: center; padding: 2rem 1.5rem 1.6rem; }
.logo-grande { width: 72px; height: 72px; margin: 0 auto .8rem; border-radius: 18px; background: #fff; color: var(--ifrn); display: grid; place-items: center; font-size: 2.4rem; }
.login-material { max-width: 430px; text-align: center; font-size: .9rem; color: #555; }
.login-diag { max-width: 640px; width: 100%; } .login-diag li { word-break: break-word; }

/* Relatório do material */
.grafico-dias { display: flex; align-items: flex-end; gap: 4px; height: 130px; }
.gd-col { flex: 1; display: flex; flex-direction: column; align-items: center; justify-content: flex-end; height: 100%; }
.gd-barra { width: 100%; background: var(--ifrn); border-radius: 4px 4px 0 0; min-height: 2px; }
.gd-n { font-size: .7rem; color: var(--ifrn-esc); font-weight: 600; }
.gd-d { font-size: .68rem; color: #888; margin-top: 2px; }

/* Chamada e tempo */
.lista-chamada { max-height: 420px; overflow: auto; }
.lista-chamada .falta { border-left: 3px solid var(--ifrn-verm); }
.ponto-online { display: inline-block; width: 8px; height: 8px; border-radius: 50%; background: #2fbf4a; margin-right: 6px; box-shadow: 0 0 0 3px rgba(47,191,74,.2); }
.barra-tempo { display: flex; height: 7px; border-radius: 4px; overflow: hidden; background: #e9ecef; margin-bottom: 3px; }
.bt-ativo { background: #2f9e41; } .bt-ocioso { background: #f0ad4e; } .bt-fora { background: #cd191e; }
.leg { display: inline-block; width: 10px; height: 10px; border-radius: 2px; vertical-align: middle; }
.linha-tempo summary { cursor: pointer; color: var(--ifrn-esc); font-size: .78rem; }
.linha-tempo ul { max-height: 180px; overflow: auto; font-size: .78rem; border-left: 2px solid #dee2e6; padding-left: 8px !important; margin-top: 4px; }
