/* Planejamento do Curso de Fisioterapia - folha unica, sem framework.
   Paleta clara e escura via prefers-color-scheme. */

:root {
  --fundo: #f6f7f9;
  --superficie: #ffffff;
  --superficie-2: #f0f2f5;
  --borda: #d8dce3;
  --borda-forte: #b9c0cb;
  --texto: #1c2530;
  --texto-fraco: #5c6675;
  --primaria: #1c5d8c;
  --primaria-clara: #e5f0f8;
  --ok: #1f7a4d;
  --ok-fundo: #e6f5ed;
  --aviso: #9a6400;
  --aviso-fundo: #fdf3e0;
  --erro: #b3261e;
  --erro-fundo: #fdeceb;
  --sombra: 0 1px 2px rgba(16, 24, 40, .06), 0 1px 3px rgba(16, 24, 40, .1);
  --raio: 8px;
}

@media (prefers-color-scheme: dark) {
  :root {
    --fundo: #14181d;
    --superficie: #1b2027;
    --superficie-2: #232932;
    --borda: #333c47;
    --borda-forte: #47525f;
    --texto: #e6eaef;
    --texto-fraco: #9aa5b3;
    --primaria: #6bb2e2;
    --primaria-clara: #17303f;
    --ok: #5cc48d;
    --ok-fundo: #14301f;
    --aviso: #e0b063;
    --aviso-fundo: #322612;
    --erro: #f28b82;
    --erro-fundo: #3a1c1a;
    --sombra: 0 1px 3px rgba(0, 0, 0, .4);
  }
}

* { box-sizing: border-box; }

body {
  margin: 0;
  background: var(--fundo);
  color: var(--texto);
  font: .9375rem/1.55 system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;
}

a { color: var(--primaria); }

/* ---------- Topo ---------- */
.topo {
  display: flex;
  align-items: center;
  gap: 24px;
  padding: 10px 20px;
  background: var(--superficie);
  border-bottom: 1px solid var(--borda);
  flex-wrap: wrap;
}

.marca {
  display: flex;
  flex-direction: column;
  text-decoration: none;
  color: var(--texto);
  line-height: 1.2;
}
.marca span { font-size: .75rem; color: var(--texto-fraco); }

.topo nav { display: flex; gap: 4px; flex-wrap: wrap; flex: 1; }
.topo nav a {
  padding: 6px 11px;
  border-radius: var(--raio);
  text-decoration: none;
  color: var(--texto-fraco);
  font-weight: 500;
}
.topo nav a:hover { background: var(--superficie-2); color: var(--texto); }
.topo nav a.ativo { background: var(--primaria-clara); color: var(--primaria); }
.topo nav.navegacao-gestao { gap: 8px; }
.topo nav.navegacao-gestao a:not(:first-child) {
  padding: 8px 14px;
  border: 1px solid var(--borda);
  background: var(--superficie-2);
  color: var(--texto);
  font-weight: 600;
}
.topo nav.navegacao-gestao a:not(:first-child):hover {
  border-color: var(--borda-forte);
  background: var(--superficie);
}
.topo nav.navegacao-gestao a:not(:first-child).ativo {
  border-color: var(--primaria);
  background: var(--primaria-clara);
  color: var(--primaria);
}

/* Segunda barra: telas aninhadas do item de menu ativo. */
.nav-inicio{--area-cor:#475569;--area-fundo:#f1f5f9}
.nav-grade{--area-cor:#175d91;--area-fundo:#eaf3fb}
.nav-estagio{--area-cor:#176343;--area-fundo:#e8f5ed}
.nav-gestao{--area-cor:#765017;--area-fundo:#fbf2df}
.nav-ppc{--area-cor:#68428e;--area-fundo:#f3edf9}
.nav-planejamento{--area-cor:#7d4b16;--area-fundo:#fcf1df}
.nav-relatorios{--area-cor:#086573;--area-fundo:#e5f5f6}
.nav-dev{--area-cor:#4c5265;--area-fundo:#eef0f5}
.topo nav.navegacao-areas{gap:7px;align-items:center;order:3;flex-basis:100%;flex-grow:0}
.topo nav.navegacao-areas:empty{display:none}
.topo:has(.navegacao-areas){row-gap:10px}
.topo:has(.navegacao-areas)>.usuario{margin-left:auto}
.topo .navegacao-areas .nav-area{padding:9px 13px;border:1px solid var(--borda);border-bottom:3px solid var(--area-cor);background:var(--area-fundo);color:var(--area-cor);font-weight:600;white-space:nowrap;line-height:1.4}
.topo .navegacao-areas .nav-area:hover{border-color:var(--area-cor);background:var(--area-fundo);color:var(--area-cor)}
.topo .navegacao-areas .nav-area.ativo{background:var(--area-cor);border-color:var(--area-cor);color:#fff}
.topo .navegacao-areas .nav-area:focus-visible,.subnav-area a:focus-visible{outline:3px solid var(--area-cor);outline-offset:3px}
.subnav.subnav-area{border-bottom-color:var(--area-cor)}
.subnav.subnav-area a.ativo{color:var(--area-cor);background:var(--area-fundo);box-shadow:inset 0 -2px var(--area-cor)}
@media(max-width:600px){.topo nav.navegacao-areas{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:7px}.topo .navegacao-areas .nav-area{text-align:center;white-space:normal;padding:9px 7px}.subnav-area{gap:6px}.subnav-area a{padding:8px 10px}}
.subnav {
  display: flex;
  gap: 4px;
  flex-wrap: wrap;
  margin: 0 0 18px;
  padding-bottom: 8px;
  border-bottom: 1px solid var(--borda);
}
.subnav a {
  padding: 5px 10px;
  border-radius: var(--raio);
  text-decoration: none;
  color: var(--texto-fraco);
  font-size: .875rem;
  font-weight: 500;
}
.subnav a:hover { background: var(--superficie-2); color: var(--texto); }
.subnav a.ativo { background: var(--primaria-clara); color: var(--primaria); }

.usuario { display: flex; align-items: center; gap: 12px; font-size: .8125rem; flex-wrap: wrap; }
.usuario .nome { color: var(--texto-fraco); }
.seletor-papel { display: flex; align-items: center; gap: 6px; }
.seletor-papel label { color: var(--texto-fraco); font-size: .75rem; }
.papel-unico { color: var(--texto-fraco); font-size: .75rem; }

.atalho-sugestao { white-space: nowrap; text-decoration: none; }
.controle-fonte {
  display: inline-flex;
  align-items: center;
  gap: 2px;
  padding: 2px;
  border: 1px solid var(--borda);
  border-radius: var(--raio);
  background: var(--superficie-2);
}
.controle-fonte .icone-lupa { padding: 0 4px; }
.controle-fonte-botao {
  min-width: 2rem;
  padding: 3px 6px;
  border: 0;
  background: transparent;
  color: var(--texto);
  font-weight: 600;
}
.controle-fonte-botao.escala { min-width: 3.25rem; color: var(--texto-fraco); font-weight: 500; }
.controle-fonte-botao:hover, .controle-fonte-botao:focus-visible { background: var(--superficie); }

.faixa-personificacao {
  background: var(--aviso-fundo);
  color: var(--aviso);
  padding: 8px 20px;
  font-size: .8125rem;
  border-bottom: 1px solid var(--borda);
}

/* ---------- Layout ---------- */
main { max-width: 1080px; margin: 24px auto; padding: 0 20px; }
main.larga { max-width: 1500px; }

h1 { font-size: 1.375rem; margin: 0 0 4px; }
h2 { font-size: 1rem; margin: 0 0 12px; }
h3 { font-size: .875rem; margin: 18px 0 8px; color: var(--texto-fraco); text-transform: uppercase; letter-spacing: .04em; }
.subtitulo { color: var(--texto-fraco); margin: 0 0 20px; }

.cartao {
  background: var(--superficie);
  border: 1px solid var(--borda);
  border-radius: var(--raio);
  padding: 16px 18px;
  margin-bottom: 16px;
  box-shadow: var(--sombra);
}

.grade-cartoes { display: grid; gap: 16px; grid-template-columns: repeat(auto-fit, minmax(280px, 1fr)); }

.vazio { color: var(--texto-fraco); font-style: italic; }

/* ---------- Alertas ---------- */
.alerta {
  padding: 10px 14px;
  border-radius: var(--raio);
  margin-bottom: 16px;
  border: 1px solid transparent;
}
.alerta.erro { background: var(--erro-fundo); color: var(--erro); border-color: var(--erro); }
.alerta.aviso { background: var(--aviso-fundo); color: var(--aviso); border-color: var(--aviso); }
.alerta.sucesso { background: var(--ok-fundo); color: var(--ok); border-color: var(--ok); }

/* ---------- Badges ---------- */
.badge {
  display: inline-block;
  padding: 2px 8px;
  border-radius: 999px;
  font-size: .75rem;
  font-weight: 600;
  background: var(--superficie-2);
  color: var(--texto-fraco);
}
.badge.ok { background: var(--ok-fundo); color: var(--ok); }
.badge.aviso { background: var(--aviso-fundo); color: var(--aviso); }
.badge.erro { background: var(--erro-fundo); color: var(--erro); }

/* ---------- Tabelas ---------- */
.tabela-rolavel { overflow-x: auto; }
table { border-collapse: collapse; width: 100%; font-size: .875rem; }
th, td { text-align: left; padding: 8px 10px; border-bottom: 1px solid var(--borda); vertical-align: top; }
th { color: var(--texto-fraco); font-size: .75rem; text-transform: uppercase; letter-spacing: .03em; font-weight: 600; }
tbody tr:hover { background: var(--superficie-2); }
td.num, th.num { text-align: right; font-variant-numeric: tabular-nums; }
.detalhe-checklist { display: block; max-width: 240px; margin-top: 3px; color: var(--texto-fraco); font-size: .6875rem; }

/* ---------- Formularios ---------- */
label { display: block; font-size: .8125rem; color: var(--texto-fraco); margin-bottom: 4px; }
input[type=text], input[type=email], input[type=number], input[type=date], select, textarea {
  width: 100%;
  padding: 8px 10px;
  border: 1px solid var(--borda-forte);
  border-radius: var(--raio);
  background: var(--superficie);
  color: var(--texto);
  font: inherit;
}
input:focus, select:focus, textarea:focus { outline: 2px solid var(--primaria); outline-offset: 1px; }
option:disabled { color: var(--texto-fraco); background: var(--superficie-2); }
textarea { min-height: 76px; resize: vertical; }

.campo { margin-bottom: 14px; }
.linha-campos { display: grid; gap: 14px; grid-template-columns: repeat(auto-fit, minmax(180px, 1fr)); }
.grade-opcoes { display: grid; gap: 10px; grid-template-columns: repeat(auto-fit, minmax(190px, 1fr)); }
.grade-opcoes .opcao {
  display: flex;
  align-items: flex-start;
  gap: 8px;
  margin: 0;
  padding: 10px 12px;
  border: 1px solid var(--borda);
  border-radius: var(--raio);
  background: var(--superficie-2);
  color: var(--texto);
}
.grade-opcoes .opcao input { width: auto; margin-top: 3px; }
.grade-opcoes .opcao:has(input:disabled) { opacity: .55; }

button, .botao {
  display: inline-block;
  padding: 8px 16px;
  border: 1px solid var(--primaria);
  border-radius: var(--raio);
  background: var(--primaria);
  color: #fff;
  font: inherit;
  font-weight: 500;
  cursor: pointer;
  text-decoration: none;
}
button:hover, .botao:hover { filter: brightness(1.1); }
button.secundario, .botao.secundario {
  background: var(--superficie);
  color: var(--texto);
  border-color: var(--borda-forte);
}
button.perigo, .botao.perigo { background: var(--erro); border-color: var(--erro); }
button.pequeno, .botao.pequeno { padding: 4px 10px; font-size: .8125rem; }
.acoes { display: flex; gap: 8px; flex-wrap: wrap; align-items: center; margin-top: 8px; }
.sem-margem { margin: 0; }
.margem-superior { margin-top: 14px; }
.margem-inferior { margin-bottom: 16px; }
.margem-inferior-pequena { margin-bottom: 12px; }
.alinhar-inicio { align-items: start; }
.alinhar-fim { display: flex; align-items: flex-end; }
.campo-flex-2 { flex: 2; }
.form-inline-recuo { display: inline; margin-left: 8px; }
.form-email-inline { display: flex; gap: 6px; align-items: center; }
.largura-email { min-width: 210px; }
.largura-numero-curta { width: 70px !important; }
.grade-auto-2 { grid-template-columns: auto auto; }
.grade-auto-3 { grid-template-columns: auto auto auto; }
.grade-responsavel-lab { grid-template-columns: minmax(220px, 1fr) auto; }
.pre-auditoria { font-size: .6875rem; white-space: pre-wrap; }
.historico-parecer { border-left: 3px solid var(--borda-forte); padding-left: 12px; margin-bottom: 14px; }

/* ---------- Grade semanal ---------- */
.grade-semana { border-collapse: collapse; width: 100%; table-layout: fixed; font-size: .78125rem; }
.grade-semana th, .grade-semana td { border: 1px solid var(--borda); padding: 3px 5px; }
.grade-semana thead th { background: var(--superficie-2); text-align: center; }
.grade-semana .col-hora { width: 92px; color: var(--texto-fraco); font-variant-numeric: tabular-nums; text-align: center; background: var(--superficie-2); }
.grade-semana td.livre { background: var(--superficie); }
.grade-semana td.ocupada {
  /* A altura definida também vale para os cartões lado a lado. */
  height: 1px;
}
.grade-semana td.fim-turno { border-bottom: 2px solid var(--borda-forte); }

.bloco-aula {
  border-radius: 6px;
  padding: 4px 6px;
  height: 100%;
  border-left: 3px solid rgba(0, 0, 0, .25);
  color: #1c2530;
}
.bloco-aula .comp { font-weight: 600; display: block; line-height: 1.25; }
.bloco-aula .meta { display: block; font-size: .6875rem; opacity: .85; }
.bloco-aula.conflito { outline: 2px solid var(--erro); outline-offset: -2px; }
.bloco-aula.destacada {
  box-shadow: inset 0 0 0 4px #facc15;
  padding: 8px 10px;
}
/* Pratica externa: textura, nao so cor - legivel em escala de cinza. */
.bloco-aula.externa {
  background-image: repeating-linear-gradient(
    45deg,
    rgba(0, 0, 0, .06) 0 6px,
    transparent 6px 12px
  );
}
/* Aulas simultaneas aparecem lado a lado, no padrao tradicional do horario.
   As linhas internas preservam inicio e duracao mesmo quando os blocos nao
   comecam juntos. A tipografia compacta vale apenas para o pareamento. */
.grade-paralela {
  display: grid;
  gap: 3px;
  height: 100%;
  min-width: 0;
}
.grade-paralela.colunas-2 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
.grade-paralela.colunas-3 { grid-template-columns: repeat(3, minmax(0, 1fr)); }
.grade-paralela.colunas-4 { grid-template-columns: repeat(4, minmax(0, 1fr)); }
.grade-paralela.colunas-5 { grid-template-columns: repeat(5, minmax(0, 1fr)); }
.grade-paralela.colunas-6 { grid-template-columns: repeat(6, minmax(0, 1fr)); }
.grade-paralela.colunas-7 { grid-template-columns: repeat(7, minmax(0, 1fr)); }
.grade-paralela.colunas-8 { grid-template-columns: repeat(8, minmax(0, 1fr)); }
.grade-paralela.colunas-9 { grid-template-columns: repeat(9, minmax(0, 1fr)); }
.grade-paralela.colunas-10 { grid-template-columns: repeat(10, minmax(0, 1fr)); }
.grade-paralela.linhas-1 { grid-template-rows: minmax(0, 1fr); }
.grade-paralela.linhas-2 { grid-template-rows: repeat(2, minmax(0, 1fr)); }
.grade-paralela.linhas-3 { grid-template-rows: repeat(3, minmax(0, 1fr)); }
.grade-paralela.linhas-4 { grid-template-rows: repeat(4, minmax(0, 1fr)); }
.grade-paralela.linhas-5 { grid-template-rows: repeat(5, minmax(0, 1fr)); }
.grade-paralela.linhas-6 { grid-template-rows: repeat(6, minmax(0, 1fr)); }
.grade-paralela.linhas-7 { grid-template-rows: repeat(7, minmax(0, 1fr)); }
.grade-paralela.linhas-8 { grid-template-rows: repeat(8, minmax(0, 1fr)); }
.grade-paralela.linhas-9 { grid-template-rows: repeat(9, minmax(0, 1fr)); }
.grade-paralela.linhas-10 { grid-template-rows: repeat(10, minmax(0, 1fr)); }
.grade-paralela .coluna-1 { grid-column-start: 1; }
.grade-paralela .coluna-2 { grid-column-start: 2; }
.grade-paralela .coluna-3 { grid-column-start: 3; }
.grade-paralela .coluna-4 { grid-column-start: 4; }
.grade-paralela .coluna-5 { grid-column-start: 5; }
.grade-paralela .coluna-6 { grid-column-start: 6; }
.grade-paralela .coluna-7 { grid-column-start: 7; }
.grade-paralela .coluna-8 { grid-column-start: 8; }
.grade-paralela .coluna-9 { grid-column-start: 9; }
.grade-paralela .coluna-10 { grid-column-start: 10; }
.grade-paralela .inicio-1 { grid-row-start: 1; }
.grade-paralela .inicio-2 { grid-row-start: 2; }
.grade-paralela .inicio-3 { grid-row-start: 3; }
.grade-paralela .inicio-4 { grid-row-start: 4; }
.grade-paralela .inicio-5 { grid-row-start: 5; }
.grade-paralela .inicio-6 { grid-row-start: 6; }
.grade-paralela .inicio-7 { grid-row-start: 7; }
.grade-paralela .inicio-8 { grid-row-start: 8; }
.grade-paralela .inicio-9 { grid-row-start: 9; }
.grade-paralela .inicio-10 { grid-row-start: 10; }
.grade-paralela .duracao-1 { grid-row-end: span 1; }
.grade-paralela .duracao-2 { grid-row-end: span 2; }
.grade-paralela .duracao-3 { grid-row-end: span 3; }
.grade-paralela .duracao-4 { grid-row-end: span 4; }
.grade-paralela .duracao-5 { grid-row-end: span 5; }
.grade-paralela .duracao-6 { grid-row-end: span 6; }
.grade-paralela .duracao-7 { grid-row-end: span 7; }
.grade-paralela .duracao-8 { grid-row-end: span 8; }
.grade-paralela .duracao-9 { grid-row-end: span 9; }
.grade-paralela .duracao-10 { grid-row-end: span 10; }
.grade-paralela .bloco-aula {
  min-width: 0;
  padding: 3px 4px;
  font-size: .6875rem;
  overflow-wrap: anywhere;
}
.grade-paralela .bloco-aula .comp { line-height: 1.15; }
.grade-paralela .bloco-aula .meta { font-size: .625rem; line-height: 1.2; }
.bloco-aula .meta.horario { font-weight: 600; opacity: 1; }

.bloco-aula[draggable="true"] { cursor: grab; }
.bloco-aula.arrastando { opacity: .45; cursor: grabbing; }
.grade-semana td.alvo-ativo { outline: 2px dashed var(--primaria); outline-offset: -2px; }
/* Alvo de TROCA: o bloco sobre o qual se solta. Linha cheia, e nao tracejada,
   porque a acao e outra - ali dois blocos mudam de lugar, nao um. */
.bloco-aula.alvo-troca {
  outline: 3px solid var(--primaria);
  outline-offset: -1px;
  filter: brightness(1.06);
}
/* Alvo COMPATÍVEL: as duas cabem juntas, então soltar aqui abre uma escolha em
   vez de decidir sozinho. Tracejado verde para não se confundir com a troca. */
.bloco-aula.alvo-paralelo {
  outline: 3px dashed var(--ok);
  outline-offset: -1px;
  filter: brightness(1.06);
}

/* Menu que aparece no ponto em que o bloco foi solto. */
.escolha-arrasto {
  position: absolute;
  z-index: 60;
  display: flex;
  flex-direction: column;
  gap: 6px;
  padding: 12px;
  max-width: 240px;
  background: var(--superficie);
  border: 1px solid var(--borda-forte);
  border-radius: var(--raio);
  box-shadow: var(--sombra);
}
.escolha-arrasto p { margin: 0 0 2px; font-size: .8125rem; color: var(--texto-fraco); }

.bloco-aula .etiqueta-externa { font-size: .625rem; font-weight: 700; letter-spacing: .04em; }

.legenda { display: flex; gap: 14px; flex-wrap: wrap; font-size: .75rem; color: var(--texto-fraco); margin-top: 10px; }
.legenda span { display: flex; align-items: center; gap: 5px; }
.legenda i { width: 12px; height: 12px; border-radius: 3px; display: inline-block; }
.legenda-conflito { background: var(--erro); }

/* ---------- Conflitos ---------- */
.lista-conflitos { list-style: none; padding: 0; margin: 0; }
.lista-conflitos li {
  padding: 8px 12px;
  border-left: 3px solid var(--borda-forte);
  background: var(--superficie-2);
  border-radius: 0 var(--raio) var(--raio) 0;
  margin-bottom: 6px;
  font-size: .84375rem;
}
.lista-conflitos li.erro { border-left-color: var(--erro); background: var(--erro-fundo); color: var(--erro); }
.lista-conflitos li.aviso { border-left-color: var(--aviso); background: var(--aviso-fundo); color: var(--aviso); }

/* ---------- Indicadores ---------- */
.indicadores { display: grid; gap: 12px; grid-template-columns: repeat(auto-fit, minmax(150px, 1fr)); }
.indicador {
  background: var(--superficie);
  border: 1px solid var(--borda);
  border-radius: var(--raio);
  padding: 14px;
}
.indicador .valor { font-size: 1.625rem; font-weight: 600; font-variant-numeric: tabular-nums; }
.indicador .rotulo { font-size: .75rem; color: var(--texto-fraco); text-transform: uppercase; letter-spacing: .03em; }

/* ---------- Pendencias do inicio ---------- */
.lista-pendencias { list-style: none; padding: 0; margin: 0; }
.lista-pendencias li {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 14px;
  flex-wrap: wrap;
  padding: 10px 12px;
  margin-bottom: 8px;
  border-left: 3px solid var(--borda-forte);
  background: var(--superficie-2);
  border-radius: 0 var(--raio) var(--raio) 0;
}
.lista-pendencias li.erro { border-left-color: var(--erro); background: var(--erro-fundo); }
.lista-pendencias li.aviso { border-left-color: var(--aviso); background: var(--aviso-fundo); }
.lista-pendencias .detalhe { display: block; font-size: .8125rem; color: var(--texto-fraco); margin-top: 2px; }
.acoes-pendencia { display: flex; gap: 6px; align-items: center; flex-wrap: wrap; }
.acoes-pendencia form { margin: 0; }
.margem-inferior { margin-bottom: 10px; }

/* ---------- Ocupacao de laboratorio ---------- */
.uso-lab {
  border-radius: 6px;
  padding: 3px 5px;
  margin-bottom: 2px;
  border-left: 3px solid var(--primaria);
  background: var(--primaria-clara);
  font-size: .71875rem;
  line-height: 1.25;
}
/* Reserva fixa nao vem da grade: textura e cor neutra a distinguem, e a
   textura sobrevive a impressao em preto e branco. */
.uso-lab.reserva {
  border-left-color: var(--borda-forte);
  background: var(--superficie-2);
  background-image: repeating-linear-gradient(
    45deg,
    rgba(0, 0, 0, .05) 0 5px,
    transparent 5px 10px
  );
}
.uso-lab .meta { display: block; font-size: .65625rem; color: var(--texto-fraco); }

/* ---------- Anotacoes por periodo ---------- */
.barra-anotacoes {
  display: flex;
  align-items: center;
  gap: 8px;
  margin-top: 10px;
  padding-top: 10px;
  border-top: 1px dashed var(--borda);
  font-size: .8125rem;
}

.lista-anotacoes { list-style: none; padding: 0; margin: 0 0 14px; }
.lista-anotacoes li {
  border-left: 3px solid var(--primaria);
  background: var(--superficie-2);
  border-radius: 0 var(--raio) var(--raio) 0;
  padding: 8px 12px;
  margin-bottom: 8px;
}
.lista-anotacoes .cabecalho {
  display: flex;
  align-items: center;
  gap: 10px;
  flex-wrap: wrap;
  font-size: .75rem;
  margin-bottom: 4px;
}
.lista-anotacoes .cabecalho form { margin-left: auto; }
.lista-anotacoes p { margin: 0; white-space: pre-wrap; }

/* ---------- Modal ---------- */
dialog.modal {
  border: none;
  background: transparent;
  padding: 0;
  max-width: min(680px, 94vw);
  width: 100%;
  color: var(--texto);
}
dialog.modal::backdrop { background: rgba(10, 14, 20, .55); }
.modal-conteudo {
  background: var(--superficie);
  border: 1px solid var(--borda);
  border-radius: var(--raio);
  box-shadow: var(--sombra);
  padding: 18px 20px;
  max-height: 82vh;
  overflow-y: auto;
}
.modal-topo {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  margin-bottom: 12px;
}
.modal-topo h3 { margin: 0; text-transform: none; letter-spacing: 0; font-size: .9375rem; color: var(--texto); }
.modal-topo h2 { margin: 0; }
.abas { display: flex; gap: 6px; margin-bottom: 14px; border-bottom: 1px solid var(--borda); padding-bottom: 8px; }
.abas button.ativo { background: var(--primaria-clara); color: var(--primaria); border-color: var(--primaria); }
.tarefa-nova { grid-template-columns: minmax(260px, 1fr) 180px auto; }
.alinhar-fim { display: flex; align-items: flex-end; }
.linha-tarefa { display: grid; grid-template-columns: minmax(130px, .6fr) 170px auto; gap: 8px; align-items: center; }

/* ---------- Reforma curricular ---------- */
.comparativo-ppc { min-width: 1280px; }
.comparativo-ppc thead tr:first-child th { text-align: center; background: var(--primaria-clara); }
.justificativa-ppc td { background: #fff9e8; color: var(--texto); white-space: pre-wrap; }
.justificar-ppc { display: inline-block; position: relative; }
.justificar-ppc summary { list-style: none; cursor: pointer; }
.justificar-ppc summary::-webkit-details-marker { display: none; }
.justificar-ppc form {
  position: absolute; right: 0; z-index: 5; width: min(420px, 80vw); padding: 12px;
  background: var(--superficie); border: 1px solid var(--borda); border-radius: var(--raio);
  box-shadow: var(--sombra);
}
.justificar-ppc textarea { min-height: 90px; }
.grupos-sintese-ppc { display: grid; grid-template-columns: repeat(auto-fit, minmax(250px, 1fr)); gap: 14px; }
.grupos-sintese-ppc section { border: 1px solid var(--borda); border-radius: var(--raio); padding: 12px 14px; }
.grupos-sintese-ppc h3 { margin-top: 0; }
.grupos-sintese-ppc ul { margin-bottom: 0; padding-left: 20px; }
.docente-ppc { display: flex; gap: 8px; align-items: center; justify-content: space-between; margin: 3px 0; }
.bloco-exportacao-ppc + .bloco-exportacao-ppc { border-top: 1px solid var(--borda); margin-top: 14px; padding-top: 14px; }
.bloco-exportacao-ppc h3 { margin-top: 0; }
.comparativo-ppc tr.decisao-excluir td { background: var(--erro-fundo); color: var(--texto-fraco); }
.comparativo-ppc tr.decisao-incluir td { background: var(--aviso-fundo); }
.comparativo-ppc td form { display: inline-block; margin: 3px 0 0; }
.equivalencias-ppc { min-width: 1080px; }
.equivalencias-ppc .pareamento-equivalencia + .pareamento-equivalencia { border-top: 1px solid var(--borda); margin-top: 8px; padding-top: 8px; }
.grupo-formulario { border: 1px solid var(--borda); border-radius: var(--raio); margin-top: 14px; padding: 12px; }
.grupo-formulario legend { font-weight: 700; padding: 0 6px; }
.filtros-ppc { align-items: end; margin-bottom: 12px; }
.campo-check { display: flex; align-items: center; gap: 7px; padding-bottom: 9px; }
.campo-largo { min-width: min(520px, 100%); flex: 1; }

/* ---------- Solicitacoes e dialogo ---------- */
dialog.modal.modal-amplo { max-width: min(900px, 96vw); }
.lista-solicitacoes { display: grid; gap: 8px; }
.lista-solicitacoes article {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 14px;
  padding: 11px 12px;
  border: 1px solid var(--borda);
  border-radius: var(--raio);
  background: var(--superficie-2);
}
.lista-solicitacoes article > div:first-child { min-width: 0; }
.lista-solicitacoes .detalhe { display: block; margin-top: 3px; color: var(--texto-fraco); font-size: .75rem; }
.resumo-solicitacao { display: flex; align-items: center; gap: 10px; margin-bottom: 12px; color: var(--texto-fraco); }
.dialogo-solicitacao { list-style: none; padding: 4px 0; margin: 0 0 16px; display: grid; gap: 10px; }
.dialogo-solicitacao li {
  width: min(82%, 650px);
  border: 1px solid var(--borda);
  border-radius: 10px;
  padding: 10px 12px;
  background: var(--superficie-2);
}
.dialogo-solicitacao li.docente { justify-self: start; border-left: 3px solid var(--primaria); }
.dialogo-solicitacao li.coordenacao { justify-self: end; background: var(--primaria-clara); border-right: 3px solid var(--primaria); }
.cabecalho-mensagem { display: flex; justify-content: space-between; gap: 12px; color: var(--texto-fraco); font-size: .6875rem; }
.dialogo-solicitacao p { margin: 7px 0 0; white-space: pre-wrap; overflow-wrap: anywhere; }

/* ---------- Entrada ---------- */
.entrar { max-width: 400px; margin: 60px auto; }

.rodape {
  max-width: 1080px;
  margin: 40px auto 24px;
  padding: 0 20px;
  color: var(--texto-fraco);
  font-size: .75rem;
  text-align: center;
}

/* ---------- Sugestoes coletivas ---------- */
.lista-sugestoes { display: grid; gap: 8px; }
.lista-sugestoes article {
  display: flex;
  justify-content: space-between;
  gap: 16px;
  align-items: center;
  padding: 12px 0;
  border-bottom: 1px solid var(--borda);
}
.lista-sugestoes article:last-child { border-bottom: 0; }
.sugestao-principal { min-width: 0; }
.sugestao-principal .detalhe { display: block; margin-top: 3px; color: var(--texto-fraco); font-size: .75rem; }
.texto-preservado, .comentarios-sugestao p, .devolutiva-sugestao p { white-space: pre-wrap; }
.devolutiva-sugestao {
  margin: 18px 0;
  padding: 12px 14px;
  border-left: 4px solid var(--primaria);
  background: var(--primaria-clara);
  border-radius: var(--raio);
}
.devolutiva-sugestao p { margin: 6px 0; }
.devolutiva-sugestao span { color: var(--texto-fraco); font-size: .75rem; }
.comentarios-sugestao { list-style: none; margin: 0 0 14px; padding: 0; display: grid; gap: 8px; }
.comentarios-sugestao li { padding: 10px 12px; border: 1px solid var(--borda); border-radius: var(--raio); background: var(--superficie-2); }
.comentarios-sugestao p { margin: 6px 0; }

@media (max-width: 720px) {
  .topo { gap: 10px; }
  .topo nav { order: 3; width: 100%; }
  main { padding: 0 12px; }
  .lista-solicitacoes article { align-items: flex-start; flex-direction: column; }
  .lista-sugestoes article { align-items: flex-start; flex-direction: column; }
  .dialogo-solicitacao li { width: 92%; }
}

/* ---------- Impressao ---------- */
@media print {
  .topo, .subnav, .rodape, .acoes, form, .alerta, .faixa-personificacao,
  .barra-anotacoes, dialog.modal { display: none !important; }
  main { max-width: none; margin: 0; padding: 0; }
  .cartao { border: none; box-shadow: none; padding: 0; break-inside: avoid; }
  .grade-semana { font-size: 9pt; }
  .grade-semana th, .grade-semana td { border: 1px solid #999 !important; }
  .bloco-aula { background: #fff !important; border-left: 2px solid #333; }
  .bloco-aula.externa {
    background-image: repeating-linear-gradient(
      45deg,
      #e2e2e2 0 3px,
      #fff 3px 7px
    ) !important;
  }
  @page { size: A4 landscape; margin: 10mm; }
}

/* ---------- Novo PPC: pendências e composição da CHT ---------- */
.lista-pendencias-ppc { margin: 6px 0 0; padding-left: 18px; }
.lista-pendencias-ppc li { margin-bottom: 4px; }

.linha-subtotal-cht td { border-top: 1px solid var(--borda-forte); background: var(--superficie-2); }
.linha-total-cht td {
  border-top: 2px solid var(--borda-forte);
  background: var(--primaria-clara);
  font-weight: 600;
}
/* Notas não são parcelas da soma: ficam visivelmente à parte. */
.linha-nota-cht td { color: var(--texto-fraco); font-style: italic; }
.linha-nota-cht:first-of-type td { border-top: 2px solid var(--borda); }

.form-autor-ementa { display: flex; gap: 6px; align-items: center; margin-top: 6px; }
.form-autor-ementa select { min-width: 160px; }
.rotulo-oculto {
  position: absolute;
  width: 1px; height: 1px;
  overflow: hidden;
  clip: rect(0 0 0 0);
  white-space: nowrap;
}

/* ---------- Novo PPC: eixos temáticos ---------- */
.selecao-eixo {
  border: 1px solid var(--borda);
  border-radius: var(--raio);
  padding: 10px 12px;
  margin: 0 0 14px;
  max-height: 340px;
  overflow-y: auto;
}
.selecao-eixo legend { color: var(--texto-fraco); font-size: .8125rem; padding: 0 4px; }
.opcao-eixo {
  display: flex;
  gap: 8px;
  align-items: baseline;
  margin: 0 0 4px;
  color: var(--texto);
  font-size: .875rem;
}
.opcao-eixo input { width: auto; }
.opcao-eixo span:first-of-type { flex: 1; }

.lista-componentes-eixo { margin: 0 0 10px; padding-left: 18px; columns: 2; }
.lista-componentes-eixo li { margin-bottom: 2px; break-inside: avoid; }

.dialogo-eixo { list-style: none; margin: 0 0 12px; padding: 0; }
.dialogo-eixo li {
  border-left: 3px solid var(--borda);
  padding: 2px 0 2px 10px;
  margin-bottom: 8px;
  font-size: .875rem;
}
.dialogo-eixo p { margin: 2px 0 0; }

@media (max-width: 720px) {
  .lista-componentes-eixo { columns: 1; }
}

/* DCExt é marca, não fração: caixa e não campo numérico. */
.marca-dcext {
  display: flex;
  gap: 8px;
  align-items: center;
  color: var(--texto);
  font-size: .875rem;
  margin-bottom: 4px;
}
.marca-dcext input { width: auto; }

/* ---------- Ementário: redação anterior ao lado da nova ---------- */
.par-ementa {
  display: grid;
  gap: 0 18px;
  grid-template-columns: 1fr 1fr;
  align-items: start;
  padding-bottom: 10px;
  margin-bottom: 10px;
  border-bottom: 1px solid var(--borda);
}
/* Sem redação anterior, o campo novo ocupa a linha inteira. */
.par-ementa .lado-novo:first-child { grid-column: 1 / -1; }

.texto-referencia {
  border: 1px solid var(--borda);
  border-radius: var(--raio);
  background: var(--superficie-2);
  color: var(--texto-fraco);
  padding: 8px 10px;
  max-height: 190px;
  overflow-y: auto;
  white-space: pre-wrap;
  font-size: .8125rem;
  margin-bottom: 6px;
}

@media (max-width: 900px) {
  .par-ementa { grid-template-columns: 1fr; }
}

/* Destaque: linha que já está contada numa parcela acima. Nunca soma ao lado
   dela — o recuo e a cor dizem isso antes de o rótulo precisar explicar. */
.linha-destaque-cht td:first-child { padding-left: 26px; }
.linha-destaque-cht td { background: var(--superficie-2); font-size: .8125rem; }

.indicador.indicador-ok .valor { color: var(--ok); }
.indicador.indicador-alerta .valor { color: var(--erro); }

/* ---------- Novo PPC: expansor de docente ---------- */
.expansor-docente > summary {
  cursor: pointer;
  list-style: none;
  display: flex;
  gap: 6px;
  align-items: center;
}
.expansor-docente > summary::-webkit-details-marker { display: none; }
.expansor-docente > summary::before {
  content: '▸';
  color: var(--texto-fraco);
  transition: transform .12s;
}
.expansor-docente[open] > summary::before { content: '▾'; }
.expansor-docente > summary:focus-visible { outline: 2px solid var(--primaria); outline-offset: 2px; }

/* Escolhas opcionais da consulta docente. */
#form-consulta .expansor-docente { margin: 14px 0; padding: 12px 14px; border: 1px solid var(--borda); border-radius: 8px; }
#form-consulta .expansor-docente > summary { font-weight: 600; }
#form-consulta .expansor-docente[open] > summary { margin-bottom: 12px; }
#form-consulta .expansor-docente th,
#form-consulta .expansor-docente td { text-align: center; }
#form-consulta .expansor-docente th:first-child { text-align: left; }

.tabela-interna { margin: 8px 0 4px; font-size: .8125rem; }
.tabela-interna th, .tabela-interna td { padding: 4px 8px; }
.tabela-interna th { font-size: .6875rem; }

/* Conflito de coautoria: três colunas — anterior, salvo agora, e o meu. */
.par-ementa:has(.lado-rascunho) { grid-template-columns: 1fr 1fr 1fr; }
/* Sem coluna anterior, inclusive no campo de novas referências complementares,
   o formulário e um eventual rascunho ocupam a largura toda em linhas próprias. */
.par-ementa.sem-pareamento,
.par-ementa.sem-pareamento:has(.lado-rascunho) { grid-template-columns: 1fr; }
.par-ementa.sem-pareamento .lado-novo { grid-column: 1 / -1; }
.texto-rascunho {
  border-color: var(--erro);
  background: var(--erro-fundo);
  color: var(--texto);
}
@media (max-width: 1100px) {
  .par-ementa:has(.lado-rascunho) { grid-template-columns: 1fr; }
}

/* Reservas institucionais: destaque textual inclusive na impressão. */
.bloco-coordenacao { background: #e5e7eb; color: #1c2530; border: 2px dashed #6b7280; cursor: default; }
.bloco-agenda-docente { background-color: #e5e7eb; color: #1c2530; border: 1px solid #6b7280; cursor: default; }
.bloco-agenda-docente.agenda-extra {
  background-image: linear-gradient(45deg, #cbd0d8 25%, transparent 25%, transparent 75%, #cbd0d8 75%),
    linear-gradient(45deg, #cbd0d8 25%, transparent 25%, transparent 75%, #cbd0d8 75%);
  background-size: 16px 16px; background-position: 0 0, 8px 8px;
}
.legenda-agenda { display: flex; flex-wrap: wrap; gap: 1rem; align-items: center; margin-bottom: 1rem; }
.legenda-agenda .bloco-agenda-docente { display: inline-block; width: 1.5rem; height: 1.5rem; min-height: 0; margin-right: .35rem; vertical-align: middle; }

/* A grade externa e os cartões paralelos compartilham as MESMAS linhas.
   Dividir a célula em frações iguais deslocava aulas quando outra coluna
   tornava uma faixa mais alta que as demais. A estrutura de tabela é mantida
   para leitura e arrasto; subgrid alinha cada início/fim à linha do horário. */
@supports (grid-template-rows: subgrid) {
  .grade-semana {
    display: grid;
    grid-template-columns: 92px repeat(5, minmax(0, 1fr));
    grid-template-rows: auto repeat(10, minmax(28px, auto));
  }
  .grade-semana[data-dias="6"] { grid-template-columns: 92px repeat(6, minmax(0, 1fr)); }
  .grade-semana thead, .grade-semana tbody, .grade-semana tr { display: contents; }
  .grade-semana .col-hora { grid-column: 1; width: auto; }
  .grade-semana td.ocupada { display: grid; grid-template-rows: subgrid; height: auto; min-width: 0; }
  .grade-semana td.ocupada > .bloco-aula { grid-row: 1 / -1; height: auto; }
  .grade-semana .grade-paralela {
    grid-row: 1 / -1;
    grid-template-rows: subgrid;
    height: auto;
    row-gap: 0;
  }
  .grade-semana .grade-paralela .bloco-aula { height: auto; min-height: 0; }
  .grade-semana td[data-dia="Segunda"] { grid-column: 2; }
  .grade-semana td[data-dia="Terca"] { grid-column: 3; }
  .grade-semana td[data-dia="Quarta"] { grid-column: 4; }
  .grade-semana td[data-dia="Quinta"] { grid-column: 5; }
  .grade-semana td[data-dia="Sexta"] { grid-column: 6; }
  .grade-semana td[data-dia="Sabado"] { grid-column: 7; }
  .grade-semana [data-slot="1"] { grid-row-start: 2; }
  .grade-semana td[rowspan="1"] { grid-row-end: span 1; }
  .grade-semana [data-slot="2"] { grid-row-start: 3; }
  .grade-semana td[rowspan="2"] { grid-row-end: span 2; }
  .grade-semana [data-slot="3"] { grid-row-start: 4; }
  .grade-semana td[rowspan="3"] { grid-row-end: span 3; }
  .grade-semana [data-slot="4"] { grid-row-start: 5; }
  .grade-semana td[rowspan="4"] { grid-row-end: span 4; }
  .grade-semana [data-slot="5"] { grid-row-start: 6; }
  .grade-semana td[rowspan="5"] { grid-row-end: span 5; }
  .grade-semana [data-slot="6"] { grid-row-start: 7; }
  .grade-semana td[rowspan="6"] { grid-row-end: span 6; }
  .grade-semana [data-slot="7"] { grid-row-start: 8; }
  .grade-semana td[rowspan="7"] { grid-row-end: span 7; }
  .grade-semana [data-slot="8"] { grid-row-start: 9; }
  .grade-semana td[rowspan="8"] { grid-row-end: span 8; }
  .grade-semana [data-slot="9"] { grid-row-start: 10; }
  .grade-semana td[rowspan="9"] { grid-row-end: span 9; }
  .grade-semana [data-slot="10"] { grid-row-start: 11; }
  .grade-semana td[rowspan="10"] { grid-row-end: span 10; }
}

/* Categorias recolhidas; o texto também comunica a situação sem depender da cor. */
.categoria-conflitos { border: 1px solid var(--borda); border-radius: 8px; margin: 8px 0; padding: 10px 12px; }
.categoria-conflitos summary { cursor: pointer; }
.categoria-conflitos summary > span:last-child { margin-left: 8px; font-size: .85rem; }
.sinal-conflitos { display: inline-block; width: 12px; height: 12px; border-radius: 50%; margin: 0 8px; background: #15803d; }
.categoria-conflitos.erro .sinal-conflitos { background: #dc2626; }
.categoria-conflitos.aviso .sinal-conflitos { background: #eab308; }
.categoria-conflitos[open] summary { margin-bottom: 12px; }

.liberacao-docentes { display: grid; grid-template-columns: repeat(auto-fit, minmax(240px, 1fr)); gap: 8px; max-height: 320px; overflow-y: auto; margin: 12px 0; }

.planejamento-kanban { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:16px; }
.planejamento-tarefa { border:1px solid var(--borda); border-radius:8px; padding:12px; margin:12px 0; overflow-wrap:anywhere; }
.planejamento-tempo { padding:12px 0; border-bottom:1px solid var(--borda); }
.planejamento-tempo span { display:block; }
.tempo-trilho { background:var(--superficie-2); margin-top:8px; }
.tempo-barra { height:16px; background:var(--primaria); border-radius:4px; }
@media(max-width:800px) { .planejamento-kanban {grid-template-columns:1fr;} }

.responsavel-tarefa { display: flex; align-items: center; gap: .5rem; margin: .4rem 0; }
.responsavel-tarefa input[type="checkbox"] { width: auto; margin: 0; }

/* Etapas suaves, cards brancos e prioridades com rótulos textuais. */
.kanban-coluna.kanban-iniciar { background:#fff8dc; }
.kanban-coluna.kanban-execucao { background:#eaf4ff; }
.kanban-coluna.kanban-concluida { background:#eaf7ed; }
.kanban-coluna.kanban-cancelada, .kanban-coluna.kanban-arquivada { background:#f1f3f5; }
.planejamento-tarefa { background:#fff; }
.planejamento-tarefa[draggable="true"] { cursor:grab; }
.planejamento-tarefa.kanban-arrastando { opacity:.5; cursor:grabbing; }
.kanban-coluna.kanban-destino { outline:3px dashed #1f628b; outline-offset:-4px; }
.tarefa-titulo { display:flex; align-items:baseline; gap:.5rem; }
.prioridade-circulo { display:inline-block; flex:0 0 .75rem; width:.75rem; height:.75rem; border-radius:50%; }
.prioridade-alta { background:#ed2024; }
.prioridade-normal { background:#e6a400; }
.prioridade-baixa { background:#188548; }

summary.adicionar-registro-destaque,
summary.adicionar-tarefa-destaque,
summary.adicionar-instrumento-destaque {
  display:list-item; width:fit-content; box-sizing:border-box;
  padding:12px 20px; margin:8px 0 16px; border:1px solid #a51c24;
  border-radius:8px; background:#bd202a; color:#fff; font-weight:700;
  cursor:pointer; list-style-position:inside;
}
summary.adicionar-registro-destaque:hover,
summary.adicionar-tarefa-destaque:hover,
summary.adicionar-instrumento-destaque:hover { background:#a51c24; }
summary.adicionar-registro-destaque:focus-visible,
summary.adicionar-tarefa-destaque:focus-visible,
summary.adicionar-instrumento-destaque:focus-visible { outline:3px solid #173e65; outline-offset:3px; }
summary.adicionar-registro-destaque::marker,
summary.adicionar-tarefa-destaque::marker,
summary.adicionar-instrumento-destaque::marker { color:#fff; }

.timeline-rolagem { overflow-x:auto; }
.timeline-rolagem:focus-visible { outline:3px solid var(--primaria); outline-offset:3px; }
.timeline-mensal { table-layout:fixed; width:100%; min-width:1100px; border-collapse:collapse; }
.timeline-mensal .timeline-descricao-col { width:30%; }
.timeline-mensal .timeline-mes-col { width:10%; }
.timeline-mensal th, .timeline-mensal td { border:1px solid var(--borda); padding:12px 8px; overflow-wrap:anywhere; }
.timeline-mensal thead th { background:#eaf4ff; text-align:center; }
.timeline-mensal tbody th { background:#fff; text-align:left; font-weight:normal; }
.timeline-mensal tbody th p { margin:6px 0; }
.timeline-mensal tbody th span { font-size:.85em; }
.timeline-mensal thead th:first-child, .timeline-mensal tbody th { position:sticky; left:0; z-index:1; }
.timeline-mensal .tempo-trilho { margin:0; background:transparent; }
.timeline-mensal .tempo-barra { min-width:3px; }
.timeline-mensal .tempo-alem { text-align:center; color:#fff; line-height:16px; }

/* Formulários da central administrativa seguem a escala das demais telas. */
.central-dev form { margin-top: 12px; }
.central-dev form label { display: block; margin: 10px 0; }
.central-dev input:not([type="checkbox"]), .central-dev select {
  display: block; width: 100%; min-height: 42px; padding: 8px 12px;
  border: 1px solid var(--borda); border-radius: 7px; font: inherit;
  color: inherit; background: var(--superficie, #fff); box-sizing: border-box;
}
.central-dev summary { cursor: pointer; padding: 8px 0; }

/* Cards começam recolhidos; somente o título é o controle de expansão. */
.tarefa-resumo { display:flex; align-items:baseline; gap:.5rem; cursor:pointer; list-style:none; }
.tarefa-resumo::-webkit-details-marker { display:none; }
.tarefa-resumo::before { content:'▸'; flex:none; }
.tarefa-expansivel[open] > .tarefa-resumo::before { content:'▾'; }
.tarefa-resumo:focus-visible { outline:2px solid #1f628b; outline-offset:4px; border-radius:3px; }
.tarefa-resumo .tarefa-titulo { min-width:0; }
.tarefa-detalhes { padding-top:.5rem; }
.filtros-timeline { margin-bottom:1rem; }

.consulta-componente > summary { cursor:pointer; padding: .5rem 0; }
.consulta-componente > summary:focus-visible { outline:2px solid var(--primaria, #1d6488); outline-offset:4px; }

.instrumento-expansivel > summary { cursor:pointer; }
.instrumento-expansivel > summary > h2 { display:inline; margin:0; }
.instrumento-expansivel > summary:focus-visible { outline:2px solid var(--primaria); outline-offset:4px; border-radius:3px; }
.instrumento-expansivel[open] > summary { margin-bottom:16px; }

/* Contexto do planejamento: área, seções e acesso à reforma. */
.planejamento-contexto{background:var(--superficie);border:1px solid var(--borda);border-radius:10px;padding:18px 20px 0;margin:18px 0 24px}
.planejamento-contexto-linha{display:flex;align-items:flex-start;justify-content:space-between;flex-wrap:wrap;gap:20px}
.planejamento-legenda{display:block;font-size:.8rem;font-weight:600;color:var(--texto-fraco);margin-bottom:9px}
.planejamento-areas{display:flex;flex-wrap:wrap;gap:8px}
.planejamento-areas .botao{margin:0}
.planejamento-ppc{border-left:1px solid var(--borda);padding-left:20px}
.planejamento-contexto .subnav{margin:18px 0 0;padding:12px 0;border-top:1px solid var(--borda);border-bottom:0;gap:8px}
@media(max-width:600px){.planejamento-contexto{padding:14px 14px 0}.planejamento-contexto-linha,.planejamento-area,.planejamento-ppc{width:100%}.planejamento-areas{display:grid;grid-template-columns:1fr}.planejamento-areas .botao{text-align:center}.planejamento-ppc{border-left:0;border-top:1px solid var(--borda);padding:14px 0 0}.planejamento-ppc .botao{display:block;text-align:center}.planejamento-contexto .subnav{display:grid;grid-template-columns:1fr 1fr}.planejamento-contexto .subnav a{text-align:center}}

/* Contatos públicos em todas as páginas, com quebra para telas pequenas. */
.rodape-contatos{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,280px),1fr));gap:1rem 1.5rem;max-width:1100px;margin:1.25rem auto 0;padding-top:1.25rem;border-top:1px solid #cbd5e1;font-style:normal;text-align:left}
.rodape-contatos strong{display:block;margin-bottom:.3rem}
.rodape-contatos a{overflow-wrap:anywhere}

/* Produção docente: identidade e ações individuais em painéis recolhidos. */
.producao-docente { margin-block: 1rem; border: 1px solid #c6d2dc; border-radius: .5rem; padding: 1rem; }
.producao-docente > summary { display: flex; flex-wrap: wrap; gap: 1rem; align-items: center; cursor: pointer; }
.producao-identidade { flex: 1 1 22rem; min-width: 0; }
.producao-identidade strong, .producao-identidade > a, .producao-identidade > span { display: block; overflow-wrap: anywhere; }
.producao-acoes { display: flex; gap: .5rem; flex-wrap: wrap; }
.producao-docente > summary::before { content: '▸'; }
.producao-docente[open] > summary::before { content: '▾'; }

/* Planejamento docente: três semestres em sequência, com leitura em telas pequenas. */
.quadro-docente { display: grid; gap: 1rem; }
.tabela-planejamento td { vertical-align: top; }
.tabela-planejamento td:last-child { min-width: 220px; }
.tabela-planejamento caption { text-align: left; font-weight: 600; padding: .5rem 0; }
.transicao-periodos { display: grid; grid-template-columns: repeat(auto-fit, minmax(220px, 1fr)); gap: .75rem; margin-bottom: 1rem; }
.quadro-docente details { margin-top: .75rem; }
.quadro-docente summary { cursor: pointer; font-weight: 600; }
.quadro-docente .texto-preservado { margin: .25rem 0 .75rem; }
.resumo-planejamento { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: .75rem; margin: 1rem 0; }
.resumo-planejamento a { display: flex; flex-direction: column; gap: .4rem; border: 1px solid var(--borda, #d4d8dd); border-radius: 8px; padding: 1rem; background: white; text-decoration: none; }
@media (max-width: 650px) { .resumo-planejamento { grid-template-columns: 1fr; } }
