/* Portal admitela.com, maqueta v3: o CSS da página, só o que fica dentro de um visual (a folha da prova, a janela,
   o cartão da solução, a lista das provas, as capas) mais a solução em sheet, modal e sheet de baixo.
   O resto vem do sistema da skill (assets/system.css) com a paleta do logótipo.
   Papel: a letra do PDF original (Times → Tinos, Arial Narrow → Archivo Narrow), só dentro da folha. */

:root {
  --marca: #ff522c; --marca-clara: #ff7a4d; --marca-funda: #ef4318; --marca-tinta: #d63f1a;
  --serifa: "Tinos", "Times New Roman", Times, serif;
  --estreita: "Archivo Narrow", "Arial Narrow", Arial, sans-serif;
  --tinta-papel: #161616;
  --saida: cubic-bezier(0.22, 1, 0.36, 1);
}
.ic { width: 18px; height: 18px; flex: none; display: block; }
.nav__logo img { width: 30px; height: auto; margin-right: 8px; }

/* ── A folha: A4 a 96 dpi (794 × 1123) com as medidas do PDF ─────────────────────────────── */
.folha { position: relative; width: 794px; min-height: 1123px; background: #fff; color: var(--tinta-papel);
  padding: 96px 67px 44px 0; font: 400 16px/1.24 var(--serifa); text-align: left; }
.folha-num { position: absolute; top: 52px; right: 64px; font: 400 16px/1 var(--serifa); }
.cab { margin: 7px 0 26px 67px; border: 3px double #1d1d1b; padding: 14px 26px 7px; font-family: var(--estreita); }
.cab-inst { display: grid; grid-template-columns: repeat(4, 1fr); gap: 14px; text-align: center; font: 600 10.5px/1.25 var(--estreita); letter-spacing: 0.06em; text-transform: uppercase; color: #2b2b2b; padding: 0 6px; }
.cab-fio { border-top: 1px solid #1d1d1b; margin: 13px 4px 6px; }
.cab-com, .cab-tit { margin: 0; text-align: center; font: 700 16px/1.25 var(--estreita); }
.cab-tit { font-style: italic; }
.cab-ins { list-style: none; margin: 3px 0 0; padding: 0 0 0 30px; counter-reset: i; font: 400 14.6px/1.15 var(--estreita); }
.cab-ins li { position: relative; counter-increment: i; padding-left: 30px; }
.cab-ins li::before { content: counter(i) "."; position: absolute; left: 0; }
.q { position: relative; display: grid; grid-template-columns: 136px minmax(0, 1fr); align-items: baseline; margin-top: 9px; }
/* a questão activa: um fundo laranja muito leve e um fio da marca à esquerda (E-refs: o realce de linha dos leitores) */
.q::before { content: ""; position: absolute; inset: -6px -14px -7px 78px; border-radius: 10px; background: rgb(255 82 44 / 0.07);
  box-shadow: inset 3px 0 0 var(--marca); opacity: 0; transition: opacity 140ms var(--saida); pointer-events: none; }
.q > * { position: relative; }
.q.ativa::before { opacity: 1; }
.q-n { padding-left: 92px; font-weight: 700; }
.q.ativa .q-n { color: var(--marca-tinta); }
.q-e { text-align: left; }
.q.just .q-e { text-align: justify; hyphens: manual; }
.q-cont { margin-top: 0; }
.alts { margin-top: 8px; }
.alts-linha { display: grid; grid-template-columns: repeat(4, 148px); align-items: center; row-gap: 6px; }
.alt { display: flex; align-items: center; gap: 7px; min-width: 0; }
.alt > b { flex: none; }
.q-fig { display: grid; grid-template-columns: 343px 1fr; gap: 20px; align-items: center; }
.q-fig .q-e { text-align: justify; }
.q-fig .figura { width: 212px; height: auto; justify-self: start; }
.alts-graficos { display: grid; grid-template-columns: repeat(4, 148px); align-items: start; margin-top: 10px; }
.alts-graficos .alt { display: block; }
.alts-graficos .grafico { display: block; margin-top: 6px; width: 137px; height: auto; }
.folha .katex, .sol .katex { font-size: 1.02em; font-family: var(--serifa); }
.folha .katex .mathnormal, .folha .katex .mathit, .sol .katex .mathnormal, .sol .katex .mathit { font-family: var(--serifa); font-style: italic; }
.folha .katex .mord.mathrm, .sol .katex .mord.mathrm { font-family: var(--serifa); }

/* «Ver solução»: sempre à vista, para o toque e para o rato. Cada questão com solução tem na margem direita um
   botão pequeno da marca; a questão aberta mostra-o inteiro, com o texto. Tocar na questão também abre. */
.q.tem-sol { cursor: pointer; }
.ver { position: absolute; top: -3px; left: calc(100% + 6px); display: flex; align-items: center; padding: 0; border: 0; background: none; z-index: 2; cursor: pointer; }
.ver__fio { width: 0; height: 2px; background: var(--marca); transition: width 160ms var(--saida); }
.ver__btn { display: inline-flex; align-items: center; justify-content: center; gap: 6px; height: 30px; min-width: 30px; padding: 0; border-radius: 999px;
  background: rgb(255 82 44 / 0.12); color: var(--marca-tinta); font: 500 14px/1 var(--font-text); white-space: nowrap;
  transition: background 160ms var(--saida), color 160ms var(--saida); }
.ver__btn .ver__txt { display: none; }
.ver__btn .ic { width: 16px; height: 16px; }
.q.ativa > .ver { left: calc(100% + 2px); }
.q.ativa > .ver .ver__fio { width: 14px; }
.q.ativa > .ver .ver__btn { height: 36px; padding: 0 12px 0 16px; background: var(--marca-tinta); color: #fff; box-shadow: 0 10px 22px -12px rgb(214 63 26 / 0.9); }
.q.ativa > .ver .ver__txt { display: inline; }
@media (hover: hover) { .q.tem-sol:hover > .ver .ver__btn { background: rgb(255 82 44 / 0.2); } }

/* ── O herói: o chão da marca e a janela do leitor ──────────────────────────────────────── */
.hero__art.hero__art--marca { background:
    radial-gradient(70% 55% at 15% 8%, rgb(255 255 255 / 0.22), transparent 70%),
    linear-gradient(160deg, var(--marca-clara) 0%, var(--marca) 48%, var(--marca-funda) 100%); }
.leitor { background: #fff; border-radius: 14px; overflow: hidden; color: var(--ink);
  box-shadow: 0 0 0 1px rgb(42 21 22 / 0.08), 0 30px 60px -28px rgb(42 21 22 / 0.55); }
.leitor__bar, .lista__bar { display: flex; align-items: center; gap: 12px; height: 40px; padding: 0 16px; border-bottom: 1px solid rgb(42 21 22 / 0.08);
  font: 400 13px/1 var(--font-mono); color: var(--muted); }
.leitor__dots { display: flex; gap: 6px; } .leitor__dots i { width: 10px; height: 10px; border-radius: 50%; background: #e6dfda; }
.leitor__corpo { padding: 14px 0 0 14px; height: 700px; overflow: hidden; background: #fff; }
.leitor__folha { zoom: 0.56; }
.leitor__folha .folha { padding-top: 40px; }
.leitor__folha .folha-num { top: 8px; }
.hero__art > .ly-piece--note { left: var(--s-6); bottom: var(--s-6); width: 300px; z-index: 2; }
.sol-card { background: #fff; border-radius: 16px; padding: 14px 16px 10px; color: var(--ink); font: 400 14px/1.4 var(--font-text);
  box-shadow: 0 0 0 1px rgb(42 21 22 / 0.06), 0 18px 40px -18px rgb(42 21 22 / 0.5); }
.sol-card__cab { display: flex; align-items: center; justify-content: space-between; gap: 10px; margin-bottom: 4px; }
.sol-card__cab b { font-weight: 600; font-size: 15px; }
.sol-card__chip { display: inline-flex; align-items: center; height: 24px; padding: 0 10px; border-radius: 999px; background: var(--marca-tinta); color: #fff; font-size: 13px; font-weight: 500; }
.sol-card__linha { display: flex; align-items: center; gap: 10px; padding: 8px 0; border-top: 1px solid rgb(42 21 22 / 0.07); font-size: 14px; color: var(--ink); }
.sol-card__linha:first-of-type { border-top: 0; }
.sol-card__linha i { width: 20px; height: 20px; flex: none; display: grid; place-items: center; border-radius: 50%; background: rgb(255 82 44 / 0.12); color: var(--marca-tinta); font: 600 12px/1 var(--font-text); font-style: normal; }
.sol-card__linha em { font-family: var(--serifa); font-size: 15px; }
.hero__proof { font-size: var(--t-small); color: var(--muted); }
@media (max-width: 1023px) { .hero__art > .ly-piece--note { left: var(--s-4); bottom: var(--s-4); width: 270px; } .leitor__folha { zoom: 0.56; } }
@media (max-width: 639px) { .leitor__folha { zoom: 0.44; } .leitor__corpo { padding: 12px 0 0 12px; } }

/* ── App-frame (sections-library.md, app-frame) ─────────────────────────────────────────── */
.prova__intro { color: var(--ink); font-size: var(--t-body); line-height: 1.6; }
.prova__intro .link { display: inline-block; margin-top: var(--s-3); }
.app.ui { display: grid; grid-template-columns: minmax(0, 4fr) minmax(0, 8fr); margin-top: var(--s-7); background: #fff; border: 1px solid var(--line); border-radius: 20px; overflow: hidden;
  box-shadow: 0 30px 70px -40px rgb(42 21 22 / 0.45); }
.app > .app__pane { position: relative; min-width: 0; min-height: 0; overflow: hidden; }
.app > .app__pane + .app__pane { border-left: 1px solid var(--line); }
.app > .app__pane--list::after { content: ""; position: absolute; inset: auto 0 0 0; height: 64px; background: linear-gradient(transparent, #fff); pointer-events: none; }
.lista__rows { list-style: none; margin: 0; padding: 8px; display: grid; gap: 2px; }
.lista__rows li { display: grid; grid-template-columns: 34px minmax(0, 1fr) auto; align-items: center; gap: 12px; padding: 8px 10px; border-radius: 12px; font-size: 14px; }
.lista__rows li.is-on { background: rgb(255 82 44 / 0.08); }
.lista__rows img { width: 34px; height: 46px; object-fit: cover; object-position: top; border-radius: 4px; box-shadow: 0 0 0 1px rgb(42 21 22 / 0.12); }
.lista__rows b { display: block; font-weight: 500; color: var(--ink); }
.lista__rows small { display: block; font-size: 13px; color: var(--muted); }
.chip { display: inline-flex; align-items: center; height: 24px; padding: 0 10px; border-radius: 999px; background: var(--surface); color: var(--muted); font: 500 13px/1 var(--font-text); font-style: normal; white-space: nowrap; }
.chip--sol { background: var(--marca-tinta); color: #fff; }
.aberta { display: grid; grid-template-columns: minmax(0, 1fr) 320px; height: 100%; }
.aberta__mesa { position: relative; overflow: hidden; background: var(--surface); padding: 22px 0 0 24px; }
.aberta__mesa::after { content: ""; position: absolute; inset: auto 0 0 0; height: 64px; background: linear-gradient(transparent, var(--surface)); pointer-events: none; }
.aberta__folha { zoom: 0.56; box-shadow: 0 2px 8px rgb(42 21 22 / 0.12); width: max-content; }
.aberta__folha .folha { padding-top: 40px; }
.aberta__folha .folha-num { top: 8px; }
.aberta__sol { position: relative; overflow: hidden; border-left: 1px solid var(--line); background: #fff; padding: 18px 20px; display: flex; flex-direction: column; gap: 14px; }
.aberta__sol .sol__pe { margin-top: auto; }
@media (min-width: 1024px) and (max-width: 1279px) { .app.ui { grid-template-columns: minmax(0, 4fr) minmax(0, 8fr); } .aberta { grid-template-columns: minmax(0, 1fr) 280px; } .aberta__folha { zoom: 0.46; } }
@media (max-width: 1023px) {
  .app.ui { grid-template-columns: minmax(0, 1fr); grid-template-rows: auto minmax(0, 1fr); }
  .app > .app__pane--list { max-height: 210px; }
  .app > .app__pane--list::after { display: none; }
  .app > .app__pane + .app__pane { border-left: 0; border-top: 1px solid var(--line); }
}
@media (max-width: 639px) {
  .app.ui { grid-template-rows: minmax(0, 1fr); }
  .app > .app__pane--list { display: none; }
  .app > .app__pane + .app__pane { border-top: 0; }
  .aberta { grid-template-columns: minmax(0, 1fr); grid-template-rows: minmax(0, 1fr) auto; }
  .aberta__mesa { padding: 14px 0 0 14px; }
  .aberta__folha { zoom: 0.4; }
  .aberta__sol { border-left: 0; border-top: 1px solid var(--line); padding: 14px 16px; }
  .aberta__sol .sol__resol, .aberta__sol .sol__pe .t-small, .aberta__sol .sol__rot { display: none; }
}

/* ── A solução: o mesmo conteúdo no sheet, no modal e no sheet de baixo ──────────────────── */
.sol__cab { display: flex; align-items: center; justify-content: space-between; gap: 12px; }
.sol__q { margin: 0; font: 500 17px/1.3 var(--font-text); color: var(--ink); }
.sol__q span { color: var(--muted); }
.sol__fecho { width: 36px; height: 36px; flex: none; display: grid; place-items: center; border: 0; border-radius: 999px; background: var(--surface); color: var(--ink); cursor: pointer; }
.sol__corpo { display: grid; gap: 6px; }
.sol__resp { display: flex; align-items: baseline; gap: 10px; color: var(--ink); margin-bottom: 8px; }
.sol__letra { font: 700 40px/1 var(--serifa); color: var(--marca-tinta); }
.sol__valor { font: 400 36px/1 var(--serifa); }
.sol__valor .katex { font-size: 1em; }
.sol__rot { margin-top: 10px; }
.sol__resol p { margin: 0 0 8px; font-size: 16px; line-height: 1.55; color: var(--ink); }
.sol__resol .eq { margin: 4px 0 12px; padding: 12px 14px; border-radius: 14px; background: var(--surface); overflow-x: auto; }
.sol__resol .eq .katex-display { margin: 0; }
.sol__aviso { display: flex; align-items: center; gap: 8px; margin: 0 0 6px; padding: 8px 12px; border-radius: 12px; background: rgb(255 82 44 / 0.1); color: #a8321a; font: 500 14px/1.35 var(--font-text); }
.sol__nota { margin: 4px 0 0; padding: 12px 14px; border-radius: 14px; border: 1px solid rgb(255 82 44 / 0.3); font-size: 15px; line-height: 1.5; }
.sol__enun { padding: 14px 16px; border-radius: 14px; background: var(--surface); font: 400 16px/1.4 var(--serifa); color: var(--tinta-papel); }
.sol__pe { display: grid; gap: 6px; padding-top: 14px; border-top: 1px solid var(--line); }
.aberta__sol .sol__letra { font-size: 34px; } .aberta__sol .sol__valor { font-size: 30px; }
.aberta__sol .sol__resol p { font-size: 15px; }

/* ── Universidades e app: as listas do split ───────────────────────────────────────────── */
.split__texto { display: flex; flex-direction: column; gap: var(--s-5); align-items: flex-start; }
.split__texto h2 { margin: 0; }
.split__texto .t-lead { margin: 0; color: var(--ink); }
.univ { width: 100%; margin: 0; }
.univ li { display: grid; gap: var(--s-1); }
.univ p { margin: 0; color: var(--muted); font-size: var(--t-body); }
.factos { list-style: none; margin: 0; padding: 0; display: grid; gap: var(--s-3); width: 100%; }
.factos li { display: flex; align-items: center; gap: var(--s-3); padding-bottom: var(--s-3); border-bottom: 1px solid var(--line); font-size: var(--t-body); color: var(--ink); }
.factos li::before { content: ""; width: 8px; height: 8px; border-radius: 50%; background: var(--marca); flex: none; }
.frame--split .frame__img { object-fit: cover; }

/* ── As capas: a primeira página de cada PDF, sobre o chão laranja ─────────────────────── */
.capas .capa > .panel { background: linear-gradient(160deg, var(--marca-clara), var(--marca) 55%, var(--marca-funda)); aspect-ratio: 4 / 3; overflow: hidden; }
.capas .capa > .panel img { display: block; width: 62%; margin: 28px auto 0; box-shadow: 0 18px 30px -16px rgb(42 21 22 / 0.6); border-radius: 3px; transition: transform 300ms var(--saida); }
.capa:hover > .panel img { transform: translateY(-6px); }
.capa h3 { margin: 0; }
.menu-card > .panel.panel--capa { background: linear-gradient(160deg, var(--marca-clara), var(--marca) 55%, var(--marca-funda)); }
.menu-card .panel--capa img { object-fit: cover; object-position: top; width: 56%; height: auto; margin: 20px auto 0; display: block; border-radius: 3px; }
@media (max-width: 639px) { .capas .capa > .panel img { width: 70%; margin-top: 18px; } }

/* O herói sem fotos de pessoas (pedido do cliente, 2026-11-10): só a prova e o cartão da solução no laranja.
   A janela acaba dentro da moldura (cortada só à direita), por isso o seu canto de baixo vê-se sempre. */
.hero__art > .leitor { display: flex; flex-direction: column; height: calc(100% - var(--s-8) - var(--s-6)); }
.hero__art > .leitor > .leitor__corpo { flex: 1; min-height: 0; height: auto; }
@media (max-width: 1023px) { .hero__art > .leitor { height: calc(100% - 2 * var(--s-6)); } }
@media (max-width: 639px) { .hero__art > .leitor { height: calc(100% - 2 * var(--s-4)); } .leitor__url { display: none; } }
/* A foto da app numa moldura laranja grossa, na secção escura: E03, E04 */
.frame.frame--marca { padding: 20px; border: 0; background: linear-gradient(160deg, var(--marca-clara), var(--marca) 55%, var(--marca-funda)); }
.frame.frame--marca .frame__img { position: relative; inset: auto; width: 100%; height: 100%; border-radius: calc(var(--r-lg) - 8px); object-fit: cover; }
.ground-inverse .factos li { color: var(--ink); border-color: var(--line); }
.capas .capa > .panel.panel--noite { background: radial-gradient(80% 60% at 20% 0%, #4a2a2b, transparent 70%), #2a1516; }

/* As capas: uma só grelha de 8 num ecrã; no telemóvel duas a duas e só as 6 primeiras */
.capas { row-gap: var(--s-6); }
.capas .capa > .panel { aspect-ratio: 16 / 10; }
.capas .capa > .panel img { width: 58%; margin-top: 22px; }
.capas .capa > p { margin: 0; }
@media (max-width: 639px) {
  .capas > .capa { grid-column: span 6; }
  .capas > .capa:nth-child(n+7) { display: none; }
  .capas .capa > .panel img { width: 64%; margin-top: 14px; }
}
/* A foto das perguntas, no fundo da coluna do título */
.faq__foto { width: 100%; aspect-ratio: 4 / 3; margin-top: auto; padding: 0; }
.faq__foto .frame__img { object-position: 50% 30%; }
@media (max-width: 639px) {
  .so-largo { display: none !important; }
  .faq__foto { display: none; }
  .frame--split { aspect-ratio: 4 / 3; }
}

/* o chão das capas: o laranja da marca ou a noite, por cima do chão do kit (cards.css pinta todos os painéis) */
#disciplinas .capas .capa > .panel { background-color: var(--marca); background-image: linear-gradient(160deg, var(--marca-clara), var(--marca) 55%, var(--marca-funda)); }
#disciplinas .capas .capa > .panel.panel--noite { background-color: #2a1516; background-image: radial-gradient(80% 60% at 20% 0%, #4a2a2b, transparent 70%); }
/* com o sheet aberto ao lado, a pílula da questão aberta já fez o seu trabalho: sai, para não tocar no sheet */
.com-sol .q.ativa > .ver { display: none; }
html body .nav .nav__menu .menu-card > .panel.panel--capa { background-color: var(--marca); background-image: linear-gradient(160deg, var(--marca-clara), var(--marca) 55%, var(--marca-funda)); }

/* Primeira volta do portão (2026-11-10) */
.capas .capa > .panel, #disciplinas .capas .capa > .panel { aspect-ratio: 16 / 9; }
.capas .capa > .panel img { margin-top: 18px; }
@media (min-width: 1024px) { #universidades .frame--split { aspect-ratio: 1 / 1; } }
@media (max-width: 639px) {
  .leitor__folha { zoom: 0.4; }
  .leitor__folha .folha { padding-top: 14px; }
  .leitor__folha .folha-num { display: none; }
  #universidades .grid.fill, #perguntas .grid.fill { flex: 0 0 auto; min-height: auto; }
  .faq__foto { display: block; aspect-ratio: 16 / 9; margin-top: 0; }
  #perguntas .split__texto { gap: var(--s-4); }
}
@media (max-width: 639px) { .hero__art > .leitor { width: calc(100% - 2 * var(--s-4)); } }

/* ── v3.1 (2026-11-10): o portal deixa de ser só exames ───────────────────────────────── */
/* Exames por disciplina: 11 disciplinas e a porta para todas; a capa real à esquerda (E08, E15) */
.discs { row-gap: var(--s-4); margin-top: 0; }
.disc { display: grid; grid-template-columns: 72px minmax(0, 1fr); align-items: center; gap: var(--s-4); min-height: 116px; padding: 14px 18px 14px 14px;
  border-radius: 18px; background: #fff; box-shadow: inset 0 0 0 1px var(--line); color: var(--ink); text-decoration: none;
  transition: transform 200ms var(--saida), box-shadow 200ms var(--saida); }
.disc:hover { transform: translateY(-2px); box-shadow: inset 0 0 0 1px rgb(255 82 44 / 0.45); }
.disc__capa { width: 72px; height: 88px; object-fit: cover; object-position: top; border-radius: 6px; background: #fff;
  box-shadow: 0 0 0 1px rgb(42 21 22 / 0.1), 0 10px 18px -12px rgb(42 21 22 / 0.5); }
.disc__txt { display: grid; gap: 2px; min-width: 0; }
.disc__txt b { font: 500 var(--t-card)/1.25 var(--font-text); }
.disc__n { font: 500 15px/1.4 var(--font-text); color: var(--marca-tinta); }
.disc__u { font-size: 14px; color: var(--muted); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.disc--todas { grid-template-columns: minmax(0, 1fr) auto; padding-left: 22px; color: #2a1516; box-shadow: none;
  background: linear-gradient(160deg, var(--marca-clara), var(--marca) 55%, var(--marca-funda)); }
.disc--todas .disc__n, .disc--todas .disc__u { color: #2a1516; }
.disc--todas:hover { box-shadow: 0 16px 30px -18px rgb(214 63 26 / 0.9); }
.disc__seta { width: 28px; height: 28px; }

/* Universidades: os logótipos verdadeiros, no menu e na lista */
.menu-card > .panel.panel--logo, html body .nav .nav__menu .menu-card > .panel.panel--logo { background: #fff; background-image: none; box-shadow: inset 0 0 0 1px var(--line); display: grid; place-items: center; }
.menu-card .panel--logo img { width: auto; height: 62%; max-width: 70%; object-fit: contain; position: static; }
.univ li { display: grid; grid-template-columns: 44px minmax(0, 1fr); align-items: center; gap: var(--s-4); }
.univ li > img { width: 44px; height: 44px; object-fit: contain; }
.univ li .rows__name { display: block; }

/* Calendário: a lista dos editais e os dois meses da época */
.datas li { display: grid; gap: 2px; }
.datas .rows__name { display: flex; align-items: center; gap: 10px; }
.ponto { display: inline-block; width: 10px; height: 10px; border-radius: 50%; background: var(--line); box-shadow: inset 0 0 0 1px rgb(42 21 22 / 0.2); flex: none; }
.ponto--uem { background: var(--marca-tinta); box-shadow: none; }
.ponto--up { background: #2a1516; box-shadow: none; }
.ponto--ujc { background: #ffcfbf; box-shadow: inset 0 0 0 1px rgb(214 63 26 / 0.4); }
.meses { padding: 0; align-items: stretch; }
.meses.frame--lit { background: linear-gradient(160deg, var(--marca-clara), var(--marca) 55%, var(--marca-funda)); border: 0; }
.meses__par { display: grid; grid-template-columns: 1fr 1fr; gap: 16px; width: 100%; padding: 28px; align-content: center; }
.mes { background: #fff; border-radius: 16px; padding: 16px 16px 18px; box-shadow: 0 18px 36px -24px rgb(42 21 22 / 0.55); }
.mes__nome { margin: 0 0 10px; font: 500 17px/1.3 var(--font-text); color: var(--ink); }
.mes__nome span { color: var(--muted); }
.mes__semana, .mes__dias { display: grid; grid-template-columns: repeat(7, 1fr); gap: 4px; text-align: center; }
.mes__semana span { font-size: 13px; color: var(--muted); padding-bottom: 4px; }
.dia { display: grid; place-items: center; height: 32px; border-radius: 9px; font: 500 14px/1 var(--font-text); color: var(--ink); font-variant-numeric: tabular-nums; }
.dia--exame.dia--uem { background: var(--marca-tinta); color: #fff; }
.dia--exame.dia--up { background: #2a1516; color: #fff; }
.dia--exame.dia--ujc { background: #ffcfbf; color: #8f2a10; }
.dia--prazo { box-shadow: inset 0 0 0 2px var(--marca-tinta); color: var(--marca-tinta); }
.meses__legenda { grid-column: 1 / -1; display: flex; flex-wrap: wrap; gap: 8px 18px; padding: 12px 16px; border-radius: 14px; background: #fff; font-size: 14px; color: var(--ink); }
.meses__legenda span { display: inline-flex; align-items: center; gap: 8px; }
.anel { display: inline-block; width: 12px; height: 12px; border-radius: 4px; box-shadow: inset 0 0 0 2px var(--marca-tinta); }

/* Cursos: uma procura com os resultados (E12, E14); Medicina aberta com as vagas do edital */
.procura { padding: 0; align-items: stretch; background: var(--surface); }
.procura.frame--lit { background: #2a1516; border: 0; }
.procura__ui { width: 100%; padding: 28px; display: grid; gap: 14px; align-content: start; }
.procura__campo { display: flex; align-items: center; gap: 10px; height: 52px; padding: 0 12px 0 16px; border-radius: 999px; background: #fff; color: var(--muted); font-size: 16px; }
.procura__campo svg { width: 20px; height: 20px; color: var(--ink); }
.procura__campo kbd { margin-left: auto; padding: 5px 10px; border-radius: 999px; background: var(--surface); font: 500 13px/1 var(--font-text); color: var(--muted); }
.procura__lista { list-style: none; margin: 0; padding: 6px; display: grid; gap: 2px; border-radius: 18px; background: #fff; }
.procura__lista li { display: grid; grid-template-columns: minmax(0, 1fr) auto; align-items: center; gap: 6px 14px; padding: 10px 12px; border-radius: 12px; }
.procura__lista li.is-on { background: rgb(255 82 44 / 0.09); }
.curso__nome b { display: block; font: 500 16px/1.3 var(--font-text); color: var(--ink); }
.curso__nome small { font-size: 13px; color: var(--muted); }
.curso__disc { display: flex; gap: 6px; }
.curso__disc em { font-style: normal; font: 500 13px/1 var(--font-text); padding: 6px 10px; border-radius: 999px; background: var(--surface); color: var(--ink); white-space: nowrap; }
.is-on .curso__disc em { background: var(--marca-tinta); color: #fff; }
.curso__extra { grid-column: 1 / -1; font-size: 14px; color: var(--marca-tinta); font-weight: 500; }

/* Guias: três artigos com foto */
.guias { margin-top: 0; }
.guia { color: var(--ink); text-decoration: none; }
.guia > .panel.panel--foto { aspect-ratio: 16 / 10; overflow: hidden; background: var(--surface); }
#guias .guia > .panel { background-image: none; }
.guia > .panel img { width: 100%; height: 100%; object-fit: cover; transition: transform 400ms var(--saida); }
.guia:hover > .panel img { transform: scale(1.03); }
.guia > p.t-small { margin: 0 0 4px; }
.guia > h3 { margin: 0 0 6px; }
.guia > p:last-child { margin: 0; color: var(--ink); }

@media (min-width: 1024px) and (max-width: 1279px) { .disc__u { font-size: 13px; } }
@media (max-width: 1023px) {
  .discs > .disc { grid-column: span 6; }
  .meses__par { grid-template-columns: 1fr; }
}
@media (max-width: 639px) {
  .discs { row-gap: 10px; }
  .discs > .disc { grid-column: span 6; grid-template-columns: minmax(0, 1fr); min-height: 0; padding: 12px 14px; }
  .discs > .disc:not(.disc--todas) .disc__capa, .disc__u { display: none; }
  .disc__txt b { font-size: 16px; }
  .disc__n { font-size: 14px; }
  .disc--todas { grid-template-columns: minmax(0, 1fr) auto; }
  .meses__par { padding: 14px; gap: 10px; }
  .mes:nth-child(1) { display: none; }
  .procura__ui { padding: 14px; }
  .procura__lista li:nth-child(n+4) { display: none; }
  .curso__disc em { padding: 5px 8px; }
  .guias > .guia { grid-column: 1 / -1; }
  .guias > .guia:nth-child(n+3) { display: none; }
}
.nav__menu .menu-card > .panel { height: 170px; --p-h: 170px; aspect-ratio: auto; }
.nav__menu .menu-card .panel--capa img { width: 44%; margin-top: 16px; }

/* a capa num painel da marca (laranja ou noite, alternados), à esquerda de cada disciplina (E08) */
.disc { grid-template-columns: 132px minmax(0, 1fr); padding: 0 18px 0 0; overflow: hidden; }
.disc__painel { align-self: stretch; display: flex; align-items: flex-end; justify-content: center; min-height: 116px; overflow: hidden;
  background: linear-gradient(160deg, var(--marca-clara), var(--marca) 55%, var(--marca-funda)); }
.disc__painel--noite { background: radial-gradient(80% 60% at 20% 0%, #4a2a2b, transparent 70%), #2a1516; }
.disc__painel .disc__capa { width: 78px; height: 96px; margin-bottom: -8px; border-radius: 4px 4px 0 0; transition: transform 300ms var(--saida); }
.disc:hover .disc__capa { transform: translateY(-4px); }
@media (max-width: 639px) {
  .discs > .disc { grid-template-columns: minmax(0, 1fr); padding: 12px 14px; }
  .discs > .disc .disc__painel { display: none; }
  #calendario .grid.fill, #cursos .grid.fill, #guias .grid { flex: 0 0 auto; min-height: auto; }
  #calendario .frame, #cursos .frame { height: auto; min-height: 0; aspect-ratio: auto; }
}
/* telemóvel: uma coluna, o painel com a capa à esquerda, as seis disciplinas com mais provas e a porta para todas */
@media (max-width: 639px) {
  .discs > .disc { grid-column: 1 / -1; grid-template-columns: 88px minmax(0, 1fr); padding: 0 14px 0 0; }
  .discs > .disc .disc__painel { display: flex; min-height: 78px; }
  .disc__painel .disc__capa { width: 52px; height: 64px; margin-bottom: -6px; }
  .discs > .disc:nth-child(n+7):not(.disc--todas) { display: none; }
  .disc--todas { grid-template-columns: minmax(0, 1fr) auto; padding: 14px 16px; }
}
.discs > .disc.disc--todas { grid-template-columns: minmax(0, 1fr) auto; padding: 14px 22px; }
@media (max-width: 639px) { .discs > .disc.disc--todas { padding: 14px 16px; } }
.nav__menu .menu-card > .panel.panel--logo { display: flex; align-items: center; justify-content: center; }
.nav__menu .menu-card .panel--logo .logo-img { display: block; width: auto; height: 108px; max-width: 78%; object-fit: contain; }

/* ── Molduras de aparelho (v3.5): PNG reais da AppLaunchFlow («Free for commercial use, no attribution»),
   iPhone (1311×2708) e iPad Pro deitado (1467×1124), com o ecrã transparente. O vídeo ou a captura fica por baixo,
   nas coordenadas do ecrã medidas no próprio PNG; a moldura fica por cima. ───────────────────────────────── */
.aparelho { --w: 260px; position: relative; display: block; width: var(--w); flex: none; }
/* o palco laranja onde a app aparece no telemóvel, inteiro (biblioteca, universidade, início) */
.app-palco { display: grid; place-items: center; padding: var(--s-6) var(--s-5);
  background: radial-gradient(70% 60% at 70% 0%, #ff8a5c, transparent 60%), linear-gradient(160deg, #ff7a4d, #ff522c 50%, #d63f1a); }
.app-palco--grande { align-self: stretch; padding: var(--s-7); border-radius: 28px; }
.aparelho::before { content: ""; position: absolute; inset: 4% 6% 1%; z-index: 0; border-radius: 12%; box-shadow: 0 30px 60px -20px rgb(42 21 22 / 0.55); }
.aparelho--iphone { aspect-ratio: 1311 / 2708; }
.aparelho--ipad { aspect-ratio: 1467 / 1124; }
.aparelho__moldura { position: absolute; inset: 0; z-index: 2; width: 100%; height: 100%; pointer-events: none; }
.aparelho__ecra { position: absolute; z-index: 1; overflow: hidden; display: flex; flex-direction: column; background: #fff; }
.aparelho--iphone .aparelho__ecra { left: 4.043%; top: 1.588%; width: 91.991%; height: 96.824%; border-radius: 16.5% / 7.6%; }
.aparelho--ipad .aparelho__ecra { left: 3.067%; top: 4.093%; width: 93.797%; height: 91.815%; border-radius: 2.2% / 2.9%; background: #f5f1ed; }
.aparelho__estado { flex: none; height: 6.49%; display: flex; align-items: center; justify-content: space-between; padding: 0 10% 0 12%;
  font: 600 calc(var(--w) * 0.042)/1 -apple-system, "SF Pro Text", var(--font-text); color: #111; background: var(--estado, #fff); }
.aparelho__icones { display: inline-flex; align-items: flex-end; gap: calc(var(--w) * 0.012); }
.aparelho__icones i { display: block; width: calc(var(--w) * 0.012); background: #111; border-radius: 1px; }
.aparelho__icones i:nth-child(1) { height: calc(var(--w) * 0.018); } .aparelho__icones i:nth-child(2) { height: calc(var(--w) * 0.026); }
.aparelho__icones i:nth-child(3) { width: calc(var(--w) * 0.06); height: calc(var(--w) * 0.028); border-radius: calc(var(--w) * 0.008); box-shadow: inset 0 0 0 1px #111; background: linear-gradient(90deg, #111 72%, transparent 72%); }
.aparelho__img { display: block; width: 100%; flex: 1; min-height: 0; object-fit: cover; object-position: top; }
.aparelho--ipad .aparelho__img { height: 100%; }

/* ── Os CTAs finais (B01, B02, B04 em referencias-ui/portal-paginas/) e o rodapé escuro ───────────────────── */
.footer.closing.rodape-escuro { background: #2a1516; color: #fff; }
.rodape-escuro .closing__links, .rodape-escuro .footer__col h3, .rodape-escuro .footer__lede { color: #fff; }
.rodape-escuro .footer__col a, .rodape-escuro .footer__legal, .rodape-escuro .footer__legal a { color: rgb(255 255 255 / 0.72); }
.rodape-escuro .footer__col a:hover { color: #fff; }
.rodape-escuro .footer__legal { border-color: rgb(255 255 255 / 0.12); }
.rodape-escuro .nav__logo { color: #fff; }
/* B02: o cartão laranja com o telemóvel a sair pelo topo, as universidades por baixo do texto */
.cta-b02 { position: relative; display: grid; grid-template-columns: minmax(0, 7fr) minmax(0, 5fr); align-items: end; gap: var(--s-6); margin-top: calc(var(--s-9) * 0.6);
  padding: var(--s-8); border-radius: 32px; overflow: visible; color: #2a1516;
  background: radial-gradient(60% 80% at 85% 10%, rgb(255 255 255 / 0.22), transparent 60%), linear-gradient(150deg, #ff8a5c, #ff522c 50%, #e64519); }
.cta-b02__txt { display: grid; gap: var(--s-4); align-content: start; align-self: center; }
.cta-b02 h2 { margin: 0; color: #2a1516; font-size: clamp(32px, 2.6vw + 12px, 52px); }
.cta-b02 p { margin: 0; font-size: 18px; color: #2a1516; max-width: 40ch; }
.cta-b02 .btn-row { margin-top: var(--s-2); }
.cta-b02__unis { display: flex; flex-wrap: wrap; gap: 10px; margin-top: var(--s-3); }
.cta-b02__unis span { display: inline-flex; align-items: center; gap: 8px; height: 40px; padding: 0 14px 0 6px; border-radius: 999px; background: rgb(255 255 255 / 0.9); font: 500 14px/1 var(--font-text); color: #2a1516; }
.cta-b02__unis img { width: 28px; height: 28px; object-fit: contain; }
/* o telemóvel inteiro: sai pelo topo do cartão e assenta dentro dele, sem corte em baixo */
.cta-b02__tel { align-self: end; justify-self: center; margin-top: calc(var(--s-9) * -1.1); display: flex; }
.a-btn-branco { background: #fff; color: #2a1516; }
.a-btn-branco:hover { background: #fff3ea; }
.a-btn-linha { background: transparent; color: inherit; box-shadow: inset 0 0 0 1.5px currentColor; }
/* B04: o cartão branco e baixo, a cavalo do rodapé */
.cta-b04 { position: relative; z-index: 1; display: flex; align-items: center; justify-content: space-between; gap: var(--s-6); margin-top: calc(var(--s-8) * -1.5);
  padding: var(--s-6) var(--s-7); border-radius: 24px; background: #fff; color: var(--ink); box-shadow: 0 24px 60px -30px rgb(0 0 0 / 0.6); }
.cta-b04 h2 { margin: 0; font-size: clamp(24px, 1.2vw + 14px, 32px); color: var(--ink); }
.cta-b04 p { margin: 4px 0 0; color: var(--muted); font-size: 15px; }
.cta-b04 .btn { flex: none; }
/* B01: split, o texto num cartão e a app no outro */
.cta-b01 { display: grid; grid-template-columns: minmax(0, 5fr) minmax(0, 7fr); gap: var(--s-4); }
.cta-b01__txt { display: grid; align-content: space-between; gap: var(--s-6); padding: var(--s-7); border-radius: 28px; background: #fff; color: var(--ink); }
.cta-b01__txt h2 { margin: 0; color: var(--ink); font-size: clamp(30px, 2.2vw + 12px, 46px); }
.cta-b01__txt p { margin: var(--s-3) 0 0; color: var(--muted); font-size: 17px; }
.cta-b01__app { position: relative; overflow: hidden; display: flex; align-items: flex-start; justify-content: center; gap: var(--s-5); height: 440px; padding: var(--s-7) var(--s-6) 0; border-radius: 28px;
  background: radial-gradient(70% 70% at 70% 0%, #ff7a4d, transparent 60%), linear-gradient(160deg, #ff522c, #d63f1a 55%, #3a1a17); }
/* os dois telemóveis do mesmo tamanho e à mesma altura, cortados pelo fundo do cartão */
.cta-b01__app .aparelho { margin: 0; }
/* na página da app o CTA fica dentro da faixa escura, com o mesmo espaço à volta, e não colado ao topo dela */
main.interior ~ .footer.closing.rodape-escuro:has(.cta-b01) { margin-top: var(--s-9); padding-top: var(--s-8); }
.footer.closing.rodape-escuro { height: auto; min-height: 0; padding-top: var(--s-8); }
.interior + .footer.closing.rodape-escuro, main.interior ~ .footer.closing { padding-top: 0; margin-top: var(--s-9); }
@media (max-width: 1023px) {
  .cta-b02 { grid-template-columns: minmax(0, 1fr); padding: var(--s-6); margin-top: 0; }
  .cta-b02__tel { margin-top: 0; }
  .cta-b01 { grid-template-columns: minmax(0, 1fr); }
  .cta-b01__app { height: 380px; }
  .cta-b04 { flex-direction: column; align-items: flex-start; }
}
.footer.closing .closing__cta.cta-b04 { display: flex; flex-direction: row; align-items: center; justify-content: space-between; text-align: left; height: auto; min-height: 0; }
.footer.closing .closing__cta.cta-b04 > div { display: block; }
@media (max-width: 1023px) { .footer.closing .closing__cta.cta-b04 { flex-direction: column; align-items: flex-start; } }

/* o rodapé escuro: os ícones das redes em branco */
.rodape-escuro .socials a { color: #fff; border-color: rgb(255 255 255 / 0.22); }
.rodape-escuro .socials a:hover { border-color: rgb(255 255 255 / 0.5); }
