/* Reset and element defaults. var(--token) only — see web/theme/tokens.css. */

*,*::before,*::after{box-sizing:border-box}
html,body{margin:0;padding:0}
html{-webkit-text-size-adjust:100%}
body{
  background:var(--paper);
  color:var(--ink);
  font-family:var(--font-ui);
  font-size:var(--fs-2);
  line-height:var(--lh-body);
  -webkit-font-smoothing:antialiased;
  /* D1b: nothing in the shell may push the document wider than the viewport.
     Every horizontally-large surface scrolls inside its own .tablewrap. */
  overflow-x:clip;
}
h1,h2,h3,h4,p,ul,ol,dl,dd,figure,fieldset{margin:0;padding:0}
ul,ol{list-style:none}
fieldset{border:0;min-width:0}
a{color:var(--accent);text-decoration:none;border-bottom:var(--bw-1) solid var(--accent-rule)}
a:hover{color:var(--accent-hi);border-bottom-color:var(--accent)}
button,input,select,textarea{font:inherit;color:inherit}
table{border-collapse:collapse;width:100%}
img,svg,video{max-width:100%}
:focus{outline:none}
:focus-visible{outline:var(--focus-w) solid var(--focus);outline-offset:var(--focus-off)}
[hidden]{display:none !important}

/* Visually hidden, still read aloud. */
.sr{
  position:absolute;width:var(--bw-1);height:var(--bw-1);
  margin:calc(-1 * var(--bw-1));padding:0;
  overflow:hidden;clip-path:inset(50%);white-space:nowrap;
}

/* D3 / G3 — keyboard bypass of the top bar and sidebar. In the base layout, so
   every page inherits it. */
.skip{
  position:fixed;left:var(--skip-shown);top:var(--skip-hidden);z-index:var(--z-skip);
  background:var(--accent);color:var(--accent-ink);border:0;
  padding:var(--sp-3) var(--sp-5);
  font-size:var(--fs-1);font-weight:var(--fw-bold);
  letter-spacing:var(--track-caps);text-transform:uppercase;
  transition:top var(--dur) var(--ease);
}
.skip:focus{top:var(--skip-shown);color:var(--accent-ink)}

/* Typographic primitives. */
.disp{font-family:var(--font-display);font-weight:var(--fw-reg);letter-spacing:var(--track-tight);line-height:var(--lh-tight)}
.eyebrow{font-family:var(--font-mono);font-size:var(--fs-0);letter-spacing:var(--track-wide);text-transform:uppercase;color:var(--ink-3)}
.caps{font-size:var(--fs-0);letter-spacing:var(--track-caps);text-transform:uppercase;font-weight:var(--fw-bold)}
.muted{color:var(--ink-3)}
.dim{color:var(--ink-2)}
.num{font-family:var(--font-num);font-variant-numeric:tabular-nums lining-nums}
.mono{font-family:var(--font-mono);font-size:var(--fs-1);letter-spacing:var(--track-flat)}
.tnum{font-variant-numeric:tabular-nums}
.right{text-align:right}
.nowrap{white-space:nowrap}
.grow{flex:1 1 auto;min-width:0}

/* D0 — the ONLY width cap in the system: the reading measure. Prose and form
   columns wear it; tables and rosters never do. */
.measure{max-width:var(--w-measure)}

@media (prefers-reduced-motion:reduce){
  *{transition:none !important;animation:none !important}
}
@media print{
  .topbar,.sidebar,.toasts,.skip,dialog{display:none !important}
}
