/*
 * Single article
 */

/* ── Head ───────────────────────────────────────────────────────────────── */
.article__head {
    display: flex;
    flex-direction: column;
    align-items: flex-start;
    gap: 24px;
    max-width: 920px;
    padding: 56px 0 56px var(--content-indent);
}

.article__meta {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 8px 20px;
    font-size: var(--fs-small);
    color: var(--color-text-muted);
}

.article__title {
    font-size: 56px;
    line-height: 1.05;
}

.article__lead {
    max-width: 760px;
    font-size: var(--fs-h4);
    line-height: 1.5;
    color: var(--color-text-secondary);
}

/* ── Body ───────────────────────────────────────────────────────────────── */
.article__main {
    padding: 0 0 var(--space-section);
}

.article__wrp {
    display: flex;
    flex-direction: row-reverse;
    align-items: flex-start;
    gap: 64px;
}

.article__body {
    flex: 1;
    min-width: 0;
    max-width: 760px;
    margin-left: var(--content-indent);
    display: flex;
    flex-direction: column;
    gap: 40px;
}

.article__aside {
    position: sticky;
    top: calc(var(--header-height) + 32px);
    flex: none;
    display: flex;
    flex-direction: column;
    gap: 24px;
    width: 320px;
    margin-left: auto;
}

.article__cover { margin: 0; }

.article__image {
    width: 100%;
    height: auto;
    border: 1px solid var(--color-line);
}

/* Readable long text */
.article__content {
    font-size: 18px;
    line-height: 1.65;
}

.article__content > * + * { margin-top: 20px; }
.article__content h2 { margin-top: 56px; font-size: 32px; scroll-margin-top: calc(var(--header-height) + 24px); }
.article__content h3 { margin-top: 36px; font-size: 22px; }
.article__content h2 + *,
.article__content h3 + * { margin-top: 16px; }
.article__content ol { display: flex; flex-direction: column; gap: 8px; padding-left: 24px; list-style: decimal; }
.article__content ol li { display: list-item; padding-left: 4px; }
.article__content ol li::marker { font-family: var(--font-heading); font-weight: 500; color: var(--color-primary); }
.article__content ol li::before { content: none; }
.article__content img { height: auto; border: 1px solid var(--color-line); }
.article__content figcaption { margin-top: 8px; font-size: var(--fs-small); color: var(--color-text-muted); }

.article__content blockquote {
    padding: 20px 24px;
    background: var(--color-primary-10);
    border-left: 4px solid var(--color-primary);
}

.article__content table {
    width: 100%;
    font-size: var(--fs-body);
    border-collapse: collapse;
}

.article__content .wp-block-table { overflow-x: auto; }

.article__content th,
.article__content td {
    padding: 12px 16px;
    text-align: left;
    vertical-align: top;
    border: 1px solid var(--color-line);
}

.article__content th { font-weight: 500; background: var(--color-bg-grey); }

.article__content code {
    padding: 2px 6px;
    font-size: 0.9em;
    background: var(--color-bg-grey);
}

.article__content pre {
    padding: 20px;
    overflow-x: auto;
    font-size: var(--fs-small);
    background: var(--color-bg-grey);
}

.article__content pre code { padding: 0; background: none; }

.article__tags {
    display: flex;
    flex-wrap: wrap;
    gap: 8px;
}

.article__tags a {
    padding: 6px 12px;
    font-size: var(--fs-small);
    color: var(--color-text-muted);
    border: 1px solid var(--color-line);
}

.article__tags a:hover { color: var(--color-primary); border-color: var(--color-primary); }

/* FAQ from core Details blocks */
.article__content .wp-block-details {
    border-top: 1px solid var(--color-line);
    border-bottom: 1px solid var(--color-line);
}

.article__content .wp-block-details + .wp-block-details { margin-top: -1px; }

.article__content .wp-block-details summary {
    position: relative;
    padding: 20px 40px 20px 0;
    font-family: var(--font-heading);
    font-size: var(--fs-h4);
    font-weight: 500;
    line-height: 1.3;
    list-style: none;
    cursor: pointer;
    transition: color var(--transition);
}

.article__content .wp-block-details summary::-webkit-details-marker { display: none; }

.article__content .wp-block-details summary::after {
    content: "+";
    position: absolute;
    top: 16px;
    right: 4px;
    font-size: 28px;
    line-height: 1;
    color: var(--color-primary);
}

.article__content .wp-block-details[open] summary::after { content: "−"; }
.article__content .wp-block-details summary:hover { color: var(--color-primary); }
.article__content .wp-block-details > :not(summary) { margin: 0 0 20px; }

/* Short answer box at the top of an article */
.article__content .is-style-answer,
.article__content .answer {
    padding: 20px 24px;
    background: var(--color-primary-10);
    border-left: 4px solid var(--color-primary);
}

/* ── Table of contents ──────────────────────────────────────────────────── */
.toc {
    padding: 24px;
    border: 1px solid var(--color-line);
}

.toc__title {
    display: flex;
    align-items: center;
    justify-content: space-between;
    list-style: none;
    pointer-events: none;
    font-family: var(--font-heading);
    font-size: var(--fs-small);
    font-weight: 500;
    text-transform: uppercase;
    color: var(--color-text-muted);
}

.toc__title::-webkit-details-marker { display: none; }

.toc__list {
    margin-top: 16px;
    display: flex;
    flex-direction: column;
    gap: 12px;
    max-height: 50vh;
    overflow-y: auto;
    counter-reset: toc;
}

.toc__item {
    display: flex;
    gap: 10px;
    font-size: var(--fs-small);
    line-height: 1.4;
    counter-increment: toc;
}

.toc__item::before {
    content: counter(toc, decimal-leading-zero);
    flex: none;
    font-family: var(--font-heading);
    color: var(--color-primary);
}

.toc__link { transition: color var(--transition); }
.toc__link:hover,
.toc__link--active { color: var(--color-primary); }

/* ── Service promo ──────────────────────────────────────────────────────── */
.promo {
    display: flex;
    flex-direction: column;
    align-items: flex-start;
    gap: 12px;
    padding: 24px;
    background: var(--color-primary-10);
    border-left: 4px solid var(--color-primary);
}

.promo__label {
    font-family: var(--font-heading);
    font-size: var(--fs-caption);
    font-weight: 500;
    text-transform: uppercase;
    color: var(--color-primary);
}

.promo__price { font-size: 24px; }

.promo__text {
    font-size: var(--fs-small);
    color: var(--color-text-muted);
}

.promo__btn { width: 100%; margin-top: 4px; }

/* ── End-of-article call to action ──────────────────────────────────────── */
.article__cta {
    display: flex;
    flex-direction: column;
    align-items: flex-start;
    gap: 16px;
    padding: 40px;
    color: var(--color-bg);
    background: var(--color-primary);
}

.article__cta-text { max-width: 520px; opacity: 0.85; }

.article__cta-actions {
    display: flex;
    flex-wrap: wrap;
    gap: 16px;
    margin-top: 8px;
}

.article__cta-main {
    --btn-bg: var(--color-bg);
    --btn-text: var(--color-primary);
}

.article__cta-main:hover {
    --btn-bg: var(--color-primary-10);
    --btn-color: var(--color-bg);
    --btn-text: var(--color-primary);
}

/* ── Related ────────────────────────────────────────────────────────────── */
.more-posts {
    padding: var(--space-section-lg) 0;
}

.more-posts__wrp {
    display: flex;
    flex-direction: column;
    gap: 56px;
}

.more-posts__head {
    display: flex;
    padding-left: var(--content-indent);
    align-items: flex-end;
    justify-content: space-between;
    gap: 24px;
}

.more-posts .post-card__media { background: var(--color-bg); }

/* ═══ Tablet (< 1024px) ═════════════════════════════════════════════════ */
@media (max-width: 1023px) {
    .article__head { padding: 40px 0; }
    .article__title { font-size: 40px; }
    .article__lead { font-size: 18px; }

    .article__wrp { flex-direction: column; gap: 32px; }
    .article__body { max-width: none; margin-left: 0; }

    /* Contents go before the text, the promo after it */
    .article__aside { display: contents; }
    .toc { order: -1; width: 100%; padding: 0; }
    /* Collapsed by default here (single.js), so the text starts on the first screen */
    .toc__title { padding: 18px 20px; pointer-events: auto; cursor: pointer; }
    .toc__title::after {
        content: "";
        width: 10px;
        height: 10px;
        margin-top: -4px;
        border-right: 2px solid var(--color-primary);
        border-bottom: 2px solid var(--color-primary);
        transform: rotate(45deg);
        transition: transform var(--transition);
    }
    .toc[open] .toc__title::after { margin-top: 4px; transform: rotate(-135deg); }
    .toc__list { margin: 0; padding: 0 20px 20px; }
    .toc__list { max-height: none; }
    .promo { order: 1; width: 100%; }
    .promo__btn { width: auto; }

    .article__content { font-size: 17px; }
    .article__content h2 { margin-top: 44px; font-size: 28px; }

    .more-posts__wrp { gap: 40px; }
    .more-posts__head { padding-left: 0; }
}

/* ═══ Phone (< 768px) ═══════════════════════════════════════════════════ */
@media (max-width: 767px) {
    .article__head { gap: 16px; padding: 24px 0 32px; }
    .article__title { font-size: 30px; }
    .article__lead { font-size: var(--fs-body); }
    .article__meta { gap: 6px 14px; font-size: var(--fs-caption); }

    .article__wrp { gap: 24px; }
    .article__body { gap: 32px; }
    .article__content { font-size: var(--fs-body); line-height: 1.6; }
    .article__content h2 { margin-top: 36px; font-size: 24px; }
    .article__content h3 { font-size: 20px; }
    .article__content .wp-block-details summary { font-size: 18px; }
    .article__content table { font-size: var(--fs-small); }
    .article__content th,
    .article__content td { padding: 10px; }

    .promo { padding: 20px; }
    .promo__btn { width: 100%; }

    .article__cta { padding: 28px 20px; }
    .article__cta-actions { flex-direction: column; align-items: stretch; width: 100%; }

    .more-posts__wrp { gap: 28px; }
    .more-posts__head { flex-direction: column; align-items: flex-start; gap: 12px; }
}
