/* Generated by tools/design-export/convert.php. Base rules first, then one class per
   distinct style in the design export. Colours are brand tokens from tokens.css. */

/* ---------- Tints ----------
   Pale versions of brand colours used by some figures, mixed from the tokens
   so they follow the light and dark themes. */

:root,
[data-theme="dark"] {
  --tangent-tint: color-mix(in srgb, var(--tangent) 22%, var(--frame));
  /* Lighter and darker steps, for neighbouring faces shaded in turn (General topic guide 11). */
  --tangent-wash: color-mix(in srgb, var(--tangent) 14%, var(--frame));
  --tangent-line: color-mix(in srgb, var(--tangent) 30%, var(--frame));
  --tangent-shade: color-mix(in srgb, var(--tangent) 38%, var(--frame));
  --curve-alt-tint: color-mix(in srgb, var(--curve-alt) 25%, var(--frame));
  --curve-alt-wash: color-mix(in srgb, var(--curve-alt) 12%, var(--frame)); /* a plane's fill in 3D figures */
  --curve-alt-line: color-mix(in srgb, var(--curve-alt) 32%, var(--frame)); /* grid lines on that plane */
  --curve-alt-deep: color-mix(in srgb, var(--curve-alt) 43%, var(--frame)); /* the darkest of three shaded regions */
  /* Major lines on graph paper, a step darker than the grid. */
  --grid-strong: color-mix(in srgb, var(--muted) 30%, var(--grid));
  --grid-soft: color-mix(in srgb, var(--muted) 14%, var(--grid));
  --grid-wash: color-mix(in srgb, var(--grid) 50%, var(--frame));
  --muted-soft: color-mix(in srgb, var(--muted) 70%, var(--frame)); /* the exam booklet's mid grey */
  /* A deeper orange: the hover state of orange-text buttons. */
  --tangent-deep: color-mix(in srgb, var(--tangent-text) 78%, var(--ink));
  /* Halfway between the background and a panel: faint bands in figures. */
  --surface-half: color-mix(in srgb, var(--surface) 50%, var(--frame));
}

/* Black and white as the export's logic uses them: ink on paper on the page,
   swapped inside dark (animation) panels. */
:root {
  --tt-black: var(--ink);
  --tt-white: var(--frame);
}

[data-theme="dark"] {
  --tt-black: var(--frame);
  --tt-white: var(--ink);
}

/* Name used by exports built with the design system's components. */
:root {
  --font-body: var(--font-sans);
}

/* ---------- Base ---------- */

*,
*::before,
*::after {
  box-sizing: border-box;
}

html,
body {
  margin: 0;
  padding: 0;
  background: var(--frame);
}

body {
  font-family: var(--font-sans);
  color: var(--ink);
  font-size: var(--text-body-size);
  line-height: var(--text-body-line);
  -webkit-font-smoothing: antialiased;
}

/* Links are ink, and turn orange only on hover (one orange thing per section). */
a {
  color: var(--ink);
  text-decoration: underline;
  text-underline-offset: 2px;
}

a:hover {
  color: var(--tangent-text);
}

:focus-visible {
  outline: 3px solid var(--ink);
  outline-offset: 2px;
}

img,
svg {
  max-width: 100%;
}

.katex {
  font-size: 1.1em;
}

.katex-display {
  text-align: left !important;
  margin: 0 !important;
  overflow-x: auto;
  overflow-y: hidden;
  padding: 4px 0;
}

.katex-display > .katex {
  text-align: left !important;
}

.tti-scroll {
  max-width: 100%;
  overflow-x: auto;
}

/* "white-space: nowrap" keeps a formula and its full stop together. On a
   phone a long one ({z : |z+2-i| <= 5} ∩ …) is wider than the screen, so there
   it may wrap: KaTeX breaks inline maths after relations and operators. */
@media (max-width: 480px) {
  [data-tti-root] span:has(> .katex, > span > .katex) {
    white-space: normal;
  }
}

/* A formula wider than a phone screen scrolls inside its box instead of
   pushing the whole page sideways. */
[data-tti-root] :is(div, span):has(> .katex, > span > .katex) {
  max-width: 100%;
  overflow-x: auto;
  overflow-y: hidden;
  padding-block: 4px;
}

@media (prefers-reduced-motion: reduce) {
  *,
  *::before,
  *::after {
    transition-duration: 0s !important;
    animation-duration: 0s !important;
  }
}

.visually-hidden {
  position: absolute !important;
  width: 1px;
  height: 1px;
  margin: -1px;
  padding: 0;
  overflow: hidden;
  clip: rect(0 0 0 0);
  white-space: nowrap;
  border: 0;
}

/* ---------- Game plan animations ----------
   convert.php (gp_inline) puts each animated picture in the page with its still
   frame beside it. The still shows instead with reduced motion and in print. */

.tti-gp__anim svg,
.tti-gp__still svg {
  display: block;
  width: 100%;
  height: auto;
}

.tti-gp__still {
  display: none;
}

@media (prefers-reduced-motion: reduce) {
  .tti-gp__anim {
    display: none;
  }

  .tti-gp__still {
    display: block;
  }
}

@media print {
  .tti-gp__anim {
    display: none;
  }

  .tti-gp__still {
    display: block;
  }
}

/* ---------- Runtime (tti.js) ---------- */

.tti-if {
  display: contents;
}

/* With JavaScript on, conditional parts wait for the runtime to show them.
   Without JavaScript, everything is visible. */
.tti-js [data-if]:not(.tti-on) {
  display: none !important;
}

.tti-anim {
  display: block;
  margin: 16px 0 0 auto;
  min-height: 44px;
  padding: 0 16px;
  border: 1px solid var(--muted);
  border-radius: var(--radius-sm);
  background: transparent;
  color: var(--ink);
  font: 600 15px/22px var(--font-sans);
  cursor: pointer;
}

.tti-anim:hover {
  border-color: var(--ink);
}

/* Lines through table cells, such as the Hungarian algorithm's covering lines,
   drawn behind the cell's number (convert.php's flat_decls() sets the colour
   and width from the export's striped background). */
.tti-hline,
.tti-vline {
  position: relative;
  z-index: 0;
}

.tti-hline::before,
.tti-vline::after {
  content: "";
  position: absolute;
  z-index: -1;
  background: var(--tti-line);
}

.tti-hline::before {
  left: 0;
  right: 0;
  top: 50%;
  height: var(--tti-line-w, 2px);
  transform: translateY(-50%);
}

.tti-vline::after {
  top: 0;
  bottom: 0;
  left: 50%;
  width: var(--tti-line-w, 2px);
  transform: translateX(-50%);
}

/* ---------- Design-system components ----------
   Exports that use the design system's components (Button, Switch, TeX,
   AnswerBox, SubjectTag) are converted to these classes by convert.php. Each
   matches the component in the export's ds/_ds_bundle.js. */

/* The logo link (lib/logo.php, styled by css/logo.css), 40px tall here. */
.tti-logo,
.ix-top .tt-logo {
  --logo-h: 40px;
}

.tti-tex {
  font-family: var(--font-math);
}

.tti-tex--block {
  display: block;
  text-align: left;
}

/* The LaTeX source is the fallback without JavaScript. With it, hide the
   source until KaTeX has drawn the formula. */
.tti-js .tti-tex:not(.tti-tex-done) {
  visibility: hidden;
}

.tti-btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 8px;
  min-height: 48px;
  padding: 0 16px;
  border: 1px solid transparent;
  border-radius: var(--radius-sm);
  font: 600 18px/24px var(--font-sans);
  white-space: nowrap;
  cursor: pointer;
  transition: background-color 120ms cubic-bezier(.2, 0, 0, 1);
}

.tti-btn--sm {
  min-height: 44px;
  font-size: 15px;
  line-height: 22px;
}

/* Text on orange is always black: ink on light, frame in a dark panel. */
.tti-btn--primary {
  background: var(--tangent);
  border-color: var(--tangent);
  color: var(--ink);
}

[data-theme="dark"] .tti-btn--primary {
  color: var(--frame);
}

.tti-btn--primary:hover:not(:disabled) {
  background: var(--tangent-hover);
  border-color: var(--tangent-hover);
}

.tti-btn--ink {
  background: var(--ink);
  color: var(--frame);
}

.tti-btn--ink:hover:not(:disabled) {
  background: color-mix(in srgb, var(--ink) 80%, var(--frame));
}

.tti-btn--secondary {
  background: transparent;
  border-color: var(--ink);
  color: var(--ink);
}

.tti-btn--ghost {
  background: transparent;
  color: var(--ink);
}

.tti-btn--secondary:hover:not(:disabled),
.tti-btn--ghost:hover:not(:disabled) {
  background: var(--surface);
}

.tti-btn:disabled {
  border-color: var(--muted);
  color: var(--muted);
  cursor: not-allowed;
}

.tti-btn--primary:disabled,
.tti-btn--ink:disabled {
  background: var(--surface);
}

.tti-btn--ghost:disabled {
  border-color: transparent;
}

/* The whole label is the touch target. */
.tti-switch {
  display: inline-flex;
  align-items: center;
  gap: 12px;
  min-height: 44px;
  font: 400 18px/28px var(--font-sans);
  color: var(--ink);
  cursor: pointer;
}

.tti-switch__btn {
  position: relative;
  flex: none;
  width: 40px;
  height: 24px;
  padding: 0;
  border: 1.5px solid var(--muted);
  border-radius: var(--radius-sm);
  background: var(--frame);
  cursor: inherit;
}

.tti-switch__btn[aria-checked="true"] {
  border-color: var(--ink);
  background: var(--ink);
}

.tti-switch__knob {
  position: absolute;
  top: 2.5px;
  left: 2.5px;
  width: 16px;
  height: 16px;
  border-radius: 2px;
  background: var(--muted);
  transition: left 120ms cubic-bezier(.2, 0, 0, 1);
}

.tti-switch__btn[aria-checked="true"] .tti-switch__knob {
  left: 18.5px;
  background: var(--frame);
}

/* The answer: the one orange thing in its step. Square corners, like all answer boxes. */
.tti-answer {
  display: inline-flex;
  flex-direction: column;
  gap: 4px;
  padding: 12px 16px;
  border: 2px solid var(--tangent);
  border-radius: 0;
  font: 400 18px/28px var(--font-sans);
  color: var(--ink);
}

.tti-answer__label {
  font-size: 13px;
  line-height: 18px;
  font-weight: 600;
  color: var(--muted);
}

.tti-tag {
  display: inline-flex;
  align-items: center;
  padding: 2px 10px;
  border: 1px solid var(--muted);
  border-radius: var(--radius-pill);
  font: 500 13px/18px var(--font-sans);
  color: var(--ink);
  white-space: nowrap;
}

/* The design export lays out at desktop widths; give small screens room. */
@media (max-width: 639px) {
  [data-tti-root] main,
  [data-tti-root] > header > div {
    padding-left: 16px !important;
    padding-right: 16px !important;
  }

  [data-tti-root] section {
    padding-left: 16px !important;
    padding-right: 16px !important;
  }

  [data-tti-root] section[class] h1 {
    word-break: break-word;
  }
}

/* ---------- Index page ---------- */

.ix-wrap {
  max-width: 1200px;
  margin: 0 auto;
  padding: 0 32px;
}

.ix-top {
  border-bottom: 1px solid var(--grid);
}

.ix-top__inner {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: space-between;
  gap: 16px;
  padding-top: 16px;
  padding-bottom: 16px;
}

.ix-small,
.ix-top__meta {
  font-size: var(--text-small-size);
  line-height: var(--text-small-line);
  color: var(--muted);
}

.ix-top__meta a {
  color: var(--ink);
}

.ix-main {
  padding-top: 64px;
  padding-bottom: 64px;
}

.ix-intro {
  max-width: 75ch;
}

.ix-eyebrow {
  margin: 0;
  font-size: var(--text-small-size);
  line-height: var(--text-small-line);
  font-weight: 500;
  color: var(--muted);
}

.ix-h1 {
  margin: 16px 0 0;
  font-family: var(--font-display);
  font-size: clamp(44px, 7vw, 72px);
  line-height: 1;
  font-weight: 700;
  letter-spacing: -0.01em;
  text-wrap: balance;
}

.ix-lede {
  margin: 32px 0 0;
  text-wrap: pretty;
}

.ix-progress {
  margin-top: 64px;
  padding: 32px;
  border-radius: var(--radius-sm);
  background: var(--surface);
  display: flex;
  flex-wrap: wrap;
  gap: 32px;
  align-items: flex-end;
  justify-content: space-between;
}

.ix-progress__main {
  flex: 1 1 420px;
  min-width: 0;
}

.ix-progress__head {
  display: flex;
  flex-wrap: wrap;
  align-items: baseline;
  justify-content: space-between;
  gap: 8px 16px;
}

.ix-h2 {
  margin: 0;
  font-size: var(--text-h3-size);
  line-height: var(--text-h3-line);
  font-weight: 600;
}

.ix-bar {
  margin-top: 16px;
  height: 8px;
  background: var(--grid);
}

.ix-bar__fill {
  height: 100%;
  width: 0;
  background: var(--ink);
  transition: width 120ms cubic-bezier(0.2, 0, 0, 1);
}

.ix-note {
  margin: 16px 0 0;
}

.ix-actions {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
}

.ix-btn {
  cursor: pointer;
  font: 600 var(--text-body-size) / 24px var(--font-sans);
  min-height: 48px;
  padding: 0 16px;
  border-radius: var(--radius-sm);
  border: 1px solid transparent;
  background: transparent;
  color: var(--ink);
  white-space: nowrap;
}

.ix-btn--primary {
  border-color: var(--tangent);
  background: var(--tangent);
}

.ix-btn--primary:hover {
  border-color: var(--tangent-hover);
  background: var(--tangent-hover);
}

.ix-btn--quiet:hover {
  background: var(--frame);
}

/* JavaScript-only controls are hidden when JavaScript is off. */
html:not(.tti-js) [data-ix-js] {
  display: none !important;
}

.ix-engines {
  margin-top: 64px;
}

.ix-engines__grid {
  margin-top: 32px;
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(240px, 1fr));
  gap: 32px;
}

.ix-engine {
  border-top: 1px solid var(--grid);
  padding-top: 16px;
}

.ix-engine__name {
  font-weight: 600;
}

.ix-engine p,
.ix-engines > p {
  margin: 8px 0 0;
}

.ix-engines > p {
  max-width: 75ch;
}

.ix-year {
  margin-top: 64px;
}

.ix-year__head {
  display: flex;
  flex-wrap: wrap;
  align-items: flex-end;
  justify-content: space-between;
  gap: 8px 32px;
}

.ix-year__head h2 {
  margin: 0;
  font-family: var(--font-display);
  font-size: var(--text-h2-size);
  line-height: var(--text-h2-line);
  font-weight: 600;
}

/* Topic sets: each unit lists its topics, two questions each. */
.ix-topic {
  margin-top: 32px;
}

.ix-topic h3 {
  margin: 0;
  font-family: var(--font-display);
  font-size: var(--text-h3-size);
  line-height: var(--text-h3-line);
  font-weight: 600;
}

.ix-rows {
  margin: 16px 0 0;
  padding: 0;
  list-style: none;
  border-top: 1px solid var(--ink);
}

.ix-row {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 8px 32px;
  padding: 16px 0;
  border-bottom: 1px solid var(--grid);
}

.ix-row__link {
  flex: 1 1 360px;
  min-width: 0;
  display: block;
  text-decoration: none;
}

.ix-row__link:hover .ix-row__title {
  text-decoration: underline;
}

.ix-row__ref {
  display: block;
  font-size: var(--text-small-size);
  line-height: var(--text-small-line);
  font-weight: 600;
}

.ix-row__title {
  display: block;
}

.ix-row__unit {
  display: block;
  margin-top: 4px;
  color: var(--muted);
  font-size: var(--text-small-size);
  line-height: var(--text-small-line);
}

.ix-row__meta {
  display: flex;
  align-items: center;
  gap: 16px 32px;
}

.ix-row__engine {
  min-width: 112px;
  white-space: nowrap;
}

.ix-row__marks {
  width: 88px;
  text-align: right;
}

.ix-done {
  cursor: pointer;
  font: 600 var(--text-small-size) / var(--text-small-line) var(--font-sans);
  min-height: 44px;
  width: 128px;
  padding: 0 16px;
  border-radius: var(--radius-sm);
  border: 1px solid var(--ink);
  background: transparent;
  color: var(--ink);
}

.ix-done[aria-pressed="true"] {
  background: var(--ink);
  color: var(--frame);
}

/* "Choose your questions" on past-paper indexes (cu-index.js). */
.ix-choose {
  margin-top: 64px;
}

.ix-chips {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  margin-top: 16px;
}

.ix-chip {
  cursor: pointer;
  min-height: 44px;
  padding: 4px 14px;
  border-radius: var(--radius-sm);
  border: 1px solid var(--muted);
  background: var(--frame);
  color: var(--ink);
  font: 600 var(--text-small-size) / var(--text-small-line) var(--font-sans);
  text-align: left;
}

.ix-chip[aria-pressed="true"],
.ix-chip[aria-selected="true"] {
  border-color: var(--ink);
  background: var(--ink);
  color: var(--frame);
}

.ix-chip__main {
  display: block;
}

.ix-chip__sub {
  display: block;
  font-weight: 400;
  color: var(--muted);
}

.ix-chip[aria-pressed="true"] .ix-chip__sub,
.ix-chip[aria-selected="true"] .ix-chip__sub {
  color: var(--grid);
}

.ix-chip__num {
  display: inline-block;
  min-width: 40px;
}

.ix-choose__note {
  margin: 16px 0 0;
  max-width: 75ch;
}

.ix-choose__unit {
  margin: 32px 0 0;
  font-family: var(--font-display);
  font-size: var(--text-h3-size);
  line-height: var(--text-h3-line);
  font-weight: 600;
}

.ix-chosen {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 8px 16px;
  margin-top: 16px;
  padding: 8px 8px 8px 16px;
  border-radius: var(--radius-sm);
  background: var(--surface);
}

.ix-filters {
  display: flex;
  flex-wrap: wrap;
  align-items: flex-end;
  gap: 16px 32px;
  margin-top: 32px;
}

.ix-filter__name {
  display: block;
}

.ix-filters .ix-chips {
  margin-top: 8px;
}

.ix-res {
  margin-top: 64px;
}

.ix-res__guide {
  margin: 16px 0 0;
  font-weight: 500;
}

.ix-res__guide a,
.ix-row__guides a {
  color: var(--ink);
}

.ix-res__paper {
  margin-top: 48px;
}

.ix-res__head {
  display: flex;
  flex-wrap: wrap;
  align-items: flex-end;
  justify-content: space-between;
  gap: 8px 32px;
}

.ix-res__head h3 {
  margin: 0;
  font-size: var(--text-h3-size);
  line-height: var(--text-h3-line);
  font-weight: 600;
}

.ix-empty {
  margin-top: 32px;
  padding: 32px;
  border-radius: var(--radius-sm);
  background: var(--surface);
}

.ix-empty p {
  margin: 0 0 16px;
}

.ix-row__main {
  flex: 1 1 360px;
  min-width: 0;
}

.ix-row__guides {
  display: flex;
  flex-wrap: wrap;
  gap: 4px 24px;
  margin-top: 8px;
}

.ix-foot {
  margin-top: 64px;
  border-top: 1px solid var(--grid);
  padding-top: 32px;
  display: grid;
  gap: 8px;
  max-width: 75ch;
}

.ix-foot p {
  margin: 0;
}

/* Copyright and licence line on premium resources (convert.php premium_notice). */
.tti-legal {
  margin: 8px 0 0;
  max-width: 75ch;
  font-size: 13px;
  line-height: 18px;
  color: var(--muted);
}

.tti-legal--alone {
  margin-top: 64px;
}

.ix-foot .tti-legal {
  margin: 0;
}

@media (max-width: 639px) {
  .ix-wrap {
    padding: 0 16px;
  }

  .ix-progress {
    padding: 16px;
  }

  .ix-row__meta {
    flex-wrap: wrap;
    gap: 8px 16px;
  }

  .ix-row__engine,
  .ix-row__marks {
    width: auto;
  }
}

/* ---------- Buddy game plan scenes (tools/design-export/gp-buddy.php) ---------- */

.tti-gpb{width:320px;max-width:100%}
.tti-gpb--card{width:100%}
a.gpb-card{grid-template-columns:200px minmax(0,1fr)}
@media (max-width:600px){a.gpb-card{grid-template-columns:132px minmax(0,1fr);gap:16px}}
.tti-gpb .buddy__bar{fill:var(--tangent)}
.tti-gpb .buddy__dot{fill:var(--ink)}
.tti-gpb .buddy__face{fill:var(--frame)}
.gpb-ink{fill:none;stroke:var(--ink)}
.gpb-mut{fill:none;stroke:var(--muted)}
.gpb-grid{fill:none;stroke:var(--grid-strong)}
.gpb-fill{fill:var(--ink)}
.gpb-fill-mut{fill:var(--muted)}
.gpb-paper{fill:var(--frame);stroke:var(--ink)}
.gpb-draw{stroke-dasharray:1 1}
/* e0 */
.gpb-e0-u0{animation:gpb-e0-u0k 7s linear infinite}
@keyframes gpb-e0-u0k{0%{stroke-dashoffset:1}15%{stroke-dashoffset:1}25%{stroke-dashoffset:0}100%{stroke-dashoffset:0}}
.gpb-e0-u2{animation:gpb-e0-u2k 7s linear infinite}
@keyframes gpb-e0-u2k{0%{stroke-dashoffset:1}35%{stroke-dashoffset:1}45%{stroke-dashoffset:0}100%{stroke-dashoffset:0}}
.gpb-e0-u4{animation:gpb-e0-u4k 7s linear infinite}
@keyframes gpb-e0-u4k{0%{stroke-dashoffset:1}55%{stroke-dashoffset:1}65%{stroke-dashoffset:0}100%{stroke-dashoffset:0}}
.gpb-e0-b{animation:gpb-e0-bk 7s infinite}
@keyframes gpb-e0-bk{0%{transform:translate(235px,165.25px)}12%{transform:translate(235px,165.25px);animation-timing-function:ease-in-out}18%{transform:translate(235px,151.25px);animation-timing-function:ease-in-out}24%{transform:translate(235px,165.25px)}32%{transform:translate(235px,165.25px);animation-timing-function:ease-in-out}38%{transform:translate(235px,151.25px);animation-timing-function:ease-in-out}44%{transform:translate(235px,165.25px)}52%{transform:translate(235px,165.25px);animation-timing-function:ease-in-out}58%{transform:translate(235px,151.25px);animation-timing-function:ease-in-out}64%{transform:translate(235px,165.25px)}100%{transform:translate(235px,165.25px)}}
/* e1 */
.gpb-e1-b{animation:gpb-e1-bk 7s infinite}
@keyframes gpb-e1-bk{0%{transform:translate(193.46px,67.22px) rotate(-28.61deg)}12%{transform:translate(193.46px,67.22px) rotate(-28.61deg);animation-timing-function:cubic-bezier(.4,0,.3,1)}42%{transform:translate(109.86px,112.82px) rotate(-28.61deg)}100%{transform:translate(109.86px,112.82px) rotate(-28.61deg)}}
.gpb-e1-f{animation:gpb-e1-fk 7s infinite}
@keyframes gpb-e1-fk{0%{opacity:0}48%{opacity:0}58%{opacity:1}100%{opacity:1}}
/* e2 */
.gpb-e2-p{animation:gpb-e2-pk 7s infinite}
@keyframes gpb-e2-pk{0%{transform:translate(150px,190px) rotate(-12deg)}30%{transform:translate(150px,190px) rotate(-12deg);animation-timing-function:ease-in-out}46%{transform:translate(150px,190px) rotate(12deg)}100%{transform:translate(150px,190px) rotate(12deg)}}
.gpb-e2-d{animation:gpb-e2-dk 7s infinite}
@keyframes gpb-e2-dk{0%{transform:translate(0,-120px);opacity:0}8%{transform:translate(0,-120px);opacity:1;animation-timing-function:ease-in}26%{transform:translate(0,0);opacity:1}100%{transform:translate(0,0);opacity:1}}
/* e3 */
.gpb-e3-s{animation:gpb-e3-sk 1.8s ease-in-out infinite alternate}
@keyframes gpb-e3-sk{0%{transform:translate(150px,28px) rotate(36deg)}100%{transform:translate(150px,28px) rotate(-36deg)}}
/* e4 */
.gpb-e4-b{animation:gpb-e4-bk 7s linear infinite}
@keyframes gpb-e4-bk{0%{transform:translate(110.65px,30.54px) rotate(64.23deg)}6%{transform:translate(110.65px,30.54px) rotate(64.23deg)}7.18%{transform:translate(115.25px,40.08px) rotate(63.3deg)}8.37%{transform:translate(119.31px,47.82px) rotate(61.25deg)}9.55%{transform:translate(123.16px,54.51px) rotate(58.89deg)}10.73%{transform:translate(126.72px,60.12px) rotate(56.15deg)}11.91%{transform:translate(129.9px,64.61px) rotate(52.97deg)}13.1%{transform:translate(132.6px,67.97px) rotate(49.23deg)}14.28%{transform:translate(134.66px,70.2px) rotate(44.83deg)}15.46%{transform:translate(135.88px,71.33px) rotate(39.64deg)}16.65%{transform:translate(136.07px,71.48px) rotate(33.53deg)}17.83%{transform:translate(135.04px,70.9px) rotate(26.43deg)}19.01%{transform:translate(132.69px,69.95px) rotate(18.33deg)}20.19%{transform:translate(129.19px,69.09px) rotate(9.41deg)}21.38%{transform:translate(127.33px,68.8px) rotate(2.37deg)}24.45%{transform:translate(130px,68.75px) rotate(0deg)}27.53%{transform:translate(135px,68.75px) rotate(0deg)}30.6%{transform:translate(140px,68.75px) rotate(0deg)}33.68%{transform:translate(145px,68.75px) rotate(0deg)}36.75%{transform:translate(150px,68.75px) rotate(0deg)}39.83%{transform:translate(155px,68.75px) rotate(0deg)}42.9%{transform:translate(160px,68.75px) rotate(0deg)}45.98%{transform:translate(165px,68.75px) rotate(0deg)}49.05%{transform:translate(170px,68.75px) rotate(0deg)}52.13%{transform:translate(175px,68.75px) rotate(0deg)}55.2%{transform:translate(180px,68.75px) rotate(0deg)}58.28%{transform:translate(185px,68.75px) rotate(0deg)}61.35%{transform:translate(190px,68.75px) rotate(0deg)}62.54%{transform:translate(200.27px,69px) rotate(5.37deg)}63.72%{transform:translate(219.58px,73.21px) rotate(20.37deg)}64.9%{transform:translate(237.99px,83.15px) rotate(35.91deg)}66.09%{transform:translate(250.56px,94.2px) rotate(46.14deg)}67.27%{transform:translate(259.65px,104.9px) rotate(52.53deg)}68.45%{transform:translate(266.84px,115.08px) rotate(56.37deg)}69.63%{transform:translate(272.92px,124.7px) rotate(58.42deg)}70.82%{transform:translate(278.25px,133.59px) rotate(59.07deg)}72%{transform:translate(282.92px,141.39px) rotate(58.42deg)}100%{transform:translate(282.92px,141.39px) rotate(58.42deg)}}
/* e5 */
.gpb-e5-c{animation:gpb-e5-ck 7s infinite}
@keyframes gpb-e5-ck{0%{transform:translate(44px,150px) scale(1,1)}15%{transform:translate(44px,150px) scale(1,1);animation-timing-function:ease-in-out}40%{transform:translate(44px,150px) scale(1.3,0.2)}60%{transform:translate(44px,150px) scale(1.3,0.2);animation-timing-function:ease-in-out}82%{transform:translate(44px,150px) scale(1,1)}100%{transform:translate(44px,150px) scale(1,1)}}
.gpb-e5-b{animation:gpb-e5-bk 7s infinite}
@keyframes gpb-e5-bk{0%{transform:translate(208.75px,120px)}15%{transform:translate(208.75px,120px);animation-timing-function:ease-in-out}40%{transform:translate(250.75px,120px)}60%{transform:translate(250.75px,120px);animation-timing-function:ease-in-out}82%{transform:translate(208.75px,120px)}100%{transform:translate(208.75px,120px)}}
/* e6 */
.gpb-e6-b{animation:gpb-e6-bk 7s infinite}
@keyframes gpb-e6-bk{0%{transform:translate(60px,95px)}10%{transform:translate(60px,95px);animation-timing-function:ease-in}22%{transform:translate(60px,147.25px)}90%{transform:translate(60px,147.25px);animation-timing-function:ease-in-out}100%{transform:translate(60px,95px)}}
.gpb-e6-k{animation:gpb-e6-kk 7s infinite}
@keyframes gpb-e6-kk{0%{transform:translate(0,0)}20%{transform:translate(0,0)}22%{transform:translate(0,3px)}90%{transform:translate(0,3px)}94%{transform:translate(0,0)}100%{transform:translate(0,0)}}
.gpb-e6-in{animation:gpb-e6-ink 7s infinite}
@keyframes gpb-e6-ink{0%{opacity:0}23%{opacity:0}30%{opacity:1}90%{opacity:1}95%{opacity:0}100%{opacity:0}}
.gpb-e6-out{animation:gpb-e6-outk 7s infinite}
@keyframes gpb-e6-outk{0%{opacity:0}36%{opacity:0}44%{opacity:1}90%{opacity:1}95%{opacity:0}100%{opacity:0}}
/* e7 */
.gpb-e7-l0{animation:gpb-e7-l0k 7s linear infinite}
@keyframes gpb-e7-l0k{0%{stroke-dashoffset:1}5%{stroke-dashoffset:1}25%{stroke-dashoffset:0}100%{stroke-dashoffset:0}}
.gpb-e7-l1{animation:gpb-e7-l1k 7s linear infinite}
@keyframes gpb-e7-l1k{0%{stroke-dashoffset:1}30%{stroke-dashoffset:1}50%{stroke-dashoffset:0}100%{stroke-dashoffset:0}}
.gpb-e7-l2{animation:gpb-e7-l2k 7s linear infinite}
@keyframes gpb-e7-l2k{0%{stroke-dashoffset:1}55%{stroke-dashoffset:1}72%{stroke-dashoffset:0}100%{stroke-dashoffset:0}}
.gpb-e7-b{animation:gpb-e7-bk 7s linear infinite}
@keyframes gpb-e7-bk{0%{transform:translate(75px,13.25px)}5%{transform:translate(75px,13.25px)}25%{transform:translate(225px,13.25px)}30%{transform:translate(75px,81.25px)}50%{transform:translate(225px,81.25px)}55%{transform:translate(75px,149.25px)}72%{transform:translate(180px,149.25px)}100%{transform:translate(180px,149.25px)}}

.c0a2b943{min-height:100vh;background:var(--frame)}
.c8ad7a07{border-bottom:1px solid var(--grid)}
.c4ff3fed{max-width:1200px;margin:0 auto;padding:16px 32px;display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:16px}
.c5321962{display:flex;flex-wrap:wrap;gap:8px 24px;font-size:15px;line-height:22px}
.c3e71ce3{color:var(--ink);text-decoration:none}
.c3e71ce3:hover{text-decoration:underline}
.cb403397{color:var(--muted);text-decoration:none}
.cb403397:hover{text-decoration:underline}
.c91ecc34{max-width:1200px;margin:0 auto;padding:64px 32px}
.c05c78c5{max-width:75ch}
.c861da1b{margin:0;font-size:15px;line-height:22px;font-weight:500;color:var(--muted)}
.c832e954{margin:16px 0 0;font-family:'IBM Plex Sans Condensed','Arial Narrow',sans-serif;font-size:clamp(44px,7vw,72px);line-height:1;font-weight:700;letter-spacing:-0.01em;text-wrap:balance}
.cb4f734b{margin-top:32px;background:var(--surface);border-radius:4px;display:flex;justify-content:center;padding:24px 16px}
.cd7b4b16{margin:24px 0 0;font-size:22px;line-height:32px;text-wrap:pretty}
.c672544a{margin-top:32px;border:2px solid var(--ink);border-radius:4px;padding:20px 24px;display:grid;gap:8px;grid-template-columns:minmax(0,1fr)}
.ccea57bd{font-size:15px;line-height:22px;font-weight:600}
.cff3441d{margin:0;text-wrap:pretty}
.ceebccd7{margin-top:32px;display:flex;flex-wrap:wrap;gap:12px}
.c19bd19f{padding:8px 16px;border:1px solid var(--ink);border-radius:4px;color:var(--ink);text-decoration:none;font-size:16px;line-height:24px}
.c19bd19f:hover{background:var(--ink);color:var(--frame)}
.c168299f{margin-top:96px;max-width:900px}
.c40b045e{margin:0;font-size:15px;line-height:22px;font-weight:600;color:var(--muted)}
.c4aa5e1e{margin:4px 0 0;font-family:'IBM Plex Sans Condensed','Arial Narrow',sans-serif;font-size:44px;line-height:48px;font-weight:700;text-wrap:balance}
.c4b33861{margin:16px 0 0;max-width:75ch;font-size:18px;line-height:28px;text-wrap:pretty}
.cf1fcdde{margin-top:32px;border:2px solid var(--ink);border-radius:4px;padding:24px 32px 32px;max-width:900px}
.cfe88d03{margin:8px 0 0;font-family:'IBM Plex Sans Condensed','Arial Narrow',sans-serif;font-size:clamp(26px,3.6vw,36px);line-height:1.15;font-weight:600;text-wrap:balance}
.c2b4ea74{margin-top:24px;display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,260px),1fr));gap:24px}
.c19c25d6{min-width:0}
.ccd94111{margin:0;font-weight:600}
.cd50754b{margin-top:32px;max-width:900px;overflow-x:auto}
.c9e7adc2{width:100%;border-collapse:collapse;font-size:17px;line-height:26px}
.cb8d2176{border-bottom:1px solid var(--ink);text-align:left}
.c87245a3{padding:8px 16px 8px 0px;font-weight:600;vertical-align:bottom}
.cd2e7cd5{padding:8px 16px 8px 16px;font-weight:600;vertical-align:bottom}
.ce42692e{padding:12px 16px 12px 0px;vertical-align:top;font-weight:600}
.c8a03804{padding:12px 16px 12px 16px;vertical-align:top}
.ce61f33e{font-weight:600}
.c148e0a6{margin-top:24px;max-width:900px;display:flex;gap:16px;align-items:baseline;border-top:1px solid var(--ink);padding-top:16px}
.c837d595{flex:none;font-size:15px;line-height:22px;font-weight:600}
.c73a3907{margin-top:32px;background:var(--surface);border-radius:4px;padding:24px 32px 32px;max-width:900px}
.c583111a{margin:4px 0 0;font-size:24px;line-height:30px;font-weight:600}
.c788ee97{margin:12px 0 0;text-wrap:pretty}
.c7fee859{margin:20px 0 0;padding:0;list-style:none;display:grid;gap:12px;grid-template-columns:minmax(0,1fr)}
.c570c46f{display:grid;grid-template-columns:32px minmax(0,1fr);gap:12px;align-items:start;padding:12px 16px;background:var(--frame);border-radius:4px}
.ce8c1623{font-weight:600;color:var(--muted)}
.cbbb1725{text-wrap:pretty}
.ce7894e4{font-weight:600;white-space:nowrap}
.caa12079{margin:0;font-size:18px;line-height:28px;font-weight:600}
.c00d0716{margin:16px 0 0;padding:0;list-style:none;display:grid;gap:8px;max-width:75ch;font-size:18px;line-height:28px;grid-template-columns:minmax(0,1fr)}
.cfa13325{display:flex;gap:12px}
.c0ec2c72{flex:none;width:20px;font-weight:600}
.c70b2a0d{min-width:0;text-wrap:pretty}
.c4ffe2f2{margin-top:32px;border-top:1px solid var(--grid);padding-top:16px;max-width:900px}
.c6d7a4ac{margin:8px 0 0;padding:0;list-style:none;display:grid;gap:4px;font-size:16px;line-height:24px;grid-template-columns:minmax(0,1fr)}
.c89bb97b{margin-top:32px;display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,300px),1fr));gap:24px;max-width:1100px}
.c2998cd0{background:var(--surface);border-radius:4px;padding:24px 28px 28px;min-width:0}
.ce129d15{padding:12px 16px 12px 0px;vertical-align:top}
.c6c2b73e{margin-top:32px;background:var(--surface);border-radius:4px;padding:32px;max-width:900px}
.c10499fd{margin:16px 0 0;padding:0;list-style:none;display:grid;border-top:1px solid var(--grid);grid-template-columns:minmax(0,1fr)}
.c215d7ea{display:flex;gap:16px;padding:16px 0;border-bottom:1px solid var(--grid)}
.c88255fd{width:24px;flex:none;font-weight:600}
.c97a079c{display:flex;gap:16px;padding:16px 0}
.c7a911df{margin:16px 0 0;max-width:min(100%,900px);min-width:0;overflow-x:auto;overflow-y:hidden;font-size:20px;line-height:30px}
.ccec0e13{margin-top:96px;border-top:1px solid var(--grid);padding-top:32px;display:flex;flex-wrap:wrap;gap:16px 32px;justify-content:space-between;align-items:center;font-size:15px;line-height:22px;color:var(--muted)}
.ce8c9c7e{margin:32px 0 0;max-width:75ch;font-size:13px;line-height:18px;color:var(--muted)}
.ce3330cd{margin-top:48px;display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,400px),1fr));gap:24px;align-items:start}
.cf66d9ac{background:var(--surface);border-radius:4px;padding:clamp(16px,5vw,32px);min-width:0}
.c696bb22{display:grid;justify-items:start;gap:8px;grid-template-columns:minmax(0,1fr)}
.cb28ad9f{padding:4px 10px;background:var(--tangent);color:var(--ink);border-radius:4px;font-size:13px;line-height:18px;font-weight:600;white-space:nowrap}
.c014a2e8{margin:0;font-family:'IBM Plex Sans Condensed','Arial Narrow',sans-serif;font-size:24px;line-height:30px;font-weight:600}
.c69c3489{margin:8px 0 0;font-size:16px;line-height:24px;color:var(--muted);text-wrap:pretty}
.cf3529a0{margin:24px 0 0;padding:0;list-style:none;display:grid;grid-template-columns:minmax(0,1fr)}
.c1e9242a{display:grid;grid-template-columns:36px minmax(0,1fr);gap:16px;align-items:start;padding:0 0 16px}
.c29c090f{width:36px;height:36px;border-radius:4px;background:var(--tangent-tint);color:var(--ink);display:flex;align-items:center;justify-content:center;font-family:'IBM Plex Sans Condensed','Arial Narrow',sans-serif;font-size:18px;line-height:1;font-weight:700}
.c069a069{padding-top:4px;font-size:18px;line-height:28px;text-wrap:pretty;min-width:0}
.ccb71f02{display:grid;grid-template-columns:36px minmax(0,1fr);gap:16px;align-items:start;padding:16px 0;border-top:1px solid var(--grid)}
.cc1a997e{display:grid;grid-template-columns:36px minmax(0,1fr);gap:16px;align-items:start;padding:16px 0 0;border-top:1px solid var(--grid)}
.c3b1e29d{margin:32px 0 0;max-width:560px}
.cacb13e1{display:block;width:100%}
.c05fbec6{margin-top:8px;font-size:15px;line-height:22px;color:var(--muted);text-wrap:pretty}
.cb0e94db{margin:32px 0 0;max-width:260px}
.c14cd104{margin:40px 0 0;font-size:24px;line-height:30px;font-weight:600;max-width:75ch}
.c7cb60f2{margin:16px 0 0;max-width:75ch;font-size:15px;line-height:22px;color:var(--muted);text-wrap:pretty}
.c04deed4{margin:32px 0 0;max-width:960px}
.c00275e6{margin:24px 0 0;font-size:18px;line-height:28px;font-weight:600;max-width:75ch}
.c2c463b9{margin:32px 0 0;max-width:460px}
.c3cbb71a{margin:32px 0 0;max-width:500px}
.c5564cb8{margin:24px 0 0;max-width:75ch;font-size:22px;line-height:32px;text-wrap:pretty}
.c06c7bb6{margin:32px 0 0;max-width:720px}
.c20a3c42{display:block;width:100%;height:auto}
.ce996692{margin:32px 0 0;max-width:900px}
.c5d707c8{margin:0 0 8px;font-size:15px;line-height:22px;font-weight:600;color:var(--muted)}
.c7891aea{margin-top:32px;max-width:900px}
.cd317a43{margin:32px 0 0;max-width:620px}
.cb49388b{fill:var(--grid-wash)}
.c966ce96{stroke:var(--ink)}
.c0621a2e{fill:var(--ink)}
.c04162b2{fill:var(--frame);stroke:var(--ink)}
.c9ea6e95{stroke:var(--muted)}
.c635b5b0{fill:var(--muted)}
.c57299ef{fill:var(--tangent-text)}
.c1f993c8{margin:32px 0 0;max-width:480px}
.c69af2ac{margin-top:24px;display:grid;gap:8px;max-width:900px;grid-template-columns:minmax(0,1fr)}
.c3e35679{margin:0;padding:12px 16px;border-left:4px solid var(--muted);background:var(--frame);font-size:18px;line-height:28px}
.c15d7841{margin:0;padding:12px 16px;border-left:4px solid var(--tangent);background:var(--frame);font-size:18px;line-height:28px}
.c62edc38{margin:32px 0 0;font-size:18px;line-height:28px;text-wrap:pretty}
.c6370f13{margin:16px 0 0;font-size:18px;line-height:28px;text-wrap:pretty}
.c96a63aa{margin-top:96px}
.cd650e7b{margin:8px 0 0;font-family:'IBM Plex Sans Condensed','Arial Narrow',sans-serif;font-size:44px;line-height:48px;font-weight:700}
.cc0e67e5{margin:0;font-family:'IBM Plex Sans Condensed','Arial Narrow',sans-serif;font-size:44px;line-height:48px;font-weight:700}
.c2f1af3a{margin:16px 0 0;max-width:75ch;text-wrap:pretty}
.c4a2182e{margin-top:24px;border-top:1px solid var(--ink);padding-top:16px;max-width:900px}
.c3315518{display:flex;flex-wrap:wrap;justify-content:space-between;gap:8px 16px;align-items:baseline}
.c2ab7b9c{margin:0;font-size:15px;line-height:22px;font-weight:600}
.c0d697be{font-size:15px;line-height:22px;color:var(--muted)}
.c5d643d0{margin:8px 0 0;font-size:15px;line-height:22px;font-weight:600;color:var(--muted)}
.cf74dc09{margin-top:24px;display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,220px),1fr));gap:8px}
.cb7ecc66{cursor:pointer;font-family:inherit;text-align:left;display:flex;gap:12px;align-items:center;min-height:48px;padding:8px 16px;border-radius:4px;font-size:16px;line-height:24px}
.c03f3584{width:16px;flex:none;font-weight:600}
.cdd1e404{margin:16px 0 0;min-height:28px;font-size:18px;line-height:28px;text-wrap:pretty}
.c1ea65b4{margin-top:8px;display:flex;flex-wrap:wrap;gap:12px}
.cc341122{cursor:pointer;font-family:inherit;font-size:15px;font-weight:600;min-height:44px;padding:0 16px;border-radius:4px;border:1px solid var(--muted);background:transparent}
.c47f2cb2{margin-top:32px;border-top:1px solid var(--ink)}
.c7a5d45a{display:grid;grid-template-columns:120px minmax(0,1fr);gap:24px;align-items:center;padding:24px 0;border-bottom:1px solid var(--grid);color:var(--ink);text-decoration:none}
.c7a5d45a:hover{background:var(--surface)}
.c0d81a5b{background:var(--surface);border-radius:4px;padding:12px;display:flex;justify-content:center}
.cf673b01{margin:8px 0 0;font-size:16px;line-height:24px;text-wrap:pretty}
.c878bb2f{margin:4px 0 0;font-size:15px;line-height:22px;color:var(--muted);text-wrap:pretty}
.c9f7c7df{margin-top:64px;border-top:1px solid var(--grid);padding-top:32px;display:grid;gap:8px;max-width:75ch;grid-template-columns:minmax(0,1fr)}
.c05767bc{margin:0;font-size:15px;line-height:22px;color:var(--muted)}
