/* Base element styles + type utilities + layout primitives */
*,*::before,*::after{box-sizing:border-box}
html{-webkit-text-size-adjust:100%;text-size-adjust:100%;scroll-padding-top:calc(var(--header-h) + var(--space-6))}
@media (prefers-reduced-motion: no-preference){html{scroll-behavior:smooth}}
body{margin:0;background:var(--bg-page);color:var(--text-2);font-family:var(--font-reading);font-size:var(--fs-body);line-height:var(--lh-body);font-optical-sizing:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-rendering:optimizeLegibility}
::selection{background:var(--selection);color:var(--text-1)}
[data-theme="hc"] ::selection,[data-theme="hc-dark"] ::selection{color:var(--bg-page)}
a{color:var(--link);text-decoration-line:underline;text-decoration-color:var(--link-underline);text-decoration-thickness:0.08em;text-underline-offset:0.2em;transition:color var(--dur-fast) var(--ease-out),text-decoration-color var(--dur-fast) var(--ease-out)}
a:hover{color:var(--link-hover);text-decoration-color:currentColor}
:focus-visible{outline:2px solid var(--focus-ring);outline-offset:3px;border-radius:2px}
img,video,svg{max-width:100%;height:auto}
h1,h2,h3,h4,h5,h6{font-family:var(--type-heading-family);font-weight:var(--type-heading-weight);color:var(--text-1);line-height:var(--lh-heading);letter-spacing:var(--tracking-heading);text-wrap:balance;margin:0}
p{text-wrap:pretty;margin:0}
code,kbd,pre,samp{font-family:var(--font-mono)}
hr{border:0;border-top:var(--border-width) solid var(--border-1);margin:var(--space-block) 0}

.fm-mega{font-family:var(--font-display);font-weight:var(--fw-black);font-size:var(--fs-mega);line-height:var(--lh-mega);letter-spacing:var(--tracking-mega);color:var(--text-1);text-wrap:balance}
.fm-display{font-family:var(--font-display);font-weight:var(--type-display-weight);font-size:var(--fs-display);line-height:var(--lh-display);letter-spacing:var(--tracking-display);color:var(--text-1);text-wrap:balance}
.fm-h1{font-family:var(--font-display);font-weight:var(--fw-heavy);font-size:var(--fs-h1);line-height:var(--lh-heading);letter-spacing:var(--tracking-display);color:var(--text-1);text-wrap:balance}
.fm-h2{font-family:var(--font-display);font-weight:var(--fw-bold);font-size:var(--fs-h2);line-height:var(--lh-heading);letter-spacing:var(--tracking-heading);color:var(--text-1)}
.fm-h3{font-family:var(--font-display);font-weight:var(--fw-bold);font-size:var(--fs-h3);line-height:var(--lh-snug);letter-spacing:var(--tracking-heading);color:var(--text-1)}
.fm-h4{font-family:var(--font-display);font-weight:var(--fw-semibold);font-size:var(--fs-h4);line-height:var(--lh-snug);color:var(--text-1)}
.fm-lede{font-family:var(--type-lede-family);font-weight:var(--type-lede-weight);font-size:var(--fs-lede);line-height:1.38;color:var(--text-2);font-variation-settings:"opsz" 48;text-wrap:pretty;max-width:var(--measure-narrow)}
.fm-body{font-family:var(--font-reading);font-size:var(--fs-body);line-height:var(--lh-body);color:var(--text-2)}
.fm-ui{font-family:var(--font-ui);font-size:var(--fs-ui);line-height:var(--lh-ui);letter-spacing:var(--tracking-ui)}
.fm-small{font-family:var(--font-ui);font-size:var(--fs-sm);line-height:var(--lh-ui);color:var(--text-3)}
.fm-label{font-family:var(--type-label-family);font-weight:var(--type-label-weight);font-size:var(--fs-xs);line-height:1.2;letter-spacing:var(--tracking-label);text-transform:uppercase;color:var(--text-3)}
.fm-label--accent{color:var(--text-accent)}
.fm-mono{font-family:var(--font-mono);font-size:var(--fs-code);letter-spacing:var(--tracking-code)}
.fm-meta{font-family:var(--font-ui);font-size:0.8125rem;font-weight:var(--fw-medium);color:var(--text-3);font-variant-numeric:tabular-nums}
.fm-muted{color:var(--text-3)}
.fm-accent{color:var(--text-accent)}
.fm-visually-hidden{position:absolute!important;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}

.fm-container{width:100%;max-width:var(--page-max);margin-inline:auto;padding-inline:var(--gutter)}
.fm-section{padding-block:var(--space-section)}
.fm-rule{height:var(--border-width);background:var(--border-1);border:0;margin:0}
.fm-rule--strong{height:var(--border-width-strong);background:var(--border-strong)}

/* Article grid: rail (TOC) · content · aside (margin notes). Children default to content; opt out with .fm-wide / .fm-full / .fm-aside */
.fm-article-grid{display:grid;grid-template-columns:[full-start] var(--gutter) [wide-start] minmax(0,1fr) [content-start] minmax(0,var(--col-content)) [content-end] minmax(0,1fr) [wide-end] var(--gutter) [full-end]}
.fm-article-grid>*{grid-column:content}
.fm-article-grid>.fm-wide{grid-column:wide}
.fm-article-grid>.fm-full{grid-column:full}
.fm-article-grid>.fm-aside{grid-column:content}
@media (min-width:1200px){
  .fm-article-grid{grid-auto-flow:row dense;grid-template-columns:[full-start] var(--gutter) [wide-start rail-start] minmax(12rem,var(--col-rail)) [rail-end] minmax(var(--space-7),1fr) [content-start] minmax(0,var(--col-content)) [content-end] minmax(var(--space-7),1fr) [aside-start] minmax(12rem,var(--col-rail)) [aside-end wide-end] var(--gutter) [full-end]}
  .fm-article-grid>.fm-rail{grid-column:rail;grid-row:1 / span 999;align-self:start;position:sticky;top:calc(var(--header-h) + var(--space-7))}
  .fm-article-grid>.fm-aside{grid-column:aside;grid-row:span 3;align-self:start}
  .fm-article-grid>.fm-wide-right{grid-column:content-start / wide-end}
}
@media (max-width:1199.98px){.fm-article-grid>.fm-rail{display:none}.fm-article-grid>.fm-wide-right{grid-column:wide}}
