:root {
  --blanket: #2e2f1e;
  --blanket-deep: #222316;
  --paper: #e9dcbf;
  --paper-hi: #f1e8d2;
  --bone: #ece4cd;
  --ink: #1f1b14;
  --red: #a9321f;
  --red-deep: #8e2616;
  --ochre: #c99c4f;
  --olive: #4b4d2b;
  --black: #0d0e09;
  --sans: "Archivo", "Segoe UI", system-ui, sans-serif;
  --serif: "Source Serif 4", Georgia, "Times New Roman", serif;
  --type: "Special Elite", "Courier New", monospace;
  --stencil: "Big Shoulders Stencil Display", "Archivo", sans-serif;
  --halftone: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='6' height='6'%3E%3Ccircle cx='1.5' cy='1.5' r='1.1' fill='%23000'/%3E%3Ccircle cx='4.5' cy='4.5' r='1.1' fill='%23000'/%3E%3C/svg%3E");
  --target-ring: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='48' height='48' viewBox='0 0 48 48'%3E%3Cg fill='none'%3E%3Ccircle cx='24' cy='24' r='20' stroke='%231f1b14' stroke-width='6.5'/%3E%3Ccircle cx='24' cy='24' r='20' stroke='%23e8432b' stroke-width='3.5'/%3E%3Ccircle cx='24' cy='24' r='12' stroke='%231f1b14' stroke-width='6.5'/%3E%3Ccircle cx='24' cy='24' r='12' stroke='%23f4ead2' stroke-width='3.5'/%3E%3C/g%3E%3Ccircle cx='24' cy='24' r='5' fill='%23e8432b' stroke='%231f1b14' stroke-width='2'/%3E%3C/svg%3E");
  --bullseye: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='40' height='40' viewBox='0 0 40 40'%3E%3Ccircle cx='20' cy='20' r='19' fill='%23f1e8d2'/%3E%3Ccircle cx='20' cy='20' r='14' fill='%23a9321f'/%3E%3Ccircle cx='20' cy='20' r='9' fill='%23f1e8d2'/%3E%3Ccircle cx='20' cy='20' r='4.5' fill='%23a9321f'/%3E%3C/svg%3E");
}

* {
  box-sizing: border-box;
  margin: 0;
  padding: 0;
}

html {
  scroll-behavior: smooth;
}

body {
  background: var(--blanket) url("journal/blanket.jpg") repeat;
  background-size: 512px 512px;
  color: var(--bone);
  font-family: var(--serif);
  font-size: 19px;
  line-height: 1.55;
  overflow-x: hidden;
}

::selection {
  background: var(--red);
  color: var(--paper-hi);
}

img {
  display: block;
  max-width: 100%;
  height: auto;
}

a {
  color: inherit;
}

:focus-visible {
  outline: 3px solid var(--ochre);
  outline-offset: 4px;
}

.sr-only {
  position: absolute;
  width: 1px;
  height: 1px;
  overflow: hidden;
  clip: rect(0 0 0 0);
  white-space: nowrap;
}

section {
  scroll-margin-top: 10px;
}

.worn {
  -webkit-mask-image: url("journal/grunge-light.png");
  mask-image: url("journal/grunge-light.png");
  -webkit-mask-size: 300px 300px;
  mask-size: 300px 300px;
}

.stamp-btn {
  position: relative;
  isolation: isolate;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  font-family: var(--stencil);
  font-weight: 800;
  font-size: 24px;
  line-height: 1;
  letter-spacing: 0.07em;
  text-transform: uppercase;
  text-decoration: none;
  color: var(--bone);
  background: none;
  border: none;
  padding: 15px 22px 12px;
  cursor: pointer;
  transform: rotate(-1.2deg);
  transition: transform 0.14s ease;
}

.stamp-btn::before {
  content: "";
  position: absolute;
  inset: 0;
  z-index: -1;
  border: 4px solid currentColor;
  background: var(--fill, transparent);
  -webkit-mask-image: url("journal/grunge-light.png");
  mask-image: url("journal/grunge-light.png");
  -webkit-mask-size: 240px 240px;
  mask-size: 240px 240px;
}

.stamp-btn:hover {
  transform: rotate(-1.2deg) scale(1.05);
}

.stamp-btn:active {
  transform: rotate(-1.2deg) scale(0.95);
}

.stamp-btn:disabled {
  opacity: 0.4;
  cursor: default;
  transform: rotate(-1.2deg);
}

.stamp-solid {
  --fill: var(--red);
  color: var(--paper-hi);
}

.stamp-solid::before {
  border-color: var(--red);
}

.stamp-ink {
  --fill: var(--ink);
  color: var(--paper-hi);
}

.stamp-ink::before {
  border-color: var(--ink);
}

.stamp-ink-line {
  color: var(--ink);
}

.sheet {
  position: relative;
  color: var(--ink);
  background: url("paper/poster.webp") center / 100% 100% no-repeat;
}

.halftone {
  position: absolute;
  inset: 0;
  pointer-events: none;
  background-image: var(--halftone);
  background-size: 6px 6px;
  mix-blend-mode: multiply;
  opacity: 0.16;
}

.tack {
  position: absolute;
  z-index: 4;
  width: 22px;
  height: 22px;
  border-radius: 50%;
  background: #9b2a1b;
}

.tack::before {
  content: "";
  position: absolute;
  left: 5px;
  top: 4px;
  width: 8px;
  height: 5px;
  border-radius: 50%;
  background: rgba(255, 226, 204, 0.6);
}

.tack::after {
  content: "";
  position: absolute;
  left: 4px;
  top: 5px;
  width: 22px;
  height: 22px;
  border-radius: 50%;
  background: rgba(10, 10, 6, 0.35);
  z-index: -1;
}

.tack-tl {
  left: 16px;
  top: 16px;
}

.tack-tr {
  right: 16px;
  top: 16px;
}

.tack-bl {
  left: 18px;
  bottom: 18px;
}

.tack-br {
  right: 18px;
  bottom: 18px;
}

.top {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 24px;
  padding: 14px 28px;
  background: rgba(16, 17, 10, 0.55);
  border-bottom: 2px dashed rgba(236, 228, 205, 0.28);
}

.brand {
  font-family: var(--stencil);
  font-weight: 800;
  font-size: 34px;
  line-height: 1;
  letter-spacing: 0.04em;
  color: var(--bone);
  text-decoration: none;
  white-space: nowrap;
  -webkit-mask-image: url("journal/grunge-light.png");
  mask-image: url("journal/grunge-light.png");
  -webkit-mask-size: 260px 260px;
  mask-size: 260px 260px;
}

.nav {
  display: flex;
  align-items: center;
  gap: 26px;
}

.nav a {
  font-family: var(--type);
  font-size: 18px;
  text-decoration: none;
  padding: 4px 0;
  border-bottom: 2px solid transparent;
}

.nav a:hover {
  border-bottom-color: var(--red);
}

.nav .nav-x {
  font-family: var(--stencil);
  font-weight: 800;
  font-size: 22px;
  color: var(--paper-hi);
  background: var(--red);
  padding: 6px 14px 3px;
  border: none;
  transform: rotate(-3deg);
}

.nav .nav-x:hover {
  background: var(--red-deep);
}

.hero {
  padding: 22px 28px 84px;
}

.hero-sheet {
  max-width: 1260px;
  margin: 0 auto;
  padding: 24px 52px 40px;
  transform: rotate(-0.45deg);
}

.sheet-top {
  display: flex;
  justify-content: space-between;
  gap: 16px;
  font-family: var(--type);
  font-size: 17px;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  border-bottom: 4px double var(--ink);
  padding: 0 6px 12px;
  margin-bottom: 22px;
}

.hero-grid {
  display: grid;
  grid-template-columns: minmax(0, 0.86fr) minmax(0, 1.14fr);
  gap: 52px;
  align-items: center;
}

.plate {
  width: min(100%, calc((100svh - 300px) * 0.8));
  min-width: min(100%, 360px);
  justify-self: center;
  transform: rotate(0.6deg);
}

.plate-frame {
  position: relative;
  aspect-ratio: 4 / 5;
  border: 3px solid var(--ink);
  background: var(--black);
  overflow: hidden;
}

.plate canvas {
  display: block;
  width: 100%;
  height: 100%;
  cursor: var(--target-ring) 24 24, crosshair;
  touch-action: manipulation;
  filter: sepia(0.28) contrast(1.06) saturate(0.86);
}

.plate-hint {
  position: absolute;
  left: 26%;
  top: 22%;
  z-index: 2;
  width: 0;
  height: 0;
  pointer-events: none;
  transition: opacity 0.5s ease;
}

.plate.fired .plate-hint {
  opacity: 0;
}

.hint-target,
.hint-ring {
  position: absolute;
  left: -36px;
  top: -36px;
  width: 72px;
  height: 72px;
  border-radius: 50%;
}

.hint-target {
  background: var(--target-ring) center / contain no-repeat;
  animation: hint-throb 1.6s ease-in-out infinite;
}

.hint-ring {
  border: 4px solid #e8432b;
  animation: hint-ping 1.6s ease-out infinite;
}

.hint-ring-2 {
  animation-delay: 0.8s;
}

.hint-tag {
  position: absolute;
  left: 0;
  top: 46px;
  transform: translateX(-50%) rotate(-3deg);
  white-space: nowrap;
  font-family: var(--stencil);
  font-weight: 800;
  font-size: 24px;
  line-height: 1;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  color: var(--paper-hi);
  background: var(--red);
  border: 2px solid var(--ink);
  padding: 5px 12px 3px;
}

@keyframes hint-ping {
  from {
    transform: scale(0.75);
    opacity: 1;
  }
  to {
    transform: scale(2.2);
    opacity: 0;
  }
}

@keyframes hint-throb {
  0%,
  100% {
    transform: scale(1);
  }
  50% {
    transform: scale(1.12);
  }
}

.cap-fig {
  display: block;
  margin-top: 12px;
  font-family: var(--type);
  font-size: 19px;
  line-height: 1.3;
  letter-spacing: 0.08em;
  text-transform: uppercase;
}

.cap-call {
  position: relative;
  z-index: 3;
  display: flex;
  align-items: center;
  gap: 16px;
  margin: -46px 12px 0 -12px;
  padding: 13px 18px 11px 14px;
  background: var(--red);
  border: 3px solid var(--ink);
  color: var(--paper-hi);
  font-family: var(--stencil);
  font-weight: 800;
  font-size: clamp(26px, 2.5vw, 34px);
  line-height: 1;
  letter-spacing: 0.03em;
  text-transform: uppercase;
  transform: rotate(-1.6deg);
  animation: cap-nudge 3.2s ease-in-out infinite;
}

.cap-target {
  position: relative;
  flex: none;
  width: 46px;
  height: 46px;
  background: var(--bullseye) center / contain no-repeat;
}

.cap-target::after {
  content: "";
  position: absolute;
  inset: 0;
  border: 3px solid var(--paper-hi);
  border-radius: 50%;
  animation: hint-ping 1.6s ease-out infinite;
}

@keyframes cap-nudge {
  0%,
  80%,
  100% {
    transform: rotate(-1.6deg) translateY(0);
  }
  85% {
    transform: rotate(-1.6deg) translateY(-7px);
  }
  90% {
    transform: rotate(-1.6deg) translateY(0);
  }
  95% {
    transform: rotate(-1.6deg) translateY(-3px);
  }
}

.hero-kicker {
  font-style: italic;
  font-weight: 700;
  font-size: 28px;
  line-height: 1.1;
  color: var(--red);
  transform: rotate(-2deg);
  margin-bottom: 10px;
}

.hero-title {
  font-family: var(--sans);
  font-stretch: 62%;
  font-weight: 900;
  font-size: clamp(5rem, min(9vw, 15.5svh), 10rem);
  line-height: 0.8;
  text-transform: uppercase;
  color: var(--ink);
  text-shadow: 0.04em 0.025em 0 rgba(169, 50, 31, 0.42);
  -webkit-mask-image: url("journal/grunge-light.png");
  mask-image: url("journal/grunge-light.png");
  -webkit-mask-size: 340px 340px;
  mask-size: 340px 340px;
}

.hero-title span {
  display: block;
}

.hero-title .red {
  color: var(--red);
  text-shadow: 0.04em 0.025em 0 rgba(31, 27, 20, 0.45);
}

.hero-sub {
  font-size: 20px;
  line-height: 1.45;
  max-width: 38ch;
  margin-top: 26px;
  padding-top: 20px;
  border-top: 2px solid var(--ink);
}

.hero-foot {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 22px 34px;
  margin-top: 26px;
}

.hero-ticker {
  display: flex;
  align-items: center;
  gap: 20px;
}

.stamp-big {
  display: inline-block;
  font-family: var(--stencil);
  font-weight: 800;
  font-size: 66px;
  line-height: 1;
  letter-spacing: 0.04em;
  color: var(--red);
  border: 6px solid currentColor;
  padding: 8px 18px 2px;
  transform: rotate(-4deg);
  -webkit-mask-image: url("journal/grunge-light.png");
  mask-image: url("journal/grunge-light.png");
  -webkit-mask-size: 240px 240px;
  mask-size: 240px 240px;
}

.hero-ticker p {
  font-family: var(--type);
  font-size: 19px;
  line-height: 1.4;
}

.hero-actions {
  display: flex;
  flex-wrap: wrap;
  gap: 16px;
}

.hero-actions .stamp-btn:not(.stamp-solid) {
  color: var(--ink);
}

.sec-head {
  max-width: 1240px;
  margin: 0 auto 50px;
  display: flex;
  flex-wrap: wrap;
  align-items: flex-end;
  justify-content: space-between;
  gap: 18px 40px;
}

h2 {
  font-family: var(--stencil);
  font-weight: 800;
  font-size: clamp(3.8rem, 10vw, 9rem);
  line-height: 0.86;
  letter-spacing: 0.03em;
  text-transform: uppercase;
  color: rgba(236, 228, 205, 0.9);
  -webkit-mask-image: url("journal/grunge-light.png");
  mask-image: url("journal/grunge-light.png");
  -webkit-mask-size: 360px 360px;
  mask-size: 360px 360px;
}

.strip-note {
  position: relative;
  max-width: 34ch;
  font-family: var(--type);
  font-size: 18px;
  line-height: 1.5;
  color: var(--ink);
  background: url("paper/strip.webp") center / 100% 100% no-repeat;
  padding: 14px 20px 12px;
  transform: rotate(-1.4deg);
}

.strip-note::before {
  content: "";
  position: absolute;
  top: -10px;
  left: 50%;
  width: 70px;
  height: 22px;
  margin-left: -35px;
  background: rgba(228, 216, 182, 0.72);
  transform: rotate(-4deg);
  clip-path: polygon(0 12%, 4% 0, 9% 10%, 14% 2%, 86% 0, 91% 9%, 96% 1%, 100% 10%, 98% 88%, 93% 100%, 88% 90%, 82% 100%, 18% 100%, 12% 91%, 6% 100%, 2% 90%);
}

.journal {
  --pencil: rgba(43, 40, 35, 0.9);
  --pen: #23324f;
  --red-lead: #a1361d;
  --green-lead: #4c6a33;
  padding: 110px 20px 120px;
  overflow: hidden;
}

.defs {
  position: absolute;
  width: 0;
  height: 0;
  overflow: hidden;
}

.desk {
  position: relative;
  max-width: 1200px;
  margin: 0 auto;
  padding: 18px 16px 30px;
}

.book {
  position: relative;
  max-width: 1150px;
  margin: 0 auto;
  outline: none;
}

.book:focus-visible .stage {
  outline: 3px solid var(--ochre);
  outline-offset: 22px;
}

.book-source {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(min(100%, 340px), 1fr));
  gap: 20px;
  container-type: inline-size;
}

.book.ready .book-source {
  display: none;
}

.book:not(.ready) .cover-art {
  display: none;
}

.stage {
  position: relative;
  perspective: 3400px;
  perspective-origin: 50% 40%;
  --stack-l: 0;
  --stack-r: 1;
}

.inner {
  position: relative;
  transform-style: preserve-3d;
  transition: transform 1.4s cubic-bezier(0.62, 0.04, 0.24, 1);
}

.book.closed .inner,
.book.closing .inner {
  transform: translateX(-25%);
}

.block {
  position: relative;
  display: grid;
  grid-template-columns: 1fr 1fr;
  height: var(--page-h, 760px);
  transform-style: preserve-3d;
}

.slot {
  position: relative;
  overflow: hidden;
  container-type: inline-size;
  background: #e6dbc0;
}

.slot-left {
  border-radius: 3px 0 0 3px;
}

.slot-right {
  border-radius: 0 3px 3px 0;
}

.slot.blank {
  background: transparent;
}

.book.closed .slot-left,
.book.opening .slot-left,
.book.closing .slot-left {
  visibility: hidden;
}

.turn-shade {
  position: absolute;
  inset: 0;
  z-index: 5;
  background: #19150e;
  opacity: 0;
  pointer-events: none;
}

.board {
  position: absolute;
  top: -11px;
  bottom: -11px;
  left: 50%;
  right: -16px;
  background: #3f402a url("journal/cover.jpg") center / cover;
  border-radius: 3px 12px 12px 3px;
}

.stack {
  position: absolute;
  top: 3px;
  bottom: 3px;
  background-color: #d9cdaa;
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='3' height='4'%3E%3Crect width='1' height='4' fill='%23b7a882'/%3E%3C/svg%3E");
  background-size: 3px 4px;
}

.stack-r {
  left: 100%;
  width: calc(2px + var(--stack-r) * 9px);
  border-radius: 0 3px 3px 0;
}

.stack-l {
  right: 100%;
  width: calc(2px + var(--stack-l) * 9px);
  border-radius: 3px 0 0 3px;
}

.book.closed .stack-l,
.book.opening .stack-l,
.book.closing .stack-l {
  visibility: hidden;
}

.cover {
  position: absolute;
  top: -11px;
  bottom: -11px;
  left: 50%;
  right: -16px;
  transform-origin: left center;
  transform-style: preserve-3d;
  transform: rotateY(0deg) translateZ(3px);
  transition: transform 1.4s cubic-bezier(0.62, 0.04, 0.24, 1);
  cursor: pointer;
}

.book.closed .cover:hover {
  transform: rotateY(-9deg) translateZ(3px);
  transition-duration: 0.5s;
}

.book.opening .cover,
.book.open .cover {
  transform: rotateY(-180deg) translateZ(3px);
  cursor: default;
}

.cover-face {
  position: absolute;
  inset: 0;
  overflow: hidden;
  backface-visibility: hidden;
  -webkit-backface-visibility: hidden;
  background: #3f402a url("journal/cover.jpg") center / cover;
}

.cover-front {
  border-radius: 3px 12px 12px 3px;
  container-type: inline-size;
}

.cover-back {
  transform: rotateY(180deg);
  border-radius: 12px 3px 3px 12px;
}

.cover-back-page {
  position: absolute;
  top: 11px;
  bottom: 11px;
  left: 16px;
  right: 0;
  overflow: hidden;
  container-type: inline-size;
}

.cover-back-page .page {
  height: 100%;
}

.cover-art {
  position: absolute;
  inset: 0;
}

.cover-title {
  position: absolute;
  left: 16%;
  right: 7%;
  top: 8%;
  font-family: "Big Shoulders Stencil Display", var(--sans);
  font-weight: 800;
  font-size: 19cqi;
  line-height: 0.84;
  letter-spacing: 0.01em;
  color: #17170f;
  opacity: 0.86;
  -webkit-mask-image: url("journal/grunge.png");
  mask-image: url("journal/grunge.png");
  -webkit-mask-size: 300px 300px;
  mask-size: 300px 300px;
}

.cover-title span {
  display: block;
}

.cover-title span + span {
  font-size: 1.32em;
}

.cover-label {
  position: absolute;
  left: 19%;
  right: 10%;
  bottom: 11%;
  padding: 6cqi 7cqi 5cqi;
  background: #b89666 url("journal/kraft.jpg") center / cover;
  border: 1px solid rgba(40, 30, 18, 0.35);
  transform: rotate(-1.8deg);
  font-family: "Special Elite", "Courier New", monospace;
  font-size: max(14px, 3.5cqi);
  line-height: 1.45;
  color: #241c12;
}

.label-hand {
  font-family: "La Belle Aurore", cursive;
  font-size: 3.1em;
  line-height: 1;
  color: var(--pen);
  margin-top: 0.3em;
  transform: rotate(-4deg);
}

.stamp {
  display: inline-block;
  font-family: "Big Shoulders Stencil Display", var(--sans);
  font-weight: 800;
  letter-spacing: 0.06em;
  line-height: 1;
  text-transform: uppercase;
  color: #a3261c;
  border: 0.13em solid currentColor;
  padding: 0.12em 0.38em 0.04em;
  opacity: 0.84;
  -webkit-mask-image: url("journal/grunge.png");
  mask-image: url("journal/grunge.png");
  -webkit-mask-size: 240px 240px;
  mask-size: 240px 240px;
}

.stamp-cover {
  position: absolute;
  right: -4%;
  top: -22%;
  font-size: 2.3em;
  transform: rotate(-10deg);
}

.page {
  --fs: clamp(18px, 4.75cqi, 29px);
  --line: calc(var(--fs) * 1.5);
  position: relative;
  isolation: isolate;
  height: 100%;
  overflow: hidden;
  padding: calc(var(--line) * 2) 8% calc(var(--line) * 2) 16%;
  font-family: "La Belle Aurore", "Segoe Script", cursive;
  font-size: var(--fs);
  line-height: var(--line);
  color: var(--pencil);
  text-align: left;
}

.page::before {
  content: "";
  position: absolute;
  inset: 0;
  z-index: -2;
  background: #e9dfc6 url("journal/paper-1.jpg") center / 100% 100% no-repeat;
}

.page[data-paper="2"]::before {
  background-image: url("journal/paper-2.jpg");
}

.page[data-paper="3"]::before {
  background-image: url("journal/paper-3.jpg");
}

.page.is-left::before {
  transform: scaleX(-1);
}

.page::after {
  content: "";
  position: absolute;
  inset: 0;
  z-index: -1;
  padding: calc(var(--line) * 2 + var(--line) * 0.08) 0 calc(var(--line) * 1.6);
  background-image:
    linear-gradient(to right, transparent calc(12% - 1px), rgba(170, 62, 48, 0.42) calc(12% - 1px), rgba(170, 62, 48, 0.42) 12%, transparent 12%),
    linear-gradient(to bottom, transparent calc(100% - 1px), rgba(98, 126, 160, 0.42) calc(100% - 1px));
  background-size: 100% 100%, 100% var(--line);
  background-origin: border-box, content-box;
  background-clip: border-box, content-box;
  background-repeat: no-repeat, repeat-y;
}

.page p,
.page li {
  margin: 0;
}

.page .gap {
  margin-top: var(--line);
}

.page .gap2 {
  margin-top: calc(var(--line) * 2);
}

.page-num {
  position: absolute;
  bottom: calc(var(--line) * 0.6);
  right: 8%;
  font-size: 0.85em;
  line-height: 1;
  color: rgba(58, 54, 48, 0.75);
}

.is-left .page-num {
  right: auto;
  left: 8%;
}

.title-hand {
  font-size: calc(var(--fs) * 2.05);
  line-height: calc(var(--line) * 2);
  color: var(--pen);
  -webkit-text-stroke: 0.4px currentColor;
}

.big-hand {
  font-size: calc(var(--fs) * 1.38);
  line-height: calc(var(--line) * 2);
}

.circled {
  position: relative;
  display: inline-block;
  font-size: 1.55em;
  color: var(--pen);
  padding: 0 0.15em;
  -webkit-text-stroke: 0.4px currentColor;
}

.ink {
  overflow: visible;
}

.ink path {
  fill: none;
  stroke: currentColor;
  stroke-width: 2.3px;
  stroke-linecap: round;
  stroke-linejoin: round;
  stroke-dasharray: 1;
  stroke-dashoffset: 1;
}

.ink-done .ink path,
.ink-live .ink path {
  stroke-dashoffset: 0;
}

.ink-live .ink path {
  transition: stroke-dashoffset 0.85s cubic-bezier(0.45, 0, 0.2, 1) var(--d, 0.2s);
}

.ring {
  position: absolute;
  left: -24%;
  top: -34%;
  width: 148%;
  height: 168%;
  color: var(--red-lead);
  pointer-events: none;
}

.ring path {
  stroke-width: 2.6px;
  --d: 0.35s;
}

.ul {
  position: relative;
  display: inline-block;
}

.ul .under {
  position: absolute;
  left: -3%;
  bottom: -0.05em;
  width: 106%;
  height: 0.32em;
  opacity: 1;
  background: none;
  color: var(--pencil);
  z-index: 0;
}

.ul-red .under {
  color: var(--red-lead);
}

.ul-double .under {
  height: 0.5em;
  bottom: -0.25em;
}

.ul .under path {
  stroke-width: 2.4px;
  --d: 0.6s;
}

.ul-double .under path + path {
  --d: 0.95s;
}

.sketch-eyes {
  margin-top: var(--line);
}

.sketch-eyes img {
  width: 96%;
}

.candles {
  display: block;
  width: 100%;
  height: calc(var(--line) * 6);
  margin-top: var(--line);
}

.candle-call {
  font-size: calc(var(--fs) * 1.3);
  line-height: calc(var(--line) * 2);
}

.candles .c-green {
  color: var(--green-lead);
}

.candles .c-red {
  color: var(--red-lead);
}

.candles g:nth-child(1) path {
  --d: 0.2s;
}

.candles g:nth-child(2) path {
  --d: 0.55s;
}

.candles g:nth-child(3) path {
  --d: 0.9s;
}

.candles g:nth-child(4) path {
  --d: 1.25s;
}

.typed-slip {
  position: relative;
  width: 86%;
  margin: calc(var(--line) * 0.7) 0 0 2%;
  padding: 1.1em 1.2em 1em;
  background: #ece6d4 url("journal/onion.jpg") center / cover;
  border: 1px solid rgba(110, 100, 80, 0.3);
  transform: rotate(-2.4deg);
  font-family: "Special Elite", "Courier New", monospace;
  font-size: max(15px, 0.64em);
  line-height: 1.45;
  color: #2a2826;
}

.typed-slip .slip-row {
  display: flex;
  justify-content: space-between;
  max-width: 17em;
}

.staple {
  position: absolute;
  top: -3px;
  left: 14%;
  width: 54px;
  height: 10px;
}

.page-typed {
  padding-top: calc(var(--line) * 1.25);
}

.typed-sheet {
  position: relative;
  margin: 0 -3% 0 -9%;
  padding: clamp(18px, 5cqi, 30px) clamp(14px, 4.4cqi, 26px) clamp(16px, 4.6cqi, 28px);
  background: #ece6d4 url("journal/onion.jpg") center / cover;
  border: 1px solid rgba(110, 100, 80, 0.3);
  font-family: "Special Elite", "Courier New", monospace;
  font-size: clamp(14px, 3.2cqi, 18.5px);
  line-height: 1.5;
  color: #2a2826;
}

.page .typed-sheet p + p {
  margin-top: 0.8em;
}

@container (max-width: 420px) {
  .page-typed {
    padding-top: calc(var(--line) * 0.8);
    padding-bottom: calc(var(--line) * 1.5);
  }

  .page-typed .typed-sheet {
    margin: 0 -6% 0 -17%;
    padding: 16px 13px 14px;
    line-height: 1.45;
  }

  .page .typed-sheet p + p {
    margin-top: 0.65em;
  }
}

.sheet-a {
  transform: rotate(-1.2deg);
}

.sheet-b {
  transform: rotate(0.9deg);
}

.typed-sheet .tape {
  top: -0.6em;
  width: 24%;
}

.typed-sheet .tape-a {
  left: -7%;
}

.typed-sheet .tape-b {
  right: -7%;
}

.loop {
  position: relative;
  display: inline-block;
}

.loop .ring {
  left: -7%;
  top: -46%;
  width: 114%;
  height: 190%;
}

.sheet-a .ul-red .under path {
  --d: 1.3s;
}

.sheet-b .ring path {
  --d: 0.5s;
}

.sheet-b .ul-double .under path {
  --d: 1.4s;
}

.sheet-b .ul-double .under path + path {
  --d: 1.75s;
}

.thumbprint {
  position: absolute;
  right: 10%;
  bottom: 12%;
  width: 21%;
  transform: rotate(16deg);
  pointer-events: none;
}

.coffee {
  position: absolute;
  right: -14%;
  top: -10%;
  width: 56%;
  transform: rotate(38deg);
  pointer-events: none;
  mix-blend-mode: multiply;
}

.sightline-sketch {
  display: block;
  width: 94%;
  height: calc(var(--line) * 4);
  margin-top: var(--line);
  color: var(--pencil);
}

.sightline-sketch .ink-red {
  stroke: var(--red-lead);
  --d: 1.2s;
}

.sightline-sketch .ink-fill {
  fill: currentColor;
}

.sightline-sketch text {
  font-family: "La Belle Aurore", cursive;
  font-size: 19px;
  fill: var(--red-lead);
  opacity: 0;
}

.ink-done .sightline-sketch text,
.ink-live .sightline-sketch text {
  opacity: 1;
}

.ink-live .sightline-sketch text {
  transition: opacity 0.6s ease 1.7s;
}

.sightline-sketch path:nth-child(4) {
  --d: 0.7s;
}

.sightline-sketch path:nth-child(5) {
  --d: 1s;
}

.contagion {
  display: block;
  width: 100%;
  height: calc(var(--line) * 8);
  margin-top: var(--line);
  color: var(--pencil);
}

.horizon-sketch {
  display: block;
  width: 100%;
  height: calc(var(--line) * 4);
  margin-top: var(--line);
  color: var(--pencil);
}

.horizon-sketch .hatch {
  stroke-width: 1.4px;
  --d: 0.9s;
}

.horizon-sketch .sun {
  stroke: var(--red-lead);
  --d: 1.4s;
}

.checklist li + li {
  margin-top: calc(var(--line) * 0.5);
}

.contagion .ink-fill,
.trefoil .ink-fill {
  fill: currentColor;
}

.trefoil {
  display: block;
  width: 46%;
  height: auto;
  aspect-ratio: 128 / 112;
  margin: var(--line) 0 0 22%;
  color: var(--red-lead);
  transform: rotate(-9deg);
}

.trefoil path {
  stroke-width: 2.4px;
  --d: 0.3s;
}

.trefoil path:nth-child(2) {
  --d: 0.6s;
}

.trefoil path:nth-child(3) {
  --d: 0.9s;
}

.trefoil path:nth-child(4) {
  --d: 1.2s;
}

.trefoil .hatch {
  stroke-width: 1.6px;
  --d: 1.5s;
}

.checklist {
  list-style: none;
}

.checklist li {
  display: flex;
  gap: 0.45em;
  align-items: baseline;
}

.checklist .box {
  flex: none;
  width: 0.9em;
  height: 0.85em;
  transform: translateY(0.1em);
  color: var(--pencil);
}

.checklist .tick {
  stroke: var(--red-lead);
  stroke-width: 2.6px;
}

.checklist li:nth-child(1) .tick {
  --d: 0.7s;
}

.checklist li:nth-child(2) .tick {
  --d: 1.15s;
}

.checklist li:nth-child(3) .tick {
  --d: 1.6s;
}

.checklist li:nth-child(4) .tick {
  --d: 2.05s;
}

.clipping {
  position: relative;
  width: 60%;
  margin: calc(var(--line) * 0.8) 0 0 14%;
  transform: rotate(3.4deg);
}

.clipping img {
  width: 100%;
}

.tape {
  position: absolute;
  top: -0.45em;
  width: 36%;
  height: 1.25em;
  background: rgba(228, 216, 182, 0.74);
  clip-path: polygon(0 12%, 4% 0, 9% 10%, 14% 2%, 86% 0, 91% 9%, 96% 1%, 100% 10%, 98% 88%, 93% 100%, 88% 90%, 82% 100%, 18% 100%, 12% 91%, 6% 100%, 2% 90%);
}

.tape-a {
  left: -10%;
  transform: rotate(-30deg);
}

.tape-b {
  right: -10%;
  transform: rotate(26deg);
}

.heavy {
  color: #23201b;
  -webkit-text-stroke: 0.35px currentColor;
}

.page-drift-1 > p,
.page-drift-1 > ul {
  transform: rotate(-0.4deg);
  transform-origin: left center;
}

.page-drift-2 > p {
  transform: rotate(-0.9deg) translateX(0.2em);
  transform-origin: left center;
}

.page-drift-3 > p:not(.margin-scrawl) {
  transform: rotate(-1.6deg) translateX(0.3em);
  transform-origin: left center;
}

.page .margin-scrawl {
  position: absolute;
  left: 2.4%;
  top: 7%;
  bottom: 7%;
  width: 8%;
  overflow: hidden;
  writing-mode: vertical-rl;
  transform: rotate(180deg);
  font-size: 0.6em;
  line-height: 1.15;
  white-space: nowrap;
  color: rgba(52, 48, 42, 0.55);
}

.sketch-ridge {
  margin-top: var(--line);
}

.sketch-ridge img {
  width: 100%;
}

.page-scrawl .scrawl {
  font-family: "Rock Salt", cursive;
  color: #1f1c17;
}

.page-scrawl .s1 {
  font-size: calc(var(--fs) * 1.55);
  line-height: calc(var(--line) * 3);
  transform: rotate(-3deg);
  margin-top: var(--line);
}

.page-scrawl .s2 {
  font-size: calc(var(--fs) * 2.05);
  line-height: 1.15;
  color: var(--red-lead);
  transform: rotate(3deg) translateX(-0.1em);
  margin-top: calc(var(--line) * 0.4);
}

.page-scrawl .s3 {
  font-size: calc(var(--fs) * 1.2);
  line-height: 1.7;
  transform: rotate(-4.5deg) translateY(0.4em);
  margin-top: calc(var(--line) * 2);
}

.page-last {
  display: flex;
  flex-direction: column;
  justify-content: center;
}

.sketch-eyes-small {
  width: 78%;
  margin: 0 auto;
}

.sketch-eyes-small img {
  width: 100%;
}

.regards {
  margin-top: var(--line);
  text-align: center;
  color: var(--pen);
}

.page-kraft {
  display: flex;
  flex-direction: column;
  align-items: center;
  padding: 11% 9% 9%;
  color: #2c2216;
}

.page-kraft::before {
  background-image: url("journal/kraft.jpg");
}

.page-kraft::after {
  display: none;
}

.photo-mount {
  position: relative;
  width: 64%;
  transform: rotate(-3deg);
}

.photo-mount img {
  width: 100%;
}

.paperclip {
  position: absolute;
  top: -8%;
  left: 12%;
  width: 9%;
  height: auto;
  aspect-ratio: 40 / 110;
  transform: rotate(-9deg);
}

.kraft-hand {
  font-size: 1.6em;
  line-height: 1.2;
  margin-top: 0.5em;
  transform: rotate(-2deg);
}

.index-card {
  position: relative;
  width: 78%;
  margin-top: 7%;
  padding: 1em 1.2em 1.1em;
  background: #ece6d4 url("journal/onion.jpg") center / cover;
  border: 1px solid rgba(110, 100, 80, 0.3);
  transform: rotate(1.8deg);
  font-family: "Special Elite", "Courier New", monospace;
  font-size: max(15px, 0.66em);
  line-height: 1.5;
  color: #2a2826;
}

.index-card .stamp {
  position: absolute;
  right: -6%;
  bottom: -20%;
  font-size: 2.1em;
  transform: rotate(-11deg);
}

.redact {
  background: #1d1a15;
  color: transparent;
  padding: 0 0.1em;
  user-select: none;
}

.tally {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 8% 10%;
  width: 78%;
  margin-top: 16%;
  opacity: 0.8;
}

.tally svg {
  width: 100%;
  height: auto;
  aspect-ratio: 60 / 50;
}

.tally svg:nth-child(3n) {
  transform: rotate(4deg);
}

.tally svg:nth-child(3n + 1) {
  transform: rotate(-3deg);
}

.tally .tally-part {
  transform: none;
}

.curl-host {
  display: none;
  position: absolute;
  top: 0;
  height: 100%;
  width: 50%;
  z-index: 4;
  transform-style: preserve-3d;
  pointer-events: none;
}

.curl-host.on {
  display: block;
}

.curl-next {
  left: 50%;
}

.curl-prev {
  left: 0;
}

.strip {
  position: absolute;
  top: 0;
  height: 100%;
  transform-style: preserve-3d;
}

.curl-next .strip {
  left: 0;
  transform-origin: left center;
}

.curl-prev .strip {
  right: 0;
  transform-origin: right center;
}

.sface {
  position: absolute;
  inset: 0;
  overflow: hidden;
  background: #e6dbc0;
  backface-visibility: hidden;
  -webkit-backface-visibility: hidden;
}

.sface-back {
  transform: rotateY(180deg);
}

.sface-page {
  position: absolute;
  top: 0;
  container-type: inline-size;
}

.sface-page .page {
  height: 100%;
}

.sshade {
  position: absolute;
  inset: 0;
  background: #1a160f;
  opacity: 0;
  pointer-events: none;
}

.probe {
  position: absolute;
  left: 0;
  top: 0;
  visibility: hidden;
  pointer-events: none;
  container-type: inline-size;
}

.probe .page {
  height: auto;
}

.book.single {
  max-width: 540px;
}

.book.single .inner,
.book.single.closed .inner,
.book.single.closing .inner {
  transform: none;
}

.book.single .block {
  grid-template-columns: 1fr;
  overflow: hidden;
  perspective: 2400px;
  transform-style: flat;
  border-radius: 3px;
}

.book.single .slot-right,
.book.single .stack-l {
  display: none;
}

.book.single .slot-left,
.book.single.closed .slot-left {
  visibility: visible;
  border-radius: 3px;
}

.book.single .board,
.book.single .cover {
  left: 0;
}

.book.single .cover-back {
  display: none;
}

.book.single.open .cover {
  visibility: hidden;
}

.book.single .curl-host {
  left: 0;
  width: 100%;
}

.pencil {
  position: absolute;
  right: 1%;
  bottom: -6px;
  width: min(390px, 36%);
  height: auto;
  transform: rotate(-11deg);
  z-index: 3;
  pointer-events: none;
}

.book-nav {
  display: none;
  max-width: 1150px;
  margin: 26px auto 0;
  align-items: center;
  justify-content: space-between;
  gap: 16px;
}

.desk:has(.book.ready) + .book-nav {
  display: flex;
}


.book-btn {
  position: relative;
  isolation: isolate;
  font-family: var(--stencil);
  font-weight: 800;
  font-size: 22px;
  line-height: 1;
  letter-spacing: 0.07em;
  text-transform: uppercase;
  color: var(--bone);
  background: none;
  border: none;
  padding: 15px 22px 12px;
  cursor: pointer;
  transform: rotate(-1deg);
  transition: transform 0.14s ease;
}

.book-btn::before {
  content: "";
  position: absolute;
  inset: 0;
  z-index: -1;
  border: 4px solid currentColor;
  background: var(--fill, transparent);
  -webkit-mask-image: url("journal/grunge-light.png");
  mask-image: url("journal/grunge-light.png");
  -webkit-mask-size: 240px 240px;
  mask-size: 240px 240px;
}

.book-btn:hover {
  background: none;
  color: var(--bone);
  transform: rotate(-1deg) scale(1.05);
}

.book-btn:active {
  transform: rotate(-1deg) scale(0.95);
}

.book-btn-main,
.book-btn-main:hover {
  --fill: var(--red);
  color: var(--paper-hi);
  background: none;
}

.book-btn-main::before {
  border-color: var(--red);
}

.book-btn:disabled,
.book-btn:disabled:hover {
  opacity: 0.35;
  cursor: default;
  transform: rotate(-1deg);
  color: var(--bone);
}

.book-btn-main:disabled,
.book-btn-main:disabled:hover {
  color: var(--paper-hi);
}

.book-count {
  font-family: var(--type);
  font-weight: 400;
  font-size: 19px;
}

.draft,
.dispatch {
  padding: 110px 28px 120px;
}

.notice {
  position: relative;
  max-width: 1240px;
  margin: 0 auto;
  color: var(--ink);
  background: url("paper/notice.webp") center / 100% 100% no-repeat;
  padding: 44px 54px 58px;
  transform: rotate(0.35deg);
}

.notice-head {
  position: relative;
  text-align: center;
  border-bottom: 4px double var(--ink);
  padding-bottom: 20px;
  margin-bottom: 36px;
}

.notice-form {
  position: absolute;
  right: 0;
  top: -30px;
  font-family: var(--type);
  font-size: 16px;
  text-transform: uppercase;
  letter-spacing: 0.08em;
}

.notice-title {
  font-family: var(--serif);
  font-weight: 800;
  font-size: clamp(2rem, 4vw, 3.4rem);
  line-height: 1.05;
  letter-spacing: 0.07em;
  text-transform: uppercase;
  padding: 0 4%;
}

.notice-board {
  font-family: var(--type);
  font-size: 18px;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  margin-top: 10px;
}

.notice-grid {
  display: grid;
  grid-template-columns: minmax(0, 0.72fr) minmax(0, 1.28fr);
  gap: 52px;
  align-items: start;
}

.notice-photo {
  position: relative;
  transform: rotate(-2.2deg);
  margin-top: 10px;
}

.id-photo {
  background: #f4efe2;
  border: 1px solid rgba(40, 32, 20, 0.25);
  padding: 13px 13px 15px;
}

.id-photo canvas {
  display: block;
  width: 100%;
  height: auto;
  background: var(--black);
  filter: sepia(0.22) contrast(1.05) saturate(0.9);
}

.notice-photo .paperclip {
  position: absolute;
  top: -30px;
  left: 16%;
  width: 30px;
  height: 82px;
  transform: rotate(-8deg);
}

.photo-label {
  font-family: var(--type);
  font-size: 16px;
  text-align: center;
  text-transform: uppercase;
  letter-spacing: 0.08em;
  margin-top: 12px;
}

.notice-body {
  position: relative;
  display: flex;
  flex-direction: column;
  gap: 22px;
  padding-bottom: 20px;
}

.greeting {
  font-family: var(--type);
  font-size: 24px;
  text-transform: uppercase;
  letter-spacing: 0.06em;
}

.notice-letter {
  font-family: var(--type);
  font-size: 20px;
  line-height: 1.55;
  max-width: 40ch;
}

.pfp-mode {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 10px 26px;
  border: none;
  margin: 0 0 18px;
  padding: 0;
  font-family: var(--type);
  font-size: 19px;
}

.pfp-mode legend {
  float: left;
  margin-right: 6px;
  font-size: 16px;
  text-transform: uppercase;
  letter-spacing: 0.1em;
}

.mode-opt {
  position: relative;
  display: inline-flex;
  align-items: center;
  gap: 10px;
  cursor: pointer;
}

.mode-opt input {
  position: absolute;
  opacity: 0;
  width: 1px;
  height: 1px;
}

.mode-box {
  position: relative;
  width: 24px;
  height: 24px;
  border: 2px solid var(--ink);
  flex: none;
}

.mode-opt input:checked + .mode-box::before,
.mode-opt input:checked + .mode-box::after {
  content: "";
  position: absolute;
  left: 50%;
  top: 50%;
  width: 28px;
  height: 3px;
  margin: -1.5px 0 0 -14px;
  background: var(--red);
  transform: rotate(45deg);
}

.mode-opt input:checked + .mode-box::after {
  transform: rotate(-45deg);
}

.mode-opt input:focus-visible + .mode-box {
  outline: 3px solid var(--ochre);
  outline-offset: 3px;
}

.mode-opt:hover .mode-box {
  border-color: var(--red);
}

.pfp-label {
  display: block;
  font-family: var(--type);
  font-size: 16px;
  text-transform: uppercase;
  letter-spacing: 0.1em;
  margin-bottom: 6px;
}

.pfp-row {
  display: flex;
  flex-wrap: wrap;
  align-items: flex-end;
  gap: 18px;
}

.pfp-at {
  display: none;
  font-family: var(--type);
  font-size: 30px;
  line-height: 1;
  padding-bottom: 10px;
  margin-right: -14px;
}

.mode-x .pfp-at {
  display: block;
}

.mode-x .pfp-picks {
  display: none;
}

.pfp-found {
  display: flex;
  align-items: center;
  gap: 16px;
}

.pfp-found[hidden] {
  display: none;
}

.pfp-found img {
  width: 64px;
  height: 64px;
  object-fit: cover;
  background: #f4efe2;
  border: 1px solid rgba(40, 32, 20, 0.3);
  padding: 4px 4px 7px;
  transform: rotate(-3deg);
}

.pfp-found p {
  font-family: var(--type);
  font-size: 18px;
  line-height: 1.35;
}

.pfp-found-tag {
  color: var(--red);
  text-transform: uppercase;
  letter-spacing: 0.08em;
}

.pfp-alert {
  position: fixed;
  inset: 0;
  margin: auto;
  width: min(520px, calc(100vw - 32px));
  max-height: calc(100vh - 32px);
  height: fit-content;
  color: var(--ink);
  background: url("paper/telegram.webp") center / 100% 100% no-repeat;
  border: none;
  padding: 44px 40px 40px;
  text-align: center;
  overflow: visible;
}

.pfp-alert::backdrop {
  background: rgba(13, 14, 9, 0.72);
}

.pfp-alert[open] {
  animation: alert-in 0.28s cubic-bezier(0.2, 0.9, 0.3, 1.2);
}

@keyframes alert-in {
  from {
    opacity: 0;
    transform: rotate(-4deg) scale(0.9);
  }
  to {
    opacity: 1;
    transform: rotate(-1deg) scale(1);
  }
}

.pfp-alert[open] {
  transform: rotate(-1deg);
}

.alert-stamp {
  display: inline-block;
  font-family: var(--stencil);
  font-weight: 800;
  font-size: 46px;
  line-height: 1;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  color: var(--red);
  border: 6px double currentColor;
  padding: 10px 18px 4px;
  transform: rotate(-6deg);
  -webkit-mask-image: url("journal/grunge-light.png");
  mask-image: url("journal/grunge-light.png");
  -webkit-mask-size: 220px 220px;
  mask-size: 220px 220px;
}

.alert-title {
  font-family: var(--type);
  font-size: 20px;
  text-transform: uppercase;
  letter-spacing: 0.1em;
  margin-top: 22px;
}

.alert-text {
  font-family: var(--type);
  font-size: 19px;
  line-height: 1.5;
  margin: 12px auto 26px;
  max-width: 34ch;
}

#pfp-input {
  flex: 1 1 260px;
  min-width: 0;
  font-family: var(--type);
  font-size: 26px;
  color: var(--ink);
  background: transparent;
  border: none;
  border-bottom: 3px dotted var(--ink);
  border-radius: 0;
  padding: 8px 2px 6px;
}

#pfp-input::placeholder {
  color: rgba(31, 27, 20, 0.42);
}

#pfp-input:focus-visible {
  outline: none;
  border-bottom-style: solid;
  border-bottom-color: var(--red);
}

.pfp-go {
  position: relative;
  isolation: isolate;
  font-family: var(--stencil);
  font-weight: 800;
  font-size: 44px;
  line-height: 1;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: var(--red);
  background: none;
  border: none;
  padding: 12px 26px 6px;
  cursor: pointer;
  transform: rotate(-5deg);
  transition: transform 0.12s ease;
  -webkit-mask-image: url("journal/grunge-light.png");
  mask-image: url("journal/grunge-light.png");
  -webkit-mask-size: 220px 220px;
  mask-size: 220px 220px;
}

.pfp-go::before {
  content: "";
  position: absolute;
  inset: 0;
  z-index: -1;
  border: 6px double currentColor;
}

.pfp-go:hover {
  transform: rotate(-5deg) scale(1.06);
}

.pfp-go:active {
  transform: rotate(-5deg) scale(0.9);
}

.pfp-go:focus-visible {
  outline: none;
  color: var(--red-deep);
  text-decoration: underline;
}

.pfp-go:disabled {
  opacity: 0.45;
  cursor: default;
}

.pfp-picks {
  font-family: var(--type);
  font-size: 18px;
  line-height: 1.7;
}

.pfp-picks button {
  font: inherit;
  color: inherit;
  background: none;
  border: none;
  padding: 0;
  text-decoration: underline;
  text-decoration-thickness: 2px;
  text-underline-offset: 4px;
  cursor: pointer;
}

.pfp-picks button:hover {
  color: var(--red);
}

.pfp-status {
  font-family: "La Belle Aurore", cursive;
  font-size: 24px;
  line-height: 1.3;
  min-height: 1.3em;
  color: #23324f;
}

.pfp-status.bad {
  color: var(--red);
}

.pfp-actions {
  display: flex;
  flex-wrap: wrap;
  gap: 14px;
}

.pfp-actions .stamp-btn {
  font-size: 20px;
  padding: 13px 18px 10px;
}

.pfp-history {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(76px, 1fr));
  gap: 14px;
  max-width: 560px;
}

.pfp-history:empty {
  display: none;
}

.pfp-thumb {
  background: #f4efe2;
  border: 1px solid rgba(40, 32, 20, 0.3);
  padding: 5px 5px 8px;
  cursor: pointer;
  transform: rotate(-2deg);
}

.pfp-thumb:nth-child(even) {
  transform: rotate(2deg);
}

.pfp-thumb:hover {
  transform: rotate(0deg) scale(1.06);
}

.pfp-thumb img {
  width: 100%;
}

.board-seal {
  position: absolute;
  right: -10px;
  bottom: -24px;
  width: 150px;
  height: 150px;
  transform: rotate(-14deg);
  color: var(--red);
  opacity: 0.72;
  pointer-events: none;
  -webkit-mask-image: url("journal/grunge.png");
  mask-image: url("journal/grunge.png");
  -webkit-mask-size: 200px 200px;
  mask-size: 200px 200px;
}

.board-seal circle {
  fill: none;
  stroke: currentColor;
  stroke-width: 3.5;
}

.board-seal text {
  font-family: var(--stencil);
  font-weight: 800;
  font-size: 13.5px;
  letter-spacing: 0.08em;
  fill: currentColor;
}

.board-seal .seal-mid {
  font-size: 26px;
}

.telegram {
  position: relative;
  max-width: 1040px;
  margin: 0 auto;
  color: var(--ink);
  background: url("paper/telegram.webp") center / 100% 100% no-repeat;
  padding: 44px 54px 52px;
  transform: rotate(-0.9deg);
}

.tg-head {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto minmax(0, 1fr);
  align-items: end;
  gap: 24px;
  border-bottom: 4px double var(--ink);
  padding-bottom: 16px;
  margin-bottom: 30px;
}

.tg-class {
  display: grid;
  grid-template-columns: 1fr 1fr;
  font-family: var(--sans);
  font-weight: 700;
  font-size: 15px;
  text-transform: uppercase;
  letter-spacing: 0.04em;
  border: 2px solid var(--ink);
  max-width: 300px;
}

.tg-class span {
  padding: 4px 8px;
  border-right: 2px solid var(--ink);
  border-bottom: 2px solid var(--ink);
}

.tg-class span:nth-child(2n) {
  border-right: none;
}

.tg-class span:nth-child(n + 3) {
  border-bottom: none;
}

.tg-class .tg-x::after {
  content: " X";
  color: var(--red);
  font-family: var(--type);
}

.tg-title {
  font-family: var(--serif);
  font-weight: 900;
  font-size: clamp(2.4rem, 4.4vw, 3.6rem);
  line-height: 1;
  letter-spacing: 0.08em;
  text-transform: uppercase;
}

.tg-route {
  justify-self: end;
  text-align: right;
  font-family: var(--type);
  font-size: 18px;
  line-height: 1.35;
  text-transform: uppercase;
}

.tapes {
  list-style: none;
}

.tapes li {
  width: fit-content;
  max-width: 100%;
  font-family: var(--sans);
  font-weight: 700;
  font-size: clamp(20px, 2.4vw, 30px);
  line-height: 1.2;
  letter-spacing: 0.03em;
  text-transform: uppercase;
  background: url("paper/strip.webp") center / 100% 100% no-repeat;
  padding: 9px 18px 7px;
  margin-bottom: 14px;
}

.tapes li:nth-child(2) {
  margin-left: 22px;
  transform: rotate(0.8deg);
}

.tapes li:nth-child(3) {
  margin-left: 8px;
  transform: rotate(-0.6deg);
}

.tapes li:nth-child(4) {
  margin-left: 34px;
  transform: rotate(1deg);
}

.tg-foot {
  display: flex;
  justify-content: flex-end;
  margin-top: 26px;
}

.tg-body {
  display: grid;
  grid-template-columns: auto minmax(0, 1fr);
  align-items: center;
  gap: 40px;
}

.news {
  border-left: 2px solid var(--ink);
  padding-left: 26px;
}

.news-mast {
  font-family: var(--serif);
  font-weight: 900;
  font-size: 24px;
  line-height: 1.1;
  letter-spacing: 0.05em;
  text-align: center;
  text-transform: uppercase;
  border-bottom: 1px solid var(--ink);
  padding-bottom: 6px;
}

.news-edition {
  display: flex;
  justify-content: space-between;
  gap: 10px;
  font-family: var(--sans);
  font-weight: 700;
  font-size: 14px;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  border-bottom: 3px double var(--ink);
  padding: 4px 0 5px;
  margin-bottom: 12px;
}

.news-head {
  font-family: var(--sans);
  font-stretch: 62%;
  font-weight: 900;
  font-size: clamp(30px, 2.7vw, 38px);
  line-height: 0.98;
  text-transform: uppercase;
}

.news-deck {
  font-family: var(--serif);
  font-style: italic;
  font-size: 17px;
  line-height: 1.3;
  margin: 8px 0 12px;
  padding-bottom: 10px;
  border-bottom: 1px solid var(--ink);
}

.news-cols {
  font-family: var(--serif);
  font-size: 15px;
  line-height: 1.4;
  text-align: justify;
  hyphens: auto;
}

.news-cols p + p {
  text-indent: 1em;
}

.news-cols p:first-child::first-letter {
  float: left;
  font-weight: 900;
  font-size: 3.2em;
  line-height: 0.82;
  margin: 0.06em 0.08em 0 0;
}

.news-weather {
  margin-top: 12px;
  padding-top: 6px;
  border-top: 3px double var(--ink);
  font-family: var(--sans);
  font-weight: 700;
  font-size: 14px;
  letter-spacing: 0.04em;
  text-transform: uppercase;
}

.closer {
  padding: 50px 28px 110px;
}

.closer-sheet {
  max-width: 1160px;
  margin: 0 auto;
  padding: 40px 40px 34px;
  background-image: url("paper/poster-tall.webp");
  transform: rotate(0.6deg);
}

.closer-field {
  position: relative;
  isolation: isolate;
  min-height: min(680px, 78svh);
  padding: 64px 56px;
  overflow: hidden;
  display: flex;
  align-items: center;
}

.closer-field::before {
  content: "";
  position: absolute;
  inset: 0;
  z-index: -1;
  background: var(--red);
  -webkit-mask-image: url("journal/grunge-light.png");
  mask-image: url("journal/grunge-light.png");
  -webkit-mask-size: 520px 520px;
  mask-size: 520px 520px;
}

.closer-line {
  position: relative;
  z-index: 2;
  max-width: 52%;
  font-family: var(--sans);
  font-stretch: 62%;
  font-weight: 900;
  font-size: clamp(3.4rem, 7vw, 7.6rem);
  line-height: 0.86;
  text-transform: uppercase;
  text-wrap: balance;
  color: var(--paper-hi);
  text-shadow: 0.035em 0.03em 0 rgba(31, 27, 20, 0.5);
}

.closer-soldier {
  position: absolute;
  right: -1%;
  bottom: 0;
  z-index: 1;
  height: 94%;
  width: auto;
  max-width: none;
  filter: sepia(0.3) contrast(1.1) saturate(0.82);
}

.closer-field .halftone {
  z-index: 3;
  opacity: 0.2;
}

.closer-band {
  font-family: var(--sans);
  font-stretch: 62%;
  font-weight: 900;
  font-size: clamp(2rem, 4.6vw, 3.6rem);
  line-height: 1;
  letter-spacing: 0.1em;
  text-transform: uppercase;
  text-align: center;
  color: var(--ink);
  border-top: 5px solid var(--ink);
  border-bottom: 5px solid var(--ink);
  padding: 14px 10px 12px;
  margin-top: 22px;
  -webkit-mask-image: url("journal/grunge-light.png");
  mask-image: url("journal/grunge-light.png");
  -webkit-mask-size: 300px 300px;
  mask-size: 300px 300px;
}

.foot {
  max-width: 1240px;
  margin: 0 auto;
  padding: 30px 28px 80px;
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: space-between;
  gap: 30px 40px;
  border-top: 2px dashed rgba(236, 228, 205, 0.28);
}

.foot-brand {
  font-family: var(--stencil);
  font-weight: 800;
  font-size: clamp(2.6rem, 5vw, 4rem);
  line-height: 0.9;
  letter-spacing: 0.04em;
  color: rgba(236, 228, 205, 0.88);
  -webkit-mask-image: url("journal/grunge-light.png");
  mask-image: url("journal/grunge-light.png");
  -webkit-mask-size: 300px 300px;
  mask-size: 300px 300px;
}

.foot-note {
  max-width: 46ch;
  transform: rotate(0.8deg);
}

.foot-links {
  display: flex;
  flex-direction: column;
  align-items: stretch;
  gap: 14px;
}

@media (max-width: 1080px) {
  .hero-grid {
    grid-template-columns: minmax(0, 1fr);
    gap: 34px;
  }

  .hero-type {
    order: -1;
  }

  .plate {
    width: 100%;
    max-width: 560px;
    justify-self: start;
  }

  .hero-title {
    font-size: clamp(4.6rem, 19vw, 10rem);
  }

  .closer-soldier {
    height: 70%;
  }

  .closer-line {
    max-width: 64%;
  }
}

@media (max-width: 960px) {
  .notice-grid {
    grid-template-columns: minmax(0, 1fr);
    gap: 40px;
  }

  .notice-photo {
    max-width: 380px;
  }

  .tg-head {
    grid-template-columns: minmax(0, 1fr);
    justify-items: start;
  }

  .tg-route {
    justify-self: start;
    text-align: left;
  }

  .tg-body {
    grid-template-columns: minmax(0, 1fr);
    gap: 26px;
  }

  .news {
    border-left: none;
    border-top: 2px solid var(--ink);
    padding: 18px 0 0;
  }
}

@media (max-width: 760px) {
  .top {
    padding: 12px 16px;
  }

  .brand {
    font-size: 28px;
  }

  .nav {
    gap: 14px;
  }

  .nav a:not(.nav-x) {
    display: none;
  }

  .hero {
    padding: 26px 12px 60px;
  }

  .hero-sheet {
    padding: 26px 22px 36px;
    transform: none;
  }

  .sheet-top {
    font-size: 15px;
    letter-spacing: 0.06em;
    margin-bottom: 22px;
  }

  .sheet-top span:nth-child(3) {
    display: none;
  }

  .hero-kicker {
    font-size: 23px;
  }

  .hero-sub {
    font-size: 19px;
  }

  .stamp-big {
    font-size: 48px;
  }

  .hero-ticker {
    flex-wrap: wrap;
    gap: 14px 18px;
  }

  .tack {
    width: 18px;
    height: 18px;
  }

  .tack::after {
    width: 18px;
    height: 18px;
  }

  .tack-tl {
    left: 10px;
    top: 10px;
  }

  .tack-tr {
    right: 10px;
    top: 10px;
  }

  .tack-bl {
    left: 10px;
    bottom: 10px;
  }

  .tack-br {
    right: 10px;
    bottom: 10px;
  }

  .journal,
  .draft,
  .dispatch {
    padding: 80px 12px 90px;
  }

  .desk {
    padding: 14px 4px 70px;
  }

  .pencil {
    width: 240px;
    right: -20px;
    bottom: 8px;
  }

  .book-nav {
    flex-wrap: wrap;
  }

  .book-count {
    order: -1;
    width: 100%;
  }

  .book-btn {
    flex: 1;
    padding: 14px 8px 11px;
    font-size: 18px;
    white-space: nowrap;
  }

  .notice {
    padding: 28px 20px 40px;
    transform: none;
  }

  .notice-form {
    position: static;
    margin-bottom: 8px;
  }

  .pfp-go {
    font-size: 38px;
  }

  .board-seal {
    width: 110px;
    height: 110px;
    right: -4px;
    bottom: -30px;
  }

  .telegram {
    padding: 28px 18px 36px;
    transform: none;
  }

  .tapes li {
    margin-left: 0;
  }

  .tapes li:nth-child(n) {
    margin-left: 0;
  }

  .closer {
    padding: 30px 12px 80px;
  }

  .closer-sheet {
    padding: 18px 16px 18px;
    transform: none;
  }

  .closer-field {
    flex-direction: column;
    align-items: stretch;
    padding: 40px 22px 0;
    min-height: 0;
  }

  .closer-line {
    max-width: none;
  }

  .closer-soldier {
    position: relative;
    right: auto;
    height: auto;
    width: 92%;
    max-width: 420px;
    margin: 30px -22px 0 auto;
  }

  .foot {
    padding: 26px 16px 60px;
  }
}

.no-scroll {
  overflow: hidden;
}

.intro {
  position: fixed;
  inset: 0;
  z-index: 200;
  background: var(--black);
  overflow: hidden;
  cursor: pointer;
}

.intro.gone {
  display: none;
}

.intro-canvas {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  display: block;
}

.intro.loading .intro-canvas,
.intro.gate .intro-canvas {
  visibility: hidden;
}

.intro.loading::after {
  content: "threading the projector";
  position: absolute;
  left: 0;
  right: 0;
  top: 50%;
  text-align: center;
  font-family: var(--type);
  font-size: 18px;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  color: rgba(236, 228, 205, 0.6);
}

.intro.gate {
  cursor: default;
}

.intro-gate {
  display: none;
  position: absolute;
  inset: 0;
  z-index: 3;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 22px;
  padding: 24px;
  text-align: center;
  color: var(--bone);
  background: var(--black);
}

.intro.gate .intro-gate {
  display: flex;
}

.intro-gate::before,
.intro-gate::after {
  content: "";
  position: absolute;
  background: rgba(236, 228, 205, 0.12);
  pointer-events: none;
}

.intro-gate::before {
  left: 50%;
  top: 0;
  bottom: 0;
  width: 1px;
}

.intro-gate::after {
  top: 50%;
  left: 0;
  right: 0;
  height: 1px;
}

.gate-ring {
  position: absolute;
  left: 50%;
  top: 50%;
  width: min(78vmin, 560px);
  height: min(78vmin, 560px);
  transform: translate(-50%, -50%);
  border-radius: 50%;
  border: 2px solid rgba(236, 228, 205, 0.16);
  outline: 1px solid rgba(236, 228, 205, 0.08);
  outline-offset: 14px;
  pointer-events: none;
}

.gate-reel,
.gate-go,
.gate-quiet,
.gate-note {
  position: relative;
  z-index: 1;
}

.gate-reel {
  font-family: var(--type);
  font-size: 18px;
  letter-spacing: 0.2em;
  text-transform: uppercase;
  color: rgba(236, 228, 205, 0.72);
}

.gate-go {
  position: relative;
  isolation: isolate;
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 6px;
  font-family: var(--stencil);
  font-weight: 800;
  text-transform: uppercase;
  color: var(--paper-hi);
  background: none;
  border: none;
  padding: 22px 46px 18px;
  cursor: pointer;
  transform: rotate(-1.5deg);
  transition: transform 0.14s ease;
}

.gate-go::before {
  content: "";
  position: absolute;
  inset: 0;
  z-index: -1;
  background: var(--red);
  border: 4px solid var(--red);
  -webkit-mask-image: url("journal/grunge-light.png");
  mask-image: url("journal/grunge-light.png");
  -webkit-mask-size: 240px 240px;
  mask-size: 240px 240px;
}

.gate-go:hover {
  transform: rotate(-1.5deg) scale(1.05);
}

.gate-go:active {
  transform: rotate(-1.5deg) scale(0.95);
}

.gate-go-main {
  font-size: clamp(44px, 8vw, 72px);
  line-height: 0.9;
  letter-spacing: 0.06em;
}

.gate-go-sub {
  font-family: var(--type);
  font-weight: 400;
  font-size: 17px;
  letter-spacing: 0.18em;
}

.gate-quiet {
  font-family: var(--type);
  font-size: 18px;
  color: var(--bone);
  background: none;
  border: none;
  padding: 6px 4px;
  text-decoration: underline;
  text-decoration-thickness: 1px;
  text-underline-offset: 5px;
  cursor: pointer;
}

.gate-quiet:hover {
  color: var(--ochre);
}

.gate-note {
  font-family: var(--type);
  font-size: 16px;
  color: rgba(236, 228, 205, 0.5);
}

.intro-mute {
  display: none;
  position: absolute;
  top: 14px;
  left: 16px;
  z-index: 4;
  font-family: var(--type);
  font-size: 16px;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: rgba(236, 228, 205, 0.85);
  background: rgba(13, 14, 9, 0.6);
  border: 1px solid rgba(236, 228, 205, 0.4);
  padding: 7px 12px 6px;
  cursor: pointer;
}

.intro-mute:hover {
  color: var(--paper-hi);
  border-color: var(--paper-hi);
}

.intro-mute[aria-pressed="false"] {
  color: rgba(236, 228, 205, 0.55);
  text-decoration: line-through;
}

.intro:not(.gate):not(.gone):not(.opening) .intro-mute {
  display: block;
}

.lid {
  display: none;
  position: absolute;
  left: 0;
  width: 100%;
  height: 50.5%;
  background: var(--black);
}

.lid-top {
  top: 0;
}

.lid-bottom {
  bottom: 0;
}

.intro.opening {
  background: transparent;
  pointer-events: none;
}

.intro.opening .intro-canvas {
  display: none;
}

.intro.opening .lid {
  display: block;
}

.intro.opening .lid-top {
  animation: lid-up 0.7s cubic-bezier(0.75, 0, 0.2, 1) both;
}

.intro.opening .lid-bottom {
  animation: lid-down 0.7s cubic-bezier(0.75, 0, 0.2, 1) both;
}

@keyframes lid-up {
  from {
    transform: translateY(0);
  }
  to {
    transform: translateY(-101%);
  }
}

@keyframes lid-down {
  from {
    transform: translateY(0);
  }
  to {
    transform: translateY(101%);
  }
}

@media (prefers-reduced-motion: reduce) {
  html {
    scroll-behavior: auto;
  }

  .inner,
  .cover,
  .stamp-btn,
  .book-btn,
  .pfp-go {
    transition: none;
  }

  .ink-live .ink path,
  .ink-live .sightline-sketch text {
    transition: none;
  }

  .intro.opening .lid-top,
  .intro.opening .lid-bottom {
    animation-duration: 0.01s;
  }

  .hint-target,
  .hint-ring,
  .cap-call,
  .cap-target::after {
    animation: none;
  }

  .hint-ring {
    opacity: 0;
  }
}
