/** * 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--homepage svg { fill: rgba(255, 255, 255, 0.85); } .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 li.menu__item { position: relative; } .microsite-top-bar ul.menu ul.menu { display: none; position: absolute; top: 100%; left: 0; min-width: 160px; flex-direction: column; background-color: hsl(201, 15%, 15%); border-radius: 4px; box-shadow: 0 4px 12px rgba(0, 0, 0, 0.35); z-index: 100; padding: 4px 0; } .microsite-top-bar li.menu__item:hover > ul.menu, .microsite-top-bar li.menu__item:focus-within > ul.menu { display: flex; } .microsite-top-bar ul.menu ul.menu li.menu__item { margin-inline-end: 0; white-space: nowrap; } .microsite-top-bar ul.menu ul.menu a.menu__link { padding: 6px 16px; width: 100%; box-sizing: border-box; } .microsite-top-bar ul.menu ul.menu a.menu__link:hover { background-color: hsl(201, 15%, 25%); } .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; } }