/*
 * Tema público do blog.
 *
 * Nenhuma cor literal fora deste bloco :root — é o que permite re-tingir o
 * site em runtime apenas sobrescrevendo as custom properties, sem recompilar
 * nada. Um teste de guarda garante isso (ThemeTest).
 *
 * Os valores abaixo são só o retrato do padrão: quem manda é o bloco :root
 * que o `<head>` emite a partir das sementes (Support\Theme\Theme). Eles
 * existem para a folha funcionar sozinha, fora do layout do pacote.
 */

:root {
    --bp-primary: #1f5d54;
    --bp-primary-strong: #123b35;
    --bp-primary-soft: #ecf9f6;
    --bp-accent: #ffc466;
    --bp-accent-soft: #fff4e4;
    --bp-ink: #14201c;
    --bp-ink-soft: #62706b;
    --bp-paper: #f4f0ed;
    --bp-surface: #fffdfb;
    --bp-line: #e3dad4;

    --bp-radius: 12px;
    --bp-shadow: 0 1px 2px rgb(20 32 28 / 6%), 0 8px 24px rgb(20 32 28 / 6%);
    --bp-shell: 68rem;
    --bp-measure: 40rem;

    --bp-font: ui-sans-serif, system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
    --bp-font-heading: var(--bp-font);
}

*,
*::before,
*::after {
    box-sizing: border-box;
}

body {
    margin: 0;
    background: var(--bp-paper);
    color: var(--bp-ink);
    font-family: var(--bp-font);
    font-size: 1rem;
    line-height: 1.6;
    -webkit-font-smoothing: antialiased;
}

a {
    color: var(--bp-primary);
}

img {
    max-width: 100%;
    height: auto;
}

.bp-shell {
    width: 100%;
    max-width: var(--bp-shell);
    margin: 0 auto;
    padding: 0 1.25rem;
}

/* Atalho de teclado: primeiro tab da página pula a navegação. */
.bp-skip {
    position: absolute;
    left: -9999px;
}

.bp-skip:focus {
    left: 1rem;
    top: 1rem;
    z-index: 10;
    padding: 0.5rem 0.75rem;
    background: var(--bp-surface);
    border-radius: var(--bp-radius);
}

.bp-masthead {
    background: var(--bp-surface);
    border-bottom: 1px solid var(--bp-line);
}

.bp-masthead__inner {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    justify-content: space-between;
    gap: 1rem;
    padding-block: 1rem;
}

.bp-masthead__brand {
    font-family: var(--bp-font-heading);
    font-size: 1.125rem;
    font-weight: 700;
    color: var(--bp-primary-strong);
    text-decoration: none;
}

.bp-masthead__nav {
    display: flex;
    flex-wrap: wrap;
    gap: 1rem;
}

.bp-masthead__nav a {
    color: var(--bp-ink-soft);
    text-decoration: none;
}

.bp-masthead__nav a:hover {
    color: var(--bp-primary);
}

.bp-page-header {
    padding-block: 2.5rem 1.5rem;
}

.bp-page-header h1 {
    margin: 0;
    font-family: var(--bp-font-heading);
    font-size: clamp(1.875rem, 1.2rem + 2vw, 2.5rem);
    line-height: 1.15;
    color: var(--bp-primary-strong);
}

.bp-page-header__lead {
    max-width: var(--bp-measure);
    margin: 0.75rem 0 0;
    color: var(--bp-ink-soft);
}

.bp-page-header--author {
    display: flex;
    align-items: flex-start;
    gap: 1.25rem;
}

.bp-breadcrumbs {
    padding-block: 1.25rem 0;
    font-size: 0.875rem;
    color: var(--bp-ink-soft);
}

.bp-breadcrumbs ol {
    display: flex;
    flex-wrap: wrap;
    gap: 0.5rem;
    margin: 0;
    padding: 0;
    list-style: none;
}

.bp-breadcrumbs li + li::before {
    content: "/";
    margin-right: 0.5rem;
    color: var(--bp-line);
}

.bp-grid {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(17rem, 1fr));
    gap: 1.5rem;
    padding-block: 1.5rem;
}

.bp-card {
    display: flex;
    flex-direction: column;
    overflow: hidden;
    background: var(--bp-surface);
    border: 1px solid var(--bp-line);
    border-radius: var(--bp-radius);
}

.bp-card__media {
    display: block;
    aspect-ratio: 16 / 9;
    background: var(--bp-primary-soft);
}

.bp-card__media img {
    width: 100%;
    height: 100%;
    object-fit: cover;
}

.bp-card__fallback {
    display: block;
    width: 100%;
    height: 100%;
    background: var(--bp-primary);
}

.bp-card__fallback[data-tone="2"] {
    background: var(--bp-primary-soft);
}

.bp-card__fallback[data-tone="3"] {
    background: var(--bp-accent);
}

.bp-card__body {
    display: flex;
    flex: 1;
    flex-direction: column;
    gap: 0.5rem;
    padding: 1.25rem;
}

.bp-card__title {
    margin: 0;
    font-family: var(--bp-font-heading);
    font-size: 1.125rem;
    line-height: 1.3;
}

.bp-card__title a {
    color: var(--bp-primary-strong);
    text-decoration: none;
}

.bp-card__title a:hover {
    text-decoration: underline;
}

.bp-card__excerpt {
    margin: 0;
    color: var(--bp-ink-soft);
    font-size: 0.9375rem;
}

.bp-card--featured {
    grid-column: 1 / -1;
    margin-top: 1rem;
}

@media (min-width: 48rem) {
    .bp-card--featured {
        flex-direction: row;
    }

    .bp-card--featured .bp-card__media {
        flex: 1 1 55%;
        aspect-ratio: auto;
    }

    .bp-card--featured .bp-card__body {
        flex: 1 1 45%;
        justify-content: center;
        padding: 2rem;
    }

    .bp-card--featured .bp-card__title {
        font-size: 1.75rem;
    }
}

.bp-tag {
    align-self: flex-start;
    padding: 0.125rem 0.625rem;
    border-radius: 999px;
    background: var(--bp-primary-soft);
    color: var(--bp-primary-strong);
    font-size: 0.75rem;
    font-weight: 600;
    text-decoration: none;
    text-transform: uppercase;
    letter-spacing: 0.04em;
}

.bp-search {
    display: flex;
    align-items: center;
    gap: 0.375rem;
}

/* Rótulo só para leitor de tela: o placeholder some quando se digita, e o
   campo ficaria sem nome acessível. */
.bp-search__label {
    position: absolute;
    width: 1px;
    height: 1px;
    padding: 0;
    overflow: hidden;
    clip-path: inset(50%);
    white-space: nowrap;
}

.bp-search__input {
    min-width: 0;
    width: 11rem;
    padding: 0.375rem 0.75rem;
    border: 1px solid var(--bp-line);
    border-radius: 999px;
    background: var(--bp-surface);
    color: var(--bp-ink);
    font: inherit;
    font-size: 0.875rem;
}

.bp-search__input:focus-visible {
    outline: 2px solid var(--bp-primary);
    outline-offset: 1px;
}

.bp-search__submit {
    padding: 0.375rem 0.875rem;
    border: 0;
    border-radius: 999px;
    background: var(--bp-primary);
    color: var(--bp-surface);
    font: inherit;
    font-size: 0.875rem;
    font-weight: 600;
    cursor: pointer;
}

.bp-search__submit:hover {
    background: var(--bp-primary-strong);
}

/* Na página de resultados o campo é o assunto da tela, não um acessório do
   cabeçalho: ganha largura e altura de caixa de verdade. */
.bp-search--page {
    max-width: var(--bp-measure);
    margin-top: 1rem;
}

.bp-search--page .bp-search__input {
    flex: 1;
    width: auto;
    padding: 0.625rem 1rem;
    font-size: 1rem;
}

.bp-search--page .bp-search__submit {
    padding: 0.625rem 1.25rem;
    font-size: 1rem;
}

.bp-results {
    list-style: none;
    margin: 0;
    padding: 0;
    display: grid;
    gap: 1.75rem;
}

.bp-result__title {
    margin: 0 0 0.375rem;
    font-size: 1.25rem;
}

.bp-result__title a {
    color: var(--bp-primary-strong);
    text-decoration: none;
}

.bp-result__title a:hover {
    text-decoration: underline;
}

.bp-result__snippet {
    margin: 0 0 0.375rem;
    max-width: var(--bp-measure);
    color: var(--bp-ink-soft);
}

.bp-result mark {
    padding: 0.05em 0.2em;
    border-radius: 3px;
    /* O degrau 50 do accent é claro demais para marcar texto; misturar com o
       próprio accent dá contraste sem virar caneta marca-texto. */
    background: color-mix(in oklab, var(--bp-accent) 45%, var(--bp-surface));
    color: var(--bp-ink);
}

/* Honeypot: fora da tela, não `display:none` — robô costuma ignorar campo
   escondido por display e preencher o que está no DOM. */
.bp-honeypot {
    position: absolute;
    left: -9999px;
    width: 1px;
    height: 1px;
    overflow: hidden;
}

.bp-comments {
    margin-top: 3rem;
    padding-top: 2rem;
    border-top: 1px solid var(--bp-line);
}

.bp-comments h2 {
    margin: 0 0 1.5rem;
    font-size: 1.375rem;
}

.bp-comment-list {
    list-style: none;
    margin: 0 0 2.5rem;
    padding: 0;
    display: grid;
    gap: 1.5rem;
}

.bp-comment {
    display: flex;
    gap: 0.875rem;
    max-width: var(--bp-measure);
}

.bp-comment__avatar {
    flex-shrink: 0;
    display: grid;
    place-items: center;
    width: 2.25rem;
    height: 2.25rem;
    border-radius: 999px;
    background: var(--bp-primary-soft);
    color: var(--bp-primary-strong);
    font-size: 0.75rem;
    font-weight: 700;
}

.bp-comment__meta {
    margin: 0 0 0.25rem;
    color: var(--bp-ink-soft);
    font-size: 0.8125rem;
}

.bp-comment__body p {
    margin: 0 0 0.5rem;
}

.bp-comment__body p:last-child {
    margin-bottom: 0;
}

.bp-comment-form {
    max-width: var(--bp-measure);
    padding: 1.5rem;
    border: 1px solid var(--bp-line);
    border-radius: var(--bp-radius);
    background: var(--bp-surface);
}

.bp-comment-form h3 {
    margin: 0 0 1rem;
    font-size: 1.125rem;
}

.bp-comment-form__row {
    display: grid;
    gap: 0.25rem;
    margin-bottom: 1rem;
}

.bp-comment-form label {
    font-size: 0.8125rem;
    font-weight: 600;
}

.bp-comment-form small {
    color: var(--bp-ink-soft);
    font-size: 0.75rem;
}

.bp-comment-form input,
.bp-comment-form textarea {
    width: 100%;
    padding: 0.5rem 0.75rem;
    border: 1px solid var(--bp-line);
    border-radius: 8px;
    background: var(--bp-paper);
    color: var(--bp-ink);
    font: inherit;
}

.bp-comment-form input:focus-visible,
.bp-comment-form textarea:focus-visible {
    outline: 2px solid var(--bp-primary);
    outline-offset: 1px;
}

.bp-comment-form button {
    padding: 0.5rem 1.25rem;
    border: 0;
    border-radius: 999px;
    background: var(--bp-primary);
    color: var(--bp-surface);
    font: inherit;
    font-weight: 600;
    cursor: pointer;
}

.bp-comment-form button:hover {
    background: var(--bp-primary-strong);
}

.bp-comment-form__note {
    margin: 0.75rem 0 0;
    color: var(--bp-ink-soft);
    font-size: 0.75rem;
}

.bp-notice {
    margin: 0 0 1rem;
    padding: 0.75rem 1rem;
    border-radius: 8px;
    background: var(--bp-primary-soft);
    color: var(--bp-primary-strong);
    font-size: 0.875rem;
}

.bp-notice--error {
    list-style: none;
    background: var(--bp-accent-soft);
    color: var(--bp-ink);
}

.bp-tags {
    display: flex;
    flex-wrap: wrap;
    gap: 0.5rem;
    margin: 2rem 0 0;
    padding-top: 1.5rem;
    border-top: 1px solid var(--bp-line);
}

.bp-meta {
    display: flex;
    flex-wrap: wrap;
    gap: 0.375rem;
    margin: 0;
    color: var(--bp-ink-soft);
    font-size: 0.8125rem;
}

.bp-subnav {
    display: flex;
    flex-wrap: wrap;
    gap: 0.5rem;
}

.bp-preview-banner {
    max-width: var(--bp-measure);
    margin: 1.5rem auto 0;
    padding: 0.75rem 1rem;
    background: var(--bp-accent-soft);
    border: 1px dashed var(--bp-accent);
    border-radius: var(--bp-radius);
    font-size: 0.9375rem;
}

.bp-article {
    max-width: var(--bp-measure);
    margin: 0 auto;
    padding-block: 1.5rem 3rem;
}

.bp-article__header h1 {
    margin: 0.5rem 0 0;
    font-family: var(--bp-font-heading);
    font-size: clamp(1.875rem, 1.2rem + 2.4vw, 2.75rem);
    line-height: 1.15;
    color: var(--bp-primary-strong);
}

.bp-article__lead {
    margin: 1rem 0;
    font-size: 1.125rem;
    color: var(--bp-ink-soft);
}

.bp-article__cover {
    margin: 2rem 0;
}

.bp-article__cover img {
    width: 100%;
    border-radius: var(--bp-radius);
}

.bp-takeaways {
    margin: 2rem 0;
    padding: 1.25rem 1.5rem;
    background: var(--bp-accent-soft);
    border-left: 4px solid var(--bp-accent);
    border-radius: var(--bp-radius);
}

.bp-takeaways__title {
    margin: 0 0 0.5rem;
    font-size: 0.8125rem;
    text-transform: uppercase;
    letter-spacing: 0.08em;
    color: var(--bp-ink-soft);
}

.bp-takeaways ul {
    margin: 0;
    padding-left: 1.25rem;
}

/* Conteúdo do editor. O Preflight de alguns hosts zera listas: re-declaramos. */
.bp-prose {
    font-size: 1.0625rem;
}

.bp-prose h2 {
    margin: 2.5rem 0 0.75rem;
    font-family: var(--bp-font-heading);
    font-size: 1.625rem;
    line-height: 1.25;
    color: var(--bp-primary-strong);
    scroll-margin-top: 2rem;
}

.bp-prose h3 {
    margin: 2rem 0 0.5rem;
    font-family: var(--bp-font-heading);
    font-size: 1.25rem;
    color: var(--bp-primary-strong);
    scroll-margin-top: 2rem;
}

.bp-prose p {
    margin: 0 0 1.25rem;
}

.bp-prose a {
    color: var(--bp-primary);
    text-decoration: underline;
}

.bp-prose ul,
.bp-prose ol {
    margin: 0 0 1.25rem;
    padding-left: 1.5rem;
}

.bp-prose ul {
    list-style: disc;
}

.bp-prose ol {
    list-style: decimal;
}

.bp-prose li::marker {
    color: var(--bp-primary);
}

.bp-prose blockquote {
    margin: 1.5rem 0;
    padding: 0.75rem 1.25rem;
    background: var(--bp-accent-soft);
    border-left: 4px solid var(--bp-accent);
    border-radius: 0 var(--bp-radius) var(--bp-radius) 0;
}

.bp-prose img {
    display: block;
    margin: 1.5rem auto;
    border-radius: var(--bp-radius);
}

.bp-prose table {
    width: 100%;
    margin: 1.5rem 0;
    border-collapse: collapse;
    font-size: 0.9375rem;
}

.bp-prose th,
.bp-prose td {
    padding: 0.625rem 0.75rem;
    border: 1px solid var(--bp-line);
    text-align: left;
}

.bp-prose thead th,
.bp-prose tr:first-child td {
    background: var(--bp-primary-soft);
    color: var(--bp-primary-strong);
    font-weight: 600;
}

.bp-prose tbody tr:nth-child(even) td {
    background: var(--bp-paper);
}

.bp-faqs {
    margin-top: 3rem;
}

.bp-faq {
    padding: 0.75rem 0;
    border-bottom: 1px solid var(--bp-line);
}

.bp-faq summary {
    cursor: pointer;
    font-weight: 600;
    color: var(--bp-primary-strong);
}

.bp-author {
    display: flex;
    gap: 1rem;
    margin-top: 3rem;
    padding: 1.25rem;
    background: var(--bp-surface);
    border: 1px solid var(--bp-line);
    border-radius: var(--bp-radius);
}

.bp-author__avatar {
    width: 3.5rem;
    height: 3.5rem;
    border-radius: 999px;
    object-fit: cover;
}

.bp-author__avatar--lg {
    width: 5rem;
    height: 5rem;
}

.bp-author__name {
    margin: 0;
    font-weight: 700;
}

.bp-author__role {
    margin: 0 0 0.5rem;
    color: var(--bp-ink-soft);
    font-size: 0.875rem;
}

.bp-author__links {
    display: flex;
    gap: 1rem;
    margin: 0.75rem 0 0;
    font-size: 0.875rem;
}

.bp-related {
    padding-block: 2rem 3rem;
    border-top: 1px solid var(--bp-line);
}

.bp-related__title {
    font-family: var(--bp-font-heading);
    font-size: 1.25rem;
    color: var(--bp-primary-strong);
}

.bp-pagination {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 1rem;
    padding-block: 1.5rem 3rem;
}

.bp-pagination__link {
    padding: 0.5rem 1rem;
    background: var(--bp-surface);
    border: 1px solid var(--bp-line);
    border-radius: var(--bp-radius);
    text-decoration: none;
}

.bp-pagination__link.is-disabled {
    color: var(--bp-ink-soft);
    opacity: 0.5;
}

.bp-pagination__status {
    color: var(--bp-ink-soft);
    font-size: 0.875rem;
}

.bp-empty {
    padding: 3rem 0;
    color: var(--bp-ink-soft);
    text-align: center;
}

.bp-footer {
    padding-block: 2rem;
    border-top: 1px solid var(--bp-line);
    background: var(--bp-surface);
    color: var(--bp-ink-soft);
    font-size: 0.875rem;
}
