html {
  --unit1: 8px;
  --unit2: 16px;
  --unit3: 24px;
  --unit4: 32px;
  --unit6: 48px;
  --unit8: 64px;
  --unit10: 80px;
  --unit12: 96px;
  --unit16: 64px;
  --unit32: 128px;
  --unit64: 256px;

  --black: black;
  --white: white;
  --orange: hsl(16, 100%, 59%);
  --orange-light: hsl(16, 100%, 82%);

  --purple: #2d293c;
  --purple-light: #46405c;
  --purple-bright: #a6a3cc;

  --gray-light: #f6f6f6;
  --gray-medium: #bbb;

  --dark-gray: #151319;

  --orange-selected: hsl(16, 100%, 49%);
  --orange-light-selected: hsl(16, 100%, 72%);

  --red: hsl(0, 80%, 70%);

  /* --page-title-shadow: rgb(0, 0, 0, .02); */

  background: var(--orange);
  /* color-scheme: dark; */
  /* color-scheme: only light; Forces dark scrollbar */

  /* Responsive */
  --main-page-width: 1200px;
  --narrow-width: 800px;

  --output-sans-font-size: 20px;
  --output-sans-font-size-smaller: 16px;

  --output-sans-letter-spacing: .04em;
  --output-sans-letter-spacing-smaller: .04em;

  --gorton: GortonRegular, "Helvetica Neue", Helvetica, Arial, sans-serif;
  --output-sans: OutputSans, system-ui, "SF Text", Segoe, Tahoma, sans-serif;
  --mercury: Mercury, "Charter", "Times New Roman", serif;
}
@media all and (max-width: 1279px) {  
  html {
    --main-page-width: 944px;
    --narrow-width: 630px;
  }
}
@media all and (max-width: 1023px) {  
  html {
    --main-page-width: calc(100% - 40px);
    --narrow-width: calc(100% - 40px);

    --output-sans-font-size: 18px;
    --output-sans-font-size-smaller: 14px;
    --output-sans-letter-spacing: .02em;
    --output-sans-letter-spacing-smaller: .02em;
  }
}

* {
  -webkit-font-smoothing: subpixel-antialiased !important;
  text-rendering: optimizeLegibility;
}

body {
  padding: 0;
  margin: 0;

  /* background: white url(noise.png); */
  /* background-size: 500px 500px; */
  background: white;

  overflow-x: hidden;

  font-family: var(--mercury);
  font-size: 20px;
  line-height: 1.5;   
  /* -moz-osx-font-smoothing: grayscale; */

  min-height: 100vh;
}
@media all and (max-width: 1023px) {  
  body {
    font-size: 18px;
    line-height: 1.5;
  }
}


a {
  color: inherit;
  text-decoration-thickness: .08em;
  text-decoration-skip-ink: all;
  /* text-decoration-skip: 2em; */
}
a.important {
  color: var(--orange);
}

h1, 
h2 {
  font-family: var(--gorton);
  font-size: 36px;
  font-weight: 400;
  text-transform: uppercase;
  line-height: normal;
  position: relative;
  font-feature-settings: "ss04" on; /* Nice fat I */

  margin: 0;
  margin-bottom: var(--unit8);
  margin-left: -.05em; /* Sidebearings correction */


  box-sizing: border-box;
  width: calc(var(--main-page-width));
}
h1::before {
  content: '';
  position: absolute;
  width: 81px;
  height: 85px;
  background: url(ui/key.png);
  background-size: 81px 85px;
  left: -80px;
  top: -20px;
  z-index: 1;
  pointer-events: none;
}
h1.dark {
  color: var(--purple-bright) !important;
}
h1.dark::before {
  background-image: url(ui/key-dark.png);
}

@media all and (max-width: 1440px) {  
  h1, h2 {
    padding-right: 60px;
  }

  h1::before {
    left: auto;
    right: -25px;  
  }
}

h1 a {
  text-underline-offset: .2em;
}

@media all and (max-width: 1023px) {  
  h1 {
    font-size: 24px;
    margin-bottom: var(--unit4);
    padding-right: 10px;
  }
  h1::before {
    left: auto;
    right: -55px;  
    top: -18px;
    width: 65px;
    height: 68px;
    background-size: 65px 68px;
  }
}


h2 {
  font-size: 24px;
  margin-top: var(--unit6);
  margin-bottom: var(--unit4);
  color: var(--orange);
  -webkit-text-stroke: .75px var(--orange);;
}

h2.numbered {
  counter-increment: header-two;
}
h2.numbered:before {
  content: counter(header-two) ".";
  position: absolute;
  margin-left: -1.6em;
}
@media all and (max-width: 1023px) {  
  h2 {
    font-size: 20px;
  }
}
@media all and (max-width: 1279px) {  
  h2.numbered {
    padding-left: 1.6em;
  }
  h2.numbered:before {
    margin-left: -1.6em;
  }
}


h3 {
  font-size: 20px;
  color: var(--orange);
  font-weight: 400;
}
@media all and (max-width: 1023px) {  
  h3 {
    font-size: 18px;
  }
}

p {
  margin: 0;
  margin-bottom: 1em;
}
p:last-child {
  margin-bottom: 0;
}
p.big {
  font-size: 24px;
}
@media all and (max-width: 1023px) {  
  p.big {
    font-size: 22px;
  }
}
.key {
  font-family: var(--output-sans);
  font-size: 80%;
  letter-spacing: .01em;
  font-variation-settings: "wght" 520;

  display: inline-block;
  min-width: .6em;

  border-radius: 8px;
  border: 2.2px solid black;
  padding: .45em .45em .15em;
  margin: 0 .15em;
  line-height: .8;
  text-align: center;
  z-index: 1000;
  position: relative;
  top: -.05em;
}
@media all and (max-width: 1023px) {  
  .key {
    border: 1.8px solid black;
    top: -.05em;
    letter-spacing: 0;
    line-height: .9;
  }
}

figcaption {
  font-family: var(--output-sans);
  font-size: 80%;
  letter-spacing: .04em;
  font-variation-settings: "wght" 400;
  font-size: 16px;
}

ul {
  padding: 0;
  margin: 0;
  counter-reset: section;
}

ol {
  padding: 0;
  margin: 0;
  counter-reset: section;
}
li {
  padding: 0;
  margin: 0;
  margin-bottom: .5em;
  list-style: none;
  position: relative;
}
ul li:before {
  margin-left: -3em;
  top: .55em;
  position: absolute;
  content: "";
  width: 24px;
  height: 8px;
  border-radius: 999px;
  background: var(--orange-light);
}
ul.small li:before {
  margin-left: 0;
  top: -1em;
}
@media all and (max-width: 1440px) {
  ul.grid li:before {
    margin-left: 0;
    top: -1em;
  }
}


ol li:before {
  margin-left: -3.7em;
  top: .45em;
  position: absolute;
  counter-increment: section;  
  content: counter(section) ".";

  font-family: var(--output-sans);
  font-size: var(--output-sans-font-size-smaller);
  letter-spacing: var(--output-sans-letter-spacing-smaller);
  font-variation-settings: "wght" 500;

  color: var(--orange);
}
ol li.no-number:before {
  display: none;
}
ol li.hanging-quote {
  text-indent: -.6em;
  margin-left: .2em;
}
ol li.hanging-quote:before {
  margin-left: -2.45em;
}

@media all and (max-width: 1440px) {
  ul {
    padding-left: 3em;
  }
}


.backspace {
  display: inline-block;
  font-family: var(--gorton);
  font-size: 56px;
  line-height: 50px;
  
  background: var(--orange);
  color: var(--white);

  margin-top: var(--unit16);

  padding: 20px;
  border-radius: 999px;

  text-decoration: none;
}
@media all and (max-width: 1023px) {  
  .backspace {
    font-size: 28px;
    line-height: 25px;
    padding: 10px;  
  }
}

.backspace:hover {
  background: var(--orange-light);
}

.left-arrow,
.right-arrow {
  border: none;
  font-family: var(--gorton);
  font-size: 56px;
  position: absolute;
  top: 50%;
  margin-top: -45px;
  line-height: 50px;
  
  background: var(--gray-light);
  color: var(--black);

  padding: 20px;
  border-radius: 999px;
  opacity: 0;
  cursor: default;
  transition: opacity 200ms, padding 100ms;
}
.left-arrow:hover,
.right-arrow:hover {
  color: var(--orange);
  /* color: var(--orange-light); */
}
.left-arrow:active,
.right-arrow:active {
  color: var(--orange-selected);
  /* background: var(--orange-light); */
}
.left-arrow:active {
  padding-left: 16px;
  padding-right: 24px;
}
.right-arrow:active {
  padding-left: 24px;
  padding-right: 16px;
}
.left-arrow {
  left: -45px;
}
.left-arrow:after {
  content: '←';
}
.right-arrow {
  right: -45px;
}
.right-arrow:after {
  content: '→';
}

*:hover > .left-arrow,
*:hover > .right-arrow,
.left-arrow.always-visible,
.right-arrow.always-visible {
  opacity: 1;
}
.no-left-arrow .left-arrow {
  opacity: 0;
  pointer-events: none;
}
.no-right-arrow .right-arrow {
  opacity: 0;
  pointer-events: none;
}
@media all and (max-width: 1023px) {  
  .left-arrow,
  .right-arrow {
    display: none;
  }
}



input[type="radio"] {
  display: none;
}
input[type="radio"] + label {
  font-family: var(--output-sans);
  font-size: 100%;
  letter-spacing: .04em;

  -webkit-appearance: none;
  /* border-radius: 8px; */
  border: none;

  /* background: black; */
  /* color: white; */
  border: 3px solid black;
  background: var(--white);

  font-weight: 500;
  padding: calc(.8em - 3px);
  padding-top: calc(.5em - 3px);
  padding-bottom: calc(.3em - 3px);

  outline: none;

  box-shadow: 4px -4px 0 var(--gray-medium);
  margin-right: -8px;
  /* margin-right: 4px; */
  margin-top: var(--unit4);
  margin-bottom: var(--unit2);
  display: inline-block;

  user-select: none;
}
input[type="radio"]:checked + label {
  background: var(--black);
  color: var(--white);

  /* position: relative; */
}
input[type="radio"]:first-child + label {
  border-radius: 8px 0 0 8px;
}
input[type="radio"] + label:last-child {
  border-radius: 0 8px 8px 0;
}
input[type="radio"]:active + label { 
  background: var(--orange);
  color: var(--white);
}

select,
button:not(.left-arrow):not(.right-arrow),
input[type="submit"],
.fake-select {
  font-family: var(--output-sans);
  font-size: 100%;
  letter-spacing: .04em;

  -webkit-appearance: none;
  border-radius: 8px;
  border: none;
  text-decoration: none;

  background: black;
  color: white;
  font-weight: 500;
  padding: .5em;
  padding-bottom: .3em;

  outline: none;
  cursor: pointer;

  box-shadow: 4px -4px 0 var(--orange-light);
  margin-right: 4px;
}
button:not(.left-arrow):not(.right-arrow).light {
  background: white;
  color: black;
  box-shadow: 4px -4px 0 var(--orange);
}
button:not(.left-arrow):not(.right-arrow):hover,
input[type="submit"]:hover {
  background: var(--orange);
}

button:not(.left-arrow):not(.right-arrow):active,
input[type="submit"]:active {
  box-shadow: none;
  position: relative;
  left: 4px;
  top: -4px;
}

.fake-select.dark {
  color: black;
  background: white;
}


.textarea-wrapper {
  position: relative;
  box-sizing: border-box;

  margin-top: var(--unit6);
  overflow: hidden;
  box-shadow: 8px -8px 0 black;
  border-radius: 8px;
}

a.text {
  font-family: var(--output-sans);
  font-size: 100%;
  letter-spacing: .04em;
  margin-left: .5em;
  color: var(--purple-bright);
  white-space: nowrap;
}

textarea,
input[type='email'],
input[type='text'],
.textarea-measure {
  font-family: var(--output-sans);
  font-size: var(--output-sans-font-size);
  letter-spacing: var(--output-sans-letter-spacing);
  padding: var(--unit2);
  border: 3px solid black;
  border-radius: 8px;
  resize: none;
  box-sizing: border-box;

  transition: background 100ms;
}
textarea::placeholder,
input[type='email']::placeholder,
input[type='text']::placeholder,
.textarea-measure::placeholder {
  color: var(--gray-medium);
}
textarea:focus,
textarea.fake-focus,
input[type='text']:focus,
input[type='email']:focus,
.textarea-measure:focus {
  background: var(--orange);
  color: var(--white);
}
textarea:focus::placeholder,
textarea.fake-focus::placeholder,
input[type='text']:focus::placeholder,
input[type='email']:focus::placeholder,
.textarea-measure:focus::placeholder {
  color: var(--orange-light);
}

input[type="email"] {
  line-height: 80%;
  box-shadow: 8px -8px 0 black;

  padding-bottom: 12px; /* Output Sans correction */
  outline: none;
}


textarea {
  outline: none;
  
}
.textarea-wrapper > textarea {
  position: absolute;
  width: 100%;
  height: 100%;
}

/*textarea:focus {
  box-shadow: 16px 16px 0 black;
}*/

.textarea-measure {
  position: absolute;
  z-index: 3;
  opacity: 0;
  width: 100%;
  pointer-events: none;
}


.textarea-empty-prompt {
  font-family: var(--output-sans);
  font-size: var(--output-sans-font-size);
  letter-spacing: var(--output-sans-letter-spacing);
  padding: var(--unit2);

  position: absolute;
  width: 100%;
  height: 100%;
  box-sizing: border-box;
  z-index: 1;
  pointer-events: none;
  left: 3px;
  top: 3px;

  color: var(--gray-medium);
  opacity: 0;
}

textarea:not(:focus):not(.fake-focus):placeholder-shown + .textarea-empty-prompt {
  opacity: 1;
}




.instructions {
  font-family: var(--output-sans);
  font-size: var(--output-sans-font-size);
  letter-spacing: var(--output-sans-letter-spacing);
  margin-bottom: var(--unit8);
}
@media all and (max-width: 1279px) {  
  .instructions {
    margin-bottom: var(--unit6);
  }
}
@media all and (max-width: 1023px) {  
  .instructions {
    margin-bottom: var(--unit4);
  }
}


.pagination {
  height: 8px;
  display: flex;
}
.pagination .page {
  display: inline-block;
  width: 8px;
  height: 8px;
  /* margin-bottom: 8px; */

  padding: 8px 4px;
  margin: -8px -4px;
  margin-right: 4px;

  -webkit-tap-highlight-color: transparent;

  cursor: pointer;
  position: relative;
  transition: background 50ms, width 200ms;
}
.pagination .page:after {
  content: '';
  position: absolute;

  width: 8px;
  height: 8px;
  border-radius: 999px;
  background: var(--black);
  transition: background 50ms, width 200ms;
}
.pagination.light .page:after {
  background: var(--purple-light);
}
.pagination .page:hover:after {
  background: var(--orange-light);
}
.pagination .page.separated {
  margin-left: 8px;
}

.pagination .page.selected {
  width: 24px;
}
.pagination .page.selected:after {
  width: 24px;
  background: var(--orange);
}
.pagination.light .page.selected:after {
  background: var(--purple-bright);
}






.section-outside {
  width: 100%;
  padding: var(--unit12) 0 var(--unit12);
  color-scheme: light;
  overflow-x: hidden;
}
.section {
  width: var(--main-page-width);
  margin: 0 auto;
}
.section-outside.narrow .section {
  width: var(--narrow-width);
  padding-right: calc(var(--main-page-width) - var(--narrow-width));
}

@media all and (max-width: 1279px) {  
  .section-outside {
    padding: var(--unit8) 0 var(--unit8);
  }
}

@media all and (max-width: 1023px) {  
  .section-outside {
    padding: var(--unit6) 0 var(--unit6);
  }
}


/* About me */

.about-me-outside {
  background: var(--gray-light) url(noise.png);
}

.about-me .me {
  width: 600px;
  margin-bottom: var(--unit4);
  border-radius: 8px;
  box-shadow: 8px -8px 0 var(--orange-light);
}
@media all and (max-width: 1023px) {  
  .about-me .me {
    width: 100%;
  }
}

/* Newsletters */

.newsletter-outside {
  /* background: var(--gray-light) url(noise.png); */
}



/* Page title */

.page-title-outside {
  background: var(--dark-gray) url(images/banner-small.jpg);
  background-repeat: no-repeat;
  background-size: 180%;
  background-color: var(--orange);
  background-position: 50% 50%;
  color: var(--white);
  padding: var(--unit64) 0 var(--unit16);
}
@media all and (max-width: 1023px) {  
  .page-title-outside {
    padding: var(--unit32) 0 var(--unit4);
    background-position: 50% 0%;
  }
}

.page-title .tag {
  position: absolute;
  right: 64px;
  top: 64px;
  width: 224px;
  height: 224px;
  padding: 32px;
  padding-top: 32px;
  box-sizing: border-box;
  z-index: 100000;
  border-radius: 1000px;

  transform: rotateZ(5deg);
  
  text-decoration: none;

  /* outline: 3px solid red; */

  display: flex;
  text-align: center;
  align-items: center;
  font-family: var(--output-sans);
  font-variation-settings: "wght" 250;
  /* font-weight: 400; */
  font-size: 30px;
  line-height: 1.2;
  letter-spacing: .05em;

  /* cursor: pointer; */

  background: black;
  color: white;

}
.threed-preactive .page-title .tag {
  z-index: 1000;
}

.page-title .tag:hover {
  background: var(--purple);
}

.page-title .livestream-start-tag {
  background: white;
  color: var(--black);
  right: 260px;
  transform: rotateZ(-2deg);
}
.page-title .livestream-start-tag:hover {
  background: var(--orange-light-selected);
}


@media all and (max-width: 1279px) {  
  .page-title .preorders-start-tag {
    right: 32px;
    top: 32px;
  }
  .page-title .livestream-start-tag {
    right: 240px;
    top: 32px;
  }
}
@media all and (max-width: 1023px) {  
  .page-title .tag {
    transform-origin: 100% 0;
    font-variation-settings: "wght" 500;
    letter-spacing: .03em;
  }
  .page-title .preorders-start-tag {
    transform-origin: 100% 0;
    transform: rotateZ(5deg) scale(.5);
    right: 10px;
  }
  .page-title .livestream-start-tag {
    transform: rotateZ(-2deg) scale(.5);
    right: 120px;
  }
}

/*.page-title .tag:hover {
  background: var(--orange-light-selected);
  color: white;
}*/

.page-title h1 {
  font-size: 56px;
  margin-bottom: .2em;

  color: white;

  -webkit-text-stroke: 1.5px white;

  /*text-shadow: 
    0 0 3px var(--dark-gray),
    0 0 5px var(--dark-gray),
    0 0 8px var(--dark-gray);*/

  text-shadow: 
    0 -2px 0 var(--page-title-shadow),
    1px -3px 0 var(--page-title-shadow),
    2px -4px 0 var(--page-title-shadow),
    3px -5px 0 var(--page-title-shadow),
    4px -6px 0 var(--page-title-shadow),
    5px -6px 0 var(--page-title-shadow),

    5px -5px 0 var(--page-title-shadow),
    6px -5px 0 var(--page-title-shadow),

    2px 0 0 var(--page-title-shadow),
    3px -1px 0 var(--page-title-shadow),
    4px -2px 0 var(--page-title-shadow),
    5px -3px 0 var(--page-title-shadow),
    6px -4px 0 var(--page-title-shadow);

/*  text-shadow: 
    -0.5px -0.5px 0 rgba(0, 0, 0, .25),
    0 0 0 rgba(0, 0, 0, .25),
    1px 1px 0 rgba(0, 0, 0, .25),
    2px 2px 0 rgba(0, 0, 0, .25),
    3px 3px 0 rgba(0, 0, 0, .25),
    4px 4px 0 rgba(0, 0, 0, .25),
    5px 5px 0 rgba(0, 0, 0, .25),
    6px 6px 0 rgba(0, 0, 0, .25);*/
}
.page-title h1:before {
  display: none;
}
.page-title h2 {
  font-size: 36px;
  margin: 0;

  color: var(--white);
  -webkit-text-stroke: .5px white;

  text-shadow: 3px -3px 0 var(--page-title-shadow);
}

@media all and (max-width: 1023px) {  
  .page-title h1 {
    font-size: 40px;
    -webkit-text-stroke: 0;
    padding-right: 0;
    line-height: 1.05;
  }
  .page-title h2 {
    font-size: 24px;
    -webkit-text-stroke: .4px white;
    padding-right: 0;
  }
}

/* Intro */

.intro-outside {
  padding-top: var(--unit8);
  overflow: visible;
}
.intro {
  /* width: 600px; */
  /* padding-right: 600px; */
  position: relative;
  /* display: flex; */
  /* z-index: 10; */
}
.intro .text {
  width: 660px;
  padding-right: 540px;
  /* z-index: 10; */
  /* font-size: 15.5px;  */
}
.intro .text-wide {
  width: 850px;
  padding-right: 350px;
  /* z-index: 10; */
}
.intro .text-wide p:first-of-type {
  margin-top: 1em;
}
.intro .book-static {
  display: none;
}
.intro .book-static.visible {
  display: block;
}
@media all and (min-width: 1024px) {  
  .intro .book-static {
    /* outline: 1px solid red; */
    /* display: block; */
    /* max-width: 300px; */
    position: absolute;
    top: -180px;
    right: 200px;
    /* top: 0; */
    z-index: 10000000;
    pointer-events: none;
  }
  .intro .book-static img {
    width: 300px;
  } 
}
@media all and (max-width: 1023px) {  
  .intro .book-static img {
    display: block;
    width: calc(100vw - 40px);
    max-width: 300px;
    margin: 0 auto;
    margin-top: -10px;
    margin-bottom: -20px;
  }
}
.intro .key {
  z-index: 0;
}

.intro h1 {
  width: 500px;
  color: var(--orange);
}
.intro h1:before {
  display: none;
}
/*.book-open-intro {
  width: 948px;
  top: -300px;
  right: -100px;
  position: absolute;
}*/

@media all and (max-width: 1023px) {  
  .intro-outside {
    padding-top: var(--unit4);
  }
  .intro .text,
  .intro .text-wide {
    width: 100%;
    padding: 0;
  }
}



#book-3d {
  /* outline: 3px solid black; */
}

#book-3d-container {
  z-index: 1000;
  position: absolute;
  top: -388px;
  right: -90px;
  width: 800px;
  height: 800px;
  opacity: 0;
  cursor: pointer;
  /* outline: 3px solid yellow; */
  /* outline: 1px solid green; */
}
#book-3d-container.loaded {
  opacity: 1;
  transition: opacity 1.5s .5s;
}
#book-3d-container .prompt {
  position: absolute;
  /* left: 225px; */
  right: 260px;
  /* outline: 1px solid red; */
  width: 13em;
  bottom: 80px;
  /* z-index: 0; */
  text-align: center;
  font-family: var(--output-sans);
  font-size: var(--output-sans-font-size);
  letter-spacing: var(--output-sans-letter-spacing);
  color: var(--gray-medium);
  z-index: -1;
  cursor: default;

  padding: .35em .75em .15em .75em;
  background: var(--orange);
  color: var(--white);
  border-radius: 8px;
  box-shadow: 8px -8px 0 var(--orange-light);
}
/*#book-3d-container:hover .prompt {
  background: var(--orange-light);
}*/
@media all and (max-width: 1279px) {  
  #book-3d-container .prompt {
    right: 120px;
    bottom: 110px;
    font-size: var(--output-sans-font-size-smaller);
    letter-spacing: var(--output-sans-letter-spacing-smaller);
  }
}


#book-3d-buttons {
  z-index: 100000;
  position: fixed;
  left: 0;
  top: 0;
  width: 100vw;
  height: 100vh;

  transform: scale(100%);

  transition: opacity 600ms, transform 600ms;
  transition-delay: 1200ms;

  pointer-events: none;

  user-select: none;
}
#book-3d-buttons.invisible {
  pointer-events: none;
  opacity: 0;
  overflow: hidden;
  
  transform: scale(120%);
  transition: opacity 600ms, transform 600ms;
  transition-delay: 0;
 
}
#book-3d-buttons * {
  pointer-events: auto;
}
#book-3d-buttons .left-arrow {
  left: 32px;
}
#book-3d-buttons .right-arrow {
  right: 32px;
}
#book-3d-button-close {
  position: absolute;
  top: 16px;
  right: 16px;
}
#book-3d-button-close:active {
  position: absolute !important;
  left: auto; 
  top: 12px !important;
  right: 12px !important;
}
#book-3d-button-close:hover {
  background: var(--orange-light-selected);
}

#book-3d-buttons .pagination {
  position: absolute;
  left: 0;
  top: 32px;
  right: 0;
  display: flex;
  justify-content: center;
}
#book-3d-buttons .pagination-title {
  position: absolute;
  left: 32px;
  bottom: 32px;
  right: 32px;
  display: flex;
  justify-content: center;
  text-align: center;

  font-family: var(--output-sans);
  font-size: var(--output-sans-font-size);
  letter-spacing: var(--output-sans-letter-spacing);
  color: var(--purple-bright);
}
#book-3d-buttons .pagination-title .key {
  border-color: var(--purple-bright);
  margin: 0 0.4em;
  padding-bottom: 0;
  line-height: .9;
}

#book-3d {
  z-index: 10000;
  overscroll-behavior: none;
  /* position: absolute; */
  /* left: 0; */
  /* top: 0; */
  /* position: fixed; */
  /* left: 0; */
  /* top: 0; */

  /* outline: 1px solid red; */
}
#book-3d.enlarged {
  /* cursor: grab; */
  cursor: move;
}
#book-3d.grabbing {
  cursor: grabbing !important;
}
#book-3d.click-available {
  cursor: pointer;
}

body.threed-active {
  overflow: hidden;
}


/*
.book-3d-renderer-canvas {
  width: 1000px;
  height: 750px;
  top: -218px;
  right: -200px;
  position: absolute;

  opacity: 0;
  transition: opacity 1000ms;
}
.book-3d-renderer-canvas.visible {
  opacity: 1;
}
*/

/* Chapters */

.chapters {
  /* outline: 1px solid blue; */
}
.chapters .volumes {
  display: flex;
  gap: var(--unit8);
}
.chapters .volume {
  width: calc((var(--main-page-width) - var(--unit8)) / 2);
}
.chapters .volume ol {
  counter-reset: section;
}
.chapters .volume-one ol {
  counter-reset: section 0;
}
.chapters .volume-two ol {
  counter-reset: section 21;
  margin-top: 5em;
}
@media all and (max-width: 1440px) {  
  ol li {
    padding-left: 3em;
  }
}

/*@media all and (max-width: 1279px) {  
  .chapters ol li:before {
    display: none;
  }
}*/
@media all and (max-width: 1023px) {  
  .chapters .volumes {
    display: block;
  }
  .chapters .volume {
    width: 100%;
  }
  ol li {
    padding-left: 2em;
  }
  .chapters ol li:before {
    display: block;
    margin-left: -2.5em;
  }
  .chapters ol li.hanging-quote:before {
    margin-left: -2em;
  }
  .chapters .volume-two ol {
    margin-top: 0;
  }
  h3 {
    margin-top: var(--unit4);
  }
}


.chapters .description {
  color: var(--orange);

  cursor: default;

  /* Prevent hanging quote */
  text-indent: 0;
  margin-left: 0;
}
.chapters .description .key {
  border-color: var(--orange);
}
.chapters .description:before {
  /* Prevent hanging quote */
  margin-left: -3.7em;
}
@media all and (max-width: 1023px) {  
  .chapters .description:before {
    margin-left: -2.5em;
  }
}


/* All slide decks */

.carousel-outside {
  overflow-y: hidden;
}

.carousel-container {
  display: flex;
  position: relative;
  overflow-x: visible;
  overflow-y: hidden;

  padding-left: 50px;
  margin-left: -50px;
  padding-right: 50px;
  margin-right: -50px;

  /* This container is here just to hide the scrollbar really */
  overflow: hidden; 

}

.carousel {
  white-space: nowrap;
  overflow-x: scroll;
  overflow-y: hidden;
  scroll-snap-type: x mandatory;
}
.carousel .image {
  cursor: pointer;
  scroll-snap-align: start;
  display: inline-block;
}

@media all and (max-width: 1023px) {  
  .carousel-container {
    margin-right: 0;
  }
}


/* Photo process */

.photo-process-outside {
  /* background: var(--gray-light) url(noise.png); */
}

.photo-process .carousel-container {
  height: 700px;
}

.photo-process .sidebar {
  width: 540px;
  padding-right: 60px;
  height: 700px;
  z-index: 100;

  display: flex;
  flex-direction: column;
}
@media all and (max-width: 1279px) {  
  .photo-process .sidebar {
    width: 390px;
    padding-right: 70px;
    height: 597px;
  }
}

.photo-process .text {
  flex-grow: 1;
}
.photo-process .pagination {
  flex-grow: 0;
  flex-shrink: 0;
}

.photo-process .carousel {
  width: 1200px;
  height: 700px;
  margin-left: -600px;

  position: relative;

  padding-bottom: 20px; /* Hide the scrollbar */

  /* background-size: 1200px 700px; */

}
@media all and (max-width: 1279px) {  
  .photo-process .carousel {
    width: 1024px;
    height: 597px;
    margin-left: -540px;

    background-size: 1024px 597px;
  }
}

.photo-process .image {
  width: 1200px;
  height: 700px;
  background-size: 1200px 700px;
}

.photo-process .left-arrow {
  left: 5px;
  z-index: 1000;
}
.photo-process .right-arrow {
  right: 5px;
  z-index: 1000;
}

/* Livestream */

.livestream-outside {
  background: var(--dark-gray);
  color: var(--gray-medium);
  -webkit-font-smoothing: antialiased;
}
.livestream .container {
  /* outline: 1px solid red; */
  display: flex;
  gap: var(--unit8);
}
@media all and (max-width: 1023px) {  
  .livestream .container {
    display: block;
  }
}

.livestream .container-text {
  display: flex;
  flex-direction: column;
  gap: var(--unit8);
}
.livestream .container-text-main {
  flex-grow: 1;
}
.livestream p {
  letter-spacing: .01em;
}
.livestream .poster-link {
  line-height: 0;
}
.livestream .poster {
  width: 600px;
  border-radius: 8px;
  box-shadow: 8px -8px 0 var(--purple-light);
}
@media all and (max-width: 1023px) {  
  .livestream .poster {
    margin-top: var(--unit4);
    width: 100%;
  }
}


/* Teaser */

.desktop-teaser-outside {
  background: var(--purple);
}
.desktop-teaser-outside h1 {
  color: var(--orange-light);
}
.desktop-teaser-outside p {
  color: var(--purple-bright);
}



/* Book design */

.book-design-outside {
  /* background: #2c293b; */
  background: var(--dark-gray);
  padding-bottom: 0;
}
@media all and (max-width: 1023px) {  
  .book-design-outside {
    background: var(--purple);
  }
  .book-design-outside h1 {
    color: var(--orange-light);
  }
}

.book-design .carousel-container {
  /* margin: 0 auto; */
  width: 800px;
  height: 800px;
  position: relative;
  padding-bottom: 201px;
}
.book-design .carousel {
  height: 800px;
  padding-bottom: calc(141px + 20px); /* 20px to hide the scrollbar */
}
.book-design .carousel .image {
  width: 800px;
  height: 800px;
  background-size: 100% 100%;
  background-position: 50% 0;
  background-repeat: no-repeat;

  /* outline: 5px solid red; */
}
.book-design .text {
  position: relative;

  font-family: var(--output-sans);
  font-size: var(--output-sans-font-size);
  letter-spacing: var(--output-sans-letter-spacing);
  display: inline-block;
  color: var(--purple-bright);
  position: relative;
  top: 32px;
  max-width: 800px;
}
.book-design .text .key {
  border-color: var(--purple-bright);
}
.book-design-bottom-row {
  position: relative;
  top: -150px;
}

.book-design .left-arrow {
  left: 0;
  top: calc(50% - 80px);
}
.book-design .right-arrow {
  right: 0;
  top: calc(50% - 80px);
}


@media all and (max-width: 1023px) {  
  .book-design .carousel-container {
    width: 100vw;
    height: 100vw;
    margin-left: -20px;
    /* margin-right: calc(-20px + -50px); */
    margin-right: 0;
    padding-right: 0;
    padding-left: 0;
    padding-bottom: 101px;
  }
  .book-design .carousel {
    height: 100vw;
    padding-bottom: calc(101px + 20px); /* 20px to hide the scrollbar */
  }
  .book-design .carousel .image {
    width: 100vw;
    height: 100vw;
  }
  .book-design-bottom-row {
    position: relative;
    top: -70px;
  }
  .book-design .text {
    top: 24px;
  }
}




/* Book open */

.book-open .carousel-container {
  /* width: var(--main-page-width);  */
  /* height: calc(var(--main-page-width) / 1200 * 940); */

  width: 1832px;
  height: calc(var(--main-page-width) / 1200 * 940);

  margin-top: -30px;
  
  margin-left: -326px;
  margin-right: -296px;
  padding: 0;
  margin-bottom: 0;
  z-index: 0;

  position: relative;
  padding-bottom: 121px;
}
.book-open .carousel {
  height: calc(var(--main-page-width) / 1200 * 940);
  padding-bottom: calc(121px + 20px); /* 20px to hide the scrollbar */
}
.book-open .carousel .image {
  width: 1832px;
  height: 1181px;

  background-size: 1832px 1181px;
  background-position: 50% 0;
  background-repeat: no-repeat;
}
@media all and (max-width: 1279px) {  
  .book-open .carousel-container {
    width: 1441px;

    margin-top: -50px;
    /* margin-bottom: calc(-1 * var(--unit10)); */

    margin-left: -258px;
    /* padding-left: 288px; */
    margin-right: -272px;
    /* padding-right: 272px; */

    padding-bottom: 121px;

  }
  .book-open .carousel {
    /* padding-bottom: 101px; */
    /* margin-bottom: -101px; */
 
    padding-bottom: calc(121px + 20px); /* 20px to hide the scrollbar */

  }

  .book-open .carousel .image {
    width: 1441px;
    height: 929px;
    background-size: 1441px 929px;
  }
}
@media all and (max-width: 1023px) {  
  .book-open .carousel-container {
    padding: 0;
    margin-top: 0;
    margin-bottom: 0;
    margin-bottom: -15vw;
    padding-bottom: 15vw;

    width: 100vw;
    height: calc(100vw / 1200 * 940);
    margin-left: -20px;
  }

  .book-open .carousel {
    padding-bottom: calc(121px + 20px); /* 20px to hide the scrollbar */
  }

  .book-open .carousel .image {
    background-size: 140vw;

    width: 100vw;
    height: 88.33vw;
    z-index: 100;
  }
}


.book-open .left-arrow {
  left: calc(-45px + 326px);
  top: calc(50% - 80px);
  /* z-index: 1000; */
  /* left: 500px; */
  /* left: 50%; */
}
.book-open .right-arrow {
  right: calc(-45px + 306px);
  top: calc(50% - 80px);
  /* left: 50%; */
}
@media all and (max-width: 1279px) {  
  .book-open .left-arrow {
    left: calc(-45px + 256px);
  }
  .book-open .right-arrow {
    right: calc(-45px + 246px);
  }
}
@media all and (max-width: 1023px) {  
  .book-open .left-arrow,
  .book-open .right-arrow {
    display: none;
  }
}


.book-open-bottom-row {
  display: flex;
  /* height: 8px; */
  margin-top: -131px;
}
.book-open-bottom-row .text {
  font-family: var(--output-sans);
  font-size: var(--output-sans-font-size);
  letter-spacing: var(--output-sans-letter-spacing);
  display: inline-block;
  position: relative;
  top: -8px;
  margin-left: 12px;
  height: 8px;
}

@media all and (max-width: 1279px) {  
  .book-open-bottom-row {
    margin-top: -111px;
  }
}

@media all and (max-width: 1023px) {  
  .book-open-bottom-row {
    display: block;
    padding-top: 20px;
  }
  .book-open-bottom-row .pagination {
    display: inline-block;
    margin: 0 auto;
  }
  .book-open-bottom-row .text {
    line-height: 1.2;
    top: 12px;
    height: auto;
    margin-left: 0;
    margin-top: 10px;
    margin-bottom: 10px;
  }
}



/* Typograph */

.typograph-outside {
  /* background: var(--gray-light) url(noise.png); */
}

.typograph-split {
  display: flex;
  gap: var(--unit32);
}
@media all and (max-width: 1279px) {  
  .typograph-split {
    gap: 32px;
  }
}
.typograph-sidebar-wrapper {
  flex-grow: 0;
}
.typograph-info-wrapper {
  /* outline: 1px solid green; */
  flex-shrink: 0;
  flex-grow: 1;
  position: relative;
  width: 620px;
  /* height: 790px; */
  /* margin-top: -200px; */
}


.typograph .textarea-wrapper {
  display: block;
  box-sizing: border-box;
  width: 100%;
  height: 22.2em;
}
.typograph-typing {
  font-family: Typograph;
  font-size: 56px;
  line-height: 1.0;
  letter-spacing: 0;
  /* text-transform: uppercase; */
}
.typograph-typing::placeholder {
  font-family: var(--output-sans);
  font-size: var(--output-sans-font-size);
  letter-spacing: var(--output-sans-letter-spacing);
  line-height: 1.4;
}
.typograph-info {
  width: 800px;
  padding-right: 400px;
}



.typograph-visual {
  width: 543px;
  height: 384px;
  background: url(images/typograph/bk.png);
  background-size: 100%;
  position: relative;

  margin-top: -100px;
  margin-left: 50px;
  z-index: 1;
}

.typograph-visual > * {
  position: absolute;
  left: 0;
  top: 0;
  width: 543px;
  height: 384px;
  background-size: 100%;
}
.typograph-visual .cover {
  background-image: url(images/typograph/cover.png);
  z-index: 100;
}
.typograph-visual .left {
  background-image: url(images/typograph/key3.png);
}
.typograph-visual .top-v {
  background-image: url(images/typograph/key5.png);
}
.typograph-visual .right {
  background-image: url(images/typograph/key1.png);
}
.typograph-visual .bottom {
  background-image: url(images/typograph/key6.png);
}
.typograph-visual .bottom-v {
  background-image: url(images/typograph/key2.png);
}
.typograph-visual .top {
  background-image: url(images/typograph/key4.png);
}

.typograph-visual.left-pressed .left,
.typograph-visual.top-pressed .top,
.typograph-visual.top-v-pressed .top-v,
.typograph-visual.right-pressed .right,
.typograph-visual.bottom-pressed .bottom,
.typograph-visual.bottom-v-pressed .bottom-v {
  /* background: black; */
  transform: translateX(10px);
}

.typograph .hints {
  margin-top: 20px;
  transition: opacity 100ms;
}
.typograph .hints table {
  border-spacing: 0;
  border-collapse: collapse;
}
.typograph .hints thead td {
  padding-bottom: var(--unit2);
}


.typograph .hints td {
  line-height: 130%;
  text-align: center;
  vertical-align: center;
  border-bottom: 1px solid var(--gray-medium);
}

.typograph .hints .example {
  margin-left: var(--unit2);
  margin-right: var(--unit6);
  /* line-height: 0; */
}
@media all and (max-width: 1279px) {  
  .typograph .hints .example {
    margin-right: var(--unit2);
  }
}

.typograph .segmented {
  font-family: Typograph;
  font-size: 40px;
  line-height: 20px;
  /* margin-bottom: -4px; */
  letter-spacing: 0;
  /* color: var(--orange); */
  text-align: center;
}

.typograph .hints .roman-letter {
  /* color: var(--orange); */
}
.typograph .hints .shadow {
  color: var(--gray-medium);
}
.typograph .hints .empty,
.typograph .hints .selected {
  width: 1.73em;
}
.typograph .hints .empty:before {
  content: '';
  display: inline-block;
  background: var(--gray-medium);
  border-radius: 999px;
  position: relative;
  top: -3px;
  height: 8px;
  width: 8px;
}
.typograph .hints .selected:before {
  content: '';
  display: inline-block;
  background: var(--black);
  border-radius: 999px;
  position: relative;
  top: -3px;
  height: 8px;
  width: 24px;
}

.typograph[data-mode="expert"] .hints {
  opacity: 0;
}

.typograph .instructions .segmented {
  line-height: 0;
}
.typograph .instructions .warning {
  color: var(--orange);
  font-variation-settings: "wght" 500;
}
.typograph .instructions .warning .key {
  border-color: var(--orange);
}

.typograph .instructions {
  display: none;
}
.typograph[data-mode="practice"] .instructions[data-mode="practice"],
.typograph[data-mode="easy"] .instructions[data-mode="easy"],
.typograph[data-mode="normal"] .instructions[data-mode="normal"],
.typograph[data-mode="expert"] .instructions[data-mode="expert"] {
  display: block;
}


/* Draw keyboard */

.draw-keyboard-outside {
  background: var(--gray-light) url(noise.png);
}

.draw-keyboard:not(.state-game-running) .landing, 
.draw-keyboard:not(.state-game-running) .game-stats {
  display: none;
}
.draw-keyboard.state-game-running .game-setup {
  display: none;
}

.draw-keyboard .game-setup {
  text-align: center;
  margin-bottom: var(--unit8);
}
.draw-keyboard .game-setup .instructions {
  margin-top: var(--unit4);
  margin-bottom: var(--unit6);
}

.draw-keyboard .layout-select-wrapper {
  max-width: 100%;
  overflow-x: auto;
  overflow-y: none;
}
.draw-keyboard .layout-select {
  white-space: nowrap;
}



.draw-keyboard .game-stats {
  /* width: 600px; */
  /* margin: 0 auto; */
  /* display: flex; */
  /* flex-grow: 1; */
  /* outline: 1px solid red; */
  /* column-gap: var(--unit16); */
  display: flex;
  justify-content: center;
  margin-top: var(--unit4);
  /* margin-bottom: var(--unit1); */
}
.draw-keyboard .game-stats ul {
  padding: 0;
  margin: 0;
  list-style: none;
  /* outline: 1px solid blue; */
  
  display: flex;
  text-align: center;
  /* flex-wrap: wrap; */
  /* align-items: left; */
  justify-content: flex-start;
  margin-bottom: calc(var(--unit1));
}
.draw-keyboard .game-stats li {
  padding: 0;
  margin: 0;
  list-style: none;

  /* outline: 1px solid red; */

  width: 200px;
  /* flex-grow: 1; */
  /* row-gap: var(--unit16); */
  margin-bottom: var(--unit4);
}
.draw-keyboard .game-stats li:before {
  display: none;
}



.draw-keyboard .game-stats .text {
  font-family: var(--output-sans);
  font-size: var(--output-sans-font-size);
  letter-spacing: var(--output-sans-letter-spacing);
  line-height: 160%;
  /* margin-top: 1em; */
  display: block;
}

.draw-keyboard .game-stats .number {
  /* color: red; */
  font-family: var(--gorton);
  font-size: 36px;
  line-height: 80%;
  margin-left: -.05em; /* Sidebearings correction */

  font-feature-settings: "ss06" on; /* Dotted zero */

  color: var(--orange);

}


.draw-keyboard .keyboard-outside {
  margin-top: var(--unit4);
  display: flex;
  flex-direction: column;
  /* justify-content: center; */
  align-items: center;
  /* min-width: 1em; */
  /* outline: 1px solid blue; */
}

.draw-keyboard .keyboard {
  display: inline-block;
}

.draw-keyboard .keyboard .row {
  /* display: flex; */
  min-height: 44px;
}

.draw-keyboard .draw-key {
  font-family: var(--output-sans);
  font-size: 80%;
  letter-spacing: .01em;
  font-variation-settings: "wght" 540;
  font-feature-settings: "zero" on; /* Nice fat I */

  display: inline-flex;
  flex-direction: column;
  gap: 5px;

  align-items: center;
  justify-content: center;
  vertical-align: top;

  border-radius: 8px;
  border: 2.5px solid black;
  padding: .45em .45em .15em;
  line-height: .8;
  z-index: 1000;

  box-sizing: border-box;
  overflow: hidden;

  height: 42px;
  width: 42px;
  margin-right: 4px;
  margin-bottom: 4px;

  background: var(--white);

  user-select: none;

  /* transition: background-color 100ms, border-color 100ms; */
}
.draw-keyboard .draw-key.overlap-with-previous { margin-left: -46px; }
.draw-keyboard .draw-key.shift-half-down { margin-top: 22px; }

.draw-keyboard .draw-key span {
  display: inline-block;
}

/*.draw-keyboard .draw-key.spring-animating {
  z-index: 100000;
}*/

.draw-keyboard .draw-key.smaller span {
  font-size: 80%;
  letter-spacing: .02em;
  font-variation-settings: "wght" 580;
  line-height: 1;
}

.draw-keyboard .draw-key.font-petscii {
  font-family: C64PETSCII;
  font-size: 60%;
  line-height: 100%;
  /* position: relative; */
  /* top: -.2em; */
  padding-bottom: .3em;
}

.draw-keyboard .draw-key.unguessed {
  /* background: var(--gray-light); */
  border-color: var(--gray-medium);
}
.draw-keyboard .draw-key.unguessed > span {
  color: transparent !important;
}
.draw-keyboard .draw-key.unguessed.hovered {
  background: var(--orange);
  border-color: var(--orange);
}
.draw-keyboard:not(.state-game-running) .draw-key.unguessed {
  border-color: var(--black);
}
.draw-keyboard .draw-key.wrong {
  background: var(--white);
  border-color: var(--red);
}

.draw-keyboard:not(.state-game-running) .draw-key {
  border-color: var(--gray-medium);
}

.draw-key-draggable {
  cursor: grab;
}
.draw-key-draggable.dragging { 
  position: absolute;
  cursor: grabbing;
  /* box-shadow: 3px -3px 0 red; */
  z-index: 100;

  opacity: .75;
}

.draw-keyboard .landing,
.draw-keyboard .congrats {
  width: 100px;
  height: 83px;
  margin: 0 auto var(--unit6);
  text-align: center;
  padding: var(--unit2) var(--unit2) var(--unit1);
  background: var(--orange);
  border-radius: 8px;
}
.draw-keyboard .congrats {
  color: var(--white);
  width: 500px;
  
  display: none;
}
.draw-keyboard .landing .key-space {
  height: 46px;
}

.draw-keyboard .landing .prompt {
  font-family: var(--output-sans);
  font-size: 12px;
  line-height: 140%;
  margin-top: .5em;
  letter-spacing: .04em;
  font-variation-settings: "wght" 500;
  color: var(--white);

  user-select: none;
}

.draw-keyboard.state-congrats .landing {
  display: none;
}
.draw-keyboard.state-congrats .congrats {
  display: flex;
  align-items: center;
  justify-content: center;
}


/* Eliza */

.eliza-outside {
  background: var(--gray-light) url(noise.png);
}

.eliza .eliza-contents {
  width: 1200px;
  /* outline: 1px solid red; */
  display: flex;
  gap: var(--unit4);

}


.eliza .eliza-chat-outside {
  /* outline: 1px solid blue; */
  width: 800px;
  height: 400px;
  overflow-x: hidden;
  overflow-y: overlay;
}

.eliza .eliza-chat {
  width: 800px;
  min-height: 400px;

  background: var(--white);
  padding: 0 var(--unit2);
  box-sizing: border-box;

  display: flex;
  flex-direction: column;
  justify-content: flex-end;
}

.eliza .eliza-tools {
  width: 800px;
  display: flex;
  justify-content: flex-end;
  box-sizing: border-box;
  padding: 0 var(--unit2) var(--unit2);

  background: var(--white);
}

.eliza .you {
  width: 400px;
  box-shadow: 4px -4px 0 var(--black);
  outline: none;
}
.eliza .you.hidden {
  display: none;
}


.eliza .bubble,
.eliza .you {
  font-family: var(--output-sans);
  font-size: var(--output-sans-font-size);
  letter-spacing: var(--output-sans-letter-spacing);
  line-height: 140%;
  margin-top: 1em;
  border-radius: 8px;

  padding: .6em .8em .4em;  
}

.eliza .bubble {
  background: var(--gray-light);
  color: var(--black);
  display: inline-block;
  font-feature-settings: "ss01" on;

  max-width: 600px;
}
.eliza .bubble.human {
  background: var(--orange);
  color: var(--white);
}

.eliza .bubble .letter {
  display: inline-block;
  transform-origin: 50% 75%;
}

.eliza .row.second {
  display: flex;
  justify-content: flex-end;
}
.eliza .row.second .bubble {
  text-align: right;
}

.eliza .cursor {
  width: 2px;
  height: 1.5em;
  margin-top: -1.15em;
  margin-bottom: -.35em;
  background: var(--orange);
  display: inline-block;
  line-height: 0;
}


.eliza .settings {
  /* width: 350px; */
  flex-grow: 1;
  /* outline: 1px solid green; */

  font-family: var(--output-sans);
  font-size: var(--output-sans-font-size-smaller);
  letter-spacing: var(--output-sans-letter-spacing-smaller);
}

.eliza .settings select {
  width: 100%;
  margin-left: -8px;
  margin-right: -8px;
}
.eliza .settings .description {
  margin-top: var(--unit2);
  margin-bottom: var(--unit4);
}

/* About me and my book */
/* Press */


.about-me-my-book-outside {
  overflow: hidden;
}


.press-outside {
  background: var(--gray-light) url(noise.png);
  overflow: hidden;
}



.about-me-my-book ul.grid,
.press-outside ul.grid {
  padding: 0;
  margin: 0;
  list-style: none;
  /* outline: 1px solid blue; */
  
  display: flex;
  flex-wrap: wrap;
  /* justify-content: space-between; */
  gap: 40px;
  flex-grow: 0;
  margin-top: var(--unit8);
  margin-bottom: calc(-1 * var(--unit16));
}
.about-me-my-book ul.grid.small,
.press-outside ul.grid.small {
  margin-top: var(--unit32);
}

@media all and (max-width: 1023px) {  
  .about-me-my-book ul.grid.small,
  .press-outside ul.grid.small {
    margin-top: var(--unit8);
    gap: 0 40px;
  }
}



.about-me-my-book ul.grid li,
.press-outside ul.grid li {
  padding: 0;
  margin: 0;
  list-style: none;

 
  width: 540px;
  margin-bottom: var(--unit16);
}
.press-outside ul.grid li {
  display: flex;
  flex-direction: column;
}
.about-me-my-book ul.grid.small li,
.press-outside ul.grid.small li {
  width: 270px;
}

.about-me-my-book ul.grid .description,
.press-outside ul.grid .description {
  flex-grow: 1;
}


.about-me-my-book img,
.press-outside img {
  width: 540px;
  height: 300px;

  border: 1px solid var(--black);

  background: var(--orange);
  margin-top: var(--unit4);
  border-radius: 8px;
  box-shadow: 8px -8px 0 var(--black);
}

@media all and (max-width: 1023px) {  
  .about-me-my-book img,
  .press-outside img {
    width: calc(100vw - 40px);
    height: calc((100vw - 40px) * 300 / 540);
  }
}

.keycap img {
  width: 800px;
  margin-top: 32px;
  margin-bottom: 32px;
}
.keycap img:first-child {
  margin-top: 0;
}

@media all and (max-width: 1023px) {  
  .keycap img {
    width: calc(100vw - 40px);
  }
}


.about-me-my-book ul.small img,
.press-outside ul.small img {
  width: 270px;
  height: 202px;
  margin-top: 0;
}

.about-me-my-book a.video,
.press-outside a.video,
.press-outside a.article {
  position: relative;
  width: 270px;
  height: 202px;
  display: inline-block;
  margin-top: var(--unit4);
}
.about-me-my-book a.video:after,
.press-outside a.video:after {
  content: '';
  position: absolute;
  left: 0;
  top: 0;
  width: 100%;
  height: 100%;
  z-index: 100;

  background: url(images/play-overlay.png);
  background-size: 270px 202px;
  /* outline: 1px solid red; */
}

.metadata {
  display: block;
  font-family: var(--output-sans);
  font-size: var(--output-sans-font-size-smaller);
  letter-spacing: var(--output-sans-letter-spacing-smaller);
  line-height: 140%;
  margin-top: 1em;

  /* color: var(--gray-medium); */
}

/* Stats */

.stats-outside {
  background: var(--gray-light) url(noise.png);
}

.stats ul {
  padding: 0;
  margin: 0;
  list-style: none;
  /* outline: 1px solid blue; */
  
  display: flex;
  flex-wrap: wrap;
  justify-content: space-between;
  margin-bottom: calc(-1 * var(--unit16));
}
.stats li {
  padding: 0;
  margin: 0;
  list-style: none;

  width: 256px;
  /* column-gap: var(--unit16); */
  /* row-gap: var(--unit16); */
  margin-bottom: var(--unit16);
}
@media all and (max-width: 1279px) {  
  .stats li {
    width: 236px;
  }
}
@media all and (max-width: 1023px) {  
  .stats ul {
    margin-right: calc(-1 * var(--unit2));
    margin-bottom: calc(-1 * var(--unit4));
  }
  .stats li {
    width: 50%;
    box-sizing: border-box;
    padding-right: var(--unit2);
    margin-bottom: var(--unit4);
  }
}

.stats li:before {
  display: none;
}

.stats .number {
  font-family: var(--gorton);
  font-size: 56px;
  line-height: 80%;
  margin-left: -.05em; /* Sidebearings correction */

  font-feature-settings: "ss06" on; /* Dotted zero */

  color: var(--orange);
}
.stats .text {
  font-family: var(--output-sans);
  font-size: var(--output-sans-font-size);
  letter-spacing: var(--output-sans-letter-spacing);
  line-height: 140%;
  margin-top: 1em;
}


@media all and (max-width: 1023px) {  
  .stats .number {
    font-size: 30px;
  }
}

.hint {
  font-family: var(--output-sans);
  font-size: var(--output-sans-font-size-smaller);
  letter-spacing: var(--output-sans-letter-spacing-smaller);
  margin-bottom: calc(-1 * var(--unit4)) !important;
  margin-top: var(--unit8);
  color: var(--orange);
  font-variation-settings: "wght" 450;
}
.asterisk {
  color: var(--orange);
  font-variation-settings: "wght" 600;
}



/* Footer */

.footer-outside {
  background: var(--purple);
  color: var(--white);

  padding: var(--unit6) 0 var(--unit6);

  /* position: relative; */
  /* overflow-y: visible; */

}
.footer {
  color: rgba(255, 255, 255, .3);
  font-family: var(--output-sans);
  font-size: var(--output-sans-font-size-smaller);
  letter-spacing: var(--output-sans-letter-spacing-smaller);
}

.spines {
  /* width: 600px; */
  height: 573px;
  margin-top: -542px;
  z-index: 1000;
  /* bottom: 0; */
  position: absolute;
  pointer-events: none;
  /* z-index: 100000; */
  /* right: calc(-380px + (100vw - var(--main-page-width)) / 2); */
  /* outline: 1px solid red; */
  left: calc(50% + var(--main-page-width) / 2 - 220px);
  /* right: 100vw; */
  right: 0;

  background: url(images/spines3-small.png);
  background-size: 600px 573px;
  background-position: 0 0;
  background-repeat: no-repeat;
}
@media all and (max-width: 1279px) {  
  .spines {
    display: none;
  }
}

/* Subscribe */

.kickstarter-outside {
  background: var(--orange);
  color: white;
  padding: var(--unit8) 0;
}
@media all and (max-width: 1023px) {  
  .kickstarter-outside {
    padding: var(--unit6) 0;
  }
}

.kickstarter {
  font-family: var(--output-sans);
  font-size: var(--output-sans-font-size);
  letter-spacing: var(--output-sans-letter-spacing);
  line-height: 140%;
  font-variation-settings: "wght" 400;
}

.kickstarter-outside-below {
  background: var(--black);
}


/* Subscribe */

.subscribe-outside {
  background: var(--gray-light) url(noise.png);
  padding: var(--unit8) 0;
}

.subscribe {
  font-family: var(--output-sans);
  font-size: var(--output-sans-font-size);
  letter-spacing: var(--output-sans-letter-spacing);
  line-height: 140%;
  font-variation-settings: "wght" 500;
}
.subscribe input[type="email"] {
  margin-bottom: -50px;
  width: 18em;
  margin-right: 16px;
}
.subscribe div:not(:last-child) {
  margin-bottom: 1em;
}
.subscribe-field-button {
  display: inline-block;
  /* margin-top: 20px; */
}

@media all and (max-width: 1279px) {  
  .subscribe-field-button {
    margin-top: 20px;
  }
}

@media all and (max-width: 1023px) {  
  .subscribe-outside {
    padding: var(--unit4) 0;
  }
  .subscribe-field-button {
    display: block;
    margin-top: 20px;
  }
  .subscribe input[type="email"] {
    margin-bottom: 0;
  }
  input[type="submit"] {
    margin: 20px 0;
  }
}


.people-helping-outside {
  background: var(--gray-light) url(noise.png);
}



/* Guess the shorcut */

.guess-the-shortcut-outside {
  /* background: var(--gray-light) url(noise.png); */
}
.guess-the-shortcut {
  width: 900px;
  padding-right: 300px;
}
.guess-the-shortcut-list {
  margin-bottom: 60px;
}
.guess-the-shortcut-list li {
  user-select: none;
}


.guess-the-shortcut .guessed {
  /* color: var(--orange); */
}
.guess-the-shortcut .guessed > span {
  background: var(--orange);
  color: var(--white);
  padding: .3em .5em .35em;
  border-radius: 8px;
}
.guess-the-shortcut .guessed .key {
  border-color: var(--white);
  /* position: relative; */
  /* top: -3px; */
} 

.guess-the-shortcut .cursor {
  width: 2px;
  height: 1.5em;
  margin-top: -1.15em;
  margin-bottom: -.35em;
  background: var(--orange);
  display: inline-block;
  line-height: 0;
}

@media all and (max-width: 1279px) {  
  .guess-the-shortcut {
    width: var(--main-page-width);
    padding-right: 0;
  }
}

@media all and (max-width: 1023px) {  
  .guess-the-shortcut {
    width: var(--main-page-width);
    padding-right: 0;
  }
  .guess-the-shortcut-list {
    margin-bottom: 40px;
  }
  .guess-the-shortcut ol li::before {
    padding-left: 1em;
  }
  .chapters ol li:before {
    display: block;
    margin-left: -2.5em;
  }


}






/* Dvorak hands */

.dvorak-hands-outside {
  background: var(--gray-light) url(noise.png);
}


.dvorak-hands {
}

.dvorak-hands-split {
  display: flex;
  gap: var(--unit32);

}

.dvorak-hands-sidebar-wrapper {
  flex-grow: 1;
  /* outline: 1px solid blue; */
}

.dvorak-hands .textarea-wrapper {
  display: block;
  box-sizing: border-box;
  width: 100%;
  height: 12.7em;
}

.dvorak-hands .textarea-typing-prompt {
  font-family: var(--output-sans);
  font-size: var(--output-sans-font-size-smaller);
  letter-spacing: var(--output-sans-letter-spacing-smaller);
  line-height: 140%;
  padding: var(--unit2);

  display: flex;
  align-items: flex-end;

  position: absolute;
  width: calc(100% - 6px);
  height: 50%;
  box-sizing: border-box;
  z-index: 1;
  /* pointer-events: none; */
  left: 3px;
  top: 3px;

  color: white;
  font-variation-settings: "wght" 500;
  /* transform: translate(0, calc(100% + 100px)); */
  transform: translate(0, calc(175%)); 
  transition: transform 150ms;
  pointer-events: none;
}

.dvorak-hands-fill-random {
  /* cursor: default; */
  /* text-decoration: underline; */
}
.dvorak-hands-fill-random:hover {
  color: var(--orange-light);
}

.dvorak-hands .textarea-wrapper.show-typing-prompt .textarea-typing-prompt {
  transition: transform 300ms;
  transform: translate(0, calc(100%));
  pointer-events: auto;
}


.dvorak-hands-visual-wrapper {
  /* outline: 1px solid green; */
  flex-shrink: 0;
  flex-grow: 0;
  position: relative;
  width: 620px;
  height: 790px;
  margin-top: -200px;
}

.dvorak-hands-visual {
  z-index: 100;
}

.dvorak-hands-visual path.hand-outline {
  fill: transparent;
  stroke: var(--orange);
  stroke-width: 3px;
  stroke-linejoin: round;
  stroke-linecap: round;

}
.dvorak-hands-visual path.hand-fill {
  fill: white;
  /* opacity: .5; */
}
.dvorak-hands-visual path.hand-extrusion {
  fill: var(--orange-light);
  stroke: var(--orange);
  stroke-width: 3px;
  stroke-linejoin: round;
}
.dvorak-hands-visual-wrapper .finger-percentage {
  font-family: var(--output-sans);
  font-size: 12px;
  letter-spacing: .04em;

  font-weight: 500;
  text-align: center;
  width: 48px;
  padding-top: 20px;
  position: absolute;
  left: 0;
  top: 0;
}
.dvorak-hands-visual-wrapper .hand-percentage {
  font-family: var(--output-sans);
  font-size: 12px;
  letter-spacing: .04em;

  font-weight: 500;
  text-align: center;
  width: 48px;
  padding-top: 20px;
  position: absolute;
  left: 0;
  top: 0;
}

.dvorak-tools {
  display: inline-block;
  margin-top: var(--unit4);
  font-family: var(--output-sans);
  font-size: var(--output-sans-font-size-smaller);
  letter-spacing: var(--output-sans-letter-spacing-smaller);
  line-height: 200%;
  /* white-space: nowrap; */
}

.dvorak-tools .detected-keyboard.hidden {
  display: none;
}



@font-face {
  font-family: OutputSans;
  src: url(fonts/OutputSans2Beta-Regular.woff2);
}
@font-face {
  font-family: Mercury;
  src: url(fonts/MercuryTextG3-Roman.woff2);
}
@font-face {
  font-family: Mercury;
  font-style: italic;
  src: url(fonts/MercuryTextG3-Italic.woff2);
}
@font-face {
  font-family: GortonRegular;
  src: url(fonts/Gorton.woff2);
}
@font-face {
  font-family: Typograph;
  src: url(fonts/Typograph.woff2);
}
@font-face {
  font-family: C64PETSCII;
  src: url(fonts/C64_Pro_Mono-STYLE.woff2);
}
