/* The Apology for the Chudification: the eighth book, set in the end times.
   Loaded only by that page, after scripture.css; storm.js draws the rain and lightning. */

/* clip, not hidden: a hidden overflow is still a scroll container, and find-in-page or
   scrollIntoView would scroll the rising embers' extra 700px into view, leaving a void. */
.apocrypha {
  --ash: #070404;
  --blood: #8e0d14;
  --crimson: #d11a22;
  --ember: #ff6a1a;
  --flame: #ffb347;
  --scorched: #eadbb8;
  position: relative;
  overflow: hidden;
  overflow: clip;
  isolation: isolate;
  z-index: 1;
  padding: 90px 16px 110px;
  color: var(--scorched);
}
.apoc-embers,
.apoc-embers::before {
  position: absolute;
  inset: 0 0 -700px;
  z-index: -1;
  pointer-events: none;
  background-image:
    radial-gradient(circle, #ffb347 0 1.5px, transparent 2.5px),
    radial-gradient(circle, #ff6a1a 0 1px, transparent 2px),
    radial-gradient(circle, #ffd27a 0 1px, transparent 2px),
    radial-gradient(circle, #ff3b1a 0 2px, transparent 3px);
  background-size:
    230px 350px,
    170px 270px,
    310px 410px,
    390px 700px;
  background-position:
    20px 40px,
    90px 120px,
    160px 10px,
    60px 300px;
  opacity: 0.75;
  animation: apoc-rise 16s linear infinite;
}
.apoc-embers::before {
  content: "";
  inset: 0;
  opacity: 0.5;
  filter: blur(1px);
  background-size:
    290px 520px,
    210px 330px,
    350px 600px,
    450px 700px;
  animation: none;
}
.apoc-inner {
  max-width: 880px;
  margin: 0 auto;
}
.apoc-breadcrumb {
  margin: 0 0 50px;
  text-align: center;
}
.apoc-sound {
  margin: 30px auto 0;
  padding: 11px 22px;
  border: 1px solid #d11a2299;
  border-radius: 0;
  background: #0b0303cc;
  font-size: 12px;
  letter-spacing: 0.24em;
  text-transform: uppercase;
  color: var(--flame);
  box-shadow: 0 0 24px #d11a2244;
  transition:
    background 0.2s,
    box-shadow 0.2s;
}
.apoc-sound::before {
  content: "\26A1\FE0E";
  margin-right: 10px;
  color: #cfd8ff;
}
.apoc-sound:hover {
  background: #2a0507;
  box-shadow: 0 0 34px #d11a2288;
}
.apoc-sound.is-on {
  border-color: #cfd8ff88;
  color: #cfd8ff;
}
.apoc-sound:focus-visible {
  outline: 2px solid var(--flame);
  outline-offset: 3px;
}

/* The storm: fixed layers behind and in front of the page */
body.apocalypse {
  background: #050303;
}
.apocalypse .site-header,
.apocalypse .scripture-pager,
.apocalypse .site-footer {
  position: relative;
  z-index: 1;
}
/* The pager stays in the storm, like the header and footer around it. */
.apocalypse .scripture-pager {
  border-top: 1px solid #d11a2244;
  background: #050303d9;
}
.storm {
  position: fixed;
  inset: 0;
  z-index: 0;
  pointer-events: none;
  background:
    radial-gradient(ellipse 120% 55% at 50% 115%, #ff5a1a4d, transparent 60%),
    radial-gradient(ellipse 90% 40% at 50% 105%, #b3121bb3, transparent 70%),
    #060404;
}
.storm::after {
  content: "";
  position: absolute;
  inset: 0;
  background: radial-gradient(ellipse at 50% 50%, transparent 40%, #000000e0 100%);
}
.storm-clouds,
.storm-clouds-lit {
  position: absolute;
  inset: 0 -20% 35%;
  background:
    radial-gradient(ellipse 22% 30% at 12% 20%, #241c22, transparent 70%),
    radial-gradient(ellipse 28% 34% at 38% 8%, #1d161b, transparent 70%),
    radial-gradient(ellipse 25% 28% at 62% 22%, #261d23, transparent 70%),
    radial-gradient(ellipse 30% 36% at 86% 10%, #1b1519, transparent 70%),
    radial-gradient(ellipse 60% 50% at 50% 0%, #120d10, transparent 80%);
  -webkit-mask-image: linear-gradient(#000 40%, transparent);
  mask-image: linear-gradient(#000 40%, transparent);
  animation: storm-drift 70s ease-in-out infinite alternate;
}
.storm-clouds-lit {
  background:
    radial-gradient(ellipse 22% 30% at 12% 20%, #9aa2c8, transparent 70%),
    radial-gradient(ellipse 28% 34% at 38% 8%, #7f86ad, transparent 70%),
    radial-gradient(ellipse 25% 28% at 62% 22%, #a6acd0, transparent 70%),
    radial-gradient(ellipse 30% 36% at 86% 10%, #7b82a8, transparent 70%);
  opacity: calc(var(--flash, 0) * 0.55);
}
.storm-bolt,
.storm-rain {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
}
.storm-rain {
  position: fixed;
  z-index: 3;
  pointer-events: none;
}
.storm-flash {
  position: fixed;
  inset: 0;
  z-index: 4;
  pointer-events: none;
  background: radial-gradient(ellipse 90% 80% at var(--bolt-x, 50%) 0%, #e4e9ff, #aab6ff55 55%, transparent 90%);
  mix-blend-mode: screen;
  opacity: calc(var(--flash, 0) * 0.32);
}
body.thunder .apoc-inner {
  animation: apoc-thunder 0.9s ease-out;
}

/* The wilted roses in the gutters */
.rose-defs {
  position: absolute;
}
svg.rose {
  position: fixed;
  z-index: 0;
  bottom: -6px;
  width: clamp(0px, calc((100vw - 900px) / 2 + 10px), 320px);
  height: auto;
  aspect-ratio: 300 / 700;
  pointer-events: none;
  filter: drop-shadow(0 0 18px #000) drop-shadow(0 0 30px #d11a2233);
}
.rose-left {
  left: 0;
}
.rose-right {
  right: 0;
  transform: scaleX(-1);
}
.rose .rose-front,
.rose .rose-back {
  transform-box: view-box;
  transform-origin: 120px 700px;
  animation: rose-sway 6s ease-in-out infinite alternate;
}
.rose .rose-back {
  transform-origin: 150px 700px;
  opacity: 0.8;
  animation-duration: 7.5s;
  animation-delay: -3s;
}
.petal-fall {
  transform-box: fill-box;
  opacity: 0;
  animation: petal-fall 11s ease-in infinite;
}
.pf2 {
  animation-duration: 14s;
  animation-delay: 5s;
}
.rose-right .pf1 {
  animation-delay: 3s;
}
.rose-right .pf2 {
  animation-delay: 9s;
}
@media (max-width: 1100px) {
  svg.rose {
    display: none;
  }
}

/* The breaking of the seal */
.apoc-seal {
  margin: 0 auto 70px;
  text-align: center;
}
.apoc-emblem {
  position: relative;
  display: grid;
  place-items: center;
  width: 280px;
  height: 280px;
  margin: 0 auto 16px;
}
svg.apoc-ring {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  opacity: 0.8;
  animation: apoc-spin 60s linear infinite;
}
.apoc-ring text {
  font-family: var(--serif);
  font-size: 19px;
  fill: var(--crimson);
  filter: drop-shadow(0 0 4px #ff3b1a);
}
.apoc-seal-wax {
  position: relative;
  display: grid;
  place-items: center;
  width: 108px;
  height: 108px;
  border-radius: 47% 53% 49% 51% / 52% 46% 54% 48%;
  background: radial-gradient(circle at 35% 30%, #e0353c, var(--blood) 55%, #3d0306);
  box-shadow:
    0 0 0 6px #5c070b,
    0 0 40px #ff3b1acc,
    0 0 110px #d11a2288,
    inset 0 -6px 12px #0008;
  animation: apoc-throb 2.8s ease-in-out infinite;
}
.apoc-seal-wax::before,
.apoc-seal-wax::after {
  content: "";
  position: absolute;
  left: 50%;
  top: -6px;
  bottom: -6px;
  width: 7px;
  transform: translateX(-50%) rotate(14deg);
  background: linear-gradient(#ffd27a, #ff6a1a 40%, #ffd27a 60%, #ff3b1a);
  clip-path: polygon(40% 0, 70% 18%, 30% 35%, 80% 55%, 25% 72%, 65% 88%, 45% 100%, 20% 100%, 40% 86%, 0 72%, 50% 54%, 5% 36%, 45% 18%, 10% 0);
  filter: drop-shadow(0 0 6px #ff6a1a);
}
.apoc-seal-wax::after {
  top: 30%;
  bottom: 10%;
  left: 30%;
  width: 5px;
  transform: rotate(-52deg);
}
.apoc-seal-wax {
  font-size: 32px;
  font-weight: 700;
  letter-spacing: 0.08em;
  color: #f7b7a0;
  text-shadow: 0 2px 0 #3d0306;
}
.apoc-seal p {
  margin: 0;
  font-family: var(--display);
  font-size: clamp(30px, 5vw, 46px);
  color: var(--flame);
  text-shadow:
    0 0 18px #ff6a1a,
    0 0 42px #d11a22;
}
.apoc-seal .apoc-seal-caption {
  max-width: 44ch;
  margin: 14px auto 0;
  font-family: var(--serif);
  font-size: 18px;
  font-style: italic;
  color: #b89c84;
  text-shadow: none;
}

.apoc-kicker {
  margin: 0 0 22px;
  text-align: center;
  font-size: 13px;
  letter-spacing: 0.5em;
  text-transform: uppercase;
  color: var(--crimson);
  text-shadow: 0 0 12px #d11a22;
}
.apoc-log {
  max-width: 640px;
  margin: 0 auto 44px;
  padding: 16px 20px;
  overflow-x: auto;
  border: 1px solid #d11a2266;
  border-left: 3px solid var(--crimson);
  background: #000000b3;
  box-shadow: 0 0 30px #d11a2233;
  font-family: ui-monospace, "Cascadia Mono", Menlo, Consolas, monospace;
  font-size: 12.5px;
  line-height: 1.75;
  color: #d1a07a;
}
.apoc-log span {
  animation: apoc-type 0.4s steps(1) both;
}
.apoc-log span:nth-child(2) {
  animation-delay: 0.5s;
}
.apoc-log span:nth-child(3) {
  animation-delay: 1s;
}
.apoc-log span:nth-child(4) {
  animation-delay: 1.5s;
}
.apoc-log .panic {
  color: #ff4b4b;
  font-weight: 700;
  text-shadow: 0 0 10px #ff1a1a;
  animation:
    apoc-type 0.4s steps(1) 2.1s both,
    apoc-blink 1.1s steps(1) 2.5s infinite;
}

.apoc-title {
  max-width: 16ch;
  margin: 0 auto;
  text-align: center;
  font-family: var(--display);
  font-weight: 700;
  font-size: clamp(42px, 8.5vw, 104px);
  line-height: 1.02;
  color: #ffcf8a;
  background: linear-gradient(180deg, #fff1c9 0%, #ffb347 38%, #ff4a1a 70%, #8e0d14 100%);
  -webkit-background-clip: text;
  background-clip: text;
  -webkit-text-fill-color: transparent;
  filter: drop-shadow(0 0 14px #ff3b1a) drop-shadow(0 0 48px #d11a22aa);
  animation:
    apoc-flicker 7s linear infinite,
    apoc-quake 9s ease-in-out infinite;
}
.apoc-provenance {
  max-width: 50ch;
  margin: 28px auto 64px;
  text-align: center;
  font-size: 15px;
  font-style: italic;
  color: #9b8472;
}

/* The scorched scroll */
.apoc-scroll {
  position: relative;
  padding: clamp(40px, 7vw, 76px) clamp(20px, 6vw, 72px);
  background: radial-gradient(ellipse at 50% 40%, #3a2416 0%, #22150d 55%, #120a06 100%);
  box-shadow:
    inset 0 0 70px #000,
    inset 0 0 18px #ff6a1a55;
  clip-path: polygon(0 1.5%, 4% 0, 11% 1%, 19% 0.2%, 27% 1.4%, 36% 0, 44% 1%, 53% 0.3%, 61% 1.2%, 70% 0, 78% 0.9%, 87% 0.1%, 95% 1.1%, 100% 0.4%, 99.4% 20%, 100% 41%, 99.2% 63%, 100% 84%, 99.5% 99%, 93% 100%, 85% 99%, 76% 99.8%, 67% 98.9%, 58% 100%, 49% 99%, 40% 99.9%, 31% 98.8%, 22% 100%, 13% 99.1%, 5% 99.9%, 0 99%, 0.6% 78%, 0 56%, 0.7% 34%, 0 14%);
}
.apoc-scroll-wrap {
  filter: drop-shadow(0 0 2px #ff6a1a) drop-shadow(0 0 30px #ff3b1a88);
}
.apoc-salutation {
  margin: 0 0 30px;
  font-size: 15px;
  letter-spacing: 0.2em;
  text-transform: uppercase;
  color: var(--ember);
}
.apoc-prose {
  margin: 0 0 22px;
  font-size: 20px;
  line-height: 1.75;
  color: var(--scorched);
}
.apoc-prose em {
  color: #ff8f6b;
}
.apoc-scroll code {
  padding: 1px 5px;
  border: 1px solid #ff6a1a44;
  background: #00000080;
  font-family: ui-monospace, "Cascadia Mono", Menlo, Consolas, monospace;
  font-size: 0.8em;
  color: var(--flame);
  overflow-wrap: anywhere;
}
.apoc-initial {
  float: left;
  margin: 6px 16px 0 0;
  font-family: var(--display);
  font-size: 88px;
  line-height: 0.8;
  color: var(--crimson);
  text-shadow:
    0 0 20px #ff3b1a,
    0 0 50px #d11a22;
}
.apoc-epithet {
  font-variant: small-caps;
  letter-spacing: 0.04em;
  color: var(--gold-light);
  text-shadow: 0 0 10px #bda16b88;
}
.apoc-toll {
  clear: both;
  margin: 50px 0;
  padding: 26px 0;
  border-block: 1px solid #d11a2266;
  text-align: center;
  font-size: clamp(25px, 3.6vw, 36px);
  font-style: italic;
  line-height: 1.35;
  color: #ff5b4b;
  text-shadow:
    0 0 16px #d11a22,
    0 0 42px var(--blood);
}
.apoc-toll code {
  font-style: normal;
}
.apoc-crowning {
  position: relative;
  z-index: 0;
  margin: 70px 0;
  text-align: center;
  font-family: var(--display);
  font-size: clamp(40px, 7vw, 76px);
  line-height: 1.1;
  color: #ffe2a3;
  text-shadow:
    0 0 20px #ffb347,
    0 0 50px #ff6a1a,
    0 0 100px #d11a22;
  animation: apoc-glory 4s ease-in-out infinite;
}
.apoc-crowning::before {
  content: "";
  position: absolute;
  left: 50%;
  top: 50%;
  z-index: -1;
  width: 560px;
  height: 560px;
  margin: -280px 0 0 -280px;
  background: repeating-conic-gradient(#ffb34738 0 4deg, transparent 4deg 16deg);
  -webkit-mask-image: radial-gradient(circle, #000 0, transparent 68%);
  mask-image: radial-gradient(circle, #000 0, transparent 68%);
  animation: apoc-spin 40s linear infinite;
}
.apoc-crown {
  display: block;
  margin-bottom: 8px;
  font-family: var(--serif);
  font-size: 0.9em;
  color: var(--gold-light);
}
.apoc-void {
  margin: 60px 0;
  text-align: center;
}
.apoc-void span {
  display: block;
  margin: 0 0 10px;
  font-size: clamp(22px, 3vw, 30px);
  letter-spacing: 0.06em;
  text-transform: uppercase;
  color: #e7d6b4;
}
.apoc-void span:nth-child(2) {
  opacity: 0.72;
}
.apoc-void span:nth-child(3) {
  opacity: 0.46;
}
.apoc-void span:nth-child(4) {
  margin-top: 26px;
  font-size: 18px;
  font-style: italic;
  letter-spacing: 0;
  text-transform: none;
  opacity: 0.4;
}
.apoc-throne {
  font-family: var(--display);
  font-size: 1.15em;
  color: var(--gold-light);
  text-shadow: 0 0 14px #ffb347;
}
.apoc-doxology {
  margin: 56px 0 40px;
  text-align: center;
  font-family: var(--display);
  font-size: clamp(30px, 4.6vw, 46px);
  line-height: 1.25;
  color: var(--flame);
  text-shadow: 0 0 18px #ff6a1a;
}
.apoc-mercy {
  margin: 0;
  padding-top: 34px;
  border-top: 1px solid #d11a2266;
  text-align: center;
  font-size: 21px;
  font-style: italic;
  line-height: 1.7;
  color: var(--scorched);
  animation: apoc-tremble 0.35s linear infinite;
}

.apoc-attribution {
  margin: 56px 0 0;
  text-align: center;
}
.apoc-attribution span {
  font-size: 12px;
  letter-spacing: 0.4em;
  text-transform: uppercase;
  color: var(--crimson);
  text-shadow: 0 0 10px #d11a22;
}
.apoc-attribution p {
  margin: 10px 0 0;
  font-family: var(--display);
  font-size: clamp(34px, 5.5vw, 58px);
  line-height: 1.1;
  color: var(--gold-light);
  text-shadow:
    0 0 18px #ffb347,
    0 0 50px #d11a22;
}

/* The chant */
.apoc-chant {
  font-feature-settings: "locl" 0;
  margin: 110px 0 0;
  padding: 70px clamp(20px, 6vw, 70px) 60px;
  text-align: center;
  border: 1px solid #d11a2255;
  background: radial-gradient(ellipse at 50% 0%, #2a0507 0%, #0b0303 70%);
  box-shadow:
    0 0 0 8px var(--ash),
    0 0 0 9px #d11a2233,
    0 0 80px #8e0d1455;
}
.apoc-rubric-head {
  margin: 0 0 12px;
  font-size: 12px;
  letter-spacing: 0.34em;
  text-transform: uppercase;
  color: var(--crimson);
}
.apoc-chant-title {
  margin: 0 0 18px;
  font-family: var(--display);
  font-weight: 700;
  font-size: clamp(44px, 7vw, 78px);
  line-height: 1.05;
  color: #f4e3c0;
  text-shadow:
    0 0 20px #d11a22,
    0 0 60px var(--blood);
}
.apoc-rubric {
  max-width: 52ch;
  margin: 0 auto 30px;
  font-size: 16px;
  font-style: italic;
  line-height: 1.6;
  color: #e0353c;
}
svg.apoc-staff {
  width: 100%;
  max-width: 560px;
  height: auto;
  margin: 10px auto 44px;
}
.apoc-staff-lines path {
  fill: none;
  stroke: var(--crimson);
  stroke-width: 1.2;
}
.apoc-clef,
.apoc-neumes rect {
  fill: #f4e3c0;
  filter: drop-shadow(0 0 4px #ff6a1a);
}
.apoc-syllables text {
  font-family: var(--serif);
  font-size: 15px;
  font-style: italic;
  text-anchor: middle;
  fill: #cdb893;
}
.apoc-stanzas {
  list-style: none;
  margin: 0;
  padding: 0;
  counter-reset: stanza;
}
.apoc-stanzas li {
  margin: 0 0 34px;
  font-size: 22px;
  line-height: 1.6;
  color: #f0e1c2;
}
.apoc-stanzas li:not(.apoc-rubric, .apoc-responsory, .apoc-pie)::before {
  counter-increment: stanza;
  content: counter(stanza, upper-roman) ".";
  display: block;
  margin-bottom: 6px;
  font-size: 13px;
  letter-spacing: 0.2em;
  color: var(--crimson);
}
.apoc-stanzas li:first-child::before {
  margin-bottom: 20px;
}
.apoc-stanzas i {
  color: var(--flame);
}
.apoc-stanzas .apoc-rubric {
  margin: 0 auto 34px;
  font-size: 16px;
  color: #e0353c;
}
.apoc-chant-initial {
  font-family: var(--display);
  font-size: 2.4em;
  line-height: 0;
  vertical-align: -0.18em;
  color: var(--crimson);
  text-shadow: 0 0 18px #ff3b1a;
}
.apoc-stanzas .apoc-responsory {
  font-style: italic;
}
.apoc-responsory .vr {
  font-style: normal;
  color: var(--crimson);
}
.apoc-stanzas .apoc-pie {
  font-family: var(--display);
  font-size: 30px;
  line-height: 1.35;
  color: var(--gold-light);
  text-shadow: 0 0 16px #ffb34799;
}
.apoc-amen {
  margin: 20px 0 22px;
  font-family: var(--display);
  font-size: clamp(56px, 10vw, 110px);
  line-height: 1;
  color: var(--crimson);
  text-shadow:
    0 0 24px #ff3b1a,
    0 0 80px #d11a22;
  animation: apoc-throb 2.8s ease-in-out infinite;
}
.apoc-cursor {
  display: inline-block;
  width: 0.55em;
  height: 1.05em;
  margin-left: 6px;
  vertical-align: -0.15em;
  background: #e0353c;
  animation: apoc-blink 1s steps(1) infinite;
}
.apoc-english {
  max-width: 640px;
  margin: 40px auto 0;
  padding-top: 24px;
  border-top: 1px solid #d11a2244;
  text-align: left;
  font-size: 16px;
  line-height: 1.6;
  color: #bfa98e;
}
.apoc-english summary {
  cursor: pointer;
  text-align: center;
  font-size: 12px;
  letter-spacing: 0.24em;
  text-transform: uppercase;
  color: var(--ember);
}
.apoc-english ol {
  margin: 20px 0 0;
  padding-left: 30px;
  list-style: upper-roman;
}
.apoc-english li {
  margin-bottom: 8px;
}
.apoc-english li.unnumbered {
  list-style: none;
}
.apoc-english li::marker {
  font-size: 13px;
  color: var(--crimson);
}
.apoc-english p {
  margin: 16px 0 0;
  padding-left: 30px;
  font-style: italic;
}
.apoc-colophon {
  border-top-color: #d11a2244;
  color: #8a7766;
}
.apocrypha a:focus-visible,
.apoc-english summary:focus-visible {
  outline: 2px solid var(--flame);
  outline-offset: 3px;
}

@keyframes apoc-rise {
  to {
    transform: translateY(-700px);
  }
}
@keyframes apoc-throb {
  0%,
  100% {
    transform: scale(1);
    filter: brightness(1);
  }
  50% {
    transform: scale(1.05);
    filter: brightness(1.3);
  }
}
@keyframes apoc-type {
  from {
    visibility: hidden;
  }
  to {
    visibility: visible;
  }
}
@keyframes apoc-blink {
  50% {
    opacity: 0;
  }
}
@keyframes apoc-flicker {
  0%,
  18%,
  21%,
  23%,
  54%,
  56%,
  100% {
    opacity: 1;
  }
  19%,
  22%,
  55% {
    opacity: 0.35;
  }
}
@keyframes apoc-quake {
  0%,
  88%,
  100% {
    transform: none;
  }
  89% {
    transform: translate(-3px, 1px) rotate(-0.4deg);
  }
  90% {
    transform: translate(3px, -2px) rotate(0.4deg);
  }
  91% {
    transform: translate(-2px, 2px);
  }
  92% {
    transform: translate(2px, -1px) rotate(0.2deg);
  }
  93% {
    transform: translate(-1px, 1px);
  }
}
@keyframes apoc-glory {
  50% {
    filter: brightness(1.35);
  }
}
@keyframes apoc-spin {
  to {
    transform: rotate(360deg);
  }
}
@keyframes apoc-tremble {
  25% {
    transform: translate(0.4px, -0.3px);
  }
  50% {
    transform: translate(-0.4px, 0.3px);
  }
  75% {
    transform: translate(0.3px, 0.4px);
  }
}
@keyframes apoc-thunder {
  0%,
  100% {
    transform: none;
  }
  10% {
    transform: translate(-4px, 2px);
  }
  22% {
    transform: translate(4px, -2px);
  }
  36% {
    transform: translate(-3px, 1px);
  }
  52% {
    transform: translate(2px, -1px);
  }
  70% {
    transform: translate(-1px, 1px);
  }
}
@keyframes storm-drift {
  to {
    transform: translateX(8%);
  }
}
@keyframes rose-sway {
  from {
    transform: rotate(-1.2deg);
  }
  to {
    transform: rotate(1.4deg);
  }
}
@keyframes petal-fall {
  0% {
    opacity: 0;
    transform: translate(0, 0) rotate(0);
  }
  6% {
    opacity: 1;
  }
  35% {
    transform: translate(-18px, 140px) rotate(160deg);
  }
  65% {
    transform: translate(14px, 260px) rotate(300deg);
  }
  88% {
    opacity: 0.9;
  }
  100% {
    opacity: 0;
    transform: translate(-6px, 360px) rotate(420deg);
  }
}
@keyframes apoc-emerge {
  from {
    opacity: 0;
    filter: blur(8px);
    transform: translateY(30px) scale(0.96);
  }
}
@supports (animation-timeline: view()) {
  .apoc-toll,
  .apoc-void span,
  .apoc-stanzas li {
    animation: apoc-emerge linear both;
    animation-timeline: view();
    animation-range: entry 0% entry 90%;
  }
}

@media (max-width: 700px) {
  .apocrypha {
    padding: 80px 16px;
  }
  .apoc-prose {
    font-size: 18px;
    line-height: 1.68;
  }
  .apoc-initial {
    font-size: 70px;
  }
  .apoc-stanzas li {
    font-size: 19px;
  }
  .apoc-stanzas .apoc-pie {
    font-size: 25px;
  }
  .apoc-kicker {
    letter-spacing: 0.3em;
  }
  .apoc-log {
    font-size: 11px;
    white-space: pre-wrap;
  }
  .apoc-chant {
    margin-top: 80px;
  }
}
@media print {
  .apocrypha {
    padding: 0;
    background: none;
    color: black;
    box-shadow: none;
  }
  .apoc-embers,
  .apoc-emblem,
  .apoc-log,
  .apoc-sound,
  .storm,
  .storm-rain,
  .storm-flash,
  .roses,
  .apoc-crowning::before {
    display: none;
  }
  /* Ink on paper: no glows, gradients, or burnt edges. */
  body.apocalypse {
    background: #fff;
  }
  .apocrypha * {
    color: #000 !important;
    text-shadow: none !important;
    filter: none !important;
  }
  .apoc-title {
    background: none;
    -webkit-text-fill-color: currentColor;
  }
  .apoc-scroll,
  .apoc-chant {
    background: none;
    box-shadow: none;
    clip-path: none;
  }
}
