/* Self-hosted type. No external resources are required. */
@font-face{font-family:'Spectral';src:url('/assets/fonts/spectral-400.ttf') format('truetype');font-weight:400;font-style:normal;font-display:swap}
@font-face{font-family:'Spectral';src:url('/assets/fonts/spectral-500.ttf') format('truetype');font-weight:500;font-style:normal;font-display:swap}
@font-face{font-family:'Public Sans';src:url('/assets/fonts/public-sans-400-normal.ttf') format('truetype');font-weight:400;font-style:normal;font-display:swap}
@font-face{font-family:'Public Sans';src:url('/assets/fonts/public-sans-600-normal.ttf') format('truetype');font-weight:600;font-style:normal;font-display:swap}

/* Engraved steel: an instrument, not a screen. */
:root{
  color-scheme:light;
  --steel:#e3e6e8;--plate:#d4d9dd;--etch:#b4bbc2;--graphite:#4b525d;--ink:#171a20;--signal:#f0563a;
  --serif:'Spectral',Georgia,serif;
  --sans:'Public Sans',system-ui,sans-serif;
  --gutter:16px;--page:76rem;--measure:30rem;
}
@media (min-width:720px){:root{--gutter:40px}}

*{box-sizing:border-box}
html{-webkit-text-size-adjust:100%}
body{margin:0;background:var(--steel);color:var(--ink);font:400 1.0625rem/1.6 var(--sans);-webkit-font-smoothing:antialiased}
a{color:inherit;text-decoration-color:var(--signal);text-decoration-thickness:1px;text-underline-offset:.22em}
a:hover{color:var(--signal)}
:focus-visible{outline:2px solid var(--signal);outline-offset:4px;border-radius:2px}
p{margin:0}
.visually-hidden{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}

.page{max-width:calc(var(--page) + 2 * var(--gutter));margin:0 auto;padding-inline:var(--gutter)}

.dot{display:inline-block;width:.5em;height:.5em;background:var(--signal);transform:rotate(45deg)}
.masthead{display:flex;justify-content:space-between;align-items:center;gap:16px;padding-block:24px}
.wordmark{display:inline-flex;align-items:center;gap:.6em;font:500 1.25rem/1 var(--serif);text-decoration:none}
.masthead nav{display:flex;gap:20px;font-size:.95rem}
.masthead nav a{text-decoration:none;color:var(--graphite)}
.masthead nav a:hover{color:var(--ink)}

/* Hero: the claim on the left, the cipher disc that writes it on the right. */
/* Columns ignore content width: the headline changes width with every key, and must not resize the disc. */
.hero{display:grid;grid-template-columns:minmax(0,1fr);gap:40px;align-items:center;padding-block:32px 72px}
.claim h1{font:400 clamp(3rem,8.4vw,6.6rem)/.98 var(--serif);letter-spacing:-.025em;margin:0 0 32px}
.claim h1 span{display:block;white-space:nowrap}
.claim p{max-width:var(--measure);font-size:1.125rem;color:var(--graphite)}
.disc{width:min(100%,560px);justify-self:center}
.disc svg{display:block;width:100%;height:auto;touch-action:none;cursor:grab;user-select:none;-webkit-user-select:none}
.disc svg:active{cursor:grabbing}
.disc svg:focus-visible{outline-offset:-8px;border-radius:50%}
.disc .hint{margin-top:12px;text-align:center;font-size:.875rem;color:var(--graphite)}
@media (min-width:900px){
  .hero{grid-template-columns:minmax(0,1.15fr) minmax(0,1fr);padding-block:48px 96px}
  .disc{justify-self:end}
}

.disc .face{fill:var(--plate)}
.disc .rim{fill:none;stroke:var(--etch);stroke-width:1}
.disc .tick{stroke:var(--etch);stroke-width:1}
.disc .window{fill:var(--steel)}
.disc .letter{font:400 22px var(--serif);fill:var(--ink)}
.disc .inner .letter{fill:var(--graphite)}
.disc .index{fill:var(--signal)}
.disc .zero{fill:none;stroke:var(--ink);stroke-width:1.5}
.disc .key{font:400 64px var(--serif);fill:var(--ink);font-variant-numeric:lining-nums tabular-nums}

/* What the lab does: four columns under one engraved rule. */
.practice{list-style:none;margin:0;padding:0;display:grid;gap:32px 40px;border-top:1px solid var(--ink);padding-block:32px 88px}
.practice h2{font:500 1.75rem/1.1 var(--serif);margin:0 0 10px}
.practice p{color:var(--graphite);max-width:22rem}
@media (min-width:640px){.practice{grid-template-columns:repeat(2,1fr)}}
@media (min-width:1000px){.practice{grid-template-columns:repeat(4,1fr)}}

.contact{border-top:1px solid var(--etch);padding-block:40px 96px}
.contact h2{font:600 .95rem/1.4 var(--sans);color:var(--graphite);margin:0 0 8px}
.contact a{font:400 clamp(2rem,6.4vw,4.5rem)/1.05 var(--serif);letter-spacing:-.02em}

/* Legal pages */
.document{max-width:40rem;padding-block:40px 96px}
.document h1{font:400 clamp(2.6rem,7vw,4.2rem)/1 var(--serif);letter-spacing:-.02em;margin:0 0 .6em}
.document h2{font:500 1.5rem/1.25 var(--serif);margin:2em 0 .5em}
.document h3{font:600 1rem/1.4 var(--sans);margin:1.6em 0 .3em}
.document p{margin:0 0 1em}
.document dl{margin:0}
.document dt{font:600 .95rem/1.4 var(--sans);color:var(--graphite);margin-top:1.2em}
.document dd{margin:0}

.colophon{display:flex;flex-wrap:wrap;justify-content:space-between;gap:12px 24px;padding-block:24px 40px;border-top:1px solid var(--etch);font-size:.9rem;color:var(--graphite)}
.colophon nav{display:flex;gap:20px}
.colophon a{text-decoration:none}
.colophon a:hover{color:var(--ink)}
