/*
 * Os ecrãs da área do professor.
 *
 * Só é carregada quando o tema não traz os seus: no tema Escola estes estilos vivem na
 * folha dele, partilhados com o blog, os contactos e as direções de turma.
 */

/*
 * As cores e as medidas são as do tema, quando o tema as der. Cada uma tem aqui um valor de
 * recurso, para os ecrãs não ficarem sem desenho num tema que não conheça estas variáveis.
 */
:root {
  --escola-primary:      var(--primary,      var(--wp--preset--color--primary, #1b3f7a));
  --escola-primary-dark: var(--primary-dark, #122d5a);
  --escola-accent:       var(--accent,       var(--wp--preset--color--accent, #e8792b));
  --escola-ink:          var(--ink,          #1f2933);
  --escola-muted:        var(--muted,        #5c6b7a);
  --escola-line:         var(--line,         #e1e6ec);
  --escola-surface:      var(--surface,      #f3f5f8);
  --escola-white:        var(--white,        #fff);
  --escola-radius:       var(--radius,       12px);
}

/* PAA — área do professor e listagens */
.paa-nav { display: flex; flex-wrap: wrap; gap: .4rem; margin: 0 0 1.5rem; }
.paa-nav a { padding: .45rem .9rem; border-radius: 999px; background: var(--surface); text-decoration: none; font-weight: 600; font-size: .92rem; }
.paa-nav a[aria-current] { background: var(--primary); color: #fff; }
.paa-nav .sair { margin-left: auto; background: transparent; color: var(--muted); }
/* Um grupo de separadores da mesma casa — o PAA — numa moldura com a etiqueta à frente, para
   se ver de onde vêm. */
/* a moldura vai para a direita, e o «Sair» encosta-se-lhe em vez de disputar o espaço */
.paa-nav-grupo { display: inline-flex; flex-wrap: wrap; align-items: center; gap: .4rem; margin-left: auto; padding: .25rem .3rem .25rem .7rem; border: 1.5px solid var(--accent, #e8792b); border-radius: 999px; }
.paa-nav-grupo + .sair { margin-left: 0; }
.paa-nav-grupo > small { font-size: .72rem; font-weight: 800; letter-spacing: .08em; text-transform: uppercase; color: var(--accent-texto, #af5313); }   /* a versão para texto: o --accent sobre branco dá 2,9:1 */
.paa-login { max-width: 24rem; margin-inline: auto; background: var(--surface); padding: 1.5rem; border-radius: var(--radius); }
.paa-login input[type=text], .paa-login input[type=password] { width: 100%; padding: .55rem .7rem; border: 1px solid var(--line); border-radius: 8px; font: inherit; }
.paa-login p { margin: .5rem 0; }
.paa-login .button, .paa-login input[type=submit] { background: var(--primary); color: #fff; border: 0; padding: .6rem 1.2rem; border-radius: 999px; font: inherit; font-weight: 600; cursor: pointer; }
/* Entrar com a conta da escola (Google): é a porta principal — azul da casa, à largura toda, com o G
   da Google num círculo branco (o logótipo só se mostra sobre branco); a palavra-passe fica por baixo
   e o seu «Entrar» passa a secundário */
.paa-login .entrar-google { margin: .75rem 0 .25rem; }
.paa-login .botao-google { display: flex; align-items: center; justify-content: center; gap: .75rem; width: 100%; min-height: 3.25rem; background: var(--primary); color: #fff; border: 0; padding: .5rem 1.25rem .5rem .5rem; border-radius: 999px; font: inherit; font-size: 1.05rem; font-weight: 700; cursor: pointer; box-shadow: var(--shadow); }
.paa-login .botao-google svg { flex: none; width: 2.25rem; height: 2.25rem; padding: .5rem; background: #fff; border-radius: 50%; }
.paa-login .botao-google:hover { background: var(--primary-dark); }
.paa-login .botao-google:focus-visible { outline: 3px solid var(--accent); outline-offset: 2px; }
.paa-login .entrar-google small { display: block; margin-top: .45rem; color: var(--muted); text-align: center; }
.paa-login .ou { display: flex; align-items: center; gap: .6rem; margin: 1.1rem 0 .5rem; color: var(--muted); font-size: .9em; }
.paa-login .ou::before, .paa-login .ou::after { content: ""; flex: 1; border-top: 1px solid var(--line); }
.paa-login .entrar-google ~ form input[type=submit] { background: transparent; color: var(--primary); box-shadow: inset 0 0 0 2px var(--primary); }
/* entrar sempre neste computador: a caixa por baixo do botão, e o aviso de que este computador entra sozinho */
.paa-login [hidden] { display: none !important; }
.paa-login .entrar-sempre { display: flex; align-items: center; gap: .45rem; margin-top: .75rem; font-size: .95em; cursor: pointer; }
.paa-login .entrar-google .entrar-sempre-nota { text-align: left; margin: .1rem 0 0 1.6rem; font-size: .85em; }
.paa-login .entrar-auto p { margin: .6rem 0 0; color: var(--muted); font-size: .9em; text-align: center; }
.paa-login.a-entrar > * { display: none !important; }
.paa-login.a-entrar::after { content: "A entrar com a conta da escola…"; display: block; padding: 1.5rem 0; text-align: center; font-weight: 600; color: var(--primary); }
.aviso-msg { padding: .7rem 1rem; border-radius: 8px; background: var(--certo-fundo, #e8f5e9); color: var(--certo-tinta, #1b5e20); border-left: 4px solid var(--certo-risco, #43a047); }
.aviso-msg.erro { background: var(--erro-fundo, #fdecea); color: var(--erro-tinta, #b71c1c); border-color: var(--erro-risco, #e53935); }
.aviso-msg.aviso { background: var(--aviso-fundo, #fff6e5); color: var(--aviso-tinta, #7a4100); border-color: var(--accent, #e8792b); display: block; } /* o .aviso solto é flex (faixas da inicial); aqui é só o tom */
.aviso-msg { scroll-margin-top: 6rem; }   /* a mensagem que volta ao ponto de origem rola com a folga do cabeçalho fixo */
.aviso-msg:focus { outline: none; }
.aviso-msg-origem { margin: 0 0 .75rem; }
.filtros { display: flex; flex-wrap: wrap; gap: 1rem 1.5rem; align-items: center; margin: 0 0 1.5rem; padding: .75rem 1rem; background: var(--surface); border-radius: 10px; }
.filtros select { font: inherit; padding: .3rem .5rem; border-radius: 6px; border: 1px solid var(--line); }
.tabela { width: 100%; border-collapse: collapse; font-size: .93rem; background: var(--white); }
.tabela th { text-align: left; background: var(--primary); color: #fff; padding: .55rem .7rem; font-weight: 600; }
.tabela td { padding: .55rem .7rem; border-bottom: 1px solid var(--line); vertical-align: top; }
.tabela tr:hover td { background: var(--surface); }
.tabela .acoes { white-space: nowrap; }
.tabela .acoes a, .tabela .acoes form { display: inline-block; margin-right: .5rem; }
button.link { background: none; border: 0; padding: 0; color: var(--erro-tinta, #b71c1c); font: inherit; cursor: pointer; text-decoration: underline; }
.pendente { color: var(--accent); font-weight: 600; }
/* critérios por ano letivo (0.9.53–0.9.57): o resumo do ano, o botão à direita do título da secção, o botão pequeno na tabela e o formulário num modal */
.paa-form label.escondido { display: none; }   /* o «hidden» não vence o display:flex dos labels */
.resumo-ano { display: flex; flex-wrap: wrap; gap: .3rem .9rem; margin: .4rem 0 .8rem; font-size: .9rem; color: var(--muted); }
.h-seccao small.meta { font-size: .8rem; font-weight: 400; }
.h-seccao .acao-direita { margin-left: auto; font-size: .9rem; padding: .4rem .9rem; }
.tabela .button.mini { padding: .25rem .8rem; font-size: .85rem; }
form.preparar { margin: .4rem 0 1rem; }
.escola-form { border: 0; border-radius: 12px; padding: 0; width: min(44rem, calc(100% - 2rem)); box-shadow: 0 18px 50px rgba(0,0,0,.28); }
.escola-form::backdrop { background: rgba(18,45,90,.45); background: color-mix(in srgb, var(--primary-dark) 45%, transparent); }
.escola-form .paa-form { border: 0; max-width: none; padding: 1.4rem 1.5rem 1.2rem; }
.escola-form .paa-form h3 { margin: 0; }
.escola-form-botoes { display: flex; gap: .6rem; align-items: center; margin: 0; }
/* as Definições (0.9.58): os cartões do índice e as fichas dos ficheiros escolhidos da Biblioteca */
.definicoes-cartoes { display: grid; grid-template-columns: repeat(auto-fill, minmax(16rem, 1fr)); gap: .9rem; margin: .8rem 0 1.6rem; }
.definicao-cartao { display: flex; flex-direction: column; gap: .35rem; padding: 1rem 1.1rem; border: 1px solid var(--line); border-radius: 10px; background: var(--white); text-decoration: none; color: inherit; }
.definicao-cartao:hover, .definicao-cartao:focus-visible { border-color: var(--primary, #1b4f9c); box-shadow: 0 2px 10px rgba(18,45,90,.08); }
.definicao-cartao strong { color: var(--primary-dark, #122d5a); font-size: 1.05rem; }
.definicao-cartao span { color: var(--muted); font-size: .92rem; line-height: 1.4; }
.definicoes-form fieldset { gap: .9rem; }
.definicoes-form input.curto { max-width: 10rem; }
.def-anexo-lista { list-style: none; margin: .3rem 0 0; padding: 0; display: flex; flex-wrap: wrap; gap: .5rem; }
.def-anexo-ficha { display: inline-flex; align-items: center; gap: .5rem; border: 1px solid var(--line); border-radius: 8px; padding: .3rem .5rem; background: var(--surface); font-size: .9rem; max-width: 100%; }
.def-anexo-ficha img, .def-anexo-capa { width: 2.4rem; height: 2.4rem; object-fit: cover; border-radius: 4px; flex: none; }
.def-anexo-capa { display: grid; place-items: center; background: var(--erro-fundo, #fdecea); color: var(--erro-tinta, #b71c1c); font-size: .7rem; font-weight: 700; }
.def-anexo-ficha a { overflow-wrap: anywhere; }
.def-anexo-tirar { background: none; border: 0; color: var(--erro-tinta, #b71c1c); font: inherit; font-weight: 700; cursor: pointer; padding: 0 .2rem; }
.def-anexo-botoes { display: flex; align-items: center; gap: .8rem; margin: .5rem 0 0; }
.chip-mini { display: inline-block; font-size: .7rem; background: var(--accent); color: #fff; padding: .1rem .45rem; border-radius: 999px; vertical-align: middle; font-weight: 700; }
.contagem { font-size: .85rem; background: var(--surface); color: var(--muted); padding: .1rem .6rem; border-radius: 999px; }
.paa-form { display: flex; flex-direction: column; gap: 1rem; max-width: 56rem; background: var(--white); border: 1px solid var(--line); border-radius: var(--radius); padding: 1.5rem; }
.paa-form label { display: flex; flex-direction: column; gap: .3rem; font-weight: 600; font-size: .92rem; }
.paa-form label small { font-weight: 400; color: var(--muted); }
.paa-form input[type=text], .paa-form input[type=number], .paa-form input[type=date], .paa-form input[type=datetime-local], .paa-form textarea, .paa-form select { font: inherit; padding: .5rem .7rem; border: 1px solid var(--line); border-radius: 8px; width: 100%; background: var(--white); }
.paa-form textarea { resize: vertical; }
.paa-form .linha { display: grid; grid-template-columns: repeat(auto-fit, minmax(12rem, 1fr)); gap: 1rem; }
.paa-form fieldset { border: 1px solid var(--line); border-radius: 10px; padding: .75rem 1rem 1rem; display: flex; flex-direction: column; gap: .75rem; }
.paa-form legend { font-weight: 700; color: var(--primary); padding: 0 .4rem; }
/* fichas que fluem: os nomes curtos empacotam, os longos tomam a largura que precisam */
.termos { display: flex; flex-wrap: wrap; gap: .45rem; max-height: 15rem; overflow-y: auto; padding: .25rem .1rem; }
.termo { display: inline-flex; flex-direction: row !important; align-items: center; gap: .45rem !important; font-weight: 400 !important; max-width: 100%; border: 1px solid var(--line); border-radius: 999px; padding: .3rem .8rem; background: var(--white); cursor: pointer; }
.termo input { margin: 0; flex: none; }
.termo:has(input:checked) { border-color: var(--accent-texto); background: var(--aviso-fundo, #fff6e5); font-weight: 600 !important; }
.termo[hidden] { display: none !important; }
.outro input { max-width: 24rem; }
.paa-form .button { border: 0; cursor: pointer; font: inherit; font-weight: 600; }
.paa-eventos { display: grid; grid-template-columns: 1.3fr 1fr; gap: 1.5rem; align-items: start; }
.paa h2 small { font-size: .85rem; font-weight: 400; }
.grid-atividades { display: grid; grid-template-columns: repeat(auto-fill, minmax(17rem, 1fr)); gap: .9rem; margin-bottom: 1.5rem; }
.atividade-card { display: flex; flex-direction: column; gap: .3rem; padding: 1rem 1.1rem; background: var(--white); border: 1px solid var(--line); border-left: 4px solid var(--accent); border-radius: 10px; text-decoration: none; color: var(--ink); transition: box-shadow .15s; }
.atividade-card:hover { box-shadow: var(--shadow); color: var(--primary); }
.atividade-card .meta { font-size: .85rem; }
.atividade-grid { display: grid; grid-template-columns: 2fr 1fr; gap: 2rem; align-items: start; }
.atividade-lado { background: var(--surface); border-radius: var(--radius); padding: 1.25rem; font-size: .93rem; }
.atividade-lado h3 { font-size: .8rem; text-transform: uppercase; letter-spacing: .05em; color: var(--muted); margin: 1rem 0 .25rem; }
.atividade-lado h3:first-child { margin-top: 0; }
.atividade-lado ul { margin: 0; padding-left: 1.1rem; }
.atividade-lado p { margin: 0; }
.tabela-relatorio { font-size: .85rem; }
@media (max-width: 800px) { .paa-eventos, .atividade-grid { grid-template-columns: 1fr; } .tabela { display: block; overflow-x: auto; } }
@media print {
	.site-header, .site-footer, .no-print, .hero { display: none !important; }
	body { font-size: 11px; }
	.tabela th { background: #ddd !important; color: #000; -webkit-print-color-adjust: exact; }
	.tabela tr { break-inside: avoid; }
}

/* Área do professor: resumo, estado vazio, formulário por secções, tabela em telemóvel */
.paa-resumo-prof div, .paa-resumo-prof a { display: flex; flex-direction: column; align-items: center; background: var(--white); border: 1px solid var(--line); border-radius: var(--radius); padding: .9rem .5rem; color: var(--ink); text-decoration: none; }
.paa-resumo-prof a { background: var(--primary); border-color: var(--primary); transition: background .15s; }
.paa-resumo-prof a strong, .paa-resumo-prof a span { color: #fff; }
.paa-resumo-prof a span { opacity: .85; }
.paa-resumo-prof a:hover { background: var(--accent); border-color: var(--accent); }
.paa-resumo-prof a:hover strong, .paa-resumo-prof a:hover span { color: #fff; opacity: 1; }
.paa-resumo-prof .atencao strong { color: var(--accent); }
.paa-resumo-prof a.atencao:hover strong { color: #fff; }
.paa-vazio { background: var(--surface); border-radius: var(--radius); padding: 1.5rem; max-width: 40rem; }
.paa-vazio p:last-child { margin: 0; }
.seccao-form { gap: 1rem; background: var(--surface); border-color: transparent; }
.seccao-form > legend { font-size: 1.05rem; background: var(--white); border: 1px solid var(--line); border-radius: 999px; padding: .15rem .8rem; }
.seccao-form .lista-termos { border: 0; padding: 0; }
.lista-termos legend { font-size: .95rem; padding: 0; }
.lista-termos legend .contagem { margin-left: .3rem; }
.filtro-termos { max-width: 18rem; font: inherit; padding: .4rem .6rem; border: 1px solid var(--line); border-radius: 8px; }
.paa-form details.lista-longa { background: var(--white); border: 1px solid var(--line); border-radius: 10px; padding: .55rem .9rem; }
.paa-form details.lista-longa summary { font-weight: 700; color: var(--primary); cursor: pointer; font-size: .95rem; }
.lista-longa .filtro-termos { margin-top: .5rem; }
.lista-longa .termos { flex-direction: column; gap: .15rem; max-height: none; margin-top: .4rem; }
.lista-longa .termo { border: 0; border-radius: 8px; padding: .3rem .5rem; align-items: flex-start; background: none; }
.lista-longa .termo input { margin-top: .2rem; }
.lista-longa .termo:has(input:checked) { background: var(--aviso-fundo, #fff6e5); }
.paa-arruma .termos { max-height: none; }
.paa-arruma h3 { margin: 1.3rem 0 .5rem; }
.paa-arruma .termo a { font-weight: 600; }
.termo[hidden] { display: none !important; }
@media (max-width: 700px) {
	.paa .tabela thead { display: none; }
	.paa .tabela, .paa .tabela tbody, .paa .tabela tr, .paa .tabela td { display: block; width: 100%; }
	.paa .tabela tr { border: 1px solid var(--line); border-radius: 10px; margin-bottom: .75rem; padding: .5rem .75rem; background: var(--white); }
	.paa .tabela td { border: 0; padding: .25rem 0; }
	.paa .tabela td[data-r]::before { content: attr(data-r) ": "; color: var(--muted); font-size: .8rem; }
	.paa .tabela td[data-r="Atividade"]::before { content: ""; }
	.paa .tabela td[data-r="Atividade"] a { font-weight: 700; font-size: 1.02rem; }
	.paa .tabela .acoes { display: flex; gap: .75rem; padding-top: .5rem; }
}

/* Área do professor: estados e botão pequeno */
.chip-cinza { background: var(--muted); }
.chip-vermelho { background: var(--erro-tinta, #b71c1c); } /* devolvida: precisa da mão do autor */
.chip-verde { background: var(--certo-cheio, #2e7d32); }
.button.mini { padding: .3rem .8rem; font-size: .82rem; }
/* o botão principal de uma escolha: maior, para pesar mais que o do lado */
.button-grande { padding: .8rem 1.7rem; font-size: 1.05rem; }
.tabela .acoes .button.mini { vertical-align: middle; }
.primeira-data { background: var(--white); }
.primeira-data legend small { font-weight: 400; color: var(--muted); }

/* Área do professor: tabela ordenável e filtros */
.tabela-ordenavel th a { color: #fff; text-decoration: none; }
.tabela-ordenavel th a[aria-current]::after { content: ' \25BE'; }
.tabela-ordenavel th a:hover { text-decoration: underline; }
.paa .filtros-paa { margin-bottom: 1rem; }
.paa .resultados { margin: 0 0 .5rem; }

/* Área do professor: avaliação do evento recolhida; botões pequenos como ação principal */
.paa-form details.acordeao { padding: .4rem .9rem; }
.paa-form details.acordeao summary { font-weight: 700; color: var(--primary); }
.paa-form details.acordeao fieldset { border: 0; padding: .5rem 0 0; }
.tabela .acoes a.button.mini { color: #fff; margin-right: .5rem; }

/* Contador de caracteres do título (área do professor) */
.contador-titulo { font-size: .8rem; color: var(--muted); font-weight: 400; }
.contador-titulo .barra { height: 4px; background: var(--line); border-radius: 2px; overflow: hidden; margin: .25rem 0 .2rem; }
.contador-titulo .barra span { display: block; height: 100%; background: var(--primary); transition: width .15s; }
.contador-titulo.perto .barra span { background: var(--accent); }

/* O modal das perguntas do painel: o <dialog> do HTML, vestido. */
.escola-modal { border: 0; border-radius: 12px; padding: 0; max-width: 30rem; width: calc(100% - 2rem); box-shadow: 0 18px 50px rgba(0,0,0,.28); }
.escola-modal::backdrop { background: rgba(18,45,90,.45); background: color-mix(in srgb, var(--primary-dark) 45%, transparent); }
.escola-modal form { padding: 1.4rem 1.5rem 1.2rem; margin: 0; }
.escola-modal h3 { margin: 0 0 .5rem; font-size: 1.15rem; }
.escola-modal p { margin: 0 0 1.2rem; color: var(--muted, #5c6b7a); }
.escola-modal-botoes { display: flex; gap: .6rem; justify-content: flex-end; }

/* Ver como fica: a ficha do site dentro de uma moldura encolhida. */
.escola-ver { border: 0; border-radius: 12px; padding: 0; width: min(96vw, 1100px); height: 88vh; max-width: none; max-height: none; box-shadow: 0 18px 50px rgba(0,0,0,.3); }
.escola-ver::backdrop { background: rgba(18,45,90,.5); background: color-mix(in srgb, var(--primary-dark) 50%, transparent); }
.escola-ver header { display: flex; align-items: center; gap: .8rem; padding: .7rem 1rem; border-bottom: 1px solid var(--line, #e1e6ec); }
.escola-ver header form { margin-left: auto; }
.escola-ver-nota { color: var(--muted, #5c6b7a); font-size: .85rem; }
.escola-ver-palco { position: relative; overflow: hidden; height: calc(88vh - 3.4rem); background: #fff; }
.escola-ver-moldura { width: 1200px; border: 0; transform-origin: 0 0; display: block; }
/* O campo que ainda não cumpre veste a cor de aviso enquanto se preenche (datas trocadas,
   motivo em falta): o erro diz-se na hora, não depois do servidor. */
.paa-form input.campo-aviso, .paa-form select.campo-aviso, .paa-form textarea.campo-aviso { background: var(--aviso-fundo, #fff6e5); border-color: var(--accent, #e8792b); }

/* O painel lateral de ajuda: o manual por cima do ecrã, aparado ao capítulo que fala dele —
   como a ajuda da aplicação Pessoal Docente. Sem escala: aqui lê-se, não se pré-visualiza. */
dialog.escola-ajuda { position: fixed; inset: 0 0 0 auto; width: min(30rem, 94vw); height: 100dvh; max-width: none; max-height: none; margin: 0 0 0 auto; border: 0; border-radius: 0; padding: 0; background: var(--white, #fff); box-shadow: -16px 0 46px rgba(18,45,90,.3); }
dialog.escola-ajuda[open] { display: flex; flex-direction: column; }
dialog.escola-ajuda::backdrop { background: rgba(18,45,90,.35); background: color-mix(in srgb, var(--primary-dark) 35%, transparent); }
.escola-ajuda header { display: flex; align-items: center; gap: .8rem; padding: .7rem 1rem; border-bottom: 1px solid var(--line, #e1e6ec); }
.escola-ajuda header strong { margin-right: auto; font-size: 1.05rem; }
.escola-ajuda-tudo { font-size: .9rem; font-weight: 600; white-space: nowrap; }
.escola-ajuda-moldura { border: 0; width: 100%; flex: 1; background: var(--white, #fff); }
/* A tabuleta da pré-visualização flutua a meio da margem esquerda: lê-se como uma prova
   sobreposta à página, não como o cabeçalho dela, e a saída fica sempre à mão. */
.escola-previsualizacao-aviso { position: fixed; left: 0; top: 50%; transform: translateY(-50%); z-index: 9999; display: flex; flex-direction: column; gap: .6rem; width: 13rem; max-width: 62vw; margin: 0; padding: .9rem 1rem; background: var(--aviso-fundo, #fff6e5); color: var(--aviso-tinta, #7a4100); font-weight: 600; text-align: left; border-radius: 0 14px 14px 0; box-shadow: 0 8px 28px rgba(0,0,0,.28); }
.escola-previsualizacao-sair { display: block; text-align: center; background: var(--aviso-tinta, #7a4100); color: var(--white, #fff); text-decoration: none; padding: .45rem 1rem; border-radius: 999px; font-weight: 700; }
.escola-previsualizacao-sair:hover, .escola-previsualizacao-sair:focus { background: #6f3c0c; color: #fff; }

/* Campo de ficheiro com a etiqueta à parte: assim o clique só abre a caixa no botão
   e no próprio texto da etiqueta, não na largura toda da linha. */
.paa-form .campo { display: block; margin-bottom: .9rem; }
.paa-form .campo > label { display: block; font-weight: 600; margin-bottom: .25rem; }
.paa-form .campo > input[type="file"] { display: block; }

/* Enquadrar a imagem antes de a enviar. */
.escola-corte { border: 0; border-radius: 12px; padding: 0; width: min(94vw, 860px); max-width: none; box-shadow: 0 18px 50px rgba(0,0,0,.3); }
.escola-corte::backdrop { background: rgba(18,45,90,.5); background: color-mix(in srgb, var(--primary-dark) 50%, transparent); }
.escola-corte header { display: flex; align-items: baseline; gap: .8rem; padding: .8rem 1rem; border-bottom: 1px solid var(--line, #e1e6ec); }
.escola-corte-nota { color: var(--muted, #5c6b7a); font-size: .85rem; }
/* o palco veste a lona: a moldura é colocada em cima dele, e se sobrasse palco a um lado
   — numa fotografia ao alto — a moldura assentava ao lado do que mostra */
.escola-corte-palco { position: relative; background: #1f2933; line-height: 0; width: fit-content; max-width: 100%; margin: 0 auto;
  /* a sombra da moldura espalha-se por 9999px para escurecer o que fica de fora; sem este
     corte ela sai do palco e escurece a caixa inteira e a página por trás */
  overflow: hidden; }
/* a lona fica com a cor toda: quem escurece o que sai é a sombra da moldura, e assim
   o que se vê dentro dela é o que a página vai mostrar. A altura é travada para que uma
   fotografia ao alto não empurre o rodapé para fora do ecrã */
.escola-corte-lona { display: block; width: auto; height: auto; max-width: 100%; max-height: 58vh; }
.escola-corte-moldura { position: absolute; border: 2px solid #fff; box-shadow: 0 0 0 9999px rgba(31,41,51,.55); cursor: grab; touch-action: none; }
.escola-corte-moldura:active { cursor: grabbing; }
.escola-corte footer { display: flex; flex-wrap: wrap; align-items: center; gap: .6rem .8rem; padding: .8rem 1rem; }
/* o cursor de aproximar ocupa uma linha só dele, por cima dos botões */
.escola-corte-zoom { display: flex; align-items: center; gap: .6rem; flex: 1 1 100%; }
.escola-corte-zoom label { font-size: .85rem; font-weight: 600; }
.escola-corte-nivel { flex: 1; max-width: 300px; accent-color: var(--primary, #1b4f9c); }
.escola-corte-nivel:disabled { opacity: .4; }
.escola-corte-saida { color: var(--muted, #5c6b7a); font-size: .85rem; }
.escola-corte-ajuda { margin: 0; flex: 1; font-size: .85rem; color: var(--muted, #5c6b7a); }
.escola-imagem-feito:not(:empty) { display: block; margin-top: .3rem; color: var(--certo-cheio, #2e7d32); font-weight: 600; }
/* O lugar na página inicial e a galeria da publicação (core 0.9.43, tema 0.5.35). O que se esconde
   com [hidden] esconde-se mesmo, também uma .linha em grelha. A galeria é uma lista que se junta aos
   bocados, se ordena e se desbasta antes de enviar (painel-imagem.js); sem JavaScript fica o campo
   de ficheiros. O número de cada fotografia é um contador: muda sozinho quando a ordem muda. */
.paa-form [hidden] { display: none !important; }
.galeria-gestor { list-style: none; margin: .4rem 0 .6rem; padding: 0; display: flex; flex-wrap: wrap; gap: .6rem; counter-reset: foto; }
.galeria-gestor li { position: relative; width: 7.5rem; counter-increment: foto; border: 1px solid var(--line, #e1e6ec); border-radius: 10px; background: var(--white, #fff); overflow: hidden; cursor: grab; }
.galeria-gestor li::before { content: counter(foto); position: absolute; top: .3rem; left: .3rem; min-width: 1.5rem; padding: 0 .35rem; border-radius: 999px; background: rgba(18, 45, 90, .85); color: #fff; font-size: .75rem; font-weight: 700; line-height: 1.5rem; text-align: center; }
.galeria-gestor img { display: block; width: 100%; height: 5.5rem; object-fit: cover; }
.galeria-gestor .galeria-ficheiro { display: block; height: 5.5rem; padding: 2rem .4rem 0; font-size: .75rem; overflow-wrap: anywhere; color: var(--muted, #5c6b7a); }
.galeria-gestor li.a-arrastar { opacity: .4; outline: 2px dashed var(--primary, #1b4f9c); }
.galeria-foto-acoes { display: flex; gap: .2rem; padding: .25rem; }
.galeria-foto-acoes button { flex: 1; min-height: 2.1rem; font: inherit; font-size: 1rem; line-height: 1; border: 1px solid var(--line, #e1e6ec); border-radius: 6px; background: var(--surface, #f3f5f8); color: var(--primary, #1b4f9c); cursor: pointer; }
.galeria-foto-acoes button:disabled { opacity: .35; cursor: default; }
.galeria-foto-acoes button[data-tirar] { color: var(--erro-tinta, #b71c1c); }
.campo-galeria.a-receber { outline: 2px dashed var(--primary, #1b4f9c); outline-offset: 4px; border-radius: 8px; }
.campo-galeria [data-galeria-nota] { display: block; margin-top: .45rem; }
/* por baixo da prioridade, o que já está no lugar escolhido, numerado como na página inicial */
.paa-form .lugar-existentes { margin-top: .6rem; }
.paa-form .lugar-existentes ol { margin: .3rem 0 0; padding-left: 1.6rem; font-size: .88rem; color: var(--muted, #5c6b7a); }
.paa-form .lugar-existentes li { margin: .1rem 0; }
.escola-imagem-feito.galeria-aviso { color: var(--aviso-tinta, #7a4100); }
.escola-imagem-feito .galeria-repor { color: var(--primary, #1b4f9c); font-weight: 600; }
/* na fila de quem valida: o lugar e a prioridade que o «publicar» leva */
.fila-lugar { display: flex; flex-wrap: wrap; align-items: center; gap: .3rem; }
.fila-lugar select, .fila-lugar input { font: inherit; font-size: .9rem; padding: .2rem .35rem; border: 1px solid var(--line, #e1e6ec); border-radius: 6px; background: var(--white, #fff); color: var(--ink, #1f2933); }
.fila-lugar input { width: 3.6rem; }
/* A Biblioteca no formulário da publicação (core 0.9.47, tema 0.5.38): escolher o que já lá está, em
   vez de carregar outra vez — a imagem principal, as fotografias da galeria e os PDF. A caixa é uma
   para os três: grelha de miniaturas para as imagens, lista para os PDF (.e-pdf). A escolhida leva
   contorno e um ✓; as que já estão na publicação aparecem, esbatidas, sem se poderem escolher. */
/* «Escolher da Biblioteca» e «Carregar do computador» numa fila, a Biblioteca primeiro (decisão do
   utilizador, 26 set); numa coluna estreita, o segundo passa para baixo. No «Carregar», o campo de
   ficheiro verdadeiro vai por cima do botão, transparente: recebe o clique e o teclado, e o aviso de
   «obrigatório» do browser aparece em cima do botão */
.botoes-ficheiro { display: flex; flex-wrap: wrap; align-items: center; gap: .5rem .6rem; margin: .15rem 0 .5rem; }
.botoes-ficheiro .button { margin: 0; }
/* entre a imagem principal, a galeria e os documentos PDF, uma linha (decisão do utilizador, 26 set):
   três campos de ficheiros seguidos, cada um com os seus botões, liam-se como um só. O mesmo espaço
   dos dois lados dela: o intervalo do formulário mais esta margem em cima, o enchimento em baixo */
.paa-form .campo-ficheiro { margin-bottom: .3rem; }
.paa-form .campo-ficheiro + .campo-ficheiro { padding-top: 1.3rem; border-top: 1px solid var(--line, #e1e6ec); }
/* e a etiqueta de cada um com mais peso, na cor dos títulos e sublinhada na cor de destaque (decisões
   do utilizador, 26 set): com as linhas, é o título da secção. Só o nome — o asterisco fica de fora */
.paa-form .campo-ficheiro > label { font-size: 1.05rem; font-weight: 700; color: var(--primary, #1b3f7a); margin-bottom: .55rem; }
.paa-form .campo-ficheiro > label > span { text-decoration: underline; text-decoration-color: var(--accent, #e8792b); text-decoration-thickness: 2px; text-underline-offset: 5px; }
.botao-carregar { position: relative; overflow: hidden; }
.botao-carregar input[type=file] { position: absolute; inset: 0; width: 100%; height: 100%; margin: 0; padding: 0; opacity: 0; cursor: pointer; font-size: 0; }
.botao-carregar input[type=file]::file-selector-button { cursor: pointer; }
.botao-carregar:focus-within { outline: 3px solid var(--primary, #1b4f9c); outline-offset: 2px; }
/* os botões das caixas (a da Biblioteca e a de enquadrar, que ficam fora do formulário) com o acabamento dos dele */
.escola-biblioteca .button, .escola-corte .button { border: 0; cursor: pointer; font: inherit; font-weight: 600; }
.escola-biblioteca { border: 0; border-radius: 12px; padding: 0; width: min(94vw, 860px); max-width: none; max-height: 88vh; box-shadow: 0 18px 50px rgba(0,0,0,.3); }
.escola-biblioteca[open] { display: flex; flex-direction: column; }
.escola-biblioteca::backdrop { background: rgba(18,45,90,.5); background: color-mix(in srgb, var(--primary-dark) 50%, transparent); }
/* o que se esconde com [hidden] esconde-se mesmo: o .button do tema dava display ao «Mostrar mais» */
.escola-biblioteca [hidden] { display: none !important; }
.escola-biblioteca header { display: flex; flex-wrap: wrap; align-items: center; gap: .6rem 1rem; padding: .8rem 1rem; border-bottom: 1px solid var(--line, #e1e6ec); }
.escola-biblioteca-procura { flex: 1 1 14rem; font: inherit; padding: .45rem .6rem; border: 1px solid var(--line, #e1e6ec); border-radius: 8px; background: var(--white, #fff); color: var(--ink, #1f2933); }
.escola-biblioteca-corpo { flex: 1 1 auto; min-height: 12rem; overflow: auto; padding: .8rem 1rem; }
.escola-biblioteca-estado { margin: 0 0 .6rem; color: var(--muted, #5c6b7a); font-size: .88rem; }
.escola-biblioteca-lista { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: repeat(auto-fill, minmax(8rem, 1fr)); gap: .6rem; }
.escola-biblioteca-item { position: relative; display: flex; flex-direction: column; width: 100%; height: 100%; margin: 0; padding: 0; border: 2px solid var(--line, #e1e6ec); border-radius: 10px; background: var(--white, #fff); overflow: hidden; cursor: pointer; font: inherit; text-align: left; color: var(--ink, #1f2933); }
.escola-biblioteca-item img { display: block; width: 100%; aspect-ratio: 1; object-fit: cover; background: var(--surface, #f3f5f8); }
.escola-biblioteca-nome { display: block; padding: .3rem .45rem; font-size: .75rem; line-height: 1.3; overflow-wrap: anywhere; }
.escola-biblioteca-item:hover { border-color: var(--primary, #1b4f9c); }
.escola-biblioteca-item:focus-visible { outline: 3px solid var(--primary, #1b4f9c); outline-offset: 2px; }
.escola-biblioteca-item[aria-pressed="true"] { border-color: var(--primary, #1b4f9c); box-shadow: 0 0 0 2px var(--primary, #1b4f9c); }
.escola-biblioteca-item[aria-pressed="true"]::after { content: "✓"; position: absolute; top: .35rem; right: .35rem; width: 1.6rem; height: 1.6rem; border-radius: 999px; background: var(--primary, #1b4f9c); color: #fff; font-weight: 700; line-height: 1.6rem; text-align: center; }
.escola-biblioteca-item:disabled { opacity: .45; cursor: default; border-style: dashed; }
.escola-biblioteca.e-pdf .escola-biblioteca-lista { grid-template-columns: 1fr; gap: .4rem; }
.escola-biblioteca.e-pdf .escola-biblioteca-item { flex-direction: row; align-items: center; gap: .7rem; padding: .35rem 2.6rem .35rem .6rem; }
.escola-biblioteca.e-pdf .escola-biblioteca-item img, .escola-biblioteca-sem-capa { width: 2.6rem; height: 3.4rem; aspect-ratio: auto; flex: none; object-fit: cover; border-radius: 4px; }
.escola-biblioteca-sem-capa { display: grid; place-items: center; background: var(--erro-fundo, #fdecea); color: var(--erro-tinta, #b71c1c); font-size: .7rem; font-weight: 700; }
.escola-biblioteca.e-pdf .escola-biblioteca-nome { padding: 0; font-size: .92rem; }
.escola-biblioteca.e-pdf .escola-biblioteca-item[aria-pressed="true"]::after { top: 50%; right: .6rem; transform: translateY(-50%); }
.escola-biblioteca-quando { display: block; margin-top: .1rem; color: var(--muted, #5c6b7a); font-size: .78rem; }
.escola-biblioteca-mais-p { margin: .9rem 0 0; text-align: center; }
.escola-biblioteca footer { display: flex; flex-wrap: wrap; align-items: center; gap: .6rem .8rem; padding: .8rem 1rem; border-top: 1px solid var(--line, #e1e6ec); }
.escola-biblioteca-conta { flex: 1; color: var(--muted, #5c6b7a); font-size: .88rem; }
/* no formulário: a miniatura da imagem principal escolhida — a atual, a da Biblioteca ou a que saiu
   da caixa de enquadrar (pedido do utilizador, 26 set) —, e a lista dos PDF da publicação */
.imagem-escolhida { display: flex; align-items: center; gap: .7rem; margin: .4rem 0 .6rem; padding: .45rem .6rem .45rem .45rem; border: 1px solid var(--line, #e1e6ec); border-radius: 10px; background: var(--white, #fff); }
.imagem-escolhida img { width: 8rem; height: 5rem; flex: none; object-fit: cover; border-radius: 6px; }
.imagem-escolhida span { flex: 1; font-size: .88rem; }
.pdf-gestor { list-style: none; margin: .4rem 0 .6rem; padding: 0; display: grid; gap: .35rem; }
.pdf-gestor li { display: flex; align-items: center; gap: .6rem; padding: .35rem .35rem .35rem .6rem; border: 1px solid var(--line, #e1e6ec); border-radius: 8px; background: var(--white, #fff); font-size: .9rem; }
.pdf-gestor .pdf-nome { flex: 1; overflow-wrap: anywhere; }
.pdf-gestor .pdf-origem { color: var(--muted, #5c6b7a); font-size: .78rem; }
.pdf-gestor button[data-tirar] { flex: none; min-width: 2.1rem; min-height: 2.1rem; font: inherit; font-size: 1rem; line-height: 1; border: 1px solid var(--line, #e1e6ec); border-radius: 6px; background: var(--surface, #f3f5f8); color: var(--erro-tinta, #b71c1c); cursor: pointer; }
.campo-pdf [data-pdf-nota] { display: block; margin-top: .45rem; }

/* A caixa de formatar o texto da publicação. */
.escola-editor-etiqueta { display: block; margin-bottom: .3rem; font-weight: 600; }
.escola-editor { border: 1px solid var(--line, #e1e6ec); border-radius: var(--radius, 8px); background: var(--white, #fff); overflow: hidden; }
.escola-editor:focus-within { border-color: var(--primary, #1b4f9c); }
.escola-editor-barra { display: flex; flex-wrap: wrap; gap: .25rem; padding: .35rem; border-bottom: 1px solid var(--line, #e1e6ec); background: var(--surface, #f6f8fa); }
.escola-editor-barra button { border: 1px solid transparent; border-radius: 6px; background: none; padding: .25rem .55rem; font: inherit; font-size: .85rem; line-height: 1.6; color: var(--ink, #1f2933); cursor: pointer; }
.escola-editor-barra button:hover { background: var(--white, #fff); border-color: var(--line, #e1e6ec); }
.escola-editor-barra button[aria-pressed="true"] { background: var(--primary, #1b4f9c); border-color: var(--primary, #1b4f9c); color: #fff; }
.escola-editor-folha { min-height: 11rem; padding: .7rem .9rem; outline: 0; }
.escola-editor-folha > :first-child { margin-top: 0; }
.escola-editor-folha > :last-child { margin-bottom: 0; }
.escola-editor-folha h3 { font-size: 1.15rem; margin: 1rem 0 .4rem; }
/* a citação na folha veste-se como na página: o que se vê aqui é o que sai lá */
.escola-editor-folha blockquote { margin: .6rem 1.5rem; padding: 0; border: 0; color: var(--muted, #5c6b7a); font-style: italic; }
.escola-editor-folha ul, .escola-editor-folha ol { margin: .5rem 0; padding-left: 1.4rem; }
.escola-editor-folha a { color: var(--primary, #1b4f9c); }

/* Perguntar o endereço de uma ligação. */
.escola-ligacao { width: min(94vw, 460px); }
.escola-ligacao-corpo { padding: .9rem 1rem; }
.escola-ligacao-corpo label { display: block; font-weight: 600; margin-bottom: .3rem; }
.escola-ligacao-corpo input { width: 100%; box-sizing: border-box; }
.escola-ligacao-corpo small { display: block; margin-top: .4rem; color: var(--muted, #5c6b7a); }

/* Paginação da lista das publicações do professor. */
.paa-paginacao { display: flex; flex-wrap: wrap; gap: .3rem; margin: .8rem 0 0; }
.paa-paginacao a, .paa-paginacao span { display: inline-block; min-width: 2rem; text-align: center; padding: .35rem .6rem; border-radius: 8px; text-decoration: none; font-weight: 600; }
.paa-paginacao a { background: var(--surface, #f6f8fa); color: var(--primary, #1b4f9c); }
.paa-paginacao a:hover { background: var(--line, #e1e6ec); }
.paa-paginacao [aria-current] { background: var(--primary, #1b4f9c); color: #fff; }
/* Contratação (plugin escola-contratacao): a secção do painel — os cartões públicos têm a folha
   de recurso do próprio plugin */
.chip-azul { background: var(--escola-primary); }
.contratacao .tabela-concursos small { display: block; }
.concurso-cabeca .chip-mini { vertical-align: middle; font-size: .75rem; margin-left: .3rem; }
.paa-form .horario-linha { align-items: end; grid-template-columns: repeat(3, minmax(0, 1fr)) auto; }
.paa-form .horario-linha + .horario-linha { border-top: 1px dashed var(--escola-line); padding-top: .75rem; }
@media (max-width: 520px) { .paa-form .horario-linha { grid-template-columns: 1fr 1fr; } }
.paa-form .horario-tirar { margin: 0; align-self: end; }
.paa-form .titulo-previo { background: var(--escola-surface); padding: .6rem .8rem; border-radius: 8px; margin: 0; }
.paa-form .origem-ficheiro .termos { max-height: none; }
.acordeao-concurso { border: 1px solid var(--escola-line); border-radius: 10px; padding: .55rem .9rem; margin: 1rem 0; background: var(--escola-white); }
.acordeao-concurso > summary { font-weight: 700; color: var(--escola-primary); cursor: pointer; }
.acordeao-concurso .paa-form { border: 0; padding: .75rem 0 0; }
.apagar-concurso { margin-top: 1.25rem; }
.registo-concurso { margin-top: 1.25rem; font-size: .9rem; }
.registo-concurso > summary { cursor: pointer; font-weight: 600; color: var(--escola-muted); }
.registo-concurso ul { list-style: none; padding: 0; margin: .4rem 0 0; }
.paa-form .campos-concurso { display: flex; flex-direction: column; gap: 1rem; }

/* a Aparência (core 0.9.59): as paletas em caixas, cada uma com a sua amostra pintada pelas variáveis da caixa (--p, --pe, --pc, --d, --dt) */
.paletas { display: grid; grid-template-columns: repeat(auto-fill, minmax(16rem, 1fr)); gap: 1rem; }
.paleta { border: 2px solid var(--line); border-radius: 12px; padding: .8rem .9rem; display: flex; flex-direction: column; gap: .6rem; background: var(--white); }
.paleta.escolhida { border-color: var(--primary, #1b4f9c); box-shadow: 0 0 0 3px color-mix(in srgb, var(--primary, #1b4f9c) 18%, transparent); }
.paleta.sem-contraste { border-color: var(--erro-risco, #e53935); }
.paleta.sem-contraste::after { content: "A cor principal é clara de mais para texto branco."; color: var(--erro-tinta, #b71c1c); font-size: .85rem; }
.paa-form .paleta-nome { flex-direction: row; align-items: center; gap: .5rem; font-weight: 700; cursor: pointer; }
.paa-form .paleta-nome input { width: auto; margin: 0; }
.paleta-amostra { display: block; border-radius: 8px; overflow: hidden; border: 1px solid var(--line); font-size: .78rem; }
.am-barra { display: flex; justify-content: space-between; align-items: center; background: var(--p); color: #fff; padding: .35rem .6rem; font-weight: 700; }
.am-botao-claro { background: rgba(255,255,255,.18); border-radius: 999px; padding: .1rem .5rem; font-weight: 500; }
.am-hero { display: flex; flex-direction: column; gap: .1rem; padding: .7rem .6rem; background: linear-gradient(120deg, var(--p), var(--pc)); color: #fff; }
.am-hero span { font-weight: 800; font-size: 1rem; }
.am-hero small { opacity: .9; }
.am-corpo { display: flex; align-items: center; gap: .6rem; padding: .55rem .6rem; background: #fff; color: var(--ink, #1f2933); }
.am-botao { background: var(--p); color: #fff; border-radius: 999px; padding: .2rem .6rem; font-weight: 600; }
.am-link { color: var(--pe); text-decoration: underline; text-decoration-color: var(--d); }
.am-etiqueta { color: var(--dt); font-weight: 700; text-transform: uppercase; font-size: .7rem; letter-spacing: .05em; border: 1px solid var(--d); border-radius: 4px; padding: .05rem .35rem; }
.paleta-cores { display: grid; grid-template-columns: 1fr 1fr; gap: .6rem; }
.paleta-cores small { grid-column: 1 / -1; color: var(--muted); }
.paa-form .paleta-cores input[type=color] { width: 100%; height: 2.4rem; padding: .15rem; border: 1px solid var(--line); border-radius: 8px; background: var(--white); cursor: pointer; }
.paleta-ver { font-size: .85rem; }
