/**
 * Knowledge Hub — APT group profile.
 */

.hp-kb-hero__aka,
.hp-kb-hero__title,
.hp-kb-hero__lead {
    overflow-wrap: anywhere;
}

.hp-kb-hero__aka {
    margin-top: -8px;
    font-family: var(--hp-font-mono);
    font-size: var(--bd-small-size);
    color: var(--hp-on-dark-faint);
}

.hp-kb-hero__badges {
    display: flex;
    flex-wrap: wrap;
    gap: 8px;
    margin-top: 8px;
}

/* Key facts card */
.hp-kb-idcard {
    border: 1px solid rgb(255 255 255 / .1);
    border-radius: var(--hp-radius-card);
    background: rgb(7 13 42 / .7);
    overflow: hidden;
}

.hp-kb-idcard__mark {
    position: relative;
    display: grid;
    place-items: center;
    padding: 36px 24px;
    background:
        radial-gradient(closest-side, rgb(255 82 71 / .16), transparent),
        repeating-linear-gradient(0deg, rgb(255 255 255 / .035) 0 1px, transparent 1px 28px),
        repeating-linear-gradient(90deg, rgb(255 255 255 / .035) 0 1px, transparent 1px 28px);
    color: var(--hp-white);
}

.hp-kb-idcard__code {
    position: absolute;
    top: 16px;
    right: 16px;
    padding: 4px 10px;
    border: 1px solid rgb(255 255 255 / .2);
    border-radius: 4px;
    font-family: var(--hp-font-mono);
    font-size: 12px;
    font-weight: 600;
    letter-spacing: 0;
}

.hp-kb-idcard__facts {
    margin: 0;
}

.hp-kb-idcard__facts > div {
    display: grid;
    grid-template-columns: 120px minmax(0, 1fr);
    gap: 12px;
    padding: 14px 24px;
    border-top: 1px solid rgb(255 255 255 / .08);
}

.hp-kb-idcard__facts dt {
    font-family: var(--bd-font-mono);
    font-size: var(--bd-eyebrow-size);
    letter-spacing: var(--bd-eyebrow-track);
    line-height: 1.9;
    text-transform: uppercase;
    color: var(--hp-on-dark-faint);
    font-weight: var(--bd-eyebrow-weight);
}

.hp-kb-idcard__facts dd {
    margin: 0;
    font-size: var(--bd-body-size);
    font-weight: 600;
    color: var(--hp-white);
}

/* Body layout */
.hp-kb-body {
    padding-block: 80px 104px;
}

.hp-kb-body__grid {
    display: grid;
    grid-template-columns: 220px minmax(0, 1fr);
    gap: 72px;
    align-items: start;
}

.hp-kb-toc {
    position: sticky;
    top: calc(var(--bd4-top, 0px) + 104px);
}

.hp-kb-toc__title {
    margin-bottom: 14px;
    font-family: var(--bd-font-mono);
    font-size: var(--bd-eyebrow-size);
    letter-spacing: var(--bd-eyebrow-track);
    text-transform: uppercase;
    color: var(--hp-ink-soft);
    font-weight: var(--bd-eyebrow-weight);
}

.hp-kb-toc ol {
    display: flex;
    flex-direction: column;
    border-left: 1px solid var(--hp-line-strong);
}

.hp-kb-toc a {
    display: block;
    margin-left: -1px;
    padding: 7px 0 7px 16px;
    border-left: 2px solid transparent;
    font-size: var(--bd-body-size);
    color: var(--hp-ink-muted);
}

.hp-kb-toc a:hover {
    color: var(--hp-ink);
}

.hp-kb-toc a.is-current {
    border-left-color: var(--hp-coral);
    font-weight: 600;
    color: var(--hp-ink);
}

.hp-kb-content {
    display: flex;
    flex-direction: column;
    gap: 72px;
    min-width: 0;
    max-width: 880px;
}

.hp-kb-block {
    display: flex;
    flex-direction: column;
    gap: 20px;
    scroll-margin-top: 32px;
}

.hp-kb-block__title {
    font-family: var(--hp-font-display);
    font-size: var(--bd-h3-size);
    font-weight: var(--bd-heading-weight);
    line-height: var(--bd-h3-lh);
    letter-spacing: var(--bd-h3-track);
}

.hp-kb-block__lead {
    margin-top: -10px;
    font-size: var(--bd-body-size);
    color: var(--hp-ink-muted);
}

.hp-kb-prose {
    display: flex;
    flex-direction: column;
    gap: 18px;
    max-width: var(--bd-article-measure);
    font-size: var(--bd-article-size);
    line-height: var(--bd-article-lh);
    color: #26304a;
}

.hp-kb-prose p:first-child {
    font-size: var(--bd-lead-size);
    line-height: var(--bd-lead-lh);
    color: var(--hp-ink);
}

/* Sub-headings inside a text block read as headings, a step below the block title */
.hp-kb-prose h3 {
    margin-top: 10px;
    font-family: var(--bd-font-display);
    font-size: clamp(19px, 17.5px + 0.35vw, 22px);
    font-weight: 600;
    line-height: 1.3;
    color: var(--hp-ink);
}

.hp-kb-note {
    padding: 22px 24px;
    border-left: 3px solid var(--hp-coral);
    border-radius: 0 var(--hp-radius-md) var(--hp-radius-md) 0;
    background: var(--hp-white);
    font-size: var(--bd-body-size);
    line-height: 1.6;
    color: var(--hp-ink-muted);
}

.hp-kb-note__label {
    margin-bottom: 6px;
    font-family: var(--bd-font-mono);
    font-size: var(--bd-eyebrow-size);
    letter-spacing: var(--bd-eyebrow-track);
    text-transform: uppercase;
    color: var(--hp-ink);
    font-weight: var(--bd-eyebrow-weight);
}

/* Aliases */
.hp-kb-aliases {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 12px;
}

.hp-kb-alias {
    display: flex;
    flex-direction: column;
    gap: 2px;
    padding: 16px 18px;
    border: 1px solid var(--hp-line);
    border-radius: var(--hp-radius-md);
    background: var(--hp-white);
}

.hp-kb-alias__name {
    font-family: var(--hp-font-display);
    font-size: var(--bd-card-dense-size);
    font-weight: var(--bd-heading-weight);
    line-height: var(--bd-card-lh);
}

.hp-kb-alias__vendor {
    font-size: var(--bd-small-size);
    color: var(--hp-ink-soft);
}

/* Targets */
.hp-kb-targets {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 16px;
}

.hp-kb-targets__col {
    padding: 24px;
}

.hp-kb-targets__label {
    margin-bottom: 14px;
    font-family: var(--bd-font-mono);
    font-size: var(--bd-eyebrow-size);
    font-weight: var(--bd-eyebrow-weight);
    letter-spacing: var(--bd-eyebrow-track);
    text-transform: uppercase;
    color: var(--hp-ink-soft);
}

.hp-kb-targets__list {
    display: flex;
    flex-wrap: wrap;
    gap: 8px;
}

.hp-kb-targets__list li {
    padding: 7px 14px;
    border-radius: 8px;
    background: var(--hp-paper);
    font-size: var(--bd-body-size);
    font-weight: 600;
}

/* Attack chain */
.hp-kb-chain {
    padding: 12px 32px;
    border-radius: var(--hp-radius-card);
    background: radial-gradient(70% 40% at 100% 0%, var(--hp-navy-600) 0%, rgb(19 28 74 / 0) 70%), var(--hp-navy-900);
    color: var(--hp-on-dark);
}

.hp-kb-chain__step {
    position: relative;
    display: grid;
    grid-template-columns: 44px minmax(0, 1fr);
    gap: 20px;
    padding-block: 22px;
}

.hp-kb-chain__step + .hp-kb-chain__step {
    border-top: 1px solid rgb(255 255 255 / .08);
}

/* Line joining one step to the next */
.hp-kb-chain__step:not(:last-child)::after {
    content: '';
    position: absolute;
    top: 66px;
    bottom: -22px;
    left: 21.5px;
    width: 1px;
    background: linear-gradient(var(--hp-coral), rgb(255 82 71 / 0));
}

.hp-kb-chain__num {
    display: grid;
    place-items: center;
    width: 44px;
    height: 44px;
    border: 1px solid rgb(255 82 71 / .6);
    border-radius: 50%;
    background: var(--hp-navy-900);
    font-family: var(--hp-font-mono);
    font-size: var(--bd-small-size);
    font-weight: 600;
    color: var(--hp-coral);
}

.hp-kb-chain__tactic {
    font-family: var(--bd-font-mono);
    font-size: var(--bd-eyebrow-size);
    letter-spacing: var(--bd-eyebrow-track);
    text-transform: uppercase;
    color: var(--hp-on-dark-faint);
    font-weight: var(--bd-eyebrow-weight);
}

.hp-kb-chain__technique {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 10px;
    margin-block: 4px 6px;
    font-family: var(--hp-font-display);
    font-size: var(--bd-card-dense-size);
    font-weight: var(--bd-heading-weight);
    line-height: var(--bd-card-lh);
}

.hp-kb-chain__id {
    padding: 2px 8px;
    border: 1px solid rgb(255 255 255 / .2);
    border-radius: 4px;
    font-family: var(--hp-font-mono);
    font-size: var(--bd-small-size);
    font-weight: 400;
    color: var(--hp-on-dark-muted);
}

.hp-kb-chain__id:hover {
    border-color: var(--hp-coral);
    color: var(--hp-white);
}

.hp-kb-chain__text {
    max-width: 64ch;
    font-size: var(--bd-body-size);
    line-height: 1.6;
    color: var(--hp-on-dark-muted);
}

/* Tools */
.hp-kb-tools {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 16px;
}

.hp-kb-tool {
    display: flex;
    flex-direction: column;
    gap: 6px;
    padding: 24px;
}

.hp-kb-body .hp-kb-tool {
    border-radius: var(--hp-radius-md);
}

.hp-kb-tool__type {
    font-family: var(--bd-font-mono);
    font-size: var(--bd-eyebrow-size);
    letter-spacing: var(--bd-eyebrow-track);
    text-transform: uppercase;
    color: var(--hp-coral);
    font-weight: var(--bd-eyebrow-weight);
}

.hp-kb-tool__name {
    font-family: var(--hp-font-display);
    font-size: var(--bd-card-dense-size);
    font-weight: var(--bd-heading-weight);
    line-height: var(--bd-card-lh);
}

.hp-kb-tool__text {
    font-size: var(--bd-body-size);
    line-height: 1.6;
    color: var(--hp-ink-muted);
}

/* Timeline */
.hp-kb-timeline__item {
    position: relative;
    display: grid;
    grid-template-columns: 124px minmax(0, 1fr);
    gap: 40px;
    padding-bottom: 28px;
}

.hp-kb-timeline__item::before {
    content: '';
    position: absolute;
    top: 9px;
    left: 138px;
    width: 11px;
    height: 11px;
    border: 2px solid var(--hp-coral);
    border-radius: 50%;
    background: var(--hp-paper);
}

.hp-kb-timeline__item:not(:last-child)::after {
    content: '';
    position: absolute;
    top: 26px;
    bottom: -4px;
    left: 143px;
    width: 1px;
    background: var(--hp-line-strong);
}

.hp-kb-timeline__year {
    font-family: var(--hp-font-display);
    font-size: var(--bd-card-size);
    font-weight: var(--bd-heading-weight);
    font-variant-numeric: tabular-nums;
    line-height: var(--bd-card-lh);
    text-align: right;
    letter-spacing: var(--bd-card-track);
}

.hp-kb-timeline__body {
    display: flex;
    flex-direction: column;
    gap: 4px;
    font-size: var(--bd-body-size);
    line-height: 1.6;
    color: var(--hp-ink-muted);
}

.hp-kb-timeline__title {
    font-size: var(--bd-card-dense-size);
    font-weight: var(--bd-heading-weight);
    line-height: var(--bd-card-lh);
    color: var(--hp-ink);
}

/* Defenses */
.hp-kb-defenses {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 12px;
}

.hp-kb-defense {
    display: grid;
    grid-template-columns: 22px minmax(0, 1fr);
    gap: 14px;
    padding: 22px;
    border: 1px solid var(--hp-line);
    border-radius: var(--hp-radius-md);
    background: var(--hp-white);
    font-size: var(--bd-body-size);
    line-height: 1.6;
    color: var(--hp-ink-muted);
}

.hp-kb-defense svg {
    margin-top: 2px;
    color: var(--hp-green-800);
}

.hp-kb-defense__title {
    margin-bottom: 4px;
    font-size: var(--bd-body-size);
    font-weight: var(--bd-heading-weight);
    line-height: 1.35;
    color: var(--hp-ink);
}

/* Sources */
.hp-kb-sources {
    display: flex;
    flex-direction: column;
    counter-reset: source;
}

.hp-kb-sources li {
    display: grid;
    grid-template-columns: 32px minmax(0, 1fr);
    padding-block: 14px;
    border-top: 1px solid var(--hp-line);
    font-size: var(--bd-body-size);
    counter-increment: source;
}

.hp-kb-sources li::before {
    content: counter(source);
    grid-row: span 2;
    font-family: var(--hp-font-mono);
    font-size: var(--bd-small-size);
    line-height: 1.9;
    color: var(--hp-ink-soft);
}

.hp-kb-sources a,
.hp-kb-sources__title {
    font-weight: 600;
    color: var(--hp-ink);
}

.hp-kb-sources a {
    text-decoration: underline;
    text-decoration-color: var(--hp-line-strong);
    text-underline-offset: 4px;
}

.hp-kb-sources a:hover {
    text-decoration-color: var(--hp-coral);
}

.hp-kb-sources__by {
    grid-column: 2;
    font-size: var(--bd-small-size);
    color: var(--hp-ink-soft);
}

/* Call to action and related groups */
.hp-kb-cta {
    padding-block: 80px;
    background: radial-gradient(50% 120% at 100% 50%, var(--hp-navy-600) 0%, rgb(19 28 74 / 0) 70%), var(--hp-navy-900);
}

.hp-kb-cta__inner {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    justify-content: space-between;
    gap: 32px;
}

.hp-kb-cta__inner > div {
    display: flex;
    flex-direction: column;
    gap: 14px;
    max-width: 760px;
}

.hp-kb-related {
    padding-block: 88px;
}

@media (max-width: 1100px) {
    .hp-kb-body {
        padding-block: 56px 72px;
    }

    .hp-kb-body__grid {
        grid-template-columns: minmax(0, 1fr);
        gap: 40px;
    }

    .hp-kb-toc {
        position: static;
    }

    .hp-kb-toc ol {
        flex-direction: row;
        flex-wrap: wrap;
        gap: 8px;
        border-left: 0;
    }

    .hp-kb-toc a,
    .hp-kb-toc a.is-current {
        margin: 0;
        padding: 7px 14px;
        border: 1px solid var(--hp-line-strong);
        border-radius: 8px;
        background: var(--hp-white);
        font-size: var(--bd-small-size);
        font-weight: 600;
    }

    .hp-kb-content {
        gap: 56px;
    }
}

@media (max-width: 720px) {
    .hp-kb-aliases,
    .hp-kb-defenses,
    .hp-kb-tools,
    .hp-kb-targets {
        grid-template-columns: minmax(0, 1fr);
    }

    .hp-kb-aliases {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }

    .hp-kb-idcard__facts > div {
        grid-template-columns: 104px minmax(0, 1fr);
        padding-inline: 18px;
    }

    .hp-kb-chain {
        padding: 8px 18px;
    }

    .hp-kb-chain__step {
        grid-template-columns: 36px minmax(0, 1fr);
        gap: 14px;
    }

    .hp-kb-chain__num {
        width: 36px;
        height: 36px;
        font-size: var(--bd-small-size);
    }

    .hp-kb-chain__step:not(:last-child)::after {
        top: 58px;
        left: 17.5px;
    }

    .hp-kb-timeline__item {
        grid-template-columns: minmax(0, 1fr);
        gap: 2px;
        padding-left: 28px;
    }

    .hp-kb-timeline__item::before {
        left: 0;
    }

    .hp-kb-timeline__item:not(:last-child)::after {
        left: 5px;
    }

    .hp-kb-timeline__year {
        font-size: var(--bd-card-size);
        text-align: left;
        color: var(--hp-coral);
        line-height: var(--bd-card-lh);
        letter-spacing: var(--bd-card-track);
        font-weight: var(--bd-heading-weight);
    }

    .hp-kb-cta,
    .hp-kb-related {
        padding-block: 56px;
    }
}

/* Small print under a block (for example the "not legal advice" line) */
.hp-kb-smallprint {
    margin-top: 4px;
    font-size: var(--bd-small-size, 14px);
    line-height: 1.5;
    color: var(--hp-ink-muted);
}

/* Article blocks inside Knowledge Hub pages (inc/bd-article-blocks.php): the wrapper keeps them in the text column. */
.hp-kb-prose .bd-kb-blockwrap,
.hp-kb-block .bd-kb-blockwrap {
    margin: 8px 0;
}
.hp-role-blocks .hp-kb-block {
    max-width: 780px;
    margin-inline: auto;
}
