body,html{max-width:100vw;overflow-x:hidden!important;position:relative}*,::after,::before{box-sizing:border-box}embed,iframe,img,object,video{max-width:100%;height:auto}a,body,div,h1,h2,h3,h4,h5,h6,li,p,span,td,th{overflow-wrap:break-word;word-wrap:break-word}.table-wrapper{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch;margin:1.5rem 0;border-radius:8px}.article-body table,.article-content table{min-width:0}.article-header .article-title,.article-header h1{font-size:clamp(1.4rem,7vw,2.2rem)!important;line-height:1.25;word-break:break-word;hyphens:auto}h2{font-size:clamp(1.2rem,5vw,1.8rem)}h3{font-size:clamp(1rem,4vw,1.4rem)}@media (max-width:768px){.article-layout{grid-template-columns:1fr!important;gap:1.5rem}.article-sidebar{display:none}.container{padding-left:1rem!important;padding-right:1rem!important}.breadcrumb{flex-wrap:wrap;font-size:.8rem;gap:.25rem}.citation-box,.disclaimer-box,.info-box,.quick-summary,.warning-box{padding:1rem;margin:1.5rem 0}.cta-section{padding:2rem 1rem}.footer-grid,.guides-grid{grid-template-columns:1fr!important}.footer-grid{gap:2rem}.hero-title{font-size:clamp(1.5rem,8vw,2.2rem)!important;line-height:1.2}.hero-subtitle{font-size:.95rem}.hero-actions{flex-direction:column;gap:.75rem}.cta-section .btn,.cta-section a.btn,.hero-actions .btn{width:100%;text-align:center;justify-content:center}code,pre{max-width:100%;overflow-x:auto;white-space:pre-wrap;word-break:break-all}}@media (max-width:600px){table,tbody,td,tfoot,th,thead,tr{display:block!important;width:100%!important;min-width:0!important;white-space:normal!important}thead tr{position:absolute;top:-9999px;left:-9999px;visibility:hidden}tbody tr{border:1px solid var(--border-color,#2a2a2a);border-radius:8px;margin-bottom:1rem;padding:.25rem 0;background:var(--bg-card,#111);overflow:hidden}td{position:relative;padding:.5rem .75rem .5rem 42%!important;min-height:2rem;border:0!important;border-bottom:1px solid var(--border-color,#1e1e1e)!important;font-size:.88rem;text-align:left!important;color:var(--text-primary,#e5e0da)!important}td:last-child{border-bottom:none!important}td::before{content:attr(data-label);position:absolute;left:.75rem;top:.5rem;width:38%;font-size:.72rem;font-weight:700;color:var(--accent-amber,#d97706);text-transform:uppercase;letter-spacing:.04em;white-space:normal;word-break:break-word;line-height:1.3}.table-wrapper{overflow-x:visible}body{font-size:16px}.article-body p,.article-content p{font-size:1rem;line-height:1.7}.container{padding-left:.875rem!important;padding-right:.875rem!important}.faq-accordion-question{font-size:.93rem;padding:.875rem 1rem}.faq-accordion-answer{padding:0 1rem 1rem}.do-dont-grid,.two-col-grid{flex-direction:column!important}[style*="min-width:200px"],[style*="min-width:200px"]{min-width:0!important;width:100%!important}}@media (max-width:375px){.article-header .article-title,.article-header h1{font-size:1.3rem!important}td{padding-left:40%!important;font-size:.83rem}td::before{font-size:.68rem;width:36%}.container{padding-left:.75rem!important;padding-right:.75rem!important}}

/* ============================================================
   FOOTER LINK ACCESSIBILITY — WCAG AA (underline for non-color distinction)
   ============================================================ */
.site-footer a,
footer a,
.footer-col a,
.footer-links a,
.footer-bottom a {
  text-decoration: underline;
  text-underline-offset: 3px;
  text-decoration-thickness: 1px;
}

.site-footer a:hover,
footer a:hover,
.footer-col a:hover,
.footer-links a:hover {
  text-decoration: underline;
  text-decoration-thickness: 2px;
  color: var(--accent-amber, #fbbf24);
}

/* Ensure nav links in header are NOT underlined (nav is distinguishable by context) */
.site-nav a,
.nav-link,
.mobile-nav a {
  text-decoration: none !important;
}

/* ============================================================
   MOBILE FIX: Breadcrumb — force horizontal inline row
   Fixes: <ol> rendering as vertical numbered list on mobile
   ============================================================ */
.breadcrumb-list,
ol.breadcrumb-list {
  list-style: none !important;
  list-style-type: none !important;
  padding: 0 !important;
  margin: 0 !important;
  display: flex !important;
  flex-direction: row !important;
  flex-wrap: wrap !important;
  align-items: center !important;
  gap: 6px !important;
  counter-reset: none !important;
}

.breadcrumb-list li {
  display: inline-flex !important;
  align-items: center !important;
  list-style: none !important;
}

/* Remove auto-generated numbers/counters from OL */
.breadcrumb-list li::before,
.breadcrumb-list li::marker {
  content: none !important;
  display: none !important;
}

/* ============================================================
   MOBILE FIX: Global text overflow & word wrapping (reinforced)
   Fixes: paragraph text bleeding off right edge of screen
   ============================================================ */
p, h1, h2, h3, h4, h5, h6, span, li, td, th, a, caption, blockquote {
  overflow-wrap: break-word !important;
  word-wrap: break-word !important;
  hyphens: auto !important;
}

/* Belt-and-suspenders: ensure no child element can widen the page */
main, article, section, .container, .article-content, .article-layout {
  max-width: 100% !important;
  overflow-x: hidden !important;
}

/* ============================================================
   MOBILE FIX: Article metadata — flex-wrap so date/read-time
   stacks neatly on 360px screens instead of forcing overflow
   ============================================================ */
.article-meta {
  display: flex !important;
  flex-wrap: wrap !important;
  align-items: center !important;
  gap: 0.4rem 0.75rem !important;
  max-width: 100% !important;
}

.article-meta span,
.article-meta time {
  white-space: nowrap;
  font-size: 0.78rem !important;
}

@media (max-width: 480px) {
  .article-meta span,
  .article-meta time {
    font-size: 0.72rem !important;
  }

  /* Prevent data comparison tables from overflowing on very small screens */
  .data-table-wrapper {
    overflow-x: auto !important;
    -webkit-overflow-scrolling: touch !important;
  }

  .data-table-wrapper table {
    font-size: 0.78rem !important;
    min-width: 0 !important;
  }

  .data-table-wrapper td,
  .data-table-wrapper th {
    padding: 0.45rem 0.4rem !important;
    white-space: normal !important;
    word-break: break-word !important;
  }
}

@media (max-width: 360px) {
  /* Ultra-narrow viewport safety net */
  .article-meta {
    gap: 0.3rem 0.5rem !important;
  }

  .article-meta span,
  .article-meta time {
    font-size: 0.68rem !important;
  }
}

/* ============================================================
   CRITICAL FIX 2026-05-13: BLUF blockquote + H1 overflow
   Fixes: CBRN page H1 and gold-border BLUF paragraph
   bleeding off right edge on 360px mobile viewports.
   Root cause: inline style padding/margin on <p style="...">
   not respecting box-sizing, combined with fixed font-size.
   ============================================================ */

/* Ensure box-sizing is enforced on ALL elements including
   those with inline styles (the BLUF <p style="..."> block) */
*, *::before, *::after {
  box-sizing: border-box !important;
}

/* Hard stop on horizontal overflow at every structural level */
html, body {
  max-width: 100vw !important;
  overflow-x: hidden !important;
}

/* Force inline-styled elements (BLUF, callouts) to respect viewport */
p[style], div[style], section[style] {
  max-width: 100% !important;
  box-sizing: border-box !important;
  overflow-wrap: break-word !important;
  word-break: break-word !important;
}

/* Blockquote and left-border callout boxes */
blockquote,
p[style*="border-left"],
div[style*="border-left"] {
  margin-left: 0 !important;
  margin-right: 0 !important;
  padding-right: 1rem !important;
  max-width: 100% !important;
  width: 100% !important;
  box-sizing: border-box !important;
}

@media (max-width: 480px) {
  /* Scale down H1 aggressively on narrow screens */
  h1,
  .article-header h1 {
    font-size: clamp(1.3rem, 5.5vw, 1.8rem) !important;
    line-height: 1.2 !important;
    word-break: break-word !important;
    hyphens: auto !important;
  }

  /* Tighten BLUF / callout font-size so long words don't overflow */
  p[style*="font-weight:700"],
  p[style*="font-weight: 700"] {
    font-size: 0.95rem !important;
    line-height: 1.6 !important;
    padding-left: 1rem !important;
    padding-right: 1rem !important;
  }

  /* Ensure container padding keeps content inside viewport */
  .container {
    padding-left: 0.875rem !important;
    padding-right: 0.875rem !important;
  }
}

@media (max-width: 360px) {
  h1,
  .article-header h1 {
    font-size: 1.25rem !important;
  }

  p[style*="font-weight:700"],
  p[style*="font-weight: 700"] {
    font-size: 0.88rem !important;
    padding-left: 0.75rem !important;
    padding-right: 0.75rem !important;
  }
}

/* ============================================================
   GLOBAL WCAG CONTRAST FIX — Site-wide light-background enforcement
   Deployed: 2026-05-13
   Rule: any element with a light/white background MUST use dark text.
   This file is loaded on every page, making this fix truly global.
   ============================================================ */

/* --- Named CSS classes with light backgrounds (audit-confirmed) --- */
.callout-warning,
.callout-info,
.callout,
.fact,
.myth,
.myth-fact,
.source-box,
.survival-card,
.info-callout,
.high, .medium, .low,
.comparison-table,
.nuclear-table,
.checklist-card,
.checklist-card h4,
.checklist-card li {
  color: #111827 !important;
}

/* ============================================================
   DISCLAIMER-BOX — dark background, light text (AMOLED fix)
   The disclaimer-box uses a dark amber-tinted background.
   Must NOT inherit the #111827 dark-text rule above.
   Forces readable light text on all screens including AMOLED.
   ============================================================ */
.disclaimer-box {
  background: #1c1200 !important;
  border: 1px solid rgba(217, 119, 6, 0.55) !important;
  color: #e0dbd2 !important;
}
.disclaimer-box p {
  color: #e0dbd2 !important;
  line-height: 1.7;
}
.disclaimer-box strong {
  color: #fbbf24 !important;
}

/* Force dark text on ALL descendants inside light containers */
.callout-warning *,
.callout-info *,
.callout *,
.fact *,
.myth *,
.myth-fact *,
.source-box *,
.survival-card *,
.info-callout *,
.high *, .medium *, .low * {
  color: #111827 !important;
}

/* Disclaimer-box children: keep light text (dark background) */
.disclaimer-box * {
  color: #e0dbd2 !important;
}
.disclaimer-box strong,
.disclaimer-box b {
  color: #fbbf24 !important;
}

/* Restore link color inside light callouts to accessible blue */
.callout-warning a, .callout-info a, .callout a,
.fact a, .myth a, .source-box a, .info-callout a {
  color: #1d4ed8 !important;
  text-decoration: underline !important;
}

/* --- Priority badges --- */
.priority-critical { color: #991b1b !important; }
.priority-high     { color: #92400e !important; }
.priority-medium   { color: #065f46 !important; }

/* --- Sidebar cards with amber/light inline backgrounds --- */
.sidebar-card[style*="background:#fef"],
.sidebar-card[style*="background: #fef"],
.sidebar-card[style*="background:#fff"],
.sidebar-card[style*="background: #fff"] {
  color: #111827 !important;
}
.sidebar-card[style*="background:#fef"] *,
.sidebar-card[style*="background: #fef"] *,
.sidebar-card[style*="background:#fff"] *,
.sidebar-card[style*="background: #fff"] * {
  color: #111827 !important;
}

/* --- Inline-styled light backgrounds (attribute selectors) ---
   Covers any element with style="background: #f..." or "background:white"
   These are the most common patterns found in the site-wide audit. */
[style*="background: white"],   [style*="background:white"],
[style*="background: #fff"],    [style*="background:#fff"],
[style*="background: #fafafa"], [style*="background:#fafafa"],
[style*="background: #f8f9fa"], [style*="background:#f8f9fa"],
[style*="background: #f8fafc"], [style*="background:#f8fafc"],
[style*="background: #f3f4f6"], [style*="background:#f3f4f6"],
[style*="background: #f1f5f9"], [style*="background:#f1f5f9"],
[style*="background: #fef3c7"], [style*="background:#fef3c7"],
[style*="background: #fef9c3"], [style*="background:#fef9c3"],
[style*="background: #fef2f2"], [style*="background:#fef2f2"],
[style*="background: #fee2e2"], [style*="background:#fee2e2"],
[style*="background: #fefce8"], [style*="background:#fefce8"],
[style*="background: #eff6ff"], [style*="background:#eff6ff"],
[style*="background: #dbeafe"], [style*="background:#dbeafe"],
[style*="background: #d1fae5"], [style*="background:#d1fae5"],
[style*="background: #f0fdf4"], [style*="background:#f0fdf4"],
[style*="background: #fff1f2"], [style*="background:#fff1f2"],
[style*="background: #fce7f3"], [style*="background:#fce7f3"],
[style*="background: #ecfdf5"], [style*="background:#ecfdf5"],
[style*="background: #e8f5e9"], [style*="background:#e8f5e9"] {
  color: #111827 !important;
}

/* Force dark text on children of inline light-bg elements */
[style*="background: white"] *,   [style*="background:white"] *,
[style*="background: #fff"] *,    [style*="background:#fff"] *,
[style*="background: #fafafa"] *, [style*="background:#fafafa"] *,
[style*="background: #f8f9fa"] *, [style*="background:#f8f9fa"] *,
[style*="background: #f8fafc"] *, [style*="background:#f8fafc"] *,
[style*="background: #fef3c7"] *, [style*="background:#fef3c7"] *,
[style*="background: #fef9c3"] *, [style*="background:#fef9c3"] *,
[style*="background: #fef2f2"] *, [style*="background:#fef2f2"] *,
[style*="background: #fee2e2"] *, [style*="background:#fee2e2"] *,
[style*="background: #eff6ff"] *, [style*="background:#eff6ff"] *,
[style*="background: #dbeafe"] *, [style*="background:#dbeafe"] *,
[style*="background: #d1fae5"] *, [style*="background:#d1fae5"] *,
[style*="background: #f0fdf4"] *, [style*="background:#f0fdf4"] * {
  color: #111827 !important;
}

/* --- Table zebra striping: any light-bg row must have dark text ---
   Covers comparison-table, nuclear-table, data-table, and generic tables
   that use alternating white/off-white rows */
.comparison-table tr td,
.comparison-table tr th,
.nuclear-table tr td,
.nuclear-table tr th {
  color: #111827 !important;
}

/* --- Blockquotes with light inline backgrounds --- */
blockquote[style*="background: #f"],
blockquote[style*="background:#f"],
blockquote[style*="background: white"],
blockquote[style*="background:white"] {
  color: #111827 !important;
}
blockquote[style*="background: #f"] *,
blockquote[style*="background:#f"] *,
blockquote[style*="background: white"] *,
blockquote[style*="background:white"] * {
  color: #111827 !important;
}

/* --- Dark inline callouts: keep light text on dark panels --- */
.callout[style*="background:#1c1a0f"],
.callout[style*="background:#1c1a0f"] *,
.callout[style*="background:#0f1a2e"],
.callout[style*="background:#0f1a2e"] *,
.callout-warning[style*="background:#1a1200"],
.callout-warning[style*="background:#1a1200"] * {
  color: #e0dbd2 !important;
}
.callout[style*="background:#1c1a0f"] a,
.callout[style*="background:#0f1a2e"] a,
.callout-warning[style*="background:#1a1200"] a {
  color: #fbbf24 !important;
}

/* --- Preserve dark-bg elements: do NOT override dark containers ---
   These are dark-theme elements that should keep light text.
   Listed explicitly to prevent cascade conflicts. */
.cta-box,
.cta-box *,
.warning-banner,
.warning-banner *,
.action-box,
.action-box *,
[style*="background: #1e3a"],
[style*="background:#1e3a"],
[style*="background: #0f"],
[style*="background:#0f"],
[style*="background: #111"],
[style*="background:#111"],
[style*="background: #1a"],
[style*="background:#1a"],
[style*="background: #0a"],
[style*="background:#0a"] {
  color: inherit !important;
}

/* ============================================================
   END GLOBAL CONTRAST FIX
   ============================================================ */

/* ── Responsive H1 fix (all guide pages, including bare h1 without article-header wrapper) ── */
.article-content h1,
article h1,
main h1 {
  font-size: clamp(1.4rem, 6vw, 2.4rem) !important;
  line-height: 1.2 !important;
  overflow-wrap: break-word !important;
  word-break: break-word !important;
  hyphens: auto !important;
  max-width: 100% !important;
}
@media (max-width: 480px) {
  .article-content h1,
  article h1,
  main h1 {
    font-size: clamp(1.25rem, 5.5vw, 1.7rem) !important;
    line-height: 1.22 !important;
  }
}
@media (max-width: 375px) {
  .article-content h1,
  article h1,
  main h1 {
    font-size: 1.25rem !important;
    line-height: 1.25 !important;
  }
}

/* ============================================================
   Key Takeaways / quick-actions-box — mobile responsive fix
   On screens ≤768px the <li> items switch from flex-row to
   block so the <strong> label sits above the description text
   instead of being squished into a narrow side column.
   ============================================================ */
@media (max-width: 768px) {
  .quick-actions-box li {
    display: block !important;
    padding: 0.75rem 0;
  }
  .quick-actions-box li strong {
    display: block;
    margin-bottom: 0.3rem;
    font-size: 0.95rem;
    line-height: 1.4;
  }
  .quick-actions-box li::before {
    display: none;
  }
  .quick-actions-box {
    padding: 1rem;
  }
}
