:root{--canvas:#FAF7F1;--surface:#fff;--ink:#121217;--ink-m:#4A4A5A;--ink-l:#646471;--line:#E4DECE;--gold:#89641C;--gold-l:#E8C96A;--gold-bg:#FDF3DC;--display:'Sentient',Georgia,serif;--body:'Switzer',system-ui,sans-serif}
*{box-sizing:border-box}
html{font-size:100%;scroll-behavior:auto}
body{margin:0;background:var(--canvas);color:var(--ink);font-family:var(--body);font-size:1.0625rem;line-height:1.65;-webkit-font-smoothing:antialiased}
a{color:var(--gold);text-underline-offset:.2em;text-decoration-thickness:1px}
a:hover{text-decoration-thickness:2px}
a:focus-visible{outline:3px solid var(--gold);outline-offset:5px;border-radius:2px}
.skip{position:absolute;left:1rem;top:-8rem;background:var(--surface);padding:.8rem;z-index:5}.skip:focus{top:1rem}
.preview-notice{background:var(--ink);color:var(--canvas);font-size:.875rem;text-align:center;padding:.45rem 1rem}
.site-header{max-width:76rem;margin:auto;display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:.5rem 1rem;padding:1rem;border-bottom:1px solid var(--line)}
.wordmark{font:900 1.75rem/1 var(--display);color:var(--ink);text-decoration:none;white-space:nowrap;display:inline-flex;align-items:center;min-height:2.75rem}.wordmark span{color:var(--gold)}
nav{display:flex;flex-wrap:wrap;gap:.75rem;align-items:center}.nav-links{display:flex;flex-wrap:wrap;gap:.75rem;align-items:center;width:100%}.site-header nav{flex:1 1 100%;overflow-x:auto;padding-bottom:.15rem}.site-header .nav-links a{min-width:2.5rem;justify-content:center}.site-header .nav-links a:last-child{background:var(--gold);color:var(--surface);border-radius:.45rem;padding:0 .8rem}nav a{display:inline-flex;align-items:center;min-height:2.75rem;font-size:.875rem;color:var(--ink);text-decoration:none;font-weight:600;white-space:nowrap}
.article-header{max-width:64rem;margin:auto;padding:2.75rem 1rem 2rem}
.eyebrow{font-size:.8125rem;line-height:1.5;font-weight:700;letter-spacing:.06em;color:var(--gold);margin:0 0 1.25rem}
h1,h2{font-family:var(--display);font-weight:700;text-wrap:balance}
h1{font-size:clamp(2.25rem,5.4vw,4.25rem);line-height:1.09;letter-spacing:-.04em;margin:0 0 1.4rem;overflow-wrap:break-word}
.deck{max-width:39rem;font-size:clamp(1.125rem,2vw,1.375rem);line-height:1.55;color:var(--ink-m);margin:0 0 1.6rem}
.article-meta{display:flex;flex-wrap:wrap;column-gap:1.25rem;row-gap:.3rem;font-size:.875rem;color:var(--ink-m)}
.revision-note{font-size:.875rem;color:var(--ink-l);margin:.65rem 0 0}
.article-content{max-width:64rem;margin:auto;padding:0 1rem 3rem}
.prose{max-width:42rem;margin:0 auto}
p{margin:0 0 1.15rem}
.intro{padding-top:1.25rem;border-top:1px solid var(--line)}
.intro p:first-child{font-size:1.1875rem;color:var(--ink);line-height:1.6}
h2{font-size:clamp(1.65rem,3vw,2.2rem);line-height:1.2;letter-spacing:-.025em;margin:0 0 1rem}
figure{margin:2rem 0 2.5rem;border:1px solid var(--line);border-radius:.625rem;overflow:hidden;background:var(--canvas)}
figure img{display:block;width:100%;height:auto;aspect-ratio:16/9;object-fit:contain}
picture.mobile-art{display:block;background:var(--canvas)}
picture.mobile-art img{aspect-ratio:1}
@media(min-width:768px){picture.mobile-art img{aspect-ratio:16/9}}
figcaption{border-top:1px solid var(--line);display:flex;gap:.9rem;padding:1rem;font-size:.9375rem;line-height:1.55;background:var(--surface)}
.figure-number{color:var(--gold);font-weight:700;font-size:.875rem;padding-top:.1rem}
figcaption strong{font-weight:700;color:var(--ink)}figcaption p{color:var(--ink-m);margin:.25rem 0 0}
.ravehq-note{border-top:3px solid var(--gold);background:var(--gold-bg);padding:1.5rem;margin-top:2.5rem;margin-bottom:2rem}
.ravehq-note .eyebrow{margin-bottom:.75rem}.ravehq-note h2{font-size:1.65rem}.ravehq-note p{font-size:1rem}
.text-link{display:inline-flex;align-items:center;min-height:2.75rem;font-size:1rem;font-weight:700}
.next-action{margin-bottom:2rem}.next-action h2{font-family:var(--body);font-size:1.0625rem;letter-spacing:0;font-weight:700}
.source-note{border-top:1px solid var(--line);padding-top:1rem;font-size:.875rem;color:var(--ink-l)}
.site-footer{border-top:1px solid var(--line);max-width:76rem;margin:auto;padding:2rem 1rem 3rem}.site-footer p{font-size:.9375rem;max-width:29rem;color:var(--ink-m);margin:.6rem 0}.site-footer>a:last-child{display:inline-flex;min-height:2.75rem;align-items:center;font-size:.9375rem;font-weight:600}
@media(min-width:375px){.article-header,.article-content,.site-header,.site-footer{padding-left:1.5rem;padding-right:1.5rem}}
@media(min-width:768px){body{font-size:1.125rem}.site-header{padding:1.25rem 2rem;flex-wrap:nowrap}.site-header nav{flex:1 1 auto;min-width:0;overflow:visible;padding-bottom:0;justify-content:flex-end}.nav-links{width:auto;max-width:100%;flex-wrap:wrap;justify-content:flex-end;gap:.6rem 1rem}nav a{font-size:.9rem}.article-header{padding:4rem 2rem 2.5rem}.article-content{padding:0 2rem 4rem}.intro{padding-top:1.75rem}.intro p:first-child{font-size:1.3125rem}figure{margin:2.5rem 0 3rem}figcaption{padding:1.25rem 1.5rem;gap:1.1rem}.ravehq-note{padding:2rem}.site-footer{padding:2.5rem 2rem 3rem}}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{scroll-behavior:auto!important;animation:none!important;transition:none!important}}
@media print{.preview-notice,nav,.skip{display:none}body{background:var(--surface)}.article-header{padding-top:1rem}figure{break-inside:avoid}.article-content{padding-bottom:0}a{color:inherit}}

.prose h2{margin-top:2rem}
.source-list{padding-left:1.4rem;font-size:.9rem}
.source-list li{margin-bottom:.6rem;overflow-wrap:anywhere}
.figure-pending{aspect-ratio:16/9;display:flex;flex-direction:column;justify-content:center;align-items:center;padding:1.5rem;text-align:center;background:var(--gold-bg)}
.figure-pending p{max-width:36rem;font-size:1rem;margin:.75rem 0 0}
.extra-help{margin-top:2.5rem;border-top:1px solid var(--line);padding-top:1rem}
details{border-bottom:1px solid var(--line);padding:0}
summary{cursor:pointer;min-height:44px;padding:1rem .25rem;font-weight:600;line-height:1.5}
summary:focus-visible{outline:3px solid var(--gold);outline-offset:3px}
details>div{padding:.25rem .25rem 1rem}
.guide-grid{display:grid;grid-template-columns:1fr;gap:1.25rem;list-style:none;padding:0;margin:0}
.guide-grid li{background:var(--surface);border:1px solid var(--line);border-radius:.625rem;padding:1.25rem;min-width:0}
.guide-grid a{font-family:var(--display);font-size:1.4rem;line-height:1.3;display:block;font-weight:700;text-decoration:none}
.guide-grid p{font-size:1rem;margin:1rem 0 .5rem}
.guide-grid span{font-size:.875rem;color:var(--ink-m)}
@media(min-width:768px){.guide-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media print{details>div{display:block}.figure-pending{break-inside:avoid}}

.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%)}
.newsletter-cadence{border:0;padding:0;margin:1rem 0;text-align:left}
.newsletter-cadence legend{font-weight:700}
.newsletter-choice,.newsletter-consent{display:flex;gap:.5rem;align-items:center;min-height:2.75rem;text-align:left;font-size:1rem}
.newsletter-consent{align-items:flex-start;margin-top:1rem}.newsletter-consent input{margin-top:.5rem}
#newsletter-email{min-width:0;width:100%}.newsletter-submit{padding:.75rem 1rem;background:var(--gold);color:var(--surface);font:inherit;border-radius:.5rem;cursor:pointer}
.newsletter-submit:disabled{opacity:.72;cursor:wait}input:focus-visible,button:focus-visible{outline:3px solid var(--gold);outline-offset:3px}
.related{margin-top:2rem}.site-footer nav a{white-space:normal}
/* Article tables on a phone. Cert 37141472621 visual matrix: a 9-column and a 7-column record template pushed the page to 722 and 548 px on a 375 px phone,
   and a two-column table's row label (th[scope=row]{width:30%}) was squeezed to 98 px. Shared rules cover every Insights article, not one page; the
   per-article sheets keep their own bespoke stacked tables (.mc-table, .rr-versions, .df-exhibit) untouched. backend/tests/test_insights_article_tables_mobile.py holds them
   and requires every table of three or more columns to be inside a .table-scroll wrapper or to be one of those named, proven exemptions. */
@media(max-width:640px){
  /* Two columns (label | value): the row label keeps a readable floor instead of a percentage sliver. */
  .article-content table:not(:has(thead th:nth-child(3))) th[scope=row]{width:auto;min-width:7.5rem}
  /* Three or more columns cannot all stay readable side by side in a phone column: the table scrolls inside a wrapper element (.table-scroll, below), so the page never
     gets wider than the screen and no header or cell is squeezed under its floor: 7rem (112 px) at three columns, 7.5rem (120 px) at four, 8rem (128 px) at five or more.
     The floors sit at or above the visual matrix's thresholds (a text leaf under 112 px, or under 120 px in a row wider than 420 px). The table itself stays a table. */
  .article-content .table-scroll table{table-layout:auto;width:100%}
  .article-content .table-scroll table:has(thead th:nth-child(3)) :is(th,td){min-width:7rem;vertical-align:top}
  .article-content .table-scroll table:has(thead th:nth-child(4)) :is(th,td){min-width:7.5rem}
  .article-content .table-scroll table:has(thead th:nth-child(5)) :is(th,td){min-width:8rem}
}
/* The scroll wrapper (a div with role=region, an accessible name and tabindex=0, around the table; the table keeps its own table semantics, which an `display:block` on
   the table itself dropped in some screen readers). It only ever scrolls when a phone column is too narrow for the floors above. */
.article-content .table-scroll{max-width:100%;overflow-x:auto;overscroll-behavior-x:contain}
.article-content .table-scroll:focus-visible{outline:3px solid var(--gold);outline-offset:3px}
@media print{.article-content .table-scroll{overflow:visible}}

/* Header links reach the 44px target width (the base rule above is pinned by test_public_site_release_contract). */
.site-header .nav-links a{min-width:2.75rem}
/* Checkboxes, radios and citation markers reach the 24px target floor. */
input[type="checkbox"],input[type="radio"]{width:1.5rem;height:1.5rem;min-width:1.5rem;flex:none;accent-color:var(--gold)}
sup a{display:inline-block;min-width:24px;min-height:24px;line-height:24px;text-align:center;text-decoration-thickness:1px}
/* One focus ring for every control. */
select:focus-visible,textarea:focus-visible,[tabindex]:focus-visible{outline:3px solid var(--gold);outline-offset:3px}
/* The phone menu. newsletter.js adds .menu-toggle and .js-menu; without script the link row stays as it was. */
.menu-toggle{display:none;flex-direction:column;justify-content:center;align-items:center;gap:5px;width:44px;height:44px;padding:0;background:none;border:1px solid var(--line);border-radius:.625rem;cursor:pointer}
.menu-toggle span{display:block;width:22px;height:2px;background:var(--ink);border-radius:2px}
@media(max-width:767px){
  .js-menu{flex-wrap:wrap}
  .js-menu .menu-toggle{display:flex}
  .js-menu nav{flex:1 1 100%;overflow:visible}
  .js-menu .nav-links{flex-direction:column;align-items:stretch;gap:0;max-height:0;overflow:hidden;visibility:hidden;opacity:0;transition:max-height .25s ease,opacity .2s ease,visibility 0s linear .25s}
  .js-menu.menu-open .nav-links{max-height:32rem;visibility:visible;opacity:1;transition-delay:0s}
  .js-menu .nav-links a{border-bottom:1px solid var(--line);justify-content:flex-start;min-height:2.75rem}
  .js-menu .nav-links a:last-child{border-bottom:0;margin-top:.5rem;justify-content:center}
}
/* The newsletter field and button follow the shared field and pill-button look. */
#newsletter-email{background:var(--surface);color:var(--ink);border-radius:.75rem}
.newsletter-submit{border-radius:999px;font-weight:700;font-size:1rem}
