/* ==========================================================================
   Calendário Escolar.pt · Impressão A4
   Carregada com media="print" depois de style.css: não bloqueia o
   primeiro paint e ganha por ordem às regras de ecrã. Era o bloco @media print
   do fim de style.css (v5), sem o invólucro.
   ========================================================================== */
/* Papel A4. A margem inferior maior reserva espaço para a marca em cada folha. */
@page { size: A4; margin: 14mm 12mm 16mm; }

/* Tokens forçados a claro: no papel imprime sempre preto sobre branco,
   mesmo que o dispositivo esteja em dark mode. */
:root {
  --bg: #FFFFFF; --bg-alt: #FFFFFF; --surface: #FFFFFF;
  --ink: #000000; --ink-strong: #000000; --ink-body: #111112;
  --ink-soft: #3F3F46; --ink-faint: #52525B; --ink-mute: #71717A;
  --line: #A1A1AA; --line-soft: #D4D4D8; --deco: #A1A1AA;
  --btn-bg: #000000; --btn-ink: #FFFFFF;
  --card-shadow: none;
  --sel-bg: transparent; --sel-ink: inherit;
  --ferias-bg: #DCFCE7; --ferias-ink: #166534;
  --feriado-bg: #FEF3C7; --feriado-ink: #92400E;
  --exame-bg: #FEE2E2; --exame-ink: #991B1B;
}

/* O que nunca vai para o papel: navegação, botões, FAQ, índices, blocos de ecrã */
.site-header, .site-footer, .breadcrumbs, .btn-row, .related,
h2[id^="relacionad"], .faq, h2#faq, .toc, .skip-link,
section[aria-labelledby="faq"],
.no-print { display: none !important; }

/* FAQ opt-in: páginas onde as perguntas têm informação única podem
   marcar class="faq print-keep" (e h2 id="faq" class="print-keep") */
.faq.print-keep, h2#faq.print-keep, section.print-keep { display: block !important; }
.faq.print-keep details > * { display: block !important; }
.faq.print-keep summary::after { content: none; }

/* Utilitário inverso: conteúdo que só existe no papel */
.print-only { display: block !important; }

/* Base tipográfica em pontos */
html, body { background: #fff; }
body { color: #111112; font-size: 10pt; line-height: 1.45; -webkit-print-color-adjust: exact; print-color-adjust: exact; }
.container { max-width: 100%; padding: 0; }
main { padding-bottom: 0; }

/* Cabeçalho compacto da primeira folha */
.hero { padding: 0 0 6pt; }
h1 { font-size: 17pt; line-height: 1.12; margin-bottom: 4pt; }
h1 em { color: #3F3F46; }
.updated { font-size: 7.5pt; color: #52525B; margin-top: 3pt; }
h2 { font-size: 12.5pt; margin: 14pt 0 5pt; }
h3 { font-size: 10.5pt; margin: 10pt 0 3pt; }
h4 { font-size: 10pt; margin: 8pt 0 3pt; }
p { margin: 0 0 6pt; }
ul, ol { margin: 0 0 6pt; padding-left: 14pt; }
li { margin-bottom: 2pt; }
.muted { font-size: 8pt; color: #52525B; }

/* Quebras: nada de títulos órfãos, tabelas cortadas nem cartões partidos.
   Uma tabela nunca quebra a meio: se não couber no espaço restante, abre
   inteira na folha seguinte. Só uma tabela maior do que a própria folha
   é que flui, com as linhas inteiras e o thead repetido em cada folha. */
h1, h2, h3, h4, caption { break-after: avoid; }
p, li, td { orphans: 3; widows: 3; }
thead { display: table-header-group; }
.table-wrap { break-inside: avoid; }
.month, .key-dates li, .answer-box, .legend, tr { break-inside: avoid; }
h2 + p, h3 + p { break-after: avoid; }

/* Links no papel: texto normal, sem sublinhado nem URL expandido */
a, a:visited { color: inherit !important; text-decoration: none !important; font-weight: inherit; }

/* Exceção opt-in (páginas legais): mostrar o destino dos links no papel */
.print-href a[href^="/"]::after { content: " (calendarioescolar.pt" attr(href) ")"; font-size: 88%; color: #52525B; }
.print-href a[href^="http"]::after { content: " (" attr(href) ")"; font-size: 88%; color: #52525B; word-break: break-all; }

/* Grelhas de preenchimento: pauta de escrita visível no papel */
.grid-fill th, .grid-fill td { border-top: 0.5pt solid #999; }

/* Caixa de resposta e datas-chave */
.answer-box { background: #fff; border: 0.75pt solid #A1A1AA; border-radius: 4pt; padding: 7pt 9pt; margin: 8pt 0; }
.key-dates { grid-template-columns: repeat(auto-fit, minmax(30mm, 1fr)); gap: 2mm; margin: 8pt 0; }
.key-dates { border-top: 1pt solid #18181B; border-bottom: 1pt solid #18181B; padding: 4pt 0 5pt; }
.key-dates li { border: none; border-radius: 0; box-shadow: none; padding: 0 8pt 0 0; }
.key-dates .label { font-size: 6.5pt; margin-bottom: 2pt; color: #52525B; }
.key-dates .value { font-size: 10pt; }

/* Tabelas compactas com cabeçalho repetido por folha (comportamento nativo) */
.table-wrap { border: none; border-radius: 0; box-shadow: none; overflow: visible; margin: 6pt 0 10pt; background: transparent; }
table { font-size: 8.5pt; }
caption { font-size: 9.5pt; padding: 0 0 3pt; }
th, td { padding: 3.5pt 10pt 3.5pt 0; border-top: none; }
th:last-child, td:last-child { padding-right: 0; }
thead th { font-size: 6.5pt; color: #52525B; padding-bottom: 3pt; border-bottom: 1pt solid #18181B; }
tbody tr + tr td { border-top: 0.5pt solid #D4D4D8; }
tbody tr:last-child td { border-bottom: 1pt solid #18181B; }
@media (hover: hover) { tbody tr:hover { background: none; } }
.tag { font-size: 6.5pt; padding: 1pt 4pt; -webkit-print-color-adjust: exact; print-color-adjust: exact; }

/* Grelha mensal, 5 meses por linha em duas filas.
   Passou de 3x4 para 5x2 porque quatro filas de cartoes obrigavam a grelha
   a ocupar uma folha inteira, e era por isso que o PDF tinha quatro paginas. */
h2#calendario-mensal, h2#calendario { margin-top: 6pt; }
.calendar-grid { grid-template-columns: repeat(3, 1fr); gap: 3mm; margin: 5pt 0; }
.month { border: 0.6pt solid #A1A1AA; border-radius: 4pt; box-shadow: none; padding: 5pt 6pt 6pt; }
.month h3 { font-size: 10pt; margin: 0 0 3pt; }
.month table { font-size: 10pt; border-spacing: 2px; }
.month th, .month td { padding: 0; border: 0.5pt solid transparent; border-radius: 1.5pt; }
/* A regra de ecra ".month tbody tr:last-child td { border-bottom: 0 }" existe para
   tirar o traco sob a ultima linha de cada mes. Em impressao tem de ser anulada:
   aqui a moldura E o codigo de leitura, e as regras de cor usam !important sobre
   border-color, que so define a COR e nao a largura nem o estilo. Sem isto, as
   caixas verdes da ultima linha de dezembro e de marco saem ABERTAS em baixo. */
/* A cor tem de vir explicita. A regra geral "tbody tr:last-child td" tem a
   pseudo-classe :last-child, o que lhe da especificidade (0,1,3) e a poe acima
   de ".month td", que e (0,1,1). Sem declarar transparent aqui, as celulas
   VAZIAS da ultima linha herdavam o traco preto da regra geral das tabelas. */
.month tbody tr:last-child td { border-bottom: 0.5pt solid transparent; }
/* table-layout fixed com width 100%: sem isto o border-spacing soma-se aos 100%
   e a tabela transborda 0,79 mm o interior do cartao, o que empurra os dias
   contra a moldura nos cartoes da coluna da direita. */
.month table { table-layout: fixed; width: 100%; }
.month td { height: 16.5pt; }
.month thead th { font-size: 7pt; color: #52525B; padding-bottom: 2pt; border-color: transparent; }
.month td, .legend i { -webkit-print-color-adjust: exact; print-color-adjust: exact; }

/* A MOLDURA E O PESO DO DIGITO SAO O CANAL PRINCIPAL. O FUNDO E BONUS.
   Motivo, e e um defeito grave que estava aqui: nos quatro navegadores a
   opcao "Graficos de fundo" vem DESLIGADA por omissao na caixa de impressao,
   e prevalece sobre print-color-adjust. Com fundos desligados, o marco do ano
   letivo era `background: #000; color: #FFF`, ou seja BRANCO EM PAPEL BRANCO:
   os nove dias mais importantes do calendario desapareciam da folha.
   As molduras, essas, imprimem sempre.

   Segundo motivo: a maioria das impressoras domesticas imprime a preto e
   branco. Medido, os tres fundos claros convertem para luminancias de 243,7,
   242,2 e 244,0 em 255, ou seja menos de 1% de diferenca entre eles. A cor
   sozinha nao consegue separar estes estados no papel. A forma da moldura
   consegue: continua para interrupcao, tracejada para feriado, pontilhada
   para exame, nenhuma para fim de semana. */
.month .d-marco { background: #F4F4F5 !important; color: #000 !important;
                  border: 1.2pt solid #000 !important; font-weight: 700; box-shadow: none !important; }
.month .d-ferias { background: #DCFCE7 !important; color: #166534 !important;
                   border-color: #166534 !important; font-weight: 600; }
.month .d-feriado { background: #FEF3C7 !important; color: #92400E !important;
                    border-style: dashed !important; border-color: #92400E !important; font-weight: 700; }
.month .d-fds { background: #F4F4F5 !important; color: #71717A !important; }

/* As notas por baixo de cada mes repetem o que as tabelas ja dizem, e cada
   uma custa 6 a 8 mm de folha. Em papel a repeticao custa uma pagina. */
.month-note { display: none; }

/* Cartao que ocupa os dois lugares livres da quarta fila. Sem ele, junho fica
   sozinho e o mosaico tem um buraco. Com ele, a folha recupera a leitura
   rapida que se perdeu ao tirar as tabelas de periodos. */
.folha-resumo { display: block !important; grid-column: span 2;
                border: 0.6pt solid #A1A1AA; border-radius: 4pt; padding: 5pt 8pt 6pt; }
.folha-resumo h3 { font-size: 8pt; margin: 0 0 4pt; font-family: var(--mono);
                   letter-spacing: 0.1em; text-transform: uppercase; color: #52525B; }
.folha-resumo dl { display: grid; grid-template-columns: auto 1fr; gap: 2.5pt 10pt;
                   margin: 0; font-size: 8.5pt; line-height: 1.25; }
.folha-resumo dt { color: #52525B; }
.folha-resumo dd { margin: 0; color: #000; font-weight: 600; }

/* Quem tem a folha na mao ja imprimiu: o que for convite de ecra no topo sai */
body.folha-a4 .hero .answer-box, body.folha-a4 .hero .btn-row { display: none !important; }
body.folha-a4 .hero { padding: 0 0 5pt !important; margin: 0 0 6pt !important;
                      border-bottom: 0.75pt solid #A1A1AA; }
body.folha-a4 h1 { font-size: 17pt; margin: 0 0 3pt; }
body.folha-a4 .updated { font-size: 7pt; }

/* A folha A4 imprime QUATRO coisas: cabecalho, legenda, grelha e nota de
   fonte. Tudo o resto do artigo fica no ecra.

   A regra e por EXCLUSAO e nao por lista de seccoes a esconder. Com uma lista,
   a pagina do calendario (19 seccoes) obrigava a enumera-las todas, e uma
   seccao nova aparecia no papel so por ninguem se ter lembrado dela. Assim, o
   que e novo fica de fora por omissao, que e o comportamento seguro.

   As tabelas de periodos, interrupcoes e feriados dizem o que a grelha ja
   mostra a cor e a moldura, mes a mes. Em ecra sao uteis; em papel custavam
   duas folhas, uma delas com dois tercos em branco. O que se perde e o NOME de
   cada feriado, e a perda e assumida: a folha e sobre a escola. */
/* Folga lateral. Sem ela a grelha ocupa exatamente os 186 mm da caixa util e a
   MOLDURA DIREITA dos cartoes da terceira coluna fica cortada: medido a 600 dpi,
   dos 5 pixeis da moldura sobrava 1, porque a metade de fora caia para la do
   limite. A folga e simetrica para as margens ficarem iguais dos dois lados. */
body.folha-a4 .container { padding: 0 0.6mm !important; }

body.folha-a4 .container > * { display: none !important; }
body.folha-a4 .container > .hero,
body.folha-a4 .container > .source-note { display: block !important; }
body.folha-a4 .container > .legend { display: flex !important; }
body.folha-a4 .container > .calendar-grid { display: grid !important; }

/* A legenda repete exatamente as mesmas molduras, senao a chave de leitura
   deixa de servir em monocromatico. */
.legend { font-size: 7.5pt; gap: 3pt 10pt; margin: 4pt 0 6pt; color: #3F3F46; }
.legend i { width: 9pt; height: 9pt; border-radius: 2pt; border: 0.6pt solid transparent; box-shadow: none !important; }
.legend .i-marco { background: #F4F4F5 !important; border: 1.2pt solid #000 !important; }
.legend .i-ferias { background: #DCFCE7 !important; border-color: #166534 !important; }
.legend .i-feriado { background: #FEF3C7 !important; border-style: dashed !important; border-color: #92400E !important; }
.legend .i-fds { background: #F4F4F5 !important; border-color: #A1A1AA !important; }

/* Nota de fonte: mantém-se, é a credibilidade do papel */
/* break-inside: avoid porque era esta nota que abria a quarta pagina do PDF:
   transbordava por cerca de 4 mm e levava consigo so o segundo paragrafo,
   o que fazia sair da impressora uma folha praticamente em branco. */
.source-note { border-top: 0.6pt solid #A1A1AA; padding: 4pt 0 0; margin: 5pt 0 0;
                                   font-size: 6pt; line-height: 1.3; color: #3F3F46; break-inside: avoid; }
.source-note strong { color: #111112; }

/* Marca discreta repetida no fundo de cada folha */
body::after {
  content: "calendarioescolar.pt";
  position: fixed;
  bottom: 0;
  left: 0;
  right: 0;
  height: 5mm;
  padding-top: 1.5mm;
  background: #fff;
  text-align: center;
  font-family: var(--mono);
  font-size: 7pt;
  line-height: 1;
  letter-spacing: 0.08em;
  color: #52525B;
}

/* ---- Acrescentos v6 ---- */
/* O corpo de leitura de ecrã (--t-body, 16 a 17px) não vai para o papel:
   o texto herda os 10pt do body, como antes. */
main { font-size: inherit; }

/* O ícone da FAQ passou a duas barras (::before e ::after) */
.faq.print-keep summary::before { content: none; }
.faq-a { animation: none !important; }

/* Nada de realce de âncora nem da marca de hoje no papel: a folha fica
   pendurada meses depois do dia em que se imprimiu */
h2[id]:target::before, h3[id]:target::before { display: none; }
.month td[aria-current="date"] { box-shadow: none !important; }

/* Camadas e anúncios nunca vão para o papel */
.cc, .nl-fundo, .ad-slot { display: none !important; }
/* O :has continua a acertar com o aviso escondido: sem isto, imprimir com o
   aviso por decidir acrescentava uma folha em branco no fim. */
body:has(.cc) { padding-bottom: 0 !important; }
