/* Base: reset, text, layout helpers, motion and print. */

*, *::before, *::after { box-sizing: border-box; }
html { scroll-behavior: smooth; scroll-padding-top: 64px; -webkit-text-size-adjust: 100%; }
body {
  margin: 0;
  background: var(--ground);
  color: var(--ink);
  font-family: var(--text);
  font-size: 1.0625rem;
  line-height: 1.6;
  text-rendering: optimizeLegibility;
  -webkit-font-smoothing: antialiased;
}
img, svg { display: block; max-width: 100%; }
h1, h2, h3 { font-family: var(--display); font-weight: 700; line-height: 1.12; margin: 0; letter-spacing: -0.005em; text-wrap: balance; }
p { margin: 0 0 1em; text-wrap: pretty; }
a { color: inherit; text-decoration-thickness: 2px; text-underline-offset: 3px; }
ul, ol, dl { margin: 0; padding: 0; }
li { list-style: none; }
button, input, select, textarea { font: inherit; color: inherit; }
button { cursor: pointer; }
:focus-visible { outline: var(--focus); outline-offset: 3px; border-radius: 6px; }
::selection { background: var(--sky); color: #06122F; }

.wrap { width: 100%; max-width: calc(var(--wrap) + 2 * var(--gutter)); margin-inline: auto; padding-inline: var(--gutter); }
.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; }
.skip { position: absolute; left: 12px; top: -80px; z-index: 100; background: var(--ink); color: var(--ground); padding: .7rem 1rem; border-radius: 10px; font-weight: 700; }
.skip:focus { top: 12px; }

/* Body text is justified. Headings, labels and short lines stay left (the :not list). */
.section p:not(.demo-note):not(.shelf-note):not(.tagline):not(.audience):not(.result-count):not(.flow-note):not(.form-error):not(.promise):not(.open-now):not(.hours-note),
.desc, .rules dd, .cap p, .artefact p, .warn p {
  text-align: justify; text-align-last: left;
  hyphens: auto; -webkit-hyphens: auto; hyphenate-limit-chars: 12 4 4; text-wrap: auto;
}

@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
  * { transition-duration: .01ms !important; animation-duration: .01ms !important; animation-delay: 0s !important; }
}
@media print {
  .site-header, .filters, .shelf, .form { display: none; }
}
