:root{
  --paper:#f2ead8; --paper2:#e8dcc2; --ink:#1c1b18; --red:#c5341f; --teal:#1d6b66; --yellow:#f2cc45;
  --head:"Arial Black","Franklin Gothic Heavy","Helvetica Neue",Arial,sans-serif;
  --body:Georgia,"Times New Roman",serif;
  --type:"Courier New",Courier,monospace;
}
*{box-sizing:border-box}
@media (prefers-reduced-motion:no-preference){html{scroll-behavior:smooth}}
body{margin:0;background:var(--paper);color:var(--ink);font-family:var(--body);font-size:18px;line-height:1.6;
  background-image:radial-gradient(rgba(28,27,24,.07) 1px,transparent 1.2px);background-size:7px 7px}
img,svg{max-width:100%;height:auto;display:block}
a{color:inherit}
.wrap{max-width:1040px;margin:0 auto;padding:0 20px}
.ill{filter:url(#rough)}
.i{fill:none;stroke:var(--ink);stroke-width:3;stroke-linecap:round;stroke-linejoin:round}
.thin{stroke-width:2}
.dash{stroke-dasharray:7 7}
.fr{fill:var(--red)}.ft{fill:var(--teal)}.fy{fill:var(--yellow)}.fp{fill:var(--paper)}.fp2{fill:var(--paper2)}.fi{fill:var(--ink)}
.st{stroke:var(--ink);stroke-width:3;stroke-linejoin:round}
svg text{font-family:var(--type);font-weight:700;fill:var(--ink)}

/* top bar */
.top{border-bottom:3px solid var(--ink);background:var(--paper)}
.top .wrap{display:flex;flex-wrap:wrap;align-items:center;gap:10px 22px;padding-top:14px;padding-bottom:14px}
.mark{font-family:var(--head);font-size:22px;letter-spacing:.5px;text-transform:uppercase;text-decoration:none;
  border:3px solid var(--ink);padding:2px 10px;transform:rotate(-1.5deg);background:var(--yellow)}
.top nav{display:flex;flex-wrap:wrap;gap:4px 16px;margin-left:auto;font-family:var(--type);font-weight:700;font-size:15px}
.top nav a{padding:8px 2px}

.stamp{display:inline-block;font-family:var(--type);font-weight:700;font-size:14px;letter-spacing:1.5px;text-transform:uppercase;
  color:var(--red);border:3px solid var(--red);padding:3px 10px;transform:rotate(-3deg);border-radius:4px}

h1,h2,h3{font-family:var(--head);line-height:1.05;margin:0;text-transform:uppercase}
h1{font-size:clamp(40px,9vw,84px);letter-spacing:-1px}
h2{font-size:clamp(28px,5.4vw,46px);margin-bottom:18px}
h3{font-size:20px;line-height:1.15;margin-bottom:6px}
p{margin:0 0 16px}
.big{font-size:clamp(19px,2.6vw,23px)}
mark{background:linear-gradient(transparent 52%,var(--yellow) 52%);color:inherit;padding:0 2px}
.label{font-family:var(--type);font-weight:700;font-size:14px;letter-spacing:2px;text-transform:uppercase;margin-bottom:10px;display:block}

section{padding:56px 0}
.cut{border:0;border-top:3px dashed var(--ink);margin:0;position:relative;opacity:.55}
.two{display:grid;gap:34px;align-items:center}
@media(min-width:820px){.two{grid-template-columns:1fr 1fr}.two.flip>:first-child{order:2}}

.btn{display:inline-block;font-family:var(--head);text-transform:uppercase;text-decoration:none;font-size:17px;
  padding:14px 22px;border:3px solid var(--ink);background:var(--red);color:var(--paper);box-shadow:5px 5px 0 var(--ink);margin:6px 12px 6px 0;min-height:52px}
.btn.alt{background:var(--paper);color:var(--ink)}
.btn:focus-visible,.top a:focus-visible{outline:4px solid var(--teal);outline-offset:3px}

.hero{padding-top:40px}
.note{font-family:var(--type);font-size:15px;border-left:5px solid var(--red);padding:6px 0 6px 12px;margin-top:18px;max-width:34em}

.card{background:var(--paper);border:3px solid var(--ink);padding:18px 18px 14px;
  border-radius:255px 14px 225px 14px/14px 225px 14px 255px;box-shadow:5px 5px 0 var(--ink)}
.card p{font-size:16.5px;margin-bottom:6px}
.grid{display:grid;gap:22px}
@media(min-width:640px){.grid{grid-template-columns:1fr 1fr}}
@media(min-width:940px){.grid.three{grid-template-columns:1fr 1fr 1fr}}
.tilt1{transform:rotate(-.6deg)}.tilt2{transform:rotate(.7deg)}

.band{background:var(--ink);color:var(--paper)}
.band .label{color:var(--yellow)}
.band .card{background:var(--paper);color:var(--ink);box-shadow:5px 5px 0 var(--yellow)}
.band mark{color:var(--ink)}
.num{font-family:var(--type);font-weight:700;color:var(--red);font-size:15px;letter-spacing:1px}

ul.plain{list-style:none;padding:0;margin:0}
ul.plain li{padding:10px 0 10px 34px;position:relative;border-bottom:2px dotted rgba(28,27,24,.35)}
ul.plain li:before{content:"";position:absolute;left:4px;top:19px;width:14px;height:14px;background:var(--red);border:2px solid var(--ink);transform:rotate(45deg)}
ul.plain li strong{font-family:var(--head);font-weight:400;text-transform:uppercase;font-size:16px}

.drawer{background:var(--paper);border:3px solid var(--ink);padding:16px;position:relative}
.drawer:nth-child(odd){transform:rotate(-.4deg)}.drawer:nth-child(even){transform:rotate(.4deg)}
.drawer header{display:flex;align-items:center;gap:12px;margin-bottom:8px}
.drawer svg{width:46px;height:46px;flex:none}
.drawer ul{margin:0;padding-left:18px;font-size:16px;line-height:1.45}
.drawer li{margin-bottom:3px}
.tape{position:absolute;top:-13px;left:50%;width:92px;height:24px;margin-left:-46px;background:rgba(242,204,69,.8);border-left:2px dashed rgba(28,27,24,.3);border-right:2px dashed rgba(28,27,24,.3);transform:rotate(-2deg)}

.steps{counter-reset:s;display:grid;gap:22px}
@media(min-width:820px){.steps{grid-template-columns:1fr 1fr 1fr}}
.steps .card:before{counter-increment:s;content:counter(s);font-family:var(--head);font-size:40px;line-height:1;color:var(--red);display:block;margin-bottom:6px}

.who{background:var(--yellow);border-top:3px solid var(--ink);border-bottom:3px solid var(--ink)}
.who .big strong{font-family:var(--head);font-weight:400;text-transform:uppercase}
footer{padding:30px 0 50px;font-family:var(--type);font-size:14.5px}

/* One-off spacing and drawing details. The site forbids inline styles in its
   security headers, so each of these lives here as a class. */
.defs{position:absolute}
.hero-title{margin-top:14px}
.hero-lead{margin-top:18px}
.measure36{max-width:36em}
.measure38{max-width:38em}
.gap14{margin-top:14px}
.gap20{margin-top:20px}
.gap22{margin-top:22px}
.gap26{margin-top:26px}
.gap40{margin-top:40px}
.gap50{margin-top:50px}
.drawers{margin-top:34px;color:var(--ink)}
ul.plain li.last{border:0}
.h3big{font-size:26px}
.h2small{font-size:32px}
.card.roomy{padding:26px}
.centered{text-align:center;margin-top:26px}
.i.w4{stroke-width:4}
.i.w5{stroke-width:5}
.i.w9{stroke-width:9}
.i.redline{stroke:var(--red);stroke-width:4}
svg text.headfont{font-family:var(--head)}
.net{background:var(--paper);border:3px solid var(--paper)}
.ring{max-width:380px;margin:0 auto}
.keys{max-width:360px;margin:0 auto}
.vouch{max-width:560px;margin:34px auto 0}

/* "Have a say": the feedback form and the updates strip. The card is taller
   than the list beside it, so the two line up at the top, not the middle. */
.two.say{align-items:start}
button.btn{cursor:pointer}
.field{display:block;margin-top:18px}
.field span{display:block;font-family:var(--type);font-weight:700;font-size:15px;margin-bottom:6px}
textarea,input[type=email],input[type=search]{width:100%;font:inherit;font-size:17px;color:var(--ink);background:#fbf6ea;border:3px solid var(--ink);padding:10px 12px;border-radius:0}
textarea{min-height:150px;resize:vertical}
textarea:focus-visible,input:focus-visible{outline:4px solid var(--teal);outline-offset:2px}
/* The padding makes the whole row a 44 pixel target for a thumb, not just the box. */
.tick{display:flex;gap:10px;align-items:flex-start;margin-top:16px;padding:9px 0;font-size:16.5px}
.tick input{width:24px;height:24px;margin:3px 0 0;flex:none;accent-color:var(--red)}
.fine{font-family:var(--type);font-size:14.5px;line-height:1.5;margin-top:10px}
.oops-msg{font-family:var(--type);font-weight:700;font-size:15px;border-left:5px solid var(--red);padding:4px 0 4px 12px;margin:0 0 8px}
/* Space above, so a line reads as belonging to the field under it and not to the tick box over it. */
.card .oops-msg{margin-top:18px}
.trap{position:absolute;left:-9999px}
.strip{border-top:3px dashed var(--ink);margin-top:44px;padding-top:30px}
.strip h3{font-size:22px;margin:0 0 6px}
.strip form{display:flex;flex-wrap:wrap;gap:12px;align-items:flex-end;margin-top:12px}
.strip .field{flex:1 1 260px;margin-top:0}
.strip .btn{margin:0}
.strip .oops-msg{flex:1 1 100%;margin:0}

/* error pages */
.oops .top .wrap{display:block}
.oops .mark{display:inline-block}
.oops main{padding:56px 0 80px}
.oops h1{margin:14px 0 0;font-size:clamp(36px,8vw,68px)}
.oops .big{margin-top:18px;max-width:30em}
.mark:focus-visible{outline:4px solid var(--teal);outline-offset:3px}

/* The slide-out menu. The Menu and Close buttons only show once menu.js has
   run and the screen is too narrow for the row of links. Without the script
   the links stay a row that wraps, so older browsers lose nothing. */
.menu-btn,.menu-close{display:none;font-family:var(--type);font-weight:700;font-size:16px;color:var(--ink);background:var(--paper);
  border:3px solid var(--ink);padding:9px 14px;min-height:44px;cursor:pointer;box-shadow:3px 3px 0 var(--ink)}
.menu-btn:focus-visible,.menu-close:focus-visible{outline:4px solid var(--teal);outline-offset:3px}
/* The row of links needs about 920 pixels beside the logo, so the menu takes
   over below 960. Kept compact so the logo and the button share one line on
   a 360 pixel phone. */
@media (max-width:959px){
  .js .top .wrap{gap:10px}
  .js .menu-btn{display:inline-block;margin-left:auto;font-size:15px;padding:7px}
  .js .menu-btn:before{content:"";display:inline-block;width:18px;height:3px;background:var(--ink);
    box-shadow:0 -6px 0 var(--ink),0 6px 0 var(--ink);vertical-align:middle;margin:0 8px 3px 0}
  .js .site-menu{position:fixed;top:0;right:0;bottom:0;z-index:20;width:82vw;max-width:320px;margin:0;padding:18px 22px 30px;
    display:block;overflow-y:auto;background:var(--paper);border-left:3px solid var(--ink);
    transform:translateX(105%);visibility:hidden;transition:transform .25s ease,visibility 0s linear .25s}
  .js.menu-open .site-menu{transform:none;visibility:visible;transition:transform .25s ease;box-shadow:0 0 0 100vmax rgba(28,27,24,.45)}
  .js .menu-close{display:block;margin:0 0 12px auto}
  .js .site-menu a{display:block;padding:12px 2px;font-size:17px;border-bottom:2px dotted rgba(28,27,24,.35)}
}
@media (prefers-reduced-motion:reduce){.js .site-menu{transition:none}}

/* The footer links, on every page that has a footer. */
.foot-links{display:flex;flex-wrap:wrap;gap:4px 18px;margin:0 0 12px;font-weight:700}
/* 11 pixels above and below makes each link a 44 pixel target for a thumb. */
.foot-links a{display:inline-block;padding:11px 0}
main a:focus-visible,footer a:focus-visible{outline:4px solid var(--teal);outline-offset:3px}

/* The Roadmap, Changelog and Help pages. */
.top nav a[aria-current=page]{text-decoration:none;border-bottom:4px solid var(--red)}
.page-head{padding:40px 0 10px}
.page-head h1{margin-top:14px;font-size:clamp(40px,9vw,72px);letter-spacing:-1px}
.page-head .lead{font-size:clamp(19px,2.6vw,23px);margin-top:18px;max-width:32em}
.main-pad{padding-bottom:60px}

/* The Roadmap's cards are the home page's toolbox drawers, a little roomier.
   Kept under .tools so the home page's own drawers stay as they are. */
.tools{padding-bottom:60px}
.tools h2{font-size:clamp(26px,5vw,36px);margin:46px 0 30px;padding-top:22px;border-top:3px solid var(--ink)}
.tools .drawers{display:grid;gap:30px 22px;margin-top:0}
@media(min-width:640px){.tools .drawers{grid-template-columns:1fr 1fr}}
@media(min-width:940px){.tools .drawers{grid-template-columns:1fr 1fr 1fr}}
.tools .drawer{padding:20px 18px 6px}
.tools .drawer h3{font-size:20px;line-height:1.15;margin-bottom:8px}
.tools .drawer p{font-size:16.5px;line-height:1.5}
.tools .first .drawer{box-shadow:5px 5px 0 var(--red)}

/* The Changelog's entries. */
.doc{max-width:46em;padding-bottom:60px}
.doc h2{font-size:clamp(26px,5vw,36px);margin:46px 0 16px;padding-top:22px;border-top:3px solid var(--ink)}
.doc h3{font-size:20px;line-height:1.15;margin:30px 0 8px}
.doc ul{list-style:none;padding:0;margin:0 0 16px}
.doc li{padding:10px 0 10px 34px;position:relative;border-bottom:2px dotted rgba(28,27,24,.35)}
.doc li:before{content:"";position:absolute;left:4px;top:19px;width:14px;height:14px;background:var(--red);border:2px solid var(--ink);transform:rotate(45deg)}
.doc code{font-family:var(--type);font-size:.9em;background:var(--paper2);padding:1px 5px}
.doc strong{font-weight:700}

/* Help. The search box is a plain form, so it works with no script. */
.search{display:flex;flex-wrap:wrap;gap:12px;align-items:flex-end;max-width:40em;margin:22px 0 10px}
.search label{flex:1 1 260px}
.search label span{display:block;font-family:var(--type);font-weight:700;font-size:15px;margin-bottom:6px}
.search input{min-height:52px}
.search .btn{margin:0}
.crumbs{font-family:var(--type);font-weight:700;font-size:15px;margin:30px 0 0}
.crumbs a{display:inline-block;padding:10px 0}
.empty{font-size:19px;border-left:5px solid var(--red);padding:6px 0 6px 14px;max-width:34em;margin-top:30px}
.section-h{font-size:clamp(26px,5vw,36px);margin:46px 0 22px;padding-top:22px;border-top:3px solid var(--ink)}
.topics{display:grid;gap:30px 22px}
@media(min-width:640px){.topics{grid-template-columns:1fr 1fr}}
.topic{background:var(--paper);border:3px solid var(--ink);padding:20px 18px 10px;position:relative;box-shadow:5px 5px 0 var(--ink)}
.topic h3{font-size:20px;margin-bottom:8px}
.topic ul,.results,.related{list-style:none;padding:0;margin:0}
.topic li a,.related li a{display:block;padding:9px 0;border-bottom:2px dotted rgba(28,27,24,.35)}
.related li a{max-width:40em}
.article{max-width:40em}
.article h1{font-size:clamp(32px,6vw,52px);margin:14px 0 22px}
.article h2{font-size:24px;margin:30px 0 10px}
.results li{padding:16px 0;border-bottom:2px dotted rgba(28,27,24,.35);max-width:40em}
.results h3{font-size:20px;margin-bottom:4px}
.results .from{font-family:var(--type);font-weight:700;font-size:14px;display:block;margin-bottom:6px}
.results p{margin:0;font-size:16.5px}
/* A long address or word in an article must not push a phone screen sideways. */
.doc,.article,.results p{overflow-wrap:break-word}
.doc pre,.article pre{overflow-x:auto}
