  /* org-supplied colour (gh#6311): it marks ONE thing everywhere it appears -- something
     the organization itself said, never a second brand accent. gh#8944 (Reif's "Claimed
     and Verified Marks"): the org's own voice is claim amber; blue is Verified only. */
  :root{--org:var(--claim-ink,#8a5306);--org-soft:#fff;--org-line:var(--rule,#e6e9e4);}
  *{box-sizing:border-box;}
  html{-webkit-text-size-adjust:100%;scroll-behavior:smooth;}
  body{margin:0;background:var(--paper);color:var(--ink);font-family:var(--sans);
    font-size:15px;line-height:1.6;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;}
  /* content links: burgundy with a dashed underline (the green's complement). Structural nav +
     buttons opt OUT below so they don't read as body links. */
  a{color:var(--burgundy);text-decoration:underline;text-decoration-style:dashed;
    text-decoration-thickness:1px;text-decoration-color:var(--burgundy-line);text-underline-offset:2px;}
  a:hover{color:var(--burgundy-ink);text-decoration-color:var(--burgundy);}
  a:focus-visible{outline:2px solid var(--burgundy);outline-offset:2px;}
  /* not-a-body-link: structural navigation, breadcrumbs, masthead, chips, buttons, year picker */
  .crumbs a,.mhead a,.nav-link,.mnav-link,.dlyr,.ibdl,.ib-action,.ggmore,.yrsel,.so-name,.so-action,.fvbadge a,.src a,.claim-prompt-link{
    text-decoration:none;}

  .progress-track{position:sticky;top:0;left:0;height:3px;width:100%;background:transparent;z-index:60;}
  .progress-bar{height:3px;width:0;background:var(--accent);transition:width .08s linear;}

  /* shared 990 Scout masthead (matches the philanthropy.org parent header); --font-label
     scoped to the masthead + breadcrumb only, so the record body keeps its own type. */
  .mhead{font-family:var(--font-label,"IBM Plex Sans",ui-sans-serif,system-ui,-apple-system,'Segoe UI',Roboto,sans-serif);}
  /* content-width parity (board #3709026): 1180px was the site-wide .wrap max-width shared
     with home.html, hub.html (the directory), and ~26 other templates. gh#6996 (Reif, on a
     screenshot at a wide viewport: "we should get this wider as well, use the space") widens
     THIS page only, on purpose breaking that parity again -- a 3-column report with a data
     rail reads better wide, unlike the single-column marketing pages parity was fixing. Keep
     .topbar/.so-in/.wrap in lockstep: they're independent rules, but a report page whose
     masthead is narrower than its body looks broken. */
  .topbar{max-width:1440px;margin:0 auto;padding:var(--s5) var(--s6) 0;}
  .crumbs{font-family:var(--font-label,"IBM Plex Sans",ui-sans-serif,system-ui,sans-serif);font-size:12px;color:var(--faint);margin:6px 0 0;padding-top:6px;border-top:1px solid var(--rule-soft);}
  .crumbs a{color:var(--muted);}
  .crumbs a:hover{color:var(--accent);}
  .crumbs .sep{margin:0 2px;}
  /* gh#7558: mobile shows only the back link; desktop shows only the full trail. Both
     render server-side always (crawlable either way) -- this is a pure display toggle. */
  .crumbs-back{display:none;font-weight:600;color:var(--muted);}
  @media(max-width:820px){
    .crumbs{margin:2px 0 0;padding-top:0;border-top:0;}
    .crumbs-full{display:none;}
    .crumbs-back{display:inline-block;}
  }

  /* slim identity bar that reveals on scroll, so you never lose track of whose record it is */
  .stickyorg{position:fixed;top:0;left:0;right:0;z-index:55;background:rgba(255,255,255,.94);
    -webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border-bottom:1px solid var(--rule);
    transform:translateY(-100%);transition:transform .22s ease;}
  .stickyorg.show{transform:translateY(0);}
  .so-in{max-width:1440px;margin:0 auto;padding:var(--s3) var(--s6);display:flex;align-items:center;gap:var(--s3);}
  .so-logo{width:26px;height:26px;object-fit:contain;background:#fff;border:1px solid var(--rule-soft);border-radius:5px;padding:2px;flex:none;}
  .so-name{font-family:var(--serif);font-size:16px;font-weight:400;color:var(--ink);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:0;flex:1;text-decoration:none;}
  .so-name:hover,.so-cur:hover{text-decoration:underline dashed;text-underline-offset:3px;}
  /* current-section indicator: on mobile the sticky bar shows WHERE you are as you scroll
     (the left rail already does this on desktop, so it's mobile-only). Updated by the scroll-spy. */
  .so-cur{font-family:var(--mono);font-size:10px;font-weight:600;letter-spacing:.07em;text-transform:uppercase;
    color:var(--accent);white-space:nowrap;flex:none;display:none;max-width:46%;overflow:hidden;text-overflow:ellipsis;}
  .so-cur:empty{display:none;}
  .so-actions{display:flex;align-items:center;gap:var(--s3);flex:none;margin-left:auto;}
  .so-action{display:inline-flex;align-items:center;gap:5px;font-family:var(--font-label,"IBM Plex Sans",ui-sans-serif,system-ui,sans-serif);
    font-size:12px;font-weight:600;color:var(--muted);white-space:nowrap;}
  .so-action:hover{color:var(--ink);}
  .so-action svg{width:13px;height:13px;flex:none;}
  .so-action-claim{color:var(--claim-ink);}
  .so-action-claim:hover{color:#6f4204;}
  @media (max-width:820px){.so-cur{display:block;} .so-actions{display:none;}}

  .mobilenav{display:none;}

  .wrap{max-width:1440px;margin:0 auto;padding:var(--s5) var(--s6) var(--s8);
    display:grid;grid-template-columns:200px minmax(0,1fr) 320px;gap:var(--s7);align-items:start;}
  /* aside is the 3rd .wrap grid track (fixed 320px), same as .main is the 2nd -- .main got
     min-width:0 below but aside never did. A grid item's default min-width:auto floors it at
     its own min-content width, so any intrinsically-wide descendant (a long unbroken run in
     the org name, a <select> sized to its widest option, ...) can force the whole rail card
     past its 320px track and off the right edge instead of shrinking to fit -- the card Reif
     screenshotted clipping "The Center for Disordered Eating DBA Carolina Resource Center for
     Eating" at ~2000px desktop. min-width:0 lets it shrink to the track like .main already does. */
  aside{min-width:0;}

  /* ---------- gh#7654: report-page tile grid (Direction A, v5) ----------
     A `.wrap` grid item spanning all 3 tracks (`grid-column:1/-1`), so it never sits
     beside the left TOC or right rail -- those start their own row underneath it. */
  /* `.head` (not `.rf-grid`) is the direct child of `.wrap`'s grid -- grid-column
     placement only applies to direct grid children, so the span belongs here. */
  .head{grid-column:1/-1;}
  .rf-grid{display:grid;grid-template-columns:repeat(12,1fr);gap:var(--s5);margin-bottom:var(--s6);}
  .rf-g{background:var(--card);border:1px solid var(--rule);border-radius:var(--r2);box-shadow:var(--card-shadow);padding:var(--s4);}
  .rf-g-logo{width:64px;height:64px;object-fit:contain;background:#fff;border:1px solid var(--rule-soft);border-radius:12px;padding:6px;flex:none;}
  .rf-g-identity-body{min-width:0;flex:1;}
  @media(max-width:820px){
    .rf-grid{grid-template-columns:repeat(2,1fr);gap:var(--s4);}
  }

  /* gh#7654: was font-family:var(--mono) -- a structural nav heading ("Contents", "Filing
     year"), not an IRS-cited data label, so it read like every citation tag beside it
     (mono caps "on everything... no hierarchy", Reif 2026-09-28). Sans caps instead,
     matching .insight-label's already-established structural-label convention. */
  .nav-link{display:block;padding:6px 0 6px var(--s3);
    color:var(--ink-2);font-size:13px;line-height:1.3;transition:border-color .15s,color .15s;}
  .nav-link.active{color:var(--accent-ink);border-left-color:var(--accent);font-weight:600;}

  .main{min-width:0;}
  .hatnote{font-family:var(--serif);font-style:italic;font-size:15.5px;color:var(--ink-2);
    background:var(--tint);padding:var(--s3) var(--s4);margin-bottom:var(--s6);line-height:1.5;}
  .title{font-family:var(--serif);font-weight:400;font-size:44px;line-height:1.05;letter-spacing:-.015em;margin:0 0 var(--s4);}
  .title .fybadge{display:inline-block;vertical-align:middle;font-family:var(--mono);font-size:15px;
    font-weight:600;letter-spacing:.02em;color:var(--muted);margin-left:var(--s3);}
  /* gh#8944: Claimed then Verified at 22px beside the name (Reif's "Claimed and Verified
     Marks"), then one words line: "Claimed report · Verified organization · EIN". */
  h1.title .tmarks{vertical-align:.02em;margin-left:.22em;}
  .rp-trust{display:flex;flex-wrap:wrap;align-items:center;gap:4px 10px;margin:0 0 6px;font-size:13.5px;}
  .rp-trust-c{color:var(--claim-ink);font-weight:500;}
  /* gh#12199: the progress ring and public checklist. Neutral ink until the verified mark;
     blue (--real) means authority, so it appears only with that mark. */
  .rp-ring{position:relative;max-width:100%;color:#8a7f6b;}
  /* Reif 2026-10-15 "unsightly": the open list used to sit in the row's flow, so the row grew
     to the list's height and "Claimed by the org" dropped to its middle. Now the list floats
     over the page under the ring (a bottom sheet on phones) and the row never moves. */
  .rp-ring.is-verified{color:var(--real);}
  .rp-ring summary{list-style:none;cursor:pointer;display:inline-flex;align-items:center;gap:8px;min-height:44px;min-width:44px;font:600 13px/1 var(--sans);color:var(--ink);}
  .rp-ring summary::-webkit-details-marker{display:none;}
  .rp-ring svg{width:28px;height:28px;flex:none;transform:rotate(-90deg);}
  .rp-ring circle{fill:none;stroke-width:3.5;}
  .rp-ring .rp-ring-bg{stroke:var(--rule,#e4ded2);}
  .rp-ring .rp-ring-fg{stroke:#8a7f6b;stroke-linecap:round;}
  .rp-ring.is-verified .rp-ring-fg{stroke:var(--real);}
  .rp-ring ol{position:absolute;left:0;top:calc(100% + 6px);z-index:70;list-style:none;margin:0;padding:14px 16px;width:340px;max-width:calc(100vw - 32px);border:1px solid var(--rule,#e4ded2);border-radius:10px;background:#fff;box-shadow:0 8px 28px rgba(0,0,0,.16);font:400 13.5px/1.4 var(--sans);color:var(--ink);display:flex;flex-direction:column;gap:9px;}
  .rp-ring li{display:flex;gap:10px;justify-content:space-between;align-items:baseline;}
  .rp-ring li b{font-weight:600;}
  .rp-ring li.is-open{color:var(--muted);}
  .rp-ring li.is-open b{font-weight:500;}
  .rp-ring li span{font-family:var(--mono);font-size:11.5px;color:var(--muted);white-space:nowrap;}
  @media (max-width:720px){
    .rp-ring ol{position:fixed;left:16px;right:16px;top:auto;bottom:calc(16px + env(safe-area-inset-bottom,0px) + var(--dock-safe-bottom,0px));width:auto;max-width:none;max-height:70vh;overflow:auto;padding:16px 18px;}
  }
  .rp-trust-sp{display:inline-flex;align-items:center;min-height:44px;margin-left:10px;font-weight:600;color:var(--accent-ink);}
  .rp-trust-v{color:var(--real-ink);font-weight:500;white-space:nowrap;}
  .rp-vsheet{position:relative;max-width:100%;}
  .rp-vsheet summary{list-style:none;cursor:pointer;display:inline-flex;align-items:center;gap:5px;}
  .rp-vsheet summary::-webkit-details-marker{display:none;}
  .rp-trust-v.rp-vsheet{height:auto;}
  .rp-vsheet summary{min-height:44px;min-width:44px;margin:-8px 0;}
  .rp-vsheet div{position:static;margin-top:4px;width:280px;max-width:calc(100vw - 32px);padding:12px 14px;border:1px solid var(--rule,#e4ded2);border-radius:8px;background:#fff;box-shadow:0 4px 16px rgba(0,0,0,.12);font:400 13px/1.45 var(--sans);color:var(--ink,#1a1c19);white-space:normal;display:none;flex-direction:column;gap:6px;}
  .rp-vsheet[open] div{display:flex;}
  .rp-vsheet-age{color:var(--muted);}
  .rp-trust i{font:400 13.5px var(--sans);color:#c9c2b5;margin-right:10px;}
  .rp-trust-ein{font-family:var(--mono);font-size:12px;color:var(--muted);white-space:nowrap;}
  /* gh#7480: the old fix (a bare &nbsp; between the name and the badge) glued the LAST
     WORD to the nbsp character but not to the badge itself -- Jinja's default whitespace
     handling (no trim_blocks) reprints _verified_badge.html's own leading newlines/indent
     as a literal, collapsible space between that nbsp and the badge's actual markup, so the
     line could still break there: badge drops to its own line below the full name instead
     of wrapping down WITH the last word. `white-space:nowrap` on the wrapper glues the last
     word + badge into one unbreakable unit regardless of any stray whitespace inside it. */
  .title .name-badge{white-space:nowrap;}
  /* gh#3319: non-current-year filing banner -- same amber-notice tone as the classic
     profile.html's .fyold, so the two renderers read as one consistent signal. */
  .fyold{margin:0 0 var(--s5);font-family:var(--sans);font-size:13px;padding:var(--s3) var(--s4);
    border-radius:4px;background:#f3f0e7;border:1px solid #e6d9b3;color:#7a5b12;}
  .fyold a{font-weight:600;}
  /* gh#7230: states which 12 months the selected filing year covers, so a URL/FY-label
     mismatch on a non-December fiscal-year-end filer is never left unexplained. */
  .fyperiod{font-family:var(--sans);font-size:13px;color:var(--muted);margin:0 0 var(--s5);}
  .id-row{display:flex;flex-wrap:wrap;align-items:center;gap:var(--s2) var(--s4);
    padding-bottom:var(--s4);border-bottom:2px solid var(--ink);margin-bottom:var(--s6);}
  /* .ein renders in the same wrapping row as the .chip group (identity #3218) -- giving it the
     same border/pad/bg makes it read as one consistent chip group instead of a bare label
     followed by boxed chips, which was the visual split behind the "orphaned chip" look. */
  .ein{font-family:var(--mono);font-size:12px;color:var(--ink-2);border:1px solid var(--rule);border-radius:2px;padding:3px var(--s3);background:var(--tint);}
  .ein b{color:var(--muted);font-weight:400;}
  .chip{font-size:12px;color:var(--muted);border:1px solid var(--rule);border-radius:2px;padding:3px var(--s3);background:var(--tint);}
  /* gh#7623: category/location chips that link into their hub page read as links (not
     plain facts) -- underline on hover/focus, same token colors as the rest of the chip
     group so the affordance doesn't clash with the plain (unlinked) chips beside them. */
  a.chip{text-decoration:none;}
  a.chip:hover,a.chip:focus{text-decoration:underline;color:var(--ink);}
  /* gh#7434: renamed .vbadge -> .fvbadge (filing-verified, "figures match the IRS
     filing" -- unrelated to org-claim verification). This page now also includes
     _verified_badge.html (the shared trust-mark rosette), which owns the class name
     ".vbadge" globally -- sharing it with this local rule collided: this rule's
     margin-bottom + flex-wrap leaked onto the shared rosette's <span class="vbadge">,
     turning its single-line pill into a tall wrapped block. */
  .fvbadge{display:inline-flex;align-items:center;gap:8px;flex-wrap:wrap;margin:0 0 var(--s6);
    border:1px solid var(--accent-soft);background:var(--accent-soft);border-radius:999px;padding:6px 13px 6px 9px;font-size:12.5px;}
  .fvbadge .vchk{width:17px;height:17px;flex:none;border-radius:50%;background:var(--accent);display:inline-flex;align-items:center;justify-content:center;}
  .fvbadge .vchk svg{width:10px;height:10px;stroke:#fff;}
  .fvbadge b{color:var(--accent-ink);font-weight:700;}
  .fvbadge .vdt{color:var(--muted);font-family:var(--mono);font-size:11px;}
  .fvbadge .vsep{color:#b9ccbc;}
  .fvbadge .vsrc{color:var(--muted);}
  .fvbadge a{color:var(--accent-ink);font-weight:600;border-bottom:1px solid #b9ccbc;}

  /* claim CTA: "Is this your organization?" for unclaimed orgs. Claim amber (gh#8944):
     claiming is the org's own voice, never the verified blue. */
  .claim-cta{display:flex;align-items:center;gap:12px;background:#fff;border:1px solid var(--rule);
    border-radius:8px;padding:12px 16px;margin:0 0 var(--s6);font-size:15px;line-height:1.5;}
  /* gh#7450: the claimed-org variant of this card renders with [hidden] server-side until
     badge_cta.js reveals it for a confirmed owner -- an author `display:flex` rule always
     beats the UA [hidden]{display:none} stylesheet rule regardless of specificity, so
     without this the "hidden" card still rendered visibly, empty. */
  .claim-cta[hidden]{display:none;}
  /* .claim-cta-content is the actual icon+copy+button row -- .claim-copy's flex:1/min-width:0
     and .claim-cta-link's flex:none already assumed a flex parent, but that rule lived one
     level up on .claim-cta (which only ever has this one child), so .claim-cta-content itself
     fell back to block and stacked icon/copy/button instead of laying them out in a row
     (identity #3218: check icon rendering on its own line, dead space beside the button). */
  .claim-cta-content{display:flex;align-items:center;gap:12px;flex:1;min-width:0;}
  .claim-icon{width:24px;height:24px;border-radius:50%;background:var(--accent);color:#fff;display:inline-flex;
    align-items:center;justify-content:center;flex:none;font-size:14px;font-weight:600;}
  .claim-copy{display:flex;flex-direction:column;flex:1;min-width:0;}
  .claim-headline{font-weight:600;color:var(--ink);}
  .claim-subhead{font-size:13px;color:var(--muted);margin-top:2px;}
  .claim-cta-link{display:inline-flex;align-items:center;min-height:44px;padding:8px 16px;
    background:var(--claim-ink);color:#fff;text-decoration:none;border-radius:6px;font-weight:600;flex:none;
    white-space:nowrap;}
  .claim-cta-link:hover{background:#6f4204;color:#fff;}
  /* Owner badge CTA (gh#5133): one owner-only line appended into the MANAGE CTA's
     .claim-copy by badge_cta.js after its eligibility check answers yes -- never
     server-rendered (see badge_cta.js's own header comment for why). display:inline-flex
     + min-height:44px (gh#5133 VP review, finding 4: measured 146x18 / 70x18 client
     rects, next to a "Manage" button that is 85x44 via .claim-cta-link's own
     min-height:44px above) -- the only revenue link on the page was the hardest thing
     on the card to hit on a phone. min-width:0 is required (not optional, see #3218 and
     .claim-copy above for the same fix): this is a flex item of .claim-copy's column
     flex, and its default min-width:auto refuses to shrink below its own unwrapped text
     width, forcing the whole card wider than the viewport instead of letting the longer
     "Get the Verified Org mark -- $50,000/yr" copy wrap onto a second line. */
  .badge-cta-link{display:inline-flex;align-items:center;flex-wrap:wrap;min-height:44px;min-width:0;
    color:var(--accent-ink);font-weight:600;border-bottom:1px solid #b9ccbc;}

  /* claim/manage prompt (gh#4461): one quiet line at the end of a section, not a
     repeated banner -- see _claim_prompt.html for why. */
  /* gh#10354: a key action, not a footnote -- 16px line, the top banner's button */
  .claim-line{font-size:16px;color:var(--ink);margin-top:var(--s4);line-height:1.5;
    display:flex;flex-wrap:wrap;align-items:center;gap:10px 14px;}
  .claim-line[hidden]{display:none;}
  /* gh#10521, Reif: "not all of them need to be huge and brown boxes" -- the top card keeps
     the one solid button; each section's line ends in a plain underlined link, no box. */
  .claim-line .claim-prompt-link{display:inline;min-height:0;padding:0;border:0;border-radius:0;
    background:transparent;color:var(--claim-ink);font-weight:600;text-decoration:underline;
    text-underline-offset:3px;}
  .claim-line .claim-prompt-link:hover{background:transparent;color:#6f4204;}
  /* gh#11446: the header's claim line + its gloss share a row; the gloss wraps under on a phone. */
  .claim-story{display:flex;flex-wrap:wrap;align-items:baseline;gap:2px 10px;margin-top:var(--s4);}
  .claim-story .claim-line{margin-top:0;}
  .claim-gloss{font-size:16px;line-height:1.5;color:var(--ink);}
  /* gh#11446: helper links beside the claim line (header + rail). Small and quiet, not buttons. */
  .claim-help{display:flex;flex-wrap:wrap;gap:0 16px;margin-top:4px;font-size:13px;line-height:1.4;}
  .claim-help a{display:inline-flex;align-items:center;min-height:44px;color:var(--muted);
    text-decoration:underline;text-underline-offset:3px;}
  .claim-help a:hover{color:var(--ink);}

  /* about-org: owner-provided logo/mission/description/social, "provided by the
     organization" — separate card, not mixed into IRS-derived fields. gh#8540 (Reif):
     this whole block is org-annotated, so it takes the same verified-blue tint/hairline
     as the eyebrow label below it, not the grey `--tint` the IRS-derived panels use --
     "ONE mark, ONE meaning" (gh#3908). No side stripe (docs/design-system.md). */
  .about-org{display:flex;gap:var(--s5);align-items:flex-start;background:#fff;
    border:1px solid var(--rule);border-radius:2px;padding:var(--s5);margin:0 0 var(--s6);}
  .about-org-logo{width:64px;height:64px;object-fit:contain;background:#fff;
    border:1px solid var(--rule-soft);border-radius:8px;padding:6px;flex:none;}
  .atlas-report-link{display:inline-block;margin-top:6px;font-size:12.5px;font-weight:600;}
  .atlas-report-link[hidden]{display:none;}
  .about-org-body{flex:1;min-width:0;}
  /* gh#10847: the org's own words lead the page, big and fully amber. Solid claim amber with
     ink text: the pale --claim-soft tint reads as a warning tile (Reif, gh#9309). */
  .about-org{background:var(--claim-amber);border:0;border-radius:6px;
    padding:var(--s6);margin:0 0 var(--s6);}
  .about-org .about-org-mission,.about-org .about-org-contact,.about-org .about-org-contact .k,
  .about-org .about-org-contact .v,.about-org .about-org-contact .hint,.about-org .about-org-reveal,
  .about-org .about-org-reveal:hover,.about-org a.about-org-social{color:var(--ink);}
  .about-org .about-org-eyebrow{font-size:13px;font-weight:700;letter-spacing:.08em;}
  .about-org-mission{font-family:var(--serif);font-style:italic;font-size:17px;
    color:var(--ink);margin:0 0 var(--s3);line-height:1.5;}
  .about-org-desc{font-size:14.5px;color:var(--ink-2);line-height:1.55;margin:0 0 var(--s3);}
  .about-org-social{display:inline-block;font-size:12.5px;font-weight:600;}
  .about-org-contact{list-style:none;margin:var(--s3) 0 0;padding:0;font-size:13px;
    color:var(--ink-2);line-height:1.7;}
  .about-org-contact li{display:flex;gap:6px;align-items:baseline;}
  .about-org-contact .k{color:var(--faint);flex:none;}
  /* gh#7125: owner-attested facts carry the org's own voice -- claim amber since gh#8944
     (_tokens.html --claim-*). IRS-derived figures never take it, which is what makes the
     color mean something. */
  .about-org .h2-sub.about-org-eyebrow{color:var(--ink);}
  .about-org-contact .v{color:var(--claim-ink);font-weight:600;}
  .about-org-reveal{background:none;border:0;padding:0;font:inherit;cursor:pointer;
    color:var(--claim-ink);font-weight:600;text-decoration:underline;
    text-underline-offset:2px;}
  .about-org-reveal:hover{color:var(--claim-amber);}
  .about-org-reveal[disabled]{opacity:.6;cursor:default;text-decoration:none;}
  .about-org-contact .hint{color:var(--faint);font-weight:400;}

  .ibdl{display:inline-flex;align-items:center;gap:6px;background:var(--accent);color:#fff;border-radius:6px;
    padding:5px 10px;font-size:12px;font-weight:600;text-decoration:none;}
  .ibdl:hover{background:var(--seal-2);color:var(--ink);}
  .ibdl svg{width:14px;height:14px;stroke:#fff;}
  .ibdl:hover svg{stroke:var(--ink);}
  /* compact download stack — sits below the fact infobox, not inside it */
  .ib-actions{display:flex;flex-direction:column;gap:4px;margin-top:var(--s2);}
  .ib-actions .pdf-hero-btn{justify-content:center;margin-bottom:var(--s2);}
  .ib-action{display:inline-flex;align-items:center;gap:5px;padding:5px 10px;border:1px solid var(--rule);border-radius:6px;
    font-size:12px;font-weight:600;color:var(--accent-ink);text-decoration:none;background:var(--paper);}
  .ib-action:hover{background:var(--accent-soft);border-color:var(--accent-3);}
  .ib-action svg{width:13px;height:13px;stroke:var(--accent);flex:none;}
  .dlyr{color:var(--accent);font-weight:600;text-decoration:none;white-space:nowrap;}
  .dlyr:hover{text-decoration:underline;}
  .lead{font-family:var(--serif);font-size:19px;line-height:1.6;color:var(--ink);margin:0 0 var(--s6);}
  .lead .fig{font-family:var(--mono);font-size:.85em;font-weight:500;background:var(--tint);padding:0 4px;border-radius:2px;}

  .alert{font-family:var(--mono);font-size:12px;letter-spacing:.02em;color:#8b0000;background:#fbf2f2;
    border:1px solid #eccccc;border-radius:2px;padding:var(--s3) var(--s4);margin-bottom:var(--s5);}

  .src{font-family:var(--mono);font-size:.6em;vertical-align:super;line-height:0;color:var(--accent);font-weight:500;padding-left:2px;}
  .src a{color:inherit;}

  section{margin-bottom:var(--s7);scroll-margin-top:70px;}
  h2{font-family:var(--serif);font-weight:400;font-size:15px;text-transform:uppercase;letter-spacing:.13em;
    color:var(--muted);margin:0 0 var(--s2);}
  .h2-sub{font-family:var(--mono);font-size:11px;color:var(--accent);letter-spacing:.04em;
    text-transform:uppercase;margin:0 0 var(--s4);padding-bottom:var(--s3);border-bottom:1px solid var(--rule);}
  .prose{font-family:var(--serif);font-size:17.5px;line-height:1.6;color:var(--ink-2);}
  .prose p{margin:0 0 var(--s4);}

  /* multi-year revenue trend + revenue-mix donut (inline SVG from charts.py) */
  .chart-card{border:1px solid var(--rule);border-radius:2px;background:var(--tint);padding:var(--s5) var(--s5) var(--s3);margin:0 0 var(--s5);}
  .chart-head{display:flex;justify-content:space-between;align-items:baseline;margin-bottom:var(--s4);gap:var(--s3);}
  .chart-t{font-size:12.5px;font-weight:600;color:var(--ink-2);}
  .chart-peak{font-family:var(--mono);font-size:10.5px;color:var(--faint);text-transform:uppercase;letter-spacing:.04em;white-space:nowrap;}
  .rh-area{fill:var(--accent);opacity:.09;}
  .rh-line{fill:none;stroke:var(--accent);stroke-width:2;stroke-linejoin:round;stroke-linecap:round;}
  .rh-dot{fill:var(--accent);}
  .rh-lbl{fill:var(--faint);font-family:var(--mono);font-size:9px;}
  .donut-wrap{display:flex;align-items:center;gap:var(--s6);margin-bottom:var(--s5);flex-wrap:wrap;}
  .donut{width:132px;height:132px;flex:none;}
  .dlegend{flex:1;min-width:180px;display:flex;flex-direction:column;gap:var(--s2);}
  .dlrow{display:flex;align-items:baseline;gap:var(--s3);font-size:13.5px;}
  .dlrow .dot{flex:none;position:relative;top:1px;}
  .dlk{color:var(--ink-2);flex:1;min-width:0;}
  .dlv{font-family:var(--mono);font-size:12.5px;color:var(--ink);font-weight:600;white-space:nowrap;}

  /* multi-year metric cards — revenue/expenses/assets/liabilities, each a full chart
     with a true Y-axis + hoverable per-year bars (headline tracks the hovered bar) */
  .mcards{display:grid;grid-template-columns:repeat(2,1fr);gap:var(--s4);margin:0 0 var(--s5);}
  .mc{position:relative;border:1px solid var(--rule);border-radius:2px;background:var(--tint);padding:var(--s4) var(--s5) var(--s3);}
  /* gh#7654: was font-family:var(--mono) -- "Revenue"/"Expenses" is the chart's own
     label, not an IRS citation (that's .mvsub's separate FY/Part-cite text below it). */
  .mc .mk{font-size:11px;font-weight:600;letter-spacing:.06em;text-transform:uppercase;color:var(--faint);margin-bottom:3px;}
  .mc .mv{font-size:22px;font-weight:700;letter-spacing:-.02em;line-height:1.15;color:var(--ink);transition:color .14s ease;}
  .mc .mvsub{font-size:11px;color:var(--muted);margin-top:2px;display:flex;align-items:baseline;gap:6px;flex-wrap:nowrap;min-height:15px;}
  .mc .mvsub small{font-family:var(--mono);font-size:11px;color:var(--muted);}
  .myoy{font-size:11px;font-weight:600;color:var(--muted);white-space:nowrap;}
  .myoy.up{color:var(--accent-ink);} .myoy.down{color:#b0533a;}
  .mchart{display:grid;grid-template-columns:auto 1fr;gap:var(--s2);margin-top:var(--s3);}
  .myaxis{display:flex;flex-direction:column;justify-content:space-between;height:118px;font-family:var(--mono);
    font-size:9px;color:var(--faint);text-align:right;font-variant-numeric:tabular-nums;line-height:1;white-space:nowrap;}
  .mplot{min-width:0;}
  .mbars{display:flex;align-items:flex-end;gap:4px;height:118px;position:relative;
    border-bottom:1.5px solid var(--rule);border-left:1px solid var(--rule);padding:0 3px;}
  .mbars .mgrid{position:absolute;left:0;right:0;border-top:1px solid var(--rule-soft);pointer-events:none;}
  .mbars .mgrid.top{top:0;} .mbars .mgrid.mid{top:50%;}
  .mbars-z{border-bottom:1px solid var(--rule-soft);}
  .mbars-z .mgrid.zero{border-top:1.5px solid var(--rule);}
  .mbars-z .mb>span{position:absolute;left:0;}
  .mbars-z .mb.neg>span{border-radius:0 0 2px 2px;transform-origin:top;}
  .myaxis-z{display:block;position:relative;min-width:3.5em;}
  .myaxis-z>span{position:absolute;right:0;}
  .myaxis-z>span[style^="bottom"]{transform:translateY(50%);}
  .myaxis-z>span[style="bottom:0"]{transform:none;}
  .mb{flex:1;max-width:52px;display:flex;align-items:flex-end;height:100%;position:relative;cursor:pointer;}
  .mb>span{display:block;width:100%;background:#9bb89f;border-radius:2px 2px 0 0;min-height:1px;
    transition:background .14s ease,opacity .14s ease,transform .14s ease;transform-origin:bottom;}
  .mb.sel>span{background:var(--accent);}
  .mb.neg>span{background:#c2603f;}
  .mbars:hover .mb:not(:hover)>span{opacity:.34;}
  .mb:hover>span,.mb:focus-visible>span{opacity:1;background:var(--accent);transform:scaleY(1.02);}
  .mb.neg:hover>span,.mb.neg:focus-visible>span{background:#c2603f;}
  .mb:focus-visible{outline:none;}
  .mread{display:none;font-family:var(--mono);font-size:11px;color:var(--ink);margin:2px 0 4px;font-variant-numeric:tabular-nums;}
  @media (hover:none){.mread{display:block;}}
  .mb::after{content:attr(data-flag);position:absolute;bottom:100%;left:50%;transform:translateX(-50%) translateY(-1px);
    background:var(--ink);color:#fff;font-family:var(--mono);font-size:10px;font-weight:600;padding:3px 8px;border-radius:6px;
    white-space:nowrap;font-variant-numeric:tabular-nums;pointer-events:none;z-index:6;opacity:0;
    transition:opacity .14s ease,transform .14s ease;box-shadow:0 4px 12px rgba(0,0,0,.18);}
  .mb:hover::after,.mb:focus-visible::after{opacity:1;transform:translateX(-50%) translateY(-7px);}
  .mb:first-child::after{left:0;transform:translateX(0) translateY(-1px);}
  .mb:first-child:hover::after,.mb:first-child:focus-visible::after{transform:translateX(0) translateY(-7px);}
  .mb:last-child::after{left:auto;right:0;transform:translateX(0) translateY(-1px);}
  .mb:last-child:hover::after,.mb:last-child:focus-visible::after{transform:translateX(0) translateY(-7px);}
  .mc.preview .mv{color:var(--accent);} .mc.preview.neg .mv{color:#c2603f;}
  .mc.preview .myoy{visibility:hidden;}
  .mxax{display:flex;justify-content:space-between;font-family:var(--mono);font-size:9px;color:var(--faint);margin-top:4px;}
  @media (max-width:560px){.mcards{grid-template-columns:1fr;}}
  /* gh#8803: the by-year charts under the stats line -- three across, then stacked and
     shorter on a phone so the give card stays close. */
  .rp-trend{margin:var(--s5) 0 0;}
  .rp-trend .mcards{grid-template-columns:repeat(3,minmax(0,1fr));gap:var(--s3);margin:0;}
  .rp-trend .mc{padding:var(--s3) var(--s4) var(--s2);}
  .rp-trend .mc .mv{font-size:18px;}
  .rp-trend .myaxis,.rp-trend .mbars{height:84px;}
  /* gh#8803: on a phone the charts ride right under the stats line, ahead of the tall
     "Before you give" block (flex order, DOM untouched), as a swipe row of square cards. */
  @media (max-width:820px){
    .wrap>.rp-lead{display:flex;flex-direction:column;}
    .wrap>.rp-lead>*{min-width:0;max-width:100%;}
    .wrap>.rp-lead>.rp-byg{order:1;}
    .wrap>.rp-lead>.rp-src{order:2;}
    .rp-trend .mcards{display:flex;gap:var(--s3);overflow-x:auto;scroll-snap-type:x mandatory;
      -webkit-overflow-scrolling:touch;padding-bottom:var(--s2);}
    .rp-trend .mc{flex:0 0 min(72vw,260px);aspect-ratio:1/1;scroll-snap-align:start;display:flex;flex-direction:column;}
    .rp-trend .mchart{flex:1;min-height:0;}
    .rp-trend .myaxis,.rp-trend .mbars{height:84px;}
  }
  .sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0;}

  .rows{border-top:1px solid var(--rule);}
  .row{display:flex;align-items:baseline;justify-content:space-between;gap:var(--s4);
    padding:var(--s3) 0;border-bottom:1px solid var(--rule-soft);}
  .row .k{font-size:14.5px;color:var(--ink-2);}
  .row .k .cite{font-family:var(--mono);font-size:10px;color:var(--accent);text-transform:uppercase;letter-spacing:.04em;margin-left:var(--s2);}
  .row .k.indent{padding-left:var(--s4);color:var(--muted);}
  .row .v{font-family:var(--mono);font-size:14.5px;font-weight:600;color:var(--ink);white-space:nowrap;}
  .row .v.pending{color:var(--faint);font-weight:400;}
  /* .row .v is nowrap by default (keeps currency figures on one line), but the identity
     website row puts a long unbroken domain in here -- a flex item's min-width:auto floor
     is the widest UNBREAKABLE run, and nowrap text has no break points at all, so a long
     domain forced the whole row (and .wrap) past the 375px viewport (~679px scrollWidth,
     silently truncated by the html{overflow-x:clip} below). Scoped to the anchor only so
     numeric .v values keep their one-line look. */
  .row .v a{white-space:normal;overflow-wrap:anywhere;word-break:break-word;}
  /* Legal name (gh#3548): same trap as .row .v a above, but the span isn't an anchor so
     that selector never covered it -- a long legal name has no break points under
     nowrap and silently clips against html{overflow-x:clip} below. Scoped to .legal only
     so numeric .row .v values (revenue, assets, etc.) keep their one-line nowrap default. */
  .row .v.legal{white-space:normal;overflow-wrap:anywhere;word-break:break-word;}
  /* gh#12544: federal programs carry a long cite (agency, ALN, pass-through): it goes on its own
     line and the dollar figure never wraps, even at phone width. */
  #federal .row .k .cite{display:block;margin:2px 0 0;}
  #federal .row .v{white-space:nowrap;flex:none;}

  /* How-to-apply text (Part XV Section 2) is filed prose, sometimes paragraphs long --
     stacked blocks that wrap, not a nowrap key/value row (same overflow trap as .legal
     above, worse here since the text is longer and has no natural break points). */
  .apply-note{font-size:14.5px;line-height:1.55;color:var(--ink);margin:0 0 var(--s3);
    overflow-wrap:anywhere;word-break:break-word;}
  .apply-note b{color:var(--ink-2);font-weight:600;}
  .apply-closed{font-size:14.5px;line-height:1.55;color:var(--ink);margin:0 0 var(--s3);}

  .bar-block{margin:var(--s5) 0 var(--s3);}
  .bar-title{font-size:12px;text-transform:uppercase;letter-spacing:.08em;color:var(--muted);margin-bottom:var(--s3);font-weight:600;}
  .bar{display:flex;height:32px;border:1px solid var(--rule);border-radius:2px;overflow:hidden;}
  .seg{display:flex;align-items:center;justify-content:center;font-family:var(--mono);font-size:11px;color:#fff;white-space:nowrap;overflow:hidden;}
  .legend{display:flex;flex-wrap:wrap;gap:var(--s5);margin-top:var(--s3);font-size:13px;color:var(--muted);}
  .legend span{display:inline-flex;align-items:center;gap:6px;}
  .legend b{font-family:var(--mono);color:var(--ink-2);font-weight:600;}
  .dot{width:9px;height:9px;border-radius:2px;}

  .note{font-size:13.5px;color:var(--muted);background:var(--tint);
    padding:var(--s3) var(--s4);margin-top:var(--s5);line-height:1.55;border-radius:0 2px 2px 0;}
  .note b{color:var(--ink-2);}

  .eyebrow{font-family:var(--mono);font-size:11px;letter-spacing:.08em;text-transform:uppercase;
    color:var(--accent);margin-bottom:6px;}
  /* Programs layout moved to report-annotations.css (gh#6561) so the HQ 990 Scout
     pane, which includes that partial and not this file, renders the rows as cards too. */

  .gov{border-top:1px solid var(--rule);}
  .gov-item{display:flex;align-items:baseline;justify-content:space-between;gap:var(--s4);
    padding:var(--s3) 0;border-bottom:1px solid var(--rule-soft);}
  .gov-q{font-size:14.5px;color:var(--ink-2);}
  .gov-q .cite{font-family:var(--mono);font-size:10px;color:var(--accent);text-transform:uppercase;margin-left:var(--s2);letter-spacing:.03em;}
  .gov-a{font-family:var(--mono);font-size:12px;text-transform:uppercase;letter-spacing:.05em;color:var(--faint);
    border:1px solid var(--rule);border-radius:2px;padding:2px var(--s2);white-space:nowrap;}

  .person{display:flex;align-items:baseline;justify-content:space-between;gap:var(--s4);padding:var(--s4) 0;border-bottom:1px solid var(--rule-soft);}
  .person[hidden]{display:none;}
  .person .who{font-size:15.5px;color:var(--ink);}
  .person .role{font-size:13px;color:var(--muted);margin-top:2px;}
  .person .comp{font-family:var(--mono);font-size:14.5px;color:var(--ink);font-weight:600;text-align:right;white-space:nowrap;}
  .person .comp.pending{color:var(--faint);font-weight:400;}
  /* large Part VII rosters (gh#5749): collapse past officer_visible_cap behind a toggle --
     every person still ships in the HTML (no re-fetch), just hidden until expanded */
  .officers-more{display:inline-block;margin-top:var(--s4);font-family:var(--mono);font-size:12px;
    color:var(--accent);font-weight:600;letter-spacing:.02em;background:none;border:0;padding:0;cursor:pointer;}
  .officers-more:hover{text-decoration:underline;}
  .officers-more:focus-visible{outline:2px solid var(--accent);outline-offset:2px;}

  /* section sub-heading + compact data tables (compensation history, peer benchmarks) */
  .subh{font-size:15px;font-weight:600;color:var(--ink);margin:var(--s6) 0 0;}
  .subh .h3-src{font-family:var(--mono);font-size:10px;font-weight:400;letter-spacing:.04em;
    text-transform:uppercase;color:var(--faint);margin-left:var(--s2);}
  .rtable{width:100%;border-collapse:collapse;margin-top:var(--s3);font-size:13.5px;}
  .rtable th{font-family:var(--mono);font-size:10px;letter-spacing:.06em;text-transform:uppercase;
    color:var(--faint);font-weight:600;text-align:left;padding:0 var(--s3) var(--s2);border-bottom:1px solid var(--rule);}
  .rtable th.r,.rtable td.r{text-align:right;font-variant-numeric:tabular-nums;}
  .rtable td{padding:var(--s2) var(--s3);border-bottom:1px solid var(--rule-soft);color:var(--ink-2);}
  .rtable td.r{font-family:var(--mono);font-size:12.5px;color:var(--ink);white-space:nowrap;}
  .rtable td.name{color:var(--ink);}
  .rtable .pctcell{color:var(--muted);}
  .rtable tr:hover td{background:var(--tint);}
  .rcaveat{font-size:11.5px;color:var(--muted);line-height:1.45;margin-top:var(--s3);}
  .tscroll{overflow-x:auto;}
  /* gh#11357 (Reif 2026-10-06): "Scroll under fixed names for multi year". On a phone the pay
     history is wider than the screen; the Name column stays pinned and the years slide under it,
     like a frozen first column in Sheets. Opaque fill (the page backdrop _masthead.html sets on
     body) so the numbers pass under, not through. */
  .rtable.comp-hist th:first-child,.rtable.comp-hist td.name{position:sticky;left:0;z-index:1;background:#EFEDE8;
    min-width:7.5em;max-width:10em;box-shadow:inset -1px 0 0 var(--rule);}
  .rtable.comp-hist tr:hover td.name{background:var(--tint);}
  /* linked people (officers + comp history) → person pages: ink by default, accent on hover */
  .person .who a{color:var(--burgundy);}
  .person .who a:hover{color:var(--burgundy-ink);}
