/* Base: reset, type, layout primitives. Tokens only. */
*,*::before,*::after{box-sizing:border-box}
html{-webkit-text-size-adjust:100%;scroll-padding-top:calc(var(--header-h) + var(--space-4))}
body{
  margin:0;background:var(--surface-page);color:var(--text-primary);
  font-family:var(--font-body);font-size:var(--type-body);font-weight:var(--weight-body);
  line-height:var(--leading-body);-webkit-font-smoothing:antialiased;min-height:100vh;
  display:flex;flex-direction:column;
}
body > main{flex:1 0 auto}
[hidden]{display:none!important}
img,svg,video{max-width:100%;display:block}
a{color:inherit;text-decoration:none}
button,input,select,textarea{font:inherit;color:inherit}
button{cursor:pointer}
h1,h2,h3,h4,p,ul,ol,dl,dd,figure{margin:0;padding:0}
ul,ol{list-style:none}
details>summary{list-style:none}
details>summary::-webkit-details-marker{display:none}

:focus-visible{outline:none;box-shadow:var(--focus-ring);border-radius:var(--radius-1)}

.skip-link{position:absolute;left:var(--space-4);top:-100px;z-index:100;background:var(--surface-signal);color:var(--text-on-signal);padding:var(--space-3) var(--space-4);font-family:var(--font-mono);font-size:var(--type-label)}
.skip-link:focus{top:var(--space-4)}
.sr-only{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}

/* Layout */
/* Every section: full-bleed background, side padding, content boxed to --container-max and stacked with --section-gap */
.wrap{width:100%;max-width:var(--container-max);margin:0 auto;padding:0}
.section{position:relative;padding:var(--section-pad) var(--container-pad);overflow:clip} /* clip, not hidden: hidden would trap position:sticky inside the section */
.section--tight{padding-block:var(--space-9)}
.section--panel{background:var(--surface-panel)}
.section--well{background:var(--surface-well)}
.section--data{background:var(--surface-data);color:var(--text-on-data)}
.section--ruled{border-top:var(--border-hair) solid var(--line-grid)}
.section--ruled-b{border-bottom:var(--border-hair) solid var(--line-grid)}
.section > .wrap{position:relative;z-index:1;display:flex;flex-direction:column;gap:var(--section-gap)}
/* A tighter stack for blocks that belong together inside a section */
.stack{display:flex;flex-direction:column;gap:var(--space-5)}

/* Type: display. Sentence case, heavy, semi-condensed, no full stops in headings. */
.d-xl,.d-l,.d-m,.d-s,.d-xs,.numeral{
  font-family:var(--font-display);font-weight:var(--weight-display);
  font-stretch:var(--stretch-display);line-height:var(--leading-display);
  letter-spacing:var(--tracking-display);text-wrap:balance;
}
.d-xl{font-size:var(--type-display-xl)}
.d-l{font-size:var(--type-display-l)}
.d-m{font-size:var(--type-display-m)}
.d-s{font-size:var(--type-display-s)}
.d-xs{font-size:var(--type-display-xs);line-height:1}
.numeral{font-stretch:var(--stretch-numeral);font-size:var(--type-numeral);line-height:.78}

/* Type: body */
.body-l{font-size:var(--type-body-l);line-height:var(--leading-body);color:var(--text-secondary);max-width:46ch}
.body{font-size:var(--type-body)}
.body-s{font-size:var(--type-body-s)}
.strong{font-weight:var(--weight-strong)}
.muted{color:var(--text-secondary)}
.section--data .muted,.section--data .body-l{color:var(--text-on-data-secondary)}

/* Type: mono labels. Uppercase, tracked, used inside panels, specs and tags only. */
.label,.label-s,.label-l,.label-xs{
  font-family:var(--font-mono);font-weight:var(--weight-ui);text-transform:uppercase;
  letter-spacing:var(--tracking-label);line-height:var(--leading-label);
}
.label{font-size:var(--type-label)}
.label-s{font-size:var(--type-label-s)}
.label-xs{font-size:var(--type-label-xs)}
.label-l{font-size:var(--type-label-l)}
.label--signal{color:var(--text-signal)}
.label--muted{color:var(--text-secondary)}
.section--data .label--muted{color:var(--text-on-data-secondary)}

/* Ghost numerals and words, cropped off the edge */
.ghost{
  position:absolute;z-index:0;pointer-events:none;user-select:none;white-space:nowrap;
  font-family:var(--font-display);font-weight:var(--weight-display);font-stretch:var(--stretch-numeral);
  font-size:var(--type-numeral);line-height:.78;letter-spacing:var(--tracking-display);
}
.ghost::before{content:attr(data-t)}
.ghost--outline{color:transparent;-webkit-text-stroke:1px var(--line-grid)}
.ghost--ink{color:var(--cm-mint-600)}

/* Engineered grid backdrop */
.gridbg{
  background-image:
    linear-gradient(to right,var(--line-grid) 1px,transparent 1px),
    linear-gradient(to bottom,var(--line-grid) 1px,transparent 1px);
  background-size:var(--grid-cell) var(--grid-cell);
  background-position:-1px -1px;
}

/* Two-up heading row used by most sections */
.head-row{display:grid;grid-template-columns:minmax(0,7fr) minmax(0,5fr);gap:var(--space-6);align-items:end}
.head-row > p{justify-self:start}
.section--ruled > .wrap > .head-row:first-child{padding-top:var(--space-6);border-top:var(--border-hair) solid var(--line-grid)}
@media (max-width:1024px){.head-row{grid-template-columns:1fr}}

@media (prefers-reduced-motion:reduce){
  *,*::before,*::after{animation-duration:.001ms!important;animation-iteration-count:1!important;transition-duration:0ms!important;scroll-behavior:auto!important}
}
