/* ─────────────────────────────────────────────────────────────────────────────
   fm.css — Comprehensive Firearms Manual document styles (v15.35)
   Shared by the portal's Range Rules page (styles.css loads it; body.dark
   flips the tokens) and the public range acknowledgment page (range/ —
   html.fm-auto follows prefers-color-scheme). Print rules reproduce the
   printed manual: navy headings, blue rule boxes, red warnings, ruled tables.
   ───────────────────────────────────────────────────────────────────────────── */
.fm-doc {
  --fm-ink: #111827; --fm-ink2: #374151; --fm-mute: #6b7280; --fm-line: #cbd5e1;
  --fm-navy: #1b2a4a; --fm-navy-ink: #ffffff; --fm-head: #1b2a4a;
  --fm-box-bg: #d5e3f0; --fm-box-line: #1b2a4a;
  --fm-warn-bg: #fbe3e3; --fm-warn-line: #c53030; --fm-warn-ink: #7f1d1d; --fm-warn-t: #c53030;
  --fm-zebra: #f1f5f9; --fm-th: #1b2a4a; --fm-th-ink: #ffffff; --fm-td-line: #d1d5db;
  --fm-link: #1e6b4e; --fm-chk: #374151;
  color: var(--fm-ink); line-height: 1.55; font-size: 15px;
  font-family: 'Open Sans', system-ui, -apple-system, 'Segoe UI', Roboto, Arial, sans-serif;
  overflow-wrap: anywhere;
}
body.dark .fm-doc, html.fm-dark .fm-doc {
  --fm-ink: #e5e7eb; --fm-ink2: #cbd5e1; --fm-mute: #94a3b8; --fm-line: #334155;
  --fm-navy: #1b2a4a; --fm-navy-ink: #ffffff; --fm-head: #bfd0ea;
  --fm-box-bg: #1e293b; --fm-box-line: #3b4f78;
  --fm-warn-bg: #3b1515; --fm-warn-line: #ef4444; --fm-warn-ink: #fecaca; --fm-warn-t: #fca5a5;
  --fm-zebra: #1a2332; --fm-th: #1b2a4a; --fm-th-ink: #ffffff; --fm-td-line: #334155;
  --fm-link: #4ade80; --fm-chk: #cbd5e1;
}
@media (prefers-color-scheme: dark) {
  html.fm-auto .fm-doc {
    --fm-ink: #e5e7eb; --fm-ink2: #cbd5e1; --fm-mute: #94a3b8; --fm-line: #334155;
    --fm-head: #bfd0ea;
    --fm-box-bg: #1e293b; --fm-box-line: #3b4f78;
    --fm-warn-bg: #3b1515; --fm-warn-line: #ef4444; --fm-warn-ink: #fecaca; --fm-warn-t: #fca5a5;
    --fm-zebra: #1a2332; --fm-td-line: #334155;
    --fm-link: #4ade80; --fm-chk: #cbd5e1;
  }
}

.fm-ch { margin: 0 0 2.5rem; }
.fm-h2 {
  display: flex; flex-direction: column; gap: 2px;
  margin: 0 0 1rem; padding-bottom: .4rem; border-bottom: 3px solid var(--fm-head);
  font-size: 1.45rem; font-weight: 800; letter-spacing: .01em; text-transform: uppercase; color: var(--fm-head); line-height: 1.2;
}
.fm-chlbl { font-size: .7rem; font-weight: 700; letter-spacing: .14em; text-transform: uppercase; color: var(--fm-mute); }
.fm-sec { margin: 1.4rem 0 0; scroll-margin-top: 90px; }
.fm-ch { scroll-margin-top: 90px; }
.fm-h3 { margin: 0 0 .5rem; font-size: 1.12rem; font-weight: 700; color: var(--fm-head); line-height: 1.3; }
.fm-h3 .fm-num { color: var(--fm-mute); font-weight: 700; margin-right: .15em; }
.fm-h4 { margin: .9rem 0 .35rem; font-size: .98rem; font-weight: 700; color: var(--fm-head); }
.fm-h4-rules { text-transform: uppercase; letter-spacing: .06em; font-size: .92rem; }
.fm-h4-office { margin-top: 1.4rem; padding-top: .7rem; border-top: 1px solid var(--fm-line); text-transform: uppercase; letter-spacing: .08em; font-size: .78rem; color: var(--fm-mute); }
.fm-p { margin: 0 0 .7rem; color: var(--fm-ink); }
.fm-em { margin: 0 0 .7rem; font-style: italic; color: var(--fm-ink2); }
.fm-stmt { margin: 1rem 0 .8rem; font-weight: 700; color: var(--fm-ink); }
.fm-ul, .fm-ol { margin: 0 0 .8rem; padding-left: 1.5rem; }
.fm-ul li, .fm-ol li { margin: 0 0 .3rem; padding-left: .15rem; }
.fm-ul { list-style: disc; }
.fm-ol { list-style: decimal; }
.fm-ol li::marker, .fm-ul li::marker { color: var(--fm-ink2); font-weight: 600; }

.fm-box { margin: .6rem 0 1rem; border: 1.5px solid var(--fm-box-line); border-radius: 4px; overflow: hidden; }
.fm-box-t { background: var(--fm-navy); color: var(--fm-navy-ink); font-weight: 800; font-size: .82rem; letter-spacing: .05em; text-transform: uppercase; padding: .35rem .7rem; }
.fm-box-b { background: var(--fm-box-bg); padding: .55rem .75rem .35rem; }
.fm-box-b p { margin: 0 0 .3rem; font-size: .95rem; }

.fm-warn { margin: .6rem 0 1rem; border: 1.5px solid var(--fm-warn-line); background: var(--fm-warn-bg); border-radius: 4px; padding: .5rem .75rem .55rem; color: var(--fm-warn-ink); }
.fm-warn-t { font-weight: 800; color: var(--fm-warn-t); font-size: .85rem; letter-spacing: .04em; margin-bottom: .2rem; }
.fm-warn p { margin: 0; font-size: .95rem; }

.fm-tw { margin: .5rem 0 1rem; overflow-x: auto; -webkit-overflow-scrolling: touch; }
.fm-table { width: 100%; border-collapse: collapse; font-size: .9rem; }
.fm-table th { background: var(--fm-th); color: var(--fm-th-ink); text-align: left; font-weight: 700; padding: .45rem .6rem; border: 1px solid var(--fm-th); vertical-align: top; }
.fm-table td { padding: .4rem .6rem; border: 1px solid var(--fm-td-line); vertical-align: top; }
.fm-table tbody tr:nth-child(even) td { background: var(--fm-zebra); }

.fm-checks { list-style: none; margin: 0 0 1rem; padding: 0; }
.fm-checks li { display: flex; gap: .6rem; margin: 0 0 .5rem; align-items: flex-start; }
.fm-chk { flex: 0 0 auto; width: 15px; height: 15px; margin-top: 4px; border: 1.5px solid var(--fm-chk); border-radius: 2px; }

.fm-form { margin: .8rem 0 .5rem; }
.fm-fr { display: flex; flex-wrap: wrap; gap: .4rem 1.4rem; margin: 0 0 .8rem; }
.fm-fl { display: flex; align-items: flex-end; gap: .45rem; flex: 1 1 100%; min-width: 0; }
.fm-fl-full { flex-basis: 100%; }
.fm-fl-mid  { flex: 1 1 55%; }
.fm-fl-short { flex: 1 1 34%; }
.fm-fl-tiny { flex: 0 1 180px; }
.fm-fl-l { font-size: .74rem; font-weight: 800; text-transform: uppercase; letter-spacing: .02em; white-space: nowrap; color: var(--fm-ink); }
.fm-fl-line { flex: 1 1 60px; min-width: 60px; border-bottom: 1.5px solid var(--fm-ink2); height: 1.2em; }

.fm-toc { list-style: none; margin: 0; padding: 0; font-size: .86rem; }
.fm-toc > li { margin: 0 0 .35rem; }
.fm-toc ol { list-style: none; margin: .15rem 0 .3rem; padding-left: .4rem; }
.fm-toc ol li { margin: 0; }
.fm-toc a { display: flex; gap: .5rem; align-items: baseline; padding: .18rem .45rem; border-radius: 6px; color: var(--fm-ink2); text-decoration: none; line-height: 1.3; }
.fm-toc > li > a { font-weight: 700; color: var(--fm-head); }
.fm-toc a:hover, .fm-toc a.is-active { background: var(--fm-zebra); color: var(--fm-link); }
.fm-toc-n { flex: 0 0 2.6em; font-variant-numeric: tabular-nums; color: var(--fm-mute); font-weight: 600; font-size: .8em; }
.fm-toc ol .fm-toc-n { flex-basis: 2.9em; }

.fm-hl { animation: fm-glow 1.8s ease-out 1; }
@keyframes fm-glow { 0% { box-shadow: 0 0 0 4px rgba(250, 204, 21, .55); } 100% { box-shadow: 0 0 0 0 rgba(250, 204, 21, 0); } }

@media (max-width: 640px) {
  .fm-doc { font-size: 14.5px; }
  .fm-h2 { font-size: 1.2rem; }
  .fm-h3 { font-size: 1.04rem; }
  .fm-table { font-size: .84rem; }
  .fm-table th, .fm-table td { padding: .35rem .45rem; }
}

/* ── Print: the document on paper ─────────────────────────────────────────── */
@media print {
  .fm-doc {
    --fm-ink: #000; --fm-ink2: #111; --fm-mute: #444; --fm-line: #888;
    --fm-head: #1b2a4a; --fm-box-bg: #d5e3f0; --fm-box-line: #1b2a4a;
    --fm-warn-bg: #fbe3e3; --fm-warn-line: #c53030; --fm-warn-ink: #000; --fm-warn-t: #c53030;
    --fm-zebra: #f1f5f9; --fm-td-line: #999; --fm-chk: #000;
    font-size: 10pt; line-height: 1.35; color: #000;
  }
  .fm-ch { page-break-before: always; break-before: page; margin: 0 0 1rem; }
  .fm-ch.fm-first, .fm-ch:first-child { page-break-before: auto; break-before: auto; }
  .fm-sec, .fm-box, .fm-warn, .fm-table tr, .fm-checks li { page-break-inside: avoid; break-inside: avoid; }
  .fm-h2 { font-size: 15pt; }
  .fm-h3 { font-size: 11.5pt; page-break-after: avoid; }
  .fm-h4 { page-break-after: avoid; }
  .fm-box-t, .fm-table th, .fm-box-b, .fm-warn { -webkit-print-color-adjust: exact; print-color-adjust: exact; }
  .fm-tw { overflow: visible; }
  .fm-table { font-size: 9pt; }
  .fm-toc { display: none; }
}
