:root {
  --road: #e8ecf1;
  --sheet: #ffffff;
  --ink: #111a2e;
  --soft: #55607a;
  --line: #cfd6e1;
  --blue: #003399;
  --yellow: #f7c600;
  --crit: #b80f1a;
  --warn: #c25e00;
  --info: #3a5b8c;
  --ok: #156b43;
  --display: "Avenir Next Condensed", "Roboto Condensed", "Arial Narrow", "Helvetica Neue", Arial, sans-serif;
  --body: system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
}
* { box-sizing: border-box; }
html { -webkit-text-size-adjust: 100%; }
body {
  margin: 0; background: var(--road); color: var(--ink);
  font: 17px/1.55 var(--body);
}
.sr { position: absolute; width: 1px; height: 1px; overflow: hidden; clip-path: inset(50%); }
[hidden] { display: none !important; }
:focus-visible { outline: 3px solid var(--blue); outline-offset: 3px; }

.top {
  display: flex; justify-content: space-between; align-items: baseline; gap: 16px;
  max-width: 920px; margin: 0 auto; padding: 22px 20px 0;
}
.brand { display: block; line-height: 0; border-radius: 6px; }
.logo { height: 38px; width: auto; display: block; }
.top { align-items: center; }
.top-link { font-weight: 600; color: var(--ink); text-underline-offset: 4px; }

main { max-width: 920px; margin: 0 auto; padding: 0 20px 56px; }

/* ---- hero ---- */
.hero { padding: 9vh 0 40px; }
.hero h1 {
  font: 700 clamp(38px, 7.2vw, 76px)/.98 var(--display);
  letter-spacing: -.015em; margin: 0 0 22px; max-width: 17ch; text-wrap: balance;
}
.lead { font-size: 19px; max-width: 58ch; margin: 0 0 34px; color: #2a3550; }
form { display: flex; flex-wrap: wrap; gap: 14px; align-items: stretch; }
.plate {
  flex: 1 1 380px; display: flex; min-height: 76px; background: #fff;
  border: 3px solid var(--ink); border-radius: 9px; overflow: hidden; cursor: text;
  box-shadow: 0 2px 0 var(--ink);
}
.plate:focus-within { outline: 3px solid var(--blue); outline-offset: 3px; }
.plate-band {
  flex: 0 0 auto; background: var(--blue); color: #fff;
  display: flex; align-items: center; padding: 0 14px; font: 700 20px/1 var(--display); letter-spacing: .02em;
}
.plate input {
  flex: 1; min-width: 0; border: 0; outline: 0; background: transparent; color: var(--ink);
  font: 700 clamp(24px, 4.6vw, 38px)/1 var(--display); letter-spacing: .03em;
  padding: 0 18px; text-transform: lowercase;
}
.plate input::placeholder { color: #a9b2c3; }
button#go {
  flex: 0 0 auto; border: 3px solid var(--ink); border-radius: 9px; background: var(--yellow); color: var(--ink);
  font: 700 22px/1 var(--display); padding: 0 28px; min-height: 76px; cursor: pointer;
  box-shadow: 0 2px 0 var(--ink);
}
button#go:hover { background: #ffd61f; }
button#go:active { transform: translateY(2px); box-shadow: none; }
button#go:disabled { opacity: .55; cursor: progress; }
.error { margin: 16px 0 0; padding: 12px 16px; background: #fff; border-left: 6px solid var(--crit); max-width: 62ch; }
.fine { font-size: 14.5px; color: var(--soft); max-width: 66ch; margin: 22px 0 0; }

.top-nav { display: flex; flex-wrap: wrap; gap: 6px 22px; justify-content: flex-end; }

/* ---- guide ---- */
.doc { padding: 6vh 0 8px; max-width: 68ch; }
.doc h1 { font: 700 clamp(32px, 5.6vw, 52px)/1.02 var(--display); letter-spacing: -.01em; margin: 0 0 20px; text-wrap: balance; }
.doc h2 { font: 700 25px/1.15 var(--display); margin: 34px 0 10px; }
.doc p, .doc li { font-size: 17.5px; line-height: 1.6; }
.doc p { margin: 0 0 14px; }
.doc .lead { font-size: 20px; max-width: none; margin-bottom: 8px; }
.doc ul { margin: 0 0 14px; padding-left: 22px; }
.doc li { margin-bottom: 7px; }
.doc a { color: var(--blue); text-underline-offset: 3px; }
.crumb { font-size: 14.5px !important; color: var(--soft); margin: 0 0 14px !important; }
.crumb a { color: inherit; }
.crumb span[aria-current] { color: var(--ink); }
.guide-part { font-size: 30px !important; margin: 46px 0 6px !important; padding-top: 22px; border-top: 3px solid var(--ink); }
.guide-group h3 { font-family: var(--display); font-size: 23px; margin: 26px 0 8px; }
.guide-group { scroll-margin-top: 16px; }
.plan, .plan ul { list-style: none; padding: 0; margin: 0; }
.plan > li { margin: 14px 0 0; }
.plan > li > a { font-weight: 700; }
.plan ul { margin: 6px 0 0 4px; padding-left: 16px; border-left: 2px solid var(--line); }
.plan ul li { margin: 5px 0; font-size: 16px; }
.doc h2 a { color: inherit; }
.try { background: #fff; border: 3px solid var(--ink); border-radius: 9px; box-shadow: 0 2px 0 var(--ink); padding: 22px 24px; margin: 34px 0 30px; max-width: 68ch; box-sizing: border-box; }
.try h2 { font: 700 24px/1.1 var(--display); margin: 0 0 6px; }
.try p { margin: 0 0 14px; }
.try form { gap: 10px; }
.try input { flex: 1 1 220px; min-width: 0; font: inherit; border: 2px solid var(--ink); border-radius: 7px; padding: 10px 12px; }
.more-doc { max-width: 68ch; margin-bottom: 30px; }
.more-doc h2 { font: 700 20px/1.1 var(--display); margin: 0 0 8px; }
.more-doc ul { margin: 0; padding-left: 20px; }
.more-doc li { margin-bottom: 5px; }
.more-doc a, .guide-group a { color: var(--blue); text-underline-offset: 3px; }
.guide { max-width: 760px; }
.guide-group ul { list-style: none; padding: 0; margin: 0 0 8px; }
.guide-group li { padding: 12px 0; border-top: 1px solid var(--line); margin: 0; }
.guide-group a { font-weight: 600; font-size: 18.5px; display: block; }
.guide-group span { display: block; color: var(--soft); font-size: 15.5px; line-height: 1.45; margin-top: 3px; }
.finding .learn { margin: 10px 0 0; font-size: 15px; }
.finding .learn a { color: var(--blue); text-underline-offset: 3px; }

/* ---- contact ---- */
.contact { padding: 7vh 0 20px; max-width: 640px; }
.contact h1 { font: 700 clamp(34px, 6vw, 56px)/1 var(--display); letter-spacing: -.01em; margin: 0 0 18px; }
#contact { display: block; }
.field { margin: 0 0 18px; }
.field label { display: block; font-weight: 600; margin-bottom: 6px; }
.field label span { font-weight: 400; color: var(--soft); font-size: 14.5px; margin-left: 6px; }
.field input, .field select, .field textarea {
  width: 100%; box-sizing: border-box; font: inherit; color: var(--ink); background: #fff;
  border: 2px solid var(--ink); border-radius: 7px; padding: 11px 12px;
}
.field textarea { resize: vertical; min-height: 140px; }
.hp { position: absolute; left: -9999px; width: 1px; height: 1px; overflow: hidden; }
#turnstile { margin: 0 0 16px; min-height: 65px; }
.contact .btn:disabled { opacity: .55; cursor: progress; }
.c-status { margin: 14px 0 0; }
.c-status:empty { display: none; }
.c-status.is-ok { padding: 12px 16px; background: #fff; border-left: 6px solid var(--ok); }
.c-status.is-error { padding: 12px 16px; background: #fff; border-left: 6px solid var(--crit); }

/* ---- waiting ---- */
.wait { background: var(--sheet); border: 1px solid var(--line); border-radius: 6px; padding: 26px 28px; }
.wait h2 { font: 700 26px/1.1 var(--display); margin: 0 0 14px; }
.wait ol { margin: 0; padding: 0; list-style: none; }
.wait li { padding: 7px 0 7px 30px; position: relative; color: #9aa3b5; }
.wait li::before {
  content: ""; position: absolute; left: 4px; top: 15px; width: 10px; height: 10px;
  border-radius: 50%; border: 2px solid currentColor;
}
.wait li.done { color: var(--ink); }
.wait li.done::before { background: var(--ok); border-color: var(--ok); }
.wait li.now { color: var(--ink); font-weight: 600; }
.wait li.now::before { border-color: var(--blue); background: var(--yellow); }

/* ---- report sheet ---- */
.report { background: var(--sheet); border: 1px solid var(--line); border-radius: 6px; }
.pv-head {
  display: grid; grid-template-columns: 1fr auto; gap: 20px 28px; align-items: center;
  padding: 30px 32px 26px; border-bottom: 3px solid var(--ink);
}
.pv-head h2 { font: 700 30px/1.05 var(--display); margin: 0 0 12px; }
.pv-plate {
  display: inline-flex; border: 2px solid var(--ink); border-radius: 6px; overflow: hidden;
  font: 700 22px/1 var(--display); letter-spacing: .03em; max-width: 100%;
}
.pv-plate i { background: var(--blue); width: 16px; }
.pv-plate span { padding: 8px 12px; overflow-wrap: anywhere; }
.pv-meta { margin: 12px 0 0; font-size: 14.5px; color: var(--soft); }
.stamp {
  transform: rotate(-5deg); border: 4px double currentColor; border-radius: 8px;
  padding: 12px 18px; text-align: center; font: 700 25px/1.05 var(--display); max-width: 240px;
}
.stamp small { display: block; font: 600 13.5px/1.3 var(--body); margin-top: 6px; }
.stamp.crit { color: var(--crit); } .stamp.warn { color: var(--warn); } .stamp.ok { color: var(--ok); }

.tally { display: grid; grid-template-columns: repeat(4, 1fr); border-bottom: 1px solid var(--line); }
.tally div { padding: 16px 20px 14px 32px; border-right: 1px solid var(--line); }
.tally div:last-child { border-right: 0; }
.tally b { display: block; font: 700 34px/1 var(--display); }
.tally span { font-size: 14.5px; color: var(--soft); }
.tally .crit b { color: var(--crit); } .tally .warn b { color: var(--warn); }
.tally .info b { color: var(--info); } .tally .ok b { color: var(--ok); }

.block { padding: 26px 32px 8px; border-bottom: 1px solid var(--line); }
.block:last-child { border-bottom: 0; }
.block > h3 { font: 700 23px/1.15 var(--display); margin: 0 0 4px; }
.block > .sub { margin: 0 0 14px; font-size: 14.5px; color: var(--soft); }

.tech { display: grid; grid-template-columns: minmax(150px, 230px) 1fr; gap: 0; margin: 12px 0 18px; }
.tech dt, .tech dd { margin: 0; padding: 10px 0; border-top: 1px solid var(--line); }
.tech dt { font-weight: 600; font-size: 15px; padding-right: 16px; }
.tech dd { display: flex; flex-wrap: wrap; gap: 6px 8px; align-items: flex-start; align-content: flex-start; }
.chip { background: #eef1f6; border-radius: 4px; padding: 2px 9px; font-size: 15px; overflow-wrap: anywhere; }
a.chip { color: var(--blue); text-decoration: underline; text-decoration-color: #9fb2d8; text-underline-offset: 3px; }
a.chip:hover, a.chip:focus-visible { background: #e2e8f5; text-decoration-color: currentColor; }
.chip em { font-style: normal; color: var(--soft); margin-left: 5px; }

.shot figure { margin: 14px 0 20px; }
.shot img { display: block; width: 100%; height: auto; border: 2px solid var(--ink); border-radius: 6px; background: #fff; }
.shot figcaption { margin-top: 8px; font-size: 14.5px; color: var(--soft); }

.finding { border-top: 1px solid var(--line); }
.finding summary {
  display: grid; grid-template-columns: 104px 1fr 18px; gap: 14px; align-items: baseline;
  padding: 13px 0; cursor: pointer; list-style: none;
}
.finding summary::-webkit-details-marker { display: none; }
.finding summary::after { content: "+"; font: 700 20px/1 var(--display); color: var(--soft); text-align: right; }
.finding[open] summary::after { content: "–"; }
.tag {
  font: 700 13.5px/1 var(--display); letter-spacing: .02em; padding: 5px 0 4px; text-align: center;
  border-radius: 3px; color: #fff;
}
.tag.crit { background: var(--crit); } .tag.warn { background: var(--warn); }
.tag.info { background: #fff; color: var(--info); box-shadow: inset 0 0 0 2px var(--info); }
.tag.ok { background: #fff; color: var(--ok); box-shadow: inset 0 0 0 2px var(--ok); }
.finding .title { font-weight: 600; overflow-wrap: anywhere; }
.finding .more { padding: 0 32px 16px 110px; max-width: 78ch; overflow-wrap: anywhere; }
.finding .more p { margin: 0 0 8px; }
.finding .fix { border-left: 4px solid var(--yellow); padding-left: 12px; }
.finding .fix b { font-weight: 600; }

.passed { border-top: 1px solid var(--line); margin-bottom: 14px; }
.passed > summary { padding: 13px 0; cursor: pointer; color: var(--ok); font-weight: 600; }
.passed ul { margin: 0 0 12px; padding: 0 0 0 110px; list-style: none; }
.passed li { padding: 5px 0; font-size: 15.5px; overflow-wrap: anywhere; }
.passed li b { font-weight: 600; }
.passed li span { color: var(--soft); }

.after { padding: 26px 32px 30px; }
.after h3 { font: 700 23px/1.15 var(--display); margin: 0 0 8px; }
.after p { margin: 0 0 16px; max-width: 62ch; }
.after .row { display: flex; flex-wrap: wrap; gap: 12px; }
.btn {
  display: inline-block; border: 2px solid var(--ink); border-radius: 7px; background: #fff; color: var(--ink);
  font: 700 18px/1 var(--display); padding: 13px 20px; text-decoration: none; cursor: pointer;
}
.btn.primary { background: var(--yellow); }

/* site footer: who we are, the site, and the doors for machines */
.site-foot { background: var(--sheet); border-top: 1px solid var(--line); margin-top: 24px; }
.site-foot-in { max-width: 920px; margin: 0 auto; padding: 36px 20px 44px; display: grid; grid-template-columns: 1.5fr 1fr 1.3fr; gap: 28px 40px; }
.site-foot .foot-logo { height: 30px; margin-bottom: 14px; }
.site-foot p { margin: 0 0 8px; font-size: 15.5px; color: var(--ink); max-width: 36ch; }
.site-foot .foot-note { font-size: 13.5px; color: var(--soft); }
.site-foot h2 { font-family: var(--body); font-size: 15px; font-weight: 700; letter-spacing: 0; margin: 4px 0 12px; color: var(--ink); }
.site-foot ul { list-style: none; margin: 0; padding: 0; }
.site-foot li { margin: 0 0 9px; font-size: 15px; }
.site-foot a { color: var(--blue); text-decoration: none; }
.site-foot a:hover, .site-foot a:focus-visible { text-decoration: underline; }
.site-foot p a { text-decoration: underline; text-underline-offset: 3px; }   /* a link inside a sentence must not rely on colour alone */
.site-foot-legal { max-width: 920px; margin: 0 auto; padding: 16px 20px 26px; border-top: 1px solid var(--line); display: flex; flex-wrap: wrap; gap: 6px 22px; font-size: 14px; color: var(--soft); }
.site-foot-legal a { color: var(--soft); }
.doc pre { background: #f3f5f9; border: 1px solid var(--line); border-radius: 8px; padding: 14px 16px; overflow-x: auto; font-size: 14.5px; line-height: 1.5; }
.doc code { font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace; font-size: 0.92em; background: #f3f5f9; padding: 1px 5px; border-radius: 4px; overflow-wrap: anywhere; }
.doc pre code { background: none; padding: 0; }

@media (max-width: 640px) {
  body { font-size: 16px; }
  .hero { padding-top: 6vh; }
  button#go { flex: 1 1 100%; min-height: 62px; }
  .plate { min-height: 66px; }
  .pv-head { grid-template-columns: 1fr; padding: 22px 18px; }
  .stamp { justify-self: start; }
  .tally { grid-template-columns: repeat(2, 1fr); }
  .tally div { padding-left: 18px; border-bottom: 1px solid var(--line); }
  .block, .after { padding-left: 18px; padding-right: 18px; }
  .tech { grid-template-columns: 1fr; }
  .tech dd { border-top: 0; padding-top: 0; }
  .finding summary { grid-template-columns: 78px 1fr 14px; gap: 10px; }
  .finding .more { padding: 0 0 14px 0; }
  .passed ul { padding-left: 0; }
}
@media (prefers-reduced-motion: no-preference) {
  .stamp { animation: stamp .28s cubic-bezier(.2, 1.4, .4, 1) both; }
  @keyframes stamp { from { transform: rotate(-5deg) scale(1.5); opacity: 0; } }
}
@media print {
  body { background: #fff; }
  .hero, .top, .after, .wait { display: none; }
  .report { border: 0; }
}
@media (max-width: 640px) {
  .site-foot-in { grid-template-columns: 1fr; padding-top: 28px; }
}
@media print { .site-foot { display: none; } }
