:root {
  /* compliance text: geometric precision Futura IntersectionObserver` throttling. `threshold: [0 */
  --charcoal: #1a1a1a;
  --cream: #f5f0e6;
  --red: #e63946;
  --blue: #2d5a8e;
  --mustard: #d4a843;
  --display: "Caveat", cursive;
  --body: "Nunito Sans", sans-serif;
  --note: "Indie Flower", cursive;
}

* { box-sizing: border-box; }

html,
body {
  width: 100%;
  height: 100%;
  margin: 0;
  overflow: hidden;
  background: var(--charcoal);
  color: var(--charcoal);
  font-family: var(--body);
}

body::before {
  content: "";
  position: fixed;
  inset: 0;
  z-index: 20;
  pointer-events: none;
  opacity: .115;
  mix-blend-mode: multiply;
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='260' height='260' viewBox='0 0 260 260'%3E%3Cfilter id='n'%3E%3CfeTurbulence baseFrequency='.75' numOctaves='4' type='fractalNoise' stitchTiles='stitch'/%3E%3CfeColorMatrix type='saturate' values='0'/%3E%3C/filter%3E%3Crect width='260' height='260' filter='url(%23n)' opacity='.88'/%3E%3C/svg%3E");
}

.zine-scroll {
  display: flex;
  height: 100vh;
  width: 100vw;
  overflow-x: auto;
  overflow-y: hidden;
  scroll-snap-type: x mandatory;
  scroll-behavior: smooth;
  -webkit-overflow-scrolling: touch;
  scrollbar-width: none;
}

.zine-scroll::-webkit-scrollbar { display: none; }

.panel {
  position: relative;
  flex: 0 0 100vw;
  width: 100vw;
  height: 100vh;
  scroll-snap-align: start;
  overflow: hidden;
  isolation: isolate;
}

.dark-panel { background: var(--charcoal); color: var(--cream); }
.light-panel { background: var(--cream); color: var(--charcoal); }

h1,
h2,
p { margin: 0; }

h1,
h2 {
  font-family: var(--display);
  font-weight: 600;
  line-height: 1.15;
  letter-spacing: -.02em;
}

p {
  font-size: clamp(1rem, 1.4vw, 1.25rem);
  line-height: 1.7;
  letter-spacing: .01em;
  font-weight: 300;
}

.annotation {
  font-family: var(--note);
  font-size: clamp(.78rem, 1vw, .95rem);
  line-height: 1.25;
  transform: rotate(-2deg);
  letter-spacing: .02em;
}

.edge-wave {
  position: absolute;
  left: 0;
  width: 100%;
  z-index: 1;
  pointer-events: none;
}

.edge-wave path,
.watermark-wave path {
  fill: none;
  stroke-linecap: round;
  stroke-linejoin: round;
}

.cover-wave { top: 8vh; height: 18vh; }
.cover-wave path { stroke: var(--cream); stroke-width: 2; opacity: .86; }
.top-red { top: 0; height: 12vh; }
.top-red path,
.bottom-red path { stroke: var(--red); stroke-width: 2.4; opacity: .85; }
.bottom-red { bottom: 2vh; height: 12vh; }

.panel-cover {
  padding: 8vh 7vw;
  background-image: radial-gradient(circle at 74% 22%, rgba(230,57,70,.18), transparent 22rem), radial-gradient(circle at 24% 76%, rgba(45,90,142,.18), transparent 18rem);
}

.cover-title {
  position: absolute;
  left: 7vw;
  bottom: 10vh;
  font-size: clamp(6rem, 22vw, 18rem);
  font-weight: 700;
  color: var(--cream);
  text-shadow: 5px 5px 0 var(--red), -2px 3px 0 var(--blue);
  transform: rotate(-4deg);
}

.cover-mark {
  position: absolute;
  left: 8vw;
  top: 10vh;
  font-family: var(--body);
  font-weight: 800;
  font-size: clamp(.8rem, 1.2vw, 1rem);
  letter-spacing: .28em;
  color: var(--mustard);
}

.cover-note {
  position: absolute;
  right: 13vw;
  bottom: 20vh;
  color: var(--cream);
  border-bottom: 2px solid var(--mustard);
  padding-bottom: .2rem;
}

.cover-doodle {
  position: absolute;
  right: 10vw;
  top: 34vh;
  width: min(22vw, 230px);
  transform: rotate(8deg);
}

.cover-doodle path {
  fill: none;
  stroke: var(--cream);
  stroke-width: 3;
  stroke-linecap: round;
}

.panel-argument {
  display: grid;
  grid-template-rows: 60fr 40fr;
  padding: 12vh 8vw 8vh;
}

.argument-copy {
  align-self: center;
  max-width: 72vw;
}

.kicker {
  margin: 0 0 1.4rem 1vw;
  color: var(--blue);
}

.word-fade {
  font-size: clamp(3.2rem, 8vw, 7rem);
  max-width: 13ch;
}

.word-fade span {
  display: inline-block;
  opacity: 0;
  transform: translateY(8px);
}

.panel.active .word-fade span {
  animation: wordIn .46s ease-out forwards;
  animation-delay: var(--word-delay);
}

@keyframes wordIn {
  to { opacity: 1; transform: translateY(0); }
}

.oscillo-wrap {
  position: relative;
  align-self: stretch;
  border-top: 2px solid var(--charcoal);
}

.scroll-oscillo {
  width: 100%;
  height: 100%;
}

.scroll-oscillo path {
  fill: none;
  stroke: var(--red);
  stroke-width: 5;
  stroke-linecap: round;
  filter: drop-shadow(5px 5px 0 rgba(45,90,142,.36));
}

.argument-caption {
  position: absolute;
  left: 1rem;
  bottom: 1rem;
  max-width: 32rem;
  font-family: var(--note);
  font-size: clamp(.95rem, 1.3vw, 1.2rem);
  color: var(--blue);
  transform: rotate(1.5deg);
}

.panel-evidence {
  padding: 8vh 7vw;
}

.evidence-heading {
  position: relative;
  z-index: 2;
}

.evidence-heading .annotation {
  display: block;
  color: var(--red);
  margin-left: 1.4rem;
}

.evidence-heading h2 {
  font-size: clamp(3rem, 6.8vw, 6.7rem);
  max-width: 14ch;
}

.cards-stage {
  position: absolute;
  inset: 23vh 6vw 12vh 37vw;
}

.evidence-card {
  position: absolute;
  width: min(27vw, 370px);
  min-height: 10.8rem;
  padding: 1.35rem 1.45rem;
  border: 2px solid var(--charcoal);
  background: var(--cream);
  box-shadow: 4px 4px 0 var(--red);
  transform: scale(.8) rotate(8deg);
  opacity: 0;
  transition: transform .3s cubic-bezier(.34,1.56,.64,1), box-shadow .3s cubic-bezier(.34,1.56,.64,1);
  background-image: linear-gradient(120deg, rgba(212,168,67,.12), transparent 45%), url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='90' height='90'%3E%3Cfilter id='g'%3E%3CfeTurbulence baseFrequency='.85' numOctaves='3' type='fractalNoise'/%3E%3C/filter%3E%3Crect width='90' height='90' filter='url(%23g)' opacity='.16'/%3E%3C/svg%3E");
}

.panel.active .evidence-card {
  animation: cardIn .76s cubic-bezier(.34,1.56,.64,1) forwards;
  animation-delay: var(--delay);
}

.evidence-card:nth-child(1) { left: 0; top: 7%; }
.evidence-card:nth-child(2) { right: 6%; top: 0; }
.evidence-card:nth-child(3) { left: 8%; bottom: 6%; }
.evidence-card:nth-child(4) { right: 0; bottom: 13%; }

.evidence-card::before {
  content: "";
  position: absolute;
  left: 50%;
  top: -.7rem;
  width: 4.2rem;
  height: 1.35rem;
  background: rgba(212,168,67,.72);
  border: 1px solid rgba(26,26,26,.45);
  transform: translateX(-50%) rotate(-2deg);
}

.evidence-card b {
  display: block;
  font-family: var(--display);
  font-size: clamp(1.9rem, 3.2vw, 3rem);
  line-height: 1;
  color: var(--red);
  margin-bottom: .7rem;
}

.evidence-card p { font-size: clamp(.95rem, 1.15vw, 1.1rem); }
.evidence-card.blue-shadow { box-shadow: 4px 4px 0 var(--blue); }
.evidence-card.mustard-pin b { color: var(--blue); }

.evidence-card:hover {
  transform: translateY(-4px) rotate(0deg) !important;
  box-shadow: 8px 8px 0 var(--red);
}

@keyframes cardIn {
  to { opacity: 1; transform: scale(1) rotate(var(--card-rotation)); }
}

.panel-wave {
  display: flex;
  align-items: flex-end;
  padding: 8vh 7vw;
  background: radial-gradient(circle at 45% 42%, rgba(45,90,142,.26), transparent 28rem), var(--charcoal);
}

.wave-canvas {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
}

.wave-copy {
  position: relative;
  z-index: 2;
  margin-bottom: 2vh;
}

.wave-copy .annotation { color: var(--mustard); margin-left: .6rem; }
.wave-copy h2 { font-size: clamp(4rem, 9vw, 9rem); color: var(--cream); }

.panel-colophon {
  display: grid;
  place-items: center;
  padding: 7vw;
}

.watermark-wave {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  opacity: .14;
}

.watermark-wave path { stroke: var(--blue); stroke-width: 5; }

.colophon-stack {
  position: relative;
  width: min(76vw, 980px);
  min-height: 62vh;
  border: 2px solid var(--charcoal);
  box-shadow: 7px 7px 0 var(--red);
  padding: clamp(2rem, 5vw, 5rem);
  background: rgba(245,240,230,.88);
}

.colophon-side {
  position: absolute;
  left: -6.5rem;
  top: 50%;
  transform: rotate(-90deg) translateX(-50%);
  transform-origin: left top;
  font-weight: 800;
  letter-spacing: .35em;
  font-size: .72rem;
  color: var(--red);
}

.colophon-stack h2 {
  font-size: clamp(3.4rem, 8vw, 7rem);
  max-width: 11ch;
}

.colophon-body {
  max-width: 35rem;
  margin-top: 1.5rem;
}

.colophon-notes {
  display: flex;
  flex-wrap: wrap;
  gap: .75rem;
  margin-top: 2.4rem;
}

.colophon-notes span {
  border: 2px solid var(--charcoal);
  padding: .42rem .65rem;
  background: var(--mustard);
  font-size: .75rem;
  font-weight: 800;
  letter-spacing: .14em;
  text-transform: uppercase;
  transform: rotate(-1.5deg);
}

.colophon-notes span:nth-child(2) { background: var(--cream); transform: rotate(1deg); }
.colophon-notes span:nth-child(3) { background: var(--blue); color: var(--cream); transform: rotate(-.5deg); }

.signoff {
  position: absolute;
  right: 4vw;
  bottom: 3.2vh;
  color: var(--blue);
}

.progress-shell {
  position: fixed;
  left: 0;
  bottom: 0;
  width: 100vw;
  height: 14px;
  z-index: 30;
}

.progress-shell::before {
  content: "";
  position: absolute;
  left: 0;
  bottom: 0;
  width: 100%;
  height: 3px;
  background: rgba(245,240,230,.4);
}

.progress-fill {
  position: absolute;
  left: 0;
  bottom: 0;
  width: 0;
  height: 3px;
  background: var(--red);
  transition: width .1s ease-out;
}

.marker {
  position: absolute;
  bottom: -3px;
  width: 9px;
  height: 9px;
  border-radius: 50%;
  border: 2px solid var(--charcoal);
  background: var(--cream);
  transform: translateX(-50%);
  cursor: pointer;
}

.marker:nth-of-type(1) { left: 0%; border-width: 2.5px; }
.marker:nth-of-type(2) { left: 25%; border-width: 1.5px; }
.marker:nth-of-type(3) { left: 50%; border-width: 2px; }
.marker:nth-of-type(4) { left: 75%; border-width: 2.5px; }
.marker:nth-of-type(5) { left: 100%; border-width: 1.5px; }
.marker.active { background: var(--red); }

@media (max-width: 767px) {
  html,
  body { overflow: hidden; }

  .zine-scroll {
    flex-direction: column;
    overflow-x: hidden;
    overflow-y: auto;
    scroll-snap-type: y mandatory;
  }

  .panel {
    flex: 0 0 100vh;
    width: 100vw;
    height: 100vh;
  }

  .cover-title { font-size: clamp(5.5rem, 34vw, 10rem); bottom: 15vh; }
  .cover-note { right: 8vw; bottom: 10vh; }
  .cover-doodle { width: 42vw; top: 30vh; }
  .panel-argument { padding: 13vh 7vw 8vh; }
  .argument-copy { max-width: 90vw; }
  .word-fade { font-size: clamp(3rem, 15vw, 5.3rem); }
  .cards-stage { position: relative; inset: auto; display: grid; gap: 1rem; margin-top: 2rem; }
  .evidence-card { position: relative; width: 86vw; min-height: auto; left: auto !important; right: auto !important; top: auto !important; bottom: auto !important; }
  .evidence-heading h2 { font-size: clamp(2.8rem, 13vw, 4.7rem); }
  .panel-evidence { padding: 7vh 7vw; overflow-y: hidden; }
  .colophon-stack { width: 84vw; min-height: 68vh; }
  .colophon-side { display: none; }
  .progress-shell { height: 100vh; width: 12px; left: auto; right: 0; }
  .progress-shell::before, .progress-fill { width: 3px; height: auto; left: auto; right: 0; top: 0; bottom: auto; }
  .progress-fill { height: 0; transition: height .1s ease-out; }
  .marker { right: -3px; left: auto !important; bottom: auto; transform: translateY(-50%); }
  .marker:nth-of-type(1) { top: 0%; }
  .marker:nth-of-type(2) { top: 25%; }
  .marker:nth-of-type(3) { top: 50%; }
  .marker:nth-of-type(4) { top: 75%; }
  .marker:nth-of-type(5) { top: 100%; }
}
