/* =====================================================
   article.css - shared styles for /rf-power-processing-unit/ cluster pages
   Loaded after styles.css. Uses the same design tokens.
   ===================================================== */

.article-wrap {
    max-width: 820px;
    margin-inline: auto;
    padding-inline: var(--inner-pad);
    padding-top: clamp(7rem, 12vw, 9rem);
    padding-bottom: clamp(4rem, 8vw, 6rem);
}

/* Breadcrumb */
.article-breadcrumb {
    font-family: var(--font-mono);
    font-size: 0.72rem;
    letter-spacing: 0.04em;
    text-transform: uppercase;
    color: var(--text-2);
    margin-bottom: 1.5rem;
    display: flex;
    flex-wrap: wrap;
    gap: 0.4rem;
}
.article-breadcrumb a { color: var(--text-2); border-bottom: 1px solid transparent; }
.article-breadcrumb a:hover { color: var(--primary); border-bottom-color: var(--primary); }
.article-breadcrumb span[aria-hidden] { color: var(--text-3); }

/* Header */
.article-eyebrow {
    font-family: var(--font-mono);
    font-size: 0.75rem;
    letter-spacing: 0.08em;
    text-transform: uppercase;
    color: var(--primary);
    margin-bottom: 1rem;
}
/* Content-page H1: readable system sans, not the caps display face.
   Deliberate two-tier system, Bebas/Anton condensed caps for the marketing
   hero + section headers, this for article and product-page headings. */
.article-h1 {
    font-family: var(--font-body);
    font-weight: 700;
    font-size: clamp(2rem, 4.5vw, 3rem);
    line-height: 1.12;
    letter-spacing: -0.02em;
    text-transform: none;
    color: var(--text-1);
    margin-bottom: 1rem;
}
.article-standfirst {
    font-size: clamp(1.05rem, 2.2vw, 1.25rem);
    line-height: 1.6;
    color: var(--text-2);
    max-width: 60ch;
    margin-bottom: 1.5rem;
}
.article-meta {
    font-family: var(--font-mono);
    font-size: 0.72rem;
    letter-spacing: 0.03em;
    color: var(--text-3);
    padding-bottom: 2rem;
    border-bottom: 1px solid var(--border);
    margin-bottom: 2.5rem;
}

/* Table of contents */
.article-toc {
    background: var(--surface);
    border: 1px solid var(--border);
    border-radius: 12px;
    padding: 1.25rem 1.5rem;
    margin-bottom: 3rem;
}
.article-toc p {
    font-family: var(--font-mono);
    font-size: 0.7rem;
    letter-spacing: 0.08em;
    text-transform: uppercase;
    color: var(--text-3);
    margin-bottom: 0.75rem;
}
.article-toc ol { margin: 0; padding-left: 1.1rem; }
.article-toc li { margin-bottom: 0.35rem; font-size: 0.95rem; }
.article-toc a { color: var(--text-2); border-bottom: 1px solid transparent; }
.article-toc a:hover { color: var(--primary); border-bottom-color: var(--primary); }

/* Prose */
.article-prose { font-size: 1.05rem; line-height: 1.72; color: var(--text-1); }
.article-prose > * + * { margin-top: 1.4rem; }
.article-prose h2 {
    font-family: var(--font-display);
    font-size: clamp(1.5rem, 3.5vw, 2rem);
    line-height: 1.15;
    letter-spacing: 0.01em;
    text-transform: none;
    color: var(--text-1);
    margin-top: 3.25rem;
    padding-top: 0.5rem;
}
.article-prose h3 {
    font-family: var(--font-body);
    font-weight: 650;
    font-size: 1.15rem;
    line-height: 1.3;
    letter-spacing: 0;
    text-transform: none;
    color: var(--text-1);
    margin-top: 2rem;
}
.article-prose p { max-width: none; }
.article-prose a {
    color: var(--primary);
    border-bottom: 1px solid var(--border);
}
.article-prose a:hover { border-bottom-color: var(--primary); }
.article-prose ul, .article-prose ol { padding-left: 1.4rem; }
.article-prose li { margin-top: 0.5rem; }
.article-prose strong { font-weight: 650; }

.article-prose table {
    width: 100%;
    border-collapse: collapse;
    font-size: 0.95rem;
    margin-block: 0.5rem;
}
.article-prose th, .article-prose td {
    text-align: left;
    padding: 0.6rem 0.75rem;
    border-bottom: 1px solid var(--border);
    vertical-align: top;
}
.article-prose th {
    font-family: var(--font-mono);
    font-size: 0.72rem;
    letter-spacing: 0.04em;
    text-transform: uppercase;
    color: var(--text-2);
}
.article-table-scroll { overflow-x: auto; }

/* Key-fact callout */
.article-callout {
    background: var(--primary-dim);
    border-left: 3px solid var(--primary);
    border-radius: 0 8px 8px 0;
    padding: 1.1rem 1.4rem;
    font-size: 1rem;
}
.article-callout p { margin: 0; }

/* Inline stat row */
.article-stats {
    display: flex;
    flex-wrap: wrap;
    gap: 1.5rem 2.5rem;
    padding: 1.5rem 0;
    border-block: 1px solid var(--border);
    margin-block: 0.5rem;
}
.article-stat { min-width: 8rem; }
.article-stat b {
    display: block;
    font-family: var(--font-display);
    font-size: clamp(1.6rem, 4vw, 2.2rem);
    color: var(--primary);
    line-height: 1;
    letter-spacing: 0.01em;
}
.article-stat span {
    font-family: var(--font-mono);
    font-size: 0.72rem;
    letter-spacing: 0.03em;
    text-transform: uppercase;
    color: var(--text-2);
}

/* Related / next-in-cluster */
.article-related {
    margin-top: 4rem;
    padding-top: 2rem;
    border-top: 1px solid var(--border);
}
.article-related p.article-related-label {
    font-family: var(--font-mono);
    font-size: 0.7rem;
    letter-spacing: 0.08em;
    text-transform: uppercase;
    color: var(--text-3);
    margin-bottom: 1rem;
}
.article-related ul { list-style: none; padding: 0; margin: 0; }
.article-related li { margin-bottom: 0.6rem; }
.article-related a {
    color: var(--text-1);
    font-weight: 600;
    border-bottom: 1px solid var(--border);
}
.article-related a:hover { color: var(--primary); border-bottom-color: var(--primary); }

/* CTA block */
.article-cta {
    margin-top: 3rem;
    background: var(--surface-dk);
    border-radius: 16px;
    padding: clamp(1.75rem, 4vw, 2.75rem);
    color: var(--text-inv);
}
.article-cta h2 {
    color: var(--text-inv);
    font-family: var(--font-display);
    font-size: clamp(1.4rem, 3.5vw, 1.9rem);
    text-transform: none;
    letter-spacing: 0.01em;
    margin: 0 0 0.6rem;
}
.article-cta p { color: var(--text-inv-2); max-width: 52ch; margin: 0 0 1.25rem; font-size: 0.98rem; }

/* FAQ */
.article-faq h3 {
    font-family: var(--font-body);
    font-weight: 650;
    font-size: 1.08rem;
    margin-top: 1.75rem;
}

/* =====================================================
   VISUAL PASS 2026-09-08 (Javi feedback: less text, more scannable)
   keypoints list, disclosure accordions, inline highlight
   ===================================================== */

/* Key-points block: the scan-and-you-have-it summary under the H1 */
.keypoints {
    list-style: none;
    margin: 1.75rem 0 2.5rem;
    padding: 1.4rem 1.6rem;
    background: var(--surface);
    border: 1px solid var(--border);
    border-left: 3px solid var(--primary);
    border-radius: 0 10px 10px 0;
    display: grid;
    gap: 0.7rem;
}
.keypoints li {
    margin: 0;
    padding-left: 1.4rem;
    position: relative;
    font-size: 1rem;
    line-height: 1.55;
    color: var(--text-1);
}
.keypoints li::before {
    content: "";
    position: absolute;
    left: 0;
    top: 0.55em;
    width: 7px;
    height: 7px;
    background: var(--primary);
    border-radius: 1px;
}
.keypoints li b, .keypoints li strong { font-weight: 650; }

/* Disclosure accordion: secondary detail, one click away. Native <details>. */
.disclose {
    border: 1px solid var(--border);
    border-radius: 10px;
    margin: 0.9rem 0;
    background: var(--surface);
    overflow: hidden;
}
.disclose + .disclose { margin-top: 0.6rem; }
.disclose > summary {
    list-style: none;
    cursor: pointer;
    padding: 0.9rem 1.2rem;
    font-family: var(--font-body);
    font-weight: 650;
    font-size: 1rem;
    color: var(--primary);
    display: flex;
    align-items: center;
    gap: 0.6rem;
    transition: background var(--dur-fast) ease;
}
.disclose > summary::-webkit-details-marker { display: none; }
.disclose > summary::before {
    content: "";
    flex-shrink: 0;
    width: 8px;
    height: 8px;
    border-right: 2px solid var(--primary);
    border-bottom: 2px solid var(--primary);
    transform: rotate(-45deg);
    transition: transform var(--dur-fast) var(--ease-spring);
}
.disclose[open] > summary::before { transform: rotate(45deg); }
.disclose > summary:hover { background: var(--primary-dim); }
.disclose-body {
    padding: 0.2rem 1.2rem 1.1rem;
    font-size: 1rem;
    line-height: 1.7;
    color: var(--text-1);
}
.disclose-body > *:first-child { margin-top: 0; }
.disclose-body > * + * { margin-top: 1rem; }
.disclose-body p { max-width: none; }
.disclose-body a { color: var(--primary); border-bottom: 1px solid var(--border); }

/* Inline highlight: the one load-bearing phrase in a passage. Use sparingly. */
.article-prose mark, .disclose-body mark, mark.hl {
    background: linear-gradient(transparent 55%, rgba(112,2,15,0.16) 55%);
    color: inherit;
    padding: 0 0.05em;
}

/* Slightly more air between article sections after the trim */
.article-prose h2 { margin-top: 3rem; }
.article-prose > .keypoints + h2 { margin-top: 1rem; }

@media (prefers-reduced-motion: reduce) {
    .disclose > summary::before { transition: none; }
}

/* Full-bleed application figure (breaks out of .article-wrap) */
.app-figure {
    width: 100vw;
    max-width: 100vw;
    position: relative;
    left: 50%;
    transform: translateX(-50vw);
    margin: 3rem 0;
    aspect-ratio: 21 / 9;
    background-color: #0a0305;
    background-position: center;
    background-size: cover;
    background-repeat: no-repeat;
    display: flex;
    align-items: flex-end;
    justify-content: flex-end;
    overflow: hidden;
}
.app-figure--windtunnel { background-image: url("/assets/product-windtunnel.jpg"); }
.app-figure--reentry   { background-image: url("/assets/product-reentry.jpg"); }
/* Match the page exactly (not #fff) so the figure box itself never shows as
   a lighter rectangle on the off-white page. Multiply then blends the white
   render backdrop straight into the page. */
.app-figure--light,
.app-figure--orbit {
    background-color: var(--bg);
    aspect-ratio: 16 / 9;
    margin-block: 0.5rem;
}
.app-figure--orbit::before {
    content: "";
    position: absolute;
    inset: 0;
    z-index: 0;
    background: url("/assets/orbital_diagram.webp") center top / cover no-repeat;
}
.app-figure video {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    object-fit: cover;
    z-index: 0;
}
/* White-ground orbit figures: drop the studio white (multiply) and feather the
   rectangular edge into the page, the seamless look the debris clip had in
   the hero. */
.app-figure--light video,
.app-figure--orbit::before { mix-blend-mode: multiply; }

/* Both white-ground figures get a long vertical fade top and bottom so the
   band has no horizontal edge and reads as part of the scroll, plus a radial
   to soften the sides. The two mask layers intersect. */
.app-figure--light video {
    -webkit-mask-image:
        linear-gradient(to bottom, transparent 0%, #000 26%, #000 74%, transparent 100%),
        radial-gradient(ellipse 96% 120% at 50% 50%, #000 40%, transparent 88%);
    -webkit-mask-composite: source-in;
    mask-image:
        linear-gradient(to bottom, transparent 0%, #000 26%, #000 74%, transparent 100%),
        radial-gradient(ellipse 96% 120% at 50% 50%, #000 40%, transparent 88%);
    mask-composite: intersect;
}
.app-figure--orbit::before {
    -webkit-mask-image:
        linear-gradient(to bottom, transparent 0%, #000 20%, #000 58%, transparent 96%),
        radial-gradient(ellipse 100% 150% at 50% 30%, #000 50%, transparent 90%);
    -webkit-mask-composite: source-in;
    mask-image:
        linear-gradient(to bottom, transparent 0%, #000 20%, #000 58%, transparent 96%),
        radial-gradient(ellipse 100% 150% at 50% 30%, #000 50%, transparent 90%);
    mask-composite: intersect;
}
.app-figure--light figcaption,
.app-figure--orbit figcaption { color: var(--text-3); }
.app-figure figcaption {
    position: relative;
    z-index: 1;
    font-family: var(--font-mono);
    font-size: 0.6rem;
    letter-spacing: 0.1em;
    text-transform: uppercase;
    color: rgba(255, 255, 255, 0.55);
    padding: 0.9rem clamp(1.25rem, 5vw, 3rem);
}
@media (max-width: 640px) {
    .app-figure { aspect-ratio: 4 / 3; }
}

/* build-card is styled for the dark-red homepage band. On a light article
   page (applications hub) it needs dark ink and a solid surface. */
.article-prose .build-card {
    background: var(--surface);
    backdrop-filter: none;
    -webkit-backdrop-filter: none;
    border: 1px solid var(--border);
    border-top: 3px solid var(--primary);
    box-shadow: 0 1px 3px rgba(0, 0, 0, 0.06);
}
.article-prose .build-card:hover {
    background: #fff;
    box-shadow: 0 12px 32px rgba(0, 0, 0, 0.1);
}
.article-prose .build-tag { color: var(--primary); }
.article-prose .build-card h3 { color: var(--text-1); }
.article-prose .build-card p { color: var(--text-2); }
.article-prose .build-more { color: var(--primary); }
