Files
site_users/themes/site_users_microsite_theme/css/microsite.css
Quintino A. G. Souza 9ec7f951bf Adiciona links acadêmicos ao MicrositeHeaderBlock e formatadores de campo
- Formatadores FieldFormatter para Lattes, ORCID e MathSciNet: geram
  link para o perfil na plataforma a partir do ID armazenado no campo
- MicrositeHeaderBlock: inclui lattes_id, orcid_id e mathscinet_id
- Template: exibe ícones SVG via site_tools_academic_icon() (extensão
  Twig do módulo site_tools) com links acessíveis para cada plataforma
- CSS: estilos para .msite-header-block__academic-links com animação
  de hover nos ícones

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-17 08:52:28 -03:00

519 lines
10 KiB
CSS
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
/**
* Microsite theme — estilos base.
* Ponto de partida minimalista. Personalize conforme o design do site.
*/
*,
*::before,
*::after {
box-sizing: border-box;
}
body.microsite {
margin: 0;
font-family: system-ui, sans-serif;
background: #f5f5f5;
color: #222;
}
/* Skip link */
.skip-link {
position: absolute;
top: -100%;
left: 0;
padding: 0.5rem 1rem;
background: #000;
color: #fff;
z-index: 9999;
}
.skip-link:focus {
top: 0;
}
/* Header ------------------------------------------------------------------- */
.microsite-header {
background: #1a1a2e;
color: #fff;
padding: 2rem 1.5rem;
}
.microsite-header__inner {
display: flex;
align-items: center;
gap: 1.5rem;
max-width: 900px;
margin: 0 auto;
}
.microsite-header__photo img {
width: 80px;
height: 80px;
border-radius: 50%;
object-fit: cover;
border: 3px solid rgba(255, 255, 255, 0.3);
}
.microsite-header__name {
margin: 0 0 0.25rem;
font-size: 1.5rem;
font-weight: 700;
}
.microsite-header__roles {
list-style: none;
margin: 0;
padding: 0;
display: flex;
gap: 0.5rem;
flex-wrap: wrap;
}
.microsite-header__role {
font-size: 0.8rem;
text-transform: uppercase;
letter-spacing: 0.05em;
background: rgba(255, 255, 255, 0.15);
padding: 0.2rem 0.6rem;
border-radius: 999px;
}
/* Navigation --------------------------------------------------------------- */
.microsite-nav {
background: #16213e;
border-bottom: 1px solid rgba(255, 255, 255, 0.1);
}
.microsite-nav ul.tabs {
list-style: none;
margin: 0;
padding: 0 1.5rem;
display: flex;
max-width: 900px;
margin: 0 auto;
}
.microsite-nav ul.tabs li {
margin: 0;
}
.microsite-nav ul.tabs a {
display: block;
padding: 0.75rem 1.25rem;
color: rgba(255, 255, 255, 0.7);
text-decoration: none;
font-size: 0.9rem;
border-bottom: 3px solid transparent;
transition: color 0.2s, border-color 0.2s;
}
.microsite-nav ul.tabs a:hover,
.microsite-nav ul.tabs a:focus {
color: #fff;
}
.microsite-nav ul.tabs li.is-active a,
.microsite-nav ul.tabs a.is-active {
color: #fff;
border-bottom-color: #e94560;
}
/* Highlighted -------------------------------------------------------------- */
.microsite-highlighted {
max-width: 900px;
margin: 1.5rem auto 0;
padding: 0 1.5rem;
}
/* Main + Sidebar ----------------------------------------------------------- */
.microsite-main-wrapper {
max-width: 900px;
margin: 2rem auto;
padding: 0 1.5rem;
}
.microsite-main-wrapper--has-sidebar {
display: grid;
grid-template-columns: 1fr 280px;
gap: 2rem;
max-width: 1200px;
}
.microsite-main {
min-width: 0;
}
.microsite-sidebar {
min-width: 0;
}
.microsite-messages {
margin-bottom: 1.5rem;
}
/* Microsite Header Block --------------------------------------------------- */
/*
* Bloco .msite-header-block: foto circular, nome (h1), meta (roles +
* departamento), biografia e lista de contatos.
* Assume fundo escuro herdado do .microsite-header.
*/
.msite-header-block {
display: flex;
align-items: flex-start;
gap: 1.75rem;
max-width: 1500px;
margin: 0 auto;
padding: 2rem 1.5rem;
color: #fff;
}
/* --- Foto ----------------------------------------------------------------- */
.msite-header-block__photo-wrap {
flex-shrink: 0;
}
.msite-header-block__photo {
display: block;
width: 220px;
height: 280px;
border-radius: 50%;
object-fit: cover;
border: 3px solid rgba(255, 255, 255, 0.35);
}
/* Fallback de iniciais quando não há foto */
.msite-header-block__photo--initials {
display: flex;
align-items: center;
justify-content: center;
background: rgba(255, 255, 255, 0.15);
font-size: 4rem;
font-weight: 700;
color: #fff;
user-select: none;
}
/* --- Informações ---------------------------------------------------------- */
.msite-header-block__info {
flex: 1;
min-width: 0;
}
.msite-header-block__name {
margin: 0 0 0.3rem;
font-size: 1.8rem;
font-weight: 700;
line-height: 1.2;
color: #fff;
}
.msite-header-block__meta {
margin: 0 0 0.75rem;
font-size: 0.95rem;
font-style: italic;
color: rgba(255, 255, 255, 0.75);
}
.msite-header-block__bio {
margin-bottom: 0.75rem;
font-size: 0.9rem;
line-height: 1.5;
color: rgba(255, 255, 255, 0.85);
}
/* --- Contatos ------------------------------------------------------------- */
.msite-header-block__contact {
list-style: none;
margin: 0;
padding: 0;
display: flex;
flex-wrap: wrap;
gap: 0.3rem 1.5rem;
font-size: 0.85rem;
color: rgba(255, 255, 255, 0.8);
}
.msite-header-block__contact-label {
font-weight: 600;
}
.msite-header-block__contact a {
color: hsl(202, 79%, 70%);
text-decoration: none;
}
.msite-header-block__contact a:hover {
text-decoration: underline;
}
/* --- Links acadêmicos (Lattes, ORCID, MathSciNet) ------------------------- */
.msite-header-block__academic-links {
display: flex;
gap: 0.6rem;
margin-top: 0.75rem;
}
.msite-header-block__academic-link svg {
display: block;
width: 32px;
height: 32px;
transition: opacity 0.15s, transform 0.15s;
}
.msite-header-block__academic-link:hover svg {
opacity: 0.85;
transform: scale(1.1);
}
/* Top Bar ------------------------------------------------------------------ */
/*
* Barra estreita no topo da página, antes do header.
* Destinada ao menu do usuário (login, conta, logout).
* Alinhada à direita, fundo escuro, texto claro.
*/
.microsite-top-bar {
background-color: hsl(201, 15%, 20%);
padding-inline: 1.5rem;
}
.microsite-top-bar .block-menu {
display: flex;
justify-content: flex-end;
font-size: 12px;
font-weight: 600;
letter-spacing: 0.04em;
}
.microsite-top-bar ul.menu {
display: flex;
flex-wrap: wrap;
align-items: center;
list-style: none;
margin: 0;
padding: 0;
}
.microsite-top-bar li.menu__item:not(:last-child) {
margin-inline-end: 18px;
}
.microsite-top-bar ul.menu ul.menu {
display: none;
}
.microsite-top-bar a.menu__link {
position: relative;
display: inline-flex;
align-items: center;
padding-block: 7px;
text-decoration: none;
color: hsl(201, 15%, 88%);
}
.microsite-top-bar a.menu__link:hover {
color: #fff;
}
.microsite-top-bar a.menu__link.is-active {
color: hsl(202, 79%, 70%);
}
/* Navigation --------------------------------------------------------------- */
/*
* Estilo baseado no nav-secondary do Olivero.
* Variáveis Olivero traduzidas para valores fixos (o tema base é stable9):
* --color--primary-50 → hsl(202, 79%, 50%) ≈ #1a9fd4
* --color--gray-5 → hsl(201, 15%, 5%) ≈ #0b0e0f (texto)
* --sp → 18px
* --sp0-5 → 9px
* --sp2 → 36px
* --font-size-s → 14px
*/
.microsite-nav {
background-color: #fff;
border-bottom: 3px solid hsl(202, 79%, 50%);
padding-inline: 1.5rem;
}
/* Bloco de menu padrão dentro da região nav */
.microsite-nav .block-menu {
font-size: 14px;
font-weight: 600;
letter-spacing: 0.02em;
}
/* Lista principal: horizontal, sem marcadores */
.microsite-nav ul.menu {
display: flex;
flex-wrap: wrap;
align-items: center;
list-style: none;
margin: 0;
padding: 0;
}
/* Itens: espaço entre eles */
.microsite-nav li.menu__item:not(:last-child) {
margin-inline-end: 36px;
}
/* Subitens: não exibidos (menu plano) */
.microsite-nav ul.menu ul.menu {
display: none;
}
/* Links */
.microsite-nav a.menu__link {
position: relative;
display: inline-flex;
align-items: center;
padding-block: 12px;
text-decoration: none;
color: hsl(201, 15%, 5%);
}
/* Underline animado no hover (padrão Olivero) */
.microsite-nav a.menu__link::after {
position: absolute;
bottom: 0;
left: 0;
width: 100%;
height: 0;
content: "";
transition: opacity 0.2s, transform 0.2s;
transform: translateY(5px);
opacity: 0;
border-top: solid 2px currentColor;
}
.microsite-nav a.menu__link:hover::after,
.microsite-nav a.menu__link.is-active::after {
transform: translateY(0);
opacity: 0.8;
}
/* Link ativo: cor primária */
.microsite-nav a.menu__link.is-active {
color: hsl(202, 79%, 50%);
}
/* Social Bar --------------------------------------------------------------- */
/*
* Mobile: barra horizontal compacta.
* Desktop (≥ 1200px): coluna lateral fixa à esquerda, 90px de largura,
* conteúdo girado 90° (estilo Olivero Social Bar).
*/
.social-bar__inner {
position: relative;
padding: 0.5rem 1rem;
}
.social-bar__inner .rotate > * {
margin-bottom: 0.5rem;
}
@media (min-width: 1200px) {
/* Layout flex: barra social à esquerda, conteúdo principal à direita */
.microsite-layout--has-social {
display: flex;
align-items: flex-start;
}
.microsite-content-area {
flex: 1;
min-width: 0;
}
/* Coluna .social-bar no fluxo (placeholder de 90px) */
.social-bar {
flex-shrink: 0;
width: 90px;
background-color: #f3f3f3;
align-self: stretch;
}
/* Wrapper interno: posicionamento relativo normal; .is-fixed o fixa */
.social-bar__inner {
position: relative;
width: 90px;
padding: 2.5rem 0;
}
.social-bar__inner.is-fixed {
position: fixed;
top: 3rem;
left: 0;
height: calc(100vh - 3rem);
}
/* Conteúdo girado em 90° */
.social-bar__inner .rotate {
position: absolute;
left: 50%;
display: flex;
flex-direction: row-reverse;
width: 100vh;
transform: rotate(-90deg) translateX(-100%);
transform-origin: left;
}
@supports (width: max-content) {
.social-bar__inner .rotate {
width: max-content;
}
}
.social-bar__inner .rotate > * {
display: flex;
align-items: center;
margin-bottom: 0;
}
.social-bar__inner .rotate > *:not(:first-child) {
margin-right: 2rem;
}
}
/* Footer ------------------------------------------------------------------- */
.microsite-footer {
background: #16213e;
color: rgba(255, 255, 255, 0.7);
padding: 2rem 1.5rem;
margin-top: 2rem;
}
.microsite-footer a {
color: rgba(255, 255, 255, 0.85);
}
/* Responsividade básica ---------------------------------------------------- */
@media (max-width: 768px) {
.microsite-main-wrapper--has-sidebar {
grid-template-columns: 1fr;
}
}
@media (max-width: 600px) {
.microsite-header__inner {
flex-direction: column;
text-align: center;
}
.microsite-header__roles {
justify-content: center;
}
}