:root {
  --ember: #E85D3A;
  --coal: #161210;
  --ash: #F5ECDC;
  --path: #C4B8A8;
  --glow: #F4A07A;
  --iron: #2a221c;
  --ink: #0c0a09;
  --line: #3a2f28;
  --gutter: clamp(1em, 4vw, 2em);
  --col: min(72ch, 100%);
}
* { box-sizing: border-box; }
html {
  font-size: medium;
  margin: 0;
}
body {
  margin: 0;
  font-family: serif;
  font-size: 1em;
  line-height: 1.55;
  background: var(--coal);
  color: var(--ash);
  min-height: 100vh;
  padding-inline: max(var(--gutter), env(safe-area-inset-left))
                  max(var(--gutter), env(safe-area-inset-right));
}
img { max-width: 100%; height: auto; }
a { color: var(--glow); }
.top, main, .foot {
  width: var(--col);
  margin-inline: auto;
}
.top {
  display: flex; justify-content: space-between; align-items: center; gap: 1.25em;
  padding: 1.15em 0;
  border-bottom: 1px solid var(--line);
}
.brand {
  display: flex; align-items: center; gap: .65em;
  text-decoration: none; color: var(--ash);
  font-family: sans-serif;
  font-weight: 600;
}
.brand img { width: 2.5em; height: 2.5em; border-radius: 50%; }
nav {
  display: flex; gap: 1.1em; align-items: center; flex-wrap: wrap;
  font-family: sans-serif;
}
nav a { color: var(--path); text-decoration: none; }
nav a:hover { color: var(--ash); }
.cwl-chip {
  font-family: monospace;
  font-size: .82em;
  letter-spacing: .08em;
  color: var(--ember);
  box-shadow: inset 0 0 0 1px var(--ember);
  padding: .12em .5em;
}
.cwl-chip:hover { color: var(--glow); }
form.inline { display: inline; }
form.inline button {
  background: none; border: 0; color: var(--path); cursor: pointer; font: inherit;
}
main { padding: 2.4em 0 4.5em; }
.intro {
  display: grid; grid-template-columns: 7em 1fr; gap: 1.6em;
  align-items: start; margin-bottom: 2.6em;
}
.seal { width: 7em; height: 7em; border-radius: 50%; }
h1 { font-weight: 600; font-size: 1.85em; line-height: 1.22; margin: 0 0 .75em; }
h2 { font-size: 1.2em; margin: 1.85em 0 .55em; }
h3 { font-size: 1.05em; margin: 1.1em 0 .35em; }
.prose { max-width: none; }
.prose.tight { margin-bottom: 1.4em; }
.prose p, .prose li { color: var(--path); }
.prose h1 + p { font-size: 1.08em; color: var(--ash); }
.prose ul { padding-left: 1.15em; }
.prose li { margin: .35em 0; }
.toc {
  display: flex; flex-wrap: wrap; gap: .35em .9em;
  margin: 0 0 1.6em; padding: 0; list-style: none;
  font-size: .92em;
  font-family: sans-serif;
}
.toc a { color: var(--path); }
.row { display: flex; gap: .7em; flex-wrap: wrap; margin: 1em 0 0; }
.btn {
  display: inline-block; text-decoration: none; border: 0; cursor: pointer;
  padding: .55em 1em; font: inherit; font-family: sans-serif; border-radius: 2px;
}
.btn-ember { background: var(--ember); color: var(--ink); font-weight: 650; }
.btn-ember:hover { background: var(--glow); }
.btn-ghost { background: transparent; color: var(--ash); box-shadow: inset 0 0 0 1px #5a4b40; }
.paths { margin: 2em 0 2.4em; }
.path-row {
  display: grid; grid-template-columns: 2.4em 1fr; gap: 1em;
  padding: 1.1em 0;
  border-top: 1px solid var(--line);
}
.path-row:last-of-type { border-bottom: 1px solid var(--line); }
.path-row .n {
  font-size: 1.4em; color: var(--ember); line-height: 1.2;
}
.path-row p { margin: .25em 0; color: var(--path); }
.price { color: var(--ash); }
.owned { color: #9ad0a0; }
.card {
  background: var(--iron);
  border: 1px solid var(--line);
  padding: 1.15em 1.15em 1.25em;
}
.fleet { margin-top: 1em; }
.hops { list-style: none; padding: 0; display: flex; gap: .8em; flex-wrap: wrap; }
.hops li {
  flex: 1; min-width: 9em; background: var(--iron); padding: .85em 1em;
  border-left: .2em solid var(--ember);
}
.hops strong, .hops span, .hops em { display: block; }
.hops em {
  color: var(--path); font-style: normal; font-size: .8em; margin-top: .25em;
}
.fine { color: var(--path); font-size: .9em; }
.narrow { width: min(26em, 100%); margin-inline: auto; }
.stack { display: grid; gap: .8em; }
.below { margin-top: 1.1em; }
label { display: grid; gap: .3em; color: var(--path); }
input, select {
  background: var(--ink); color: var(--ash); border: 1px solid #4a3d34;
  padding: .6em .7em; font: inherit; font-family: sans-serif;
}
.banner { padding: .65em 1em; border-left: .2em solid var(--ember); background: #241811; }
.banner.ok { border-color: #6ea776; }
.banner.bad { border-color: #c45b5b; }
.split { display: grid; grid-template-columns: 1fr 1fr; gap: 1.1em; }
.qr-wrap { width: min(15em, 100%); padding: .5em; background: #f5ecdc; margin: 1em auto; }
.qr-wrap img { display: block; width: 100%; height: auto; }
table { width: 100%; border-collapse: collapse; font-size: .92em; margin: .8em 0 1.2em; }
th, td { text-align: left; padding: .45em .35em; border-bottom: 1px solid var(--line); vertical-align: top; }
pre, code, .cwl-source { font-family: monospace; }
pre {
  background: var(--ink); padding: .8em; overflow: auto;
  border: 1px solid var(--line); color: var(--path); font-size: .9em;
}
.genome { margin-top: 1.4em; }
.cwl-source {
  background: var(--ink); color: var(--path); border: 1px solid var(--line);
  padding: 1em; overflow: auto; max-height: 32em; font-size: .85em;
  white-space: pre;
}
.foot {
  display: flex; justify-content: space-between; gap: 1em; flex-wrap: wrap;
  padding: 1.2em 0 2.2em;
  border-top: 1px solid var(--line);
  color: var(--path); font-size: .85em;
  font-family: sans-serif;
}
.foot-links { display: flex; gap: 1em; margin: 0; }
@media (max-width: 40em) {
  .intro, .split { grid-template-columns: 1fr; }
  .top { flex-direction: column; align-items: flex-start; }
}

html[data-device="desktop"] {
  --gutter: clamp(1.5em, 4vw, 3.5em);
  --shell: min(72rem, calc(100% - 2 * var(--gutter)));
}
html[data-device="desktop"] body {
  padding-inline: 0;
}
html[data-device="desktop"] .top {
  width: 100%;
  margin-inline: 0;
  padding: 1.2em var(--gutter);
}
html[data-device="desktop"] main {
  width: var(--shell);
  padding: 3em 0 5em;
}
html[data-device="desktop"] .foot {
  width: 100%;
  margin-inline: 0;
  padding: 1.4em var(--gutter) 2.4em;
}
html[data-device="desktop"] .brand {
  font-size: 1.12em;
}
html[data-device="desktop"] nav {
  gap: 1.45em;
}
html[data-device="desktop"] .intro {
  grid-template-columns: 11em minmax(0, 38em);
  gap: 2.8em;
  align-items: center;
  margin-bottom: 3.4em;
}
html[data-device="desktop"] .seal {
  width: 11em;
  height: 11em;
}
html[data-device="desktop"] h1 {
  font-size: 2.45em;
  max-width: 16em;
}
html[data-device="desktop"] .intro p {
  font-size: 1.08em;
  max-width: 36em;
}
html[data-device="desktop"] .paths {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 1.25em 1.4em;
  margin: 2.4em 0 3em;
}
html[data-device="desktop"] .paths > h2,
html[data-device="desktop"] .paths > p {
  grid-column: 1 / -1;
}
html[data-device="desktop"] .path-row {
  display: flex;
  flex-direction: column;
  gap: .2em;
  margin: 0;
  padding: 1.4em 1.3em 1.5em;
  border: 1px solid var(--line);
  background: var(--iron);
}
html[data-device="desktop"] .path-row:last-of-type {
  border-bottom: 1px solid var(--line);
}
html[data-device="desktop"] .path-row .n {
  font-size: 2em;
  margin-bottom: .15em;
}
html[data-device="desktop"] .path-row h3 {
  margin-top: 0;
}
html[data-device="desktop"] article.prose {
  max-width: min(88ch, 100%);
}
html[data-device="desktop"] article.prose > p,
html[data-device="desktop"] article.prose > li,
html[data-device="desktop"] article.prose > h1,
html[data-device="desktop"] article.prose > h2,
html[data-device="desktop"] article.prose > h3,
html[data-device="desktop"] article.prose > ol,
html[data-device="desktop"] article.prose > ul:not(.toc) {
  max-width: 65ch;
}
html[data-device="desktop"] .split {
  gap: 1.6em;
}
html[data-device="desktop"] .hops li {
  min-width: 12em;
}
html[data-device="desktop"] .cwl-source {
  max-height: 42em;
}
html[data-device="desktop"] .top {
  flex-direction: row;
  align-items: center;
}
