/* Apostrophe reading experience: editorial surface, native controls, no motion on text. */
body.article-page { background: #fdfdfc; color: #191919; }
body.article-page .article-experience { padding: 132px 0 88px; background: #fdfdfc; timeline-scope: --article-reading; }
body.article-page .article-experience > .container { width: calc(100% - 88px); max-width: 1200px; margin-inline: auto; padding: 0; }
body.article-page .article-experience .blog-article { width: 100%; max-width: none; margin: 0; }
.article-experience *, .article-experience *::before, .article-experience *::after { box-sizing: border-box; }
.article-header { max-width: 1040px; margin: 0 0 36px; }
.article-breadcrumb { display: flex; flex-wrap: wrap; align-items: center; gap: 12px; margin: 0 0 26px; color: #656565; font-size: 13px; line-height: 1.5; }
.article-breadcrumb a { color: #202020; text-decoration: underline; text-decoration-color: #aaa; text-underline-offset: 4px; }
body.article-page .article-experience .blog-article__title { max-width: 24ch; margin: 0; color: #151515; font-size: clamp(34px,4.4vw,64px); line-height: 1.1; font-weight: 500; letter-spacing: -.04em; text-wrap: balance; overflow-wrap: anywhere; }
.article-deck { max-width: 68ch; margin: 24px 0 0; color: #555; font-size: 19px; line-height: 1.65; }
.article-meta { display: flex; flex-wrap: wrap; gap: 10px 24px; margin: 26px 0 0; color: #656565; font-size: 13px; line-height: 1.5; }
body.article-page .article-experience .blog-article__cover { width: 100%; aspect-ratio: 2.25; margin: 0 0 24px; border: 0; border-radius: 12px; background: #e9e5df; overflow: hidden; }
body.article-page .article-experience .blog-article__cover img { display: block; width: 100%; height: 100%; object-fit: cover; object-position: center; }
.article-toolbar { display: flex; justify-content: space-between; align-items: center; flex-wrap: wrap; gap: 16px 28px; margin: 0 0 56px; padding: 0 0 24px; border-bottom: 1px solid #dededb; font-size: 13px; line-height: 1.4; }
.article-font-tools, .article-share-tools { display: flex; align-items: center; gap: 8px; }
.article-font-tools > span { margin-right: 8px; color: #626262; }
.article-font-tools output { min-width: 24px; text-align: center; font-variant-numeric: tabular-nums; }
.article-toolbar button, .article-text-button { min-height: 40px; padding: 9px 14px; border: 1px solid #d2d2cf; border-radius: 6px; color: #222; background: transparent; font: inherit; line-height: 1.4; cursor: pointer; transition: background-color 150ms ease, border-color 150ms ease; }
.article-font-tools button { min-width: 42px; padding-inline: 9px; }
.article-share-tools button { border-color: transparent; text-decoration: underline; text-decoration-color: #aaa; text-underline-offset: 4px; }
.article-toolbar button:disabled, .article-text-button:disabled { opacity: .4; cursor: default; }
.article-reading-grid { display: grid; grid-template-columns: 248px minmax(0, 1fr); gap: clamp(40px,6vw,88px); align-items: start; }
.article-reading { min-width: 0; width: 100%; max-width: 760px; view-timeline-name: --article-reading; view-timeline-axis: block; }
.article-toc { position: sticky; top: 112px; min-width: 0; max-height: calc(100svh - 140px); overflow: auto; scrollbar-width: thin; scrollbar-color: #b5b5b0 transparent; }
.article-toc > summary { display: none; }
.article-toc:not([open]) > nav { display: block; }
.article-toc-title { margin: 0 0 16px; color: #252525; font-size: 14px; font-weight: 500; }
.article-toc ol { margin: 0; padding: 0; list-style: none; }
.article-toc li { margin: 0; padding: 0; }
.article-toc li a { position: relative; display: block; padding: 10px 12px 10px 16px; border-radius: 4px; color: #626262; font-size: 13px; line-height: 1.55; text-decoration: none; }
.article-toc li a[aria-current="location"] { color: #1c1c1c; background: #f0f0ed; }
.article-toc li a[aria-current="location"]::before { content: ''; position: absolute; left: 4px; top: 18px; width: 4px; height: 4px; background: #df3028; }
.article-toc-top { display: inline-block; margin-top: 24px; padding: 8px 0; color: #444; font-size: 12px; text-decoration: underline; text-underline-offset: 4px; }
.article-summary { margin: 0 0 42px; padding: 28px 30px; background: #f1f1ee; }
.article-summary h2 { margin: 0 0 18px; color: #1b1b1b; font-size: 23px; font-weight: 500; line-height: 1.25; letter-spacing: -.025em; }
.article-summary ul { margin: 0; padding: 0 0 0 18px; list-style: disc; }
.article-summary li { margin: 0 0 12px; padding-left: 4px; color: #3c3c3c; font-size: 16px; line-height: 1.65; }
.article-summary li:last-child { margin-bottom: 0; }
body.article-page .article-experience .blog-article__content { color: #292929; font-size: var(--article-font-size,18px); line-height: 1.85; overflow-wrap: anywhere; }
body.article-page .article-experience .blog-article__content p { margin: 0 0 22px; }
body.article-page .article-experience .blog-article__content .article-lead { color: #242424; font-size: 1.1em; line-height: 1.75; }
body.article-page .article-experience .blog-article__content h2 { position: relative; margin: 48px 0 20px; padding-right: 28px; color: #161616; font-size: clamp(26px,2.25vw,34px); font-weight: 500; line-height: 1.25; letter-spacing: -.025em; text-wrap: pretty; scroll-margin-top: 116px; }
body.article-page .article-experience .blog-article__content h3 { margin: 32px 0 16px; font-size: 24px; line-height: 1.3; font-weight: 500; }
body.article-page .article-experience .blog-article__content a { color: #222; text-decoration: underline; text-decoration-color: #a7a7a1; text-decoration-thickness: 1px; text-underline-offset: 4px; border: 0; }
body.article-page .article-experience .blog-article__content .article-heading-link { position: absolute; right: 0; top: 0; display: inline-flex; align-items: center; justify-content: center; width: 28px; min-height: 38px; border: 0; color: #777; font-size: 19px; font-weight: 400; line-height: 1.4; text-decoration: none; opacity: 0; }
.article-checklist { margin: 52px 0 0; padding: 30px 0; border-top: 1px solid #d3d3ce; border-bottom: 1px solid #d3d3ce; }
.article-block-head { display: flex; justify-content: space-between; align-items: baseline; flex-wrap: wrap; gap: 12px; }
.article-block-head h2, .article-sources h2, .article-rating h2 { margin: 0; color: #202020; font-size: 25px; font-weight: 500; line-height: 1.3; letter-spacing: -.025em; }
.article-block-head output { color: #666; font-size: 13px; font-variant-numeric: tabular-nums; }
.article-block-intro { max-width: 55ch; margin: 12px 0 20px; color: #626262; font-size: 14px; line-height: 1.7; }
.article-checklist fieldset { min-width: 0; margin: 0 0 20px; padding: 0; border: 0; }
.article-check { display: grid; grid-template-columns: 20px minmax(0,1fr); gap: 14px; align-items: start; padding: 14px 0; cursor: pointer; }
.article-check input { width: 19px; height: 19px; margin: 4px 0 0; accent-color: #202020; cursor: pointer; }
.article-check span { color: #303030; font-size: 16px; line-height: 1.7; }
.article-check input:checked + span { color: #71716c; text-decoration: line-through; text-decoration-color: #b6b6af; }
.article-checklist .article-text-button { font-size: 13px; }
.article-sources { margin: 40px 0; }
.article-sources h2 { font-size: 21px; }
.article-sources ul { margin: 18px 0 0; padding: 0; list-style: none; }
.article-sources li { margin: 12px 0; }
.article-sources a { color: #333; font-size: 14px; line-height: 1.6; text-decoration: underline; text-underline-offset: 4px; }
.article-sources a span { display: block; margin-top: 3px; color: #71716c; font-size: 12px; text-decoration: none; }
.article-rating { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 18px; margin: 36px 0; padding-top: 26px; border-top: 1px solid #deded8; }
.article-rating h2 { font-size: 20px; }
.article-rating .kk-star-ratings { margin: 0; }
.article-help { margin-top: 40px; padding: 32px; color: #eee; background: #151515; }
.article-help h2 { margin: 0; color: #f4f4f4; font-size: 27px; line-height: 1.25; font-weight: 500; letter-spacing: -.03em; }
.article-help p { max-width: 48ch; margin: 16px 0 24px; color: #bbb; font-size: 16px; line-height: 1.7; }
.article-help a { display: inline-block; min-height: 46px; padding: 13px 18px; color: #151515; background: #f2f2ee; border: 1px solid #f2f2ee; font-size: 13px; line-height: 1.5; text-decoration: none; }
.article-related { margin-top: 80px; padding-top: 32px; border-top: 1px solid #d7d7d1; }
.article-related-head { display: flex; justify-content: space-between; align-items: baseline; flex-wrap: wrap; gap: 18px; margin-bottom: 28px; }
.article-related-head h2 { margin: 0; color: #171717; font-size: 32px; line-height: 1.2; font-weight: 500; letter-spacing: -.03em; }
.article-related-head > a { color: #484848; font-size: 13px; text-decoration: underline; text-underline-offset: 4px; }
.article-related-grid { display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); gap: 32px; }
.article-related-card { display: block; min-width: 0; color: #222; text-decoration: none; }
.article-related-card img { width: 100%; height: auto; aspect-ratio: 1.8; object-fit: cover; border-radius: 8px; }
.article-related-card h3 { margin: 20px 0 10px; color: #202020; font-size: 24px; font-weight: 500; line-height: 1.3; letter-spacing: -.025em; }
.article-related-card p { margin: 0; max-width: 54ch; color: #626262; font-size: 15px; line-height: 1.7; }
.article-sr-only { position: absolute !important; width: 1px; height: 1px; padding: 0; margin: -1px; border: 0; clip-path: inset(50%); overflow: hidden; white-space: nowrap; }
.article-experience :where(a,button,input,summary):focus-visible { outline: 2px solid #262626; outline-offset: 4px; }
.article-help a:focus-visible { outline-color: #f0f0eb; }
.article-experience ::selection { color: #171717; background: #ffd3ce; }
#article-top { scroll-margin-top: 116px; }

/* Existing site header is z-index 999. This non-interactive 3px line sits just above it. */
.article-reading-progress { display: none; position: fixed; inset: 0 0 auto; height: 3px; background: transparent; z-index: 1000; pointer-events: none; }
.article-reading-progress span { display: block; width: 100%; height: 100%; background: #d62b24; transform-origin: left center; transform: scaleX(0); }
@supports (animation-timeline: view()) {
  .article-reading-progress { display: block; }
  .article-reading-progress span { animation: article-reading-progress linear both; animation-timeline: --article-reading; animation-range: contain 0% contain 100%; }
}
@keyframes article-reading-progress { from { transform: scaleX(0); } to { transform: scaleX(1); } }

@media (hover: hover) and (pointer: fine) {
  .article-toolbar button:not(:disabled):hover, .article-text-button:not(:disabled):hover { border-color: #aaa; background: #eeeee9; }
  .article-toc li a:hover { color: #191919; background: #f2f2ee; }
  body.article-page .blog-article__content h2:hover .article-heading-link { opacity: 1; }
  .article-related-card:hover h3 { text-decoration: underline; text-underline-offset: 5px; text-decoration-thickness: 1px; }
}
body.article-page .article-experience .blog-article__content .article-heading-link:focus-visible { opacity: 1; }

@media (max-width: 980px) {
  .article-reading-grid { grid-template-columns: minmax(0,1fr); gap: 30px; }
  .article-reading { max-width: 760px; justify-self: center; }
  .article-toc { position: static; max-height: none; border: 1px solid #d8d8d2; border-radius: 6px; }
  .article-toc > summary { display: list-item; padding: 18px 20px; color: #252525; font-size: 15px; cursor: pointer; }
  .article-toc:not([open]) > nav { display: none; }
  .article-toc nav { padding: 0 10px 20px; }
  .article-toc-title { display: none; }
  .article-toc-top { margin-left: 16px; margin-top: 14px; }
  .article-toc li a { min-height: 42px; font-size: 14px; }
  .article-toolbar { margin-bottom: 28px; }
  .article-related { margin-top: 60px; }
}
@media (max-width: 600px) {
  body.article-page .article-experience { padding-top: 108px; padding-bottom: 56px; }
  body.article-page .article-experience > .container { width: calc(100% - 40px); }
  .article-breadcrumb { gap: 8px; margin-bottom: 22px; font-size: 12px; }
  body.article-page .article-experience .blog-article__title { font-size: clamp(30px,8.1vw,42px); line-height: 1.15; letter-spacing: -.035em; text-wrap: pretty; }
  .article-deck { margin-top: 20px; font-size: 16px; line-height: 1.75; }
  .article-meta { margin-top: 22px; gap: 8px 16px; font-size: 12px; }
  .article-header { margin-bottom: 28px; }
  body.article-page .article-experience .blog-article__cover { aspect-ratio: 1.5; margin-bottom: 20px; border-radius: 8px; }
  .article-toolbar { gap: 12px; padding-bottom: 18px; }
  .article-share-tools { gap: 12px; flex-wrap: wrap; }
  .article-share-tools button { padding-inline: 0; font-size: 12px; }
  .article-summary { margin-bottom: 30px; padding: 24px 20px; }
  .article-summary h2 { font-size: 22px; }
  .article-summary li { font-size: 15px; }
  body.article-page .article-experience .blog-article__content h2 { margin-top: 38px; font-size: 26px; scroll-margin-top: 92px; }
  body.article-page .article-experience .blog-article__content .article-heading-link { opacity: 1; }
  .article-block-head h2 { font-size: 24px; }
  .article-check { gap: 12px; }
  .article-help { padding: 26px 22px; }
  .article-help h2 { font-size: 25px; }
  .article-related-grid { grid-template-columns: 1fr; gap: 32px; }
  .article-related-head h2 { font-size: 28px; }
  .article-related-card h3 { font-size: 23px; }
  #article-top { scroll-margin-top: 92px; }
}
@media (prefers-reduced-motion: no-preference) {
  html:has(.article-experience) { scroll-behavior: smooth; }
}
@media (prefers-reduced-motion: reduce) {
  .article-toolbar button, .article-text-button { transition: none; }
  html:has(.article-experience) { scroll-behavior: auto; }
}
@media print {
  body.article-page { background: white; color: black; }
  body.article-page > header, body.article-page > footer, .article-page .header, .article-page .footer, .article-page .menu-drawer, .article-toolbar, .article-toc, .article-related, .article-help, .article-rating, .article-reading-progress, .article-heading-link, [data-copy-plan], .article-breadcrumb { display: none !important; }
  body.article-page .article-experience { padding: 0; }
  body.article-page .article-experience > .container { width: 100%; max-width: none; }
  .article-reading-grid { display: block; }
  .article-reading { max-width: none; }
  body.article-page .article-experience .blog-article__title { max-width: none; font-size: 26pt; }
  body.article-page .article-experience .blog-article__cover { max-height: 210px; margin: 20px 0; }
  body.article-page .article-experience .blog-article__content { font-size: 11pt; line-height: 1.65; }
  body.article-page .article-experience .blog-article__content h2 { break-after: avoid; font-size: 18pt; margin-top: 24pt; }
  .article-summary, .article-checklist { break-inside: avoid; }
}
