.article-page {
    display: grid;
    grid-template-columns: 285px minmax(0, 1fr);
    gap: 28px 40px;
    align-items: start;
    margin-top: 32px;
    margin-bottom: 64px;
}
.article-page .article-heading { grid-column: 2; max-width: 850px; }
.article-eyebrow {
    display: inline-block;
    color: #bf2027;
    font-size: .75rem;
    font-weight: 700;
    letter-spacing: .12em;
    line-height: 1.5;
}
.article-page h1 {
    margin: 12px 0 20px;
    color: #202020;
    font-size: clamp(1.875rem, 3.2vw, 2.875rem);
    font-weight: 750;
    line-height: 1.17;
    letter-spacing: -.025em;
    overflow-wrap: break-word;
    text-wrap: balance;
}
.article-meta { display: flex; flex-wrap: wrap; gap: 8px 12px; align-items: center; }
.article-meta span, .article-meta time { color: #6b6b6b; font-size: .875rem; line-height: 1.5; }
.article-page .article-toc {
    position: sticky;
    top: 112px;
    grid-column: 1;
    grid-row: 2;
    padding: 22px;
    border: 1px solid #e5e5e5;
    border-radius: 10px;
    background: #fff;
    max-height: calc(100dvh - 140px);
    overflow-y: auto;
    scrollbar-width: thin;
}
.article-toc summary { cursor: pointer; font-size: .9375rem; font-weight: 700; line-height: 1.5; }
.article-toc summary::marker { color: #d62129; }
.article-toc ol { margin: 16px 0 0; padding-left: 22px; }
.article-toc li { padding: 9px 0 9px 4px; border-bottom: 1px solid #eee; color: #d62129; }
.article-toc li::marker { font-size: .75rem; font-weight: 600; }
.article-toc li a { display: block; color: #505050; font-size: .875rem; line-height: 1.5; overflow-wrap: anywhere; }
.article-toc li a:hover { color: #b31d24; }
.article-back { display: block; margin-top: 20px; color: #b31d24; font-size: .875rem; font-weight: 600; }
.article-reading { grid-column: 2; min-width: 0; max-width: 850px; }
.article-page .article-cover { margin: 0 0 32px; overflow: hidden; border-radius: 12px; background: #f6f6f6; }
.article-cover img { display: block; width: 100%; height: auto; }
.article-page .article-prose {
    color: #414141;
    font-size: 1.0625rem;
    line-height: 1.8;
    overflow-wrap: break-word;
}
.article-prose :where(p, li, span, div) { color: inherit; }
.article-prose > * { margin: 0 0 20px; }
.article-prose > :first-child { margin-top: 0; }
.article-prose > :last-child { margin-bottom: 0; }
.article-prose p { line-height: 1.8; }
.article-prose h2, .article-prose h3, .article-prose h4 {
    color: #222;
    font-weight: 700;
    line-height: 1.35;
    letter-spacing: -.015em;
    scroll-margin-top: 120px;
}
.article-prose h2 { margin: 36px 0 16px; font-size: 1.625rem; }
.article-prose h3 { margin: 28px 0 12px; font-size: 1.25rem; }
.article-prose h4 { margin: 24px 0 12px; font-size: 1.125rem; }
.article-prose [id] { scroll-margin-top: 120px; }
.article-prose strong, .article-prose b { color: #292929; font-weight: 650; }
.article-prose a { color: #b31d24; text-decoration: underline; text-underline-offset: 3px; }
.article-prose a * { color: inherit; }
.article-prose ul, .article-prose ol { padding-left: 26px; margin-bottom: 24px; }
.article-prose ul { list-style: disc; }
.article-prose ol { list-style: decimal; }
.article-prose li { margin-bottom: 8px; padding-left: 4px; line-height: 1.75; }
.article-prose li::marker { color: #b31d24; }
.article-prose li ul, .article-prose li ol { margin: 10px 0; }
.article-prose blockquote { padding: 18px 24px; border-left: 3px solid #d62129; background: #faf6f6; border-radius: 0 8px 8px 0; }
.article-prose blockquote p + p { margin-top: 12px; }
.article-prose img, .article-prose video { max-width: 100%; height: auto; border-radius: 8px; }
.article-prose iframe { max-width: 100%; }
.article-prose figure { max-width: 100%; margin: 24px 0; }
.article-prose figcaption { margin-top: 8px; color: #666; font-size: .875rem; line-height: 1.5; }
.article-prose table { display: block; width: 100%; max-width: 100%; overflow-x: auto; border-collapse: collapse; margin: 24px 0; font-size: .9375rem; }
.article-prose td, .article-prose th { padding: 12px 16px; min-width: 110px; border: 1px solid #ddd; vertical-align: top; text-align: left; line-height: 1.6; }
.article-prose th { background: #f4f4f4; color: #292929; font-weight: 650; }
.article-prose pre { overflow-x: auto; padding: 18px; background: #f5f5f5; border-radius: 8px; }
.article-prose hr { margin: 32px 0; border: 0; border-top: 1px solid #e5e5e5; }
.article-end { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 16px; margin-top: 40px; padding-top: 24px; border-top: 1px solid #e5e5e5; }
.article-end p { color: #666; font-size: .9375rem; line-height: 1.6; }
.article-end a, .article-end a span { color: #b31d24; font-size: .9375rem; font-weight: 600; }
.article-without-toc { grid-template-columns: minmax(0, 850px); justify-content: center; }
.article-without-toc .article-heading, .article-without-toc .article-reading { grid-column: 1; }
.article-page a:focus-visible, .article-page summary:focus-visible { outline: 2px solid #e92227; outline-offset: 4px; }
.article-unavailable { padding: 64px 0; max-width: 740px; }
.article-unavailable h1 { margin: 12px 0 16px; font-size: clamp(1.75rem, 4vw, 2.5rem); line-height: 1.2; }
.article-unavailable p { color: #555; line-height: 1.7; }
.article-unavailable > div { display: flex; flex-wrap: wrap; gap: 12px; margin-top: 24px; }
.article-unavailable a { padding: 12px 18px; border: 1px solid #ddd; border-radius: 6px; font-size: .9375rem; }
.article-unavailable a:first-child { color: #fff; background: #d62129; border-color: #d62129; }
@media (max-width: 900px) {
    .article-page { grid-template-columns: minmax(0, 1fr); gap: 24px; }
    .article-page .article-heading, .article-page .article-reading { grid-column: 1; max-width: none; }
    .article-page .article-toc { grid-column: 1; grid-row: auto; position: static; max-height: none; }
    .article-toc .article-back { display: none; }
}
@media (max-width: 600px) {
    .article-page { margin-top: 24px; margin-bottom: 40px; gap: 20px; }
    .article-page h1 { font-size: 1.875rem; line-height: 1.2; margin-bottom: 16px; }
    .article-page .article-toc { padding: 18px; }
    .article-page .article-prose { font-size: 1rem; line-height: 1.75; }
    .article-prose p { line-height: 1.75; }
    .article-prose h2 { font-size: 1.375rem; margin-top: 28px; }
    .article-prose h3 { font-size: 1.1875rem; }
    .article-page .article-cover { margin-bottom: 24px; border-radius: 8px; }
    .article-end { margin-top: 32px; }
}
