/* article.css — shared Field Note styles (tokens + chrome live in core.css) */
  .annot { font-family: "IBM Plex Mono", monospace; font-size: 0.7rem; letter-spacing: 0.12em; text-transform: uppercase; color: var(--stone); margin: 0 0 1rem; }
  article { padding: 4.5rem 0 3rem; }
  .a-head h1 { font-family: "IBM Plex Serif", Georgia, serif; font-weight: 500; letter-spacing: -0.02em; font-size: clamp(2.1rem, 5.6vw, 3.3rem); line-height: 1.08; margin: 0; max-width: 22ch; text-wrap: balance; }
  .a-head h1 em { font-style: italic; color: var(--accent-ink); }
  .a-meta { margin-top: 1.4rem; font-family: "IBM Plex Mono", monospace; font-size: 0.72rem; color: var(--stone); line-height: 1.9; }
  .abstract { background: var(--paper-deep); box-shadow: inset 0 1px 0 var(--line), inset 0 -1px 0 var(--line); margin: 2.8rem 0; padding: 2rem 0; }
  .abstract .inner { display: grid; grid-template-columns: 130px 1fr; gap: 28px; }
  @media (max-width: 620px) { .abstract .inner { grid-template-columns: 1fr; gap: 10px; } }
  .abstract p { font-family: "IBM Plex Serif", serif; font-size: 1.12rem; line-height: 1.7; margin: 0; max-width: 58ch; }
  .prose { font-family: "IBM Plex Serif", Georgia, serif; font-size: 1.1rem; line-height: 1.78; max-width: 66ch; }
  .prose p { margin: 0 0 1.25rem; }
  .prose .quiet { color: var(--ink-soft); }
  .prose h2 { font-family: "IBM Plex Serif", serif; font-weight: 600; font-size: 1.65rem; line-height: 1.2; margin: 2.8rem 0 1.1rem; text-wrap: balance; }
  .prose h2 .no { color: var(--line-strong); font-style: italic; margin-right: .35em; }
  .prose strong { font-weight: 600; }
  .prose .pull { font-size: 1.3rem; line-height: 1.5; font-style: italic; padding: .2rem 0 .2rem 1.3rem; border-left: 2px solid var(--accent); margin: 1.9rem 0; }
  .prose .pull b { font-style: normal; font-weight: 600; color: var(--accent-ink); }
  .prose sup a { font-family: "IBM Plex Mono", monospace; font-size: .68em; color: var(--accent-ink); }

  .fig { margin: 2.4rem 0 0; }
  .fig svg, .fig video { display: block; width: 100%; height: auto; }
  .fig video { padding: 10px; }
  .figrow { margin: 10px 0 2.4rem; display: flex; justify-content: space-between; align-items: center; gap: 16px; flex-wrap: wrap; }
  .figcap { font-family: "IBM Plex Mono", monospace; font-size: 0.72rem; color: var(--stone); }
  .soundbtn {
    appearance: none; cursor: pointer; font-family: "IBM Plex Mono", monospace; font-size: 0.72rem;
    border: 1px solid var(--line-strong); background: transparent; color: var(--ink-soft);
    border-radius: 4px; padding: 7px 14px;
  }
  .soundbtn:hover { border-color: var(--accent); color: var(--accent-ink); }
  .soundbtn[aria-pressed="true"] { background: var(--ink); color: var(--paper); border-color: var(--ink); }
  .bp-text { font-family: "IBM Plex Mono", monospace; fill: var(--ink); }
  .bp-dim { fill: var(--stone); }
  .bp-red { fill: var(--accent-ink); }
  .bp-line { stroke: var(--ink); stroke-width: 1.2; fill: none; }
  .bp-thin { stroke: var(--stone); stroke-width: 1; fill: none; }

  .steal { margin: 2.4rem 0; max-width: 66ch; }
  .steal ul { margin: 0; padding: 0; }
  .steal li { list-style: none; display: grid; grid-template-columns: 30px 1fr; gap: 14px; padding: 1rem 0; border-top: 1px solid var(--line); font-family: "IBM Plex Sans", sans-serif; font-size: 0.98rem; color: var(--ink-soft); }
  .steal li:last-child { border-bottom: 1px solid var(--line); }
  .steal .box { font-family: "IBM Plex Mono", monospace; color: var(--line-strong); font-size: 1.1rem; line-height: 1.3; }
  .steal b { color: var(--ink); font-weight: 600; }

  .aside { background: var(--paper-deep); border: 1px solid var(--line); padding: 1.6rem 1.8rem; margin: 2.4rem 0; max-width: 66ch; }
  .aside p { font-family: "IBM Plex Sans", sans-serif; font-size: 0.95rem; color: var(--ink-soft); margin: 0; line-height: 1.65; }
  .aside .t { font-family: "IBM Plex Mono", monospace; font-size: 0.68rem; letter-spacing: .12em; text-transform: uppercase; color: var(--accent-ink); display: block; margin-bottom: .6rem; }

  .faq { max-width: 66ch; margin-top: 1rem; }
  .faq details { border-top: 1px solid var(--line); }
  .faq details:last-of-type { border-bottom: 1px solid var(--line); }
  .faq summary { cursor: pointer; list-style: none; padding: 16px 0; font-family: "IBM Plex Serif", serif; font-weight: 500; font-size: 1.05rem; display: flex; justify-content: space-between; gap: 16px; }
  .faq summary::-webkit-details-marker { display: none; }
  .faq summary::after { content: "+"; font-family: "IBM Plex Mono", monospace; color: var(--accent-ink); }
  .faq details[open] summary::after { transform: rotate(45deg); }
  .faq .a { padding: 0 0 16px; color: var(--ink-soft); font-size: 0.95rem; line-height: 1.65; font-family: "IBM Plex Sans", sans-serif; }

  .refs { max-width: 66ch; margin: 1.4rem 0 0; padding: 0; list-style: none; counter-reset: ref; }
  .refs li { counter-increment: ref; display: grid; grid-template-columns: 34px 1fr; gap: 12px; padding: 9px 0; border-top: 1px solid var(--line); font-size: 0.85rem; color: var(--ink-soft); }
  .refs li:last-child { border-bottom: 1px solid var(--line); }
  .refs li::before { content: "[" counter(ref) "]"; font-family: "IBM Plex Mono", monospace; font-size: 0.75rem; color: var(--stone); padding-top: 2px; }

  .cta-row { display: flex; gap: 22px; align-items: center; margin: 2.6rem 0 0; flex-wrap: wrap; }

  footer.ft { border-top: 1px solid var(--line); padding: 26px 0 40px; margin-top: 4rem; }

  @media (prefers-reduced-motion: no-preference) {
    .rise { opacity: 0; transform: translateY(16px); animation: rise .75s cubic-bezier(.2,.65,.25,1) forwards; }
    .rise.r2 { animation-delay: .12s; }
    @keyframes rise { to { opacity: 1; transform: none; } }
  }

/* — rules used by earlier notes — */
/* Article */
  article { padding: 4.5rem 0 3rem; }
.prose ul { margin: 0 0 1.25rem; padding-left: 1.2rem; }
.prose li { margin-bottom: .5rem; }
.fig svg { display: block; width: 100%; height: auto; }
.bp-dash { stroke: var(--stone); stroke-width: 1; stroke-dasharray: 5 4; fill: none; }
.bp-fill { fill: var(--paper-deep); }
.bp-block { fill: var(--stone); opacity: .25; }
/* steal-this checklist */
  .steal { margin: 2.4rem 0; max-width: 66ch; }
/* app aside */
  .aside { background: var(--paper-deep); padding: 1.6rem 1.8rem; margin: 2.4rem 0; max-width: 66ch; }
/* FAQ */
  .faq { max-width: 66ch; margin-top: 1rem; }
/* references */
  .refs { max-width: 66ch; margin: 1.4rem 0 0; padding: 0; list-style: none; counter-reset: ref; }
