.nict-app{ --navy:#2F487B; --navy-deep:#16233d; --wine:#9D3737; --wine-light:#b95555;
	--paper:#F6F2EA; --line:#E2D9C6; --ink:#1C1A17; --ink-soft:#645d53; --ok:#3f7a4f;
	font-family:'Inter',sans-serif; color:var(--ink); max-width:1100px; margin:0 auto;
}
.nict-app *{box-sizing:border-box;}
.nict-card{background:#fff; border:1px solid var(--line); border-radius:10px; padding:22px; margin-bottom:18px;}
.nict-card h2{font-family:'Fraunces',serif; font-weight:500; font-size:19px; margin:0 0 12px;}
.nict-muted{color:var(--ink-soft); font-size:13.5px;}
.nict-auth{max-width:380px; margin:20px auto; text-align:center;}
.nict-lock{font-size:32px; margin-bottom:8px;}
.nict-app label{display:block; font-size:11.5px; font-weight:600; text-transform:uppercase; letter-spacing:.04em; color:var(--ink-soft); margin:12px 0 4px;}
.nict-app input{width:100%; padding:9px 11px; border:1px solid var(--line); border-radius:6px; font-family:inherit; font-size:14px;}
.nict-btn{display:inline-block; margin-top:16px; padding:10px 20px; background:var(--wine); color:#fff !important; border:none; border-radius:6px; font-weight:600; font-size:14px; cursor:pointer; text-decoration:none;}
.nict-btn-outline{background:none; border:1.5px solid var(--line); color:var(--ink) !important;}
.nict-btn-tiny{width:100%; margin-top:4px; padding:4px 6px; background:var(--wine); color:#fff; border:none; border-radius:5px; font-size:10.5px; font-weight:600; cursor:pointer;}
.nict-btn-tiny.nict-ok{background:var(--ok); cursor:default;}
.nict-btn-tiny:disabled{opacity:.4; cursor:not-allowed;}
.nict-logged-bar{display:flex; justify-content:space-between; align-items:center; background:#fff; border:1px solid var(--line); border-radius:8px; padding:11px 16px; margin-bottom:16px; font-size:13.5px;}
.nict-logged-bar a{color:var(--wine); font-weight:600;}
.nict-nivel-toggle{display:flex; gap:8px; margin-bottom:16px;}
.nict-nivel-toggle a{padding:6px 16px; border-radius:20px; font-size:13px; font-weight:600; background:#f1ede4; color:var(--ink-soft); text-decoration:none;}
.nict-nivel-toggle a.active{background:var(--navy); color:#fff;}
.nict-alunos-list{margin-top:5px; display:flex; flex-direction:column; gap:3px;}
.nict-aluno-pill{font-size:10px; color:var(--navy); background:#eef1f6; border-radius:4px; padding:2px 6px;}
.nict-vazio{font-size:10.5px; color:#b6afa0; font-style:italic;}
.nict-badge{display:inline-block; font-size:11px; font-weight:700; padding:2px 7px; border-radius:20px; background:#eee; margin-left:6px;}
.nict-nivel-avancado{background:#f6e6e6; color:var(--wine);}
.nict-nivel-intermediario{background:#e5eef8; color:var(--navy);}
.nict-grid-wrap{overflow-x:auto;}
/* Cabeçalho (linha dos dias) fica numa tabela separada, num wrapper que é sticky de
   verdade (div simples, não célula de tabela — mais confiável entre navegadores).
   O scroll horizontal dela é sincronizado via JS com a tabela de dados. */
.nict-grid-head-wrap{
	overflow:hidden;
	position:sticky; top:var(--nict-sticky-top, 0px); z-index:5;
	box-shadow:0 2px 4px rgba(0,0,0,.08);
}
.nict-grid, .nict-grid-head-wrap table{border-collapse:separate; border-spacing:0; width:100%; min-width:900px; table-layout:fixed;}
.nict-grid th{background:var(--navy-deep); color:#fff; padding:5px 4px; font-size:10px; text-align:center; width:118px;}
.nict-grid td{border:1px solid var(--line); padding:4px; vertical-align:top; font-size:11px; width:118px;}
.nict-hour{font-weight:700; background:#faf8f3; text-align:center;}
/* Coluna de horário (cabeçalho + células) fixa na lateral esquerda durante o scroll horizontal,
   pra nunca sumir quando o aluno rola pra ver a segunda semana. Funciona igual nas duas
   tabelas (cabeçalho e corpo), já que ambas usam a classe .nict-grid. */
.nict-grid th:first-child,
.nict-grid td.nict-hour{
	position:sticky; left:0; z-index:2;
	box-shadow:2px 0 4px rgba(0,0,0,.08);
}
.nict-slot{background:#fdfcfa; border-radius:6px; padding:5px 6px;}
.nict-slot.nict-mine{border:2px solid var(--ok);}
.nict-slot .tema{font-weight:700; color:var(--navy); font-size:11.5px; line-height:1.25;}
.nict-slot .prof{color:var(--ink-soft); font-size:9.5px; margin:1px 0;}
.nict-slot .vagas{font-size:9.5px; font-weight:700;}
.nict-slot .vagas.ok{color:var(--ok);}
.nict-slot .vagas.full{color:var(--wine);}
.nict-row{display:flex; justify-content:space-between; align-items:center; padding:10px 0; border-bottom:1px solid var(--line); font-size:13.5px;}
.nict-row:last-child{border-bottom:none;}
.nict-cancel{color:var(--wine); font-weight:700; cursor:pointer; font-size:12.5px;}
.nict-empty{padding:24px; text-align:center; color:var(--ink-soft);}
.nict-msg{padding:10px 14px; border-radius:6px; font-size:13.5px; margin-bottom:14px;}
.nict-error{background:#fdeceb; color:#7a2a24;}
.nict-toast{position:fixed; bottom:20px; left:50%; transform:translateX(-50%); background:var(--navy-deep); color:#fff; padding:12px 20px; border-radius:8px; font-size:13.5px; z-index:999; opacity:0; transition:.3s;}
.nict-toast.show{opacity:1;}
/* ---- calendário mensal (visão do administrador) ---- */
.nict-vista-toggle{margin-bottom:18px;}
.nict-cal-topo{display:flex; align-items:center; justify-content:center; gap:18px; margin-bottom:2px;}
.nict-cal-topo h2{margin:0;}
.nict-cal-nav{text-decoration:none; font-size:19px; color:var(--navy); padding:2px 10px; border:1px solid var(--line); border-radius:6px; line-height:1.4;}
.nict-cal-nav:hover{background:#f1ece2;}
.nict-cal-resumo{text-align:center; margin-bottom:16px; font-size:12.5px;}
/* A barra de dias acompanha a rolagem. Segue o mesmo padrão já usado na grade de
   2 semanas: o JS separa a linha dos dias numa <div> própria e é ELA que fica
   sticky, porque position:sticky em célula de <table> tem bugs conhecidos em
   vários navegadores. O deslocamento vem de --nict-sticky-top, que o reservas.js
   calcula a partir da altura real do cabeçalho fixo do site. */
.nict-cal-head-wrap{
  overflow:hidden;
  position:sticky; top:var(--nict-sticky-top, 0px); z-index:5;
  box-shadow:0 2px 4px rgba(0,0,0,.08);
}
.nict-cal, .nict-cal-head-wrap table{width:100%; border-collapse:separate; border-spacing:0; table-layout:fixed;}
.nict-cal th{
  background:var(--navy-deep); color:var(--cream); font-size:12px; font-weight:600;
  padding:9px 4px; text-transform:uppercase; letter-spacing:0.06em;
}
@media (max-width: 800px){
  .nict-cal-wrap{overflow-x:auto;}
  .nict-cal, .nict-cal-head-wrap table{min-width:700px;}
}
.nict-cal-dia{border-right:1px solid var(--line); border-bottom:1px solid var(--line); vertical-align:top; height:104px; padding:5px 5px 7px; background:#fff;}
.nict-cal td:first-child{border-left:1px solid var(--line);}
.nict-cal-dia.fora{background:#faf8f3;}
.nict-cal-dia.passado{background:#f7f4ee;}
.nict-cal-dia.hoje{box-shadow:inset 0 0 0 2px var(--wine);}
.nict-cal-num{display:block; font-size:12px; font-weight:600; color:var(--ink-soft); margin-bottom:4px;}
.nict-cal-dia.fora .nict-cal-num{opacity:0.35;}
.nict-cal-dia.passado .nict-cal-aula{opacity:0.62;}
.nict-cal-aula{border-left:3px solid var(--navy); padding:3px 5px; margin-bottom:5px; background:#f6f2ea; border-radius:0 4px 4px 0; font-size:11px; line-height:1.35;}
.nict-cal-aula .hora{font-weight:700; color:var(--navy);}
.nict-cal-aula .tema{color:var(--ink); display:inline;}
.nict-cal-aula .prof{display:block; color:var(--ink-soft); font-size:10.5px;}
.nict-cal-aula .vagas{display:inline-block; margin-top:2px; font-size:10px; font-weight:700; color:var(--wine);}
.nict-cal-aula .nict-alunos-list{margin-top:3px;}
.nict-cal-aula .nict-aluno-pill{font-size:10px; padding:1px 5px; margin:1px 2px 1px 0;}
@media (max-width: 640px){
  .nict-cal-dia{height:auto; min-height:74px;}
}
/* Painel do professor: a aula dele em destaque, a dos colegas apagada e sem nomes. */
.nict-cal-aula.minha{border-left-color:var(--wine); background:#fdf1ef;}
.nict-cal-aula.de-outro{opacity:0.5; border-left-color:#c9c2b4;}
.nict-cal-aula.de-outro .tema{color:var(--ink-soft);}
.nict-ics-row{display:flex; gap:8px; align-items:center; flex-wrap:wrap;}
.nict-ics-row input{flex:1; min-width:200px; padding:9px 11px; border:1px solid var(--line); border-radius:6px; font-family:inherit; font-size:12px; background:#faf8f3; color:var(--ink-soft);}
.nict-ics-copy{margin-top:0; padding:9px 16px; font-size:13px; white-space:nowrap;}

@media (max-width:640px){
	.nict-logged-bar{flex-direction:column; align-items:flex-start; gap:6px;}
}
