/* ─── Cartão de aula (partials/lesson_card.php) ─────────────────────────────
   UM só estilo para aluno, admin e site público. O estado (data-lesson-state /
   .lcard--{estado}) define a cor da borda e o tom; o estado aparece sempre
   também em texto + ícone no chip .lcard__status (nunca só em cor).
   Contrastes do texto dos chips ≥ 4.5:1 sobre o respetivo fundo.            */

.lcard {
    --lc-accent:  var(--color-primary, #214869);
    --lc-tint:    rgba(33, 72, 105, 0.03);
    --lc-chip-bg: #e3f1ea;      /* aberta: verde claro */
    --lc-chip-fg: #1b4d38;
    --lc-title:   var(--color-primary, #214869);
    --lc-text:    var(--color-muted, #566574);

    position: relative;
    display: flex;
    flex-direction: column;
    gap: 0.5rem;
    height: 100%;
    --lc-py: 0.8rem; --lc-px: 1rem;
    padding: var(--lc-py) var(--lc-px);
    background: radial-gradient(circle at var(--lc-gx, 50%) var(--lc-gy, 50%), rgba(255, 255, 255, var(--lc-ga, 0)), transparent 60%),
                linear-gradient(var(--lc-tint), var(--lc-tint)), var(--bg-card, #fff);
    border: 1px solid var(--color-border, #e4e8ec);
    border-left: 5px solid var(--lc-accent);
    border-radius: var(--radius-md, 0.75rem);
    box-shadow: var(--shadow-sm, 0 1px 3px rgba(0, 0, 0, .08));
    transform: perspective(900px) rotateX(var(--lc-crx, 0deg)) rotateY(var(--lc-cry, 0deg)) translateZ(var(--lc-tz, 0px));
    transition: box-shadow var(--transition, .2s ease), transform .45s ease-out;
}
.lcard:hover { box-shadow: var(--shadow-md, 0 4px 8px rgba(0, 0, 0, .1)); }
/* com o rato sobre o cartão (.is-tilting) a inclinação segue o cursor quase sem atraso (lesson-card.js) */
.lcard.is-tilting { transition: box-shadow var(--transition, .2s ease), transform .12s ease-out; will-change: transform; }

/* ── Estados ── */
.lcard--few {
    --lc-accent: var(--color-warning, #f77f00);
    --lc-tint: rgba(247, 127, 0, 0.05);
    --lc-chip-bg: #fff1d6; --lc-chip-fg: #6b3f00;
}
.lcard--full {
    --lc-accent: #b42318;
    --lc-tint: rgba(180, 35, 24, 0.04);
    --lc-chip-bg: #fbe4e1; --lc-chip-fg: #8a1b12;
}
.lcard--booked {
    --lc-accent: var(--color-success, #2d6a4f);
    --lc-tint: rgba(45, 106, 79, 0.07);
    --lc-chip-bg: var(--color-success, #2d6a4f); --lc-chip-fg: #fff;
}
.lcard--cancelled {
    --lc-accent: #b42318;
    --lc-tint: rgba(180, 35, 24, 0.07);
    --lc-chip-bg: #fbe4e1; --lc-chip-fg: #8a1b12;
    --lc-title: #6b4a47;
    --lc-text: #5f5553;
    border: 2px dashed var(--lc-accent);
}
.lcard--cancelled .lcard__title { text-decoration: line-through; }
.lcard--past {
    --lc-accent: #b4bec8;
    --lc-tint: rgba(86, 101, 116, 0.08);
    --lc-text: #5b636b;
    --lc-chip-bg: #eceff1; --lc-chip-fg: #3e4c5a;
    --lc-title: #5b636b;
}
.lcard--private {
    --lc-accent: var(--color-primary, #214869);
    --lc-tint: rgba(33, 72, 105, 0.05);
    --lc-chip-bg: #e2eaf1; --lc-chip-fg: #17344d;
    border: 2px dashed var(--lc-accent);
}

/* ── Cabeçalho ── */
.lcard__head { display: flex; align-items: center; gap: 0.75rem; }
.lcard > header.lcard__head { z-index: 2; }   /* o menu «⋮» abre por cima das linhas seguintes */
.lcard__tile {
    flex: none;
    display: inline-flex; align-items: center; justify-content: center;
    width: 40px; height: 40px;
    border-radius: var(--radius-sm, 0.5rem);
    background: rgba(33, 72, 105, 0.08);
    border: 1px solid rgba(33, 72, 105, 0.12);
}
.lcard__tile .si { width: 26px; height: 26px; vertical-align: 0; }
/* Ícone do nível com a etiqueta do nível por baixo */
.lcard__lead { flex: none; display: flex; flex-direction: column; align-items: center; gap: .3rem; max-width: 5.5rem; }
.lcard__lead .lcard__level { font-size: .68rem; font-weight: 600; white-space: normal; text-align: center; line-height: 1.15; }
.lcard__titles { min-width: 0; flex: 1 1 auto; }
/* Cabeçalho do cartão: «SURF INTERMÉDIO» em azul da marca, a sangrar até às margens; a data fica por baixo */
.lcard__banner {
    display: flex; align-items: center; gap: 0.45rem;
    /* sobe até à borda do cartão (inclui os 5px da faixa lateral) e acompanha o seu raio */
    margin: calc(-1 * var(--lc-py)) calc(-1 * var(--lc-px)) 0 calc(-1 * var(--lc-px) - 5px);
    padding: 0.85rem var(--lc-px) 0.85rem calc(var(--lc-px) + 5px);
    background: var(--color-primary, #214869); color: #fff;
    border-radius: calc(var(--radius-md, 0.75rem) - 1px) calc(var(--radius-md, 0.75rem) - 1px) 0 0;
    font-size: 0.9rem; font-weight: 700; letter-spacing: .08em; text-transform: uppercase; line-height: 1.2;
    --si-main: #fff; --si-accent: #F2D9A0; --si-wash: var(--color-primary, #214869);
}
.lcard__banner .si { flex: none; width: 1.25em; height: 1.25em; vertical-align: 0; }
.lcard--hero .lcard__banner { background: rgba(0, 0, 0, .22); }
.lcard--past .lcard__banner, .lcard--cancelled .lcard__banner { filter: grayscale(1); opacity: .7; }
.lcard__title {
    margin: 0;
    font-family: var(--font-display, inherit);
    font-size: 1.4rem; font-weight: 700; line-height: 1.25;
    color: var(--lc-title);
    text-transform: capitalize;
    white-space: nowrap; overflow: hidden; text-overflow: ellipsis;   /* uma linha, sem cartões altos */
}
.lcard__title span { font-weight: 800; }
.lcard__sub { display: flex; flex-wrap: nowrap; overflow: hidden; white-space: nowrap; align-items: center; gap: 0.35rem; margin-top: 0.15rem; font-size: 0.82rem; color: var(--lc-text); }
.lcard__activity { overflow: hidden; text-overflow: ellipsis; min-width: 0; }
.lcard__activity .si { width: 1.1em; height: 1.1em; margin-right: .3rem; vertical-align: -.2em; }
.lcard__level { flex: none; display: inline-flex; align-items: center; gap: 0.25rem; font-weight: 600; letter-spacing: .02em; }
.lcard__level .si { width: 1.1em; height: 1.1em; vertical-align: 0; }
.lcard__menu { flex: none; align-self: flex-start; margin: -0.25rem -0.4rem 0 0; }

/* ── Estado e chips ── */
.lcard__chips { display: flex; flex-wrap: wrap; align-items: center; gap: 0.35rem; }
.lcard__status, .lcard__who {
    display: inline-flex; align-items: center; gap: 0.3rem;
    padding: 0.2rem 0.6rem;
    border-radius: var(--radius-pill, 999px);
    font-size: 0.78rem; font-weight: 600; line-height: 1.3;
}
.lcard__status { background: var(--lc-chip-bg); color: var(--lc-chip-fg); }
.lcard__status .si { width: 1.05em; height: 1.05em; vertical-align: 0; }
.lcard__status--booked .si, .lcard--booked .lcard__status .si { --si-main: #fff; --si-accent: #F2D9A0; --si-wash: #2d6a4f; }
.lcard__status--few      { background: #fff1d6; color: #6b3f00; }
.lcard__status--booked   { background: var(--color-success, #2d6a4f); color: #fff; }
.lcard__status--cancelled {  background: #fbe4e1; color: #8a1b12; }
.lcard__status--private  { background: #e2eaf1; color: #17344d; }
.lcard__who { background: #eef1f4; color: #2a3846; }
.lcard__who .si { width: 1.05em; height: 1.05em; vertical-align: 0; }

/* ── Meta e ocupação ── */
.lcard__meta { list-style: none; margin: 0; padding: 0; display: flex; flex-flow: row wrap; gap: 0.1rem 0.9rem; font-size: 0.86rem; line-height: 1.35; color: var(--lc-text); }
.lcard__meta li { display: flex; align-items: center; gap: 0.35rem; min-width: 0; max-width: 100%; }
.lcard__meta li > span { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; min-width: 0; }
.lcard__meta .si { flex: none; width: 1.1em; height: 1.1em; vertical-align: 0; }

/* Vagas / inscritos: canto inferior direito do cartão (o cartão reserva a linha) */
.lcard:has(> .lcard__spots) { padding-bottom: 2.3rem; }
.lcard.lcard > .lcard__spots {
    position: absolute; right: 0.9rem; bottom: 0.6rem;
    display: inline-flex; align-items: center; gap: 0.3rem;
    font-size: 0.8125rem; font-weight: 600; line-height: 1; color: var(--lc-text);
}
.lcard__spots-text { display: inline-flex; align-items: center; gap: 0.3rem; }
.lcard__spots .lcard__spots-text .si { width: 1.15em; height: 1.15em; vertical-align: 0; }
.lcard__spots .lcard__info { min-width: 28px; min-height: 28px; margin: -6px 0; }

/* ── Ações (só o conteúdo muda por contexto) ── */
.lcard__actions { display: flex; flex-wrap: wrap; align-items: center; gap: 0.5rem; margin-top: auto; padding-top: 0.15rem; }
.lcard__actions .btn { min-height: 38px; }
.lcard--ctx-admin .lcard__actions .btn { min-height: 44px; }
/* o (i) fica na mesma linha do botão e não pesa na altura */
.lcard__actions .lcard__info { margin: -2px 0; }

/* «Cancelar inscrição» como ligação (texto sublinhado), não botão */
.lcard__link {
    appearance: none; background: none; border: 0; padding: 0.35rem 0;
    font: inherit; font-size: 0.875rem; font-weight: 600;
    color: #b42318; text-decoration: underline; text-underline-offset: 3px; cursor: pointer;
}
.lcard__link:hover { color: #8a1b12; }
.lcard__link:focus-visible { outline: 2px solid currentColor; outline-offset: 2px; border-radius: 2px; }
.lcard__link:disabled { opacity: .6; cursor: not-allowed; }
.lcard--hero .lcard__link { color: #ffd2cd; }
.lcard--hero .lcard__link:hover { color: #fff; }

/* (i) junto a «Cancelar inscrição»: alvo ≥ 36px, visível ao foco por teclado */
.lcard__info {
    display: inline-flex; align-items: center; justify-content: center;
    min-width: 36px; min-height: 36px; padding: 0;
    background: transparent; border: 0; border-radius: 50%;
    color: var(--color-primary, #214869); cursor: help;
    opacity: .45; transition: opacity .15s ease, background-color .15s ease;
}
.lcard__info .si { width: 1.2rem; height: 1.2rem; vertical-align: 0; }
.lcard__info:hover, .lcard__info:focus-visible, .lcard__info[aria-describedby] { opacity: 1; }
.lcard__info:hover { background: rgba(33, 72, 105, 0.08); }
.lcard__info:focus-visible { outline: 2px solid var(--color-primary, #214869); outline-offset: 2px; }

/* ── Terminada / Cancelada: desaturado e «desligado» (texto continua legível) ──
   Ícones em tons de cinzento (cancelada com um toque de vermelho); sem elevação;
   botões desativados à vista. O estado continua dito por palavras no chip. */
.lcard--past, .lcard--cancelled { box-shadow: none; }
.lcard--past:hover, .lcard--cancelled:hover { box-shadow: none; }
.lcard--past, .lcard--cancelled { transform: none; }
.lcard--past .lcard__tile .si, .lcard--past .lcard__meta .si, .lcard--past .lcard__level .si { filter: grayscale(1); opacity: .65; }
.lcard--cancelled .lcard__tile .si, .lcard--cancelled .lcard__meta .si, .lcard--cancelled .lcard__level .si { filter: grayscale(1) sepia(1) hue-rotate(-50deg) saturate(2.2); opacity: .65; }
.lcard--past .lcard__tile, .lcard--cancelled .lcard__tile { background: #eceff1; border-color: #dfe3e6; }
.lcard--cancelled .lcard__tile { background: #f8e3e1; border-color: #efc9c5; }
.lcard--past .lcard__level, .lcard--cancelled .lcard__level { filter: grayscale(1); }
.lcard--past .lcard__actions .btn, .lcard--cancelled .lcard__actions .btn {
    filter: grayscale(1); opacity: .6; pointer-events: none; cursor: not-allowed;
}
/* o menu «⋮» do admin continua utilizável (reabrir, eliminar…) */
.lcard--past .lcard__menu, .lcard--cancelled .lcard__menu { filter: none; opacity: 1; }
/* no admin as ações continuam a funcionar (presenças, inscritos): só ficam esbatidas */
.lcard--ctx-admin.lcard--past .lcard__actions .btn,
.lcard--ctx-admin.lcard--cancelled .lcard__actions .btn { pointer-events: auto; cursor: pointer; opacity: .8; }

/* reduced-motion: a inclinação NÃO se desliga, lesson-card.js reduz a amplitude a ~1/3 e tira o brilho */

/* Ícone da atividade: anima com o rato sobre o cartão e inclina-se um pouco com a posição do cursor
   (lesson-card.js escreve --lc-rx/--lc-ry). Terminada/cancelada ficam paradas. */
.lcard__tile { transition: transform .15s ease-out; transform: perspective(300px) rotateX(var(--lc-rx, 0deg)) rotateY(var(--lc-ry, 0deg)) translateZ(var(--lc-tz, 0px)); }
.lcard--past .si *, .lcard--cancelled .si * { animation: none !important; }
.lcard--past .lcard__tile, .lcard--cancelled .lcard__tile { transform: none; }

/* ─── Destaque «A tua próxima aula» (variant 'hero' + variantes CTA/vazio do dashboard) ───
   Mesma anatomia do cartão (head / chips / meta / actions); aqui só muda o aspeto:
   fundo «oceano» com texto branco (contraste ≥ 4.5:1), ondas decorativas, título maior.
   --cta (sem inscrição, com aulas) e --empty (sem aulas) reaproveitam as classes lcard__*. */
.lcard--hero {
    --lc-title: #fff;
    --lc-text: rgba(255, 255, 255, .9);
    --si-main: #fff; --si-accent: #F2D9A0; --si-wash: #1F4566;
    gap: 0.75rem;
    height: auto;               /* não estica até à altura da coluna das notificações ao lado */
    --lc-py: 1.25rem; --lc-px: 1.5rem;
    padding: var(--lc-py) var(--lc-px);
    color: #fff;
    background: linear-gradient(135deg, #163952 0%, var(--color-primary, #214869) 45%, #1d6f7e 100%);
    border: 0;
    border-radius: var(--radius-lg, 1rem);
    box-shadow: var(--shadow-md, 0 4px 8px rgba(0, 0, 0, .1));
    overflow: hidden;
    isolation: isolate;
}
.lcard--hero:hover { transform: none; box-shadow: var(--shadow-md, 0 4px 8px rgba(0, 0, 0, .1)); }
.lcard--hero::before, .lcard--hero::after {
    content: ''; position: absolute; bottom: 0; pointer-events: none; z-index: -1;
    background: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 200 40'%3E%3Cpath d='M0 20 Q25 0 50 20 T100 20 T150 20 T200 20 V40 H0 Z' fill='white'/%3E%3C/svg%3E") repeat-x bottom;
}
.lcard--hero::after  { left: 0;   width: 200%; height: 52px; background-size: 200px 52px; opacity: .08; }
.lcard--hero::before { left: -8%; width: 220%; height: 36px; background-size: 145px 36px; opacity: .055; }
.lcard--hero .lcard__badge {
    display: inline-flex; align-items: center; gap: 0.4rem; align-self: flex-start;
    font-size: 0.78rem; font-weight: 600; text-transform: uppercase; letter-spacing: .05em; opacity: .9;
}
.lcard--hero .lcard__badge .si { width: 1.1em; height: 1.1em; vertical-align: 0; }
.lcard--hero .lcard__tile { width: 48px; height: 48px; background: rgba(255, 255, 255, .92); border-color: transparent; --si-main: #1F4566; --si-accent: #B07D1E; --si-wash: #fff; }
.lcard--hero .lcard__tile .si { width: 32px; height: 32px; }
.lcard--hero .lcard__title { font-size: clamp(1.35rem, 1.1rem + 1.4vw, 2rem); }
.lcard--hero .lcard__relative { display: inline-flex; align-items: center; gap: 0.4rem; margin: 0.15rem 0 0; font-size: 0.95rem; opacity: .92; }
.lcard--hero .lcard__relative .si { width: 1.1em; height: 1.1em; vertical-align: 0; }
.lcard--hero .lcard__actions { padding-top: 0.75rem; border-top: 1px solid rgba(255, 255, 255, .18); }
.lcard--hero .lcard__info { color: #fff; }
.lcard--hero .lcard__info:hover { background: rgba(255, 255, 255, .16); }
.lcard--hero .lcard__info:focus-visible { outline-color: #fff; }
.lcard--hero .lcard__note { display: inline-flex; align-items: center; gap: 0.4rem; font-size: 0.88rem; }
.lcard--hero .lcard__note .si { width: 1.1em; height: 1.1em; vertical-align: 0; }
.lcard--hero .btn-outline-danger { color: #ffd2cd; border-color: rgba(255, 210, 205, .7); }
.lcard--hero .btn-outline-danger:hover { color: #8a1b12; background: #ffd2cd; border-color: #ffd2cd; }
.lcard--hero .btn-outline-secondary { color: #fff; border-color: rgba(255, 255, 255, .55); }
.lcard--hero .btn-outline-secondary:hover { color: #163952; background: #fff; border-color: #fff; }
.lcard--hero .lcard__chips .lcard__status { box-shadow: 0 0 0 1px rgba(255, 255, 255, .25); }
.lcard--hero .lcard__who { background: rgba(255, 255, 255, .92); }
.lcard--hero .lcard__text { margin: 0.2rem 0 0; font-size: 0.95rem; color: var(--lc-text); }

/* CTA: «Sem aulas marcadas» (dourado, texto azul-marinho) */
.lcard--hero-cta {
    --lc-title: var(--color-primary, #214869);
    --lc-text: var(--color-primary, #214869);
    --si-main: #1F4566; --si-accent: #7A5200; --si-wash: #fff;
    color: var(--color-primary, #214869);
    background: linear-gradient(135deg, var(--color-accent, #E9C46A) 0%, var(--color-accent-dark, #c9a24a) 100%);
}
.lcard--hero-cta::before { display: none; }
.lcard--hero-cta .lcard__badge, .lcard--hero-cta .lcard__text { opacity: 1; }
.lcard--hero-cta .lcard__actions { border-top-color: rgba(33, 72, 105, .2); }

/* Vazio: «Tudo calmo por agora» (cartão tracejado, sem ondas) */
.lcard--hero-empty {
    --lc-title: var(--color-dark, #1c2b3a);
    --lc-text: var(--color-muted, #566574);
    --si-main: #1F4566; --si-accent: #B07D1E; --si-wash: #fff;
    color: var(--color-muted, #566574);
    background: var(--bg-card, #fff);
    border: 1px dashed var(--color-border, #e4e8ec);
    box-shadow: none;
}
.lcard--hero-empty:hover { box-shadow: none; }
.lcard--hero-empty::before, .lcard--hero-empty::after { display: none; }
.lcard--hero-empty .lcard__tile { background: rgba(33, 72, 105, .08); border-color: rgba(33, 72, 105, .12); }

@media (max-width: 575.98px) {
    /* cartões compactos em telemóvel (~150–190 px): tile mais pequeno, menos espaço, ação principal ≥ 44 px */
    .lcard { gap: 0.4rem; --lc-py: 0.7rem; --lc-px: 0.85rem; }
    .lcard__head { gap: 0.6rem; }
    .lcard__tile { width: 36px; height: 36px; }
    .lcard__tile .si { width: 24px; height: 24px; }
    .lcard__title { font-size: 1.2rem; }
    .lcard__sub { margin-top: 0; font-size: 0.8125rem; }
    .lcard__meta { font-size: 0.8125rem; gap: 0.05rem 0.75rem; }
    .lcard__actions { gap: 0.4rem; }
    .lcard:not(.lcard--hero) .lcard__actions .btn { min-height: 44px; }
    .lcard--hero { gap: 0.5rem; --lc-py: 0.95rem; --lc-px: 1rem; }
    .lcard--hero .lcard__actions { padding-top: 0.5rem; }
    .lcard--hero .lcard__title { font-size: 1.35rem; }
    .lcard--hero .lcard__tile { width: 44px; height: 44px; }
    .lcard--hero .lcard__actions .btn-lg { width: 100%; justify-content: center; }
}

/* ─── Marca-d'água da atividade (lado direito, atrás do conteúdo) ───
   O mesmo SVG do tile, ampliado, esbatido e cortado pela borda direita. O wrapper corta
   (overflow) sem pôr overflow:hidden no cartão, para não cortar menus/tooltips. */
.lcard > :not(.lcard__mark) { position: relative; z-index: 1; }
.lcard__mark {
    position: absolute; inset: 0; z-index: 0;
    overflow: hidden; border-radius: inherit;
    pointer-events: none;
}
.lcard__mark .si {
    position: absolute; top: 50%; right: -34px;
    width: 150px; height: 150px; margin: 0; vertical-align: 0;
    transform: translate(var(--lc-mx, 0px), calc(-50% + var(--lc-my, 0px))) rotate(-8deg);
    transition: transform .2s ease-out;
    opacity: .1;
}
.lcard--past .lcard__mark .si { filter: grayscale(1); opacity: .08; }
.lcard--cancelled .lcard__mark .si { filter: grayscale(1) sepia(1) hue-rotate(-50deg) saturate(2.2); opacity: .09; }
.lcard--past .lcard__mark .si *, .lcard--cancelled .lcard__mark .si * { animation: none !important; }

/* «Cancelar inscrição» (ligação) vive na linha do canto inferior direito, à esquerda do (i); o rodapé fica vazio */
.lcard__actions--empty { display: none; }
.lcard__spots .lcard__link { padding: 0; font-size: 0.8125rem; white-space: nowrap; }
.lcard.lcard > .lcard__spots { gap: 0.55rem; }


/* Local logo por baixo da data */
.lcard__where { display: flex; align-items: center; gap: 0.35rem; margin: 0.15rem 0 0; min-width: 0; font-size: 0.86rem; line-height: 1.3; color: var(--lc-text); }
.lcard__where > span { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; min-width: 0; }
.lcard__where .si { flex: none; width: 1.1em; height: 1.1em; vertical-align: 0; }
.lcard--past .lcard__where .si { filter: grayscale(1); opacity: .65; }
.lcard--cancelled .lcard__where .si { filter: grayscale(1) sepia(1) hue-rotate(-50deg) saturate(2.2); opacity: .65; }
@media (max-width: 575.98px) { .lcard__where { font-size: 0.8125rem; } }

/* «Inscrito»: badge no canto superior direito do cabeçalho azul */
.lcard__banner .lcard__status--corner { margin-left: auto; flex: none; text-transform: none; letter-spacing: 0; font-size: 0.78rem; }

/* Cabeçalho: texto mais junto ao topo e em areia (2.ª cor da marca); a altura do cabeçalho mantém-se */
.lcard__banner {
    align-items: flex-start;
    padding-top: 0.5rem; padding-bottom: 1.2rem;
    color: var(--brand-sand, #f8ddb0);
    --si-main: var(--brand-sand, #f8ddb0); --si-accent: #fff; --si-wash: var(--color-primary, #214869);
}
.lcard--hero .lcard__banner { color: var(--brand-sand, #f8ddb0); }

/* Ícone, texto e badge do cabeçalho alinhados verticalmente entre si (centro da mesma linha) */
.lcard__banner { align-items: center; }
.lcard__banner > span:not(.lcard__status) { line-height: 1; }
.lcard__banner .si, .lcard__banner .lcard__status { align-self: center; }
.lcard__banner { padding-top: 0.85rem; padding-bottom: 0.85rem; } /* texto centrado na altura do cabeçalho */
