/* ═══════════════════════════════════════════════════════════════════════════
   KPRVERSE — what the page still draws with its rules.

   Copied rule for rule from kprverse/src (the files named below), with their
   scoped attributes, so the markup in tools/index.html carries the same
   data-v-* attributes as the site's components did. The frame's own rules
   (its layers, its submenu, its progress hairline, its burger, its audio
   button, its bar on a phone) went with the frame, when the first version's
   menu came back. What is left: the type scale the page's rems are read
   on, the square, and the labels that write themselves in.
   ═══════════════════════════════════════════════════════════════════════════ */

/* ── app/entry.css: the type scale (a rem is a tenth of the design width) ── */
html {
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  -webkit-text-size-adjust: none;
  font-size: 10px
}
@media only screen and (max-width:767px) {
  html {
    font-size: clamp(8.5333333333px, 2.6666666667vw, 27.28px);
    min-height: 0
  }
}
@media only screen and (min-width:768px) {
  html {
    font-size: clamp(6.4px, .625vw, 12px);
    min-height: 0
  }
}

/* ── modules/dot.css ── */
.dot[data-v-5da3ac80] {
  background: currentColor;
  display: inline-block;
  height: .5rem;
  margin-right: 9px;
  max-height: .5rem;
  max-width: .5rem;
  min-height: .5rem;
  min-width: .5rem;
  width: .5rem
}

.dot.stroke[data-v-5da3ac80] {
  background: none;
  border: 1px solid
}

/* ── modules/hacky-text.css ── */
.hacky-text[data-v-a07065fc] {
  position: relative
}

.spacer[data-v-a07065fc] {
  max-width: 100%;
  opacity: 0
}

@media only screen and (max-width:767px) {
  .spacer[data-v-a07065fc] {
    opacity: 1;
    white-space: pre-line
  }
}

.animation[data-v-a07065fc] {
  left: 0;
  max-width: 100%;
  position: absolute;
  top: 0
}

@media only screen and (max-width:767px) {
  .animation[data-v-a07065fc] {
    display: none
  }
}
