/* PROGRAMS — read/operate. Three full chapters, alternating sides for
   air. Signature: each chapter's top rule draws across on reveal. */
.chapters { margin-top: 12px; }
.chapter-sec { display: grid; grid-template-columns: 1fr 280px; gap: clamp(20px, 4vw, 48px); padding: clamp(30px, 4.5vw, 52px) 0; border-bottom: 1px solid var(--line); position: relative; }
.chapter-sec::before { content: ""; position: absolute; top: -1px; left: 0; height: 2px; width: 100%; background: var(--ink); transform: scaleX(0); transform-origin: left; transition: transform .8s var(--ease-out); }
.chapter-sec.in::before { transform: scaleX(1); }
.chapter-sec.flip > div:first-child { order: 2; }
.chapter-sec.flip > aside { order: 1; }
.chapter-sec .who { font-size: 13px; font-weight: 800; letter-spacing: 1.5px; text-transform: uppercase; color: var(--signal); }
.chapter-sec h2 { font-family: var(--serif); font-size: clamp(26px, 3.2vw, 38px); letter-spacing: -.02em; margin: 8px 0; text-wrap: balance; }
.chapter-sec .desc { color: var(--ink-soft); max-width: 62ch; margin-bottom: 14px; }
.fee-box { background: var(--card); border: 1px solid var(--line); border-radius: var(--radius); padding: 20px; font-size: 14.5px; color: var(--ink-soft); align-self: start; }
.fee-box strong { color: var(--ink); display: block; font-size: 12px; letter-spacing: 1.5px; text-transform: uppercase; margin-bottom: 8px; }
.fee-box dl { display: grid; gap: 6px; font-variant-numeric: tabular-nums; }
.fee-box dl div { display: grid; grid-template-columns: 86px 1fr; gap: 10px; }
.fee-box dt { font-weight: 700; color: var(--ink); }
.fee-box dd { margin: 0; }
.fee-box a { display: inline-block; margin-top: 12px; }

@media (max-width: 980px) {
  .chapter-sec, .chapter-sec.flip > div:first-child { grid-template-columns: 1fr; }
  .chapter-sec.flip > div:first-child { order: 1; }
  .chapter-sec.flip > aside { order: 2; }
}
