/*
  Layout and spacing vocabulary.

  The templates carry a grid and spacing shorthand inherited from Bootstrap. Rather than redraw a
  hundred screens at once, the vocabulary is reimplemented here in plain CSS on top of the tokens.
  Screens move to purpose-named classes as they are rewritten; see #470 and #471.
*/

@layer scaffold {
  .container, .container-sm, .container-md, .container-lg, .container-xl {
    width: min(100%, var(--page));
    margin-inline: auto;
  }

  .row {
    display: flex;
    flex-wrap: wrap;
    margin-inline: calc(var(--s-3) * -1);
  }

  .row > * {
    padding-inline: var(--s-3);
    width: 100%;
    /* Without this a flex child refuses to shrink below its content, so one wide table stretches
       the whole page sideways instead of scrolling inside its own box. */
    min-width: 0;
  }

  .no-gutters { margin-inline: 0; }
  .no-gutters > * { padding-inline: 0; }

  .col { flex: 1 0 0%; width: auto; }
  .col-auto { flex: 0 0 auto; width: auto; }

  .col-1 { flex: 0 0 auto; width: 8.333333%; }
  .col-2 { flex: 0 0 auto; width: 16.666667%; }
  .col-3 { flex: 0 0 auto; width: 25.0%; }
  .col-4 { flex: 0 0 auto; width: 33.333333%; }
  .col-5 { flex: 0 0 auto; width: 41.666667%; }
  .col-6 { flex: 0 0 auto; width: 50.0%; }
  .col-7 { flex: 0 0 auto; width: 58.333333%; }
  .col-8 { flex: 0 0 auto; width: 66.666667%; }
  .col-9 { flex: 0 0 auto; width: 75.0%; }
  .col-10 { flex: 0 0 auto; width: 83.333333%; }
  .col-11 { flex: 0 0 auto; width: 91.666667%; }
  .col-12 { flex: 0 0 auto; width: 100.0%; }
  .offset-0 { margin-inline-start: 0.0%; }
  .offset-1 { margin-inline-start: 8.333333%; }
  .offset-2 { margin-inline-start: 16.666667%; }
  .offset-3 { margin-inline-start: 25.0%; }
  .offset-4 { margin-inline-start: 33.333333%; }
  .offset-5 { margin-inline-start: 41.666667%; }
  .offset-6 { margin-inline-start: 50.0%; }
  .offset-7 { margin-inline-start: 58.333333%; }
  .offset-8 { margin-inline-start: 66.666667%; }
  .offset-9 { margin-inline-start: 75.0%; }
  .offset-10 { margin-inline-start: 83.333333%; }
  .offset-11 { margin-inline-start: 91.666667%; }

  @media (min-width: 36em) {
    .col-sm { flex: 1 0 0%; width: auto; }
    .col-sm-auto { flex: 0 0 auto; width: auto; }
    .col-sm-1 { flex: 0 0 auto; width: 8.333333%; }
    .col-sm-2 { flex: 0 0 auto; width: 16.666667%; }
    .col-sm-3 { flex: 0 0 auto; width: 25.0%; }
    .col-sm-4 { flex: 0 0 auto; width: 33.333333%; }
    .col-sm-5 { flex: 0 0 auto; width: 41.666667%; }
    .col-sm-6 { flex: 0 0 auto; width: 50.0%; }
    .col-sm-7 { flex: 0 0 auto; width: 58.333333%; }
    .col-sm-8 { flex: 0 0 auto; width: 66.666667%; }
    .col-sm-9 { flex: 0 0 auto; width: 75.0%; }
    .col-sm-10 { flex: 0 0 auto; width: 83.333333%; }
    .col-sm-11 { flex: 0 0 auto; width: 91.666667%; }
    .col-sm-12 { flex: 0 0 auto; width: 100.0%; }
    .offset-sm-0 { margin-inline-start: 0.0%; }
    .offset-sm-1 { margin-inline-start: 8.333333%; }
    .offset-sm-2 { margin-inline-start: 16.666667%; }
    .offset-sm-3 { margin-inline-start: 25.0%; }
    .offset-sm-4 { margin-inline-start: 33.333333%; }
    .offset-sm-5 { margin-inline-start: 41.666667%; }
    .offset-sm-6 { margin-inline-start: 50.0%; }
    .offset-sm-7 { margin-inline-start: 58.333333%; }
    .offset-sm-8 { margin-inline-start: 66.666667%; }
    .offset-sm-9 { margin-inline-start: 75.0%; }
    .offset-sm-10 { margin-inline-start: 83.333333%; }
    .offset-sm-11 { margin-inline-start: 91.666667%; }
  }

  @media (min-width: 48em) {
    .col-md { flex: 1 0 0%; width: auto; }
    .col-md-auto { flex: 0 0 auto; width: auto; }
    .col-md-1 { flex: 0 0 auto; width: 8.333333%; }
    .col-md-2 { flex: 0 0 auto; width: 16.666667%; }
    .col-md-3 { flex: 0 0 auto; width: 25.0%; }
    .col-md-4 { flex: 0 0 auto; width: 33.333333%; }
    .col-md-5 { flex: 0 0 auto; width: 41.666667%; }
    .col-md-6 { flex: 0 0 auto; width: 50.0%; }
    .col-md-7 { flex: 0 0 auto; width: 58.333333%; }
    .col-md-8 { flex: 0 0 auto; width: 66.666667%; }
    .col-md-9 { flex: 0 0 auto; width: 75.0%; }
    .col-md-10 { flex: 0 0 auto; width: 83.333333%; }
    .col-md-11 { flex: 0 0 auto; width: 91.666667%; }
    .col-md-12 { flex: 0 0 auto; width: 100.0%; }
    .offset-md-0 { margin-inline-start: 0.0%; }
    .offset-md-1 { margin-inline-start: 8.333333%; }
    .offset-md-2 { margin-inline-start: 16.666667%; }
    .offset-md-3 { margin-inline-start: 25.0%; }
    .offset-md-4 { margin-inline-start: 33.333333%; }
    .offset-md-5 { margin-inline-start: 41.666667%; }
    .offset-md-6 { margin-inline-start: 50.0%; }
    .offset-md-7 { margin-inline-start: 58.333333%; }
    .offset-md-8 { margin-inline-start: 66.666667%; }
    .offset-md-9 { margin-inline-start: 75.0%; }
    .offset-md-10 { margin-inline-start: 83.333333%; }
    .offset-md-11 { margin-inline-start: 91.666667%; }
  }

  @media (min-width: 62em) {
    .col-lg { flex: 1 0 0%; width: auto; }
    .col-lg-auto { flex: 0 0 auto; width: auto; }
    .col-lg-1 { flex: 0 0 auto; width: 8.333333%; }
    .col-lg-2 { flex: 0 0 auto; width: 16.666667%; }
    .col-lg-3 { flex: 0 0 auto; width: 25.0%; }
    .col-lg-4 { flex: 0 0 auto; width: 33.333333%; }
    .col-lg-5 { flex: 0 0 auto; width: 41.666667%; }
    .col-lg-6 { flex: 0 0 auto; width: 50.0%; }
    .col-lg-7 { flex: 0 0 auto; width: 58.333333%; }
    .col-lg-8 { flex: 0 0 auto; width: 66.666667%; }
    .col-lg-9 { flex: 0 0 auto; width: 75.0%; }
    .col-lg-10 { flex: 0 0 auto; width: 83.333333%; }
    .col-lg-11 { flex: 0 0 auto; width: 91.666667%; }
    .col-lg-12 { flex: 0 0 auto; width: 100.0%; }
    .offset-lg-0 { margin-inline-start: 0.0%; }
    .offset-lg-1 { margin-inline-start: 8.333333%; }
    .offset-lg-2 { margin-inline-start: 16.666667%; }
    .offset-lg-3 { margin-inline-start: 25.0%; }
    .offset-lg-4 { margin-inline-start: 33.333333%; }
    .offset-lg-5 { margin-inline-start: 41.666667%; }
    .offset-lg-6 { margin-inline-start: 50.0%; }
    .offset-lg-7 { margin-inline-start: 58.333333%; }
    .offset-lg-8 { margin-inline-start: 66.666667%; }
    .offset-lg-9 { margin-inline-start: 75.0%; }
    .offset-lg-10 { margin-inline-start: 83.333333%; }
    .offset-lg-11 { margin-inline-start: 91.666667%; }
  }

  @media (min-width: 75em) {
    .col-xl { flex: 1 0 0%; width: auto; }
    .col-xl-auto { flex: 0 0 auto; width: auto; }
    .col-xl-1 { flex: 0 0 auto; width: 8.333333%; }
    .col-xl-2 { flex: 0 0 auto; width: 16.666667%; }
    .col-xl-3 { flex: 0 0 auto; width: 25.0%; }
    .col-xl-4 { flex: 0 0 auto; width: 33.333333%; }
    .col-xl-5 { flex: 0 0 auto; width: 41.666667%; }
    .col-xl-6 { flex: 0 0 auto; width: 50.0%; }
    .col-xl-7 { flex: 0 0 auto; width: 58.333333%; }
    .col-xl-8 { flex: 0 0 auto; width: 66.666667%; }
    .col-xl-9 { flex: 0 0 auto; width: 75.0%; }
    .col-xl-10 { flex: 0 0 auto; width: 83.333333%; }
    .col-xl-11 { flex: 0 0 auto; width: 91.666667%; }
    .col-xl-12 { flex: 0 0 auto; width: 100.0%; }
    .offset-xl-0 { margin-inline-start: 0.0%; }
    .offset-xl-1 { margin-inline-start: 8.333333%; }
    .offset-xl-2 { margin-inline-start: 16.666667%; }
    .offset-xl-3 { margin-inline-start: 25.0%; }
    .offset-xl-4 { margin-inline-start: 33.333333%; }
    .offset-xl-5 { margin-inline-start: 41.666667%; }
    .offset-xl-6 { margin-inline-start: 50.0%; }
    .offset-xl-7 { margin-inline-start: 58.333333%; }
    .offset-xl-8 { margin-inline-start: 66.666667%; }
    .offset-xl-9 { margin-inline-start: 75.0%; }
    .offset-xl-10 { margin-inline-start: 83.333333%; }
    .offset-xl-11 { margin-inline-start: 91.666667%; }
  }

  .d-none { display: none !important; }
  .d-block { display: block !important; }
  .d-inline { display: inline !important; }
  .d-inline-block { display: inline-block !important; }
  .d-flex { display: flex !important; }
  .d-inline-flex { display: inline-flex !important; }
  .d-table { display: table !important; }
  .d-table-row { display: table-row !important; }
  .d-table-cell { display: table-cell !important; }
  .text-left { text-align: start !important; }
  .text-right { text-align: end !important; }
  .text-center { text-align: center !important; }
  .flex-row { flex-direction: row !important; }
  .flex-column { flex-direction: column !important; }
  .flex-wrap { flex-wrap: wrap !important; }
  .flex-nowrap { flex-wrap: nowrap !important; }
  .justify-content-start { justify-content: flex-start !important; }
  .justify-content-end { justify-content: flex-end !important; }
  .justify-content-center { justify-content: center !important; }
  .justify-content-between { justify-content: space-between !important; }
  .justify-content-around { justify-content: space-around !important; }
  .align-items-start { align-items: flex-start !important; }
  .align-items-end { align-items: flex-end !important; }
  .align-items-center { align-items: center !important; }
  .align-items-baseline { align-items: baseline !important; }
  .align-items-stretch { align-items: stretch !important; }
  .ml-auto { margin-inline-start: auto !important; }
  .mr-auto { margin-inline-end: auto !important; }
  .mx-auto { margin-inline: auto !important; }
  .m-0 { margin: 0 !important; }
  .mt-0 { margin-top: 0 !important; }
  .mb-0 { margin-bottom: 0 !important; }
  .ml-0 { margin-inline-start: 0 !important; }
  .mr-0 { margin-inline-end: 0 !important; }
  .mx-0 { margin-inline: 0 !important; }
  .my-0 { margin-block: 0 !important; }
  .p-0 { padding: 0 !important; }
  .pt-0 { padding-top: 0 !important; }
  .pb-0 { padding-bottom: 0 !important; }
  .pl-0 { padding-inline-start: 0 !important; }
  .pr-0 { padding-inline-end: 0 !important; }
  .px-0 { padding-inline: 0 !important; }
  .py-0 { padding-block: 0 !important; }
  .m-1 { margin: var(--s-1) !important; }
  .mt-1 { margin-top: var(--s-1) !important; }
  .mb-1 { margin-bottom: var(--s-1) !important; }
  .ml-1 { margin-inline-start: var(--s-1) !important; }
  .mr-1 { margin-inline-end: var(--s-1) !important; }
  .mx-1 { margin-inline: var(--s-1) !important; }
  .my-1 { margin-block: var(--s-1) !important; }
  .p-1 { padding: var(--s-1) !important; }
  .pt-1 { padding-top: var(--s-1) !important; }
  .pb-1 { padding-bottom: var(--s-1) !important; }
  .pl-1 { padding-inline-start: var(--s-1) !important; }
  .pr-1 { padding-inline-end: var(--s-1) !important; }
  .px-1 { padding-inline: var(--s-1) !important; }
  .py-1 { padding-block: var(--s-1) !important; }
  .m-2 { margin: var(--s-2) !important; }
  .mt-2 { margin-top: var(--s-2) !important; }
  .mb-2 { margin-bottom: var(--s-2) !important; }
  .ml-2 { margin-inline-start: var(--s-2) !important; }
  .mr-2 { margin-inline-end: var(--s-2) !important; }
  .mx-2 { margin-inline: var(--s-2) !important; }
  .my-2 { margin-block: var(--s-2) !important; }
  .p-2 { padding: var(--s-2) !important; }
  .pt-2 { padding-top: var(--s-2) !important; }
  .pb-2 { padding-bottom: var(--s-2) !important; }
  .pl-2 { padding-inline-start: var(--s-2) !important; }
  .pr-2 { padding-inline-end: var(--s-2) !important; }
  .px-2 { padding-inline: var(--s-2) !important; }
  .py-2 { padding-block: var(--s-2) !important; }
  .m-3 { margin: var(--s-4) !important; }
  .mt-3 { margin-top: var(--s-4) !important; }
  .mb-3 { margin-bottom: var(--s-4) !important; }
  .ml-3 { margin-inline-start: var(--s-4) !important; }
  .mr-3 { margin-inline-end: var(--s-4) !important; }
  .mx-3 { margin-inline: var(--s-4) !important; }
  .my-3 { margin-block: var(--s-4) !important; }
  .p-3 { padding: var(--s-4) !important; }
  .pt-3 { padding-top: var(--s-4) !important; }
  .pb-3 { padding-bottom: var(--s-4) !important; }
  .pl-3 { padding-inline-start: var(--s-4) !important; }
  .pr-3 { padding-inline-end: var(--s-4) !important; }
  .px-3 { padding-inline: var(--s-4) !important; }
  .py-3 { padding-block: var(--s-4) !important; }
  .m-4 { margin: var(--s-5) !important; }
  .mt-4 { margin-top: var(--s-5) !important; }
  .mb-4 { margin-bottom: var(--s-5) !important; }
  .ml-4 { margin-inline-start: var(--s-5) !important; }
  .mr-4 { margin-inline-end: var(--s-5) !important; }
  .mx-4 { margin-inline: var(--s-5) !important; }
  .my-4 { margin-block: var(--s-5) !important; }
  .p-4 { padding: var(--s-5) !important; }
  .pt-4 { padding-top: var(--s-5) !important; }
  .pb-4 { padding-bottom: var(--s-5) !important; }
  .pl-4 { padding-inline-start: var(--s-5) !important; }
  .pr-4 { padding-inline-end: var(--s-5) !important; }
  .px-4 { padding-inline: var(--s-5) !important; }
  .py-4 { padding-block: var(--s-5) !important; }
  .m-5 { margin: var(--s-7) !important; }
  .mt-5 { margin-top: var(--s-7) !important; }
  .mb-5 { margin-bottom: var(--s-7) !important; }
  .ml-5 { margin-inline-start: var(--s-7) !important; }
  .mr-5 { margin-inline-end: var(--s-7) !important; }
  .mx-5 { margin-inline: var(--s-7) !important; }
  .my-5 { margin-block: var(--s-7) !important; }
  .p-5 { padding: var(--s-7) !important; }
  .pt-5 { padding-top: var(--s-7) !important; }
  .pb-5 { padding-bottom: var(--s-7) !important; }
  .pl-5 { padding-inline-start: var(--s-7) !important; }
  .pr-5 { padding-inline-end: var(--s-7) !important; }
  .px-5 { padding-inline: var(--s-7) !important; }
  .py-5 { padding-block: var(--s-7) !important; }

  @media (min-width: 36em) {
    .d-sm-none { display: none !important; }
    .d-sm-block { display: block !important; }
    .d-sm-inline { display: inline !important; }
    .d-sm-inline-block { display: inline-block !important; }
    .d-sm-flex { display: flex !important; }
    .d-sm-inline-flex { display: inline-flex !important; }
    .d-sm-table { display: table !important; }
    .d-sm-table-row { display: table-row !important; }
    .d-sm-table-cell { display: table-cell !important; }
    .text-sm-left { text-align: start !important; }
    .text-sm-right { text-align: end !important; }
    .text-sm-center { text-align: center !important; }
    .flex-sm-row { flex-direction: row !important; }
    .flex-sm-column { flex-direction: column !important; }
    .flex-sm-wrap { flex-wrap: wrap !important; }
    .flex-sm-nowrap { flex-wrap: nowrap !important; }
    .justify-content-sm-start { justify-content: flex-start !important; }
    .justify-content-sm-end { justify-content: flex-end !important; }
    .justify-content-sm-center { justify-content: center !important; }
    .justify-content-sm-between { justify-content: space-between !important; }
    .justify-content-sm-around { justify-content: space-around !important; }
    .align-items-sm-start { align-items: flex-start !important; }
    .align-items-sm-end { align-items: flex-end !important; }
    .align-items-sm-center { align-items: center !important; }
    .align-items-sm-baseline { align-items: baseline !important; }
    .align-items-sm-stretch { align-items: stretch !important; }
    .ml-sm-auto { margin-inline-start: auto !important; }
    .mr-sm-auto { margin-inline-end: auto !important; }
    .mx-sm-auto { margin-inline: auto !important; }
    .m-sm-0 { margin: 0 !important; }
    .mt-sm-0 { margin-top: 0 !important; }
    .mb-sm-0 { margin-bottom: 0 !important; }
    .ml-sm-0 { margin-inline-start: 0 !important; }
    .mr-sm-0 { margin-inline-end: 0 !important; }
    .mx-sm-0 { margin-inline: 0 !important; }
    .my-sm-0 { margin-block: 0 !important; }
    .p-sm-0 { padding: 0 !important; }
    .pt-sm-0 { padding-top: 0 !important; }
    .pb-sm-0 { padding-bottom: 0 !important; }
    .pl-sm-0 { padding-inline-start: 0 !important; }
    .pr-sm-0 { padding-inline-end: 0 !important; }
    .px-sm-0 { padding-inline: 0 !important; }
    .py-sm-0 { padding-block: 0 !important; }
    .m-sm-1 { margin: var(--s-1) !important; }
    .mt-sm-1 { margin-top: var(--s-1) !important; }
    .mb-sm-1 { margin-bottom: var(--s-1) !important; }
    .ml-sm-1 { margin-inline-start: var(--s-1) !important; }
    .mr-sm-1 { margin-inline-end: var(--s-1) !important; }
    .mx-sm-1 { margin-inline: var(--s-1) !important; }
    .my-sm-1 { margin-block: var(--s-1) !important; }
    .p-sm-1 { padding: var(--s-1) !important; }
    .pt-sm-1 { padding-top: var(--s-1) !important; }
    .pb-sm-1 { padding-bottom: var(--s-1) !important; }
    .pl-sm-1 { padding-inline-start: var(--s-1) !important; }
    .pr-sm-1 { padding-inline-end: var(--s-1) !important; }
    .px-sm-1 { padding-inline: var(--s-1) !important; }
    .py-sm-1 { padding-block: var(--s-1) !important; }
    .m-sm-2 { margin: var(--s-2) !important; }
    .mt-sm-2 { margin-top: var(--s-2) !important; }
    .mb-sm-2 { margin-bottom: var(--s-2) !important; }
    .ml-sm-2 { margin-inline-start: var(--s-2) !important; }
    .mr-sm-2 { margin-inline-end: var(--s-2) !important; }
    .mx-sm-2 { margin-inline: var(--s-2) !important; }
    .my-sm-2 { margin-block: var(--s-2) !important; }
    .p-sm-2 { padding: var(--s-2) !important; }
    .pt-sm-2 { padding-top: var(--s-2) !important; }
    .pb-sm-2 { padding-bottom: var(--s-2) !important; }
    .pl-sm-2 { padding-inline-start: var(--s-2) !important; }
    .pr-sm-2 { padding-inline-end: var(--s-2) !important; }
    .px-sm-2 { padding-inline: var(--s-2) !important; }
    .py-sm-2 { padding-block: var(--s-2) !important; }
    .m-sm-3 { margin: var(--s-4) !important; }
    .mt-sm-3 { margin-top: var(--s-4) !important; }
    .mb-sm-3 { margin-bottom: var(--s-4) !important; }
    .ml-sm-3 { margin-inline-start: var(--s-4) !important; }
    .mr-sm-3 { margin-inline-end: var(--s-4) !important; }
    .mx-sm-3 { margin-inline: var(--s-4) !important; }
    .my-sm-3 { margin-block: var(--s-4) !important; }
    .p-sm-3 { padding: var(--s-4) !important; }
    .pt-sm-3 { padding-top: var(--s-4) !important; }
    .pb-sm-3 { padding-bottom: var(--s-4) !important; }
    .pl-sm-3 { padding-inline-start: var(--s-4) !important; }
    .pr-sm-3 { padding-inline-end: var(--s-4) !important; }
    .px-sm-3 { padding-inline: var(--s-4) !important; }
    .py-sm-3 { padding-block: var(--s-4) !important; }
    .m-sm-4 { margin: var(--s-5) !important; }
    .mt-sm-4 { margin-top: var(--s-5) !important; }
    .mb-sm-4 { margin-bottom: var(--s-5) !important; }
    .ml-sm-4 { margin-inline-start: var(--s-5) !important; }
    .mr-sm-4 { margin-inline-end: var(--s-5) !important; }
    .mx-sm-4 { margin-inline: var(--s-5) !important; }
    .my-sm-4 { margin-block: var(--s-5) !important; }
    .p-sm-4 { padding: var(--s-5) !important; }
    .pt-sm-4 { padding-top: var(--s-5) !important; }
    .pb-sm-4 { padding-bottom: var(--s-5) !important; }
    .pl-sm-4 { padding-inline-start: var(--s-5) !important; }
    .pr-sm-4 { padding-inline-end: var(--s-5) !important; }
    .px-sm-4 { padding-inline: var(--s-5) !important; }
    .py-sm-4 { padding-block: var(--s-5) !important; }
    .m-sm-5 { margin: var(--s-7) !important; }
    .mt-sm-5 { margin-top: var(--s-7) !important; }
    .mb-sm-5 { margin-bottom: var(--s-7) !important; }
    .ml-sm-5 { margin-inline-start: var(--s-7) !important; }
    .mr-sm-5 { margin-inline-end: var(--s-7) !important; }
    .mx-sm-5 { margin-inline: var(--s-7) !important; }
    .my-sm-5 { margin-block: var(--s-7) !important; }
    .p-sm-5 { padding: var(--s-7) !important; }
    .pt-sm-5 { padding-top: var(--s-7) !important; }
    .pb-sm-5 { padding-bottom: var(--s-7) !important; }
    .pl-sm-5 { padding-inline-start: var(--s-7) !important; }
    .pr-sm-5 { padding-inline-end: var(--s-7) !important; }
    .px-sm-5 { padding-inline: var(--s-7) !important; }
    .py-sm-5 { padding-block: var(--s-7) !important; }
  }

  @media (min-width: 48em) {
    .d-md-none { display: none !important; }
    .d-md-block { display: block !important; }
    .d-md-inline { display: inline !important; }
    .d-md-inline-block { display: inline-block !important; }
    .d-md-flex { display: flex !important; }
    .d-md-inline-flex { display: inline-flex !important; }
    .d-md-table { display: table !important; }
    .d-md-table-row { display: table-row !important; }
    .d-md-table-cell { display: table-cell !important; }
    .text-md-left { text-align: start !important; }
    .text-md-right { text-align: end !important; }
    .text-md-center { text-align: center !important; }
    .flex-md-row { flex-direction: row !important; }
    .flex-md-column { flex-direction: column !important; }
    .flex-md-wrap { flex-wrap: wrap !important; }
    .flex-md-nowrap { flex-wrap: nowrap !important; }
    .justify-content-md-start { justify-content: flex-start !important; }
    .justify-content-md-end { justify-content: flex-end !important; }
    .justify-content-md-center { justify-content: center !important; }
    .justify-content-md-between { justify-content: space-between !important; }
    .justify-content-md-around { justify-content: space-around !important; }
    .align-items-md-start { align-items: flex-start !important; }
    .align-items-md-end { align-items: flex-end !important; }
    .align-items-md-center { align-items: center !important; }
    .align-items-md-baseline { align-items: baseline !important; }
    .align-items-md-stretch { align-items: stretch !important; }
    .ml-md-auto { margin-inline-start: auto !important; }
    .mr-md-auto { margin-inline-end: auto !important; }
    .mx-md-auto { margin-inline: auto !important; }
    .m-md-0 { margin: 0 !important; }
    .mt-md-0 { margin-top: 0 !important; }
    .mb-md-0 { margin-bottom: 0 !important; }
    .ml-md-0 { margin-inline-start: 0 !important; }
    .mr-md-0 { margin-inline-end: 0 !important; }
    .mx-md-0 { margin-inline: 0 !important; }
    .my-md-0 { margin-block: 0 !important; }
    .p-md-0 { padding: 0 !important; }
    .pt-md-0 { padding-top: 0 !important; }
    .pb-md-0 { padding-bottom: 0 !important; }
    .pl-md-0 { padding-inline-start: 0 !important; }
    .pr-md-0 { padding-inline-end: 0 !important; }
    .px-md-0 { padding-inline: 0 !important; }
    .py-md-0 { padding-block: 0 !important; }
    .m-md-1 { margin: var(--s-1) !important; }
    .mt-md-1 { margin-top: var(--s-1) !important; }
    .mb-md-1 { margin-bottom: var(--s-1) !important; }
    .ml-md-1 { margin-inline-start: var(--s-1) !important; }
    .mr-md-1 { margin-inline-end: var(--s-1) !important; }
    .mx-md-1 { margin-inline: var(--s-1) !important; }
    .my-md-1 { margin-block: var(--s-1) !important; }
    .p-md-1 { padding: var(--s-1) !important; }
    .pt-md-1 { padding-top: var(--s-1) !important; }
    .pb-md-1 { padding-bottom: var(--s-1) !important; }
    .pl-md-1 { padding-inline-start: var(--s-1) !important; }
    .pr-md-1 { padding-inline-end: var(--s-1) !important; }
    .px-md-1 { padding-inline: var(--s-1) !important; }
    .py-md-1 { padding-block: var(--s-1) !important; }
    .m-md-2 { margin: var(--s-2) !important; }
    .mt-md-2 { margin-top: var(--s-2) !important; }
    .mb-md-2 { margin-bottom: var(--s-2) !important; }
    .ml-md-2 { margin-inline-start: var(--s-2) !important; }
    .mr-md-2 { margin-inline-end: var(--s-2) !important; }
    .mx-md-2 { margin-inline: var(--s-2) !important; }
    .my-md-2 { margin-block: var(--s-2) !important; }
    .p-md-2 { padding: var(--s-2) !important; }
    .pt-md-2 { padding-top: var(--s-2) !important; }
    .pb-md-2 { padding-bottom: var(--s-2) !important; }
    .pl-md-2 { padding-inline-start: var(--s-2) !important; }
    .pr-md-2 { padding-inline-end: var(--s-2) !important; }
    .px-md-2 { padding-inline: var(--s-2) !important; }
    .py-md-2 { padding-block: var(--s-2) !important; }
    .m-md-3 { margin: var(--s-4) !important; }
    .mt-md-3 { margin-top: var(--s-4) !important; }
    .mb-md-3 { margin-bottom: var(--s-4) !important; }
    .ml-md-3 { margin-inline-start: var(--s-4) !important; }
    .mr-md-3 { margin-inline-end: var(--s-4) !important; }
    .mx-md-3 { margin-inline: var(--s-4) !important; }
    .my-md-3 { margin-block: var(--s-4) !important; }
    .p-md-3 { padding: var(--s-4) !important; }
    .pt-md-3 { padding-top: var(--s-4) !important; }
    .pb-md-3 { padding-bottom: var(--s-4) !important; }
    .pl-md-3 { padding-inline-start: var(--s-4) !important; }
    .pr-md-3 { padding-inline-end: var(--s-4) !important; }
    .px-md-3 { padding-inline: var(--s-4) !important; }
    .py-md-3 { padding-block: var(--s-4) !important; }
    .m-md-4 { margin: var(--s-5) !important; }
    .mt-md-4 { margin-top: var(--s-5) !important; }
    .mb-md-4 { margin-bottom: var(--s-5) !important; }
    .ml-md-4 { margin-inline-start: var(--s-5) !important; }
    .mr-md-4 { margin-inline-end: var(--s-5) !important; }
    .mx-md-4 { margin-inline: var(--s-5) !important; }
    .my-md-4 { margin-block: var(--s-5) !important; }
    .p-md-4 { padding: var(--s-5) !important; }
    .pt-md-4 { padding-top: var(--s-5) !important; }
    .pb-md-4 { padding-bottom: var(--s-5) !important; }
    .pl-md-4 { padding-inline-start: var(--s-5) !important; }
    .pr-md-4 { padding-inline-end: var(--s-5) !important; }
    .px-md-4 { padding-inline: var(--s-5) !important; }
    .py-md-4 { padding-block: var(--s-5) !important; }
    .m-md-5 { margin: var(--s-7) !important; }
    .mt-md-5 { margin-top: var(--s-7) !important; }
    .mb-md-5 { margin-bottom: var(--s-7) !important; }
    .ml-md-5 { margin-inline-start: var(--s-7) !important; }
    .mr-md-5 { margin-inline-end: var(--s-7) !important; }
    .mx-md-5 { margin-inline: var(--s-7) !important; }
    .my-md-5 { margin-block: var(--s-7) !important; }
    .p-md-5 { padding: var(--s-7) !important; }
    .pt-md-5 { padding-top: var(--s-7) !important; }
    .pb-md-5 { padding-bottom: var(--s-7) !important; }
    .pl-md-5 { padding-inline-start: var(--s-7) !important; }
    .pr-md-5 { padding-inline-end: var(--s-7) !important; }
    .px-md-5 { padding-inline: var(--s-7) !important; }
    .py-md-5 { padding-block: var(--s-7) !important; }
  }

  @media (min-width: 62em) {
    .d-lg-none { display: none !important; }
    .d-lg-block { display: block !important; }
    .d-lg-inline { display: inline !important; }
    .d-lg-inline-block { display: inline-block !important; }
    .d-lg-flex { display: flex !important; }
    .d-lg-inline-flex { display: inline-flex !important; }
    .d-lg-table { display: table !important; }
    .d-lg-table-row { display: table-row !important; }
    .d-lg-table-cell { display: table-cell !important; }
    .text-lg-left { text-align: start !important; }
    .text-lg-right { text-align: end !important; }
    .text-lg-center { text-align: center !important; }
    .flex-lg-row { flex-direction: row !important; }
    .flex-lg-column { flex-direction: column !important; }
    .flex-lg-wrap { flex-wrap: wrap !important; }
    .flex-lg-nowrap { flex-wrap: nowrap !important; }
    .justify-content-lg-start { justify-content: flex-start !important; }
    .justify-content-lg-end { justify-content: flex-end !important; }
    .justify-content-lg-center { justify-content: center !important; }
    .justify-content-lg-between { justify-content: space-between !important; }
    .justify-content-lg-around { justify-content: space-around !important; }
    .align-items-lg-start { align-items: flex-start !important; }
    .align-items-lg-end { align-items: flex-end !important; }
    .align-items-lg-center { align-items: center !important; }
    .align-items-lg-baseline { align-items: baseline !important; }
    .align-items-lg-stretch { align-items: stretch !important; }
    .ml-lg-auto { margin-inline-start: auto !important; }
    .mr-lg-auto { margin-inline-end: auto !important; }
    .mx-lg-auto { margin-inline: auto !important; }
    .m-lg-0 { margin: 0 !important; }
    .mt-lg-0 { margin-top: 0 !important; }
    .mb-lg-0 { margin-bottom: 0 !important; }
    .ml-lg-0 { margin-inline-start: 0 !important; }
    .mr-lg-0 { margin-inline-end: 0 !important; }
    .mx-lg-0 { margin-inline: 0 !important; }
    .my-lg-0 { margin-block: 0 !important; }
    .p-lg-0 { padding: 0 !important; }
    .pt-lg-0 { padding-top: 0 !important; }
    .pb-lg-0 { padding-bottom: 0 !important; }
    .pl-lg-0 { padding-inline-start: 0 !important; }
    .pr-lg-0 { padding-inline-end: 0 !important; }
    .px-lg-0 { padding-inline: 0 !important; }
    .py-lg-0 { padding-block: 0 !important; }
    .m-lg-1 { margin: var(--s-1) !important; }
    .mt-lg-1 { margin-top: var(--s-1) !important; }
    .mb-lg-1 { margin-bottom: var(--s-1) !important; }
    .ml-lg-1 { margin-inline-start: var(--s-1) !important; }
    .mr-lg-1 { margin-inline-end: var(--s-1) !important; }
    .mx-lg-1 { margin-inline: var(--s-1) !important; }
    .my-lg-1 { margin-block: var(--s-1) !important; }
    .p-lg-1 { padding: var(--s-1) !important; }
    .pt-lg-1 { padding-top: var(--s-1) !important; }
    .pb-lg-1 { padding-bottom: var(--s-1) !important; }
    .pl-lg-1 { padding-inline-start: var(--s-1) !important; }
    .pr-lg-1 { padding-inline-end: var(--s-1) !important; }
    .px-lg-1 { padding-inline: var(--s-1) !important; }
    .py-lg-1 { padding-block: var(--s-1) !important; }
    .m-lg-2 { margin: var(--s-2) !important; }
    .mt-lg-2 { margin-top: var(--s-2) !important; }
    .mb-lg-2 { margin-bottom: var(--s-2) !important; }
    .ml-lg-2 { margin-inline-start: var(--s-2) !important; }
    .mr-lg-2 { margin-inline-end: var(--s-2) !important; }
    .mx-lg-2 { margin-inline: var(--s-2) !important; }
    .my-lg-2 { margin-block: var(--s-2) !important; }
    .p-lg-2 { padding: var(--s-2) !important; }
    .pt-lg-2 { padding-top: var(--s-2) !important; }
    .pb-lg-2 { padding-bottom: var(--s-2) !important; }
    .pl-lg-2 { padding-inline-start: var(--s-2) !important; }
    .pr-lg-2 { padding-inline-end: var(--s-2) !important; }
    .px-lg-2 { padding-inline: var(--s-2) !important; }
    .py-lg-2 { padding-block: var(--s-2) !important; }
    .m-lg-3 { margin: var(--s-4) !important; }
    .mt-lg-3 { margin-top: var(--s-4) !important; }
    .mb-lg-3 { margin-bottom: var(--s-4) !important; }
    .ml-lg-3 { margin-inline-start: var(--s-4) !important; }
    .mr-lg-3 { margin-inline-end: var(--s-4) !important; }
    .mx-lg-3 { margin-inline: var(--s-4) !important; }
    .my-lg-3 { margin-block: var(--s-4) !important; }
    .p-lg-3 { padding: var(--s-4) !important; }
    .pt-lg-3 { padding-top: var(--s-4) !important; }
    .pb-lg-3 { padding-bottom: var(--s-4) !important; }
    .pl-lg-3 { padding-inline-start: var(--s-4) !important; }
    .pr-lg-3 { padding-inline-end: var(--s-4) !important; }
    .px-lg-3 { padding-inline: var(--s-4) !important; }
    .py-lg-3 { padding-block: var(--s-4) !important; }
    .m-lg-4 { margin: var(--s-5) !important; }
    .mt-lg-4 { margin-top: var(--s-5) !important; }
    .mb-lg-4 { margin-bottom: var(--s-5) !important; }
    .ml-lg-4 { margin-inline-start: var(--s-5) !important; }
    .mr-lg-4 { margin-inline-end: var(--s-5) !important; }
    .mx-lg-4 { margin-inline: var(--s-5) !important; }
    .my-lg-4 { margin-block: var(--s-5) !important; }
    .p-lg-4 { padding: var(--s-5) !important; }
    .pt-lg-4 { padding-top: var(--s-5) !important; }
    .pb-lg-4 { padding-bottom: var(--s-5) !important; }
    .pl-lg-4 { padding-inline-start: var(--s-5) !important; }
    .pr-lg-4 { padding-inline-end: var(--s-5) !important; }
    .px-lg-4 { padding-inline: var(--s-5) !important; }
    .py-lg-4 { padding-block: var(--s-5) !important; }
    .m-lg-5 { margin: var(--s-7) !important; }
    .mt-lg-5 { margin-top: var(--s-7) !important; }
    .mb-lg-5 { margin-bottom: var(--s-7) !important; }
    .ml-lg-5 { margin-inline-start: var(--s-7) !important; }
    .mr-lg-5 { margin-inline-end: var(--s-7) !important; }
    .mx-lg-5 { margin-inline: var(--s-7) !important; }
    .my-lg-5 { margin-block: var(--s-7) !important; }
    .p-lg-5 { padding: var(--s-7) !important; }
    .pt-lg-5 { padding-top: var(--s-7) !important; }
    .pb-lg-5 { padding-bottom: var(--s-7) !important; }
    .pl-lg-5 { padding-inline-start: var(--s-7) !important; }
    .pr-lg-5 { padding-inline-end: var(--s-7) !important; }
    .px-lg-5 { padding-inline: var(--s-7) !important; }
    .py-lg-5 { padding-block: var(--s-7) !important; }
  }

  @media (min-width: 75em) {
    .d-xl-none { display: none !important; }
    .d-xl-block { display: block !important; }
    .d-xl-inline { display: inline !important; }
    .d-xl-inline-block { display: inline-block !important; }
    .d-xl-flex { display: flex !important; }
    .d-xl-inline-flex { display: inline-flex !important; }
    .d-xl-table { display: table !important; }
    .d-xl-table-row { display: table-row !important; }
    .d-xl-table-cell { display: table-cell !important; }
    .text-xl-left { text-align: start !important; }
    .text-xl-right { text-align: end !important; }
    .text-xl-center { text-align: center !important; }
    .flex-xl-row { flex-direction: row !important; }
    .flex-xl-column { flex-direction: column !important; }
    .flex-xl-wrap { flex-wrap: wrap !important; }
    .flex-xl-nowrap { flex-wrap: nowrap !important; }
    .justify-content-xl-start { justify-content: flex-start !important; }
    .justify-content-xl-end { justify-content: flex-end !important; }
    .justify-content-xl-center { justify-content: center !important; }
    .justify-content-xl-between { justify-content: space-between !important; }
    .justify-content-xl-around { justify-content: space-around !important; }
    .align-items-xl-start { align-items: flex-start !important; }
    .align-items-xl-end { align-items: flex-end !important; }
    .align-items-xl-center { align-items: center !important; }
    .align-items-xl-baseline { align-items: baseline !important; }
    .align-items-xl-stretch { align-items: stretch !important; }
    .ml-xl-auto { margin-inline-start: auto !important; }
    .mr-xl-auto { margin-inline-end: auto !important; }
    .mx-xl-auto { margin-inline: auto !important; }
    .m-xl-0 { margin: 0 !important; }
    .mt-xl-0 { margin-top: 0 !important; }
    .mb-xl-0 { margin-bottom: 0 !important; }
    .ml-xl-0 { margin-inline-start: 0 !important; }
    .mr-xl-0 { margin-inline-end: 0 !important; }
    .mx-xl-0 { margin-inline: 0 !important; }
    .my-xl-0 { margin-block: 0 !important; }
    .p-xl-0 { padding: 0 !important; }
    .pt-xl-0 { padding-top: 0 !important; }
    .pb-xl-0 { padding-bottom: 0 !important; }
    .pl-xl-0 { padding-inline-start: 0 !important; }
    .pr-xl-0 { padding-inline-end: 0 !important; }
    .px-xl-0 { padding-inline: 0 !important; }
    .py-xl-0 { padding-block: 0 !important; }
    .m-xl-1 { margin: var(--s-1) !important; }
    .mt-xl-1 { margin-top: var(--s-1) !important; }
    .mb-xl-1 { margin-bottom: var(--s-1) !important; }
    .ml-xl-1 { margin-inline-start: var(--s-1) !important; }
    .mr-xl-1 { margin-inline-end: var(--s-1) !important; }
    .mx-xl-1 { margin-inline: var(--s-1) !important; }
    .my-xl-1 { margin-block: var(--s-1) !important; }
    .p-xl-1 { padding: var(--s-1) !important; }
    .pt-xl-1 { padding-top: var(--s-1) !important; }
    .pb-xl-1 { padding-bottom: var(--s-1) !important; }
    .pl-xl-1 { padding-inline-start: var(--s-1) !important; }
    .pr-xl-1 { padding-inline-end: var(--s-1) !important; }
    .px-xl-1 { padding-inline: var(--s-1) !important; }
    .py-xl-1 { padding-block: var(--s-1) !important; }
    .m-xl-2 { margin: var(--s-2) !important; }
    .mt-xl-2 { margin-top: var(--s-2) !important; }
    .mb-xl-2 { margin-bottom: var(--s-2) !important; }
    .ml-xl-2 { margin-inline-start: var(--s-2) !important; }
    .mr-xl-2 { margin-inline-end: var(--s-2) !important; }
    .mx-xl-2 { margin-inline: var(--s-2) !important; }
    .my-xl-2 { margin-block: var(--s-2) !important; }
    .p-xl-2 { padding: var(--s-2) !important; }
    .pt-xl-2 { padding-top: var(--s-2) !important; }
    .pb-xl-2 { padding-bottom: var(--s-2) !important; }
    .pl-xl-2 { padding-inline-start: var(--s-2) !important; }
    .pr-xl-2 { padding-inline-end: var(--s-2) !important; }
    .px-xl-2 { padding-inline: var(--s-2) !important; }
    .py-xl-2 { padding-block: var(--s-2) !important; }
    .m-xl-3 { margin: var(--s-4) !important; }
    .mt-xl-3 { margin-top: var(--s-4) !important; }
    .mb-xl-3 { margin-bottom: var(--s-4) !important; }
    .ml-xl-3 { margin-inline-start: var(--s-4) !important; }
    .mr-xl-3 { margin-inline-end: var(--s-4) !important; }
    .mx-xl-3 { margin-inline: var(--s-4) !important; }
    .my-xl-3 { margin-block: var(--s-4) !important; }
    .p-xl-3 { padding: var(--s-4) !important; }
    .pt-xl-3 { padding-top: var(--s-4) !important; }
    .pb-xl-3 { padding-bottom: var(--s-4) !important; }
    .pl-xl-3 { padding-inline-start: var(--s-4) !important; }
    .pr-xl-3 { padding-inline-end: var(--s-4) !important; }
    .px-xl-3 { padding-inline: var(--s-4) !important; }
    .py-xl-3 { padding-block: var(--s-4) !important; }
    .m-xl-4 { margin: var(--s-5) !important; }
    .mt-xl-4 { margin-top: var(--s-5) !important; }
    .mb-xl-4 { margin-bottom: var(--s-5) !important; }
    .ml-xl-4 { margin-inline-start: var(--s-5) !important; }
    .mr-xl-4 { margin-inline-end: var(--s-5) !important; }
    .mx-xl-4 { margin-inline: var(--s-5) !important; }
    .my-xl-4 { margin-block: var(--s-5) !important; }
    .p-xl-4 { padding: var(--s-5) !important; }
    .pt-xl-4 { padding-top: var(--s-5) !important; }
    .pb-xl-4 { padding-bottom: var(--s-5) !important; }
    .pl-xl-4 { padding-inline-start: var(--s-5) !important; }
    .pr-xl-4 { padding-inline-end: var(--s-5) !important; }
    .px-xl-4 { padding-inline: var(--s-5) !important; }
    .py-xl-4 { padding-block: var(--s-5) !important; }
    .m-xl-5 { margin: var(--s-7) !important; }
    .mt-xl-5 { margin-top: var(--s-7) !important; }
    .mb-xl-5 { margin-bottom: var(--s-7) !important; }
    .ml-xl-5 { margin-inline-start: var(--s-7) !important; }
    .mr-xl-5 { margin-inline-end: var(--s-7) !important; }
    .mx-xl-5 { margin-inline: var(--s-7) !important; }
    .my-xl-5 { margin-block: var(--s-7) !important; }
    .p-xl-5 { padding: var(--s-7) !important; }
    .pt-xl-5 { padding-top: var(--s-7) !important; }
    .pb-xl-5 { padding-bottom: var(--s-7) !important; }
    .pl-xl-5 { padding-inline-start: var(--s-7) !important; }
    .pr-xl-5 { padding-inline-end: var(--s-7) !important; }
    .px-xl-5 { padding-inline: var(--s-7) !important; }
    .py-xl-5 { padding-block: var(--s-7) !important; }
  }

  .w-100 { width: 100% !important; }
  .w-50  { width: 50% !important; }
  .w-auto { width: auto !important; }
  .h-100 { height: 100% !important; }
  .mw-100 { max-width: 100% !important; }

  .order-first { order: -1 !important; }
  .order-last { order: 13 !important; }
  .order-0 { order: 0 !important; }
  .order-1 { order: 1 !important; }
  .order-2 { order: 2 !important; }
  .order-3 { order: 3 !important; }

  @media (min-width: 48em) {
    .order-md-1 { order: 1 !important; }
    .order-md-2 { order: 2 !important; }
    .order-md-3 { order: 3 !important; }
  }

  .flex-grow-1 { flex-grow: 1 !important; }
  .flex-fill { flex: 1 1 auto !important; }

  .float-right { float: inline-end !important; }
  .float-left  { float: inline-start !important; }
  .clearfix::after { content: ""; display: block; clear: both; }

  .list-unstyled { list-style: none; padding-inline-start: 0; }
  .list-inline { list-style: none; padding-inline-start: 0; display: flex; flex-wrap: wrap; gap: var(--s-2); }

  .fixed-bottom { position: fixed; inset-inline: 0; bottom: 0; z-index: 30; }
  .sticky-top { position: sticky; top: 0; z-index: 20; }

  .bg-light { background: var(--surface-sunk) !important; }
  .bg-white { background: var(--surface) !important; }
  .bg-primary { background: var(--ink) !important; color: var(--paper); }

  .rounded { border-radius: var(--radius) !important; }
  .border { border: 1px solid var(--rule) !important; }
  .border-bottom { border-bottom: 1px solid var(--rule) !important; }
  .border-top { border-top: 1px solid var(--rule) !important; }
  .border-0 { border: 0 !important; }

  .text-nowrap { white-space: nowrap !important; }
  .text-success { color: var(--money) !important; }
  .text-danger { color: var(--owing) !important; }
  .font-weight-bold { font-weight: 700 !important; }
  .font-italic { font-style: italic; }

  .sr-only {
    position: absolute;
    width: 1px; height: 1px;
    padding: 0; margin: -1px;
    overflow: hidden;
    clip-path: inset(50%);
    white-space: nowrap;
  }
}
