/* Archon typography. The single source of truth for new and reworked pages.
   Opt in with <TypeSystem /> in head and data-type-system="archon" on body.
   Keep this unlayered and after legacy styles during migration. */
body[data-type-system="archon"]{
 --type-sans:"Geist",ui-sans-serif,system-ui,sans-serif;
 --type-serif:"IBM Plex Serif",ui-serif,Georgia,serif;
 --type-weight:400;--font-sans:var(--type-sans);--font-serif:var(--type-serif);--test-serif:var(--type-serif);
 --type-display:2rem;--type-section:clamp(1.75rem,calc(.607143rem + 5.714286vw),2rem);--type-heading:1.5rem;--type-statement:1.5rem;
 --type-subheading:1.125rem;--type-body:1rem;--type-lead:1.125rem;--type-quote:1.25rem;
 --type-label:.875rem;--type-meta:.75rem;--type-brand:1rem;--type-button:.875rem;
 --type-ui-heading:1.125rem;--type-metric:3rem;--type-demo:.75rem;--type-demo-label:.625rem;
 --type-lh-display:1.08;--type-lh-section:1.15;--type-lh-heading:1.2;--type-lh-statement:1.35;
 --type-lh-body:1.5;--type-lh-ui:1.4;--type-lh-label:1.428571;--type-lh-meta:1.5;--type-lh-metric:1;
 --type-track-display:-.025em;--type-track-heading:-.02em;--type-track-body:0em;
 --type-gap-heading:1rem;--type-gap-action:1.5rem;--type-gap-caption:.5rem;
 font-family:var(--type-sans);font-size:var(--type-body);font-weight:var(--type-weight);line-height:var(--type-lh-body);
}
@media(min-width:768px){body[data-type-system="archon"]{
 --type-display:clamp(3rem,5vw,4.5rem);--type-section:clamp(2.25rem,3.333333vw,3rem);
 --type-heading:clamp(1.75rem,2.222222vw,2rem);--type-statement:var(--type-heading);
 --type-subheading:1.25rem;--type-body:1.125rem;--type-lead:1.25rem;--type-quote:1.5rem;
 --type-ui-heading:1.25rem;--type-metric:4.5rem;
}}
body[data-type-system="archon"] *,body[data-type-system="archon"] *::before,body[data-type-system="archon"] *::after{font-weight:var(--type-weight)!important}
/* Semantic defaults. Nonstandard content uses the explicit data-type-role API. */
body[data-type-system="archon"] :is(h1:not([data-type-role]),[data-type-role="display"]){font-family:var(--type-serif);font-size:var(--type-display);line-height:var(--type-lh-display);letter-spacing:var(--type-track-display)}
body[data-type-system="archon"] :is(main h2:not([data-type-role]),#request h2:not([data-type-role]),[data-type-role="section"]){font-family:var(--type-serif);font-size:var(--type-section);line-height:var(--type-lh-section);letter-spacing:var(--type-track-heading)}
body[data-type-system="archon"] :is(main h3:not([data-type-role]),[data-type-role="heading"]){font-family:var(--type-serif);font-size:var(--type-heading);line-height:var(--type-lh-heading);letter-spacing:var(--type-track-heading)}
body[data-type-system="archon"] :is(main h4:not([data-type-role]),[data-type-role="subheading"]){font-family:var(--type-serif);font-size:var(--type-subheading);line-height:var(--type-lh-ui);letter-spacing:var(--type-track-body)}
body[data-type-system="archon"] :is(main p:not([data-type-role]),[data-type-role="body"]){font-family:var(--type-sans);font-size:var(--type-body);line-height:var(--type-lh-body);letter-spacing:var(--type-track-body)}
body[data-type-system="archon"] [data-type-role="lead"]{font-family:var(--type-sans);font-size:var(--type-lead);line-height:var(--type-lh-body);letter-spacing:var(--type-track-body)}
body[data-type-system="archon"] [data-type-role="statement"]{font-family:var(--type-serif);font-size:var(--type-statement);line-height:var(--type-lh-statement);letter-spacing:var(--type-track-heading)}
body[data-type-system="archon"] :is(blockquote:not([data-type-role]),[data-type-role="quote"]){font-family:var(--type-serif);font-size:var(--type-quote);line-height:var(--type-lh-body);letter-spacing:var(--type-track-body)}
body[data-type-system="archon"] :is(label:not([data-type-role]),dt:not([data-type-role]),figcaption:not([data-type-role]),[data-type-role="label"]){font-family:var(--type-sans);font-size:var(--type-label);line-height:var(--type-lh-label);letter-spacing:var(--type-track-body)}
body[data-type-system="archon"] [data-type-role="meta"]{font-family:var(--type-sans);font-size:var(--type-meta);line-height:var(--type-lh-meta);letter-spacing:var(--type-track-body)}
body[data-type-system="archon"] [data-type-role="ui-heading"]{font-family:var(--type-sans);font-size:var(--type-ui-heading);line-height:var(--type-lh-ui);letter-spacing:var(--type-track-body)}
body[data-type-system="archon"] :is(dd:not([data-type-role]),[data-type-role="metric"]){font-family:var(--type-sans);font-size:var(--type-metric);line-height:var(--type-lh-metric);letter-spacing:var(--type-track-display);font-variant-numeric:tabular-nums}
body[data-type-system="archon"] :is(button:not([data-type-role]),a[data-type-role="button"],a.h-10,a.h-9){font-family:var(--type-sans);font-size:var(--type-button);line-height:var(--type-lh-label);letter-spacing:var(--type-track-body)}
body[data-type-system="archon"] [data-type-role="brand"]{font-family:var(--type-sans);font-size:var(--type-brand);line-height:var(--type-lh-body);letter-spacing:var(--type-track-heading)}
/* Reusable text stacks. Layout gaps outside text stacks remain component-owned. */
body[data-type-system="archon"] .type-stack>:is(p,blockquote){margin-block-start:var(--type-gap-heading)}
body[data-type-system="archon"] .type-stack>.type-action{margin-block-start:var(--type-gap-action)}
body[data-type-system="archon"] .type-stack>figcaption{margin-block-start:var(--type-gap-caption)}
