* {
  box-sizing: border-box;
  color: inherit;
  font-family: inherit;
  font-size: inherit;
  font-style: normal;
  font-weight: inherit;
  line-height: inherit;
  margin: 0;
  padding: 0;
}

body {
  background-color: #fff;
  color: #333;
  font-family: sans-serif;
  font-size: 1rem;
  line-height: calc(1 + 0.707);
  word-break: auto-phrase;
}

body                       { --theme-color: #777; }
body[data-theme="red"]     { --theme-color: #700; }
body[data-theme="green"]   { --theme-color: #070; }
body[data-theme="blue"]    { --theme-color: #007; }
body[data-theme="cyan"]    { --theme-color: #077; }
body[data-theme="magenta"] { --theme-color: #707; }
body[data-theme="yellow"]  { --theme-color: #770; }

/* frame */

header,
main,
footer {
  padding: 4rem max(calc(16vw - 1rem), 2rem);
}

header,
footer {
  font-size: 0.707rem;
}

/* header */

header a {
  align-items: center;
  color: inherit;
  display: flex;
  gap: 0.707rem;
  text-decoration: none;
  width: fit-content;
}

header img {
  display: inline-block;
  height: 2rem;
  width: 2rem;
}

/* main / text */

main p {
  margin-top: 1rem;
}

main a {
  color: var(--theme-color);
  transition: color 1s 1s;
}

main small {
  font-size: 0.707rem;
}

/* main / heading */

main hgroup {
  margin-bottom: 4rem;
}

main hgroup h1 {
  font-size: 2rem;
  font-weight: bold;
}

main hgroup p {
  font-size: 0.707rem;
  margin-top: 0;
}

main h2 {
  font-size: 1.414rem;
  font-weight: bold;
  margin-top: 4rem;
}

main h3 {
  font-weight: bold;
  margin-top: 1rem;
}

/* main / list */

main ::marker {
  color: #777;
  font-size: 0.707rem;
}

main ul {
  margin-top: 1rem;
  padding-left: 1rem;
}

main dl {
  margin-top: 1rem;
  padding-left: 1rem;
}

main dt {
  display: list-item;
  font-size: 0.707rem;
  margin-top: 0.5rem;
}

/* main / computed */

main pre,
main code,
main kbd {
  background-color: color-mix(in srgb, var(--theme-color) 12.5%, #fff);
  border-radius: 0.25rem;
  font-family: monospace;
  padding: 0.125em 0.25em;
  transition: background-color 1s 1s;
}

main pre {
  overflow-x: auto;
  padding: 0.25rem 0.5rem;
}

main pre code {
  padding: 0;
}

/* main / form */

main noscript p {
  background-color: #700;
  border-radius: 0.25rem;
  color: #fff;
  padding: 1rem;
}

main label {
  align-items: baseline;
  display: flex;
  gap: 0.5rem;
  width: fit-content;
}

main input {
  accent-color: var(--theme-color);
  font-family: monospace;
  padding: 0.25rem 0.5rem;
  transition: accent-color 1s 1s;
}

main input[type="number" i] {
  margin-top: 0.25rem;
}

main input[type="text" i] {
  width: 100%;
}

main textarea {
  font-family: monospace;
  padding: 0.25rem 0.5rem;
  resize: vertical;
  width: 100%;
}

main button {
  padding: 0.5rem;
  width: 100%;
}
