/* Self-hosted fonts. These are the files and rules Google Fonts served until October 2026, so nothing is requested from Google. Each page keeps its own set of weights. Licenses: /fonts/OFL-*.txt */
@font-face{font-family:'Newsreader';font-style:normal;font-weight:500;font-display:swap;src:url(fonts/newsreader-latin-ext.woff2) format('woff2');unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C4,U+2113,U+2C60-2C7F,U+A720-A7FF}
@font-face{font-family:'Newsreader';font-style:normal;font-weight:500;font-display:swap;src:url(fonts/newsreader-latin.woff2) format('woff2');unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}
@font-face{font-family:'Newsreader';font-style:normal;font-weight:600;font-display:swap;src:url(fonts/newsreader-latin-ext.woff2) format('woff2');unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C4,U+2113,U+2C60-2C7F,U+A720-A7FF}
@font-face{font-family:'Newsreader';font-style:normal;font-weight:600;font-display:swap;src:url(fonts/newsreader-latin.woff2) format('woff2');unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}
@font-face{font-family:'Public Sans';font-style:normal;font-weight:400;font-display:swap;src:url(fonts/public-sans-latin-ext.woff2) format('woff2');unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C4,U+2113,U+2C60-2C7F,U+A720-A7FF}
@font-face{font-family:'Public Sans';font-style:normal;font-weight:400;font-display:swap;src:url(fonts/public-sans-latin.woff2) format('woff2');unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}
@font-face{font-family:'Public Sans';font-style:normal;font-weight:600;font-display:swap;src:url(fonts/public-sans-latin-ext.woff2) format('woff2');unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C4,U+2113,U+2C60-2C7F,U+A720-A7FF}
@font-face{font-family:'Public Sans';font-style:normal;font-weight:600;font-display:swap;src:url(fonts/public-sans-latin.woff2) format('woff2');unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}
@font-face{font-family:'Public Sans';font-style:normal;font-weight:700;font-display:swap;src:url(fonts/public-sans-latin-ext.woff2) format('woff2');unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C4,U+2113,U+2C60-2C7F,U+A720-A7FF}
@font-face{font-family:'Public Sans';font-style:normal;font-weight:700;font-display:swap;src:url(fonts/public-sans-latin.woff2) format('woff2');unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}
@font-face{font-family:'Spline Sans Mono';font-style:normal;font-weight:500;font-display:swap;src:url(fonts/spline-sans-mono-latin-ext.woff2) format('woff2');unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C4,U+2113,U+2C60-2C7F,U+A720-A7FF}
@font-face{font-family:'Spline Sans Mono';font-style:normal;font-weight:500;font-display:swap;src:url(fonts/spline-sans-mono-latin.woff2) format('woff2');unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}

  :root {
      --ink: #17181C;
      /* body text — matches alexproctor.io ink */
      --ink-soft: #5A5C63;
      --brand: #C53547;
      /* alexproctor.io crimson accent */
      --brand-dark: #9E2938;
      /* deeper crimson for link text (contrast) */
      --brand-soft: #FAEDEE;
      --rule: #E4E2DC;
      --bg: #ffffff;
      --toc-bg: #F7F6F3;
      --font-display: 'Newsreader', Georgia, serif;
      --font-body: 'Public Sans', -apple-system, BlinkMacSystemFont, 'Segoe UI', Helvetica, Arial, sans-serif;
      --font-mono: 'Spline Sans Mono', ui-monospace, monospace;
  }

  * {
      box-sizing: border-box;
  }

  html {
      scroll-behavior: smooth;
  }

  body {
      margin: 0;
      background: var(--bg);
      color: var(--ink);
      font-family: var(--font-body);
      font-size: 17px;
      line-height: 1.7;
      -webkit-font-smoothing: antialiased;
  }

  a {
      color: var(--brand-dark);
      text-decoration: underline;
      text-decoration-thickness: 1px;
      text-underline-offset: 2px;
  }

  a:hover {
      color: var(--brand);
      text-decoration-thickness: 2px;
  }

  .layout {
      display: grid;
      grid-template-columns: 290px minmax(0, 1fr);
      max-width: 1180px;
      margin: 0 auto;
  }

  /* ---------- Table of contents ---------- */
  nav.toc {
      background: var(--toc-bg);
      border-right: 1px solid var(--rule);
      padding: 2.2rem 1.4rem 3rem;
      font-size: .85rem;
  }

  nav.toc .toc-inner {
      position: sticky;
      top: 1.5rem;
      max-height: calc(100vh - 3rem);
      overflow-y: auto;
      padding-right: .4rem;
  }

  nav.toc h2 {
      font-family: var(--font-mono);
      font-size: .72rem;
      letter-spacing: .14em;
      text-transform: uppercase;
      color: var(--brand-dark);
      margin: 0 0 1rem;
      font-weight: 500;
  }

  nav.toc ol {
      list-style: none;
      margin: 0;
      padding: 0;
  }

  nav.toc ol>li {
      margin: 0 0 .55rem;
  }

  nav.toc ol ol {
      margin: .35rem 0 .4rem .85rem;
      border-left: 2px solid var(--rule);
      padding-left: .7rem;
  }

  nav.toc ol ol li {
      margin: 0 0 .3rem;
  }

  nav.toc a {
      color: var(--ink);
      text-decoration: none;
      display: block;
      line-height: 1.4;
  }

  nav.toc a:hover {
      color: var(--brand-dark);
  }

  nav.toc ol ol a {
      color: var(--ink-soft);
      font-size: .8rem;
  }

  /* ---------- Document ---------- */
  main {
      padding: 3rem 3.2rem 5rem;
      max-width: 840px;
  }

  header.doc-head {
      position: relative;
      padding-bottom: 1.4rem;
      margin-bottom: 1.6rem;
      border-bottom: 1px solid var(--rule);
  }

header.doc-head .org {
    display: block;
    font-family: var(--font-mono);
    font-size: .75rem;
    letter-spacing: .14em;
    text-transform: uppercase;
    color: var(--brand-dark);
    font-weight: 500;
    margin: 0 0 .8rem;
    text-decoration: none;
}

header.doc-head .org:hover {
    text-decoration: underline;
}

.doc-back {
    position: absolute;
    top: .1rem;
    right: 0;
    font-size: .85rem;
    text-decoration: none;
    color: var(--ink-soft);
}

.doc-back:hover {
    color: var(--brand-dark);
}

.back-top+.back-top {
    margin-left: 1.4rem;
}

  header.doc-head h1 {
      font-family: var(--font-display);
      font-size: 2.3rem;
      font-weight: 600;
      margin: 0 0 .6rem;
      line-height: 1.15;
      letter-spacing: -.015em;
  }

  header.doc-head .meta {
      font-family: var(--font-mono);
      color: var(--ink-soft);
      font-size: .82rem;
      letter-spacing: .05em;
      margin: 0;
  }

  header.doc-head .meta em {
      display: block;
      margin-top: .2rem;
  }

  h2.section {
      font-family: var(--font-display);
      font-size: 1.65rem;
      font-weight: 600;
      letter-spacing: -.01em;
      margin: 2.6rem 0 1rem;
      padding-top: 1.4rem;
      scroll-margin-top: 1.2rem;
      text-wrap: balance;
  }

  h2.section:first-of-type {
      padding-top: 0;
  }

  h3 {
      font-family: var(--font-display);
      font-size: 1.3rem;
      font-weight: 600;
      color: var(--ink);
      margin: 2.1rem 0 .7rem;
      padding-bottom: .35rem;
      border-bottom: 2px solid var(--brand);
      display: table;
      /* shrink underline to the heading's own width */
      scroll-margin-top: 1.2rem;
  }

  p {
      margin: 0 0 1rem;
      text-wrap: pretty;
  }

  main ul {
      margin: 0 0 1rem;
      padding-left: 1.5rem;
      list-style: disc outside;
  }

  main li {
      margin-bottom: .55rem;
      text-wrap: pretty;
  }

  table.providers {
      width: 100%;
      border-collapse: collapse;
      margin: 0 0 1.2rem;
      font-size: .95rem;
  }

  li table.providers {
      margin-top: .8rem;
  }

  table.providers th,
  table.providers td {
      border: 1px solid var(--rule);
      padding: .55rem .85rem;
      text-align: left;
      vertical-align: top;
  }

  table.providers th {
      background: var(--toc-bg);
      font-family: var(--font-mono);
      font-weight: 500;
      font-size: .72rem;
      letter-spacing: .12em;
      text-transform: uppercase;
      color: var(--brand-dark);
  }

  blockquote {
      margin: 1.2rem 0;
      padding: 1rem 1.3rem;
      background: var(--brand-soft);
      border-left: 4px solid var(--brand);
      border-radius: 0 8px 8px 0;
  }

  blockquote p {
      margin: 0;
  }

  /* State-specific notice links */
  ul.state-links {
      list-style: none;
      padding: 1rem 1.2rem;
      margin: 0 0 1.2rem;
      display: grid;
      grid-template-columns: repeat(auto-fill, minmax(220px, 1fr));
      gap: .4rem 1.5rem;
      background: var(--toc-bg);
      border: 1px solid var(--rule);
      border-radius: 8px;
  }

  ul.state-links li {
      margin: 0;
  }

  ul.state-links a {
      text-decoration: none;
      font-weight: 600;
      font-size: .92rem;
  }

  ul.state-links a:hover {
      text-decoration: underline;
  }

  /* Individual state supplements */
  section.state-notice {
      margin-top: 2.4rem;
      padding-top: 1.8rem;
      border-top: 2px solid var(--rule);
      scroll-margin-top: 1.2rem;
  }

  section.state-notice h3 {
      margin-top: 0;
      font-size: 1.3rem;
  }

  section.state-notice .state-meta {
      color: var(--ink-soft);
      font-size: .9rem;
      margin: -.3rem 0 1.1rem;
  }

  h4 {
      font-size: 1rem;
      font-weight: 700;
      color: var(--ink);
      margin: 1.6rem 0 .55rem;
  }

  .back-top {
      display: inline-block;
      margin-top: 2.5rem;
      font-size: .8rem;
      text-decoration: none;
      color: var(--ink-soft);
  }

  .back-top:hover {
      color: var(--brand-dark);
  }

  /* Collapsible TOC — CSS-only toggle via the #toc-toggle checkbox.
     Desktop: unchecked = sidebar open (default); checked = minimized to a slim rail.
     Mobile: unchecked = menu closed (default); checked = dropdown open. */
  .toc-toggle {
      position: absolute;
      width: 1px;
      height: 1px;
      margin: 0;
      opacity: 0;
      pointer-events: none;
  }

  .toc-summary {
      display: flex;
      align-items: center;
      justify-content: space-between;
      gap: .5rem;
      cursor: pointer;
      user-select: none;
      -webkit-user-select: none;
  }

  nav.toc .toc-summary h2 {
      margin: 0;
  }

  .toc-summary::after {
      content: "▸";
      color: var(--brand-dark);
      font-size: .9rem;
      line-height: 1;
      transition: transform .2s ease;
  }

  /* Desktop: sidebar open by default, click Contents to minimize into a rail */
  @media (min-width: 901px) {
      .toc-summary {
          margin-bottom: 1rem;
      }

      /* chevron points left ("tuck away") while open, right while minimized */
      .toc-summary::after {
          transform: rotate(180deg);
      }

      nav.toc .toc-toggle:checked+.toc-summary::after {
          transform: rotate(0deg);
      }

      .toc-toggle:focus-visible+.toc-summary {
          outline: 2px solid var(--brand-dark);
          outline-offset: 2px;
      }

      nav.toc .toc-toggle:checked~ol {
          display: none;
      }

      /* minimized: slim rail on the left, content gets the full width */
      .layout:has(.toc-toggle:checked) {
          max-width: none;
          grid-template-columns: 64px minmax(0, 1fr);
      }

      .layout:has(.toc-toggle:checked) main {
          max-width: none;
      }

      .layout:has(.toc-toggle:checked) nav.toc {
          padding: 1.6rem .8rem;
      }

      .layout:has(.toc-toggle:checked) .toc-summary {
          flex-direction: column;
          justify-content: flex-start;
          gap: .8rem;
          margin: 0;
      }

      .layout:has(.toc-toggle:checked) .toc-summary h2 {
          writing-mode: vertical-rl;
          margin: 0;
      }
  }

  @media (max-width:900px) {
      .layout {
          grid-template-columns: 1fr;
      }

      nav.toc {
          position: sticky;
          top: 0;
          z-index: 10;
          border-right: none;
          border-bottom: 1px solid var(--rule);
          padding: 0;
          box-shadow: 0 1px 4px rgba(23, 24, 28, .07);
      }

      nav.toc .toc-inner {
          position: static;
          max-height: none;
          padding-right: 0;
      }

      /* the whole bar is the tap target */
      .toc-summary {
          padding: .85rem 1.3rem;
          -webkit-tap-highlight-color: transparent;
      }

      .toc-toggle:focus-visible+.toc-summary {
          outline: 2px solid var(--brand-dark);
          outline-offset: -2px;
      }

      nav.toc .toc-toggle:checked+.toc-summary::after {
          transform: rotate(90deg);
      }

      /* closed by default on mobile; the checked checkbox shows it — no JS involved */
      nav.toc .toc-inner>ol {
          display: none;
      }

      /* open list scrolls internally instead of pushing the notice down;
         px bound also caps it inside the auto-height iframe embed, where vh is unreliable */
      nav.toc .toc-toggle:checked~ol {
          display: block;
          max-height: min(65vh, 420px);
          overflow-y: auto;
          overscroll-behavior: contain;
          -webkit-overflow-scrolling: touch;
          padding: .6rem 1.3rem 1rem;
          border-top: 1px solid var(--rule);
      }

      nav.toc a {
          padding: .2rem 0;
      }

      main {
          padding: 2rem 1.3rem 4rem;
      }

      /* anchor targets clear the sticky Contents bar */
      h2.section,
      h3,
      section.state-notice {
          scroll-margin-top: 4rem;
      }
  }

  @media print {
      nav.toc .toc-inner {
          position: static;
      }

      nav.toc .toc-inner>ol {
          display: block !important;
          max-height: none !important;
          overflow: visible !important;
      }

      a {
          color: inherit;
      }
  }
