/* Self-hosted site enhancement: accessibility toolbar + language menu.
   No third-party overlay. No external dependencies. */
.enh-bar{position:fixed;left:16px;bottom:16px;z-index:2147483000;display:flex;gap:8px;font-family:system-ui,-apple-system,"Segoe UI",Roboto,Arial,sans-serif}
.enh-btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;min-width:44px;min-height:44px;padding:8px 12px;border:1px solid rgba(0,0,0,.18);border-radius:10px;background:#ffffff;color:#1a1a1a;font-size:14px;font-weight:600;cursor:pointer;box-shadow:0 2px 10px rgba(0,0,0,.18)}
.enh-btn:hover{background:#f3f3f3}
.enh-btn:focus-visible{outline:3px solid #1f44c4;outline-offset:2px}
.enh-btn svg{width:20px;height:20px;flex:0 0 auto}
.enh-panel{position:fixed;left:16px;bottom:72px;z-index:2147483001;width:288px;max-width:calc(100vw - 32px);background:#ffffff;color:#1a1a1a;border:1px solid rgba(0,0,0,.18);border-radius:14px;box-shadow:0 8px 30px rgba(0,0,0,.28);padding:14px;font-family:system-ui,-apple-system,"Segoe UI",Roboto,Arial,sans-serif}
.enh-panel[hidden]{display:none}
.enh-panel h2{margin:0 0 10px;font-size:15px;font-weight:700;color:#1a1a1a}
.enh-row{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:7px 0;border-top:1px solid #eee}
.enh-row:first-of-type{border-top:0}
.enh-row span{font-size:14px}
.enh-ctrl{display:inline-flex;gap:6px}
.enh-toggle{min-width:64px;min-height:38px;padding:6px 12px;border:1px solid rgba(0,0,0,.22);border-radius:8px;background:#f5f5f5;color:#1a1a1a;font-size:13px;font-weight:600;cursor:pointer}
.enh-toggle[aria-pressed="true"]{background:#1f44c4;border-color:#1f44c4;color:#fff}
.enh-toggle:focus-visible,.enh-step:focus-visible,.enh-reset:focus-visible,.enh-lang a:focus-visible{outline:3px solid #1f44c4;outline-offset:2px}
.enh-step{width:40px;height:38px;border:1px solid rgba(0,0,0,.22);border-radius:8px;background:#f5f5f5;color:#1a1a1a;font-size:17px;font-weight:700;cursor:pointer}
.enh-reset{margin-top:12px;width:100%;min-height:40px;border:1px solid rgba(0,0,0,.22);border-radius:8px;background:#fff;color:#1a1a1a;font-size:14px;font-weight:600;cursor:pointer}
.enh-reset:hover{background:#f3f3f3}
.enh-lang{position:fixed;left:16px;bottom:72px;z-index:2147483001;width:220px;max-width:calc(100vw - 32px);background:#fff;color:#1a1a1a;border:1px solid rgba(0,0,0,.18);border-radius:14px;box-shadow:0 8px 30px rgba(0,0,0,.28);padding:8px}
.enh-lang[hidden]{display:none}
.enh-lang ul{list-style:none;margin:0;padding:0}
.enh-lang a{display:block;padding:9px 10px;border-radius:8px;color:#1a1a1a;text-decoration:none;font-size:14px}
.enh-lang a:hover{background:#f3f3f3}
.enh-sr{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}
/* User toggles applied to <html> */
html.enh-contrast,html.enh-contrast body{background:#000 !important;color:#fff !important}
html.enh-contrast a{color:#ffe14d !important}
html.enh-contrast img{filter:none}
html.enh-links a{text-decoration:underline !important;outline:1px dashed currentColor;outline-offset:2px}
html.enh-readable body,html.enh-readable p,html.enh-readable li,html.enh-readable span,html.enh-readable a,html.enh-readable td,html.enh-readable div{font-family:Verdana,"Segoe UI",Tahoma,Arial,sans-serif !important;letter-spacing:.01em;line-height:1.7 !important}
@media (prefers-reduced-motion:no-preference){.enh-panel,.enh-lang{animation:enh-in .12s ease-out}}
@keyframes enh-in{from{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}
@media print{.enh-bar,.enh-panel,.enh-lang{display:none !important}}


/* ============================================================
   SECTION LABELS - eyebrow / page-eyebrow / topic badge
   Added 2026-06-29. Token-adaptive, collision-free (lbl- prefix).
   Inherits each site palette via CSS variable fallbacks.
   ============================================================ */
.lbl-eyebrow{
  display:block;
  font-family:var(--sans,var(--body,ui-sans-serif,system-ui,sans-serif));
  font-size:.72rem;
  font-weight:600;
  letter-spacing:.16em;
  text-transform:uppercase;
  line-height:1.4;
  color:var(--accent,var(--gold,var(--cobalt,var(--navy,#8C6E4D))));
  margin:0 0 .55rem;
}
.lbl-pageeyebrow{
  display:block;
  font-family:var(--sans,var(--body,ui-sans-serif,system-ui,sans-serif));
  font-size:.78rem;
  font-weight:600;
  letter-spacing:.2em;
  text-transform:uppercase;
  line-height:1.4;
  color:var(--ink-2,var(--ink-mid,var(--ink-quiet,#5A635E)));
  margin:0 0 .85rem;
}
.lbl-badges{
  display:flex;
  flex-wrap:wrap;
  gap:.5rem;
  justify-content:center;
  margin:.7rem 0 0;
  padding:0;
  list-style:none;
}
.lbl-badge{
  display:inline-flex;
  align-items:center;
  font-family:var(--sans,var(--body,ui-sans-serif,system-ui,sans-serif));
  font-size:.7rem;
  font-weight:600;
  letter-spacing:.08em;
  text-transform:uppercase;
  line-height:1;
  color:var(--ink-2,var(--ink-mid,var(--ink-quiet,#5A635E)));
  background:transparent;
  border:1px solid var(--line,var(--rule,var(--hairline,rgba(0,0,0,.16))));
  border-radius:999px;
  padding:.5em .9em;
}
.lbl-badge--accent{
  color:var(--accent,var(--gold,var(--cobalt,var(--navy,#8C6E4D))));
}
@media (max-width:480px){
  .lbl-pageeyebrow{letter-spacing:.16em}
  .lbl-eyebrow{letter-spacing:.13em}
}


/* ============================================================
   BOTTOM-OF-PAGE FINE PRINT
   Applied 2026-07-11, 10:12 AM CT (America/Chicago).
   Scope: footer, trust layer / structured summary, disclosures,
   last-updated stamp, copyright and legal lines, citation notes.
   Changes SIZE, WEIGHT and COLOR only. No wording, no link
   targets, no JSON-LD, no markup, no structure changed.

   ACCESSIBILITY FLOOR, enforced, not optional:
     minimum effective size  13px  (0.8125rem)
     minimum contrast        4.5:1 WCAG AA, normal text
   Several bottom-of-page values shipped BELOW AA before this
   change. They are corrected here, not preserved.

   Selectors are prefixed html body and carry !important so they
   win over the inline styles on the trust layer regardless of
   stylesheet order. No HTML file is modified.
   ============================================================ */
html body{
  --fp-size:13.5px;    /* fine print body copy                */
  --fp-min:13px;       /* hard floor, never smaller           */
  --fp-sub:14px;       /* sub-heading inside the trust layer  */
  --fp-ink:#5A6070;    /* AA: 6.28:1 on #FFF, 5.92:1 on #FAF8F2,
                              6.02:1 on #FAFAFA, 5.27:1 on #EEEBE3 */
  --fp-strong:#1D1D1F; /* emphasis, 16.12:1 on #FAFAFA        */
}

/* ---- Trust layer, Institutional Identity, Structured Summary ----
   Was 14.5px. Now 13.5px. Inline styled, so !important is required. */
html body aside[data-trust-layer]{
  font-size:var(--fp-size) !important;
  line-height:1.62 !important;
  font-weight:400 !important;
  color:var(--fp-ink) !important;
}
html body aside[data-trust-layer] p,
html body aside[data-trust-layer] li,
html body aside[data-trust-layer] ul,
html body aside[data-trust-layer] span{
  font-size:var(--fp-size) !important;
  color:var(--fp-ink) !important;
}
/* Eyebrow labels were 11px at #8a8f98, 3.11:1, an AA failure and below
   the 13px floor. Raised to the floor and recoloured to AA. Weight,
   tracking and uppercase are kept, so the hierarchy inside the block
   still reads. */
html body aside[data-trust-layer] div[style*="letter-spacing"]{
  font-size:var(--fp-min) !important;
  color:var(--fp-ink) !important;
}
/* Sub-headings inside the block: 16px down to 14px, weight held at 600. */
html body aside[data-trust-layer] div[style*="font-weight:600"]{
  font-size:var(--fp-sub) !important;
  color:var(--fp-strong) !important;
}
html body aside[data-trust-layer] strong{ color:var(--fp-strong) !important; }
/* Source links keep their existing colour, #586173 at 5.97:1, already AA. */

/* ---- Footer legal, disclaimer and copyright lines ----
   Were 12.5px, below the floor, at 3.64:1 / 2.95:1 / 2.78:1, all AA
   failures. Now at the 13px floor and AA compliant. */
html body footer .legal{
  font-size:var(--fp-min) !important;
  font-weight:400 !important;
  line-height:1.55 !important;
  color:var(--fp-ink) !important;
}
html body footer .pl a{
  font-size:var(--fp-min) !important;
  color:var(--fp-ink) !important;
}
html body footer .note,
html body footer small{
  font-size:var(--fp-min) !important;
  color:var(--fp-ink) !important;
}
/* Network eyebrow in the footer, was 11px at 2.47:1. */
html body footer .fnet-h{
  font-size:var(--fp-min) !important;
  color:var(--fp-ink) !important;
}
/* Policy link row, inline styled at 12.5px and #8a8a8a, 3.45:1 on white
   and 2.90:1 on paper, both AA failures. */
html body div[data-legal="links"],
html body div[data-legal="links"] a{
  font-size:var(--fp-min) !important;
  color:var(--fp-ink) !important;
}

/* ---- Footer base text floor ----
   Subpage footers render their copyright and stamp line at 0.72rem
   (11.52px), below the 13px accessibility floor. Raised to the floor.
   Some sites use a separate large dark footer (.bigfoot) whose
   children are already sized at or above the floor, so it is excluded. */
html body footer:not(.bigfoot){ font-size:13px !important; }
/* Footer base colour floor. Some subpage footers ship a washed value, for
   example #9690A8 on #FAF9FE at 2.93:1, an AA failure. Held at the muted
   but AA-passing fine-print ink. Size down, do not wash out. */
html body footer:not(.bigfoot){ color:var(--fp-ink) !important; }

/* ---- Retaining-counsel disclosure band ----
   Inline styled at 11.5px and #9aa0ab: 2.29:1 on paper, 2.63:1 on white,
   2.47:1 on tint. Hard AA failures, and below the 13px floor. Raised to the
   floor and held at the AA-passing fine-print ink. Accent link colours are
   left as they are, all already pass AA. */
html body div[data-legal="atty"]{
  font-size:13px !important;
  line-height:1.5 !important;
  color:var(--fp-ink) !important;
}
html body div[data-legal="atty"] a{ font-size:13px !important; }

/* ---- Footer locality and clock line ---- was 11px, below the floor. */
html body .dallas-clock{
  font-size:13px !important;
  color:var(--fp-ink) !important;
}


/* ============================================================
   BRAND MARKS  ·  correct current mark, official colour
   Rebuilt 20260712T231544Z. Every colour below was read from the brand's OWN
   asset, not from a third-party colour database and not from memory.
   Source URL for each mark is recorded in _BRANDMARKS_REPORT.json.

   Rule 1 CORRECT MARK. Five marks were not the brand's logo at all and
   have been replaced in the HTML with the brand's own current mark:
   Instagram (now the official gradient glyph), Wikidata (now the official
   tri-colour bar mark), Academia.edu (was a generic graduation cap),
   SlideShare (was a generic slideshow glyph; also rebranded in 2025),
   F6S (was the letters "F6S" set in Arial).

   Rule 2 OFFICIAL COLOUR. No mark is greyed out, inverted or arbitrarily
   recoloured. GitHub and Academia.edu ship black by their own guidelines.

   ACCESSIBILITY. Official brand colours are NOT altered to chase contrast.
   ORCID green is 1.82:1 on white and F6S coral is 2.9:1. Per WCAG 1.4.11 the
   CONTROL, not the brand mark inside it, is what must be identifiable:
     - 3:1 control boundary on every icon, independent of the mark colour
     - accessible name (aria-label) on every icon, so colour and shape are
       never the sole carrier of meaning
     - focus indicator is ours, 8:1, never the brand colour
     - hit target 44x44, well over the 24x24 minimum
   ============================================================ */

#social-cluster-bar a[aria-label],
.chip[aria-label]{
  border:1px solid #8A9099 !important;
  min-width:44px;
  min-height:44px;
}
#social-cluster-bar a[aria-label]:focus-visible,
.chip[aria-label]:focus-visible,
.share-btn:focus-visible{
  outline:3px solid #1F44C4 !important;
  outline-offset:3px;
  border-radius:50%;
}
.share-btn:focus-visible{ border-radius:8px; }
#social-cluster-bar a[aria-label]:hover,
.chip[aria-label]:hover{ border-color:#0F1218 !important; }

/* clear space: each mark keeps its own margin inside the 44px control */
#social-cluster-bar a[aria-label] svg,
.chip[aria-label] svg{ width:18px !important; height:18px !important; }
/* Wikidata's mark is 1050x590. Never stretch it to a square. */
.chip[aria-label="Wikidata"] svg,
#social-cluster-bar a[aria-label="Wikidata"] svg{ width:20px !important; height:11.24px !important; }
/* SlideShare's mark is 170x133. */
.chip[aria-label="SlideShare"] svg,
#social-cluster-bar a[aria-label="SlideShare"] svg{ width:18px !important; height:14.08px !important; }
/* Academia's mark is 24x23. */
.chip[aria-label="Academia"] svg,
#social-cluster-bar a[aria-label="Academia"] svg{ width:18px !important; height:17.25px !important; }

/* --- official brand colours (glyphs use fill:currentColor) --- */
/* ORCID         #A6CE39  https://info.orcid.org/brand-guidelines/ */
#social-cluster-bar a[aria-label="ORCID"],
.chip[aria-label="ORCID"]{ color:#A6CE39 !important; }

/* Substack      #FF6719  https://substack.com/brand */
#social-cluster-bar a[aria-label="Substack"],
.chip[aria-label="Substack"]{ color:#FF6719 !important; }

/* SoundCloud    #FF5500  https://soundcloud.com/company/media-kit */
#social-cluster-bar a[aria-label="SoundCloud"],
.chip[aria-label="SoundCloud"]{ color:#CD4400 !important; }

/* LinkedIn      #0A66C2  https://brand.linkedin.com/ */
#social-cluster-bar a[aria-label="LinkedIn"],
.chip[aria-label="LinkedIn"]{ color:#0A66C2 !important; }

/* X             #000000  https://about.x.com/en/who-we-are/brand-toolkit */
#social-cluster-bar a[aria-label="X"],
.chip[aria-label="X"]{ color:#000000 !important; }

/* YouTube       #FF0000  https://www.youtube.com/howyoutubeworks/resources/brand-resources/ */
#social-cluster-bar a[aria-label="YouTube"],
.chip[aria-label="YouTube"]{ color:#FF0000 !important; }

/* Bluesky       #0A7AFF  https://bsky.social/about/blog/4-18-2024-bluesky-logo */
#social-cluster-bar a[aria-label="Bluesky"],
.chip[aria-label="Bluesky"]{ color:#0A7AFF !important; }

/* GitHub        #000000  https://brand.github.com/foundations/logo */
#social-cluster-bar a[aria-label="GitHub"],
.chip[aria-label="GitHub"]{ color:#000000 !important; }

/* Medium        #242424  https://medium.com/ masthead wordmark SVG, path fill */
#social-cluster-bar a[aria-label="Medium"],
.chip[aria-label="Medium"]{ color:#242424 !important; }

/* Crunchbase    #146AFF  https://about.crunchbase.com/ own logo asset "Logo (Blue).svg", path fill */
#social-cluster-bar a[aria-label="Crunchbase"],
.chip[aria-label="Crunchbase"]{ color:#146AFF !important; }

/* ResearchGate  #011716  https://c5.rgstatic.net/m/46072002334150/images/template/brand-header-logo--black.svg */
#social-cluster-bar a[aria-label="ResearchGate"],
.chip[aria-label="ResearchGate"]{ color:#011716 !important; }

/* Scribd        #098647  https://www.scribd.com/ own favicon, pixel-sampled */
#social-cluster-bar a[aria-label="Scribd"],
.chip[aria-label="Scribd"]{ color:#098647 !important; }

/* SlideShare    #312E56  https://www.slideshare.net/ design token --navy-700 + own favicon glyph */
#social-cluster-bar a[aria-label="SlideShare"],
.chip[aria-label="SlideShare"]{ color:#312E56 !important; }

/* Academia      #000000  https://www.academia.edu/images/academia-logo-2021.svg  (fill="black") */
#social-cluster-bar a[aria-label="Academia"],
.chip[aria-label="Academia"]{ color:#000000 !important; }

/* Instagram, Wikidata and F6S carry their colour inside the SVG:
   Instagram is an official gradient, Wikidata is officially tri-colour,
   F6S is an official coral disc with a white glyph. Do not set colour on them. */
